{"version":3,"file":"kendo.dataviz.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodataviz","js","this","breakpoints","EVENT","defaultBreakpoints","small","medium","large","mediaQuery","query","Object","assign","kendo","defaults","mediaQueryList","window","matchMedia","onEnterCallbacks","onLeaveCallbacks","onChangeHandlers","kendoMediaQuery","onChangeHandler","ev","forEach","cb","matches","addEventListener","onChange","push","onEnter","media","MediaQueryListEvent","onLeave","destroy","removeEventListener","createMediaQuery","packageMetadata","name","productName","productCodes","publishDate","version","replace","licensingDocsUrl","$","undefined$1","Template","cultures","extend","each","isArray","Array","noop","math","Math","JSON","support","percentRegExp","formatRegExp","boxShadowRegExp","numberRegExp","MONTH","HOUR","ZONE","WEEKDAY","QUARTER","DATE_FIELD_MAP","G","y","q","Q","M","L","d","E","c","e","h","H","k","K","m","s","a","t","x","X","z","Z","NAME_TYPES","month","type","minLength","standAlone","quarter","weekday","dayperiod","era","FUNCTION","STRING","NUMBER","OBJECT","NULL","BOOLEAN","UNDEFINED","ARIA_LABELLEDBY","ARIA_LABEL","getterCache","setterCache","slice","cssPropertiesNames","noDepricateExtend","src","copyIsArray","copy","options","clone","arguments$1","arguments","target","i","length","deep","jQuery","isPlainObject","Class","proto","member","fn","base","that","subclass","init","apply","prototype","constructor","_initOptions","deepExtend","isPresent","value","isBlank","isString","isNumeric","isNaN","parseFloat","isDate","getTime","isFunction","preventDefault","_defaultPrevented","isDefaultPrevented","Observable","_events","bind","eventName","handlers","one","idx","original","handler","eventNames","handlersIsFunction","unbind","first","unshift","trigger","events","sender","call","splice","compilePart","part","stringPart","split","join","charAt","rest","substring","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","zeros","pad","number","digits","end","wrapResize","element","autosize","outerWidth","_outerWidth","outerHeight","_outerHeight","parent","wrapper","closest","visible","is","wrapperStyle","style","elementHeight","height","css","display","position","test","width","add","show","hide","destination","deepExtendOne","source","property","propValue","propType","propInit","destProp","ObservableArray","data","LazyObservableArray","DataSource","HierarchicalDataSource","RegExp","ArrayBuffer","HTMLElement","Date","testRx","agent","rxs","dflt","rx","hasOwnProperty","toCamelCase","str","strMatch","g1","toUpperCase","getComputedStyles","properties","computedStyle","styles","document","defaultView","getComputedStyle","getPropertyValue","currentStyle","size","paramName","useWithBlock","render","template","html","compile","parts","settings","argumentName","match","functionBody","Function","_slotCount","floor","debugTemplates","Error","format","console","warn","gap","indent","rep","escapable","meta","toString","quote","string","lastIndex","charCodeAt","key","holder","v","partial","mind","toJSON","isFinite","String","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","stringify","replacer","space","dateFormatRegExp","standardFormatRegExp","literalRegExp","commaRegExp","EMPTY","POINT","SHARP","ZERO","EN","objectToString","findCulture","culture","numberFormat","getCulture","current","pattern","decimals","groupSize","percent","symbol","currency","abbr","calendars","standard","days","names","namesAbbr","namesShort","months","AM","PM","patterns","D","F","g","T","u","Y","firstDay","twoDigitYearMax","cultureName","calendar","groupInteger","start","integer","integerLength","newGroupSize","decimalIndex","indexOf","groupSizes","shift","reverse","round","precision","negative","toFixed","min","fmt","date","minutes","result","sign","getDate","getDay","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","getTimezoneOffset","abs","formatDate","isCurrency","isPercent","customPrecision","formatAndPrecision","fraction","ch","hasGroup","hasNegativeFormat","sharpIndex","zeroIndex","hasZero","hasSharp","currencyIndex","decimal","literals","replacement","toLocaleString","exec","toLowerCase","toExponential","quoteChar","literal","lastIndexOf","rounded","max","formatNumber","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","activeElement","documentElement","_round","includeMargin","nonBreakingSpaceRegExp","spaceRegExp","exponentRegExp","shortTimeZoneRegExp","longTimeZoneRegExp","dateRegExp","offsetRegExp","FORMATS_SEQUENCE","STANDARD_FORMATS","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","strict","count","pmHour","UTC","amDesignators","pmDesignators","hoursOffset","minutesOffset","lookAhead","getNumber","rg","substr","valueIdx","getIndexByName","lower","nameLength","subValue","matchLength","matchIdx","checkLiteral","year","day","hours","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","setHours","adjustDST","setFullYear","internalParseDate","formats","tzoffset","offset","parseMicrosoftFormatOffset","timezone","convert","cultureFormats","formatIdx","concat","getDefaultFormats","parseDate","parseExactDate","percentSymbol","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","scrollWidth","removeChild","isRtl","table","tbodyInnerHtml","touch","docStyle","transitions","transforms","elementProto","hasHW3D","WebKitCSSMatrix","cssFlexbox","prefix","hasTransitions","lowPrefix","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","e$1","detectOS","ua","minorVersion","os","notAndroidPhone","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","webkit","navigator","device","browser","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","mobileOS","userAgent","wpDevicePixelRatio","hasNativeScrolling","delayedClick","attr","mouseAndTouchPresent","detectBrowser","edge","safari","opera","msie","mozilla","documentMode","chromiumEdge","detectClipboardAccess","commands","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","clientWidth","top","cssClass","docElement","addClass","eventCapture","input","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","sorted","field","sort","b","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","selector","nodeList","querySelectorAll","parentNode","pushState","history","hashChange","customElements","mobileChrome","crios","msPointers","MSPointerEvent","pointers","PointerEvent","kineticScrollNeeded","effects","prepareAnimationOptions","duration","complete","teardown","completeCallback","animate","instance","queue","promise","enabled","Element","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","classes","toggleClass","kendoRemoveClass","kendoToggleClass","toggle","ampRegExp","ltRegExp","quoteRegExp","aposRegExp","gtRegExp","eventTarget","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","on","mousedown","mouseup","mousemove","mousecancel","click","resize","localUrlRe","widgets","_widgetRegisteredCallbacks","ui","fx","mobile","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","ns","getShadows","shadow","radius","blur","left","right","bottom","wrap","percentage","windowOuterWidth","removeClass","hasClass","percentWidth","percentHeight","forceWidth","isScrollable","dataset","className","overflow","scrollLeft","el","mozila","browserVersion","obj","toHyphens","getOffset","positioned","pageYOffset","pageXOffset","parseEffects","directions","down","up","in","out","htmlEncode","unescape","decodeURIComponent","error","_","m1","m2","fromCharCode","isLocalUrl","url","expr","expression","safe","members","wrapExpression","exprToArray","fields","indexAccessor","getter","setter","innerSetter","ref","val","prop","props","pop","accessor","get","set","guid","random","id","chars","roleSelector","role","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","suppressLog","log","Widget","KendoLicensing","validatePackage","angular","dataSource","componentTypes","componentType","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_clearCssClasses","_setEvents","_applyCssClasses","force","getSize","currentSize","_size","_resize","dimensions","setSize","removeData","_destroy","_muteAngularRebind","_muteRebind","validFill","widgetName","protoOptions","__proto__","cssProperties","propertyDictionary","_altname","getValidClass","widget","propName","fillMode","fill","_ariaLabel","labelId","inputElm","inputId","labelElm","ariaLabel","ariaLabelledBy","_generateLabelId","newOptions","currentOptions","themeColor","label","DataBoundWidget","dataItems","flatView","_angularItems","cmd","elements","items","dataItem","domElement","offsetHeight","notify","templateRegExp","jsonRegExp","jsonFormatRegExp","dashRegExp","parseOption","option","getAttribute","parse","parseOptions","containmentComparer","contains","resizableWidget","inArray","initWidget","roles","fullPath","widgetKeyRegExp","nodeType","widgetKey","isEmptyObject","rolesFromNamespaces","namespaces","find","addBack","filter","widgetsArray","makeArray","widgetInstance","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","scrollTop","opacity","loading","prependTo","remove","plugin","register","widgetEntry","args","method","ContainerNullObject","nullObject","MobileWidget","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","focusable","isTabIndexNotNaN","nodeName","disabled","href","pseudos","parents","themes","views","touchScroller","useNative","Scroller","kendoMobileScroller","suites","elementData","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","MOUSE_EVENTS","MouseEventNormalizer","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","eventMap","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","getEventMap","eventRegEx","applyEventMap","keyDownHandler","kendoKeydown","preventKendoKeydown","kendoJQuery","context","rootjQuery","search","touchstart","touchend","keyDownCallBack","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","from","to","zoneAndRule","zones","zoneRules","until","findZone","info","fromOffset","toOffset","diff","tempToOffset","fromLocalOffset","toLocalOffset","toLocalDate","MS_PER_MINUTE","MS_PER_DAY","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","calcWeekInYear","weekStartDay","firstWeekInYear","newDate","addDays","moveDateToWeekStart","diffInMS","toInvariantTime","setTime","ignoreDST","difference","today","staticDate","addYear","currentDate","addLiteral","lastPart","isHour12","startsWith","text","searchString","isInDateRange","msValue","msMin","msMax","isInTimeRange","isToday","nextDay","previousDay","toUtcTime","MS_PER_HOUR","splitDateFormat","specifier","patternLength","formatLength","nameType","datePattern","hour12","dateFieldName","dateFields","dateFormatNames","lastDayOfMonth","last","timeOffset","weekInYear","prevWeekDate","nextWeekDate","weekNumber","firstDayOfYear","lastDayOfYear","nextYear","previousYear","stripWhitespace","createNodeIterator","iterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","child","nodeValue","animationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","animationQueue","queueAnimation","runNextAnimation","parseQueryStringParams","params","paramParts","elementUnderCursor","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","lastExecTime","throttled","elapsed","caret","rangeElement","isPosition","selectionStart","focus","setSelectionRange","selectionEnd","selection","createTextRange","collapse","moveStart","moveEnd","select","rangeDuplicated","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","focusElement","scrollTopPositions","scrollableParents","parentsUntil","setActive","focusNextElement","focussable","getWidgetFocusableElement","nextFocusable","addAttribute","attribute","removeAttribute","toggleAttribute","matchesMedia","_bootstrapToMedia","bootstrapMedia","xs","sm","md","lg","xl","fileGroupMap","audio","video","image","txt","presentation","programming","pdf","config","zip","getFileGroup","extension","withPrefix","fileTypeMap","groups","getFileSizeMessage","pow","selectorFromClasses","themeColorValues","fillValues","shapeValues","sizeValues","roundedValues","positionModeValues","resizeValues","overflowValues","defaultValues","registerCssClass","shorthand","registerCssClasses","arr","fillModeValues","registerValues","j","newValues","currentValue","dict","widgetValues","validValue","widgetProperties","overridePrefix","registerPrefix","propertyToCssClassMap","getValidCssClass","applyStylesFromKendoAttributes","styleProps","styleProp","currentElement","$currentElement","kendoAttr","whenAll","resolveValues","remaining","deferred","Deferred","failed","rejectContexts","rejectValues","resolveContexts","updateFunc","contexts","notifyWith","done","fail","resolveWith","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","appendTo","submit","fileSaver","downloadAttribute","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","saveAs","save","forceProxy","proxyModelSetters","observable","defineProperty","dirty","getSeriesColors","series","colors","item","isElement","HTMLDocument","setDefaults","path","curr","DEBUG_KENDO_TEMPLATES","class2type","_i","setScriptKey","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","zoom","matrix3dRegExp","cssParamsRegExp","translateXRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transformProps","transform2d","transform2units","rotate","skew","cssPrefix","PX","AUTO","WIDTH","HEIGHT","HIDDEN","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","POSITION","COMPLETE_CALLBACK","TRANSITION","TRANSFORM","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","transition","vertical","modifier","horizontal","stopQueue","animationProperty","transformValue","step","elem","now","curProxy","cur","parseInteger","parseCSS","strip3DTransforms","normalizeCSS","lowerKey","isTransformed","transformation","cssValues","transform","computed","atan2","exclusive","ease","mirror","redirectedEffect","effect","$1","$2","direction","effectBody","timeoutID","oldKeys","stopTransitionCalled","stopTransition","speeds","merge","acc","propertyName","uniqueSort","unique","taskKeys","retainPosition","EffectSet","restore","run","jdx","children","childrenLength","setReverse","addRestoreProperties","prepare","effectName","reset","setup","resolve","restoreCallback","effectClass","effectSet","parsedEffects","capitalize","useTransition","multiple","single","isFixed","originalPosition","dX","dY","marginLeft","marginTop","Effect","_direction","_additionalEffects","_reverse","play","additional","_duration","compositeRun","_complete","shouldHide","word","createEffect","definition","opt1","opt2","opt3","theDirection","FOUR_DIRECTIONS","IN_OUT","createToggleEffect","defaultStart","defaultEnd","startValue","_startValue","endValue","_endValue","_shouldHide","startDataValue","divisor","tmp","previous","previousDivisor","slideIn","margin","origin","setLength","oldLength","realLength","TRANSFER_START_STATE","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","CLIPS","ROTATIONS","clipInHalf","_container","rotation","zIndex","_clipInHalf","clip","append","face","_face","temporary","back","temp","reverseDirection","faceClone","backClone","staticPage","turningPage","transformStyle","RESTORE_OVERFLOW","_before","_after","transitionClass","_previous","_transitionClass","beforeTransition","afterTransition","_both","_element","_containerClass","containerClass","completeProxy","isAbsolute","both","Animation","_tickProxy","_tick","_started","tick","onEnd","onCancel","Transition","timePassed","startDate","moveTo","movable","initial","_easeProxy","moveAxis","easeOutExpo","easeOutBack","inner","outer","fitScale","CHANGE","SAME","BROKEN_BACK_NAV","hashStrip","absoluteURL","pathPrefix","host","hashDelimiter","bang","locationHash","stripRoot","root","HistoryAdapter","forward","replaceLocation","PushStateAdapter","navigate","title","replaceState","normalize","pathname","change","normalizeCurrent","fixedUrl","hash","hashBang","fixHash","fixBang","HashAdapter","_id","_interval","setInterval","clearInterval","History","adapter","createAdapter","historyLength","locations","_checkUrl","silent","_navigate","backCalled","decode","newLength","navigatingInExisting","prev","backButtonPressed","INIT","ROUTE_MISSING","BACK","optionalParam","namedParam","splatParam","escapeRegExp","namedParamReplace","optional","stripUrl","Route","route","ignoreCase","routeToRegExp","_callback","queryStringParams","_back","worksWith","Router","routes","_urlChangedProxy","_sameProxy","_backProxy","backProxy","urlChangedProxy","_urlChanged","same","_same","initEventObject","logic","or","identity","and","operatorsMap","isnullorempty","isnotnullorempty","doesnotcontain","doesnotendwith","doesnotstartwith","endswith","gt","gte","isempty","isnotempty","isnotnull","isnull","lt","lte","neq","startswith","transformFilter","operator","accentFoldingFiltering","itemProp","toLocaleLowerCase","typedGetter","convertValue","op","transformCompositeFilter","combiner","filters","extendAccentFolding","reduce","NEWLINE","DOUBLELINE","odataFilters","odataFiltersVersionFour","mappers","pageSize","page","useVersionFour","toOdataFilter","$filter","orderby","order","$orderby","skip","$skip","take","$top","defaultDataType","read","dataType","useOdataFour","stripMetadata","hex16","createBoundary","createDelimeter","boundary","close","createCommand","transport","httpVerb","command","transportUrl","commandPrefix","getOperationHeader","changeset","changeId","header","processCollection","colection","skipContent","requestBody","getBoundary","collection","content","getOperations","schemas","odata","results","total","transports","jsonp","update","create","parameterMap","$inlinecount","$format","batch","$count","colections","batchURL","headers","updated","destroyed","created","createBatchRequest","collections","ajax","success","response","responses","responseText","changeBody","status","code","marker","jsonModel","responseMarkers","markerIndex","models","passed","parseBatchResponse","XmlDataReader","model","errors","serialize","modelBase","Model","idField","xpathToMember","modelInstance","evaluate","record","_parse","xmlParse","xml","parseDOM","parsedNode","attributes","attributeCount","firstChild","nextSibling","intermediateResult","tree","parseXML","raw","readers","CREATE","READ","UPDATE","DESTROY","SYNC","GET","ERROR","REQUESTSTART","PROGRESS","REQUESTEND","ITEMSLOADED","ITEMLOAD","crud","o","objectKeys","ObservableObject","wrapAll","_loadPromises","_loadedNodes","at","serializeFunctions","json","object","isGroup","_loading","nodes","omitChangeEvent","howMany","omitCache","thisArg","reduceRight","every","some","empty","Symbol","_parent","eventHandler","_notifyChange","ownKeys","ignoreObjectKeys","filteredObjectKeys","protoKeys","getPrototypeOf","isPrimitiveType","getOwnPropertyNames","f","_handlers","uid","shouldSerialize","_set","composite","paths","isSetPrevented","isObservableArray","isDataSource","equal","xtype","parsers","boolean","default","_initializers","dirtyFields","_defaultId","fieldName","getFieldByName","editable","accept","isNew","originalName","functionFields","nullable","defaultValue","Comparer","compare","localeCompare","combine","comparers","StableComparer","asc","valueA","valueB","__position","desc","operators","textOp","impl","ignore","getMatchRegexp","esc","doesnotmatch","Query","normalizeSort","descriptor","descriptors","sortFields","sorts","sortObject","filterExpr","noEval","filterExprNoEval","expressions","fieldFunctions","operatorFunctions","operatorMap","equals","isequalto","equalto","ne","notequals","isnotequalto","notequalto","notequal","islessthan","lessthan","less","le","islessthanorequalto","lessthanequal","isgreaterthan","greaterthan","greater","isgreaterthanorequalto","greaterthanequal","ge","notsubstringof","normalizeOperator","normalizeFilter","compareDescriptor","f1","f2","normalizeDescriptor","fieldComparer","normalizeGroup","skipItemSorting","aggregates","normalizeGroupWithoutCompare","groupValueComparer","calculateAggregate","accumulator","state","aggr","functionName","aggregate","functions","compareFilters","expr1","expr2","filters1","filters2","toArray","range","inPlace","orderBy","orderByDescending","comparer","compiled","group","allData","groupPaging","groupAllData","hasSubgroups","itemCount","subgroupCount","groupBy","_sortForGrouping","groupValue","_sortGroups","sum","isNumber","average","process","groupDescriptorsWithoutSort","customGroupSort","groupDescriptors","anyGroupDescriptorHasCompare","groupDescriptorsWithoutCompare","normalizedSort","filterCallback","flatGroups","groupDescriptor","virtual","LocalTransport","RemoteTransport","Cache","parameters","operation","_store","clear","serializeRecords","getters","originalFieldNames","fieldNames","setters","convertRecords","convertGroup","wrapDataAccess","originalFunction","converter","wrapDataAccessBase","store","inmemory","DataReader","schema","dataFunction","_dataAccessFunction","groupsFunction","serializeFunction","serializeGetters","fromName","_wrapDataAccessBase","fillLastGroup","originalGroup","newGroup","currOriginal","currentNew","mergeGroups","dest","indexFunction","groupsLength","indexFn","groupIndex","itemIndex","flattenGroups","wrapGroupItems","eachGroupItems","func","replaceInRanges","ranges","replaceInRange","replaceWithObservable","serverGrouping","viewIndex","indexOfPristineModel","indexOfModel","fieldNameFromModel","convertFilterDescriptorsField","convertDescriptorsField","_map","_prefetch","_data","_pristineData","_ranges","_view","_pristineTotal","_destroyed","_pageSize","_page","_sort","_sortFields","_filter","_group","_aggregate","_total","_groupPaging","_groupsState","_shouldDetachObservableParents","Transport","pushCreate","_pushCreate","pushUpdate","_pushUpdate","pushDestroy","_pushDestroy","offlineStorage","_storage","getItem","localStorage","setItem","reader","_detachObservableParents","_observe","_online","serverSorting","serverPaging","serverFiltering","serverAggregates","inPlaceSort","online","sync","offlineData","_isGrouped","_isServerGrouped","_isServerGroupPaged","_isGroupPaged","_push","_readData","_flatData","useRanges","getByUid","_getByUid","_storeData","_addRange","_process","_observeView","insert","_createNewModel","_wrapInEmptyGroup","_insertModelInRange","pushInsert","rangeSpan","_getCurrentRangeSpan","pushed","autoSync","pristine","pristineData","_updatePristineForModel","_removeItems","itemsToRemove","removePristine","shouldRemovePristine","found","_eachItem","_removePristineForModel","pushMove","_moveItems","moved","hasGroups","_pushInDestroyed","removeModel","_removeModelFromRanges","notFetched","promises","_sendSubmit","_send","when","then","_accept","_syncEnd","_change","cancelChanges","_cancelModel","_changesCanceled","_markOfflineUpdatesAsDirty","__state__","hasChanges","serverGroup","_handleCustomErrors","_executeOnPristineForModel","_eachPristineItem","_pristineForModel","_modelCanceled","_submit","reject","_promise","converted","_params","_queueRequest","isPrevented","_dequeueRequest","_readAggregates","replaceSubset","_serverGroupsTotal","_aggregateResult","itemIds","_skip","endless","_changeHandler","updatePristine","timestamp","_timeStamp","outerStart","outerEnd","_sortRanges","_groupsFlat","_appendToGroupsFlat","_updateOuterRangesLength","_getGroupByUid","xhr","errorThrown","_requestInProgress","_pending","_shouldWrap","_updateTotalForAction","_calculateAggregates","_take","currentRangeStart","_clearEmptyGroups","_queryProcess","resultData","dataToAggregate","_setView","_setFilterTotal","_mergeState","_currentRangeStart","moreItemsCount","_hasExpandedSubGroups","_findGroupedRange","itemsLength","groupCount","itemsToSkip","taken","_fetchGroupItems","_fetchingGroupItems","skipped","includeParents","excludeHeader","currentItems","_expandedSubGroupItemsCount","includeCurrentItems","subGroup","endSpecified","groupItemsSkip","firstItem","lastItem","expandedSubGroupItemsCount","groupItemCount","getGroupItems","subgroups","_composeItemsFilter","findSubgroups","_timeout","_groupItemsSuccessHandler","totalField","totalCount","_updateRangePristineData","countAdded","_currentRequestTimeStamp","_skipRequestsInProgress","indexOfCurrentGroup","currentGroup","dataLength","indexes","rangesLength","_containsSubGroup","_cloneGroup","subgroup","currentSubGroup","filterTotal","setDefaultValue","fetch","_query","next","totalPages","_pageableQueryOptions","getGroupsFlat","groupsTotal","includeExpanded","_calculateGroupsTotal","itemsField","ignoreState","_groupsTotal","countGroupRange","_emptyAggregates","ceil","inRange","_findRange","lastRange","firstItemUid","enableRequestsInProgress","pageSkip","_processRangeData","_originalPageSkip","_originalSize","_adjustPageSkip","_groupRangeExists","_rangeExists","prefetch","skipIdx","takeIdx","startIndex","endIndex","rangeData","rangeEnd","processed","flatData","prevRangeEnd","remote","groupMapOptions","isGroupPaged","startField","endField","_mergeGroups","_getRangesMismatch","mismatch","prevGroup","eventData","_omitPrefetch","paging","sorting","filtering","_prefetchSuccessHandler","_multiplePrefetch","prevRange","_getPrevRange","_getNextRange","availableItemsCount","_removeModelFromRange","_updateRangesLength","mismatchFound","mismatchLength","lengthDifference","rangeLength","transportOptions","fieldIndex","cells","cell","tbody","tBodies","rows","fieldCount","inferTable","optgroup","firstField","secondField","specified","inferSelect","Node","hasChildren","childrenField","childrenOptions","hasChildrenObject","_childrenOptions","_initChildren","_loaded","_updateChildrenField","loaded","level","_childrenLoaded","load","_matchFilter","dataMethod","_attachBubbleHandlers","_hierarchicalFilter","_childrenLoading","isLoading","_markHierarchicalQuery","_updateHierarchicalFilter","_find","inferList","list","textChild","textField","urlField","spriteCssClassField","imageUrlField","_dataSource","Buffer","viewSize","disablePrefetch","_prefetching","_reset","_syncWithDataSource","setViewSize","_recalculate","itemPresent","dataOffset","prefetchThreshold","midPageThreshold","nextMidRange","nextPageThreshold","nextFullRange","pullBackThreshold","previousMidRange","previousFullRange","_goToRange","nextRange","syncDataSource","prefetchOffset","expanding","_expanding","_syncPending","_firstItemUid","BatchBuffer","batchSize","batchBuffer","endreached","prefetching","prefetched","encode","binders","VALUE","SOURCE","EVENTS","CHECKED","deleteExpando","Binding","dependencies","_access","_parents","dependency","currentSource","EventBinding","TemplateBinding","Binder","bindings","binding","TypedBinder","parsedValue","_parseValue","dataSourceBinding","bindingName","_dataBinding","dataBinding","_dataBound","dataBound","_itemChange","itemChange","bindElement","_ns","removedItems","unbindElementTree","all","addedItems","hds","addedDataItems","multiselect","Select","MultiSelect","DropDownTree","treeview","retrievePrimitiveValues","dataValueField","readonly","dataFormat","invisible","valueUpdate","_initChange","autoBind","valueField","valueAttr","innerText","cloneNode","reference","insertBefore","unbindElementChildren","checked","selectedIndex","selected","valueIndex","valuePrimitive","sourceValue","optionIndex","optionValue","check","_range","floatingLabel","_valueIsObservableObject","_valueIsObservableArray","_source","valueLength","sourceItem","dataTextField","isObservableObject","cascadeFrom","listView","bound","_preselect","dropdowntree","oldValues","selectedNode","nonPrimitiveValues","_isMultipleSelection","_getAllChecked","removeIndex","newValue","old","arraySplice","selectedValue","gantt","_isBound","scheduler","grid","badge","addLength","shifted","shiftedLength","BindingTarget","toDestroy","hasValue","hasSource","hasEvents","hasChecked","hasCss","widgetBinding","WidgetBindingTarget","specificBinders","applyBinding","binder","keyValueRegExp","whiteSpaceRegExp","parseBindings","token","colonIndex","createBindings","childrenCopy","unbindElement","bindingTargetForRole","dom","destroyWidget","bindingTarget","destroyWidgets","namespace","observableHierarchy","recursiveRead","TRANSITION_START","TRANSITION_END","SHOW","HIDE","sizzleErrorRegExp","bodyRegExp","SHOW_START","SAME_VIEW_REQUESTED","VIEW_SHOW","VIEW_TYPE_DETERMINED","AFTER","classNames","View","renderOnInit","_createElement","wrapInSections","_renderSections","_wrap","_evalTemplate","evalTemplate","_useWithBlock","_fragments","detachOnHide","detachOnDestroy","notInitialized","_eachFragment","ViewClone","triggerBeforeShow","triggerBeforeHide","showStart","showEnd","hideEnd","detach","purge","fragments","methodName","getElementById","contents","replaceWith","_wrapper","_createContent","_createHeader","_createFooter","contentSelector","contentElement","footer","Layout","containers","_createContainer","showIn","ViewContainer","Fragment","attach","transitionRegExp","running","after","locationID","theTransition","transitionData","parseTransition","ViewEngine","sandbox","_hideViews","rootView","layouts","viewContainer","showView","remoteViewURLPrefix","_findViewElement","reload","_createView","urlPath","wrapInner","_locate","$angular","_findViewElementById","_createSpaView","_createMobileView","defaultTransition","loader","getLayout","getLayoutProxy","modelScope","viewOptions","isJQueryPromise","isNativePromise","catch","signalr","hub","invoke","callbacks","_crud","server","OS","invalidZeroEvents","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","PRESS","HOLD","SELECT","START","MOVE","CANCEL","TAP","DOUBLETAP","RELEASE","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","api","mouse","pointer","ENABLE_GLOBAL_SURFACE","touchDelta","touch1","touch2","x1","y1","x2","y2","dx","dy","center","distance","sqrt","getTouches","currentTarget","identifier","pointerId","TouchAxis","_updateLocationData","startLocation","velocity","timeStamp","timeDelta","initialDelta","Touch","userEvents","touchInfo","useClickAsTap","threshold","initialTouch","pressEvent","_clicks","supportDoubleTap","_moved","_finished","press","_holdTimeout","_hold","minHold","_trigger","_tap","_clickTimeout","preventMove","_shouldNotMove","_withinIgnoreThreshold","UserEvents","dispose","_start","endTime","activeTouches","isMoved","startTime","xDelta","yDelta","withEachUpEvent","downEvents","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","eventNS","surface","ownerDocument","pressed","defaultAction","touchAction","preventDragEvent","surfaceElement","preventIfMovingProxy","preventIfMoving","_isMoved","_disposeAll","capture","_isMultiTouch","_apiCall","_maxTouchesReached","_select","which","_move","_eachTouch","_end","_click","pageX","pageY","matchingTouch","ClickMoveClick","_downStarted","_down","_downTarget","_up","currentMilestone","_preventCancel","clickMoveClick","defaultThreshold","lastDropTarget","$window","draggables","dropTargets","dropAreas","KEYUP","DRAGSTART","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","numericCssPropery","within","containerBoundaries","minX","minY","TapCapture","_press","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","measure","scrollSize","makeVirtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","dragMove","resistance","translateAxis","Pane","elastic","gesturestart","gesture","gesturechange","coordinates","previousGesture","previousCenter","scaleDelta","offsetX","offsetY","scaleWith","TRANSFORM_STYLE","Movable","webkitTransformOrigin","_saveCoordinates","by","scaleTo","newCoordinates","destroyDroppable","groupName","droppables","DropTarget","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","_cache","DropTargetArea","Draggable","_activated","_startClickMoveClick","_drag","_onCancel","hold","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","holdToDrag","autoScroll","cancelHold","_updateHint","boundaries","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","currentTargetOffset","scopeTarget","scopeFrom","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","findScrollableParent","_lastEvent","_processMovement","autoScrollVelocity","scrollableViewPort","_scrollCompenstation","_scrollVelocity","_scrollInterval","_autoScroll","_withDropTarget","targetElement","compensation","yIsScrollable","xIsScrollable","isRootNode","scrollableRoot","yInBounds","xInBounds","_cancel","initialTarget","targets","areas","theTarget","theFilter","targetLen","areaLen","checkTarget","mouseX","mouseY","rect","AUTO_SCROLL_AREA","utils","RELEASECLASS","REFRESHCLASS","SCROLL","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","controlsId","elementSize","scrollMovable","alwaysVisible","paneSize","sizeRatio","_ariaValue","visibility","_native","prepend","scrollElement","fixedContainer","avoidScrolling","velocityX","velocityY","horizontalSwipe","verticalSwipe","pane","zoomSnapBack","animatedScroller","scrollTo","mousewheelScrolling","_wheelScroll","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","ctrlKey","_wheelTimeout","pullOffset","visibleScrollHints","pullTemplate","releaseTemplate","refreshTemplate","contentResized","_scale","zoomOut","animatedScrollTo","pullHandled","refreshHint","hintContainer","yinertia","xinertia","_paneChange","_dragEnd","scrollBar","elementId","OPEN","CLOSE","DEACTIVATE","ACTIVATE","CENTER","TOP","BOTTOM","ABSOLUTE","BODY","LOCATION","EFFECTS","ACTIVE","ACTIVEBORDER","ACTIVEBORDERREGEXP","ACTIVECHILDREN","DOCUMENT_ELEMENT","WINDOW","NS","Popup","parentPopup","collisions","collision","downEvent","anchor","_hovered","scrollArea","animation","open","_animationClose","_mousedownProxy","_mousedown","_resizeProxy","toggleTarget","toggleEvent","viewport","copyAnchorStyles","modal","adjustSize","omitOriginOffsets","_hideDirClass","_closing","_toggleResize","fixed","listbox","_resizeOnWrap","flipped","_position","_openAnimation","_showDirClass","_location","dirClass","skipEffects","openEffects","closeEffects","popup","_resizeTimeout","_scrollableParents","_fit","viewPortSize","output","_flip","anchorSize","boxSize","siblingContainer","parentZIndex","viewportOffset","viewportWidth","viewportHeight","isWindow","origins","positions","siblings","_align","pos","offsetParent","offsets","flipPos","wrapperHeight","appendToOffset","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","anchorWidth","anchorHeight","tabKeyTrapNS","TabKeyTrap","trap","_keepInTrap","removeTrap","shouldTrap","_focusableElements","sortedElements","_sortFocusableElements","_nextFocusable","_focus","tabIndex","attrName","_haveSelectionRange","contentWindow","elementType","HTMLBase","stylingOptions","_addClasses","previouslyAddedClasses","outerHTML","KI_PREFFIX","KSVG_PREFFIX","FLIP_HORIZONTAL","FLIP_PREFIX","FLIP_VERTICAL","ICON_TYPES","svg","HTMLSvgIcon","font","HTMLFontIcon","FLIP_CLASSES","HTMLBaseIcon","flip","iconClass","_className","icon","currentIconClass","includes","svgElm","iconNameMatch","svgIcons","viewBox","xmlns","renderIcon","iconType","getIconRenderer","accessibilityIcon","aggregateFieldsIcon","alignBottomIcon","alignCenterIcon","alignItemsBaselineAltIcon","alignItemsBaselineIcon","alignItemsCenterAltIcon","alignItemsCenterIcon","alignItemsEndAltIcon","alignItemsEndIcon","alignItemsStartAltIcon","alignItemsStartIcon","alignItemsStretchAltIcon","alignItemsStretchIcon","alignJustifyIcon","alignLeftIcon","alignMiddleIcon","alignRemoveIcon","alignRightIcon","alignSelfCenterAltIcon","alignSelfCenterIcon","alignSelfEndAltIcon","alignSelfEndIcon","alignSelfStartAltIcon","alignSelfStartIcon","alignSelfStretchAltIcon","alignSelfStretchIcon","alignToGridIcon","alignTopIcon","allIcon","anchorIcon","applyFormatIcon","arrowDownIcon","arrowLeftIcon","arrowOverflowDownIcon","arrowRightIcon","arrowRotateCcwIcon","arrowRotateCcwSmallIcon","arrowRotateCwIcon","arrowRotateCwSmallIcon","arrowUpIcon","arrowsAxesIcon","arrowsLeftRightIcon","arrowsMoveIcon","arrowsNoChangeIcon","arrowsNoRepeatIcon","arrowsSwapIcon","arrowsTopBottomIcon","barcodeIcon","barcodeOutlineIcon","barcodeQrCodeScannerIcon","barcodeScannerIcon","behanceBoxIcon","behanceIcon","bellIcon","binocularsIcon","bloggerBoxIcon","bloggerIcon","blurIcon","boldIcon","bookIcon","borderBottomIcon","borderColorIcon","borderLeftIcon","borderRadiusBottomLeftIcon","borderRadiusBottomRightIcon","borderRadiusIcon","borderRadiusTopLeftIcon","borderRadiusTopRightIcon","borderRightIcon","borderStyleBottomIcon","borderStyleIcon","borderStyleLeftIcon","borderStyleRightIcon","borderStyleTopIcon","borderTopIcon","borderTypeIcon","bordersAllIcon","bordersInsideHorizontalIcon","bordersInsideIcon","bordersInsideVerticalIcon","bordersNoneIcon","bordersOutsideIcon","bordersShowHideIcon","boxSizingIcon","brightnessContrastIcon","bringBackwardIcon","bringForwardIcon","bringToBackIcon","bringToFrontIcon","brushIcon","buildingBlocksIcon","buttonIcon","calculatorIcon","calendarDateIcon","calendarIcon","cameraIcon","cancelCircleIcon","cancelIcon","cancelOutlineIcon","caretAltDownIcon","caretAltExpandIcon","caretAltLeftIcon","caretAltRightIcon","caretAltToBottomIcon","caretAltToLeftIcon","caretAltToRightIcon","caretAltToTopIcon","caretAltUpIcon","caretBlIcon","caretBrIcon","caretDoubleAltDownIcon","caretDoubleAltLeftIcon","caretDoubleAltRightIcon","caretDoubleAltUpIcon","caretTlIcon","caretTrIcon","cartIcon","categorizeIcon","cellSplitHorizontallyIcon","cellSplitVerticallyIcon","cellsMergeHorizontallyIcon","cellsMergeIcon","cellsMergeVerticallyIcon","changeManuallyIcon","chartAreaClusteredIcon","chartAreaRangeIcon","chartAreaStacked100Icon","chartAreaStackedIcon","chartBarClusteredIcon","chartBarRangeIcon","chartBarStacked100Icon","chartBarStackedIcon","chartBubbleIcon","chartCandlestickIcon","chartChoroplethIcon","chartColumnClusteredIcon","chartColumnRangeIcon","chartColumnStacked100Icon","chartColumnStackedIcon","chartDoughnutIcon","chartLineIcon","chartLineMarkersIcon","chartLineStacked100Icon","chartLineStacked100MarkersIcon","chartLineStackedIcon","chartLineStackedMarkersIcon","chartOhlcIcon","chartPieIcon","chartRadarFilledIcon","chartRadarIcon","chartRadarMarkersIcon","chartRoseIcon","chartScatterIcon","chartScatterSmoothLinesIcon","chartScatterSmoothLinesMarkersIcon","chartScatterStraightLinesIcon","chartScatterStraightLinesMarkersIcon","checkCircleIcon","checkIcon","checkOutlineIcon","checkboxCheckedIcon","checkboxIcon","checkboxIndeterminateIcon","checkboxNullIcon","chevronDoubleDownIcon","chevronDoubleLeftIcon","chevronDoubleRightIcon","chevronDoubleUpIcon","chevronDownIcon","chevronLeftIcon","chevronRightIcon","chevronUpIcon","circleIcon","clearCssIcon","clipboardCodeIcon","clipboardHtmlIcon","clipboardIcon","clipboardMarkdownIcon","clipboardTextIcon","clipboardWordAltIcon","clipboardWordIcon","clockArrowRotateIcon","clockIcon","closedCaptionsIcon","cloudIcon","codeIcon","codeSnippetIcon","colResizeIcon","columnFreezeIcon","columnsIcon","commentIcon","commentRemoveIcon","commentsRemoveIcon","connectorIcon","convertLowercaseIcon","convertUppercaseIcon","copyFormatIcon","copyIcon","cropIcon","crosstabIcon","crosstabWizardIcon","csIcon","csprojIcon","css3Icon","cssIcon","customFormatIcon","customIconIcon","cutIcon","dataCsvIcon","dataIcon","dataJsonIcon","dataOdsIcon","dataRestIcon","dataSdsIcon","dataSqlIcon","dataWebIcon","decimalDecreaseIcon","decimalIncreaseIcon","decreaseHorizontalSpacingIcon","decreaseVerticalSpacingIcon","deliciousBoxIcon","deliciousIcon","detailSectionIcon","diggBoxIcon","diggIcon","dimensionsIcon","displayBlockIcon","displayFlexIcon","displayInlineBlockIcon","displayInlineFlexIcon","divIcon","divideIcon","documentManagerIcon","dollarIcon","downloadIcon","downloadLightIcon","dragAndDropIcon","dribbbleBoxIcon","dribbbleIcon","dropletIcon","dropletSlashIcon","dropletSliderIcon","editToolsIcon","envelopBoxIcon","envelopIcon","envelopLinkIcon","envelopeBoxIcon","envelopeIcon","envelopeLinkIcon","equalIcon","exclamationCircleIcon","exeIcon","exportIcon","eyeIcon","eyeSlashIcon","eyedropperIcon","facebookBoxIcon","facebookIcon","fileAddIcon","fileAscxIcon","fileAudioIcon","fileBacIcon","fileConfigIcon","fileCsvIcon","fileDataIcon","fileDiscImageIcon","fileErrorIcon","fileExcelIcon","fileFlashIcon","fileFooterIcon","fileHeaderIcon","fileHorizontalIcon","fileIcon","fileImageIcon","fileMdbIcon","filePdfIcon","filePptIcon","filePresentationIcon","fileProgrammingIcon","filePsdIcon","fileReportIcon","fileTxtIcon","fileTypescriptIcon","fileVideoIcon","fileWordIcon","fileWrenchIcon","fileZipIcon","filesErrorIcon","filmIcon","filterAddExpressionIcon","filterAddGroupIcon","filterClearIcon","filterIcon","filterSmallIcon","filterSortAscSmallIcon","filterSortDescSmallIcon","flashManagerIcon","flipHorizontalIcon","flipVerticalIcon","folderAddIcon","folderIcon","folderMoreIcon","folderOpenIcon","folderUpIcon","fontFamilyIcon","fontGrowIcon","fontShrinkIcon","fontSizeIcon","foregroundColorIcon","formElementIcon","formIcon","formatCodeBlockIcon","formulaFxIcon","forwardIcon","fullscreenExitIcon","fullscreenIcon","gapColumnIcon","gapRowIcon","gaugeLinearIcon","gaugeRadialIcon","gearIcon","gearsIcon","globeIcon","globeLinkIcon","globeOutlineIcon","globeUnlinkIcon","googleBoxIcon","googleIcon","googlePlusBoxIcon","googlePlusIcon","graphIcon","grayscaleIcon","greaterOrEqualIcon","gridIcon","gridLayoutIcon","groupBoxIcon","groupCollectionIcon","groupFooterSectionIcon","groupHeaderSectionIcon","groupIcon","groupSectionIcon","h1Icon","h2Icon","h3Icon","h4Icon","h5Icon","h6Icon","handIcon","handleDragIcon","handleResizeAltIcon","handleResizeIcon","hdIcon","heartIcon","heartOutlineIcon","homeIcon","horizontalRuleIcon","html5Icon","hyperlinkOpenIcon","hyperlinkOpenSmIcon","imageAbsolutePositionIcon","imageAddIcon","imageEditIcon","imageExportIcon","imageIcon","imageMapEditorIcon","imageResizeIcon","imagesIcon","importIcon","inboxIcon","increaseHorizontalSpacingIcon","increaseVerticalSpacingIcon","indentIcon","infoCircleIcon","inheritedIcon","insertBottomIcon","insertMiddleIcon","insertTopIcon","invertColorsIcon","italicIcon","jsIcon","justifyContentAroundAltIcon","justifyContentAroundIcon","justifyContentBetweenAltIcon","justifyContentBetweenIcon","justifyContentCenterAltIcon","justifyContentCenterIcon","justifyContentEndAltIcon","justifyContentEndIcon","justifyContentStartAltIcon","justifyContentStartIcon","kpiStatusDenyIcon","kpiStatusHoldIcon","kpiStatusOpenIcon","launchIcon","layout1By4Icon","layout2By2Icon","layoutIcon","layoutSideBySideIcon","layoutStackedIcon","lessOrEqualIcon","letterSpaceIcon","levelDownIcon","levelToTopIcon","levelUpIcon","lineHeightIcon","linkAddIcon","linkIcon","linkVerticalIcon","linkedinBoxIcon","linkedinIcon","listLatinBigIcon","listLatinSmallIcon","listOrderedIcon","listRomanBigIcon","listRomanLowerIcon","listRomanSmallIcon","listRomanUpperIcon","listUnorderedIcon","listUnorderedOutlineIcon","listUnorderedSquareIcon","lockIcon","loginIcon","logoutIcon","makeHorizontalSpacingEqualIcon","makeSameHeightIcon","makeSameSizeIcon","makeSameWidthIcon","makeVerticalSpacingEqualIcon","mapMarkerIcon","mapMarkerTargetIcon","maxHeightIcon","maxWidthIcon","mediaManagerIcon","menuIcon","minHeightIcon","minWidthIcon","minusCircleIcon","minusIcon","minusOutlineIcon","minusSmIcon","mirrorIcon","moreHorizontalIcon","moreVerticalIcon","musicNotesIcon","myspaceBoxIcon","myspaceIcon","nonRecurrenceIcon","notEqualIcon","outdentIcon","outlineOffsetIcon","outlineWidthIcon","overlapIcon","paddingBottomIcon","paddingIcon","paddingLeftIcon","paddingRightIcon","paddingTopIcon","pageFooterSectionIcon","pageHeaderSectionIcon","paletteIcon","paneFreezeIcon","paperPlaneIcon","paperclipAltIcon","paperclipIcon","paragraphAddIcon","parameterBooleanIcon","parameterDateTimeIcon","parameterFloatIcon","parameterIntegerIcon","parameterStringIcon","parametersByteArrayIcon","parametersIcon","parametersUnknownIcon","passwordIcon","pauseIcon","pauseSmIcon","pencilIcon","percentIcon","photosIcon","pinIcon","pinterestBoxIcon","pinterestIcon","playIcon","playSmIcon","playlistIcon","plusCircleIcon","plusIcon","plusOutlineIcon","plusSmIcon","pointerIcon","positionBottomIcon","positionLeftIcon","positionRightIcon","positionTopIcon","printIcon","puzzlePieceIcon","qrCodeIcon","qrCodeOutlineIcon","qrCodeScannerIcon","questionCircleIcon","radiobuttonCheckedIcon","radiobuttonIcon","redditBoxIcon","redditIcon","redoIcon","regularExpressionIcon","removeHorizontalSpacingIcon","removeVerticalSpacingIcon","reorderIcon","replaceAllIcon","replaceSingleIcon","reportElementIcon","rewindIcon","rightDoubleQuotesIcon","rotateIcon","rotateLeftIcon","rotateRightIcon","roundCornersIcon","rowFreezeIcon","rowsIcon","rssBoxIcon","rssIcon","saveIcon","searchIcon","selectAllIcon","selectBoxIcon","setColumnPositionIcon","shapeLineIcon","shapesIcon","shareIcon","sharpenIcon","signatureIcon","silverlightIcon","sizeToGridIcon","slidersIcon","slnIcon","snapGridIcon","snapToGridlinesIcon","snapToSnaplinesIcon","sortAscIcon","sortAscSmallIcon","sortClearIcon","sortDescIcon","sortDescSmallIcon","spellCheckerIcon","starIcon","starOutlineIcon","stickIcon","stopIcon","stopSmIcon","strikethroughIcon","stripAllFormattingIcon","stripCssFormatIcon","stripFontElementsIcon","stripSpanElementsIcon","stripWordFormattingIcon","stumbleUponBoxIcon","stumbleUponIcon","subreportIcon","subscriptIcon","sumIcon","supscriptIcon","symbolIcon","tableAddIcon","tableAlignBottomCenterIcon","tableAlignBottomLeftIcon","tableAlignBottomRightIcon","tableAlignMiddleCenterIcon","tableAlignMiddleLeftIcon","tableAlignMiddleRightIcon","tableAlignRemoveIcon","tableAlignTopCenterIcon","tableAlignTopLeftIcon","tableAlignTopRightIcon","tableBodyIcon","tableCellDeleteIcon","tableCellIcon","tableCellPropertiesIcon","tableColumnDeleteIcon","tableColumnGroupsIcon","tableColumnInsertLeftIcon","tableColumnInsertRightIcon","tableCornerIcon","tableDeleteIcon","tableIcon","tablePositionCenterIcon","tablePositionEndIcon","tablePositionStartIcon","tablePropertiesIcon","tableRowDeleteIcon","tableRowGroupsIcon","tableRowInsertAboveIcon","tableRowInsertBelowIcon","tableUnmergeIcon","tableWizardIcon","tellAFriendBoxIcon","tellAFriendIcon","templateManagerIcon","textClipIcon","textOverflowIcon","textTruncateIcon","textWrapArrowIcon","textWrapIcon","textareaIcon","textboxHiddenIcon","textboxIcon","thumbnailsDownIcon","thumbnailsLeftIcon","thumbnailsRightIcon","thumbnailsUpIcon","tocSectionIcon","tocSectionLevelIcon","toggleFullScreenModeIcon","toolbarFloatIcon","trackChangesAcceptAllIcon","trackChangesAcceptIcon","trackChangesEnableIcon","trackChangesIcon","trackChangesRejectAllIcon","trackChangesRejectIcon","transparencyIcon","trashIcon","tumblrBoxIcon","tumblrIcon","twitterBoxIcon","twitterIcon","underlineIcon","undoIcon","ungroupIcon","unlinkIcon","unlinkVerticalIcon","unlockIcon","unpinIcon","unstickIcon","uploadIcon","userIcon","validationDataIcon","validationXhtmlIcon","vbIcon","vbprojIcon","videoExternalIcon","vimeoBoxIcon","vimeoIcon","volumeDownIcon","volumeMuteIcon","volumeUpIcon","warningCircleIcon","warningTriangleIcon","wholeWordIcon","windowIcon","windowMinimizeIcon","windowRestoreIcon","wrenchIcon","xCircleIcon","xIcon","xOutlineIcon","yammerBoxIcon","yammerIcon","youtubeBoxIcon","youtubeIcon","zoomActualSizeIcon","zoomBestFitIcon","zoomInIcon","zoomOutIcon","FontIcon","_icon","SvgIcon","DOCUMENT","ARIAIDSUFFIX","DESCRIBEDBY","CONTENTLOAD","KCONTENTFRAME","TEMPLATE","autoHide","callout","IFRAMETEMPLATE","POSITIONS","REVERSE","DIRCLASSES","DIMENSIONS","restoreTitle","restoreTitleAttributeForElement","saveTitleAttributeForElement","saveTitleAttributes","TooltipBase","_isShownOnMouseEnter","_showOn","showOn","_keydown","showAfter","hideAfter","_saveTitle","_show","_isShownOnClick","_isShownOnFocus","_positionCallout","elementOffset","offsetAmount","_offset","arrow","arrowWidth","isTopLeft","isFlipped","marginRule","_addDescribedBy","ariaId","describedBy","_removeDescribedBy","arrayAttr","finalArray","finalDescribedbyAttr","tooltipId","currentDescribedBy","_openPopup","Tooltip","_documentKeyDownHandler","_documentKeyDown","_mouseenter","_mouseleave","_blur","_appendContent","iframe","contentOptions","showIframe","_ajaxRequest","_initPopup","activate","_closeButtonClick","_closePopup","util","createPromise","promiseAll","extendStatic","namedColors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","matchNamedColor","color","colorNames","regexp","BaseColor","toHSV","toRGB","toHex","toBytes","toCss","toCssRgba","rgb","toDisplay","parseColor","other","NaN","c1","c2","r","Bytes","RGB","HSV","toHSL","l","HSL","hex","alpha","n","p","hue2rgb","alphaFromHex","Color","this$1$1","resolvedColor","resolveColor","formatRegex","re","processor","channels","normalizeByte","padDigit","brightness","percBrightness","isDark","fromBytes","fromRGB","fromHSV","fromHSL","LRUCache","_length","put","entry","_head","_tail","newer","older","REPLACE_REGEX","normalizeText","objectKey","hashKey","defaultMeasureBox","DEFAULT_OPTIONS","baselineMarkerSize","TextMetrics","baseline","cacheKey","cachedResult","measureBox","baselineMarker","_baselineMarker","textStr","offsetTop","measureText","kendoDrawingUtil","kendoUtil","supportBrowser","HasObservers","Class$$1","observers","_observers","addObserver","removeObserver","_suspended","observer","optionsChange","geometryChange","suspend","resume","_observerField","append$1$1","second","arabicToRoman","roman","defined","defId","definitionId","DEG_TO_RAD","PI","MAX_NUM","MAX_VALUE","MIN_NUM","deg","radians","KEY_STR","encodeBase64","utfInput","hi","low","encodeUTF8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","eventCoordinates","eventElement","isTransparent","limitValue","mergeSort","cmp","ai","bi","rad","degrees","power","valueOrDefault","bindEvents","getBoundingClientRect","clientTop","clientLeft","elementStyles","stylesArray","getPixels","size$1","unbindEvents","elementPadding","paddingLeft","paddingTop","Matrix","multiplyCopy","matrix","invert","det","separator","unit","angle","cos","sin","scaleX","scaleY","IDENTITY","matrixRegexp","transformMatrix","matrixString","parseMatrix","elementScale","parentElement","parentMatrix","toString$1","OptionsStore","HasObservers$$1","parentObj","_clear","wrapped","setAccessor","getAccessor","withAccessors","TBase","capitalized","defineAccessors","toMatrix","Point","superclass","staticAccessors","originPoint","translateWith","point","scaleCopy","transformCopy","distanceTo","doRound","arg0","arg1","maxX","maxY","minPoint","maxPoint","defineProperties","Size","Rect","cornerRadius","setOrigin","setCornerRadius","getOrigin","getCornerRadius","topLeft","bottomRight","topRight","bottomLeft","bbox","tl","tr","br","bl","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","intersect","rect1","rect2","Transformation","_matrix","_optionsChange","multiply","transform$1","Element$1","prototypeAccessors","parentTransform","currentTransform","combinedMatrix","elementMatrix","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","stroke","ellipseExtremeAngles","ry","extremeX","extremeY","PI_DIV_2","Circle$2","Circle","setCenter","setRadius","getCenter","pointAt","_pointAt","extremeAngles","currentPointX","currentPointY","currentPoint","pointDistance","paintable","anonymous","newFill","IDENTITY_MATRIX_HASH","measurable","matrixHash","_bboxCache","_matrixHash","_bbox","strokeWidth","geometryAccessor","withGeometry","defineGeometryAccessors","geometry","rawBBox","_geometry","PRECISION","close$1","tolerance","closeOrLess","pow$1","Arc$2","Arc","radiusX","radiusY","startAngle","endAngle","anticlockwise","xRotation","radian","curvePoints","interval","_arcInterval","intervalAngle","subIntervalsCount","subIntervalAngle","currentAngle","nextAngle","points","_intervalCurvePoints","cp1","cp2","p2","endPoint","currentAngleX","bboxStartAngle","currentAngleY","oldStart","p1","p1Derivative","_derivativeAt","p2Derivative","angleRad","pointRadius","startPoint","intersection","p0","p3","s1x","s2x","s1y","s2y","nx","ny","lineIntersection","calculateAngle","inAngleRange","largeArc","swipe","arcParameters","cosine","sine","xT","yT","xt2","yt2","rx2","ry2","constT","cxT","cyT","cx","cy","uX","uY","vX","vY","acos","angleCosine","signEndAngle","normalizeArcParameters","ElementsArray","_splice","_add","_remove","_clearObserver","_setObserver","GeometryElementsArray","ElementsArray$$1","isOutOfEndPoint","controlPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","img","cNumber","addConstant","negate","multiplyConstant","nthRoot","rad$$1","nthR","isReal","numberSign$1","solveCubicEquation","squareRoot","solveQuadraticEquation","y3","z1","z2","b3a","hasRootsInRange","rootField","polynomial","roots","lineIntersectionsCount","intersects","pointAccessor","withPoints","definePointAccessors","Segment","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","segment","intersectionsCount","rayIntersection","curveIntersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","removeDuplicates","lineFunction","getControlPoints","tangent","xField","yField","restrict","switchOrientation","calculateFunction","isLine","getTangent","monotonic","isMonotonicByField","invertAxis","numberSign","secondCP","secondControlPoint","oldXField","firstCP","firstControlPoint","restrictControlPoint","cp","xValue","yValue","ShapeMap","isRelative","lineTo","curveTo","toLineParamaters","arcTo","lastControlIn","previousCommand","segments","reflectionPoint","cubicControlPoints","quadraticToCubicControlPoints","isVertical","insertPosition","third","scaledPoint","SEGMENT_REGEX","SPLIT_REGEX","parsePath","pathInstance","closePath","parseParameters","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","elementsClippedBoundingBox","SPACE","Path","lineJoin","point$$1","lastSegment","arc","_addArcSegments","closed","segmentStart","segmentEnd","currentType","print","pathWidth","segmentBox","MultiPath","fromRect","curveFromPoints","pointsIn","initialControlPoint","lastControlPoint","controlPoints","cp0","controlPoints$1","controlPoints$2","tangent$2","pointsToCurve","fromArc","prototypeAccessors$1","toPath","Text","Image$1","Image","_rect","traversable","traverse","Group","childrenChange","_reparent","insertAt","removeAt","newParent","translateToPoint","transofrm","alignStart","align","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","revers","forEachReverse","Group$$1","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","justifyAlign","reflow","elementStart","groupBox","_initGroups","groupsSize","ref$1","groupOrigin","elementOrigin","groupStart","arrangeElements","groupIdx","lineSize","bboxes","scaledStart","newStart","_newGroup","addGroup","_addToGroup","Rect$2","Rect$$1","alignElements","alignment","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","wrapElements","stacks","maxSize","stack","stackSize","addElementToStack","getStacks","startElement","elementIdx","StopsArray","optionsAccessor","GradientStop","arg","defineOptionsAccessors","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","instance$1","easingFunctions","swing","linear","easeOutElastic","asin","AnimationFactory","_items","_options","easing","finish","abort","loop","_stopped","wallTime","easingPosition","PathParser","BaseNode","srcElement","observe","removeSelf","invalidate","Surface$2","Observable$$1","Surface","_kendoExportVisual","exportVisual","_handler","_mousemove","_visual","_enableTracking","draw","domNode","_kendoNode","suspendTracking","_suspendedTracking","resumeTracking","_elementOffset","padding","_surfacePoint","coord","inverseTransform","renderAttr","renderAllAttr","attrs","renderStyle","NODE_MAP","SVG_NS","NONE","styleAttr","replaceStyleAttr","restoreStyleAttr","styleString","applyStyle","renderSVG","testContainer","hasParser","DOMParser","namespaceURI","chartDoc","parseFromString","importedDoc","adoptNode","renderSVG$1","DefinitionMap","isDefinition","BaseNode$$1","definitions","clearDefinitions","childNode","createDefinitions","attachTo","setElement","childElement","renderChildren","updateDefinition","allAttr","allCss","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderOpacity","renderId","hasDefinitions","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl","getElementsByTagName","hashIndex","GradientStopNode","Node$$1","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","GradientNode$$1","RadialGradientNode","ClipNode","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","addDefinition","mapItem","removeDefinition","RootNode","defs","firstElementChild","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","BUTT","ATTRIBUTE_MAP","PathNode","renderData","mapFill","mapStroke","undefined","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","ArcNode","PathNode$$1","CircleNode","GroupNode","ImageNode","mapPosition","mapSource","renderPosition","renderSource","MultiPathNode","RectNode","ENTITY_REGEX","decodeEntities","TextNode","setY","renderContent","renderTextAnchor","rtl","Surface$3","BaseSurface","_root","_template","_rootElement","ctm","getScreenCTM","alignToScreen","mouseover","mouseout","visual","svgStyles","NODE_MAP$2","renderPath","ctx","prevOut","bezierCurveTo","Node$2","initClip","clearClip","setClip","beginPath","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","GroupNode$2","renderTo","RootNode$2","canvas","getContext","invalidateHandler","_invalidate","_rescale","_devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","shape","_quadNode","pointShapes","QuadNode","QuadRoot$$1","inBounds","nodeRect","nodeBottomRight","inserted","halfWidth","halfHeight","ROOT_SIZE","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","levelWeight","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","PathNode$2","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","gradient","createLinearGradient","createRadialGradient","addColorStop","addGradientStops","strokeStyle","lineWidth","mozDash","webkitLineDash","ArcNode$2","CircleNode$2","ImageNode$2","onLoad","onError","crossOrigin","onload","onerror","drawImage","MultiPathNode$2","RectNode$2","TextNode$2","textAlign","fillText","strokeText","instance$2","support$1","Surface$4","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","rootElement","loadingStates","resolveDataURL","toDataURL","currentShape","_currentShape","hasDocument","SurfaceFactory","implementation","hasFeature","preferred","exportGroup","rootGroup","exportRoot","svg$1","slice$1$1","thing","KENDO_PSEUDO_ELEMENT","IMAGE_CACHE","nodeInfo","microsoft","TextRect","Text$$1","_pdfRect","setCSS","cloneNodes","$el","$clone","dive","canvases","canvas$$1","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","tok","skip_ws","read_stop","to1","to2","num","parseAngle","read_linear_gradient","read_url","splitProperty","last$$1","in_paren","in_string","looking_at","getFontURL","getFontHeight","getFontFaces","doc","styleSheets","doStylesheet","ss","cssRules","ex","styleSheet","family","bold","italic","findFonts","addRule","addRules","incCounter","inc","resetCounter","doCounters","def","updateCounters","counterReset","counterIncrement","parseColor$1","whenImagesAreActuallyLoaded","pending","images","cacheImages","urls","getComputedStyle$1","bg","alphaNumeral","pushNodeInfo","decoration","createsStackingContext","_stackingContext","popNodeInfo","updateClipbox","_clipbox","pseudoElt","defa","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","getBorderRadius","sanitizeRadius","getContentBox","wt","wr","wb","wl","radiansToDegrees","setTransform$1","setClipping","clipPath","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","formatCounter","evalPseudoElementContent","displayCounter","getAllCounters","getCounter","getCssText","_renderWithPseudoElements","fake","pseudo","saveClass","_renderElement","kind","place","psel","backgroundColor","textOverflow","saveTextOverflow","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","boxes","innerbox","getClientRects","tableBorderLeft","tableBorderTop","tableBox","firstCellBox","adjustBoxes","drawOneBox","_avoidLinks","selectNodeContents","_pdfLink","listStyleType","listStylePosition","_drawBullet","bullet","boxSizing","renderElement","elementIndex","fontSize","lineHeight","paddingRight","fontFamily","disc","circle","square","drawBullet","clipit","isFormField","exportDOMVisual","wrap$$1","maybeRenderWidget","renderContents","drawEdge","Wtop","Wleft","Wright","rl","rr","transform$$1","drawRoundCorner","ri","drawOneBackground","background","drawBackgroundImage","pxlen","scaledAngle","atan","implicit","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","isFirst","isLast","drawBackground","shouldDrawLeft","shouldDrawRight","inv","renderImage","zIndexSort","sa","sb","za","zb","pa","renderFormField","tag","renderCheckbox","whiteSpace","selectedOptions","getSelectedOption","serializer","XMLSerializer","serializeToString","svg$$1","serializeSVG","floats","renderText","floating","isJustified","columnCount","textTransform","estimateLineLength","prevLineBottom","underline","lineThrough","overline","underlineOffset","forEachRect","underlinePos","drawTextLine","doChunk","selectNode","clientRects","actuallyGetRangeBoundingRect","rectangles","Infinity","origStart","setStart","setEnd","findEOL","eol","startOffset","cc","drawText","textBox","ypos","getTransform","main","_dom_zIndex","groupInStackingContext","mmul","a1","b1","d1","e1","a2","b2","d2","exportImage","surfaceOptions","exportSVG","vAlign","vStack","vWrap","fit","rectSize","drawDOM","defineFont","doOne","cls","avoidLinks","classList","forceBreak","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","pageWidth","pageHeight","hasMargin","multiPage","_ignoreMargin","makeTemplate","pages","_destructive","adjust","tfoot","ol","li","beforePageBreak","doPageBreak","splitElement","makePage","pageNum","keepTogether","tableLayout","bottomPadding","bottomBorder","saveAdjust","breakAtElement","fall","fallsOnMargin","splitText","firstInParent","colgroup","thead","gridHead","querySelector","repeatHeaders","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","pageClassName","available","nextnode","findEOP","endOffset","handlePageBreaks","canceled","TOOLTIP_CLOSE_TEMPLATE","SurfaceTooltip","_tooltipOptions","popupOptions","_openPopupHandler","_bindEvents","hideDelay","_showHandler","_showEvent","_surfaceLeaveHandler","_surfaceLeave","_mouseleaveHandler","_mousemoveHandler","_hideClick","_tooltipLeave","getPopup","shared","_tooltipShape","tooltip","_updateContent","tooltipOffset","_instance","surfaceOffset","_showTimeout","_autoHide","_measure","_closeButton","_popupRelatedTarget","DrawingSurface","_triggerInstanceHandler","_triggerInstanceEvent","_bindHandler","hideTooltip","_tooltip","showTooltip","geometryTransform","__common_getter_js","ARC","AXIS_LABEL_CLICK","BLACK","CIRCLE","CROSS","DATE","DEFAULT_FONT","DEFAULT_PRECISION","FORMAT_REGEX","INSIDE","MIN_VALUE","NOTE_CLICK","NOTE_HOVER","NOTE_LEAVE","OUTSIDE","ROUNDED_RECT","TRIANGLE","WHITE","constants","COORD_PRECISION","DEFAULT_HEIGHT","DEFAULT_WIDTH","HIGHLIGHT_ZINDEX","DEFAULT_SERIES_OPACITY","SPACE_REGEX","alignPathToPixel","clockwise","angle1","angle2","isObject","styleValue","SIZE_STYLES_REGEX","isSizeField","getSpacing","defaultSpacing","TemplateService","getTemplate","userImplementation","HashMap","_key","TRIGGER","InstanceObserver","handlerMap","callObserver","fnName","requiresHandlers","FontLoader","setDefaultOptions","sparseArrayLimits","fetchFonts","fonts","depth","loadFonts","Promise","preloadFonts","DELETED","LegacySet","_index","_values","has","delete","SetWrapper","Set","autoMajorUnit","relativeValue","theta","cosT","sinT","onCircle","Box","targetBox","wrapPoint","arrayPoint","snapTo","alignTo","targetCenter","shrink","dw","dh","unpad","getHash","overlaps","r1","rotatePoint","r2","r3","r4","toRect","hasSize","sizeFunc","Ring","innerRadius","middle","newRadius","radianAngle","ax","ay","adjacentBox","sector","midAndle","midPoint","hw","hh","ca","vector","startVector","endVector","dist","getBBox","angles","allAngles","numericComparer","startAngleIndex","endAngleIndex","Sector","ShapeBuilder","createRing","innerEnd","ChartElement","initUserOptions","currentChild","getRoot","getSender","service","getService","chartService","translateChildren","childrenCount","renderVisual","createVisual","addVisual","createAnimation","renderComplete","chartElement","appendVisual","childVisual","noclip","clipRoot","stackRoot","stackVisual","isStackRoot","visuals","sibling","matched","hasHighlight","highlight","createHighlight","toggleHighlight","customVisual","_highlight","highlightOptions","highlightVisualArgs","category","runningTotal","createGradientOverlay","gradientOptions","overlay","createGradient","supportsPointInactiveOpacity","BoxElement","shrinkToFit","hasSetSize","borderWidth","border","reflowPaddingBox","paddingBox","contentBox","hasBox","visualStyle","ShapeElement","pointData","getElement","borderRadius","visualOptions","RADIAL","GRADIENTS","glass","sharpBevel","roundedBevel","roundedGlass","supportVML","sharpGlass","bubbleShadow","boxDiff","RootElement","rootOptions","gradients","currentBox","createBackground","drawingGradient","hashCode","usedSpace","currentStops","currentStop","innerRadialStops","cleanGradients","FloatElement","_initDirection","elementAxis","groupSizeField","elementSizeField","groupSpacing","elementSpacing","vSpacing","reflowChildren","groupOptions","maxGroupElementsSize","groupsCount","groupsStart","groupElements","groupElementsCount","elementSize$$1","groupElementStart","elementBox","groupElementsSize","DrawingText","rectToBox","ROWS_SPLIT_REGEX","TextBox","_initContainer","_autoReflow","floatElement","textOptions","rowIdx","visualFn","_boxReflow","visualBox","visualContext","normalBox","rotatedBox","rotationTransform","getDefaultVisual","boxCenter","Title","_textBox","collapseVerticalMargins","prevBox","buildTitle","defaultOptions","titleOptions","orderTitles","titles","AxisLabel","alignRotation","rotationMatrix","rotationOrigin","alignAxis","distanceAxis","axisAnchor","alignEnd","distanceLeft","distanceRight","alignCenter","Note","childAlias","noteTemplate","auto","aliasFor","wrapperBox","lineStart","line","linePoints","createLine","defaultVisual","eventArgs","over","current$1","IntlService","FORMAT_REPLACE_REGEX","FormatService","intlService","_intlService","formatString","intl","localeAuto","locale","current$2","ChartService","chart","isPannable","pannable","lock","DomEventsBuilder","services","createAxisTick","tickOptions","tickX","tickY","createAxisGridLine","gridLine","lineEnd","Axis","labels","majorTickSize","minorTickSize","minorTicks","minorTickType","majorTicks","majorTickType","initFields","_deferLabels","createLabels","createTitle","createNotes","labelsRange","labelsCount","normalizeLabelRotation","labelOptions","clearLabels","autoRotateLabels","labelContext","createAxisLabel","clearTitle","lineBox","axisX","axisY","visualSize","notes","parseNoteValue","note","createPlotBands","gridLinesVisual","gridLines","_gridLines","createTicks","lineGroup","majorUnit","tickLineOptions","tickPositions","skipUnit","getMajorTickPositions","getMinorTickPositions","minorUnit","_alignLines","_lineGroup","getActualTickSize","tickSize","_backgroundPath","plotBands","plotArea","_plotbandGroup","altAxis","axes","slotX","slotY","getSlot","createPlotBandLabel","bandRect","textbox","labelTemplate","createGridLines","minorGridLines","majorGridLines","axisLineVisible","linePos","lineOptions","sizeFn","titleSize","maxLabelSize","labelSize","arrangeTitle","arrangeLabels","arrangeNotes","getLabelsTickPositions","labelTickIndex","labelsBetweenTicks","tickIx","firstTickPosition","nextTickPosition","positionStart","positionEnd","positionLabel","labelBox","labelOffset","labelX","labelY","autoRotateLabelAngle","slotWidth","limit","labelAngle","idx$1","slot","shouldRenderNote","noteSlot","secondAxis","axisLabelText","tmpl","defaultText","maxLabelOffset","lastLabel","offsetField","startPosition","endPosition","maxStartOffset","maxEndOffset","startTick","endTick","limitRange","rangeSize","minValue","maxValue","valueRange","seriesMin","seriesMax","lineDir","lineInfo","axisDir","axisOrigin","pointOffset","scaleToDelta","rawScale","justified","prepareUserOptions","axisCrossingValue","MILLISECONDS","SECONDS","MINUTES","HOURS","DAYS","WEEKS","MONTHS","YEARS","TIME_PER_SECOND","TIME_PER_MINUTE","TIME_PER_HOUR","TIME_PER_DAY","TIME_PER_WEEK","TIME_PER_MONTH","TIME_PER_YEAR","TIME_PER_UNIT","years","weeks","absoluteDateDiff","addTicks","ticks","toDate","startOfWeek","daysToSubtract","addDuration","dateValue","roundedDate","setMinutes","tzDiff","addHours","setSeconds","setMilliseconds","floorDate","ceilDate","dateComparer","dateDiff","toTime","dateEquals","timeIndex","baseUnit","dateIndex","baseUnitStep","parseDates","dates","CategoryAxis","_ticks","categoriesHash","categories","srcCategories","definedMin","definedMax","rangeIndices","totalRange","totalRangeIndices","roundedRange","_seriesMax","scaleOptions","hideOutOfRangeLabels","valueAxis","firstLabel","getTicks","labelTicks","tickIndices","stepSize","indices","getTickPositions","_hash","hasMinor","filterOutOfRangePositions","slotBox","singleSlot","limitSlot","limittedSlot","categoryIndex","pointCategoryIndex","getCategory","totalIndex","categoryAt","categoriesCount","translateRange","scaleRange","minDelta","maxDelta","zoomRange","totalMin","totalMax","hideOutOfRangeNotes","pan","pointsRange","diffStart","diffEnd","rangeMin","rangeMax","_categoriesMap","currentRangeIndices","mapCategories","map$$1","COORDINATE_LIMIT","DateLabelFormats","BASE_UNITS","FIT","categoryRange","EmptyDateRange","displayIndices","displayRange","valuesCount","dateAt","DateRange","roundToBaseUnit","lowerEnd","roundToTotalStep","expandEnd","justifyEnd","valueStart","displayStart","valueEnd","displayEnd","_indices","minIdx","maxIdx","upper","roundedStep","autoBaseUnit","startUnit","startStep","unitSteps","nextStep","categoryLimits","span","autoBaseUnitSteps","maxDateGroups","autoUnit","autoUnitIx","units","totalUnits","initUnit","lastCategory","minDiff","categoryIx","defaultBaseUnit","DateCategoryAxis","dataRange","_parsed","panning","userSetBaseUnit","userSetBaseUnitStep","maxDivisions","divisionOptions","dataRangeOptions","divisionRange","rangeLabels","isEmpty","totalLimits","panRange","datesRange","indicesRange","autoBaseUnitStep","maxDiff","rangeDiff","baseUnitIndex","stepIndex","createRangeLabels","arrangeRangeLabels","position$1","autoRotateRangeLabels","hideOverlappingLabels","firstRangeLabel","lastRangeLabel","i$1","rangeLabel","unitFormat","dateFormats","createLabel","rotateLabel","dateRange","limitCoordinate","MIN_VALUE_RANGE$1","NumericAxis","autoOptions","narrowRange","autoMin","narrow","axisMin","autoAxisMin","autoMax","axisMax","autoAxisMax","roundToMajorUnit","remainderClose","autoAxisOptions","totalOptions","totalAxisOptions","userOptions","userSetMin","userSetMax","clearNullValues","userSetLimits","axisOptions","totalMajorUnit","getDivisions","stepValue","divisions","skipStep","getValue","isValidRange","ratio","remainder","DateValueAxis","timeUnits","baseUnitTime","actualUnits","unitsToAdd","head","tail","applyDefaults","axisCrossingValues","limittedRange","MIN_VALUE_RANGE$2","LogarithmicAxis","logMaxRemainder","autoAxisMax$1","autoAxisMin$1","throwNegativeValuesError","initRange","logMin","logMax","floorMax","traverseMajorTicksPositions","tickPosition","traverseMinorTicksPositions","minorOptions","_minorIntervalOptions","minorStep","GridLinesMixin","majorAngles","minorAngles","skipMajor","majorGridLineAngles","renderMajorGridLines","minorGridLineAngles","renderMinorGridLines","renderGridLines","radiusCallback","gridLineAngles","skipAngles","divs","intervals","altAxisVisible","RadarCategoryAxis","reflowLabels","skipOption","stepOption","divCount","divAngle","majorIntervals","minorIntervals","minorAngle","minorRadius","band","plotBandSlot","ring","totalDivs","slotAngle","fromValue","slotStart","PolarAxis","instanceOptions","RadarNumericAxisMixin","polarAxis","bandStyle","plotBandPoints","innerPoints","outerPoints","innerCircle","outerCircle","radarMajorGridLinePositions","radarMinorGridLinePositions","tickRadius","angleIx","angularDistance","gamma","beta","axisType","RadarNumericAxis","minorSkipStep","RadarLogarithmicAxis","CurveProcessor","dataPoints","tangent$1","Gradients","classArray","convertableToNumber","field$1","hasClasses","interpolateValue","mousewheelDelta","predicate","autoTextColor","createHashSet","supported","defaultErrorHandler","lteDateIndex","sortedDates","high","SASS_THEMES","ExportMixin","skipLegacy","exportPDF","imageDataURL","Point2D","Box2D","mwDelta","BAR_GAP","BAR_SPACING","SANS","SANS12","SANS16","TRANSPARENT","boxPlotSeries","outliersField","meanField","_brightness","downColor","whiskers","mean","median","bulletSeries","waterfallSeries","seriesDefaults","area","markers","rangeArea","verticalRangeArea","bar","boxPlot","bubble","candlestick","column","heatmap","pie","donut","funnel","horizontalWaterfall","ohlc","radarArea","radarLine","polarArea","polarLine","rangeBar","rangeColumn","scatterLine","verticalArea","verticalBoxPlot","verticalBullet","verticalLine","waterfall","chartBaseTheme","axisDefaults","categoryAxis","subtitle","legend","autoTheme","unsetColor","theme","hook","seriesTemplate","mapColor","varName","queryStyle","setInactiveOpacity","seriesTypes","inactiveOpacity","defaultFont","titleFont","paneTitleFont","labelFont","seriesPos","TEXT","SERIES","gaugeBaseTheme","diagramBaseTheme","shapeDefaults","hover","handles","selectable","connectionDefaults","tools","registerTheme","themeName","gauge","diagram","treeMap","fuse","arr1","arr2","inactiveItems","errorBars","scatter","chartArea","seriesColors","crosshair","rangePlaceholderColor","connectorDefaults","thumb","connectors","INACTIVE","INACTIVE_SHAPE","AXIS","PRIMARY","DIAGRAM_HOVER","noteStyle","sass","datavizConstants","GeometryPoint","ChartAxis","_axis","findAxisByName","ChartPane","chartsVisual","chartContainer","_pane","ChartPlotArea","_plotArea","backgroundVisual","_bgVisual","countNumbers","Aggregates","sumOrNull","avg","getField","row","SeriesBinder","_valueFields","_otherFields","_nullValue","_undefinedValue","valueFields","otherFields","_makeValue","canonicalFields","bindPoint","pointIx","fieldData","_bindFromArray","srcValueFields","sourceFields","srcPointFields","_bindFromObject","initialValue","srcFields","srcFieldName","sourceFieldName","percentRegex","standardDeviationRegex","ErrorRangeCalculator","errorValue","initGlobalRanges","deviationMatch","valueGetter","createValueGetter","getAverage","deviation","getStandardDeviation","errorRange","globalRange","standardError","getStandardError","getErrorRange","pointValue","percentValue","isSample","squareDifferenceSum","INITIAL_ANIMATION_DURATION","FADEIN","BORDER_BRIGHTNESS","START_SCALE","ERROR_LOW_FIELD","ERROR_HIGH_FIELD","X_ERROR_LOW_FIELD","X_ERROR_HIGH_FIELD","Y_ERROR_LOW_FIELD","Y_ERROR_HIGH_FIELD","INTERPOLATE","GAP","ABOVE","BELOW","SMOOTH","STEP","AREA","BAR","BOX_PLOT","BUBBLE","BULLET","CANDLESTICK","COLUMN","DONUT","FUNNEL","PYRAMID","HEATMAP","HORIZONTAL_WATERFALL","LINE","OHLC","PIE","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","RANGE_AREA","RANGE_BAR","RANGE_COLUMN","SCATTER","SCATTER_LINE","VERTICAL_AREA","VERTICAL_BOX_PLOT","VERTICAL_BULLET","VERTICAL_LINE","VERTICAL_RANGE_AREA","WATERFALL","EQUALLY_SPACED_SERIES","LEGEND_ITEM_CLICK","LEGEND_ITEM_HOVER","LEGEND_ITEM_LEAVE","SERIES_CLICK","SERIES_HOVER","SERIES_OVER","SERIES_LEAVE","PLOT_AREA_CLICK","PLOT_AREA_HOVER","PLOT_AREA_LEAVE","DRAG_END","DRAG_START","ZOOM_START","ZOOM","ZOOM_END","SELECT_START","SELECT_END","RENDER","SHOW_TOOLTIP","HIDE_TOOLTIP","PANE_RENDER","LOGARITHMIC","CATEGORY","INSIDE_END","INSIDE_BASE","OUTSIDE_END","MOUSEWHEEL","MOUSEWHEEL_DELAY","DRILLDOWN","DRILLDOWN_FIELD","GLASS","TOOLTIP_OFFSET","LINE_MARKER_SIZE","MOUSEWHEEL_ZOOM_RATE","ErrorBarBase","endCaps","valueBox","getAxis","centerBox","capsWidth","getCapsWidth","capValue","capStart","capEnd","createDefaultVisual","CategoricalErrorBar","seriesValueAxis","evalOptions","dryRun","needsEval","excluded","seriesCount","CategoricalChart","seriesCategoryAxis","valueAxisRanges","categoryPoints","seriesPoints","seriesOptions","_evalSeries","traverseDataPoints","addValue","pointOptions","seriesIx","pointType","invertAxes","plotValue","isStacked100","otherValues","categorySum","otherStack","plotRange","isStacked","positive","prevValue","isStackedBar","otherValue","categoryAxisCrossingValue","stackLimits","axisName","stackName","pIx","updateStackRange","chartSeries","limitsCache","limits","errorTotals","addErrorBar","lowValue","highValue","seriesErrorRanges","addPointErrorBar","stackedErrorRange","updateRange","errorBar","createPoint","owner","noteText","evalPointOptions","_defaults","doEval","axisRange","namedValueAxes","categorySlots","chartPoints","currentSeries","categorySlot","valueSlot","pointSlot","aboveAxis","stackValue","reflowPoint","reflowCategories","limitPoints","limitPoint","axisIndex","_outOfRangeCallback","seriesIx$1","currentCategory","_bindPoint","seriesIx$2","outOfRangePoint","_bindCache","bindCache","formatPointValue","PointEventsMixin","NoteMixin","createNote","LinePoint","tooltipTracking","_rendered","createMarker","labelText","formatValue","markerBorder","markerBox","_childBox","childBox","reflowLabel","noteTargetBox","defaultColor","highlightVisual","halfSize","tooltipAnchor","clipBox","verticalAlign","horizontalAlign","overlapsBox","unclipElements","LineSegment","toGeometryPoints","segmentVisual","coords","getNearestPoint","StepLineMixin","calculateStepPoints","stepAxis","stepDir","previousPoint","toGeometryPoint","stepPoint","lintPoint","StepLineSegment","SplineSegment","curve","LineChartMixin","renderSegments","_segments","sortedPoints","sortPoints","pointCount","seriesMissingValues","createSegment","_addSegment","missingValues","nearestPoint","allPoints","nearestPointDistance","ClipAnimation","_setEnd","setX","anyHasZIndex","ClipAnimationMixin","_setChildrenAnimation","animationPoints","LineChart","AreaSegment","prevSegment","stackPoints","createFill","createStroke","strokeSegments","_strokeSegments","createStrokeSegments","segmentsFromPoints","stackSegments","createStackSegments","hasStackSegment","fillSegments","hasStackSegments","fillToAxes","fillPath","crossingValue","endSlot","firstPoint","lastPoint","StepAreaSegment","SplineAreaSegment","curveProcessor","AreaChart","previousSegment","_gapStackPoints","_stackPoints","stackPoint","startIdx","endIdx","_outOfRangeMinPoint","currentSeriesIx","_previousSegmentPoint","gapStackPoint","_createGapStackPoint","segmentIx","seriesIdx","AxisGroupRangeTracker","axisRanges","chartAxisRanges","chartRange","BarLabel","alignToClipBox","parentBox","hasGradientOverlay","Bar","rectVisual","createRect","strokeOpacity","getBorderColor","baseColor","borderColor","ClusterLayout","slots","slotSize","StackWrap","positionAxis","BarChart","clusterType","stackType","negativeColor","cluster","getStackWrap","stackWrap","stackGroup","wraps","_stackGroup","zeroSlot","_setAnimationOptions","pointVisual","Candlestick","ocSlot","lhSlot","realBody","mid","lines","reflowNote","_mainVisual","mainVisual","createOverlay","createBody","createLines","drawLines","lineStyle","normalColor","areNumbers","CandlestickChart","splitValue","BoxPlot","whiskerSlot","boxSlot","q1","q3","reflowBoxSlot","reflowWhiskerSlot","medianSlot","meanSlot","meanPoints","calcMeanPoints","whiskerPoints","calcWhiskerPoints","medianPoints","calcMedianPoints","renderOutliers","outliers","outerFence","outlierValue","markersBorder","reflowOutliers","VerticalBoxPlot","BoxPlotChart","filterOutliers","ScatterErrorBar","seriesAxes","ScatterChart","_initFields","xAxisRanges","yAxisRanges","valueErrorField","lowField","highField","createMissingValue","xAxisName","xAxis","yAxisName","yAxis","xAxisRange","yAxisRange","namedXAxes","namedYAxes","Bubble","highlightGroup","BubbleChart","_maxSize","negativeValues","updateBubblesSize","pointsCount","animationOptions","minR","minSize","maxR","minArea","areaRatio","Target","Bullet","targetValueSlot","targetSlotX","targetSlotY","targetSlot","bodyVisual","BulletChart","seriesItem","wrapData","bulletOptions","BaseTooltip","getStyle","pointColor","paddingBottom","tooltipOptions","CrosshairTooltip","formatService","initAxisName","showAt","stickyMode","formattedValue","getAnchor","ref_options","Crosshair","moveLine","getBox","dim","axisLineBox","currentAxis","ChartContainer","shouldClip","_clipBox","chartsBox","clipRect","unclipLabels","charts","ID","appendAxis","appendAxisAt","appendChart","removeAxis","removeChart","allAxes","vGridLines","hGridLines","notifyRender","axisValueField","length$1","axis$1","lineBox$1","paneIndex","appendIfNotNull","segmentVisible","pointVisibility","bindSegments","equalsIgnoreCase","filterSeriesByType","getDateField","isDateAxis","sampleCategory","dateCategory","singleItemOrArray","AREA_REGEX","hasValue$1","findNext","pointHasValue","outPoint","getter$$1","hasItem","createOutOfRangePoints","hasMinPoint","hasMaxPoint","_outOfRangeMaxPoint","PlotAreaBase","initSeries","crosshairs","originalOptions","createPanes","createCrosshairs","paneDefaults","paneOptions","panes","panesLength","currentPane","crosshairOptions","currentCrosshair","removeCrosshairs","hideCrosshairs","findPane","matchingPane","findPointPane","axisToRemove","filteredAxes","chartToRemove","filteredCharts","addToLegend","inactiveItemsLabels","seriesVisible","visibleInLegend","itemLabelOptions","markerColor","active","groupAxes","xAxes","yAxes","paneIx","paneAxes","axisIx","any","groupSeriesByPane","seriesByPane","seriesPaneName","filterVisibleSeries","reflowPanes","detachLabels","reflowAxes","reflowCharts","redraw","panesArray","crossingAxes","crossingValues","valuesToAdd","alignAxisTo","targetAxis","targetCrossingValue","slotEdge","targetEdge","axisBox","alignAxes","xAnchor","yAnchor","xAnchorCrossings","yAnchorCrossings","leftAnchors","rightAnchors","topAnchors","bottomAnchors","paneId","paneAnchor","anchorCrossings","_overlap","_mirrored","pane$1","paneId$1","visible$1","anchor$1","anchorCrossings$1","shrinkAxisWidth","axisGroupBox","overflowX","shrinkAxisHeight","shrinked","overflowY","fitAxes","paneBox","currentAxis$1","reflowPaneAxes","autoRotateAxisLabels","groupedAxes","rotated","allPaneAxes","chartPane","remainingHeight","autoHeightPanes","percents","currentPane$1","i$2","currentPane$2","backgroundBox","axesCount","axisA","axisB","chartsBoxes","addBackgroundPaths","multipath","backgroundContainsPoint","pointsByCategoryIndex","pointsBySeriesIndex","seriesIndex","filterPoints","pointsBySeriesName","findPoint","paneByPoint","detachAxisGroupLabels","labelAxisCount","labelAxis","createLabelAxis","onAxis","isSingleAxis","PlotAreaEventsMixin","_dispatchEvent","SeriesAggregator","defaultAggregates","seriesFields","_seriesFields","rootAggregate","_series","_binder","fieldAggregate","canonicalName","aggregatePoints","srcPoints","_bindPoints","firstDataItem","srcValues","_bindField","setValue","DefaultAggregates","seriesType","RangeBar","fromOptions","toOptions","labelFrom","_createLabel","labelTo","RangeBarChart","plotLimits","RangeLinePoint","RangeAreaPoint","initLabelsFormat","fromPoint","toPoint","copyFields","fromBox","toBox","positionLabels","fromLabelPosition","toLabelPosition","RangeAreaSegment","toPoints","fromSegments","fromPath","SplineRangeAreaSegment","createCurveSegments","StepRangeAreaSegment","RangeAreaChart","fromSlot","toSlot","OHLCPoint","oPoints","cPoints","lhPoints","oSlot","cSlot","OHLCChart","WaterfallSegment","WaterfallChart","createSegments","totalCategories","summary","prevPoint","AREA_SERIES","OUT_OF_RANGE_SERIES","CategoricalPlotArea","namedCategoryAxes","valueAxisRangeTracker","stack100","createCategoryAxes","aggregateCategories","createCategoryAxesLabels","createCharts","createValueAxes","paneSeries","visibleSeries","groupSeriesByCategoryAxis","groupIx","createChartGroup","createAreaChart","createRangeAreaChart","createBarChart","createRangeBarChart","createBulletChart","createCandlestickChart","createBoxPlotChart","createOHLCChart","createWaterfallChart","createLineChart","srcSeries","processedSeries","_currentPointsCache","_seriesPointsCache","axisPane","categoryField","aggregateSeries","filterSeries","outOfRangePoints","clearSeriesPointsCache","seriesSourcePoints","dateAxis","srcData","getFn","aggregator","categoryItem","categoryIdx","categoriesToAdd","defaultPaneName","stackableChartOptions","firstSeries","categoryAxes","axisSeries","groupSeries","barChart","rangeColumnChart","bulletChart","lineChart","areaChart","rangeAreaChart","waterfallChart","axisRequiresRounding","categoryAxisName","categoryAxisIndex","centeredSeries","seriesAxis","aggregatedAxis","primaryAxis","tracker","defaultRange","baseOptions","defaultAxisRange","eventType","_eventCoordinates","pointPane","updateAxisOptions","targetOptions","axesOptions","Highlight","_points","arrayPoints","togglePointHighlight","toggleHandler","isHighlighted","acceptKey","mouseKey","altKey","toChartAxisRanges","Pannable","_active","_panAxes","updatedAxes","ZoomSelection","marquee","_marquee","marqueeColor","removeElement","setStyles","zoomPane","_zoomPane","_zoomPaneClipBox","_selectionPosition","elementOffset$$1","selectionPosition","_updateAxisRanges","limitValue$1","MousewheelZoom","rate","updateRanges","LegendLayout","legendItem","LegendItem","createContainer","markerOptions","eventSink","_itemOverlay","_legendItemHover","pointIndex","_unsetActivePoint","HORIZONTAL","CUSTOM","Legend","createContainers","createLegendTitle","createItems","userAlign","hasTitle","itemsContainer","innerElement","hasItems","legendBox","containerCustomReflow","containerReflow","alignTarget","containerBox","createTitleLayout","appendTitleLayoutContent","layout","PlotAreaFactory","_registry","registry","createDiv","closestHandle","Selection","_dateAxis","initOptions","createElements","onPane","leftMask","rightMask","leftHandle","rightHandle","selectionStyles","leftHandleHeight","rightHandleHeight","borderLeftWidth","borderRightWidth","mousewheel","_mousewheelHandler","_mousewheel","_domEvents","tap","_gesturestart","_gesturechange","gestureend","_gestureend","_mwTimeout","_state","_rangeEventArgs","_value","_pointInPane","modelCoords","_toModelCoordinates","bodyRect","inBody","moveTarget","oldRange","rightClick","_slot","leftMaskWidth","rightMaskWidth","toValue","zDir","relative","SharedTooltip","tooltipPoints","_slotAnchor","_defaultAnchor","categoryText","categoryFormat","slotCenter","BarChartAnimation","fromScale","BubbleAnimation","FadeInAnimation","fadeTo","PieAnimation","ScatterLineChart","missingValue","XYPlotArea","xAxisRangeTracker","yAxisRangeTracker","filteredSeries","createScatterChart","createScatterLineChart","createBubbleChart","createAxes","xAxisOptions","yAxisOptions","createXYAxis","inferredDate","namedAxes","isLog","typeSamples","seriesAxisName","firstPointValue","xAxesOptions","yAxesOptions","axisPane$1","xValues","yValues","updateAxisOptions$1","PieSegment","themeLabels","animationDelay","labelsOptions","labelsDistance","lp","labelHeight","labelWidth","createSegmentVisual","borderOptions","singleSegment","tooltipAlignment","RAD_30","RAD_60","PieChartMixin","createLegendItem","legendOptions","pointVisible","legendItems","PieChart","colorsCount","anglePerValue","constantAngle","explode","evalSegmentOptions","segmentOptions","seriesConfigs","minWidth","halfMinWidth","defaultPadding","newBox","newBoxCenter","leftSideLabels","rightSideLabels","seriesConfig","labelComparator","leftLabelsReflow","rightLabelsReflow","distances","distanceBetweenLabels","distributeLabels","lr","firstBox","secondBox","_takeDistance","amount","boxX","labelDistance","boxY","hAlignLabel","_connectorLines","connectorsColor","connectorLine","centerPoint","sr","crossing","pointInCircle","autoFit","pieCenter","bboxBottom","reverseValue","originalX","sector_center","uat","ub","PiePlotArea","createPieChart","pieChart","DonutSegment","DonutChart","holeSize","totalSize","seriesWithoutSize","currentSeries$1","DonutPlotArea","createDonutChart","donutChart","PolarPlotAreaBase","createPolarAxis","createValueAxis","axisDefaultRange","valueAxisOptions","valueAxisBox","heightDiff","PolarScatterChart","valueRadius","PolarLineChart","SplinePolarAreaSegment","_polarAxisCenter","PolarAreaSegment","centerSegment","PolarAreaChart","_hasMissingValuesGap","xComparer","PolarPlotArea","scatterChart","RadarLineChart","seriesSegments","groupBySeriesIx","isFirstDataPoint","isLastDataPoint","SplineRadarAreaSegment","RadarAreaSegment","RadarAreaChart","RadarSegment","RadarClusterLayout","slotSector","RadarStackLayout","childSector","RadarBarChart","RadarPlotArea","_hasBarCharts","_isStacked100","chartOptions","FunnelSegment","chartBox","createPath","FunnelChart","labelPadding","dynamicSlopeReflow","totalHeight","firstSegment","maxSegment","lastUpperSide","previousOffset","previousHeight","nextSegment","nextPercentage","segmentSpacing","constantSlopeReflow","decreasingWidth","neckRatio","finalNarrow","dynamicSlope","dynamicHeight","PyramidChart","FunnelPlotArea","createChart","chartType","HeatmapPoint","labelColor","isRoundRect","halfBorderWidth","HeatmapChart","setRange","minLightnessOffset","hsl","colorScale","indexX","indexY","xRange","yRange","ref$2","xIndex","yIndex","xIn","yIn","HeatmapPlotArea","bindCategories","createAxisLabels","xCategories","yCategories","createHeatmapChart","firstCategory","updateAxisOptions$2","COLOR","FIRST","MAX","MIN","NOTE_TEXT","errorLow","errorHigh","AXIS_NAMES","Chart","themeOptions","_initElement","_originalOptions","_theme","_initTheme","_initHandlers","_initSurface","fontLoaded","_redraw","_attachEvents","_setElementClass","seriesCopies","aliases","alias","resolveAxisAliases","applySeriesColors","_selections","_destroySelections","_setupSelection","_noTransitionsRedraw","paneName","_model","findPaneByName","findPaneByIndex","seriesName","categoryName","pointByCategoryName","togglePointsHighlight","_sharedTooltip","_surfaceWrap","renderAs","_destroySurface","_surfaceMouseenterHandler","_surfaceMouseleaveHandler","_getModel","_destroyView","_createTooltip","_createPannable","_createZoomSelection","_createMousewheelZoom","triggerPaneRender","_navState","_cancelDomEvents","exportOptions","clearMissingValues","_pannable","zoomable","_zoomSelection","_mousewheelZoom","_toggleDragZoomEvents","allowDrag","allowZoom","_dragZoomEnabled","_touchAction","_toggleDomEvents","drag","domEvents","toggleDrag","toggleZoom","_createSharedTooltip","themeAxisDefaults","mapAxisOptions","axisColor","applyAxisDefaults","seriesLength","commonDefaults","themeSeriesDefaults","commonThemeDefaults","cleanupNestedSeriesDefaults","applySeriesDefaults","seriesColor","_createPlotArea","_modelOptions","skipSeries","selections","_selectStart","_selectEnd","_clickHandler","_mouseover","_mouseout","_toDocumentCoordinates","_updateDrilldownPoint","_resetDrilldownPoint","_startDrilldown","obj$1","_shouldAttachMouseMove","_hoveredPoint","_plotAreaHovered","_stopChartHandlers","_gestureDistance","_zooming","mousewheelZoom","previousGestureDistance","_drawingChartElement","leave","_startNavigation","_suppressHover","ranges$1","_endNavigation","_mousewheelZoomRate","totalDelta","chartEvent","_getChartElement","_elementPadding","_padding","drawingElement","sharedTooltip","_startHover","_trackSharedTooltip","_propagateClick","handlingTap","_showInactiveOpacity","_displayTooltip","_displayInactiveOpacity","activePoint","multipleSeries","highlightPoints","chartInstance","_activeChartInstance","_chartInstanceFromPoint","_updateSeriesOpacity","_applySeriesOpacity","inactivePoints","_getInactivePoints","_getInactiveOpacityForSeries","_getAllPointsOfType","_updateHoveredPoint","hoveredPoint","drilldown","_drilldownState","resetOpacity","currSeries","defaultOpacity","_getDefaultOpacityForSeries","activeSeries","_activePoint","hasInactiveOpacity","_hasInactiveOpacity","_hideInactiveOpacity","hasDefaultInactiveOpacity","defaultInactiveOpacity","_mouseMoveTrackHandler","_mouseMoveTracking","seriesPoint","_trackCrosshairs","overPlotArea","_tooltipCategoryIx","_sharedHighlight","pointArgs","hoverArgs","hideElements","keepTooltipOpen","_deferRedraw","_clearRedrawTimeout","_redrawTimeout","bindCategoryAxisFromSeries","uniqueCategories","bindable","dataIx","dataRow","srcDates","sortDates","uniqueDates","rowCount","rowIx","colCount","colIx","transpose","_isBindable","transitionsState","updateMouseMoveHandler","applyOptions","setDirection","setIntlService","noTransitionsRedraw","DATA_FIELDS","fieldValue","originalValue","nullValue","BREADCRUMB","ARIA_HIDDEN","CLICK","BLUR","KEYDOWN","DOT","breadcrumbStyles","textboxWrapper","link","delimiter","rootItem","rootLink","overflowIcon","focused","hidden","inputWrapper","Breadcrumb","_editable","bindToLocation","_resizeHandler","navigational","rootIcon","delimiterIcon","rootTitle","_update","_generateSegments","_split","_path","previousDomItems","prevAll","previousItems","_getItems","isRoot","_edit","oldValue","shouldRestoreValue","isEnter","isEsc","isNavigational","canNavigate","_wrapperKeydown","_wrapperClick","_wrapperFocus","_wrapperBlur","elementIsInput","isLastSegment","isOnlyRoot","showIcon","showText","itemClass","linkClass","renderDelimiter","itemTemplate","linkClasses","iconElm","delimiterElm","encoded","linkElm","_displayOverflowIcons","_shrinkItems","lastHidden","delimiterWidth","availableWidth","_showItem","overlayWidth","_stretchItems","trail","ChartBreadcrumb","_attachChartEvents","_renderBreadcrumb","breadcrumb","_onChartDrilldown","_onChartDrilldownLevelChange","resetDrilldownLevel","getKendoChart","breadcrumbElement","_onBreadcrumbClick","findIndex","KendoChart","MOUSELEAVE_NS","DRILLDOWN_LEVEL_CHANGE","DATABOUND","LEAVE","ChartInstanceObserver","legendItemClick","_seriesVisibility","SeriesVisibilityState","_initDataSource","_bindSeries","_bindCategories","_getThemeOptions","_sourceSeries","setDataSource","_hasDataSource","_onDataChanged","_dataChangeHandler","_hasData","_destroyCrosshairTooltips","findSeries","ChartSeries","findSeriesByName","_createSeries","findSeriesByIndex","originalChartArea","_seriesOptions","_initChart","_createChart","_isRtl","_onInit","_initTooltip","tooltips","_crosshairTooltips","_getCrosshairTooltip","_showTooltip","_hideTooltip","_onRender","_copyMembers","_tooltipleave","_onLegendItemClick","_legendItemClick","_onDrilldown","drilldownSeriesFactory","resolved","_onDrilldownData","drilldownSeries","_bindData","groupedSeries","grouped","seriesVisibility","applyByGroup","applyByIndex","seriesData","_groupIx","categoriesData","_bindCategoryAxis","proxyMembers","createProxyMember","nameTemplate","seriesClone","legacyTemplate","groupNameTemplate","_groupValue","PDFMixin","persistSeriesVisibility","saveState","geom","mobileScrollerSelector","_mobileScroller","_closeTooltipHandler","_closeTooltip","_clearShowTimeout","sharedTemplate","colspan","colorMarker","nameColumn","sharedTemplateIterator","_ensureElement","showTimeout","fakeContainer","normalizeStyle","_sharedContent","_pointContent","forceHide","_hideElement","fadeOut","always","tooltipTemplate","xLow","xHigh","yLow","yHigh","_chart","_filterPoints","_clearFields","toggleVisibility","_filterData","DrawingGroup","DrawingPath","ANGULAR_SPEED","ARROW_POINTER","BAR_POINTER","DEFAULT_LINE_WIDTH","DEGREE","LINEAR","RADIAL_POINTER","RADIAL_RANGE_POINTER","Path$1","buildLabelElement","styleGeometry","styleBox","getRange","Gauge","contextService","pointerValue","_setValueOptions","_draw","_visuals","allValues","arrayValues","_toggleTransitions","_surfaceSize","gaugeArea","_createGaugeArea","_createModel","_gaugeAreaMargin","currentTheme","areaGeometry","_surfaceElement","_getSize","defaultSize","_defaultSize","Path$2","Group$2","renderAxisTick","tickRenderOptions","renderTicks","tickGroup","LinearScale","renderLabels","scaleLine","renderLine","scaleTicks","renderRanges","linePath","Pointer","_oldValue","repaint","LinearPointer","track","pointerBox","pointerRangeBox","trackBox","trackSize","pointerHalfSize","getElementOptions","_margin","ArrowLinearPointerAnimation","toScale","translateX","translateY","Point$1","Path$3","ArrowLinearPointer","pointerShape","elementOptions","BarLinearPointerAnimation","newPoints","oldPoints","speed","Group$3","Path$4","BarLinearPointer","minSlot","sizeAxis","pointerPath","oldShape","renderTrack","trackOptions","Group$1","LinearGauge","bboxX","bboxY","_shrinkScaleWidth","_getBox","_alignElements","_shrinkElements","_buildVisual","scaleElements","pointerType","plotAreaBox","scaleBox","GEO_ARC_ADJUST_ANGLE","Path$5","Group$5","drawTicks","tickAngles","getRadiusX","tickStart","tickEnd","rangeSegment","RadialScale","renderArc","labelElements","repositionRanges","hasRanges","ticksSize","labelsGroup","rangeDistance","isInside","hasLabelElements","setRadiusX","setRadiusY","paddingWidth","paddingHeight","labelPos","labelElement","prevLabelPos","labelTransform","rangeRadius","getRangeRadius","rangeSegments","segmentsCount","rangeGeom","tickArc","majorTickAngles","allTicks","_tickDifference","minorTickAngles","normalizeTickAngles","tickCount","repositionTicks","minor","newPoint","xDiff","yDiff","RadialPointerAnimation","newAngle","oldAngle","Group$6","Path$6","RadialPointer","setAngle","_renderNeedle","_renderCap","capSize","cap","needleColor","needlePath","capColor","Group$4","RadialGauge","_initialPlotArea","alignScale","_buildPointers","midDiff","oldDiff","getDiff","staleFlag","getPlotBox","scaleArc","plotBbox","plotBox","plotBoxCenter","paddingX","paddingY","pointersArr","ArcScale","rangeLineCap","placeholderRangeAngle","geometry$$1","setEndAngle","setStartAngle","addRange","RangePointerAnimation","startColor","currentColor","RangePointer","rangeColor","ArcGauge","centerLabelPosition","yLimit","CircularGauge","lowerName","_createInstance","_copyFields","gaugeType","_gaugeType","RadialGaugeWidget","LinearGaugeWidget","ArcGaugeWidget","_centerTemplate","_centerElement","centerTemplate","centerElement","_getCenterElement","CircularGaugeWidget","createExportMethod","exportMethods","numberRegex","alphanumericRegex","getNext","Encoding","quietZoneLength","addQuietZone","initValue","addData","addCheckSum","invalidCharacterError","character","encodings","code39Base","minBaseUnitLength","addStart","addCharacter","pushCheckSum","prepareValues","charData","characterMap","addBase","code39ExtendedBase","addExtended","extendedMappings","shiftCharacters","dataCharacter","specialAsciiCodes","shiftValuesAsciiCodes","code39","checkSumMod","minRatio","maxRatio","gapWidth","splitCharacter","patternString","minBaseUnit","minHeight","getBaseUnit","getBaseWidth","characterLength","addPattern","addCharacterGap","patternMappings","w","B","W","A","C","I","J","N","O","P","R","S","U","V","code39extended","SHIFT0","SHIFT1","SHIFT2","SHIFT3","code93","cCheckSumTotal","kCheckSumTotal","setBaseUnit","TERMINATION_BAR","checkValues","_getCheckValues","checksum","_findCharacterByValue","cValue","wightedSum","weightedValue","code93extended","state128","encoding","state128AB","FNC4","states","_initMoves","isCode","encodingState","_moves","maxLength","numberMatch","_moveFNC","_shiftState","_moveState","fnc","previousState","SHIFT","states128","next4","dependentStates","_initSubStates","subState","_getSubState","_initSubState","_pushStart","pushData","subStates","_getAll","FNC1","startState","startAI","endAI","nextStart","separatorLength","regexSeparators","getBySeparator","getByLength","validate","getAI","unsupportedAIError","applicationIdentifiers","multiKey","ids","code128Base","_initStates","checkSum","getNextState","STOP","code128a","code128b","code128c","code128","msiBase","checkSumLength","checkSums","checkSumType","Modulo10","evenSum","oddSum","odd","Modulo11","checkValue","weightedSum","Modulo11Modulo10","mod11Value","Modulo10Modulo10","mod10Value","msimod10","msimod11","msimod1110","msimod1010","code11","kCheckSumMinLength","DASH_VALUE","DASH","getWeightedSum","kValue","postnet","VALID_CODE_LENGTHS","DIGIT_SEPARATOR","baseHeight","ean13","calculateChecksum","leftKey","leftPart","rightPart","addPieces","addSide","keyTable","arrToAdd","limitedHeight","even","ean8","Barcode","surfaceWrap","_setOptions","_render","textToDisplay","textMargin","barHeight","_getBackground","_getText","_bandsGroup","_getBands","_textbox","terminator","NUMERIC","ALPHA_NUMERIC","BYTE","powersOfTwo","powersOfTwoResult","generatorPolynomials","irregularAlignmentPatternsStartDistance","versionsCodewordsInformation","totalDataCodewords","errorCodewordsPerBlock","finderPattern","alignmentPattern","errorCorrectionPatterns","paddingCodewords","maskPatternConditions","alphaRegex","alphaNumericRegex","byteRegex","crossPattern","squarePattern","toDecimal","toBitsString","splitInto","QRDataMode","getVersionIndex","getBitsCharacterCount","bitsInCharacterCount","getModeCountString","modeIndicator","getStringBitsLength","modes","inputLength","mod3","characters","mode","modeInstances","FreeCellVisitor","startColumn","getNextCell","getNextRemainderCell","fillFunctionCell","matrices","bit","fillDataCell","fillData","blocks","block","codewordIdx","cellVisitor","blockIdx","padDataString","dataString","dataBitsCount","terminatorIndex","paddingCodewordIndex","xorPolynomials","multiplyPolynomials","multiplyByConstant","generatePowersOfTwo","firstPolynomial","secondPolynomial","generateGeneratorPolynomials","generateErrorCodewords","errorCodewordsCount","generator","generatorPolynomial","steps","errorCodewords","getBlocks","dataStream","versionCodewordsInformation","dataBlock","blockCodewordsCount","groupBlocksCount","messagePolynomial","codeword","codewordStart","dataBlocks","errorBlocks","versionGroups","chooseMode","minNumericBeforeAlpha","minNumericBeforeByte","minAlphaBeforeByte","previousMode","modeString","numeric","numericMatch","alphaMatch","alphaNumeric","alphaNumericMatch","getModes","nextMode","getDataCodewordsCount","getVersion","dataCodewordsCount","errorCorrectionLevel","getDataString","encodeFormatInformation","encodedString","encodeBCH","codeLength","generatorNumber","polynomialLength","valueNumber","valueString","dividePolynomials","numberX","numberY","yLength","xLength","getNumberAt","initMatrices","modules","addFormatInformation","encodeVersionInformation","addVersionInformation","quotient","mod","addCentricPattern","addFinderSeparator","nextX","nextY","addFinderPatterns","addAlignmentPatterns","startDistance","addTimingFunctions","scoreMaskMatrixes","scores","previousBits","darkModules","adjacentSameBits","scoreFinderPatternOccurance","scoreAdjacentSameBits","calculateDarkModulesRatioScore","rowColumn","adjacentBits","mod5","EncodingResult","IsoEncoder","getEncodingResult","inputString","UTF8Encoder","encodingMode","utfBOM","initialModeCountStringLength","encodeCharacter","bytesCount","getBytesCount","bc","significantOnes","QRCodeDataEncoder","encodeData","encodingResult","versionInformation","optimalMatrix","QRCodeDefaults","DEFAULT_SIZE","QUIET_ZONE_LENGTH","DEFAULT_ERROR_CORRECTION_LEVEL","DEFAULT_BACKGROUND","DEFAULT_DARK_MODULE_COLOR","MIN_BASE_UNIT_SIZE","QRCode","quietZoneSize","contentSize","errorCorrection","_calculateBaseUnit","_renderBackground","_renderMatrix","_hasCustomLogo","_renderLogo","_isSwiss","_renderSwissCode","qrSize","imageRect","logoSize","_getLogoSize","logoUrl","imageUrl","crossSize","crossOffset","_renderShape","matrixSize","defautLogoSize","QRCodeFunctions","QRCodeFields","FadeOutAnimation","_initialOpacity","NavigatorHint","chartPadding","scroll","minPos","clearHideTimeout","_visible","tooltipStyle","borderTopWidth","_hideTimeout","_hideAnimation","NAVIGATOR_PANE","NAVIGATOR_AXIS","DEFAULT_PANE","Navigator","chartObserver","clean","_redrawSelf","initSelection","mainAxis","axisClone","ClonedObject","selectStart","selectEnd","filterAxes","redrawSlaves","slavePanes","navigatorAxis","naviRange","inNavigator","liveDrag","showHint","readSelection","ref_selection_options","_zoom","fromIx","toIx","_zoomEnd","__navi","naviOptions","attachAxes","attachSeries","valueAxes","justifyAxis","_collapse","autoBindElements","user","navigatorSeries","dateField","StockChart","stockDefaults","destroyNavigator","_fullRedraw","_dirty","partialRedraw","_seriesCount","copyNavigatorCategories","KendoStockChart","StockInstanceObserver","navigatorFilter","navigatorCreated","_initNavigatorOptions","navigatorOptions","isTouch","isFirefox","hasServerFiltering","hasSelect","dummyAxis","buildFilter","_onNavigatorCreated","_navigator","_initNavigatorDataSource","dsOptions","_navigatorDataChangedHandler","_onNavigatorDataChanged","_navigatorDataSource","_bindNavigatorSeries","naviCategories","axesLength","_removeNavigatorDataSource","_onNavigatorFilter","navigatorDataSource","SharedTooltip$1","NO_CROSSHAIR","wrapNumber","Sparkline","_initialWidth","stage","displayState","_autoWidth","inline","_calculateWidth","currentChart","pointWidth","normalizeOptions","KendoSparkline","SparklineTooltip","renderPos","renderSize","sqr","romanToArabic","memoize","isUnicodeLetter","RX_UNICODE_LETTER","withExit","Return","Location","lat","lng","DISTANCE_ITERATIONS","DISTANCE_CONVERGENCE","DISTANCE_PRECISION","FORMAT","loc","datum","greatCircleTo","bearing","datums","WGS84","fromLat","fromLng","dToR","azimuthFrom","azimuthTo","prevLambda","sinLambda","cosLambda","sino","cosA2","coso","cos2om","sigma","U1","sinU1","cosU1","U2","sinU2","cosU2","lambda","converged","sinA","u2","deltao","fromLngLat","ll","fromLatLng","Extent","nw","se","containsAny","locs","include","includeAll","edges","sw","extent","World","Attribution","_extent","_itemText","inZoomLevel","_inZoomLevel","minZoom","maxZoom","inArea","_inArea","button","BUTTONS","_keyroot","panStep","_pan","ZoomControl","zoomStep","exp","PI_DIV_4","Mercator","MAX_LNG","MAX_LAT","INVERSE_ITERATIONS","INVERSE_CONVERGENCE","centralMeridian","clamp","proj","lng0","_projectLat","ecc","ts","con","inverse","_inverseY","ecch","phi","dphi","SphericalMercator","Equirectangular","EPSG3857","_proj","_tm","_itm","toLocation","crs","EPSG3395","EPSG4326","projections","layers","Layer","_beforeReset","_panEnd","_activate","_updateAttribution","_deactivate","_applyExtent","_setVisibility","matchMinZoom","matchMaxZoom","inside","attribution","ShapeLayer","_initRoot","_markers","_dataChange","_translateSurface","_load","_clearMarkers","_loader","GeoJSONLoader","shapeCreated","cancelled","_createMarker","layer","featureCreated","_panning","locationToView","locator","defaultStyle","unwrap","_loadGeometryTo","_featureCreated","_shapeCreated","_loadPolygon","_setLineFill","_loadPoint","_loadShape","rings","_buildPolygon","geojson","features","geometries","BubbleLayer","locationField","opt","scaleType","_scaleType","_createSymbol","_drawSymbol","scales","symbols","SqrtScale","domain","_domain","domainRange","outputRange","_ratio","rel","geo","drawingUtil","TileLayer","subdomains","viewType","_viewType","locationToLayer","viewOrigin","tileTitle","_updateView","TileView","extentToPoint","pool","TilePool","tileSize","urlTemplate","_center","_viewOrigin","pointToTileIndex","tileCount","firstTileIndex","indexToPoint","subdomainText","subdomainIndex","_tileTitle","tile","createTile","currentIndex","tileOptions","wrapIndex","roundPoint","subdomain","errorUrlTemplate","wrapValue","ImageTile","errorUrl","urlResult","urlOptions","quadkey","_create","maxDist","BingLayer","_scheme","_onMetadata","_fetchMetadata","imagerySet","uriScheme","resourceSets","resource","resources","imageUrlSubdomains","zoomMin","zoomMax","_addAttribution","BingView","imageryProviders","coverageAreas","tileQuadKey","digit","quadKey","bing","MarkerLayer","_markerClick","titleField","_addOne","Marker","addTo","getLocation","getTitle","renderTooltip","contentTemplate","contentUrl","Map","_getOrigin","_initScroller","_initMarkers","_initControls","_initLayers","controls","layerDefaults","markerDefaults","wraparound","scroller","zoomControl","_setExtent","_getExtent","_layerSize","layerToLocation","viewToLocation","eventOffset","eventToView","eventToLayer","eventToLocation","_setOrigin","_origin","layerWidth","layerHeight","_zoomAround","pivot","_createAttribution","_createNavigator","_createZoomControl","_createControlElement","defaultPos","posSelector","_navigatorPan","_navigatorCenter","bounds","_virtualSize","_scrollEnd","_zoomControlChange","_scroll","_scaleStart","_doubleTap","_scrollOffset","_panComplete","_panEndTS","_scaleToZoom","gestureCenter","centerLocation","tiles","_resetScroller","xBounds","yBounds","_renderLayers","scrollWrap","toZoom","fromZoom","Utils","isNearZero","isDefined","isUndefined","isBoolean","isType","simpleExtend","initArray","serializePoints","res","deserializePoints","randomInteger","DFT","getMatrixAngle","getMatrixScaling","findAngle","sngXComp","sngYComp","findRadian","thisRef","what","fold","constraint","bisort","sortfunc","Easing","Ticker","adapters","lastTime","_this","timerDelegate","onTimerEvent","addAdapter","onComplete","removeHandler","caller","onStep","seekTo","seekFromTo","intervalId","initState","propagate","movement","Range","rangeIntegerScale","plus","minus","times","lengthSquared","middleOf","toPolar","useDegrees","factor","halfpi","Polar","isOnLine","o1","u1","inflate","xy","PathDefiner","rotatedBounds","staicPoint","adornerCenter","thisCenter","scaled","rectBottomRight","intersectLine","start1","end1","start2","end2","isSegment","tangensdiff","Empty","Intersect","rectWithLine","rects","reverseAngle","RectAlign","alignValues","_singleAlign","_left","_right","stretch","_stretch","_top","_middle","_bottom","alignCalc","applyRect","fromSVGMatrix","vm","fromMatrixVector","fromList","translation","scaling","nums","MatrixVector","fromMatrix","randomId","Geometry","_distanceToLineSquared","pt1","pt2","vx","vy","distanceToLine","distanceToPolyline","minimum","HashTable","_buckets","_createGetBucket","_bucketExists","containsKey","hashId","hashes","_hashes","bucket","ht","_hashString","_objectHashId","_hashId","Dictionary","dictionary","_hashTable","forEachValue","forEachKey","Queue","enqueue","kv","links","outgoing","incoming","weight","associatedShape","shortForm","isVirtual","isIsolated","isLinkedTo","getComplement","getChildren","getParents","balance","adjacentTo","removeLink","hasLinkTo","degree","incidentWith","getLinksWith","getNeighbors","neighbors","Link","connection","sourceFound","targetFound","associatedConnection","getCommonNode","isBridging","v1","v2","getNodes","changeSource","changeTarget","changesNodes","oldSource","oldTarget","directTo","createReverseEdge","reversed","Graph","idOrDiagram","_nodeMap","_hasCachedRelationships","cacheRelationships","forceRebuild","assignLevels","startNode","visited","getConnectedComponents","componentIndex","setItemIndices","componentId","_collectConnectedNodes","components","addNodeAndOutgoings","setIds","nodeIndex","nextId","calcBounds","getSpanningTree","_addNode","levelCount","ni","cn","newLink","addLink","treeLevels","takeRandomNode","excludedNodes","incidenceLessThan","isHealthy","hasNode","sourceOrLink","addExistingLink","foundSource","getNode","addNode","foundTarget","removeAllLinks","hasLink","linkOrId","nodeOrId","_removeNode","removeNode","areConnected","n1","n2","layoutRect","newNode","newLinks","saveMapping","nodeMap","linkMap","nOriginal","nCopy","linkOriginal","linkCopy","linearize","addIds","depthFirstTraversal","foundNode","_dftIterator","breadthFirstTraversal","_stronglyConnectedComponents","excludeSingleItems","lowLinks","connected","component","findCycles","isAcyclic","isSubGraph","otherArray","thisArray","makeAcyclic","oneNode","rev","intensityCatalog","flowIntensity","catalogEqualIntensity","intensity","sourceStack","targetStack","targetLink","sources","si","sourceLink","ril","vertexOrder","kk","reversedEdges","Predefined","EightGraph","Mindmap","ThreeGraph","BinaryTree","levels","createBalancedTree","Linear","Tree","siblingsCount","Forest","trees","createBalancedForest","Workflow","Grid","graphString","previousLink","graph","lin","_addShape","kendoDiagram","undoable","addShape","_addConnection","connect","createDiagramFromGraph","doLayout","randomSize","gli","sourceShape","targetShape","SpringLayout","layoutGraph","limitToView","shi","news","counter","lastAdded","treeCount","createRandomConnectedGraph","nodeCount","maxIncidence","isTree","poolNode","randomAdditions","randomDiagram","shapeCount","normalVariable","Markers","none","arrowStart","filledCircle","arrowEnd","diffNumericOptions","Scale","Translation","toMatrixVector","Length","Rotation","CompositeTransform","_transform","_renderTransform","rotateMatrix","scaleMatrix","translatePoint","AutoSizeableMixin","_setScale","originWidth","_originWidth","originHeight","_originHeight","_setTranslate","_initSize","autoSize","_updateSize","_diffNumericOptions","_originSize","drawingContainer","_hover","_measured","_boundingBox","VisualBase","normalizeDrawingOptions","_fill","getColor","_stroke","strokeOptions","fillOptions","GradientClass","TextBlock","_textColor","_font","_initText","fontOptions","fontStyle","fontWeight","sizeChanged","Rectangle","_initPath","_setPosition","_drawPath","sizeOptions","sizeOptionsOrDefault","MarkerBase","_transformToPath","CircleMarker","positionMarker","targetSegment","ArrowMarker","_linePoints","MarkerPathMixin","_getPath","_normalizeMarkerOptions","startCap","endCap","_removeMarker","_createMarkers","markerType","_positionMarker","_capMap","_redrawMarker","pathChange","pathOptions","pathCapType","optionsCap","_redrawMarkers","_createElements","_setData","Line","Polyline","_updatePath","_pointsDiffer","currentPoints","differ","_initImage","_childrenChange","toFront","toBack","_reorderChildren","toIndex","drawingChildren","fixedPosition","childBoundingBox","_includeInBBox","toDrawingRect","drawingRect","_initCircle","circleOptions","_circle","Canvas","_translate","_viewBox","clearHtml","drawingOptions","Cursors","grip","cross","south","east","west","north","rowresize","colresize","HIT_TEST_DISTANCE","ITEMBOUNDSCHANGE","ROTATED","TARGET","HANDLE_NAMES","PositionAdapter","layoutState","froms","tos","subjects","getShapeById","LayoutUndoUnit","initialState","finalState","_initialState","_finalState","undo","setState","redo","conn","ticker","CompositeUnit","undoUnit","ConnectionEditUnit","redoSource","redoTarget","_redoSource","_redoTarget","_undoSource","_undoTarget","_updateConnector","updateModel","ConnectionEditUndoUnit","undoSource","undoTarget","DeleteConnectionUnit","targetConnector","DeleteShapeUnit","TransformUnit","undoStates","adorner","redoStates","refreshBounds","AddConnectionUnit","AddShapeUnit","deselect","PanUndoUnit","initialPosition","finalPosition","finalPos","RotateUnit","undoRotates","redoRotates","redoAngle","_angle","_innerBounds","_initialize","ToFrontUnit","initialIndices","_toIndex","ToBackUnit","UndoRedoService","capacity","begin","commit","execute","_restart","addCompositeItem","EmptyTool","toolService","tryActivate","getCursor","ScrollerTool","tool","scrollable","movableCanvas","virtualScroll","noMeta","hoveredItem","hoveredAdorner","_hoveredConnector","scrollPos","_storePan","PointerTool","selectSingle","_hitTest","_resizingAdorner","isDragHandle","connections","undoRedoService","SelectionTool","isSelected","selectArea","ConnectionTool","connector","_createConnection","_c","canDrag","connectionHandle","_connectionManipulation","_removeHover","activeConnection","_cachedTouchTarget","cachedTouchTarget","sourceConnector","Shape","getConnector","_syncConnectionChanges","_connectorsAdorner","ConnectionEditTool","isActive","handleName","testKey","ToolService","activeTool","_updateHoveredItem","_activateTool","_updateCursor","updateHovered","keyDown","metaKey","toRemove","_triggerRemove","_syncChanges","_destroyToolBar","_discardNewConnection","selectAll","wheel","zoomRate","zoomOptions","setTool","addToSelection","newConnection","disabledShape","hit","selectedConnections","_selectedItems","Connection","_hitTestItems","_hitTestElements","shapeHit","connectionHit","hitTestShapeConnectors","mainLayer","ConnectionRouterBase","LinearConnectionRouter","hitTest","getBounds","PolylineRouter","CascadingRouter","SAME_SIDE_DISTANCE_RATIO","routePoints","_connectorPoints","_floatingPoints","_resolvedSourceConnector","_resolvedTargetConnector","sourcePoint","targetPoint","_connectorSides","boundsPoint","secondarySign","_connectorSide","sideDistance","minSide","shapeBounds","sides","_sameSideDistance","pointX","pointY","sourceConnectorSide","targetConnectorSide","deltaX","sameSideDistance","shiftX","shiftY","cascadeStartHorizontal","_startHorizontal","sourceSide","AdornerBase","_adorners","ConnectionEditAdorner","_ts","sp","tp","spVisual","epVisual","_initialSource","_initialTarget","sourcePointDistance","targetPointDistance","sourceHandle","targetHandle","modelToLayer","ConnectorsAdorner","_refreshHandler","ctr","_clearVisual","ConnectorVisual","_keepCachedTouchTarget","visualChildren","ResizingAdorner","_manipulating","_initSelection","_createHandles","_internalChange","_rotatedHandler","_resizable","_handleOptions","_bounds","handleBounds","handlesCount","_getHandleBounds","_rotationOffset","_startAngle","_rotates","_positions","initialRotates","initialStates","handleOptions","_sp","_cp","_lp","shapeStates","visibleHandles","dragging","newBounds","staticPoint","dtl","dbr","changed","_truncateAngle","_rotating","shouldSnap","thr","_truncateDistance","hitToOppositeSide","_displaceBounds","newCenter","oldBounds","_truncatePositionToGuides","ruler","truncatePositionToGuides","_truncateSizeToGuides","truncateSizeToGuides","snap","snapOptions","snapAngle","snapSize","_diffStates","_syncShapeChanges","rotationThumb","_rotationThumbBounds","Selector","_ep","_adorn","visualBounds","modelToView","_visualBounds","HyperTree","EPSILON","LayoutBase","subtype","nodeDistance","iterations","horizontalSeparation","verticalSeparation","underneathVerticalTopOffset","underneathHorizontalOffset","underneathVerticalSeparation","componentSpacingX","componentSpacingY","layerSeparation","layeredIterations","startRadialAngle","endRadialAngle","radialSeparation","radialFirstLevelSeparation","keepComponentsInOneRadialLayout","ignoreContainers","layoutContainerChildren","ignoreInvisible","animateTransitions","gridLayoutComponents","maxWidth","startX","resultLinkSet","resultNodeSet","moveToOffset","boundingRect","currentHeight","currentWidth","deltax","deltay","nodeBounds","newpoints","currentHorizontalOffset","transferOptions","DiagramToHyperTreeAdapter","shapeMap","edgeMap","finalNodes","finalLinks","ignoredConnections","ignoredShapes","hyperMap","hyperTree","finalGraph","_renormalizeShapes","_renormalizeConnections","mapConnection","mapShape","getEdge","listToRoot","containerGraph","parentContainer","firstNonIgnorableContainer","isContainer","_isIgnorableItem","isContainerConnection","isDescendantOf","scope","isIgnorableItem","isCollapsed","_isVisible","_isTop","isShapeMapped","leastCommonAncestor","al","xa","xb","_isCollapsed","sink","sourceNode","sinkNode","areConnectedAlready","newEdge","finalNodeSet","LayoutState","initialTemperature","temperature","guessBounds","_expectedBounds","refineStage","_repulsion","_attraction","_shake","rho","_InverseSquareForce","wn","hn","wm","hm","_SquareForce","squareSize","TreeLayoutProcessor","treeGraph","layoutSwitch","layoutLeft","setChildrenDirection","setChildrenLayout","TreeDirection","Width","arrange","layoutRight","layoutUp","layoutDown","treeDirection","layoutRadialTree","previousRoot","maxDepth","calculateAngularWidth","radialLayout","Angle","tipOverTree","startFromLevel","aw","diameter","sectorAngle","sortChildren","basevalue","nl","normalizeAngle","col","deltaTheta","deltaThetaHalf","parentSector","childAngleFraction","setPolarLocation","BoundingRectangle","includeStart","rootDirection","rootLayout","childrenLayout","givenSize","shapeWidth","shapeHeight","AngleToParent","SectorAngle","pp","childrenwidth","selfLocation","male","female","leftcount","tipOverTreeStartLevel","TreeLayout","layoutComponents","getTree","getTreeForRoot","LayeredLayout","_initRuntimeProperties","downstreamLinkCount","upstreamLinkCount","uBaryCenter","dBaryCenter","upstreamPriority","downstreamPriority","gridPosition","_prepare","targetLayer","layerMap","layerCount","sortedNodes","o2","o1layer","o2layer","minLayer","linksTo","_dummify","_optimizeCrossings","_swapPairs","arrangeNodes","_moveThingsAround","_dedummify","setMinDist","minDist","layerIndex","minDistances","getMinDist","i1","i2","placeLeftToRight","leftClasses","leftPos","classNodes","placeLeft","POSITIVE_INFINITY","rightSibling","nodeLeftClass","upNodes","downNodes","neighbor","intDiv","placeRightToLeft","rightClasses","rightPos","placeRight","NEGATIVE_INFINITY","leftSibling","nodeRightClass","_getLeftWing","leftWing","computeClasses","_getRightWing","rightWing","wingPair","currentWing","wing","ndsinl","_nodesInLink","vnode","wings","classIndex","_isVerticalLayout","_isHorizontalLayout","_isIncreasingLayout","_gridPositionComparer","currentNode","currDown","downNode","placed","sequenceStart","virtualStartIndex","_firstVirtualNode","virtualStart","sequence","_sequencer","virtualEnd","nextVirtualNode","virtualEndIndex","adjustDirections","fromLayerIndex","layerIncrement","maximumHeight","prevBridge","prevBridgeTarget","nextBridge","nextBridgeTarget","getNeighborOnLayer","clayer","j1","j2","_sequenceSingle","combineSequences","pair","leftHeap","_positionDescendingComparer","rightHeap","_positionAscendingComparer","leftRes","rightRes","leftClass","_getComposite","rightClass","it","layoutLayer","gridPos","iconsidered","considered","n1Priority","n2Priority","nodeGridPos","nodeBaryCenter","calcBaryCenter","nodePriority","moveRight","moveLeft","calcDownData","calcUpData","priority","rightNode","rightNodePriority","leftNode","leftNodePriority","mapVirtualNode","nodeToLinkMap","linkToNodeMap","addLinkBetweenLayers","upLayer","downLayer","oLayer","dLayer","oPos","dPos","depthOfDumminess","dedum","prevLink","moves","iter","optimizeLayerCrossings","presorted","n1BaryCenter","n2BaryCenter","compareByIndex","compareValue","inode","maxIterations","downwards","secondPass","hasSwapped","calcCrossings","memCrossings","crossBefore","countLinksCrossingBetweenTwoLayers","node1","node2","node1GridPos","node2GridPos","crossAfter","ulayer","dlayer","link1","link2","n11","n12","n21","n22","l1","l2","crossings","n11gp","n12gp","numerator","denominator","graphOrNodes","diagramOrGraphOrNodes","GraphAdapter","KBUTTONICON","HTMLButton","iconElement","_textElement","spriteCssClass","newSpan","renderButton","NEXT","DISABLEDSTATE","ARIA_DISABLED","MENU_CLICK","FOCUS","DIRECTIONS","cssClasses","baseItem","IMAGE_TEMPLATE","SPRITE_TEMPLATE","ICON_TEMPLATE","TEXT_TEMPLATE","ITEM_TEMPLATE","LINK_TEMPLATE","findFocusableSibling","getSibling","candidate","ButtonMenu","mainButton","_clickHandlers","_renderList","_renderListItem","menuItem","attributesId","_renderItemButton","class","_hide","_popup","_popupOpenHandler","_popupCloseHandler","_popupExpandHandler","adjustPopupWidth","listItemKeydown","destroyPopup","ARIA_EXPANDED","DISABLED","FOCUSSTATE","SplitButton","_renderButtons","_renderMenu","_enable","_aria","arrowIcon","labelSuffix","wrapperId","arrowButton","_getAppearanceClasses","_mainButton","_arrowButton","menu","kendoButtonMenu","menuOpen","menuOpenHandler","menuClose","menuCloseHandler","menuClick","computedWidth","soft","DropDownButton","iconTemplate","svgIconTemplate","Badge","_content","_appearance","cutoutBorder","roundings","full","sizes","_classNames","_text","_themeColor","_shape","_sizes","_fillMode","_rounded","_roundings","_cutoutBorder","_updateClassNames","keepClassNames","sizeAbbr","roundedAbbr","iconTemplateFunction","MOUSEDOWN","MOUSEUP","FOCUSEDSTATE","ACTIVESTATE","Button","_badge","_removeActive","_addActive","_isNativeButton","err","badgeEelement","badgeOptions","TOGGLE","ARIA_PRESSED","SELECTED","ToggleButton","_selected","SINGLE","MULTIPLE","ButtonGroup","selectedIndices","_buttons","_renderItems","KWIDGET","preventKeyNav","badgeEl","getKendoToggleButton","getKendoButton","_toggleIndex","_resetIndexes","_addButton","btn","_keyDown","buttonGroup","focusableItems","focusedElement","buttons","excludedNodesRegExp","MENU","LINK","LINK_SELECTOR","ICON_SELECTOR","LAST","TIMER","IMAGE","ZINDEX","POINTERDOWN","allPointers","TOUCHSTART","MOUSEENTER","MOUSELEAVE","RESIZE","POPUP_ID_ATTR","POPUP_OPENER_ATTR","KENDOPOPUP","HOVERSTATE","menuSelector","animationContainerSelector","childAnimationContainerSelector","popupSelector","allItemsSelector","itemSelector","availableItemsSelector","exclusionSelector","scrollButtonSelector","touchPointerTypes","ROLE","imageAttr","rendering","wrapperCssClass","firstLevel","itemCssAttributes","imageCssAttributes","imgAttributes","contentCssAttributes","contentAttr","defaultClasses","textClass","groupAttributes","expanded","groupCssClass","groupWrapperCssClass","updateItemClasses","elm","updateArrow","updateFirstLast","getArrowIconName","updateHasAriaPopup","parentLi","getParentLiItems","storeItemSelectEventHandler","selectHandler","getItemSelectEventHandler","setItemData","popupOpenerSelector","popupGroupSelector","getChildPopups","currentPopup","overflowWrapper","childPopupOpener","opener","popupId","popupParentItem","popupElement","itemPopup","parentsScroll","scrollDirection","isPointerTouch","removeSpacesBetweenItems","ul","Menu","_accessors","_templates","_updateClasses","_wrapGroups","_animations","nextItemZIndex","_initOverflow","_attachMenuEventsHandlers","openOnClick","clicked","_ariaId","closeOnClick","hoverDelay","popupCollision","_initData","_overflowWrapper","_checkActiveProxy","_checkActiveElement","_focusHandler","_preventClose","_toggleHover","_removeHoverItem","_mouseleavePopup","_mouseenterPopup","_documentClickHandler","_documentClick","_detachMenuEventsHandlers","backwardBtn","forwardBtn","isHorizontal","_openedPopups","_scrollWrapper","templates","scrollButton","_initScrolling","initialWidth","initialCssWidth","_setOverflowWrapperWidth","_toggleScrollButtons","_popupsWrapper","wrapperCssWidth","wrapperWidth","menuWidth","borders","_reinitOverflow","_destroyOverflow","popupWrapper","popupParentLi","mouseWheelDistance","backward","backwardDouble","forwardDouble","scrolling","touchEvents","scrollValue","mouseenterHandler","mousedownHandler","_closeChildPopups","currentScroll","_toggleDisabled","attemptGetItem","referenceItem","_childPopupElement","before","insertAfter","plain","groupData","renderGroup","itemElement","renderItem","parentItems","_openAfterLoad","visiblePopups","closePopup","_timerTimeout","overflowPopup","_getPopup","_triggerEvent","windowHeight","maxHeight","nextZindex","parentHorizontal","parseDirection","getEffectDirection","kendoPopup","deactivate","_popupOpen","_configurePopupOverflow","_initPopupScrolling","popupOpener","_wrapPopupElement","groupId","skipMouseEvents","_initPopupScrollButtons","scrollButtons","_closeParentPopups","_keyTriggered","_setPopupHeight","popups","_initialHeight","popupOuterHeight","popupOffsetTop","bottomScrollbar","dontClearClose","_isRootItem","_forceClose","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","_itemHasChildren","pointerTouch","isParentClosing","delegateTarget","rootMenuItems","subMenuItems","toElement","stopImmediatePropagation","_closePopups","rootPopup","groupParent","innerPopup","_innerPopup","openHandle","childGroup","childGroupVisible","shouldCloseTheRootItem","formNode","targetHref","sampleHref","isLink","isLocalLink","isTargetLink","_lastClickedElement","handled","_triggerSelect","childPopupId","_parentsUntil","enterKey","overflowMenuParents","itemSelectEventData","_getEventData","isSelectItemDefaultPrevented","isSelectDefaultPrevented","_moveHover","belongsToVertical","_itemBelongsToVertival","_itemDown","_itemUp","_itemEsc","_moveHoverToRoot","menuIsVertical","nextItem","_scrollToItem","_itemRight","parentItem","nextAll","_itemLeft","itemPosition","scrollDir","currentScrollOffset","itemSize","itemOffset","ulSize","scrollButtonSize","_unbindDataSource","_bindDataSource","_errorHandler","_error","findByUid","itemsToUpdate","updateProxy","_updateItem","removeProxy","_removeItem","_appendItems","nextElement","_fieldAccessor","fieldBindings","fieldAccessor","contentHtml","renderItems","itemWrapper","sprite","dataContentField","ContextMenu","_marker","_wire","closes","alignToAnchor","_showProxy","_closeProxy","_triggerFocusOnActivate","_focusMenu","_configurePopupScrolling","_setPopupWidth","windowWidth","popupOuterWidth","popupOffsetLeft","_closeTimeoutProxy","_eventOrigin","_targetChild","_closeHandler","sameTarget","containment","normalClick","_preventProxy","contextMenuElement","_triggerProxy","not","TOOLBAR","TOGGLE_BUTTON","BUTTON_GROUP","SPLIT_BUTTON","MENU_BUTTON","SPACER_CLASS","STATE_SELECTED","STATE_HIDDEN","FORCE_HIDDEN","GROUP_START","GROUP_END","MENU_LINK","MENU_ITEM","OVERFLOW_ANCHOR","TEMPLATE_ITEM","TOOLBAR_TOOL","MENU_LINK_TOGGLE","DROPDOWNLIST","KFOCUS","TABINDEX_MINUS_1","ARIA_CHECKED","SPACER","SEPARATOR","INPUT","GROUP","DATA_UID","DATA_ROLE_SELECTOR","DATA_TOGGLE_SELECTOR","DATA_ROLE_BUTTONMENU","KENDO_FOCUSABLE","OVERFLOW_OPEN","OVERFLOW_CLOSE","OVERFLOW_NEVER","OVERFLOW_AUTO","OVERFLOW_ALWAYS","KENDO_UID_ATTR","NOTHING","UID","K_DROP_DOWN_BUTTON","K_SPLIT_BUTTON","K_TOGGLE_BUTTON","K_BUTTON_GROUP","toolbar","WIDGET_TYPES","splitButton","dropDownButton","popupButton","TOOLBAR_TOOLS_CLASSES","ColorPicker","Switch","SAFE_COMPONENTS","POPUP_BUTTON_TEMPLATE","ToolBar","resizable","_extendToolsOptions","_tabIndex","_shrink","overflowAnchor","_toggleOverflowAnchor","navigateOnTab","overflowMenu","chooser","_getUid","_getItem","buttonsPopupItem","getSelectedFromGroup","parentGroupEl","templateEl","toolbarEl","_groupVisibleButtons","_resetTabIndex","_getAllItems","parentGroup","toggleTools","conditions","condition","toToggle","_processOptions","overflowTemplate","_addTemplate","_addCustomWidget","_addDefaultTool","_addSpacer","_addSeparator","_addAttributes","overflowComponent","_addMenuItem","componentOptions","_addToolbarTool","menuitem","togglable","menuButtons","_onMenuItemSelect","_addPopupButton","widgetElement","popupComponent","commandOn","overflowSeparator","spacer","inputsInTemplate","popupRef","hasButtons","primary","_attachWidgetEvents","_resetOpen","extensions","_focusIn","_focusOut","_onClick","_onToggle","_onSelect","_onOpen","_onClose","_childrenWidth","childrenWidth","flatMap","_mapTool","parentMessages","defaultTools","knownUid","uidSelector","buttonsPopups","_getNextElement","focusableItem","visibleBtns","_hideItem","_showMenuItem","_hideMenuItem","templateItem","isOverflowAnchor","_keyDeactivateTemplate","_keyActivateTemplate","_keyOpenOverflow","_keyFocusFirst","_keyFocusLast","_keyFocusNext","innerFocusable","innerWidget","_mapAttributes","toolOptions","dialog","toggleCondition","_mapComponent","componentMessages","_menuItemSelect","shouldSelect","twin","menuEl","overflowItem","_processInner","parentUid","rootUid","_renderOverflow","horizontalDirection","kendoButton","uploadWrapper","files","toFocus","containerWidth","popupBtnElements","commandElement","visibleCommands","itemOuterWidth","hiddenCommands","firstFocusable","Item","OverflowButton","TemplateItem","ToolBarButton","registerComponent","ToggleInputBase","_initSettings","RENDER_INPUT","inputMethod","HTMLInput","labelPosition","inputClass","labelEl","labelClass","optionalClass","optionalText","wrapperHtml","HTMLCheckBox","HTMLRadioButton","renderCheckBox","renderRadioButton","CheckBox","FOCUSED","STATEDISABLED","NOCLICKCLASS","STATEREADONLY","FloatingLabel","widgetWrapper","useReadOnlyClass","floatCheck","kendo$h","$$1","isFunction$1","Label","_floatingLabel","_label","_unwrapFloating","_floatingLabelContainer","removeFloating","beforeElm","FOCUSABLE","ACTION_SHEET_BOTTOM","ACTION_SHEET_FULLSCREEN","ACTIONABLE_BUTTON_SELECTOR","ACTIONSHEET_TITLE_ID","hexColor","HEADER_TEMPLATE","closeButton","description","defaultItem","iconSize","iconColor","defaultActionButton","ActionSheet","_hasItems","_hasActionButtons","actionButtons","_mapItems","_mapActionButtons","_applyAria","_tabKeyTrap","clickEvent","_clickProxy","fullscreen","footerTemplate","headerTemplate","adaptive","focusOnActivate","defaultItemsMapper","defaultActionButtonsMapper","positionClass","ACTION_SHEET","actionsheetTitleId","popupAnimation","_openHandler","closeButtonPressed","_closeButtonPressed","groupedItems","itemsByGroup","currentItem","topItems","bottomItems","_createItems","contentContainer","hideOverflowContent","inlineStyles","_createActionButtons","actionButtonElement","actionsContainer","_footer","_header","altTarget","_elementHeight","isFullScreen","_focusFirstFocusableElement","firstFocusableElement","_focusLastFocusableElement","lastFocusableElement","_isActionableButton","_triggerAction","isButtonKeyTrigger","allFocusables","lastFocusable","actionButton","percentageUnitsRegex","HOVER","KSELECTED","LOADING","LIST_UL","FIXED_GROUP_HEADER","ITEMSELECTOR","CASCADE","DATA_BINDING","DATA_BOUND","SELECTED_ITEM_CHANGE","HIDDENCLASS","isIE","quotRegExp","alternativeNames","ComboBox","DropDownList","MultiColumnComboBox","ARIA_ACTIVEDESCENDANT","ARIA_BUSY","ARIA_SELECTED","GROUP_ROW_SEL","List","_isSelect","adaptiveMode","largeMQL","mediumMQL","smallMQL","_listSize","_filterHeader","columns","_columnsHeader","_noData","_initValue","noDataTemplate","noData","_renderFooter","_renderNoData","_inputLabel","_focused","_floatCheck","_refreshFloatingLabel","_angularElement","filterTemplate","_isFilterEnabled","filterInput","filterTitle","$header","columnsHeader","colGroup","currentColumn","columnsHeaderTemplate","currentWidthInt","widthStyle","footerEl","_listOptions","changeEventOption","_listChange","listBoundHandler","_listBound","focusedElm","labelledBy","_activateItem","_deactivateItem","groupTemplate","fixedGroupTemplate","listSize","_initList","opts","skipValueUpdate","listOptions","selectedItemChange","VirtualList","_hasActionSheet","StaticList","_setListValue","_updateSelectionState","_listMousedown","_hideClear","_showClear","_clearValue","_clearText","_accessor","_customOption","enforceMinLength","highlightFirst","_clearFilter","_filterSource","isMultiColumnFiltering","filterFields","resetPageSettings","removed","removeFiltersForField","_clearFilterExpressions","newExpression","_pushFilterExpression","isValidFilterExpr","_cascading","setDSFilter","dataSourceState","filtersToRemove","_toggleNoData","_toggleHeader","_allowOpening","_old","_ignoreCase","widgetOptions","fromFilter","_buildExpression","_open","_clearButton","clearButton","_inputValue","_typingTimeout","_emptySearch","_searchByWord","_form","_resetHandler","selectedDataItems","autocomplete","suggest","_userTriggered","_isValueChanged","unifyType","_valueBeforeCascade","_oldIndex","isFiltered","_typing","typing","_dataValue","_offsetHeight","_height","isMccb","_adjustListWidth","autoWidth","_onCloseButtonPressed","_focusItem","noFocusedItem","scrollToIndex","_calculateGroupPadding","groupHeader","_calculatePopupHeight","_calculateColumnsHeaderPadding","_refreshScroll","enableYScroll","_resizePopup","_createPopup","_createActionSheet","_cachedFilterValue","_removeFilterHeader","_removeStaticHeader","_addFilterHeader","popupFilter","_postCreatePopup","_onActionSheetCreate","listViewValue","_clean","tagList","_toggle","preventFocus","touchEnabled","MSPointers","_prevent","_triggerCascade","_cascadeTriggered","_cascadedValue","userTriggered","_triggerChange","_requestStartHandler","_requestEndHandler","requireValueMapper","valueMapper","_initial","_initialIndex","_parentWidget","_cascadeSelect","_cascadeValue","_accessorInput","_accessorSelect","_custom","_syncValueAndText","custom","_hideBusy","_busy","_arrowIcon","_showBusy","_request","_requestEnd","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_getNormalizedDataItem","isIndex","hasOptionLabel","optionLabel","getElementIndex","dataItemByIndex","_getNormalizedSelectCandidate","normalizedCandidate","moveIndex","selectCandidate","_fetch","_get","activeFilter","shouldTrigger","_focusElement","focusout","scrollWith","_fetchData","dataText","dataValue","htmlElement","formId","_cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","cascadeOnCustomValue","currentHandler","STATIC_LIST_NS","_touchHandlers","_optionID","_selectedIndices","_dataItems","_getter","_createOnScrollProxy","_fixedHeader","startY","endY","tapPosition","_touchTriggered","_triggerClick","_scrollId","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","_getValues","_valueGetter","hasCandidate","focusIndex","skipUpdate","_skipUpdate","singleSelection","uiSelectedIndices","added","filtered","_deselectFiltered","_deselect","_valueComparer","_valueDeferred","_valueIndices","_onScroll","_renderHeader","_valueExpr","normalized","_valueType","_dataItemPosition","valueExpr","templateText","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","lastChild","previousSibling","isGrouped","visibleItem","_renderItem","notFirstItem","hasColumns","altRow","isLastGroupedItem","_renderColumns","cspCompliantHtml","dataContext","_lastDSFilter","skipUpdateOnBind","isItemChange","itemsToMatch","selectedLength","unchanged","mapChangedItems","_bound","LIST_ITEM","TABLE_ITEM","GROUPITEM","LISTBOUND","ITEMCHANGE","VIRTUAL_LIST_NS","lastFrom","isPrimitive","placeholderTemplate","renderedColumns","widthValue","renderColumns","webkitTransform","isActivePromise","mockList","contentClasses","_fetching","TABLE_LIST","_selectedDataItems","_selectedIndexes","_rangesList","_promisesList","_triggerListBound","_selectable","listScreens","oppositeBuffer","mapValueTo","_selectProxy","_deferValueSet","mute","_selectingValue","_highlightSelectedItems","_getElementByDataItem","_mute","_createList","_removeSelectedDataItem","_forcePrefetch","_prefetchByValue","_checkValuesOrder","_removedAddedIndexes","dataView","_dataView","forSelection","mapValueToIndex","mapValueToDataItem","_getIndecies","deferredRange","existingRange","isEmptyList","_activeDeferred","_getSkip","_findDataItem","_getRange","triggerEvent","_getElementByIndex","_focusedIndex","_getElementLocation","_screenHeight","heightContainer","isAlreadySelected","prefetchStarted","_selectDeferred","_deselectCurrentValues","_listCreated","_lastScrollTop","hasData","setScreenHeight","yPosition","yDownPostion","screenEnd","_generateItems","_saveInitialRanges","reorder","_buildValueGetter","_setHeight","getList","_listItems","_whenChanged","_reorderList","padHeight","lastRequestedRange","lastRangeStart","rangeStart","flatGroup","groupLength","_getterDeferred","firstItemIndex","_indexConstraint","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","firstVisibleGroup","fixedGroupText","_itemMapper","listType","_currentGroup","_getDataItemsCollection","lastScrollTop","_listIndex","theValidator","downThreshold","upThreshold","listValidator","theNew","currentOffset","list2","range2","reshift","_bufferSizes","opposite","buffers","selectedIndexes","removedindexesCounter","_deselectSingleItem","oldSkip","nsFocusEvent","READONLY","ARIA_READONLY","HOVEREVENTS","STATE_FILTER","STATE_ACCEPT","_focusInputHandler","_focusInput","_optionLabel","_inputTemplate","_prev","_word","_span","_mobile","_attachAriaActiveDescendant","_textAccessor","_optionLabelText","valueTemplate","optionLabelTemplate","_arrow","_focusFilter","_resizeFilterInput","originalPrevent","isInputActive","_optionLabelDataItem","loweredText","_valueSetter","_assignInstance","_buildOptions","optionLabelValue","initialIndex","_presetValue","_selectValue","_filterPaste","_search","_attachFocusHandlers","_focusinHandler","_focusoutHandler","isIFrame","_wrapperMousedown","dropDownWrapper","_keypress","isPopupVisible","_getElementDataItem","_matchText","_shuffleData","splitIndex","optionDataItem","_selectNext","oldFocusedItem","isInLoop","sameCharsOnly","_last","normalizeIndex","charCode","compareElement","jQueryCandidate","_resetOptionLabel","focusedItem","additionalClass","keepState","arrowBtn","SELECTOR","DOMelement","accesskey","unselectable","optionLabelText","getElements","ARIASELECTED","SELECTABLE","UNSELECT","UNSELECTING","INPUTSELECTOR_ICONSSELECTOR_FONT","INPUTSELECTOR_ICONSSELECTOR_SVG","replaceAll","INPUTSELECTOR_SVG_PARTS","INPUTSELECTOR","supportEventDelegation","Selectable","dragToSelect","_lastActive","inputSelectors","ignoreOverlapped","addIdToRanges","_isElement","selectedClass","whichCode","buttonCode","_allowSelection","_lastRange","compareElements","selectRange","_firstSelectee","_notify","_unselect","useAllItems","_selectElement","_invalidateSelectables","rangeSelectedAttr","_currentlyActive","toSelect","_collidesWithActiveElement","marqueeRect","activeElementRect","activeElements","elemRect","tempRect","selectElement","selectedRanges","rangeId","mapLocation","selectedSingleItems","preventNotify","aria","resetTouchEvents","continuousItems","toCompare","elementPosition","firstRect","secondRect","selectableMode","asLowerString","extractFormat","transitionOrigin","cellTemplate","emptyCellTemplate","otherMonthCellTemplate","weekNumberTemplate","SLIDE","CENTURY","NAVIGATE","OTHERMONTH","CELLSELECTOR","CELLSELECTORVALID","MOUSEENTER_WITH_NS","PREVARROW","NEXTARROW","decade","century","HEADERSELECTOR","Calendar","disableDates","getDisabledExpr","_viewWrapper","hasFooter","_today","mousetoggle","toDateObject","_focusView","focusOnNav","_setCurrent","_selectDates","restrictValue","_addClassProxy","_cell","todayString","toDateString","getToday","_cellByDate","_removeClassProxy","selectDates","weekColumnHeader","navigateTo","parentViews","classic","actionAttr","linksSelector","modern","_destroySelectable","_title","_table","_bindTable","_option","navigateToPast","navigateToFuture","navigateUp","navigateDown","isEqualDate","currentView","_oldTable","future","viewWrapper","_changeView","otherMonth","isWeekColumnVisible","addClassToViewContainer","_animate","_visualizeSelectedDatesInView","_selectCell","validSelectedDates","datesUnique","_validateValue","createDate","isInRange","selectedDates","selectableOptions","_onRelatedTarget","_toggleSelection","_cellsBySelector","_addSelectedCellsToArray","_rangeSelection","currentCell","toDateCell","daysDifference","fromDate","daysBetweenTwoDates","addDaysToArray","currentDateIndex","_dateInView","firstDateInView","_isNavigatable","cellIndex","isDisabled","prevent","_todayClick","_keyboardToggleSelection","focusedDate","_nextNavigatable","_keyboardRangeSelection","navigatableDate","_horizontal","viewWidth","_vertical","_selectedCell","isBigger","value1","value2","isEqualMonth","isTodayDisabled","todayClass","_todayClass","executeTemplate","_updateAria","ariaTemplate","valueType","firstVisibleDay","calendarInfo","tzOffsetBefore","resultDATE","tzOffsetDiff","getCalendarInfo","navigateUrl","showHeader","hasUrl","currentCalendar","firstDayIdx","shiftArray","shortNames","perRow","build","dateString","weekNumberBuild","date1","date2","month1","year1","month2","year2","calendarMonths","namesFull","setMonth","minYear","maxYear","modular","cellsPerRow","otherMonthTemplate","multiplier","endDate","fromDateUTC","endDateUTC","numberOfDays","dateObject","disabledDates","convertDatesArray","createDisabledExpr","isEqualDatePart","viewsEnum","extendStatics","setPrototypeOf","__extends","TypeError","__","Direction","cloneDate","hour","addMonths","expectedMonth","Day","isEqual","expected","timezones","zoneOffset","ruleOffset","CURRENT_UTC_TIME","zoneRule","currentRule","NO_TZ_INFO","flatten","formatMessage","flattenValues","getZoneRules","_a","addMinutes","dayAbbr","monthAbbr","padNumber","isZoneMissingHour","prevHour","shiftZoneMissingHour","utcDate","dstOffset","convertTimezoneUTC","utcLocal","fromTimezone","toTimezone","baseDiff","midDate","midOffset","ZonedDate","_utcDate","tzOffset","timezoneOffset","localDate","_localDate","enumerable","configurable","fromLocalDate","shiftZone","fixedOffset","adjDate","fromUTCDate","toUTCDate","addTime","utcMid","utcResult","stripTime","getUTCMilliseconds","ms","setUTCMilliseconds","sec","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCMonth","setUTCFullYear","toISOString","timeString","toTimeString","formatOffset","abbrev","abbrTimezone","locales","toLocaleDateString","toLocaleTimeString","toUTCString","toPrimitive","getVarDate","formatUTC","DateInputInteractionMode","Mask","partMap","Constants","Key","padZero","unpadZero","dateSymbolMap","parseToInt","setYears","areDatePartsEqualTo","isValidDate","SHORT_PATTERN_LENGTH_REGEXP","DateObject","formatPlaceholder","_b","cycleTime","_d","_e","autoCorrectParts","leadingZero","typedMonthPart","knownParts","_partiallyInvalidDate","invalidDateParts","startDateOffset","sampleFormat","dateFormatString","setExisting","resetInvalidDate","localeId","cldrKeys","cldr","numbers","monthNames","allFormattedMonths","dayPeriods","allDayPeriods","modifyExisting","getExisting","getFormattedDate","getTextAndFormat","customFormat","partiallyInvalidText","formattedDate","formattedDates","getFormattedInvalidDates","getInvalidDatePartValue","partsForSegment","getPartsForSegment","datePartText","formattedDatesForSymbol","getInvalidDatePart","formattedInvalidDate","modifyPart","invalidDateFound","timeModified","isMonth","isDay","symbolExists","invalidDatePartValue","resetInvalidDateSymbol","monthValue","dayValue","dateCandidate","newValueCandidate","modifyDateSymbolWithValue","dateCandidateExists","markDatePartsAsExisting","setInvalidDatePart","shouldNormalizeCentury","normalizeCentury","parsePart","currentChar","resetSegmentValue","cycleSegmentValue","rawInputValue","rawTextValue","isDeleting","originalFormat","isInCaretMode","dateParts","datePartsLiterals","datePartIndex","flatDateParts","datePart","parseResult","switchToNext","resetPart","hasInvalidDatePart","resetLeadingZero","rawValueStartsWithLiteral","rawValueEndsWithLiteral","endsWith","rawValueHasConsecutiveLiterals","baseDate","baseFormat","replaced","basePrefix","baseSuffix","suffix","convertedBaseFormat","hasFixedFormat","datePartStartIndex","segmentLength","formatToTextLengthDiff","parsedDate","matchMonth","dayPeriod","matchDayPeriod","isZeroCurrentChar","isAbbrMonth","incrementLeadingZero","partPattern","patternValue","currentMaxLength","tryParse","middleNumber","candidateDateString","autoCorrectedPrefixAndSuffix","isCurrentCharParsable","monthNumber","peekedValue","peek","peekedDateString","peekedDate","patternSatisfied","datePartValue","textToParse","month_1","valueCandidate","symbolMap","hasLeadingZero","setLeadingZero","getLeadingZero","twoDigitYear","cropTwoDigitYear","centuryBase","getNormalizedCenturyBase","peekValue","typedChar","monthAsNum","lowerChart","am","pm","dateFormatParts","partLength","returnValue","resultText","resultFormat","processTextSymbolsEnded","ignoreFormatSymbolsCount","formatSymbolIndex","formatSymbolIndexModifier","resetInvalidDatePart","shouldResetInvalidDate","modifyDateSymbolWithOffset","partIndex","segmentPart","maskPartIndex","KeyCode","defaultPrevented","TOUCH_START","MOUSE_DOWN","MOUSE_UP","KEY_DOWN","PASTE","MOUSE_SCROLL","MOUSE_WHEEL","VALUE_CHANGE","INPUT_END","BLUR_END","FOCUS_END","defaultDateInputOptions","hasPlaceholder","millisecond","minute","selectNearestSegmentOnFocus","selectPreviousSegmentOnBackspace","enableMouseWheel","allowCaretMode","autoSwitchParts","autoSwitchKeys","DateInput","_super","currentText","currentFormat","interactionMode","None","previousElementSelection","createDateObject","setTextAndFormat","forceUpdate","onElementDragStart","onElementDrop","onElementClick","onElementMouseDown","onElementMouseUp","onElementInput","onElementKeyDown","onElementFocus","onElementBlur","onElementChange","onElementPaste","onElementMouseWheel","setDateObjectOptions","getDateObjectOptions","resetLocale","Caret","selectNearestSegment","mouseDownStarted","focusedPriorToMouseDown","switchedPartOnPreviousKeyAction","selectionPresent","placeholderToggled","setSelection","selectionByIndex","triggerInput","isPasteInProgress","updateOnPaste","keyDownEvent","isBackspaceKey","isDeleteKey","originalInteractionMode","hasCaret","restorePreviousInputEventState","oldExistingDateValue","oldDateValue","oldText","newText","formatPattern","keyEvent","oldTextSeparator","oldSegmentText","newSegmentText","deletedSymbol","approximateStringMatching","previousElementValue","elementValue","navigationOnly","parsePartsResults","switchPart","parsePartResult","symbolForSelection","lastParseResult","lastParseResultHasNoValue","parsingFailedOnDelete","newExistingDateValue","hasExistingDateValueChanged","newDateValue","currentSelection","diffChar","forceUpdateWithSelection","switchDateSegment","selectionBySymbol","tryTriggerValueChange","triggerInputEnd","triggerFocus","refreshElementValue","triggerFocusEnd","triggerBlur","triggerBlurEnd","triggerChange","triggerKeyDown","keyEventMatchesAutoSwitchKeys","isTabKey","getStepFromSymbol","shouldPreventDefault","modifyDateSegmentValue","triggerMouseWheel","inputFormat","oldDateObjectValue","writeValue","displayFormat","currentSymbol","symbolCandidate","previousFormatSymbol","msDigits","triggerValueChange","elementValueLength","selectionOffset","setElementValue","restorePreviousElementValue","restorePreviousElementSelection","verifyValue","getDateObject","showPlaceholder","newElementValue","selectDateSegment","keyObject","DateInputCommon","STATEINVALID","buildKeys","cultureInfo","getCultureFormat","wrapperClass","skipStyling","_validationIcon","dateInputInstance","inputEnd","_blinkInvalidState","keydown","_emptyMask","_formElement","_hasDateInput","_bindInput","_unbindInput","_addInvalidState","_invalidStateTimeout","_removeInvalidState","_paste","DIV","parseFormats","DateView","bigScreenMQL","smallScreenMQL","omitPopup","dateDiv","_dateViewID","_calendar","popupHovered","selectIsClicked","disabledDate","DatePicker","_initialOptions","_createDateView","_createDateViewProxy","dateView","_createDateInput","_oldText","ARIATemplate","dateInput","_updateARIA","_dateIcon","_dateInput","_navigateCalendarHandler","_navigateCalendar","dateChanged","valueUpdated","textFormatted","_setCalendarAttribute","isSameType","optionsValue","_ariaTemplate","placeholderSupported","SPIN","INTEGER_REGEXP","NumericTextBox","inputType","isStep","_focusout","_arrows","_validation","_input","_focusin","selectValue","restrictDecimals","spinners","selectOnFocus","upArrowText","downArrowText","_toggleText","_upArrowEventHandler","_downArrowEventHandler","_spin","_upArrow","_downArrow","_keyup","_inputHandler","_placeholder","_arrowsWrap","_adjust","arrows","_spinning","buttonHtml","release","_focusing","groupRegExp","extractRegExp","_format","caretPosition","_getFactorValue","_culture","accessKey","_numPadDot","_cachedCaret","_step","decimalSeparator","minInvalid","_isPasted","_numericRegex","fractionRule","_separator","_floatRegExp","truncate","isNotNull","DOMElement","INVALIDMSG","invalidMsgRegExp","INVALIDINPUT","VALIDINPUT","VALIDATIONSUMMARY","INVALIDLABEL","MESSAGEBOX","ARIAINVALID","emailRegExp","urlRegExp","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","NAME","FORM","NOVALIDATE","VALIDATE","VALIDATE_INPUT","patternMatcher","matcher","hasAttribute","parseHtml","parseHTML","searchForMessageContainer","isLabelFor","validator","allowSubmit","validateOnInit","SUMMARYTEMPLATE","Validator","resolvers","ruleResolvers","resolveRules","validateAttributeSelector","_errorTemplate","errorTemplate","_summaryTemplate","validationSummary","_inputSelector","_checkboxSelector","_errors","_isValidated","_validateOnInit","required","email","dateCompare","captcha","noNameCheckbox","namedCheckbox","checkbox","radio","raise","isValidated","isValid","getCaptchaId","_validating","_checkElement","validateOnBlur","_allowSubmit","validateInput","inputs","invalid","showValidationSummary","valid","_checkValidity","lbl","_findMessageContainer","messageText","_extractMessage","messageLabel","wasValid","isInputInner","lblId","_decorateMessageContainer","prevElement","_inputWrapper","inputWrap","inputLabel","errorId","_associateMessageContainer","hideMessages","_disassociateMessageContainers","hideValidationSummary","locators","messageLocators","locate","decorate","ruleKey","nonDefaultMessage","customMessage","_getInputNames","_errorsByName","inputNames","_renderSummary","_summaryClick","errorsList","nameSpecialCharRegExp","EQUAL_SET","specialRules","fieldType","createAttributes","ruleName","validation","DATATYPE","BINDING","stringRule","attributeName","addIdAttribute","kendoEditors","editors","kendoNumericTextBox","editorOptions","kendoDatePicker","kendoTextBox","renderHiddenForMvcCheckbox","kendoCheckBox","convertItems","kendoEditor","editor","tagElement","checkboxes","getEditorTag","mobileEditors","addValidationRules","modelField","shouldRenderHidden","Editable","_isMobile","_validateProxy","_validate","clearContainer","skipFocus","isHidden","isCustomEditor","isKendoEditor","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","validatable","modelFields","bindAttr","isAntiForgeryToken","antiForgeryTokenName","convertToValueBinding","_focusTimeout","_focusEditor","MODAL_NS","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KWINDOWRESIZEHANDLES","KOVERLAY","KWINDOWMINIMIZED","LOADINGICONCLASS","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","INLINE_FLEX","VISIBLE","CURSOR","REFRESH","RESIZESTART","RESIZEEND","RESTORE","DATADOCOVERFLOWRULE","MINIMIZE_MAXIMIZEICONSELECTORS","KPINICONCLASSSELECTOR","KUNPINICONCLASSSELECTOR","PIN_UNPINICONCLASSSELECTOR","TITLEBAR_BUTTONSSELECTOR","REFRESHICONSELECTOR","WINDOWEVENTSHANDLED","zero","SIZE","toInt","constrain","executableScript","getPosition","offsetLeft","parentOverflowX","parentOverflowY","Window","windowContent","globalWindow","suppressActions","actions","_createWindow","_dimensions","_footerTemplate","_footerMessages","minTop","minLeft","maxTop","maxLeft","_overlay","_buttonEnter","_buttonLeave","_windowActionHandler","_keydownContent","_draggable","pinned","pin","_onDocumentResize","sizeClass","contentBoxSizing","lrBorderWidth","tbBorderWidth","_isPinned","_updateBoundaries","containmentTop","containmentLeft","_animationOptions","resizing","toggleMaximization","resizeHandle","WindowResizing","WindowDragging","dragHandle","_actions","windowSpecificCommands","icons","maximize","cachedOptions","_containerScrollTop","_containerScrollLeft","_enableDocumentScrolling","fade","autoFocus","isMaximized","isMinimized","_closable","_close","newWidth","newHeight","unpin","minimize","preventScroll","_stopDocumentScrolling","_actionForIcon","_modals","windowInstance","windowElements","modals","_object","newTop","newLeft","documentWindow","_scrollIsAppended","titleBar","titleElement","titlebar","scrollContainer","otherModalsVisible","showOptions","Fade","overlayFx","fadeIn","_removeOverlay","suppressAnimation","hideOverlay","hideOptions","systemTriggered","lastModal","_actionable","_shouldFocus","avoidFocus","currentWindow","containmentContext","openAnimation","originalZIndex","windowObject","zIndexNew","windowTop","restoreOptions","_sizingAction","actionId","_storeOverflowRule","$body","$html","_restoreOverflowRule","$element","_isOverflowStored","overflowRule","win","wnd","contentFrame","_triggerRefresh","_ajaxComplete","_loadingIconTimeout","_ajaxError","_ajaxSuccess","_showLoading","iframeSrcAttributes","_preventDragging","dragstart","dragend","addOverlay","removeOverlay","dragcancel","iconName","resizeDirection","initialSize","containerOffset","wrapperPosition","relativeElMarginLeft","relativeElMarginTop","_relativeElMarginLeft","_relativeElMarginTop","windowBottom","windowRight","leftRtlOffset","scrollOffset","newWindowTop","initialWindowPosition","initialPointerPosition","_finishDrag","CASCADING","MAXINT","ITEMROTATE","PAN","TRANSFORMED","BUTTON_TEMPLATE","DefaultConnectors","defaultButtons","imageClass","isAutoConnector","closestConnector","resCtr","minimumDistance","indicesOfItems","extra","DiagramElement","serializable","_contentVisual","_updateContentVisual","_createContentVisual","elementTemplate","_canSelect","Connector","shapeId","tempStr","updateOptionsFromModel","createShapeVisual","updateBounds","_createConnectors","_setOptionsFromModel","modelOptions","filterShapeDataItem","redrawVisual","_isEditable","_redrawVisual","syncChanges","_suspendModelRefresh","_resumeModelRefresh","_rotate","_alignContent","contentVisual","containerRect","aligner","contentBounds","contentRect","alignedBounds","_transformedBounds","_rotatedBounds","_setBounds","_triggerBoundsChange","_layouting","refreshConnections","cloneDataItem","deselected","_internalSelection","_selectionChanged","deltaAngle","newPosition","sc","cons","nameOrPoint","_transformPoint","boundsChange","shapeOptions","shapeVisual","_visualOptions","_updateConnectors","_showConnectors","rotatedPoint","visualTemplate","_initRouter","_sourcePoint","_targetPoint","_setSource","_setTarget","definers","fromConnector","toConnector","dataMap","_dataMap","fromX","fromY","toX","toY","filterConnectionDataItem","connectionsDataSource","clearField","shapeSource","defaultConnector","_removeFromSourceConnector","_clearSourceConnector","_setFromOptions","sourceDefiner","_sourceDefiner","shapeTarget","_removeFromTargetConnector","_clearTargetConnector","_setToOptions","targetDefiner","_targetDefiner","connectorName","setNewTarget","inactiveItem","_inactiveShapeItems","_deferredConnectionUpdates","onActivate","alignToPath","midIdx","_router","pts","_resolveConnectors","_refreshPath","sourceConnectors","targetConnectors","_resolveAutoConnectors","minNonConflictSource","minNonConflictTarget","minSource","minTarget","sourceIdx","targetIdx","minNonConflict","_testRoutePoints","router","passRoute","exclude","_getRouteExclude","_shapesQuadTree","hitTestRect","_isPointInsideShape","boundsX","boundsY","Diagram","_initElements","_extendLayoutOptions","_initDefaults","_interactionDefaults","_initCanvas","adornerLayer","_createHandlers","_clipboard","pauseMouseHandlers","_fetchFreshData","_createGlobalToolBar","_createOptionElements","toolBar","DiagramToolBar","_toolBarClick","createShape","createModel","_createShape","edit","createConnection","_connectionsDataMap","addConnection","editModel","editorType","cancelEdit","shapeEditors","shapeTemplate","connectionSelectorHandler","connectionSelector","connectionEditors","connectionTemplate","PopupEditor","_editArgs","_getEditDataSource","_destroyEditor","saveEdit","userShapeDefaults","copyDefaultOptions","canvasContainer","viewPort","_userEvents","_dragStart","_gestureStart","_gestureChange","_gestureEnd","doubleTap","_mouseMove","_mouseDown","_mouseUp","_syncHandler","_pauseMouseHandlers","_eventPositions","_meta","_createToolBar","ctrlPressed","origEvent","documentToModel","initialCenter","_gesture","_initialCenter","documentToView","updateZoom","_getValidZoom","zoomedPoint","_panTransform","_updateAdorners","pointPosition","shapesLength","_createShapes","_createConnections","_findConnectionTarget","destroyScroller","_destroyGlobalToolBar","_parseBounds","splitDiagramElements","_removeShapeDataItem","_removeConnectionDataItem","_getDiagramItems","_fixOrdering","bringIntoView","newPan","_zoomMainLayer","alignShapes","_getPan","_copyOffset","copied","mapping","_updateCopiedConnection","sourceConnection","di","_containerOffset","viewToDocument","viewToModel","_transformWithMatrix","_matrixInvert","_layerMatrix","layerToModel","_layerMatrixInvert","viewPoint","modelToDocument","setConnectionsDataSource","_connectionDataSource","_redrawConnections","getShapeByModelId","getShapeByModelUid","getConnectionByModelId","getConnectionByModelUid","_transformMainLayer","_finishPan","_storeViewMatrix","_storeLayerMatrix","canvasTransform","shapePos","conPos","removedConnections","_removeShape","_removeConnection","_removeDataItems","recursive","_removeShapeConnections","_addDataItem","_addDataItemByUid","_addDataItems","parentShape","_refreshSource","_bindingRoots","_addItem","preventClosing","singleToolBar","popupZIndex","popupWidth","popupHeight","connectionBounds","_normalizePointZoom","InactiveItemsCollection","undone","redone","_loadingShapes","_loadingConnections","ds","_shapesRefreshHandler","_shapesRequestStartHandler","_shapesErrorHandler","_refreshShapes","_shapesRequestStart","_treeDataSource","_connectionsRefreshHandler","_connectionsRequestStartHandler","_connectionsErrorHandler","_refreshConnections","_connectionsRequestStart","_connectionsError","_shouldRefresh","_removeShapes","_updateShapes","_syncShapes","_rebindShapesAndConnections","_addShapes","_addConnections","_removeConnections","_updateConnections","_addConnectionDataItem","_validateConnector","adorners","_refresh","viewRect","clipWrap","deferredConnectionUpdates","_tools","createToolBar","createTools","appendTools","createPopup","getKendoPopup","_toolBar","kendoToolBar","getKendoToolBar","createTool","toolName","_setAttributes","editTool","deleteTool","rotateAnticlockwiseTool","_appendGroup","_rotateGroup","rotateClockwiseTool","createShapeTool","_createGroup","createConnectionTool","undoTool","_historyGroup","redoTool","_getAttributes","selectedElements","selectedElemens","rotateClockwise","rotateAnticlockwise","Editor","_getFields","createEditable","formContent","_renderTemplate","_renderFields","_cancelClick","_attachButtonEvents","_createButton","_cancelClickHandler","_updateClickHandler","_updateClick","_editUpdateClickHandler","kendoDropDownList","InactiveItem","deffered","_testRect","overlapsBounds","childIdx","shapeIdx","boundsChangeHandler","_boundsChange","rootSize","xIdx","yIdx","mainOptions","ITEM_CREATED","TreeMap","_setLayout","colorField","_layout","SliceAndDice","SliceAndDiceView","Squarified","SquarifiedView","_onDataChange","_wrapItem","htmlSize","compute","_setColors","_cleanItems","createRoot","_colorIdx","colorRange","minRGBtoDecimal","rgbToDecimal","maxRGBtoDecimal","isDarker","colorBrightness","rgbColor","colorByIndex","buildColorFromRGB","colorsByLength","leafNodes","_contentSize","renderHeight","_removeActiveState","_resizeItems","setItemSize","leaf","layoutChildren","parentArea","totalArea","itemsArea","minimumSideValue","layoutHorizontal","squarify","initElement","computeDim","worstAspectRatio","newCoords","layoutRow","layoutLast","layoutV","layoutH","layoutVertical","layoutChange","areaSum","maxArea","rootCoord","newRootCoord","_totalArea","ans","_createTitle","_compile","_createWrap","rootWrap","_createLeaf","_createTile","_tileColorBrightness","_itemCoordinates","titleTemplate","sliceAndDice","minColor","maxColor","currentStep","decimalToRgb","colorLength","colorToRGB","rgbToHex","injector","$defaultCompile","OPTIONS_NOW","toDataSource","$injector","$parse","$timeout","$log","createDataSource","TreeList","TreeView","Scheduler","PivotGrid","PivotConfigurator","PanelBar","$eval","$watch","mew","ignoredAttributes","kDataSource","kOptions","kRebind","kNgModel","kNgDelay","ignoredOwnProperties","formRegExp","kendoRenderedTimeout","RENDERED","origAttr","controller","$scope","$attrs","setTemplate","_cleanUp","controllers","roleattr","createWidget","$emit","$setPristine","TAGNAMES","DateTimePicker","TimePicker","AutoComplete","MaskedTextBox","Upload","ListView","ScrollView","SKIP_SHORTCUTS","MANUAL_DIRECTIVES","directive","pendingPatches","defadvice","klass","isMobile","make","directiveName","directiveFactory","shortcut","dashed","scopeField","kScopeField","createDirectives","$angular_scope","$angular_init","withoutTimeout","itemScope","$$kendoScope","$destroy","destroyScope","vars","$new","digest","$angular_makeEventHandler","kendoEvent","elems","colIdx","locals","_checkBoxSelection","angularDataItem","templateSettings","templateDirectives","WIDGET_TEMPLATE_OPTIONS","Pager","templateName","terminal","delayValue","ngModel","ngForm","ctor","parsed","unresolved","unwatch","createIt","$root","unregister","$attr","$$phase","$apply","originalElement","kendoWidget","exposeWidget","destroyRegister","deregister","$on","destroyWidgetOnScopeDestroy","rebindAttr","templateOptions","templateContents","replaceChild","setupRebind","kNgDisabled","bindToKNgDisabled","kNgReadonly","isReadonly","bindToKNgReadonly","bindToKNgModel","haveChangeOnElement","isForm","formValue","viewRender","$viewValue","$modelValue","$render","formPristine","$pristine","$setViewValue","currentVal","$isEmpty","bindToNgModel","MutationObserver","prevClassList","mo","changes","chg","currClassList","disconnect","propagateClassToWidgetWrapper","optionsPath","addOption","scopeValue","widgetEvents","dataName","eventKey","optionName","DateRangePicker","rangePickerEndModel","rangePickerModels","rangePickerStartModel","_startDateInput","_endDateInput","updating","valueIsCollection","RangeSlider","currentValueLength","$angular_setLogicValue","watchHandler","$watchCollection","changeHandler","$setDirty","$angular_getLogicValue","isDigesting","$digest","origMethod"],"sources":["kendo.dataviz.js"],"mappings":"CAAA,SAAWA,EAAQC,GACI,iBAAZC,SAA0C,oBAAXC,OAAyBA,OAAOD,QAAUD,EAAQG,QAAQ,WAC9E,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,CAAC,UAAWJ,KAC/DD,EAA+B,oBAAfO,WAA6BA,WAAaP,GAAUQ,MAAcC,aAAeT,EAAOS,cAAgB,GAAIT,EAAOS,aAAaC,GAAKT,KAH1J,CAIGU,MAAM,WACL,IAAIC,EACAC,EAAQ,SAERC,EAAqB,CACrBC,MAAO,qBACPC,OAAQ,8CACRC,MAAO,wBAqEX,SAASC,EAAWC,GAChB,GAAKA,EAYL,OAJIA,KAJJP,EACIA,GACAQ,OAAOC,OAAO,GAAIP,EAAoBQ,MAAMC,SAASX,gBAGrDO,EAAQP,EAAYO,IA5E5B,SAA0BA,GACtB,IAAIK,EAAiBC,OAAOC,WAAWP,GACnCQ,EAAmB,GACnBC,EAAmB,GACnBC,EAAmB,GACnBC,EAAkB,CAAEN,eAAgBA,GAEpCO,EAAkB,SAAUC,GAC5BH,EAAiBI,SAAQ,SAAUC,GAAM,OAAOA,EAAGF,MAE/CA,EAAGG,QACHR,EAAiBM,SAAQ,SAAUC,GAAM,OAAOA,EAAGF,MAEnDJ,EAAiBK,SAAQ,SAAUC,GAAM,OAAOA,EAAGF,OAkD3D,OA9CAR,EAAeY,iBAAiBvB,EAAOkB,GAyCvCD,EAAgBO,SAvCD,SAAUH,GAErB,OADAL,EAAiBS,KAAKJ,GACfJ,GAsCXA,EAAgBS,QAnCF,SAAUL,GAGpB,GAFAP,EAAiBW,KAAKJ,GAElBV,EAAeW,QAAS,CACxB,IAAIK,EAAQhB,EAAegB,MAQ3BN,EALS,IAAIO,oBAAoB5B,EAAO,CACpC2B,MAAOA,EACPL,SAJU,KAUlB,OAAOL,GAqBXA,EAAgBY,QAlBF,SAAUR,GAEpB,OADAN,EAAiBU,KAAKJ,GACfJ,GAiBXA,EAAgBa,QAdF,WACNnB,GACAA,EAAeoB,oBAAoB/B,EAAOkB,GAE9CJ,EAAmB,KACnBC,EAAmB,KACnBC,EAAmB,KACnBL,EAAiB,KACjBM,EAAkB,MAQfA,EAgBAe,CAAiB1B,GAG5B,IAOI2B,EAAkB,CAClBC,KAAM,qBACNC,YAAa,WACbC,aAAc,CAAC,kBAAmB,UAAW,UAAW,mBACxDC,YAAa,EACbC,QAAS,aAAaC,QAAQ,aAAc,IAC5CC,iBAAkB,4EAItB,SAAUC,EAAG7B,EAAQ8B,GACjB,IAMIC,EANAlC,EAAQG,EAAOH,MAAQG,EAAOH,OAAS,CAAEmC,SAAU,IACnDC,EAASJ,EAAEI,OACXC,EAAOL,EAAEK,KACTC,EAAUC,MAAMD,QAChBE,EAAOR,EAAEQ,KACTC,EAAOC,KAEPC,EAAOxC,EAAOwC,MAAQ,GACtBC,EAAU,GACVC,EAAgB,IAChBC,EAAe,uBACfC,EAAkB,sEAClBC,EAAe,uBACfC,EAAQ,QACRC,EAAO,OACPC,EAAO,OACPC,EAAU,UACVC,EAAU,UACVC,EAAiB,CACbC,EAAK,MACLC,EAAK,OACLC,EAAKJ,EACLK,EAAKL,EACLM,EAAKV,EACLW,EAAKX,EACLY,EAAK,MACLC,EAAKV,EACLW,EAAKX,EACLY,EAAKZ,EACLa,EAAKf,EACLgB,EAAKhB,EACLiB,EAAKjB,EACLkB,EAAKlB,EACLmB,EAAK,SACLC,EAAK,SACLC,EAAK,YACLC,EAAK,YACLC,EAAKtB,EACLuB,EAAKvB,EACLwB,EAAKxB,EACLyB,EAAKzB,GAET0B,EAAa,CACTC,MAAO,CACHC,KAAM,SACNC,UAAW,EACXC,WAAY,KAGhBC,QAAS,CACLH,KAAM,WACNC,UAAW,EACXC,WAAY,KAGhBE,QAAS,CACLJ,KAAM,OACNC,UAAW,CACPlB,EAAG,EACHC,EAAG,EACHC,EAAG,GAEPiB,WAAY,KAGhBG,UAAW,CACPL,KAAM,aACNC,UAAW,GAGfK,IAAK,CACDN,KAAM,OACNC,UAAW,IAGnBM,EAAW,WACXC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAO,OACPC,EAAU,UACVC,EAAY,YAEZC,EAAkB,kBAClBC,EAAa,aAEbC,EAAc,GACdC,EAAc,GACdC,EAAQ,GAAGA,MACXC,EAAqB,CAAE,aAAc,WAAY,QAAS,OAAQ,UAAW,gBAE7EC,EAAoB,WAChB,IAEIC,EAAKC,EAAaC,EAAM7E,EAAM8E,EAASC,EAFvCC,EAAcC,UAGdC,EAASD,UAAW,IAAO,GAC3BE,EAAI,EACJC,EAASH,UAAUG,OACnBC,GAAO,EAsBX,IAnBuB,kBAAXH,IACRG,EAAOH,EAGPA,EAASD,UAAWE,IAAO,GAC3BA,KAImB,iBAAXD,GAAyC,mBAAXA,IACtCA,EAAS,IAIRC,IAAMC,IACPF,EAAStH,KACTuH,KAGIA,EAAIC,EAAQD,IAGhB,GAAuC,OAAhCL,EAAUE,EAAaG,IAG1B,IAAMnF,KAAQ8E,EAGE,WAAR9E,GAA6B,UAARA,GAA4B,KAARA,IAG7C2E,EAAMO,EAAQlF,GAITkF,KAHLL,EAAOC,EAAS9E,MAQXqF,GAAQR,IAAUS,OAAOC,cAAeV,KACvCD,EAAc9D,MAAMD,QAASgE,MAE1BD,GACDA,GAAc,EACdG,EAAQJ,GAAO7D,MAAMD,QAAS8D,GAAQA,EAAM,IAG5CI,EAAQJ,GAAOW,OAAOC,cAAeZ,GAAQA,EAAM,GAIvDO,EAAQlF,GAAS0E,EAAmBW,EAAMN,EAAOF,IAGzCA,IAASrE,IACjB0E,EAAQlF,GAAS6E,KAOjC,OAAOK,GAKf,SAASM,KAFTjH,EAAM6B,QAAU,aAAaC,QAAQ,aAAc,IAInDmF,EAAM7E,OAAS,SAAS8E,GACpB,IACIC,EAKAC,EANAC,EAAO,aAEPC,EAAOjI,KACPkI,EAAWL,GAASA,EAAMM,KAAON,EAAMM,KAAO,WAC1CF,EAAKG,MAAMpI,KAAMqH,YAOzB,IAAKS,KAHLE,EAAKK,UAAYJ,EAAKI,UACtBN,EAAKG,EAASH,GAAKG,EAASG,UAAY,IAAIL,EAE7BH,EACU,MAAjBA,EAAMC,IAAmBD,EAAMC,GAAQQ,cAAgB7H,OAEvDsH,EAAGD,GAAU/E,GAAO,EAAM,GAAIiF,EAAKK,UAAUP,GAASD,EAAMC,IAE5DC,EAAGD,GAAUD,EAAMC,GAO3B,OAHAC,EAAGO,YAAcJ,EACjBA,EAASnF,OAASkF,EAAKlF,OAEhBmF,GAGXN,EAAMS,UAAUE,aAAe,SAASrB,GACpClH,KAAKkH,QAAUsB,GAAW,GAAIxI,KAAKkH,QAASA,IAGhCvG,EAAM8H,UAAY,SAAUC,GAAS,OAAiB,OAAVA,GAAkBA,IAAU9F,GAC1EjC,EAAMgI,QAAU,SAAUD,GAAS,OAAiB,OAAVA,GAAkBA,IAAU9F,GACrEjC,EAAMiI,SAAW,SAAUF,GAAS,MAAwB,iBAAVA,GACjD/H,EAAMkI,UAAY,SAAUH,GAAS,OAAQI,MAAMJ,EAAQK,WAAWL,KACzE/H,EAAMqI,OAAS,SAAUN,GAAS,OAAOA,GAASA,EAAMO,SAJrE,IAKIC,EAAavI,EAAMuI,WAAa,SAAUR,GAAS,MAAwB,mBAAVA,GAEjES,EAAiB,WACjBnJ,KAAKoJ,mBAAoB,GAGzBC,EAAqB,WACrB,OAAkC,IAA3BrJ,KAAKoJ,mBAGZE,EAAa1B,EAAM7E,OAAO,CAC1BoF,KAAM,WACFnI,KAAKuJ,QAAU,IAGnBC,KAAM,SAASC,EAAWC,EAAUC,GAChC,IACIC,EAEApC,EACAqC,EACAC,EALA7B,EAAOjI,KAEP+J,SAAoBN,IAAcvD,EAAS,CAACuD,GAAaA,EAIzDO,SAA4BN,IAAazD,EAG7C,GAAIyD,IAAa9G,EAAa,CAC1B,IAAKgH,KAAOH,EACRxB,EAAKuB,KAAKI,EAAKH,EAAUG,IAE7B,OAAO3B,EAGX,IAAK2B,EAAM,EAAGpC,EAASuC,EAAWvC,OAAQoC,EAAMpC,EAAQoC,IACpDH,EAAYM,EAAWH,IAEvBE,EAAUE,EAAqBN,EAAWA,EAASD,MAG3CE,IACAE,EAAWC,EACXA,EAAU,WACN7B,EAAKgC,OAAOR,EAAWK,GACvBD,EAASzB,MAAMH,EAAMZ,YAEzByC,EAAQD,SAAWA,IAEd5B,EAAKsB,QAAQE,GAAaxB,EAAKsB,QAAQE,IAAc,IACvD9H,KAAKmI,IAIpB,OAAO7B,GAGX0B,IAAK,SAASI,EAAYL,GACtB,OAAO1J,KAAKwJ,KAAKO,EAAYL,GAAU,IAG3CQ,MAAO,SAAST,EAAWC,GACvB,IACIE,EAEApC,EACAsC,EAJA7B,EAAOjI,KAEP+J,SAAoBN,IAAcvD,EAAS,CAACuD,GAAaA,EAGzDO,SAA4BN,IAAazD,EAG7C,IAAK2D,EAAM,EAAGpC,EAASuC,EAAWvC,OAAQoC,EAAMpC,EAAQoC,IACpDH,EAAYM,EAAWH,IAEvBE,EAAUE,EAAqBN,EAAWA,EAASD,MAGtCxB,EAAKsB,QAAQE,GAAaxB,EAAKsB,QAAQE,IAAc,IACvDU,QAAQL,GAIvB,OAAO7B,GAGXmC,QAAS,SAASX,EAAW9E,GACzB,IAEIiF,EACApC,EAHAS,EAAOjI,KACPqK,EAASpC,EAAKsB,QAAQE,GAI1B,GAAIY,EAAQ,CAaR,KAZA1F,EAAIA,GAAK,IAEP2F,OAASrC,EAEXtD,EAAEyE,mBAAoB,EAEtBzE,EAAEwE,eAAiBA,EAEnBxE,EAAE0E,mBAAqBA,EAIlBO,EAAM,EAAGpC,GAFd6C,EAASA,EAAOzD,SAEcY,OAAQoC,EAAMpC,EAAQoC,IAChDS,EAAOT,GAAKW,KAAKtC,EAAMtD,GAG3B,OAA+B,IAAxBA,EAAEyE,kBAGb,OAAO,GAGXa,OAAQ,SAASR,EAAWK,GACxB,IAEIF,EAFA3B,EAAOjI,KACPqK,EAASpC,EAAKsB,QAAQE,GAG1B,GAAIA,IAAc7G,EACdqF,EAAKsB,QAAU,QACZ,GAAIc,EACP,GAAIP,EACA,IAAKF,EAAMS,EAAO7C,OAAS,EAAGoC,GAAO,EAAGA,IAChCS,EAAOT,KAASE,GAAWO,EAAOT,GAAKC,WAAaC,GACpDO,EAAOG,OAAOZ,EAAK,QAI3B3B,EAAKsB,QAAQE,GAAa,GAIlC,OAAOxB,KAKd,SAASwC,EAAYC,EAAMC,GACvB,GAAIA,EACA,MAAO,IACHD,EAAKE,MAAM,KAAKC,KAAK,OAChBD,MAAM,OAAOC,KAAK,WAClBpI,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OAAS,IAEjC,IAAIyH,EAAQQ,EAAKI,OAAO,GACpBC,EAAOL,EAAKM,UAAU,GAE1B,MAAc,MAAVd,EACO,KAAOa,EAAO,KACJ,MAAVb,EACA,qBAAuBa,EAAO,KAE9B,IAAML,EAAO,kBAKjC,IAAIO,EAAqB,OACrBC,EAAe,iBACfC,EAAqB,QACrBC,EAAc,aACdC,EAAqB,OACrBC,EAAc,aACdC,EAAQ,CAAC,GAAI,IAAK,KAAM,MAAO,QAkEvC,SAASC,EAAIC,EAAQC,EAAQC,GAKzB,OAFAA,GADAD,EAASA,GAAU,IADnBD,GAAkB,IAEIjE,QAGX+D,EAAMG,GAAQV,UAAU,EAAGW,GAAOF,EAGtCA,EAy4CP,SAASG,GAAWC,EAASC,GACzB,IACIC,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aACpBC,EAASN,EAAQM,SACjBC,EAAUP,EAAQQ,QAAQ,0BAC1BC,EAAUT,EAAQU,GAAG,YACrBC,EAAeL,EAAO,GAAGM,MACzBC,EAAgBb,EAAQ,GAAGY,MAAME,OAEjCP,EAAQG,GAAG,YACXH,EAAQQ,IAAI,CACRC,QAAS,GACTC,SAAU,KAILtJ,EAAcuJ,KAAKP,EAAaQ,QAAUxJ,EAAcuJ,KAAKP,EAAaG,UAG9EL,GACDT,EAAQoB,IAAId,GAAQe,OAExBf,EAAOS,IAAI,QAAS,IACpBT,EAAOS,IAAI,CACPI,MAAOlB,EAAWC,EAAWF,GAAW,EAAIE,EAAWF,KAGrC,SAAlBa,EACAb,EAAQe,IAAI,CAAED,OAAQV,EAAYE,KAElCA,EAAOS,IAAI,CACPD,OAAQV,EAAYJ,KAIvBS,GACDT,EAAQsB,QAKpB,SAAS3E,GAAW4E,GAChB,IAAIhG,EAAcC,UAEdE,EAAI,EACJC,EAASH,UAAUG,OAEvB,IAAKD,EAAI,EAAGA,EAAIC,EAAQD,IACpB8F,GAAcD,EAAahG,EAAYG,IAG3C,OAAO6F,EAGX,SAASC,GAAcD,EAAaE,GAChC,IAIIC,EACAC,EACAC,EACAC,EACAC,EARAC,EAAkBjN,EAAMkN,KAAKD,gBAC7BE,EAAsBnN,EAAMkN,KAAKC,oBACjCC,EAAapN,EAAMkN,KAAKE,WACxBC,EAAyBrN,EAAMkN,KAAKG,uBAOxC,IAAKT,KAAYD,IAKTI,GAHJD,SADAD,EAAYF,EAAOC,OAGFnH,GAAwB,OAAdoH,EACZA,EAAUlF,YAEV,OAIXoF,IAAaxK,OAASwK,IAAaE,GAAmBF,IAAaI,GACnEJ,IAAaK,GAAcL,IAAaM,GAA0BN,IAAaO,QAC7EtN,EAAMuI,WAAWpI,EAAOoN,cAAgBR,IAAaQ,aAAkBV,aAAqBW,YAevFV,IAAalH,IACpB6G,EAAYG,GAAYC,GAdpBA,aAAqBY,KACrBhB,EAAYG,GAAY,IAAIa,KAAKZ,EAAUvE,WACpCC,EAAWsE,EAAUrG,OAC5BiG,EAAYG,GAAYC,EAAUrG,SAElCwG,EAAWP,EAAYG,GAEnBH,EAAYG,UADL,IAAenH,GACEuH,GAEA,GAE5BN,GAAcD,EAAYG,GAAWC,IAOjD,OAAOJ,EAGX,SAASiB,GAAOC,EAAOC,EAAKC,GACxB,IAAK,IAAIC,KAAMF,EACX,GAAIA,EAAIG,eAAeD,IAAOF,EAAIE,GAAI1B,KAAKuB,GACvC,OAAOG,EAGf,OAAOD,IAAS5L,EAAc4L,EAAOF,EASzC,SAASK,GAAYC,GACjB,OAAOA,EAAInM,QAAQ,WAAW,SAASoM,EAAUC,GAC7C,OAAOA,EAAGC,iBAIlB,SAASC,GAAkBnD,EAASoD,GAChC,IAAiBC,EAAbC,EAAS,GAwBb,OAtBIC,SAASC,aAAeD,SAASC,YAAYC,kBAC7CJ,EAAgBE,SAASC,YAAYC,iBAAiBzD,EAAS,IAE3DoD,GACAtM,EAAEK,KAAKiM,GAAY,SAASrF,EAAKlB,GAC7ByG,EAAOzG,GAASwG,EAAcK,iBAAiB7G,QAIvDwG,EAAgBrD,EAAQ2D,aAEpBP,GACAtM,EAAEK,KAAKiM,GAAY,SAASrF,EAAKlB,GAC7ByG,EAAOzG,GAASwG,EAAcP,GAAYjG,QAKjD/H,EAAM8O,KAAKN,KACZA,EAASD,GAGNC,EAtmDXtM,EAAW,CACP6M,UAAW,OACXC,cAAc,EACdC,OAAQ,SAASC,EAAUhC,GACvB,IAAIjE,EACApC,EACAsI,EAAO,GAEX,IAAKlG,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9CkG,GAAQD,EAAShC,EAAKjE,IAG1B,OAAOkG,GAEXC,QAAS,SAASF,EAAU3I,GACxB,IAKIa,EACAiI,EACApG,EAPAqG,EAAWlN,EAAO,GAAI/C,KAAMkH,GAC5BwI,EAAYO,EAASP,UACrBQ,EAAeR,EAAUS,MAAMlF,GAAoB,GACnD0E,EAAeM,EAASN,aACxBS,EAAe,yDAKnB,GAAIlH,EAAW2G,GACX,OAAOA,EAcX,IAXAO,GAAgBT,EAAe,QAAUD,EAAY,KAAO,GAE5DU,GAAgB,gBAEhBJ,EAAQH,EACHpN,QAAQ0I,EAAoB,aAC5B1I,QAAQyI,EAAc,2BACtBzI,QAAQ2I,EAAa,KACrB3I,QAAQ4I,EAAoB,aAC5BT,MAAM,KAENhB,EAAM,EAAGA,EAAMoG,EAAMxI,OAAQoC,IAC9BwG,GAAgB3F,EAAYuF,EAAMpG,GAAMA,EAAM,GAAM,GAGxDwG,GAAgBT,EAAe,KAAO,IAItCS,GAFAA,GAAgB,wBAEY3N,QAAQ6I,EAAa,KAEjD,IAII,OAFAvD,EAAK,IAAIsI,SAASH,EAAcE,IAC7BE,WAAajN,KAAKkN,MAAMP,EAAMxI,OAAS,GACnCO,EACT,MAAOpD,GACL,IAAIhE,EAAM6P,eAGN,MAAM,IAAIC,MAAM9P,EAAM+P,OAAO,8CAA+Cb,EAAUO,IAFtFtP,EAAO6P,QAAQC,KAAM,qBAAuBf,EAAW,qBAAuBO,EAAe,QAqBjH,WACI,IACIS,EACAC,EAUAC,EAZAC,EAAY,2HAGZC,EAAO,CACH,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAM,MACN,KAAM,QAGVC,EAAW,GAAGA,SAsBlB,SAASC,EAAMC,GAEX,OADAJ,EAAUK,UAAY,EACfL,EAAUjE,KAAKqE,GAAU,IAAOA,EAAO3O,QAAQuO,GAAW,SAAS9L,GACtE,IAAIR,EAAIuM,EAAK/L,GACb,cAAcR,IAAMwB,EAASxB,EACzB,OAAS,OAASQ,EAAEoM,WAAW,GAAGJ,SAAS,KAAKtK,OAAO,MAC1D,IAAO,IAAOwK,EAAS,IAGhC,SAASxC,EAAI2C,EAAKC,GACd,IAAIjK,EACAzC,EACA2M,EACAjK,EAEAkK,EAEAhM,EAHAiM,EAAOd,EAEPnI,EAAQ8I,EAAOD,GAYnB,GATI7I,UAAgBA,IAAUtC,UAAiBsC,EAAMkJ,SAAW3L,IAC5DyC,EAAQA,EAAMkJ,OAAOL,WAGdR,IAAQ9K,IACfyC,EAAQqI,EAAIxG,KAAKiH,EAAQD,EAAK7I,KAGlChD,SAAcgD,KACDxC,EACT,OAAOiL,EAAMzI,GACV,GAAIhD,IAASS,EAChB,OAAO0L,SAASnJ,GAASoJ,OAAOpJ,GAASrC,EACtC,GAAIX,IAASY,GAAWZ,IAASW,EACpC,OAAOyL,OAAOpJ,GACX,GAAIhD,IAASU,EAAQ,CACxB,IAAKsC,EACD,OAAOrC,EAIX,GAFAwK,GAAOC,EACPY,EAAU,GACoB,mBAA1BR,EAAS9I,MAAMM,GAA6B,CAE5C,IADAlB,EAASkB,EAAMlB,OACVD,EAAI,EAAGA,EAAIC,EAAQD,IACpBmK,EAAQnK,GAAKqH,EAAIrH,EAAGmB,IAAUrC,EAMlC,OAJAoL,EAAuB,IAAnBC,EAAQlK,OAAe,KAAOqJ,EAC9B,MAAQA,EAAMa,EAAQ7G,KAAK,MAAQgG,GAAO,KAAOc,EAAO,IACxD,IAAMD,EAAQ7G,KAAK,KAAO,IAC9BgG,EAAMc,EACCF,EAEX,GAAIV,UAAcA,IAAQ3K,EAEtB,IADAoB,EAASuJ,EAAIvJ,OACRD,EAAI,EAAGA,EAAIC,EAAQD,WACTwJ,EAAIxJ,KAAOrB,IAElBuL,EAAI7C,EADJ9J,EAAIiM,EAAIxJ,GACGmB,KAEPgJ,EAAQ/P,KAAKwP,EAAMrM,IAAM+L,EAAM,KAAO,KAAOY,QAKzD,IAAK3M,KAAK4D,EACFjI,OAAOiO,eAAenE,KAAK7B,EAAO5D,KAClC2M,EAAI7C,EAAI9J,EAAG4D,KAEPgJ,EAAQ/P,KAAKwP,EAAMrM,IAAM+L,EAAM,KAAO,KAAOY,GAU7D,OAJAA,EAAuB,IAAnBC,EAAQlK,OAAe,KAAOqJ,EAC9B,MAAQA,EAAMa,EAAQ7G,KAAK,MAAQgG,GAAO,KAAOc,EAAO,IACxD,IAAMD,EAAQ7G,KAAK,KAAO,IAC9BgG,EAAMc,EACCF,UAhGJrD,KAAK/F,UAAUuJ,SAAW3L,IAEjCmI,KAAK/F,UAAUuJ,OAAS,WACpB,IAAI3J,EAAOjI,KAEX,OAAO6R,SAAS5J,EAAK8J,WACjBvG,EAAIvD,EAAK+J,iBAAkB,GAAK,IAChCxG,EAAIvD,EAAKgK,cAAgB,GAAK,IAC9BzG,EAAIvD,EAAKiK,cAAgB,IACzB1G,EAAIvD,EAAKkK,eAAiB,IAC1B3G,EAAIvD,EAAKmK,iBAAmB,IAC5B5G,EAAIvD,EAAKoK,iBAAmB,IAAM,MAG1CP,OAAOzJ,UAAUuJ,OAASU,OAAOjK,UAAUuJ,OAASW,QAAQlK,UAAUuJ,OAAS,WAC3E,OAAO5R,KAAK+R,mBAqFTzO,EAAKkP,YAAcvM,IAC1B3C,EAAKkP,UAAY,SAAS9J,EAAO+J,EAAUC,GACvC,IAAInL,EAIJ,GAHAsJ,EAAM,GACNC,EAAS,UAEE4B,IAAUvM,EACjB,IAAKoB,EAAI,EAAGA,EAAImL,EAAOnL,GAAK,EACxBuJ,GAAU,gBAGA4B,IAAUxM,IACxB4K,EAAS4B,GAIb,GADA3B,EAAM0B,EACFA,UAAmBA,IAAaxM,WAAoBwM,IAAarM,UAAiBqM,EAASjL,SAAWrB,GACtG,MAAM,IAAIsK,MAAM,kBAGpB,OAAO7B,EAAI,GAAI,CAAE,GAAIlG,MAzIjC,GA+IA,WACI,IAAIiK,EAAmB,qGACnBC,EAAuB,oBACvBC,EAAgB,uCAChBC,EAAc,MACdC,EAAQ,GACRC,EAAQ,IAERC,EAAQ,IACRC,EAAO,IAEPC,EAAK,QACLC,EAAiB,GAAGlC,SAoEvB,SAASmC,EAAYC,GAClB,GAAIA,EAAS,CACT,GAAIA,EAAQC,aACR,OAAOD,EAGX,UAAWA,IAAYpN,EAAQ,CAC3B,IAAIpD,EAAWnC,EAAMmC,SACrB,OAAOA,EAASwQ,IAAYxQ,EAASwQ,EAAQ1I,MAAM,KAAK,KAAO,KAGnE,OAAO,KAGX,OAAO,KAGX,SAAS4I,EAAWF,GAKhB,OAJIA,IACAA,EAAUD,EAAYC,IAGnBA,GAAW3S,EAAMmC,SAAS2Q,QAvFrC9S,EAAMmC,SAAWnC,EAAMmC,UAAY,GACnCnC,EAAMmC,SAAS,SAAW,CACtBV,KAAM+Q,EACNI,aAAc,CACVG,QAAS,CAAC,MACVC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZC,QAAS,CACLH,QAAS,CAAC,OAAQ,OAClBC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZE,OAAQ,KAEZC,SAAU,CACN3R,KAAM,YACN4R,KAAM,MACNN,QAAS,CAAC,OAAQ,MAClBC,SAAU,EACV,IAAK,IACL,IAAK,IACLC,UAAW,CAAC,GACZE,OAAQ,MAGhBG,UAAW,CACPC,SAAU,CACNC,KAAM,CACFC,MAAO,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC1EC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDC,WAAY,CAAE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEtDC,OAAQ,CACJH,MAAO,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACtHC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAE7FG,GAAI,CAAE,KAAM,KAAM,MAClBC,GAAI,CAAE,KAAM,KAAM,MAClBC,SAAU,CACNlQ,EAAG,WACHmQ,EAAG,sBACHC,EAAG,iCACHC,EAAG,mBACH3Q,EAAG,sBACHc,EAAG,UACHV,EAAG,UACHW,EAAG,8BACHE,EAAG,UACH2P,EAAG,aACHC,EAAG,iCACH5Q,EAAG,aACH6Q,EAAG,cAEP,IAAK,IACL,IAAK,IACLC,SAAU,EACVC,gBAAiB,QA+B7BvU,EAAM2S,QAAU,SAAS6B,GACrB,IAA+B7B,EAA3BxQ,EAAWnC,EAAMmC,SAErB,GAAIqS,IAAgBvS,EAKhB,OAAOE,EAAS2Q,SAJhBH,EAAUD,EAAY8B,IAAgBrS,EAASqQ,IACvCiC,SAAW9B,EAAQW,UAAUC,SACrCpR,EAAS2Q,QAAUH,GAM3B3S,EAAM0S,YAAcA,EACpB1S,EAAM6S,WAAaA,EAGnB7S,EAAM2S,QAAQH,GAuad,IAAIkC,EAAe,SAAS5J,EAAQ6J,EAAO3J,EAAK4H,GAC5C,IAGIgC,EAASC,EACT5L,EAAKoG,EAAOtH,EACZ+M,EALAC,EAAejK,EAAOkK,QAAQpC,EAAaP,MAC3C4C,EAAarC,EAAaK,UAAUhN,QACpCgN,EAAYgC,EAAWC,QAU3B,GALAlK,GAAwB,IAAlB+J,EAAsBA,EAAe/J,EAAM,GAGjD6J,GADAD,EAAU9J,EAAOT,UAAUsK,EAAO3J,IACVnE,SAEHoM,EAAW,CAI5B,IAHAhK,EAAM4L,EACNxF,EAAQ,GAEDpG,GAAO,GASV,IARAlB,EAAQ6M,EAAQvK,UAAUpB,EAAMgK,EAAWhK,KAEvCoG,EAAMrO,KAAK+G,GAEfkB,GAAOgK,EAIW,KAFlBA,GADA6B,EAAeG,EAAWC,WACGjT,EAAc6S,EAAe7B,GAErC,CACbhK,EAAM,GACNoG,EAAMrO,KAAK4T,EAAQvK,UAAU,EAAGpB,IAEpC,MAIR2L,EAAUvF,EAAM8F,UAAUjL,KAAK0I,EA3jB3B,MA4jBJ9H,EAASA,EAAOT,UAAU,EAAGsK,GAASC,EAAU9J,EAAOT,UAAUW,GAGrE,OAAOF,GAGPsK,EAAQ,SAASrN,EAAOsN,EAAWC,GAanC,OAZAD,EAAYA,GAAa,EAEzBtN,EAAQA,EAAMwI,WAAWtG,MAAM,KAC/BlC,EAAQrF,KAAK0S,QAAQrN,EAAM,GAAK,KAAOA,EAAM,IAAOA,EAAM,GAAKsN,EAAaA,KAExEC,IACAvN,GAASA,IAIbA,KADAA,EAAQA,EAAMwI,WAAWtG,MAAM,MACf,GAAK,KAAOlC,EAAM,IAAOA,EAAM,GAAKsN,GAAcA,KAErDE,QAAQ7S,KAAK8S,IAAIH,EAAW,MAGzC9E,EAAW,SAASxI,EAAO0N,EAAK9C,GAChC,GAAI8C,EAAK,CACL,GAAmC,kBAA/BhD,EAAe7I,KAAK7B,GACpB,OAjeZ,SAAoB2N,EAAM3F,EAAQ4C,GAG9B,IAAI8B,GAFJ9B,EAAUE,EAAWF,IAEEW,UAAUC,SAC7BC,EAAOiB,EAASjB,KAChBI,EAASa,EAASb,OAItB,OAFA7D,EAASA,EAAOgD,SAAW0B,EAASV,SAAShE,IAAWA,GAE1CjO,QAAQkQ,GAAkB,SAASxC,GAC7C,IAAImG,EACAC,EACAC,EAmEJ,MAjEc,MAAVrG,EACAoG,EAASF,EAAKI,UACG,OAAVtG,EACPoG,EAAS/K,EAAI6K,EAAKI,WACD,QAAVtG,EACPoG,EAASpC,EAAKE,UAAUgC,EAAKK,UACZ,SAAVvG,GAA8B,SAAVA,EAC3BoG,EAASpC,EAAKC,MAAMiC,EAAKK,UACR,MAAVvG,EACPoG,EAASF,EAAKM,WAAa,EACV,OAAVxG,EACPoG,EAAS/K,EAAI6K,EAAKM,WAAa,GACd,QAAVxG,EACPoG,EAAShC,EAAOF,UAAUgC,EAAKM,YACd,SAAVxG,EACPoG,EAAShC,EAAOH,MAAMiC,EAAKM,YACV,OAAVxG,EACPoG,EAAS/K,EAAI6K,EAAKO,cAAgB,KACjB,SAAVzG,EACPoG,EAAS/K,EAAI6K,EAAKO,cAAe,GAChB,MAAVzG,EACPoG,EAASF,EAAKQ,WAAa,IAAM,GAChB,OAAV1G,EACPoG,EAAS/K,EAAI6K,EAAKQ,WAAa,IAAM,IACpB,MAAV1G,EACPoG,EAASF,EAAKQ,WACG,OAAV1G,EACPoG,EAAS/K,EAAI6K,EAAKQ,YACD,MAAV1G,EACPoG,EAASF,EAAKS,aACG,OAAV3G,EACPoG,EAAS/K,EAAI6K,EAAKS,cACD,MAAV3G,EACPoG,EAASF,EAAKU,aACG,OAAV5G,EACPoG,EAAS/K,EAAI6K,EAAKU,cACD,MAAV5G,EACPoG,EAASnT,EAAKmN,MAAM8F,EAAKW,kBAAoB,KAC5B,OAAV7G,IACPoG,EAASF,EAAKW,mBACD,KACTT,EAASnT,EAAKmN,MAAMgG,EAAS,KAEjCA,EAAS/K,EAAI+K,IACI,QAAVpG,EACPoG,EAAS/K,EAAI6K,EAAKW,kBAAmB,GACpB,OAAV7G,GAA4B,OAAVA,EACzBoG,EAASF,EAAKQ,WAAa,GAAKzB,EAASZ,GAAG,GAAKY,EAASX,GAAG,GAC5C,QAAVtE,GAEPqG,GADAF,EAAUD,EAAKY,qBACE,EAEjBV,EAASnT,EAAK8T,IAAIZ,EAAU,IAAIpF,WAAWtG,MAAM,KAAK,GACtD0L,EAAUlT,EAAK8T,IAAIZ,GAAqB,GAATC,EAE/BA,GAAUC,EAAO,IAAM,KAAOhL,EAAI+K,GAClCA,GAAU,IAAM/K,EAAI8K,IACH,OAAVnG,GAA4B,MAAVA,IAEzBqG,GADAD,EAASF,EAAKY,oBAAsB,IACpB,EAEhBV,EAASnT,EAAK8T,IAAIX,GAAQrF,WAAWtG,MAAM,KAAK,GAChD2L,GAAUC,EAAO,IAAM,MAAkB,OAAVrG,EAAiB3E,EAAI+K,GAAUA,IAG3DA,IAAW3T,EAAc2T,EAASpG,EAAMvJ,MAAM,EAAGuJ,EAAM3I,OAAS,MAkZ5D2P,CAAWzO,EAAO0N,EAAK9C,GAC3B,UAAW5K,IAAUvC,EACxB,OA/YZ,SAAsBsF,EAAQiF,EAAQ4C,GAGlC,IAKIQ,EACAsD,EAAYC,EACZC,EACAC,EAEAhC,EACAiC,EACAhC,EAIA5L,EACApC,EACAiQ,EACAC,EACAC,EACAjC,EACAkC,EACAC,EACAC,EAASC,EAETC,EAGArM,EA7BA4H,GAFJD,EAAUE,EAAWF,IAEMC,aACvB0E,EAAU1E,EAAaP,KACvBgD,EAAYzC,EAAaI,SACzBD,EAAUH,EAAaG,QAAQ,GAC/BwE,EAAW,GAKXjC,EAAWxK,EAAS,EAKpB0M,EAAcpF,EACdrK,EAAQqK,EAaRuC,GAAS,EAIb,GAAI7J,IAAW7I,EACX,OAAOmQ,EAGX,IAAKlB,SAASpG,GACV,OAAOA,EAIX,IAAKiF,EACD,OAAO4C,EAAQlR,KAAKoF,OAASiE,EAAO2M,iBAAmB3M,EAAOyF,WAMlE,GAHAqG,EAAqB3E,EAAqByF,KAAK3H,GAGvB,CAsBpB,GAlBA2G,EAAuB,OAHvB3G,EAAS6G,EAAmB,GAAGe,iBAE/BlB,EAAwB,MAAX1G,IAGK2G,KAGdY,GADA1E,EAAe6D,EAAa7D,EAAaQ,SAAWR,EAAaM,SAC1Cb,KACvBgD,EAAYzC,EAAaI,SACzBG,EAASP,EAAaO,OACtBJ,EAAUH,EAAaG,QAAQuC,EAAW,EAAI,KAGlDqB,EAAkBC,EAAmB,MAGjCvB,GAAasB,GAIF,MAAX5G,EAGA,OAFU4G,EAAkB7L,EAAO8M,cAAcvC,GAAavK,EAAO8M,iBAE1D9V,QAAQuQ,EAAOO,EAAaP,MA0B3C,GAtBIqE,IACA5L,GAAU,KAIdwK,GADAxK,EAASsK,EAAMtK,EAAQuK,IACH,EAGpBT,GAFA9J,EAASA,EAAOb,MAAMoI,IAEL,GACjBwE,EAAW/L,EAAO,GAGdwK,IACAV,EAAUA,EAAQvK,UAAU,IAGhCtC,EAAQ2M,EAAaE,EAAS,EAAGA,EAAQ/N,OAAQ+L,GAE7CiE,IACA9O,GAASuP,EAAUT,GAGR,MAAX9G,IAAmBuF,EACnB,OAAOvN,EAKX,IAFA+C,EAASsH,EAEJnJ,EAAM,EAAGpC,EAASkM,EAAQlM,OAAQoC,EAAMpC,EAAQoC,IAI7C6B,GADO,OAFXgM,EAAK/D,EAAQ5I,OAAOlB,IAGNlB,EACI,MAAP+O,GAAqB,MAAPA,EACX3D,EAEA2D,EAIlB,OAAOhM,EAmBX,IAZIiF,EAAOiF,QAAQ,MAAQ,GAAKjF,EAAOiF,QAAQ,MAAS,GAAKjF,EAAOiF,QAAQ,OAAS,KACjFjF,EAASA,EAAOjO,QAAQoQ,GAAe,SAAS1C,GAC5C,IAAIqI,EAAYrI,EAAMrF,OAAO,GAAGrI,QAAQ,KAAM,IAC1CgW,EAAUtI,EAAMvJ,MAAM,GAAGnE,QAAQ+V,EAAW,IAIhD,OAFAN,EAASvW,KAAK8W,GAzUR,SA+Ud/H,EAASA,EAAO9F,MAAM,KAClBqL,GAAYvF,EAAO,GAEnBA,EAASA,EAAO,GAChBiH,GAAoB,OACjB,GAAe,IAAXlM,GAAgBiF,EAAO,IAG9B,IAA8B,IAD9BA,EAASA,EAAO,IACLiF,QAAQ1C,KAAyC,GAAzBvC,EAAOiF,QAAQzC,GAE9C,OAAOxC,OAGXA,EAASA,EAAO,GAmCpB,IA7BA2G,GAA6B,GAHd3G,EAAOiF,QAAQ,QAQ1BlK,GAAU,MAJd2L,GAA+B,IAH/BY,EAAgBtH,EAAOiF,QAAQ,QAUiB,OAA9BjF,EAAOsH,EAAgB,KACrCtH,EAASA,EAAO9F,MAAM,MAAMC,KAAK,IACjCuM,GAAa,IAGbA,GAAcC,KAGdY,GADA1E,EAAe6D,EAAa7D,EAAaQ,SAAWR,EAAaM,SAC1Cb,KACvBgD,EAAYzC,EAAaI,SACzBG,EAASP,EAAaO,SAG1B4D,EAAWhH,EAAOiF,QA1XV,MA0X4B,KAEhCjF,EAASA,EAAOjO,QAAQqQ,EAAaC,IAGzC2C,EAAehF,EAAOiF,QAAQ3C,GAC9BxL,EAASkJ,EAAOlJ,QAEK,GAAjBkO,EAqBA,GAdA8B,GAJIA,GAFJA,EAAW/L,EAAOyF,WAAWtG,MAAM,MACtB,GACEmL,EAAMtK,EAAQpI,KAAK6T,IAAIM,EAAS,KAEhCA,EAAS,IAEJ5M,MAAMoI,GAAO,IAAMD,EAGvC+E,GAFAD,EAAYnH,EAAOgI,YAAYxF,GAAQwC,IAEhB,EACvBqC,GAFAH,EAAalH,EAAOgI,YAAYzF,GAASyC,IAEhB,EACzB9L,EAAM4N,EAAShQ,OAEVsQ,GAAYC,IAEbvQ,GADAkJ,EAASA,EAAO1F,UAAU,EAAG0K,GAAgBhF,EAAO1F,UAAU0K,EAAe,IAC7DlO,OAChBkO,GAAgB,EAChB9L,EAAM,GAGNkO,GAAWD,EAAYD,EACvBhO,EAAMiO,OACH,GAAID,EAAaC,EACpB,GAAIE,GAAYnO,EAAMgO,EAAY,CAG9B,IAFA,IAAIe,EAAU5C,EAAMtK,EAAQmM,EAAY3B,GAEjC0C,EAAQ7N,OAAO6N,EAAQnR,OAAS,KAAO0L,GAAQ0E,EAAa,GAAKA,EAAaC,GACjFD,IAEAe,EAAU5C,EAAMtK,EAAQmM,EAAY3B,GAGxCrM,EAAMgO,OACCE,GAAWlO,EAAMiO,IACxBjO,EAAMiO,GAmClB,GA9BApM,EAASsK,EAAMtK,EAAQ7B,EAAKqM,GAE5B2B,EAAalH,EAAOiF,QAAQ1C,GACX4E,EAAYnH,EAAOiF,QAAQzC,GAIxCoC,GADe,GAAfsC,IAAkC,GAAdC,EACZA,GACc,GAAfD,IAAkC,GAAdC,EACnBD,EAEAA,EAAaC,EAAYA,EAAYD,EAGjDA,EAAalH,EAAOgI,YAAYzF,GAChC4E,EAAYnH,EAAOgI,YAAYxF,GAI3BvH,GADe,GAAfiM,IAAkC,GAAdC,EACdA,GACgB,GAAfD,IAAkC,GAAdC,GAGrBD,EAAaC,EAFbD,EAEsCC,EAG5CvC,GAAS9N,IACTmE,EAAM2J,IAGI,GAAVA,EAAa,CAkBb,IAhBAC,GADA7M,EAAQ+C,EAAOyF,WAAWtG,MAAMoI,IAChB,GAChBwE,EAAW9O,EAAM,IAAMqK,EAEvByC,EAAgBD,EAAQ/N,OACPgQ,EAAShQ,OAEtByO,IAAuB,EAAVxK,GAAgB,IAC7BwK,GAAW,GAGfxK,EAASiF,EAAO1F,UAAU,EAAGsK,GAEzBW,IAAa0B,IACblM,GAAU,KAGT7B,EAAM0L,EAAO1L,EAAMpC,EAAQoC,IAAO,CAGnC,GAFA6N,EAAK/G,EAAO5F,OAAOlB,IAEE,GAAjB8L,GACA,GAAI/J,EAAM/B,EAAM4L,EAAe,CAC3B/J,GAAU8J,EACV,YAYJ,IATkB,GAAdsC,GAAmBA,EAAYjO,IAC/BuO,EAAcpF,GAGb2C,EAAe9L,GAAQ4L,GAAiBE,EAAe9L,GAAO,IAC/D6B,GAAU8J,EACV3L,EAAM8L,GAGNA,IAAiB9L,EAAK,CACtB6B,IAAW+L,EAAWS,EAAUlF,GAASyE,EACzC5N,GAAO+B,EAAM+J,EAAe,EAC5B,SAIJ+B,IAAOvE,GACPzH,GAAUgM,EACVU,EAAcV,GACPA,IAAOxE,IACdxH,GAAU0M,GAalB,GATIT,IACAjM,EAAS4J,EAAa5J,EAAQ6J,GAASW,IAAa0B,EAAoB,EAAI,GAAItU,KAAKuV,IAAIjN,EAAM6J,EAAgBF,GAAS/B,IAGxH5H,GAAO2J,IACP7J,GAAUiF,EAAO1F,UAAUW,EAAM,IAIjCyL,GAAcC,EAAW,CAEzB,IADA3O,EAAQqK,EACHnJ,EAAM,EAAGpC,EAASiE,EAAOjE,OAAQoC,EAAMpC,EAAQoC,IAEhDlB,GAAiB,OADjB+O,EAAKhM,EAAOX,OAAOlB,KACY,MAAP6N,EAAc3D,EAAS2D,EAEnDhM,EAAS/C,EAKb,GAFAlB,EAAS0Q,EAAS1Q,OAGd,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB6B,EAASA,EAAOhJ,QA9gBd,KA8gBmCyV,EAAStO,IAK1D,OAAO6B,EAiEQoN,CAAanQ,EAAO0N,EAAK9C,GAIxC,OAAO5K,IAAU9F,EAAc8F,EAAQ,IAG3C/H,EAAM+P,OAAS,SAAS0F,GACpB,IAAI0C,EAASzR,UAEb,OAAO+O,EAAI3T,QAAQgB,GAAc,SAAS0M,EAAO4I,EAAOC,GACpD,IAAItQ,EAAQoQ,EAAOG,SAASF,EAAO,IAAM,GAEzC,OAAO7H,EAASxI,EAAOsQ,EAAoBA,EAAkBhO,UAAU,GAAK,QAIpFrK,EAAMuY,eAAiB,SAASxI,GAK5B,MAJ0B,QAAtBA,EAAO9J,MAAM,EAAE,KACf8J,EAASA,EAAO9J,MAAM,EAAG8J,EAAOlJ,OAAS,IAGtCkJ,GAGX/P,EAAMwY,eAAiB,WACnB,IACI,OAAO/J,SAASgK,cAClB,MAAOzU,GACL,OAAOyK,SAASiK,gBAAgBD,gBAIxCzY,EAAM2Y,OAASvD,EACfpV,EAAMqL,YAAc,SAASH,EAAS0N,GAAiB,OAAO5W,EAAEkJ,GAASE,WAAWwN,IAAiB,IAAU,GAC/G5Y,EAAMuL,aAAe,SAASL,EAAS0N,GAAiB,OAAO5W,EAAEkJ,GAASI,YAAYsN,IAAiB,IAAU,GACjH5Y,EAAMuQ,SAAWA,EAloBrB,GAsoBA,WACI,IAAIsI,EAAyB,UACzBC,EAAc,MACdC,EAAiB,mBACjBC,EAAsB,gBACtBC,EAAqB,uBACrBC,EAAa,sBACbC,EAAe,UACfC,EAAmB,CAAE,GAAI,CAAE,IAAK,IAAK,KAAO,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,MACvEC,EAAmB,CACf,CACA,iCACA,8BACA,6BACA,0BACA,2BACA,yBACA,sBACA,qBACA,sBACA,sBACA,uBACG,CACH,mBACA,mBACA,oBACG,CACH,aACA,aACA,WACA,UAGJrW,EAAe,CACX,EAAG,WACH,EAAG,WACH,EAAG,UAEPyP,EAAiB,GAAGlC,SAExB,SAAS+I,EAAWvR,EAAO4M,EAAO3J,GAC9B,QAASjD,GAAS4M,GAAS5M,GAASiD,GAGxC,SAASuO,EAAoBC,GACzB,OAAOA,EAAWrP,OAAO,GAG7B,SAASsP,EAAeC,GACpB,OAAO1X,EAAE2X,IAAID,EAAaH,GAU9B,SAASK,EAAW1M,GAKhB,IAJA,IAAIjE,EAAM,EACNpC,EAASqG,EAAKrG,OACdgT,EAAQ,GAEL5Q,EAAMpC,EAAQoC,IACjB4Q,EAAM5Q,IAAQiE,EAAKjE,GAAO,IAAI0O,cAGlC,OAAOkC,EAGX,SAASC,EAAeC,GACpB,IAAuBnN,EAAnBoN,EAAe,GAEnB,IAAKpN,KAAYmN,EACbC,EAAapN,GAAYgN,EAAWG,EAAUnN,IAGlD,OAAOoN,EAGX,SAASC,EAAWlS,EAAOgI,EAAQ4C,EAASuH,GACxC,IAAKnS,EACD,OAAO,KAGX,IA0EI+O,EAAIqD,EAAOtT,EAAQkM,EACnBqH,EAAQC,EAAKxZ,EACbyZ,EAAeC,EACfC,EAAaC,EACJjL,EA9ETkL,EAAY,SAASlL,GAEjB,IADA,IAAI5I,EAAI,EACDmJ,EAAO9G,KAASuG,GACnB5I,IACAqC,IAKJ,OAHIrC,EAAI,IACJqC,GAAO,GAEJrC,GAEX+T,EAAY,SAAS7L,GACjB,IAAI8L,EAAK5X,EAAa8L,IAAS,IAAIxB,OAAO,UAAYwB,EAAO,KACzDU,EAAQzH,EAAM8S,OAAOC,EAAUhM,GAAMU,MAAMoL,GAE/C,OAAIpL,GACAA,EAAQA,EAAM,GACdsL,GAAYtL,EAAM3I,OACXyR,SAAS9I,EAAO,KAEpB,MAEXuL,EAAiB,SAAStH,EAAOuH,GAQ7B,IAPA,IAEIvZ,EAAMwZ,EAGNC,EALAtU,EAAI,EACJC,EAAS4M,EAAM5M,OAEfsU,EAAc,EACdC,EAAW,EAGRxU,EAAIC,EAAQD,IAEfqU,GADAxZ,EAAOgS,EAAM7M,IACKC,OAClBqU,EAAWnT,EAAM8S,OAAOC,EAAUG,GAE9BD,IACAE,EAAWA,EAASvD,eAGpBuD,GAAYzZ,GAAQwZ,EAAaE,IACjCA,EAAcF,EACdG,EAAWxU,GAInB,OAAIuU,GACAL,GAAYK,EACLC,EAAW,GAGf,MAEXC,EAAe,WACX,IAAIzF,GAAS,EAKb,OAJI7N,EAAMoC,OAAO2Q,KAAc/K,EAAO9G,KAClC6R,IACAlF,GAAS,GAENA,GAEXnB,EAAW9B,EAAQW,UAAUC,SAC7B+H,EAAO,KACPxW,EAAQ,KACRyW,EAAM,KACNC,EAAQ,KACR7F,EAAU,KACV8F,EAAU,KACVC,EAAe,KACfzS,EAAM,EACN6R,EAAW,EACXhD,GAAU,EACVpC,EAAO,IAAIjI,KACX8G,EAAkBE,EAASF,iBAAmB,KAC9CoH,EAAcjG,EAAKO,cAoBvB,IAbKlG,IACDA,EAAS,MAIbgD,EAAU0B,EAASV,SAAShE,MAExBA,EAASgD,GAIblM,GADAkJ,EAASA,EAAO9F,MAAM,KACNpD,OAEToC,EAAMpC,EAAQoC,IAGjB,GAFA6N,EAAK/G,EAAO9G,GAER6O,EACW,MAAPhB,EACAgB,GAAU,EAEVuD,SAGJ,GAAW,MAAPvE,EAAY,CAMZ,GALAqD,EAAQO,EAAU,KACbjG,EAASmH,aACVnH,EAASmH,WAAa9B,EAAerF,EAASjB,OAGtC,OAAR+H,GAAgBpB,EAAQ,EACxB,SAKJ,GAAY,QAFZoB,EAAMpB,EAAQ,EAAIQ,EAAU,GAAKI,EAAetG,EAASmH,WAAoB,GAATzB,EAAa,YAAc,UAAU,KAErFb,EAAWiC,EAAK,EAAG,IACnC,OAAO,UAER,GAAW,MAAPzE,EAAY,CAOnB,GANAqD,EAAQO,EAAU,KACbjG,EAASoH,eACVpH,EAASoH,aAAe/B,EAAerF,EAASb,SAItC,QAFd9O,EAAQqV,EAAQ,EAAIQ,EAAU,GAAKI,EAAetG,EAASoH,aAAsB,GAAT1B,EAAa,YAAc,UAAU,KAEvFb,EAAWxU,EAAO,EAAG,IACvC,OAAO,KAEXA,GAAS,OACN,GAAW,MAAPgS,EAAY,CAInB,GAAa,QAFbwE,EAAOX,EADPR,EAAQO,EAAU,OAId,OAAO,KAGE,GAATP,IAC+B,iBAApB5F,IACPA,EAAkBoH,EAAcrD,SAAS/D,EAAiB,MAG9D+G,EAAQK,EAAcA,EAAc,IAAOL,GAChC/G,IACP+G,GAAQ,WAGb,GAAW,MAAPxE,GAMP,GALA4D,EAAU,KAEG,KADbc,EAAQb,EAAU,MAEda,EAAQ,GAEE,OAAVA,GAAkBlC,EAAWkC,EAAO,EAAG,IACvC,OAAO,UAER,GAAW,MAAP1E,GAGP,GAFA4D,EAAU,KAEI,QADdc,EAAQb,EAAU,KACIrB,EAAWkC,EAAO,EAAG,IACvC,OAAO,UAER,GAAW,MAAP1E,GAGP,GAFA4D,EAAU,KAEM,QADhB/E,EAAUgF,EAAU,KACIrB,EAAW3D,EAAS,EAAG,IAC3C,OAAO,UAER,GAAW,MAAPmB,GAGP,GAFA4D,EAAU,KAEM,QADhBe,EAAUd,EAAU,KACIrB,EAAWmC,EAAS,EAAG,IAC3C,OAAO,UAER,GAAW,MAAP3E,GAYP,GAXAqD,EAAQO,EAAU,KAElBlL,EAAQzH,EAAM8S,OAAOC,EAAUX,GAAO3K,MAAMxM,EAAa,IAGpC,QAFrB0Y,EAAef,EAAUR,MAGrBuB,EAAetT,WAAW,KAAOoH,EAAM,GAAI,IAC3CkM,EAAe1b,EAAM2Y,OAAO+C,EAAc,GAC1CA,GAAgB,KAGC,OAAjBA,GAAyBpC,EAAWoC,EAAc,EAAG,KACrD,OAAO,UAGR,GAAW,MAAP5E,GAWP,GAVAqD,EAAQO,EAAU,KAClBJ,EAAgB7F,EAASZ,GACzB0G,EAAgB9F,EAASX,GAEX,IAAVqG,IACAG,EAAgBb,EAAea,GAC/BC,EAAgBd,EAAec,MAGnCH,EAASW,EAAeR,MACRQ,EAAeT,GAC3B,OAAO,UAGV,GAAW,MAAPxD,EAAY,CAIjB,GAHAuD,GAAM,EACNF,EAAQO,EAAU,KAEgB,MAA9B3S,EAAM8S,OAAOC,EAAU,GAAY,CACnCO,IACA,SAMJ,KAHAxa,EAAUkH,EAAM8S,OAAOC,EAAU,GACjBtL,MAAM2K,EAAQ,EAAIlB,EAAqBD,IAGnD,OAAO,KAeX,GAVAwB,GAFA3Z,EAAUA,EAAQ,GAAGoJ,MAAM,MAEL,KACtBwQ,EAAgB5Z,EAAQ,KAEF2Z,EAAY3T,OAAS,IACvCiU,EAAWN,EAAY3T,OAAS,EAChC4T,EAAgBD,EAAYnQ,UAAUyQ,GACtCN,EAAcA,EAAYnQ,UAAU,EAAGyQ,IAIvCxB,EADJkB,EAAclC,SAASkC,EAAa,KACP,GAAI,IAC7B,OAAO,KAGX,GAAIL,EAAQ,IACRM,EAAgB5Z,EAAQ,GAAG,GAAK4Z,EAChCA,EAAgBnC,SAASmC,EAAe,IACpCtS,MAAMsS,IAAkBnB,EAAWmB,GAAgB,GAAI,KACvD,OAAO,UAGZ,GAAW,MAAP3D,EACPgB,GAAU,EACVuD,SACG,IAAKA,IACR,OAAO,KAOnB,OAAInB,IAAW,QAAQ9N,KAAKrE,EAAM8S,OAAOC,IAC9B,MAKE,OAATQ,GAA2B,OAAVxW,GAA0B,OAARyW,IAFnB,OAAVC,GAA8B,OAAZ7F,GAAoB8F,GAAW,OAGvDH,EAAOK,EACP7W,EAAQ4Q,EAAKM,WACbuF,EAAM7F,EAAKI,YAEE,OAATwF,IACAA,EAAOK,GAGC,OAARJ,IACAA,EAAM,IAIVnB,GAAUoB,EAAQ,KAClBA,GAAS,IAGTnB,GACIG,IACAgB,IAAUhB,GAGVC,IACA9E,IAAY8E,GAGhB1S,EAAQ,IAAI0F,KAAKA,KAAK4M,IAAIiB,EAAMxW,EAAOyW,EAAKC,EAAO7F,EAAS8F,EAASC,KAjU7E,SAAmBhG,EAAM8F,GAChBA,GAA6B,KAApB9F,EAAKQ,YACfR,EAAKoG,SAASpG,EAAKQ,WAAa,GAkUhC6F,CADAhU,EAAQ,IAAI0F,KAAK6N,EAAMxW,EAAOyW,EAAKC,EAAO7F,EAAS8F,EAASC,GAC3CF,GAGjBF,EAAO,KACPvT,EAAMiU,YAAYV,GAGlBvT,EAAM+N,YAAcyF,GAAOlB,IAAQpY,EAC5B,KAGJ8F,GA8BX,SAASkU,EAAkBlU,EAAOmU,EAASvJ,EAASuH,GAChD,GAAmC,kBAA/BzH,EAAe7I,KAAK7B,GACpB,OAAOA,EAGX,IAEIlB,EACAsV,EAHAlT,EAAM,EACNyM,EAAO,KAIX,GAAI3N,GAAiC,IAAxBA,EAAMiN,QAAQ,QACvBU,EAAOwD,EAAWxB,KAAK3P,IAanB,OAXA2N,EAAOA,EAAK,GACZyG,EAAWhD,EAAazB,KAAKhC,EAAKrL,UAAU,IAE5CqL,EAAO,IAAIjI,KAAK6K,SAAS5C,EAAM,KAE3ByG,IACAA,EA9ChB,SAAoCC,GAChC,IAAIvG,EAA+B,MAAxBuG,EAAOvB,OAAO,EAAG,IAAc,EAAI,EAK9C,OAHAuB,EAASA,EAAO/R,UAAU,GAGnBwL,GAFuC,GAApCyC,SAAS8D,EAAOvB,OAAO,EAAG,GAAI,IAAYvC,SAAS8D,EAAO/R,UAAU,GAAI,KA0C3DgS,CAA2BF,EAAS,IAC/CzG,EAAO1V,EAAMsc,SAAS7U,MAAMiO,EAAM,GAClCA,EAAO1V,EAAMsc,SAASC,QAAQ7G,EAAM,GAAI,EAAIyG,IAGzCzG,EAaf,IATA/C,EAAU3S,EAAM6S,WAAWF,GAEtBuJ,IACDA,EAjDR,SAA2BvJ,GACvB,IAGI6J,EAAgBC,EAAWxT,EAH3BpC,EAASpE,EAAKwV,IAAImB,EAAiBvS,OAAQwS,EAAiBxS,QAE5DkN,GADWpB,EAAQ8B,UAAY9B,EAAQW,UAAUC,UAC7BQ,SAEpBmI,EAAU,GAEd,IAAKjT,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CAE/B,IADAuT,EAAiBpD,EAAiBnQ,GAC7BwT,EAAY,EAAGA,EAAYD,EAAe3V,OAAQ4V,IACnDP,EAAQlb,KAAK+S,EAASyI,EAAeC,KAEzCP,EAAUA,EAAQQ,OAAOrD,EAAiBpQ,IAG9C,OAAOiT,EAkCOS,CAAkBhK,IAIhC9L,GADAqV,EAAU5Z,EAAQ4Z,GAAWA,EAAU,CAACA,IACvBrV,OAEVoC,EAAMpC,EAAQoC,IAEjB,GADAyM,EAAOuE,EAAWlS,EAAOmU,EAAQjT,GAAM0J,EAASuH,GAE5C,OAAOxE,EAIf,OAAOA,EAGX1V,EAAM4c,UAAY,SAAS7U,EAAOmU,EAASvJ,GACvC,OAAOsJ,EAAkBlU,EAAOmU,EAASvJ,GAAS,IAGtD3S,EAAM6c,eAAiB,SAAS9U,EAAOmU,EAASvJ,GAC5C,OAAOsJ,EAAkBlU,EAAOmU,EAASvJ,GAAS,IAGtD3S,EAAMsY,SAAW,SAASvQ,EAAO4K,GAC7B,IAAIiD,EAAS5V,EAAMoI,WAAWL,EAAO4K,GAIrC,OAHIiD,IACAA,GAAkB,GAEfA,GAGX5V,EAAMoI,WAAa,SAASL,EAAO4K,EAAS5C,GACxC,IAAKhI,GAAmB,IAAVA,EACX,OAAO,KAGV,UAAWA,IAAUvC,EAClB,OAAOuC,EAGVA,EAAQA,EAAMwI,WAGd,IAMIlB,EAAOqH,EANP5L,GAFJ6H,EAAU3S,EAAM6S,WAAWF,IAENC,aACjBM,EAAUpI,EAAOoI,QACjBE,EAAWtI,EAAOsI,SAClBD,EAASC,EAASD,OAClB2J,EAAgB5J,EAAQC,OACxBmC,EAAWvN,EAAMiN,QAAQ,KAI7B,OAAI+D,EAAe3M,KAAKrE,IACpBA,EAAQK,WAAWL,EAAMjG,QAAQgJ,EAAO,KAAM,MAC1C3C,MAAMJ,KACNA,EAAQ,MAELA,GAGPuN,EAAW,EACJ,MAEPA,EAAWA,GAAY,EAGvBvN,EAAMiN,QAAQ7B,IAAW,GAAMpD,GAAUA,EAAO4H,cAAc3C,QAAQ,MAAQ,GAE9E3F,GADAvE,EAASsI,GACML,QAAQ,GAAGjR,QAAQ,IAAKqR,GAAQlJ,MAAM,KACjDlC,EAAMiN,QAAQ3F,EAAM,KAAO,GAAKtH,EAAMiN,QAAQ3F,EAAM,KAAO,IAC3DtH,EAAQA,EAAMjG,QAAQuN,EAAM,GAAI,IAAIvN,QAAQuN,EAAM,GAAI,IACtDiG,GAAW,IAERvN,EAAMiN,QAAQ8H,IAAkB,IACvCpG,GAAY,EACZ5L,EAASoI,EACTC,EAAS2J,GAGb/U,EAAQA,EAAMjG,QAAQ,IAAK,IACbA,QAAQqR,EAAQ,IAChBrR,QAAQ+W,EAAwB,KAChC5O,MAAMa,EAAO,KAAKhJ,QAAQ+W,EAAwB,MAAM3O,KAAK,IAC7DpI,QAAQgX,EAAa,IACrBhX,QAAQgJ,EAAO,KAAM,KAEnC/C,EAAQK,WAAWL,GAEfI,MAAMJ,GACNA,EAAQ,KACDuN,IACPvN,IAAU,GAGVA,GAAS2O,IACT3O,GAAS,KAGNA,IApiBf,GA6zBI,WACInF,EAAQma,WAAa9a,EAErBW,EAAQoa,UAAY,SAASC,GACzB,GAAK9U,MAAMvF,EAAQma,aAAgBE,EAE5B,CACH,IACIrH,EADAsH,EAAMzO,SAAS0O,cAAc,OAWjC,OARAD,EAAIpR,MAAMsR,QAAU,oEACpBF,EAAIG,UAAY,SAChB5O,SAAS6O,KAAKC,YAAYL,GAE1Bta,EAAQma,WAAanH,EAASsH,EAAIM,YAAcN,EAAIO,YAEpDhP,SAAS6O,KAAKI,YAAYR,GAEnBtH,EAbP,OAAOhT,EAAQma,YAiBvBna,EAAQ+a,MAAQ,SAASzS,GACrB,OAAOlJ,EAAEkJ,GAASQ,QAAQ,UAAU7E,OAAS,GAGjD,IAAI+W,EAAQnP,SAAS0O,cAAc,SAGnC,IACIS,EAAMP,UAAY,qBAElBza,EAAQib,gBAAiB,EAC3B,MAAO7Z,GACLpB,EAAQib,gBAAiB,EAG7Bjb,EAAQkb,MAAQ,iBAAkB3d,EAElC,IAAI4d,EAAWtP,SAASiK,gBAAgB5M,MACpCkS,EAAcpb,EAAQob,aAAc,EACpCC,EAAarb,EAAQqb,YAAa,EAClCC,EAAe,gBAAiB/d,EAASqN,YAAY9F,UAAY,GAErE9E,EAAQub,QAAW,oBAAqBhe,GAAU,QAAS,IAAIA,EAAOie,iBAAsB,mBAAoBL,GAAY,kBAAmBA,EAC/Inb,EAAQyb,WAAc,aAAcN,GAAc,mBAAoBA,GAAc,eAAgBA,EAEpG1b,EAAK,CAAE,MAAO,SAAU,IAAK,OAAQ,WACjC,IAAIic,EAASjf,KAAKkR,WACdgO,SAAwBX,EAAM9R,MAAMwS,EAAS,gBAAkB/Y,EAEnE,GAAIgZ,UAAyBX,EAAM9R,MAAMwS,EAAS,eAAiB/Y,EAAQ,CACvE,IAAIiZ,EAAYF,EAAO3G,cAavB,OAXAsG,EAAa,CACThS,IAAmB,MAAbuS,EAAqB,IAAMA,EAAY,IAAM,GACnDF,OAAQA,EACRG,MAAsB,MAAdD,GAAmC,WAAdA,EAA0BA,EAAY,IAGnED,KACAP,EAAcC,GACFQ,MAAQT,EAAYS,MAAQT,EAAYS,MAAQ,gBAAkB,kBAG3E,MAIfb,EAAQ,KAERhb,EAAQqb,WAAaA,EACrBrb,EAAQob,YAAcA,EAEtBpb,EAAQ8b,iBAAmBve,EAAOue,mBAAqBzc,EAAc,EAAI9B,EAAOue,iBAEhF,IACI9b,EAAQ+b,YAAcxe,EAAOiL,YAAcjL,EAAOye,OAASze,EAAOye,OAAOC,WAAa1e,EAAO2e,WAC7Flc,EAAQmc,aAAe5e,EAAOmL,aAAenL,EAAOye,OAASze,EAAOye,OAAOI,YAAc7e,EAAO8e,YAClG,MAAOC,GAELtc,EAAQ+b,YAAcxe,EAAOye,OAAOC,WACpCjc,EAAQmc,aAAe5e,EAAOye,OAAOI,YAGzCpc,EAAQuc,SAAW,SAASC,GACxB,IAAgBC,EAAZC,GAAK,EAAqB9P,EAAQ,GAClC+P,GAAmB,iBAAiBnT,KAAKgT,GACzCI,EAAW,CACPC,GAAI,gDACJC,KAAM,+BACNC,QAAS,qEACTC,OAAQ,2CACRC,KAAM,kCACNC,MAAO,2CACPC,MAAO,gCACPC,WAAY,oDACZC,SAAU,kDACVC,QAAS,gCACTC,MAAO,2CACPC,SAAU,gDACVC,KAAM,8CAEVC,EAAQ,CACJC,IAAK,sBACLZ,QAAS,kBACTK,WAAY,wBACZE,QAAS,UACTT,GAAI,KACJe,KAAM,uBACNV,MAAO,SAEXW,EAAgB,CACZC,OAAQ,uBAEZC,EAAa,CACTC,MAAO,eACPC,QAAS,eACTC,QAAS,kBACTC,aAAc,qBACdC,GAAI,uBACJC,OAAQ,gBACRC,OAAQ,WAGhB,IAAK,IAAIvT,KAAS6R,EACd,GAAIA,EAASzR,eAAeJ,KACxB6B,EAAQ4P,EAAG5P,MAAMgQ,EAAS7R,KACf,CACP,GAAa,WAATA,GAAsB,YAAawT,UAAa,OAAO,GAE3D7B,EAAK,IACF8B,OAASzT,EACZ2R,EAAGoB,OAAShT,GAAOC,EAAO8S,GAAe,GACzCnB,EAAG+B,QAAU3T,GAAO0R,EAAIuB,EAAY,WACpCrB,EAAG7d,KAAOiM,GAAOC,EAAO2S,GACxBhB,EAAGA,EAAG7d,OAAQ,EACd6d,EAAGgC,aAAe9R,EAAM,GACxB8P,EAAGD,cAAgB7P,EAAM,IAAM,KAAK1N,QAAQ,IAAK,KACjDud,EAAeC,EAAGD,aAAavd,QAAQ,IAAK,IAAI+Y,OAAO,EAAG,GAC1DyE,EAAGiC,YAAcjC,EAAGgC,aAAejC,EAAgB,IAAI9c,MAAM,GAAK8c,EAAaxY,OAAS,EAAIwY,EAAaxY,OAAS,IAAIqD,KAAK,KAC3HoV,EAAGkC,eAAiBrhB,EAAOshB,WAAa7b,UAAoBzF,EAAOqhB,UAAY5b,EAC/E0Z,EAAGoC,QAAUvhB,EAAOghB,UAAUQ,YAAc,mBAAqBvV,KAAKjM,EAAOyhB,SAASC,WAAavC,EAAGkC,QAElGlC,EAAGK,UAAY/c,EAAQ8b,iBAAmB,KAAOY,EAAGiC,YAAc,KAAOhC,KAAqB3c,EAAQ+b,YAAc,KAAO/b,EAAQmc,aAAe,OAClJO,EAAGoB,OAAS/S,GAGhB,MAIZ,OAAO2R,GAGX,IAAIwC,EAAWlf,EAAQkf,SAAWlf,EAAQuc,SAASgC,UAAUY,WAE7Dnf,EAAQof,mBAAqBF,EAASrC,GAAKb,OAAOvS,MAAQ,IAAM,EAEhEzJ,EAAQqf,oBAAqB,GAEzBH,EAASvB,KAAQuB,EAASnC,SAAWmC,EAASR,aAAe,GAAMQ,EAASrC,MAC5E7c,EAAQqf,mBAAqBH,GAGjClf,EAAQsf,aAAe,WAGnB,GAAItf,EAAQkb,MAAO,CAGf,GAAIgE,EAASvB,IACT,OAAO,EAGX,GAAIuB,EAASnC,QAET,OAAK/c,EAAQye,QAAQJ,UAKjBre,EAAQye,QAAQxf,QAAU,OAKrBG,EAAE,uBAAuBmgB,KAAK,YAAc,IAAI3S,MAAM,qBAIvE,OAAO,GAGX5M,EAAQwf,qBAAuBxf,EAAQkb,SAAWlb,EAAQkf,SAASvB,KAAO3d,EAAQkf,SAASnC,SAE3F/c,EAAQyf,cAAgB,SAASjD,GAC7B,IAAIiC,GAAU,EACV7R,EAAQ,GAERmR,EAAa,CACT2B,KAAM,uBACNpB,OAAQ,+BACRqB,OAAQ,yBACRC,MAAO,sCACPC,KAAM,mCACNC,QAAS,kCAGjB,IAAK,IAAI/U,KAASgT,EACd,GAAIA,EAAW5S,eAAeJ,KAC1B6B,EAAQ4P,EAAG5P,MAAMmR,EAAWhT,KACjB,EACP0T,EAAU,IACF1T,IAAS,EACjB0T,EAAQ7R,EAAM,GAAGmI,cAAc1N,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAC9DoX,EAAQxf,QAAUyW,SAAS7J,SAASkU,cAAgBnT,EAAM,GAAI,IAE1D6R,EAAQJ,QACY7B,EAAG5P,MAAM,yBAGzB6R,EAAQuB,cAAe,GAI/B,MAKZ,OAAOvB,GAGXze,EAAQye,QAAUze,EAAQyf,cAAclB,UAAUY,YAE7CD,GAAYlf,EAAQkb,OAASlb,EAAQye,QAAQkB,SAC9CT,EAAWlf,EAAQkf,SAAW,CAC1BvB,KAAK,EACLG,OAAQ,SACRU,OAAQ,OACRE,aAAc,KAItB1e,EAAQigB,sBAAwB,WAC5B,IAAIC,EAAW,CACXxc,OAAMmI,SAASsU,uBAAwBtU,SAASsU,sBAAsB,QACtEC,MAAKvU,SAASsU,uBAAwBtU,SAASsU,sBAAsB,OACrEE,QAAOxU,SAASsU,uBAAwBtU,SAASsU,sBAAsB,UAY3E,OATIngB,EAAQye,QAAQJ,SAEhB6B,EAASG,OAAQ,EACbrgB,EAAQye,QAAQxf,SAAW,KAC3BihB,EAASxc,MAAO,EAChBwc,EAASE,KAAM,IAIhBF,GAGXlgB,EAAQsgB,UAAYtgB,EAAQigB,wBAE5BjgB,EAAQugB,UAAY,WAChB,IACI,IAAI9B,EAAUze,EAAQye,QAClB+B,EAAsB,EACtBC,EAAQ5U,SAASiK,gBAMrB,OAJI2I,EAAQoB,MAA2B,IAAnBpB,EAAQxf,SAAiBwhB,EAAMC,aAAeD,EAAME,eAAiB3gB,EAAQkb,QAC7FsF,EAAsBxgB,EAAQoa,aAG3Bpa,EAAQkb,MAASuF,EAAMG,YAAcrjB,EAAO2e,WAC5CuC,EAAQoB,MAAQpB,EAAQxf,SAAW,KAAQ4hB,KAAOtjB,GAAQsO,SAASiK,gBAAgB8E,YAAc4F,IAAwBK,KAAOtjB,GAAQ2e,WAAc,EAC/J,MAAO9a,GACL,OAAO,IAIf,SAAUqd,GAEN,IAAIqC,EAAW,GACXC,EAAa3hB,EAAEyM,SAASiK,iBACxB4I,EAAehJ,SAAS+I,EAAQxf,QAAS,IAEzCwf,EAAQoB,KACRiB,EAAW,KACJrC,EAAQqB,QACfgB,EAAW,KACJrC,EAAQkB,OACfmB,EAAW,SACJrC,EAAQH,OACfwC,EAAW,SACJrC,EAAQmB,MACfkB,EAAW,QACJrC,EAAQiB,OACfoB,EAAW,QAGXA,IACAA,EAAW,KAAOA,EAAW,MAAQA,EAAWpC,GAEhD1e,EAAQkf,WACR4B,GAAY,aAGX9gB,EAAQyb,aACTqF,GAAY,iBAGhBC,EAAWC,SAASF,GA/BxB,CAgCG9gB,EAAQye,SAEXze,EAAQihB,aAAepV,SAASiK,gBAAgB5X,iBAEhD,IAAIgjB,EAAQrV,SAAS0O,cAAc,SAEnCva,EAAQmhB,YAAc,gBAAiBD,EACvClhB,EAAQohB,oBAAsB,qBAAsBF,EAEpDlhB,EAAQkhB,MAAQ,WAQZ,IAPA,IAKI/e,EALAkf,EAAQ,CAAC,SAAU,OAAQ,OAAQ,QAAS,OAAQ,WAAY,kBAChEpd,EAASod,EAAMpd,OACfkB,EAAQ,OACR6N,EAAS,GACT3M,EAAM,EAGJA,EAAMpC,EAAQoC,IAChBlE,EAAOkf,EAAMhb,GACb6a,EAAMI,aAAa,OAAQnf,GAC3B+e,EAAM/b,MAAQA,EAEd6N,EAAO7Q,EAAKjD,QAAQ,IAAK,KAAsB,SAAfgiB,EAAM/e,MAAmB+e,EAAM/b,QAAUA,EAG7E,OAAO6N,EAhBK,GAmBhBkO,EAAMhY,MAAMsR,QAAU,cAEtBxa,EAAQuhB,WAAaL,EAAMhY,MAAMqY,SAEjCL,EAAQ,KAERlhB,EAAQwhB,WAAa,WAUjB,IAPA,IAEIC,EAAS,CAAC,CACVjM,MAAO,EACPkM,MAAO,MAGF1d,EAAI,EAAGA,EAPA,IAOeA,IAC3Byd,EAAOrjB,KAAK,CACRoX,MAAOxR,EACP0d,MAAO,MAQf,OAJAD,EAAOE,MAAK,SAAShgB,EAAGigB,GACpB,OAAOjgB,EAAE+f,MAAQE,EAAEF,MAAQ,EAAK/f,EAAE+f,MAAQE,EAAEF,OAAS,EAAI,KAGlC,IAApBD,EAAO,GAAGjM,MArBA,GAwBrBxV,EAAQ6hB,gBAAkBvG,EAAawG,uBAAyBxG,EAAayG,oBACnDzG,EAAa0G,mBAAqB1G,EAAa2G,kBAC/C3G,EAAauG,iBAAmBvG,EAAard,SACrE,SAAUikB,GAIN,IAHA,IAAIC,EAAWtW,SAASuW,kBAAqB3lB,KAAK4lB,YAAcxW,UAAWuW,iBAAkBF,IAAc,GAAK9iB,EAAE8iB,GAC9Gle,EAAIme,EAASle,OAEVD,KACH,GAAIme,EAASne,IAAMvH,KACf,OAAO,EAIf,OAAO,GAGbuD,EAAQxC,WAAa,eAAgBD,EAErCyC,EAAQsiB,UAAY/kB,EAAOglB,SAAWhlB,EAAOglB,QAAQD,UAErDtiB,EAAQwiB,WAAa,iBAAkBjlB,EAEvCyC,EAAQyiB,eAAiB,oBAAqBllB,EAAOsO,SAErD,IAAIwS,EAASre,EAAQye,QAAQJ,OACzBqE,EAAe1iB,EAAQye,QAAQkE,MAC/B7C,EAAU9f,EAAQye,QAAQqB,QAC1BH,EAAS3f,EAAQye,QAAQkB,OAC7B3f,EAAQ4iB,YAAcvE,GAAU9gB,EAAOslB,eACvC7iB,EAAQ8iB,UAAYzE,IAAWqE,IAAiB5C,IAAYH,GAAUpiB,EAAOwlB,aAC7E/iB,EAAQgjB,oBAAsB9D,IAAiC,SAApBA,EAASV,QAAqBU,EAASR,aAAe,MAAQ1e,EAAQkb,OAASlb,EAAQ4iB,YAAc5iB,EAAQ8iB,UAnZ5J,GAodA,IAAIG,GAAU,GAyCd,SAASC,GAAwBvf,EAASwf,EAAU5Q,EAAS6Q,GA6BzD,cA5BWzf,IAAYhB,IAIfgD,EAAWwd,KACXC,EAAWD,EACXA,EAAW,IACX5Q,GAAU,GAGV5M,EAAW4M,KACX6Q,EAAW7Q,EACXA,GAAU,UAGH4Q,IAAapgB,IACpBwP,EAAU4Q,EACVA,EAAW,KAGfxf,EAAU,CACNsf,QAAStf,EACTwf,SAAUA,EACV5Q,QAASA,EACT6Q,SAAUA,IAIX5jB,EAAO,CAEVyjB,QAAS,GACTE,SAAU,IACV5Q,SAAS,EACT3N,KAAMhF,EACNyjB,SAAUzjB,EACVgK,MAAM,GACPjG,EAAS,CAAE2f,iBAAkB3f,EAAQyf,SAAUA,SAAUxjB,IAIhE,SAAS2jB,GAAQjb,EAAS3E,EAASwf,EAAU5Q,EAAS6Q,GAKlD,IAJA,IAEII,EAFAnd,EAAM,EACNpC,EAASqE,EAAQrE,OAGdoC,EAAMpC,EAAQoC,KACjBmd,EAAWpkB,EAAEkJ,EAAQjC,KACZod,OAAM,WACXR,GAAQS,QAAQF,EAAUN,GAAwBvf,EAASwf,EAAU5Q,EAAS6Q,OAItF,OAAO9a,EA5FXlJ,EAAEI,OAAOyjB,GAAS,CACdU,SAAS,EACTC,QAAS,SAAStb,GACd7L,KAAK6L,QAAUlJ,EAAEkJ,IAGrBob,QAAS,SAASpb,EAAS3E,GAClB2E,EAAQU,GAAG,aACZV,EAAQe,IAAI,CAAEC,QAAShB,EAAQgC,KAAK,eAAiB,UAAWjB,IAAI,WAGpE1F,EAAQiG,MACRtB,EAAQgC,KAAK,aAAchC,EAAQe,IAAI,YAAYO,OAGnDjG,EAAQiB,MACRjB,EAAQiB,OAGRjB,EAAQ2f,kBACR3f,EAAQ2f,iBAAiBhb,GAG7BA,EAAQub,WAGZC,QAAS,WACLrnB,KAAKknB,SAAU,EACflnB,KAAKinB,QAAUjnB,KAAKsnB,aAGxBC,OAAQ,WACJvnB,KAAKknB,SAAU,EACflnB,KAAKinB,QAAUjnB,KAAKwnB,mBAI5BhB,GAAQc,YAAcd,GAAQS,QAsExB,iBAAkBtkB,EAAEoF,IACtBhF,EAAOJ,EAAEoF,GAAI,CACT0f,UAAW,SAASC,EAAYC,GAC5B,OAAO3nB,KAAK4nB,KAAKF,EAAYC,IAGjCE,aAAc,SAAS3gB,EAASwf,EAAU5Q,EAAS6Q,GAC/C,OAAOG,GAAQ9mB,KAAMkH,EAASwf,EAAU5Q,EAAS6Q,IAGrDmB,cAAe,SAASC,EAAS7gB,GAC7B,OAAOvG,EAAMqnB,YAAYhoB,KAAM+nB,EAAS7gB,GAAS,IAGrD+gB,iBAAkB,SAASF,EAAS7gB,GAChC,OAAOvG,EAAMqnB,YAAYhoB,KAAM+nB,EAAS7gB,GAAS,IAErDghB,iBAAkB,SAASH,EAAS7gB,EAASihB,GACzC,OAAOxnB,EAAMqnB,YAAYhoB,KAAM+nB,EAAS7gB,EAASihB,MAK7D,IAAIC,GAAY,KACZC,GAAW,KACXC,GAAc,KACdC,GAAa,KACbC,GAAW,KAsBf,IAAIC,GAAc,SAAS9jB,GACvB,OAAOA,EAAE2C,QAGT/D,EAAQkb,QAERgK,GAAc,SAAS9jB,GACnB,IAAI+jB,EAAU,kBAAmB/jB,EAAIA,EAAEgkB,cAAcC,eAAiB,mBAAoBjkB,EAAIA,EAAEikB,eAAiB,KAEjH,OAAOF,EAAUtZ,SAASyZ,iBAAiBH,EAAQ,GAAGI,QAASJ,EAAQ,GAAGK,SAAWpkB,EAAE2C,QAG3FtE,EAAK,CAAC,QAAS,YAAa,aAAc,UAAW,YAAa,YAAa,QAAQ,SAASgC,EAAG0D,GAC/F/F,EAAEoF,GAAGW,GAAS,SAASsgB,GACnB,OAAOhpB,KAAKipB,GAAGvgB,EAAOsgB,QAK9BzlB,EAAQkb,MACHlb,EAAQkf,UAQTlf,EAAQ2lB,UAAY,aACpB3lB,EAAQ4lB,QAAU,WAClB5lB,EAAQ6lB,UAAY,YACpB7lB,EAAQ8lB,YAAc,cACtB9lB,EAAQ+lB,MAAQ,WAChB/lB,EAAQgmB,OAAS,sBAZjBhmB,EAAQ2lB,UAAY,uBACpB3lB,EAAQ4lB,QAAU,mBAClB5lB,EAAQ6lB,UAAY,sBACpB7lB,EAAQ8lB,YAAc,yBACtB9lB,EAAQ+lB,MAAQ,QAChB/lB,EAAQgmB,OAAS,UASdhmB,EAAQ8iB,UACf9iB,EAAQ6lB,UAAY,cACpB7lB,EAAQ2lB,UAAY,cACpB3lB,EAAQ4lB,QAAU,YAClB5lB,EAAQ8lB,YAAc,gBACtB9lB,EAAQ+lB,MAAQ,YAChB/lB,EAAQgmB,OAAS,4BACVhmB,EAAQ4iB,YACf5iB,EAAQ6lB,UAAY,gBACpB7lB,EAAQ2lB,UAAY,gBACpB3lB,EAAQ4lB,QAAU,cAClB5lB,EAAQ8lB,YAAc,kBACtB9lB,EAAQ+lB,MAAQ,cAChB/lB,EAAQgmB,OAAS,6BAEjBhmB,EAAQ6lB,UAAY,YACpB7lB,EAAQ2lB,UAAY,YACpB3lB,EAAQ4lB,QAAU,UAClB5lB,EAAQ8lB,YAAc,aACtB9lB,EAAQ+lB,MAAQ,QAChB/lB,EAAQgmB,OAAS,UAGrB,IA4BAC,GAAa,mBAEbzmB,EAAOpC,EAAO,CACV8oB,QAAS,GACTC,2BAA4B,GAC5BC,GAAIhpB,EAAMgpB,IAAM,GAChBC,GAAIjpB,EAAMipB,IA9Pd,SAAY/d,GACR,OAAO,IAAIlL,EAAM6lB,QAAQW,QAAQtb,IA8PjC2a,QAAS7lB,EAAM6lB,SAAWA,GAC1BqD,OAAQlpB,EAAMkpB,QAAU,GACxBhc,KAAMlN,EAAMkN,MAAQ,GACpBic,QAASnpB,EAAMmpB,SAAW,GAC1BC,QAASppB,EAAMopB,SAAW,GAC1BC,YAAa,CAAEC,SAAU,IACzBC,KAAM,CACFC,OAAQ,GACRC,OAAQ,GACRC,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,IAAK,GACLC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,YAAa,IACbC,aAAc,IACdC,WAAY,KAEhBhoB,QAAS5C,EAAM4C,SAAWA,EAC1BujB,QAASnmB,EAAMmmB,SAAWA,GAC1B0E,GAAI,GACJ1I,KAAM,SAASpa,GACX,MAAO,QAAU/H,EAAM6qB,GAAK9iB,GAEhC+iB,WAvgCJ,SAAoB5f,GAChB,IAAI6f,EAAS7f,EAAQe,IAAIjM,EAAM4C,QAAQob,YAAY/R,IAAM,eAAiBf,EAAQe,IAAI,cAClF+e,EAASD,GAASA,EAAOvb,MAAMzM,IAAwC,CAAE,EAAG,EAAG,EAAG,EAAG,GACrFkoB,EAAOxoB,EAAKwV,KAAM+S,EAAO,KAAOA,EAAO,IAAM,IAEjD,MAAO,CACHE,MAAQF,EAAO,GAAMC,EACrBE,OAASH,EAAO,GAAMC,EACtBG,QAAUJ,EAAO,GAAMC,IAggC3BI,KA5/BJ,SAAcngB,EAASC,EAAUyd,GAC7B,IAAI0C,EACAlgB,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aACpBC,EAASN,EAAQM,SACjB+f,EAAmBngB,EAAWjL,GAIlC,GAFAqL,EAAOA,SAASggB,YAAY,4BAEvBhgB,EAAOigB,SAAS,+BAkCjBxgB,GAAWC,EAASC,OAlC6B,CACjD,IAAIkB,EAAQnB,EAAQ,GAAGY,MAAMO,MACzBL,EAASd,EAAQ,GAAGY,MAAME,OAC1B0f,EAAe7oB,EAAcuJ,KAAKC,GAClCsf,EAAgB9oB,EAAcuJ,KAAKJ,GACnC4f,EAAa1gB,EAAQugB,SAAS,cAAgBvgB,EAAQU,GAAG,qCAE7D0f,EAAaI,GAAgBC,GAExBD,KAAkBvgB,GAAaA,GAAYkB,GAAUuf,KAAevf,EAAQlB,EAAWC,EAAWF,GAAW,EAAIE,EAAWF,MAC5HygB,KAAmBxgB,GAAaA,GAAYa,IAAYd,EAAQU,GAAG,wCAAwCI,EAASV,EAAYJ,IAErIA,EAAQmgB,KACJrpB,EAAE,UACD4hB,SAAS,+BACT3X,IAAI,CACDI,MAAOA,EACPL,OAAQA,MAEhBR,EAASN,EAAQM,UAEV6f,KACMrpB,EAAE,UACD4hB,SAAS,yBACTzB,KAAK,OAAQ,WAGvBmJ,GACApgB,EAAQe,IAAI,CACRI,MAAO,OACPL,OAAQ,SAkBpB,OATIuf,EAAmBngB,EAFvBI,EAASA,EAAOA,YAGZA,EAAOoY,SAAS,4BAChBgF,GAAS,GAGTA,GACA3d,GAAWC,EAASC,GAGjBK,GAo8BP3D,WAAYA,GACZwG,kBAAmBA,GACnBwd,aA5yBJ,SAAsB3gB,GAClB,GAAiD,UAA7CA,EAAQ4gB,QAAQ9rB,EAAM6qB,GAAK,cAC3B,OAAO,EAGX,GAAI3f,GAAWA,EAAQ6gB,WAA2C,iBAAvB7gB,EAAiB,WAAkBA,EAAQ6gB,UAAU/W,QAAQ,sBAAwB,EAC5H,OAAO,EAGX,IAAIgX,EAAW3d,GAAkBnD,EAAS,CAAC,aAAa8gB,SACxD,OAAOA,EAAShX,QAAQ,SAAW,GAAKgX,EAAShX,QAAQ,WAAa,GAmyBtEiX,WAhyBJ,SAASA,EAAW/gB,EAASnD,GACzB,IAGImkB,EAAIvO,EAHJuD,EAASte,EAAQye,QAAQH,OACzBiL,EAASvpB,EAAQye,QAAQqB,QACzB0J,EAAiBxpB,EAAQye,QAAQxf,QAGrC,GAAIqJ,aAAmBlJ,GAAK+F,IAAU9F,EAClCiJ,EAAQ7I,MAAK,SAASuE,EAAG5C,GACrBioB,EAAWjoB,EAAG+D,WAQtB,GAHImkB,EAAKhhB,aAAmBlJ,EAAIkJ,EAAQ,GAAKA,EAG7C,CAQA,GAJAyS,EAAQ/a,EAAQ+a,MAAMzS,GAIlBnD,IAAU9F,EASV,OAAI0b,GAASuD,IAAWkL,EAAiB,IAAMxpB,EAAQye,QAAQkB,QACpD2J,EAAGzO,YAAcyO,EAAG1I,YAAc0I,EAAGD,WAErCvpB,KAAK6T,IAAI2V,EAAGD,YAXnBtO,GAASuD,IAAWkL,EAAiB,IAAMxpB,EAAQye,QAAQkB,QAC3D2J,EAAGD,WAAaC,EAAGzO,YAAcyO,EAAG1I,YAAczb,EAElDmkB,EAAGD,WADItO,IAAUwO,GAAUjL,IAAWnZ,EAAQ,GAC7BA,EAEDA,IAmwBxB+G,KAjWJ,SAAcud,GACV,IAAgBzb,EAAZgF,EAAS,EACb,IAAKhF,KAAOyb,EACJA,EAAIte,eAAe6C,IAAe,UAAPA,GAC3BgF,IAIR,OAAOA,GA0VP5H,YAAaA,GACbse,UAx1BJ,SAAmBre,GACf,OAAOA,EAAInM,QAAQ,iBAAiB,SAASoS,GACzC,OAAOA,EAAE/J,OAAO,GAAK,IAAM+J,EAAE/J,OAAO,GAAGwN,kBAu1B3C4U,UAAWvsB,EAAMusB,WAzVrB,SAAmBrhB,EAASnG,EAAMynB,GACzBznB,IACDA,EAAO,UAGX,IAAIqX,EAASlR,EAAQnG,KAEjB6Q,EAAS,CACT6N,IAAKrH,EAAOqH,IACZ0H,MAAO/O,EAAO+O,MACdC,OAAQhP,EAAOgP,OACfF,KAAM9O,EAAO8O,MAIjB,GAAItoB,EAAQye,QAAQoB,OAAS7f,EAAQ8iB,UAAY9iB,EAAQ4iB,cAAgBgH,EAAY,CACjF,IAAI3W,EAAOjT,EAAQ+a,MAAMzS,GAAW,GAAK,EAEzC0K,EAAO6N,KAAQtjB,EAAOssB,YAAehe,SAASiK,gBAAyB,UACvE9C,EAAOsV,MAAS/qB,EAAOusB,YAAe7W,EAAOpH,SAASiK,gBAAgBuT,WAG1E,OAAOrW,GAoUP+W,aAAc3sB,EAAM2sB,cAtTxB,SAAsB7I,GAClB,IAAI+B,EAAU,GAMd,OAJAxjB,EAAuB,iBAAVyhB,EAAqBA,EAAM7Z,MAAM,KAAO6Z,GAAQ,SAAS7a,GAClE4c,EAAQ5c,GAAO5J,QAGZwmB,GAgTPwB,YAAarnB,EAAMqnB,aAxMvB,SAAqBnc,EAASkc,EAAS7gB,EAAS+F,GAS5C,OARI8a,IACAA,EAAUA,EAAQnd,MAAM,KAExB5H,EAAK+kB,GAAS,SAASne,EAAKlB,GACxBmD,EAAQmc,YAAYtf,EAAOuE,OAI5BpB,GAgMP0hB,WAAY5sB,EAAM4sB,YAnUL,CACb1B,KAAM,CAAE/V,QAAS,SACjBgW,MAAO,CAAEhW,QAAS,QAClB0X,KAAM,CAAE1X,QAAS,MACjB2X,GAAI,CAAE3X,QAAS,QACfsO,IAAK,CAAEtO,QAAS,UAChBiW,OAAQ,CAAEjW,QAAS,OACnB4X,GAAM,CAAE5X,QAAS,OACjB6X,IAAK,CAAE7X,QAAS,OA4ThBxM,WAAYA,EACZ1B,MAAOA,EACP/E,SAAUA,EACVgN,SAAUhN,EAASkN,QAAQvG,KAAK3G,GAChC+M,OAAQ/M,EAAS+M,OAAOpG,KAAK3G,GAC7B2P,UAAWlP,EAAKkP,UAAUhJ,KAAKlG,GAC/BmlB,YAAaA,GACbmF,WAzKJ,SAAoBllB,GAChB,OAAQ,GAAKA,GAAOjG,QAAQ2lB,GAAW,SAAS3lB,QAAQ4lB,GAAU,QAAQ5lB,QAAQ+lB,GAAU,QAAQ/lB,QAAQ6lB,GAAa,UAAU7lB,QAAQ8lB,GAAY,UAyKvJsF,SAtKJ,SAAkBnlB,GACd,IAAImH,EAEJ,IACIA,EAAW/O,EAAOgtB,mBAAmBplB,GACvC,MAAOqlB,GAILle,EAAWnH,EAAMjG,QAAQ,kCAAkC,SAASurB,EAAGC,EAAIC,GACvE,OAAOpc,OAAOqc,aAAalV,SAAS,MAAQgV,GAAMC,GAAK,QAI/D,OAAOre,GAyJPue,WAAY,SAASC,GACjB,OAAOA,IAAQ7E,GAAWzc,KAAKshB,IAEnC9tB,WAAYA,EAEZ+tB,KAAM,SAASC,EAAYC,EAAM9e,GAuB7B,cApBW8e,GAAQtoB,IACfwJ,EAAY8e,EACZA,GAAO,GAGX9e,EAAYA,GAAa,KAPzB6e,EAAaA,GAAc,KASgB,MAAzBA,EAAWzjB,OAAO,KAChCyjB,EAAa,IAAMA,GAGnBC,GAGAD,EAlHS,SAASE,EAAS/e,GACnC,IACIqJ,EACAnP,EACApC,EACAM,EAJAyO,EAAS7G,GAAa,IAKtBoL,EAAQ,EAEZ,IAAKlR,EAAM,EAAGpC,EAASinB,EAAQjnB,OAAQoC,EAAMpC,EAAQoC,IAElC,MADf9B,EAAS2mB,EAAQ7kB,MAIC,KAFdmP,EAAQjR,EAAO6N,QAAQ,SAGL,GAAVoD,EACAjR,EAAS,IAAMA,GAEfgT,IACAhT,EAAS,IAAMA,EAAOkD,UAAU,EAAG+N,GAAS,UAAYjR,EAAOkD,UAAU+N,KAIjF+B,IACAvE,GAAUzO,GAAW8B,EAAMpC,EAAS,EAAK,UAAY,MAG7D,OAAO,IAAItE,MAAM4X,GAAOjQ,KAAK,KAAO0L,EAwFfmY,EADbH,GADAA,EAAaA,EAAW9rB,QAAQ,sBAAsB,kBAC9BA,QAAQ,sBAAsB,kBACfmI,MAAM,KAAM8E,GACnD6e,EAAaA,EAAW9rB,QAAQ,aAAc,MAE9C8rB,EAAa7e,EAAY6e,EAGtBA,GAGXI,YAAa,SAAUJ,EAAYC,GAE/B,IACII,EAAS,GAOb,OATAL,EAAaA,GAAc,IAIhB9rB,QAHO,uDAGc,SAAUurB,EAAGjV,EAAO8V,EAAe5J,GAE/D,OADA2J,EAAOjtB,KAAKhB,EAAM8H,UAAUsQ,GAASA,EAAS8V,GAAiB5J,GACxDriB,KAGJgsB,GAGXE,OAAQ,SAASP,EAAYC,GACzB,IAAIjd,EAAMgd,EAAaC,EAEvB,OAAO9nB,EAAY6K,GAAO7K,EAAY6K,IAAQ,SAAWyb,GAIrD,IAHA,IAAI4B,EAASjuB,EAAMguB,YAAYJ,EAAYC,GAEvCjY,EAASyW,EACJpjB,EAAM,EAAGA,EAAMglB,EAAOpnB,OAAQoC,IAEnC,GADA2M,EAASA,EAAOqY,EAAOhlB,KAClBjJ,EAAM8H,UAAU8N,IAAWiY,EAC5B,OAAOjY,EAIf,OAAOA,IAIfwY,OAAQ,SAASR,GACb,OAAO5nB,EAAY4nB,GAAc5nB,EAAY4nB,IAAe,SAAWvB,EAAKtkB,GACxE,IAAIkmB,EAASjuB,EAAMguB,YAAYJ,GAE3BS,EAAc,SAAUC,GACxB,IAAI9iB,EAAS8iB,EAAI9iB,OACb+iB,EAAMD,EAAIC,IACVC,EAAOF,EAAIE,KACXC,EAAQH,EAAIG,MAEZA,EAAM5nB,QACN2E,EAASA,EAAOijB,EAAMvZ,SACtBmZ,EAAY,CAAE7iB,OAAQA,EAAQ+iB,IAAKA,EAAKC,KAAMA,EAAMC,MAAOA,KAE3DjjB,EAAOgjB,GAAQD,GAIvBF,EAAY,CACR7iB,OAAQ6gB,EACRkC,IAAKxmB,EACLymB,KAAMP,EAAOS,MACbD,MAAOR,MAKnBU,SAAU,SAASf,GACf,MAAO,CACHgB,IAAK5uB,EAAMmuB,OAAOP,GAClBiB,IAAK7uB,EAAMouB,OAAOR,KAI1BkB,KAAM,WACF,IAAaloB,EAAGmoB,EAAZC,EAAK,GAAeC,EAAQ,SAIhC,IAFAD,GAAMC,EAAMvsB,KAAKkN,MAAMlN,KAAKqsB,SAAWrsB,KAAKkN,MAAMqf,EAAMpoB,UAEnDD,EAAI,EAAGA,EAAI,GAAIA,IAChBmoB,EAAyB,GAAhBtsB,EAAKssB,SAAgB,EAErB,GAALnoB,GAAe,IAALA,GAAgB,IAALA,GAAgB,IAALA,IAChCooB,GAAM,KAEVA,IAAY,IAALpoB,EAAU,EAAU,IAALA,EAAoB,EAATmoB,EAAa,EAAKA,GAASxe,SAAS,IAGzE,OAAOye,GAGXE,aAAc,SAASC,GACnB,OAAOA,EAAKrtB,QAAQ,SAAU,IAAM9B,EAAMmiB,KAAK,QAAU,SAASlc,MAAM,GAAI,IAGhFmpB,kBAAmB,SAASC,GACxB,IAAIC,EAAYD,EAAWplB,MAAM,KAEjC,GAAIqlB,EACA,IAAK,IAAI1oB,EAAI,EAAGA,EAAI0oB,EAAUzoB,OAAQD,IACd,QAAhB0oB,EAAU1oB,KACV0oB,EAAU1oB,GAAK0oB,EAAU1oB,GAAG9E,QAAQ,8BAA+B,UAK/E,OAAOwtB,EAAUplB,KAAK,KAAKpI,QAAQ,SAAU,oBAAoBmE,MAAM,GAAI,IAG/EspB,iBAAkB,SAASvrB,GACvB,MAAO,mCAAqCoI,KAAKpI,EAAE2C,OAAO6oB,UAG9DC,mBAAoB,SAASpH,GACzB,IAAK,IAAIzhB,EAAI,EAAG8oB,EAAM1vB,EAAM8oB,QAAQjiB,OAAQD,EAAI8oB,EAAK9oB,IACjDyhB,EAASroB,EAAM8oB,QAAQliB,IAG3B5G,EAAM+oB,2BAA2B/nB,KAAKqnB,IAG1CsH,aAAc,SAASC,EAAS7qB,GAC5B,IAAIiL,EAAU7P,EAAO6P,SAEhBhQ,EAAM6vB,kBAAkC,IAAb,GAA4B7f,EAAQ8f,KAChE9f,EAAQjL,GAAQ,OAAO6qB,MAKnC,IAAIG,GAASpnB,EAAWvG,OAAQ,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAi8Ef2wB,eAAeC,gBAAgBzuB,GA77E3B8F,EAAK4D,QAAUlL,EAAM+G,OAAOmE,GAAS/B,QAAQ7B,GAE7CA,EAAK4oB,QAAQ,OAAQ3pB,GAErBoC,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExB,IACImnB,EADA0B,EAAa5pB,EAAUA,EAAQ4pB,WAAa,KAG5C5pB,IACAkoB,GAASnnB,EAAK8oB,gBAAkB,KAAK7pB,GAAW,IAAI8pB,gBAGpDF,IAEA5pB,EAAUnE,EAAO,GAAImE,EAAS,CAAE4pB,WAAY,MAGhD5pB,EAAUe,EAAKf,QAAUnE,GAAO,EAAM,GAAIkF,EAAKf,QAASe,EAAKrH,SAAUwuB,GAAS,GAAIloB,GAEhF4pB,IACA5pB,EAAQ4pB,WAAaA,GAGpB7oB,EAAK4D,QAAQiX,KAAKniB,EAAMmiB,KAAK,UAC9B7a,EAAK4D,QAAQiX,KAAKniB,EAAMmiB,KAAK,SAAU5b,EAAQ9E,MAAQ,IAAIkW,eAG/DrQ,EAAK4D,QAAQgC,KAAK,QAAU3G,EAAQ+X,OAAS/X,EAAQ9E,KAAM6F,GAE3DA,EAAKuB,KAAKvB,EAAKoC,OAAQnD,IAG3BmD,OAAQ,GAERnD,QAAS,CACL+X,OAAQ,IAGZgS,kBAAmB,WACf,QAASjxB,KAAK6L,QAAQ,GAAGqlB,oBAG7BC,UAAW,SAAS7pB,GAChBA,EAASA,GAAUtH,KAAKoM,QAExB,IAAIP,EAAU7L,KAAK6L,QACfulB,EAAW,WACXC,EAAW/pB,EAAOwb,KAAKsO,IAAavlB,EAAQiX,KAAKsO,GAErDvlB,EAAQylB,WAAWF,GAEnB9pB,EAAOwb,KAAKsO,EAAWtoB,MAAMuoB,GAAuB,EAAXA,IAG7CE,WAAY,SAASrqB,GACjBlH,KAAKwxB,iBAAiBtqB,GACtBlH,KAAKyxB,WAAWvqB,GAChBvE,EAAEI,OAAO/C,KAAKkH,QAASA,GACvBlH,KAAK0xB,oBAGTD,WAAY,SAASvqB,GAMjB,IALA,IAGIvC,EAHAsD,EAAOjI,KACP4J,EAAM,EACNpC,EAASS,EAAKoC,OAAO7C,OAGlBoC,EAAMpC,EAAQoC,IACjBjF,EAAIsD,EAAKoC,OAAOT,GACZ3B,EAAKf,QAAQvC,IAAMuC,EAAQvC,KAC3BsD,EAAKgC,OAAOtF,EAAGsD,EAAKf,QAAQvC,IACxBsD,EAAKsB,SAAWtB,EAAKsB,QAAQ5E,WACtBsD,EAAKsB,QAAQ5E,IAKhCsD,EAAKuB,KAAKvB,EAAKoC,OAAQnD,IAG3BqiB,OAAQ,SAASoI,GACb,IAAIliB,EAAOzP,KAAK4xB,UACZC,EAAc7xB,KAAK8xB,OAEnBH,IAAUliB,EAAKzC,MAAQ,GAAKyC,EAAK9C,OAAS,MAAQklB,GAAepiB,EAAKzC,QAAU6kB,EAAY7kB,OAASyC,EAAK9C,SAAWklB,EAAYllB,WACjI3M,KAAK8xB,MAAQriB,EACbzP,KAAK+xB,QAAQtiB,EAAMkiB,GACnB3xB,KAAKoK,QAAQ,SAAUqF,KAI/BmiB,QAAS,WACL,OAAOjxB,EAAMqxB,WAAWhyB,KAAK6L,UAGjC4D,KAAM,SAASA,GACX,IAAKA,EACD,OAAOzP,KAAK4xB,UAEZ5xB,KAAKiyB,QAAQxiB,IAIrBwiB,QAAStvB,EAAEQ,KACX4uB,QAASpvB,EAAEQ,KAEXnB,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAK4D,QAAQqmB,WAAW,QAAUjqB,EAAKf,QAAQ+X,OAAShX,EAAKf,QAAQ9E,MACrE6F,EAAK4D,QAAQqmB,WAAW,WACxBjqB,EAAKgC,UAETkoB,SAAU,WACNnyB,KAAKgC,WAET6uB,QAAS,aAETuB,mBAAoB,SAASpJ,GACzBhpB,KAAKqyB,aAAc,EAEnBrJ,EAASze,KAAKvK,MAEdA,KAAKqyB,aAAc,GAGvBX,iBAAkB,SAAS7lB,GACvB,IAIItE,EAAG4nB,EAAMmD,EAAWC,EAJpBC,EAAexyB,KAAKyyB,UAAUvrB,QAC9BA,EAAUlH,KAAKkH,QACf2lB,EAAKhhB,GAAW7L,KAAKoM,SAAWpM,KAAK6L,QACrCkc,EAAU,GAGd,GAAKpnB,EAAM+xB,cAAcC,mBAAmBH,EAAapwB,MAAzD,CAIA,IAAKmF,EAAI,EAAGA,EAAIV,EAAmBW,OAAQD,IACvC4nB,EAAOtoB,EAAmBU,GAC1BgrB,EAAavyB,KAAKkH,QAAQ0rB,UAAYJ,EAAapwB,KAE/CowB,EAAa9jB,eAAeygB,KACf,eAATA,GACAmD,EAAY3xB,EAAM+xB,cAAcG,cAAc,CAC1CC,OAAQP,EACRQ,SAAU,WACVrqB,MAAOxB,EAAQ8rB,aAGFV,EAAU9qB,QACvBugB,EAAQpmB,KAAKhB,EAAM+xB,cAAcG,cAAc,CAC3CC,OAAQP,EACRQ,SAAU5D,EACVzmB,MAAOxB,EAAQioB,GACf8D,KAAM/rB,EAAQ8rB,YAItBjL,EAAQpmB,KAAKhB,EAAM+xB,cAAcG,cAAc,CAC3CC,OAAQP,EACRQ,SAAU5D,EACVzmB,MAAOxB,EAAQioB,OAM/BtC,EAAGtI,SAASwD,EAAQld,KAAK,QAG7BqoB,WAAY,SAAS5rB,GACjB,IAMI6rB,EALAC,EADOpzB,KACS6L,QAChBwnB,EAAUD,EAAStQ,KAAK,MACxBwQ,EAAW3wB,EAAE,cAAiB0wB,EAAU,MACxCE,EAAYH,EAAStQ,KAAKrc,GAC1B+sB,EAAiBJ,EAAStQ,KAAKtc,GAG/Bc,EAAO,KAAO8rB,EAAS,KAIvBG,EACAjsB,EAAOwb,KAAKrc,EAAY8sB,GACjBC,EACPlsB,EAAOwb,KAAKtc,EAAiBgtB,GACtBF,EAAS9rB,SAChB2rB,EAAUG,EAASxQ,KAAK,OAjBjB9iB,KAiB+ByzB,iBAAiBH,EAAUD,GAAW1yB,EAAM8uB,QAClFnoB,EAAOwb,KAAKtc,EAAiB2sB,MAIrC3B,iBAAkB,SAASkC,EAAY7nB,GACnC,IAGItE,EAAG4nB,EAAMoD,EAHTC,EAAexyB,KAAKyyB,UAAUvrB,QAC9BysB,EAAiB3zB,KAAKkH,QACtB2lB,EAAKhhB,GAAW7L,KAAKoM,SAAWpM,KAAK6L,QAGzC,GAAKlL,EAAM+xB,cAAcC,mBAAmBH,EAAapwB,MAIzD,IAAKmF,EAAI,EAAGA,EAAIV,EAAmBW,OAAQD,IACvC4nB,EAAOtoB,EAAmBU,GAC1BgrB,EAAavyB,KAAKkH,QAAQ0rB,UAAYJ,EAAapwB,KAE/CowB,EAAa9jB,eAAeygB,IAASuE,EAAWhlB,eAAeygB,KAClD,eAATA,EACAtC,EAAGV,YAAYxrB,EAAM+xB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU5D,EACVzmB,MAAOirB,EAAexE,GACtB8D,KAAMU,EAAeX,aAGZ,aAAT7D,GACAtC,EAAGV,YAAYxrB,EAAM+xB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU,aACVrqB,MAAOirB,EAAeC,WACtBX,KAAMU,EAAeX,YAI7BnG,EAAGV,YAAYxrB,EAAM+xB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU5D,EACVzmB,MAAOirB,EAAexE,SAO1CsE,iBAAkB,SAASI,EAAOR,GAC9B,IAAIF,EAAUE,EAhlGJ,SAolGV,OAFAQ,EAAM/Q,KAAK,KAAMqQ,GAEVA,KAIXW,GAAkBpD,GAAO3tB,OAAO,CAEhCgxB,UAAW,WACP,OAAO/zB,KAAK8wB,WAAWkD,YAG3BC,cAAe,SAASC,GACpB,IAAIjsB,EAAOjI,KACXiI,EAAK4oB,QAAQqD,GAAK,WACd,MAAO,CACHC,SAAUlsB,EAAKmsB,QACfvmB,KAAMlL,EAAE2X,IAAIrS,EAAK8rB,aAAa,SAASM,GACnC,MAAO,CAAEA,SAAUA,aAOvC1zB,EAAMqxB,WAAa,SAASnmB,EAASmmB,GACjC,IAAIsC,EAAazoB,EAAQ,GAMzB,OAJImmB,GACAnmB,EAAQe,IAAIolB,GAGT,CAAEhlB,MAAOsnB,EAAWnW,YAAaxR,OAAQ2nB,EAAWC,eAG/D5zB,EAAM6zB,OAASrxB,EAEf,IAAIsxB,GAAiB,aACjBC,GAAa,oDACbC,GAAmB,wCACnBC,GAAa,WAEjB,SAASC,GAAYhpB,EAASipB,GAC1B,IAAIpsB,EAUJ,GAR+B,IAA3BosB,EAAOnf,QAAQ,UAEfmf,GADAA,EAASA,EAAO9pB,UAAU,IACVF,OAAO,GAAGwN,cAAgBwc,EAAO9pB,UAAU,IAG/D8pB,EAASA,EAAOryB,QAAQmyB,GAAY,OAGtB,QAFdlsB,EAAQmD,EAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAKsJ,IAG9CpsB,EAAQ9F,OACL,GAAc,SAAV8F,EACPA,EAAQ,UACL,GAAc,SAAVA,EACPA,GAAQ,OACL,GAAc,UAAVA,EACPA,GAAQ,OACL,GAAI/E,EAAaoJ,KAAKrE,IAAoB,QAAVosB,GAA8B,UAAVA,EACvDpsB,EAAQK,WAAWL,QAChB,GAAIgsB,GAAW3nB,KAAKrE,KAAWisB,GAAiB5nB,KAAKrE,GACxD,IACIA,EAAQpF,EAAK0xB,MAAMtsB,GACrB,MAAOqlB,GAELrlB,EAAQ,IAAI2H,SAAS,WAAa3H,EAAQ,IAAlC,GAIhB,OAAOA,EAGX,SAASusB,GAAappB,EAAS3E,EAASoG,GACpC,IACIwnB,EACApsB,EAFA6N,EAAS,GAGTuZ,EAAOjkB,EAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,QAErD,IAAKsJ,KAAU5tB,GACXwB,EAAQmsB,GAAYhpB,EAASipB,MAEflyB,IAEN6xB,GAAe1nB,KAAK+nB,IAAmB,UAARhF,IACV,iBAAVpnB,EACH/F,EAAE,IAAM+F,GAAOlB,OACfkB,EAAQ/H,EAAMkP,SAASlN,EAAE,IAAM+F,GAAOoH,QAC/BxC,IACP5E,EAAQ/H,EAAMkP,SAASvC,EAAO5E,KAGlCA,EAAQmD,EAAQkpB,aAAaD,IAIrCve,EAAOue,GAAUpsB,GAIzB,OAAO6N,EAqIX,SAAS2e,GAAoBhwB,EAAGigB,GAC5B,OAAOxiB,EAAEwyB,SAASjwB,EAAGigB,IAAM,EAAI,EAGnC,SAASiQ,KACL,IAAItC,EAASnwB,EAAE3C,MACf,OAAQ2C,EAAE0yB,QAAQvC,EAAOhQ,KAAK,QAAUniB,EAAM6qB,GAAK,QAAS,CAAC,SAAU,cAAe,gBAAkB,GAAMsH,EAAOvmB,GAAG,YAxI5H5L,EAAM20B,WAAa,SAASzpB,EAAS3E,EAASquB,GAC1C,IAAIhf,EACAue,EACAhC,EACAlpB,EACApC,EACAsoB,EACApnB,EACAooB,EACA0E,EACAC,EAaJ,GAVKF,EAEMA,EAAMA,QACbA,EAAQA,EAAMA,OAFdA,EAAQ50B,EAAMgpB,GAAG4L,MAOrBzF,GAFAjkB,EAAUA,EAAQ6pB,SAAW7pB,EAAUA,EAAQ,IAEhCkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,QAEjD,CAWIsH,GAPJ0C,GAAkC,IAAvB1F,EAAKna,QAAQ,MAOX4f,EAAMzF,GAENnvB,EAAMmuB,OAAOgB,EAAbnvB,CAAmBG,GAGhC,IAAI+M,EAAOlL,EAAEkJ,GAASgC,OAClB8nB,EAAY7C,EAAS,QAAUA,EAAO/qB,GAAGb,QAAQ+X,OAAS6T,EAAO/qB,GAAGb,QAAQ9E,KAAO,GAQvF,IAAK,IAAImP,KALLkkB,EADAD,EACkB,IAAIvnB,OAAO,WAAa6hB,EAAO,IAAK,KAEpC,IAAI7hB,OAAO,IAAM0nB,EAAY,IAAK,KAGxC9nB,EACZ,GAAI0D,EAAIpB,MAAMslB,GAAkB,CAE5B,GAAIlkB,IAAQokB,EAGR,OAAO9nB,EAAK0D,GAFZgF,EAAS1I,EAAK0D,GAO1B,GAAKuhB,EAAL,CAgBA,IAZAhC,EAAa+D,GAAYhpB,EAAS,cAElC3E,EAAUvE,EAAEI,OAAO,GAAIkyB,GAAappB,EAASlJ,EAAEI,OAAO,GAAI+vB,EAAO/qB,GAAGb,QAAS4rB,EAAO/qB,GAAGnH,WAAasG,GAEhG4pB,IAEI5pB,EAAQ4pB,kBADDA,IAAe5qB,EACDvF,EAAMmuB,OAAOgC,EAAbnwB,CAAyBG,GAEzBgwB,GAIxBlnB,EAAM,EAAGpC,EAASsrB,EAAO/qB,GAAGsC,OAAO7C,OAAQoC,EAAMpC,EAAQoC,KAG1DlB,EAAQmsB,GAAYhpB,EAFpBipB,EAAShC,EAAO/qB,GAAGsC,OAAOT,OAIZhH,IACVsE,EAAQ4tB,GAAUn0B,EAAMmuB,OAAOpmB,EAAb/H,CAAoBG,IAU9C,OANKyV,EAEO5T,EAAEizB,cAAc1uB,IACxBqP,EAAOgb,WAAWrqB,GAFlBqP,EAAS,IAAIuc,EAAOjnB,EAAS3E,GAK1BqP,KAGX5V,EAAMk1B,oBAAsB,SAASC,GACjC,IACIlsB,EACApC,EAFA+tB,EAAQ,GAQZ,IAJKO,EAAW,KACZA,EAAa,CAACn1B,EAAMgpB,GAAIhpB,EAAMmpB,QAAQH,KAGrC/f,EAAM,EAAGpC,EAASsuB,EAAWtuB,OAAQoC,EAAMpC,EAAQoC,IACpD2rB,EAAM3rB,GAAOksB,EAAWlsB,GAAK2rB,MAGjC,OAAOxyB,EAAOqF,MAAM,KAAM,CAAC,IAAIiV,OAAOkY,EAAMzf,aAGhDnV,EAAMwH,KAAO,SAAS0D,GAClB,IAAI0pB,EAAQ50B,EAAMk1B,oBAAoBjvB,EAAM2D,KAAKlD,UAAW,IAE5D1E,EAAEkJ,GAASkqB,KAAK,SAAWp1B,EAAM6qB,GAAK,SAASwK,UAAUhzB,MAAK,WAC1DrC,EAAM20B,WAAWt1B,KAAM,GAAIu1B,OAInC50B,EAAMqB,QAAU,SAAS6J,GACrBlJ,EAAEkJ,GAASkqB,KAAK,SAAWp1B,EAAM6qB,GAAK,SAASwK,UAAUhzB,MAAK,WAC1D,IAAI6K,EAAOlL,EAAE3C,MAAM6N,OAEnB,IAAK,IAAI0D,KAAO1D,EACiB,IAAzB0D,EAAIoE,QAAQ,iBAAyB9H,EAAK0D,GAAKvP,UAAYiE,GAC3D4H,EAAK0D,GAAKvP,cAe1BrB,EAAM4oB,OAAS,SAAS1d,EAAS8lB,GAC7B,IAAIlI,EAAU9mB,EAAEkJ,GAASkqB,KAAK,SAAWp1B,EAAM6qB,GAAK,SAASwK,UAAUC,OAAOb,IAE9E,GAAK3L,EAAQjiB,OAAb,CAKA,IAAI0uB,EAAevzB,EAAEwzB,UAAU1M,GAC/ByM,EAAahR,KAAKgQ,IAGlBvyB,EAAEK,KAAKkzB,GAAc,WACjB,IAAIpD,EAASnyB,EAAMy1B,eAAezzB,EAAE3C,OAChC8yB,GACAA,EAAOvJ,OAAOoI,QAK1BhxB,EAAMs0B,aAAeA,GAErBlyB,EAAOpC,EAAMgpB,GAAI,CACb+G,OAAQA,GACRoD,gBAAiBA,GACjByB,MAAO,GACPc,SAAU,SAASC,EAAWnO,EAAQjhB,GAClC,IAGIoX,EAAOiY,EAAWC,EAAkBC,EAAqBpS,EAHzDqS,EAAOJ,EAAUP,KAAK,mBACtBxyB,EAAU5C,EAAM4C,QAChBye,EAAUze,EAAQye,QAUlBqC,GAPAnd,EAAUvE,EAAEI,OAAO,GAAI,CACnBiK,MAAO,OACPL,OAAQ,OACRyX,IAAKkS,EAAUK,YACfC,SAAS,GACV1vB,IAEgB0vB,QAAU,0BAA4B,iBAEzDzO,EACKuO,EAAKlvB,SAEN+uB,GADAjY,EAAQ/a,EAAQ+a,MAAMgY,IACF,QAAU,OAC9BG,EAAsB91B,EAAMisB,WAAW0J,GACvCE,EAAmBxU,EAAQH,QAAWvD,EAAYgY,EAAU,GAAGlY,YAAckY,EAAUtpB,QAAU,EAAIypB,EAAuB,EAE5HC,EAAO/zB,EAAEhC,EAAM+P,OAAO,uKAAwK2T,EAAU1jB,EAAMgpB,GAAG0M,SAASpM,SAAS4M,UAC9N7pB,MAAM9F,EAAQ8F,OAAOL,OAAOzF,EAAQyF,QACpCC,IAAI,MAAO1F,EAAQkd,KACnBxX,IAAI2pB,EAAWlzB,KAAK6T,IAAIuf,GAAuBD,GAC/CM,UAAUR,IAEZI,GACPA,EAAKK,UAGbC,OAAQ,SAASlE,EAAQmE,EAAUhY,GAC/B,IACI6P,EADA1sB,EAAO0wB,EAAO/qB,GAAGb,QAAQ9E,KAI7B6c,EAASA,GAAU,IADnBgY,EAAWA,GAAYt2B,EAAMgpB,IAGpBvnB,GAAQ0wB,EAEjBmE,EAAS1B,MAAMnzB,EAAKkW,eAAiBwa,EAErChE,EAAS,WAAa7P,EAAS7c,EAG/B,IAAI80B,EAAc,CAAE90B,KAFpBA,EAAO,QAAU6c,EAAS7c,EAEM0wB,OAAQA,EAAQ7T,OAAQA,GAAU,IAClEte,EAAM8oB,QAAQ9nB,KAAKu1B,GAEnB,IAAK,IAAI3vB,EAAI,EAAG8oB,EAAM1vB,EAAM+oB,2BAA2BliB,OAAQD,EAAI8oB,EAAK9oB,IACpE5G,EAAM+oB,2BAA2BniB,GAAG2vB,GAGxCv0B,EAAEoF,GAAG3F,GAAQ,SAAS8E,GAClB,IACIiwB,EADAzuB,EAAQ1I,KAkCZ,cA/BWkH,IAAYhB,GACnBixB,EAAOvwB,EAAM2D,KAAKlD,UAAW,GAE7BrH,KAAKgD,MAAK,WACN,IACIo0B,EACA7gB,EAFAuc,EAASnwB,EAAEkL,KAAK7N,KAAMoC,GAI1B,IAAK0wB,EACD,MAAM,IAAIriB,MAAM9P,EAAM+P,OAAO,2DAA4DxJ,EAAS9E,IAKtG,UAFAg1B,EAAStE,EAAO5rB,MAEMjB,EAClB,MAAM,IAAIwK,MAAM9P,EAAM+P,OAAO,kCAAmCxJ,EAAS9E,IAK7E,IAFAmU,EAAS6gB,EAAOhvB,MAAM0qB,EAAQqE,MAEfv0B,EAEX,OADA8F,EAAQ6N,GACD,MAIfvW,KAAKgD,MAAK,WACN,OAAO,IAAI8vB,EAAO9yB,KAAMkH,MAIzBwB,GAGX/F,EAAEoF,GAAG3F,GAAM0wB,OAASA,EAEpBnwB,EAAEoF,GAAG+mB,GAAU,WACX,OAAO9uB,KAAK6N,KAAKzL,OAK7BzB,EAAMgpB,GAAG0M,SAASpM,SAAW,CACzB4M,QAAS,cAGb,IAAIQ,GAAsB,CAAE7tB,KAAM,WAAa,OAAOxJ,MAASs3B,YAAY,EAAMpwB,QAAS,IAEtFqwB,GAAe7G,GAAO3tB,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS3E,GACpBwpB,GAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GACnClH,KAAK6L,QAAQ2rB,cACbx3B,KAAKoM,QAAUpM,KAAK6L,QACpB7L,KAAK6L,QAAQ0Y,SAAS,cAG1BviB,QAAS,WACL0uB,GAAO3oB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAK6L,QAAQ4rB,gBAGjBvwB,QAAS,CACL+X,OAAQ,UAGZ5U,OAAQ,GAERqtB,KAAM,WACF,IAAIC,EAAc33B,KAAK6L,QAAQQ,QAAQ1L,EAAMkvB,aAAa,oCAC1D,OAAOlvB,EAAMy1B,eAAeuB,EAAah3B,EAAMkpB,OAAOF,KAAO0N,IAGjEO,uBAAwB,WACpB,IAAIF,EAAO13B,KAAK03B,OAChB,OAAOA,GAAQA,EAAKxwB,QAAQ2wB,oBAGhCvB,UAAW,WACP,IAAIzqB,EAAU7L,KAAK6L,QAAQQ,QAAQ1L,EAAMkvB,aAAa,2CACtD,OAAOlvB,EAAMy1B,eAAevqB,EAAQisB,GAAG,GAAIn3B,EAAMkpB,OAAOF,KAAO0N,MAmIvE,SAASU,GAAUlsB,EAASmsB,GACxB,IAAIC,EAAWpsB,EAAQosB,SAAS3f,cAEhC,OAAQ,sCAAsCvL,KAAKkrB,IAC1CpsB,EAAQqsB,SACI,MAAbD,GACApsB,EAAQssB,MACRH,IAKZ,SAAiBnsB,GACb,OAAOlJ,EAAE2rB,KAAK8J,QAAQ9rB,QAAQT,KACzBlJ,EAAEkJ,GAASwsB,UAAUrC,UAAUC,QAAO,WACnC,MAAoC,WAA7BtzB,EAAEiK,IAAI5M,KAAK,iBACnBwH,OAPH8E,CAAQT,GAxIhB9I,EAAOpC,EAAMkpB,OAAQ,CACjB1hB,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASlL,EAAMkpB,OAAOF,GAAIhpB,EAAMgpB,GAAIhpB,EAAMmpB,QAAQH,KAGjE4L,MAAO,GAEP5L,GAAI,CACA+G,OAAQ6G,GACRzD,gBAAiBA,GAAgB/wB,OAAOw0B,GAAalvB,WACrDktB,MAAO,GACPyB,OAAQ,SAASlE,GACbnyB,EAAMgpB,GAAGqN,OAAOlE,EAAQnyB,EAAMkpB,OAAOF,GAAI,cAKrDnhB,GAAW7H,EAAMmpB,QAAS,CACtB3hB,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAASlL,EAAMmpB,QAAQH,KAEtCA,GAAI,CACA4L,MAAO,GACP+C,OAAQ,GACRC,MAAO,GACPvB,OAAQ,SAASlE,GACbnyB,EAAMgpB,GAAGqN,OAAOlE,EAAQnyB,EAAMmpB,QAAQH,MAG9C4L,MAAO,KAGX50B,EAAM63B,cAAgB,SAASrE,EAAUjtB,GAMrC,OAJKA,IAAWA,EAAU,IAE1BA,EAAQuxB,WAAY,EAEb91B,EAAEwxB,GAAU7Z,KAAI,SAAS1Q,EAAKiC,GAEjC,OADAA,EAAUlJ,EAAEkJ,MACRtI,EAAQgjB,sBAAuB5lB,EAAMkpB,OAAOF,GAAG+O,UAAa7sB,EAAQgC,KAAK,0BACzEhC,EAAQ8sB,oBAAoBzxB,GACrB2E,EAAQgC,KAAK,2BAIzB,IAGPlN,EAAMwI,eAAiB,SAASxE,GAC5BA,EAAEwE,kBAGNxI,EAAMy1B,eAAiB,SAASvqB,EAAS+sB,GACrC,IACkBrxB,EAAGC,EADjBsoB,EAAOjkB,EAAQgC,KAAKlN,EAAM6qB,GAAK,QAC/B/B,EAAU,GACVoP,EAAchtB,EAAQgC,KAAK,aAE/B,GAAIiiB,EAAM,CAQN,GANa,YAATA,IACAA,EAAO,YAKE,SAATA,GAAmB+I,EACnB,OAAOA,EAGX,GAAID,EACA,GAAIA,EAAO,GACP,IAAKrxB,EAAI,EAAGC,EAASoxB,EAAOpxB,OAAQD,EAAIC,EAAQD,IAC5CkiB,EAAQ9nB,KAAKi3B,EAAOrxB,GAAGguB,MAAMzF,SAGjCrG,EAAQ9nB,KAAKi3B,EAAOrD,MAAMzF,SAI9BrG,EAAU,CAAE9oB,EAAMgpB,GAAG4L,MAAMzF,GAAOnvB,EAAMmpB,QAAQH,GAAG4L,MAAMzF,GAAOnvB,EAAMkpB,OAAOF,GAAG4L,MAAMzF,IAO1F,IAJIA,EAAKna,QAAQ,MAAQ,IACrB8T,EAAU,CAAE9oB,EAAMmuB,OAAOgB,EAAbnvB,CAAmBG,KAG9ByG,EAAI,EAAGC,EAASiiB,EAAQjiB,OAAQD,EAAIC,EAAQD,IAAM,CACnD,IAAIurB,EAASrJ,EAAQliB,GACrB,GAAIurB,EAAQ,CACR,IAAI/L,EAAWlb,EAAQgC,KAAK,QAAUilB,EAAO/qB,GAAGb,QAAQ+X,OAAS6T,EAAO/qB,GAAGb,QAAQ9E,MACnF,GAAI2kB,EACA,OAAOA,MAO3BpmB,EAAMm4B,SAAW,SAAS9P,GACtB,IAAIlf,EAAUkf,EAMd,OALIzlB,EAAQkf,SAASnC,UACjBxW,EAAU,WAAaivB,WAAW/P,EAAU,OAGhDrmB,EAAE7B,GAAQmoB,GAAG1lB,EAAQgmB,OAAQzf,GACtBA,GAGXnJ,EAAMq4B,aAAe,SAAShQ,GAC1BrmB,EAAE7B,GAAQm4B,IAAI11B,EAAQgmB,OAAQP,IAGlCroB,EAAMu4B,UAAY,SAASrtB,EAAS0F,GAChC,OAAO1F,EAAQgC,KAAKlN,EAAM6qB,GAAKja,IAGnC5Q,EAAMwT,KAAO,CACTglB,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,UAAW,EACXC,SAAU,EACVC,OAAQ,EACRC,SAAU,GAsBd92B,EAAEI,OAAOJ,EAAE2rB,KAAK8J,QAAS,CACrBsB,eAAgB,SAAS7tB,GACrB,IAAIjC,EAAMjH,EAAEmgB,KAAKjX,EAAS,YAC1B,OAAOksB,GAAUlsB,GAAU/C,MAAMc,IAAQA,GAAO,MAIxD,IAAI+vB,GAAe,CAAC,YAAa,YAAa,aAAc,aAAc,YAAa,WAAY,UAAW,SAG1GC,GAAuB,CACvBC,eAAgB,WACZ,IAAIjwB,EAAM,EACNpC,EAASmyB,GAAanyB,OACtBqE,EAAUuD,SAASiK,gBAEvB,IAAIugB,GAAqBE,WAAcv2B,EAAQihB,aAA/C,CAIAoV,GAAqBE,WAAY,EAEjCF,GAAqBG,WAAY,EACjCH,GAAqBI,cAAe,EAepC,IAbA,IAAIlwB,EAAU,SAASnF,GACfi1B,GAAqBI,eACN,UAAXr1B,EAAEe,KACEk0B,GAAqBG,YAAcp3B,EAAEgC,EAAE2C,QAAQiF,GApBrC,uCAqBV5H,EAAEwE,iBACFxE,EAAEs1B,mBAGNt1B,EAAEs1B,oBAKPrwB,EAAMpC,EAAQoC,IACjBiC,EAAQpK,iBAAiBk4B,GAAa/vB,GAAME,GAAS,KAI7DowB,UAAW,SAASv1B,GAChBi1B,GAAqBI,cAAe,EAChCr1B,EAAEkJ,KAAKksB,YACPH,GAAqBG,WAAY,GAErCI,aAAaP,GAAqBQ,qBAGtCC,YAAa,WACTF,aAAaP,GAAqBQ,oBAClCR,GAAqBQ,mBAAqBrB,YAAW,WACjDa,GAAqBI,cAAe,EACpCJ,GAAqBG,WAAY,IAClC,OAIPO,GAAW,CACX9M,KAAM,uBACN+M,KAAM,sBACN9M,GAAI,+BACJ+M,OAAQ,0BAGRj3B,EAAQkb,QAAUlb,EAAQkf,SAASvB,KAAO3d,EAAQkf,SAASnC,SAC3Dga,GAAW,CACP9M,KAAM,aACN+M,KAAM,YACN9M,GAAI,uBACJ+M,OAAQ,eAELj3B,EAAQ8iB,SACfiU,GAAW,CACP9M,KAAM,cACN+M,KAAM,cACN9M,GAAI,YACJ+M,OAAQ,8BAELj3B,EAAQ4iB,aACfmU,GAAW,CACP9M,KAAM,gBACN+M,KAAM,gBACN9M,GAAI,cACJ+M,OAAQ,mCAIZj3B,EAAQ4iB,cAAgB,qBAAsBrlB,IAE9C6B,EAAEK,KAAK,CACHy3B,eAAgB,gBAChBC,eAAgB,iBACjB,SAAUC,EAAMC,GACfj4B,EAAEyc,MAAMyb,QAASF,GAAS,CACtBG,aAAcF,EACdG,SAAUH,EAEVI,OAAQ,SAAU5b,GACd,IAAI6b,EACA3zB,EAAStH,KACTk7B,EAAU9b,EAAM+b,cAChBC,EAAYhc,EAAMgc,UAStB,OALMF,IAAYA,IAAY5zB,GAAW3E,EAAEwyB,SAAU7tB,EAAQ4zB,MACzD9b,EAAM1Z,KAAO01B,EAAUC,SACvBJ,EAAMG,EAAUtxB,QAAQ1B,MAAOpI,KAAMqH,WACrC+X,EAAM1Z,KAAOk1B,GAEVK,OAOvB,IAAIK,GAAc,SAAS32B,GAAK,OAAQ21B,GAAS31B,IAAMA,GACnD42B,GAAa,WAEjB56B,EAAM66B,cAAgB,SAASnxB,EAAQmhB,GAOnC,OANAnhB,EAASA,EAAO5H,QAAQ84B,GAAYD,IAEhC9P,IACAnhB,EAASA,EAAO5H,QAAQ84B,GAAY,MAAQ/P,IAGzCnhB,GAGX1J,EAAM86B,eAAiB,SAAS92B,EAAGmuB,GAC/B,IAAIzoB,EAASyoB,EAAOvpB,QAAQmyB,aAE5B,IAAKrxB,EACD,OAAO,EAGXA,EAASA,EAAOzD,QAChBjC,EAAE2F,OAASwoB,EACXnuB,EAAEg3B,qBAAsB,EACxB,IAAK,IAAI/xB,EAAM,EAAGpC,EAAS6C,EAAO7C,OAAQoC,EAAMpC,EAAQoC,IACpDS,EAAOT,GAAKW,KAAKuoB,EAAQnuB,GAG7B,OAAQA,EAAEg3B,qBAGd,IAAI1S,GAAKtmB,EAAEoF,GAAGkhB,GAEd,SAAS2S,GAAYnW,EAAUoW,GAC3B,OAAO,IAAID,GAAY7zB,GAAGI,KAAKsd,EAAUoW,GAG7C/0B,GAAkB,EAAM80B,GAAaj5B,GAErCi5B,GAAY7zB,GAAK6zB,GAAYvzB,UAAY,IAAI1F,EAE7Ci5B,GAAY7zB,GAAGO,YAAcszB,GAE7BA,GAAY7zB,GAAGI,KAAO,SAASsd,EAAUoW,GAKrC,OAJIA,GAAWA,aAAmBl5B,KAAOk5B,aAAmBD,MACxDC,EAAUD,GAAYC,IAGnBl5B,EAAEoF,GAAGI,KAAKoC,KAAKvK,KAAMylB,EAAUoW,EAASC,KAGnDF,GAAY7zB,GAAGI,KAAKE,UAAYuzB,GAAY7zB,GAE5C,IAAI+zB,GAAaF,GAAYxsB,UAE7BrM,EAAO64B,GAAY7zB,GAAI,CACnB+B,QAAS,SAASA,GAEd,OADA9J,KAAK6N,KAAK,UAAW/D,GACd9J,MAGXw3B,YAAa,SAAShM,GAElB,OADAxrB,KAAK6N,KAAK,UAAW2d,GAAM7qB,EAAM8uB,QAC1BzvB,MAGXipB,GAAI,WACA,IAAIhhB,EAAOjI,KACPwrB,EAAKvjB,EAAK4F,KAAK,WAGnB,GAAyB,IAArBxG,UAAUG,OACV,OAAOyhB,GAAG1e,KAAKtC,EAAMZ,UAAU,IAGnC,IAAIw0B,EAAU5zB,EACVkvB,EAAOvwB,EAAM2D,KAAKlD,kBAEX8vB,EAAKA,EAAK3vB,OAAS,KAAOjB,GACjC4wB,EAAK9H,MAGT,IAAIrG,EAAWmO,EAAKA,EAAK3vB,OAAS,GAC9B6C,EAAS1J,EAAM66B,cAAcrE,EAAK,GAAI3L,GAG1C,GAAIjoB,EAAQwf,sBAAwB1Y,EAAO0xB,OAAO,gBAAkB,GAAK/7B,KAAK,KAAOoP,SAASiK,gBAAiB,CAC3GugB,GAAqBC,iBAErB,IAAIpU,EAA2B,IAAhB0R,EAAK3vB,OAAe,KAAO2vB,EAAK,GAC3C4C,EAAY1vB,EAAOsL,QAAQ,UAAY,GAAKtL,EAAOsL,QAAQ,aAAe,EAE9EsT,GAAG1e,KAAKvK,KACJ,CACIg8B,WAAYpC,GAAqBM,UACjC+B,SAAUrC,GAAqBS,aAEnC5U,EACA,CACIsU,UAAWA,IAIvB,IAAyC,IAArC1yB,UAAU,GAAGsO,QAAQ,YAAqBwhB,EAAK,IAAMA,EAAK,GAAGjwB,QAAS,CACtEiwB,EAAK,GAAK9sB,EACV,IAAIyoB,EAASqE,EAAK,GACd+E,EAAkB/E,EAAKA,EAAK3vB,OAAS,GAOzC,OANA2vB,EAAKA,EAAK3vB,OAAS,GAAK,SAAS7C,GAC7B,GAAIhE,EAAM86B,eAAe92B,EAAGmuB,GACzB,OAAOoJ,EAAgB9zB,MAAMpI,KAAM,CAAC2E,KAG3CskB,GAAG7gB,MAAMH,EAAMkvB,GACRlvB,EAgBX,cAbW+gB,IAAa9iB,IACpB21B,EAAU5zB,EAAK4F,KAAK,WACpBmb,EAAW6S,EAAQ7S,GAEnBmO,EAAKA,EAAK3vB,OAAS,GAAK,SAAS7C,GAC7BqkB,EAASze,KAAKsxB,EAASl3B,KAI/BwyB,EAAK,GAAK9sB,EAEV4e,GAAG7gB,MAAMH,EAAMkvB,GAERlvB,GAGXwvB,aAAc,SAASjM,GAOnB,OANAA,EAAKA,GAAMxrB,KAAK6N,KAAK,aAGjB7N,KAAKi5B,IAAI,IAAMzN,GAGZxrB,QAIfW,EAAM+G,OAASk0B,GACfj7B,EAAM25B,SAAWA,GAEjB35B,EAAMsc,SAAW,WACb,IAAI1I,EAAS,CAAE4nB,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAAIC,IAAK,IACzG3oB,EAAO,CAAE4oB,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAElE,SAASC,EAAWrhB,EAAMshB,GACtB,IAAIlnB,EACAmnB,EACAC,EACAh4B,EAAQ83B,EAAK,GACbtU,EAAKsU,EAAK,GACVG,EAAOH,EAAK,GACZI,EAAQJ,EAAK,GAMjB,OAJKI,IACDJ,EAAK,GAAKI,EAAQ,IAGlBA,EAAM1hB,GACC0hB,EAAM1hB,IAGZnT,MAAMmgB,GAEuB,IAAvBA,EAAGtT,QAAQ,SAClBU,EAAO,IAAIjI,KAAKA,KAAK4M,IAAIiB,EAAM1H,EAAO9O,GAAS,EAAG,EAAGi4B,EAAK,GAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAErFF,EAAYrpB,EAAK8U,EAAGzN,OAAO,EAAG,IAC9BiiB,EAASpnB,EAAKunB,YAEdvnB,EAAKwnB,WAAWxnB,EAAKnE,aAAesrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KAC5ExU,EAAGtT,QAAQ,OAAS,GAC3BU,EAAO,IAAIjI,KAAKA,KAAK4M,IAAIiB,EAAM1H,EAAO9O,GAAQwjB,EAAGzN,OAAO,GAAIkiB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAEvFF,EAAYrpB,EAAK8U,EAAGzN,OAAO,EAAG,IAC9BiiB,EAASpnB,EAAKunB,YAEdvnB,EAAKwnB,WAAWxnB,EAAKnE,aAAesrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KAC5ExU,EAAGtT,QAAQ,OAAS,IAC3BU,EAAO,IAAIjI,KAAKA,KAAK4M,IAAIiB,EAAM1H,EAAO9O,GAAQwjB,EAAGzN,OAAO,GAAIkiB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAEvFF,EAAYrpB,EAAK8U,EAAGzN,OAAO,EAAG,IAC9BiiB,EAASpnB,EAAKunB,YAEdvnB,EAAKwnB,WAAWxnB,EAAKnE,aAAesrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,KArBnFpnB,EAAO,IAAIjI,KAAKA,KAAK4M,IAAIiB,EAAM1H,EAAO9O,GAAQwjB,EAAIyU,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,IAwB1EC,EAAM1hB,GAAQ5F,GAGzB,SAASynB,EAASC,EAASC,EAAOC,GAG9B,KAFAD,EAAQA,EAAMC,IAEF,CACR,IAAIP,EAAOO,EAAKrzB,MAAM,KAClBmS,EAAS,EAMb,OAJI2gB,EAAKl2B,OAAS,IACduV,EAAmB,GAAV2gB,EAAK,GAAUprB,OAAOorB,EAAK,KAGjC,EAAE,IAAS,MAAO,IAAK,MAAO,EAAG,CAAC,EAAG,EAAG,GAAI3gB,EAAQ,KAG/D,IAAId,EAAO,IAAI7N,KAAK2vB,GAAS/rB,iBAE7BgsB,EAAQt2B,OAAOw2B,KAAKF,GAAO,SAAST,GAChC,IAAIY,EAAOZ,EAAK,GACZa,EAAKb,EAAK,GAEd,OAAOY,GAAQliB,IAASmiB,GAAMniB,GAASkiB,GAAQliB,GAAc,QAANmiB,GAAuB,OAANA,MAG5EJ,EAAMr8B,KAAKo8B,GAEXC,EAAM9Y,MAAK,SAAShgB,EAAGigB,GASnB,MARgB,iBAALjgB,IACPA,EAAIoN,OAAOgrB,EAAWrhB,EAAM/W,KAGhB,iBAALigB,IACPA,EAAI7S,OAAOgrB,EAAWrhB,EAAMkJ,KAGzBjgB,EAAIigB,KAGf,IAAIoY,EAAOS,EAAMt2B,OAAO2tB,QAAQ0I,EAASC,GAAS,IAAMA,EAAMA,EAAMx2B,OAAS,GAE7E,OAAOsB,MAAMy0B,GAAQA,EAAO,KA+BhC,SAASc,EAAYN,EAASO,EAAON,EAAO/gB,UAC7B8gB,GAAW53B,IAClB43B,EAAU3vB,KAAK4M,IAAI+iB,EAAQnnB,cAAemnB,EAAQpnB,WAC9ConB,EAAQtnB,UAAWsnB,EAAQlnB,WAAYknB,EAAQjnB,aAC/CinB,EAAQhnB,aAAcgnB,EAAQ/mB,oBAGtC,IAAIinB,EAnCR,SAAkBF,EAASO,EAAOrhB,GAC9B,IAAIshB,EAAYD,EAAMrhB,GAMtB,GAJyB,iBAAdshB,IACPA,EAAYD,EAAMC,KAGjBA,EACD,MAAM,IAAI9tB,MAAM,aAAewM,EAAW,qEAG9C,IAAK,IAAIrT,EAAM20B,EAAU/2B,OAAS,EAAGoC,GAAO,EAAGA,IAAO,CAClD,IAAI40B,EAAQD,EAAU30B,GAAK,GAE3B,GAAI40B,GAAST,EAAUS,EACnB,MAIR,IAAIP,EAAOM,EAAU30B,EAAM,GAE3B,IAAKq0B,EACD,MAAM,IAAIxtB,MAAM,aAAewM,EAAW,kBAAoB8gB,EAAU,KAG5E,OAAOE,EAUIQ,CAASV,EAASO,EAAOrhB,GAEpC,MAAO,CACHghB,KAAMA,EACNV,KAAMO,EAASC,EAASC,EAAOC,EAAK,KAuE5C,MAAO,CACJK,MAAO,GACPN,MAAO,GACPjhB,OAtEH,SAAgBghB,EAAS9gB,GACrB,GAAgB,WAAZA,GAAqC,WAAZA,EACzB,OAAO,EAGX,IAAIyhB,EAAOL,EAAYN,EAAS/9B,KAAKs+B,MAAOt+B,KAAKg+B,MAAO/gB,GACpDghB,EAAOS,EAAKT,KACZV,EAAOmB,EAAKnB,KAEhB,OAAO58B,EAAMoI,WAAWw0B,EAAOU,EAAK,GAAKV,EAAK,GAAKU,EAAK,KA8DzD/gB,QA3CH,SAAiB7G,EAAMsoB,EAAYC,GAC/B,IACIC,EADAC,EAAeF,SAGRD,GAAcz4B,IACrBy4B,EAAa3+B,KAAK+c,OAAO1G,EAAMsoB,WAGxBC,GAAY14B,IACnB04B,EAAW5+B,KAAK+c,OAAO1G,EAAMuoB,IAGjC,IAAIG,EAAkB1oB,EAAKY,oBAIvB+nB,GAFJ3oB,EAAO,IAAIjI,KAAKiI,EAAKpN,UAAsC,KAAzB01B,EAAaC,KAEtB3nB,oBAQzB,cANW6nB,GAAgB54B,IACvB44B,EAAe9+B,KAAK+c,OAAO1G,EAAMyoB,IAGrCD,EAAQG,EAAgBD,GAAoBH,EAAWE,GAEhD,IAAI1wB,KAAKiI,EAAKpN,UAAmB,IAAP41B,IAoBlCz2B,MAjBH,SAAeiO,EAAM4G,GAClB,OAAOjd,KAAKkd,QAAQ7G,EAAMA,EAAKY,oBAAqBgG,IAiBpD8Z,OAdH,SAAgB1gB,EAAM4G,GACnB,OAAOjd,KAAKkd,QAAQ7G,EAAM4G,EAAU5G,EAAKY,sBAczCjD,KA9DH,SAAc+pB,EAAS9gB,GACnB,IAAIyhB,EAAOL,EAAYN,EAAS/9B,KAAKs+B,MAAOt+B,KAAKg+B,MAAO/gB,GACpDghB,EAAOS,EAAKT,KACZV,EAAOmB,EAAKnB,KAEZv1B,EAAOi2B,EAAK,GAEhB,OAAIj2B,EAAK2N,QAAQ,MAAQ,EACd3N,EAAK4C,MAAM,KAAK2yB,IAASA,EAAK,GAAK,EAAI,GACvCv1B,EAAK2N,QAAQ,OAAS,EACtB3N,EAAKvF,QAAQ,KAAQ86B,GAAmB,KAAXA,EAAK,GAAkBA,EAAK,GAAV,IAGnDv1B,GAkDRi3B,YAZH,SAAqBvB,GACjB,OAAO19B,KAAKoI,MAAM,IAAIgG,KAAKsvB,GAAO,aAtMzB,GAqNjB/8B,EAAM0V,KAAO,WACT,IAAI6oB,EAAgB,IAChBC,EAAa,MAEjB,SAASziB,EAAUrG,EAAM8F,GACrB,OAAc,IAAVA,GAAmC,KAApB9F,EAAKQ,aACpBR,EAAKoG,SAASpG,EAAKQ,WAAa,IACzB,GAMf,SAASuoB,EAAa/oB,EAAM6F,EAAKmjB,GAC7B,IAAIljB,EAAQ9F,EAAKQ,WAEjBwoB,EAAMA,GAAO,EACbnjB,GAAQA,EAAM7F,EAAKK,SAAa,EAAI2oB,GAAQ,EAE5ChpB,EAAKipB,QAAQjpB,EAAKI,UAAYyF,GAC9BQ,EAAUrG,EAAM8F,GAGpB,SAASojB,EAAUlpB,EAAM6F,EAAKmjB,GAG1B,OADAD,EADA/oB,EAAO,IAAIjI,KAAKiI,GACG6F,EAAKmjB,GACjBhpB,EAGX,SAASmpB,EAAgBnpB,GACrB,OAAO,IAAIjI,KACPiI,EAAKO,cACLP,EAAKM,WACL,GAgCR,SAAS8oB,EAAeppB,EAAMqpB,GAC1B,IAAIC,EAAkB,IAAIvxB,KAAKiI,EAAKO,cAAe,EAAG,GAAI,GAEtDgpB,EAXR,SAA6BvpB,EAAMqpB,GAC/B,OAAqB,IAAjBA,EACOG,EAAQN,EAAUlpB,EAAMqpB,GAAe,GAAI,GAG/CG,EAAQxpB,EAAO,GAAKA,EAAKK,UAAY,IAM9BopB,CAAoBzpB,EAAMqpB,GAEpCK,EAAWH,EAAQ32B,UAAY02B,EAAgB12B,UAE/CkL,EAAO9Q,KAAKkN,MAAMwvB,EAAWZ,GAEjC,OAAO,EAAI97B,KAAKkN,MAAM4D,EAAO,GAwBjC,SAASsC,EAAQJ,GAGb,OADAqG,EADArG,EAAO,IAAIjI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAW,EAAG,EAAG,GAC3D,GACTJ,EASX,SAASW,EAAgBX,GACrB,OAAO2pB,EAAgB3pB,GAAMpN,UAAYwN,EAAQupB,EAAgB3pB,IA2CrE,SAASwpB,EAAQxpB,EAAM0G,GACnB,IAAIZ,EAAQ9F,EAAKQ,WAKjB,OAFAopB,EAFI5pB,EAAO,IAAIjI,KAAKiI,GAEN0G,EAASoiB,GACvBziB,EAAUrG,EAAM8F,GACT9F,EAGX,SAAS4pB,EAAQ5pB,EAAMgG,EAAc6jB,GACjC,IACIC,EADApjB,EAAS1G,EAAKY,oBAGlBZ,EAAK4pB,QAAQ5pB,EAAKpN,UAAYoT,GAEzB6jB,IACDC,EAAa9pB,EAAKY,oBAAsB8F,EACxC1G,EAAK4pB,QAAQ5pB,EAAKpN,UAAYk3B,EAAajB,IAUnD,SAASkB,IACL,OAAO3pB,EAAQ,IAAIrI,MAOvB,SAAS4xB,EAAgB3pB,GACrB,IAAIgqB,EAAa,IAAIjyB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAM5C,OAJIiI,GACAgqB,EAAW5jB,SAASpG,EAAKQ,WAAYR,EAAKS,aAAcT,EAAKU,aAAcV,EAAKW,mBAG7EqpB,EAGX,SAASC,EAAQjqB,EAAM0G,GACnB,IAAIwjB,EAAc,IAAInyB,KAAKiI,GAE3B,OAAO,IAAIjI,KAAKmyB,EAAY5jB,YAAY4jB,EAAY3pB,cAAgBmG,IAGxE,SAASyjB,EAAWxwB,EAAOtH,GACvB,IAAI+3B,EAAWzwB,EAAMA,EAAMxI,OAAS,GAChCi5B,GAA8B,YAAlBA,EAAS/6B,KACrB+6B,EAAS/sB,SAAWhL,EAEpBsH,EAAMrO,KAAK,CACP+D,KAAM,UACNgO,QAAShL,IAKrB,SAASg4B,EAAShtB,GACd,MAAmB,MAAZA,GAA+B,MAAZA,EAgB9B,SAASitB,EAAWC,EAAMC,EAAc/zB,GAEpC,OADAA,EAAWA,GAAY,EAChB8zB,EAAKjrB,QAAQkrB,EAAc/zB,KAAcA,EAkHpD,MAAO,CACH4P,UAAWA,EACX6iB,UAAWA,EACXH,aAAcA,EACd3oB,QAASA,EACTqqB,cAvNJ,SAAuBp4B,EAAOyN,EAAKyC,GAC/B,IAEImoB,EAFAC,EAAQ7qB,EAAIlN,UACZg4B,EAAQroB,EAAI3P,UAShB,OANI+3B,GAASC,IACTA,GAAS9B,IAGb4B,EAAUr4B,EAAMO,YAEE+3B,GAASD,GAAWE,GA6MtCC,cAlPJ,SAAuBx4B,EAAOyN,EAAKyC,GAC/B,IAEImoB,EAFAC,EAAQhqB,EAAgBb,GACxB8qB,EAAQjqB,EAAgB4B,GAG5B,OAAKlQ,GAASs4B,GAASC,IAInB9qB,GAAOyC,IACPA,GAAOumB,GAKP6B,GAFJD,EAAU/pB,EAAgBtO,MAGtBq4B,GAAW5B,GAGX8B,EAAQD,IACRC,GAAS9B,GAGN4B,GAAWC,GAASD,GAAWE,IA4NtCE,QA5KJ,SAAiB9qB,GACd,OAAOI,EAAQJ,GAAMpN,WAAam3B,IAAQn3B,WA4KzCm4B,QAAS,SAAS/qB,GACd,OAAOwpB,EAAQxpB,EAAM,IAEzBgrB,YAAa,SAAShrB,GAClB,OAAOwpB,EAAQxpB,GAAO,IAE1BirB,UApQJ,SAAmBjrB,GACf,OAAOjI,KAAK4M,IAAI3E,EAAKO,cAAeP,EAAKM,WAC7BN,EAAKI,UAAWJ,EAAKQ,WAAYR,EAAKS,aACtCT,EAAKU,aAAcV,EAAKW,oBAkQpCmoB,WAAYA,EACZoC,YAAa,KACbrC,cAAeA,EACfe,QAASA,EACTxjB,SAlMJ,SAAkBpG,EAAMqnB,GAGpB,OADAhhB,EADArG,EAAO,IAAIjI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAWinB,EAAK7mB,WAAY6mB,EAAK5mB,aAAc4mB,EAAK3mB,aAAc2mB,EAAK1mB,mBACjH0mB,EAAK7mB,YACdR,GAgMPwpB,QAASA,EACTO,MAAOA,EACPJ,gBAAiBA,EACjBR,gBAAiBA,EACjBgC,gBArHJ,SAAyB9wB,GAerB,IAdA,IAOI+wB,EACA/7B,EACAgF,EACA0J,EACAzO,EACA+7B,EAjDcC,EACdC,EAqCAluB,EApBR,SAAqBhD,EAAQguB,GACzB,IACInoB,EADAnB,EAAWspB,EAAKtpB,SAcpB,MAZsB,iBAAX1E,IAEH6F,EADAnB,EAASV,SAAShE,GACT0E,EAASV,SAAShE,GAElBA,GAIZ6F,IACDA,EAASnB,EAASV,SAASlQ,GAGxB+R,EAKOsrB,CAAYnxB,EADf/P,EAAM2S,WACuB7Q,QAAQ,OAAQ,QAAQA,QAAQ,KAAM,MAC1EuN,EAAQ,GACR2C,EAAmB,yLAEnBtB,EAAYsB,EAAiBtB,UAAY,EACzClB,EAAQwC,EAAiB0F,KAAK3E,GAQ3BvD,GAAO,CACV,IAAIzH,EAAQyH,EAAM,GAEdkB,EAAYlB,EAAM4I,OAClBynB,EAAWxwB,EAAO0D,EAAQ1I,UAAUqG,EAAWlB,EAAM4I,QAGrD4nB,EAAWj4B,EAAO,MAAQi4B,EAAWj4B,EAAO,KAC5C83B,EAAWxwB,EAAOtH,IAElB+4B,EAAY/4B,EAAM,GAElBgC,EAAO,CACHhF,KAFJA,EAAOzB,EAAew9B,GAGlB/tB,QAAShL,GAGA,SAAThD,IACAgF,EAAKo3B,OAASpB,EAASh4B,KAG3B0L,EAAQ5O,EAAWE,MAGfC,EAAuC,iBAApByO,EAAMzO,UAAyByO,EAAMzO,UAAYyO,EAAMzO,UAAU87B,IACpFC,EAAgBh5B,EAAMlB,SAED7B,GAAuB,OAAV+C,IAC9BgC,EAAK0J,MAAQ,CACT1O,KAAM0O,EAAM1O,KACZk8B,UAjFFD,EAiFyBD,EAhFvCE,SACAD,GAAgB,EAChBC,EAAW,cACa,IAAjBD,EACPC,EAAW,OACa,IAAjBD,IACPC,EAAW,UAGRA,GAwEah8B,WAAYwO,EAAMxO,aAAe67B,KAK7CzxB,EAAMrO,KAAK+I,IAGf2G,EAAYsB,EAAiBtB,UAC7BlB,EAAQwC,EAAiB0F,KAAK3E,GAOlC,OAJIrC,EAAYqC,EAAQlM,QACpBg5B,EAAWxwB,EAAO0D,EAAQ1I,UAAUqG,IAGjCrB,GAwDP+xB,cAjCJ,SAAuB76B,GAKnB,OAJWvG,EAAM2S,UACK8B,SAAS4sB,WACA96B,EAAQxB,OAAS,IAE3BwB,EAAQ06B,WA6B7BK,gBAtDJ,SAAyB/6B,GACrB,IAAIxB,EAAOwB,EAAQxB,KACfk8B,EAAW16B,EAAQ06B,SACnBlD,EAAO/9B,EAAM2S,UACA,SAAbsuB,IACAA,EAAW,SAEE,gBAAbA,IACAA,EAAW,aAEE,WAAbA,IACAA,EAAW,cAEf,IAAIrrB,EAASmoB,EAAKtpB,SAAS1P,GAAMk8B,GAIjC,OAHKrrB,IACDA,EAASmoB,EAAKtpB,SAAS1P,GAAY,MAEhC6Q,GAsCP2rB,eApVJ,SAAwB7rB,GACpB,IAAI8rB,EAAO,IAAI/zB,KAAKiI,EAAKO,cAAeP,EAAKM,WAAa,EAAG,GACzDzM,EAAQs1B,EAAgBnpB,GACxB+rB,EAAa/+B,KAAK6T,IAAIirB,EAAKlrB,oBAAsB/M,EAAM+M,qBAM3D,OAJImrB,GACAD,EAAK1lB,SAASvS,EAAM2M,WAAcurB,EAAa,IAG5CD,GA4UPE,WA7SJ,SAAoBhsB,EAAMqpB,GAClBA,IAAiB98B,IACjB88B,EAAe/+B,EAAM2S,UAAU8B,SAASH,UAG5C,IAAIqtB,EAAezC,EAAQxpB,GAAO,GAC9BksB,EAAe1C,EAAQxpB,EAAM,GAE7BmsB,EAAa/C,EAAeppB,EAAMqpB,GAEtC,OAAmB,IAAf8C,EACO/C,EAAe6C,EAAc5C,GAAgB,EAGrC,KAAf8C,GAAqB/C,EAAe8C,EAAc7C,GAAgB,EAC3D,EAGJ8C,GA4RPxrB,gBAAiBA,EACjByrB,eA3UJ,SAAwBpsB,GACpB,OAAO,IAAIjI,KAAKiI,EAAKO,cAAe,EAAG,IA2UvC8rB,cAxUJ,SAAuBrsB,GACnB,OAAO,IAAIjI,KAAKiI,EAAKO,cAAe,GAAI,KAwUxC+rB,SAAU,SAAStsB,GACf,OAAOiqB,EAAQjqB,EAAM,IAEzBusB,aAAc,SAASvsB,GACnB,OAAOiqB,EAAQjqB,GAAO,KAlYrB,GAwYb1V,EAAMkiC,gBAAkB,SAASh3B,GAC7B,GAAIuD,SAAS0zB,mBAKT,IAJA,IAAIC,EAAW3zB,SAAS0zB,mBAAmBj3B,EAASm3B,WAAWC,WAAW,SAASC,GAC3E,OAAOA,EAAKtd,YAAc/Z,EAAUm3B,WAAWG,cAAgBH,WAAWI,iBAC3E,GAEAL,EAASM,YACRN,EAASO,gBAAkBP,EAASO,cAAcC,YAAYC,QAC9DT,EAASO,cAAc1d,WAAWvH,YAAY0kB,EAASO,oBAI/D,IAAK,IAAI/7B,EAAI,EAAGA,EAAIsE,EAAQ43B,WAAWj8B,OAAQD,IAAK,CAChD,IAAIm8B,EAAQ73B,EAAQ43B,WAAWl8B,GAET,GAAlBm8B,EAAMhO,UAAkB,KAAK3oB,KAAK22B,EAAMC,aACxC93B,EAAQwS,YAAYqlB,GACpBn8B,KAGkB,GAAlBm8B,EAAMhO,UACN/0B,EAAMkiC,gBAAgBa,KAMtC,IAAIE,GAAiB9iC,EAAO+iC,uBACN/iC,EAAOgjC,6BACPhjC,EAAOijC,0BACPjjC,EAAOkjC,wBACPljC,EAAOmjC,yBACP,SAASjb,GAAY+P,WAAW/P,EAAU,IAAO,KAEvEroB,EAAMijC,eAAiB,SAAS5a,GAC5B4a,GAAer5B,KAAKzJ,EAAQkoB,IAGhC,IAAIkb,GAAiB,GAErBvjC,EAAMwjC,eAAiB,SAASnb,GAC5Bkb,GAAeA,GAAe18B,QAAUwhB,EACV,IAA1Bkb,GAAe18B,QACf7G,EAAMyjC,oBAIdzjC,EAAMyjC,iBAAmB,WACrBzjC,EAAMijC,gBAAe,WACbM,GAAe,KACfA,GAAeruB,OAAfquB,GACIA,GAAe,IACfvjC,EAAMyjC,wBAMtBzjC,EAAM0jC,uBAAyB,SAAShW,GAOpC,IANA,IACIiW,EAAS,GACTC,GAFclW,EAAIzjB,MAAM,KAAK,IAAM,IAEVA,MAAM,OAC/BpD,EAAS+8B,EAAW/8B,OACpBoC,EAAM,EAEHA,EAAMpC,EAAQoC,GAAO,EACA,KAApB26B,EAAW36B,KACX06B,EAAOxW,mBAAmByW,EAAW36B,KAASkkB,mBAAmByW,EAAW36B,EAAM,KAI1F,OAAO06B,GAGX3jC,EAAM6jC,mBAAqB,SAAS7/B,GAChC,QAAyB,IAAdA,EAAES,EAAEq/B,OACX,OAAOr1B,SAASyZ,iBAAiBlkB,EAAES,EAAEq/B,OAAQ9/B,EAAER,EAAEsgC,SAIzD9jC,EAAM+jC,YAAc,SAASC,GACzB,IAEIC,EAFAjgC,EAAIggC,EAAYhc,cAChBkc,EAASlgC,EAAE+/B,YAWf,OARQ//B,EAAEmgC,YACED,IAAWjiC,GAAeiiC,KAC1BD,EAAQjgC,EAAEmgC,YAEPngC,EAAEogC,QAAUpgC,EAAEqgC,OAASrgC,EAAEsgC,gBAChCL,EAAsB,IAAZjgC,EAAEogC,QAGbH,GAGXjkC,EAAMukC,SAAW,SAASn9B,EAAIo9B,GAC1B,IAAIC,EACAC,EAAe,EAEnB,IAAKF,GAASA,GAAS,EACnB,OAAOp9B,EAGX,IAAIu9B,EAAY,WACZ,IAAIr9B,EAAOjI,KACPulC,GAAW,IAAIn3B,KAASi3B,EACxBlO,EAAO9vB,UAEX,SAASgR,IACLtQ,EAAGK,MAAMH,EAAMkvB,GACfkO,GAAgB,IAAIj3B,KAIxB,IAAKi3B,EACD,OAAOhtB,IAGP+sB,GACAjL,aAAaiL,GAGbG,EAAUJ,EACV9sB,IAEA+sB,EAAUrM,WAAW1gB,EAAM8sB,EAAQI,IAQ3C,OAJAD,EAAU9K,OAAS,WACfL,aAAaiL,IAGVE,GAIX3kC,EAAM6kC,MAAQ,SAAS35B,EAASyJ,EAAO3J,GACnC,IAAI85B,EACAC,EAAapwB,IAAU1S,EAU3B,GARI+I,IAAQ/I,IACR+I,EAAM2J,GAGNzJ,EAAQ,KACRA,EAAUA,EAAQ,KAGlB65B,IAAc75B,EAAQqsB,SAA1B,CAIA,IACI,GAAIrsB,EAAQ85B,iBAAmB/iC,EAC3B,GAAI8iC,EAAY,CACZ75B,EAAQ+5B,QACR,IAAI/b,EAAStmB,EAAQkf,SACjBoH,EAAOzJ,IAAMyJ,EAAOvJ,QACpByY,YAAW,WAAaltB,EAAQg6B,kBAAkBvwB,EAAO3J,KAAS,GAGlEE,EAAQg6B,kBAAkBvwB,EAAO3J,QAGrC2J,EAAQ,CAACzJ,EAAQ85B,eAAgB95B,EAAQi6B,mBAE1C,GAAI12B,SAAS22B,UAOhB,GANIpjC,EAAEkJ,GAASU,GAAG,aACdV,EAAQ+5B,QAGZH,EAAe55B,EAAQm6B,kBAEnBN,EACAD,EAAaQ,UAAS,GACtBR,EAAaS,UAAU,YAAa5wB,GACpCmwB,EAAaU,QAAQ,YAAax6B,EAAM2J,GACxCmwB,EAAaW,aACV,CACH,IACIT,EAAgBG,EADhBO,EAAkBZ,EAAaa,YAG/Bb,EAAac,eAAen3B,SAAS22B,UAAUS,cAAcC,eAC7DJ,EAAgBK,YAAY,aAAcjB,GAE1CK,GADAH,EAAiBU,EAAgBzF,KAAKp5B,QACNi+B,EAAa7E,KAAKp5B,OAEtD8N,EAAQ,CAACqwB,EAAgBG,IAGnC,MAAOnhC,GAEL2Q,EAAQ,GAGZ,OAAOA,IAGX3U,EAAMgmC,kBAAoB,WACtB,IAAIC,EAAS,GACTC,EAAalkC,EAAE,0CAA0CmgB,KAAK,WAC9DgkB,EAAankC,EAAE,iDAAiDmgB,KAAK,WAUzE,OARAngB,EAAE,6CAA6CK,MAAK,WAChD4jC,EAAO5mC,KAAKoC,MAAQpC,KAAK0I,SAGzBo+B,IAAelkC,GAAeikC,IAAejkC,IAC/CgkC,EAAOE,GAAcD,GAGhBD,GAGXjmC,EAAMomC,UAAY,SAASC,GACvB,IAAIC,EAAeD,EAAKjR,KAAK,kDAAkD7rB,QAC3Eg9B,EAAcF,EAAKjR,KAAK,qBAAqBoM,OAEjD,SAASyD,EAAM/Y,GACX,IAAIiG,EAASnyB,EAAMy1B,eAAevJ,GAE9BiG,GAAUA,EAAO8S,MACnB9S,EAAO8S,QAEP/Y,EAAGziB,QAAQ,SAIjB88B,EAAYje,GAAG,WAAW,SAAStkB,GAC7BA,EAAEwiC,SAAWxmC,EAAMupB,KAAKI,KAAQ3lB,EAAEyiC,WACpCziC,EAAEwE,iBACFy8B,EAAMqB,OAIVA,EAAahe,GAAG,WAAW,SAAStkB,GAC9BA,EAAEwiC,SAAWxmC,EAAMupB,KAAKI,KAAO3lB,EAAEyiC,WACnCziC,EAAEwE,iBACFy8B,EAAMsB,QAKdvmC,EAAM0mC,aAAe,SAASx7B,GAC1B,IAAIy7B,EAAqB,GACrBC,EAAoB17B,EAAQ27B,aAAa,QACpCvR,QAAO,SAASld,EAAOlN,GAEpB,MAAkC,YADdlL,EAAMqO,kBAAkBnD,EAAS,CAAC,aACjC8gB,YAExB1f,IAAInM,GAEbymC,EAAkBvkC,MAAK,SAAS+V,EAAO5M,GACnCm7B,EAAmBvuB,GAASpW,EAAEwJ,GAAQwqB,eAG1C,IAEI9qB,EAAQ,GAAG47B,YACb,MAAO9iC,GACLkH,EAAQ,GAAG+5B,QAGf2B,EAAkBvkC,MAAK,SAAS+V,EAAO5M,GACnCxJ,EAAEwJ,GAAQwqB,UAAU2Q,EAAmBvuB,QAI/CpY,EAAM+mC,iBAAmB,WACrB,GAAIt4B,SAASgK,cAAe,CACxB,IAAIuuB,EAAahlC,EAAE,mBACfoW,EAAQ4uB,EAAW5uB,MAAM3J,SAASgK,eAEtC,GAAIL,GAAS,GACQ4uB,EAAW5uB,EAAQ,IAAM4uB,EAAW,IAC1C/B,UAKvBjlC,EAAM6iC,KAAO,SAAS96B,GAClB,OAAMA,EACKA,EAAMwI,WAAWsyB,OAEjB,IAIf7iC,EAAMinC,0BAA4B,SAAS/7B,GACvC,IAAIg8B,EAAgBh8B,EAAQQ,QAAQ,mBAChC+pB,EAAiBz1B,EAAMy1B,eAAevqB,GAa1C,OAVIg8B,EAAcrgC,OACLqgC,EACFzR,EACkC,WAAhCA,EAAelvB,QAAQ9E,KAC5BO,EAAEyzB,EAAenY,MACjBmY,EAAehqB,QAAQ2pB,KAAK,mBAAmB7rB,QAE1C2B,GAMjBlL,EAAMmnC,aAAe,SAASj8B,EAASk8B,EAAWr/B,GAC9C,IAAI+K,EAAU5H,EAAQiX,KAAKilB,IAAc,GAErCt0B,EAAQkC,QAAQjN,GAAS,GACzBmD,EAAQiX,KAAKilB,GAAYt0B,EAAU,IAAM/K,GAAO86B,SAIxD7iC,EAAMqnC,gBAAkB,SAASn8B,EAASk8B,EAAWr/B,GACjD,IAAI+K,EAAU5H,EAAQiX,KAAKilB,IAAc,GAEzCl8B,EAAQiX,KAAKilB,EAAWt0B,EAAQhR,QAAQiG,EAAO,IAAI86B,SAGvD7iC,EAAMsnC,gBAAkB,SAASp8B,EAASk8B,EAAWr/B,IACnCmD,EAAQiX,KAAKilB,IAAc,IAE7BpyB,QAAQjN,GAAS,EACzB/H,EAAMmnC,aAAaj8B,EAASk8B,EAAWr/B,GAEvC/H,EAAMqnC,gBAAgBn8B,EAASk8B,EAAWr/B,IAIlD/H,EAAMunC,aAAe,SAAS3nC,GAC1B,IAAIsB,EAAQlB,EAAMwnC,kBAAkB5nC,IAAeA,EACnD,OAAOgD,EAAQxC,YAAcD,EAAOC,WAAWc,GAAOL,SAG1Db,EAAMwnC,kBAAoB,SAASC,GAC/B,MAAO,CACHC,GAAM,qBACNC,GAAM,qBACNC,GAAM,qBACNC,GAAM,qBACNC,GAAM,uBACRL,IAGNznC,EAAM+nC,aAAe,CACjBC,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxGC,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAChG,MAAO,OAAQ,OAAQ,QAC/BC,MAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxF,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,OAAQ,SAChEC,IAAK,CAAC,OAAQ,QAAS,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QAClGC,aAAc,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,SAC/Cl7B,KAAM,CAAC,OAAQ,OAAQ,SACvBm7B,YAAa,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,QACzF,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,MAC1F,OAAQ,OAAQ,UAC9BC,IAAK,CAAC,QACNC,OAAQ,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,OAAQ,QAC5EC,IAAK,CAAC,MAAO,OAAQ,MAAO,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAAW,KAAM,OAAQ,SACtG,aAAc,CAAC,OAAQ,OAAQ,SAAU,OAAQ,OAAQ,OAAQ,SAGrExoC,EAAMyoC,aAAe,SAASC,EAAWC,GACrC,IAAIC,EAAc5oC,EAAM+nC,aACpBc,EAAS/oC,OAAOypB,KAAKqf,GACrB7jC,EAAO,OAEX,GAAI2jC,IAAczmC,IAAgBymC,EAAU7hC,OACxC,OAAO9B,EAGX,IAAK,IAAI6B,EAAI,EAAGA,EAAIiiC,EAAOhiC,OAAQD,GAAK,EAAG,CAGvC,GAFiBgiC,EAAYC,EAAOjiC,IAErBoO,QAAQ0zB,EAAU/wB,gBAAkB,EAChD,OAAOgxB,EAAa,QAAUE,EAAOjiC,GAAKiiC,EAAOjiC,GAIxD,OAAO7B,GAGX/E,EAAM8oC,mBAAqB,SAASh6B,GAGhC,GAAa,IAATA,EACA,MAAO,SAGX,IAAIlI,EAAI0R,SAAS5V,KAAKkN,MAAMlN,KAAKotB,IAAIhhB,GAAQpM,KAAKotB,IAAI,OAAQ,IAC9D,OAAOptB,KAAK0S,MAAMtG,EAAOpM,KAAKqmC,IAAI,KAAMniC,GAAI,GAAK,IAPrC,CAAC,QAAS,KAAM,KAAM,KAAM,MAOqBA,IAGjE5G,EAAMgpC,oBAAsB,SAAS5hB,GACjC,MAAO,IAAMA,EAAQnd,MAAM,KAAKC,KAAK,MAKzC,IAAI++B,GAAmB,CAAC,OAAQ,UAAW,YAAa,WAAY,UAAW,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,WACnIC,GAAa,CAAC,QAAS,UAAW,QAElCC,GAAc,CAAC,YAAa,UAC5BC,GAAa,CAAE,CAAC,QAAS,MAAO,CAAC,SAAU,MAAO,CAAC,QAAS,OAC5DC,GAAgB,CAAE,CAAC,QAAS,MAAO,CAAC,SAAU,MAAO,CAAC,QAAS,OAE/DC,GAAqB,CAAE,QAAS,SAAU,SAAU,YACpDC,GAAe,CAAE,CAAC,OAAQ,UAAW,CAAC,aAAc,YAAa,CAAC,WAAY,aAC9EC,GAAiB,CAAE,OAAQ,SAAU,UAAW,SAAU,QAE9DxpC,EAAM+xB,cAAiB,WACnB,IAAI0X,EAAgB,GAuCpB,SAASC,EAAiBtX,EAAUrqB,EAAO4hC,GAClCF,EAAcrX,KACfqX,EAAcrX,GAAY,IAG9BqX,EAAcrX,GAAUrqB,GAAS4hC,GAAa5hC,EAGlD,SAAS6hC,EAAmBxX,EAAUyX,GAClC,IAAK,IAAIjjC,EAAI,EAAGA,EAAIijC,EAAIhjC,OAAQD,IACxBtE,EAAQunC,EAAIjjC,IACZ8iC,EAAiBtX,EAAUyX,EAAIjjC,GAAG,GAAIijC,EAAIjjC,GAAG,IAE7C8iC,EAAiBtX,EAAUyX,EAAIjjC,IAuD3C,OATAgjC,EAAmB,aAAcX,IACjCW,EAAmB,WAAYV,IAC/BU,EAAmB,QAAST,IAC5BS,EAAmB,OAAQR,IAC3BQ,EAAmB,eAAgBN,IACnCM,EAAmB,UAAWP,IAC9BO,EAAmB,SAAUL,IAC7BK,EAAmB,WAAYJ,IAExB,CACHF,mBAAoBA,GACpBD,cAAeA,GACfD,WAAYA,GACZD,YAAaA,GACbW,eAAgBZ,GAChBD,iBAAkBA,GAElBQ,cAAeA,EACfzX,mBAnHqB,GAqHrB+X,eAzGJ,SAAwB5X,EAAQqE,GAC5B,IACI5vB,EAAGojC,EAAGxb,EAAMrW,EAAQ8xB,EAAWC,EAD/BC,EAAOnqC,EAAM+xB,cAAcC,mBAG/B,IAAKprB,EAAI,EAAGA,EAAI4vB,EAAK3vB,OAAQD,IAUzB,IATA4nB,EAAOgI,EAAK5vB,GAAG4nB,KACfyb,EAAYzT,EAAK5vB,GAAGuR,OAEfgyB,EAAKhY,GAAQ3D,KACd2b,EAAKhY,GAAQ3D,GAAQ,IAGzBrW,EAASgyB,EAAKhY,GAAQ3D,GAEjBwb,EAAI,EAAGA,EAAIC,EAAUpjC,OAAQmjC,IAC9BE,EAAeD,EAAUD,GAErB1nC,EAAQ2nC,EAAUD,IAClB7xB,EAAO+xB,EAAa,IAAMA,EAAa,GAEvC/xB,EAAO+xB,GAAgBA,GAsFnChY,cA9DJ,SAAuBsE,GACnB,IAQI4T,EAAcC,EAAY/rB,EAR1B6T,EAASqE,EAAKrE,OACdC,EAAWoE,EAAKpE,SAChBrqB,EAAQyuB,EAAKzuB,MACbuqB,EAAOkE,EAAKlE,KACZP,EAAgB/xB,EAAM+xB,cACtB0X,EAAgB1X,EAAc0X,cAAcrX,GAC5CkY,EAAmBvY,EAAcC,mBAAmBG,GACpDoY,EAAiB/T,EAAKlY,OAG1B,OAAKgsB,IAKLD,GADAD,EAAeE,EAAiBlY,KACJgY,EAAariC,IAAiC0hC,EAAc1hC,KAIhFuW,EADa,eAAb8T,EACSkY,EAAuB,OAAIhY,EAAO,IACvB,iBAAbF,EACE,SACW,YAAbA,EACE,aACW,WAAbA,EACE,KACW,aAAbA,EACE,cAEAkY,EAAuB,QAGpChsB,EAASisB,GAAkBjsB,GAEX+rB,GAvBT,IAmDXG,eArHJ,SAAwBrY,EAAQ7T,GAC5B,IAAI6rB,EAAOnqC,EAAM+xB,cAAcC,mBAE1BmY,EAAKhY,KACNgY,EAAKhY,GAAU,IAGnBgY,EAAKhY,GAAc,OAAI7T,IAXT,GA8HtBte,EAAM0pC,iBAAmB,SAAStX,EAAUrqB,EAAO4hC,GAC1C3pC,EAAMyqC,sBAAsBrY,KAC7BpyB,EAAMyqC,sBAAsBrY,GAAY,IAG5CpyB,EAAMyqC,sBAAsBrY,GAAUrqB,GAAS4hC,GAAa5hC,GAGhE/H,EAAM4pC,mBAAqB,SAASxX,EAAUyX,GAC1C,IAAK,IAAIjjC,EAAI,EAAGA,EAAIijC,EAAIhjC,OAAQD,IACxBtE,EAAQunC,EAAIjjC,IACZ5G,EAAM0pC,iBAAiBtX,EAAUyX,EAAIjjC,GAAG,GAAIijC,EAAIjjC,GAAG,IAEnD5G,EAAM0pC,iBAAiBtX,EAAUyX,EAAIjjC,KAKjD5G,EAAM0qC,iBAAmB,SAASpsB,EAAQ8T,EAAUrqB,GAChD,IAAIsiC,EAAarqC,EAAMyqC,sBAAsBrY,GAAUrqB,GAEvD,GAAIsiC,EACA,OAAO/rB,EAAS+rB,GAIxBrqC,EAAMyqC,sBAAwB,GAE9BzqC,EAAM4pC,mBAAmB,aAAcX,IACvCjpC,EAAM4pC,mBAAmB,OAAQV,IAEjClpC,EAAM4pC,mBAAmB,QAAST,IAClCnpC,EAAM4pC,mBAAmB,OAAQR,IAEjCppC,EAAM4pC,mBAAmB,eAAgBN,IAEzCtpC,EAAM2qC,+BAAiC,SAASz/B,EAAS0/B,GACrD,IAAI9lB,EAAW8lB,EAAWjxB,KAAI,SAAUkxB,GAAY,MAAQ,IAAO7qC,EAAMmiB,KAAM,SAAW0oB,GAAe,OAAS3gC,KAAK,KACvHgB,EAAQkqB,KAAKtQ,GAAUuQ,QAAQvQ,GAAUziB,MAAK,SAAUgrB,EAAGyd,GACvD,IAAIC,EAAkB/oC,EAAE8oC,GACxBF,EAAWjqC,SAAQ,SAASkqC,GACxB,IAAIG,EAAYhrC,EAAMmiB,KAAM,SAAW0oB,GACnCE,EAAgB5oB,KAAK6oB,KACrBD,EAAgB9+B,IAAI4+B,EAAWE,EAAgB5oB,KAAK6oB,IACpDD,EAAgBpa,WAAWqa,WAS3ChrC,EAAMirC,QAAU,SAASpxB,GACrB,IASI9R,EATAmjC,EAAoC,GAApBxkC,UAAUG,QAAetE,MAAMD,QAAQuX,GAASA,EAAQtX,MAAMmF,UAAUzB,MAAM2D,KAAKlD,WACnGG,EAASqkC,EAAcrkC,OACvBskC,EAAYtkC,EACZukC,EAAWppC,EAAEqpC,WACbzkC,EAAI,EACJ0kC,EAAS,EACTC,EAAiBhpC,MAAMsE,GACvB2kC,EAAejpC,MAAMsE,GACrB4kC,EAAkBlpC,MAAMsE,GAG5B,SAAS6kC,EAAWtzB,EAAOuzB,EAAUxzB,GACjC,OAAO,WACCA,GAAU+yB,GACVI,IAGJF,EAASQ,WACLD,EAASvzB,GAAS/Y,KAClB8Y,EAAOC,GAAS7V,MAAMmF,UAAUzB,MAAM2D,KAAKlD,cAGvCykC,GACJC,GAAWE,EAAqB,SAAZ,WAAwB,QAAQK,EAAUxzB,IAK1E,KAAOvR,EAAIC,EAAQD,KACVmB,EAAQmjC,EAActkC,KAAO5G,EAAMuI,WAAWR,EAAMue,SACrDve,EAAMue,UACDulB,KAAKH,EAAW9kC,EAAG6kC,EAAiBP,IACpCY,KAAKJ,EAAW9kC,EAAG2kC,EAAgBC,KAIxCJ,EAASQ,WAAWvsC,KAAM0I,KACxBojC,GAQV,OAJKA,GACDC,EAASW,YAAYN,EAAiBP,GAGnCE,EAAS9kB,WAIpB,WACI,SAAS0lB,EAAYC,EAASC,EAAUC,EAAUC,GAC9C,IAAI/F,EAAOrkC,EAAE,UAAUmgB,KAAK,CACxBkqB,OAAQF,EACR1V,OAAQ,OACR9vB,OAAQylC,IAGRl/B,EAAOlN,EAAMgmC,oBACjB94B,EAAKg/B,SAAWA,EAEhB,IAAI78B,EAAQ48B,EAAQhiC,MAAM,YAI1B,IAAK,IAAIxI,KAHTyL,EAAKo/B,YAAcj9B,EAAM,GAAGvN,QAAQ,QAAS,IAC7CoL,EAAKq/B,OAASl9B,EAAM,GAEHnC,EACTA,EAAKa,eAAetM,IACpBO,EAAE,WAAWmgB,KAAK,CACdpa,MAAOmF,EAAKzL,GACZA,KAAMA,EACNsD,KAAM,WACPynC,SAASnG,GAIpBA,EAAKmG,SAAS,QAAQC,SAASrW,SAGnC,IAAIsW,EAAYj+B,SAAS0O,cAAc,KACnCwvB,EAAoB,aAAcD,IAAc1sC,EAAM4C,QAAQye,QAAQiB,KAE1E,SAASsqB,EAAWX,EAASC,GACzB,IAAIW,EAAOZ,EAEX,GAAsB,iBAAXA,EAAqB,CAM5B,IALA,IAAI58B,EAAQ48B,EAAQhiC,MAAM,YACtBqiC,EAAcj9B,EAAM,GACpBk9B,EAASO,KAAKz9B,EAAM,IACpBwK,EAAQ,IAAIkzB,WAAWR,EAAO1lC,QAEzBoC,EAAM,EAAGA,EAAMsjC,EAAO1lC,OAAQoC,IACnC4Q,EAAM5Q,GAAOsjC,EAAO57B,WAAW1H,GAEnC4jC,EAAO,IAAIG,KAAK,CAACnzB,EAAMozB,QAAS,CAAEloC,KAAMunC,IAG5CnrB,UAAU+rB,WAAWL,EAAMX,GAG/B,SAASiB,EAAclB,EAASC,GACxB/rC,EAAO6sC,MAAQf,aAAmBe,OAClCf,EAAUmB,IAAIC,gBAAgBpB,IAGlCS,EAAUY,SAAWpB,EACrBQ,EAAUlV,KAAOyU,EAEjB,IAAIjoC,EAAIyK,SAAS8+B,YAAY,eAC7BvpC,EAAEwpC,eAAe,SAAS,GAAM,EAAOrtC,EACnC,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAElDusC,EAAUe,cAAczpC,GACxBo0B,YAAW,WACPgV,IAAIM,gBAAgBzB,MAI5BjsC,EAAM2tC,OAAS,SAASpnC,GACpB,IAAIqnC,EAAO5B,EAENzlC,EAAQsnC,aACLlB,EACAiB,EAAOT,EACAhsB,UAAU+rB,aACjBU,EAAOhB,IAIfgB,EAAKrnC,EAAQ0lC,QAAS1lC,EAAQ2lC,SAAU3lC,EAAQ4lC,SAAU5lC,EAAQ6lC,cA9E1E,GAmFApsC,EAAM8tC,kBAAoB,SAA2B5gC,GACjD,IAAI6gC,EAAa,GAcjB,OAZAjuC,OAAOypB,KAAKrc,GAAQ,IAAIvM,SAAQ,SAASiM,GACvC9M,OAAOkuC,eAAeD,EAAYnhC,EAAU,CAC1CgiB,IAAK,WACH,OAAO1hB,EAAKN,IAEdiiB,IAAK,SAAS9mB,GACZmF,EAAKN,GAAY7E,EACjBmF,EAAK+gC,OAAQ,QAKZF,GAGX/tC,EAAMkuC,gBAAkB,WACpB,IAMIC,EAASnsC,EANc,sNAOvBosC,EAAS,GAUb,OARAD,EAAO3B,SAASxqC,EAAE,SAElBmsC,EAAO9rC,MAAK,SAASuE,EAAGynC,GACpBD,EAAOptC,KAAKgB,EAAEqsC,GAAMpiC,IAAI,wBAG5BkiC,EAAO/X,SAEAgY,GAGXpuC,EAAMsuC,UAAY,SAASpjC,GACvB,OAAOA,aAAmBsb,SAAWtb,aAAmBqjC,cAMxDvuC,EAAMC,SAAWD,EAAMC,UAAY,GACnCD,EAAMwuC,YAAc,SAAS59B,EAAK7I,GAC9B,IAAI0mC,EAAO79B,EAAI3G,MAAM,KACjBykC,EAAO1uC,EAAMC,SAEjB2Q,EAAM69B,EAAK/f,MAEX+f,EAAK9tC,SAAQ,SAASoJ,GACd2kC,EAAK3kC,KAAU9H,IACfysC,EAAK3kC,GAAQ,IAGjB2kC,EAAOA,EAAK3kC,MAGZhC,EAAMJ,cAAgB7H,OACtB4uC,EAAK99B,GAAO/I,GAAW,GAAI6mC,EAAK99B,GAAM7I,GAEtC2mC,EAAK99B,GAAO7I,GAKpB/H,EAAM6P,eAAiB1P,EAAOwuC,sBAG9B3uC,EAAMwuC,YAAY,cAAehvC,GAKjCQ,EAAM4uC,WAAa,GAEnB7nC,OAAO1E,KAAM,uEAAuE4H,MAAO,MACvF,SAAU4kC,EAAIptC,GACVzB,EAAM4uC,WAAY,WAAantC,EAAO,KAAQA,EAAKkW,iBAG3D3X,EAAM+E,KAAO,SAASsnB,GAClB,OAAY,MAAPA,EACMA,EAAM,GAIK,iBAARA,GAAmC,mBAARA,EACrCrsB,EAAM4uC,WAAW9uC,OAAO4H,UAAU6I,SAAS3G,KAAKyiB,KAAS,gBAClDA,GAInB,IAAI2D,eAAiB,CAAEC,gBAAiB,aAAc6e,aAAc,cAEpE3uC,EAAO6vB,eAAiB,CACpB8e,aAAc9e,eAAe8e,cAl3KrC,CAy3KG/nC,OAAQ5G,QACGH,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfipB,EAAKjpB,EAAM6lB,QACXxjB,EAAOL,EAAEK,KACTD,EAASJ,EAAEI,OACXQ,EAAU5C,EAAM4C,QAChBye,EAAUze,EAAQye,QAClBpD,EAAarb,EAAQqb,WACrBD,EAAcpb,EAAQob,YACtB+wB,EAAkB,CAAEC,MAAO,EAAGC,OAAQ,EAAGC,OAAQ,EAAGC,QAAS,GAC7DC,EAAsB,CAAEC,UAAW,EAAGC,WAAY,EAAGC,WAAY,EAAGC,YAAa,GACjFC,OAA0D,IAAxChhC,SAASiK,gBAAgB5M,MAAM4jC,OAA0BzxB,EAC3E0xB,EAAiB,iGACjBC,EAAkB,oDAClBC,EAAmB,gBACnBC,EAAmB,0BACnBC,EAAqB,qBACrBC,EAAa,SACbC,EAAiB,CAAC,cAAe,SAAU,UAAW,UAAW,UAAW,WAAY,QAAS,SAAU,SAAU,SAAU,UAAW,OAAQ,QAAS,QAAS,YAAa,aAAc,aAAc,aAAc,cAAe,SAAU,YACpPC,EAAc,CAAC,SAAU,QAAS,SAAU,SAAU,OAAQ,QAAS,QAAS,YAAa,aAAc,aAAc,UACzHC,EAAkB,CAAEC,OAAU,MAAOpB,MAAO,GAAIqB,KAAM,KAAMhB,UAAW,MACvEiB,EAAYryB,EAAWhS,IACvBmJ,EAAQ1S,KAAK0S,MAEbm7B,EAAK,KAELC,EAAO,OACPC,EAAQ,QACRC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAW,UACXC,EAAW,WACXC,EAAY,YACZC,EAAW,WACXC,EAAoB,mBACpBC,EAAaZ,EAAY,aACzBa,EAAYb,EAAY,YACxBc,EAAWd,EAAY,sBACvBe,EAAcf,EAAY,cAC1BgB,EAAsB,SACtBC,EAAwB,sBACxB3kB,EAAa,CACT1B,KAAM,CACF/V,QAAS,QACTvI,SAAU,OACV4kC,WAAY,aACZC,UAAU,EACVC,UAAW,GAEfvmB,MAAO,CACHhW,QAAS,OACTvI,SAAU,OACV4kC,WAAY,aACZC,UAAU,EACVC,SAAU,GAEd7kB,KAAM,CACF1X,QAAS,KACTvI,SAAU,MACV4kC,WAAY,aACZC,UAAU,EACVC,SAAU,GAEd5kB,GAAI,CACA3X,QAAS,OACTvI,SAAU,MACV4kC,WAAY,aACZC,UAAU,EACVC,UAAW,GAEfjuB,IAAK,CACDtO,QAAS,UAEbiW,OAAQ,CACJjW,QAAS,OAEb4X,GAAM,CACF5X,QAAS,MACTu8B,UAAW,GAEf1kB,IAAK,CACD7X,QAAS,KACTu8B,SAAU,GAGdD,SAAU,CACNt8B,QAAS,YAGbw8B,WAAY,CACRx8B,QAAS,eAkBrB,GAdAnV,EAAM4sB,WAAaA,EAEnBxqB,EAAOJ,EAAEoF,GAAI,CACT0f,UAAW,SAASC,EAAYC,GAC5B,OAAIhJ,EACOiL,EAAG2oB,UAAUvyC,KAAM0nB,IAAc,EAAOC,IAAW,GAEnD3nB,KAAK4nB,KAAKF,EAAYC,MAOrC/I,IAAeD,EAAa,CAC5B3b,EAAK6tC,GAAa,SAASjnC,EAAKlB,GAC5B/F,EAAEoF,GAAGW,GAAS,SAASwmB,GACnB,QAAkB,IAAPA,EACP,OAAOsjB,EAAkBxyC,KAAM0I,GAE/B,IAAIT,EAAOtF,EAAE3C,MAAM,GACfyyC,EAAiB/pC,EAAQ,IAAMwmB,EAAM4hB,EAAgBpoC,EAAMjG,QAAQkuC,EAAY,KAAO,IAQ9F,OANkD,GAA1C1oC,EAAKwE,MAAMsR,QAAQpI,QAAQm8B,GAC3BnvC,EAAE3C,MAAM4M,IAAIklC,EAAWW,GAEvBxqC,EAAKwE,MAAMsR,QAAU9V,EAAKwE,MAAMsR,QAAQtb,QAAQ,IAAIwL,OAAOvF,EAAQ,YAAa,KAAM+pC,GAGvFzyC,MAGX2C,EAAEinB,GAAG8oB,KAAKhqC,GAAS,SAASkhB,GACxBjnB,EAAEinB,EAAG+oB,MAAMjqC,GAAOkhB,EAAGgpB,SAI7B,IAAIC,EAAWlwC,EAAEinB,GAAGvhB,UAAUyqC,IAC9BnwC,EAAEinB,GAAGvhB,UAAUyqC,IAAM,WACjB,OAAuC,GAAnCjC,EAAYl7B,QAAQ3V,KAAKmvB,MAClBpmB,WAAWpG,EAAE3C,KAAK2yC,MAAM3yC,KAAKmvB,SAGjC0jB,EAASzqC,MAAMpI,KAAMqH,YA+DpC,SAAS0rC,EAAarqC,GAClB,OAAOuQ,SAASvQ,EAAO,IAG3B,SAASsqC,EAASnnC,EAAS0B,GACvB,OAAOwlC,EAAalnC,EAAQe,IAAIW,IAWpC,SAAS0lC,EAAkBhkC,GACvB,IAAK,IAAIsC,KAAOtC,GACwB,GAAhC2hC,EAAej7B,QAAQpE,KAA2C,GAA7Bs/B,EAAYl7B,QAAQpE,WAClDtC,EAAWsC,GAI1B,OAAOtC,EAGX,SAASikC,EAAarnC,EAASoD,GAC3B,IAAyCkkC,EAAU5hC,EAAK7I,EAAO0qC,EAA3DC,EAAiB,GAAIC,EAAY,GAErC,IAAK/hC,KAAOtC,EACRkkC,EAAW5hC,EAAI+G,cACf86B,EAAgBx0B,IAAmD,GAArCgyB,EAAej7B,QAAQw9B,IAEhD5vC,EAAQub,SAAWs0B,IAAmD,GAAlCvC,EAAYl7B,QAAQw9B,UAClDlkC,EAAWsC,IAElB7I,EAAQuG,EAAWsC,GAEf6hC,EACAC,EAAe1xC,KAAK4P,EAAM,IAAM7I,EAAQ,KAExC4qC,EAAU/hC,GAAO7I,GAS7B,OAJI2qC,EAAe7rC,SACf8rC,EAAUxB,GAAauB,EAAexoC,KAAK,MAGxCyoC,EAuGX,SAASd,EAAkB3mC,EAAS0B,GAChC,GAAIqR,EAAY,CACZ,IAAI20B,EAAY1nC,EAAQe,IAAIklC,GAC5B,GA5UG,QA4UCyB,EACA,MAAmB,SAAZhmC,EAAsB,EAAI,EAGrC,IAAI4C,EAAQojC,EAAUpjC,MAAM,IAAIlC,OAAOV,EAAW,0BAC9CimC,EAAW,EAmBf,OAjBIrjC,EACAqjC,EAAWT,EAAa5iC,EAAM,KAE9BA,EAAQojC,EAAUpjC,MAAMmgC,IAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,GACxD/iC,EAAWA,EAAS+K,cAEhBk4B,EAAiBzjC,KAAKQ,GACtBimC,EAAWzqC,WAAWoH,EAAM,GAAKA,EAAM,IACpB,cAAZ5C,EACPimC,EAAWzqC,WAAWoH,EAAM,GAAKA,EAAM,IACpB,SAAZ5C,EACPimC,EAAWzqC,WAAWoH,EAAM,IACT,UAAZ5C,IACPimC,EAAWzqC,WAAW1F,KAAKowC,MAAMtjC,EAAM,GAAIA,EAAM,OAIlDqjC,EAEP,OAAOzqC,WAAW8C,EAAQe,IAAIW,IAjPtC5M,EAAMqnB,YAAc,SAASnc,EAASkc,EAAS7gB,EAAS+F,GAsBpD,OArBI8a,IACAA,EAAUA,EAAQnd,MAAM,KAEpB+T,IACAzX,EAAUnE,EAAO,CACb2wC,UAAW,MACXhtB,SAAU,IACVitB,KAAM,YACPzsC,GAEH2E,EAAQe,IAAIilC,EAAY3qC,EAAQwsC,UAAY,IAAMxsC,EAAQwf,SAAW,MAAQxf,EAAQysC,MACrF5a,YAAW,WACPltB,EAAQe,IAAIilC,EAAY,IAAIjlC,IAAIykC,KACjCnqC,EAAQwf,WAGf1jB,EAAK+kB,GAAS,SAASne,EAAKlB,GACxBmD,EAAQmc,YAAYtf,EAAOuE,OAI5BpB,GAGXlL,EAAM2sB,aAAe,SAAS7I,EAAOmvB,GACjC,IAAIptB,EAAU,GA8Bd,MA5BqB,iBAAV/B,EACPzhB,EAAKyhB,EAAM7Z,MAAM,MAAM,SAAShB,EAAKlB,GACjC,IAAImrC,GAAoBnD,EAAmB3jC,KAAKrE,GAI5CorC,EAHWprC,EAAMjG,QAAQguC,GAAkB,SAAStgC,EAAO4jC,EAAIC,GAC3D,OAAOD,EAAK,IAAMC,EAAG17B,iBAEP1N,MAAM,KACxBqpC,EAAYH,EAAO,GACnBI,EAAa,GAEbJ,EAAOtsC,OAAS,IAChB0sC,EAAWD,UAAaL,GAAUC,EAAmBtmB,EAAW0mB,GAAWn+B,QAAUm+B,GAGzFztB,EAAQstB,EAAO,IAAMI,KAGzBlxC,EAAKyhB,GAAO,SAAS7a,GACjB,IAAIqqC,EAAYj0C,KAAKi0C,UAEjBA,GAAaL,IAAWlD,EAAmB3jC,KAAKnD,KAChD5J,KAAKi0C,UAAY1mB,EAAW0mB,GAAWn+B,SAG3C0Q,EAAQ5c,GAAO5J,QAIhBwmB,GAwDP7H,GACA5b,EAAO6mB,EAAI,CACPuoB,WAAY,SAAStmC,EAASoD,EAAY/H,GACtC,IAAI0F,EAGAunC,EAFAhP,EAAQ,EACRiP,EAAUvoC,EAAQgC,KAAK,SAAW,GAGtC3G,EAAUnE,EAAO,CACT2jB,SAAU,IACVitB,KAAM,WACNhtB,SAAU,KACV+sB,UAAW,OAEfxsC,GAGJ,IAAImtC,GAAuB,EAEvBC,EAAiB,WACZD,IACDA,GAAuB,EAEnBF,IACAha,aAAaga,GACbA,EAAY,MAGhBtoC,EACCqmB,WAAWsf,GACXpqB,UACAxa,IAAIilC,EAAY,IAChBjlC,IAAIilC,GAEL3qC,EAAQyf,SAASpc,KAAKsB,KAI9B3E,EAAQwf,SAAW/jB,EAAEinB,IAAKjnB,EAAEinB,GAAG2qB,OAAOrtC,EAAQwf,WAAgCxf,EAAQwf,SAEtF9Z,EAAMsmC,EAAarnC,EAASoD,GAE5BtM,EAAE6xC,MAAMJ,EAvFpB,SAAcpnB,GACV,IAAIynB,EAAM,GACV,IAAK,IAAIC,KAAgB1nB,EACrBynB,EAAI9yC,KAAK+yC,GAEb,OAAOD,EAkFkBvqB,CAAKtd,IAElBjK,EAAE+L,eAAe,cACjB7C,EACKgC,KAAK,OAAQlL,EAAEgyC,WAAWP,IAC1BznC,SAELd,EACKgC,KAAK,OAAQlL,EAAEiyC,OAAOR,IACtBznC,SAGTd,EAAQe,IAAIilC,EAAY3qC,EAAQwsC,UAAY,IAAMxsC,EAAQwf,SAAW,MAAQxf,EAAQysC,MAAM/mC,IAAIilC,GAC/FhmC,EAAQe,IAAIA,GAAKA,IAAIklC,GAQjBnzB,EAAYS,QACZvT,EAAQlC,IAAIgV,EAAYS,MAAOk1B,GACN,IAArBptC,EAAQwf,WACRye,EAAQ,MAIhBgP,EAAYpb,WAAWub,EAAgBptC,EAAQwf,SAAWye,GAC1Dt5B,EAAQgC,KAAK2jC,EAAU2C,GACvBtoC,EAAQgC,KAAK+jC,EAAmB0C,IAGpC/B,UAAW,SAAS1mC,EAAS6b,EAAYC,GACrC,IAAI2rB,EACAuB,EAAWhpC,EAAQgC,KAAK,QACxBinC,GAAmBntB,GAAWktB,EAC9BhuB,EAAmBhb,EAAQgC,KAAK+jC,GAcpC,OAZIkD,IACAxB,EAAY3yC,EAAMqO,kBAAkBnD,EAAQ,GAAIgpC,IAGhDhuB,GACAA,IAGAiuB,GACAjpC,EAAQe,IAAI0mC,GAGTznC,EACEqmB,WAAW,QACXtK,KAAKF,MAsC1B,IAAIqtB,EAAYp0C,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEXiI,EAAK4D,QAAUA,EACf5D,EAAKue,QAAU,GACfve,EAAKf,QAAUA,EACfe,EAAK+sC,QAAU,IAGnBC,IAAK,SAASzuB,GACV,IACIstB,EACAlqC,EAAKsrC,EAOL5tC,EACA6tC,EACAC,EAXAntC,EAAOjI,KAGPwH,EAASgf,EAAQhf,OACjBqE,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACf6kC,EAAWppC,EAAEqpC,WACb12B,EAAQ,GACR3J,EAAM,GAWV,IANA1D,EAAKue,QAAUA,EAEfulB,EAASS,KAAKvkC,EAAK0e,SAASnd,KAAKvB,IAEjC4D,EAAQgC,KAAK,aAAa,GAErBjE,EAAM,EAAGA,EAAMpC,EAAQoC,IAYxB,KAXAkqC,EAASttB,EAAQ5c,IAEVyrC,WAAWnuC,EAAQ4O,SAC1Bg+B,EAAOviB,WAAWrqB,GAElBe,EAAKqtC,qBAAqBxB,EAAOkB,SAEjClB,EAAOyB,QAAQjgC,EAAO3J,GAIjBupC,EAAM,EAAGE,GAFdD,EAAWrB,EAAOqB,YAEsB3tC,OAAQ0tC,EAAME,EAAgBF,IAClEC,EAASD,GAAKxuB,SAASxf,EAAQwf,UAAUuuB,MAKjD,IAAK,IAAIO,KAActuC,EAAQsf,QAC3BzjB,EAAO4I,EAAKzE,EAAQsf,QAAQgvB,GAAYvmC,YAyB5C,IArBKpD,EAAQU,GAAG,aACZxJ,EAAOuS,EAAO,CAAEzI,QAAShB,EAAQgC,KAAK,eAAiB,UAGvD+Q,IAAe1X,EAAQuuC,QACvBnuC,EAASuE,EAAQgC,KAAK,sBAGlByH,EAAQvS,EAAOuE,EAAQgO,IAI/BA,EAAQ49B,EAAarnC,EAASyJ,GAE1BsJ,IAAeD,IACfrJ,EAAQ29B,EAAkB39B,IAG9BzJ,EAAQe,IAAI0I,GACJ1I,IAAIklC,GAEPloC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB4c,EAAQ5c,GAAK8rC,QAUjB,OAPIxuC,EAAQiB,MACRjB,EAAQiB,OAGZ0D,EAAQgC,KAAK,kBAAmBlC,GAChCie,EAAG9C,QAAQjb,EAASF,EAAK5I,EAAO,GAAImE,EAAS,CAAEyf,SAAUolB,EAAS4J,WAE3D5J,EAAS9kB,WAGpBW,KAAM,WACFjlB,EAAE3C,KAAK6L,SAAS4b,WAAU,GAAM,IAGpC6tB,qBAAsB,SAASN,GAM3B,IALA,IACItsC,EADAmD,EAAU7L,KAAK6L,QAEftE,EAAI,EACJC,EAASwtC,EAAQxtC,OAEdD,EAAIC,EAAQD,IACfmB,EAAQssC,EAAQztC,GAEhBvH,KAAKg1C,QAAQrzC,KAAK+G,GAEbmD,EAAQgC,KAAKnF,IACdmD,EAAQgC,KAAKnF,EAAOmD,EAAQe,IAAIlE,KAK5CktC,gBAAiB,WAGb,IAFA,IAAI/pC,EAAU7L,KAAK6L,QAEVtE,EAAI,EAAGC,EAASxH,KAAKg1C,QAAQxtC,OAAQD,EAAIC,EAAQD,IAAM,CAC5D,IAAImB,EAAQ1I,KAAKg1C,QAAQztC,GACzBsE,EAAQe,IAAIlE,EAAOmD,EAAQgC,KAAKnF,MAIxCie,SAAU,WACN,IAAI1e,EAAOjI,KACP4J,EAAM,EACNiC,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACfsf,EAAUve,EAAKue,QACfhf,EAASgf,EAAQhf,OAgBrB,IAdAqE,EACKqmB,WAAW,aACX9K,UAEDlgB,EAAQiG,MACRtB,EAAQgC,KAAK,aAAchC,EAAQe,IAAI,YAAYO,OAGvDnN,KAAK41C,kBAEDxF,IAAYxxB,GACZma,WAAW/4B,KAAK41C,gBAAgBpsC,KAAKxJ,MAAO,GAGzC4J,EAAMpC,EAAQoC,IACjB4c,EAAQ5c,GAAKgd,WAGb1f,EAAQ2f,kBACR3f,EAAQ2f,iBAAiBhb,MAKrC+d,EAAG3C,QAAU,SAASpb,EAAS3E,GAC3B,IACI2uC,EAGA/B,EAJAttB,EAAU,GAEVsvB,EAAY,IAAIf,EAAUlpC,EAAS3E,GACnC6uC,EAAgBp1C,EAAM2sB,aAAapmB,EAAQsf,SAK/C,IAAK,IAAIgvB,KAFTtuC,EAAQsf,QAAUuvB,EAEKA,GACnBF,EAAcjsB,EAAGosB,EAAWR,OAGxB1B,EAAS,IAAI+B,EAAYhqC,EAASkqC,EAAcP,GAAYvB,WAC5DztB,EAAQ7kB,KAAKmyC,IAIjBttB,EAAQ,GACRsvB,EAAUb,IAAIzuB,IAET3a,EAAQU,GAAG,aACZV,EAAQe,IAAI,CAAEC,QAAShB,EAAQgC,KAAK,eAAiB,UAAWjB,IAAI,WAGpE1F,EAAQiB,MACRjB,EAAQiB,OAGZ0D,EAAQub,UACR0uB,EAAUnvB,aAIlB5jB,EAAO6mB,EAAI,CACP9C,QAAS,SAASqN,EAAUllB,EAAY/H,GACpC,IAAI+uC,GAAuC,IAAvB/uC,EAAQirC,kBACrBjrC,EAAQirC,WAEXxzB,GAAe,eAAgBiL,GAAMqsB,EACrCrsB,EAAGuoB,WAAWhe,EAAUllB,EAAY/H,GAEhC0X,EACAuV,EAASrN,QAAQmsB,EAAkBhkC,GAAa,CAAE+X,OAAO,EAAO9Z,MAAM,EAAOC,MAAM,EAAOuZ,SAAUxf,EAAQwf,SAAUC,SAAUzf,EAAQyf,WAExIwN,EAASnxB,MAAK,WACV,IAAI6I,EAAUlJ,EAAE3C,MACZk2C,EAAW,GAEflzC,EAAK4tC,GAAgB,SAAShnC,EAAKlB,GAC/B,IAAI47B,EACAuG,EAAe57B,EAAaA,EAAWvG,GAAS,IAAM,KAE1D,GAAImiC,EAAc,CACd,IAAIsL,EAASlnC,EAEb,GAAIvG,KAASgnC,GAAmBzgC,EAAWvG,KAAW9F,EAClD0hC,EAASuG,EAAa16B,MAAMogC,GACxB3xB,GACA7b,EAAOozC,EAAQ,CAAExG,OAAQrL,EAAO,UAGpC,GAAI57B,KAASqnC,GAAuB9gC,EAAWvG,KAAW9F,EAAa,CACnE,IAAIkK,EAAWjB,EAAQe,IAAI+kC,GACvByE,EAAuB,YAAZtpC,GAAsC,SAAZA,EAEpCjB,EAAQgC,KAAK6jC,KACV0E,EACAvqC,EAAQgC,KAAK6jC,EAAW,CACpBttB,IAAK4uB,EAASnnC,EAAS,QAAU,EACjCggB,KAAMmnB,EAASnnC,EAAS,SAAW,EACnCkgB,OAAQinB,EAASnnC,EAAS,UAC1BigB,MAAOknB,EAASnnC,EAAS,WAG7BA,EAAQgC,KAAK6jC,EAAW,CACpBttB,IAAK4uB,EAASnnC,EAAS,cAAgB,EACvCggB,KAAMmnB,EAASnnC,EAAS,eAAiB,KAKrD,IAAIwqC,EAAmBxqC,EAAQgC,KAAK6jC,GAGpC,GADApN,EAASuG,EAAa16B,MAAMogC,GAChB,CAER,IAAI+F,EAAc5E,cAAThpC,EAA2B,GAAS47B,EAAO,GAChDiS,EAAc7E,cAAThpC,GAA4B47B,EAAO,IAAMA,EAAO,GAErD8R,GACKttC,MAAMutC,EAAiBvqB,OAGnBhjB,MAAMwtC,IAAOvzC,EAAOozC,EAAQ,CAAEtqB,KAAMwqB,EAAiBxqB,KAAOyqB,IAF5DxtC,MAAMwtC,IAAOvzC,EAAOozC,EAAQ,CAAErqB,MAAOuqB,EAAiBvqB,MAAQwqB,IAKlExtC,MAAMutC,EAAiBtqB,QAGnBjjB,MAAMytC,IAAOxzC,EAAOozC,EAAQ,CAAE/xB,IAAKiyB,EAAiBjyB,IAAMmyB,IAF1DztC,MAAMytC,IAAOxzC,EAAOozC,EAAQ,CAAEpqB,OAAQsqB,EAAiBtqB,OAASwqB,MAKpEztC,MAAMwtC,IAAOvzC,EAAOozC,EAAQ,CAAEK,WAAYH,EAAiBxqB,KAAOyqB,IAClExtC,MAAMytC,IAAOxzC,EAAOozC,EAAQ,CAAEM,UAAWJ,EAAiBjyB,IAAMmyB,OAMhF33B,GAAuB,SAATlW,GAAoBA,KAASytC,UACrCA,EAAOztC,GAGdytC,GACApzC,EAAOmzC,EAAUC,OAKzBn0B,EAAQoB,aACD8yB,EAASvG,MAGpB9jC,EAAQib,QAAQovB,EAAU,CAAElvB,OAAO,EAAO9Z,MAAM,EAAOC,MAAM,EAAOuZ,SAAUxf,EAAQwf,SAAUC,SAAUzf,EAAQyf,iBAOtIiD,EAAGpC,gBAAkBoC,EAAG3C,QAExB,IAAIyvB,EAAS/1C,EAAMiH,MAAM7E,OAAO,CAC5BoF,KAAM,SAAS0D,EAASooC,GACpB,IAAIhsC,EAAOjI,KACXiI,EAAK4D,QAAUA,EACf5D,EAAK0uC,WAAa1C,EAClBhsC,EAAKf,QAAU,GACfe,EAAK2uC,mBAAqB,GAErB3uC,EAAK+sC,UACN/sC,EAAK+sC,QAAU,KAKvBl/B,QAAS,WAEL,OADA9V,KAAK62C,UAAW,EACT72C,KAAKi1C,OAGhB6B,KAAM,WAEF,OADA92C,KAAK62C,UAAW,EACT72C,KAAKi1C,OAGhBhoC,IAAK,SAAS8pC,GAEV,OADA/2C,KAAK42C,mBAAmBj1C,KAAKo1C,GACtB/2C,MAGXi0C,UAAW,SAASvrC,GAEhB,OADA1I,KAAK22C,WAAajuC,EACX1I,MAGX0mB,SAAU,SAASA,GAEf,OADA1mB,KAAKg3C,UAAYtwB,EACV1mB,MAGXi3C,aAAc,WACV,IAAIhvC,EAAOjI,KACP81C,EAAY,IAAIf,EAAU9sC,EAAK4D,QAAS,CAAEiK,QAAS7N,EAAK4uC,SAAUnwB,SAAUze,EAAK+uC,YACjFxwB,EAAUve,EAAK2uC,mBAAmBv5B,OAAO,CAAEpV,IAE/C,OAAO6tC,EAAUb,IAAIzuB,IAGzByuB,IAAK,WACD,GAAIj1C,KAAK42C,oBAAsB52C,KAAK42C,mBAAmB,GACnD,OAAO52C,KAAKi3C,eAGhB,IAKIvuC,EAIApB,EATAW,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfjC,EAAM,EACNorC,EAAU/sC,EAAK+sC,QACfxtC,EAASwtC,EAAQxtC,OAEjBukC,EAAWppC,EAAEqpC,WACb12B,EAAQ,GACR3J,EAAM,GAENwpC,EAAWltC,EAAKktC,WAChBC,EAAiBD,EAAS3tC,OAM9B,IAJAukC,EAASS,KAAKvkC,EAAKivC,UAAU1tC,KAAKvB,IAElC4D,EAAQgC,KAAK,aAAa,GAErBjE,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBlB,EAAQssC,EAAQprC,GAEXiC,EAAQgC,KAAKnF,IACdmD,EAAQgC,KAAKnF,EAAOmD,EAAQe,IAAIlE,IAIxC,IAAKkB,EAAM,EAAGA,EAAMwrC,EAAgBxrC,IAChCurC,EAASvrC,GAAK8c,SAASze,EAAK+uC,WAAW/B,MA8B3C,OA3BAhtC,EAAKstC,QAAQjgC,EAAO3J,GAEfE,EAAQU,GAAG,aACZxJ,EAAOuS,EAAO,CAAEzI,QAAShB,EAAQgC,KAAK,eAAiB,UAGvD+Q,IACAtX,EAASuE,EAAQgC,KAAK,sBAGlByH,EAAQvS,EAAOuE,EAAQgO,IAI/BA,EAAQ49B,EAAarnC,EAASyJ,GAE1BsJ,IAAeD,IACfrJ,EAAQ29B,EAAkB39B,IAG9BzJ,EAAQe,IAAI0I,GAAO1I,IAAIklC,GAEvB7pC,EAAKytC,QAEL7pC,EAAQgC,KAAK,kBAAmBlC,GAChCie,EAAG9C,QAAQjb,EAASF,EAAK,CAAE+a,SAAUze,EAAK+uC,UAAWrwB,SAAUolB,EAAS4J,UAEjE5J,EAAS9kB,WAGpBW,KAAM,WACF,IAAIhe,EAAM,EACNurC,EAAWn1C,KAAKm1C,WAChBC,EAAiBD,EAAS3tC,OAE9B,IAAKoC,EAAM,EAAGA,EAAMwrC,EAAgBxrC,IAChCurC,EAASvrC,GAAKge,OAIlB,OADAjlB,EAAE3C,KAAK6L,SAAS4b,WAAU,GAAM,GACzBznB,MAGX41C,gBAAiB,WAGb,IAFA,IAAI/pC,EAAU7L,KAAK6L,QAEVtE,EAAI,EAAGC,EAASxH,KAAKg1C,QAAQxtC,OAAQD,EAAIC,EAAQD,IAAM,CAC5D,IAAImB,EAAQ1I,KAAKg1C,QAAQztC,GACzBsE,EAAQe,IAAIlE,EAAOmD,EAAQgC,KAAKnF,MAIxCwuC,UAAW,WACP,IAAIjvC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEnBA,EACKqmB,WAAW,aACX9K,UAELnf,EAAK2tC,kBAED3tC,EAAKkvC,cACLtrC,EAAQgC,KAAK,aAAchC,EAAQe,IAAI,YAAYO,OAGnDijC,IAAYxxB,GACZma,WAAW9wB,EAAK2tC,gBAAgBpsC,KAAKvB,GAAO,GAGhDA,EAAK2e,YAIT2K,WAAY,SAASrqB,GACjBnE,GAAO,EAAM/C,KAAKkH,QAASA,IAG/BiuC,SAAU,WACN,MAAO,IAGXgC,WAAYx0C,EAAEQ,KAEduyC,MAAO/yC,EAAEQ,KACToyC,QAAS5yC,EAAEQ,KACXyjB,SAAUjkB,EAAEQ,KACZoqB,WAAY,GAEZ8nB,WAAY,SAASv/B,GAEjB,OADA9V,KAAK62C,SAAW/gC,EACT9V,QAIf,SAASg2C,EAAWoB,GAChB,OAAOA,EAAKtsC,OAAO,GAAGiE,cAAgBqoC,EAAKpsC,UAAU,GAGzD,SAASqsC,EAAaj1C,EAAMk1C,GACxB,IAAIzB,EAAca,EAAO3zC,OAAOu0C,GAC5B/pB,EAAasoB,EAAYxtC,UAAUklB,WAEvC3D,EAAGosB,EAAW5zC,IAASyzC,EAEvBjsB,EAAGzC,QAAQ9e,UAAUjG,GAAQ,SAAS6xC,EAAWsD,EAAMC,EAAMC,GACzD,OAAO,IAAI5B,EAAY71C,KAAK6L,QAASooC,EAAWsD,EAAMC,EAAMC,IAGhEz0C,EAAKuqB,GAAY,SAAS3jB,EAAK8tC,GAC3B9tB,EAAGzC,QAAQ9e,UAAUjG,EAAO4zC,EAAW0B,IAAiB,SAASH,EAAMC,EAAMC,GACzE,OAAO,IAAI5B,EAAY71C,KAAK6L,QAAS6rC,EAAcH,EAAMC,EAAMC,OAK3E,IAAIE,EAAkB,CAAC,OAAQ,QAAS,KAAM,QAC1CC,EAAS,CAAC,KAAM,OAmEpB,SAASC,GAAmBz1C,EAAMmL,EAAUuqC,EAAcC,GACtDV,EAAaj1C,EAAM,CACfmrB,WAAYqqB,EAEZI,WAAY,SAAStvC,GAEjB,OADA1I,KAAKi4C,YAAcvvC,EACZ1I,MAGXk4C,SAAU,SAASxvC,GAEf,OADA1I,KAAKm4C,UAAYzvC,EACV1I,MAGXm3C,WAAY,WACT,OAAOn3C,KAAKo4C,aAGf7C,QAAS,SAASjgC,EAAO3J,GACrB,IACIqsC,EACAE,EACAvqB,EAA0B,QAApB3tB,KAAK22C,WACX0B,EAJOr4C,KAIe6L,QAAQgC,KAAKN,GAInCyqC,IAHwBlvC,MAAMuvC,IAAmBA,GAAkBP,GAGtDO,OACsB,IAArBr4C,KAAKi4C,YACNj4C,KAAKi4C,YAELtqB,EAAMmqB,EAAeC,EAIlCG,OAD0B,IAAnBl4C,KAAKm4C,UACDn4C,KAAKm4C,UAELxqB,EAAMoqB,EAAaD,EAG9B93C,KAAK62C,UACLvhC,EAAM/H,GAAY2qC,EAClBvsC,EAAI4B,GAAYyqC,IAEhB1iC,EAAM/H,GAAYyqC,EAClBrsC,EAAI4B,GAAY2qC,GA1BTl4C,KA6BNo4C,YAAczsC,EAAI4B,KAAcwqC,KAjHjDV,EAAa,UAAW,CACpB9pB,WAAYoqB,EAEZW,QAAS,SAAS5vC,GAEd,OADA1I,KAAKkH,QAAQoxC,QAAU5vC,EAChB1I,MAGXu1C,QAAS,SAASjgC,EAAO3J,GACrB,IACI4sC,EADAtwC,EAAOjI,KAEP6L,EAAU5D,EAAK4D,QACfE,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aACpB+nC,EAAY1mB,EAAWtlB,EAAK0uC,YAE5BqB,GADU/D,EAAU5B,UAAY4B,EAAU7B,SAAWnmC,EAAYJ,GAAWE,EAAWF,KAChE5D,EAAKf,SAAWe,EAAKf,QAAQoxC,SAAW,GAAKpH,EAGpEjpC,EAAK4uC,WACL0B,EAAMjjC,EACNA,EAAQ3J,EACRA,EAAM4sC,GAGN35B,GACAtJ,EAAM2+B,EAAU9B,YAAc6F,EAC9BrsC,EAAIsoC,EAAU9B,YAVH,QAYX78B,EAAM2+B,EAAU1mC,UAAYyqC,EAC5BrsC,EAAIsoC,EAAU1mC,UAbH,UAkBvB8pC,EAAa,OAAQ,CACjB9pB,WAAYoqB,EAEZxvC,KAAM,SAAS0D,EAASooC,EAAWuE,GAC/B9B,EAAOruC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASooC,GAC1Cj0C,KAAKkH,QAAU,CAAEsxC,SAAUA,IAG/BC,gBAAiB,SAAS/vC,GAEtB,OADA1I,KAAKkH,QAAQuxC,gBAAkB/vC,EACxB1I,MAGXm1C,SAAU,WACN,IAAIltC,EAAOjI,KACP8V,EAAU7N,EAAK4uC,SACf2B,EAAWvwC,EAAKf,QAAQsxC,SACxBF,EAAUrwC,EAAKf,QAAQuxC,iBAAmB,EAC1CpZ,EAAMp3B,EAAK0uC,WAEXxB,EAAW,CAAEx0C,EAAMipB,GAAG3hB,EAAK4D,SAAS6sC,QAAQrZ,GAAKgW,WAAWv/B,IAMhE,OAJI0iC,GACArD,EAASxzC,KAAMhB,EAAMipB,GAAG4uB,GAAUE,QAAQnrB,EAAW8R,GAAKvpB,SAASwiC,QAAQA,GAASjD,YAAYv/B,IAG7Fq/B,KAyDf0C,GAAmB,OAAQ,UAAW,EAAG,GACzCA,GAAmB,OAAQ,QAAS,EAAG,KAEvCR,EAAa,cAAe,CACxB9B,QAAS,SAASjgC,EAAO3J,GACrB,IAKIgtC,EALA1wC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACf0xC,EAAS/sC,EAAQgC,KAAK0jC,GACtBx0B,EAAS7V,EAAQ6V,OAEjBjH,EAAU7N,EAAK4uC,SAEd/gC,GAAsB,OAAX8iC,GACZ/sC,EAAQgC,KAAK0jC,EAAQxoC,WAAW8C,EAAQe,IAAI,UAAY1F,EAAQ89B,QAGpE2T,EAAU9sC,EAAQgC,KAAK0jC,IAAW,EAClC5lC,EAAI,UAAYzE,EAAQ89B,MAASlvB,EAA4B6iC,EAAlBA,EAAS57B,KAI5Ds6B,EAAa,UAAW,CACpB9B,QAAS,SAASjgC,EAAO3J,GACrB,IAAI1D,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEfkR,EADU9U,EAAKf,QACE6V,OAAOnS,MAAM,KAC9BkL,EAAU7N,EAAK4uC,SAEfj4B,GACAjT,EAAIskC,WAAcn6B,EAAsB,EAAZiH,EAAO,GACnCpR,EAAIukC,WAAcp6B,EAAsB,EAAZiH,EAAO,KAEnCpR,EAAIkgB,KAAQ/V,EAAsB,EAAZiH,EAAO,GAC7BpR,EAAIyY,IAAOtO,EAAsB,EAAZiH,EAAO,IAEhClR,EAAQe,IAAI,WAIpByqC,EAAa,SAAU,CACnB9pB,WAAY,CAAC,aAAc,YAE3BynB,QAAS,CAAEvD,GAEX8D,QAAS,SAASjgC,EAAO3J,GACrB,IAAI1D,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACf4O,EAAU7N,EAAK4uC,SACftpC,EAA+B,aAApBtF,EAAK0uC,WAA4BtF,EAASD,EACrDyH,EAAYhtC,EAAQ,GAAGY,MAAMc,GAC7BurC,EAAYjtC,EAAQgC,KAAKN,GACzB/F,EAASuB,WAAW+vC,GAAaD,GACjCE,EAAahjC,EAAMlK,EAAQe,IAAIW,EAAU4jC,GAAM5jC,MAEnD+H,EAAMqX,SAAW2kB,EAEjB9pC,EAAUN,GAAWA,EAAQuuC,MAASsD,GAAcvxC,EAASA,GAAUuxC,EAEvEptC,EAAI4B,IAAauI,EAAU,EAAItO,GAAU0pC,EACzC57B,EAAM/H,IAAauI,EAAUtO,EAAS,GAAK0pC,EAEvC4H,IAAcl2C,GACdiJ,EAAQgC,KAAKN,EAAUsrC,IAI/B1B,WAAY,WACT,OAAOn3C,KAAK62C,UAGfjwB,SAAU,WACN,IACI/a,EADO7L,KACQ6L,QACf0B,EAA+B,aAFxBvN,KAES22C,WAA4BtF,EAASD,EACrD5pC,EAASqE,EAAQgC,KAAKN,GAEtB/F,GAAU2pC,GAphCV,KAohCkB3pC,GAClBuxB,YAAW,WAAaltB,EAAQe,IAAIW,EAAU4jC,GAAMvkC,IAAIW,KAAc,MAKlF,IAAIyrC,GAAuB,CAAElsC,SAAU,WAAY0pC,WAAY,EAAGC,UAAW,EAAG9G,MAAO,GAOvF0H,EAAa,WAAY,CACrBlvC,KAAM,SAAS0D,EAASvE,GACpBtH,KAAK6L,QAAUA,EACf7L,KAAKkH,QAAU,CAAEI,OAAQA,GACzBtH,KAAKg1C,QAAU,IAGnBU,MAAO,WACH11C,KAAK6L,QAAQshC,SAAS/9B,SAAS6O,OAGnCs3B,QAAS,SAASjgC,EAAO3J,GACrB,IAAI1D,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfotC,EAAWrvB,EAAGsvB,IAAIrtC,GAClBstC,EAAWvvB,EAAGsvB,IAAIjxC,EAAKf,QAAQI,QAC/B8xC,EAAe5G,EAAkB3mC,EAAS,SAC1C8jC,EAAQ/lB,EAAGyvB,UAAUF,EAAUF,GAC/BK,EAAkB1vB,EAAG0vB,gBAAgBH,EAAUF,GAEnDl2C,EAAOuS,EAAO0jC,IACdrtC,EAAIgkC,MAAQ,EAEZ9jC,EAAQe,IAAIklC,EAAW,YAAYllC,IAAIklC,GACvCjmC,EAAQe,IAAIklC,EAAW,SAAWsH,EAAe,KAEjD9jC,EAAM8O,IAAM60B,EAAS70B,IACrB9O,EAAMuW,KAAOotB,EAASptB,KACtBvW,EAAMgkC,gBAAkBA,EAAgBl0C,EAAI8rC,EAAK,IAAMoI,EAAgBn1C,EAAI+sC,EAEvEjpC,EAAK4uC,SACLvhC,EAAMq6B,MAAQA,EAEdhkC,EAAIgkC,MAAQA,KAMxB,IAAI4J,GAAQ,CACRn1B,IAAK,6BACL2H,OAAQ,6BACRF,KAAM,6BACNC,MAAO,8BAGP0tB,GAAY,CACZp1B,IAAK,CAAE9O,MAAO,gBAAiB3J,IAAK,mBACpCogB,OAAQ,CAAEzW,MAAO,mBAAoB3J,IAAK,iBAC1CkgB,KAAM,CAAEvW,MAAO,gBAAiB3J,IAAK,oBACrCmgB,MAAO,CAAExW,MAAO,kBAAmB3J,IAAK,kBAG5C,SAAS8tC,GAAWnjB,EAAW2d,GAC3B,IACIxkC,EAAQ6mB,EADG31B,EAAM4sB,WAAW0mB,GAAW7B,SACVf,EAASD,KAAW,EAAK,KAE1D,OAAOmI,GAAMtF,GAAWxxC,QAAQ,QAASgN,GAG7C4nC,EAAa,cAAe,CACxB9pB,WAAYoqB,EAEZxvC,KAAM,SAAS0D,EAASooC,EAAW3d,GAC/BogB,EAAOruC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASooC,GAC1Cj0C,KAAK05C,WAAapjB,GAGtBif,QAAS,SAASjgC,EAAO3J,GACrB,IAAI1D,EAAOjI,KACP8V,EAAU7N,EAAK4uC,SACf5C,EAAYn+B,EAAUyX,EAAWtlB,EAAK0uC,YAAY7gC,QAAU7N,EAAK0uC,WACjEgD,EAAWH,GAAUvF,GAEzB3+B,EAAMskC,OAAS,EAEX3xC,EAAK4xC,cACNvkC,EAAMwkC,KAAOL,GAAWxxC,EAAKyxC,WAAY/4C,EAAM4sB,WAAW0mB,GAAWn+B,UAGxER,EAAMy8B,GAAYT,EAElB3lC,EAAImmC,GAAaI,GAAyBp8B,EAAU6jC,EAASrkC,MAAQqkC,EAAShuC,KAC9E2J,EAAMw8B,GAAaI,GAAyBp8B,EAAU6jC,EAAShuC,IAAMguC,EAASrkC,QAGlFogC,MAAO,WACH11C,KAAK05C,WAAWK,OAAO/5C,KAAK6L,UAGhCmuC,KAAM,SAAStxC,GAEX,OADA1I,KAAKi6C,MAAQvxC,EACN1I,MAGXm3C,WAAY,WACR,IACIrhC,EADO9V,KACQ62C,SACfmD,EAFOh6C,KAEKi6C,MAEhB,OAAQnkC,IAAYkkC,IAAWlkC,GAAWkkC,GAG9CP,WAAY,SAAS/wC,GAEjB,OADA1I,KAAK65C,YAAcnxC,EACZ1I,MAGXk6C,UAAW,WAEP,OADAl6C,KAAK6L,QAAQ0Y,SAAS,aACfvkB,QAIfq3C,EAAa,aAAc,CACvB9pB,WAAYoqB,EAEZxvC,KAAM,SAAS0D,EAASooC,EAAW3d,GAC/BogB,EAAOruC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASooC,GAC1Cj0C,KAAK05C,WAAapjB,GAGtB0e,QAAS,CAAC,QAEVO,QAAS,SAASjgC,EAAO3J,GACrB,IAAI1D,EAAOjI,KACPi0C,EAAYhsC,EAAK4uC,SAAWtpB,EAAWtlB,EAAK0uC,YAAY7gC,QAAU7N,EAAK0uC,WAE3ErhC,EAAMwkC,KAAOL,GAAWxxC,EAAKyxC,WAAYzF,GACzC3+B,EAAMshB,QAAU,KAChBjrB,EAAIirB,QAAU,GAGlBugB,WAAY,WACR,IACIrhC,EADO9V,KACQ62C,SACfmD,EAFOh6C,KAEKi6C,MAEhB,OAAQnkC,IAAYkkC,IAAWlkC,GAAWkkC,GAG9CA,KAAM,SAAStxC,GAEX,OADA1I,KAAKi6C,MAAQvxC,EACN1I,QAIfq3C,EAAa,WAAY,CACrB9pB,WAAY,CAAC,aAAc,YAE3BplB,KAAM,SAAS0D,EAASooC,EAAW+F,EAAMG,GACrCzD,EAAOruC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASooC,GAC1Cj0C,KAAKkH,QAAU,GACflH,KAAKkH,QAAQ8yC,KAAOA,EACpBh6C,KAAKkH,QAAQizC,KAAOA,GAGxBhF,SAAU,WACN,IAKIiF,EALAnyC,EAAOjI,KACPkH,EAAUe,EAAKf,QACf+sC,EAAgC,eAApBhsC,EAAK0uC,WAA8B,OAAS,MACxD0D,EAAmB15C,EAAM4sB,WAAW0mB,GAAWn+B,QAC/CA,EAAU7N,EAAK4uC,SAEfyD,EAAYpzC,EAAQ8yC,KAAK7yC,OAAM,GAAMmqB,WAAW,MAChDipB,EAAYrzC,EAAQizC,KAAKhzC,OAAM,GAAMmqB,WAAW,MAChDzlB,EAAU5D,EAAK4D,QAQnB,OANIiK,IACAskC,EAAOnG,EACPA,EAAYoG,EACZA,EAAmBD,GAGhB,CACHz5C,EAAMipB,GAAG1iB,EAAQ8yC,MAAMQ,WAAWvG,EAAWpoC,GAASmuC,MAAK,GAAM3E,WAAWv/B,GAC5EnV,EAAMipB,GAAG1iB,EAAQizC,MAAMK,WAAWH,EAAkBxuC,GAASwpC,WAAWv/B,GACxEnV,EAAMipB,GAAG0wB,GAAWG,YAAYxG,EAAWpoC,GAASmuC,MAAK,GAAMP,YAAW,GAAMS,YAAY7E,WAAWv/B,GACvGnV,EAAMipB,GAAG2wB,GAAWE,YAAYJ,EAAkBxuC,GAAS4tC,YAAW,GAAMS,YAAY7E,WAAWv/B,KAI3Gy/B,QAAS,SAASjgC,EAAO3J,GACrB2J,EAAM08B,GAAeC,EACrB38B,EAAMolC,eAAiB,cAEvBplC,EAAMshB,QAAU,KAChBjrB,EAAIirB,QAAU,GAGlBhQ,SAAU,WACN5mB,KAAK6L,QAAQkqB,KAAK,cAAcgB,YAIxCsgB,EAAa,OAAQ,CACjB9pB,WAAY,CAAC,aAAc,YAE3BplB,KAAM,SAAS0D,EAASooC,EAAW+F,EAAMG,GACrCzD,EAAOruC,UAAUF,KAAKoC,KAAKvK,KAAM6L,EAASooC,GAC1Cj0C,KAAKkH,QAAU,GACflH,KAAKkH,QAAQ8yC,KAAOA,EACpBh6C,KAAKkH,QAAQizC,KAAOA,GAGxBhF,SAAU,WACN,IAKIiF,EALAnyC,EAAOjI,KACPkH,EAAUe,EAAKf,QACf+sC,EAAgC,eAApBhsC,EAAK0uC,WAA8B,OAAS,MACxD0D,EAAmB15C,EAAM4sB,WAAW0mB,GAAWn+B,QAC/CA,EAAU7N,EAAK4uC,SAEfhrC,EAAU5D,EAAK4D,QAQnB,OANIiK,IACAskC,EAAOnG,EACPA,EAAYoG,EACZA,EAAmBD,GAGhB,CACHz5C,EAAMipB,GAAG1iB,EAAQ8yC,MAAMS,YAAYxG,EAAWpoC,GAASmuC,MAAK,GAAM3E,WAAWv/B,GAC7EnV,EAAMipB,GAAG1iB,EAAQizC,MAAMM,YAAYJ,EAAkBxuC,GAASwpC,WAAWv/B,KAIjFy/B,QAAS,SAASjgC,GACdA,EAAM08B,GAAeC,EACrB38B,EAAMolC,eAAiB,iBAI/B,IAAIC,IAAoBp3C,EAAQkf,SAASnC,QAGzC+2B,EAAa,UAAW,CACpBuD,QAASj4C,EAAEQ,KACX03C,OAAQl4C,EAAEQ,KACVgF,KAAM,SAAS0D,EAAS2sC,EAAUsC,GAC9BpE,EAAOruC,UAAUF,KAAKoC,KAAKvK,KAAM6L,GACjC7L,KAAK+6C,UAAYp4C,EAAE61C,GACnBx4C,KAAKg7C,iBAAmBF,GAG5Bp0B,SAAU,WACN,MAAM,IAAIjW,MAAM,kIAGpBwqC,iBAAkB,SAASjyB,GAEvB,OADAhpB,KAAK46C,QAAU5xB,EACRhpB,MAGXk7C,gBAAiB,SAASlyB,GAEtB,OADAhpB,KAAK66C,OAAS7xB,EACPhpB,MAGXm7C,MAAO,WACH,OAAOx4C,IAAIsK,IAAIjN,KAAKo7C,UAAUnuC,IAAIjN,KAAK+6C,YAG3CM,gBAAiB,WACb,IAAIpH,EAAYj0C,KAAK22C,WACjB2E,EAAiB,wBAA0Bt7C,KAAKg7C,iBAUpD,OARI/G,IACAqH,GAAkB,SAAWrH,GAG7Bj0C,KAAK62C,WACLyE,GAAkB,iBAGfA,GAGX30B,SAAU,SAAShiB,GACf,MAAK3E,KAAK+rC,UAAapnC,GAAKhC,EAAEgC,EAAE2C,QAAQiF,GA7CT,iDA6C/B,CAIA,IAAI+pB,EAAYt2B,KAAKs2B,UAErBA,EACKnK,YAAY,YACZA,YAAYnsB,KAAKq7C,mBACjBpiB,IAAIta,EAAYS,MAAOpf,KAAKu7C,eAEjCv7C,KAAK+6C,UAAU5tC,OAAOgf,YAAY,gBAClCnsB,KAAK6L,QAAQsgB,YAAY,aAErBwuB,IACArkB,EAAU1pB,IAAI6kC,EAAU,IAGvBzxC,KAAKw7C,YACNx7C,KAAKm7C,QAAQvuC,IAAI+kC,EAAU,IAG/B3xC,KAAK+rC,SAAS4J,iBACP31C,KAAK+rC,WAGhBkJ,IAAK,WACD,GAAIj1C,KAAK42C,oBAAsB52C,KAAK42C,mBAAmB,GACnD,OAAO52C,KAAKi3C,eAGhB,IAAIhvC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf2sC,EAAWvwC,EAAK8yC,UAChBzkB,EAAYzqB,EAAQwsB,UAAUpC,OAAOuiB,EAASngB,WAAWnuB,QACzDuxC,EAAOxzC,EAAKkzC,QACZpP,EAAWppC,EAAEqpC,WACbqK,EAAmBxqC,EAAQe,IAAI+kC,GA0CnC,OAtCKrb,EAAU9uB,SACX8uB,EAAYzqB,EAAQM,UAGxBnM,KAAKs2B,UAAYA,EACjBt2B,KAAK+rC,SAAWA,EAChB/rC,KAAKw7C,WAAiC,YAApBnF,EAEbr2C,KAAKw7C,YACNC,EAAK7uC,IAAI+kC,EAAU,YAGnBgJ,KACmBrkB,EAAU1pB,IAAI6kC,GACjCnb,EAAU1pB,IAAI6kC,EAAU,WAGvB9yB,GAGD9S,EAAQ0Y,SAAS,eAEjB+R,EAAU/R,SAASvkB,KAAKq7C,mBAExBr7C,KAAKu7C,cAAgBv7C,KAAK2mB,SAASnd,KAAKxJ,MACxCs2B,EAAUrN,GAAGtK,EAAYS,MAAOpf,KAAKu7C,eAErC56C,EAAMijC,gBAAe,WACjB/3B,EAAQsgB,YAAY,eAAe5H,SAAS,aAC5Ci0B,EAAS5rC,IAAI,UAAW,IAAI2X,SAAS,gBACrCtc,EAAK2yC,QAAQpC,EAAU3sC,GACvBlL,EAAMijC,gBAAe,WACjBtN,EAAUnK,YAAY,cAAc5H,SAAS,YAC7Ctc,EAAK4yC,OAAOrC,EAAU3sC,UAf9B7L,KAAK2mB,WAoBFolB,EAAS9kB,WAGpBW,KAAM,WACF5nB,KAAK2mB,cAIb,IAAI+0B,GAAY/6C,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,WACF,IAAIF,EAAOjI,KACXiI,EAAK0zC,WAAa1zC,EAAK2zC,MAAMpyC,KAAKvB,GAClCA,EAAK4zC,UAAW,GAGpBC,KAAMn5C,EAAEQ,KACRqpC,KAAM7pC,EAAEQ,KACR44C,MAAOp5C,EAAEQ,KACT64C,SAAUr5C,EAAEQ,KAEZmS,MAAO,WACEtV,KAAKknB,YAILlnB,KAAKwsC,OAINxsC,KAAK+7C,SAHL/7C,KAAK67C,UAAW,EAChBl7C,EAAMijC,eAAe5jC,KAAK27C,eAMlCz0B,QAAS,WACL,OAAO,GAGXsT,OAAQ,WACJx6B,KAAK67C,UAAW,EAChB77C,KAAKg8C,YAGTJ,MAAO,WACH,IAAI3zC,EAAOjI,KACNiI,EAAK4zC,WAEV5zC,EAAK6zC,OAEA7zC,EAAKukC,QAGNvkC,EAAK4zC,UAAW,EAChB5zC,EAAK8zC,SAHLp7C,EAAMijC,eAAe37B,EAAK0zC,gBAQlCM,GAAaP,GAAU34C,OAAO,CAC9BoF,KAAM,SAASjB,GAEXnE,EADW/C,KACEkH,GACbw0C,GAAU3zC,GAAGI,KAAKoC,KAFPvK,OAKfwsC,KAAM,WACF,OAAOxsC,KAAKk8C,cAAgBl8C,KAAK0mB,UAGrCw1B,WAAY,WACR,OAAO74C,KAAK8S,IAAInW,KAAK0mB,SAAU,IAAKtY,KAAUpO,KAAKm8C,YAGvDC,OAAQ,SAASl1C,GACb,IAAIe,EAAOjI,KACPq8C,EAAUp0C,EAAKo0C,QAEnBp0C,EAAKq0C,QAAUD,EAAQp0C,EAAK+8B,MAC5B/8B,EAAK28B,MAAQ19B,EAAQqb,SAAWta,EAAKq0C,QAErCr0C,EAAKye,SAAsC,iBAApBxf,EAAQwf,SAAuBxf,EAAQwf,SAAW,IAEzEze,EAAK6zC,KAAO7zC,EAAKs0C,WAAWr1C,EAAQysC,MAEpC1rC,EAAKk0C,UAAY,IAAI/tC,KACrBnG,EAAKqN,SAGTinC,WAAY,SAAS5I,GACjB,IAAI1rC,EAAOjI,KAEX,OAAO,WACHiI,EAAKo0C,QAAQG,SAASv0C,EAAK+8B,KAAM2O,EAAK1rC,EAAKi0C,aAAcj0C,EAAKq0C,QAASr0C,EAAK28B,MAAO38B,EAAKye,eAKpG3jB,EAAOk5C,GAAY,CACfQ,YAAa,SAASt3C,EAAGggB,EAAGzgB,EAAGF,GAC3B,OAAQW,GAAKX,EAAK2gB,EAAIzgB,EAAIA,GAAiC,EAA3BrB,KAAKqmC,IAAI,GAAI,GAAKvkC,EAAIX,IAAU2gB,GAGpEu3B,YAAa,SAASv3C,EAAGggB,EAAGzgB,EAAGF,EAAGS,GAE9B,OAAOP,IAAMS,EAAIA,EAAIX,EAAI,GAAKW,KAD9BF,EAAI,SACoC,GAAKE,EAAIF,GAAK,GAAKkgB,KAInEyE,EAAG8xB,UAAYA,GACf9xB,EAAGqyB,WAAaA,GAChBryB,EAAGytB,aAAeA,EAElBztB,EAAGsvB,IAAM,SAASrtC,GAEd,IAAI0K,GADJ1K,EAAUlJ,EAAEkJ,IACSkR,SAGrB,OAFAxG,EAAOvJ,MAAQrM,EAAMqL,YAAYH,GACjC0K,EAAO5J,OAAShM,EAAMuL,aAAaL,GAC5B0K,GAGXqT,EAAG0vB,gBAAkB,SAASqD,EAAOC,GACjC,IAAIx3C,GAAKu3C,EAAM9wB,KAAO+wB,EAAM/wB,MAAQ+wB,EAAM5vC,OAAS4vC,EAAM5vC,MAAQ2vC,EAAM3vC,OACnE7I,GAAKw4C,EAAMv4B,IAAMw4B,EAAMx4B,KAAOw4B,EAAMjwC,QAAUiwC,EAAMjwC,OAASgwC,EAAMhwC,QAEvE,MAAO,CACHvH,EAAG0D,MAAM1D,GAAK,EAAIA,EAClBjB,EAAG2E,MAAM3E,GAAK,EAAIA,IAI1BylB,EAAGyvB,UAAY,SAASsD,EAAOC,GAC3B,OAAOv5C,KAAK8S,IAAIwmC,EAAM3vC,MAAQ4vC,EAAM5vC,MAAO2vC,EAAMhwC,OAASiwC,EAAMjwC,SAGpEid,EAAGizB,SAAW,SAASF,EAAOC,GAC1B,OAAOv5C,KAAKuV,IAAI+jC,EAAM3vC,MAAQ4vC,EAAM5vC,MAAO2vC,EAAMhwC,OAASiwC,EAAMjwC,SAniDxE,CAqiDG7L,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfm8C,EAAS,SAETC,EAAO,OACPx5C,EAAU5C,EAAM4C,QAChBgf,EAAWzhB,OAAOyhB,SAClBuD,EAAUhlB,OAAOglB,QAEjBk3B,EAAkBr8C,EAAM4C,QAAQye,QAAQoB,KACxC65B,EAAY,MACZ7tC,EAAWtO,OAAOsO,SAEtB,SAAS8tC,EAAY9N,EAAM+N,GACvB,OAAKA,GAID/N,EAAO,MAAQ+N,IACf/N,EAAO+N,GAGC,IAAIlvC,OAAO,IAAMkvC,EAAY,KAE9BpwC,KAAKqiC,KACZA,EAAO+N,EAAa,IAAM/N,GAGvB7sB,EAASC,SAAW,MAAQD,EAAS66B,KAAO,IAAMhO,GAAM3sC,QAAQ,SAAU,MAbtE2sC,EAgBf,SAASiO,EAAcC,GACnB,OAAOA,EAAO,KAAO,IAGzB,SAASC,EAAaF,GAClB,IAAIllB,EAAO5V,EAAS4V,KAGpB,MAAsB,OAAlBklB,GAA0BllB,EAAKxiB,QAAQ,MAAQ,GAAKwiB,EAAKxiB,QAAQ,MAAQ,EAClE,KAGJwiB,EAAKvtB,MAAMyyC,GAAe,IAAM,GAG3C,SAASG,EAAUC,EAAMpvB,GACrB,OAA0B,IAAtBA,EAAI1Y,QAAQ8nC,GACJpvB,EAAI7S,OAAOiiC,EAAKj2C,QAAS/E,QAAQ,QAAS,KAE3C4rB,EAIf,IAAIqvB,EAAiB/8C,EAAMiH,MAAM7E,OAAO,CACpCo3C,KAAM,WACE6C,EACAjkB,YAAW,WAAajT,EAAQq0B,UAEhCr0B,EAAQq0B,QAIhBwD,QAAS,WACDX,EACAjkB,YAAW,WAAajT,EAAQ63B,aAEhC73B,EAAQ63B,WAIhBn2C,OAAQ,WACJ,OAAOse,EAAQte,QAGnBo2C,gBAAiB,SAASvvB,GACtB9L,EAAS9f,QAAQ4rB,MAIrBwvB,EAAmBH,EAAe36C,OAAO,CACzCoF,KAAM,SAASs1C,GACXz9C,KAAKy9C,KAAOA,GAGhBK,SAAU,SAAS1f,GACftY,EAAQD,UAAU,GAAIzW,EAAS2uC,MAAOb,EAAY9e,EAAIp+B,KAAKy9C,QAG/Dh7C,QAAS,SAAS27B,GACdtY,EAAQk4B,aAAa,GAAI5uC,EAAS2uC,MAAOb,EAAY9e,EAAIp+B,KAAKy9C,QAGlEQ,UAAW,SAAS5vB,GAChB,OAAOmvB,EAAUx9C,KAAKy9C,KAAMpvB,IAGhC5a,QAAS,WACL,IAAIA,EAAU8O,EAAS27B,SAMvB,OAJI37B,EAASwZ,SACTtoB,GAAW8O,EAASwZ,QAGjByhB,EAAUx9C,KAAKy9C,KAAMhqC,IAGhC0qC,OAAQ,SAASn1B,GACbrmB,EAAE7B,QAAQ0I,KAAK,iBAAkBwf,IAGrCpB,KAAM,WACFjlB,EAAE7B,QAAQmJ,OAAO,mBAGrBm0C,iBAAkB,SAASl3C,GACvB,IAAIm3C,EACAZ,EAAOv2C,EAAQu2C,KACfS,EAAW37B,EAAS27B,SACpBI,EAAOf,EAAaF,EAAcn2C,EAAQq3C,WAE1Cd,IAASS,EAAW,MACpBG,EAAWZ,GAGXA,IAASS,GAAYI,IACrBD,EAAWnB,EAAYoB,EAAK77C,QAAQw6C,EAAW,IAAKQ,IAGpDY,GACAv4B,EAAQD,UAAU,GAAIzW,EAAS2uC,MAAOM,MAKlD,SAASG,EAAQnwB,GACb,OAAOA,EAAI5rB,QAAQ,QAAS,KAGhC,SAASg8C,EAAQpwB,GACb,OAAOA,EAAI5rB,QAAQ,YAAa,MAGpC,IAAIi8C,EAAchB,EAAe36C,OAAO,CACpCoF,KAAM,SAASm1C,GACXt9C,KAAK2+C,IAAMh+C,EAAM8uB,OACjBzvB,KAAKif,OAASo+B,EAAcC,GAC5Bt9C,KAAK46B,IAAM0iB,EAAOmB,EAAUD,GAGhCV,SAAU,SAAS1f,GACf7b,EAAS+7B,KAAOt+C,KAAK46B,IAAIwD,IAG7B37B,QAAS,SAAS27B,GACdp+B,KAAK49C,gBAAgB59C,KAAK46B,IAAIwD,KAGlC6f,UAAW,SAAS5vB,GAChB,OAAIA,EAAI1Y,QAAQ3V,KAAKif,QAAU,EACrBoP,EAECA,EAAIzjB,MAAM5K,KAAKif,QAAQ,IAItCk/B,OAAQ,SAASn1B,GACTzlB,EAAQwiB,WACRpjB,EAAE7B,QAAQmoB,GAAG,cAAgBjpB,KAAK2+C,IAAK31B,GAEvChpB,KAAK4+C,UAAYC,YAAY71B,EAlKhB,KAsKrBpB,KAAM,WACFjlB,EAAE7B,QAAQm4B,IAAI,cAAgBj5B,KAAK2+C,KACnCG,cAAc9+C,KAAK4+C,YAGvBnrC,QAAS,WACL,OAAO8pC,EAAav9C,KAAKif,SAG7Bm/B,iBAAkB,SAASl3C,GACvB,IAAIg3C,EAAW37B,EAAS27B,SACpBT,EAAOv2C,EAAQu2C,KAEnB,SAAIv2C,EAAQ2e,WAAa43B,IAASS,KAC9Bl+C,KAAK49C,gBAAgBH,EAAOz9C,KAAKif,OAASu+B,EAAUC,EAAMS,KACnD,MAOfa,EAAUp+C,EAAM2I,WAAWvG,OAAO,CAClCuS,MAAO,SAASpO,GAKZ,GAJAA,EAAUA,GAAW,GAErBlH,KAAKwJ,KAAK,CAACszC,EArMR,OAqMsBC,GAAO71C,IAE5BlH,KAAK67C,SAAT,CAIA77C,KAAK67C,UAAW,EAEhB30C,EAAQu2C,KAAOv2C,EAAQu2C,MAAQ,IAE/B,IACIhqC,EADAurC,EAAUh/C,KAAKi/C,cAAc/3C,GAI7B83C,EAAQZ,iBAAiBl3C,KAI7BuM,EAAUurC,EAAQvrC,UAElB9Q,EAAEI,OAAO/C,KAAM,CACXg/C,QAASA,EACTvB,KAAMv2C,EAAQu2C,KACdyB,cAAeF,EAAQx3C,SACvBiM,QAASA,EACT0rC,UAAW,CAAC1rC,KAGhBurC,EAAQb,OAAOn+C,KAAKo/C,UAAU51C,KAAKxJ,UAGvCi/C,cAAe,SAAS/3C,GACrB,OAAO3D,EAAQsiB,WAAa3e,EAAQ2e,UAAY,IAAIg4B,EAAiB32C,EAAQu2C,MAAQ,IAAIiB,EAAYx3C,EAAQq3C,WAGhH32B,KAAM,WACG5nB,KAAK67C,WAGV77C,KAAKg/C,QAAQp3B,OACb5nB,KAAKiK,OAAO6yC,GACZ98C,KAAK67C,UAAW,IAGpBsC,OAAQ,SAASn1B,GACbhpB,KAAKwJ,KAAKszC,EAAQ9zB,IAGtBvmB,QAAS,SAAS27B,EAAIihB,GAElBr/C,KAAKs/C,UAAUlhB,EAAIihB,GAAQ,SAASL,GAChCA,EAAQv8C,QAAQ27B,GAChBp+B,KAAKm/C,UAAUn/C,KAAKm/C,UAAU33C,OAAS,GAAKxH,KAAKyT,YAIzDqqC,SAAU,SAAS1f,EAAIihB,GACnB,GAAW,WAAPjhB,EAGA,OAFAp+B,KAAKu/C,YAAa,OAClBv/C,KAAKg/C,QAAQ7E,OAIjBn6C,KAAKs/C,UAAUlhB,EAAIihB,GAAQ,SAASL,GAChCA,EAAQlB,SAAS1f,GACjBp+B,KAAKm/C,UAAUx9C,KAAK3B,KAAKyT,aAIjC6rC,UAAW,SAASlhB,EAAIihB,EAAQr2B,GAC5B,IAAIg2B,EAAUh/C,KAAKg/C,QAEnB5gB,EAAK4gB,EAAQf,UAAU7f,GAEnBp+B,KAAKyT,UAAY2qB,GAAMp+B,KAAKyT,UAAYqa,mBAAmBsQ,IAK1DihB,GACGr/C,KAAKoK,QAAQ0yC,EAAQ,CAAEzuB,IAAK+P,EAAIohB,QAAQ,MAKhDx/C,KAAKyT,QAAU2qB,EAEfpV,EAASze,KAAKvK,KAAMg/C,GAEpBh/C,KAAKk/C,cAAgBF,EAAQx3C,UAdzBxH,KAAKoK,QAAQ2yC,IAiBrBqC,UAAW,WACP,IAAIJ,EAAUh/C,KAAKg/C,QACfvrC,EAAUurC,EAAQvrC,UAClBgsC,EAAYT,EAAQx3C,SACpBk4C,EAAuB1/C,KAAKk/C,gBAAkBO,EAC9CtF,EAAO1mC,IAAYzT,KAAKm/C,UAAUn/C,KAAKm/C,UAAU33C,OAAS,IAAMk4C,EAChEH,EAAav/C,KAAKu/C,WAClBI,EAAO3/C,KAAKyT,QAEhB,OAAgB,OAAZA,GAAoBzT,KAAKyT,UAAYA,GAAWzT,KAAKyT,UAAYqa,mBAAmBra,KAIxFzT,KAAKk/C,cAAgBO,EACrBz/C,KAAKu/C,YAAa,EAElBv/C,KAAKyT,QAAUA,EAEX0mC,GAAQn6C,KAAKoK,QAAQ,OAAQ,CAAEikB,IAAKsxB,EAAMvhB,GAAI3qB,KAC9CurC,EAAQrB,eACR39C,KAAKyT,QAAUksC,IAIf3/C,KAAKoK,QAAQ0yC,EAAQ,CAAEzuB,IAAK5a,EAASmsC,mBAAoBL,KACrDpF,EACA6E,EAAQrB,WAERqB,EAAQ7E,OACRn6C,KAAKk/C,sBAETl/C,KAAKyT,QAAUksC,SAIfxF,EACAn6C,KAAKm/C,UAAU9vB,MAEfrvB,KAAKm/C,UAAUx9C,KAAK8R,QAKhC9S,EAAMo+C,QAAUA,EAChBp+C,EAAMo+C,QAAQrB,eAAiBA,EAC/B/8C,EAAMo+C,QAAQL,YAAcA,EAC5B/9C,EAAMo+C,QAAQlB,iBAAmBA,EACjCl9C,EAAMu8C,YAAcA,EACpBv8C,EAAMmlB,QAAU,IAAIi5B,EApVxB,CAqVGj+C,OAAOH,MAAM+G,QACF/G,OAEd,WACI,IAAIA,EAAQG,OAAOH,MACfmlB,EAAUnlB,EAAMmlB,QAChBxc,EAAa3I,EAAM2I,WACnBu2C,EAAO,OACPC,EAAgB,eAChBhD,EAAS,SACTiD,EAAO,OACPhD,EAAO,OACPiD,EAAgB,aAChBC,EAAa,eACbC,EAAa,SACbC,EAAe,2BAEnB,SAASC,EAAkBjwC,EAAOkwC,GAC9B,OAAOA,EAAWlwC,EAAQ,UAW9B,SAASmwC,EAASjyB,GACd,OAAOA,EAAI5rB,QAAQ,gBAAiB,IAGxC,IAAI89C,EAAQ5/C,EAAMiH,MAAM7E,OAAO,CAC3BoF,KAAM,SAASq4C,EAAOx3B,EAAUy3B,GACtBD,aAAiBvyC,SACnBuyC,EAfZ,SAAuBA,EAAOC,GAC1B,OAAO,IAAIxyC,OAAO,IAAMuyC,EACnB/9C,QAAQ09C,EAAc,QACtB19C,QAAQu9C,EAAe,WACvBv9C,QAAQw9C,EAAYG,GACpB39C,QAAQy9C,EAAY,SAAW,IAAKO,EAAa,IAAM,IAU5CC,CAAcF,EAAOC,IAGjCzgD,KAAKwgD,MAAQA,EACbxgD,KAAK2gD,UAAY33B,GAGrBA,SAAU,SAASqF,EAAK8rB,EAAMqF,GAC1B,IAAIlb,EAEA98B,EADAoC,EAAM,EAENg3C,EAAoBjgD,EAAM0jC,uBAAuBhW,GAOrD,GANIuyB,EAAkBC,MAAQ1G,EAE9B9rB,EAAMiyB,EAASjyB,GAEf7mB,GADA88B,EAAStkC,KAAKwgD,MAAMnoC,KAAKgW,GAAKznB,MAAM,IACpBY,OAEZg4C,EACA,KAAO51C,EAAMpC,EAAQoC,SACU,IAAhB06B,EAAO16B,KACd06B,EAAO16B,GAAOkkB,mBAAmBwW,EAAO16B,KAKpD06B,EAAO3iC,KAAKi/C,GAEZ5gD,KAAK2gD,UAAUv4C,MAAM,KAAMk8B,IAG/Bwc,UAAW,SAASzyB,EAAK8rB,EAAMqF,GAC3B,QAAIx/C,KAAKwgD,MAAMzzC,KAAKuzC,EAASjyB,MACzBruB,KAAKgpB,SAASqF,EAAK8rB,EAAMqF,IAClB,MAOfuB,EAASz3C,EAAWvG,OAAO,CAC3BoF,KAAM,SAASjB,GACNA,IACDA,EAAU,IAGdoC,EAAWvB,GAAGI,KAAKoC,KAAKvK,MAExBA,KAAKghD,OAAS,GACdhhD,KAAK6lB,UAAY3e,EAAQ2e,UACzB7lB,KAAKu+C,SAAWr3C,EAAQq3C,SACxBv+C,KAAKy9C,KAAOv2C,EAAQu2C,KACpBz9C,KAAKygD,YAAoC,IAAvBv5C,EAAQu5C,WAE1BzgD,KAAKwJ,KAAK,CAACq2C,EAAMC,EAAehD,EAAQC,EAAMgD,GAAO74C,IAGzDlF,QAAS,WACL8jB,EAAQ7b,OAAO6yC,EAAQ98C,KAAKihD,kBAC5Bn7B,EAAQ7b,OAAO8yC,EAAM/8C,KAAKkhD,YAC1Bp7B,EAAQ7b,OAAO81C,EAAM//C,KAAKmhD,YAC1BnhD,KAAKiK,UAGTqL,MAAO,WACH,IAAIrN,EAAOjI,KAEPohD,EAAY,SAASz8C,GAAKsD,EAAK44C,MAAMl8C,IACrC08C,EAAkB,SAAS18C,GAAKsD,EAAKq5C,YAAY38C,IAErDmhB,EAAQxQ,MAAM,CACVisC,KALY,WAAat5C,EAAKu5C,SAM9BrD,OAAQkD,EACRlH,KAAMiH,EACNv7B,UAAW5d,EAAK4d,UAChB04B,SAAUt2C,EAAKs2C,SACfd,KAAMx1C,EAAKw1C,OAIf,IAAIgE,EAAkB,CAAEpzB,IAAKvI,EAAQrS,SAAW,IAAKtK,eAAgBxG,EAAEQ,MAElE8E,EAAKmC,QAAQy1C,EAAM4B,IACpBx5C,EAAKq5C,YAAYG,GAGrBzhD,KAAKihD,iBAAmBI,EACxBrhD,KAAKmhD,WAAaC,GAGtBZ,MAAO,SAASA,EAAOx3B,GACnBhpB,KAAKghD,OAAOr/C,KAAK,IAAI4+C,EAAMC,EAAOx3B,EAAUhpB,KAAKygD,cAGrD3C,SAAU,SAASzvB,EAAKgxB,GACpB1+C,EAAMmlB,QAAQg4B,SAASzvB,EAAKgxB,IAGhC58C,QAAS,SAAS4rB,EAAKgxB,GACnB1+C,EAAMmlB,QAAQrjB,QAAQ4rB,EAAKgxB,IAG/BwB,MAAO,SAASl8C,GACR3E,KAAKoK,QAAQ21C,EAAM,CAAE1xB,IAAK1pB,EAAE0pB,IAAK+P,GAAIz5B,EAAEy5B,MACvCz5B,EAAEwE,kBAIVq4C,MAAO,WACHxhD,KAAKoK,QAAQ2yC,IAGjBuE,YAAa,SAAS38C,GAClB,IAAI0pB,EAAM1pB,EAAE0pB,IACRmxB,IAAW76C,EAAE66C,OACbrF,EAAOx1C,EAAEi7C,kBAMb,GAJKvxB,IACDA,EAAM,KAGNruB,KAAKoK,QAAQ0yC,EAAQ,CAAEzuB,IAAK1pB,EAAE0pB,IAAKiW,OAAQ3jC,EAAM0jC,uBAAuB1/B,EAAE0pB,KAAMuxB,kBAAmBzF,IACnGx1C,EAAEwE,qBADN,CAUA,IALA,IAAIS,EAAM,EACNo3C,EAAShhD,KAAKghD,OAEdx5C,EAASw5C,EAAOx5C,OAEboC,EAAMpC,EAAQoC,IAGhB,GAFQo3C,EAAOp3C,GAELk3C,UAAUzyB,EAAK8rB,EAAMqF,GAC5B,OAIJx/C,KAAKoK,QAAQ01C,EAAe,CAAEzxB,IAAKA,EAAKiW,OAAQ3jC,EAAM0jC,uBAAuBhW,GAAMuxB,kBAAmBzF,KACtGx1C,EAAEwE,qBAKdxI,EAAMogD,OAASA,EAnLnB,GAsMA,IAAIW,EAAQ,CACRC,GAAM,CACFtkC,OAAQ,SAAUo3B,EAAK1sC,GAAM,OAAO,SAAU7C,GAAK,OAAOuvC,EAAIvvC,IAAM6C,EAAG7C,KACvE08C,SAAU,WAAc,OAAO,IAEnCC,IAAO,CACHxkC,OAAQ,SAAUo3B,EAAK1sC,GAAM,OAAO,SAAU7C,GAAK,OAAOuvC,EAAIvvC,IAAM6C,EAAG7C,KACvE08C,SAAU,WAAc,OAAO,KAInCE,EAAe,CACfC,cAAe,SAAU78C,GAAK,OAAOvE,MAAMgI,QAAQzD,IAAY,KAANA,GACzD88C,iBAAkB,SAAU98C,GAAK,OAAOvE,MAAM8H,UAAUvD,IAAY,KAANA,GAC9DiwB,SAAU,SAAUjwB,EAAGigB,GAAK,OAAQjgB,EAAI,IAAIyQ,QAAQwP,IAAM,GAC1D88B,eAAgB,SAAU/8C,EAAGigB,GAAK,OAAgC,KAAxBjgB,EAAI,IAAIyQ,QAAQwP,IAC1D+8B,eAAgB,SAAUh9C,EAAGigB,GAAK,OAAQjgB,EAAI,IAAIyQ,QAAQwP,GAAIjgB,GAAK,IAAIsC,QAAU2d,GAAK,IAAI3d,QAAU,GACpG26C,iBAAkB,SAAUj9C,EAAGigB,GAAK,OAAuC,KAA/BjgB,EAAI,IAAIwT,YAAYyM,EAAG,IACnEi9B,SAAU,SAAUl9C,EAAGigB,GAAK,OAAQjgB,EAAI,IAAIyQ,QAAQwP,GAAIjgB,GAAK,IAAIsC,QAAU2d,GAAK,IAAI3d,SAAW,GAC/FswB,GAAI,SAAU5yB,EAAGigB,GAAK,OAAOjgB,IAAMigB,GACnCk9B,GAAI,SAAUn9C,EAAGigB,GAAK,OAAOjgB,EAAIigB,GACjCm9B,IAAK,SAAUp9C,EAAGigB,GAAK,OAAOjgB,GAAKigB,GACnCo9B,QAAS,SAAUr9C,GAAK,MAAa,KAANA,GAC/Bs9C,WAAY,SAAUt9C,GAAK,MAAa,KAANA,GAClCu9C,UAAW,SAAUv9C,GAAK,OAAOvE,MAAM8H,UAAUvD,IACjDw9C,OAAQ,SAAUx9C,GAAK,OAAOvE,MAAMgI,QAAQzD,IAC5Cy9C,GAAI,SAAUz9C,EAAGigB,GAAK,OAAOjgB,EAAIigB,GACjCy9B,IAAK,SAAU19C,EAAGigB,GAAK,OAAOjgB,GAAKigB,GACnC09B,IAAK,SAAU39C,EAAGigB,GAAK,OAAOjgB,GAAKigB,GACnC29B,WAAY,SAAU59C,EAAGigB,GAAK,OAAsC,KAA9BjgB,EAAI,IAAIwT,YAAYyM,EAAG,KAG7DtL,EAAa,sBAgDbkpC,EAAkB,SAAU9zB,GAC5B,IAAIhK,EAAQgK,EAAIhK,MACZw7B,EAAaxxB,EAAIwxB,WACjB/3C,EAAQumB,EAAIvmB,MACZs6C,EAAW/zB,EAAI+zB,cAA4B,IAAbA,IAAsBA,EAAW,MACnE,IAAIC,EAAyBh0B,EAAIg0B,uBAEjCh+B,EAAStkB,MAAM8H,UAAUwc,GAAsCA,EAA7B,SAAU/f,GAAK,OAAOA,GAExDu7C,GAAa9/C,MAAM8H,UAAUg4C,IAAcA,EAE3C,IAAIyC,EA3CU,SAAU/zB,EAAMzmB,EAAO+3C,EAAYwC,GACjD,IAAKtiD,MAAM8H,UAAUC,GACjB,OAAOymB,EAGX,IAAIslB,EAAMtlB,EAEV,GAAIxuB,MAAMiI,SAASF,GAAQ,CACvB,IAAI2N,EAAOwD,EAAWxB,KAAK3P,GACvB2N,EACA3N,EAAQ,IAAI0F,MAAMiI,EAAK,IAEvBo+B,EAAM,SAAUvvC,GACZ,IAAIE,EAAI+pB,EAAKjqB,GACb,MAAiB,iBAANE,GAAkBq7C,EAClBwC,EAAyB79C,EAAE+9C,kBAAkBF,GAA0B79C,EAAEkT,cAEzE3X,MAAMkI,UAAUzD,GAAKA,EAAI,GAAKA,GAMrD,OAAIzE,MAAMqI,OAAON,GACN,SAAUxD,GACb,IAAIE,EAAIqvC,EAAIvvC,GACZ,OAAOvE,MAAMqI,OAAO5D,GAAKA,EAAE6D,UAAY7D,GAGxCqvC,EAcQ2O,CACXziD,MAAMuI,WAAW+b,GAASA,EAAQtkB,MAAMmuB,OAAO7J,GAAO,GACtDvc,EACA+3C,EACAwC,GAGJv6C,EAhEe,SAAUA,EAAO+3C,EAAYwC,GAC5C,GAAa,MAATv6C,GAAiB/H,MAAMiI,SAASF,GAAQ,CACxC,IAAI2N,EAAOwD,EAAWxB,KAAK3P,GAC3B,GAAI2N,EACA,OAAO,IAAIjI,MAAMiI,EAAK,IAAIpN,UACvB,GAAIw3C,EACP,OAAOwC,EAAyBv6C,EAAMy6C,kBAAkBF,GAA0Bv6C,EAAM4P,mBAEzF,GAAa,MAAT5P,GAAiB/H,MAAMqI,OAAON,GACrC,OAAOA,EAAMO,UAEjB,OAAOP,EAqDC26C,CAAa36C,EAAO+3C,EAAYwC,GAExC,IAAIK,EAAK3iD,MAAMuI,WAAW85C,GAAYA,EAAWlB,EAAakB,GAE9D,OAAO,SAAU99C,GAAK,OAAOo+C,EAAGJ,EAASh+C,GAAIwD,EAAO+3C,KAKpD8C,EAA2B,SAAUttB,GACrC,IAAIgtB,EAAyBhtB,EAAOgtB,uBAChCO,EAAW9B,EAAMzrB,EAAOyrB,OAAS,OACrC,OAAOzrB,EAAOwtB,QACTxtB,OAAOt1B,MAAM8H,WACb6R,KAAI,SAAUlV,GAAK,OAPgBkI,EAOoBlI,EAPHzE,MAAM8H,UAAU6E,EAAOm2C,SAOfF,EAAyBG,EAAoBt+C,EAAG69C,IAA2BF,EAAgBW,EAAoBt+C,EAAG69C,IAPrJ,IAAU31C,KAQnCq2C,OAAOH,EAASnmC,OAAQmmC,EAAS5B,WAGtC8B,EAAsB,SAAUztB,EAAQgtB,GAA0B,OAAQtiD,MAAM8H,UAAUw6C,GAA0BxiD,OAAOC,OAAOu1B,EAAQ,CAAEgtB,uBAAwBA,IAA4BhtB,IAcpM,SAAUtzB,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfoC,EAASJ,EAAEI,OACX6gD,EAAU,OACVC,EAAa,WACb36C,EAAavI,EAAMuI,WACnB46C,EAAe,CACXhsB,GAAI,KACJ+qB,IAAK,KACLR,GAAI,KACJC,IAAK,KACLK,GAAI,KACJC,IAAK,KACLztB,SAAU,cACV8sB,eAAgB,cAChBG,SAAU,WACVU,WAAY,aACZJ,OAAQ,KACRD,UAAW,KACXV,cAAe,KACfC,iBAAkB,KAClBO,QAAS,KACTC,WAAY,MAEhBuB,EAA0BhhD,EAAO,GAAI+gD,EAAc,CAC/C3uB,SAAU,aAEd6uB,EAAU,CACNC,SAAUthD,EAAEQ,KACZ+gD,KAAMvhD,EAAEQ,KACR8yB,OAAQ,SAASqO,EAAQrO,EAAQkuB,GACzBluB,IACAA,EAASmuB,EAAcnuB,EAAQkuB,MAE3B7f,EAAO+f,QAAUpuB,IAI7B/Q,KAAM,SAASof,EAAQggB,GACnB,IAAIh2B,EAAO3rB,EAAE2X,IAAIgqC,GAAS,SAAS57C,GAC/B,IAAI67C,EAAQ77C,EAAMuc,MAAMxiB,QAAQ,MAAO,KAMvC,MAJkB,SAAdiG,EAAM22B,MACNklB,GAAS,SAGNA,KACR15C,KAAK,KAEJyjB,IACAgW,EAAOkgB,SAAWl2B,IAG1Bm2B,KAAM,SAASngB,EAAQmgB,GACfA,IACAngB,EAAOogB,MAAQD,IAGvBE,KAAM,SAASrgB,EAAQqgB,GACfA,IACArgB,EAAOsgB,KAAOD,KAI1BE,EAAkB,CACdC,KAAM,CACFC,SAAU,UAItB,SAASX,EAAcnuB,EAAQ+uB,GAC3B,IAEIp7C,EACApC,EACAyd,EACAvf,EACAgL,EACAsyC,EACAt6C,EACA+3C,EATAlqC,EAAS,GACTmrC,EAAQzrB,EAAOyrB,OAAS,MASxB+B,EAAUxtB,EAAOwtB,QAErB,IAAK75C,EAAM,EAAGpC,EAASi8C,EAAQj8C,OAAQoC,EAAMpC,EAAQoC,IAEjDqb,GADAgR,EAASwtB,EAAQ75C,IACFqb,MACfvc,EAAQutB,EAAOvtB,MACfs6C,EAAW/sB,EAAO+sB,SAEd/sB,EAAOwtB,QACPxtB,EAASmuB,EAAcnuB,EAAQ+uB,IAE/BvE,EAAaxqB,EAAOwqB,WACpBx7B,EAAQA,EAAMxiB,QAAQ,MAAO,KAC7BwzB,EAAS6tB,EAAad,GAClBgC,IACA/uB,EAAS8tB,EAAwBf,IAGpB,kBAAbA,EACA/sB,EAASt1B,EAAM+P,OAAO,6BAA8BuU,EAAOgR,GACvC,qBAAb+sB,EACP/sB,EAASt1B,EAAM+P,OAAO,8BAA+BuU,EAAOgR,GACxC,WAAb+sB,GAAsC,cAAbA,EAChC/sB,EAASt1B,EAAM+P,OAAO,eAAgBuU,EAAOgR,GACzB,YAAb+sB,GAAuC,eAAbA,EACjC/sB,EAASt1B,EAAM+P,OAAO,aAAcuU,EAAOgR,GACpCA,GA3G3B,YA2GqCvtB,IAEJ,YADbhD,EAAO/E,EAAM+E,KAAKgD,KAEdgI,EAAS,QACThI,EAAQA,EAAMjG,QAAQ,KAAM,OAET,IAAfg+C,IACAx7B,EAAQ,WAAaA,EAAQ,MAGjB,SAATvf,EACHs/C,GACAt0C,EAAS,gCACThI,EAAQ/H,EAAMsc,SAAS7U,MAAMM,EAAO,YAEpCgI,EAAS,oCAGbA,EAAS,MAGTulB,EAAOzuB,OAAS,EACD,gBAAXyuB,EACAvlB,EAAS,WAAaA,EAAS,KAE/BA,EAAS,OAASA,EAAS,QACV,mBAAbsyC,IACIgC,GACAt0C,EAAS,uBACTulB,EAAS,WAETvlB,GAAU,cAKtBA,EAAS,WAAaA,EAG1BulB,EAASt1B,EAAM+P,OAAOA,EAAQulB,EAAQvtB,EAAOuc,KAIrD1O,EAAO5U,KAAKs0B,GAShB,OANAA,EAAS1f,EAAO1L,KAAK,IAAM62C,EAAQ,KAE/BnrC,EAAO/O,OAAS,IAChByuB,EAAS,IAAMA,EAAS,KAGrBA,EAGX,SAASgvB,EAAcj4B,GACnB,IAAK,IAAI5qB,KAAQ4qB,EACkB,IAA3B5qB,EAAKuT,QAAQ,kBACNqX,EAAI5qB,GAKvB,SAAS8iD,IACL,OAAO7hD,KAAKkN,MAA4B,OAArB,EAAIlN,KAAKqsB,WAAqBxe,SAAS,IAAIsK,OAAO,GAGzE,SAAS2pC,EAAelmC,GACpB,OAAOA,EAASimC,IAAU,IAAMA,IAAU,IAAMA,IAGpD,SAASE,EAAgBC,EAAUC,GAC/B,IAAI/uC,EAASqtC,SAAiByB,EAM9B,OAJIC,IACA/uC,GAAU,MAGPA,EAGX,SAASgvC,EAAcC,EAAWxW,EAAMyW,EAAUC,GAC7C,IAAIC,EAAeH,EAAUt+C,QAAQw+C,GAASr3B,IAC1Cu3B,EAAgBjlD,EAAM+P,OAAO,OAAQ+0C,GAEzC,OAAIv8C,EAAWy8C,GACJC,EAAgBD,EAAa3W,GAE7B4W,EAAgBD,EAIhC,SAASE,EAAmBC,EAAWC,GACnC,IAAIC,EAAS,GAOb,OALAA,GAAUZ,EAAgBU,GAAW,GACrCE,GAAUpC,qCACVoC,GAAUpC,wCACVoC,GAAUpC,mBAA2BmC,EA+BzC,SAASE,EAAkBC,EAAWb,EAAUS,EAAWC,EAAUP,EAAWE,EAASS,GACrF,IAAIC,EAAc,GAOlB,OALAA,GAQJ,SAAqBf,EAASS,GAC1B,IAAIM,EAAc,GAKlB,OAHAA,GAAe,KAAOf,EAAWzB,EACjCwC,GAAe,2CAA6CN,EAAYlC,EAZzDyC,CAAYhB,EAAUS,GACrCM,GApBJ,SAAuBE,EAAYR,EAAWC,EAAUL,EAASF,EAAWW,GAGxE,IAFA,IAXyBnX,EACrBuX,EAUAH,EAAc,GAET7+C,EAAI,EAAGA,EAAI++C,EAAW9+C,OAAQD,IACnC6+C,GAAeP,EAAmBC,EAAWC,GAC7CK,GAAevC,EAAa0B,EAAcC,EAAWc,EAAW/+C,GAAIi+C,EAAUt+C,QAAQw+C,GAAShgD,KAAMggD,GAAW,YAC3GS,IACDC,IAjBiBpX,EAiBkBsX,EAAW/+C,GAhBlDg/C,WAAU,GAEdA,GAAW3C,2DACX2C,GAAW3C,oCACX2C,GAAW1C,EAAaljD,EAAM6R,UAAUw8B,KAcpCoX,GAAexC,EACfmC,IAGJ,OAAOK,EAOQI,CAAcN,EAAWJ,EAAWC,EAAUL,EAASF,EAAWW,GACjFC,GAAehB,EAAgBU,GAAW,GAC1CM,GAAexC,EAgGnB7gD,GAAO,EAAMpC,EAAMkN,KAAM,CACrB44C,QAAS,CACLC,MAAO,CACHhhD,KAAM,OACNmI,KAAM,SAASA,GACX,OAAOA,EAAKrJ,EAAEmiD,SAAW,CAAC94C,EAAKrJ,IAEnCoiD,MAAO,cAGfC,WAAY,CACRH,MAAO,CACH5B,KAAM,CACFnnB,OAAO,EACPonB,SAAU,QACV+B,MAAO,aAEXC,OAAQ,CACJppB,OAAO,EACPonB,SAAU,OACV9X,YAAa,mBACbvnC,KAAM,OAEVshD,OAAQ,CACJrpB,OAAO,EACPonB,SAAU,OACV9X,YAAa,mBACbvnC,KAAM,QAEV1D,QAAS,CACL27B,OAAO,EACPonB,SAAU,OACVr/C,KAAM,UAEVuhD,aAAc,SAAS//C,EAASxB,EAAMy+C,GAClC,IAAI7f,EACA57B,EACAosB,EACAiwB,EAOJ,GALA79C,EAAUA,GAAW,GACrBxB,EAAOA,GAAQ,OAEfq/C,GADAA,GAAY/kD,KAAKkH,SAAW29C,GAAiBn/C,IACvBq/C,EAASA,SAAW,OAE7B,SAATr/C,EASA,IAAKovB,KARLwP,EAAS,CACL4iB,aAAc,YAGF,QAAZnC,IACAzgB,EAAO6iB,QAAU,QAGNjgD,EACP88C,EAAQlvB,GACRkvB,EAAQlvB,GAAQwP,EAAQp9B,EAAQ4tB,GAASqvB,GAEzC7f,EAAOxP,GAAU5tB,EAAQ4tB,OAG9B,CACH,GAAiB,SAAbiwB,EACA,MAAM,IAAIt0C,MAAM,sCAAwC/K,EAAO,eAGnE,GAAa,YAATA,EAAoB,CACpB,IAAKovB,KAAU5tB,EAEU,iBADrBwB,EAAQxB,EAAQ4tB,MAEZ5tB,EAAQ4tB,GAAUpsB,EAAQ,IAIlC47B,EAAS3jC,EAAM6R,UAAUtL,IAIjC,OAAOo9B,OAMvBvhC,GAAO,EAAMpC,EAAMkN,KAAM,CACrB44C,QAAS,CACL,WAAY,CACR/gD,KAAM,OACNmI,KAAM,SAASA,GACX,GAAI3K,MAAMD,QAAQ4K,GAAO,CACrB,IAAK,IAAItG,EAAI,EAAGA,EAAIsG,EAAKrG,OAAQD,IAC7B09C,EAAcp3C,EAAKtG,IAEvB,OAAOsG,EAKP,OAFAo3C,EADAp3C,EAAOlL,EAAEI,OAAO,GAAI8K,IAGhBA,EAAKnF,MACEmF,EAAKnF,MAET,CAACmF,IAGhB+4C,MAAO,SAAS/4C,GACZ,OAAOA,EAAK,mBAIxBg5C,WAAY,CACR,WAAY,CACRO,MAAO,CACH1hD,KAAM,QAEVo/C,KAAM,CACFnnB,OAAO,EACPonB,SAAU,QAEdgC,OAAQ,CACJppB,OAAO,EACPonB,SAAU,OACV9X,YAAa,0CACbvnC,KAAM,OAEVshD,OAAQ,CACJrpB,OAAO,EACPonB,SAAU,OACV9X,YAAa,0CACbvnC,KAAM,QAEV1D,QAAS,CACL27B,OAAO,EACPonB,SAAU,OACVr/C,KAAM,UAEVuhD,aAAc,SAAS//C,EAASxB,GAC5B,IAAI6Q,EAAS5V,EAAMkN,KAAKg5C,WAAWH,MAAMO,aAAa//C,EAASxB,GAAM,GAarE,MAZY,QAARA,IACA6Q,EAAO8wC,QAAS,SACT9wC,EAAO2wC,cAG7B3wC,GAAUA,EAAO8tC,UAEpB9tC,EAAO8tC,QAAU9tC,EAAO8tC,QAAQ5hD,QAAQ,sEAAsE,SAAS2C,GACtH,OAAOA,EAAE4F,UAAU,EAAG5F,EAAEoC,OAAS,OAIb+O,GAEX62B,OAAQ,SAASzoC,GACb,IACIuC,EA3OpB,SAA4Bs+C,EAAW8B,GACzC,IAAIpgD,EAAUnE,EAAO,GAAIyiD,EAAUt+C,QAAQkgD,OACjC/B,EAAWF,EAAe,aAC1BiB,EAAc,GACdL,EAAW,EACXwB,EAAW/B,EAAUt+C,QAAQkgD,MAAM/4B,IACnCy3B,EAAYX,EAAe,iBA4B/B,OA1BAj+C,EAAQxB,KAAO8/C,EAAUt+C,QAAQkgD,MAAM1hD,KACvCwB,EAAQmnB,IAAMnlB,EAAWq+C,GAAYA,IAAaA,EACxDrgD,EAAQsgD,QAAUzkD,EAAOmE,EAAQsgD,SAAW,GAAI,CAC/C,eAAgB,6BAA+BnC,IAGtCiC,EAAWG,QAAQjgD,SACnB4+C,GAAeH,EAAkBqB,EAAWG,QAASpC,EAAUS,EAAWC,EAAUP,EAAW,UAAU,GACzGO,GAAYuB,EAAWG,QAAQjgD,OAC/Bs+C,EAAYX,EAAe,kBAG3BmC,EAAWI,UAAUlgD,SACrB4+C,GAAeH,EAAkBqB,EAAWI,UAAWrC,EAAUS,EAAWC,EAAUP,EAAW,WAAW,GAC5GO,GAAYuB,EAAWI,UAAUlgD,OACjCs+C,EAAYX,EAAe,kBAG3BmC,EAAWK,QAAQngD,SACnB4+C,GAAeH,EAAkBqB,EAAWK,QAAStC,EAAUS,EAAWC,EAAUP,EAAW,UAAU,IAG7GY,GAAehB,EAAgBC,GAAU,GAEzCn+C,EAAQ2G,KAAOu4C,EAERl/C,EAyMmB0gD,CADH5nD,KAC4B2E,EAAEkJ,MACrCg6C,EAAcljD,EAAEkJ,MAEfg6C,EAAYJ,QAAQjgD,QAAWqgD,EAAYH,UAAUlgD,QAAWqgD,EAAYF,QAAQngD,SAIzF7E,EAAEmlD,KAAK/kD,GAAO,EAAM,GAAI,CACpBglD,QAAS,SAASC,GACd,IAEIv0C,EAFAw0C,EA/M5B,SAA4BC,GACxB,IAGIC,EACAC,EACAC,EACAC,EACAC,EAPAC,EAAkBN,EAAa/3C,MAAM,qCACrCs4C,EAAc,EACdZ,EAAc,GAOlBA,EAAYlmD,KAAK,CAAE+mD,OAAQ,GAAIC,QAAQ,IAEvC,IAAK,IAAIphD,EAAI,EAAGA,EAAIihD,EAAgBhhD,OAAQD,KACxC+gD,EAASE,EAAgBjhD,IACdmR,YAAY,KAAM4vC,EAAO9gD,OAAS,GACrCD,EAAIihD,EAAgBhhD,OAAS,GAC7BqgD,EAAYlmD,KAAK,CAAE+mD,OAAQ,GAAIC,QAAQ,KAQ3CF,EAHCA,EAGaP,EAAavyC,QAAQ2yC,EAAQG,EAAcH,EAAO9gD,QAFlD0gD,EAAavyC,QAAQ2yC,GAMvCF,GADAD,EAAaD,EAAal9C,UAAUy9C,EAAaP,EAAavyC,QAAQ,KAAM8yC,EAAc,KACtEt4C,MAAM,gCAAgCkf,OAC1Dg5B,EAAO1nD,EAAMoI,WAAWq/C,EAAOj4C,MAAM,UAAUkf,SAEnC,KAAOg5B,GAAQ,KACvBE,EAAYJ,EAAWh4C,MAAM,cAEzB03C,EAAYA,EAAYrgD,OAAS,GAAGkhD,OAAO/mD,KAAK2B,KAAK0xB,MAAMuzB,EAAU,KAGzEV,EAAYA,EAAYrgD,OAAS,GAAGmhD,QAAS,GAKrD,OAAOd,EAqK6Be,CAAmBZ,GAC/BjvC,EAAQ,EAGR8uC,EAAYJ,QAAQjgD,UACpBiM,EAAUw0C,EAAUlvC,IACR4vC,QAERhkD,EAAEojD,QAAQt0C,EAAQi1C,OAAOlhD,OAASiM,EAAQi1C,OAAS,GAAI,UAE3D3vC,KAEA8uC,EAAYH,UAAUlgD,UACtBiM,EAAUw0C,EAAUlvC,IACR4vC,QAGRhkD,EAAEojD,QAAQ,GAAI,WAElBhvC,KAEA8uC,EAAYF,QAAQngD,SACpBiM,EAAUw0C,EAAUlvC,IACR4vC,QACRhkD,EAAEojD,QAAQt0C,EAAQi1C,OAAQ,WAItC36B,MAAO,SAASi6B,EAAUI,EAAQr6B,GAC9BppB,EAAEopB,MAAMi6B,EAAUI,EAAQr6B,KAE/B7mB,SAnhBvB,CAyhBGpG,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfsC,EAAUC,MAAMD,QAChB0E,EAAgBhF,EAAEgF,cAClB2S,EAAM3X,EAAE2X,IACRtX,EAAOL,EAAEK,KACTD,EAASJ,EAAEI,OACX+rB,EAASnuB,EAAMmuB,OAGf+5B,EAFQloD,EAAMiH,MAEQ7E,OAAO,CAC7BoF,KAAM,SAASjB,GACX,IAAIe,EAAOjI,KACP4mD,EAAQ1/C,EAAQ0/C,MAChBkC,EAAQ5hD,EAAQ4hD,MAChB9zB,EAAQ9tB,EAAQ8tB,MAChB+zB,EAAS7hD,EAAQ6hD,OACjBC,EAAY9hD,EAAQ8hD,UACpBn7C,EAAO3G,EAAQ2G,KAEnB,GAAIi7C,EAAO,CACP,GAAInhD,EAAcmhD,GAAQ,CACtB,IAAI9gD,EAAOd,EAAQ+hD,WAAatoD,EAAMkN,KAAKq7C,MAEvCJ,EAAMl6B,QACN5rB,EAAK8lD,EAAMl6B,QAAQ,SAAS3J,EAAOvc,GAC3Bf,EAAce,IAAUA,EAAMuc,MACzBtkB,EAAMuI,WAAWR,EAAMuc,SACxBvc,EAAQ3F,EAAO2F,EAAO,CAAEuc,MAAOhd,EAAK6mB,OAAOpmB,EAAMuc,UAGrDvc,EAAQ,CAAEuc,MAAOhd,EAAK6mB,OAAOpmB,IAEjCogD,EAAMl6B,OAAO3J,GAASvc,KAI9B,IAAIinB,EAAKm5B,EAAMn5B,GACf,GAAIA,EAAI,CACJ,IAAIw5B,EAAU,GAEdA,EAAQlhD,EAAKmhD,cAAcz5B,GAAI,IAAS,CAAE1K,MAAOhd,EAAK6mB,OAAOa,IAC7Dm5B,EAAMl6B,OAAS7rB,EAAOomD,EAASL,EAAMl6B,QACrCk6B,EAAMn5B,GAAK1nB,EAAKmhD,cAAcz5B,GAElCm5B,EAAQ9gD,EAAKtI,OAAOopD,GAGxB7gD,EAAK6gD,MAAQA,EAyDjB,GAtDIlC,IACoB,iBAATA,GACPA,EAAQ3+C,EAAK6mB,OAAO83B,GACpB3+C,EAAK2+C,MAAQ,SAAS/4C,GAClB,OAAOoL,SAAS2tC,EAAM/4C,GAAO,MAEV,mBAAT+4C,IACd3+C,EAAK2+C,MAAQA,IAIjBmC,IACqB,iBAAVA,GACPA,EAAS9gD,EAAK6mB,OAAOi6B,GACrB9gD,EAAK8gD,OAAS,SAASl7C,GACnB,OAAOk7C,EAAOl7C,IAAS,OAEH,mBAAVk7C,IACd9gD,EAAK8gD,OAASA,IAIlBl7C,IACmB,iBAARA,GACPA,EAAO5F,EAAKmhD,cAAcv7C,GAC1B5F,EAAK4F,KAAO,SAASnF,GACjB,IACI2gD,EADA9yC,EAAStO,EAAKqhD,SAAS5gD,EAAOmF,GAKlC,OAFA0I,EAAStT,EAAQsT,GAAUA,EAAS,CAACA,GAEjCtO,EAAK6gD,OAASA,EAAMl6B,QACpBy6B,EAAgB,IAAIphD,EAAK6gD,MAElBxuC,EAAI/D,GAAQ,SAAS7N,GACxB,GAAIA,EAAO,CACP,IAAiBuc,EAAbskC,EAAS,GAEb,IAAKtkC,KAAS6jC,EAAMl6B,OAChB26B,EAAOtkC,GAASokC,EAAcG,OAAOvkC,EAAO6jC,EAAMl6B,OAAO3J,GAAOA,MAAMvc,IAG1E,OAAO6gD,OAKZhzC,IAEW,mBAAR1I,IACd5F,EAAK4F,KAAOA,IAIA,mBAATmnB,EAAqB,CAC5B,IAAIy0B,EAAWxhD,EAAK+sB,MAEpB/sB,EAAK+sB,MAAQ,SAASnnB,GAClB,IAAI67C,EAAM10B,EAAMzqB,KAAKtC,EAAM4F,GAC3B,OAAO47C,EAASl/C,KAAKtC,EAAMyhD,IAIX,mBAAbV,IACP/gD,EAAK+gD,UAAYA,IAGzBpC,MAAO,SAASrwC,GACZ,OAAOvW,KAAK6N,KAAK0I,GAAQ/O,QAE7BuhD,OAAQ,SAASl7C,GACb,OAAOA,EAAOA,EAAKk7C,OAAS,MAEhCC,UAAW,SAASn7C,GAChB,OAAOA,GAEX87C,SAAU,SAAS99C,GACf,IACI+9C,EACA1mB,EACAxN,EACAuC,EACAnwB,EACAigC,EAGAn+B,EATA2M,EAAS,GAOTszC,EAAah+C,EAAQg+C,WACrBC,EAAiBD,EAAWriD,OAGhC,IAAKoC,EAAM,EAAGA,EAAMkgD,EAAgBlgD,IAEhC2M,EAAO,KADPwxB,EAAY8hB,EAAWjgD,IACAquB,UAAY8P,EAAUpE,UAGjD,IAAKT,EAAOr3B,EAAQk+C,WAAY7mB,EAAMA,EAAOA,EAAK8mB,YAG7B,KAFjBt0B,EAAWwN,EAAKxN,WAEmB,IAAbA,EAElBnf,EAAO,SAAW2sB,EAAKS,UACH,IAAbjO,IAEPk0B,EAAa5pD,KAAK2pD,SAASzmB,GAI3Bp7B,EAASyO,EAFT0hB,EAAWiL,EAAKjL,UAIZh1B,EAAQ6E,GAERA,EAAOnG,KAAKioD,GAEZ9hD,EAlKxB,YAiK+BA,EACE,CAACA,EAAQ8hD,GAETA,EAGbrzC,EAAO0hB,GAAYnwB,GAG3B,OAAOyO,GAGX+yC,SAAU,SAAS5gD,EAAO6lB,GAQtB,IAPA,IACIzmB,EACAyO,EACA/O,EACAyiD,EACArgD,EALA6kB,EAAUF,EAAW3jB,MAAM,KAOxB9C,EAAS2mB,EAAQ5Y,SAGpB,GAFAnN,EAAQA,EAAMZ,GAEV7E,EAAQyF,GAAQ,CAIhB,IAHA6N,EAAS,GACTgY,EAAaE,EAAQ5jB,KAAK,KAErBjB,EAAM,EAAGpC,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IAC/CqgD,EAAqBjqD,KAAKspD,SAAS5gD,EAAMkB,GAAM2kB,GAE/C07B,EAAqBhnD,EAAQgnD,GAAsBA,EAAqB,CAACA,GAEzE1zC,EAAO5U,KAAKyG,MAAMmO,EAAQ0zC,GAG9B,OAAO1zC,EAIf,OAAO7N,GAGXssB,MAAO,SAAS00B,GACZ,IAAIrwC,EACA6wC,EACA3zC,EAAS,GAQb,OANA8C,EAAkBqwC,EAAIrwC,iBAAmB1W,EAAEwnD,SAAST,GAAKrwC,gBAEzD6wC,EAAOlqD,KAAK2pD,SAAStwC,GAErB9C,EAAO8C,EAAgB4e,UAAYiyB,EAE5B3zC,GAGX6yC,cAAe,SAASthD,EAAQsiD,GAC5B,OAAKtiD,GAILA,EAASA,EAAOrF,QAAQ,MAAO,IACfA,QAAQ,MAAO,MAEpBkT,QAAQ,MAAQ,EAEhB7N,EAAOrF,QAAQ,WAAY2nD,EAAM,KAAO,UAG/CtiD,EAAO6N,QAAQ,WAAa,EAErB7N,EAAOrF,QAAQ,gBAAiB2nD,EAAM,QAAU,aAGpDtiD,EAhBI,IAkBfgnB,OAAQ,SAAShnB,GACb,OAAOgnB,EAAO9uB,KAAKopD,cAActhD,IAAS,MAIlDnF,EAAEI,QAAO,EAAMpC,EAAMkN,KAAM,CACvBg7C,cAAeA,EACfwB,QAAS,CACLX,IAAKb,KArPjB,CAwPG/nD,OAAOH,MAAM+G,QACF/G,OA2Bd,SAAUgC,EAAGC,GACT,IAMI0X,EANAvX,EAASJ,EAAEI,OACX4E,EAAgBhF,EAAEgF,cAClBiuB,EAAgBjzB,EAAEizB,cAClB3yB,EAAUC,MAAMD,QAChBi7B,EAAOv7B,EAAEu7B,KACT4pB,EAAOnlD,EAAEmlD,KAET9kD,EAAOL,EAAEK,KACTG,EAAOR,EAAEQ,KACTxC,EAAQG,OAAOH,MACfuI,EAAavI,EAAMuI,WACnBI,EAAa3I,EAAM2I,WACnB1B,EAAQjH,EAAMiH,MACd1B,EAAS,SACTD,EAAW,WAEXqkD,EAAS,SACTC,EAAO,OACPC,EAAS,SACTC,EAAU,UACV3N,EAAS,SACT4N,EAAO,OACPC,EAAM,MACNC,EAAQ,QACRC,EAAe,eACfC,EAAW,WACXC,EAAa,aACbC,EAAc,cACdC,EAAW,WACXC,EAAO,CAACZ,EAAQC,EAAMC,EAAQC,GAC9B7I,EAAW,SAASuJ,GAAK,OAAOA,GAChCr8B,EAASnuB,EAAMmuB,OACftc,EAAY7R,EAAM6R,UAClBpP,EAAOC,KACP1B,EAAO,GAAGA,KACVkJ,EAAO,GAAGA,KACVwkB,EAAM,GAAGA,IACT7kB,EAAS,GAAGA,OACZqL,EAAQ,GAAGA,MACXjP,EAAQ,GAAGA,MACXuD,EAAU,GAAGA,QACb+G,EAAW,GAAGA,SACd6T,EAAapkB,EAAM4C,QAAQwhB,WAC3BlL,EAAa,sBACbuxC,EAAa,GAEbx9C,EAAkBtE,EAAWvG,OAAO,CACpCoF,KAAM,SAASqS,EAAO9U,GAClB,IAAIuC,EAAOjI,KAEXiI,EAAKvC,KAAOA,GAAQ2lD,EAEpB/hD,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKT,OAASgT,EAAMhT,OAEpBS,EAAKqjD,QAAQ9wC,EAAOvS,GACpBA,EAAKsjD,cAAgB,GACrBtjD,EAAKujD,aAAe,IAGxBC,GAAI,SAAS1yC,GACT,OAAO/Y,KAAK+Y,IAGhBnH,OAAQ,SAAS85C,GACb,IAAI9hD,EAA2BlB,EAAtBlB,EAASxH,KAAKwH,OAAemkD,EAAO,IAAIzoD,MAAMsE,GAEvD,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,KACxBlB,EAAQ1I,KAAK4J,cAEQyhD,IACjB3iD,EAAQA,EAAMkJ,OAAO85C,IAGzBC,EAAK/hD,GAAOlB,EAGhB,OAAOijD,GAGXx/C,OAAQhJ,EAERmoD,QAAS,SAASh+C,EAAQhG,GACtB,IACIsC,EACApC,EAFAS,EAAOjI,KAGPmM,EAAS,WACL,OAAOlE,GAKf,IAFAX,EAASA,GAAU,GAEdsC,EAAM,EAAGpC,EAAS8F,EAAO9F,OAAQoC,EAAMpC,EAAQoC,IAChDtC,EAAOsC,GAAO3B,EAAK+jB,KAAK1e,EAAO1D,GAAMuC,GAGzC,OAAO7E,GAGX0kB,KAAM,SAAS4/B,EAAQz/C,GACnB,IAAIlE,EAAOjI,KA0CX,OAvCe,OAAX4rD,GAA6C,oBAA1B16C,EAAS3G,KAAKqhD,KACpBA,aAAkB3jD,EAAKvC,MAAQkmD,aAAkB1C,KAG1D0C,EAASA,aAAkBP,EAAmBO,EAAOh6C,SAAWg6C,EAChEA,EAAS,IAAI3jD,EAAKvC,KAAKkmD,IAG3BA,EAAOz/C,OAASA,EAEhBy/C,EAAOpiD,KAAKszC,GAAQ,SAASn4C,GACzB,IAAIknD,EAAUD,EAAOl9C,eAAe,gBACpCzG,EAAKmC,QAAQ0yC,EAAQ,CACjB73B,MAAOtgB,EAAEsgB,MACTie,KAAMv+B,EAAEu+B,KACRnqB,MAAOpU,EAAEoU,MACTqb,MAAOzvB,EAAEyvB,OAAS,CAACp0B,MACnBgtC,OAAQroC,EAAEu+B,MAAQ2oB,EAAWlnD,EAAEqoC,QAAU,aAAgB,kBAIjE4e,EAAOpiD,KAAKyhD,GAAU,SAAStmD,GAC3BsD,EAAKsjD,cAAc5pD,KAAKgD,EAAEsiB,SAC1Bhf,EAAK6jD,UAAW,EAEhBnnD,EAAEsiB,QAAQulB,MAAK,WACXvkC,EAAKujD,aAAa7pD,KAAKgD,EAAEu+B,MACzB,IAAInqB,EAAQ9Q,EAAKsjD,cAAc51C,QAAQhR,EAAEsiB,SACzChf,EAAKsjD,cAAc/gD,OAAOuO,EAAO,GAE5B9Q,EAAKsjD,cAAc/jD,SACpBS,EAAK6jD,UAAW,EAChB7jD,EAAKmC,QAAQ4gD,EAAa,CAAE1E,WAAYr+C,EAAM8jD,MAAO9jD,EAAKujD,eAC1DvjD,EAAKujD,aAAe,WAM7BI,GAGX/0B,QAAS,WACL,OAAO72B,KAAK8rD,UAGhBnqD,KAAM,WACF,IAEI4U,EAFAwC,EAAQ/Y,KAAKwH,OACb4sB,EAAQp0B,KAAKsrD,QAAQjkD,WAazB,OAVAkP,EAAS5U,EAAKyG,MAAMpI,KAAMo0B,GAErBp0B,KAAKgsD,iBACNhsD,KAAKoK,QAAQ0yC,EAAQ,CACjB9P,OAAQ,MACRj0B,MAAOA,EACPqb,MAAOA,IAIR7d,GAGX3P,MAAOA,EAEPse,KAAM,GAAGA,KAETra,KAAMA,EAENwkB,IAAK,WACD,IAAI7nB,EAASxH,KAAKwH,OAAQ+O,EAAS8Y,EAAIjnB,MAAMpI,MAU7C,OARIwH,GACAxH,KAAKoK,QAAQ0yC,EAAQ,CACjB9P,OAAQ,SACRj0B,MAAOvR,EAAS,EAChB4sB,MAAO,CAAC7d,KAITA,GAGX/L,OAAQ,SAASuO,EAAOkzC,EAASjd,GAC7B,IACIz4B,EAAQhP,EAAG8oB,EADX+D,EAAQp0B,KAAKsrD,QAAQ1kD,EAAM2D,KAAKlD,UAAW,IAK/C,IAFAkP,EAAS/L,EAAOpC,MAAMpI,KAAM,CAAC+Y,EAAOkzC,GAAS5uC,OAAO+W,KAEzC5sB,OAUP,IATKxH,KAAKgsD,kBACNhsD,KAAKoK,QAAQ0yC,EAAQ,CACjB9P,OAAQ,SACRj0B,MAAOA,EACPqb,MAAOp0B,KAAKksD,WAAalsD,KAAKksD,UAAU1kD,OAAS+O,EAAO8G,OAAOrd,KAAKksD,WAAa31C,IAErFvW,KAAKksD,UAAY,IAGhB3kD,EAAI,EAAG8oB,EAAM9Z,EAAO/O,OAAQD,EAAI8oB,EAAK9oB,IAClCgP,EAAOhP,IAAMgP,EAAOhP,GAAG4tC,UACvB5+B,EAAOhP,GAAG0C,OAAO6yC,GAc7B,OATI9N,IACKhvC,KAAKgsD,iBACNhsD,KAAKoK,QAAQ0yC,EAAQ,CACjB9P,OAAQ,MACRj0B,MAAOA,EACPqb,MAAOA,KAIZ7d,GAGXV,MAAO,WACH,IAAIrO,EAASxH,KAAKwH,OAAQ+O,EAASV,EAAMzN,MAAMpI,MAU/C,OARIwH,GACAxH,KAAKoK,QAAQ0yC,EAAQ,CACjB9P,OAAQ,SACRj0B,MAAO,EACPqb,MAAO,CAAC7d,KAITA,GAGXpM,QAAS,WACL,IACIoM,EADA6d,EAAQp0B,KAAKsrD,QAAQjkD,WAWzB,OARAkP,EAASpM,EAAQ/B,MAAMpI,KAAMo0B,GAE7Bp0B,KAAKoK,QAAQ0yC,EAAQ,CACjB9P,OAAQ,MACRj0B,MAAO,EACPqb,MAAOA,IAGJ7d,GAGXZ,QAAS,SAASq5B,GACd,IACIplC,EACApC,EAEJ,IAAKoC,EAAM,EAAGpC,EAJHxH,KAIiBwH,OAAQoC,EAAMpC,EAAQoC,IAC9C,GALO5J,KAKE4J,KAASolC,EACd,OAAOplC,EAGf,OAAQ,GAGZtI,QAAS,SAAS0nB,EAAUmjC,GAKxB,IAJA,IAAIviD,EAAM,EACNpC,EAASxH,KAAKwH,OACdq0B,EAAUswB,GAAWrrD,OAElB8I,EAAMpC,EAAQoC,IACjBof,EAASze,KAAKsxB,EAAS77B,KAAK4J,GAAMA,EAAK5J,OAI/Csa,IAAK,SAAS0O,EAAUmjC,GAMpB,IALA,IAAIviD,EAAM,EACN2M,EAAS,GACT/O,EAASxH,KAAKwH,OACdq0B,EAAUswB,GAAWrrD,OAElB8I,EAAMpC,EAAQoC,IACjB2M,EAAO3M,GAAOof,EAASze,KAAKsxB,EAAS77B,KAAK4J,GAAMA,EAAK5J,MAGzD,OAAOuW,GAGXotC,OAAQ,SAAS36B,GACb,IACIzS,EADA3M,EAAM,EAENpC,EAASxH,KAAKwH,OAQlB,IANwB,GAApBH,UAAUG,OACV+O,EAASlP,UAAU,GACZuC,EAAMpC,IACb+O,EAASvW,KAAK4J,MAGXA,EAAMpC,EAAQoC,IACjB2M,EAASyS,EAASzS,EAAQvW,KAAK4J,GAAMA,EAAK5J,MAG9C,OAAOuW,GAGX61C,YAAa,SAASpjC,GAClB,IACIzS,EADA3M,EAAM5J,KAAKwH,OAAS,EASxB,IANwB,GAApBH,UAAUG,OACV+O,EAASlP,UAAU,GACZuC,EAAM,IACb2M,EAASvW,KAAK4J,MAGXA,GAAO,EAAGA,IACb2M,EAASyS,EAASzS,EAAQvW,KAAK4J,GAAMA,EAAK5J,MAG9C,OAAOuW,GAGX0f,OAAQ,SAASjN,EAAUmjC,GAOvB,IANA,IAEInd,EAFAplC,EAAM,EACN2M,EAAS,GAET/O,EAASxH,KAAKwH,OACdq0B,EAAUswB,GAAWrrD,OAElB8I,EAAMpC,EAAQoC,IACjBolC,EAAOhvC,KAAK4J,GACRof,EAASze,KAAKsxB,EAASmT,EAAMplC,EAAK5J,QAClCuW,EAAOA,EAAO/O,QAAUwnC,GAIhC,OAAOz4B,GAGXwf,KAAM,SAAS/M,EAAUmjC,GAMrB,IALA,IACInd,EADAplC,EAAM,EAENpC,EAASxH,KAAKwH,OACdq0B,EAAUswB,GAAWrrD,OAElB8I,EAAMpC,EAAQoC,IAEjB,GADAolC,EAAOhvC,KAAK4J,GACRof,EAASze,KAAKsxB,EAASmT,EAAMplC,EAAK5J,MAClC,OAAOgvC,GAKnBqd,MAAO,SAASrjC,EAAUmjC,GAMtB,IALA,IACInd,EADAplC,EAAM,EAENpC,EAASxH,KAAKwH,OACdq0B,EAAUswB,GAAWrrD,OAElB8I,EAAMpC,EAAQoC,IAEjB,GADAolC,EAAOhvC,KAAK4J,IACPof,EAASze,KAAKsxB,EAASmT,EAAMplC,EAAK5J,MACnC,OAAO,EAIf,OAAO,GAGXssD,KAAM,SAAStjC,EAAUmjC,GAMrB,IALA,IACInd,EADAplC,EAAM,EAENpC,EAASxH,KAAKwH,OACdq0B,EAAUswB,GAAWrrD,OAElB8I,EAAMpC,EAAQoC,IAEjB,GADAolC,EAAOhvC,KAAK4J,GACRof,EAASze,KAAKsxB,EAASmT,EAAMplC,EAAK5J,MAClC,OAAO,EAIf,OAAO,GAIX+2B,OAAQ,SAASiY,GACb,IAAIplC,EAAM5J,KAAK2V,QAAQq5B,IAEV,IAATplC,GACA5J,KAAKwK,OAAOZ,EAAK,IAIzB2iD,MAAO,WACHvsD,KAAKwK,OAAO,EAAGxK,KAAKwH,WAKN,oBAAXglD,QAA0BA,OAAOzpB,WAAan1B,EAAgBvF,UAAUmkD,OAAOzpB,YACtFn1B,EAAgBvF,UAAUmkD,OAAOzpB,UAAY,GAAGypB,OAAOzpB,WAG3D,IAAIj1B,EAAsBF,EAAgB7K,OAAO,CAC7CoF,KAAM,SAAS0F,EAAMnI,EAAM2E,GAGvBf,EAAWvB,GAAGI,KAAKoC,KAAKvK,MAExBA,KAAK0F,KAAOA,GAAQ2lD,EAEhBhhD,IACArK,KAAKuJ,QAAUc,GAGnB,IAAK,IAAIT,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IACjC5J,KAAK4J,GAAOiE,EAAKjE,GAGrB5J,KAAKwH,OAASoC,EACd5J,KAAKysD,QAfU,WAAa,OAAOzsD,MAeXwJ,KAAKxJ,OAEjCyrD,GAAI,SAAS1yC,GACT,IAAIi2B,EAAOhvC,KAAK+Y,GAQhB,OANMi2B,aAAgBhvC,KAAK0F,KAGvBspC,EAAK7iC,OAASnM,KAAKysD,QAFnBzd,EAAOhvC,KAAK+Y,GAAS/Y,KAAKgsB,KAAKgjB,EAAMhvC,KAAKysD,SAKvCzd,KAIf,SAAS0d,EAAa7wB,EAASn2B,EAAMuf,EAAOhG,GACxC,OAAO,SAASta,GACZ,IAAgB4M,EAAZ6N,EAAQ,GAEZ,IAAK7N,KAAO5M,EACRya,EAAM7N,GAAO5M,EAAE4M,GAIf6N,EAAM6F,MADNhG,EACcgG,EAAQ,IAAMtgB,EAAEsgB,MAEhBA,EAGdvf,GAAQo3C,GAAUjhB,EAAQ8wB,eAC1B9wB,EAAQ8wB,cAAcvtC,GAG1Byc,EAAQzxB,QAAQ1E,EAAM0Z,IAU9B,SAASwtC,EAAQlkD,EAAOmkD,GACpB,IAEI3iC,EAAM4iC,EAFN19B,EAAQ,GACR29B,EAAY,GAehB,IAvBJ,SAAyBrkD,GACrB,MAAyB,iBAAVA,GAAsBjI,OAAOusD,eAAetkD,KAAWjI,OAAOusD,eAAe,KACjFvsD,OAAOusD,eAAetkD,KAAWjI,OAAOusD,eAAe,IAAI5+C,OAC1C,iBAAV1F,EAUbukD,CAFLvkD,EAAQA,GAAS,MAGbqkD,EAAYtsD,OAAOysD,oBAAoBzsD,OAAOusD,eAAetkD,IAAQutB,QAAO,SAAUk3B,GAAK,OAA2B,IAApBA,EAAEx3C,QAAQ,UAGhHuU,EAAOzpB,OAAOysD,oBAAoBxkD,GAAO2U,OAAO0vC,GAEhDD,EAAqB1B,EAAWn1B,QAAO,SAAS1kB,GAC5C,OAAO2Y,EAAKvU,QAAQpE,GAAO,KAGxB7I,GACHjI,OAAOysD,oBAAoBxkD,GAAOpH,SAAQ,SAAS6tB,IAClB,IAAzBC,EAAMzZ,QAAQwZ,MAAkB09B,GAAoBC,EAAmBn3C,QAAQwZ,GAAQ,IACvFC,EAAMztB,KAAKwtB,MAGnBzmB,EAAQjI,OAAOusD,eAAetkD,GAGlC,OAAO0mB,EAGXg8B,EAAawB,EAAQ,IAAI,GAEzB,IAAIvB,EAAmB/hD,EAAWvG,OAAO,CACrCoF,KAAM,SAASO,GACX,IACIZ,EADAG,EAAOjI,KAEPkqB,EAAO0iC,EAAQlkD,GAAO,GACtByD,EAAS,WACL,OAAOlE,GAGfqB,EAAWvB,GAAGI,KAAKoC,KAAKvK,MAExBA,KAAKotD,UAAY,GAEjBljC,EAAK5oB,SAAQ,SAAS2jB,GAGI,iBAFtBnd,EAASY,EAAMuc,KAEmBnd,IAAWA,EAAOmB,SAA8B,KAAnBgc,EAAMna,OAAO,KACxEhD,EAASG,EAAK+jB,KAAKlkB,EAAQmd,EAAO9Y,IAGtClE,EAAKgd,GAASnd,KAGlBG,EAAKolD,IAAM1sD,EAAM8uB,QAGrB69B,gBAAiB,SAASroC,EAAOymC,GAC7B,OAAO1rD,KAAK0O,eAAeuW,IAAoB,cAAVA,GAAmC,YAAVA,IAAyBymC,GAAsBA,EAAmBzmC,WAAkBjlB,KAAKilB,KAAWhf,IAAuB,QAAVgf,GAGnL3jB,QAAS,SAAS6rD,GACd,IAAK,IAAI5lD,KAAKvH,KACNA,KAAKstD,gBAAgB/lD,IACrB4lD,EAAEntD,KAAKuH,GAAIA,IAKvBqK,OAAQ,SAAS85C,GACb,IAAiBhjD,EAAOuc,EAApB1O,EAAS,GAEb,IAAK0O,KAASjlB,KACNA,KAAKstD,gBAAgBroC,EAAOymC,OAC5BhjD,EAAQ1I,KAAKilB,cAEQomC,GAAoB3iD,aAAiBkF,KACtDlF,EAAQA,EAAMkJ,OAAO85C,IAGzBn1C,EAAO0O,GAASvc,GAIxB,OAAO6N,GAGXgZ,IAAK,SAAStK,GACV,IAAIhd,EAAOjI,KAUX,OARAiI,EAAKmC,QAAQugD,EAAK,CAAE1lC,MAAOA,IAEb,SAAVA,EACShd,EAEAtH,EAAMmuB,OAAO7J,GAAO,EAApBtkB,CAA0BsH,IAM3CslD,KAAM,SAAStoC,EAAOvc,GAClB,IACI8kD,EAAYvoC,EAAMtP,QAAQ,MAAQ,EAEtC,GAAI63C,EAIA,IAHA,IAAIC,EAAQxoC,EAAMra,MAAM,KACpBwkC,EAAO,GAEJqe,EAAMjmD,OAAS,GAAG,CACrB4nC,GAAQqe,EAAM53C,QACd,IAAImX,EAAMrsB,EAAMmuB,OAAOsgB,GAAM,EAAnBzuC,CATPX,MAUH,GAAIgtB,aAAeq+B,EAEf,OADAr+B,EAAIwC,IAAIi+B,EAAM5iD,KAAK,KAAMnC,GAClB8kD,EAEXpe,GAAQ,IAMhB,OAFAzuC,EAAMouB,OAAO9J,EAAbtkB,CAlBWX,KAkBe0I,GAEnB8kD,GAGXh+B,IAAK,SAASvK,EAAOvc,GACjB,IAAIT,EAAOjI,KACP0tD,GAAiB,EACjBF,EAAYvoC,EAAMtP,QAAQ,MAAQ,EAClClC,EAAU9S,EAAMmuB,OAAO7J,GAAO,EAApBtkB,CAA0BsH,GAsBxC,OApBIwL,IAAY/K,IACR+K,aAAmBnK,GAActJ,KAAKotD,UAAUnoC,KAC5CjlB,KAAKotD,UAAUnoC,GAAOsK,KACvB9b,EAAQxJ,OAAO0gD,EAAK3qD,KAAKotD,UAAUnoC,GAAOsK,KAE7C9b,EAAQxJ,OAAO6yC,EAAQ98C,KAAKotD,UAAUnoC,GAAOk5B,UAGjDuP,EAAiBzlD,EAAKmC,QAAQ,MAAO,CAAE6a,MAAOA,EAAOvc,MAAOA,OAGnD8kD,IACD9kD,EAAQT,EAAK+jB,KAAKtjB,EAAOuc,GAAO,WAAa,OAAOhd,QAEnDA,EAAKslD,KAAKtoC,EAAOvc,IAAUuc,EAAMtP,QAAQ,MAAQ,GAAKsP,EAAMtP,QAAQ,MAAQ,IAC7E1N,EAAKmC,QAAQ0yC,EAAQ,CAAE73B,MAAOA,MAKnCyoC,GAGXvhD,OAAQhJ,EAER6oB,KAAM,SAAS4/B,EAAQ3mC,EAAO9Y,GAC1B,IACIojB,EACA4uB,EAFAl2C,EAAOjI,KAGP0F,EAAOwL,EAAS3G,KAAKqhD,GAEzB,GAAc,MAAVA,IAA4B,oBAATlmD,GAAuC,mBAATA,GAA4B,CAC7E,IAAIioD,EAAoB/B,aAAkBh+C,EACtCggD,EAAehC,aAAkB79C,GAExB,oBAATrI,GAA+BkoD,GAAiBD,GAWhC,mBAATjoD,GAA6BioD,GAAqBC,KACpDD,GAAsBC,IACvBhC,EAAS,IAAIh+C,EAAgBg+C,IAGjCzN,EAASuO,EAAazkD,EAAM60C,EAAQ73B,GAAO,GAE3C2mC,EAAOpiD,KAAKszC,EAAQqB,GAEpBl2C,EAAKmlD,UAAUnoC,GAAS,CAAEk5B,OAAQA,KAnB5ByN,aAAkBP,IACpBO,EAAS,IAAIP,EAAiBO,IAGlCr8B,EAAMm9B,EAAazkD,EAAM0iD,EAAK1lC,GAAO,GACrC2mC,EAAOpiD,KAAKmhD,EAAKp7B,GACjB4uB,EAASuO,EAAazkD,EAAM60C,EAAQ73B,GAAO,GAC3C2mC,EAAOpiD,KAAKszC,EAAQqB,GAEpBl2C,EAAKmlD,UAAUnoC,GAAS,CAAEsK,IAAKA,EAAK4uB,OAAQA,IAahDyN,EAAOz/C,OAASA,EAGpB,OAAOy/C,KAIf,SAASiC,EAAMzoD,EAAGjB,GACd,GAAIiB,IAAMjB,EACN,OAAO,EAGX,IAAkD8gB,EAA9C6oC,EAAQntD,EAAM+E,KAAKN,GAEvB,GAAI0oD,IAF+BntD,EAAM+E,KAAKvB,GAG1C,OAAO,EAGX,GAAc,SAAV2pD,EACA,OAAO1oD,EAAE6D,YAAc9E,EAAE8E,UAG7B,GAAc,WAAV6kD,GAAgC,UAAVA,EACtB,OAAO,EAGX,IAAK7oC,KAAS7f,EACV,IAAKyoD,EAAMzoD,EAAE6f,GAAQ9gB,EAAE8gB,IACnB,OAAO,EAIf,OAAO,EAGX,IAAI8oC,EAAU,CACVtiD,OAAU,SAAS/C,GACf,cAAWA,IAAUxC,GAAkC,SAAxBwC,EAAM4P,cAC1B,KAEJ3X,EAAMoI,WAAWL,IAG5B2N,KAAQ,SAAS3N,GACb,cAAWA,IAAUxC,GAAkC,SAAxBwC,EAAM4P,cAC1B,KAEJ3X,EAAM4c,UAAU7U,IAG3BslD,QAAW,SAAStlD,GAChB,cAAWA,IAAUxC,EACW,SAAxBwC,EAAM4P,cACC,KAEwB,SAAxB5P,EAAM4P,cAGL,MAAT5P,IAAkBA,EAAQA,GAGrC0I,OAAU,SAAS1I,GACf,cAAWA,IAAUxC,GAAkC,SAAxBwC,EAAM4P,cAC1B,KAEK,MAAT5P,EAAiBA,EAAQ,GAAMA,GAG1CulD,QAAW,SAASvlD,GAChB,OAAOA,IAIX0hC,GAAgB,CAChBh5B,OAAU,GACV3F,OAAU,EACV4K,KAAQ,IAAIjI,KACZ4/C,SAAW,EACXC,QAAW,IAkBf,IAAI/E,GAAQmC,EAAiBtoD,OAAO,CAChCoF,KAAM,SAAS0F,GACX,IAAI5F,EAAOjI,KAEX,KAAK6N,GAAQlL,EAAEizB,cAAc/nB,MACzBA,EAAOlL,EAAEI,OAAO,GAAIkF,EAAKrH,SAAUiN,GAE/B5F,EAAKimD,eACL,IAAK,IAAItkD,EAAM,EAAGA,EAAM3B,EAAKimD,cAAc1mD,OAAQoC,IAAO,CACrD,IAAIxH,EAAO6F,EAAKimD,cAActkD,GAC9BiE,EAAKzL,GAAQ6F,EAAKrH,SAASwB,KAKxCipD,EAAiBtjD,GAAGI,KAAKoC,KAAKtC,EAAM4F,GAEpC5F,EAAK2mC,OAAQ,EACb3mC,EAAKkmD,YAAc,GAEflmD,EAAKkhD,UACLlhD,EAAK0nB,GAAK1nB,EAAKsnB,IAAItnB,EAAKkhD,SAEpBlhD,EAAK0nB,KAAO/sB,IACZqF,EAAK0nB,GAAK1nB,EAAKmmD,cAK3Bd,gBAAiB,SAASroC,GACtB,OAAOomC,EAAiBtjD,GAAGulD,gBAAgB/iD,KAAKvK,KAAMilB,IACxC,QAAVA,KAAsC,OAAjBjlB,KAAKmpD,SAA8B,OAAVlkC,IACpC,UAAVA,GAA+B,gBAAVA,GAAqC,eAAVA,GAGxDukC,OAAQ,SAASvkC,EAAOvc,GACpB,IAGIssB,EAFAq5B,EAAYppC,EACZ2J,EAFO5uB,KAEQ4uB,QAAU,GAc7B,OAXA3J,EAAQ2J,EAAO3J,MAEXA,EA1DZ,SAAwB+H,EAAK5qB,GACzB,IAAI6iB,EACAopC,EAEJ,IAAKA,KAAarhC,EAAK,CAEnB,GADA/H,EAAQ+H,EAAIqhC,GACR1mD,EAAcsd,IAAUA,EAAMA,OAASA,EAAMA,QAAU7iB,EACvD,OAAO6iB,EACJ,GAAIA,IAAU7iB,EACjB,OAAO6iB,EAGf,OAAO,KA8CSqpC,CAAe1/B,EAAQy/B,IAE/BppC,KACA+P,EAAQ/P,EAAM+P,QACA/P,EAAMvf,OAChBsvB,EAAQ+4B,EAAQ9oC,EAAMvf,KAAK4S,gBAI5B0c,EAAQA,EAAMtsB,GAASA,GAGlCikD,cAAe,SAAShoD,GACpB,IAAIqoC,EAASroC,EAAEqoC,OAED,OAAVA,GAA6B,UAAVA,IACnBhtC,KAAK4uC,OAAQ,EACb5uC,KAAKmuD,YAAYxpD,EAAEsgB,QAAS,IAIpCspC,SAAU,SAAStpC,GAEf,QADAA,GAASjlB,KAAK4uB,QAAU,IAAI3J,MACM,IAAnBA,EAAMspC,UAGzB/+B,IAAK,SAASvK,EAAOvc,GACjB,IAAIT,EAAOjI,KACP4uC,EAAQ3mC,EAAK2mC,MAEb3mC,EAAKsmD,SAAStpC,KAGT4oC,EAFLnlD,EAAQT,EAAKuhD,OAAOvkC,EAAOvc,GAETT,EAAKsnB,IAAItK,IAYvBhd,EAAKmC,QAAQ,WAAY,CAAE6a,MAAOA,EAAOvc,MAAOA,KAXhDT,EAAK2mC,OAAQ,EACb3mC,EAAKkmD,YAAYlpC,IAAS,EAEtBomC,EAAiBtjD,GAAGynB,IAAIjlB,KAAKtC,EAAMgd,EAAOvc,KAAWkmC,IACrD3mC,EAAK2mC,MAAQA,EAER3mC,EAAK2mC,QACN3mC,EAAKkmD,YAAYlpC,IAAS,OAS9CupC,OAAQ,SAAS3gD,GACb,IAEIoX,EAFAhd,EAAOjI,KACPmM,EAAS,WAAa,OAAOlE,GAGjC,IAAKgd,KAASpX,EAAM,CAChB,IAAInF,EAAQmF,EAAKoX,GAEM,KAAnBA,EAAMna,OAAO,KACbpC,EAAQT,EAAK+jB,KAAKne,EAAKoX,GAAQA,EAAO9Y,IAG1ClE,EAAKslD,KAAKtoC,EAAOvc,GAGjBT,EAAKkhD,UACLlhD,EAAK0nB,GAAK1nB,EAAKsnB,IAAItnB,EAAKkhD,UAG5BlhD,EAAK2mC,OAAQ,EACb3mC,EAAKkmD,YAAc,IAGvBM,MAAO,WACH,OAAOzuD,KAAK2vB,KAAO3vB,KAAKouD,cAIhClF,GAAMxpD,OAAS,SAASsI,EAAMd,GACtBA,IAAYtE,IACZsE,EAAUc,EACVA,EAAOkhD,IAGX,IAAIJ,EAEA1mD,EACA6iB,EACAvf,EACAgD,EACAkB,EACApC,EAEAknD,EARA7mD,EAAQ9E,EAAO,CAAEnC,SAAU,IAAMsG,GAOjC0nB,EAAS,GAETe,EAAK9nB,EAAM8nB,GACXg/B,EAAiB,GAcrB,GAZIh/B,IACA9nB,EAAMshD,QAAUx5B,GAGhB9nB,EAAM8nB,WACC9nB,EAAM8nB,GAGbA,IACA9nB,EAAMjH,SAAS+uB,GAAM9nB,EAAMumD,WAAa,IAGR,mBAAhCl9C,EAAS3G,KAAK1C,EAAM+mB,QAA8B,CAClD,IAAKhlB,EAAM,EAAGpC,EAASK,EAAM+mB,OAAOpnB,OAAQoC,EAAMpC,EAAQoC,WACtDqb,EAAQpd,EAAM+mB,OAAOhlB,MACA1D,EACjB0oB,EAAO3J,GAAS,GACTA,EAAMA,QACb2J,EAAO3J,EAAMA,OAASA,GAG9Bpd,EAAM+mB,OAASA,EAGnB,IAAKxsB,KAAQyF,EAAM+mB,OAEflpB,GADAuf,EAAQpd,EAAM+mB,OAAOxsB,IACRsD,MAAQ,UACrBgD,EAAQ,KACRgmD,EAAetsD,EAEfA,SAAe6iB,EAAW,QAAM/e,EAAS+e,EAAMA,MAAQ7iB,EAElD6iB,EAAM2pC,UAGc,mBAFrBlmD,EAAQb,EAAMjH,SAAS8tD,IAAiBtsD,EAAOssD,EAAetsD,GAAQ6iB,EAAM4pC,eAAiBjsD,EAAcqiB,EAAM4pC,aAAezkB,GAAc1kC,EAAK4S,iBAG/Iq2C,EAAehtD,KAAKS,GAIxB8E,EAAQyoB,KAAOvtB,IACfyF,EAAMumD,WAAa1lD,GAGvBb,EAAMjH,SAAS8tD,IAAiBtsD,EAAOssD,EAAetsD,GAAQsG,EAE1D/F,EAAEgF,cAAcsd,GAChBA,EAAM+P,MAAQ/P,EAAM+P,OAAS+4B,EAAQroD,GAErCuf,EAAQ,CACJ+P,MAAO+4B,EAAQroD,IAmB3B,OAdIipD,EAAennD,OAAS,IACxBK,EAAMqmD,cAAgBS,IAG1B7F,EAAQ9gD,EAAKjF,OAAO8E,IACdnI,OAAS,SAASwH,GACpB,OAAOgiD,GAAMxpD,OAAOopD,EAAO5hD,IAG3BW,EAAM+mB,SACNk6B,EAAMl6B,OAAS/mB,EAAM+mB,OACrBk6B,EAAMK,QAAUthD,EAAMshD,SAGnBL,GAGX,IAAIgG,GAAW,CACXrpC,SAAU,SAASR,GACf,OAAO/b,EAAW+b,GAASA,EAAQ6J,EAAO7J,IAG9C8pC,QAAS,SAAS9pC,GACd,IAAIQ,EAAWzlB,KAAKylB,SAASR,GAC7B,OAAO,SAAS/f,EAAGigB,GAIf,OAHAjgB,EAAIugB,EAASvgB,GACbigB,EAAIM,EAASN,GAEJ,MAALjgB,GAAkB,MAALigB,EACN,EAGF,MAALjgB,GACQ,EAGH,MAALigB,EACO,EAGPjgB,EAAE8pD,cACK9pD,EAAE8pD,cAAc7pC,GAGpBjgB,EAAIigB,EAAI,EAAKjgB,EAAIigB,GAAK,EAAI,IAIzC6hC,OAAQ,SAAS9hC,GACb,IAAI6pC,EAAU7pC,EAAK6pC,SAAW/uD,KAAK+uD,QAAQ7pC,EAAKD,OAEhD,MAAgB,QAAZC,EAAKma,IACE,SAASn6B,EAAGigB,GACf,OAAO4pC,EAAQ5pC,EAAGjgB,GAAG,IAItB6pD,GAGXE,QAAS,SAASC,GACd,OAAO,SAAShqD,EAAGigB,GACf,IACIvb,EACApC,EAFA+O,EAAS24C,EAAU,GAAGhqD,EAAGigB,GAI7B,IAAKvb,EAAM,EAAGpC,EAAS0nD,EAAU1nD,OAAQoC,EAAMpC,EAAQoC,IACnD2M,EAASA,GAAU24C,EAAUtlD,GAAK1E,EAAGigB,GAGzC,OAAO5O,KAKf44C,GAAiBpsD,EAAO,GAAI+rD,GAAU,CACtCM,IAAK,SAASnqC,GACV,IAAIQ,EAAWzlB,KAAKylB,SAASR,GAC7B,OAAO,SAAS/f,EAAGigB,GACf,IAAIkqC,EAAS5pC,EAASvgB,GAClBoqD,EAAS7pC,EAASN,GAOtB,OALIkqC,GAAUA,EAAOpmD,SAAWqmD,GAAUA,EAAOrmD,UAC7ComD,EAASA,EAAOpmD,UAChBqmD,EAASA,EAAOrmD,WAGhBomD,IAAWC,EACJpqD,EAAEqqD,WAAapqC,EAAEoqC,WAGd,MAAVF,GACQ,EAGE,MAAVC,EACO,EAGPD,EAAOL,cACAK,EAAOL,cAAcM,GAGzBD,EAASC,EAAS,GAAK,IAItCE,KAAM,SAASvqC,GACX,IAAIQ,EAAWzlB,KAAKylB,SAASR,GAC7B,OAAO,SAAS/f,EAAGigB,GACf,IAAIkqC,EAAS5pC,EAASvgB,GAClBoqD,EAAS7pC,EAASN,GAOtB,OALIkqC,GAAUA,EAAOpmD,SAAWqmD,GAAUA,EAAOrmD,UAC7ComD,EAASA,EAAOpmD,UAChBqmD,EAASA,EAAOrmD,WAGhBomD,IAAWC,EACJpqD,EAAEqqD,WAAapqC,EAAEoqC,WAGd,MAAVF,EACO,EAGG,MAAVC,GACQ,EAGRA,EAAON,cACAM,EAAON,cAAcK,GAGzBA,EAASC,EAAS,GAAK,IAGtCtI,OAAQ,SAAS9hC,GACd,OAAOllB,KAAKklB,EAAKma,KAAKna,EAAKD,UAIlC3K,EAAM,SAASE,EAAOwO,GAClB,IAAIpf,EAAKpC,EAASgT,EAAMhT,OAAQ+O,EAAS,IAAIrT,MAAMsE,GAEnD,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB2M,EAAO3M,GAAOof,EAASxO,EAAM5Q,GAAMA,EAAK4Q,GAG5C,OAAOjE,GAGX,IAAIk5C,GAAY,WAEZ,SAASt+C,EAAMvC,GAIX,MAHkB,iBAAPA,IACPA,EAAMA,EAAInM,QAAQ,WAAY,KAE3Ba,KAAKkP,UAAU5D,GAG1B,SAAS8gD,EAAOC,GACZ,OAAO,SAASzqD,EAAGigB,EAAGyqC,EAAQ3M,GAM1B,OALA99B,GAAK,GACDyqC,IACA1qD,EAAI,IAAMA,EAAI,qBAAuB,EAA2B,uBAAyB+9C,EAAyB,KAAO,kBACzH99B,EAAK,EAA2BA,EAAEg+B,kBAAkBF,GAA0B99B,EAAE7M,eAE7Eq3C,EAAKzqD,EAAGiM,EAAMgU,GAAIyqC,IAIjC,SAAS5M,EAASM,EAAIp+C,EAAGigB,EAAGyqC,EAAQ3M,GAChC,GAAS,MAAL99B,EAAW,CACX,UAAWA,IAAMjf,EAAQ,CACrB,IAAImQ,EAAOwD,EAAWxB,KAAK8M,GACvB9O,EACA8O,EAAI,IAAI/W,MAAMiI,EAAK,IACZu5C,GACPzqC,EAAIhU,EAAO,EAA2BgU,EAAEg+B,kBAAkBF,GAA0B99B,EAAE7M,eACtFpT,EAAI,KAAOA,EAAI,eAAiB,EAA2B,uBAAyB+9C,EAAyB,KAAO,mBAEpH99B,EAAIhU,EAAMgU,GAIdA,EAAElc,UAEF/D,EAAI,IAAMA,EAAI,KAAOA,EAAI,YAAcA,EAAI,cAAgBA,EAAI,IAC/DigB,EAAIA,EAAElc,WAId,OAAO/D,EAAI,IAAMo+C,EAAK,IAAMn+B,EAGhC,SAAS0qC,EAAen8C,GASpB,IAAK,IAAIjF,EAAK,KAAMqhD,GAAM,EAAOvoD,EAAI,EAAGA,EAAImM,EAAQlM,SAAUD,EAAG,CAC7D,IAAIkQ,EAAK/D,EAAQ5I,OAAOvD,GACxB,GAAIuoD,EACArhD,GAAM,KAAOgJ,MACV,IAAU,KAANA,EAAW,CAClBq4C,GAAM,EACN,SACa,KAANr4C,EACPhJ,GAAM,KACO,KAANgJ,EACPhJ,GAAM,IACC,kCAAqCkH,QAAQ8B,IAAO,EAC3DhJ,GAAM,KAAOgJ,EAEbhJ,GAAMgJ,EAEVq4C,GAAM,EAEV,OAAOrhD,EAAK,KAGhB,MAAO,CACH0C,MAAO,SAASzI,GACZ,OAAIA,GAASA,EAAMO,QACR,YAAcP,EAAMO,UAAY,IAEpCkI,EAAMzI,IAEjBovB,GAAI,SAAS5yB,EAAGigB,EAAGyqC,EAAQ3M,GACvB,OAAOD,EAAS,KAAM99C,EAAGigB,EAAGyqC,EAAQ3M,IAExCJ,IAAK,SAAS39C,EAAGigB,EAAGyqC,EAAQ3M,GACxB,OAAOD,EAAS,KAAM99C,EAAGigB,EAAGyqC,EAAQ3M,IAExCZ,GAAI,SAASn9C,EAAGigB,EAAGyqC,GACf,OAAO5M,EAAS,IAAK99C,EAAGigB,EAAGyqC,IAE/BtN,IAAK,SAASp9C,EAAGigB,EAAGyqC,GAChB,OAAO5M,EAAS,KAAM99C,EAAGigB,EAAGyqC,IAEhCjN,GAAI,SAASz9C,EAAGigB,EAAGyqC,GACf,OAAO5M,EAAS,IAAK99C,EAAGigB,EAAGyqC,IAE/BhN,IAAK,SAAS19C,EAAGigB,EAAGyqC,GAChB,OAAO5M,EAAS,KAAM99C,EAAGigB,EAAGyqC,IAEhC9M,WAAY4M,GAAO,SAASxqD,EAAGigB,GAC3B,OAAOjgB,EAAI,gBAAkBigB,EAAI,eAErCg9B,iBAAkBuN,GAAO,SAASxqD,EAAGigB,GACjC,OAAOjgB,EAAI,gBAAkBigB,EAAI,gBAErCi9B,SAAUsN,GAAO,SAASxqD,EAAGigB,GAEzB,OAAOjgB,EAAI,YAAcigB,EAAI,KAAOjgB,EAAI,cADhCigB,EAAIA,EAAE3d,OAAS,EAAI,GACgC,YAE/D06C,eAAgBwN,GAAO,SAASxqD,EAAGigB,GAE/B,OAAOjgB,EAAI,YAAcigB,EAAI,KAAOjgB,EAAI,cADhCigB,EAAIA,EAAE3d,OAAS,EAAI,GACgC,WAE/D2tB,SAAUu6B,GAAO,SAASxqD,EAAGigB,GACzB,OAAOjgB,EAAI,YAAcigB,EAAI,YAEjC88B,eAAgByN,GAAO,SAASxqD,EAAGigB,GAC/B,OAAOjgB,EAAI,YAAcigB,EAAI,aAEjC3jB,QAASkuD,GAAO,SAASxqD,EAAGigB,GAExB,OAAO0qC,EADP1qC,EAAIA,EAAEna,UAAU,EAAGma,EAAE3d,OAAS,IACH,SAAWtC,EAAI,OAE9C6qD,aAAcL,GAAO,SAASxqD,EAAGigB,GAE7B,MAAO,IAAM0qC,EADb1qC,EAAIA,EAAEna,UAAU,EAAGma,EAAE3d,OAAS,IACG,SAAWtC,EAAI,OAEpDq9C,QAAS,SAASr9C,GACd,OAAOA,EAAI,WAEfs9C,WAAY,SAASt9C,GACjB,OAAOA,EAAI,WAEfw9C,OAAQ,SAASx9C,GACb,MAAO,IAAMA,EAAI,aAErBu9C,UAAW,SAASv9C,GAChB,MAAO,IAAMA,EAAI,aAErB68C,cAAe,SAAS78C,GACpB,MAAO,IAAMA,EAAI,kBAAoBA,EAAI,YAE7C88C,iBAAkB,SAAS98C,GACvB,MAAO,IAAMA,EAAI,kBAAoBA,EAAI,aA/IrC,GAoJhB,SAAS8qD,GAAMniD,GACX7N,KAAK6N,KAAOA,GAAQ,GAkExB,SAASoiD,GAAchrC,EAAOoa,GAC1B,GAAIpa,EAAO,CACP,IAAIirC,SAAoBjrC,IAAU/e,EAAS,CAAE+e,MAAOA,EAAOoa,IAAKA,GAAQpa,EACxEkrC,EAAcltD,EAAQitD,GAAcA,EAAcA,IAAettD,EAAc,CAACstD,GAAc,GAE9F,OAAOhyB,EAAKiyB,GAAa,SAAS3rD,GAAK,QAASA,EAAE66B,QAI1D,SAAS+wB,GAAWC,EAAOhxB,GACvB,IAAIixB,EAAa,GAEjB,GAAID,EAIA,IAHA,IAAIH,SAAoBG,IAAUnqD,EAAS,CAAE+e,MAAOorC,EAAOhxB,IAAKA,GAAQgxB,EACxEF,EAAcltD,EAAQitD,GAAcA,EAAcA,IAAettD,EAAc,CAACstD,GAAc,GAErF3oD,EAAI,EAAGA,EAAI4oD,EAAY3oD,OAAQD,IACpC+oD,EAAWH,EAAY5oD,GAAG0d,OAAS,CAAEoa,IAAK8wB,EAAY5oD,GAAG83B,IAAKtmB,MAAOxR,EAAI,GAIjF,OAAO+oD,EAnFXN,GAAMO,WAAa,SAAShiC,EAAYrnB,GAGpC,QAFiB,IAAZA,IAAqBA,EAAU,CAAEspD,QAAQ,IAE1CtpD,EAAQspD,OAER,OA7iEW,SAASliC,GAC5B,OAAOi1B,EAAyBj1B,GA4iEjBmiC,CAAiBliC,GAG5B,IAEI3kB,EACApC,EACAyuB,EACA3H,EAGArJ,EACA+9B,EATA0N,EAAc,GAMdC,EAAiB,GACjBC,EAAoB,GAGpBnN,EAAUl1B,EAAWk1B,QAEzB,IAAK75C,EAAM,EAAGpC,EAASi8C,EAAQj8C,OAAQoC,EAAMpC,EAAQoC,IAEjDqb,GADAgR,EAASwtB,EAAQ75C,IACFqb,MACf+9B,EAAW/sB,EAAO+sB,SAEd/sB,EAAOwtB,SAGPxtB,GAFA3H,EAAO0hC,GAAMO,WAAWt6B,IAEV1H,WACb9rB,QAAQ,iBAAiB,SAAS0N,EAAO4I,GAEtC,OADAA,GAASA,EACF,QAAU63C,EAAkBppD,OAASuR,GAAS,OAExDtW,QAAQ,iBAAiB,SAAS0N,EAAO4I,GAEtC,OADAA,GAASA,EACF,QAAU43C,EAAenpD,OAASuR,GAAS,OAGtD63C,EAAkBjvD,KAAKyG,MAAMwoD,EAAmBtiC,EAAKmhC,WACrDkB,EAAehvD,KAAKyG,MAAMuoD,EAAgBriC,EAAKM,iBAEpC3J,IAAUhf,GACjBqoB,EAAO,OAASqiC,EAAenpD,OAAS,OACxCmpD,EAAehvD,KAAKsjB,IAEpBqJ,EAAO3tB,EAAM2tB,KAAKrJ,UAGX+9B,IAAa/8C,GACpBgwB,EAAS,OAAS26B,EAAkBppD,OAAS,KAAO8mB,EAAO,KAAOmhC,GAAUt+C,MAAM8kB,EAAOvtB,OAAS,IAClGkoD,EAAkBjvD,KAAKqhD,IAEvB/sB,EAASw5B,IAAWzM,GAAY,MAAM1qC,eAAegW,EAAM2H,EAAOvtB,MAAOutB,EAAOwqB,aAAe79C,GAAcqzB,EAAOwqB,WAAmBlyB,EAAW00B,yBAI1JyN,EAAY/uD,KAAKs0B,GAGrB,MAAO,CAAE1H,WAAY,IAAMmiC,EAAY7lD,KAlD3B,CAAEg3C,IAAK,OAAQF,GAAI,QAkDmBpzB,EAAWmzB,QAAU,IAAK9yB,OAAQ+hC,EAAgBlB,UAAWmB,IA2BnH,IAAIC,GAAc,CACd,KAAM,KACNC,OAAQ,KACRC,UAAW,KACXC,QAAS,KACTnD,MAAO,KACP,KAAM,MACNoD,GAAI,MACJC,UAAW,MACXC,aAAc,MACdC,WAAY,MACZC,SAAU,MACV,IAAK,KACLC,WAAY,KACZC,SAAU,KACVC,KAAM,KACN,KAAM,MACNC,GAAI,MACJC,oBAAqB,MACrBC,cAAe,MACf,IAAK,KACLC,cAAe,KACfC,YAAa,KACbC,QAAS,KACT,KAAM,MACNC,uBAAwB,MACxBC,iBAAkB,MAClBC,GAAI,MACJC,eAAgB,iBAChBxP,OAAQ,SACRH,QAAS,UACTC,WAAY,cAGhB,SAAS2P,GAAkB5jC,GACvB,IAAI3kB,EACJpC,EACAyuB,EACA+sB,EACAS,EAAUl1B,EAAWk1B,QAErB,GAAIA,EACA,IAAK75C,EAAM,EAAGpC,EAASi8C,EAAQj8C,OAAQoC,EAAMpC,EAAQoC,KAEjDo5C,GADA/sB,EAASwtB,EAAQ75C,IACCo5C,kBAEKA,IAAa98C,IAChC+vB,EAAO+sB,SAAW6N,GAAY7N,EAAS1qC,gBAAkB0qC,GAG7DmP,GAAkBl8B,GAK9B,SAASm8B,GAAgB7jC,GACrB,GAAIA,IAAeqH,EAAcrH,GAU7B,OATItrB,EAAQsrB,IAAgBA,EAAWk1B,UACnCl1B,EAAa,CACTmzB,MAAO,MACP+B,QAASxgD,EAAQsrB,GAAcA,EAAa,CAACA,KAIrD4jC,GAAkB5jC,GAEXA,EAMf,SAAS8jC,GAAkBC,EAAIC,GAC3B,OAAID,EAAG5Q,QAAS6Q,EAAG7Q,QAIZ4Q,EAAGrtC,QAAUstC,EAAGttC,OAASqtC,EAAG5pD,QAAU6pD,EAAG7pD,OAAS4pD,EAAGtP,WAAauP,EAAGvP,UAGhF,SAASwP,GAAoBv8B,GAGzB,OAAIL,EAFJK,EAASA,GAAU,IAGR,CAAEyrB,MAAO,MAAO+B,QAAS,IAG7B2O,GAAgBn8B,GAG3B,SAASw8B,GAAcvtD,EAAGigB,GACtB,OAAIA,EAAEu8B,OAAUx8C,EAAE+f,MAAQE,EAAEF,MACjB,EACA/f,EAAE+f,MAAQE,EAAEF,OACX,EAED,EA6Cf,SAASytC,GAAeztC,EAAOoa,EAAK0vB,EAAS4D,GACzC,IAAIzC,SAAoBjrC,IAAU/e,EAAS,CAAE+e,MAAOA,EAAOoa,IAAKA,EAAK0vB,QAASA,EAAS4D,gBAAiBA,GAAoB1tC,EAC5HkrC,EAAcltD,EAAQitD,GAAcA,EAAcA,IAAettD,EAAc,CAACstD,GAAc,GAE9F,OAAO51C,EAAI61C,GAAa,SAAS3rD,GAC7B,MAAO,CACHygB,MAAOzgB,EAAEygB,MACToa,IAAK76B,EAAE66B,KAAO,MACduzB,WAAYpuD,EAAEouD,WACd7D,QAASvqD,EAAEuqD,QACX4D,gBAAiBnuD,EAAEmuD,oBAK/B,SAASE,GAA6B5tC,EAAOoa,EAAK0vB,GAG9C,IAFA,IAAIoB,EAAcuC,GAAeztC,EAAOoa,EAAK0vB,GAEpCxnD,EAAI,EAAGA,EAAI4oD,EAAY3oD,OAAQD,WAC7B4oD,EAAY5oD,GAAGwnD,QAG1B,OAAOoB,EAyQX,SAAS2C,GAAmB5tD,EAAGigB,GAC3B,OAAIjgB,GAAKA,EAAE+D,SAAWkc,GAAKA,EAAElc,QAClB/D,EAAE+D,YAAckc,EAAElc,UAEtB/D,IAAMigB,EAGjB,SAAS4tC,GAAmBC,EAAaJ,EAAY5jB,EAAMj2B,EAAOvR,EAAQyrD,GAEtE,IAAIrpD,EACAspD,EACAC,EACA9iC,GAJJuiC,EAAaA,GAAc,IAINprD,OAErB,IAAKoC,EAAM,EAAGA,EAAMymB,EAAKzmB,IAAO,CAE5BupD,GADAD,EAAON,EAAWhpD,IACEwpD,UACpB,IAAInuC,EAAQiuC,EAAKjuC,MACjB+tC,EAAY/tC,GAAS+tC,EAAY/tC,IAAU,GAC3CguC,EAAMhuC,GAASguC,EAAMhuC,IAAU,GAC/BguC,EAAMhuC,GAAOkuC,GAAgBF,EAAMhuC,GAAOkuC,IAAiB,GAC3DH,EAAY/tC,GAAOkuC,GAAgBE,GAAUF,EAAa76C,eAAe06C,EAAY/tC,GAAOkuC,GAAenkB,EAAMruC,EAAM2uB,SAASrK,GAAQlM,EAAOvR,EAAQyrD,EAAMhuC,GAAOkuC,KA3X5KnD,GAAMoC,gBAAkBA,GAiExBpC,GAAMsD,eAnCN,SAASA,EAAeC,EAAOC,GAI3B,GAHAD,EAAQf,GAAoBe,GAC5BC,EAAQhB,GAAoBgB,GAExBD,EAAM7R,QAAU8R,EAAM9R,MACtB,OAAO,EAGX,IAAI4Q,EAAIC,EACJkB,GAAYF,EAAM9P,SAAW,IAAI78C,QACjC8sD,GAAYF,EAAM/P,SAAW,IAAI78C,QAErC,GAAI6sD,EAASjsD,SAAWksD,EAASlsD,OAC7B,OAAO,EAGXisD,EAAWA,EAASvuC,KAAKutC,IACzBiB,EAAWA,EAASxuC,KAAKutC,IAEzB,IAAK,IAAI7oD,EAAM,EAAGA,EAAM6pD,EAASjsD,OAAQoC,IAIrC,GAHA0oD,EAAKmB,EAAS7pD,GACd2oD,EAAKmB,EAAS9pD,GAEV0oD,EAAG5Q,OAAS6Q,EAAG7Q,OACf,IAAK4R,EAAehB,EAAIC,GACpB,OAAO,OAER,IAAKF,GAAkBC,EAAIC,GAC9B,OAAO,EAIf,OAAO,GA8CXvC,GAAM3nD,UAAY,CACdsrD,QAAS,WACL,OAAO3zD,KAAK6N,MAEhB+lD,MAAO,SAAS76C,EAAO+B,GACnB,OAAO,IAAIk1C,GAAMhwD,KAAK6N,KAAKjH,MAAMmS,EAAOA,EAAQ+B,KAEpD2pC,KAAM,SAAS3pC,GACX,OAAO,IAAIk1C,GAAMhwD,KAAK6N,KAAKjH,MAAMkU,KAErC6pC,KAAM,SAAS7pC,GACX,OAAO,IAAIk1C,GAAMhwD,KAAK6N,KAAKjH,MAAM,EAAGkU,KAExCsrB,OAAQ,SAAS3gB,GACb,OAAO,IAAIuqC,GAAM11C,EAAIta,KAAK6N,KAAM4X,KAEpC8+B,MAAO,SAAS9+B,EAAU4Z,EAAKw0B,GAC3B,IAAI3uC,EAAO,CAAEma,IAAKA,GAUlB,OARI5Z,IACIA,EAASspC,QACT7pC,EAAK6pC,QAAUtpC,EAASspC,QAExB7pC,EAAKD,MAAQQ,GAKV,IAAIuqC,GADX6D,EACiB7zD,KAAK6N,KAAKqX,KAAK4pC,GAAS9H,OAAO9hC,IAGnCllB,KAAK6N,KAAKjH,MAAM,GAAGse,KAAK4pC,GAAS9H,OAAO9hC,MAE7D4uC,QAAS,SAASruC,EAAUouC,GACxB,OAAO7zD,KAAKukD,MAAM9+B,EAAU,MAAOouC,IAEvCE,kBAAmB,SAAStuC,EAAUouC,GAClC,OAAO7zD,KAAKukD,MAAM9+B,EAAU,OAAQouC,IAExC3uC,KAAM,SAASD,EAAOoa,EAAK20B,EAAUH,GACjC,IAAIjqD,EACJpC,EACA2oD,EAAcF,GAAchrC,EAAOoa,GACnC6vB,EAAY,GAIZ,GAFA8E,EAAWA,GAAYlF,GAEnBqB,EAAY3oD,OAAQ,CACpB,IAAKoC,EAAM,EAAGpC,EAAS2oD,EAAY3oD,OAAQoC,EAAMpC,EAAQoC,IACrDslD,EAAUvtD,KAAKqyD,EAAShN,OAAOmJ,EAAYvmD,KAG/C,OAAO5J,KAAK8zD,QAAQ,CAAE/E,QAASiF,EAAS/E,QAAQC,IAAc2E,GAGlE,OAAO7zD,MAGXi2B,OAAQ,SAASy6B,GACb,IAAIuD,EACJpmD,EAAO7N,KAAK6N,KAKZ,OAFA6iD,EAAc0B,GAAgB1B,KAEqB,IAA/BA,EAAYjN,QAAQj8C,QAIxCysD,EAAWjE,GAAMO,WAAWG,EAAa,CAAEF,QAAQ,IAG5C,IAAIR,GADFniD,EAAKooB,OAAOg+B,KALVj0D,MASfk0D,MAAO,SAAS/D,EAAagE,EAASjtD,GAClCipD,EAAcuC,GAAevC,GAAe,IAC5CgE,EAAUA,GAAWn0D,KAAK6N,KAE1B,IAEAqiD,EADA35C,EAAS,IAAIy5C,GADFhwD,KACa6N,MAwCxB,OArCIsiD,EAAY3oD,OAAS,IACrB0oD,EAAaC,EAAY,GAGrB55C,EADArP,GAAWA,EAAQktD,YACV,IAAIpE,GAAMmE,GAASE,aAAanE,EAAYiE,GAAS/tB,QAAO,SAAS8tB,GAC1E,IAAIrmD,EAAO,IAAImiD,GAAMmE,GAASl+B,OAAO,CAAC,CAClChR,MAAOivC,EAAMjvC,MACb+9B,SAAU,KACVt6C,MAAOwrD,EAAMxrD,MACb+3C,YAAY,KAEZrsB,EAAQ+7B,EAAY3oD,OAAS,EAAI,IAAIwoD,GAAMkE,EAAM9/B,OAAO8/B,MAAM/D,EAAYvpD,MAAM,GAAIiH,EAAK8lD,UAAWzsD,GAASysD,UAAYO,EAAM9/B,MACnI,MAAO,CACHnP,MAAOivC,EAAMjvC,MACbvc,MAAOwrD,EAAMxrD,MACb4rD,aAAcnE,EAAY3oD,OAAS,EACnC4sB,MAAOA,EACPw+B,WAAY/kD,EAAKulD,UAAUlD,EAAW0C,YACtCvF,IAAK1sD,EAAM8uB,OACX8kC,UAAWngC,EAAM5sB,OACjBgtD,cAAepgC,EAAM5sB,WAKpB+O,EAAOk+C,QAAQvE,GAAY9pB,QAAO,SAAS8tB,GAChD,IAAIrmD,EAAO,IAAImiD,GAAMmE,GAASl+B,OAAO,CAAE,CAAEhR,MAAOivC,EAAMjvC,MAAO+9B,SAAU,KAAMt6C,MAAOwrD,EAAMxrD,MAAO+3C,YAAY,KAC7G,MAAO,CACHx7B,MAAOivC,EAAMjvC,MACbvc,MAAOwrD,EAAMxrD,MACb0rB,MAAO+7B,EAAY3oD,OAAS,EAAI,IAAIwoD,GAAMkE,EAAM9/B,OAAO8/B,MAAM/D,EAAYvpD,MAAM,GAAIiH,EAAK8lD,WAAWA,UAAYO,EAAM9/B,MACrHkgC,aAAcnE,EAAY3oD,OAAS,EACnCorD,WAAY/kD,EAAKulD,UAAUlD,EAAW0C,iBAK/Cr8C,GAGXk+C,QAAS,SAASvE,GAGd,GAAIt6B,EAAcs6B,KAAgBlwD,KAAK6N,KAAKrG,OACxC,OAAO,IAAIwoD,GAAM,IAGrB,IAGIhhB,EAOAnE,EACAjhC,EACAymB,EAZApL,EAAQirC,EAAWjrC,MACnBD,EAASkrC,EAAWyC,gBAAkB3yD,KAAK6N,KAAO7N,KAAK00D,iBAAiBzvC,EAAOirC,EAAW7wB,KAAO,OACjG/P,EAAW3uB,EAAM2uB,SAASrK,GAE1B0vC,EAAarlC,EAASC,IAAIvK,EAAO,GAAIC,GACrCivC,EAAQ,CACJjvC,MAAOA,EACPvc,MAAOisD,EACPvgC,MAAO,IAKX7d,EAAS,CAAC29C,GAEd,IAAKtqD,EAAM,EAAGymB,EAAMrL,EAAOxd,OAAQoC,EAAMymB,EAAKzmB,IAC1ColC,EAAOhqB,EAAOpb,GAETkpD,GAAmB6B,EADxB9pB,EAAevb,EAASC,IAAIyf,EAAM/pB,MAG9BivC,EAAQ,CACJjvC,MAAOA,EACPvc,MAHJisD,EAAa9pB,EAITzW,MAAO,IAEX7d,EAAO5U,KAAKuyD,IAEhBA,EAAM9/B,MAAMzyB,KAAKqtC,GAKrB,OAAO,IAAIghB,GAFXz5C,EApCWvW,KAoCG40D,YAAYr+C,EAAQ25C,KAKtCmE,aAAc,SAASnE,EAAYiE,GAC/B,GAAIv+B,EAAcs6B,IAAelwD,KAAK6N,OAAS7N,KAAK6N,KAAKrG,OACrD,OAAO,IAAIwoD,GAAM,IAGrB,IAGIhhB,EAOAnE,EACAjhC,EACAymB,EAZApL,EAAQirC,EAAWjrC,MACnBD,EAASkrC,EAAWyC,gBAAkBwB,EAAU,IAAInE,GAAMmE,GAASjvC,KAAKD,EAAOirC,EAAW7wB,KAAO,MAAO8vB,IAAgBwE,UACxHrkC,EAAW3uB,EAAM2uB,SAASrK,GAE1B0vC,EAAarlC,EAASC,IAAIvK,EAAO,GAAIC,GACrCivC,EAAQ,CACJjvC,MAAOA,EACPvc,MAAOisD,EACPvgC,MAAO,IAKX7d,EAAS,CAAC29C,GAEd,IAAKtqD,EAAM,EAAGymB,EAAMrL,EAAOxd,OAAQoC,EAAMymB,EAAKzmB,IAC1ColC,EAAOhqB,EAAOpb,GAETkpD,GAAmB6B,EADxB9pB,EAAevb,EAASC,IAAIyf,EAAM/pB,MAG9BivC,EAAQ,CACJjvC,MAAOA,EACPvc,MAHJisD,EAAa9pB,EAITzW,MAAO,IAEX7d,EAAO5U,KAAKuyD,IAEhBA,EAAM9/B,MAAMzyB,KAAKqtC,GAKrB,OAAO,IAAIghB,GAFXz5C,EAASvW,KAAK40D,YAAYr+C,EAAQ25C,KAKtCwE,iBAAkB,SAASzvC,EAAOoa,GAC9B,IAAIz1B,EAAKpC,EACLqG,EAAO7N,KAAK6N,KAEhB,IAAKkX,EAAY,CACb,IAAKnb,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9CiE,EAAKjE,GAAK2lD,WAAa3lD,EAK3B,IAAKA,EAAM,EAAGpC,GAFdqG,EAAO,IAAImiD,GAAMniD,GAAMqX,KAAKD,EAAOoa,EAAK8vB,IAAgBwE,WAE5BnsD,OAAQoC,EAAMpC,EAAQoC,WACvCiE,EAAKjE,GAAK2lD,WAErB,OAAO1hD,EAGX,OAAO7N,KAAKklB,KAAKD,EAAOoa,GAAKs0B,WAGjCiB,YAAa,SAASprB,EAAQ0mB,GAC1B,IAAI35C,EAASizB,EAMb,OAJI0mB,GAAchnD,EAAWgnD,EAAWnB,WACpCx4C,EAAS,IAAIy5C,GAAMz5C,GAAQguC,MAAM,CAAEwK,QAASmB,EAAWnB,SAAWmB,EAAW7wB,KAhsDzE,OAgsD2Fs0B,WAG5Fp9C,GAGX68C,UAAW,SAASR,GAChB,IAAIhpD,EACAymB,EACA9Z,EAAS,GACT08C,EAAQ,GAEZ,GAAIL,GAAcA,EAAWprD,OACzB,IAAKoC,EAAM,EAAGymB,EAAMrwB,KAAK6N,KAAKrG,OAAQoC,EAAMymB,EAAKzmB,IAC7CmpD,GAAmBx8C,EAAQq8C,EAAY5yD,KAAK6N,KAAKjE,GAAMA,EAAKymB,EAAK4iC,GAGzE,OAAO18C,IA6Bf,IAAI88C,GAAY,CACZwB,IAAK,SAAS7B,EAAahkB,EAAM1f,GAC7B,IAAI5mB,EAAQ4mB,EAASC,IAAIyf,GAQzB,OANK8lB,GAAS9B,GAEH8B,GAASpsD,KAChBsqD,GAAetqD,GAFfsqD,EAActqD,EAKXsqD,GAEXl4C,MAAO,SAASk4C,GACZ,OAAQA,GAAe,GAAK,GAEhC+B,QAAS,SAAS/B,EAAahkB,EAAM1f,EAAUvW,EAAOvR,EAAQyrD,GAC1D,IAAIvqD,EAAQ4mB,EAASC,IAAIyf,GAmBzB,OAjBIikB,EAAMn4C,QAAUlY,IAChBqwD,EAAMn4C,MAAQ,GAGbg6C,GAAS9B,GAEH8B,GAASpsD,KAChBsqD,GAAetqD,GAFfsqD,EAActqD,EAKdosD,GAASpsD,IACTuqD,EAAMn4C,QAGN/B,GAASvR,EAAS,GAAKstD,GAAS9B,KAChCA,GAA4BC,EAAMn4C,OAE/Bk4C,GAEXp6C,IAAK,SAASo6C,EAAahkB,EAAM1f,GAC7B,IAAI5mB,EAAQ4mB,EAASC,IAAIyf,GASzB,OAPK8lB,GAAS9B,IAAiBhqD,GAAOgqD,KAClCA,EAActqD,GAGdsqD,EAActqD,IAAUosD,GAASpsD,IAAUM,GAAON,MAClDsqD,EAActqD,GAEXsqD,GAEX78C,IAAK,SAAS68C,EAAahkB,EAAM1f,GAC7B,IAAI5mB,EAAQ4mB,EAASC,IAAIyf,GASzB,OAPK8lB,GAAS9B,IAAiBhqD,GAAOgqD,KAClCA,EAActqD,GAGdsqD,EAActqD,IAAUosD,GAASpsD,IAAUM,GAAON,MAClDsqD,EAActqD,GAEXsqD,IAIf,SAAS8B,GAAS5lC,GACd,MAAsB,iBAARA,IAAqBpmB,MAAMomB,GAG7C,SAASlmB,GAAOkmB,GACZ,OAAOA,GAAOA,EAAIjmB,QAGtB,SAAS2I,GAAO4I,GACZ,IAAI5Q,EAAKpC,EAASgT,EAAMhT,OAAQ+O,EAAS,IAAIrT,MAAMsE,GAEnD,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB2M,EAAO3M,GAAO4Q,EAAM5Q,GAAKgI,SAG7B,OAAO2E,EAGXy5C,GAAM0C,eAAiBA,GACvB1C,GAAMC,cAAgBA,GAEtBD,GAAMgF,QAAU,SAASnnD,EAAM3G,EAAS2sD,GAGpC,IAMIoB,EACArO,EAPAsN,GAFJhtD,EAAUA,GAAW,IAEDgtD,MAChBgB,EAvXR,SAAsCC,GAGlC,IAFA,IAAIhF,EAAcltD,EAAQkyD,GAAoBA,EAAmB,CAACA,GAEzD5tD,EAAI,EAAGA,EAAI4oD,EAAY3oD,OAAQD,IACpC,GAAI4oD,EAAY5oD,IAAM2B,EAAWinD,EAAY5oD,GAAGwnD,SAC5C,OAAO,EAIf,OAAO,EA8WeqG,CAA6B1C,GAAewB,GAAS,KACvE1zD,EAAQ,IAAIwvD,GAAMniD,GAClBwnD,EAAiCxC,GAA6BqB,GAAS,IACvEoB,EAAiBrF,GAAc/oD,EAAQge,MAAQ,IAC/CA,EAAOgwC,EAAkBI,EAAiBD,EAA+Bh4C,OAAOi4C,GAGhFC,EAAiBruD,EAAQquD,eACzBt/B,EAAS/uB,EAAQ+uB,OACjBwuB,EAAOv9C,EAAQu9C,KACfE,EAAOz9C,EAAQy9C,KAwDnB,OAtDIz/B,GAAQ2uC,IACRrzD,EAAQA,EAAM0kB,KAAKA,EAAMtiB,EAAaA,EAAaixD,IAGnD59B,IACAz1B,EAAQA,EAAMy1B,OAAOA,GAEjBs/B,IACA/0D,EAAQ+0D,EAAe/0D,IAG3BomD,EAAQpmD,EAAMmzD,UAAUnsD,QAGxB0d,IACK2uC,IACDrzD,EAAQA,EAAM0kB,KAAKA,IAGnBgvC,IACArmD,EAAOrN,EAAMmzD,YAIjBuB,GACA10D,EAAQA,EAAM0zD,MAAMA,EAAOrmD,EAAM3G,GAE7Bu9C,IAAS7hD,GAAe+hD,IAAS/hD,GAAgBsE,EAAQktD,cACzD5zD,EAAQ,IAAIwvD,GAAMwF,GAAWh1D,EAAMmzD,YAAYC,MAAMnP,EAAME,GAE3DsQ,EAA8B36C,EAAI+6C,GAAgC,SAASI,GACvE,OAAO1yD,EAAO,GAAI0yD,EAAiB,CAC/B9C,iBAAiB,OAIzBnyD,EAAQA,EAAM0zD,MAAMe,EAA6BpnD,EAAM3G,MAGvDu9C,IAAS7hD,GAAe+hD,IAAS/hD,IAG7B6hD,EAAOE,GAFXiC,EAAQpmD,EAAMqN,KAAKrG,SAEQN,EAAQwuD,UAE/BjR,GADAA,GAAQA,EAAOE,EAAOiC,GACR,EAAI,EAAInC,GAE1BjkD,EAAQA,EAAMozD,MAAMnP,EAAME,KAG1BuP,GAAWt+B,EAAcs+B,IAA2B,IAAjBA,EAAM1sD,SACzChH,EAAQA,EAAM0zD,MAAMA,EAAOrmD,EAAM3G,KAIlC,CACH0/C,MAAOA,EACP/4C,KAAMrN,EAAMmzD,YAIpB,IAAIgC,GAAiB/tD,EAAM7E,OAAO,CAC9BoF,KAAM,SAASjB,GACXlH,KAAK6N,KAAO3G,EAAQ2G,MAGxBi3C,KAAM,SAAS59C,GACXA,EAAQ6gD,QAAQ/nD,KAAK6N,OAEzBk5C,OAAQ,SAAS7/C,GACbA,EAAQ6gD,QAAQ7gD,EAAQ2G,OAE5Bm5C,OAAQ,SAAS9/C,GACbA,EAAQ6gD,QAAQ7gD,EAAQ2G,OAE5B7L,QAAS,SAASkF,GACdA,EAAQ6gD,QAAQ7gD,EAAQ2G,SAI5B+nD,GAAkBhuD,EAAM7E,OAAQ,CAChCoF,KAAM,SAASjB,GACX,IAAiB+/C,EAAbh/C,EAAOjI,KAEXkH,EAAUe,EAAKf,QAAUnE,EAAO,GAAIkF,EAAKf,QAASA,GAElDlE,EAAKkoD,GAAM,SAASnyC,EAAOrT,UACZwB,EAAQxB,KAAUQ,IACzBgB,EAAQxB,GAAQ,CACZ2oB,IAAKnnB,EAAQxB,QAKzBuC,EAAK01B,MAAQz2B,EAAQy2B,MAAQk4B,GAAM7O,OAAO9/C,EAAQy2B,OAAS,CACvD5H,KAAM5yB,EACN8J,IAAK9J,GAGT8jD,EAAe//C,EAAQ+/C,aAEnB//C,EAAQkmC,SACRnlC,EAAKmlC,OAASlmC,EAAQkmC,QAGtBlkC,EAAWhC,EAAQvF,QACnBsG,EAAKtG,KAAOuF,EAAQvF,MAGnBsG,EAAKtG,OACNsG,EAAKtG,KAAOigD,GAGhB35C,EAAKg/C,aAAe/9C,EAAW+9C,GAAgBA,EAAe,SAAS//C,GACnE,IAAIqP,EAAS,GAcb,OAZAvT,EAAKkE,GAAS,SAAS4tB,EAAQpsB,GACvBosB,KAAUmyB,IACVnyB,EAASmyB,EAAanyB,GAClBntB,EAAcmtB,KACdpsB,EAAQosB,EAAOpsB,MAAMA,GACrBosB,EAASA,EAAOvjB,MAIxBgF,EAAOue,GAAUpsB,KAGd6N,IAIfrP,QAAS,CACL+/C,aAAcrF,GAGlBoF,OAAQ,SAAS9/C,GACb,OAAO4gD,EAAK9nD,KAAK01C,MAAMxuC,EAASojD,KAGpCxF,KAAM,SAAS59C,GACX,IACI6gD,EAEAxxC,EACAonB,EAJO39B,KAIM29B,MAEjBz2B,EANWlH,KAMI01C,MAAMxuC,EAASqjD,GAE9BxC,EAAU7gD,EAAQ6gD,SAAW5kD,EACrB+D,EAAQ6mB,OAEhBxX,EAASonB,EAAM5H,KAAK7uB,EAAQ2G,SAEbjL,EACXmlD,EAAQxxC,IAERrP,EAAQ6gD,QAAU,SAASxxC,GACvBonB,EAAM1wB,IAAI/F,EAAQ2G,KAAM0I,GAExBwxC,EAAQxxC,IAGZ5T,EAAEmlD,KAAK5gD,KAIf6/C,OAAQ,SAAS7/C,GACb,OAAO4gD,EAAK9nD,KAAK01C,MAAMxuC,EAASsjD,KAGpCxoD,QAAS,SAASkF,GACd,OAAO4gD,EAAK9nD,KAAK01C,MAAMxuC,EAASujD,KAGpC/U,MAAO,SAASxuC,EAASxB,GACrBwB,EAAUA,GAAW,GAErB,IACI4uD,EACAC,EAFO/1D,KAEUkH,QAAQxB,GACzBmI,EAAO3E,EAAW6sD,EAAUloD,MAAQkoD,EAAUloD,KAAK3G,EAAQ2G,MAAQkoD,EAAUloD,KAWjF,OATA3G,EAAUnE,GAAO,EAAM,GAAIgzD,EAAW7uD,GACtC4uD,EAAa/yD,GAAO,EAAM,GAAI8K,EAAM3G,EAAQ2G,MAE5C3G,EAAQ2G,KARG7N,KAQSinD,aAAa6O,EAAYpwD,GAEzCwD,EAAWhC,EAAQmnB,OACnBnnB,EAAQmnB,IAAMnnB,EAAQmnB,IAAIynC,IAGvB5uD,KAIX2uD,GAAQjuD,EAAM7E,OAAO,CACrBoF,KAAM,WACFnI,KAAKg2D,OAAS,IAElB/oD,IAAK,SAASsE,EAAK1D,GACX0D,IAAQ3O,IACR5C,KAAKg2D,OAAOxjD,EAAUjB,IAAQ1D,IAGtCkoB,KAAM,SAASxkB,GACX,OAAOvR,KAAKg2D,OAAOxjD,EAAUjB,KAEjC0kD,MAAO,WACHj2D,KAAKg2D,OAAS,IAElBj/B,OAAQ,SAASxlB,UACNvR,KAAKg2D,OAAOxjD,EAAUjB,OAoBrC,SAAS2kD,GAAiBroD,EAAMsoD,EAAS9M,EAAe+M,EAAoBC,GACxE,IAAI9M,EACAz6B,EACA4/B,EACA9kD,EAEApC,EADA8uD,EAAU,GAGd,IAAK1sD,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAE9C,IAAKklB,KADLy6B,EAAS17C,EAAKjE,GACCusD,GACXzH,EAAe2H,EAAWvnC,KAEN4/B,IAAiB5/B,IAC5BwnC,EAAQ5H,KACT4H,EAAQ5H,GAAgB/tD,EAAMouB,OAAO2/B,IAEzC4H,EAAQ5H,GAAcnF,EAAQ4M,EAAQrnC,GAAQy6B,WACvCA,EAAOz6B,IAM9B,SAASynC,GAAe1oD,EAAMsoD,EAAS9M,EAAe+M,EAAoBC,GACtE,IAAI9M,EACAz6B,EACA4/B,EACA9kD,EACApC,EAEJ,IAAKoC,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAE9C,IAAKklB,KADLy6B,EAAS17C,EAAKjE,GACCusD,EACX5M,EAAOz6B,GAAUu6B,EAAcG,OAAO16B,EAAQqnC,EAAQrnC,GAAQy6B,KAE9DmF,EAAe2H,EAAWvnC,KACN4/B,IAAiB5/B,UAC1By6B,EAAOmF,GAM9B,SAAS8H,GAAa3oD,EAAMsoD,EAAS9M,EAAe+M,EAAoBC,GACpE,IAAI9M,EACA3/C,EACAykD,EACA7mD,EAEJ,IAAKoC,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,KAG9CykD,EAAY+H,GAFZ7M,EAAS17C,EAAKjE,IAEwBqb,SACrBopC,GAAa9E,EAAOtkC,QACjCskC,EAAOtkC,MAAQopC,GAGnB9E,EAAO7gD,MAAQ2gD,EAAcG,OAAOD,EAAOtkC,MAAOskC,EAAO7gD,OAErD6gD,EAAOn1B,QACHm1B,EAAO+K,aACPkC,GAAajN,EAAOn1B,MAAO+hC,EAAS9M,EAAe+M,EAAoBC,GAEvEE,GAAehN,EAAOn1B,MAAO+hC,EAAS9M,EAAe+M,EAAoBC,IAMzF,SAASI,GAAeC,EAAkB5N,EAAO6N,EAAWR,EAASC,EAAoBC,GACrF,OAAO,SAASxoD,GAGZ,OAFAA,EAAO6oD,EAAiB7oD,GAEjB+oD,GAAmB9N,EAAO6N,EAAWR,EAASC,EAAoBC,EAAlEO,CAA8E/oD,IAI7F,SAAS+oD,GAAmB9N,EAAO6N,EAAWR,EAASC,EAAoBC,GACvE,OAAO,SAASxoD,GAUZ,OARIA,IAAS+nB,EAAcugC,KACK,mBAAxBjlD,EAAS3G,KAAKsD,IAAgCA,aAAgBD,IAC9DC,EAAO,CAACA,IAGZ8oD,EAAU9oD,EAAMsoD,EAAS,IAAIrN,EAASsN,EAAoBC,IAGvDxoD,GAAQ,IAzGvBgoD,GAAM7O,OAAS,SAAS9/C,GACpB,IAAI2vD,EAAQ,CACRC,SAAY,WAAa,OAAO,IAAIjB,KAGxC,OAAIluD,EAAcT,IAAYgC,EAAWhC,EAAQ6uB,MACtC7uB,GAGK,IAAZA,EACO,IAAI2uD,GAGRgB,EAAM3vD,MAgGjB,IAAI6vD,GAAanvD,EAAM7E,OAAO,CAC1BoF,KAAM,SAAS6uD,GACX,IAAiBlvD,EAAQynB,EAAKu5B,EAAO9gD,EAAjCC,EAAOjI,KAIX,IAAK8H,KAFLkvD,EAASA,GAAU,GAGfznC,EAAMynC,EAAOlvD,GAEbG,EAAKH,UAAiBynB,IAAQrpB,EAAS4oB,EAAOS,GAAOA,EAGzDvnB,EAAOgvD,EAAO/N,WAAaC,GAEvBvhD,EAAcM,EAAK6gD,SACnB7gD,EAAK6gD,MAAQA,EAAQ9gD,EAAKtI,OAAOuI,EAAK6gD,QAG1C,IAAImO,EAAehvD,EAAK4F,KAAKrE,KAAKvB,GAIlC,GAFAA,EAAKivD,oBAAsBD,EAEvBhvD,EAAK6gD,MAAO,CACZ,IAOIuF,EACAjsD,EARA+0D,EAAiBlvD,EAAKuhC,OAAOhgC,KAAKvB,GAClCmvD,EAAoBnvD,EAAK+gD,UAAUx/C,KAAKvB,GACxCmuD,EAAqB,GACrBD,EAAU,GACVkB,EAAmB,GACnBhB,EAAa,GACb/I,GAAkB,GAItBxE,EAAQ7gD,EAAK6gD,OAEHl6B,SACN5rB,EAAK8lD,EAAMl6B,QAAQ,SAAS3J,EAAOvc,GAC/B,IAAI4uD,EAEJjJ,EAAYppC,EAERtd,EAAce,IAAUA,EAAMuc,MAC9BopC,EAAY3lD,EAAMuc,aACJvc,IAAUxC,IACxBmoD,EAAY3lD,GAGZf,EAAce,IAAUA,EAAMy1B,OAC9Bm5B,EAAW5uD,EAAMy1B,MAGrBmvB,EAAkBA,GAAoBgK,GAAYA,IAAaryC,GAAUopC,IAAcppC,EACvF7iB,EAAOk1D,GAAYjJ,EACnB8H,EAAQlxC,IAAgC,IAAvB7iB,EAAKuT,QAAQ,KAAcmZ,EAAO1sB,GAAM,GAAQ0sB,EAAO1sB,GACxEi1D,EAAiBpyC,GAAS6J,EAAO7J,GACjCmxC,EAAmBkB,GAAYjJ,GAAappC,EAC5CoxC,EAAWpxC,GAASqyC,GAAYjJ,MAG/B2I,EAAOhO,WAAasE,IACrBrlD,EAAK+gD,UAAYyN,GAAeW,EAAmBtO,EAAOoN,GAAkBmB,EAAkBjB,EAAoBC,KAI1HpuD,EAAKivD,oBAAsBD,EAC3BhvD,EAAKsvD,oBAAsBX,GAAmB9N,EAAOyN,GAAgBJ,EAASC,EAAoBC,GAClGpuD,EAAK4F,KAAO4oD,GAAeQ,EAAcnO,EAAOyN,GAAgBJ,EAASC,EAAoBC,GAC7FpuD,EAAKuhC,OAASitB,GAAeU,EAAgBrO,EAAO0N,GAAcL,EAASC,EAAoBC,KAGvGtN,OAAQ,SAASl7C,GACb,OAAOA,EAAOA,EAAKk7C,OAAS,MAEhC/zB,MAAO4sB,EACP/zC,KAAM+zC,EACNgF,MAAO,SAAS/4C,GACZ,OAAOA,EAAKrG,QAEhBgiC,OAAQoY,EACRgR,WAAY,WACR,MAAO,IAEX5J,UAAW,SAASn7C,GAChB,OAAOA,KAIf,SAAS2pD,GAAcC,EAAeC,GAClC,IAAIC,EACAC,EAEJ,GAAIF,EAAStjC,OAASsjC,EAAStjC,MAAM5sB,OACjC,IAAK,IAAID,EAAI,EAAGA,EAAImwD,EAAStjC,MAAM5sB,OAAQD,IACvCowD,EAAeF,EAAcrjC,MAAMqjC,EAAcrjC,MAAM5sB,OAAS,GAChEowD,EAAaF,EAAStjC,MAAM7sB,GACxBowD,GAAgBC,EACZD,EAAarD,cAAgBqD,EAAajvD,OAASkvD,EAAWlvD,MAC9D8uD,GAAcG,EAAcC,GACrBD,EAAa1yC,OAAS0yC,EAAajvD,OAASkvD,EAAWlvD,OAC9DivD,EAAavjC,MAAM43B,iBAAkB,EACrC2L,EAAavjC,MAAMzyB,KAAKyG,MAAMuvD,EAAavjC,MAAOwjC,EAAWxjC,OAC7DujC,EAAavjC,MAAM43B,iBAAkB,IAErCyL,EAAcrjC,MAAM43B,iBAAkB,EACtCyL,EAAcrjC,MAAMzyB,KAAKyG,MAAMqvD,EAAcrjC,MAAO,CAACwjC,IACrDH,EAAcrjC,MAAM43B,iBAAkB,GAEnC4L,IACPH,EAAcrjC,MAAM43B,iBAAkB,EACtCyL,EAAcrjC,MAAMzyB,KAAKyG,MAAMqvD,EAAcrjC,MAAO,CAACwjC,IACrDH,EAAcrjC,MAAM43B,iBAAkB,GAKtD,SAAS6L,GAAYvwD,EAAQwwD,EAAMrT,EAAME,GAKrC,IAJA,IAAIuP,EAEA9/B,EADAxqB,EAAM,EAGHkuD,EAAKtwD,QAAUm9C,GAAM,CAIxB,IAAIn9C,GAFJ4sB,GADA8/B,EAAQ4D,EAAKluD,IACCwqB,OAEK5sB,OA+BnB,GA7BIF,GAAUA,EAAO2d,QAAUivC,EAAMjvC,OAAS3d,EAAOoB,QAAUwrD,EAAMxrD,OAC7DpB,EAAOgtD,cAAgBhtD,EAAO8sB,MAAM5sB,OACpCqwD,GAAYvwD,EAAO8sB,MAAM9sB,EAAO8sB,MAAM5sB,OAAS,GAAI0sD,EAAM9/B,MAAOqwB,EAAME,IAEtEvwB,EAAQA,EAAMxtB,MAAM69C,EAAMA,EAAOE,GACjCr9C,EAAO8sB,MAAQ9sB,EAAO8sB,MAAM/W,OAAO+W,IAEvC0jC,EAAKttD,OAAOZ,IAAO,IACZsqD,EAAMI,cAAgBlgC,EAAM5sB,QACnCqwD,GAAY3D,EAAO9/B,EAAOqwB,EAAME,GAC3BuP,EAAM9/B,MAAM5sB,QACbswD,EAAKttD,OAAOZ,IAAO,KAGvBwqB,EAAQA,EAAMxtB,MAAM69C,EAAMA,EAAOE,GACjCuP,EAAM9/B,MAAQA,EAET8/B,EAAM9/B,MAAM5sB,QACbswD,EAAKttD,OAAOZ,IAAO,IAIN,IAAjBwqB,EAAM5sB,OACNi9C,GAAQj9C,GAERi9C,EAAO,EACPE,GAAQvwB,EAAM5sB,UAGZoC,GAAOkuD,EAAKtwD,OACd,MAIJoC,EAAMkuD,EAAKtwD,QACXswD,EAAKttD,OAAOZ,EAAKkuD,EAAKtwD,OAASoC,GAIvC,SAAS4rD,GAAWhsB,EAAQuuB,GASxB,IARA,IAEI7D,EACA9/B,EAHA7d,EAAS,GACTyhD,GAAgBxuB,GAAU,IAAIhiC,OAG9BywD,EAAU/uD,EAAW6uD,GAAiBA,EAAgB,SAASv9C,EAAOzB,GACtE,OAAOyB,EAAMzB,IAGRm/C,EAAa,EAAGA,EAAaF,EAAcE,IAGhD,IAFAhE,EAAQ+D,EAAQzuB,EAAQ0uB,IAEd5D,aACN/9C,EAASA,EAAO8G,OAAOm4C,GAAWtB,EAAM9/B,YACrC,CACHA,EAAQ8/B,EAAM9/B,MAEd,IAAK,IAAI+jC,EAAY,EAAGA,EAAY/jC,EAAM5sB,OAAQ2wD,IAC9C5hD,EAAO5U,KAAKs2D,EAAQ7jC,EAAO+jC,IAIvC,OAAO5hD,EAGX,SAAS6hD,GAAcvqD,GACnB,IAAIjE,EAEApC,EACA4sB,EACA+jC,EAHA5hD,EAAS,GAKb,IAAK3M,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAAO,CACrD,IAAIsqD,EAAQrmD,EAAK49C,GAAG7hD,GACpB,GAAIsqD,EAAM9/B,MACN,GAAI8/B,EAAMI,aACN/9C,EAASA,EAAO8G,OAAO+6C,GAAclE,EAAM9/B,aAG3C,IADAA,EAAQ8/B,EAAM9/B,MACT+jC,EAAY,EAAGA,EAAY/jC,EAAM5sB,OAAQ2wD,IAC1C5hD,EAAO5U,KAAKyyB,EAAMq3B,GAAG0M,IAKrC,OAAO5hD,EAGX,SAAS8hD,GAAexqD,EAAMi7C,GAC1B,IAAIl/C,EAAKpC,EAAQ0sD,EACjB,GAAIpL,EACA,IAAKl/C,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,KAC9CsqD,EAAQrmD,EAAK49C,GAAG7hD,IACNwqB,QACF8/B,EAAMI,aACN+D,GAAenE,EAAM9/B,MAAO00B,GAE5BoL,EAAM9/B,MAAQ,IAAItmB,EAAoBomD,EAAM9/B,MAAO00B,EAAOoL,EAAM9/B,MAAM7qB,UAO1F,SAAS+uD,GAAezqD,EAAM0qD,GAC1B,IAAK,IAAI3uD,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IACjC,GAAIiE,EAAKjE,GAAK0qD,cACV,GAAIgE,GAAezqD,EAAKjE,GAAKwqB,MAAOmkC,GAChC,OAAO,OAER,GAAIA,EAAK1qD,EAAKjE,GAAKwqB,MAAOvmB,EAAKjE,IAClC,OAAO,EAKnB,SAAS4uD,GAAgBC,EAAQ5qD,EAAMmhC,EAAMN,GACzC,IAAK,IAAI9kC,EAAM,EAAGA,EAAM6uD,EAAOjxD,QACvBixD,EAAO7uD,GAAKiE,OAASA,IAGrB6qD,GAAeD,EAAO7uD,GAAKiE,KAAMmhC,EAAMN,GAJR9kC,MAU3C,SAAS8uD,GAAetkC,EAAO4a,EAAMN,GACjC,IAAK,IAAI9kC,EAAM,EAAGpC,EAAS4sB,EAAM5sB,OAAQoC,EAAMpC,EAAQoC,IAAO,CAC1D,GAAIwqB,EAAMxqB,IAAQwqB,EAAMxqB,GAAK0qD,aACzB,OAAOoE,GAAetkC,EAAMxqB,GAAKwqB,MAAO4a,EAAMN,GAC3C,GAAIta,EAAMxqB,KAASolC,GAAQ5a,EAAMxqB,KAAS8kC,EAE9C,OADAta,EAAMxqB,GAAO8kC,GACN,GAKlB,SAASiqB,GAAsBjhC,EAAM7pB,EAAM4qD,EAAQ/yD,EAAMkzD,GACrD,IAAK,IAAIC,EAAY,EAAGrxD,EAASkwB,EAAKlwB,OAAQqxD,EAAYrxD,EAAQqxD,IAAa,CAC3E,IAAI7pB,EAAOtX,EAAKmhC,GAEhB,GAAK7pB,KAAQA,aAAgBtpC,GAI7B,GAAIspC,EAAKslB,eAAiB1xD,GAAgBg2D,GAGtC,IAAK,IAAIhvD,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IACjC,GAAIiE,EAAKjE,KAASolC,EAAM,CACpBtX,EAAKmhC,GAAahrD,EAAK49C,GAAG7hD,GAC1B4uD,GAAgBC,EAAQ5qD,EAAMmhC,EAAMtX,EAAKmhC,IACzC,YANRF,GAAsB3pB,EAAK5a,MAAOvmB,EAAM4qD,EAAQ/yD,EAAMkzD,IA+BlE,SAASE,GAAqBjrD,EAAMi7C,GAChC,OAAIA,EACOnzC,GAAQ9H,GAAM,SAASmhC,GAC1B,OAAQA,EAAKqe,KAAOre,EAAKqe,KAAOvE,EAAMuE,KAASre,EAAK8Z,EAAMK,WAAaL,EAAMn5B,IAAMm5B,EAAMn5B,KAAOm5B,EAAMsF,eAGtG,EAGZ,SAAS2K,GAAalrD,EAAMi7C,GACxB,OAAIA,EACOnzC,GAAQ9H,GAAM,SAASmhC,GAC1B,OAAOA,EAAKqe,KAAOvE,EAAMuE,QAGzB,EAGZ,SAAS13C,GAAQ9H,EAAMmmD,GACnB,IAAIpqD,EAAKpC,EACT,GAAKqG,EAAL,CAIA,IAAKjE,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAIoqD,EAASnmD,EAAKjE,IACd,OAAOA,EAIf,OAAQ,GAGZ,SAASovD,GAAmBpqC,EAAQxsB,GAChC,GAAIwsB,IAAWgH,EAAchH,GAAS,CAClC,IACIy/B,EADA6B,EAAathC,EAAOxsB,GAQxB,OALIisD,EADA1mD,EAAcuoD,GACFA,EAAW/xB,MAAQ+xB,EAAWjrC,OAAS7iB,EAEvCwsB,EAAOxsB,IAASA,EAG5B8G,EAAWmlD,GACJjsD,EAGJisD,EAEX,OAAOjsD,EAGX,SAAS62D,GAA8B/I,EAAYpH,GAC/C,IAAIl/C,EACApC,EACAF,EAAS,GAEb,IAAK,IAAI2d,KAASirC,EACA,YAAVjrC,IACA3d,EAAO2d,GAASirC,EAAWjrC,IAInC,GAAIirC,EAAWzM,QAEX,IADAn8C,EAAOm8C,QAAU,GACZ75C,EAAM,EAAGpC,EAAS0oD,EAAWzM,QAAQj8C,OAAQoC,EAAMpC,EAAQoC,IAC5DtC,EAAOm8C,QAAQ75C,GAAOqvD,GAA8B/I,EAAWzM,QAAQ75C,GAAMk/C,QAGjFxhD,EAAO2d,MAAQ+zC,GAAmBlQ,EAAMl6B,OAAQtnB,EAAO2d,OAE3D,OAAO3d,EAGX,SAAS4xD,GAAwB/I,EAAarH,GAC1C,IAAIl/C,EACApC,EAEAF,EACA4oD,EAFA35C,EAAS,GAIb,IAAK3M,EAAM,EAAGpC,EAAS2oD,EAAY3oD,OAAQoC,EAAMpC,EAAQoC,IAAQ,CAK7D,IAAK,IAAIqb,KAJT3d,EAAS,GAET4oD,EAAaC,EAAYvmD,GAGrBtC,EAAO2d,GAASirC,EAAWjrC,GAG/B3d,EAAO2d,MAAQ+zC,GAAmBlQ,EAAMl6B,OAAQtnB,EAAO2d,OAEnD3d,EAAOsrD,YAAc3vD,EAAQqE,EAAOsrD,cACpCtrD,EAAOsrD,WAAasG,GAAwB5xD,EAAOsrD,WAAY9J,IAEnEvyC,EAAO5U,KAAK2F,GAEhB,OAAOiP,EAGX,IAAIxI,GAAazE,EAAWvG,OAAO,CAC/BoF,KAAM,SAASjB,GACX,IAAwB2G,EAApB5F,EAAOjI,KA2CX,GAzCIkH,IACA2G,EAAO3G,EAAQ2G,MAGnB3G,EAAUe,EAAKf,QAAUnE,EAAO,GAAIkF,EAAKf,QAASA,GAElDe,EAAKkxD,KAAO,GACZlxD,EAAKmxD,UAAY,GACjBnxD,EAAKoxD,MAAQ,GACbpxD,EAAKqxD,cAAgB,GACrBrxD,EAAKsxD,QAAU,GACftxD,EAAKuxD,MAAQ,GACbvxD,EAAKwxD,eAAiB,EACtBxxD,EAAKyxD,WAAa,GAClBzxD,EAAK0xD,UAAYzyD,EAAQ+8C,SACzBh8C,EAAK2xD,MAAQ1yD,EAAQg9C,OAASh9C,EAAQ+8C,SAAW,EAAIrhD,GACrDqF,EAAK4xD,MAAQ5J,GAAc/oD,EAAQge,MACnCjd,EAAK6xD,YAAc1J,GAAWlpD,EAAQge,MACtCjd,EAAK8xD,QAAU3H,GAAgBlrD,EAAQ+uB,QACvChuB,EAAK+xD,OAAStH,GAAexrD,EAAQgtD,OACrCjsD,EAAKgyD,WAAa/yD,EAAQksD,UAC1BnrD,EAAKiyD,OAAShzD,EAAQ0/C,MACtB3+C,EAAKkyD,aAAejzD,EAAQktD,YAExBnsD,EAAKkyD,eACLlyD,EAAKmyD,aAAe,IAExBnyD,EAAKoyD,gCAAiC,EAEtC/wD,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKu9C,UAAY8U,GAAUtT,OAAO9/C,EAAS2G,EAAM5F,GAE7CiB,EAAWjB,EAAKu9C,UAAU7jD,OAC1BsG,EAAKu9C,UAAU7jD,KAAK,CAChB44D,WAAYtyD,EAAKuyD,YAAYhxD,KAAKvB,GAClCwyD,WAAYxyD,EAAKyyD,YAAYlxD,KAAKvB,GAClC0yD,YAAa1yD,EAAK2yD,aAAapxD,KAAKvB,KAId,MAA1Bf,EAAQ2zD,eACR,GAAqC,iBAA1B3zD,EAAQ2zD,eAA4B,CAC3C,IAAItpD,EAAMrK,EAAQ2zD,eAElB5yD,EAAK6yD,SAAW,CACZC,QAAS,WACL,OAAOz3D,KAAK0xB,MAAMgmC,aAAaD,QAAQxpD,KAE3C0pD,QAAS,SAASjsB,GACdgsB,aAAaC,QAAQ1pD,EAAKiB,EAAUvK,EAAKizD,OAAOlS,UAAUha,YAIlE/mC,EAAK6yD,SAAW5zD,EAAQ2zD,eAIhC5yD,EAAKizD,OAAS,IAAIv6D,EAAMkN,KAAKw8C,QAAQnjD,EAAQ8vD,OAAOtxD,MAAQ,QAASwB,EAAQ8vD,QAErE/uD,EAAKizD,OAAOpS,MAEpB7gD,EAAKkzD,2BAELlzD,EAAKoxD,MAAQpxD,EAAKmzD,SAASnzD,EAAKoxD,OAChCpxD,EAAKozD,SAAU,EAEfpzD,EAAKuB,KAAK,CAAC,OAAQohD,EAAO9N,EAAQ+N,EAAcH,EAAMK,EAAYD,GAAW5jD,IAGjFA,QAAS,CACL2G,KAAM,KACNmpD,OAAQ,CACL/N,UAAWC,IAEd2R,eAAgB,KAChBS,eAAe,EACfC,cAAc,EACdC,iBAAiB,EACjB5C,gBAAgB,EAChB6C,kBAAkB,EAClBrU,OAAO,EACPsU,aAAa,GAGjBv0D,MAAO,WACH,OAAOnH,MAGX27D,OAAQ,SAASjzD,GACb,OAAIA,IAAU9F,EACN5C,KAAKq7D,SAAW3yD,IAChB1I,KAAKq7D,QAAU3yD,EAEXA,GACO1I,KAAK47D,OAIbj5D,EAAEqpC,WAAW2J,UAAU1uB,UAEvBjnB,KAAKq7D,SAIpBQ,YAAa,SAAS5I,GAClB,OAAmC,MAA/BjzD,KAAKkH,QAAQ2zD,eACN,KAGP5H,IAAUrwD,EACH5C,KAAK86D,SAASG,QAAQhI,GAG1BjzD,KAAK86D,SAASC,WAAa,IAGtCe,WAAY,WAGR,OAFY97D,KAAKk0D,SAAW,IAEf1sD,QAGjBu0D,iBAAkB,WACd,IAAI7H,EAAQl0D,KAAKk0D,SAAW,GAE5B,OAAOl0D,KAAKkH,QAAQ0xD,gBAAkB1E,EAAM1sD,QAGhDw0D,oBAAqB,WACjB,OAAOh8D,KAAK+7D,oBAAsB/7D,KAAKm6D,cAG3C8B,cAAe,WACX,IAAI/H,EAAQl0D,KAAKg6D,QAAU,GAE3B,OAAOh6D,KAAKm6D,cAAgBjG,EAAM1sD,QAGtCgzD,YAAa,SAASjkD,GAClBvW,KAAKk8D,MAAM3lD,EAAQ,eAGvBmkD,YAAa,SAASnkD,GAClBvW,KAAKk8D,MAAM3lD,EAAQ,eAGvBqkD,aAAc,SAASrkD,GACnBvW,KAAKk8D,MAAM3lD,EAAQ,gBAGvB2lD,MAAO,SAAS3lD,EAAQw/C,GACpB,IAAIloD,EAAO7N,KAAKm8D,UAAU5lD,GAErB1I,IACDA,EAAO0I,GAGXvW,KAAK+1D,GAAWloD,IAGpBuuD,UAAW,SAASvuD,EAAM42C,GACtB,GAAI52C,EAAM,CACN,GAAI7N,KAAK+7D,mBACL,OAAO3D,GAAcvqD,GAGzB,IAAK42C,EACD,IAAK,IAAI76C,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IACjCiE,EAAK49C,GAAG7hD,GAKpB,OAAOiE,GAGX1B,OAAQhJ,EAERosB,IAAK,SAASI,GACV,IAAI/lB,EAAKpC,EAAQqG,EAAO7N,KAAKo8D,UAAUp8D,KAAKq5D,MAAOr5D,KAAKkH,QAAQm1D,WAEhE,IAAKzyD,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAIiE,EAAKjE,GAAK+lB,IAAMA,EAChB,OAAO9hB,EAAKjE,IAKxB0yD,SAAU,SAAS3sC,GACf,OAAO3vB,KAAKu8D,UAAU5sC,EAAI3vB,KAAKq5D,QAGnCkD,UAAW,SAAS5sC,EAAIoE,GACpB,IAAInqB,EAAKpC,EAAQqG,EAAO7N,KAAKo8D,UAAUroC,EAAW/zB,KAAKkH,QAAQm1D,WAE/D,GAAKxuD,EAIL,IAAKjE,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAIiE,EAAKjE,GAAKyjD,KAAO19B,EACjB,OAAO9hB,EAAKjE,IAKxB+L,QAAS,SAASmzC,GACd,OAAOiQ,GAAa/4D,KAAKq5D,MAAOvQ,IAGpC2C,GAAI,SAAS1yC,GACT,OAAO/Y,KAAKq5D,MAAM5N,GAAG1yC,IAGzBlL,KAAM,SAASnF,GACX,IAAIT,EAAOjI,KACX,GAAI0I,IAAU9F,EAgBP,CACH,GAAIqF,EAAKoxD,MACL,IAAK,IAAIzvD,EAAM,EAAGA,EAAM3B,EAAKoxD,MAAM7xD,OAAQoC,IACvC3B,EAAKoxD,MAAM5N,GAAG7hD,GAItB,OAAO3B,EAAKoxD,MAtBZpxD,EAAKkzD,2BACLlzD,EAAKoxD,MAAQr5D,KAAKo7D,SAAS1yD,GAE3BT,EAAKqxD,cAAgB5wD,EAAM9B,MAAM,GAEjCqB,EAAKu0D,aAELv0D,EAAKsxD,QAAU,GACftxD,EAAKmC,QAAQ,SACbnC,EAAKw0D,UAAUx0D,EAAKoxD,OAEpBpxD,EAAKiyD,OAASjyD,EAAKoxD,MAAM7xD,OACzBS,EAAKwxD,eAAiBxxD,EAAKiyD,OAE3BjyD,EAAKy0D,SAASz0D,EAAKoxD,QAY3B3hC,KAAM,SAAShvB,GACX,GAAIA,IAAU9F,EACV,OAAO5C,KAAKw5D,MAEZx5D,KAAKw5D,MAAQx5D,KAAK28D,aAAaj0D,IAIvCi0D,aAAc,SAAS9uD,GACnB,IAAI5F,EAAOjI,KACX24D,GAAsB9qD,EAAM5F,EAAKoxD,MAAOpxD,EAAKsxD,QAAStxD,EAAKizD,OAAOpS,OAASuC,EAAkBpjD,EAAK8zD,oBAElG,IAAIrkC,EAAO,IAAI5pB,EAAoBD,EAAM5F,EAAKizD,OAAOpS,OAErD,OADApxB,EAAKvrB,OAAS,WAAa,OAAOlE,EAAKkE,UAChCurB,GAGX1D,SAAU,WAGN,OAFah0B,KAAKk0D,SAAW,IAElB1sD,OACA4wD,GAAcp4D,KAAKw5D,OAEnBx5D,KAAKw5D,OAIpBvsD,IAAK,SAAS67C,GACV,OAAO9oD,KAAK48D,OAAO58D,KAAKq5D,MAAM7xD,OAAQshD,IAG1C+T,gBAAiB,SAAS/T,GACtB,OAAI9oD,KAAKk7D,OAAOpS,MACL,IAAI9oD,KAAKk7D,OAAOpS,MAAMA,GAG7BA,aAAiBuC,EACVvC,EAGJ,IAAIuC,EAAiBvC,IAGhC8T,OAAQ,SAAS7jD,EAAO+vC,GAkBpB,OAjBKA,IACDA,EAAQ/vC,EACRA,EAAQ,GAGN+vC,aAAiBI,KACnBJ,EAAQ9oD,KAAK68D,gBAAgB/T,IAG7B9oD,KAAK+7D,mBACL/7D,KAAKq5D,MAAM7uD,OAAOuO,EAAO,EAAG/Y,KAAK88D,kBAAkBhU,IAEnD9oD,KAAKq5D,MAAM7uD,OAAOuO,EAAO,EAAG+vC,GAGhC9oD,KAAK+8D,oBAAoBhkD,EAAO+vC,GAEzBA,GAGXkU,WAAY,SAASjkD,EAAOqb,GACxB,IACI6oC,EADOj9D,KACUk9D,uBAEhB9oC,IACDA,EAAQrb,EACRA,EAAQ,GAGP9V,EAAQmxB,KACTA,EAAQ,CAACA,IAGb,IAAI+oC,EAAS,GACTC,EAAWp9D,KAAKkH,QAAQk2D,SAC5Bp9D,KAAKkH,QAAQk2D,UAAW,EAExB,IACI,IAAK,IAAIxzD,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAAQ,CAC1C,IAAIolC,EAAO5a,EAAMxqB,GAEb2M,EAASvW,KAAK48D,OAAO7jD,EAAOi2B,GAEhCmuB,EAAOx7D,KAAK4U,GAEZ,IAAI8mD,EAAW9mD,EAAO3E,SAElB5R,KAAK+7D,qBACLsB,EAAWr9D,KAAK88D,kBAAkBO,IAGtCr9D,KAAKs5D,cAAc33D,KAAK07D,GAEpBJ,GAAaA,EAAUz1D,QACvB7E,EAAEs6D,GAAW96B,OAAO,GAAGm7B,aAAa37D,KAAK07D,GAG7CtkD,KAEN,QACE/Y,KAAKkH,QAAQk2D,SAAWA,EAGxBD,EAAO31D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,SACN0uB,MAAO+oC,KAKnB5C,WAAY,SAASnmC,GACjBp0B,KAAKg9D,WAAWh9D,KAAKq5D,MAAM7xD,OAAQ4sB,IAGvCqmC,WAAY,SAASrmC,GACZnxB,EAAQmxB,KACTA,EAAQ,CAACA,IAKb,IAFA,IAAI+oC,EAAS,GAEJvzD,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAAQ,CAC1C,IAAIolC,EAAO5a,EAAMxqB,GACbk/C,EAAQ9oD,KAAK68D,gBAAgB7tB,GAE7B1nC,EAAStH,KAAKuvB,IAAIu5B,EAAMn5B,IAExBroB,GACA61D,EAAOx7D,KAAK2F,GAEZA,EAAOknD,OAAOxf,GAEd1nC,EAAO8C,QAAQ0yC,GAEf98C,KAAKu9D,wBAAwBj2D,EAAQ0nC,IAErChvC,KAAKu6D,WAAWvrB,GAIpBmuB,EAAO31D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,SACN0uB,MAAO+oC,KAKnBxC,YAAa,SAASvmC,GAClB,IAAI+oC,EAASn9D,KAAKw9D,aAAappC,GAE3B+oC,EAAO31D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,UACN0uB,MAAO+oC,KAKnBK,aAAc,SAASC,EAAeC,GAC7Bz6D,EAAQw6D,KACTA,EAAgB,CAACA,IAGrB,IAAIE,OAAiD,IAAnBD,GAAiCA,EAE/DhW,EAAY,GACZ0V,EAAWp9D,KAAKkH,QAAQk2D,SAC5Bp9D,KAAKkH,QAAQk2D,UAAW,EACxB,IACI,IAAK,IAAIxzD,EAAM,EAAGA,EAAM6zD,EAAcj2D,OAAQoC,IAAQ,CAClD,IAAIolC,EAAOyuB,EAAc7zD,GACrBk/C,EAAQ9oD,KAAK68D,gBAAgB7tB,GAC7B4uB,GAAQ,EACR7kD,EAAQnP,EAEZ5J,KAAK69D,UAAU79D,KAAKq5D,OAAO,SAASjlC,GAE5Brb,IAAU0kD,EAAcj2D,OAAS,GACjC4sB,EAAM43B,iBAAkB,EACxB53B,EAAM83B,UAAY,IAElB93B,EAAM43B,iBAAkB,EAG5B,IAAK,IAAIpiD,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAAO,CACzC,IAAIolC,EAAO5a,EAAMq3B,GAAG7hD,GACpB,GAAIolC,EAAKrf,KAAOm5B,EAAMn5B,GAAI,CAGlByE,EAAM43B,iBACN53B,EAAM83B,UAAUvqD,KAAKqtC,GAEzB0Y,EAAU/lD,KAAKqtC,GACf5a,EAAM5pB,OAAOZ,EAAK,GAClBg0D,GAAQ,EACR,WAKRA,GAASD,IACT39D,KAAK89D,wBAAwBhV,GAC7B9oD,KAAK05D,WAAWrqC,QAG1B,QACErvB,KAAKkH,QAAQk2D,SAAWA,EAG5B,OAAO1V,GAGXqW,SAAU,SAAShlD,EAAOqb,GACtB,IAAI+oC,EAASn9D,KAAKg+D,WAAWjlD,EAAOqb,GAEhC+oC,EAAO31D,QACPxH,KAAKoK,QAAQ,OAAQ,CACjB1E,KAAM,SACN0uB,MAAO+oC,KAKnBa,WAAY,SAASjlD,EAAOqb,GACnBnxB,EAAQmxB,KACTA,EAAQ,CAACA,IAGb,IAAI6pC,EAAQ,GACRb,EAAWp9D,KAAKkH,QAAQk2D,SAC5Bp9D,KAAKkH,QAAQk2D,UAAW,EAExB,IACI,IAAK,IAAI71D,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAM,CACpC,IAAIynC,EAAO5a,EAAM7sB,GACbuhD,EAAQ9oD,KAAK68D,gBAAgB7tB,GAEjChvC,KAAK69D,UAAU79D,KAAKq5D,OAAO,SAAStlC,GAChC,IAAK,IAAInqB,EAAM,EAAGA,EAAMmqB,EAAUvsB,OAAQoC,IAAO,CAC7C,IAAIyqB,EAAWN,EAAU03B,GAAG7hD,GAC5B,GAAIyqB,EAAS1E,KAAOm5B,EAAMn5B,GAAI,CAC1BsuC,EAAMt8D,KAAK0yB,GACXN,EAAUvpB,OAAOuO,GAASnP,IAAQmP,EAAQA,EAAO,EAAGgb,EAAUvpB,OAAOZ,EAAK,GAAG,IAC7EmP,IACA,YAKlB,QACE/Y,KAAKkH,QAAQk2D,SAAWA,EAG5B,OAAOa,GAGXlnC,OAAQ,SAAS+xB,GACb,IAAIvyC,EACAtO,EAAOjI,KACPk+D,EAAYj2D,EAAK8zD,mBAgBrB,OAdImC,IAAapV,EAAMuE,KAASvE,EAAM2F,OAAU3F,EAAM2F,SAClDxmD,EAAKk2D,iBAAiBrV,GAG1B9oD,KAAK69D,UAAU51D,EAAKoxD,OAAO,SAASjlC,GAGhC,GAFA7d,EA9nBZ,SAAqB1I,EAAMi7C,GACvB,GAAKj7C,EAAL,CAGA,IACIwmB,EACAzqB,EAFApC,EAASqG,EAAKrG,OAIlB,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAGxB,IAFAyqB,EAAWxmB,EAAKjE,IAEHyjD,KAAOh5B,EAASg5B,KAAOvE,EAAMuE,IAEtC,OADAx/C,EAAKrD,OAAOZ,EAAK,GACVyqB,GAinBE+pC,CAAYhqC,EAAO00B,GAExBvyC,GAAU2nD,EACV,OAAO,KAIfl+D,KAAKq+D,uBAAuBvV,GAErBA,GAGXpB,UAAW,WACP,OAAO1nD,KAAK05D,YAGhB/R,QAAS,WACL,IAAI/9C,EACApC,EACA+O,EAAS,GACT1I,EAAO7N,KAAKo8D,UAAUp8D,KAAKq5D,MAAOr5D,KAAKkH,QAAQm1D,WAEnD,IAAKzyD,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC1CiE,EAAKjE,GAAK6kD,OAAS5gD,EAAKjE,GAAK6kD,UAAY5gD,EAAKjE,GAAK00D,YACnD/nD,EAAO5U,KAAKkM,EAAKjE,IAGzB,OAAO2M,GAGXkxC,QAAS,WACL,IAAI79C,EACApC,EACA+O,EAAS,GACT1I,EAAO7N,KAAKo8D,UAAUp8D,KAAKq5D,MAAOr5D,KAAKkH,QAAQm1D,WAEnD,IAAKzyD,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IACzCiE,EAAKjE,GAAK6kD,QAAU5gD,EAAKjE,GAAK6kD,SAAY5gD,EAAKjE,GAAKglC,OACrDr4B,EAAO5U,KAAKkM,EAAKjE,IAGzB,OAAO2M,GAGXqlD,KAAM,WACF,IAAI3zD,EAAOjI,KACP2nD,EAAU,GACVF,EAAU,GACVC,EAAYz/C,EAAKyxD,WAEjBzyC,EAAUtkB,EAAEqpC,WAAW2J,UAAU1uB,UAErC,GAAIhf,EAAK0zD,SAAU,CAEf,IAAK1zD,EAAKizD,OAAOpS,MACb,OAAO7hC,EAGX0gC,EAAU1/C,EAAK0/C,UACfF,EAAUx/C,EAAKw/C,UAEf,IAAI8W,EAAW,GAEXt2D,EAAKf,QAAQkgD,OAASn/C,EAAKu9C,UAAUpY,OACrCmxB,EAAWt2D,EAAKu2D,YAAY7W,EAASF,EAASC,IAE9C6W,EAAS58D,KAAKyG,MAAMm2D,EAAUt2D,EAAKw2D,MAAM,SAAU9W,IACnD4W,EAAS58D,KAAKyG,MAAMm2D,EAAUt2D,EAAKw2D,MAAM,SAAUhX,IACnD8W,EAAS58D,KAAKyG,MAAMm2D,EAAUt2D,EAAKw2D,MAAM,UAAW/W,KAGxDzgC,EAAUtkB,EAAE+7D,KACVt2D,MAAM,KAAMm2D,GACZI,MAAK,WACH,IAEI/0D,EAAKpC,EAFLJ,EAAcC,UAIlB,IAAKuC,EAAM,EAAGpC,EAASH,UAAUG,OAAQoC,EAAMpC,EAAQoC,IAC/CxC,EAAYwC,IACZ3B,EAAK22D,QAAQx3D,EAAYwC,IAIjC3B,EAAKu0D,YAAW,GAEhBv0D,EAAK42D,WAEL52D,EAAK62D,QAAQ,CAAE9xB,OAAQ,SAEvB/kC,EAAKmC,QAAQsgD,GAETziD,EAAK+zD,uBACL/zD,EAAK68C,eAIb78C,EAAKu0D,YAAW,GAEhBv0D,EAAK42D,WAEL52D,EAAK62D,QAAQ,CAAE9xB,OAAQ,SAG3B,OAAO/lB,GAGX43C,SAAU17D,EAEV47D,cAAe,SAASjW,GACpB,IAAI7gD,EAAOjI,KAEP8oD,aAAiBnoD,EAAMkN,KAAKq7C,MAC5BjhD,EAAK+2D,aAAalW,IAElB7gD,EAAKyxD,WAAa,GAClBzxD,EAAKkzD,2BACLlzD,EAAKoxD,MAAQpxD,EAAKmzD,SAASnzD,EAAKqxD,eAC5BrxD,EAAKf,QAAQq0D,eACbtzD,EAAKiyD,OAASjyD,EAAKwxD,gBAGvBxxD,EAAKsxD,QAAU,GACftxD,EAAKw0D,UAAUx0D,EAAKoxD,MAAO,GAE3BpxD,EAAKg3D,mBAELh3D,EAAK62D,UAEL72D,EAAKi3D,6BAEDj3D,EAAK8zD,oBACL9zD,EAAK68C,SAKjBma,iBAAkB97D,EAElB+7D,2BAA4B,WACxB,IAAIj3D,EAAOjI,KAEwB,MAA/BiI,EAAKf,QAAQ2zD,gBACb5yD,EAAK41D,UAAU51D,EAAKoxD,OAAO,SAASjlC,GAChC,IAAK,IAAIxqB,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAAO,CACzC,IAAIolC,EAAO5a,EAAMq3B,GAAG7hD,GACE,UAAlBolC,EAAKmwB,WAA2C,UAAlBnwB,EAAKmwB,YACnCnwB,EAAKJ,OAAQ,QAOjCwwB,WAAY,WACR,IAAIx1D,EACApC,EACAqG,EAAO7N,KAAKo8D,UAAUp8D,KAAKq5D,MAAOr5D,KAAKkH,QAAQm1D,WAEnD,GAAIr8D,KAAK05D,WAAWlyD,OAChB,OAAO,EAGX,IAAKoC,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9C,GAAKiE,EAAKjE,GAAK6kD,OAAS5gD,EAAKjE,GAAK6kD,SAAY5gD,EAAKjE,GAAKglC,MACpD,OAAO,EAIf,OAAO,GAGXgwB,QAAS,SAASroD,GACd,IAOI/O,EAPAS,EAAOjI,KACP0oD,EAASnyC,EAAOmyC,OAChBV,EAAWzxC,EAAOyxC,SAClBp+C,EAAM,EACNy1D,EAAcp3D,EAAK8zD,mBACnBsB,EAAWp1D,EAAKqxD,cAChB5zD,EAAO6Q,EAAO7Q,KAKlB,GAFAuC,EAAKmC,QAAQ2gD,EAAY,CAAE/C,SAAUA,EAAUtiD,KAAMA,IAEjDsiD,IAAapyB,EAAcoyB,GAAW,CAGtC,GAFAA,EAAW//C,EAAKizD,OAAOlmC,MAAMgzB,GAEzB//C,EAAKq3D,oBAAoBtX,GACzB,OAGJA,EAAW//C,EAAKizD,OAAOrtD,KAAKm6C,GAEvB/kD,EAAQ+kD,KACTA,EAAW,CAACA,SAGhBA,EAAWrlD,EAAE2X,IAAIouC,GAAQ,SAASI,GAAS,OAAOA,EAAMl3C,YAO5D,IAJa,YAATlM,IACAuC,EAAKyxD,WAAa,IAGjB9vD,EAAM,EAAGpC,EAASkhD,EAAOlhD,OAAQoC,EAAMpC,EAAQoC,IACnC,YAATlE,GACAgjD,EAAO9+C,GAAK4kD,OAAOxG,EAASp+C,IAEf,WAATlE,EACA23D,EAAS17D,KAAK09D,EAAcp3D,EAAK60D,kBAAkBpU,EAAO9+C,GAAKgI,UAAYo2C,EAASp+C,IACpE,WAATlE,GACPuC,EAAKs1D,wBAAwB7U,EAAO9+C,GAAMo+C,EAASp+C,KAGvD3B,EAAK61D,wBAAwBpV,EAAO9+C,KAKhD2zD,wBAAyB,SAASzU,EAAOhwC,GACrC9Y,KAAKu/D,2BAA2BzW,GAAO,SAAS/vC,EAAOqb,GACnDzzB,EAAM6H,WAAW4rB,EAAMrb,GAAQD,OAIvCymD,2BAA4B,SAASzW,EAAO9/B,GACxChpB,KAAKw/D,mBACD,SAASprC,GACL,IAAIrb,EAAQ+/C,GAAqB1kC,EAAO00B,GACxC,GAAI/vC,GAAS,EAET,OADAiQ,EAASjQ,EAAOqb,IACT,MAKvB0pC,wBAAyB,SAAShV,GAC9B9oD,KAAKu/D,2BAA2BzW,GAAO,SAAS/vC,EAAOqb,GACnDA,EAAM5pB,OAAOuO,EAAO,OAI5BojD,UAAW,SAAStuD,GAEhB,OADY7N,KAAK+7D,mBAAwC/7D,KAAKk7D,OAAO1xB,OAA/BxpC,KAAKk7D,OAAOrtD,MACtCtD,KAAKvK,KAAKk7D,OAAQrtD,IAGlC2xD,kBAAmB,SAASx2C,GACxB,IAAI/gB,EAAOjI,KACPkH,EAAUe,EAAKf,QACf+1D,EAAYh1D,EAAKi1D,uBAErBj1D,EAAK41D,UAAU51D,EAAKqxD,cAAetwC,GAE/B9hB,EAAQq0D,cAAgBr0D,EAAQm1D,WAChCr5D,EAAKi6D,GAAW,SAAS11D,EAAGqsD,GACxB3rD,EAAK41D,UAAUjK,EAAM0J,aAAct0C,OAKhD60C,UAAW,SAAShwD,EAAMmb,GACjBnb,GAAQA,EAAKrG,SACTxH,KAAK+7D,mBACLzD,GAAezqD,EAAMmb,GAErBA,EAASnb,KAKrB4xD,kBAAmB,SAAS3W,GACxB,IAAIuU,EACAzzD,EAWJ,OAFA5J,KAAKw/D,mBARU,SAASprC,GAEhB,IADAxqB,EAAMkvD,GAAqB1kC,EAAO00B,KACvB,EAEP,OADAuU,EAAWjpC,EAAMxqB,IACV,KAMZyzD,GAGX2B,aAAc,SAASlW,GACnB,IAAI7gD,EAAOjI,KACPq9D,EAAWr9D,KAAKy/D,kBAAkB3W,GAEtC9oD,KAAK69D,UAAU79D,KAAKq5D,OAAO,SAASjlC,GAChC,IAAIxqB,EAAMmvD,GAAa3kC,EAAO00B,GAC1Bl/C,GAAO,KACHyzD,GAAcvU,EAAM2F,UAAW4O,EAAS8B,WAQxCl3D,EAAKy3D,eAAe5W,GAEpB10B,EAAM5pB,OAAOZ,EAAK,GAElB3B,EAAKo2D,uBAAuBvV,KAX5B10B,EAAMxqB,GAAK4kD,OAAO6O,GAEQ,UAAtBA,EAAS8B,YACT/qC,EAAMxqB,GAAKglC,OAAQ,SAcvC8wB,eAAgBv8D,EAEhBw8D,QAAS,SAASpB,EAAU1wD,GACxB,IAAI5F,EAAOjI,KAEXiI,EAAKmC,QAAQygD,EAAc,CAAEnlD,KAAM,WAEnCuC,EAAKmC,QAAQ0gD,GAEb7iD,EAAKu9C,UAAUpY,OAAOrqC,EAAO,CACzBglD,QAAS,SAASC,EAAUtiD,GACxB,IAAIuhB,EAAUtkB,EAAEu7B,KAAKqgC,GAAU,SAASn5D,GACpC,OAAOA,EAAEM,MAAQA,KAClB,GAECuhB,GACAA,EAAQ0uB,QAAQ,CACZqS,SAAUA,EACVU,OAAQzhC,EAAQyhC,OAChBhjD,KAAMA,KAIlBqoB,MAAO,SAASi6B,EAAUI,EAAQr6B,GAC9B,IAAK,IAAInkB,EAAM,EAAGA,EAAM20D,EAAS/2D,OAAQoC,IACrC20D,EAAS30D,GAAKg2D,OAAO5X,GAGzB//C,EAAK8lB,MAAMi6B,EAAUI,EAAQr6B,KAElClgB,KAGP2wD,YAAa,SAAS7W,EAASF,EAASC,GACpC,IAAIz/C,EAAOjI,KACPu+D,EAAW,GAiCf,OA/BIt2D,EAAKf,QAAQkgD,QACTO,EAAQngD,QACR+2D,EAAS58D,KAAKgB,EAAEqpC,UAAS,SAASD,GAC9BA,EAASrmC,KAAO,SAChBqmC,EAAS2c,OAASf,MAItBF,EAAQjgD,QACR+2D,EAAS58D,KAAKgB,EAAEqpC,UAAS,SAASD,GAC9BA,EAASrmC,KAAO,SAChBqmC,EAAS2c,OAASjB,MAItBC,EAAUlgD,QACV+2D,EAAS58D,KAAKgB,EAAEqpC,UAAS,SAASD,GAC9BA,EAASrmC,KAAO,UAChBqmC,EAAS2c,OAAShB,MAI1Bz/C,EAAK03D,QAAQpB,EAAU,CACnB1wD,KAAM,CACF85C,QAAS1/C,EAAKizD,OAAOlS,UAAUp3C,GAAO+1C,IACtCF,QAASx/C,EAAKizD,OAAOlS,UAAUp3C,GAAO61C,IACtCC,UAAWz/C,EAAKizD,OAAOlS,UAAUp3C,GAAO81C,QAK7C6W,GAGXsB,SAAU,SAAShyD,EAAM66C,EAAQhjD,GAC7B,IAAIuC,EAAOjI,KAEX,OAAO2C,EAAEqpC,UAAS,SAASD,GACvB9jC,EAAKmC,QAAQygD,EAAc,CAAEnlD,KAAMA,IAEnCuC,EAAKmC,QAAQ0gD,GAEb7iD,EAAKu9C,UAAU9/C,GAAM6E,KAAKtC,EAAKu9C,UAAWziD,EAAO,CAC7CglD,QAAS,SAASC,GACdjc,EAAS4J,QAAQ,CACbqS,SAAUA,EACVU,OAAQA,EACRhjD,KAAMA,KAGdqoB,MAAO,SAASi6B,EAAUI,EAAQr6B,GAC9Bge,EAAS6zB,OAAO5X,GAChB//C,EAAK8lB,MAAMi6B,EAAUI,EAAQr6B,KAElClgB,OACJoZ,WAGPw3C,MAAO,SAASrnC,EAAQvpB,GACpB,IACIjE,EACApC,EAFAS,EAAOjI,KAGPu+D,EAAW,GACXuB,EAAY73D,EAAKizD,OAAOlS,UAAUp3C,GAAO/D,IAE7C,GAAI5F,EAAKf,QAAQkgD,MACTv5C,EAAKrG,QACL+2D,EAAS58D,KAAKsG,EAAK43D,SAAU,CAAEhyD,KAAM,CAAE66C,OAAQoX,IAAejyD,EAAOupB,SAGzE,IAAKxtB,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9C20D,EAAS58D,KAAKsG,EAAK43D,SAAU,CAAEhyD,KAAMiyD,EAAUl2D,IAAQ,CAAEiE,EAAKjE,IAAQwtB,IAI9E,OAAOmnC,GAGXzZ,KAAM,SAASj3C,GACX,IAAI5F,EAAOjI,KAAMskC,EAASr8B,EAAK83D,QAAQlyD,GACnCk+B,EAAWppC,EAAEqpC,WAsCjB,OApCA/jC,EAAK+3D,cAAc17B,GAAQ,WACvB,IAAI27B,EAAch4D,EAAKmC,QAAQygD,EAAc,CAAEnlD,KAAM,SAChDu6D,GA4BDh4D,EAAKi4D,kBAELn0B,EAAS4J,QAAQsqB,KA7BjBh4D,EAAKmC,QAAQ0gD,GAEb7iD,EAAKsxD,QAAU,GACftxD,EAAKmC,QAAQ,SACTnC,EAAK0zD,SACL1zD,EAAKu9C,UAAUV,KAAK,CAChBj3C,KAAMy2B,EACNyjB,QAAS,SAASl6C,GACd5F,EAAKsxD,QAAU,GACftxD,EAAK8/C,QAAQl6C,EAAMy2B,GAEnByH,EAAS4J,WAEb5nB,MAAO,WACH,IAAIoJ,EAAOvwB,EAAM2D,KAAKlD,WAEtBY,EAAK8lB,MAAM3lB,MAAMH,EAAMkvB,GAEvB4U,EAAS6zB,OAAOx3D,MAAM2jC,EAAU5U,MAGF,MAA/BlvB,EAAKf,QAAQ2zD,iBACpB5yD,EAAK8/C,QAAQ9/C,EAAK4zD,cAAev3B,GAEjCyH,EAAS4J,eASd5J,EAAS9kB,WAGpBk5C,gBAAiB,SAAStyD,GACtB,OAAO7N,KAAKk7D,OAAOtI,WAAW/kD,IAGlCk6C,QAAS,SAASl6C,GACd,IAEIumB,EACAgsC,EAHAn4D,EAAOjI,KACPkH,EAAUe,EAAKf,QAMnB,GAFAe,EAAKmC,QAAQ2gD,EAAY,CAAE/C,SAAUn6C,EAAMnI,KAAM,SAE7CuC,EAAK0zD,SAAU,CAGf,GAFA9tD,EAAO5F,EAAKizD,OAAOlmC,MAAMnnB,GAErB5F,EAAKq3D,oBAAoBzxD,GAEzB,YADA5F,EAAKi4D,kBAITj4D,EAAKiyD,OAASjyD,EAAKizD,OAAOtU,MAAM/4C,GAE5B5F,EAAK+zD,wBACL/zD,EAAKo4D,mBAAqBp4D,EAAKiyD,QAG/BjyD,EAAK0xD,UAAY1xD,EAAKiyD,SACtBjyD,EAAK0xD,UAAY1xD,EAAKiyD,OAClBjyD,EAAKf,QAAQ+8C,UAAYh8C,EAAKf,QAAQ+8C,SAAWh8C,EAAK0xD,YACtD1xD,EAAK0xD,UAAY1xD,EAAKf,QAAQ+8C,WAIlCh8C,EAAKgyD,YAAc/yD,EAAQu0D,mBAC3BxzD,EAAKq4D,iBAAmBr4D,EAAKk4D,gBAAgBtyD,IAGjDA,EAAO5F,EAAKk0D,UAAUtuD,GAEtB5F,EAAKyxD,WAAa,OACf,CACH7rD,EAAO5F,EAAKk0D,UAAUtuD,GAEtBumB,EAAQ,GACR,IAGIxqB,EAHA22D,EAAU,GACVzX,EAAQ7gD,EAAKizD,OAAOpS,MACpBK,EAAUL,EAAQA,EAAMK,QAAU,KAGtC,IAAKv/C,EAAM,EAAGA,EAAM5J,KAAK05D,WAAWlyD,OAAQoC,IAAO,CAC/C,IAAI+lB,EAAK3vB,KAAK05D,WAAW9vD,GAAKu/C,GAC9BoX,EAAQ5wC,GAAMA,EAGlB,IAAK/lB,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IAAO,CACpC,IAAIolC,EAAOnhC,EAAKjE,GAEH,WADDolC,EAAKmwB,UAERoB,EAAQvxB,EAAKma,KACdnpD,KAAKm+D,iBAAiBn+D,KAAK68D,gBAAgB7tB,IAG/C5a,EAAMzyB,KAAKqtC,GAInBnhC,EAAOumB,EAEPnsB,EAAKiyD,OAASrsD,EAAKrG,OAMvB,GAHAS,EAAKwxD,eAAiBxxD,EAAKiyD,OAC3BkG,EAAgBn4D,EAAKu4D,OAASv4D,EAAKoxD,MAAM7xD,QAAUS,EAAKu4D,MAAQv4D,EAAKoxD,MAAM7xD,OAEvES,EAAKf,QAAQu5D,QAAS,CAClBL,GACAn4D,EAAKqxD,cAAc9uD,OAAOvC,EAAKu4D,MAAOv4D,EAAKqxD,cAAc9xD,QAE7D4sB,EAAQvmB,EAAKjH,MAAM,GACnB,IAAK,IAAI+jC,EAAI,EAAGA,EAAIvW,EAAM5sB,OAAQmjC,IAC9B1iC,EAAKqxD,cAAc33D,KAAKyyB,EAAMuW,SAGlC1iC,EAAKqxD,cAAgBzrD,EAAKjH,MAAM,GAKpC,GAFAqB,EAAKkzD,2BAEDlzD,EAAKf,QAAQu5D,QAAS,CACtBx4D,EAAKoxD,MAAMpvD,OAAO6yC,EAAQ70C,EAAKy4D,gBAE3Bz4D,EAAK8zD,oBAAsB9zD,EAAKoxD,MAAMpxD,EAAKoxD,MAAM7xD,OAAS,GAAGkB,QAAUmF,EAAK,GAAGnF,QAC/E8uD,GAAcvvD,EAAKoxD,MAAMpxD,EAAKoxD,MAAM7xD,OAAS,GAAIqG,EAAK,IACtDA,EAAKgI,SAGThI,EAAO5F,EAAKmzD,SAASvtD,GACjBuyD,GACAn4D,EAAKoxD,MAAM7uD,OAAOvC,EAAKu4D,MAAOv4D,EAAKoxD,MAAM7xD,QAE7C,IAAK,IAAID,EAAI,EAAGA,EAAIsG,EAAKrG,OAAQD,IAC7BU,EAAKoxD,MAAM13D,KAAKkM,EAAKtG,IAEzBU,EAAKoxD,MAAM7vD,KAAKszC,EAAQ70C,EAAKy4D,qBAE7Bz4D,EAAKoxD,MAAQpxD,EAAKmzD,SAASvtD,GAG/B5F,EAAKi3D,6BAELj3D,EAAKu0D,aAELv0D,EAAKw0D,UAAUx0D,EAAKoxD,OAEpBpxD,EAAKy0D,SAASz0D,EAAKoxD,OAEnBpxD,EAAKi4D,mBAGT/E,yBAA0B,WACtB,GAAIn7D,KAAKq5D,OAASr5D,KAAKq6D,+BACnB,IAAK,IAAIzwD,EAAM,EAAGA,EAAM5J,KAAKq5D,MAAM7xD,OAAQoC,IACnC5J,KAAKq5D,MAAMzvD,GAAKuC,SAChBnM,KAAKq5D,MAAMzvD,GAAKuC,OAAShJ,IAMzCq5D,WAAY,SAASmE,GACjB,IAAI/H,EAAiB54D,KAAK+7D,mBACtBjT,EAAQ9oD,KAAKk7D,OAAOpS,MA4BxB,GAAmC,MAA/B9oD,KAAKkH,QAAQ2zD,eAAwB,CAKrC,IAJA,IAAI5H,EA3BR,SAAS7+B,EAAMvmB,GAGX,IAFA,IAAIolD,EAAQ,GAEHrpD,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IAAO,CACxC,IAAIyqB,EAAWxmB,EAAK49C,GAAG7hD,GACnBolC,EAAO3a,EAASziB,SAEhBgnD,GAAkBvkC,EAASD,MAC3B4a,EAAK5a,MAAQA,EAAMC,EAASD,QAE5B4a,EAAKqe,IAAMh5B,EAASg5B,IAEhBvE,IACIz0B,EAASo6B,QACTzf,EAAKmwB,UAAY,SACV9qC,EAASua,QAChBI,EAAKmwB,UAAY,YAI7BlM,EAAMtxD,KAAKqtC,GAGf,OAAOikB,EAIK7+B,CAAMp0B,KAAKq5D,OAEnB3R,EAAY,GAEP99C,EAAM,EAAGA,EAAM5J,KAAK05D,WAAWlyD,OAAQoC,IAAO,CACnD,IAAIolC,EAAOhvC,KAAK05D,WAAW9vD,GAAKgI,SAChCo9B,EAAKmwB,UAAY,UACjBzX,EAAU/lD,KAAKqtC,GAGnBhvC,KAAK67D,YAAY5I,EAAM51C,OAAOqqC,IAE1BiZ,IACA3gE,KAAKs5D,cAAgBt5D,KAAKk7D,OAAOA,OAASl7D,KAAKk7D,OAAOA,OAAO3D,oBAAoBtE,GAASjzD,KAAKk7D,OAAO3D,oBAAoBtE,MAKtIwJ,UAAW,SAAS5uD,EAAM42C,GACtB,IAEI94C,EAFA1D,EAAOjI,KACPsV,OAA0B,IAAX,EAAyBmvC,EAAQx8C,EAAKu4D,OAAS,EAE9D5M,EAAQ,CACJ/lD,KAAMA,EACNyvD,aAAczvD,EAAK+D,SACnBgvD,UAAW34D,EAAK44D,cAGpB7gE,KAAKi8D,iBACLtwD,EAAM2J,EAAQzH,EAAKrG,OACnBosD,EAAMkN,WAAaxrD,EACnBs+C,EAAMmN,SAAWp1D,GAEjBA,EAAM2J,EAAQrN,EAAKm0D,UAAUvuD,GAAM,GAAMrG,OAG7CosD,EAAMt+C,MAAQA,EACds+C,EAAMjoD,IAAMA,EACZ1D,EAAKsxD,QAAQ53D,KAAKiyD,GAClB3rD,EAAK+4D,cAED/4D,EAAKg0D,kBACAh0D,EAAKg5D,cACNh5D,EAAKg5D,YAAc,IAEvBh5D,EAAKi5D,oBAAoBtN,EAAM/lD,MAC/B5F,EAAKk5D,6BAIbD,oBAAqB,SAASrzD,GAG1B,IAFA,IAAIrG,EAASqG,EAAKrG,OAETD,EAAI,EAAGA,EAAIC,EAAQD,IACxBvH,KAAKihE,YAAYt/D,KAAKkM,EAAKtG,KAInC65D,eAAgB,SAAS/T,GAIrB,IAHA,IACI6G,EADA1sD,EAASxH,KAAKihE,YAAYz5D,OAGrBD,EAAI,EAAGA,EAAIC,EAAQD,IAExB,IADA2sD,EAAQl0D,KAAKihE,YAAY15D,IACf8lD,MAAQA,EACd,OAAO6G,GAKnB8M,YAAa,WACThhE,KAAKu5D,QAAQr0C,MAAK,SAAS9f,EAAGjB,GAC1B,OAAOiB,EAAEkQ,MAAQnR,EAAEmR,UAI3ByY,MAAO,SAASszC,EAAKjZ,EAAQkZ,GACzBthE,KAAKkgE,kBACLlgE,KAAKoK,QAAQ2gD,EAAY,IACzB/qD,KAAKoK,QAAQwgD,EAAO,CAAEyW,IAAKA,EAAKjZ,OAAQA,EAAQkZ,YAAaA,KAGjEvB,QAAS,SAASlyD,GACd,IAAI5F,EAAOjI,KACPkH,EAAUnE,EAAO,CACb4hD,KAAM18C,EAAK08C,OACXF,KAAMx8C,EAAKw8C,OACXP,KAAMj8C,EAAKi8C,OACXD,SAAUh8C,EAAKg8C,WACf/+B,KAAMjd,EAAK4xD,MACX5jC,OAAQhuB,EAAK8xD,QACb7F,MAAOjsD,EAAK+xD,OACZ5G,UAAWnrD,EAAKgyD,WAChB7F,cAAensD,EAAKkyD,cACrBtsD,GAqCP,OAnCK5F,EAAKf,QAAQq0D,sBACPr0D,EAAQy9C,YACRz9C,EAAQu9C,YACRv9C,EAAQg9C,YACRh9C,EAAQ+8C,UAGdh8C,EAAKf,QAAQ0xD,eAEP3wD,EAAKizD,OAAOpS,OAAS5hD,EAAQgtD,QACpChtD,EAAQgtD,MAAQgF,GAAwBhyD,EAAQgtD,MAAOjsD,EAAKizD,OAAOpS,eAF5D5hD,EAAQgtD,MAKdjsD,EAAKf,QAAQs0D,gBAEPvzD,EAAKizD,OAAOpS,OAAS5hD,EAAQ+uB,SACrC/uB,EAAQ+uB,OAASgjC,GAA8B/xD,EAAQ+uB,OAAQhuB,EAAKizD,OAAOpS,eAFnE5hD,EAAQ+uB,OAKdhuB,EAAKf,QAAQo0D,cAEPrzD,EAAKizD,OAAOpS,OAAS5hD,EAAQge,OACpChe,EAAQge,KAAOg0C,GAAwBhyD,EAAQge,KAAMjd,EAAKizD,OAAOpS,eAF1D5hD,EAAQge,KAKdjd,EAAKf,QAAQu0D,iBAEPxzD,EAAKizD,OAAOpS,OAAS5hD,EAAQksD,YACpClsD,EAAQksD,UAAY8F,GAAwBhyD,EAAQksD,UAAWnrD,EAAKizD,OAAOpS,eAFpE5hD,EAAQksD,UAKdnrD,EAAKf,QAAQktD,oBACPltD,EAAQktD,YAGZltD,GAGX84D,cAAe,SAAS94D,EAAS8hB,GAC7B,IAAI/gB,EAAOjI,KACNiI,EAAKs5D,mBAKNt5D,EAAKu5D,SAAW,CAAEx4C,SAAUA,EAASxf,KAAKvB,GAAOf,QAASA,IAJ1De,EAAKs5D,oBAAqB,EAC1Bt5D,EAAKu5D,SAAW5+D,EAChBomB,MAMRk3C,gBAAiB,WACb,IAAIj4D,EAAOjI,KACXiI,EAAKs5D,oBAAqB,EACtBt5D,EAAKu5D,UACLv5D,EAAK+3D,cAAc/3D,EAAKu5D,SAASt6D,QAASe,EAAKu5D,SAASx4C,WAIhEs2C,oBAAqB,SAAStX,GAC1B,GAAIhoD,KAAKk7D,OAAOnS,OAAQ,CACpB,IAAIA,EAAS/oD,KAAKk7D,OAAOnS,OAAOf,GAChC,GAAIe,EAEA,OADA/oD,KAAKoK,QAAQwgD,EAAO,CAAEyW,IAAK,KAAMjZ,OAAQ,cAAekZ,YAAa,eAAgBvY,OAAQA,KACtF,EAGf,OAAO,GAGX0Y,YAAa,SAAS5zD,GAClB,IAAIi7C,EAAQ9oD,KAAKk7D,OAAOpS,MAExB,SAAIA,IAASj7C,EAAKrG,WACLqG,EAAK,aAAci7C,IAMpCsS,SAAU,SAASvtD,GACf,IAAI5F,EAAOjI,KACP8oD,EAAQ7gD,EAAKizD,OAAOpS,OAExB7gD,EAAKoyD,gCAAiC,EAElCxsD,aAAgBD,IAChB3F,EAAKoyD,gCAAiC,EAClCpyD,EAAKw5D,YAAY5zD,KACjBA,EAAKnI,KAAOuC,EAAKizD,OAAOpS,MACxBj7C,EAAKy9C,QAAQz9C,EAAMA,MAIvBA,EAAO,IADS5F,EAAKg8C,aAAeh8C,EAAKf,QAAQq0D,aAAeztD,EAAsBF,GACjEC,EAAM5F,EAAKizD,OAAOpS,QAClC38C,OAAS,WAAa,OAAOlE,EAAKkE,UAc3C,OAXIlE,EAAK8zD,oBACL1D,GAAexqD,EAAMi7C,KAGrB7gD,EAAKy4D,gBAAkBz4D,EAAKoxD,OAASpxD,EAAKoxD,iBAAiBzrD,IACzD3F,EAAKf,QAAQm1D,WAAap0D,EAAKf,QAAQq0D,aAGzCtzD,EAAKy4D,eAAiBz4D,EAAK62D,QAAQt1D,KAAKvB,GAFxCA,EAAKoxD,MAAMpvD,OAAO6yC,EAAQ70C,EAAKy4D,gBAK5B7yD,EAAKrE,KAAKszC,EAAQ70C,EAAKy4D,iBAGlCgB,sBAAuB,SAAS10B,EAAQ5Y,GACpC,IAAInsB,EAAOjI,KAEP4mD,EAAQ3tC,SAAShR,EAAKiyD,OAAQ,IAE7BpF,GAAS7sD,EAAKiyD,UACftT,EAAQ3tC,SAAShR,EAAKwxD,eAAgB,KAE3B,QAAXzsB,EACA4Z,GAASxyB,EAAM5sB,OACG,WAAXwlC,EACP4Z,GAASxyB,EAAM5sB,OACG,eAAXwlC,GAAsC,SAAXA,GAAsB/kC,EAAKf,QAAQq0D,aAEnD,SAAXvuB,IACP4Z,EAAQ3+C,EAAKwxD,eAAiBxgD,SAAShR,EAAKiyD,OAAQ,KAFpDtT,EAAQ3+C,EAAKwxD,eAKjBxxD,EAAKiyD,OAAStT,GAGlBuX,iBAAkB,SAASrV,GACR9oD,KAAK05D,WAAW3jC,MAAK,SAASiZ,GACzC,OAAOA,EAAKqe,MAAQvE,EAAMuE,QAG1BrtD,KAAK05D,WAAW/3D,KAAKmnD,IAI7BgW,QAAS,SAASn6D,GACd,IAAiBiF,EAAKpC,EAAlBS,EAAOjI,KAAmBgtC,EAASroC,EAAIA,EAAEqoC,OAAS,GAEtD,GAAe,WAAXA,EACA,IAAKpjC,EAAM,EAAGpC,EAAS7C,EAAEyvB,MAAM5sB,OAAQoC,EAAMpC,EAAQoC,IAC5CjF,EAAEyvB,MAAMxqB,GAAK6kD,OAAU9pD,EAAEyvB,MAAMxqB,GAAK6kD,SACrCxmD,EAAKk2D,iBAAiBx5D,EAAEyvB,MAAMxqB,IAK1C,IAAI3B,EAAKf,QAAQk2D,UAAwB,QAAXpwB,GAA+B,WAAXA,GAAkC,eAAXA,EAcrE/kC,EAAKy5D,sBAAsB10B,EAAQroC,EAAIA,EAAEyvB,MAAQ,IAEjDnsB,EAAKy0D,SAASz0D,EAAKoxD,MAAO10D,OAhBqE,CAE/F,IAAImF,EAAU,SAASqtB,GACC,SAAhBA,EAAK6V,SACL/kC,EAAKgC,OAAO,SAAUH,GACtB7B,EAAKy5D,sBAAsB10B,EAAQroC,EAAEyvB,SAI7CnsB,EAAKiC,MAAM,SAAUJ,GAErB7B,EAAK2zD,SASb+F,qBAAsB,SAAS9zD,EAAM3G,GACjCA,EAAUA,GAAW,GAErB,IAAI1G,EAAQ,IAAIwvD,GAAMniD,GAClB+kD,EAAa1rD,EAAQksD,UACrBn9B,EAAS/uB,EAAQ+uB,OAMrB,OAJIA,IACAz1B,EAAQA,EAAMy1B,OAAOA,IAGlBz1B,EAAM4yD,UAAUR,IAG3B8J,SAAU,SAAS7uD,EAAMlJ,GACrB,IAEI4R,EAFAtO,EAAOjI,KACPkH,EAAU,GA8Cd,IA3CkC,IAA9Be,EAAKf,QAAQq0D,eACbr0D,EAAQu9C,KAAOx8C,EAAKu4D,MACpBt5D,EAAQy9C,KAAO18C,EAAK25D,OAAS35D,EAAK0xD,UAE9BzyD,EAAQu9C,OAAS7hD,GAAeqF,EAAK2xD,QAAUh3D,GAAeqF,EAAK0xD,YAAc/2D,IACjFsE,EAAQu9C,MAAQx8C,EAAK2xD,MAAQ,GAAK3xD,EAAK0xD,WAGvC1xD,EAAKf,QAAQm1D,YACbn1D,EAAQu9C,KAAOx8C,EAAK45D,uBAIO,IAA/B55D,EAAKf,QAAQo0D,gBACbp0D,EAAQge,KAAOjd,EAAK4xD,QAGa,IAAjC5xD,EAAKf,QAAQs0D,kBACbt0D,EAAQ+uB,OAAShuB,EAAK8xD,UAGU,IAAhC9xD,EAAKf,QAAQ0xD,iBACb1xD,EAAQgtD,MAAQjsD,EAAK+xD,SAGa,IAAlC/xD,EAAKf,QAAQu0D,mBACbv0D,EAAQksD,UAAYnrD,EAAKgyD,YAGzBhyD,EAAKf,QAAQ0xD,gBACb3wD,EAAK65D,kBAAkBj0D,GAG3B3G,EAAQktD,YAAcnsD,EAAKkyD,aAGvB5jD,EADAtO,EAAKg0D,iBAAmBt3D,IAAmB,SAAbA,EAAEqoC,QAAkC,gBAAbroC,EAAEqoC,QAAyC,kBAAbroC,EAAEqoC,QAC5E/kC,EAAK85D,cAAcl0D,EAAM,CAC9BulD,UAAWnrD,EAAKgyD,aAGXhyD,EAAK85D,cAAcl0D,EAAM3G,GAGlCe,EAAK8xD,SAAWp1D,GAAkB,QAAbA,EAAEqoC,OAAkB,CACzC,IAAI8b,EAAQnkD,EAAEyvB,MAAM,GAChB4tC,EAAazrD,EAAO1I,KAEpB5F,EAAK6zD,eAAiB97D,KAAK+7D,qBAC3BiG,EAAa5J,GAAc4J,IAGXA,EAAWjsC,MAAK,SAASiZ,GACzC,OAAOA,EAAKqe,MAAQvE,EAAMuE,SAI1B92C,EAAO1I,KAAKrD,OAAOs+C,EAAM/vC,MAAO,EAAG9Q,EAAK6zD,aAAe7zD,EAAK60D,kBAAkBhU,GAASA,GACvFvyC,EAAOqwC,UAIuB,IAAlC3+C,EAAKf,QAAQu0D,mBAGbxzD,EAAKq4D,iBAAmBr4D,EAAK05D,qBAAqBprD,EAAO0rD,iBAAmBp0D,EAAM3G,IAGtFe,EAAKi6D,SAAS3rD,EAAQrP,EAASvC,GAE/BsD,EAAKk6D,gBAAgB5rD,EAAOqwC,OAAO,IAEnCjiD,EAAIA,GAAK,IAEPyvB,MAAQzvB,EAAEyvB,OAASnsB,EAAKuxD,MAE1BvxD,EAAKmC,QAAQ0yC,EAAQn4C,IAGzBu9D,SAAU,SAAS3rD,EAAQrP,EAASvC,GAChC,IAAIsD,EAAOjI,KAEX,GAAIiI,EAAKg0D,kBAAoBh0D,EAAK8zD,mBAC9B,IAAIp3D,GAAmB,SAAbA,EAAEqoC,QAAkC,gBAAbroC,EAAEqoC,QAAyC,kBAAbroC,EAAEqoC,OAG1D,CACH/kC,EAAKsxD,QAAU,GACf,IAAI/4D,EAAQ,IAAIwvD,GAAMz5C,EAAO1I,MAC7B5F,EAAKw0D,UAAUx0D,EAAKmzD,SAAS7kD,EAAO1I,OAEhC3G,EAAQu9C,KAAOv9C,EAAQy9C,KAAOpuC,EAAO1I,KAAKrG,SAC1CN,EAAQu9C,KAAOluC,EAAO1I,KAAKrG,OAASN,EAAQy9C,MAGhD18C,EAAKyvB,KAAKl3B,EAAMozD,MAAM1sD,EAAQu9C,KAAMv9C,EAAQy9C,MAAMgP,gBAXlD1rD,EAAKyvB,KAAKnhB,EAAO1I,MACjB5F,EAAKk5D,gCAcTl5D,EAAKyvB,KAAKnhB,EAAO1I,OAIzBi0D,kBAAmB,SAASj0D,GACxB,IAAK,IAAIjE,EAAMiE,EAAKrG,OAAS,EAAGoC,GAAO,EAAGA,IAAO,CAC7C,IAAIsqD,EAAQrmD,EAAKjE,GACbsqD,EAAMI,cACNt0D,KAAK8hE,kBAAkB5N,EAAM9/B,QAG7B8/B,EAAM9/B,OAAU8/B,EAAM9/B,MAAM5sB,QAAW0sD,EAAMK,WAC7C/pD,EAAOpC,MAAM8rD,EAAM/nD,SAAU,CAACvC,EAAK,MAK/Cm4D,cAAe,SAASl0D,EAAM3G,GAC1B,OAAIlH,KAAKkH,QAAQw0D,YACN1L,GAAMgF,QAAQnnD,EAAM3G,EAASlH,KAAKkH,QAAQw0D,aAG1C1L,GAAMgF,QAAQnnD,EAAM3G,IAInCk7D,YAAa,SAASl7D,GAClB,IAhpFoBwpD,EAgpFhBzoD,EAAOjI,KA0CX,OAxCIkH,IAAYtE,IACZqF,EAAK0xD,UAAYzyD,EAAQ+8C,SACzBh8C,EAAK2xD,MAAQ1yD,EAAQg9C,KACrBj8C,EAAK4xD,MAAQ3yD,EAAQge,KACrBjd,EAAK8xD,QAAU7yD,EAAQ+uB,OACvBhuB,EAAK+xD,OAAS9yD,EAAQgtD,MACtBjsD,EAAKgyD,WAAa/yD,EAAQksD,UAC1BnrD,EAAKu4D,MAAQv4D,EAAKo6D,mBAAqBn7D,EAAQu9C,KAC/Cx8C,EAAK25D,MAAQ16D,EAAQy9C,KAEjB18C,EAAKu4D,QAAU59D,IACfqF,EAAKu4D,MAAQv4D,EAAKo6D,mBAAqBp6D,EAAKw8C,OAC5Cv9C,EAAQu9C,KAAOx8C,EAAKw8C,QAGpBx8C,EAAK25D,QAAUh/D,GAAeqF,EAAK0xD,YAAc/2D,IACjDqF,EAAK25D,MAAQ35D,EAAK0xD,UAClBzyD,EAAQy9C,KAAO18C,EAAK25D,OAGpB35D,EAAKf,QAAQwuD,UACbxuD,EAAQwuD,QAAUztD,EAAKf,QAAQwuD,SAG/BxuD,EAAQge,OACRjd,EAAK4xD,MAAQ3yD,EAAQge,KAAO+qC,GAAc/oD,EAAQge,MAClDjd,EAAK6xD,YAAc1J,GAAWlpD,EAAQge,OAGtChe,EAAQ+uB,SACRhuB,EAAK8xD,QAAU7yD,EAAQ+uB,OAAUhuB,EAAKf,QAAQ+7C,yBAA2BtgD,EAAEizB,cAAc1uB,EAAQ+uB,QAAWtzB,EAAEI,OAAO,GAAIqvD,GAAgBlrD,EAAQ+uB,QAAS,CAAEgtB,uBAAwBh7C,EAAKf,QAAQ+7C,yBAA4BmP,GAAgBlrD,EAAQ+uB,SAGrP/uB,EAAQgtD,QACRjsD,EAAK+xD,OAAS9yD,EAAQgtD,MAAQxB,GAAexrD,EAAQgtD,QAErDhtD,EAAQksD,YACRnrD,EAAKgyD,WAAa/yD,EAAQksD,WAvrFd1C,EAurF6CxpD,EAAQksD,UAtrFtEnwD,EAAQytD,GAAeA,EAAc,CAACA,MAyrFlCxpD,GAGX1G,MAAO,SAAS0G,GACZ,IAAIqP,EAGJ,GAFavW,KAAKkH,QAAQo0D,eAAiBt7D,KAAKkH,QAAQq0D,cAAgBv7D,KAAKkH,QAAQs0D,iBAAmBx7D,KAAKkH,QAAQ0xD,gBAAkB54D,KAAKkH,QAAQu0D,mBAEpIz7D,KAAKq5D,QAAUz2D,GAAqC,IAAtB5C,KAAKq5D,MAAM7xD,UAAkBxH,KAAK05D,WAAWlyD,OAAS,CAChG,GAAIxH,KAAKkH,QAAQu5D,QAAS,CACtB,IAAI6B,EAAiBp7D,EAAQ+8C,SAAWjkD,KAAKikD,WACzCqe,EAAiB,GACjBA,EAAiBtiE,KAAKikD,WACtB/8C,EAAQg9C,KAAOh9C,EAAQ+8C,SAAWqe,EAClCp7D,EAAQ+8C,SAAWqe,IAEnBp7D,EAAQg9C,KAAO,EACflkD,KAAKkH,QAAQu5D,SAAU,GAG/B,OAAOzgE,KAAK8kD,KAAK9kD,KAAKoiE,YAAYl7D,IAGtC,IAAI+4D,EAAcjgE,KAAKoK,QAAQygD,EAAc,CAAEnlD,KAAM,SAgBrD,OAfKu6D,IACDjgE,KAAKoK,QAAQ0gD,GACT5jD,IACAA,EAAQktD,YAAcp0D,KAAKm6D,cAE/B5jD,EAASvW,KAAK+hE,cAAc/hE,KAAKq5D,MAAOr5D,KAAKoiE,YAAYl7D,IAEzDlH,KAAKmiE,gBAAgB5rD,EAAOqwC,OAAO,GAEnC5mD,KAAKsgE,iBAAmBtgE,KAAK2hE,qBAAqBprD,EAAO0rD,iBAAmBjiE,KAAKq5D,MAAOnyD,GACxFlH,KAAKkiE,SAAS3rD,EAAQrP,GACtBlH,KAAKoK,QAAQ2gD,EAAY,CAAErlD,KAAM,SACjC1F,KAAKoK,QAAQ0yC,EAAQ,CAAE1oB,MAAO7d,EAAO1I,KAAMm/B,OAAQ9lC,EAAUA,EAAQ8lC,OAAS,MAG3ErqC,EAAEqpC,WAAW2J,QAAQsqB,GAAah5C,WAG7Cs7C,sBAAuB,SAASrO,GAC5B,IAAI39C,GAAS,EACT/O,EAAS0sD,EAAM9/B,MAAQ8/B,EAAM9/B,MAAM5sB,OAAS,EAEhD,IAAK0sD,EAAMI,aACP,OAAO,EAGX,IAAK,IAAI/sD,EAAI,EAAGA,EAAIC,EAAQD,IACxB,GAAIvH,KAAKo6D,aAAalG,EAAM9/B,MAAM7sB,GAAG8lD,KAAM,CACvC92C,GAAS,EACT,MAGR,OAAOA,GAGXisD,kBAAmB,SAAS30D,EAAM0I,EAAQrP,EAASmxB,EAASrP,GASxD,IARA,IAEIkrC,EACAzgD,EACAgvD,EACAC,EACAC,EANA16D,EAAOjI,KACPwH,EAASqG,EAAKrG,OAOTD,EAAI,EAAGA,EAAIC,IAChB0sD,EAAQrmD,EAAKtG,KAETL,EAAQ07D,OAAS17D,EAAQy9C,OAHLp9C,IAWxB,GAJKU,EAAKm5D,eAAelN,EAAM7G,MAC3BplD,EAAKg5D,YAAYt/D,KAAKuyD,GAGtBjsD,EAAKmyD,aAAalG,EAAM7G,KAAM,CAC9B,GAAIplD,EAAK+zD,sBAAuB,CAC7B,GAAI/zD,EAAK46D,iBAAiB3O,EAAOhtD,EAASmxB,EAASrP,GAE9C,YADA/gB,EAAK66D,qBAAsB,GAKhC,GAFAJ,GAAcxO,EAAMM,eAAiBN,EAAMK,WAAa,EACxDoO,EAAcz7D,EAAQu9C,KAAOv9C,EAAQ67D,SAChC96D,EAAKs6D,sBAAsBrO,IAAUyO,EAAcD,EAAY,CAChEx7D,EAAQ67D,SAAWL,EACnB,UAYP,GARIx7D,EAAQ87D,gBAAkB97D,EAAQ67D,QAAU77D,EAAQu9C,MACpDv9C,EAAQ67D,UACR7O,EAAM+O,eAAgB,GACf/7D,EAAQ87D,iBACf97D,EAAQ07D,QACR1O,EAAM+O,eAAgB,GAGtB/O,EAAMI,cAAgBJ,EAAM9/B,OAAS8/B,EAAM9/B,MAAM5sB,OACjD0sD,EAAMgP,aAAe,GAEhB7qC,IACDA,EAAU,IAEdA,EAAQ12B,KAAKuyD,GAEbjsD,EAAKu6D,kBAAkBtO,EAAM9/B,MAAO8/B,EAAMgP,aAAch8D,EAASmxB,EAASrP,GAC1EqP,EAAQhJ,MAEJ6kC,EAAMgP,aAAa17D,QAAUN,EAAQ07D,MAAQ,EAC7CrsD,EAAO5U,KAAKuyD,GAEZA,EAAM+O,eAAgB,MAEvB,CACHxvD,EAAU,GACVgvD,EAAcvO,EAAM9/B,MAAM5sB,OAE1B,IAAK,IAAImjC,EAAI,EAAGA,EAAI83B,EAAa93B,IAC7B,GAAIzjC,EAAQ67D,QAAU77D,EAAQu9C,KAC1Bv9C,EAAQ67D,cADZ,CAKA,GAAI77D,EAAQ07D,OAAS17D,EAAQy9C,KACzB,MAEJlxC,EAAQ9R,KAAKuyD,EAAM9/B,MAAMuW,IACzBzjC,EAAQ07D,QAGRnvD,EAAQjM,QAAUN,EAAQ07D,MAAQ,GAClC1O,EAAMgP,aAAezvD,EACrB8C,EAAO5U,KAAKuyD,IAEZA,EAAM+O,eAAgB,OAG3B,CACH,GAAI/7D,EAAQ67D,QAAU77D,EAAQu9C,KAAM,CAChCv9C,EAAQ67D,UACR,SAEJxsD,EAAO5U,KAAKuyD,GACZhtD,EAAQ07D,UAKpBO,4BAA6B,SAASjP,EAAOvoD,EAAKy3D,GAC9C,IAEIC,EAGAjpB,EALAnyC,EAAOjI,KACPuW,EAAS,EAET+sD,EAA8B,iBAAR33D,EACtBnE,EAAS87D,EAAe33D,EAAMuoD,EAAMM,cAGxC,IAAKN,EAAMI,aACP,OAAO/9C,EAGX,IAAK,IAAIhP,EAAI,EAAGA,EAAIC,IAChB67D,EAAWnP,EAAM9/B,MAAM7sB,IADCA,IA6BxB,GAtBI87D,EAAS/O,cAAgBrsD,EAAKmyD,aAAalG,EAAM7G,MAEjD92C,GADA6jC,EAAOnyC,EAAKk7D,4BAA4BE,EAAU77D,GAAQ,GAGtD87D,IACA97D,GAAU4yC,KAENipB,EAAS/O,cAAgBrsD,EAAKmyD,aAAaiJ,EAAShW,OAE5D92C,GADA6jC,EAAOipB,EAASjvC,MAAQivC,EAASjvC,MAAM5sB,OAAS,EAE5C87D,IACA97D,GAAU4yC,IAIdgpB,IACA7sD,GAAU,EACN+sD,IACA97D,GAAU,IAId87D,GAAgB/sD,EAAS/O,EACzB,OAAO+O,EAIf,OAAOA,GAGXssD,iBAAkB,SAAS3O,EAAOhtD,EAASmxB,EAASrP,GAChD,IACIu6C,EACAC,EACAC,EAKAC,EARAz7D,EAAOjI,KAIP2jE,EAAiBzP,EAAMI,aAAeJ,EAAMM,cAAgBN,EAAMK,UAClE5P,EAAOz9C,EAAQy9C,KACfoe,EAAU77D,EAAQ67D,QAClB9e,EAAWh8C,EAAK08C,OAWpB,OARIz9C,EAAQ87D,iBACJD,EAAU77D,EAAQu9C,KAClBse,GAAW,EAEXpe,GAAQ,IAIXuP,EAAM9/B,OAAU8/B,EAAM9/B,QAAU8/B,EAAM9/B,MAAM5sB,QAC7CS,EAAK27D,cAAc1P,EAAOhtD,EAASmxB,EAASrP,EAAU,IAC/C,IAEP06C,EAA6B1jE,KAAKmjE,4BAA4BjP,EAAOhtD,EAAQu9C,KAAOse,MACpFQ,EAAiBlgE,KAAKuV,IAAI1R,EAAQu9C,MAAQse,EAAUW,GAA6B,KAE3DC,KAItBH,EAAYtP,EAAM9/B,MAAMmvC,GACxBE,EAAWvP,EAAM9/B,MAAM/wB,KAAK8S,IAAIotD,EAAiB5e,EAAMgf,EAAiB,IAEpEH,EAAUlF,YACVr2D,EAAK27D,cAAc1P,EAAOhtD,EAASmxB,EAASrP,EAAU5lB,EAAKwV,IAAIxV,EAAKmN,MAAMgzD,EAAiBtf,GAAW,GAAKA,EAAU7gD,EAAK2S,OAAOwtD,EAAiBtf,GAAYA,KACvJ,GAGPwf,EAASnF,YACTr2D,EAAK27D,cAAc1P,EAAOhtD,EAASmxB,EAASrP,EAAU5lB,EAAKwV,IAAIxV,EAAKmN,OAAOgzD,EAAiBtf,GAAYA,GAAW,GAAKA,EAAU7gD,EAAK2S,OAAOwtD,EAAiBtf,GAAYA,KACpK,QAFX,KAOR2f,cAAe,SAAS1P,EAAOhtD,EAASmxB,EAASrP,EAAUu6C,EAAgBrf,GACvE,IACIS,EACA1uB,EACApoB,EACAg2D,EAJA57D,EAAOjI,KAMNk0D,EAAM9/B,QACP8/B,EAAM9/B,MAAQ,IAGlBuwB,EAAO18C,EAAK08C,OACZ1uB,EAASj2B,KAAK8jE,oBAAoB5P,EAAO77B,GACzCxqB,EAAO,CACHq2C,KAAMA,GAAQ,EACdD,SAAUU,EACVF,KAAM8e,EACN5e,KAAMA,EACN1uB,OAAQA,EACRm9B,UAAWnrD,EAAKgyD,WAChB/0C,KAAMjd,EAAK4xD,QAEfgK,EAAY57D,EAAK87D,cAAc7P,KAEd2P,EAAUr8D,SACvBqG,EAAKqmD,MAAQ2P,EACbh2D,EAAKumD,aAAc,GAGvBj6B,aAAalyB,EAAK+7D,UAClB/7D,EAAK+7D,SAAWjrC,YAAW,WACvB9wB,EAAK+3D,cAAcnyD,GAAM,WAChB5F,EAAKmC,QAAQygD,EAAc,CACxBnlD,KAAM,SAWVuC,EAAKi4D,kBATLj4D,EAAKu9C,UAAUV,KAAK,CAChBj3C,KAAMA,EACNk6C,QAAS9/C,EAAKg8D,0BAA0B/P,EAAOhtD,EAAQu9C,KAAMx8C,EAAK08C,OAAQ37B,EAAUu6C,GACpFx1C,MAAO,WACH,IAAIoJ,EAAOvwB,EAAM2D,KAAKlD,WACtBY,EAAK8lB,MAAM3lB,MAAMH,EAAMkvB,WAOxC,MAGP8sC,0BAA2B,SAAS/P,EAAOzP,EAAME,EAAM37B,EAAUu6C,GAC7D,IAAIt7D,EAAOjI,KACP4gE,EAAY34D,EAAK44D,aACrB73C,EAAW9f,EAAW8f,GAAYA,EAAW7lB,EAC7C,IAAI+gE,EAAaj8D,EAAKf,QAAQ8vD,QAAU/uD,EAAKf,QAAQ8vD,OAAOpQ,MAAQ3+C,EAAKf,QAAQ8vD,OAAOpQ,MAAQ,QAEhG,OAAO,SAAS/4C,GACZ,IAAIusC,EAEA+pB,EADArb,EAAQI,GAAMxpD,OAAOuI,EAAKf,QAAQ8vD,OAAOlO,OAG7C7gD,EAAKi4D,kBAELj4D,EAAKmC,QAAQ2gD,EAAY,CACrB/C,SAAUn6C,EACVnI,KAAM,SAINy+D,EADAj7D,EAAWg7D,GACEA,EAAWr2D,GAEXA,EAAKq2D,GAGtBr2D,EAAO5F,EAAKizD,OAAOlmC,MAAMnnB,GAErBqmD,EAAMI,cACNla,EAAOnyC,EAAKizD,OAAO1xB,OAAO37B,GAC1BqmD,EAAMM,cAAgB2P,GAGtB/pB,GADAA,EAAOnyC,EAAKizD,OAAOrtD,KAAKA,IACZyM,KAAI,SAAS00B,GACrB,OAAO,IAAI8Z,EAAM9Z,MAIzBklB,EAAM9/B,MAAM43B,iBAAkB,EAC9B,IAAK,IAAIzkD,EAAI,EAAGA,EAAI48D,EAAY58D,IACxBA,GAAKg8D,GAAkBh8D,EAAKg8D,EAAiB5e,EAC7CuP,EAAM9/B,MAAM5pB,OAAOjD,EAAG,EAAG6yC,EAAK7yC,EAAIg8D,IAE7BrP,EAAM9/B,MAAM7sB,IACb2sD,EAAM9/B,MAAM5pB,OAAOjD,EAAG,EAAG,CAAE+2D,YAAY,IAInDpK,EAAM9/B,MAAM43B,iBAAkB,EAE9B/jD,EAAKm8D,yBAAyBlQ,GAC9BjsD,EAAK66D,qBAAsB,EAEtB5O,EAAMmQ,aACPp8D,EAAKo4D,oBAAsB8D,EAC3BjQ,EAAMmQ,YAAa,GAGvBp8D,EAAK2rD,MAAMnP,EAAME,EAAM37B,EAAU,gBAE7B43C,GAAa34D,EAAKq8D,2BAA6Br8D,EAAKs8D,0BACpDt8D,EAAKmC,QAAQ0yC,EAAQ,MAKjCinB,cAAe,SAAS7P,GACpB,IAAIsQ,EAAsBxkE,KAAKg6D,OAAO1/C,KAAI,SAASzF,GAC/C,OAAOA,EAAEoQ,SACVtP,QAAQu+C,EAAMjvC,OAEjB,OAAOjlB,KAAKg6D,OAAOpzD,MAAM49D,EAAsB,EAAGxkE,KAAKg6D,OAAOxyD,SAGlEs8D,oBAAqB,SAAS5P,EAAO77B,GACjC,IAAIpC,EAAS,CACTyrB,MAAO,MACP+B,QAAS,IAcb,GAXIzjD,KAAKi2B,UACLA,EAAOwtB,QAAQ9hD,KAAK3B,KAAKi2B,WAG7BA,EAASlzB,GAAO,EAAM,GAAIkzB,IACnBwtB,QAAQ9hD,KAAK,CAChBsjB,MAAOivC,EAAMjvC,MACb+9B,SAAU,KACVt6C,MAAOwrD,EAAMxrD,QAGb2vB,EACA,IAAK,IAAI9wB,EAAI,EAAGA,EAAI8wB,EAAQ7wB,OAAQD,IAChC0uB,EAAOwtB,QAAQ9hD,KAAK,CAChBsjB,MAAOoT,EAAQ9wB,GAAG0d,MAClB+9B,SAAU,KACVt6C,MAAO2vB,EAAQ9wB,GAAGmB,QAK9B,OAAOutB,GAGXmuC,yBAA0B,SAASlQ,GAW/B,IAVA,IAGI9Z,EACAqqB,EACA7Q,EACA8Q,EACAC,EAPA18D,EAAOjI,KACPy4D,EAASxwD,EAAKsxD,QACdqL,EAAenM,EAAOjxD,OAQjBD,EAAI,EAAGA,EAAIq9D,EAAcr9D,IAAK,CAEnCm9D,GADA9Q,EAAQ6E,EAAOlxD,IACIsG,KAAKrG,OACxBm9D,EAAU,GACVvqB,EAAO,KAEP,IAAK,IAAIzP,EAAI,EAAGA,EAAI+5B,IAChBD,EAAe7Q,EAAM/lD,KAAK88B,GAC1Bg6B,EAAQhjE,KAAKgpC,KAER85B,EAAapX,MAAQ6G,EAAM7G,KAASoX,EAAanQ,cAAgBmQ,EAAarwC,MAAM5sB,QAAUS,EAAK48D,kBAAkBJ,EAAcvQ,EAAOyQ,KAJnHh6B,IAO5Bg6B,EAAQt1C,MAGZ,GAAIs1C,EAAQn9D,OAAQ,CAGhB,IAFA4yC,EAAOqe,EAAOlxD,GAAG+1D,aAEVqH,EAAQn9D,OAAS,GAEpB4yC,EAAOA,EADGuqB,EAAQn6D,OAAO,EAAG,GAAG,IACV4pB,MAEzBgmB,EAAKuqB,EAAQ,IAAM18D,EAAK68D,YAAY5Q,GACpC,SAKZ2Q,kBAAmB,SAAS3Q,EAAO6Q,EAAUJ,GACzC,IAEIK,EADAx9D,EAAS0sD,EAAM9/B,MAAM5sB,OAGzB,GAAI0sD,EAAMI,cAAgB9sD,EACtB,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAG7B,GAFAy9D,EAAkB9Q,EAAM9/B,MAAM7sB,GAC9Bo9D,EAAQhjE,KAAK4F,GACTy9D,EAAgB3X,MAAQ0X,EAAS1X,KAC5B2X,EAAgB1Q,cACjB0Q,EAAgB5wC,MAAM5sB,QAV3BxH,KAWU6kE,kBAAkBG,EAAiBD,EAAUJ,GACtD,OAAO,EAEXA,EAAQt1C,QAMpBy1C,YAAa,SAAS5Q,GAClB,IAAIjsD,EAAOjI,KASX,OARAk0D,EAA+B,mBAAhBA,EAAMtiD,OAAuBsiD,EAAMtiD,SAAWsiD,GAEnD9/B,OAAS8/B,EAAM9/B,MAAM5sB,SAC3B0sD,EAAM9/B,MAAQ8/B,EAAM9/B,MAAM9Z,KAAI,SAAS00B,GACnC,OAAO/mC,EAAK68D,YAAY91B,OAIzBklB,GAGXiO,gBAAiB,SAAS8C,EAAaC,GACnC,IAAIj9D,EAAOjI,KAENiI,EAAKf,QAAQs0D,kBACVyJ,IAAgBriE,EAChBqF,EAAKiyD,OAAS+K,EACPC,IACPj9D,EAAKiyD,OAASjyD,EAAKoxD,MAAM7xD,UAKrC29D,MAAO,SAASn8C,GACZ,IAAI/gB,EAAOjI,KAOX,OAAOA,KAAKolE,SAAS54B,MANZ,SAASyzB,IACM,IAAhBA,GAAwB/2D,EAAW8f,IACnCA,EAASze,KAAKtC,OAO1Bm9D,OAAQ,SAASl+D,GACb,IAAIe,EAAOjI,KAEX,OAAOiI,EAAKzH,MAAMuC,EAAO,GAAI,CACzBmhD,KAAMj8C,EAAKi8C,OACXD,SAAUh8C,EAAKg8C,WACf/+B,KAAMjd,EAAKid,OACX+Q,OAAQhuB,EAAKguB,SACbi+B,MAAOjsD,EAAKisD,QACZd,UAAWnrD,EAAKmrD,aACjBlsD,KAGPm+D,KAAM,SAASn+D,GACX,IAAIe,EAAOjI,KACPkkD,EAAOj8C,EAAKi8C,OACZ0C,EAAQ3+C,EAAK2+C,QAIjB,GAFA1/C,EAAUA,GAAW,GAEhBg9C,KAAS0C,GAAS1C,EAAO,EAAIj8C,EAAKq9D,cAWvC,OAPAr9D,EAAKu4D,MAAQv4D,EAAKo6D,mBAAqBne,EAAOj8C,EAAK08C,OAEnDT,GAAQ,EACRh9C,EAAQg9C,KAAOA,EAEfj8C,EAAKm9D,OAAOl+D,GAELg9C,GAGXvE,KAAM,SAASz4C,GACX,IAAIe,EAAOjI,KACPkkD,EAAOj8C,EAAKi8C,OAIhB,GAFAh9C,EAAUA,GAAW,GAEhBg9C,GAAiB,IAATA,EAWb,OAPAj8C,EAAKu4D,MAAQv4D,EAAKo6D,mBAAqBp6D,EAAKu4D,MAAQv4D,EAAK08C,OAEzDT,GAAQ,EACRh9C,EAAQg9C,KAAOA,EAEfj8C,EAAKm9D,OAAOl+D,GAELg9C,GAGXA,KAAM,SAASh1B,GACX,IACAu1B,EADIx8C,EAAOjI,KAGX,GAAIkvB,IAAQtsB,EAAa,CACrBssB,EAAM9rB,EAAKwV,IAAIxV,EAAK+S,IAAI/S,EAAKwV,IAAIsW,EAAK,GAAIjnB,EAAKq9D,cAAe,GAC9D,IAAI3gB,EAAO18C,EAAK08C,OAEhB,OAAI18C,EAAKg0D,iBACL/sC,GAAO,OACPjnB,EAAK2rD,MAAM1kC,EAAMy1B,EAAMA,EAAM,KAAM,cAGvC18C,EAAKm9D,OAAOn9D,EAAKs9D,sBAAsB,CAAErhB,KAAMh1B,KAKnD,OAFAu1B,EAAOx8C,EAAKw8C,UAEI7hD,EAAcQ,EAAK2S,OAAO0uC,GAAQ,IAAMx8C,EAAK08C,QAAU,IAAM,EAAI/hD,GAGrFqhD,SAAU,SAAS/0B,GACf,IAAIjnB,EAAOjI,KAEX,GAAIkvB,IAAQtsB,EAKZ,OAAOqF,EAAK08C,OAJR18C,EAAKm9D,OAAOn9D,EAAKs9D,sBAAsB,CAAEthB,SAAU/0B,EAAKg1B,KAAM,MAOtEh/B,KAAM,SAASgK,GACX,IAAIjnB,EAAOjI,KAEX,OAAIkvB,IAAQtsB,GACRqF,EAAKmC,QAAQ,aACbnC,EAAKm9D,OAAO,CAAElgD,KAAMgK,KAIjBjnB,EAAK4xD,OAGhB5jC,OAAQ,SAAS/G,GACb,IAAIjnB,EAAOjI,KAEX,GAAIkvB,IAAQtsB,EACR,OAAOqF,EAAK8xD,QAGhB9xD,EAAKmC,QAAQ,SACbnC,EAAKm9D,OAAO,CAAEnvC,OAAQ/G,EAAKg1B,KAAM,KAGrCgQ,MAAO,SAAShlC,GACZ,IAAIjnB,EAAOjI,KACPkH,EAAU,CAAEgtD,MAAOhlC,GAUvB,GARIjnB,EAAKkyD,eAEDjrC,IAAQtsB,GAAiBssB,GAAQA,EAAI1nB,SACrCS,EAAKsxD,QAAU,IAEnBryD,EAAQg9C,KAAO,GAGfh1B,IAAQtsB,EAKZ,OAAOqF,EAAK+xD,OAJR/xD,EAAKm9D,OAAOl+D,IAOpBs+D,cAAe,SAAS33D,GACpB,IAAIjE,EAEApC,EADA+O,EAAS,GAGb,IAAK3M,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAAO,CACrD,IAAIsqD,EAAQrmD,EAAKjE,GACbsqD,EAAMI,eACN/9C,EAASA,EAAO8G,OAAOrd,KAAKwlE,cAActR,EAAM9/B,SAGpD7d,EAAO5U,KAAKuyD,GAGhB,OAAO39C,GAGXqwC,MAAO,WACH,OAAO3tC,SAASjZ,KAAKk6D,QAAU,EAAG,KAGtCuL,YAAa,SAASC,GAClB,IAAIz9D,EAAOjI,KAEX,OAAKiI,EAAK+xD,OAAOxyD,OAIbS,EAAK8zD,oBACD9zD,EAAKo4D,qBAGTp4D,EAAKo4D,mBAAqBp4D,EAAK2+C,SAFpB3+C,EAAKo4D,oBAObp4D,EAAK09D,sBAAsB19D,EAAKsxD,QAAQ/xD,OAASS,EAAKsxD,QAAQ,GAAG1rD,KAAO,GAAI63D,GAZxEz9D,EAAK2+C,SAepB+e,sBAAuB,SAASn8B,EAAQk8B,EAAiBE,EAAYC,GACjE,IAEIjf,EACAp/C,EAHAS,EAAOjI,KAKX,GAJA4lE,EAAaA,GAAc,QAIvB39D,EAAK+xD,OAAOxyD,QAAUgiC,EAAQ,CAC9Bod,EAAQ,EACRp/C,EAASgiC,EAAOhiC,OAEhB,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IACxBq/C,GAAS3+C,EAAKy6D,WAAWl5B,EAAOjiC,GAAIm+D,EAAiBE,EAAYC,GAGrE,OADA59D,EAAK69D,aAAelf,EACbA,EAIX,OADA3+C,EAAK69D,aAAe79D,EAAKoxD,MAAM7xD,OACxBS,EAAK69D,cAGhBpD,WAAY,SAASxO,EAAOwR,EAAiBE,EAAYC,GACrD,IAAI59D,EAAOjI,KACP4mD,EAAQ,EAoBZ,OAlBIsN,EAAMI,cAAgBrsD,EAAKmyD,aAAalG,EAAM7G,OAC1CqY,IAAoBxR,EAAM+O,eAAiB4C,KAC3Cjf,GAAS,GAGbsN,EAAM0R,GAAYtkE,SAAQ,SAASyjE,GAC/Bne,GAAS3+C,EAAKy6D,WAAWqC,EAAUW,EAAiBE,EAAYC,OAGhE59D,EAAKmyD,aAAalG,EAAM7G,OACpBqY,IAAoBxR,EAAM+O,eAAiB4C,IAC3Cjf,IAEJA,GAASsN,EAAM0R,GAAc1R,EAAM0R,GAAYp+D,OAAS,GAExDo/C,IAGDA,GAGXmf,gBAAiB,SAASnS,GAItB,IAHA,IAAIhN,EAAQ,EACRp/C,EAASosD,EAAMpsD,OAEVD,EAAI,EAAGA,EAAIC,EAAQD,IACxBq/C,GAAS5mD,KAAK0iE,WAAW9O,EAAMrsD,IAAI,GAGvC,OAAOq/C,GAGXwM,UAAW,SAASlkC,GAGhB,GAAIA,IAAQtsB,EAKZ,OAPW5C,KAOCi6D,WAPDj6D,KAGFolE,OAAO,CAAEhS,UAAWlkC,KAOjC0jC,WAAY,WACR,IAAIr8C,EAASvW,KAAKsgE,iBAMlB,OAJI1qC,EAAcrf,KACdA,EAASvW,KAAKgmE,iBAAiBhmE,KAAKozD,cAGjC78C,GAGXyvD,iBAAkB,SAASpT,GACvB,IAAIr8C,EAAS,GAEb,IAAKqf,EAAcg9B,GAAa,CAC5B,IAAIQ,EAAY,GAEXnwD,EAAQ2vD,KACTA,EAAa,CAACA,IAGlB,IAAK,IAAIhpD,EAAM,EAAGA,EAAMgpD,EAAWprD,OAAQoC,IACvCwpD,EAAUR,EAAWhpD,GAAKwpD,WAAa,EACvC78C,EAAOq8C,EAAWhpD,GAAKqb,OAASmuC,EAIxC,OAAO78C,GAGXgvD,sBAAuB,SAASr+D,GAC5B,OAAOA,GAGX41D,kBAAmB,SAAShU,GACxB,IACI38C,EACA+nD,EACAtqD,EAHA4/B,EAASxpC,KAAKk0D,QAMlB,IAAKtqD,EAAM4/B,EAAOhiC,OAAS,EAAY,EAAGoC,GAAH,EAAkBA,IACrDsqD,EAAQ1qB,EAAO5/B,GACfuC,EAAS,CACLzD,MAAOogD,EAAMv5B,IAAMu5B,EAAMv5B,IAAI2kC,EAAMjvC,OAAS6jC,EAAMoL,EAAMjvC,OACxDA,MAAOivC,EAAMjvC,MACbmP,MAAOjoB,EAAS,CAACA,GAAU,CAAC28C,GAC5BwL,eAAgBnoD,EAChBymD,WAAY5yD,KAAKgmE,iBAAiB9R,EAAMtB,aAIhD,OAAOzmD,GAGXm5D,WAAY,WACR,IAAIr9D,EAAOjI,KACPikD,EAAWh8C,EAAKg8C,YAAch8C,EAAK2+C,QACnCA,EAAQ3+C,EAAKg0D,gBAAkBh0D,EAAKw9D,aAAY,GAAQx9D,EAAK2+C,QAEjE,OAAOxjD,EAAK6iE,MAAMrf,GAAS,GAAK3C,IAGpCiiB,QAAS,SAASzhB,EAAME,GACpB,IAAI18C,EAAOjI,KACP2L,EAAMvI,EAAK+S,IAAIsuC,EAAOE,EAAM18C,EAAK2+C,SAErC,OAAK3+C,EAAKf,QAAQq0D,cAAgBtzD,EAAKoxD,MAAM7xD,OAAS,GAI/CS,EAAKk+D,WAAW1hB,EAAM94C,GAAKnE,OAAS,GAG/C4+D,UAAW,WACP,IAAI3N,EAASz4D,KAAKu5D,QAClB,OAAOd,EAAOA,EAAOjxD,OAAS,IAAM,CAAE8N,MAAO,EAAG3J,IAAK,EAAGkC,KAAM,KAGlEw4D,aAAc,WACV,IAAI5N,EAASz4D,KAAKu5D,QAClB,OAAOd,EAAOjxD,QAAUixD,EAAO,GAAG5qD,KAAKrG,QAAUixD,EAAO,GAAG5qD,KAAK,GAAGw/C,KAGvEiZ,yBAA0B,WACtBtmE,KAAKukE,yBAA0B,GAGnC1D,WAAY,WACR,OAAO,IAAIzyD,MAAOnF,WAGtB2qD,MAAO,SAASnP,EAAME,EAAM37B,EAAUgkB,GAClChtC,KAAKskE,yBAA2BtkE,KAAK6gE,aACrC7gE,KAAKukE,yBAA0B,EAC/B,IAAI3d,EAAQ5mD,KAAKi8D,gBAAkBj8D,KAAKylE,aAAY,GAAQzlE,KAAK4mD,QAElD,gBAAX5Z,GAAuC,kBAAXA,GAC5BhtC,KAAKmhE,2BAGT1c,EAAOrhD,EAAK+S,IAAIsuC,GAAQ,EAAGmC,GAC3B59B,EAAW9f,EAAW8f,GAAYA,EAAW7lB,EAE7C,IAGI0K,EAHA5F,EAAOjI,KACPumE,EAAWnjE,EAAKwV,IAAIxV,EAAKmN,MAAMk0C,EAAOE,GAAO,GAAKA,EAClDl1C,EAAOrM,EAAK+S,IAAIowD,EAAW5hB,EAAMiC,GAKrC,KAFA/4C,EAAO5F,EAAKk+D,WAAW1hB,EAAMrhD,EAAK+S,IAAIsuC,EAAOE,EAAMiC,GAAQ59B,IAEjDxhB,QAAoB,IAAVo/C,KAAiB3+C,EAAK66D,oBAOtC,OANA76D,EAAKu+D,kBAAkB34D,EAAM42C,EAAME,EAAM18C,EAAKw+D,mBAAqBF,EAAUt+D,EAAKy+D,eAAiBj3D,EAAM,CACrGu9B,OAAQA,IAEZ/kC,EAAKw+D,kBAAoB,KACzBx+D,EAAKy+D,cAAgB,UACrB19C,IAIA/gB,EAAKg0D,kBACLh0D,EAAKw+D,kBAAoBF,EACzBt+D,EAAKy+D,cAAgBj3D,EAErB82D,EAAWnjE,EAAKwV,IAAIxV,EAAKmN,MAAMtI,EAAK0+D,gBAAgBliB,EAAME,GAAQA,GAAO,GAAKA,EAC9El1C,EAAOrM,EAAK+S,IAAIowD,EAAW5hB,EAAMiC,IAGjCjC,IAAS/hD,GAAgBqF,EAAK66D,sBACzB76D,EAAKg0D,kBAAoBh0D,EAAK2+D,kBAAkBL,EAAU5hB,KAAW18C,EAAK4+D,aAAaN,EAAU92D,GAClGxH,EAAK6+D,SAASP,EAAU5hB,GAAM,WACtBF,EAAO8hB,GAAY92D,EAAOxH,EAAK2+C,UAAY3+C,EAAK4+D,aAAap3D,EAAMrM,EAAK+S,IAAI1G,EAAOk1C,EAAM18C,EAAK2+C,UAC9F3+C,EAAK6+D,SAASr3D,EAAMk1C,GAAM,WACtB18C,EAAK2rD,MAAMnP,EAAME,EAAM37B,MAG3B/gB,EAAK2rD,MAAMnP,EAAME,EAAM37B,MAGxBu9C,EAAW9hB,GAClBx8C,EAAK6+D,SAASr3D,EAAMk1C,GAAM,WACtB18C,EAAK2rD,MAAMnP,EAAME,EAAM37B,QAMvCm9C,WAAY,SAAS7wD,EAAO3J,EAAKqd,GAC7B,IAEI4qC,EAEAmT,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAxsD,EACAtT,EAQA+/D,EAvBAt/D,EAAOjI,KACPy4D,EAASxwD,EAAKsxD,QAEd1rD,EAAO,GAQP3G,EAAUe,EAAKf,QACfsgE,EAAStgE,EAAQo0D,eAAiBp0D,EAAQq0D,cAAgBr0D,EAAQs0D,iBAAmBt0D,EAAQ0xD,gBAAkB1xD,EAAQu0D,iBAIvHgM,EAAkB,CACV9iB,KAAMh5C,EAAM2J,EACZmvC,KAAMnvC,EACNytD,QAAS,EACTH,MAAO,EACPI,gBAAgB,GAGxB0E,EAAez/D,EAAKg0D,gBACpB0L,EAAaD,EAAe,aAAe,QAC3CE,EAAWF,EAAe,WAAa,MAG3C,IAAKX,EAAU,EAAGv/D,EAASixD,EAAOjxD,OAAQu/D,EAAUv/D,EAAQu/D,IAAW,CAGnE,GAFAnT,EAAQ6E,EAAOsO,GAEXW,EAAc,CACd,GAAI9T,EAAMkN,YAAcn1D,EACpB,MAAO,GAGX,GAAI2J,EAAQs+C,EAAMmN,SAAU,CACxB0G,EAAgB1E,SAAWnP,EAAMmN,UAAYwG,GAAgB,GAC7DA,EAAe3T,EAAMmN,SACrB,SAOJ,QAJ4B,IAAjBwG,GAAgCA,GAAgB3T,EAAMkN,aAC7D2G,EAAgB1E,SAAWnP,EAAMkN,WAAayG,GAG9CE,EAAgB1E,QAAU0E,EAAgBhjB,KAC1C,MAAO,GAQX,SAL4B,IAAjB8iB,GAAgCjyD,EAAQ,GAAKs+C,EAAMt+C,MAAQ,IAClEmyD,EAAgB1E,QAAUnP,EAAMkN,YAGpCkG,EAAUD,IACG,CAIT,GAHA/mE,KAAKwiE,kBAAkB5O,EAAM/lD,KAAMA,EAAM45D,EAAiB,KAAMz+C,GAC5C/gB,EAAK09D,sBAAsB93D,GAAM,EAAM,iBAElC45D,EAAgB9iB,KACrC,OAAO92C,EAGX,GAAI5F,EAAK66D,oBACL,MAAO,GAIX,IAAIrK,IAFJuO,IAEuBvO,EAAOuO,GAASlG,aAAelN,EAAMmN,SAGxD,MAFAnN,EAAQ6E,EAAOuO,SAKpB,GAAI1xD,GAASs+C,EAAM+T,IAAeryD,GAASs+C,EAAMgU,GAAW,CAG/D,IAFA9sD,EAAQ,EAEHksD,EAAUD,EAASC,EAAUx/D,EAAQw/D,IAItC,GAHApT,EAAQ6E,EAAOuO,IACfM,EAAWr/D,EAAKm0D,UAAUxI,EAAM/lD,MAAM,IAEzBrG,QAAU8N,EAAQwF,GAAS84C,EAAMt+C,MAAO,CAIjD,GAHA6xD,EAAYvT,EAAM/lD,KAClBu5D,EAAWxT,EAAMjoD,KAEZ67D,EAAQ,CACT,GAAItgE,EAAQw0D,YACR2L,EAAYp/D,EAAK85D,cAAcnO,EAAM/lD,KAAM,CAAEooB,OAAQhuB,EAAKguB,eACvD,CACH,IAAI/Q,EAAO2tC,GAA6B5qD,EAAKisD,SAAW,IAAI72C,OAAO4yC,GAAchoD,EAAKid,QAAU,KAChGmiD,EAAYp/D,EAAK85D,cAAcnO,EAAM/lD,KAAM,CAAEqX,KAAMA,EAAM+Q,OAAQhuB,EAAKguB,WAE1EqxC,EAAWH,EAAYE,EAAUx5D,KAE7Bw5D,EAAUzgB,QAAUhkD,IACpBwkE,EAAWC,EAAUzgB,OAe7B,GAXAqgB,EAAa,EACT3xD,EAAQwF,EAAQ84C,EAAMt+C,QACtB2xD,EAAc3xD,EAAQwF,EAAS84C,EAAMt+C,OAEzC4xD,EAAWI,EAAS9/D,OAChB4/D,EAAWz7D,IACXu7D,GAAuBE,EAAWz7D,GAEtCmP,GAASosD,EAAWD,EACpBp5D,EAAO5F,EAAK4/D,aAAah6D,EAAMs5D,EAAWF,EAAYC,GAElDv7D,GAAOioD,EAAMjoD,KAAOmP,GAASnP,EAAM2J,EACnC,OAAOzH,EAInB,MAEJ05D,EAAe3T,EAAMmN,SAEzB,MAAO,IAGX+G,mBAAoB,SAASvB,GAMzB,IALA,IACI9N,EADOz4D,KACOu5D,QACdwO,EAAW,EACXxgE,EAAI,IAEK,CACT,IAAIqsD,EAAQ6E,EAAOlxD,GACnB,IAAKqsD,GAASA,EAAMkN,WAAayF,EAC7B,MAGA3S,EAAMmN,UAAYnN,EAAMjoD,MACxBo8D,EAAWnU,EAAMmN,SAAWnN,EAAMjoD,KAEtCpE,IAGJ,OAAOwgE,GAGXF,aAAc,SAASh6D,EAAM+lD,EAAOnP,EAAME,GACtC,GAAI3kD,KAAK+7D,mBAAoB,CACzB,IACIiM,EADA5tB,EAAOwZ,EAAMhiD,SASjB,OANI/D,EAAKrG,SACLwgE,EAAYn6D,EAAKA,EAAKrG,OAAS,IAGnCqwD,GAAYmQ,EAAW5tB,EAAMqK,EAAME,GAE5B92C,EAAKwP,OAAO+8B,GAEvB,OAAOvsC,EAAKwP,OAAOu2C,EAAMhtD,MAAM69C,EAAME,KAGzC6hB,kBAAmB,SAAS34D,EAAM42C,EAAME,EAAM4hB,EAAU92D,EAAMw4D,GAC1D,IAAIhgE,EAAOjI,KAEXiI,EAAKu5D,SAAW5+D,EAEhBqF,EAAKu4D,MAAQ/b,EAAOx8C,EAAKw8C,SAAWx8C,EAAKigE,cAAgB9kE,EAAK+S,IAAI1G,GAAOxH,EAAKq9D,aAAe,GAAKr9D,EAAK08C,QAAU4hB,EAEjHt+D,EAAKo6D,mBAAqB5d,EAE1Bx8C,EAAK25D,MAAQjd,EAEb,IAAIwjB,EAASlgE,EAAKf,QAAQq0D,aACtB6M,EAAUngE,EAAKf,QAAQo0D,cACvB+M,EAAYpgE,EAAKf,QAAQs0D,gBACzB5I,EAAa3qD,EAAKf,QAAQu0D,iBAC9B,IACIxzD,EAAKf,QAAQq0D,cAAe,EACvBtzD,EAAK8zD,oBAAwB9zD,EAAKisD,SAAWjsD,EAAKisD,QAAQ1sD,SAC3DS,EAAKf,QAAQo0D,eAAgB,GAEjCrzD,EAAKf,QAAQs0D,iBAAkB,EAC/BvzD,EAAKf,QAAQq0D,cAAe,EAC5BtzD,EAAKf,QAAQu0D,kBAAmB,EAE5B0M,IACAlgE,EAAKkzD,2BACLlzD,EAAKoxD,MAAQxrD,EAAO5F,EAAKmzD,SAASvtD,IAEtC5F,EAAKy0D,SAAS7uD,EAAMo6D,GACtB,QACEhgE,EAAKf,QAAQq0D,aAAe4M,EAC5BlgE,EAAKf,QAAQo0D,cAAgB8M,EAC7BngE,EAAKf,QAAQs0D,gBAAkB6M,EAC/BpgE,EAAKf,QAAQu0D,iBAAmB7I,IAIxCnO,KAAM,WACF,IAAIx8C,EAAOjI,KAEX,OAAIiI,EAAKu4D,QAAU59D,EACPqF,EAAK2xD,QAAUh3D,GAAeqF,EAAK2xD,MAAQ,IAAM3xD,EAAK08C,QAAU,GAAK/hD,EAE1EqF,EAAKu4D,OAGhBqB,kBAAmB,WACf,OAAO7hE,KAAKqiE,oBAAsB,GAGtC1d,KAAM,WACF,OAAO3kD,KAAK4hE,OAAS5hE,KAAK25D,WAG9B2O,wBAAyB,SAAS7jB,EAAMh1C,EAAMuZ,EAAU2I,GACpD,IAAI1pB,EAAOjI,KACP4gE,EAAY34D,EAAK44D,aAErB,OAAO,SAAShzD,GACZ,IAEIjE,EACApC,EACA4yC,EAJAwjB,GAAQ,EACRhK,EAAQ,CAAEt+C,MAAOmvC,EAAM94C,IAAK8D,EAAM5B,KAAM,GAAI+yD,UAAW34D,EAAK44D,cAahE,GARA54D,EAAKi4D,kBAELj4D,EAAKmC,QAAQ2gD,EAAY,CAAE/C,SAAUn6C,EAAMnI,KAAM,SAEjDmI,EAAO5F,EAAKizD,OAAOlmC,MAAMnnB,IAEzBusC,EAAOnyC,EAAKk0D,UAAUtuD,IAEbrG,OAAQ,CACb,IAAKoC,EAAM,EAAGpC,EAASS,EAAKsxD,QAAQ/xD,OAAQoC,EAAMpC,EAAQoC,IACtD,GAAI3B,EAAKsxD,QAAQ3vD,GAAK0L,QAAUmvC,EAAM,CAClCmZ,GAAQ,EACRhK,EAAQ3rD,EAAKsxD,QAAQ3vD,GAEhB3B,EAAKg0D,kBACNrI,EAAM0J,aAAeljB,EACrBwZ,EAAM/lD,KAAO5F,EAAKmzD,SAAShhB,GAC3BwZ,EAAMjoD,IAAMioD,EAAMt+C,MAAQrN,EAAKm0D,UAAUxI,EAAM/lD,MAAM,GAAMrG,OAC3DS,EAAK+4D,eAGT,MAIHpD,GACD31D,EAAKw0D,UAAUx0D,EAAKmzD,SAAShhB,GAAOqK,GAI5Cx8C,EAAKiyD,OAASjyD,EAAKizD,OAAOtU,MAAM/4C,IAE5B8jB,GAAUivC,GAAa34D,EAAKq8D,2BAA6Br8D,EAAKs8D,2BAC1Dv7C,GAAYoxB,EAAK5yC,OACjBwhB,IAEA/gB,EAAKmC,QAAQ0yC,EAAQ,OAMrCgqB,SAAU,SAASriB,EAAME,EAAM37B,GAC3B,IAAI/gB,EAAOjI,KACPyP,EAAOrM,EAAK+S,IAAIsuC,EAAOE,EAAM18C,EAAK2+C,SAClC1/C,EAAU,CACNy9C,KAAMA,EACNF,KAAMA,EACNP,KAAMO,EAAOE,EAAO,EACpBV,SAAUU,EACVz/B,KAAMjd,EAAK4xD,MACX5jC,OAAQhuB,EAAK8xD,QACb7F,MAAOjsD,EAAK+xD,OACZ5G,UAAWnrD,EAAKgyD,YAInBhyD,EAAKg0D,kBAAoBh0D,EAAK8zD,oBAAsB9zD,EAAK2+D,kBAAkBniB,EAAMh1C,GAC9EuZ,GACAA,IAKH/gB,EAAK+zD,wBAA0B/zD,EAAK2+D,kBAAkBniB,EAAMh1C,KAAWxH,EAAK4+D,aAAapiB,EAAMh1C,IAChG0qB,aAAalyB,EAAK+7D,UAElB/7D,EAAK+7D,SAAWjrC,YAAW,WACvB9wB,EAAK+3D,cAAc94D,GAAS,WACnBe,EAAKmC,QAAQygD,EAAc,CAAEnlD,KAAM,SAapCuC,EAAKi4D,mBAZDj4D,EAAKigE,eACLjgE,EAAKmC,QAAQ0gD,GAEjB7iD,EAAKu9C,UAAUV,KAAK,CAChBj3C,KAAM5F,EAAK83D,QAAQ74D,GACnB6gD,QAAS9/C,EAAKqgE,wBAAwB7jB,EAAMh1C,EAAMuZ,GAClD+E,MAAO,WACH,IAAIoJ,EAAOvwB,EAAM2D,KAAKlD,WACtBY,EAAK8lB,MAAM3lB,MAAMH,EAAMkvB,YAOxC,MACInO,GACPA,KAIRu/C,kBAAmB,SAAS9jB,EAAME,EAAM37B,GACpC,IAAI/gB,EAAOjI,KACPyP,EAAOrM,EAAK+S,IAAIsuC,EAAOE,EAAM18C,EAAK2+C,SAClC1/C,EAAU,CACNy9C,KAAMA,EACNF,KAAMA,EACNP,KAAMO,EAAOE,EAAO,EACpBV,SAAUU,EACVz/B,KAAMjd,EAAK4xD,MACX5jC,OAAQhuB,EAAK8xD,QACb7F,MAAOjsD,EAAK+xD,OACZ5G,UAAWnrD,EAAKgyD,YAGnBhyD,EAAK4+D,aAAapiB,EAAMh1C,GAOlBuZ,GACPA,IAPK/gB,EAAKmC,QAAQygD,EAAc,CAAEnlD,KAAM,UACpCuC,EAAKu9C,UAAUV,KAAK,CAChBj3C,KAAM5F,EAAK83D,QAAQ74D,GACnB6gD,QAAS9/C,EAAKqgE,wBAAwB7jB,EAAMh1C,EAAMuZ,GAAU,MAQ5E29C,gBAAiB,SAASrxD,EAAOqvC,GAC7B,IAEIpuC,EAEAwxD,EAJA9/D,EAAOjI,KACPwoE,EAAYvgE,EAAKwgE,cAAcnzD,GAE/BsxC,EAAQ3+C,EAAK2+C,QAGjB,GAAI4hB,EAAW,CAGX,KAFAT,EAAW9/D,EAAK6/D,mBAAmBxyD,IAG/B,OAAOA,EAEXA,GAASyyD,EAIb,IAFAxxD,EAASnT,EAAKwV,IAAIxV,EAAKmN,MAAM+E,EAAQqvC,GAAO,GAAKA,GAEpCiC,EACT,QACIrwC,GAAUouC,GACGiC,KAKrB,OAAOrwC,GAGXmyD,cAAe,SAAS/8D,GACpB,IAEI/B,EACApC,EAFAixD,EADOz4D,KACOu5D,QAIlB,IAAK3vD,EAAM,EAAGpC,EAASixD,EAAOjxD,OAAQoC,EAAMpC,EAAQoC,IAChD,GAAI6uD,EAAO7uD,GAAK0L,OAAS3J,GAAO8sD,EAAO7uD,GAAK+B,KAAOA,EAC/C,OAAO8sD,EAAO7uD,IAK1B6+D,cAAe,SAASnzD,GACpB,IAEI1L,EACAgqD,EAFA6E,EADOz4D,KACOu5D,QAKlB,IAAK3vD,EAFQ6uD,EAAOjxD,OAEA,EAAGoC,GAAO,EAAGA,IAC7B,GAAI6uD,EAAO7uD,GAAKk3D,YAAcxrD,EAAO,CACjCs+C,EAAQ6E,EAAO7uD,GACf,MAKR,OAAOgqD,GAGXiT,aAAc,SAASvxD,EAAO3J,GAC1B,IAEI/B,EACApC,EAFAixD,EADOz4D,KACOu5D,QAIlB,IAAK3vD,EAAM,EAAGpC,EAASixD,EAAOjxD,OAAQoC,EAAMpC,EAAQoC,IAChD,GAAI6uD,EAAO7uD,GAAK0L,OAASA,GAASmjD,EAAO7uD,GAAK+B,KAAOA,EACjD,OAAO,EAIf,OAAO,GAGXi7D,kBAAmB,SAAStxD,EAAO3J,GAC/B,IAEI/B,EACApC,EAHAS,EAAOjI,KACPy4D,EAASxwD,EAAKsxD,QAGdoP,EAAsB,EACtB/hB,EAAQ3+C,EAAKw9D,aAAY,GAM7B,IAJI95D,EAAMi7C,IAAU3+C,EAAK8zD,qBACrBpwD,EAAMi7C,GAGLh9C,EAAM,EAAGpC,EAASixD,EAAOjxD,OAAQoC,EAAMpC,EAAQoC,IAAO,CACvD,IAAIgqD,EAAQ6E,EAAO7uD,GACfgqD,EAAMkN,YAAcxrD,GAASs+C,EAAMmN,UAAYzrD,EAC/CqzD,GAAuB/U,EAAMmN,SAAWzrD,EACjCs+C,EAAMkN,YAAcn1D,GAAOioD,EAAMmN,UAAYp1D,IACpDg9D,GAAuBh9D,EAAMioD,EAAMkN,YAI3C,OAAO6H,GAAuBh9D,EAAM2J,GAGxC4nD,qBAAsB,WAClB,IAKItJ,EACAhqD,EANA3B,EAAOjI,KACPy4D,EAASxwD,EAAKsxD,QACdjkD,EAAQrN,EAAK45D,oBACbl2D,EAAM2J,GAASrN,EAAK08C,QAAU,GAC9BsY,EAAY,GAGZz1D,EAASixD,EAAOjxD,OAEpB,IAAKoC,EAAM,EAAGA,EAAMpC,EAAQoC,MACxBgqD,EAAQ6E,EAAO7uD,IAEJ0L,OAASA,GAASs+C,EAAMjoD,KAAO2J,GAAWs+C,EAAMt+C,OAASA,GAASs+C,EAAMt+C,OAAS3J,IACxFsxD,EAAUt7D,KAAKiyD,GAIvB,OAAOqJ,GAGXoB,uBAAwB,SAASvV,GAI7B,IAHA,IACI8K,EAEKhqD,EAAM,EAAGpC,EAASxH,KAAKu5D,QAAQ/xD,OAAQoC,EAAMpC,EAAQoC,IAC1DgqD,EAAQ5zD,KAAKu5D,QAAQ3vD,GAJd5J,KAMF4oE,sBAAsBhV,EAAO9K,GAN3B9oD,KASN6oE,uBAGTD,sBAAuB,SAAShV,EAAO9K,GACnC9oD,KAAK69D,UAAUjK,EAAM/lD,MAAM,SAASA,GAChC,GAAKA,EAGL,IAAK,IAAIjE,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IAAO,CACxC,IAAIyqB,EAAWxmB,EAAKjE,GAEpB,GAAIyqB,EAASg5B,KAAOh5B,EAASg5B,KAAOvE,EAAMuE,IAAK,CAC3C,GAAG7iD,OAAOD,KAAKsD,EAAMjE,EAAK,GAC1B,YAMhBmzD,oBAAqB,SAAShkD,EAAO+vC,GACjC,IAGI8K,EACArsD,EAJAU,EAAOjI,KACPy4D,EAASxwD,EAAKsxD,SAAW,GACzBqL,EAAenM,EAAOjxD,OAI1B,IAAKD,EAAI,EAAGA,EAAIq9D,EAAcr9D,IAG1B,IAFAqsD,EAAQ6E,EAAOlxD,IAEL+N,OAASyD,GAAS66C,EAAMjoD,KAAOoN,EAAO,CACvC9Q,EAAKs0D,UAAUzT,EAAMuE,IAAKuG,EAAM/lD,QAC7B5F,EAAK8zD,mBACLnI,EAAM/lD,KAAKrD,OAAOuO,EAAO,EAAG9Q,EAAK60D,kBAAkBhU,IAEnD8K,EAAM/lD,KAAKrD,OAAOuO,EAAO,EAAG+vC,IAIpC,MAIR7gD,EAAK4gE,uBAGTA,oBAAqB,WACjB,IAOIjV,EACArsD,EARAU,EAAOjI,KACPy4D,EAASxwD,EAAKsxD,SAAW,GACzBqL,EAAenM,EAAOjxD,OACtBshE,GAAgB,EAChBC,EAAiB,EACjBC,EAAmB,EAKvB,IAAKzhE,EAAI,EAAGA,EAAIq9D,EAAcr9D,IAC1BqsD,EAAQ6E,EAAOlxD,GAEfyhE,GADc/gE,EAAKg0D,gBAAkBrI,EAAM/lD,KAAKrG,OAASS,EAAKm0D,UAAUxI,EAAM/lD,MAAM,GAAMrG,QACzDpE,EAAK8T,IAAI08C,EAAMjoD,IAAMioD,EAAMt+C,OAEvDwzD,GAAsC,IAArBE,EAOlBF,IACAlV,EAAMt+C,OAASyzD,EACfnV,EAAMjoD,KAAOo9D,IARbD,GAAgB,EAChBC,EAAiBC,EACjBpV,EAAMjoD,KAAOo9D,IAWzB5H,yBAA0B,WACtB,IAIIvN,EACArsD,EACAihE,EACAS,EAPAhhE,EAAOjI,KACPy4D,EAASxwD,EAAKsxD,SAAW,GACzBqL,EAAenM,EAAOjxD,OACtBuhE,EAAiB,EAMrB,IAAKxhE,EAAI,EAAGA,EAAIq9D,EAAcr9D,IAC1BqsD,EAAQ6E,EAAOlxD,GACf0hE,EAAchhE,EAAKg0D,gBAAkBh0D,EAAK09D,sBAAsB/R,EAAM/lD,MAAM,EAAM,SAAS,GAAQ5F,EAAKm0D,UAAUxI,EAAM/lD,MAAM,GAAMrG,OAEhIghE,GACIA,EAAU78D,KAAOioD,EAAMt+C,QACvByzD,EAAiBnV,EAAMt+C,MAAQkzD,EAAU78D,KAE7CioD,EAAMkN,WAAa0H,EAAUzH,SAAWgI,EACxCA,EAAiB,GAEjBnV,EAAMkN,WAAalN,EAAMt+C,MAG7Bs+C,EAAMmN,SAAWnN,EAAMkN,WAAamI,EACpCT,EAAY5U,KAKpB0G,GAAY,GAEhBA,GAAUtT,OAAS,SAAS9/C,EAAS2G,EAAMijB,GACvC,IAAI00B,EACA0jB,EAAmBhiE,EAAQs+C,UAAY7iD,EAAEI,OAAO,GAAImE,EAAQs+C,WAAa,KA8B7E,OA5BI0jB,GACAA,EAAiBpkB,YAAcokB,EAAiBpkB,OAAS5+C,EAAS,CAAEmoB,IAAK66C,EAAiBpkB,MAASokB,EAAiBpkB,KAE/F,SAAjB59C,EAAQxB,OACRwjE,EAAiBp4C,WAAaA,GAG9B5pB,EAAQxB,OACR/E,EAAMkN,KAAKg5C,WAAalmD,EAAMkN,KAAKg5C,YAAc,GACjDlmD,EAAMkN,KAAK44C,QAAU9lD,EAAMkN,KAAK44C,SAAW,GAEtC9lD,EAAMkN,KAAKg5C,WAAW3/C,EAAQxB,MAEvBiC,EAAchH,EAAMkN,KAAKg5C,WAAW3/C,EAAQxB,OAGpDwjE,EAAmBnmE,GAAO,EAAM,GAAIpC,EAAMkN,KAAKg5C,WAAW3/C,EAAQxB,MAAOwjE,GAFzE1jB,EAAY,IAAI7kD,EAAMkN,KAAKg5C,WAAW3/C,EAAQxB,MAAM3C,EAAOmmE,EAAkB,CAAEr7D,KAAMA,KAFrFlN,EAAM2vB,aAAa,sCAAwCppB,EAAQxB,KAAO,8FAA+F,QAO7KwB,EAAQ8vD,OAASj0D,GAAO,EAAM,GAAIpC,EAAMkN,KAAK44C,QAAQv/C,EAAQxB,MAAOwB,EAAQ8vD,SAG3ExR,IACDA,EAAYt8C,EAAWggE,EAAiBpkB,MAAQokB,EAAmB,IAAItT,GAAgBsT,KAG3F1jB,EAAY,IAAImQ,GAAe,CAAE9nD,KAAM3G,EAAQ2G,MAAQ,KAEpD23C,GAGXz3C,GAAWi5C,OAAS,SAAS9/C,IACrBjE,EAAQiE,IAAYA,aAAmB0G,KACxC1G,EAAU,CAAE2G,KAAM3G,IAGrB,IAKI0C,EACApC,EAEAyd,EARA6L,EAAa5pB,GAAW,GACxB2G,EAAOijB,EAAWjjB,KAClB+gB,EAASkC,EAAWlC,OACpBrQ,EAAQuS,EAAWvS,MACnB6nB,EAAStV,EAAWsV,OAGpB0iB,EAAQ,GAeZ,GAZKj7C,IAAQ+gB,GAAWkC,EAAW00B,YAC3BjnC,EACA1Q,EAiFZ,SAAoB0Q,EAAOqQ,GACvB,IAEAhlB,EACApC,EACA2hE,EAGAC,EACA7f,EACA8f,EACA9c,EAVI+c,EAAQ3mE,EAAE4b,GAAO,GAAGgrD,QAAQ,GAChCC,EAAOF,EAAQA,EAAME,KAAO,GAI5BC,EAAa76C,EAAOpnB,OACpBqG,EAAO,GAMP,IAAKjE,EAAM,EAAGpC,EAASgiE,EAAKhiE,OAAQoC,EAAMpC,EAAQoC,IAAO,CAKrD,IAJA2/C,EAAS,GACTgD,GAAQ,EACR6c,EAAQI,EAAK5/D,GAAKw/D,MAEbD,EAAa,EAAGA,EAAaM,EAAYN,IAEN,QADpCE,EAAOD,EAAMD,IACJlxC,SAAS3f,gBACdi0C,GAAQ,EACRhD,EAAO36B,EAAOu6C,GAAYlkD,OAASokD,EAAKrrD,WAG3CuuC,GACD1+C,EAAKlM,KAAK4nD,GAIlB,OAAO17C,EA/GQ67D,CAAWnrD,EAAOqQ,GAClBwX,IACPv4B,EA+BZ,SAAqBu4B,EAAQxX,GAEzB,IAKIhlB,EAAKpC,EACLmiE,EACA70C,EACAy0B,EACA7gD,EATAxB,GADJk/B,EAASzjC,EAAEyjC,GAAQ,IACEl/B,QACjB0iE,EAAah7C,EAAO,GACpBi7C,EAAcj7C,EAAO,GAErB/gB,EAAO,GAOX,IAAKjE,EAAM,EAAGpC,EAASN,EAAQM,OAAQoC,EAAMpC,EAAQoC,IACjD2/C,EAAS,IAETogB,GADA70C,EAAS5tB,EAAQ0C,IACCgc,cAEDwgB,IACbujC,EAAW,MAGX70C,EAAOoD,UAAayxC,GAAYA,EAASzxC,WAIzCyxC,IACApgB,EAAOogB,SAAWA,EAAS91C,OAG/B01B,EAAOqgB,EAAW3kD,OAAS6P,EAAO8L,KAK9Bl4B,GAHJA,EAAQosB,EAAO+0B,WAAWnhD,QAEbA,EAAMohE,UACPh1C,EAAOpsB,MAEPosB,EAAO8L,KAGnB2oB,EAAOsgB,EAAY5kD,OAASvc,EAE5BmF,EAAKlM,KAAK4nD,IAGd,OAAO17C,EA5EQk8D,CAAY3jC,EAAQxX,GAEvBkC,EAAWojC,QAAUtxD,GAAeiL,EAAK,IAAMA,EAAK,GAAG87D,WAAa/mE,IACpEkuB,EAAWojC,MAAQ,cAK3BvzD,EAAMkN,KAAKq7C,OAASt6B,KAAYkC,EAAWkmC,SAAWlmC,EAAWkmC,OAAOlO,OAAQ,CAChF,IAAKl/C,EAAM,EAAGpC,EAASonB,EAAOpnB,OAAQoC,EAAMpC,EAAQoC,KAChDqb,EAAQ2J,EAAOhlB,IACLlE,OACNojD,EAAM7jC,EAAMA,OAASA,GAIxB2Q,EAAckzB,KACfh4B,EAAWkmC,OAASj0D,GAAO,EAAM+tB,EAAWkmC,OAAQ,CAAElO,MAAO,CAAEl6B,OAAQk6B,MAW/E,OAPAh4B,EAAWjjB,KAAOA,EAElBu4B,EAAS,KACTtV,EAAWsV,OAAS,KACpB7nB,EAAQ,KACRuS,EAAWvS,MAAQ,KAEZuS,aAAsB/iB,GAAa+iB,EAAa,IAAI/iB,GAAW+iB,IAoF1E,IAAIk5C,GAAO9gB,GAAMxpD,OAAO,CACpBypD,QAAS,KAEThhD,KAAM,SAASO,GACX,IAAIT,EAAOjI,KACPiqE,EAAchiE,EAAKgiE,aAAevhE,GAASA,EAAMuhE,YACjDC,EAAgB,QAChBC,EAAkB,GAiCtB,GA/BAxpE,EAAMkN,KAAKq7C,MAAMnhD,GAAGI,KAAKoC,KAAKtC,EAAMS,UAEzBT,EAAKktC,WAAajvC,IACzBgkE,EAAgBjiE,EAAKktC,UAGzBg1B,EAAkB,CACdnT,OAAQ,CACJnpD,KAAMq8D,EACNphB,MAAO,CACHmhB,YAAaA,EACbt6C,GAAI1nB,EAAKkhD,QACTv6B,OAAQ3mB,EAAK2mB,iBAKd3mB,EAAKktC,WAAajvC,GACzBnD,EAAOonE,EAAiBliE,EAAKktC,UAGjCg1B,EAAgBt8D,KAAOnF,EAElBuhE,IACDA,EAAcE,EAAgBnT,OAAOnpD,aAG9Bo8D,IAAgB/jE,IACvB+jE,EAActpE,EAAMmuB,OAAOm7C,IAG3B/gE,EAAW+gE,GAAc,CACzB,IAAIG,EAAoBH,EAAY1/D,KAAKtC,EAAMA,GAE3CmiE,GAAkD,IAA7BA,EAAkB5iE,OACvCS,EAAKgiE,aAAc,EAEnBhiE,EAAKgiE,cAAgBG,EAI7BniE,EAAKoiE,iBAAmBF,EAEpBliE,EAAKgiE,aACLhiE,EAAKqiE,gBAGTriE,EAAKsiE,WAAa7hE,IAASA,EAAM6hE,UAGrCD,cAAe,WACX,IACIn1B,EAAUqQ,EAAWyB,EADrBh/C,EAAOjI,KAGLiI,EAAKktC,oBAAoBnnC,KAG3Bw3C,GAFArQ,EAAWltC,EAAKktC,SAAW,IAAInnC,GAAuB/F,EAAKoiE,mBAEtC7kB,UACrByB,EAAezB,EAAUyB,aAEzBzB,EAAUyB,aAAe,SAASp5C,EAAMnI,GAOpC,OANAmI,EAAK5F,EAAKkhD,SAAW,MAAQlhD,EAAK0nB,GAE9Bs3B,IACAp5C,EAAOo5C,EAAa18C,KAAKtC,EAAM4F,EAAMnI,IAGlCmI,GAGXsnC,EAAShpC,OAAS,WACd,OAAOlE,GAGXktC,EAAS3rC,KAAKszC,GAAQ,SAASn4C,GAC3BA,EAAEu+B,KAAOv+B,EAAEu+B,MAAQj7B,EACnBA,EAAKmC,QAAQ0yC,EAAQn4C,MAGzBwwC,EAAS3rC,KAAKohD,GAAO,SAASjmD,GAC1B,IAAI2hD,EAAar+C,EAAKkE,SAElBm6C,IACA3hD,EAAEu+B,KAAOv+B,EAAEu+B,MAAQj7B,EACnBq+C,EAAWl8C,QAAQwgD,EAAOjmD,OAIlCwwC,EAAS3rC,KAAKwhD,GAAa,SAASrmD,GAChC,IAAI2hD,EAAar+C,EAAKkE,SAElBm6C,GACAA,EAAWl8C,QAAQ4gD,EAAarmD,MAIxCsD,EAAKuiE,yBAIbzwB,OAAQ,SAAS+O,GACb9oD,KAAKsqE,gBACLtqE,KAAKyqE,QAAO,GACZzqE,KAAKm1C,SAASloC,IAAI67C,IAGtBmhB,aAAa,EAEbS,MAAO,WAIH,IAHA,IAAI9kD,EAAa5lB,KAAK4lB,aAClB8kD,EAAQ,EAEL9kD,GAAcA,EAAWA,YAC5B8kD,IACA9kD,EAAaA,EAAWA,WAAaA,EAAWA,aAAe,KAGnE,OAAO8kD,GAGXF,qBAAsB,WAGlBxqE,KAFgBA,KAAKqqE,iBAAiBrT,OAAOnpD,MAE3B,SAAW7N,KAAKm1C,SAAStnC,QAG/C88D,gBAAiB,WACb3qE,KAAKuqE,SAAU,EAEfvqE,KAAKwqE,wBAGTI,KAAM,WACF,IAEIz1B,EAAUluB,EAFV/f,EAAU,GACVkwB,EAAS,SA6Bb,OA1BIp3B,KAAKiqE,aACLjqE,KAAKsqE,gBAELn1B,EAAWn1C,KAAKm1C,SAEhBjuC,EAAQlH,KAAKmpD,SAAW,MAAQnpD,KAAK2vB,GAEhC3vB,KAAKuqE,UACNp1B,EAASkkB,MAAQz2D,EACjBw0B,EAAS,QAGb+d,EAASxrC,IAAImzC,EAAQ98C,KAAK2qE,gBAAgBnhE,KAAKxJ,OAE3CA,KAAK6qE,eACL3jE,EAAQ+uB,OAAS,CAAEhR,MAAO,eAAgB+9B,SAAU,KAAMt6C,OAAO,IAGrEue,EAAUkuB,EAAS/d,GAAQlwB,GACtBlH,KAAKuqE,SACNvqE,KAAKoK,QAAQ6gD,EAAU,CAAEhkC,QAASA,EAASic,KAAMljC,QAGrDA,KAAKyqE,QAAO,GAGTxjD,GAAWtkB,EAAEqpC,WAAW2J,UAAU1uB,WAG7CrB,WAAY,WAGR,OAFY5lB,KAAKmM,SAEJA,UAGjBs+D,OAAQ,SAAS/hE,GACb,GAAIA,IAAU9F,EAGV,OAAO5C,KAAKuqE,QAFZvqE,KAAKuqE,QAAU7hE,GAMvB4kD,gBAAiB,SAASroC,GACtB,OAAOikC,GAAMnhD,GAAGulD,gBAAgB/iD,KAAKvK,KAAMilB,IACzB,aAAVA,GACU,YAAVA,GACU,gBAAVA,GACU,qBAAVA,KAIhB,SAAS6lD,GAAW1oE,GAChB,OAAO,WACH,IAAIyL,EAAO7N,KAAKq5D,MACZ9iD,EAASxI,GAAWhG,GAAG3F,GAAMgG,MAAMpI,KAAM4G,EAAM2D,KAAKlD,YAMxD,OAJIrH,KAAKq5D,OAASxrD,GACd7N,KAAK+qE,wBAGFx0D,GAIf,IAAIvI,GAAyBD,GAAWhL,OAAO,CAC3CoF,KAAM,SAASjB,GACX,IAAIg8B,EAAO8mC,GAAKtqE,OAAO,CACnBy1C,SAAUjuC,IAGVA,EAAQ+uB,SAAW/uB,EAAQs0D,kBAC3Bx7D,KAAKgrE,oBAAsB9jE,EAAQ+uB,OACnC/uB,EAAQ+uB,OAAS,MAGrBloB,GAAWhG,GAAGI,KAAKoC,KAAKvK,KAAM+C,GAAO,EAAM,GAAI,CAAEi0D,OAAQ,CAAE/N,UAAW/lB,EAAM4lB,MAAO5lB,IAAUh8B,IAE7FlH,KAAK+qE,yBAGTA,sBAAuB,WACnB,IAAI9iE,EAAOjI,KAEXiI,EAAKoxD,MAAM7vD,KAAKohD,GAAO,SAASjmD,GAC5BsD,EAAKmC,QAAQwgD,EAAOjmD,MAGxBsD,EAAKoxD,MAAM7vD,KAAKwhD,GAAa,SAASrmD,GAClCsD,EAAKmC,QAAQ4gD,EAAarmD,OAIlCkyB,QAAS,WACL,QAAI72B,KAAKq5D,QACEr5D,KAAKq5D,MAAMxiC,WAAa72B,KAAKirE,qBAK5CA,iBAAkB,WACd,IAAIC,GAAY,EAMhB,OALAlrE,KAAKq5D,MAAM/3D,SAAQ,SAAS4hC,GACpBA,EAAK+mC,aAAe/mC,EAAKiS,SAASte,YAClCq0C,GAAY,MAGbA,GAGXpmB,KAAM,SAASj3C,GACX,IAAI0I,EAASxI,GAAWhG,GAAG+8C,KAAKv6C,KAAKvK,KAAM6N,GAY3C,OAVI7N,KAAKgrE,sBACDhrE,KAAKq5D,OAASr5D,KAAKq5D,MAAM7xD,OAAS,EAClCxH,KAAKi2B,OAAOj2B,KAAKgrE,sBAEjBhrE,KAAKkH,QAAQ+uB,OAASj2B,KAAKgrE,oBAC3BhrE,KAAK+5D,QAAU3H,GAAgBpyD,KAAKkH,QAAQ+uB,QAC5Cj2B,KAAKgrE,oBAAsB,OAI5Bz0D,GAGXwgB,OAAQ,SAASmM,GACb,IAEI3sB,EAFAqP,EAAasd,EAAKtd,aAClBkL,EAAa9wB,KAajB,OAVI4lB,GAAcA,EAAW0kD,gBACzBx5C,EAAalL,EAAWuvB,UAG5B5+B,EAASxI,GAAWhG,GAAGgvB,OAAOxsB,KAAKumB,EAAYoS,GAE3Ctd,IAAekL,EAAWjjB,OAAOrG,SACjCoe,EAAWqkD,aAAc,GAGtB1zD,GAGXwxC,QAAS+iB,GAAW,WAEpBj9D,KAAMi9D,GAAW,QAEjBlO,OAAQ,SAAS7jD,EAAO+vC,GACpB,IAAIljC,EAAa5lB,KAAKmM,SAOtB,OALIyZ,GAAcA,EAAW0kD,gBACzB1kD,EAAWqkD,aAAc,EACzBrkD,EAAW0kD,iBAGRv8D,GAAWhG,GAAG60D,OAAOryD,KAAKvK,KAAM+Y,EAAO+vC,IAGlD7yB,OAAQ,SAAS/G,GACb,GAAIA,IAAQtsB,EACP,OAAO5C,KAAK+5D,SAGZ/5D,KAAKkH,QAAQs0D,iBAAmBx7D,KAAKmrE,uBAAuBj8C,KAC7DA,EAAM,CAAEwyB,MAAO,KAAM+B,QAAS,CAACv0B,EAAK,CAAEjK,MAAO,eAAgB+9B,SAAU,SAAUt6C,OAAO,MAG5F1I,KAAKoK,QAAQ,SACbpK,KAAKolE,OAAO,CAAEnvC,OAAQ/G,EAAKg1B,KAAM,KAGrCinB,uBAAwB,SAASza,GAC7B,IAAIuD,EACAhR,EAAyBjjD,KAAKkH,QAAQ+7C,uBAI1C,OAFAyN,EAAczN,EAAyBtgD,EAAEI,OAAO,GAAIqvD,GAAgB1B,GAAc,CAAEzN,uBAAwBA,IAA4BmP,GAAgB1B,KAErG,IAA/BA,EAAYjN,QAAQj8C,QAKxCysD,EAAWjE,GAAMO,WAAWG,EAAa,CAAEF,QAAQ,IAEnDxwD,KAAKorE,0BAA0BnX,IACxB,IAPHj0D,KAAKorE,2BAA0B,WAAY,OAAO,MAC3C,IASdA,0BAA2B,SAASn1C,GAKjC,IAJA,IAAIxiB,EACA5F,EAAO7N,KAAKq5D,MACZ9iD,GAAS,EAEJ3M,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,KAChC6J,EAAU5F,EAAKjE,IAEHqgE,aACRx2D,EAAQo3D,aAAep3D,EAAQ0hC,SAASi2B,0BAA0Bn1C,GAC9DxiB,EAAQo3D,eACTp3D,EAAQo3D,aAAe50C,EAAOxiB,KAGlCA,EAAQo3D,aAAe50C,EAAOxiB,GAG9BA,EAAQo3D,eACRt0D,GAAS,GAGjB,OAAOA,GAGX80D,MAAO,SAASj0C,EAAQ1uB,GACpB,IAAIkB,EAAKpC,EAAQ07B,EAAMiS,EACnBtnC,EAAO7N,KAAKq5D,MAEhB,GAAKxrD,EAAL,CAMA,GAFAq1B,EAAOn1B,GAAWhG,GAAGqvB,GAAQ7sB,KAAKvK,KAAM0I,GAGpC,OAAOw6B,EAKX,IAAKt5B,EAAM,EAAGpC,GAFdqG,EAAO7N,KAAKo8D,UAAUp8D,KAAKq5D,QAEC7xD,OAAQoC,EAAMpC,EAAQoC,IAG9C,IAFAurC,EAAWtnC,EAAKjE,GAAKurC,oBAEKnnC,KAI1Bk1B,EAAOiS,EAAS/d,GAAQ1uB,IAGpB,OAAOw6B,IAKnB3T,IAAK,SAASI,GACV,OAAO3vB,KAAKqrE,MAAM,MAAO17C,IAG7B2sC,SAAU,SAASjP,GACf,OAAOrtD,KAAKqrE,MAAM,WAAYhe,MAItC,SAASie,GAAUC,EAAM38C,GACrB,IACIhlB,EACApC,EAEA+hD,EAKAva,EACArf,EACA67C,EACA9+C,EACAyoB,EAbA/gB,EAAQzxB,EAAE4oE,GAAMp2B,WAGhBtnC,EAAO,GAEP49D,EAAY78C,EAAO,GAAG3J,MACtBymD,EAAW98C,EAAO,IAAMA,EAAO,GAAG3J,MAClC0mD,EAAsB/8C,EAAO,IAAMA,EAAO,GAAG3J,MAC7C2mD,EAAgBh9C,EAAO,IAAMA,EAAO,GAAG3J,MAO3C,SAASkP,EAASmyB,EAAYn2B,GAC1B,OAAOm2B,EAAWrwB,OAAO9F,GAASljB,IAAIq5C,EAAWvwB,KAAK5F,IAG1D,IAAKvmB,EAAM,EAAGpC,EAAS4sB,EAAM5sB,OAAQoC,EAAMpC,EAAQoC,IAC/C2/C,EAAS,CAAEghB,SAAS,GAGpBiB,GAFAx8B,EAAO5a,EAAM0D,GAAGluB,IAEC,GAAGmgD,WAEpBwhB,GADAp2B,EAAWnG,EAAKmG,YACAlf,OAAO,MACvBkf,EAAWA,EAASlf,OAAO,aAE3BtG,EAAKqf,EAAKlsB,KAAK,cAGXymC,EAAO55B,GAAKA,GAGZ67C,IACAjiB,EAAOkiB,GAAmC,GAAtBD,EAAU91C,SAAgB81C,EAAU7nC,UAAYwR,EAASvU,QAG7E8qC,IACAniB,EAAOmiB,GAAYv3C,EAASghB,EAAU,KAAKryB,KAAK,SAGhD8oD,IACAriB,EAAOqiB,GAAiBz3C,EAASghB,EAAU,OAAOryB,KAAK,QAGvD6oD,IACAj/C,EAAYyH,EAASghB,EAAU,aAAahmB,KAAK,aACjDo6B,EAAOoiB,GAAuBj/C,GAAa/rB,EAAM6iC,KAAK9W,EAAUjqB,QAAQ,WAAY,MAGpF8oE,EAAK/jE,SACL+hD,EAAOn1B,MAAQk3C,GAAUC,EAAKzzC,GAAG,GAAIlJ,IAGJ,QAAjCogB,EAAKlsB,KAAK,sBACVymC,EAAO0gB,aAAc,GAGzBp8D,EAAKlM,KAAK4nD,GAGd,OAAO17C,EAGXG,GAAuBg5C,OAAS,SAAS9/C,GAGrC,IAAI4pB,GAFJ5pB,EAAUA,GAAWA,EAAQvF,KAAO,CAAEkM,KAAM3G,GAAYA,IAE5B,GACxB2G,EAAOijB,EAAWjjB,KAClB+gB,EAASkC,EAAWlC,OACpB28C,EAAOz6C,EAAWy6C,KAEtB,OAAI19D,GAAQA,EAAKg+D,YACNh+D,EAAKg+D,aAGXh+D,IAAQ+gB,GAAWkC,EAAW00B,WAC3B+lB,IACA19D,EAAOy9D,GAAUC,EAAM38C,IAI/BkC,EAAWjjB,KAAOA,EAEXijB,aAAsB9iB,GAAyB8iB,EAAa,IAAI9iB,GAAuB8iB,KAGlG,IAAIg7C,GAASnrE,EAAM2I,WAAWvG,OAAO,CACjCoF,KAAM,SAAS2oB,EAAYi7C,EAAUC,GACjCrrE,EAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,MAE9BA,KAAKisE,cAAe,EACpBjsE,KAAK8wB,WAAaA,EAClB9wB,KAAK8mE,UAAYkF,EAEjB,IAAIp+B,EAAS5tC,KAEb8wB,EAAWtnB,KAAK,UAAU,WACtBokC,EAAOkxB,aAGXhuC,EAAWtnB,KAAK,SAAS,WACrBokC,EAAOs+B,YAGXlsE,KAAKmsE,sBAELnsE,KAAKosE,YAAYL,IAGrBK,YAAa,SAASL,GAClB/rE,KAAK+rE,SAAWA,EAChB/rE,KAAKqsE,gBAGT5gB,GAAI,SAAS1yC,GACT,IAAIkrC,EAAWjkD,KAAKikD,SAChBqoB,GAAc,EAElB,OAAIvzD,GAAS/Y,KAAK4mD,SACd5mD,KAAKoK,QAAQ,aAAc,CAAE2O,MAAOA,IAC7B,MAGN/Y,KAAKq8D,UAGNr8D,KAAKq8D,YAEDtjD,EAAQ/Y,KAAKusE,YAAcxzD,GAAS/Y,KAAKykD,KAAOR,KAChDqoB,EAActsE,KAAK4zD,MAAMvwD,KAAKkN,MAAMwI,EAAQkrC,GAAYA,IAIxDlrC,IAAU/Y,KAAKwsE,mBACfxsE,KAAKo5D,YAILrgD,IAAU/Y,KAAKysE,iBACfzsE,KAAK4zD,MAAM5zD,KAAK0sE,cAAc,GAGzB3zD,IAAU/Y,KAAK2sE,kBACpB3sE,KAAK4zD,MAAM5zD,KAAK4sE,eAGX7zD,IAAU/Y,KAAK6sE,oBAChB7sE,KAAK+c,SAAW/c,KAAKykD,KACrBzkD,KAAK4zD,MAAM5zD,KAAK8sE,kBAEhB9sE,KAAK4zD,MAAM5zD,KAAK+sE,oBAIpBT,EACOtsE,KAAK8wB,WAAW26B,GAAG1yC,EAAQ/Y,KAAKusE,aAEvCvsE,KAAKoK,QAAQ,aAAc,CAAE2O,MAAOA,IAC7B,YAhCf,EAFU/Y,KAAK8wB,WAAW4G,OAAO3e,IAuCrCpD,QAAS,SAASq5B,GACd,OAAOhvC,KAAK8wB,WAAWjjB,OAAO8H,QAAQq5B,GAAQhvC,KAAKusE,YAGvD3lB,MAAO,WACH,OAAO3tC,SAASjZ,KAAK8wB,WAAW81B,QAAS,KAG7Cye,KAAM,WACF,IAAIz3B,EAAS5tC,KACTikD,EAAWrW,EAAOqW,SAClBlnC,EAAS6wB,EAAO6W,KAAO7W,EAAOm+B,SAAW9nB,EACzCsiB,EAAWnjE,EAAKwV,IAAIxV,EAAKmN,MAAMwM,EAASknC,GAAW,GAAKA,EAE5DjkD,KAAK+c,OAASA,EACd/c,KAAK8wB,WAAWg2C,SAASP,EAAUtiB,GAAU,WACzCrW,EAAOo/B,WAAWjwD,GAAQ,OAIlC62C,MAAO,SAAS72C,EAAQkwD,GACpB,GAAIjtE,KAAK+c,SAAWA,EAChB,OAAO,EAGX,IAAI6wB,EAAS5tC,KACTikD,EAAWjkD,KAAKikD,SAChBsiB,EAAWnjE,EAAKwV,IAAIxV,EAAKmN,MAAMwM,EAASknC,GAAW,GAAKA,EACxDnzB,EAAa9wB,KAAK8wB,WAMtB,OAJIm8C,IACA1G,GAAYtiB,GAGZnzB,EAAWo1C,QAAQnpD,EAAQknC,IAC3BjkD,KAAK+c,OAASA,EACd/c,KAAKqsE,eACLrsE,KAAKgtE,WAAWjwD,IACT,IACA/c,KAAK8mE,WACZh2C,EAAWg2C,SAASP,EAAUtiB,GAAU,WACpCrW,EAAO7wB,OAASA,EAChB6wB,EAAOy+B,eACPz+B,EAAOo/B,WAAWjwD,GAAQ,OAEvB,IAMfmwD,eAAgB,WACZ,IAAInwD,EAAS/c,KAAK+c,OAClB/c,KAAK+c,OAAS,KACd/c,KAAK4zD,MAAM72C,IAGf/a,QAAS,WACLhC,KAAKiK,UAGTmvD,UAAW,WACP,IAAIxrB,EAAS5tC,KACTikD,EAAWjkD,KAAKikD,SAChBkpB,EAAiBntE,KAAKykD,KAAOR,EAC7BnzB,EAAa9wB,KAAK8wB,WAEjBA,EAAWo1C,QAAQiH,EAAgBlpB,IAAcjkD,KAAKisE,eAAgBjsE,KAAK8mE,WAC5E9mE,KAAKisE,cAAe,EACpBjsE,KAAKoK,QAAQ,cAAe,CAAEq6C,KAAM0oB,EAAgBxoB,KAAMV,IAE1DnzB,EAAWg2C,SAASqG,EAAgBlpB,GAAU,WAC1CrW,EAAOq+B,cAAe,EACtBr+B,EAAOxjC,QAAQ,aAAc,CAAEq6C,KAAM0oB,EAAgBxoB,KAAMV,SAKvE+oB,WAAY,SAASjwD,EAAQqwD,GACrBptE,KAAK+c,SAAWA,IAIpB/c,KAAKusE,WAAaxvD,EAClB/c,KAAKqtE,WAAaD,EAClBptE,KAAK8wB,WAAW8iC,MAAM72C,EAAQ/c,KAAKikD,UACnCjkD,KAAK8wB,WAAWw1C,6BAGpB4F,OAAQ,WACJlsE,KAAKstE,cAAe,GAGxBxO,QAAS,WACL,IAAIhuC,EAAa9wB,KAAK8wB,WAEtB9wB,KAAKwH,OAASxH,KAAKq8D,UAAYvrC,EAAWs1C,YAAYz6D,IAAMmlB,EAAW4G,OAAOlwB,OAE1ExH,KAAKstE,eACLttE,KAAKmsE,sBACLnsE,KAAKqsE,eACLrsE,KAAKstE,cAAe,EACpBttE,KAAKoK,QAAQ,QAAS,CAAE2S,OAAQ/c,KAAK+c,UAGzC/c,KAAKoK,QAAQ,UAETpK,KAAKqtE,YACLrtE,KAAKoK,QAAQ,iBAGVpK,KAAKqtE,YAGhBlB,oBAAqB,WACjB,IAAIr7C,EAAa9wB,KAAK8wB,WAEtB9wB,KAAKutE,cAAgBz8C,EAAWu1C,eAChCrmE,KAAKusE,WAAavsE,KAAK+c,OAAS+T,EAAW2zB,QAAU,EACrDzkD,KAAKikD,SAAWnzB,EAAWmzB,WAC3BjkD,KAAKq8D,UAAYvrC,EAAW5pB,QAAQq0D,cAGxC8Q,aAAc,WACV,IAAIpoB,EAAWjkD,KAAKikD,SAChBlnC,EAAS/c,KAAK+c,OACdgvD,EAAW/rE,KAAK+rE,SAChBtnB,EAAOphD,KAAK4iE,KAAKlpD,EAASknC,GAAYA,EAE1CjkD,KAAKykD,KAAOA,EACZzkD,KAAKysE,iBAAmBhoB,EAAOR,EAAW,EAC1CjkD,KAAK2sE,kBAAoBloB,EAAOsnB,EAAW,EAC3C/rE,KAAKwsE,kBAAoB/nB,EAAOphD,KAAKkN,MAAM0zC,EAAW,EAAI,GAC1DjkD,KAAK6sE,kBAAoB7sE,KAAK+c,OAAS,EAEvC/c,KAAK0sE,aAAejoB,EAAOR,EAAW8nB,EACtC/rE,KAAK4sE,cAAgBnoB,EACrBzkD,KAAK8sE,iBAAmB/vD,EAASgvD,EACjC/rE,KAAK+sE,kBAAoBtoB,EAAOR,KAIpCupB,GAAc7sE,EAAM2I,WAAWvG,OAAO,CACtCoF,KAAM,SAAS2oB,EAAY28C,GACvB,IAAIC,EAAc1tE,KAElBW,EAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKmjE,GAE9B1tE,KAAK8wB,WAAaA,EAClB9wB,KAAKytE,UAAYA,EACjBztE,KAAKk6D,OAAS,EAEdl6D,KAAK4tC,OAAS,IAAIk+B,GAAOh7C,EAAwB,EAAZ28C,GAErCztE,KAAK4tC,OAAOpkC,KAAK,CACbmkE,WAAc,SAAShpE,GACnB+oE,EAAYtjE,QAAQ,aAAc,CAAE2O,MAAOpU,EAAEoU,SAEjD60D,YAAe,SAASjpE,GACpB+oE,EAAYtjE,QAAQ,cAAe,CAAEq6C,KAAM9/C,EAAE8/C,KAAME,KAAMhgD,EAAEggD,QAE/DkpB,WAAc,SAASlpE,GACnB+oE,EAAYtjE,QAAQ,aAAc,CAAEq6C,KAAM9/C,EAAE8/C,KAAME,KAAMhgD,EAAEggD,QAE9DlP,MAAS,WACLi4B,EAAYxT,OAAS,EACrBwT,EAAYtjE,QAAQ,UAExBmf,OAAU,WACNmkD,EAAYxT,OAAS72D,KAAK4iE,KAAKjmE,KAAKwH,OAASkmE,EAAYD,WACzDC,EAAYtjE,QAAQ,SAAU,CAAEw8C,MAAO8mB,EAAY9mB,QAAS7pC,OAAQ/c,KAAK+c,aAKrFmwD,eAAgB,WACZltE,KAAK4tC,OAAOs/B,kBAGhBzhB,GAAI,SAAS1yC,GACT,IAIIi2B,EAJApB,EAAS5tC,KAAK4tC,OACd6W,EAAO1rC,EAAQ/Y,KAAKytE,UACpB9oB,EAAO3kD,KAAKytE,UACZ/1C,EAAO,GAGPkW,EAAO7wB,OAAS0nC,GAChB7W,EAAO6d,GAAG7d,EAAO7wB,OAAS,GAG9B,IAAK,IAAIxV,EAAI,EAAGA,EAAIo9C,GAGH,QAFb3V,EAAOpB,EAAO6d,GAAGhH,EAAOl9C,IADFA,IAOtBmwB,EAAK/1B,KAAKqtC,GAGd,OAAOtX,GAGXkvB,MAAO,WACH,OAAO5mD,KAAKk6D,QAGhBl4D,QAAS,WACLhC,KAAK4tC,OAAO5rC,UACZhC,KAAKiK,YAIblH,GAAO,EAAMpC,EAAMkN,KAAM,CACrBw8C,QAAS,CACLsB,KAAMoL,IAEV/G,MAAOA,GACPjiD,WAAYA,GACZC,uBAAwBA,GACxBg8D,KAAMA,GACNlb,SAAUA,GACVzD,iBAAkBA,EAClBz9C,gBAAiBA,EACjBE,oBAAqBA,EACrB6nD,eAAgBA,GAChBC,gBAAiBA,GACjBC,MAAOA,GACPkB,WAAYA,GACZ7N,MAAOA,GACP4iB,OAAQA,GACR0B,YAAaA,KA/+MrB,CAi/MG1sE,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfmtE,EAASntE,EAAMitB,WACftkB,EAAa3I,EAAM2I,WACnB+hD,EAAmB1qD,EAAMkN,KAAKw9C,iBAC9Bz9C,EAAkBjN,EAAMkN,KAAKD,gBAC7BsD,EAAW,GAAGA,SACd68D,EAAU,GACVnmE,EAAQjH,EAAMiH,MACdomE,EAAQ,QACRC,EAAS,SACTC,EAAS,SACTC,EAAU,UAEVC,GAAgB,EAEhBtxB,EAAS,UAEb,WACI,IAAI53C,EAAIkK,SAAS0O,cAAc,KAE/B,WACW5Y,EAAE6H,KACX,MAAOpI,GACLypE,GAAgB,GANxB,GAUA,IAAIC,EAAU/kE,EAAWvG,OAAQ,CAC7BoF,KAAM,SAASkwB,EAAS+W,GACpB,IAAInnC,EAAOjI,KAEXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKqF,OAAS+qB,EAAQ,GACtBpwB,EAAKowB,QAAUA,EACfpwB,EAAKmnC,KAAOA,EACZnnC,EAAKqmE,aAAe,GACpBrmE,EAAKqmE,aAAal/B,IAAQ,EAC1BnnC,EAAKymC,WAAazmC,EAAKqF,kBAAkBhE,EAEzCrB,EAAKsmE,QAAU,SAAS5pE,GACpBsD,EAAKqmE,aAAa3pE,EAAEsgB,QAAS,GAG7Bhd,EAAKymC,aACLzmC,EAAK62D,QAAU,SAASn6D,GACpBsD,EAAKk2C,OAAOx5C,IAGhBsD,EAAKqF,OAAO9D,KAAKszC,EAAQ70C,EAAK62D,WAItC0P,SAAU,WACN,IAAIn2C,EAAUr4B,KAAKq4B,QACf3vB,EAAQ1I,KAAKuvB,MAEjB,GAAI7mB,GAAgC,mBAAhBA,EAAMyD,OAAsB,CAC5C,IAAIA,EAASzD,EAAMyD,SAEfxJ,EAAE0yB,QAAQlpB,EAAQksB,GAAW,IAC7BA,EAAU,CAAClsB,GAAQkR,OAAOgb,IAIlC,OAAOA,GAGX8lB,OAAQ,SAASx5C,GACb,IAAI8pE,EACAh3D,EACAwN,EAAQtgB,EAAEsgB,MACVhd,EAAOjI,KAEX,GAAkB,SAAdiI,EAAKmnC,KACLnnC,EAAKmC,QAAQ0yC,EAAQn4C,QAErB,IAAK8pE,KAAcxmE,EAAKqmE,aACpB,GAAkC,IAA9BG,EAAW94D,QAAQsP,OACpBxN,EAAKg3D,EAAW3jE,OAAOma,EAAMzd,UAEX,MAAPiQ,GAAqB,MAAPA,GAAY,CAChCxP,EAAKmC,QAAQ0yC,EAAQn4C,GACrB,QAOpB2Q,MAAO,SAAShI,GACZA,EAAO9D,KAAK,MAAOxJ,KAAKuuE,UAG5B3mD,KAAM,SAASta,GACXA,EAAOrD,OAAO,MAAOjK,KAAKuuE,UAG9Bh/C,IAAK,WAED,IAAItnB,EAAOjI,KACPsN,EAASrF,EAAKqF,OACdyL,EAAQ,EACRq2B,EAAOnnC,EAAKmnC,KACZ74B,EAASjJ,EAEb,IAAKrF,EAAKymC,WACN,OAAOn4B,EAQX,IALAtO,EAAKqN,MAAMrN,EAAKqF,QAEhBiJ,EAASjJ,EAAOiiB,IAAI6f,GAGb74B,IAAW3T,GAAe0K,IAE7BA,EAASrF,EAAKowB,UAAUtf,cAEFsyC,IAClB90C,EAASjJ,EAAOiiB,IAAI6f,IAK5B,GAAI74B,IAAW3T,EAGX,IAFA0K,EAASrF,EAAKqF,OAEPiJ,IAAW3T,GAAe0K,IAC7BA,EAASA,EAAOnB,oBAEMk/C,IAClB90C,EAASjJ,EAAOiiB,IAAI6f,IAsChC,MAhCsB,mBAAX74B,KACPwC,EAAQq2B,EAAK12B,YAAY,MAGb,IACRpL,EAASA,EAAOiiB,IAAI6f,EAAKpkC,UAAU,EAAG+N,KAI1C9Q,EAAKqN,MAAMhI,GAGPiJ,EADAjJ,IAAWrF,EAAKqF,OACPiJ,EAAOhM,KAAK+C,EAAQrF,EAAKqF,QAEzBiJ,EAAOhM,KAAK+C,GAGzBrF,EAAK2f,KAAKta,IAIVA,GAAUA,IAAWrF,EAAKqF,SAE1BrF,EAAKymE,cAAgBphE,EAGrBA,EAAOrD,OAAO6yC,EAAQ70C,EAAK62D,SACpBt1D,KAAKszC,EAAQ70C,EAAK62D,UAG7B72D,EAAK2f,KAAK3f,EAAKqF,QAERiJ,GAGXiZ,IAAK,SAAS9mB,GACV,IAAI4E,EAAStN,KAAK0uE,eAAiB1uE,KAAKsN,OAEpC2X,EAAQtkB,EAAMmuB,OAAO9uB,KAAKovC,KAAlBzuC,CAAwB2M,GAEf,mBAAV2X,EACH3X,IAAWtN,KAAKsN,OAChB2X,EAAM1a,KAAK+C,EAAQtN,KAAKsN,OAAQ5E,GAEhCuc,EAAM1a,KAAK+C,EAAQ5E,GAGvB4E,EAAOkiB,IAAIxvB,KAAKovC,KAAM1mC,IAI9B1G,QAAS,WACDhC,KAAK0uC,aACL1uC,KAAKsN,OAAOrD,OAAO6yC,EAAQ98C,KAAK8+D,SAC5B9+D,KAAK0uE,eACL1uE,KAAK0uE,cAAczkE,OAAO6yC,EAAQ98C,KAAK8+D,UAI/C9+D,KAAKiK,YAIT0kE,EAAeN,EAAQtrE,OAAQ,CAC/BwsB,IAAK,WACD,IAGIzlB,EAHAwD,EAAStN,KAAKsN,OACd8hC,EAAOpvC,KAAKovC,KACZr2B,EAAQ,EAKZ,IAFAjP,EAAUwD,EAAOiiB,IAAI6f,IAEbtlC,GAAWwD,IACfA,EAAStN,KAAKq4B,UAAUtf,cAEFsyC,IAClBvhD,EAAUwD,EAAOiiB,IAAI6f,IAI7B,GAAKtlC,EAIL,OAAOA,EAAQN,KAAK8D,MAIxBshE,EAAkBP,EAAQtrE,OAAQ,CAClCoF,KAAM,SAASmF,EAAQ8hC,EAAMv/B,GAGzBw+D,EAAQtmE,GAAGI,KAAKoC,KAFLvK,KAEgBsN,EAAQ8hC,GAFxBpvC,KAIN6P,SAAWA,GAGpBD,OAAQ,SAASlH,GACb,IAAIoH,EAQJ,OANA9P,KAAKsV,MAAMtV,KAAKsN,QAEhBwC,EAAOnP,EAAMiP,OAAO5P,KAAK6P,SAAUnH,GAEnC1I,KAAK4nB,KAAK5nB,KAAKsN,QAERwC,KAIX++D,EAASjnE,EAAM7E,OAAO,CACtBoF,KAAM,SAAS0D,EAASijE,EAAU5nE,GAC9BlH,KAAK6L,QAAUA,EACf7L,KAAK8uE,SAAWA,EAChB9uE,KAAKkH,QAAUA,GAGnBsC,KAAM,SAASulE,EAAShnC,GACpB,IAAI9/B,EAAOjI,MAEX+uE,EAAUhnC,EAAYgnC,EAAQhnC,GAAagnC,GAEnCvlE,KAAKszC,GAAQ,SAASn4C,GAC1BsD,EAAK2V,QAAQmqB,GAAapjC,MAG9BsD,EAAK2V,QAAQmqB,IAGjB/lC,QAAS,eAITgtE,EAAcH,EAAO9rE,OAAO,CAC5BgiD,SAAU,WAEN,OADe/kD,KAAK6L,QAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,SAAWxrB,KAAK6L,QAAQnG,MAAQ,QAC9E4S,eAGpB22D,YAAa,WACT,OAAOjvE,KAAKkvE,YAAYlvE,KAAK6L,QAAQnD,MAAO1I,KAAK+kD,aAGrDmqB,YAAa,SAASxmE,EAAOq8C,GAezB,MAdgB,QAAZA,EACAr8C,EAAQ/H,EAAM4c,UAAU7U,EAAO,cACZ,kBAAZq8C,EACPr8C,EAAQ/H,EAAM4c,UAAU7U,EAAO,CAAC,sBAAuB,qBACpC,UAAZq8C,EACPr8C,EAAQ/H,EAAMoI,WAAWL,GACN,WAAZq8C,IACPr8C,EAAQA,EAAM4P,cAEV5P,EAD4B,OAA5B/H,EAAMoI,WAAWL,GACT6J,QAAQ5R,EAAMoI,WAAWL,IAEA,SAAxBA,EAAM4P,eAGhB5P,KA+kBf,SAASymE,EAAkBC,EAAa/gB,EAAWt/B,GAC/C,OAAO8/C,EAAO9rE,OAAO,CACjBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B,IAAIe,EAAOjI,KAEX6uE,EAAO9mE,GAAGI,KAAKoC,KAAKtC,EAAM6qB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDe,EAAK6qB,OAASA,EACd7qB,EAAKonE,aAAepnE,EAAKqnE,YAAY9lE,KAAKvB,GAC1CA,EAAKsnE,WAAatnE,EAAKunE,UAAUhmE,KAAKvB,GACtCA,EAAKwnE,YAAcxnE,EAAKynE,WAAWlmE,KAAKvB,IAG5CynE,WAAY,SAAS/qE,GACjBgrE,EAAYhrE,EAAEqqC,KAAK,GAAIrqC,EAAEkJ,KAAM7N,KAAK4vE,IAAIjrE,EAAE6mB,IAAK,CAAC7mB,EAAEkJ,MAAMwP,OAAOrd,KAAK8uE,SAASM,GAAaZ,cAG9Fc,YAAa,SAAS3qE,GAClB,IAAIiF,EACApC,EACAsrB,EAAS9yB,KAAK8yB,OACdsB,EAAQzvB,EAAEkrE,cAAgB/8C,EAAOsB,QAErC,IAAKxqB,EAAM,EAAGpC,EAAS4sB,EAAM5sB,OAAQoC,EAAMpC,EAAQoC,IAC/CkmE,EAAkB17C,EAAMxqB,IAAM,IAItCgmE,IAAK,SAASpkD,GACVA,EAAKA,GAAM7qB,EAAMgpB,GACjB,IAAIomD,EAAM,CAAEpvE,EAAMgpB,GAAIhpB,EAAMmpB,QAAQH,GAAIhpB,EAAMkpB,OAAOF,IAIrD,OAHAomD,EAAIvlE,OAAO7H,EAAE0yB,QAAQ7J,EAAIukD,GAAM,GAC/BA,EAAI5lE,QAAQqhB,GAEL7qB,EAAMk1B,oBAAoBk6C,IAGrCP,UAAW,SAAS7qE,GAChB,IAAIiF,EACApC,EAIAkwB,EACAW,EAJAvF,EAAS9yB,KAAK8yB,OACdsB,EAAQzvB,EAAEqrE,YAAcl9C,EAAOsB,QAC/BtD,EAAagC,EAAOu7B,GAGpB4hB,EAAMtvE,EAAMkN,KAAKG,uBAErB,KAAIiiE,GAAOn/C,aAAsBm/C,IAM7B77C,EAAM5sB,OAIN,IAHAkwB,EAAO/yB,EAAEurE,gBAAkBp/C,EAAWkD,WACtCqE,EAAUr4B,KAAK8uE,SAASM,GAAaZ,WAEhC5kE,EAAM,EAAGpC,EAASkwB,EAAKlwB,OAAQoC,EAAMpC,EAAQoC,IAC1CwqB,EAAMxqB,IACN+lE,EAAYv7C,EAAMxqB,GAAM8tB,EAAK9tB,GAAM5J,KAAK4vE,IAAIjrE,EAAE6mB,IAAK,CAACkM,EAAK9tB,IAAMyT,OAAOgb,KAMtFza,QAAS,SAASjZ,GACd,IACI2I,EAEA84B,EAAQ+pC,EAHRloE,EAAOjI,KAEP8yB,EAAS7qB,EAAK6qB,QAGlBnuB,EAAIA,GAAK,IAEFqoC,SACH/kC,EAAKjG,UAEL8wB,EAAOtpB,KAAK,cAAevB,EAAKonE,cAChCv8C,EAAOtpB,KAAK,YAAavB,EAAKsnE,YAC9Bz8C,EAAOtpB,KAAK,aAAcvB,EAAKwnE,aAE/BniE,EAASrF,EAAK6mE,SAASM,GAAa7/C,MAEhCuD,EAAOu7B,aAAsB1tD,EAAMkN,KAAKE,YAAc+kB,EAAOu7B,IAAc/gD,IACvEA,aAAkB3M,EAAMkN,KAAKE,WAC7B+kB,EAAO/D,GAAQzhB,GACRA,GAAUA,EAAOu+D,YACxB/4C,EAAO/D,GAAQzhB,EAAOu+D,cAEtBzlC,EAASzlC,EAAMgpB,GAAGymD,QAAUt9C,aAAkBnyB,EAAMgpB,GAAGymD,OACvDD,EAAcxvE,EAAMgpB,GAAG0mD,aAAev9C,aAAkBnyB,EAAMgpB,GAAG0mD,YAClD1vE,EAAMgpB,GAAG2mD,cAAgBx9C,aAAkBnyB,EAAMgpB,GAAG2mD,aAK/Dx9C,EAAOy9C,SAASliB,GAAWxgD,KAAKP,GAFhCwlB,EAAOu7B,GAAWxgD,KAAKP,GAKvBrF,EAAK6mE,SAASpmE,QAAU09B,GAAU+pC,IAClCr9C,EAAOpqB,MAAM8nE,EAAwBvoE,EAAK6mE,SAASpmE,MAAM6mB,MAAOuD,EAAO5rB,QAAQupE,qBAOnGzuE,QAAS,WACL,IAAI8wB,EAAS9yB,KAAK8yB,OAElBA,EAAO7oB,OAAO,cAAejK,KAAKqvE,cAClCv8C,EAAO7oB,OAAO,YAAajK,KAAKuvE,YAChCz8C,EAAO7oB,OAAO,aAAcjK,KAAKyvE,gBA1rB7C1B,EAAQjrD,KAAO+rD,EAAO9rE,OAAO,CACzB6a,QAAS,SAASrM,GACdvR,KAAK6L,QAAQgZ,aAAatT,EAAKvR,KAAK8uE,SAAShsD,KAAKvR,GAAKge,UAI/Dw+C,EAAQnhE,IAAMiiE,EAAO9rE,OAAO,CACxBoF,KAAM,SAAS0D,EAASijE,EAAU5nE,GAC9B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASijE,EAAU5nE,GAC7ClH,KAAK+nB,QAAU,IAEnBnK,QAAS,SAAS8O,GACd,IAAI7gB,EAAUlJ,EAAE3C,KAAK6L,SACjBkjE,EAAU/uE,KAAK8uE,SAASliE,IAAI8f,IACjB1sB,KAAK+nB,QAAQ2E,GAAaqiD,EAAQx/C,OAE7C1jB,EAAQ0Y,SAASmI,GAEjB7gB,EAAQsgB,YAAYO,MAKhCqhD,EAAQthE,MAAQoiE,EAAO9rE,OAAO,CAC1B6a,QAAS,SAASrM,GACdvR,KAAK6L,QAAQY,MAAM8E,GAAOvR,KAAK8uE,SAASriE,MAAM8E,GAAKge,OAAS,MAIpEw+C,EAAQ7mD,QAAU2nD,EAAO9rE,OAAO,CAC5B6a,QAAS,WACD5d,KAAK8uE,SAAS5nD,QAAQqI,MACtBvvB,KAAK6L,QAAQm8B,gBAAgB,YAE7BhoC,KAAK6L,QAAQgZ,aAAa,WAAY,eAKlDkpD,EAAQ2C,SAAW7B,EAAO9rE,OAAO,CAC9B6a,QAAS,WACA5d,KAAK8uE,SAAS4B,SAASnhD,MACvBvvB,KAAK6L,QAAQgZ,aAAa,WAAY,YAEtC7kB,KAAK6L,QAAQm8B,gBAAgB,eAKzC+lC,EAAQ71C,SAAW22C,EAAO9rE,OAAO,CAC7B6a,QAAS,WACD5d,KAAK8uE,SAAS52C,SAAS3I,MACvBvvB,KAAK6L,QAAQgZ,aAAa,WAAY,YAEtC7kB,KAAK6L,QAAQm8B,gBAAgB,eAKzC+lC,EAAQ1jE,OAASwkE,EAAO9rE,OAAO,CAC3BoF,KAAM,SAAS0D,EAASijE,EAAU5nE,GAC9B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASijE,EAAU5nE,GAC7ClH,KAAK0J,SAAW,IAGpBkU,QAAS,SAASrM,GACd,IAAI1F,EAAUlJ,EAAE3C,KAAK6L,SACjBkjE,EAAU/uE,KAAK8uE,SAASzkE,OAAOkH,GAC/BzH,EAAU9J,KAAK0J,SAAS6H,GAExBzH,GACA+B,EAAQotB,IAAI1nB,EAAKzH,GAGrBA,EAAU9J,KAAK0J,SAAS6H,GAAOw9D,EAAQx/C,MAEvC1jB,EAAQod,GAAG1X,EAAKw9D,EAAQzhE,OAAQxD,IAGpC9H,QAAS,WACL,IACI8H,EADA+B,EAAUlJ,EAAE3C,KAAK6L,SAGrB,IAAK/B,KAAW9J,KAAK0J,SACjBmC,EAAQotB,IAAInvB,EAAS9J,KAAK0J,SAASI,OAK/CikE,EAAQntC,KAAOiuC,EAAO9rE,OAAO,CACzB6a,QAAS,WACL,IAAIgjB,EAAO5gC,KAAK8uE,SAASluC,KAAKrR,MAC1BohD,EAAa3wE,KAAK6L,QAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,WAAa,GACjE,MAARoV,IACAA,EAAO,IAGXj+B,EAAE3C,KAAK6L,SAAS+0B,KAAKjgC,EAAMuQ,SAAS0vB,EAAM+vC,OAIlD5C,EAAQzhE,QAAUuiE,EAAO9rE,OAAO,CAC5B6a,QAAS,WACD5d,KAAK8uE,SAASxiE,QAAQijB,MACtBvvB,KAAK6L,QAAQY,MAAMI,QAAU,GAE7B7M,KAAK6L,QAAQY,MAAMI,QAAU,UAKzCkhE,EAAQ6C,UAAY/B,EAAO9rE,OAAO,CAC9B6a,QAAS,WACA5d,KAAK8uE,SAAS8B,UAAUrhD,MAGzBvvB,KAAK6L,QAAQY,MAAMI,QAAU,OAF7B7M,KAAK6L,QAAQY,MAAMI,QAAU,MAOzCkhE,EAAQj+D,KAAO++D,EAAO9rE,OAAO,CACzB6a,QAAS,WACL5d,KAAK6L,QAAQmS,UAAYhe,KAAK8uE,SAASh/D,KAAKyf,SAIpDw+C,EAAQrlE,MAAQsmE,EAAYjsE,OAAO,CAC/BoF,KAAM,SAAS0D,EAASijE,EAAU5nE,GAC9B8nE,EAAYjnE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASijE,EAAU5nE,GAElDlH,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChCA,KAAKyJ,UAAYvC,EAAQ2pE,aAAe/zB,EAExCn6C,EAAE3C,KAAK6L,SAASod,GAAGjpB,KAAKyJ,UAAWzJ,KAAK8+D,SAExC9+D,KAAK8wE,aAAc,GAGvB3yB,OAAQ,WACJn+C,KAAK8wE,YAAc9wE,KAAKyJ,WAAaqzC,EAErC98C,KAAK8uE,SAAc,MAAEt/C,IAAIxvB,KAAKivE,eAE9BjvE,KAAK8wE,aAAc,GAGvBlzD,QAAS,WACL,IAAK5d,KAAK8wE,YAAa,CACnB,IAAIpoE,EAAQ1I,KAAK8uE,SAAc,MAAEv/C,MAEpB,MAAT7mB,IACAA,EAAQ,IAGZ,IAAIhD,EAAO1F,KAAK+kD,WAEJ,QAARr/C,EACAgD,EAAQ/H,EAAMuQ,SAASxI,EAAO,cACf,kBAARhD,IACPgD,EAAQ/H,EAAMuQ,SAASxI,EAAO,wBAGlC1I,KAAK6L,QAAQnD,MAAQA,EAGzB1I,KAAK8wE,aAAc,GAGvB9uE,QAAS,WACLW,EAAE3C,KAAK6L,SAASotB,IAAIj5B,KAAKyJ,UAAWzJ,KAAK8+D,YAIjDiP,EAAQzgE,OAASuhE,EAAO9rE,OAAO,CAC3BoF,KAAM,SAAS0D,EAASijE,EAAU5nE,GAC9B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASijE,EAAU5nE,GAE7C,IAAIoG,EAAStN,KAAK8uE,SAASxhE,OAAOiiB,MAE9BjiB,aAAkB3M,EAAMkN,KAAKE,aAAmC,IAArB7G,EAAQ6pE,UACnDzjE,EAAO63D,SAIfvnD,QAAS,SAASjZ,GACd,IAAIsD,EAAOjI,KACPsN,EAASrF,EAAK6mE,SAASxhE,OAAOiiB,MAE9BjiB,aAAkBM,GAAmBN,aAAkB3M,EAAMkN,KAAKE,WAGlD,QAFhBpJ,EAAIA,GAAK,IAEHqoC,OACF/kC,EAAKgF,IAAItI,EAAEoU,MAAOpU,EAAEyvB,OACD,UAAZzvB,EAAEqoC,OACT/kC,EAAK8uB,OAAOpyB,EAAEoU,MAAOpU,EAAEyvB,OACJ,cAAZzvB,EAAEqoC,QACT/kC,EAAK2H,SAGT3H,EAAK2H,UAIb0mB,UAAW,WACP,IAAIzqB,EAAU7L,KAAK6L,QASnB,MAPsC,SAAlCA,EAAQosB,SAAS3f,gBACZzM,EAAQ09D,QAAQ,IACjB19D,EAAQqS,YAAY9O,SAAS0O,cAAc,UAE/CjS,EAAUA,EAAQ09D,QAAQ,IAGvB19D,GAGXgE,SAAU,WACN,IAAI3I,EAAUlH,KAAKkH,QACf2I,EAAW3I,EAAQ2I,SACnBooB,EAAWj4B,KAAKs2B,YAAY2B,SAAS3f,cAuBzC,OArBKzI,IAGOA,EAFQ,UAAZooB,EACI/wB,EAAQ8pE,YAAc9pE,EAAQukE,UACnB,SAAU59D,GACjB,IAAIojE,EAAYtwE,EAAMmuB,OAAO5nB,EAAQ8pE,YAAc9pE,EAAQukE,UAA3C9qE,CAAsDkN,GAClEqjE,EAAYvwE,EAAMmuB,OAAO5nB,EAAQukE,WAAavkE,EAAQ8pE,WAA1CrwE,CAAsDkN,GACtE,MAAQ,kBAAsBigE,EAAOmD,GAAc,KAASnD,EAAOoD,GAAc,aAG1E,SAAUrjE,GAAQ,MAAQ,WAAcigE,EAAOjgE,GAAS,aAEpD,SAAZoqB,EACI,SAAUpqB,GAAQ,MAAQ,WAAcigE,EAAOjgE,GAAS,cAChD,MAAZoqB,GAAgC,MAAZA,EAChB,SAAUpqB,GAAQ,MAAQ,OAAUigE,EAAOjgE,GAAS,SAEpD,SAAUA,GAAQ,MAAQ,GAAMigE,EAAOjgE,IAEtDgC,EAAWlP,EAAMkP,SAASA,IAGvBA,GAGX5C,IAAK,SAAS8L,EAAOqb,GACjB,IACIiE,EACAzuB,EACApC,EACAk8B,EAJA73B,EAAU7L,KAAKs2B,YAKfnvB,EAAQ0E,EAAQslE,WAAU,GAC1BC,EAAYvlE,EAAQspC,SAASp8B,GAIjC,GAFApW,EAAEwE,GAAO2I,KAAKnP,EAAMiP,OAAO5P,KAAK6P,WAAYukB,IAExCjtB,EAAMguC,SAAS3tC,OAGf,IAFA6wB,EAAUr4B,KAAK8uE,SAASxhE,OAAOkhE,WAE1B5kE,EAAM,EAAGpC,EAAS4sB,EAAM5sB,OAAQoC,EAAMpC,EAAQoC,IAC/C85B,EAAQv8B,EAAMguC,SAAS,GACvBtpC,EAAQwlE,aAAa3tC,EAAO0tC,GAAa,MACzCzB,EAAYjsC,EAAOtP,EAAMxqB,GAAM5J,KAAKkH,QAAQquB,MAAO,CAACnB,EAAMxqB,IAAMyT,OAAOgb,KAKnFtB,OAAQ,SAAShe,EAAOqb,GACpB,IAAIxqB,EAAKiC,EAAU7L,KAAKs2B,YAExB,IAAK1sB,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAAO,CACrC,IAAI85B,EAAQ73B,EAAQspC,SAASp8B,GAC7B+2D,EAAkBpsC,GAAO,GACrBA,EAAM9d,YAAc/Z,GACpBA,EAAQwS,YAAYqlB,KAKhC9zB,OAAQ,WACJ,IACIyoB,EACAzuB,EACApC,EAHA8F,EAAStN,KAAK8uE,SAASxhE,OAAOiiB,MAI9B1jB,EAAU7L,KAAKs2B,YACfzmB,EAAW7P,KAAK6P,WAEpB,GAAc,MAAVvC,EAYJ,GARIA,aAAkB3M,EAAMkN,KAAKE,aAC7BT,EAASA,EAAOoqB,QAGdpqB,aAAkBM,GAA8C,mBAA1BsD,EAAS3G,KAAK+C,KACtDA,EAAS,CAACA,IAGVtN,KAAK8uE,SAASj/D,UAKd,GAJAyhE,EAAsBzlE,GAAS,GAE/BlJ,EAAEkJ,GAASiE,KAAK9P,KAAK8uE,SAASj/D,SAASD,OAAOtC,IAE1CzB,EAAQspC,SAAS3tC,OAGjB,IAFA6wB,EAAUr4B,KAAK8uE,SAASxhE,OAAOkhE,WAE1B5kE,EAAM,EAAGpC,EAAS8F,EAAO9F,OAAQoC,EAAMpC,EAAQoC,IAChD+lE,EAAY9jE,EAAQspC,SAASvrC,GAAM0D,EAAO1D,GAAM5J,KAAKkH,QAAQquB,MAAO,CAACjoB,EAAO1D,IAAMyT,OAAOgb,SAIjG11B,EAAEkJ,GAASiE,KAAKnP,EAAMiP,OAAOC,EAAUvC,OAKnDygE,EAAQtpD,MAAQ,CACZ8sD,QAASvC,EAAYjsE,OAAO,CACxBoF,KAAM,SAAS0D,EAASijE,EAAU5nE,GAC9B8nE,EAAYjnE,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASijE,EAAU5nE,GAClDlH,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAEhC2C,EAAE3C,KAAK6L,SAASsyC,OAAOn+C,KAAK8+D,UAGhC3gB,OAAQ,WACJ,IAAItyC,EAAU7L,KAAK6L,QACfnD,EAAQ1I,KAAK0I,QAEjB,GAAoB,SAAhBmD,EAAQnG,KACRgD,EAAQ1I,KAAKivE,cACbjvE,KAAK8uE,SAAgB,QAAEt/C,IAAI9mB,QACxB,GAAoB,YAAhBmD,EAAQnG,KAAoB,CACnC,IACIqT,EADAzL,EAAStN,KAAK8uE,SAAgB,QAAEv/C,MAGpC,GAAIjiB,aAAkBM,EAAiB,CAEnC,IADAlF,EAAQ1I,KAAKivE,yBACQ7gE,MACjB,IAAK,IAAI7G,EAAI,EAAGA,EAAI+F,EAAO9F,OAAQD,IAC/B,GAAI+F,EAAO/F,aAAc6G,OAASd,EAAO/F,KAAQmB,EAAO,CACpDqQ,EAAQxR,EACR,YAIRwR,EAAQzL,EAAOqI,QAAQjN,GAEvBqQ,GAAS,EACTzL,EAAO9C,OAAOuO,EAAO,GAErBzL,EAAO3L,KAAK+G,QAGhB1I,KAAK8uE,SAAgB,QAAEt/C,IAAI9mB,KAKvCkV,QAAS,WACL,IAAIlV,EAAQ1I,KAAK8uE,SAAgB,QAAEv/C,MAC/BjiB,EAAS5E,EACThD,EAAO1F,KAAK+kD,WACZl5C,EAAU7L,KAAK6L,QAEnB,GAAoB,YAAhBA,EAAQnG,KACR,GAAI4H,aAAkBM,EAAiB,CACnC,IAAImL,GAAS,EAEb,IADArQ,EAAQ1I,KAAKivE,yBACQ7gE,MACjB,IAAK,IAAI7G,EAAI,EAAGA,EAAI+F,EAAO9F,OAAQD,IAC/B,GAAI+F,EAAO/F,aAAc6G,OAASd,EAAO/F,KAAQmB,EAAO,CACpDqQ,EAAQxR,EACR,YAIRwR,EAAQzL,EAAOqI,QAAQjN,GAE3BmD,EAAQ0lE,QAAWx4D,GAAS,OAE5BlN,EAAQ0lE,QAAUjkE,MAEC,SAAhBzB,EAAQnG,OACH,QAARA,EACAgD,EAAQ/H,EAAMuQ,SAASxI,EAAO,cACf,kBAARhD,IACPgD,EAAQ/H,EAAMuQ,SAASxI,EAAO,wBAG9BA,SAAmDmD,EAAQnD,QAAUA,EAAMwI,WAC3ErF,EAAQ0lE,SAAU,EAElB1lE,EAAQ0lE,SAAU,IAK9B7oE,MAAO,WACH,IAAImD,EAAU7L,KAAK6L,QACfnD,EAAQmD,EAAQnD,MAMpB,MAJoB,YAAhBmD,EAAQnG,OACRgD,EAAQmD,EAAQ0lE,SAGb7oE,GAEX1G,QAAS,WACLW,EAAE3C,KAAK6L,SAASotB,IAAI6jB,EAAQ98C,KAAK8+D,aAK7CiP,EAAQ3nC,OAAS,CACb94B,OAAQygE,EAAQzgE,OAAOvK,OAAO,CAC1B6a,QAAS,SAASjZ,GACd,IAAIsD,EAAOjI,KACPsN,EAASrF,EAAK6mE,SAASxhE,OAAOiiB,MAElC,GAAIjiB,aAAkBM,GAAmBN,aAAkB3M,EAAMkN,KAAKE,YAElE,GAAgB,QADhBpJ,EAAIA,GAAK,IACHqoC,OACF/kC,EAAKgF,IAAItI,EAAEoU,MAAOpU,EAAEyvB,YACjB,GAAgB,UAAZzvB,EAAEqoC,OACT/kC,EAAK8uB,OAAOpyB,EAAEoU,MAAOpU,EAAEyvB,YACpB,IAAgB,cAAZzvB,EAAEqoC,QAA0BroC,EAAEqoC,SAAWpqC,KAChDqF,EAAK2H,SACD3H,EAAK6mE,SAASpmE,OACVT,EAAK6mE,SAASpmE,OAAO,CACrB,IAAIwmB,EAAMshD,EAAwBvoE,EAAK6mE,SAASpmE,MAAM6mB,MAAO5sB,EAAEsF,EAAK4D,SAASgC,KAAK,eACtE,OAARqhB,EACAjnB,EAAK4D,QAAQ2lE,eAAiB,EAE9BvpE,EAAK4D,QAAQnD,MAAQwmB,QAMrCjnB,EAAK2H,YAIjBlH,MAAOsmE,EAAYjsE,OAAO,CACtBoF,KAAM,SAASb,EAAQwnE,EAAU5nE,GAC7B8nE,EAAYjnE,GAAGI,KAAKoC,KAAKvK,KAAMsH,EAAQwnE,EAAU5nE,GAEjDlH,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChC2C,EAAE3C,KAAK6L,SAASsyC,OAAOn+C,KAAK8+D,UAGhCmQ,YAAa,WACT,IAEIvmE,EAAOosB,EAAQlrB,EAAKpC,EAFpBu9C,EAAW/kD,KAAK+kD,WAChBjsC,EAAS,GAEb,IAAKlP,EAAM,EAAGpC,EAASxH,KAAK6L,QAAQ3E,QAAQM,OAAQoC,EAAMpC,EAAQoC,KAC9DkrB,EAAS90B,KAAK6L,QAAQ3E,QAAQ0C,IAEnB6nE,WAIH/oE,GAHJA,EAAQosB,EAAO+0B,WAAWnhD,QAEbA,EAAMohE,UACPh1C,EAAOpsB,MAEPosB,EAAO8L,KAGnB9nB,EAAOnX,KAAK3B,KAAKkvE,YAAYxmE,EAAOq8C,KAG5C,OAAOjsC,GAGXqlC,OAAQ,WACJ,IAEI7wC,EAGAwnB,EACA48C,EACAhpE,EACAkB,EACApC,EATAsR,EAAS,GACTjN,EAAU7L,KAAK6L,QAEfoZ,EAAQjlB,KAAKkH,QAAQ8pE,YAAchxE,KAAKkH,QAAQukE,UAChDkG,EAAiB3xE,KAAKkH,QAAQyqE,eAOlC,IAAK/nE,EAAM,EAAGpC,EAASqE,EAAQ3E,QAAQM,OAAQoC,EAAMpC,EAAQoC,KACzDkrB,EAASjpB,EAAQ3E,QAAQ0C,IAEd6nE,WAIH/oE,GAHJA,EAAQosB,EAAO+0B,WAAWnhD,QAEbA,EAAMohE,UACPh1C,EAAOpsB,MAEPosB,EAAO8L,KAGf3b,EACAnM,EAAOnX,KAAK+G,GAEZoQ,EAAOnX,KAAK3B,KAAKkvE,YAAYxmE,EAAO1I,KAAK+kD,cAMrD,GAAI9/B,EAMA,KALA3X,EAAStN,KAAK8uE,SAASxhE,OAAOiiB,iBACR5uB,EAAMkN,KAAKE,aAC7BT,EAASA,EAAOoqB,QAGfg6C,EAAa,EAAGA,EAAa54D,EAAOtR,OAAQkqE,IAC7C,IAAK9nE,EAAM,EAAGpC,EAAS8F,EAAO9F,OAAQoC,EAAMpC,EAAQoC,IAAO,CACvD,IAAIgoE,EAActkE,EAAO1D,GAAK2lB,IAAItK,GAElC,GADanT,OAAO8/D,KAAiB94D,EAAO44D,GACjC,CACP54D,EAAO44D,GAAcpkE,EAAO1D,GAC5B,QAMhBlB,EAAQ1I,KAAK8uE,SAAc,MAAEv/C,iBACR3hB,EACjBlF,EAAM8B,OAAOpC,MAAMM,EAAO,CAAC,EAAGA,EAAMlB,QAAQ6V,OAAOvE,IAC3C64D,KAAmBjpE,aAAiB2iD,GAA8B,OAAV3iD,GAAkBA,IAAU9F,IAAgBqiB,EAG5GjlB,KAAK8uE,SAAc,MAAEt/C,IAAI1W,EAAO,GAAGyW,IAAItK,IAFvCjlB,KAAK8uE,SAAc,MAAEt/C,IAAI1W,EAAO,KAKxC8E,QAAS,WACL,IAAIi0D,EAQAC,EAPAjmE,EAAU7L,KAAK6L,QACf3E,EAAU2E,EAAQ3E,QAClBwB,EAAQ1I,KAAK8uE,SAAc,MAAEv/C,MAC7BzW,EAASpQ,EACTuc,EAAQjlB,KAAKkH,QAAQ8pE,YAAchxE,KAAKkH,QAAQukE,UAEhD/lE,EAAO1F,KAAK+kD,WAGVjsC,aAAkBlL,IACpBkL,EAAS,IAAIlL,EAAgB,CAAClF,KAGlCmD,EAAQ2lE,eAAiB,EAEzB,IAAK,IAAIE,EAAa,EAAGA,EAAa54D,EAAOtR,OAAQkqE,IAcjD,IAbAhpE,EAAQoQ,EAAO44D,GAGXzsD,GAASvc,aAAiB2iD,IAC1B3iD,EAAQA,EAAM6mB,IAAItK,IAGV,QAARvf,EACAgD,EAAQ/H,EAAMuQ,SAAS4H,EAAO44D,GAAa,cAC5B,kBAARhsE,IACPgD,EAAQ/H,EAAMuQ,SAAS4H,EAAO44D,GAAa,wBAG1CG,EAAc,EAAGA,EAAc3qE,EAAQM,OAAQqqE,IAG5B,MAFpBC,EAAc5qE,EAAQ2qE,GAAanpE,QAEC,KAAVA,IACtBopE,EAAc5qE,EAAQ2qE,GAAajxC,MAG1B,MAATl4B,GAAiBopE,GAAeppE,EAAMwI,aACtChK,EAAQ2qE,GAAaJ,UAAW,GACxB,IAKxBzvE,QAAS,WACLW,EAAE3C,KAAK6L,SAASotB,IAAI6jB,EAAQ98C,KAAK8+D,aAyH7CiP,EAAQj7C,OAAS,CACbzoB,OAAQwkE,EAAO9rE,OAAO,CAClBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GACvDlH,KAAK8yB,OAASA,EACd9yB,KAAK0J,SAAW,IAGpBkU,QAAS,SAASrM,GACd,IAAIw9D,EAAU/uE,KAAK8uE,SAASzkE,OAAOkH,GAC/BzH,EAAU9J,KAAK0J,SAAS6H,GAExBzH,GACA9J,KAAK8yB,OAAO7oB,OAAOsH,EAAKzH,GAG5BA,EAAUilE,EAAQx/C,MAElBvvB,KAAK0J,SAAS6H,GAAO,SAAS5M,GAC1BA,EAAEkJ,KAAOkhE,EAAQzhE,OAEjBxD,EAAQnF,GAEJA,EAAEkJ,OAASkhE,EAAQzhE,eACZ3I,EAAEkJ,MAIjB7N,KAAK8yB,OAAOtpB,KAAK+H,EAAKvR,KAAK0J,SAAS6H,KAGxCvP,QAAS,WACL,IAAI8H,EAEJ,IAAKA,KAAW9J,KAAK0J,SACjB1J,KAAK8yB,OAAO7oB,OAAOH,EAAS9J,KAAK0J,SAASI,OAKtDynE,QAAS1C,EAAO9rE,OAAO,CACnBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,EACd9yB,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChCA,KAAK8yB,OAAOtpB,KAAKszC,EAAQ98C,KAAK8+D,UAElC3gB,OAAQ,WACJn+C,KAAK8uE,SAAgB,QAAEt/C,IAAIxvB,KAAK0I,UAGpCkV,QAAS,WACL,IAAIsR,EAAMlvB,KAAK8uE,SAAgB,QAAEv/C,MAEP,UAAtBvvB,KAAK6L,QAAQnG,KACTwpB,IAAQtsB,EACR5C,KAAK8yB,OAAOi/C,MAAM7iD,EAAIhe,aAAelR,KAAK0I,SAE1C1I,KAAK8yB,OAAOi/C,OAAM,GAGtB/xE,KAAK8yB,OAAOi/C,OAAc,IAAR7iD,IAI1BxmB,MAAO,WACH,IAAImD,EAAU7L,KAAK6L,QACfnD,EAAQmD,EAAQnD,MAMpB,MAJa,MAATA,GAA0B,OAATA,GAAuC,YAArB1I,KAAK6L,QAAQnG,OAChDgD,EAAQmD,EAAQ0lE,SAGb7oE,GAGX1G,QAAS,WACLhC,KAAK8yB,OAAO7oB,OAAO6yC,EAAQ98C,KAAK8+D,YAIxCxpD,MAAOu5D,EAAO9rE,OAAO,CACjBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GACvDlH,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChCA,KAAK8yB,OAASA,EACd9yB,KAAK8yB,OAAOtpB,KAAKszC,EAAQ98C,KAAK8+D,UAGlC3gB,OAAQ,WACJn+C,KAAK8uE,SAASx5D,MAAMka,IAAIxvB,KAAK8yB,OAAO8gC,QAAQt+C,QAGhDsI,QAAS,WACL,IACItI,EAAQtV,KAAK8uE,SAASx5D,MAAMia,MAC5B5jB,EAFO3L,KAEI8yB,OAAOk/C,OAFXhyE,KAEyB8yB,OAAOk/C,OAAOrmE,IAAM,KACxD3L,KAAK8yB,OAAO8gC,MAAM,CAAEt+C,MAAOA,EAAO3J,IAAKA,KAG3C3J,QAAS,WACLhC,KAAK8yB,OAAO7oB,OAAO6yC,EAAQ98C,KAAK8+D,YAIxCnzD,IAAKkjE,EAAO9rE,OAAO,CACfoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GACvDlH,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChCA,KAAK8yB,OAASA,EACd9yB,KAAK8yB,OAAOtpB,KAAKszC,EAAQ98C,KAAK8+D,UAGlC3gB,OAAQ,WACJn+C,KAAK8uE,SAASnjE,IAAI6jB,IAAIxvB,KAAK8yB,OAAO8gC,QAAQjoD,MAG9CiS,QAAS,WACL,IACIjS,EAAM3L,KAAK8uE,SAASnjE,IAAI4jB,MACxBja,EAFOtV,KAEM8yB,OAAOk/C,OAFbhyE,KAE2B8yB,OAAOk/C,OAAO18D,MAAQ,KAC5DtV,KAAK8yB,OAAO8gC,MAAM,CAAEt+C,MAAOA,EAAO3J,IAAKA,KAG3C3J,QAAS,WACLhC,KAAK8yB,OAAO7oB,OAAO6yC,EAAQ98C,KAAK8+D,YAIxCxyD,QAASuiE,EAAO9rE,OAAO,CACnBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,GAGlBlV,QAAS,WACL,IAAItR,EAAUtM,KAAK8uE,SAASxiE,QAAQijB,MACpCvvB,KAAK8yB,OAAO1mB,QAAQ,GAAGK,MAAMI,QAAUP,EAAU,GAAK,UAI9DskE,UAAW/B,EAAO9rE,OAAO,CACrBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,GAGlBlV,QAAS,WACL,IAAIgzD,EAAY5wE,KAAK8uE,SAAS8B,UAAUrhD,MACxCvvB,KAAK8yB,OAAO1mB,QAAQ,GAAGK,MAAMI,QAAU+jE,EAAY,OAAS,MAIpEqB,cAAepD,EAAO9rE,OAAO,CACzBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAElD4rB,EAAOm/C,eAIZn/C,EAAOm/C,cAAcr0D,aAI7BsJ,QAAS2nD,EAAO9rE,OAAO,CACnBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,GAGlBlV,QAAS,WACD5d,KAAK8yB,OAAOvL,QACZvnB,KAAK8yB,OAAOvL,OAAOvnB,KAAK8uE,SAAS5nD,QAAQqI,UAKrD2I,SAAU22C,EAAO9rE,OAAO,CACpBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,GAGlBlV,QAAS,WACD5d,KAAK8yB,OAAOvL,QACZvnB,KAAK8yB,OAAOvL,QAAQvnB,KAAK8uE,SAAS52C,SAAS3I,UAKvDjiB,OAAQ6hE,EAAkB,SAAU,aAAc,iBAElDzmE,MAAOmmE,EAAO9rE,OAAO,CACjBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,EACd9yB,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChCA,KAAK8yB,OAAO5oB,MAAM4yC,EAAQ98C,KAAK8+D,SAE/B,IAAIp2D,EAAQ1I,KAAK8uE,SAASpmE,MAAM6mB,MAEhCvvB,KAAKkyE,0BAA4BhrE,EAAQyqE,iBAA4B,MAATjpE,GAAiBA,aAAiB2iD,GAC9FrrD,KAAKmyE,wBAA0BzpE,aAAiBkF,EAChD5N,KAAK8wE,aAAc,GAGvBsB,QAAS,WACL,IAAI9kE,EAEJ,OAAItN,KAAK8yB,OAAOuB,WACZ/mB,EAAStN,KAAK8yB,OAAOuB,aACP/mB,aAAkB+9C,EACrB,CAAC/9C,IAIZtN,KAAK8uE,SAASxhE,SACdA,EAAStN,KAAK8uE,SAASxhE,OAAOiiB,SAG7BjiB,GAAUA,aAAkB3M,EAAMkN,KAAKE,cACxCT,EAAStN,KAAK8yB,OAAOhC,WAAWkD,YAG7B1mB,IAGX6wC,OAAQ,WACJ,IAIIuzB,EAAYW,EACZC,EAAYV,EACZhoE,EAAKpC,EAAQ8F,EANb5E,EAAQ1I,KAAK8yB,OAAOpqB,QACpBuc,EAAQjlB,KAAKkH,QAAQupE,gBAAkBzwE,KAAKkH,QAAQqrE,cACpDtvE,EAAmC,mBAAzBiO,EAAS3G,KAAK7B,GACxB8pE,EAAqBxyE,KAAKkyE,yBACDp5D,EAAS,GAMtC,GAFA9Y,KAAK8wE,aAAc,EAEf7rD,EAEA,GAAc,KAAVvc,IAAiB8pE,GAAsBxyE,KAAKkH,QAAQyqE,gBACpDjpE,EAAQ,SACL,CAQH,IAPA4E,EAAStN,KAAKoyE,UAEVnvE,IACAovE,EAAc3pE,EAAMlB,OACpBsR,EAASpQ,EAAM9B,MAAM,IAGpBgD,EAAM,EAAGpC,EAAS8F,EAAO9F,OAAQoC,EAAMpC,EAAQoC,IAIhD,GAFAgoE,GADAU,EAAahlE,EAAO1D,IACK2lB,IAAItK,GAEzBhiB,GACA,IAAKyuE,EAAa,EAAGA,EAAaW,EAAaX,IAC3C,GAAIE,GAAe94D,EAAO44D,GAAa,CACnC54D,EAAO44D,GAAcY,EACrB,YAGL,GAAIV,GAAelpE,EAAO,CAC7BA,EAAQ8pE,EAAqBF,EAAaV,EAC1C,MAIJ94D,EAAO,KAEHpQ,EADA1I,KAAKmyE,wBACGr5D,EACD05D,IAAuBvtD,EACtBnM,EAAO,GAEPA,EAAO,GAAGyW,IAAItK,IAMtCjlB,KAAK8uE,SAASpmE,MAAM8mB,IAAI9mB,GACxB1I,KAAK8wE,aAAc,GAGvBlzD,QAAS,WACL,IAAK5d,KAAK8wE,YAAa,CACnB,IAMatpE,EANTsrB,EAAS9yB,KAAK8yB,OACd5rB,EAAU4rB,EAAO5rB,QACjBukE,EAAYvkE,EAAQqrE,cACpBvB,EAAa9pE,EAAQupE,gBAAkBhF,EACvC/iE,EAAQ1I,KAAK8uE,SAASpmE,MAAM6mB,MAC5BqR,EAAO15B,EAAQ05B,MAAQ,GACvBh3B,EAAM,EACNkP,EAAS,GAMb,GAJIpQ,IAAU9F,IACV8F,EAAQ,MAGRsoE,EACA,GAAItoE,aAAiBkF,EAAiB,CAClC,IAAKpG,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtCkP,EAAOlP,GAAOlB,EAAMkB,GAAK2lB,IAAIyhD,GAEjCtoE,EAAQoQ,OACDpQ,aAAiB2iD,IACxBzqB,EAAOl4B,EAAM6mB,IAAIk8C,GACjB/iE,EAAQA,EAAM6mB,IAAIyhD,KAID,IAArB9pE,EAAQ6pE,UAAuB7pE,EAAQurE,cAAe3/C,EAAO4/C,UAAa5/C,EAAO4/C,SAASC,QAW1F7/C,EAAOpqB,MAAMA,IAVT+iE,IAAcuF,GAAepwC,IAC7BA,EAAOl4B,GAGNk4B,IAASl4B,GAAmB,IAAVA,IAAgBxB,EAAQyqE,eAG3C7+C,EAAO8/C,WAAWlqE,EAAOk4B,GAFzB9N,EAAOpqB,MAAMA,IASzB1I,KAAK8wE,aAAc,GAGvB9uE,QAAS,WACLhC,KAAK8yB,OAAO7oB,OAAO6yC,EAAQ98C,KAAK8+D,YAGxC+T,aAAc,CACVnqE,MAAOmmE,EAAO9rE,OAAO,CACjBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,EACd9yB,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChCA,KAAK8yB,OAAO5oB,MAAM4yC,EAAQ98C,KAAK8+D,SAC/B9+D,KAAK8wE,aAAc,GAGvB3yB,OAAQ,WACJ,IAAIl2C,EAAOjI,KACP8yE,EAAY7qE,EAAK6mE,SAAc,MAAEv/C,MACjCoiD,EAAiB1pE,EAAKf,QAAQyqE,eAC9BoB,EAAe9qE,EAAK6qB,OAAOy9C,SAASnqC,SACpC4sC,EAAqB/qE,EAAK6qB,OAAOmgD,uBAAyBhrE,EAAK6qB,OAAOogD,iBAAoBjrE,EAAK6qB,OAAOy9C,SAASl8C,SAAS0+C,IAAiB9qE,EAAK6qB,OAAOpqB,QACrJkiC,EAAa+mC,IAAmD,IAAjC1pE,EAAK6qB,OAAO5rB,QAAQ6pE,SAAsB9oE,EAAK6qB,OAAOpqB,QAAUsqE,EAE/F/tD,EAAQjlB,KAAKkH,QAAQupE,gBAAkBzwE,KAAKkH,QAAQqrE,cAMxD,GAJA3nC,EAAYA,EAAUhkC,MAAQgkC,EAAUhkC,MAAM,GAAKgkC,EAEnD3iC,EAAK6oE,aAAc,EAEfgC,aAAqBllE,EAAiB,CAUtC,IATA,IAKIulE,EACAC,EACAxV,EAPA7mC,EAAS,GACT0oB,EAAY7U,EAAUpjC,OACtBD,EAAI,EAAGojC,EAAI,EACX0oC,EAAMP,EAAUvrE,GAMb8rE,IAAQzwE,GAAa,CAExB,IADAg7D,GAAQ,EACHjzB,EAAI,EAAGA,EAAI8U,EAAW9U,IAUvB,GATIgnC,EACO/mC,EAAUD,IAAM0oC,GAIvBD,GAFAA,EAAWxoC,EAAUD,IAEDpb,IAAM6jD,EAAS7jD,IAAItK,GAASmuD,KAC5BC,EAAI9jD,IAAM8jD,EAAI9jD,IAAItK,GAASouD,GAGzC,CACNzoC,EAAUpgC,OAAOmgC,EAAG,GACpB8U,GAAa,EACbme,GAAQ,EACR,MAIHA,EAKDr2D,GAAK,GAJLwvB,EAAOp1B,KAAK0xE,GACZC,EAAYR,EAAWvrE,EAAG,GAC1B4rE,EAAc5rE,GAKlB8rE,EAAMP,EAAUvrE,GAGpB+rE,EAAYR,EAAWA,EAAUtrE,OAAQ,EAAGojC,GAExC7T,EAAOvvB,QACPsrE,EAAU1oE,QAAQ,SAAU,CACxB4iC,OAAQ,SACR5Y,MAAO2C,EACPhe,MAAOo6D,IAIXvoC,EAAUpjC,QACVsrE,EAAU1oE,QAAQ,SAAU,CACxB4iC,OAAQ,MACR5Y,MAAOwW,EACP7xB,MAAO+5D,EAAUtrE,OAAS,SAIlCS,EAAK6mE,SAAc,MAAEt/C,IAAIob,GAG7B3iC,EAAK6oE,aAAc,GAGvBlzD,QAAS,WACL,IAAK5d,KAAK8wE,YAAa,CACnB,IAKatpE,EAET+rE,EAPArsE,EAAUlH,KAAKkH,QACf4rB,EAAS9yB,KAAK8yB,OACd7N,EAAQ/d,EAAQupE,gBAAkBvpE,EAAQqrE,cAC1C7pE,EAAQ1I,KAAK8uE,SAASpmE,MAAM6mB,MAC5B1hB,EAAOnF,EACPkB,EAAM,EACNkP,EAAS,GAGb,GAAImM,EACA,GAAIvc,aAAiBkF,EAAiB,CAClC,IAAKpG,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtC2pE,EAAgB7qE,EAAMkB,GACtBkP,EAAOlP,GAAO2pE,EAAchkD,IAAMgkD,EAAchkD,IAAItK,GAASsuD,EAEjE7qE,EAAQoQ,OACDpQ,aAAiB2iD,IACxB3iD,EAAQA,EAAM6mB,IAAItK,KAGD,IAArB/d,EAAQ6pE,WAAiD,IAA3B7pE,EAAQyqE,eACtC7+C,EAAO8/C,WAAW/kE,EAAMnF,GAExBoqB,EAAOpqB,MAAMA,KAKzB1G,QAAS,WACLhC,KAAK8yB,OAAO7oB,OAAO6yC,EAAQ98C,KAAK8+D,aAI5C0U,MAAO,CACHlF,aAAca,EAAkB,eAAgB,eAAgB,8BAGpEgB,YAAa,CACTznE,MAAOmmE,EAAO9rE,OAAO,CACjBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,EACd9yB,KAAK8+D,QAAU9+D,KAAKm+C,OAAO30C,KAAKxJ,MAChCA,KAAK8yB,OAAO5oB,MAAM4yC,EAAQ98C,KAAK8+D,SAC/B9+D,KAAK8wE,aAAc,GAGvB3yB,OAAQ,WACJ,IAAIl2C,EAAOjI,KACP8yE,EAAY7qE,EAAK6mE,SAAc,MAAEv/C,MACjCoiD,EAAiB1pE,EAAKf,QAAQyqE,eAC9B/mC,EAAY+mC,EAAiB1pE,EAAK6qB,OAAOpqB,QAAUT,EAAK6qB,OAAOiB,YAE/D9O,EAAQjlB,KAAKkH,QAAQupE,gBAAkBzwE,KAAKkH,QAAQqrE,cAMxD,GAJA3nC,EAAYA,EAAUhkC,MAAM,GAE5BqB,EAAK6oE,aAAc,EAEfgC,aAAqBllE,EAAiB,CAYtC,IAXA,IAOIulE,EACAC,EACAxV,EATA7mC,EAAS,GAET0oB,EAAY7U,EAAUpjC,OAEtBD,EAAI,EAAGojC,EAAI,EACX0oC,EAAMP,EAAUvrE,GAMb8rE,IAAQzwE,GAAa,CAExB,IADAg7D,GAAQ,EACHjzB,EAAI,EAAGA,EAAI8U,EAAW9U,IAUvB,GATIgnC,EACO/mC,EAAUD,IAAM0oC,GAIvBD,GAFAA,EAAWxoC,EAAUD,IAEDpb,IAAM6jD,EAAS7jD,IAAItK,GAASmuD,KAC5BC,EAAI9jD,IAAM8jD,EAAI9jD,IAAItK,GAASouD,GAGzC,CACNzoC,EAAUpgC,OAAOmgC,EAAG,GACpB8U,GAAa,EACbme,GAAQ,EACR,MAIHA,EAKDr2D,GAAK,GAJLwvB,EAAOp1B,KAAK0xE,GACZC,EAAYR,EAAWvrE,EAAG,GAC1B4rE,EAAc5rE,GAKlB8rE,EAAMP,EAAUvrE,GAGpB+rE,EAAYR,EAAWA,EAAUtrE,OAAQ,EAAGojC,GAExC7T,EAAOvvB,QACPsrE,EAAU1oE,QAAQ,SAAU,CACxB4iC,OAAQ,SACR5Y,MAAO2C,EACPhe,MAAOo6D,IAIXvoC,EAAUpjC,QACVsrE,EAAU1oE,QAAQ,SAAU,CACxB4iC,OAAQ,MACR5Y,MAAOwW,EACP7xB,MAAO+5D,EAAUtrE,OAAS,SAIlCS,EAAK6mE,SAAc,MAAEt/C,IAAIob,GAG7B3iC,EAAK6oE,aAAc,GAGvBlzD,QAAS,WACL,IAAK5d,KAAK8wE,YAAa,CACnB,IAKatpE,EAET+rE,EAPArsE,EAAUlH,KAAKkH,QACf4rB,EAAS9yB,KAAK8yB,OACd7N,EAAQ/d,EAAQupE,gBAAkBvpE,EAAQqrE,cAC1C7pE,EAAQ1I,KAAK8uE,SAASpmE,MAAM6mB,MAC5B1hB,EAAOnF,EACPkB,EAAM,EACNkP,EAAS,GAOb,GAJIpQ,IAAU9F,IACV8F,EAAQ,MAGRuc,EACA,GAAIvc,aAAiBkF,EAAiB,CAClC,IAAKpG,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtC2pE,EAAgB7qE,EAAMkB,GACtBkP,EAAOlP,GAAO2pE,EAAchkD,IAAMgkD,EAAchkD,IAAItK,GAASsuD,EAEjE7qE,EAAQoQ,OACDpQ,aAAiB2iD,IACxB3iD,EAAQA,EAAM6mB,IAAItK,KAID,IAArB/d,EAAQ6pE,WAAiD,IAA3B7pE,EAAQyqE,gBAA4B7+C,EAAO2gD,WAGzE3gD,EAAOpqB,MAAMA,GAFboqB,EAAO8/C,WAAW/kE,EAAMnF,KAOpC1G,QAAS,WACLhC,KAAK8yB,OAAO7oB,OAAO6yC,EAAQ98C,KAAK8+D,aAK5C4U,UAAW,CACPpmE,OAAQ6hE,EAAkB,SAAU,aAAc,iBAAiBpsE,OAAO,CACtEysE,UAAW,SAAS7qE,GAChB,IAAIiF,EACApC,EAGAqG,EAAMwqB,EAFNvF,EAAS9yB,KAAK8yB,OACdqB,EAAWxvB,EAAEqrE,YAAcl9C,EAAOsB,QAGtC,GAAID,EAAS3sB,OAIT,IAHAqG,EAAOlJ,EAAEurE,gBAAkBp9C,EAAOiB,YAClCsE,EAAUr4B,KAAK8uE,SAASxhE,OAAOkhE,WAE1B5kE,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9C+lE,EAAYx7C,EAASvqB,GAAMiE,EAAKjE,GAAM5J,KAAK4vE,IAAIjrE,EAAE6mB,IAAK,CAAC3d,EAAKjE,IAAMyT,OAAOgb,QAO7Fs7C,KAAM,CACFrmE,OAAQ6hE,EAAkB,SAAU,aAAc,iBAAiBpsE,OAAO,CACtEysE,UAAW,SAAS7qE,GAChB,IAAIiF,EACJpC,EAGA6wB,EACAxqB,EAHAilB,EAAS9yB,KAAK8yB,OACdqB,EAAWxvB,EAAEqrE,YAAcl9C,EAAOsB,QAIlC,GAAID,EAAS3sB,OAIT,IAHAqG,EAAOlJ,EAAEurE,gBAAkBp9C,EAAOiB,YAClCsE,EAAUr4B,KAAK8uE,SAASxhE,OAAOkhE,WAE1B5kE,EAAM,EAAGpC,EAASqG,EAAKrG,OAAQoC,EAAMpC,EAAQoC,IAC9C+lE,EAAYx7C,EAASvqB,GAAMiE,EAAKjE,GAAM5J,KAAK4vE,IAAIjrE,EAAE6mB,IAAK,CAAC3d,EAAKjE,IAAMyT,OAAOgb,QAO7Fu7C,MAAO,CACHhzC,KAAMiuC,EAAO9rE,OAAO,CAChBoF,KAAM,SAAS2qB,EAAQg8C,EAAU5nE,GAC7B2nE,EAAO9mE,GAAGI,KAAKoC,KAAKvK,KAAM8yB,EAAOjnB,QAAQ,GAAIijE,EAAU5nE,GAEvDlH,KAAK8yB,OAASA,GAElBlV,QAAS,WACL,IAAIgjB,EAAO5gC,KAAK8uE,SAASluC,KAAKrR,MAElB,MAARqR,IACAA,EAAO,IAEX5gC,KAAK8yB,OAAO8N,KAAKA,QAMjC,IAAI0yC,EAAc,SAAS9oC,EAAK5gC,EAAKmtB,EAAQ9pB,GAEzC8pB,EAASA,GAAU,EAEnB,IAKIhe,EALA86D,GAHJ5mE,EAAMA,GAAO,IAGOzF,OAChBsxC,EAAYtO,EAAIhjC,OAEhBssE,EAAU,GAAGltE,MAAM2D,KAAKigC,EAAK5gC,EAAMmtB,GACnCg9C,EAAgBD,EAAQtsE,OAG5B,GAAIqsE,EAAW,CAIX,IAHAA,EAAYjqE,EAAMiqE,EAClB96D,EAAQ,EAEDnP,EAAMiqE,EAAWjqE,IACpB4gC,EAAI5gC,GAAOqD,EAAI8L,GACfA,IAGJyxB,EAAIhjC,OAASqsE,OACV,GAAI98C,EAIP,IAHAyT,EAAIhjC,OAASoC,EAEbmtB,GAAUntB,EACHA,EAAMmtB,UACFyT,IAAMzT,GAIrB,GAAIg9C,EAAe,CAIf,IAHAA,EAAgBnqE,EAAMmqE,EACtBh7D,EAAQ,EAEDnP,EAAMmqE,EAAenqE,IACxB4gC,EAAI5gC,GAAOkqE,EAAQ/6D,GACnBA,IAGJyxB,EAAIhjC,OAASusE,EAKjB,IAFAnqE,EAAM4gC,EAAIhjC,OAEHoC,EAAMkvC,UACFtO,EAAI5gC,GACXA,KAIJoqE,EAAgBpsE,EAAM7E,OAAQ,CAC9BoF,KAAM,SAASb,EAAQJ,GACnBlH,KAAKsH,OAASA,EACdtH,KAAKkH,QAAUA,EACflH,KAAKi0E,UAAY,IAGrBzqE,KAAM,SAASslE,GACX,IAAIv9D,EACA2iE,EACAC,EACAC,EACAC,EACAC,EACAC,EAAgBv0E,gBAAgBw0E,EAChCC,EAAkBz0E,KAAK+tE,UAE3B,IAAKx8D,KAAOu9D,EACJv9D,GAAOy8D,EACPkG,GAAW,EACJ3iE,GAAO08D,EACdkG,GAAY,EACL5iE,GAAO28D,GAAWqG,EAElBhjE,GAAO48D,EACdkG,GAAa,EA/rDnB,OAgsDa9iE,EACP+iE,GAAS,EAETt0E,KAAK00E,aAAanjE,EAAKu9D,EAAU2F,GANjCL,GAAY,EAShBD,GACAn0E,KAAK00E,aAAazG,EAAQa,EAAU2F,GAGpCP,GACAl0E,KAAK00E,aAAa1G,EAAOc,EAAU2F,GAGnCJ,GACAr0E,KAAK00E,aAAavG,EAASW,EAAU2F,GAGrCL,IAAcG,GACdv0E,KAAK00E,aAAaxG,EAAQY,EAAU2F,GAGpCH,IAAWC,GACXv0E,KAAK00E,aAvtDP,MAutDyB5F,EAAU2F,GAGjCF,GAAiBv0E,KAAKsH,QAAUtH,KAAKsH,OAAO2qE,eAC5CjyE,KAAK00E,aAAa,gBAAiB5F,EAAU2F,IAIrD1G,QAAS,WACL,OAAOA,EAAQ/tE,KAAKsH,OAAO2wB,SAAS3f,gBAAkB,IAG1Do8D,aAAc,SAAStyE,EAAM0sE,EAAU2F,GACnC,IAEI1sC,EAFA4sC,EAASF,EAAgBryE,IAAS2rE,EAAQ3rE,GAC1C6xE,EAAYj0E,KAAKi0E,UAEjBlF,EAAUD,EAAS1sE,GAEvB,GAAIuyE,EAKA,GAJAA,EAAS,IAAIA,EAAO30E,KAAKsH,OAAQwnE,EAAU9uE,KAAKkH,SAEhD+sE,EAAUtyE,KAAKgzE,GAEX5F,aAAmBV,EACnBsG,EAAOnrE,KAAKulE,GACZkF,EAAUtyE,KAAKotE,QAEf,IAAKhnC,KAAagnC,EACd4F,EAAOnrE,KAAKulE,EAAShnC,GACrBksC,EAAUtyE,KAAKotE,EAAQhnC,SAG5B,GAAa,aAAT3lC,EACP,MAAM,IAAIqO,MAAM,OAASrO,EAAO,oCAAsCpC,KAAKsH,OAAO2wB,SAAS3f,cAAgB,aAInHtW,QAAS,WACL,IAAI4H,EACApC,EACAysE,EAAYj0E,KAAKi0E,UAErB,IAAKrqE,EAAM,EAAGpC,EAASysE,EAAUzsE,OAAQoC,EAAMpC,EAAQoC,IACnDqqE,EAAUrqE,GAAK5H,aAKvBwyE,EAAsBR,EAAcjxE,OAAQ,CAC5CgrE,QAAS,WACL,OAAOA,EAAQj7C,OAAO9yB,KAAKsH,OAAOJ,QAAQ9E,KAAKkW,gBAAkB,IAGrEo8D,aAAc,SAAStyE,EAAM0sE,EAAU2F,GACnC,IAEI1sC,EAFA4sC,EAASF,EAAgBryE,IAAS2rE,EAAQj7C,OAAO1wB,GACjD6xE,EAAYj0E,KAAKi0E,UAEjBlF,EAAUD,EAAS1sE,GAEvB,IAAIuyE,EAgBA,MAAM,IAAIlkE,MAAM,OAASrO,EAAO,oCAAsCpC,KAAKsH,OAAOJ,QAAQ9E,KAAO,WAVjG,GALAuyE,EAAS,IAAIA,EAAO30E,KAAKsH,OAAQwnE,EAAU9uE,KAAKsH,OAAOJ,SAEvD+sE,EAAUtyE,KAAKgzE,GAGX5F,aAAmBV,EACnBsG,EAAOnrE,KAAKulE,GACZkF,EAAUtyE,KAAKotE,QAEf,IAAKhnC,KAAagnC,EACd4F,EAAOnrE,KAAKulE,EAAShnC,GACrBksC,EAAUtyE,KAAKotE,EAAQhnC,OAiB3C,IAAI6sC,EAAiB,wCACjBC,EAAmB,MAEvB,SAASC,EAActrE,GACnB,IACII,EACApC,EACAutE,EACAC,EACAzjE,EACA7I,EACAk+B,EAPArwB,EAAS,GAWb,IAAK3M,EAAM,EAAGpC,GAFdo/B,EAASp9B,EAAK2G,MAAMykE,IAEUptE,OAAQoC,EAAMpC,EAAQoC,IAEhDorE,GADAD,EAAQnuC,EAAOh9B,IACI+L,QAAQ,KAE3BpE,EAAMwjE,EAAM/pE,UAAU,EAAGgqE,GAGF,MAFvBtsE,EAAQqsE,EAAM/pE,UAAUgqE,EAAa,IAE3BlqE,OAAO,KACbpC,EAAQosE,EAAcpsE,IAG1B6N,EAAOhF,GAAO7I,EAGlB,OAAO6N,EAGX,SAAS0+D,EAAenG,EAAUxhE,EAAQ5H,GACtC,IAAIqpE,EACAx4D,EAAS,GAEb,IAAKw4D,KAAWD,EACZv4D,EAAOw4D,GAAW,IAAIrpE,EAAK4H,EAAQwhE,EAASC,IAGhD,OAAOx4D,EAGX,SAASo5D,EAAY9jE,EAASyB,EAAQioB,EAAO8C,GAEzC,GAAKxsB,IAAWA,EAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,QAA1D,CAIA,IACI5hB,EAIAklE,EAEAxnE,EAPAwoB,EAAOjkB,EAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,QAEjDhiB,EAAOqC,EAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,QACjD0pD,EAAe,GACfztE,GAAO,EAEPP,EAAU,GAGdmxB,EAAUA,GAAW,CAAC/qB,IAElBwiB,GAAQtmB,IACR2rE,EAActpE,GAAS,GAGvBikB,IACAxoB,EAzER,SAA8BuE,EAAS0pB,GACnC,IAAIzC,EAASnyB,EAAM20B,WAAWzpB,EAAS,GAAI0pB,GAE3C,GAAIzC,EACA,OAAO,IAAI0hD,EAAoB1hD,GAqEtBsiD,CAAqBvpE,EAAS0pB,IAGvC/rB,IACAA,EAAOsrE,EAActrE,EAAK/G,QAAQoyE,EAAkB,KAE/CvtE,KACDJ,EAAUvG,EAAMs0B,aAAappB,EAAS,CAAE4/D,UAAW,GAAIuF,WAAY,GAAInhE,SAAU,GAAIghE,YAAa/zB,EAAQ60B,gBAAgB,EAAOZ,UAAU,GAAQzjE,IAC3IioB,MAAQA,EAChBjuB,EAAS,IAAI0sE,EAAcnoE,EAAS3E,IAGxCI,EAAOgG,OAASA,EAEhBwhE,EAAWmG,EAAezrE,EAAM6uB,EAASg2C,GAErCnnE,EAAQ2I,WACRi/D,EAASj/D,SAAW,IAAI++D,EAAgBv2C,EAAS,GAAInxB,EAAQ2I,WAG7Di/D,EAASxlD,QACT9f,EAAKa,OAASb,EAAKa,QAAU,GAC7Bb,EAAKa,OAAOif,MAAQ9f,EAAK8f,MACzBwlD,EAASxlD,MAAMtnB,iBACR8sE,EAASxlD,OAGhBwlD,EAASxhE,SACT7F,GAAO,GAGP+B,EAAKsZ,OACLgsD,EAAShsD,KAAOmyD,EAAezrE,EAAKsZ,KAAMuV,EAASg2C,IAGnD7kE,EAAKiD,QACLqiE,EAASriE,MAAQwoE,EAAezrE,EAAKiD,MAAO4rB,EAASg2C,IAGrD7kE,EAAKa,SACLykE,EAASzkE,OAAS4qE,EAAezrE,EAAKa,OAAQguB,EAASs2C,IAGvDnlE,EAAKoD,MACLkiE,EAASliE,IAAMqoE,EAAezrE,EAAKoD,IAAKyrB,EAASg2C,IAGrD/mE,EAAOkC,KAAKslE,IAGZxnE,IACAuE,EAAQqlB,mBAAqB5pB,GAGjC,IAAI6tC,EAAWtpC,EAAQspC,SACvB,GAAI1tC,GAAQ0tC,IAAatpC,EAAQkpB,aAAa,QAAUp0B,EAAM6qB,GAAK,QAAS,CAExE,IAAK5hB,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IACjCsrE,EAAatrE,GAAOurC,EAASvrC,GAGjC,IAAKA,EAAM,EAAGA,EAAMsrE,EAAa1tE,OAAQoC,IACrC+lE,EAAYuF,EAAatrE,GAAM0D,EAAQioB,EAAO8C,KAK1D,SAAS7uB,EAAK6rE,EAAKzpB,GACf,IAAIhiD,EACApC,EACA07B,EACA3N,EAAQ50B,EAAMk1B,oBAAoB,GAAGjvB,MAAM2D,KAAKlD,UAAW,IAK/D,IAHAukD,EAASjrD,EAAM+tC,WAAWkd,GAGrBhiD,EAAM,EAAGpC,GAFd6tE,EAAM1yE,EAAE0yE,IAEmB7tE,OAAQoC,EAAMpC,EAAQoC,IAEvB,KADtBs5B,EAAOmyC,EAAIzrE,IACF8rB,UACLi6C,EAAYzsC,EAAM0oB,EAAQr2B,GAKtC,SAAS4/C,EAActpE,EAASypE,GAC5B,IAAIC,EAAgB1pE,EAAQqlB,mBAc5B,GAZIqkD,IACAA,EAAcvzE,UAEVosE,SACOviE,EAAQqlB,mBACRrlB,EAAQm8B,gBACfn8B,EAAQm8B,gBAAgB,sBAExBn8B,EAAQqlB,mBAAqB,MAIjCokD,EAAe,CACf,IAAIxiD,EAASnyB,EAAMy1B,eAAezzB,EAAEkJ,IAChCinB,GAn9DG,mBAm9DcA,EAAO9wB,SACxB8wB,EAAO9wB,WAKnB,SAAS8tE,EAAkBjkE,EAAS2pE,GAChCL,EAActpE,EAAS2pE,GAEvBlE,EAAsBzlE,EAAS2pE,GAGnC,SAASlE,EAAsBzlE,EAAS2pE,GACpC,IAAIrgC,EAAWtpC,EAAQspC,SAEvB,GAAIA,EACA,IAAK,IAAIvrC,EAAM,EAAGpC,EAAS2tC,EAAS3tC,OAAQoC,EAAMpC,EAAQoC,IACtDkmE,EAAkB36B,EAASvrC,GAAM4rE,GAwB7C,SAAShF,EAAwB9nE,EAAOsoE,GACpC,IAEIxpE,EACAwnC,EAHAl2B,EAAS,GACTlP,EAAM,EAIV,IAAKonE,EACD,OAAOtoE,EAGX,GAAIA,aAAiBkF,EAAiB,CAClC,IAAKpG,EAASkB,EAAMlB,OAAQoC,EAAMpC,EAAQoC,IACtColC,EAAOtmC,EAAMkB,GACbkP,EAAOlP,GAAOolC,EAAKzf,IAAMyf,EAAKzf,IAAIyhD,GAAchiC,EAAKgiC,GAEzDtoE,EAAQoQ,OACDpQ,aAAiB2iD,IACxB3iD,EAAQA,EAAM6mB,IAAIyhD,IAGtB,OAAOtoE,EAGX/H,EAAMsJ,OA1CN,SAAgBorE,GACZ,IAAIzrE,EAAKpC,EAIT,IAAKoC,EAAM,EAAGpC,GAFd6tE,EAAM1yE,EAAE0yE,IAEmB7tE,OAAQoC,EAAMpC,EAAQoC,IAC7CkmE,EAAkBuF,EAAIzrE,IAAM,IAqCpCjJ,EAAM6I,KAAOA,EACb7I,EAAMkN,KAAKkgE,QAAUA,EACrBptE,EAAMkN,KAAKghE,OAASA,EACpBluE,EAAM6zB,OApCN,SAAgB1B,EAAQ2iD,GACpB,IAAI5pE,EAAUinB,EAAOjnB,QACjB0pE,EAAgB1pE,EAAQ,GAAGqlB,mBAE3BqkD,GACA/rE,EAAKqC,EAAS0pE,EAAcjoE,OAAQmoE,IAiC5C90E,EAAM+tC,WAAa,SAASkd,GAKxB,OAJMA,aAAkBP,IACpBO,EAAS,IAAIP,EAAiBO,IAG3BA,GAGXjrD,EAAM+0E,oBAAsB,SAASl7D,GACjC,IAAIsW,EAAanwB,EAAMkN,KAAKG,uBAAuBg5C,OAAOxsC,GAwB1D,OANAsW,EAAWq0C,QAhBX,SAASwQ,EAAc9nE,GACnB,IAAItG,EAAG4tC,EAEP,IAAK5tC,EAAI,EAAGA,EAAIsG,EAAKrG,OAAQD,IACzBsG,EAAKtG,GAAG+iE,iBAERn1B,EAAWtnC,EAAKtG,GAAG4tC,UAEVgwB,QAETt3D,EAAKtG,GAAG6sB,MAAQ+gB,EAAStnC,OAEzB8nE,EAAc9nE,EAAKtG,GAAG6sB,OAM9BuhD,CAAc7kD,EAAWjjB,QAEzBijB,EAAWuoC,MAAMwS,YAAc/6C,EAExBA,EAAWuoC,OAzkE1B,CA4kEGv4D,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfmiB,EAAOniB,EAAMmiB,KACb6G,EAAKhpB,EAAMgpB,GACXuP,EAAYv4B,EAAMu4B,UAClBnJ,EAAoBpvB,EAAMovB,kBAC1BzmB,EAAa3I,EAAM2I,WACnBonB,EAAS/vB,EAAMgpB,GAAG+G,OAClBb,EAAelvB,EAAMkvB,aAGrBgwB,EAAO,OACP+1B,EAAmB,kBACnBC,EAAiB,gBACjBC,EAAO,OACPC,EAAO,OAGPC,EAAoB,0BAEpBC,EAAa,wDAGbC,EAAa,YACbC,EAAsB,oBACtBC,EAAY,WACZC,EAAuB,qBACvBC,EAAQ,QACRC,EACS,YADTA,EAEM,SAFNA,EAGe,mBAHfA,EAIQ,WAJRA,EAKQ,WALRA,EAMQ,WAGRC,EAAO71E,EAAMgpB,GAAG+G,OAAO3tB,OAAO,CAC9BoF,KAAM,SAASo+C,EAASr/C,GACpB,IAAIe,EAAOjI,KACXkH,EAAUA,GAAW,GACrBe,EAAK0nB,GAAKhvB,EAAM8uB,OAEhBnmB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GACxBjI,KAAKkH,QAAUvE,EAAEI,OAAO,GAAI/C,KAAKkH,QAASA,GAE1Ce,EAAKs+C,QAAUA,EAEXt+C,EAAKf,QAAQuvE,cACb/lD,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAMA,EAAKyuE,iBAAkBxvE,GAGjDe,EAAKf,QAAQyvE,gBACb1uE,EAAK2uE,kBAGT3uE,EAAKkoB,QAAUjpB,EAAQipB,SAAW,MAClCloB,EAAK6gD,MAAQ5hD,EAAQ4hD,MACrB7gD,EAAK4uE,OAAyB,IAAjB3vE,EAAQ8kB,KACrBhsB,KAAK82E,cAAgB5vE,EAAQ6vE,eAAgB,EAC7C/2E,KAAKg3E,cAAgB9vE,EAAQyI,aAC7B1H,EAAKgvE,WAAa,GAElBhvE,EAAKuB,KAAK,CAAEq2C,EAAMi2B,EAAMC,EAAMH,EAAkBC,GAAkB3uE,IAGtEA,QAAS,CACL9E,KAAM,OACNq0E,cAAc,EACdE,gBAAgB,EAChBO,cAAc,EACdC,iBAAiB,GAGrBvnE,OAAQ,SAAS0mB,GACb,IAAIruB,EAAOjI,KACPo3E,GAAkBnvE,EAAK4D,QAsB3B,OAlBIurE,IACAnvE,EAAK4D,QAAU5D,EAAKyuE,kBAGpBpgD,GACA3zB,EAAE2zB,GAAWyjB,OAAO9xC,EAAK4D,SAGzBurE,IACAz2E,EAAM6I,KAAKvB,EAAK4D,QAAS5D,EAAK6gD,OAC9B7gD,EAAKmC,QAAQy1C,IAGbvpB,IACAruB,EAAKovE,cA9EJ,UA+EDpvE,EAAKmC,QAAQ0rE,IAGV7tE,EAAK4D,SAGhB1E,MAAO,WACH,OAAO,IAAImwE,EAAUt3E,OAGzBu3E,kBAAmB,WACf,OAAO,GAGXC,kBAAmB,WACf,OAAO,GAGXC,UAAW,WACP,IACI5rE,EADO7L,KACQ4P,SAEf/D,GACAA,EAAQe,IAAI,UAAW,IAG3B5M,KAAKoK,QAAQ8rE,EAAY,CAAEx+C,KAAM13B,QAGrC03E,QAAS,aAGTC,QAAS,WACL33E,KAAKmN,QAGT8tC,iBAAkB,SAASv1C,GACvB1F,KAAKoK,QAAQwrE,EAAkB,CAAElwE,KAAMA,KAG3Cw1C,gBAAiB,SAASx1C,GACtB1F,KAAKoK,QAAQyrE,EAAgB,CAAEnwE,KAAMA,KAGzCyH,KAAM,WACEnN,KAAKkH,QAAQgwE,eACbl3E,KAAKq3E,cA5HJ,UA6HD10E,EAAE3C,KAAK6L,SAAS+rE,UAGpB53E,KAAKoK,QAAQ2rE,IAGjB/zE,QAAS,WACL,IAAIiG,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEfA,IACA6kB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEvBtH,EAAMsJ,OAAO4B,GACblL,EAAMqB,QAAQ6J,GAEV5D,EAAKf,QAAQiwE,iBACbtrE,EAAQkrB,WAMpB8gD,MAAO,WACH,IAAI5vE,EAAOjI,KAEXiI,EAAKjG,UACLW,EAAEsF,EAAK4D,SAASoB,IAAIhF,EAAKs+C,SAASt5C,IAAIhF,EAAKmE,SAAS6sB,MAAMlC,UAG9D+gD,UAAW,SAASA,GAChBn1E,EAAEI,OAAO/C,KAAKi3E,WAAYa,IAG9BT,cAAe,SAASU,GACpB,IAAK,IAAIrzD,KAAe1kB,KAAKi3E,WACzBj3E,KAAKi3E,WAAWvyD,GAAaqzD,GAAY/3E,KAAM0kB,IAIvDgyD,eAAgB,WACZ,IAEI7qE,EACA06C,EAHAt+C,EAAOjI,KACPoM,EAAU,IAAMnE,EAAKkoB,QAAU,IAInC,IAlLK,YAmLDo2B,EAAU5jD,EAAEyM,SAAS4oE,eAAe/vE,EAAKs+C,UAAYt+C,EAAKs+C,UAE9C,GAAGp2B,UACXo2B,EAAUA,EAAQz2C,QAExB,MAAOnL,GACDqxE,EAAkBjpE,KAAKpI,EAAE4rB,WACzBg2B,EAAUt+C,EAAKs+C,SAIvB,GAAuB,iBAAZA,EACPA,EAAUA,EAAQ9jD,QAAQ,aAAc,IACpCwF,EAAK6uE,gBACLvwB,EAAU5lD,EAAMkP,SAAS02C,EAAS,CAAE52C,aAAc1H,EAAK+uE,eAA7Cr2E,CAA8DsH,EAAK6gD,OAAS,KAG1Fj9C,EAAUlJ,EAAEyJ,GAAS2tC,OAAOwM,GAMvBt+C,EAAK4uE,QACPhrE,EAAUA,EAAQosE,gBAElB,CAEH,GADApsE,EAAU06C,EACNt+C,EAAK6uE,cAAe,CACpB,IAAIvgE,EAAS5T,EAAEhC,EAAMkP,SAASlN,EAAE,WAAWo3C,OAAOluC,EAAQ1E,OAAM,IAAO2I,OAAQ,CAAEH,aAAc1H,EAAK+uE,eAArFr2E,CAAsGsH,EAAK6gD,OAAS,KAG/HnmD,EAAEwyB,SAAS/lB,SAAUvD,EAAQ,KAC7BA,EAAQqsE,YAAY3hE,GAGxB1K,EAAU0K,EAEVtO,EAAK4uE,QACLhrE,EAAUA,EAAQy/C,QAAQl/C,GAASD,UAI3C,OAAON,GAGX+qE,gBAAiB,WACb,IAAI3uE,EAAOjI,KAEPiI,EAAKf,QAAQyvE,iBACb1uE,EAAKkwE,WACLlwE,EAAKmwE,iBACLnwE,EAAKowE,gBACLpwE,EAAKqwE,kBAIbH,SAAU,WACN,IAAIlwE,EAAOjI,KACPumD,EAAUt+C,EAAKs+C,QAEfA,EAAQh6C,GAAGsjB,EAAa,SACxB5nB,EAAKmE,QAAUnE,EAAKs+C,QAEpBt+C,EAAKmE,QAAUm6C,EACVv6B,KAAK,aAAerrB,EAAM6qB,GAAK,uBAAyB7qB,EAAM6qB,GAAK,oBAAsB7qB,EAAM6qB,GAAK,+BACpGrf,SAGT,IAAIC,EAAUnE,EAAKmE,QAEnBA,EAAQ0W,KAAK,KAAM7a,EAAK0nB,IAExBvjB,EAAQmY,SAASgyD,GACjBnqE,EAAQmY,SAASgyD,GACjBnqE,EAAQ0W,KAAK,OAAQ,SAGzBs1D,eAAgB,WACZ,IACIhsE,EAAUzJ,EADH3C,KACUoM,SACjBmsE,EAAkB1oD,EAAa,WAE9BzjB,EAAQ+oC,SAASojC,GAAiB,IACZnsE,EAAQ+oC,WAAWlf,QAAO,WAC7C,IAAIyN,EAAQ/gC,EAAE3C,MACd,IAAK0jC,EAAMn3B,GAAGsjB,EAAa,aAAe6T,EAAMn3B,GAAGsjB,EAAa,WAC5D,OAAO6T,KAIE1X,KAAK,QAAUlJ,EAAK,QAAU,qBAInD9iB,KAAKw4E,eAAiBpsE,EAAQ+oC,SAAStlB,EAAa,YAEpD7vB,KAAKw4E,eACAj0D,SAASgyD,GACThyD,SAASgyD,IAGlB8B,cAAe,WACX,IACIjsE,EADOpM,KACQoM,QAEnBpM,KAAKgmD,OAAS55C,EAAQ+oC,SAAStlB,EAAa,WAAWtL,SAASgyD,IAGpE+B,cAAe,WACX,IACIlsE,EADOpM,KACQoM,QAEnBpM,KAAKy4E,OAASrsE,EAAQ+oC,SAAStlB,EAAa,WAAWtL,SAASgyD,MAIpEe,EAAY32E,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAASuvB,GACX/0B,EAAEI,OAAO/C,KAAM,CACX6L,QAAS6rB,EAAK7rB,QAAQ1E,OAAM,GAC5BgrC,WAAYza,EAAKya,WACjBxiB,GAAI+H,EAAK/H,KAGb+H,EAAK7rB,QAAQM,SAAS4tC,OAAO/5C,KAAK6L,UAGtC8rE,QAAS,WACL33E,KAAK6L,QAAQkrB,UAGjBkkB,iBAAkBt4C,EAAEQ,KACpB+3C,gBAAiBv4C,EAAEQ,OAGnBu1E,EAASlC,EAAKzzE,OAAO,CACrBoF,KAAM,SAASo+C,EAASr/C,GACpBsvE,EAAKzuE,GAAGI,KAAKoC,KAAKvK,KAAMumD,EAASr/C,GACjClH,KAAK24E,WAAa,IAGtBriD,UAAW,SAAS7Q,GAChB,IAAI6Q,EAAYt2B,KAAK24E,WAAWlzD,GAOhC,OALK6Q,IACDA,EAAYt2B,KAAK44E,iBAAiBnzD,GAClCzlB,KAAK24E,WAAWlzD,GAAY6Q,GAGzBA,GAGXuiD,OAAQ,SAASpzD,EAAUiS,EAAMya,GAC7BnyC,KAAKs2B,UAAU7Q,GAAUvY,KAAKwqB,EAAMya,IAGxCymC,iBAAkB,SAASnzD,GACvB,IAEI6Q,EAFAmnB,EAAOz9C,KAAK4P,SACZ/D,EAAU4xC,EAAK1nB,KAAKtQ,GAGxB,IAAK5Z,EAAQrE,QAAUi2C,EAAKlxC,GAAGkZ,GAAW,CACtC,IAAIg4B,EAAKlxC,GAAGkZ,GAIR,MAAM,IAAIhV,MAAM,6CAA+CgV,EAAW,aAH1E5Z,EAAU4xC,EAalB,OANAnnB,EAAY,IAAIwiD,EAAcjtE,IAEpBrC,KAAK,YAAY,SAAS7E,GAChCA,EAAE+yB,KAAK9nB,OAAO/D,MAGXyqB,KAIXyiD,EAAWvC,EAAKzzE,OAAO,CACvBi2E,OAAQ,SAASthD,EAAMhT,GACnBgT,EAAK7rB,QAAQkqB,KAAKrR,GAAawzD,YAAYl4E,KAAK4P,WAGpDgoE,OAAQ,eAIRqB,EAAmB,4BAgBvB,IAAIH,EAAgBxvE,EAAWvG,OAAO,CAClCoF,KAAM,SAASmuB,GACXhtB,EAAWvB,GAAGI,KAAKoC,KAAKvK,MACxBA,KAAKs2B,UAAYA,EACjBt2B,KAAK8lB,QAAU,GACf9lB,KAAK03B,KAAO,KACZ13B,KAAKk5E,SAAU,GAGnBC,MAAO,WACHn5E,KAAKk5E,SAAU,EACfl5E,KAAKoK,QAAQ,WAAY,CAAEstB,KAAM13B,KAAK03B,OACtC13B,KAAKoK,QAAQ,UAGjBuB,IAAK,WACD3L,KAAK03B,KAAKggD,UACV13E,KAAKw4C,SAASm/B,UACd33E,KAAKm5E,SAGTjsE,KAAM,SAASwqB,EAAMya,EAAYinC,GAC7B,IAAK1hD,EAAK6/C,qBAAwBv3E,KAAK03B,OAAS13B,KAAK03B,KAAK8/C,oBAEtD,OADAx3E,KAAKoK,QAAQ,UACN,EAGXgvE,EAAaA,GAAc1hD,EAAK/H,GAEhC,IAAI1nB,EAAOjI,KACPyT,EAAWikB,IAASzvB,EAAKyvB,KAAQA,EAAKvwB,QAAUc,EAAKyvB,KACrD5R,EAAU7d,EAAK6d,QAEfq0B,GADgBr0B,EAAQA,EAAQte,OAAS,IAAM,IAC1BmoB,KAAOypD,EAG5BC,EAAgBlnC,IAAgBgI,EAAOr0B,EAAQA,EAAQte,OAAS,GAAG2qC,WAAaza,EAAKya,YACrFmnC,EAnDZ,SAAyBnnC,GACrB,IAAKA,EACD,MAAO,GAGX,IAAI3wC,EAAU2wC,EAAWhiC,MAAM8oE,IAAqB,GAEpD,MAAO,CACHvzE,KAAMlE,EAAQ,GACdyyC,UAAWzyC,EAAQ,GACnBsU,QAAwB,YAAftU,EAAQ,IAyCI+3E,CAAgBF,GAqBrC,OAnBIpxE,EAAKixE,SACLjxE,EAAK6rC,OAAOlsB,OAGM,SAAlByxD,IACAA,EAAgB,MAGpBpxE,EAAKmC,QAAQ,WAAY,CAAEstB,KAAMA,IACjCzvB,EAAKyvB,KAAOA,EACZzvB,EAAKuwC,SAAW/kC,EAChBxL,EAAKixE,SAAU,EAEV/+B,EAGDr0B,EAAQuJ,MAFRvJ,EAAQnkB,KAAK,CAAEguB,GAAIypD,EAAYjnC,WAAYknC,IAK1C5lE,GAOA4lE,GAAkB14E,EAAM6lB,QAAQU,SAMjCwQ,EAAK7rB,QAAQ0Y,SAAS,eACtBmT,EAAK+/C,YAEDt9B,IAAShI,IACTmnC,EAAexjE,SAAWwjE,EAAexjE,SAG7C7N,EAAK6rC,OAASnzC,EAAMipB,GAAG8N,EAAK7rB,SAASpJ,QAAQgR,EAAQ5H,QAASytE,EAAe5zE,MACxEu1C,kBAAiB,WACdvjB,EAAKujB,iBAAiB,QACtBxnC,EAAQwnC,iBAAiB,WAE5BC,iBAAgB,WACbxjB,EAAKwjB,gBAAgB,QACrBznC,EAAQynC,gBAAgB,WAE3BjH,UAAUqlC,EAAerlC,WACzBoB,WAAWikC,EAAexjE,SAE/B7N,EAAK6rC,OAAOmB,MAAM0pB,MAAK,WAAa12D,EAAK0D,WAxBzC+rB,EAAK+/C,YACLxvE,EAAK0D,QA0BF,IAlCH+rB,EAAK+/C,YACL//C,EAAKggD,UACLzvE,EAAKkxE,SACE,IAkCfn3E,QAAS,WACL,IACI01B,EADO13B,KACK03B,KAEZA,GAAQA,EAAK11B,SACb01B,EAAK11B,aAKbw3E,EAAalwE,EAAWvG,OAAO,CAC/BoF,KAAM,SAASjB,GACX,IACIqxB,EACAjC,EAFAruB,EAAOjI,KAIXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GACxBA,EAAKf,QAAUA,EAEfvE,EAAEI,OAAOkF,EAAMf,GACfe,EAAKwxE,QAAU92E,EAAE,WACjB2zB,EAAYruB,EAAKquB,UAEjBiC,EAAQtwB,EAAKyxE,WAAWpjD,GACxBruB,EAAK0xE,SAAWphD,EAAMruB,QACtBjC,EAAK2xE,QAAU,GAEf3xE,EAAK4xE,cAAgB,IAAIl5E,EAAMm4E,cAAc7wE,EAAKquB,WAElDruB,EAAK4xE,cAAcrwE,KAAK,YAAY,SAAS7E,GACzCA,EAAE+yB,KAAK4M,OAASr8B,EAAKq8B,UAGzBr8B,EAAK4xE,cAAcrwE,KAAK,YAAY,SAAS7E,GACzCsD,EAAKmC,QAAQgsE,EAAW,CAAE1+C,KAAM/yB,EAAE+yB,UAGtCzvB,EAAK4xE,cAAcrwE,KAAK8sE,GAAO,WAC3BruE,EAAKmC,QAAQksE,MAGjBt2E,KAAKwJ,KAAKxJ,KAAKqK,OAAQnD,IAG3BmD,OAAQ,CACJ6rE,EACAI,EACAF,EArgBS,YACG,eAugBZD,EACAE,GAGJr0E,QAAS,WACL,IAAIiG,EAAOjI,KACP65E,EAAgB5xE,EAAK4xE,cAIzB,IAAK,IAAIlqD,KAFThvB,EAAMqB,QAAQiG,EAAKquB,WAEJruB,EAAK2xE,QAChB55E,KAAK45E,QAAQjqD,GAAI3tB,UAGjB63E,GACAA,EAAc73E,WAItB01B,KAAM,WACF,OAAO13B,KAAK65E,cAAcniD,MAG9BoiD,SAAU,SAASzrD,EAAK8jB,EAAY7N,GAMhC,GAJY,MADZjW,EAAMA,EAAI5rB,QAAQ,IAAIwL,OAAO,IAAMjO,KAAK+5E,qBAAsB,MAC5C/5E,KAAK+5E,sBACnB1rD,EAAM,KAGNA,EAAI5rB,QAAQ,KAAM,MAAQzC,KAAKquB,IAE/B,OADAruB,KAAKoK,QAAQ+rE,IACN,EAGXn2E,KAAKoK,QAAQ8rE,GAEb,IAAIjuE,EAAOjI,KACP6L,EAAU5D,EAAK+xE,iBAAiB3rD,GAChCqJ,EAAO/2B,EAAMy1B,eAAevqB,GAahC,OAXA5D,EAAKomB,IAAMA,EAAI5rB,QAAQ,KAAM,IAE7BwF,EAAKq8B,OAASA,EAEV5M,GAAQA,EAAKuiD,SACbviD,EAAKmgD,QACLhsE,EAAU,IAGd7L,KAAKoK,QAAQisE,EAAsB,CAAE7O,OAA2B,IAAnB37D,EAAQrE,OAAc6mB,IAAKA,KAEpExiB,EAAQ,KACH6rB,IACDA,EAAOzvB,EAAKiyE,YAAYruE,IAGrB5D,EAAK4xE,cAAc3sE,KAAKwqB,EAAMya,EAAY9jB,KAMzD0rB,OAAQ,SAASjqC,EAAMue,GACnB,IAGIkK,EACAb,EAJA+hD,EAAUz5E,KAAKy5E,QACfU,GAAW9rD,GAAO,IAAIzjB,MAAM,KAAK,GACjC0rB,EAAYt2B,KAAKs2B,UA0BrB,OAtBI2/C,EAAWlpE,KAAK+C,KAChBA,EAAO7B,OAAO8lC,IAGlB0lC,EAAQ,GAAGz7D,UAAYlO,EAEvBwmB,EAAUyjB,OAAO0/B,EAAQtkC,SAAS,mBAGlCzd,GADAa,EAAQv4B,KAAK05E,WAAWD,IACXvvE,SAGH1C,SACN+wB,EAAQb,EAAO+hD,EAAQW,UAAU,0BAA0BjlC,YAG3DglC,GACAziD,EAAKvqB,OAAO2V,KAAKA,EAAK,OAAQq3D,GAGlC7jD,EAAUyjB,OAAOxhB,GAEVv4B,KAAKk6E,YAAYxiD,IAG5B2iD,QAAS,SAASpqD,GACd,OAAOjwB,KAAKs6E,SAAWvqD,EAAkBE,GAAaJ,EAAaI,IAGvE+pD,iBAAkB,SAAS3rD,GACvB,IAAIxiB,EACAsuE,EAAU9rD,EAAIzjB,MAAM,KAAK,GAE7B,OAAKuvE,IAILtuE,EAAU7L,KAAKs2B,UAAU6e,SAAS,IAAMryB,EAAK,OAAS,KAAOq3D,EAAU,OAG1D,KAAgC,IAA1BA,EAAQxkE,QAAQ,OAC/B9J,EAAU7L,KAAKs2B,UAAU6e,SAA+B,MAAtBglC,EAAQrvE,OAAO,GAAaqvE,EAAU,IAAMA,IAG7EtuE,EAAQ,KACTA,EAAU7L,KAAKu6E,qBAAqBlsD,IAGjCxiB,GAdI7L,KAAK25E,UAiBpBY,qBAAsB,SAAS5qD,GAE3B,OADc3vB,KAAKs2B,UAAU6e,SAAS,QAAUxlB,EAAK,OAIzDuqD,YAAa,SAASruE,GAElB,OAAO7L,KAAKw6E,eAAe3uE,IAG/B4uE,kBAAmB,SAAS5uE,GACxB,OAAOlL,EAAM20B,WAAWzpB,EAAS,CAC7B6uE,kBAAmB16E,KAAKmyC,WACxBwoC,OAAQ36E,KAAK26E,OACbrkD,UAAWt2B,KAAKs2B,UAChBskD,UAAW56E,KAAK66E,eAChBC,WAAY96E,KAAK86E,WACjBb,OAAQ/gD,EAAUrtB,EAAS,WAC5B8d,EAAG4L,QAGVilD,eAAgB,SAAS3uE,GACrB,IAAIkvE,GAAe/6E,KAAKkH,SAAW,IAAI6zE,aAAe,GACtD,OAAO,IAAIp6E,EAAM61E,KAAK3qE,EAAS,CAC3B4qE,aAAcsE,EAAYtE,aAC1BzqD,KAAM+uD,EAAY/uD,OAAQ,EAC1B2qD,eAAgBoE,EAAYpE,eAC5BO,aAAc6D,EAAY7D,aAC1BC,gBAAiB4D,EAAY5D,mBAIrCuC,WAAY,SAASpjD,GACjB,OAAOA,EAAU6e,SAASn1C,KAAKq6E,QAAQ,SAASltE,UAIxDxM,EAAM64E,WAAaA,EAEnB74E,EAAMm4E,cAAgBA,EACtBn4E,EAAMo4E,SAAWA,EACjBp4E,EAAM+3E,OAASA,EACf/3E,EAAM61E,KAAOA,EACb71E,EAAM22E,UAAYA,EAhsBtB,CAksBGx2E,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,GACN,IAAIhC,EAAQG,OAAOH,MACfuI,EAAavI,EAAMuI,WAEvB,SAAS8xE,EAAgB/zD,GACrB,OAAOA,GAAW/d,EAAW+d,EAAQulB,OAAStjC,EAAW+d,EAAQwlB,MAGrE,SAASwuC,EAAgBh0D,GACrB,OAAOA,GAAW/d,EAAW+d,EAAQ03C,OAASz1D,EAAW+d,EAAQi0D,OAGrE,IAAI11B,EAAY7kD,EAAMkN,KAAK+nD,gBAAgB7yD,OAAO,CAC9CoF,KAAM,SAASjB,GACX,IAAIi0E,EAAUj0E,GAAWA,EAAQi0E,QAAUj0E,EAAQi0E,QAAU,GAEzDl0D,EAAUk0D,EAAQl0D,QAEtB,IAAKA,EACD,MAAM,IAAIxW,MAAM,qCAGpB,IAAKuqE,EAAgB/zD,KAAag0D,EAAgBh0D,GAC9C,MAAM,IAAIxW,MAAM,2CAGpBzQ,KAAKinB,QAAUA,EAEf,IAAIm0D,EAAMD,EAAQC,IAElB,IAAKA,EACD,MAAM,IAAI3qE,MAAM,iCAGpB,GAAqB,mBAAV2qE,EAAInyD,IAAyC,mBAAdmyD,EAAIC,OAC1C,MAAM,IAAI5qE,MAAM,sDAGpBzQ,KAAKo7E,IAAMA,EAEXz6E,EAAMkN,KAAK+nD,gBAAgB7tD,GAAGI,KAAKoC,KAAKvK,KAAMkH,IAGlDvF,KAAM,SAAS25E,GACX,IAAI72C,EAASzkC,KAAKkH,QAAQi0E,QAAQ12C,QAAU,GAExCA,EAAOuiB,QACPhnD,KAAKo7E,IAAInyD,GAAGwb,EAAOuiB,OAAQs0B,EAAU/gB,YAGrC91B,EAAOsiB,QACP/mD,KAAKo7E,IAAInyD,GAAGwb,EAAOsiB,OAAQu0B,EAAU7gB,YAGrCh2B,EAAOziC,SACPhC,KAAKo7E,IAAInyD,GAAGwb,EAAOziC,QAASs5E,EAAU3gB,cAI9C4gB,MAAO,SAASr0E,EAASxB,GACrB,IAAI01E,EAAMp7E,KAAKo7E,IACXn0D,EAAUjnB,KAAKinB,QACfu0D,EAASx7E,KAAKkH,QAAQi0E,QAAQK,OAElC,IAAKA,IAAWA,EAAO91E,GACnB,MAAM,IAAI+K,MAAM9P,EAAM+P,OAAO,uCAAwChL,IAGzE,IAAIyxB,EAAO,CAACqkD,EAAO91E,IAEfmI,EAAO7N,KAAKinD,aAAa//C,EAAQ2G,KAAMnI,GAEtC/C,EAAEizB,cAAc/nB,IACjBspB,EAAKx1B,KAAKkM,GAGVmtE,EAAgB/zD,GAChBA,EAAQulB,MAAK,WACT4uC,EAAIC,OAAOjzE,MAAMgzE,EAAKjkD,GACXqV,KAAKtlC,EAAQ6gD,SACbtb,KAAKvlC,EAAQ6mB,UAErBktD,EAAgBh0D,IACvBA,EAAQ03C,MAAK,WACTyc,EAAIC,OAAOjzE,MAAMgzE,EAAKjkD,GACXwnC,KAAKz3D,EAAQ6gD,SACbmzB,MAAMh0E,EAAQ6mB,WAKrC+2B,KAAM,SAAS59C,GACXlH,KAAKu7E,MAAMr0E,EAAS,SAGxB8/C,OAAQ,SAAS9/C,GACblH,KAAKu7E,MAAMr0E,EAAS,WAGxB6/C,OAAQ,SAAS7/C,GACblH,KAAKu7E,MAAMr0E,EAAS,WAGxBlF,QAAS,SAASkF,GACdlH,KAAKu7E,MAAMr0E,EAAS,cAI5BvE,EAAEI,QAAO,EAAMpC,EAAMkN,KAAM,CACvBg5C,WAAY,CACRs0B,QAAS31B,KA9GrB,CAkHG1kD,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4C,EAAU5C,EAAM4C,QAChBqE,EAAQjH,EAAMiH,MACd0B,EAAa3I,EAAM2I,WACnBspC,EAAMxkC,KAAKwkC,IACX7vC,EAASJ,EAAEI,OACX04E,EAAKl4E,EAAQkf,SACbi5D,EAAoBD,GAAMA,EAAGn7D,QAC7Bq7D,EAAmB,IAEnBC,EAAoBr4E,EAAQye,QAAQoB,KAAO,EAAI,EAG/Cy4D,EAAQ,QACRC,EAAO,OACPC,EAAS,SACTC,EAAQ,QACRC,EAAO,OACPpxD,EAAM,MACNqxD,EAAS,SACTC,EAAM,MACNC,EAAY,YACZC,EAAU,UAEVC,EAAgB,gBAChBC,EAAa,aACbC,EAAa,aAEbC,EAAY,CACZC,IAAO,EACPj+D,MAAS,EACTk+D,MAAS,EACTC,QAAW,GAGXC,GAA0Bt5E,EAAQkb,OAASlb,EAAQwf,qBAEvD,SAAS+5D,EAAWC,EAAQC,GACxB,IAAIC,EAAKF,EAAO33E,EAAEmd,SACd26D,EAAKH,EAAO54E,EAAEoe,SACd46D,EAAKH,EAAO53E,EAAEmd,SACd66D,EAAKJ,EAAO74E,EAAEoe,SACd86D,EAAKJ,EAAKE,EACVG,EAAKJ,EAAKE,EAEd,MAAO,CACHG,OAAQ,CACLn4E,GAAI63E,EAAKE,GAAM,EACfh5E,GAAI+4E,EAAKE,GAAM,GAGlBI,SAAUn6E,KAAKo6E,KAAKJ,EAAKA,EAAKC,EAAKA,IAI3C,SAASI,EAAW/4E,GAChB,IAGa6C,EACTohB,EACAnK,EALAiK,EAAU,GACVC,EAAgBhkB,EAAEgkB,cAClBg1D,EAAgBh5E,EAAEg5E,cAClB/zE,EAAM,EAIV,GAAIjF,EAAE+3E,IACFh0D,EAAQ/mB,KAAK,CACTguB,GAAI,EACJvQ,MAAOza,EACP2C,OAAQ3C,EAAE2C,OACVq2E,cAAeh5E,EAAE2C,OACjBib,SAAU5d,EACVe,KAAM,aAGT,GAAIf,EAAEe,KAAKyK,MAAM,SAElB,IAAK3I,GADLohB,EAAiBD,EAAgBA,EAAcC,eAAiB,IACnCphB,OAAQoC,EAAMpC,EAAQoC,IAC/C6U,EAAQmK,EAAehf,GACvB8e,EAAQ/mB,KAAK,CACT4gB,SAAU9D,EACVW,MAAOza,EACP2C,OAAQmX,EAAMnX,OACdq2E,cAAeA,EACfhuD,GAAIlR,EAAMm/D,WACVl4E,KAAM,eAITnC,EAAQ8iB,UAAY9iB,EAAQ4iB,WACjCuC,EAAQ/mB,KAAK,CACT4gB,SAAUoG,EACVvJ,MAAOza,EACP2C,OAAQ3C,EAAE2C,OACVq2E,cAAeA,EACfhuD,GAAIhH,EAAck1D,UAClBn4E,KAAM,YAGVgjB,EAAQ/mB,KAAK,CACTguB,GAAI,EACJvQ,MAAOza,EACP2C,OAAQ3C,EAAE2C,OACVq2E,cAAeA,EACfp7D,SAAU5d,EACVe,KAAM,UAId,OAAOgjB,EAGX,IAAIo1D,EAAYl2E,EAAM7E,OAAO,CACzBoF,KAAM,SAAS68B,EAAMziB,GACjB,IAAIta,EAAOjI,KAEXiI,EAAK+8B,KAAOA,EAEZ/8B,EAAK81E,oBAAoBx7D,GAEzBta,EAAK+1E,cAAgB/1E,EAAKsa,SAC1Bta,EAAKg2E,SAAWh2E,EAAK28B,MAAQ,EAC7B38B,EAAKi2E,UAAYtrC,KAGrBrY,KAAM,SAAShY,GACX,IAAIta,EAAOjI,KACP+c,EAASwF,EAAS,OAASta,EAAK+8B,MAChCk5C,EAAYtrC,IACZurC,EAAaD,EAAYj2E,EAAKi2E,WAAc,GAE3CnhE,GAAU2+D,IAIfzzE,EAAK28B,MAAQ7nB,EAAS9U,EAAKsa,SAE3Bta,EAAK81E,oBAAoBx7D,GAEzBta,EAAKm2E,aAAerhE,EAAS9U,EAAK+1E,cAClC/1E,EAAKg2E,SAAWh2E,EAAK28B,MAAQu5C,EAC7Bl2E,EAAKi2E,UAAYA,IAGrBH,oBAAqB,SAASx7D,GAC1B,IAAIta,EAAOjI,KAAMglC,EAAO/8B,EAAK+8B,KAE7B/8B,EAAKsa,SAAWA,EAAS,OAASyiB,GAClC/8B,EAAKw8B,OAASliB,EAAS,SAAWyiB,GAClC/8B,EAAKsX,OAASgD,EAAS,SAAWyiB,MAItCq5C,EAAQz2E,EAAM7E,OAAO,CACrBoF,KAAM,SAASm2E,EAAYh3E,EAAQi3E,GAC/Bx7E,EAAO/C,KAAM,CACToF,EAAG,IAAI04E,EAAU,IAAKS,EAAUh8D,UAChCpe,EAAG,IAAI25E,EAAU,IAAKS,EAAUh8D,UAChC7c,KAAM64E,EAAU74E,KAChB84E,cAAeF,EAAWE,cAC1BC,UAAWH,EAAWG,WAAahC,EAAU8B,EAAU74E,MACvD44E,WAAYA,EACZh3E,OAAQA,EACRq2E,cAAeY,EAAUZ,cACzBe,aAAcH,EAAUj3E,OACxBqoB,GAAI4uD,EAAU5uD,GACdgvD,WAAYJ,EACZK,QAASN,EAAWM,QACpBC,iBAAkBP,EAAWO,iBAC7BC,QAAQ,EACRC,WAAW,KAInBC,MAAO,WACHh/E,KAAKi/E,aAAelmD,WAAW/4B,KAAKk/E,MAAM11E,KAAKxJ,MAAOA,KAAKs+E,WAAWa,SACtEn/E,KAAKo/E,SAASvD,EAAO77E,KAAK2+E,aAG9BU,KAAM,SAASd,GACX,IAAIt2E,EAAOjI,KACXiI,EAAKq2E,WAAWM,UACe,GAA3B32E,EAAKq2E,WAAWM,UAChB32E,EAAKq3E,cAAgBvmD,YAAW,WACG,GAA3B9wB,EAAKq2E,WAAWM,QAChB32E,EAAKm3E,SAASjD,EAAKoC,GAGnBt2E,EAAKm3E,SAAShD,EAAWmC,GAE7Bt2E,EAAKq2E,WAAWM,QAAU,IAnLxB,OAwLdM,MAAO,WACHl/E,KAAKo/E,SAAStD,EAAM97E,KAAK2+E,aAG7BpkD,KAAM,SAASgkD,GACX,IAAIt2E,EAAOjI,KACPu/E,EAAiC,QAAnBhB,EAAU74E,MAAkBuC,EAAKq2E,WAAWkB,eAE9D,IAAIv3E,EAAK82E,YAAaQ,EAAtB,CAKA,GAHAt3E,EAAK7C,EAAEm1B,KAAKgkD,EAAUh8D,UACtBta,EAAK9D,EAAEo2B,KAAKgkD,EAAUh8D,WAEjBta,EAAK62E,OAAQ,CACd,GAAI72E,EAAKw3E,yBACL,OAGJ,GAAKC,EAAWjsE,SAAWisE,EAAWjsE,UAAYxL,EAAKq2E,WAGnD,OAAOr2E,EAAK03E,UAFZ13E,EAAK23E,OAAOrB,GAOft2E,EAAK82E,WACN92E,EAAKm3E,SAASnD,EAAMsC,KAI5B5yE,IAAK,SAAS4yE,GACVv+E,KAAK6/E,QAAUjtC,IAEX5yC,KAAK++E,YAGT/+E,KAAK++E,WAAY,EAEjB/+E,KAAKo/E,SAAS/C,EAASkC,GAEnBv+E,KAAK8+E,OACL9+E,KAAKo/E,SAASv0D,EAAK0zD,GAEdv+E,KAAKw+E,gBACFx+E,KAAK6+E,iBACL7+E,KAAKq/E,KAAKd,GAGVv+E,KAAKo/E,SAASjD,EAAKoC,IAK/BpkD,aAAan6B,KAAKi/E,cAElBj/E,KAAK2/E,YAGTA,QAAS,WACL,IACIG,EADa9/E,KAAKs+E,WACS51D,QAE/B1oB,KAAK++E,WAAY,EACjB/+E,KAAK2+E,WAAa,KAClBxkD,aAAan6B,KAAKi/E,cAElBa,EAAct1E,OAAO7H,EAAE0yB,QAAQr1B,KAAM8/E,GAAgB,IAGzDr7B,KAAM,WACFzkD,KAAK2/E,WAGTnlD,OAAQ,WACJx6B,KAAK2/E,WAGTI,QAAS,WACL,OAAO//E,KAAK8+E,QAGhBc,OAAQ,SAASrB,GACbpkD,aAAan6B,KAAKi/E,cAElBj/E,KAAKggF,UAAYptC,IACjB5yC,KAAK8+E,QAAS,EACd9+E,KAAKo/E,SAASpD,EAAOuC,IAGzBa,SAAU,SAASh9E,EAAMm8E,GACrB,IAAIt2E,EAAOjI,KACP2kC,EAAc45C,EAAUn/D,MACxBvR,EAAO,CACH4Q,MAAOxW,EACP7C,EAAG6C,EAAK7C,EACRjB,EAAG8D,EAAK9D,EACRmD,OAAQW,EAAKX,OACb8X,MAAOulB,GAGX18B,EAAKq2E,WAAW9pD,OAAOpyB,EAAMyL,IAC7B82B,EAAYx7B,kBAIpBs2E,uBAAwB,WACpB,IAAIQ,EAASjgF,KAAKoF,EAAEg5E,aAChB8B,EAASlgF,KAAKmE,EAAEi6E,aAEpB,OAAO/6E,KAAKo6E,KAAKwC,EAASA,EAASC,EAASA,IAAWlgF,KAAKy+E,aAIpE,SAAS0B,EAAgBn3D,GAKrB,IAJA,IAAIo3D,EAAaz/E,EAAM25B,SAAS7M,GAAG7iB,MAAM,KACrChB,EAAM,EACNpC,EAAS44E,EAAW54E,OAEjBoC,EAAMpC,EAAQoC,IACjBof,EAASo3D,EAAWx2E,IAI5B,IAAI81E,EAAap2E,EAAWvG,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS3E,GACpB,IACI+uB,EADAhuB,EAAOjI,KAEPwrB,EAAK7qB,EAAM8uB,OAoCf,GAlCAvoB,EAAUA,GAAW,GACrB+uB,EAAShuB,EAAKguB,OAAS/uB,EAAQ+uB,OAC/BhuB,EAAKw2E,UAAYv3E,EAAQu3E,WAAa7C,EACtC3zE,EAAKk3E,QAAUj4E,EAAQi4E,SAAWxD,EAClC1zE,EAAKygB,QAAU,GACfzgB,EAAKo4E,YAAcn5E,EAAQo5E,WAAa,EAAI,EAC5Cr4E,EAAKs4E,eAAiBr5E,EAAQq5E,eAC9Bt4E,EAAKu4E,iBAAmBt5E,EAAQs5E,iBAChCv4E,EAAKu2E,eAAiBt3E,EAAQu5E,UAAYl9E,EAAQsf,eAClD5a,EAAKy4E,QAAUl1D,EACfvjB,EAAK22E,QAAU,EACf32E,EAAK42E,iBAAmB33E,EAAQ23E,iBAEhChzE,EAAUlJ,EAAEkJ,GAAS/B,QAAQ7B,GAC7BqB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBlF,EAAOkF,EAAM,CACT4D,QAASA,EAET80E,QAASz5E,EAAQ7H,QAAUw9E,EAAwBl6E,EAAEkJ,EAAQ,GAAG+0E,cAAcvnE,iBAAmB1W,EAAEuE,EAAQy5E,SAAW90E,GACtHouB,gBAAiB/yB,EAAQ+yB,gBACzB4mD,SAAS,IAGb54E,EAAK04E,QAAQ72E,QAAQ7B,GAChBghB,GAAGtoB,EAAM66B,cAAc,OAAQhQ,GAAK,SACpCvC,GAAGtoB,EAAM66B,cAAc,YAAahQ,GAAK,QAE9C3f,EAAQod,GAAGtoB,EAAM66B,cAAc,OAAQhQ,GAAKyK,EAAQ,UAEhDhuB,EAAKu2E,eACL3yE,EAAQod,GAAGtoB,EAAM66B,cAAc,QAAShQ,GAAKyK,EAAQ,UAGrD1yB,EAAQ8iB,UAAY9iB,EAAQ4iB,WAE5B,GAAI5iB,EAAQye,QAAQxf,QAAU,GAAI,CAC9B,IAAIs+E,EAAgB,6BACpBj1E,EAAQe,IAAI,mBAAoB1F,EAAQ65E,aAAsC,QAAvB75E,EAAQ65E,YAAwBD,EAAgB,IAAM55E,EAAQ65E,YAAcD,QAEnIj1E,EAAQe,IAAI,eAAgB1F,EAAQ65E,aAAe,QAU3D,GANI75E,EAAQ85E,kBACRn1E,EAAQod,GAAGtoB,EAAM66B,cAAc,YAAahQ,GAAK7qB,EAAMwI,gBAG3D0C,EAAQod,GAAGtoB,EAAM66B,cAAc,YAAahQ,GAAKyK,EAAQ,CAAEwnB,KAAM5xC,GAAW,WAExE5D,EAAKu4E,kBAAoBj9E,EAAQihB,aAAc,CAC/C,IAAIy8D,EAAiBh5E,EAAK04E,QAAQ,GAC9BO,EAAuBj5E,EAAKk5E,gBAAgB33E,KAAKvB,GAErDk4E,GAAgB,SAAS12E,GACrBw3E,EAAex/E,iBAAiBgI,EAAWy3E,GAAsB,MAIzEj5E,EAAKuB,KAAK,CACVqyE,EACAC,EACAK,EACAC,EACAJ,EACAC,EACApxD,EACAwxD,EACAH,EAhXW,eAkXXI,EACAC,EACAC,EACAT,GACG70E,IAGPi6E,gBAAiB,SAASx8E,GAClB3E,KAAKohF,YACLz8E,EAAEwE,kBAIVnH,QAAS,WACL,IAAIiG,EAAOjI,KAEX,IAAIiI,EAAKyxD,WAAT,CAMA,GAFAzxD,EAAKyxD,YAAa,EAEdzxD,EAAKu4E,kBAAoBj9E,EAAQihB,aAAc,CAC/C,IAAIy8D,EAAiBh5E,EAAK04E,QAAQ,GAClCR,GAAgB,SAAS12E,GACrBw3E,EAAeh/E,oBAAoBwH,EAAWxB,EAAKk5E,oBAI3Dl5E,EAAK4D,QAAQ4rB,aAAaxvB,EAAKy4E,SAC/Bz4E,EAAK04E,QAAQlpD,aAAaxvB,EAAKy4E,SAC/Bz4E,EAAK4D,QAAQqmB,WAAW,WACxBjqB,EAAK04E,QAAQzuD,WAAW,WACxBjqB,EAAKo5E,cAELp5E,EAAKgC,gBACEhC,EAAK04E,eACL14E,EAAK4D,eACL5D,EAAK01E,gBAGhB2D,QAAS,WACL5B,EAAWjsE,QAAUzT,MAGzBw6B,OAAQ,WACJx6B,KAAKqhF,cACLrhF,KAAKoK,QAAQ8xE,IAGjB1nD,OAAQ,SAAS/qB,EAAWoE,GACxB,IACI6a,EADO1oB,KACQ0oB,QAEnB,GAAI1oB,KAAKuhF,gBAAiB,CACtB,OAAQ93E,GACJ,KAAKwyE,EACDxyE,EAAY6yE,EACZ,MACJ,KAAKzxD,EACDphB,EAAY8yE,EACZ,MACJ,KAAKJ,EACD1yE,EAAY+yE,EAIpBz5E,EAAO8K,EAAM,CAAE6a,QAASA,GAAWo0D,EAAWp0D,EAAQ,GAAIA,EAAQ,KAGtE,OAAO1oB,KAAKoK,QAAQX,EAAW1G,EAAO8K,EAAM,CAAEnI,KAAM+D,MAIxDu1E,MAAO,SAAS55E,EAAGjB,EAAGmD,GAClBtH,KAAKwhF,SAAS,SAAUp8E,EAAGjB,EAAGmD,IAGlCizB,KAAM,SAASn1B,EAAGjB,GACdnE,KAAKwhF,SAAS,QAASp8E,EAAGjB,IAG9BwH,IAAK,SAASvG,EAAGjB,GACbnE,KAAKwhF,SAAS,OAAQp8E,EAAGjB,IAG7Bo9E,cAAe,WACX,OAAOvhF,KAAK0oB,QAAQlhB,OAAS,GAGjCi6E,mBAAoB,WAChB,OAAOzhF,KAAK0oB,QAAQlhB,QAAUxH,KAAKqgF,aAGvCgB,YAAa,WAET,IADA,IAAI34D,EAAU1oB,KAAK0oB,QACZA,EAAQlhB,OAAS,GACpBkhB,EAAQ2G,MAAMswD,WAItByB,SAAU,WACN,OAAOz+E,EAAEu7B,KAAKl+B,KAAK0oB,SAAS,SAASjK,GACjC,OAAOA,EAAMshE,aACdv4E,QAGPk6E,QAAS,SAAS/8E,GACV3E,KAAKugF,iBAAkBvgF,KAAKoK,QAAQ2xE,EAAQ,CAAE38D,MAAOza,KACtDA,EAAEwE,kBAITy2E,OAAQ,SAASj7E,GACb,IAGI2C,EAGAmX,EANAxW,EAAOjI,KACP4J,EAAM,EACNqsB,EAAShuB,EAAKguB,OAEdvN,EAAUg1D,EAAW/4E,GACrB6C,EAASkhB,EAAQlhB,OAEjBm6E,EAAQh9E,EAAEg9E,MAEd,KAAKA,GAASA,EAAQ,GAAO15E,EAAKw5E,sBAYlC,IARA/B,EAAWjsE,QAAU,KAErBxL,EAAK01E,cAAgBh5E,EAAEg5E,cAEnB11E,EAAKgyB,iBACLt1B,EAAEs1B,kBAGCrwB,EAAMpC,IACLS,EAAKw5E,qBADQ73E,IAKjB6U,EAAQiK,EAAQ9e,IAGZtC,EADA2uB,EACStzB,EAAE8b,EAAMk/D,eAER11E,EAAK4D,SAGNrE,SAIZiX,EAAQ,IAAI4/D,EAAMp2E,EAAMX,EAAQmX,GAChCxW,EAAKygB,QAAQ/mB,KAAK8c,GAClBA,EAAMugE,QAEF/2E,EAAKs5E,iBACLt5E,EAAKusB,OAAO,eAAgB,MAKxCotD,MAAO,SAASj9E,GACZ3E,KAAK6hF,WAAW,OAAQl9E,IAG5Bm9E,KAAM,SAASn9E,GACX3E,KAAK6hF,WAAW,MAAOl9E,IAG3Bo9E,OAAQ,SAASp9E,GACb,IAAIkJ,EAAO,CACP4Q,MAAO,CACHigE,aAAc/5E,EAAE2C,OAChBA,OAAQ3E,EAAEgC,EAAEg5E,eACZkC,QAASjtC,IACTxtC,EAAG,CACCmd,SAAU5d,EAAEq9E,MACZv9C,OAAQ9/B,EAAEmkB,SAEd3kB,EAAG,CACCoe,SAAU5d,EAAEs9E,MACZx9C,OAAQ9/B,EAAEokB,UAGlB3jB,EAAGT,EAAEq9E,MACL79E,EAAGQ,EAAEs9E,MACL36E,OAAQ3E,EAAEgC,EAAEg5E,eACZv+D,MAAOza,EACPe,KAAM,OAGN1F,KAAKoK,QAAQ,MAAOyD,IACpBlJ,EAAEwE,kBAIV04E,WAAY,SAAS9J,EAAYpzE,GAC7B,IAIIiF,EACA6U,EACA8/D,EACA2D,EANAp3C,EAAO,GACPpiB,EAAUg1D,EAAW/4E,GACrBm7E,EAHO9/E,KAGc0oB,QAMzB,IAAK9e,EAAM,EAAGA,EAAMk2E,EAAct4E,OAAQoC,IAEtCkhC,GADArsB,EAAQqhE,EAAcl2E,IACX+lB,IAAMlR,EAGrB,IAAK7U,EAAM,EAAGA,EAAM8e,EAAQlhB,OAAQoC,KAEhCs4E,EAAgBp3C,GADhByzC,EAAY71D,EAAQ9e,IACW+lB,MAG3BuyD,EAAcnK,GAAYwG,IAKtCiD,SAAU,SAAS97E,EAAMN,EAAGjB,EAAGmD,GAC3BtH,KAAK0F,GAAM,CACPg3E,KAAK,EACLsF,MAAO58E,EACP68E,MAAO99E,EACP2kB,QAAS1jB,EACT2jB,QAAS5kB,EACTmD,OAAQ3E,EAAE2E,GAAUtH,KAAK6L,SAAS,GAClCouB,gBAAiBt3B,EAAEQ,KACnBgG,eAAgBxG,EAAEQ,UAK1Bg/E,EAAiB74E,EAAWvG,OAAO,CACnCoF,KAAM,SAAS0D,EAAS3E,GACpB,IACI+uB,EADAhuB,EAAOjI,KAEPwrB,EAAK7qB,EAAM8uB,OAEfvoB,EAAUA,GAAW,GACrB+uB,EAAShuB,EAAKguB,OAAS/uB,EAAQ+uB,OAC/BhuB,EAAKygB,QAAU,GACfzgB,EAAKo4E,YAAc,EACnBp4E,EAAKy4E,QAAUl1D,EACfvjB,EAAKm6E,aAAe,EAEpBv2E,EAAUlJ,EAAEkJ,GAAS/B,QAAQ7B,GAC7BqB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBlF,EAAOkF,EAAM,CACT4D,QAASA,EAET80E,QAASz5E,EAAQ7H,QAAUw9E,EAAwBl6E,EAAEkJ,EAAQ,GAAG+0E,cAAcvnE,iBAAmB1W,EAAEuE,EAAQy5E,SAAW90E,GACtHouB,gBAAiB/yB,EAAQ+yB,gBACzB4mD,SAAS,IAGb54E,EAAK04E,QAAQ72E,QAAQ7B,GAChBghB,GAAGtoB,EAAM66B,cAAc,OAAQhQ,GAAK,SACpCvC,GAAGtoB,EAAM66B,cAAc,YAAahQ,GAAK,UAE9C3f,EAAQod,GAAGtoB,EAAM66B,cAAc,OAAQhQ,GAAKyK,EAAQ,SAC/ChN,GAAGtoB,EAAM66B,cAAc,KAAMhQ,GAAKyK,EAAQ,OAE/ChuB,EAAKuB,KAAK,CACNwyE,EACAC,EACApxD,EACAixD,EACAI,EACAH,GACD70E,IAGPm7E,MAAO,SAAS19E,GACRA,EAAEg9E,OAASh9E,EAAEg9E,MAAQ,EACrB3hF,KAAKw6B,UAELx6B,KAAKoiF,cAAe,IAAIh0E,MAAOnF,UAC/BjJ,KAAKsiF,YAAc39E,EAAE2C,SAI7Bi7E,IAAK,SAAS59E,GACV,IAAI69E,GAAmB,IAAIp0E,MAAOnF,UAC9B00E,EAAgBh5E,EAAE2C,SAEhB3C,EAAEg9E,OAAqB,IAAZh9E,EAAEg9E,QACfa,EAAmBxiF,KAAKoiF,aAnqBlB,KAoqBNzE,IAAkB39E,KAAKsiF,aACftiF,KAAK0oB,SAAW1oB,KAAK0oB,QAAQlhB,OAAS,EACtCxH,KAAK8hF,KAAKn9E,GAEV3E,KAAK4/E,OAAOj7E,GAGhB3E,KAAKyiF,gBAAiB,GAE1BziF,KAAKw6B,SAGTx6B,KAAKoiF,aAAe,EACpBpiF,KAAKsiF,YAAc,MAGvBtgF,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKyxD,aAITzxD,EAAKyxD,YAAa,EAElBzxD,EAAK4D,QAAQ4rB,aAAaxvB,EAAKy4E,SAC/Bz4E,EAAK04E,QAAQlpD,aAAaxvB,EAAKy4E,SAC/Bz4E,EAAK4D,QAAQqmB,WAAW,WACxBjqB,EAAK04E,QAAQzuD,WAAW,WACxBjqB,EAAKo5E,cAELp5E,EAAKgC,gBACEhC,EAAK04E,eACL14E,EAAK4D,eACL5D,EAAK01E,gBAGhB2D,QAAS,WACLa,EAAe1uE,QAAUzT,MAG7Bw6B,OAAQ,WACAx6B,KAAKyiF,eACLziF,KAAKyiF,gBAAiB,EAEfziF,KAAK0oB,SAAW1oB,KAAK0oB,QAAQlhB,OAAS,IAC7CxH,KAAKqhF,cACLrhF,KAAKoK,QAAQ8xE,KAIrB1nD,OAAQ,SAAS/qB,EAAWoE,GAExB,OADAA,EAAK60E,gBAAiB,EACf1iF,KAAKoK,QAAQX,EAAW1G,EAAO8K,EAAM,CAAEnI,KAAM+D,MAGxDg4E,mBAAoB,WAChB,OAAOzhF,KAAK0oB,QAAQlhB,QAAUxH,KAAKqgF,aAGvCgB,YAAa,WAGT,IAFA,IAAI34D,EAAU1oB,KAAK0oB,QAEZA,EAAQlhB,OAAS,GACpBkhB,EAAQ2G,MAAMswD,WAItBC,OAAQ,SAASj7E,GACb,IAGI2C,EAGAmX,EANAxW,EAAOjI,KACP4J,EAAM,EACNqsB,EAAShuB,EAAKguB,OAEdvN,EAAUg1D,EAAW/4E,GACrB6C,EAASkhB,EAAQlhB,OAEjBm6E,EAAQh9E,EAAEg9E,MAEd,KAAKA,GAASA,EAAQ,GAAO15E,EAAKw5E,sBAYlC,IARAU,EAAe1uE,QAAU,KAEzBxL,EAAK01E,cAAgBh5E,EAAEg5E,cAEnB11E,EAAKgyB,iBACLt1B,EAAEs1B,kBAGCrwB,EAAMpC,IACLS,EAAKw5E,qBADQ73E,IAKjB6U,EAAQiK,EAAQ9e,IAGZtC,EADA2uB,EACStzB,EAAE8b,EAAMk/D,eAER11E,EAAK4D,SAGNrE,SAIZiX,EAAQ,IAAI4/D,EAAMp2E,EAAMX,EAAQmX,GAChCxW,EAAKygB,QAAQ/mB,KAAK8c,GAClBA,EAAMugE,QACNvgE,EAAMmhE,OAAOnhE,KAIrBmjE,MAAO,SAASj9E,GACZ3E,KAAK6hF,WAAW,OAAQl9E,IAG5Bm9E,KAAM,SAASn9E,GACX3E,KAAK6hF,WAAW,OAAQl9E,GACxB3E,KAAK6hF,WAAW,MAAOl9E,IAG3Bk9E,WAAY,SAAS9J,EAAYpzE,GAC7B,IAIIiF,EACA6U,EACA8/D,EACA2D,EANAp3C,EAAO,GACPpiB,EAAUg1D,EAAW/4E,GACrBm7E,EAHO9/E,KAGc0oB,QAMzB,IAAK9e,EAAM,EAAGA,EAAMk2E,EAAct4E,OAAQoC,IAEtCkhC,GADArsB,EAAQqhE,EAAcl2E,IACX+lB,IAAMlR,EAGrB,IAAK7U,EAAM,EAAGA,EAAM8e,EAAQlhB,OAAQoC,KAEhCs4E,EAAgBp3C,GADhByzC,EAAY71D,EAAQ9e,IACW+lB,OAG3BuyD,EAAc98E,EAAEm1B,KAAKgkD,EAAUh8D,UAC/B2/D,EAAc/9E,EAAEo2B,KAAKgkD,EAAUh8D,UAC/B2/D,EAAcnK,GAAYwG,OAM1CmB,EAAWiD,iBAAmB,SAASj6E,GACnCkzE,EAAoBlzE,GAGxBg3E,EAAWP,QAAU,SAASz2E,GAC1BizE,EAAmBjzE,GAGvB/H,EAAM+8E,WAAaA,EACnB/8E,EAAMm8E,WAAaA,EACnBn8E,EAAM++E,WAAaA,EACnB/+E,EAAMwhF,eAAiBA,EAh1B3B,CAi1BIrhF,OAAOH,MAAM+G,QACH/G,OAUd,SAAUgC,EAAGC,GACT,IAcIggF,EAdAjiF,EAAQG,OAAOH,MACf4C,EAAU5C,EAAM4C,QAChB6L,EAAWtO,OAAOsO,SAClByzE,EAAUlgF,EAAE7B,QACZ8G,EAAQjH,EAAMiH,MACd8oB,EAAS/vB,EAAMgpB,GAAG+G,OAClBpnB,EAAa3I,EAAM2I,WACnBo2E,EAAa/+E,EAAM++E,WACnByC,EAAiBxhF,EAAMwhF,eACvBp/E,EAASJ,EAAEI,OACXmqB,EAAYvsB,EAAMusB,UAClB41D,EAAa,GACbC,EAAc,GACdC,EAAY,GAEZx+C,EAAqB7jC,EAAM6jC,mBAC3By+C,EAAQ,QACRnmC,EAAS,SAGTomC,EAAY,YACZpH,EAAO,OACPqH,EAAO,OACPC,EAAU,UACVC,EAAa,aACbC,EAAgB,gBAGhBC,EAAY,YACZC,EAAY,YACZC,EAAO,OAUX,SAASC,EAAkB73E,EAAS0B,GAChC,OAAO0L,SAASpN,EAAQe,IAAIW,GAAW,KAAO,EAGlD,SAASo2E,EAAOj7E,EAAOkrD,GACnB,OAAOvwD,KAAK8S,IAAI9S,KAAKuV,IAAIlQ,EAAOkrD,EAAMz9C,KAAMy9C,EAAMh7C,KAGtD,SAASgrE,EAAoBttD,EAAWzqB,GACpC,IAAIkR,EAASmQ,EAAUoJ,GACnBvqB,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aACpB23E,EAAO9mE,EAAO8O,KAAO63D,EAAkBptD,EAAW,mBAAqBotD,EAAkBptD,EAAW,eACpGwtD,EAAO/mE,EAAOqH,IAAMs/D,EAAkBptD,EAAW,kBAAoBotD,EAAkBptD,EAAW,cAItG,MAAO,CACHlxB,EAAG,CAAE+Q,IAAK0tE,EAAMjrE,IAJTirE,EAAOvtD,EAAUtpB,QAAUjB,EAAWF,GAAS,IAKtD1H,EAAG,CAAEgS,IAAK2tE,EAAMlrE,IAJTkrE,EAAOxtD,EAAU3pB,SAAWV,EAAYJ,GAAS,KAkChE,IAmTImkC,EAnTA+zC,EAAaz6E,EAAWvG,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KACPs0B,EAAazoB,EAAQ,GAEzB5D,EAAKq5E,SAAU,EAEXhtD,EAAW7yB,kBACXkB,EAAEK,KAAKrC,EAAM25B,SAAS9M,KAAK5iB,MAAM,MAAM,WACnC0pB,EAAW7yB,iBAAiBzB,KAAMiI,EAAK+7E,OAAOx6E,KAAKvB,IAAO,MAE9DtF,EAAEK,KAAKrC,EAAM25B,SAAS7M,GAAG7iB,MAAM,MAAM,WACjC0pB,EAAW7yB,iBAAiBzB,KAAMiI,EAAKg8E,SAASz6E,KAAKvB,IAAO,QAGhEtF,EAAEK,KAAKrC,EAAM25B,SAAS9M,KAAK5iB,MAAM,MAAM,WACnC0pB,EAAW4vD,YAAYlkF,KAAMiI,EAAK+7E,OAAOx6E,KAAKvB,OAElDtF,EAAEK,KAAKrC,EAAM25B,SAAS7M,GAAG7iB,MAAM,MAAM,WACjC0pB,EAAW4vD,YAAYlkF,KAAMiI,EAAKg8E,SAASz6E,KAAKvB,QAIxDqB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKuB,KAAK,CAAC,QAAS,WAAYtC,GAAW,KAG/Ci9E,YAAa,WACTnkF,KAAKshF,SAAU,GAGnB8C,cAAe,WACXpkF,KAAKshF,SAAU,GAGnB0C,OAAQ,SAASr/E,GACF3E,KACNoK,QAAQ,SADFpK,KAEFshF,SACL38E,EAAEwE,kBAIV86E,SAAU,SAASt/E,GACf,IAAIsD,EAAOjI,KACXiI,EAAKmC,QAAQ,WAETnC,EAAKq5E,UACL38E,EAAEwE,iBACFlB,EAAKm8E,oBAKbC,EAAgB/6E,EAAWvG,OAAO,CAClCoF,KAAM,SAASjB,GACX,IAAIe,EAAOjI,KACXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAKq8E,eAAgB,EAErB3hF,EAAEI,OAAOkF,EAAMf,GAEfe,EAAK0nC,MAAQ,EAET1nC,EAAKqqC,YACLrqC,EAAKs8E,QAAU,cACft8E,EAAKu8E,WAAa,cAClBv8E,EAAK+8B,KAAO,MAEZ/8B,EAAKs8E,QAAU,eACft8E,EAAKu8E,WAAa,eAClBv8E,EAAK+8B,KAAO,MAIpBy/C,YAAa,WACT9hF,EAAEI,OAAO/C,KAAM,CACX01D,SAAS,EACT4uB,eAAe,EACfI,YAAa,EACbC,YAAa,KAIrBC,YAAa,SAASzuE,EAAKyC,GACnB5Y,KAAK0kF,cAAgBvuE,GAAOnW,KAAK2kF,cAAgB/rE,IACjD5Y,KAAK0kF,YAAcvuE,EACnBnW,KAAK2kF,YAAc/rE,EACnB5Y,KAAK+mD,WAIb89B,YAAa,SAAS9nE,GAClB,OAAOA,EAAS/c,KAAK4Y,KAAOmE,EAAS/c,KAAKmW,KAG9C2uE,aAAc,WACV9kF,KAAKskF,eAAgB,GAGzB1yD,QAAS,WACL,OAAO5xB,KAAKs2B,UAAU,GAAGt2B,KAAKukF,UAGlCQ,SAAU,WACN,OAAO/kF,KAAK6L,QAAQ,GAAG7L,KAAKwkF,aAGhCQ,QAAS,SAASr1C,GACd3vC,KAAK2vC,MAAQA,GAGjBoX,OAAQ,SAAS1H,GACb,IAAIp3C,EAAOjI,KACP4mD,EAAQ3+C,EAAKytD,QAAUztD,EAAK08E,YAAc18E,EAAK88E,WAC/CE,EAAcr+B,EAAQ3+C,EAAK0nC,MAC3BlgC,EAAOxH,EAAK2pB,WAEF,IAAVg1B,GAAgB3+C,EAAKq8E,iBAIzBr8E,EAAK2Q,IAAM3Q,EAAKytD,SAAWztD,EAAKy8E,YAAc,EAC9Cz8E,EAAKwH,KAAOA,EACZxH,EAAK2+C,MAAQq+B,EACbh9E,EAAKkO,IAAM9S,KAAK8S,IAAIlO,EAAK2Q,IAAKnJ,EAAOw1E,GACrCh9E,EAAKi9E,SAAWz1E,EAAOm3C,EACvB3+C,EAAKk9E,cAAgBF,EAAcx1E,GAAQ,EAE3CxH,EAAKif,QAAUjf,EAAKq8E,eAAkBW,EAAcx1E,EAE/C4vC,GACDp3C,EAAKmC,QAAQ0yC,EAAQ70C,OAK7Bm9E,EAAiB97E,EAAWvG,OAAO,CACnCoF,KAAM,SAASjB,GACX,IAAIe,EAAOjI,KAEXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAK7C,EAAI,IAAIi/E,EAActhF,EAAO,CAAEuvC,YAAY,GAAQprC,IACxDe,EAAK9D,EAAI,IAAIkgF,EAActhF,EAAO,CAAEuvC,YAAY,GAASprC,IACzDe,EAAKquB,UAAYpvB,EAAQovB,UACzBruB,EAAKo9E,eAAiBn+E,EAAQg+E,SAC9Bj9E,EAAKq9E,SAAWp+E,EAAQo+E,UAAY,IAEpCr9E,EAAKuB,KAAKszC,EAAQ51C,IAGtB89E,QAAS,SAASO,GACdvlF,KAAKoF,EAAE4/E,QAAQO,GACfvlF,KAAKmE,EAAE6gF,QAAQO,GACfvlF,KAAK4d,WAGT4nE,kBAAmB,WACf,MAAO,CAAEpgF,EAAG/B,KAAK8S,IAAI,GAAInW,KAAKoF,EAAE+/E,cAAehhF,EAAGd,KAAK8S,IAAI,GAAInW,KAAKmE,EAAEghF,gBAG1EvnE,QAAS,WACL,IAAI3V,EAAOjI,KACXiI,EAAK7C,EAAE2hD,SACP9+C,EAAK9D,EAAE4iD,SACP9+C,EAAKif,QAAUjf,EAAK7C,EAAE8hB,SAAWjf,EAAK9D,EAAE+iB,QACxCjf,EAAKi9E,SAAWj9E,EAAKo9E,gBAAkBhiF,KAAK8S,IAAIlO,EAAK7C,EAAE8/E,SAAUj9E,EAAK9D,EAAE+gF,UACxEj9E,EAAK40C,SAAWx5C,KAAKuV,IAAI3Q,EAAK7C,EAAE8/E,SAAUj9E,EAAK9D,EAAE+gF,UACjDj9E,EAAKmC,QAAQ0yC,MAIjB2oC,EAAWn8E,EAAWvG,OAAO,CAC7BoF,KAAM,SAASjB,GAEXnE,EADW/C,KACEkH,GACboC,EAAWvB,GAAGI,KAAKoC,KAFRvK,OAKf6kF,YAAa,WACT,OAAO7kF,KAAK0lF,UAAUb,YAAY7kF,KAAKq8C,QAAQr8C,KAAKglC,QAGxD2gD,SAAU,SAAS/gD,GACf,IAAI38B,EAAOjI,KACP0lF,EAAYz9E,EAAKy9E,UACjB1gD,EAAO/8B,EAAK+8B,KACZqX,EAAUp0C,EAAKo0C,QACfvvC,EAAWuvC,EAAQrX,GAAQJ,EAE1B8gD,EAAUx+D,WAIVpa,EAAW44E,EAAUvvE,KAAOyuB,EAAQ,GAAO93B,EAAW44E,EAAU9sE,KAAOgsB,EAAQ,KAChFA,GAAS38B,EAAK29E,YAGlBvpC,EAAQwpC,cAAc7gD,EAAMJ,GAC5B38B,EAAKmC,QAAQ0yC,EAAQ70C,OAIzB69E,EAAOl+E,EAAM7E,OAAO,CAEpBoF,KAAM,SAASjB,GACX,IACI9B,EACAjB,EACAyhF,EACAvpC,EAJAp0C,EAAOjI,KAMX+C,EAAOkF,EAAM,CAAE89E,SAAS,GAAQ7+E,GAEhC0+E,EAAa39E,EAAK89E,QAAU,GAAM,EAClC1pC,EAAUp0C,EAAKo0C,QAEfp0C,EAAK7C,EAAIA,EAAI,IAAIqgF,EAAS,CACtBzgD,KAAM,IACN0gD,UAAWz9E,EAAK+pB,WAAW5sB,EAC3BwgF,WAAYA,EACZvpC,QAASA,IAGbp0C,EAAK9D,EAAIA,EAAI,IAAIshF,EAAS,CACtBzgD,KAAM,IACN0gD,UAAWz9E,EAAK+pB,WAAW7tB,EAC3ByhF,WAAYA,EACZvpC,QAASA,IAGbp0C,EAAKq2E,WAAW90E,KAAK,CAAC,QAAS,OAAQ,MAAO,eAAgB,iBAAkB,CAC5Ew8E,aAAc,SAASrhF,GACnBsD,EAAKg+E,QAAUthF,EACfsD,EAAK8U,OAAS9U,EAAK+pB,WAAWsE,UAAUvZ,UAG5CiiE,MAAO,SAASr6E,GACRhC,EAAEgC,EAAEya,MAAM9X,QAAQ+E,QAAQ,KAAKE,GAAG,kCAClC5H,EAAE2F,OAAOkwB,UAIjB0rD,cAAe,SAASvhF,GACpB,IASIwhF,EATAC,EAAkBn+E,EAAKg+E,QACvBI,EAAiBD,EAAgB7I,OAEjCA,EAAS54E,EAAE44E,OAEX+I,EAAa3hF,EAAE64E,SAAW4I,EAAgB5I,SAE1C0H,EAAWj9E,EAAK+pB,WAAWkzD,SAC3BI,EAAWr9E,EAAK+pB,WAAWszD,SAG3BjpC,EAAQ1M,OAASu1C,GAAYoB,EAAa,IAE1CA,GAAiC,IAAlB,EAAIA,IAGnBjqC,EAAQ1M,MAAQ22C,GAAchB,IAC9BgB,EAAahB,EAAWjpC,EAAQ1M,OAGpC,IAAI42C,EAAUlqC,EAAQj3C,EAAI6C,EAAK8U,OAAO8O,KAClC26D,EAAUnqC,EAAQl4C,EAAI8D,EAAK8U,OAAOqH,IAEtC+hE,EAAc,CACV/gF,GAAImhF,EAAUF,EAAejhF,GAAKkhF,EAAa/I,EAAOn4E,EAAImhF,EAC1DpiF,GAAIqiF,EAAUH,EAAeliF,GAAKmiF,EAAa/I,EAAOp5E,EAAIqiF,GAG9DnqC,EAAQoqC,UAAUH,GAElBlhF,EAAEugF,SAASQ,EAAY/gF,GACvBjB,EAAEwhF,SAASQ,EAAYhiF,GAEvB8D,EAAK+pB,WAAWgzD,QAAQ3oC,EAAQ1M,OAChC1nC,EAAKg+E,QAAUthF,EACfA,EAAEwE,kBAGNoxB,KAAM,SAAS51B,GACPA,EAAEya,MAAM9X,OAAO6oB,QAAQhgB,MAAM,qBAI7B/K,EAAEsgF,UAAUx+D,SAAW/iB,EAAEuhF,UAAUx+D,SACnC9hB,EAAEugF,SAAShhF,EAAES,EAAEw/B,OACfzgC,EAAEwhF,SAAShhF,EAAER,EAAEygC,OACfjgC,EAAEwE,kBAEFxE,EAAE8Z,MAAMgmC,SAIhB94C,IAAK,SAAShH,GACVA,EAAEwE,uBAMdu9E,EAAkBnjF,EAAQob,YAAYM,OAAS,YAK/C+wB,EADAzsC,EAAQub,QACI,SAAS1Z,EAAGjB,EAAGwrC,GACvB,MAAO,eAAiBvqC,EAAI,MAAQjB,EAAI,eAAiBwrC,EAAQ,KAGzD,SAASvqC,EAAGjB,EAAGwrC,GACvB,MAAO,aAAevqC,EAAI,MAAQjB,EAAI,aAAewrC,EAAQ,KAIrE,IAAIg3C,EAAUr9E,EAAWvG,OAAO,CAC5BoF,KAAM,SAAS0D,GACX,IAAI5D,EAAOjI,KAEXsJ,EAAWvB,GAAGI,KAAKoC,KAAKtC,GAExBA,EAAK4D,QAAUlJ,EAAEkJ,GACjB5D,EAAK4D,QAAQ,GAAGY,MAAMm6E,sBAAwB,WAC9C3+E,EAAK7C,EAAI,EACT6C,EAAK9D,EAAI,EACT8D,EAAK0nC,MAAQ,EACb1nC,EAAK4+E,iBAAiB72C,EAAU/nC,EAAK7C,EAAG6C,EAAK9D,EAAG8D,EAAK0nC,SAGzDk2C,cAAe,SAAS7gD,EAAM8hD,GAC1B9mF,KAAKglC,IAAS8hD,EACd9mF,KAAK4d,WAGTmpE,QAAS,SAASp3C,GACd3vC,KAAK2vC,MAAQA,EACb3vC,KAAK4d,WAGT6oE,UAAW,SAASH,GAChBtmF,KAAK2vC,OAAS22C,EACdtmF,KAAK4d,WAGToyB,UAAW,SAASm2C,GAChBnmF,KAAKoF,GAAK+gF,EAAY/gF,EACtBpF,KAAKmE,GAAKgiF,EAAYhiF,EACtBnE,KAAK4d,WAGT4+B,SAAU,SAASxX,EAAMt8B,GACrB1I,KAAKglC,GAAQt8B,EACb1I,KAAK4d,WAGTw+B,OAAQ,SAAS+pC,GACbpjF,EAAO/C,KAAMmmF,GACbnmF,KAAK4d,WAGTA,QAAS,WACL,IAGIopE,EAHA/+E,EAAOjI,KACPoF,EAAI6C,EAAK7C,EACTjB,EAAI8D,EAAK9D,EAGT8D,EAAK8N,QACL3Q,EAAI/B,KAAK0S,MAAM3Q,GACfjB,EAAId,KAAK0S,MAAM5R,KAGnB6iF,EAAiBh3C,EAAU5qC,EAAGjB,EAAG8D,EAAK0nC,SAEhB1nC,EAAKk+E,cACnBxlF,EAAM4C,QAAQye,QAAQoB,MAAQziB,EAAM4C,QAAQye,QAAQxf,QAAU,IAC9DyF,EAAK4D,QAAQ,GAAGY,MAAMK,SAAW,WACjC7E,EAAK4D,QAAQ,GAAGY,MAAMof,KAAO5jB,EAAK7C,EAAI,KACtC6C,EAAK4D,QAAQ,GAAGY,MAAM2X,IAAMnc,EAAK9D,EAAI,MAGrC8D,EAAK4D,QAAQ,GAAGY,MAAMi6E,GAAmBM,EAE7C/+E,EAAK4+E,iBAAiBG,GACtB/+E,EAAKmC,QAAQ0yC,KAIrB+pC,iBAAkB,SAASV,GACvBnmF,KAAKmmF,YAAcA,KAI3B,SAASc,EAAiB3gC,EAAYxzB,GAClC,IAEAvrB,EAFI2/E,EAAYp0D,EAAO5rB,QAAQgtD,MAC/BizB,EAAa7gC,EAAW4gC,GAKxB,GAFAx2D,EAAO3oB,GAAG/F,QAAQuI,KAAKuoB,GAEnBq0D,EAAW3/E,OAAS,GACpB,IAAKD,EAAI,EAAGA,EAAI4/E,EAAW3/E,OAAQD,IAC/B,GAAI4/E,EAAW5/E,IAAMurB,EAAQ,CACzBq0D,EAAW38E,OAAOjD,EAAG,GACrB,YAIR4/E,EAAW3/E,OAAS,SACb8+C,EAAW4gC,GAI1B,IAAIE,EAAa12D,EAAO3tB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC,IAAIgtD,EAAQjsD,EAAKf,QAAQgtD,MAEnBA,KAAS6uB,EAGXA,EAAY7uB,GAAOvyD,KAAMsG,GAFzB86E,EAAY7uB,GAAS,CAAEjsD,IAM/BoC,OAAQ,CACJk5E,EACAC,EACAC,GAGJv8E,QAAS,CACL9E,KAAM,aACN8xD,MAAO,WAGXlyD,QAAS,WACLilF,EAAiBlE,EAAa/iF,OAGlCo/E,SAAU,SAAS31E,EAAW9E,GAC1B,IACI0iF,EAAYvE,EADL9iF,KACqBkH,QAAQgtD,OAExC,GAAImzB,EACA,OAJOrnF,KAIKoK,QAAQX,EAAW1G,EAAO,GAAI4B,EAAEya,MAAO,CACxCioE,UAAWA,EACXC,WAAY3iF,EAAE2iF,eAKjCC,MAAO,SAAS5iF,GACZ3E,KAAKo/E,SAASmE,EAAW5+E,IAG7B6iF,KAAM,SAAS7iF,GACX3E,KAAKo/E,SAASoE,EAAW7+E,IAG7B8iF,MAAO,SAAS9iF,GACZ,IACI0iF,EAAYvE,EADL9iF,KACqBkH,QAAQgtD,OAEpCmzB,IACAA,EAAUK,SAJH1nF,KAImBo/E,SAASqE,EAAM9+E,OAKrDyiF,EAAWO,aAAe,SAAST,GAC/B,IACI3/E,EADA2sD,EAAQ6uB,EAAYmE,IAAclE,EAAUkE,GAGhD,GAAIhzB,EAAO,CACP,IAAK3sD,EAAI,EAAGA,EAAI2sD,EAAM1sD,OAAQD,IAC1BmpB,EAAO3oB,GAAG/F,QAAQuI,KAAK2pD,EAAM3sD,IAGjC2sD,EAAM1sD,OAAS,SACRu7E,EAAYmE,UACZlE,EAAUkE,KAIzBE,EAAWQ,OAAS7E,EAEpB,IAAI8E,EAAiBT,EAAWrkF,OAAO,CACnCoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC,IAAIgtD,EAAQjsD,EAAKf,QAAQgtD,MAEnBA,KAAS8uB,EAGXA,EAAU9uB,GAAOvyD,KAAMsG,GAFvB+6E,EAAU9uB,GAAS,CAAEjsD,IAM7BjG,QAAS,WACLilF,EAAiBjE,EAAWhjF,OAGhCkH,QAAS,CACL9E,KAAM,iBACN8xD,MAAO,UACPj+B,OAAQ,QAIZ6xD,EAAYp3D,EAAO3tB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAK8/E,YAAa,EAEd/nF,KAAKkH,QAAQw7E,iBACbz6E,EAAKy6E,eAAiB,IAAIP,EAAel6E,EAAK4D,QAAS,CACnDxM,QAAQ,EACR42B,OAAQhuB,EAAKf,QAAQ+uB,OACrB3gB,MAAOrN,EAAK+/E,qBAAqBx+E,KAAKvB,GACtCsyB,KAAMtyB,EAAKggF,MAAMz+E,KAAKvB,GACtB0D,IAAK1D,EAAK65E,KAAKt4E,KAAKvB,GACpBuyB,OAAQvyB,EAAKigF,UAAU1+E,KAAKvB,MAIpCA,EAAKq2E,WAAa,IAAIoB,EAAWz3E,EAAK4D,QAAS,CAC3CxM,QAAQ,EACRkhF,gBAAgB,EAChBtqD,OAAQhuB,EAAKf,QAAQ+uB,OACrBwoD,UAAWx2E,EAAKf,QAAQs2E,SACxBloE,MAAOrN,EAAK23E,OAAOp2E,KAAKvB,GACxBkgF,KAAMlgF,EAAKi3E,MAAM11E,KAAKvB,GACtBsyB,KAAMtyB,EAAKggF,MAAMz+E,KAAKvB,GACtB0D,IAAK1D,EAAK65E,KAAKt4E,KAAKvB,GACpBuyB,OAAQvyB,EAAKigF,UAAU1+E,KAAKvB,GAC5Bm+B,OAAQn+B,EAAKy5E,QAAQl4E,KAAKvB,KAG1BtH,EAAM4C,QAAQkb,OACdxW,EAAK4D,QAAQkqB,KAAK9tB,EAAKf,QAAQ+uB,QAAQrpB,IAAI,eAAgB,QAG/D3E,EAAKmgF,iBAAmBngF,EAAKogF,UAAU7+E,KAAKvB,GAC5CA,EAAKqgF,eAAiBrgF,EAAKqgF,eAAe9+E,KAAKvB,IAGnDoC,OAAQ,CACJyxE,EACAoH,EACAC,EACAC,EACAC,EACAC,GAGJp8E,QAAS,CACL9E,KAAM,YACNo7E,SAAY78E,EAAM4C,QAAQkb,MAAQ,EAAI,EACtCy1C,MAAO,UACPq0B,aAAc,KACdvjD,KAAM,KACN1O,UAAW,KACXL,OAAQ,KACR25B,OAAQ,KACR44B,YAAY,EACZC,YAAY,EACZf,SAAS,EACThF,gBAAgB,GAGpBgG,WAAY,WACR1oF,KAAK+nF,YAAa,GAGtBO,eAAgB,SAAS3jF,GACrB,IAAIsD,EAAOjI,KAEP2E,EAAEwiC,UAAYxmC,EAAMupB,KAAKM,MACzBviB,EAAKq2E,WAAW9jD,SAEZvyB,EAAKy6E,gBACLz6E,EAAKy6E,eAAeloD,SAGxBx6B,KAAKo/E,SAASiE,EAAY,CAAEjkE,MAAOza,MAI3CgkF,YAAa,SAAShkF,GAClB,IACIwhF,EADAl+E,EAAOjI,KAEPkH,EAAUe,EAAKf,QACf0hF,EAAa3gF,EAAK2gF,WAClB5jD,EAAO99B,EAAQ89B,KACfujD,EAAetgF,EAAKf,QAAQqhF,aAE5BA,EACDpC,EAAc,CAAEt6D,KAAMlnB,EAAES,EAAEmd,SAAWgmE,EAAa18D,KAAMzH,IAAKzf,EAAER,EAAEoe,SAAWgmE,EAAankE,KAEtE,IAAdzf,EAAES,EAAEw/B,OAA6B,IAAdjgC,EAAER,EAAEygC,OACvB38B,EAAK4gF,WAAWh9D,MAAQlnB,EAAES,EAAEw/B,MAC5B38B,EAAK4gF,WAAWzkE,KAAOzf,EAAER,EAAEygC,MAC3BuhD,EAAcxjF,EAAEI,OAAO,GAAIkF,EAAK4gF,cAEhC5gF,EAAK4gF,WAAWh9D,KAAOlnB,EAAES,EAAE44E,cAAgBr5E,EAAES,EAAEg5E,aAC/Cn2E,EAAK4gF,WAAWzkE,IAAMzf,EAAER,EAAE65E,cAAgBr5E,EAAER,EAAEi6E,aAC9C+H,EAAcxjF,EAAEI,OAAO,GAAIkF,EAAK4gF,aAIpCD,IACAzC,EAAY/hE,IAAMu/D,EAAOwC,EAAY/hE,IAAKwkE,EAAWzkF,GACrDgiF,EAAYt6D,KAAO83D,EAAOwC,EAAYt6D,KAAM+8D,EAAWxjF,IAG9C,MAAT4/B,SACOmhD,EAAY/hE,IACH,MAAT4gB,UACAmhD,EAAYt6D,KAGvB5jB,EAAK6gF,KAAKl8E,IAAIu5E,IAGlB4C,oBAAqB,SAASzhF,GAC1B,IAAI0hF,EAAiBhpF,KAAKkH,QAAQ0oD,OAClC,OAAOo5B,GAAkBrmF,EAAE2E,GAAQiF,GAAGy8E,IAG1CtH,QAAS,SAAS/8E,GACT3E,KAAK+oF,oBAAoBpkF,EAAEya,MAAM9X,SAClC3C,EAAEwE,kBAIV6+E,qBAAsB,SAASrjF,GAC3B3E,KAAK+nF,YAAa,EAElB/nF,KAAK4/E,OAAOj7E,IAGhBi7E,OAAQ,SAASj7E,GACb,IAAIsD,EAAOjI,KACPkH,EAAUe,EAAKf,QACfovB,EAAYpvB,EAAQovB,UAAY3zB,EAAEuE,EAAQovB,WAAa,KACvDwyD,EAAO5hF,EAAQ4hF,KAEnB,GAAI9oF,KAAK+oF,oBAAoBpkF,EAAE8Z,MAAMigE,eAAkBx3E,EAAQshF,aAAevgF,EAAK8/E,WAC/E9/E,EAAKq2E,WAAW9jD,aADpB,CAQA,GAHAvyB,EAAK01E,cAAgBh5E,EAAE2C,OACvBW,EAAKghF,oBAAsB/7D,EAAUjlB,EAAK01E,eAEtCmL,EAAM,CACF7gF,EAAK6gF,MACL7gF,EAAK6gF,KAAKlhE,MAAK,GAAM,GAAMmP,SAG/B9uB,EAAK6gF,KAAOnoF,EAAMuI,WAAW4/E,GAAQnmF,EAAEmmF,EAAKv+E,KAAKtC,EAAMA,EAAK01E,gBAAkBmL,EAE9E,IAAI/rE,EAASmQ,EAAUjlB,EAAK01E,eAC5B11E,EAAK4gF,WAAa9rE,EAElB9U,EAAK6gF,KAAKl8E,IAAK,CACXE,SAAU,WACV8sC,OAAQ,IACR/tB,KAAM9O,EAAO8O,KACbzH,IAAKrH,EAAOqH,MAEf+oB,SAAS/9B,EAAS6O,MAEnBhW,EAAK4oB,QAAQ,WAAW,WACpB5oB,EAAK6gF,KAAKx3D,WAAW,aAGrB,IAFA,IAAI43D,EAAcvmF,EAAEgC,EAAE2C,SAEd4hF,EAAYr7E,KAAK,iBAAmBq7E,EAAY1hF,QACpD0hF,EAAcA,EAAY/8E,SAG9B,MAAO,CACHgoB,SAAUlsB,EAAK6gF,KAAKv5D,MACpB45D,UAAWD,EAAYr7E,KAAK,oBAKxCi1E,EAAW57E,EAAQgtD,OAASjsD,EAE5BA,EAAKy/E,SAAU,EAEXpxD,IACAruB,EAAK2gF,WAAahF,EAAoBttD,EAAWruB,EAAK6gF,OAG1DnmF,EAAEyM,GAAU6Z,GAAGg6D,EAAOh7E,EAAKqgF,gBAEvBrgF,EAAKm3E,SAAS8D,EAAWv+E,KACzBsD,EAAKq2E,WAAW9jD,SAEZvyB,EAAKy6E,gBACLz6E,EAAKy6E,eAAeloD,SAGxBvyB,EAAKogF,aAGTpgF,EAAKq2E,WAAWgD,YAGpBpC,MAAO,SAASv6E,GACZ3E,KAAK29E,cAAgBh5E,EAAE2C,OAEnBtH,KAAKo/E,SAAStD,EAAMn3E,GACpB3E,KAAKs+E,WAAW9jD,SAEhBx6B,KAAK+nF,YAAa,GAI1BE,MAAO,SAAStjF,GACZA,EAAEwE,iBAEF,IAAIigF,EAAgBppF,KAAKqpF,oBAAoB1kF,GAU7C,GARI3E,KAAKkH,QAAQuhF,YAAczoF,KAAKspF,iBAAmBF,IACnDppF,KAAKupF,kBAAoBC,EAAqBJ,GAC9CppF,KAAKspF,eAAiBF,GAG1BppF,KAAKypF,WAAa9kF,EAClB3E,KAAK0pF,iBAAiB/kF,EAAGykF,GAErBppF,KAAKkH,QAAQuhF,YAETzoF,KAAKupF,kBAAkB,GAAI,CAC3B,IAAItL,EAAW0L,EAAmBhlF,EAAES,EAAEmd,SAAU5d,EAAER,EAAEoe,SAAUqnE,EAAmB5pF,KAAKupF,oBAGtFvpF,KAAK6pF,qBAAuBlnF,EAAEI,OAAO,GAAI/C,KAAK6oF,YAC9C7oF,KAAK8pF,gBAAkB7L,EAEJ,IAAfA,EAAS95E,GAA0B,IAAf85E,EAAS74E,GAC7B05C,cAAc9+C,KAAK+pF,iBACnB/pF,KAAK+pF,gBAAkB,MACf/pF,KAAK+pF,kBACb/pF,KAAK+pF,gBAAkBlrC,YAAY7+C,KAAKgqF,YAAYxgF,KAAKxJ,MAAO,KAKxEA,KAAK8oF,MACL9oF,KAAK2oF,YAAYhkF,IAIzB+kF,iBAAkB,SAAS/kF,EAAGykF,GAC1BppF,KAAKiqF,gBAAgBb,GAAe,SAAS9hF,EAAQ4iF,GACjD,GAAK5iF,EAAL,CAQA,GAAIs7E,EAAgB,CAChB,GAAIsH,IAAkBtH,EAAesH,cACjC,OAGJtH,EAAexD,SAASoE,EAAWzgF,EAAO4B,EAAG,CAAE2iF,WAAY3kF,EAAEigF,EAAesH,kBAGhF5iF,EAAO83E,SAASmE,EAAWxgF,EAAO4B,EAAG,CAAE2iF,WAAY3kF,EAAEunF,MACrDtH,EAAiB7/E,EAAOuE,EAAQ,CAAE4iF,cAAeA,SAhBzCtH,IACAA,EAAexD,SAASoE,EAAWzgF,EAAO4B,EAAG,CAAE2iF,WAAY3kF,EAAEigF,EAAesH,kBAC5EtH,EAAiB,SAiB7B5iF,KAAKo/E,SAAS+D,EAAMpgF,EAAO4B,EAAG,CAAE2iF,WAAY1E,EAAgBp+C,mBAAoB4kD,MAGpFY,YAAa,WACT,IAAI79E,EAASnM,KAAKupF,kBAAkB,GAChCtL,EAAWj+E,KAAK8pF,gBAChBK,EAAenqF,KAAK6pF,qBAExB,GAAK19E,EAAL,CAIA,IAGIi+E,EAAeC,EAHfjB,EAAgBppF,KAAKqpF,oBAAoBrpF,KAAKypF,YAClDzpF,KAAK0pF,iBAAiB1pF,KAAKypF,WAAYL,GAIvC,IAAIkB,EAAan+E,IAAWo+E,IAAiB,GAEzCD,GACAF,EAAgBh7E,EAAS6O,KAAKgG,aAAe4+D,EAAQl2E,SACrD09E,EAAgBj7E,EAAS6O,KAAKG,YAAcykE,EAAQ71E,UAEpDo9E,EAAgBj+E,EAAOooB,cAAgBpoB,EAAO8X,aAC9ComE,EAAgBl+E,EAAOgS,aAAehS,EAAOiS,aAGjD,IAAI8hE,EAAS/zE,EAAOwqB,UAAYsnD,EAAS95E,EACrCqmF,EAAYJ,GAAiBlK,EAAS,GAAKA,EAAS/zE,EAAO8X,aAE3Dg8D,EAAS9zE,EAAOygB,WAAaqxD,EAAS74E,EACtCqlF,EAAYJ,GAAiBpK,EAAS,GAAKA,EAAS9zE,EAAOiS,YAE3DosE,EACAr+E,EAAOwqB,WAAasnD,EAAS95E,EACtBimF,GAAiBlK,EAAS,IACjC/zE,EAAOwqB,UAAY,GAGnB8zD,EACAt+E,EAAOygB,YAAcqxD,EAAS74E,EACvBilF,GAAiBpK,EAAS,IACjC9zE,EAAOygB,WAAa,GAGpB5sB,KAAK8oF,MAAQwB,IAAeG,GAAaD,KACrCA,IACAL,EAAa/lE,KAAO65D,EAAS95E,GAG7BsmF,IACAN,EAAat+D,MAAQoyD,EAAS74E,GAGlCpF,KAAK8oF,KAAKl8E,IAAIu9E,MAItBrI,KAAM,SAASn9E,GACX3E,KAAKiqF,gBAAgBjqF,KAAKqpF,oBAAoB1kF,IAAI,SAAS2C,EAAQ4iF,GAC3D5iF,IACAA,EAAOmgF,MAAM1kF,EAAO,GAAI4B,EAAG,CAAE2iF,WAAY3kF,EAAEunF,MAC3CtH,EAAiB,SAIzB9jC,cAAc9+C,KAAK+pF,iBACnB/pF,KAAK+pF,gBAAkB,KACvB/pF,KAAK0qF,QAAQ1qF,KAAKo/E,SAASgE,EAASz+E,KAGxCujF,UAAW,SAASvjF,GAChB3E,KAAK0qF,UACL1qF,KAAKo/E,SAASiE,EAAY,CAAEjkE,MAAOza,KAGvC+lF,QAAS,SAASrhF,GACd,IAAIpB,EAAOjI,KAEXiI,EAAKshF,kBAAoB,KACzBvpF,KAAKspF,eAAiB,KACtBxqC,cAAc9+C,KAAK+pF,iBACnB9hF,EAAK8/E,YAAa,EAEd9/E,EAAK6gF,OAAS7gF,EAAKy/E,QACnB3uD,YAAW,WACP9wB,EAAK6gF,KAAKlhE,MAAK,GAAM,GAEjBve,EACApB,EAAKmgF,mBAELngF,EAAK6gF,KAAKhiE,QAAQ7e,EAAKghF,oBAAqB,OAAQhhF,EAAKmgF,oBAE9D,GAEHngF,EAAKogF,aAIbjJ,SAAU,SAAS31E,EAAW9E,GAG1B,OAFW3E,KAECoK,QACRX,EAAW1G,EACX,GACA4B,EAAEya,MACF,CACIha,EAAGT,EAAES,EACLjB,EAAGQ,EAAER,EACLw5E,cATG39E,KASiB29E,cACpBgN,cAAehmF,EAAE8Z,MAAQ9Z,EAAE8Z,MAAMigE,aAAe,KAChD4I,WAAY3iF,EAAE2iF,WACd9iD,mBAAoB7/B,EAAE6/B,mBACtBk+C,eAAgB/9E,EAAE+9E,mBAK9B2G,oBAAqB,SAAS1kF,GAC1B,IAAI2C,EAASk9B,EAAmB7/B,GAC5BmkF,EAAO9oF,KAAK8oF,KAYhB,OAVIA,GA58BZ,SAAkB38E,EAAQu3B,GACtB,IACI,OAAO/gC,EAAEwyB,SAAShpB,EAAQu3B,IAAUv3B,GAAUu3B,EAChD,MAAO/+B,GACL,OAAO,GAw8BKwwB,CAAS2zD,EAAK,GAAIxhF,KAC1BwhF,EAAK37E,QACL7F,EAASk9B,EAAmB7/B,MAGxB2C,EAASk9B,EAAmB7/B,IAEhCmkF,EAAK57E,QAGF5F,GAGX2iF,gBAAiB,SAASp+E,EAASmd,GAC/B,IAAIzS,EACA29C,EAAQl0D,KAAKkH,QAAQgtD,MACrB02B,EAAU7H,EAAY7uB,GACtB22B,EAAQ7H,EAAU9uB,IAElB02B,GAAWA,EAAQpjF,QAAUqjF,GAASA,EAAMrjF,UAC5C+O,EAj8BZ,SAAqBjP,EAAQsjF,EAASC,GAKlC,IAJA,IAAIC,EAAWC,EAAWxjF,EAAI,EAC1ByjF,EAAYJ,GAAWA,EAAQpjF,OAC/ByjF,EAAUJ,GAASA,EAAMrjF,OAEtBF,GAAUA,EAAOse,YAAY,CAChC,IAAKre,EAAI,EAAGA,EAAIyjF,EAAWzjF,IAEvB,IADAujF,EAAYF,EAAQrjF,IACNsE,QAAQ,KAAOvE,EACzB,MAAO,CAAEA,OAAQwjF,EAAWZ,cAAe5iF,GAInD,IAAKC,EAAI,EAAGA,EAAI0jF,EAAS1jF,IAErB,GADAwjF,EAAYF,EAAMtjF,GACd5E,EAAEwyB,SAAS41D,EAAUl/E,QAAQ,GAAIvE,IAAW/D,EAAQ6hB,gBAAgB7a,KAAKjD,EAAQyjF,EAAU7jF,QAAQ+uB,QACnG,MAAO,CAAE3uB,OAAQyjF,EAAWb,cAAe5iF,GAInDA,EAASA,EAAOse,YA66BHslE,CAAYr/E,EAAS++E,EAASC,GAEnCt0E,EACAyS,EAASzS,EAAOjP,OAAQiP,EAAO2zE,eAE/BlhE,MAKZhnB,QAAS,WACL,IAAIiG,EAAOjI,KAEX0wB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKogF,YAELpgF,EAAKq2E,WAAWt8E,UAEZiG,EAAKy6E,gBACLz6E,EAAKy6E,eAAe1gF,UAGxBhC,KAAKupF,kBAAoB,KACzBvpF,KAAKspF,eAAiB,KACtBxqC,cAAc9+C,KAAK+pF,iBAEnB9hF,EAAK01E,cAAgB,MAGzB0K,UAAW,WACP,IAAIpgF,EAAOjI,KAEPiI,EAAK6gF,MACL7gF,EAAK6gF,KAAK/xD,gBAGP+rD,EAAW76E,EAAKf,QAAQgtD,OAE/BjsD,EAAKmC,QAAQ,WACbnC,EAAKmC,QAAQk5E,GACb3gF,EAAEyM,GAAU6pB,IAAIgqD,EAAOh7E,EAAKqgF,mBAgBpC,SAASsB,EAAmB/9E,GACxB,IACIkR,EACAqH,EACAyH,EAHA4xB,EAAO8sC,IAAiB,GAK5B,OAAI1+E,EAAQ,KAAO4xC,EAIR,CACHr5B,IAJJA,EAAMq5B,EAAK9mB,UAKP9K,KAJJA,EAAO4xB,EAAK7wB,WAKRb,OAAQ3H,EAAMy+D,EAAQl2E,SACtBmf,MAAOD,EAAOg3D,EAAQ71E,WAG1B+P,EAASlR,EAAQkR,UACVgP,OAAShP,EAAOqH,IAAMvY,EAAQc,SACrCoQ,EAAO+O,MAAQ/O,EAAO8O,KAAOhgB,EAAQmB,QAC9B+P,GAIf,SAASwtE,IACL,OAAO5nF,EAAEhC,EAAM4C,QAAQye,QAAQiB,MAAQtiB,EAAM4C,QAAQye,QAAQkB,OAAS9T,EAAS6O,KAAO7O,EAASiK,iBAGnG,SAASmwE,EAAqB39E,GAC1B,IAAI4xC,EAAO8sC,IAEX,IAAK1+E,GAAWA,IAAYuD,EAAS6O,MAAQpS,IAAYuD,EAASiK,gBAC9D,OAAOokC,EAKX,IAFA,IAAItxC,EAASxJ,EAAEkJ,GAAS,GAEjBM,IAAWxL,EAAM6rB,aAAargB,IAAWA,IAAWiD,EAAS6O,MAChE9R,EAASA,EAAOyZ,WAGpB,OAAIzZ,IAAWiD,EAAS6O,KACbw/B,EAGJ96C,EAAEwJ,GAGb,SAASw9E,EAAmBwB,EAAQC,EAAQC,GACxC,IAAIpN,EAAW,CAAE74E,EAAG,EAAGjB,EAAG,GAEtBmnF,EAAmB,GAcvB,OAZIH,EAASE,EAAKx/D,KAAOy/D,EACrBrN,EAAS74E,IAAMkmF,GAAoBH,EAASE,EAAKx/D,OAC1Cw/D,EAAKv/D,MAAQq/D,EAASG,IAC7BrN,EAAS74E,EAAIkmF,GAAoBD,EAAKv/D,MAAQq/D,IAG9CC,EAASC,EAAKjnE,IAAMknE,EACpBrN,EAAS95E,IAAMmnF,GAAoBF,EAASC,EAAKjnE,MAC1CinE,EAAKt/D,OAASq/D,EAASE,IAC9BrN,EAAS95E,EAAImnF,GAAoBD,EAAKt/D,OAASq/D,IAG5CnN,EA7EXt9E,EAAMgpB,GAAGqN,OAAOowD,GAChBzmF,EAAMgpB,GAAGqN,OAAO6wD,GAChBlnF,EAAMgpB,GAAGqN,OAAO8wD,GAChBnnF,EAAMojF,WAAaA,EACnBpjF,EAAMijF,oBAAsBA,EAE5B7gF,EAAOpC,EAAMgpB,GAAI,CACbm8D,KAAMA,EACNV,eAAgBA,EAChBuB,QAASA,IAwEbhmF,EAAMgpB,GAAGm+D,UAAUyD,MAAQ,CACvB5B,mBAAoBA,EACpBC,mBAAoBA,EACpBJ,qBAAsBA,GAloC9B,CAqoCI1oF,OAAOH,MAAM+G,QACH/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfkpB,EAASlpB,EAAMkpB,OACfD,EAAKjpB,EAAM6lB,QACXmD,EAAKE,EAAOF,GACZ5mB,EAASJ,EAAEI,OACX2tB,EAAS/G,EAAG+G,OACZ9oB,EAAQjH,EAAMiH,MACd++E,EAAUhmF,EAAMgpB,GAAGg9D,QACnBb,EAAOnlF,EAAMgpB,GAAGm8D,KAChBV,EAAiBzkF,EAAMgpB,GAAGy7D,eAC1BnpC,EAAaryB,EAAGqyB,WAChBP,EAAY9xB,EAAG8xB,UACfxkC,EAAM7T,KAAK6T,IAQXs0E,EAAe,sBACfC,EAAe,sBAEf3uC,EAAS,SAET4uC,EAAS,SAGTC,EAAejwC,EAAU34C,OAAO,CAChCoF,KAAM,SAASjB,GACX,IAAIe,EAAOjI,KACX07C,EAAU3zC,GAAGI,KAAKoC,KAAKtC,GACvBlF,EAAOkF,EAAMf,GAEbe,EAAKq2E,WAAW90E,KAAK,aAAcvB,EAAKqN,MAAM9L,KAAKvB,IACnDA,EAAK2jF,WAAWpiF,KAAK,QAASvB,EAAKuyB,OAAOhxB,KAAKvB,KAGnDif,QAAS,WACP,OAAOlnB,KAAKq8C,QAAQ1M,MAAQ3vC,KAAKgyB,WAAWkzD,UAG9C14C,KAAM,WACF,OAAOxsC,KAAKgyB,WAAWkzD,SAAWllF,KAAKq8C,QAAQ1M,MAAQ,KAG3DmM,KAAM,WACF,IAAIO,EAAUr8C,KAAKq8C,QACnBA,EAAQoqC,UAAU,KAClBzmF,KAAKgyB,WAAWgzD,QAAQ3oC,EAAQ1M,QAGpCoM,MAAO,WACH,IAAIM,EAAUr8C,KAAKq8C,QACnBA,EAAQ0qC,QAAQ/mF,KAAKgyB,WAAWkzD,UAChCllF,KAAKgyB,WAAWgzD,QAAQ3oC,EAAQ1M,UAIpCk8C,EAAcnwC,EAAU34C,OAAO,CAC/BoF,KAAM,SAASjB,GACX,IAAIe,EAAOjI,KAEX07C,EAAU3zC,GAAGI,KAAKoC,KAAKtC,GAEvBlF,EAAOkF,EAAMf,EAAS,CAClBirC,WAAY,IAAI8J,EAAW,CACvBjX,KAAM99B,EAAQ89B,KACdqX,QAASn1C,EAAQm1C,QACjBN,MAAO,WAAa9zC,EAAK65E,YAIjC75E,EAAK2jF,WAAWpiF,KAAK,SAAS,WAAavB,EAAKuyB,YAChDvyB,EAAKq2E,WAAW90E,KAAK,MAAOvB,EAAKqN,MAAM9L,KAAKvB,IAC5CA,EAAKq2E,WAAW90E,KAAK,aAAcvB,EAAKqN,MAAM9L,KAAKvB,IACnDA,EAAKq2E,WAAW90E,KAAK,MAAOvB,EAAK8zC,MAAMvyC,KAAKvB,KAGhD+zC,SAAU,WACNh8C,KAAKmyC,WAAW3X,UAGpBsxD,OAAQ,SAASvpE,GACFviB,KACNw6B,SADMx6B,KAEN+rF,QAAQxpE,IAGjBw5B,MAAO,WACH,IAAI9zC,EAAOjI,KACPiI,EAAK+jF,SAASnH,cACd58E,EAAKgkF,YAELhkF,EAAK65E,QAIbt1C,KAAM,WACF,OAAOt1B,EAAIlX,KAAKi+E,UAAY,GAGhC3oE,MAAO,SAAS3Q,GACZ,IACIs5E,EADAh2E,EAAOjI,KAGNiI,EAAKy9E,UAAUx+D,UAEhBjf,EAAK+jF,SAASnH,cACV58E,EAAKkqC,WAAW0J,UAChB5zC,EAAKkqC,WAAW3X,SAChBvyB,EAAKg2E,SAAW56E,KAAK8S,IAAIxR,EAAE8Z,MAAMxW,EAAK+8B,MAAMi5C,SAAWh2E,EAAKikF,mBA9FzD,IAgGHxwC,EAAU3zC,GAAGuN,MAAM/K,KAAKtC,IAExBA,EAAKgkF,aAGThO,EA5FS,IA4FEt5E,EAAE8Z,MAAMkR,GAAwB,EAAIhrB,EAAE8Z,MAAMxW,EAAK+8B,MAAMi5C,SAClEh2E,EAAKg2E,SAAW56E,KAAKuV,IAAIvV,KAAK8S,IAAI8nE,EAAWh2E,EAAKikF,mBAtG3C,SAwGPjkF,EAAK2jF,WAAWzH,cAChBzoC,EAAU3zC,GAAGuN,MAAM/K,KAAKtC,MAIhC6zC,KAAM,WACF,IAAI7zC,EAAOjI,KACP0lF,EAAYz9E,EAAKy9E,UACjByG,EAAWlkF,EAAK+jF,SAASnH,cA/GR,GA+GiD58E,EAAKkkF,SACvEvnD,EAAS38B,EAAKg2E,UAAYkO,EAC1B5pE,EAAWta,EAAKo0C,QAAQp0C,EAAK+8B,MAAQJ,GAEhC38B,EAAK89E,SAAWL,EAAUb,YAAYtiE,KACvCA,EAAWlf,KAAKuV,IAAIvV,KAAK8S,IAAIoM,EAAUmjE,EAAU9sE,KAAM8sE,EAAUvvE,KACjElO,EAAKg2E,SAAW,GAGxBh2E,EAAKo0C,QAAQG,SAASv0C,EAAK+8B,KAAMziB,IAGrCu/D,KAAM,WACF9hF,KAAK4rF,WAAWxH,gBAChBpkF,KAAK2L,OAGTsgF,UAAW,WACP,IAAIhkF,EAAOjI,KACP0lF,EAAYz9E,EAAKy9E,UACjB0G,EAAWnkF,EAAKo0C,QAAQp0C,EAAK+8B,MAAQ0gD,EAAU9sE,IAAM8sE,EAAU9sE,IAAM8sE,EAAUvvE,IACnFlO,EAAK8jF,QAAQK,IAGjBL,QAAS,SAASxpE,GACdviB,KAAKmyC,WAAWiK,OAAO,CAAE75B,SAAUA,EAAUmE,SA7I7B,IA6I0DitB,KAAMsI,EAAWQ,iBAI/F4vC,EAAmB3wC,EAAU34C,OAAO,CACpCoF,KAAM,SAASjB,GAGXvG,EAAM6lB,QAAQk1B,UAAU3zC,GAAGI,KAAKoC,KAAKvK,MAErC+C,EAJW/C,KAIEkH,EAAS,CAClB0xC,OAAQ,GACRxrC,YAAa,GACb2P,OAAQ,MAIhB++B,KAAM,WACF97C,KAAKssF,qBACLtsF,KAAKo8C,OAAOp8C,KAAK44C,SAGrBpM,KAAM,WACF,OAAOt1B,EAAIlX,KAAK+c,OAAO5Y,GA9JG,GA8JiC+S,EAAIlX,KAAK+c,OAAO3X,GA9JjD,GAiK9B22C,MAAO,WACH/7C,KAAKo8C,OAAOp8C,KAAKoN,aACbpN,KAAKgpB,UACLhpB,KAAKgpB,SAASze,QAItBgiF,eAAgB,SAASpuD,EAAMC,GAC3Bp+B,KAAK+c,OAAS,GACd/c,KAAK44C,OAASza,EACdn+B,KAAKoN,YAAcgxB,GAGvBouD,YAAa,SAASxjE,GACdA,GAAYroB,EAAMuI,WAAW8f,GAC7BhpB,KAAKgpB,SAAWA,EAEhBA,EAtMhB,WA0MQsjE,mBAAoB,WAChBtsF,KAAK+c,OAAS,CACV3X,GAAIpF,KAAKoN,YAAYhI,EAAIpF,KAAK44C,OAAOxzC,GAAK,EAC1CjB,GAAInE,KAAKoN,YAAYjJ,EAAInE,KAAK44C,OAAOz0C,GAAK,GAG9CnE,KAAK44C,OAAS,CACVz0C,EAAGnE,KAAK44C,OAAOz0C,EAAInE,KAAK+c,OAAO5Y,EAC/BiB,EAAGpF,KAAK44C,OAAOxzC,EAAIpF,KAAK+c,OAAO3X,MAKvCqnF,EAAY7kF,EAAM7E,OAAO,CACzBoF,KAAM,SAASjB,GACX,IAAIe,EAAOjI,KACPsyC,EAA8B,MAAjBprC,EAAQ89B,KACrBn5B,EAAUlJ,EAAE,wCAA0CuE,EAAQwlF,WAAa,mCAAqCp6C,EAAa,aAAe,YAAc,kBAE1JA,GACAzmC,EAAQiX,KAAK,mBAAoB,cAGrC/f,EAAOkF,EAAMf,EAAS,CAClB2E,QAASA,EACT8gF,YAAa,EACbtwC,QAAS,IAAIsqC,EAAQ96E,GACrB+gF,cAAe1lF,EAAQm1C,QACvBwwC,cAAe3lF,EAAQ2lF,cACvBp9E,KAAM6iC,EAAa,QAAU,WAGjCrqC,EAAK2kF,cAAcpjF,KAAKszC,EAAQ70C,EAAK2V,QAAQpU,KAAKvB,IAClDA,EAAKquB,UAAUyjB,OAAOluC,GAClB3E,EAAQ2lF,eACR5kF,EAAKiF,QAIb0Q,QAAS,WACL,IAAI3V,EAAOjI,KACPglC,EAAO/8B,EAAK+8B,KACZ0gD,EAAYz9E,EAAKy9E,UACjBoH,EAAWpH,EAAUj2E,KACrBm9E,EAAgB3kF,EAAK2kF,cACrBG,EAAYD,EAAWpH,EAAU9+B,MACjC95C,EAAWzJ,KAAK0S,OAAO62E,EAAc5nD,GAAQ+nD,GAC7Ct9E,EAAOpM,KAAK0S,MAAM+2E,EAAWC,GAEzBA,GAAa,EACb/sF,KAAK6L,QAAQe,IAAI,UAAW,QAE5B5M,KAAK6L,QAAQe,IAAI,UAAW,IAG5BE,EAAW2C,EAAOq9E,EAClBr9E,EAAOq9E,EAAWhgF,EACXA,EAAW,IAClB2C,GAAQ3C,EACRA,EAAW,GAGf7E,EAAK0kF,aAAel9E,IACpBxH,EAAK4D,QAAQe,IAAI3E,EAAKwH,KAAMA,EAAO,MACnCxH,EAAK0kF,YAAcl9E,GAGvBxH,EAAK+kF,WAAWlgF,EAAU44E,EAAUj2E,KAAOxH,EAAK0kF,aAEhD1kF,EAAKo0C,QAAQG,SAASxX,EAAMl4B,IAGhCI,KAAM,WACFlN,KAAK6L,QAAQe,IAAI,CAAEgqB,QApQH,GAoQ+Bq2D,WAAY,aAG/D9/E,KAAM,WACGnN,KAAK6sF,eACN7sF,KAAK6L,QAAQe,IAAI,CAAEgqB,QAAS,KAIpCo2D,WAAY,SAASv5E,EAASmzC,GAC1B,IAAI/6C,EAAU7L,KAAK6L,QAEf4H,EAAUmzC,IACVnzC,EAAUmzC,GAGd/6C,EAAQiX,KAAK,gBAAiB8jC,GAC9B/6C,EAAQiX,KAAK,gBAAiBrP,MAIlCilB,EAAWhI,EAAO3tB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAMX,GALA0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC2E,EAAU5D,EAAK4D,QAEf5D,EAAKilF,QAAUjlF,EAAKf,QAAQuxB,WAAa93B,EAAM4C,QAAQqf,mBACnD3a,EAAKilF,QASL,OARArhF,EAAQ0Y,SAAS,sBACZ4oE,QAAQ,wCAEbpqF,EAAOkF,EAAM,CACTmlF,cAAevhF,EACfwhF,eAAgBxhF,EAAQspC,WAAWjrC,UAM3C2B,EACKe,IAAI,WAAY,UAChB2X,SAAS,qBACT61D,UAAU,sCACV+S,QAAQ,mCAEb,IAAIxwC,EAAQ9wC,EAAQspC,WAAWrd,GAAG,GAE9B8zD,EAAa,IAAIjrF,EAAMojF,WAAWl4E,GAElCwwC,EAAU,IAAIsqC,EAAQhqC,GAEtB3qB,EAAa,IAAIozD,EAAe,CAC5Bv5E,QAAS8wC,EACTrmB,UAAWzqB,EACXy4E,cAAer8E,EAAKf,QAAQmpC,OAGhCi9C,EAAiBttF,KAAKkH,QAAQomF,eAE9BhP,EAAa,IAAI39E,EAAM++E,WAAW7zE,EAAS,CACvCk1E,YAAa,QACbN,SAAS,EACTF,gBAAgB,EAChBS,kBAAkB,EAClBR,kBAAkB,EAClBF,WAAYr4E,EAAKf,QAAQmpC,KACzBwuC,iBAAkB52E,EAAKf,QAAQ23E,iBAC/BvpE,MAAO,SAAS3Q,GACZqtB,EAAWpU,UAEX,IAAI2vE,EAAYr2E,EAAIvS,EAAES,EAAE64E,UACpBuP,EAAYt2E,EAAIvS,EAAER,EAAE85E,UACpBwP,EAA8B,EAAZF,GAAiBC,EAEnCE,EAA4B,EAAZF,GAAiBD,GADF5qF,EAAEwyB,SAASltB,EAAKolF,eAAe,GAAI1oF,EAAEya,MAAM9X,UAIxCgmF,EAAe3oF,IAAMsD,EAAKif,UAAY8K,EAAW5sB,EAAE8hB,SAAWumE,GAAmBz7D,EAAW7tB,EAAE+iB,SAAWwmE,GAC3IpP,EAAWgD,UAEXhD,EAAW9jD,YAKvBmzD,EAAO,IAAI7H,EAAK,CACZzpC,QAASA,EACTrqB,WAAYA,EACZssD,WAAYA,EACZyH,QAAS99E,EAAKf,QAAQ6+E,UAG1B6H,EAAe,IAAIjC,EAAa,CAC5BtvC,QAASA,EACTrqB,WAAYA,EACZssD,WAAYA,EACZsN,WAAYA,IAGhBiC,EAAmB,IAAIxB,EAAiB,CACpCjwC,OAAQ,SAAS+pC,GACbl+E,EAAK6lF,SAAS3H,EAAY/gF,EAAG+gF,EAAYhiF,MAIrDk4C,EAAQ7yC,KAAKszC,GAAQ,WACjB70C,EAAK0uB,WAAc0lB,EAAQl4C,EAC3B8D,EAAK2kB,YAAeyvB,EAAQj3C,EAE5B6C,EAAKmC,QAAQshF,EAAQ,CACjB/0D,UAAW1uB,EAAK0uB,UAChB/J,WAAY3kB,EAAK2kB,gBAIrB3kB,EAAKf,QAAQ6mF,qBACbliF,EAAQod,GAAG,4BAA6BjpB,KAAKguF,aAAaxkF,KAAKxJ,OAGnE+C,EAAOkF,EAAM,CACTo0C,QAASA,EACTrqB,WAAYA,EACZ47D,aAAcA,EACdC,iBAAkBA,EAClBvP,WAAYA,EACZqP,KAAMA,EACN/B,WAAYA,EACZqC,QAAQ,EACR/mE,SAAS,EACTkmE,cAAezwC,EACfhmB,UAAW,EACX/J,WAAY,EACZygE,eAAgBxhF,EAAQspC,WAAWjrC,UAGvCjC,EAAKimF,UAAU,KACfjmF,EAAKimF,UAAU,KAGfjmF,EAAKkmF,UAAY,WACblmF,EAAKmmF,QAAS,EACdnmF,EAAKq2E,WAAW3yE,IAAI,EAAG1D,EAAKomF,UAGhCr8D,EAAWpU,UAEP3V,EAAKf,QAAQonF,eACbrmF,EAAKsmF,sBAIbP,aAAc,SAASrpF,GACnB,IAAIA,EAAE6pF,QAAN,CAIKxuF,KAAKouF,SACNpuF,KAAKouF,QAAS,EACdpuF,KAAKquF,QAAU,EACfruF,KAAKs+E,WAAWU,MAAM,EAAGh/E,KAAKquF,UAGlCl0D,aAAan6B,KAAKyuF,eAClBzuF,KAAKyuF,cAAgB11D,WAAW/4B,KAAKmuF,UAAW,IAEhD,IAAIvpD,EAAQjkC,EAAM+jC,YAAY//B,GAE1BigC,IACA5kC,KAAKquF,SAAWzpD,EAChB5kC,KAAKs+E,WAAW/jD,KAAK,EAAGv6B,KAAKquF,UAGjC1pF,EAAEwE,mBAGNs7E,YAAa,WACTzkF,KAAKgyB,WAAW7tB,EAAEsgF,eAGtBG,YAAa,SAASzuE,EAAKyC,GACvB5Y,KAAKgyB,WAAW7tB,EAAEygF,YAAYzuE,EAAKyC,IAGvCjM,OAAQ,WACJ,OAAO3M,KAAKgyB,WAAW7tB,EAAEsL,MAG7BwU,aAAc,WACV,OAAOjkB,KAAKotF,cAAc,GAAGnpE,cAGjC7F,YAAa,WACT,OAAOpe,KAAKotF,cAAc,GAAGhvE,aAGjClX,QAAS,CACL9E,KAAM,WACNiuC,MAAM,EACNq+C,WAAY,IACZC,oBAAoB,EACpB5I,SAAS,EACTttD,WAAW,EACXs1D,qBAAqB,EACrBT,eAAgB,WAAa,OAAO,GACpCgB,eAAe,EACfrkE,SAAU,CACN2kE,aAAc,kBACdC,gBAAiB,qBACjBC,gBAAiB,eAIzBzkF,OAAQ,CAldD,OAodHqhF,EAldK,UAsdT35D,QAAS,WACA/xB,KAAKktF,SACNltF,KAAK+uF,kBAIbx9D,WAAY,SAASrqB,GAEjBwpB,EAAO3oB,GAAGwpB,WAAWhnB,KADVvK,KACqBkH,GAC5BA,EAAQonF,eAFDtuF,KAGFuuF,sBAIb94C,MAAO,WACCz1C,KAAKktF,QACLltF,KAAKotF,cAAcz2D,UAAU,IAE7B32B,KAAKq8C,QAAQD,OAAO,CAAEh3C,EAAG,EAAGjB,EAAG,IAC/BnE,KAAKgvF,OAAO,KAIpBD,eAAgB,WACZ/uF,KAAKgyB,WAAWpU,UACZ5d,KAAK2tF,KAAKvoF,EAAEy/E,eACZ7kF,KAAKq8C,QAAQG,SAAS,IAAKx8C,KAAKgyB,WAAW5sB,EAAE+Q,KAG7CnW,KAAK2tF,KAAKxpF,EAAE0gF,eACZ7kF,KAAKq8C,QAAQG,SAAS,IAAKx8C,KAAKgyB,WAAW7tB,EAAEgS,MAIrD84E,QAAS,WACL,IAAIj9D,EAAahyB,KAAKgyB,WACtBA,EAAWpU,UACX5d,KAAKgvF,OAAOh9D,EAAW6qB,UACvB78C,KAAKq8C,QAAQD,OAAOpqB,EAAWwzD,sBAGnCj+D,OAAQ,WACJvnB,KAAKknB,SAAU,GAGnBG,QAAS,WACLrnB,KAAKknB,SAAU,GAGnB4mE,SAAU,SAAS1oF,EAAGjB,GACdnE,KAAKktF,SACLvsF,EAAMisB,WAAW5sB,KAAKotF,cAAel2E,EAAI9R,IACzCpF,KAAKotF,cAAcz2D,UAAUzf,EAAI/S,MAEjCnE,KAAKgyB,WAAWpU,UAChB5d,KAAKq8C,QAAQD,OAAO,CAAEh3C,EAAGA,EAAGjB,EAAGA,MAIvC+qF,iBAAkB,SAAS9pF,EAAGjB,EAAG6kB,GAC7B,IAAImV,EACAC,EAEAp+B,KAAKktF,QACLltF,KAAK8tF,SAAS1oF,EAAGjB,IAEjBg6B,EAAO,CAAE/4B,EAAGpF,KAAKq8C,QAAQj3C,EAAGjB,EAAGnE,KAAKq8C,QAAQl4C,GAC5Ci6B,EAAK,CAAEh5B,EAAGA,EAAGjB,EAAGA,GAEhBnE,KAAK6tF,iBAAiBtB,eAAepuD,EAAMC,GAC3Cp+B,KAAK6tF,iBAAiBrB,YAAYxjE,GAClChpB,KAAK6tF,iBAAiBv4E,UAI9B65E,YAAa,WACT,IAAIlnF,EAAOjI,KACXiI,EAAKmnF,YAAYjjE,YAAYs/D,GAC7BxjF,EAAKonF,cAAcv/E,KAAK7H,EAAK2mF,aAAa,KAC1C3mF,EAAKqnF,SAASvzC,QACd9zC,EAAKsnF,SAASxzC,QACd9zC,EAAKq2E,WAAW9jD,UAGpBx4B,QAAS,WACL0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,MACnBA,KAAKs+E,YACLt+E,KAAKs+E,WAAWt8E,WAIxBgtF,OAAQ,SAASr/C,GACb3vC,KAAKgyB,WAAWgzD,QAAQr1C,GACxB3vC,KAAKq8C,QAAQ0qC,QAAQp3C,IAGzB4+C,mBAAoB,WAChB,IAAItmF,EAAOjI,KAEXiI,EAAK+pB,WAAW7tB,EAAE2gF,eAClB78E,EAAK2mF,aAAejuF,EAAMkP,SAAS5H,EAAKf,QAAQ+iB,SAAS2kE,cACzD3mF,EAAK4mF,gBAAkBluF,EAAMkP,SAAS5H,EAAKf,QAAQ+iB,SAAS4kE,iBAC5D5mF,EAAK6mF,gBAAkBnuF,EAAMkP,SAAS5H,EAAKf,QAAQ+iB,SAAS6kE,iBAE5D7mF,EAAKmlF,cAAcD,QAAQ,oKAAsKllF,EAAK2mF,aAAa,IAAM,kBACzN3mF,EAAKmnF,YAAcnnF,EAAKmlF,cAAcj4C,WAAWjrC,QACjDjC,EAAKonF,cAAgBpnF,EAAKmnF,YAAYj6C,SAAS,gBAE/CltC,EAAK0lF,KAAKxpF,EAAEqF,KAAK,SAAUvB,EAAKunF,YAAYhmF,KAAKvB,IACjDA,EAAKq2E,WAAW90E,KAAK,MAAOvB,EAAKwnF,SAASjmF,KAAKvB,KAGnDwnF,SAAU,WACN,IAAIxnF,EAAOjI,KAENiI,EAAKgmF,SAIVhmF,EAAKgmF,QAAS,EACdhmF,EAAKmnF,YAAYjjE,YAAYq/D,GAAcjnE,SAASknE,GACpDxjF,EAAKonF,cAAcv/E,KAAK7H,EAAK6mF,gBAAgB,KAC7C7mF,EAAKqnF,SAASxD,OAAO7jF,EAAKf,QAAQwnF,WAAa,GAC/CzmF,EAAKmC,QAAQ,UAGjBolF,YAAa,WACT,IAAIvnF,EAAOjI,KAEPiI,EAAKo0C,QAAQl4C,EA7lBI,GA6lByB8D,EAAKf,QAAQwnF,WAClDzmF,EAAKgmF,SACNhmF,EAAKgmF,QAAS,EACdhmF,EAAKmnF,YAAYjjE,YAAYs/D,GAAclnE,SAASinE,GACpDvjF,EAAKonF,cAAcv/E,KAAK7H,EAAK4mF,gBAAgB,MAE1C5mF,EAAKgmF,SACZhmF,EAAKgmF,QAAS,EACdhmF,EAAKmnF,YAAYjjE,YAAYq/D,GAC7BvjF,EAAKonF,cAAcv/E,KAAK7H,EAAK2mF,aAAa,OAIlDV,UAAW,SAASlpD,GAChB,IAMI0qD,EANAznF,EAAOjI,KACP2vF,EAAY1nF,EAAK4D,QAAQiX,KAAK,MAC9Bu5B,EAAUp0C,EAAKo0C,QACfqpC,EAAYz9E,EAAK+pB,WAAWgT,GAC5B4mD,EAAa3jF,EAAK2jF,WAClBI,EAAW/jF,EAAK0lF,KAAK3oD,GAGpB2qD,IACDA,EAAYhvF,EAAM8uB,OAClBxnB,EAAK4D,QAAQiX,KAAK,KAAM6sE,IAG5BD,EAAY,IAAIjD,EAAU,CACtBznD,KAAMA,EACNqX,QAASA,EACTqpC,UAAWA,EACXpvD,UAAWruB,EAAK4D,QAChBghF,cAAe5kF,EAAKf,QAAQynF,mBAC5BjC,WAAYiD,IAGhBjK,EAAUl8E,KAAKszC,GAAQ,WACnB4yC,EAAU9xE,aAGdouE,EAASxiF,KAAKszC,GAAQ,WAClB4yC,EAAUxiF,UAGdjF,EAAK+8B,EAAO,WAAa,IAAI6mD,EAAY,CACrC7mD,KAAMA,EACNgnD,SAAUA,EACV3vC,QAASA,EACTuvC,WAAYA,EACZtN,WAAYr2E,EAAKq2E,WACjBoH,UAAWA,EACXK,QAAS99E,EAAKf,QAAQ6+E,QACtBoG,SAAUlkF,EAAKf,QAAQilF,UAppBpB,IAqpBHD,mBAAoBjkF,EAAKf,QAAQglF,oBAppBnB,GAqpBdvgF,IAAK,WACD+jF,EAAUviF,OACVlF,EAAKmC,QAAQ,YAAa,CACtB46B,KAAMA,EACNrO,UAAW1uB,EAAK0uB,UAChB/J,WAAY3kB,EAAK2kB,mBAOrCjD,EAAGqN,OAAO0B,GAlrBd,CAmrBG53B,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GACX+G,EAAS/G,EAAG+G,OACZ9oB,EAAQjH,EAAMiH,MACdrE,EAAU5C,EAAM4C,QAChB2pB,EAAYvsB,EAAMusB,UAClBnhB,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aACpB0jF,EAAO,OACPC,EAAQ,QACRC,EAAa,aACbC,EAAW,WACXC,EAAS,SAETrlE,EAAQ,QACRslE,EAAM,MACNC,EAAS,SACTC,EAAW,WACX7+C,EAAS,SACT8+C,EAAO,OACPC,EAAW,WACX1+C,EAAW,WAEX2+C,EAAU,UACVC,EAAS,WACTC,EAAe,iBACfC,EAAqB,uBACrBC,EAAiB,4CAEjBC,EAAmBhuF,EAAEyM,SAASiK,iBAC9Bu3E,EAASjuF,EAAE7B,QACX4qF,EAAS,SAET55C,EADYvuC,EAAQob,YAAY/R,IACR,YACxB7J,EAASJ,EAAEI,OACX8tF,EAAK,cACL1hF,EAAS,CAAC,YACA,cACA,eACA,aACA,cACA,eAEd,SAASgmB,EAASmB,EAAWhvB,GACzB,SAAKgvB,IAAchvB,KAGZgvB,IAAchvB,GAAU3E,EAAEwyB,SAASmB,EAAWhvB,IAGzD,IAAIwpF,EAAQpgE,EAAO3tB,OAAO,CACtBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAiB6pF,EAAb9oF,EAAOjI,MAEXkH,EAAUA,GAAW,IAEToX,QACRpX,EAAQ0xC,OAAS1xC,EAAQ0xC,QAAUs3C,eACnChpF,EAAQ4F,SAAW5F,EAAQ4F,UAAYmjF,aAG3Cv/D,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC2E,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QAEfe,EAAK+oF,WAAa9pF,EAAQ+pF,UAAY/pF,EAAQ+pF,UAAUrmF,MAAM,KAAO,GACrE3C,EAAKipF,UAAYvwF,EAAM66B,cAvCf,OAuCwC76B,EAAM8uB,QAEvB,IAA3BxnB,EAAK+oF,WAAWxpF,QAChBS,EAAK+oF,WAAWrvF,KAAKsG,EAAK+oF,WAAW,IAGzCD,EAAcpuF,EAAEsF,EAAKf,QAAQiqF,QAAQ9kF,QAAQ,qBAAqB4pB,OAAO,sBAEzE/uB,EAAQimC,SAAWxqC,EAAEA,EAAEuE,EAAQimC,UAAU,IAAM4jD,EAAY,IAAM3hF,SAAS6O,MAE1EhW,EAAK4D,QAAQsB,OACRoX,SAAS,WACTyD,YAAY,UAAW9gB,EAAQoX,OAC/B6uB,SAASjmC,EAAQimC,UACjBrqB,KAAK,eAAe,GACpBmG,GAAG,aAAe4nE,GAAI,WACnB5oF,EAAKmpF,UAAW,KAEnBnoE,GAAG,QAAU4nE,GAAI,SAASlsF,GACvB,IAAI4mE,EAAO5oE,EAAEgC,EAAE2C,QAAQyuB,KAAK,WACxBs7D,EAAa9lB,EAAKp/D,SAClBo/D,EAAK/jE,QAAU+jE,EAAKh/D,GAAG,cAA4C,IAA3B8kF,EAAW16D,aAAqBhyB,EAAEgkB,cAAckc,OAAS,GAChGwsD,EAAW16D,cAAgB06D,EAAWliE,KAAK,gBAAkBkiE,EAAWliE,KAAK,iBAAmBxqB,EAAEgkB,cAAckc,OAAS,IACvHlgC,EAAEwE,oBAGZ8f,GAAG,aAAe4nE,GAAI,WACnB5oF,EAAKmpF,UAAW,KAGxBnpF,EAAKmE,QAAUzJ,KAEW,IAAtBuE,EAAQoqF,YACRpqF,EAAQoqF,UAAY,CAAEC,KAAM,CAAE/qE,QAAS,IAAM8+B,MAAO,CAAEn4C,MAAM,EAAMqZ,QAAS,MAG/EzjB,EAAOmE,EAAQoqF,UAAUC,KAAM,CAC3B5qE,SAAU,WACN1e,EAAKmE,QAAQmY,SAAS,+BACtBtc,EAAKmE,QAAQQ,IAAI,WAAW,IAC5B3E,EAAK8/E,YAAa,EAClB9/E,EAAKm3E,SAAS2Q,MAItBhtF,EAAOmE,EAAQoqF,UAAUhsC,MAAO,CAC5B3+B,SAAU,WACN1e,EAAKupF,qBAIbvpF,EAAKwpF,gBAAkB,SAAS9sF,GAC5BsD,EAAKypF,WAAW/sF,IAGhBpB,EAAQkf,SAASnC,QACjBrY,EAAK0pF,aAAe,SAAShtF,GACzBo0B,YAAW,WACP9wB,EAAK8pB,QAAQptB,KACd,MAGPsD,EAAK0pF,aAAe,SAAShtF,GACzBsD,EAAK8pB,QAAQptB,IAIjBuC,EAAQ0qF,cACRjvF,EAAEuE,EAAQ0qF,cAAc3oE,GAAG/hB,EAAQ2qF,YAAchB,EAAI5oF,EAAKkgB,OAAO3e,KAAKvB,KAI9EoC,OAAQ,CACJulF,EACAG,EACAF,EACAC,GAGJ5oF,QAAS,CACL9E,KAAM,QACNyvF,YAAa,QACbj5C,OAAQs3C,cACRpjF,SAAUmjF,WACVkB,OAAQf,EACRjjD,SAAU,KACV8jD,UAAW,WACXa,SAAUhxF,OACVixF,kBAAkB,EAClBjmF,UAAU,EACVkmF,OAAO,EACPC,WAAY,CACRjlF,MAAO,EACPL,OAAQ,GAEZ2kF,UAAW,CACPC,KAAM,CACF/qE,QAAS,eACT2rB,YAAY,EACZzrB,SAAU,KAEd4+B,MAAO,CACH5+B,SAAU,IACVvZ,MAAM,IAGd+kF,mBAAmB,GAGvBV,gBAAiB,WACb,IAAIvpF,EAAOjI,KACPuiB,EAAWta,EAAKmE,QAAQyB,KAAKwiF,GAEjCpoF,EAAKmE,QAAQe,OAEToV,GACAta,EAAKmE,QAAQQ,IAAI2V,GAGjBta,EAAKf,QAAQiqF,QAAUf,GACvBnoF,EAAKkqF,gBAGTlqF,EAAKmqF,UAAW,EAChBnqF,EAAKm3E,SAAS0Q,IAGlB9tF,QAAS,WACL,IAGImK,EAHAlE,EAAOjI,KACPkH,EAAUe,EAAKf,QACf2E,EAAU5D,EAAK4D,QAAQotB,IAAI43D,GAG/BngE,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEnBf,EAAQ0qF,cACRjvF,EAAEuE,EAAQ0qF,cAAc34D,IAAI43D,GAG3B3pF,EAAQ8qF,QACTrB,EAAiB13D,IAAIhxB,EAAKipF,UAAWjpF,EAAKwpF,iBAC1CxpF,EAAKoqF,eAAc,IAGvB1xF,EAAMqB,QAAQiG,EAAK4D,QAAQspC,YAC3BtpC,EAAQqmB,aAEJhrB,EAAQimC,SAAS,KAAO/9B,SAAS6O,QACjC9R,EAASN,EAAQQ,QAAQ,2BAEd,GACPF,EAAO4qB,SAEPlrB,EAAQkrB,WAKpBw6D,KAAM,SAASnsF,EAAGjB,GACd,IAIImtF,EAAWllF,EAIXD,EARAlE,EAAOjI,KACPsyF,EAAQ,CAAEl8C,SAAUttC,MAAMmQ,SAAS9U,EAAE,KAAMiB,EAAGA,EAAGjB,EAAGA,GACpD0H,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QAEfiqF,EAASxuF,EAAEuE,EAAQiqF,QACnBtnE,EAAShe,EAAQ,IAAMA,EAAQugB,SAAS,aACxCmmE,EAAU1mF,EAAQkqB,KAAK,oBAG3B,IAAK9tB,EAAKqE,UAAW,CAQjB,GAPIpF,EAAQ6qF,mBACJloE,GAAuB,aAAb1a,EAAO,IACjBA,EAAO0G,QAEXhK,EAAQe,IAAIjM,EAAMqO,kBAAkBmiF,EAAO,GAAIhiF,KAG/ClH,EAAK4D,QAAQM,SAAS0B,KAAK,cAAgB5F,EAAKm3E,SAASwQ,GACzD,OAGJ3nF,EAAK8/E,YAAa,EAEb7gF,EAAQ8qF,QACTrB,EAAiB13D,IAAIhxB,EAAKipF,UAAWjpF,EAAKwpF,iBAC7BxoE,GAAGhhB,EAAKipF,UAAWjpF,EAAKwpF,iBAIrCxpF,EAAKoqF,eAAc,GACnBpqF,EAAKoqF,eAAc,IAGvBpqF,EAAKmE,QAAUA,EAAUzL,EAAMqrB,KAAKngB,EAAS3E,EAAQ4E,SAAU5E,EAAQsrF,eAClE5lF,IAAI,CACD+f,SAAU2kB,EACVzkC,QAAS,QACTC,SAAUqjF,IAEbrtE,KAAK,eAAe,GAEzB3W,EAASN,EAAQM,SAEbomF,EAAQzvE,KAAK,cACb1W,EAAQ0W,KAAK,aAAcyvE,EAAQzvE,KAAK,eACjCyvE,EAAQzvE,KAAK,oBACpB1W,EAAQ0W,KAAK,kBAAmByvE,EAAQzvE,KAAK,oBAG7Cvf,EAAQkf,SAASnC,SACjBnU,EAAOS,IAAIklC,EAAW,iBAG1B1lC,EAAQQ,IAAI+kC,GAERhvC,EAAEuE,EAAQimC,UAAU,IAAM/9B,SAAS6O,MACnC7R,EAAQQ,IAAIqjF,EAAK,YAGrBhoF,EAAKwqF,QAAUxqF,EAAKyqF,UAAUJ,GAC9BhB,EAAYrpF,EAAK0qF,iBAEbzrF,EAAQiqF,QAAUf,GAASnoF,EAAK4D,QAAQugB,SAAS,cACjDnkB,EAAK2qF,cAActB,GAGvBnlF,EAAOgB,OACPtB,EAAQqB,OACRjF,EAAKmE,QAAQc,OAEbf,EAAO0B,KAAKyiF,EAASgB,EAAU9qE,SACvBiB,WAAU,GACVI,aAAaypE,GAGrBzlF,EAAQiX,KAAK,eAAe,KAIpC+vE,UAAW,SAASz8C,GAChB,IAGIhqC,EAHAnE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QAEfiqF,EAASxuF,EAAEuE,EAAQiqF,QACnBtnE,EAAShe,EAAQ,IAAMA,EAAQugB,SAAS,aAExCllB,EAAQ6qF,mBACJloE,GAAuB,aAAb1a,EAAO,IACjBA,EAAO0G,QAEXhK,EAAQe,IAAIjM,EAAMqO,kBAAkBmiF,EAAO,GAAIhiF,KAGnDlH,EAAKmE,QAAUA,EAAUzL,EAAMqrB,KAAKngB,EAAS3E,EAAQ4E,UAC5Bc,IAAI,CACD+f,SAAU2kB,EACVzkC,QAAS,QACTC,SAAUqjF,IAGlC5sF,EAAQkf,SAASnC,SACjBlU,EAAQQ,IAAIklC,EAAW,iBAG3B1lC,EAAQQ,IAAI+kC,GAERhvC,EAAEuE,EAAQimC,UAAU,IAAM/9B,SAAS6O,MACnC7R,EAAQQ,IAAIqjF,EAAK,YAGrBhoF,EAAKyqF,UAAUt8C,GAAW,IAE1B,IAAIr5B,EAAS3Q,EAAQ2Q,SACrB,MAAO,CACH/P,MAAOrM,EAAMqL,YAAYI,GACzBO,OAAQhM,EAAMuL,aAAaE,GAC3Byf,KAAM9O,EAAO8O,KACbzH,IAAKrH,EAAOqH,MAIpBuuE,eAAgB,WACZ,IAAIrB,EAAYvuF,GAAO,EAAM,GAAI/C,KAAKkH,QAAQoqF,UAAUC,MAGxD,OAFAD,EAAU9qE,QAAU7lB,EAAM2sB,aAAagkE,EAAU9qE,QAASxmB,KAAKyyF,SAExDnB,GAGXa,cAAe,WACX,IAAIhB,EAASxuF,EAAE3C,KAAKkH,QAAQiqF,QACxBl9C,IAAck9C,EAAOruE,KAAK,UAAY,IAAI3S,MAAMsgF,IAAuB,CAAC,GAAI,SAAS,GACrFqC,EAAWtC,EAAe,IAAMv8C,EAEpCk9C,EACKhlE,YAAY2mE,GACZ39C,SAASu7C,GACTvkE,YAAYokE,GACZpkE,YAAY2mE,GAEjB9yF,KAAK6L,QAAQsgB,YAAYqkE,EAAe,IAAM7vF,EAAM4sB,WAAW0mB,GAAWn+B,UAG9E88E,cAAe,SAAStB,GACpB,IAAIr9C,EAAYq9C,EAAU9qE,QAAQkyB,QAAU44C,EAAU9qE,QAAQkyB,QAAQzE,UAAY,OAC9E6+C,EAAWtC,EAAe,IAAMv8C,EAEpCtxC,EAAE3C,KAAKkH,QAAQiqF,QACV5sE,SAASuuE,GACT39C,SAASu7C,GACTnsE,SAASgsE,GACThsE,SAASuuE,IAGlBhmF,SAAU,WACF9M,KAAKsM,YACLtM,KAAKyyF,QAAUzyF,KAAK0yF,cAM5BvqE,OAAQ,WACOnoB,UAEDsM,UAAYujF,EAAQD,MAGlCtjF,QAAS,WACL,OAAOtM,KAAKoM,QAAQG,GAAG,aAAkBvM,KAAK6L,QAAQU,GAAG,aAG7D+4C,MAAO,SAASytC,GACZ,IAE4B/mE,EACxBslE,EAAW0B,EAAaC,EAHxBhrF,EAAOjI,KACPmM,EAASlE,EAAK4D,QAAQM,SACtBjF,EAAUe,EAAKf,QAGnB,GAAIe,EAAKqE,UAAW,CAMhB,GALA0f,EAAQ/jB,EAAKmE,QAAQ,GAAKnE,EAAKmE,QAAUzL,EAAMqrB,KAAK/jB,EAAK4D,SAASsB,OAElElF,EAAKmE,QAAQ+f,YAAY,+BACzBlkB,EAAKoqF,eAAc,GAEfpqF,EAAKmqF,UAAYnqF,EAAKm3E,SAASyQ,GAE/B,YADA5nF,EAAKoqF,eAAc,GAKvBpqF,EAAK4D,QAAQkqB,KAAK,YAAY/yB,MAAK,WAC/B,IACIkwF,EADOvwF,EAAE3C,MACI6N,KAAK,cAElBqlF,GACAA,EAAM5tC,MAAMytC,MAIpBpC,EAAiB13D,IAAIhxB,EAAKipF,UAAWjpF,EAAKwpF,iBAEtCsB,EACAzB,EAAY,CAAEnkF,MAAM,EAAMqZ,QAAS,KAEnC8qE,EAAYvuF,GAAO,EAAM,GAAImE,EAAQoqF,UAAUhsC,OAC/C0tC,EAAc7mF,EAAO0B,KAAKyiF,KAC1B2C,EAAe3B,EAAU9qE,WAEH7lB,EAAM8O,KAAKwjF,IAAiBD,GAAeryF,EAAM8O,KAAKujF,KACxE1B,EAAU9qE,QAAUwsE,EACpB1B,EAAUx7E,SAAU,GAGxB7N,EAAKmqF,UAAW,GAGpBjmF,EAAOsb,WAAU,GACjBxf,EAAK4D,QAAQiX,KAAK,eAAe,GACjCkJ,EACKpf,IAAI,CAAE+f,SAAU2kB,IAChBxuB,KAAK,eAAe,GACzB3W,EAAO0b,aAAaypE,GAEhByB,GACA9qF,EAAKupF,oBAKjBpS,SAAU,SAAS/9E,GACf,OAAOrB,KAAKoK,QAAQ/I,EAAI,CAAEqE,KAAMrE,KAGpC0wB,QAAS,SAASptB,GACd,IAAIsD,EAAOjI,MAE6B,IAApCuD,EAAQgmB,OAAO5T,QAAQhR,EAAEe,OACzBy0B,aAAalyB,EAAKkrF,gBAClBlrF,EAAKkrF,eAAiBp6D,YAAW,WAC7B9wB,EAAKyqF,YACLzqF,EAAKkrF,eAAiB,OACvB,OAEElrF,EAAKmpF,UAAanpF,EAAK8/E,YAAc9/E,EAAK4D,QAAQkqB,KAAK,WAAWvuB,OAAS,IAC5ES,EAAKq9C,SAKjB+sC,cAAe,SAASlqE,GACpB,IAAIiP,EAASjP,EAAS,KAAO,MACzBpe,EAAaxG,EAAQgmB,OAEnBhmB,EAAQkf,SAASvB,KAAO3d,EAAQkf,SAASnC,SAAW/c,EAAQye,QAAQkB,SACtEnZ,GAAc,WAGdoe,IAAWnoB,KAAKunC,oBAChBvnC,KAAKunC,kBAAoBvnC,KAAKozF,sBAG9BpzF,KAAKunC,mBAAqBvnC,KAAKunC,kBAAkB//B,QACjDxH,KAAKunC,kBAAkBnQ,GAAQs0D,EAAQ1rF,KAAK2xF,cAGhDf,EAAOx5D,GAAQrtB,EAAY/J,KAAK2xF,eAGpCD,WAAY,SAAS/sF,GACjB,IAAIsD,EAAOjI,KACPs2B,EAAYruB,EAAK4D,QAAQ,GACzB3E,EAAUe,EAAKf,QACfiqF,EAASxuF,EAAEuE,EAAQiqF,QAAQ,GAC3BS,EAAe1qF,EAAQ0qF,aACvBtqF,EAAS3G,EAAM8nB,YAAY9jB,GAC3BuuF,EAAQvwF,EAAE2E,GAAQ+E,QAAQ,YAC1Bwd,EAASqpE,EAAM/mF,SAASA,OAAO,YAAY3E,OAE/C0rF,EAAQA,EAAM,IACTrpE,GAAUqpE,GAASA,IAAUjrF,EAAK4D,QAAQ,IAKF,YAAzClJ,EAAEgC,EAAE2C,QAAQ+E,QAAQ,KAAKwB,KAAK,SAI7BsnB,EAASmB,EAAWhvB,IAAY6tB,EAASg8D,EAAQ7pF,IAAasqF,GAAgBz8D,EAASxyB,EAAEivF,GAAc,GAAItqF,IAC5GW,EAAKq9C,UAIb+tC,KAAM,SAASvmF,EAAU2C,EAAM6jF,GAC3B,IAAIC,EAAS,EAUb,OARIzmF,EAAW2C,EAAO6jF,IAClBC,EAASD,GAAgBxmF,EAAW2C,IAGpC3C,EAAW,IACXymF,GAAUzmF,GAGPymF,GAGXC,MAAO,SAASz2E,EAAQtN,EAAMgkF,EAAYH,EAAc16C,EAAQ9rC,EAAU4mF,GACtE,IAAIH,EAAS,EAYb,OAXIG,EAAUA,GAAWjkF,EAErB3C,IAAa8rC,GAAU9rC,IAAakjF,GAAUp3C,IAAWo3C,IACrDjzE,EAAS22E,EAAUJ,IACnBC,KAAYE,EAAahkF,IAGzBsN,EAASw2E,EAAS,IAClBA,GAAUE,EAAahkF,IAGxB8jF,GAGXH,mBAAoB,WAChB,OAAOzwF,EAAE3C,KAAKkH,QAAQiqF,QACV3pD,aAAa,QACbvR,QAAO,SAASld,EAAOlN,GACpB,OAAOlL,EAAM6rB,aAAa3gB,OAI7C6mF,UAAW,SAASJ,GAChB,IAYIqB,EAAkBt7D,EAClBu7D,EAGApsF,EAAQqsF,EAAgBC,EAAeC,EAhBvC9rF,EAAOjI,KAEP6L,EAAU5D,EAAK4D,QACfO,EAAUnE,EAAKmE,QACflF,EAAUe,EAAKf,QACf4qF,EAAWnvF,EAAEuE,EAAQ4qF,UACrBhuE,EAAYvgB,EAAQugB,YACpBkwE,KAAelC,EAAS,IAAMhxF,QAAWA,OAAO2e,YAAeqE,GAAa,MAC5EqtE,EAASxuF,EAAEuE,EAAQiqF,QACnB8C,EAAU/sF,EAAQ0xC,OAAOtgC,cAAc1N,MAAM,KAC7CspF,EAAYhtF,EAAQ4F,SAASwL,cAAc1N,MAAM,KACjDomF,EAAa/oF,EAAK+oF,WAEJp3C,EAAS,MACvBhwC,EAAM,EACNoa,EAAQ5U,SAASiK,iBAIjBw6E,EADA3sF,EAAQ4qF,WAAahxF,OACJ,CACbsjB,IAAMtjB,OAAOssB,aAAehe,SAASiK,gBAAgBsd,WAAa,EAClE9K,KAAO/qB,OAAOusB,aAAeje,SAASiK,gBAAgBuT,YAAc,GAGvDklE,EAAS/0E,SAG1Bi3E,GACAF,EAAgBhzF,OAAO2e,WACvBs0E,EAAiBjzF,OAAO8e,cAExBk0E,EAAgBhC,EAAS9kF,QACzB+mF,EAAiBjC,EAASnlF,UAG1BqnF,GAAYhwE,EAAMC,aAAeD,EAAME,aAAe,KAGrD4vE,IAFW5sF,EAAQoX,OAAS,EAAI,GAER3d,EAAM4C,QAAQoa,aAK3C,IAFAg2E,EAAmBxC,EAAO94D,UAAUpC,OAAO7pB,EAAQ+nF,aAE9B,GAKjB,GAJAP,EAAevwF,KAAKuV,IAAItG,OAAOqhF,EAAiB/mF,IAAI,WAAY,GAK5DgtC,EAASg6C,EAAe,QAGxB,IAAKpsF,GADL6wB,EAAU84D,EAAO3pD,aAAamsD,IACRnsF,OAAQoC,EAAMpC,EAAQoC,KACxCgqF,EAAethF,OAAO3P,EAAE01B,EAAQzuB,IAAMgD,IAAI,aACtBgtC,EAASg6C,IACzBh6C,EAASg6C,EAAe,IAMxCxnF,EAAQQ,IAAI,SAAUgtC,GAElB04C,GAASA,EAAMl8C,QACfhqC,EAAQQ,IAAI,CAAEif,KAAMymE,EAAMltF,EAAGgf,IAAKkuE,EAAMnuF,IAExCiI,EAAQQ,IAAI3E,EAAKmsF,OAAOH,EAASC,IAGrC,IAAIG,EAAMnnE,EAAU9gB,EAASulC,EAAUw/C,EAAO,KAAO/kF,EAAQkoF,eAAe,IACxEv3E,EAASmQ,EAAU9gB,GACJ+kF,EAAOmD,eAAenoF,OAAO,4CAE/B3E,SACb6sF,EAAMnnE,EAAU9gB,EAASulC,GAAU,GACnC50B,EAASmQ,EAAU9gB,IAGvB2Q,EAAOqH,KAAOyvE,EAAezvE,IAC7BrH,EAAO8O,MAAQgoE,EAAehoE,KAEzB5jB,EAAKmE,QAAQyB,KAAKwiF,IACnBjkF,EAAQyB,KAAKwiF,EAAUttF,EAAO,GAAIsxF,IAGtC,IAAIE,EAAUxxF,EAAO,GAAIga,GACrBwF,EAAWxf,EAAO,GAAIsxF,GACtBpC,EAAa/qF,EAAQ+qF,WAEH,QAAlBjB,EAAW,KACXzuE,EAAS6B,KAAOnc,EAAKorF,KAAKkB,EAAQnwE,IAAKnY,EAAYG,GAAW6lF,EAAWtlF,OAAQonF,EAAiBjwE,IAGhF,QAAlBktE,EAAW,KACXzuE,EAASsJ,MAAQ5jB,EAAKorF,KAAKkB,EAAQ1oE,KAAM9f,EAAWK,GAAW6lF,EAAWjlF,MAAO8mF,EAAgBhwE,IAGrG,IAAI0wE,EAAUzxF,EAAO,GAAIwf,GACrB7V,EAAgBT,EAAYJ,GAC5B4oF,EAAgBxoF,EAAYG,GAgBhC,OAdKA,EAAQO,UAAYD,IACrB+nF,GAAgC/nF,GAGd,SAAlBskF,EAAW,KACXzuE,EAAS6B,KAAOnc,EAAKurF,MAAMe,EAAQnwE,IAAK1X,EAAeT,EAAYklF,GAAS4C,EAAiBjwE,EAAWmwE,EAAQ,GAAIC,EAAU,GAAIO,IAGhH,SAAlBzD,EAAW,KACXzuE,EAASsJ,MAAQ5jB,EAAKurF,MAAMe,EAAQ1oE,KAAM9f,EAAWF,GAAUE,EAAWolF,GAAS2C,EAAgBhwE,EAAWmwE,EAAQ,GAAIC,EAAU,GAAInoF,EAAWK,KAGvJA,EAAQQ,IAAI2V,GAEJA,EAASsJ,MAAQ2oE,EAAQ3oE,MAAQtJ,EAAS6B,KAAOowE,EAAQpwE,KAGrEgwE,OAAQ,SAASx7C,EAAQ9rC,GACrB,IASI4nF,EATAzsF,EAAOjI,KACP6L,EAAU5D,EAAKmE,QACf+kF,EAASxuF,EAAEsF,EAAKf,QAAQiqF,QACxBwD,EAAiB/7C,EAAO,GACxBg8C,EAAmBh8C,EAAO,GAC1Bi8C,EAAmB/nF,EAAS,GAC5BgoF,EAAqBhoF,EAAS,GAC9BioF,EAAe7nE,EAAUikE,GACzBhkD,EAAWxqC,EAAEsF,EAAKf,QAAQimC,UAE1BngC,EAAQjB,EAAWF,GACnBc,EAASV,EAAYJ,IAAYI,EAAYJ,EAAQkqB,KAAK,gCAAgCof,WAAWjrC,SACrG8qF,EAAcjpF,EAAWolF,GACzB8D,EAAehpF,EAAYklF,GAC3B/sE,EAAMnc,EAAKf,QAAQgrF,kBAAoB,EAAI6C,EAAa3wE,IACxDyH,EAAO5jB,EAAKf,QAAQgrF,kBAAoB,EAAI6C,EAAalpE,KACzD9V,EAAQ1S,KAAK0S,MAyCjB,OAvCIo3B,EAAS,IAAM/9B,SAAS6O,OAExBmG,IADAswE,EAAiBxnE,EAAUigB,IACL/oB,IACtByH,GAAQ6oE,EAAe7oE,MAIvB8oE,IAAmBzE,IACnB9rE,GAAO6wE,GAGPN,IAAmB3E,IACnB5rE,GAAOrO,EAAMk/E,EAAe,IAG5BJ,IAAqB3E,IACrB9rE,GAAOzX,GAGPkoF,IAAqB7E,IACrB5rE,GAAOrO,EAAMpJ,EAAS,IAGtBioF,IAAqBjqE,IACrBkB,GAAQmpE,GAGRJ,IAAqB5E,IACrBnkE,GAAQ9V,EAAMi/E,EAAc,IAG5BF,IAAuBnqE,IACvBkB,GAAQ7e,GAGR8nF,IAAuB9E,IACvBnkE,GAAQ9V,EAAM/I,EAAQ,IAGnB,CACHoX,IAAKA,EACLyH,KAAMA,MAKlBlC,EAAGqN,OAAO85D,GAEV,IAAI/rE,EAAapkB,EAAM4C,QAAQwhB,WAC3BmwE,EAAe,kBAEfC,EAAavtF,EAAM7E,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS3E,GACpBlH,KAAK6L,QAAUlJ,EAAEkJ,GACjB7L,KAAK6L,QAAQ2rB,YAAY09D,IAG7BE,KAAM,WACFp1F,KAAK6L,QAAQod,GAAG,UAAWjpB,KAAKq1F,YAAY7rF,KAAKxJ,QAGrDs1F,WAAY,WACRt1F,KAAK6L,QAAQ4rB,aAAay9D,IAG9BlzF,QAAS,WACLhC,KAAK6L,QAAQ4rB,aAAay9D,GAC1Bl1F,KAAK6L,QA5vBjB,WA+vBQ0pF,WAAY,WACR,OAAO,GAGXF,YAAa,SAAS1wF,GAClB,GAAgB,IAAZA,EAAEg9E,OAAgB3hF,KAAKu1F,eAAgB5wF,EAAE0E,qBAA7C,CAIA,IAAI8qB,EAAWn0B,KAAKw1F,qBAChBC,EAAiBz1F,KAAK01F,uBAAuBvhE,GAC7CkxC,EAAOrlE,KAAK21F,eAAehxF,EAAG8wF,GAE9BpwB,GACArlE,KAAK41F,OAAOvwB,GAGhB1gE,EAAEwE,mBAENqsF,mBAAoB,WAChB,IAAIrhE,EAAWn0B,KAAK6L,QAAQkqB,KAxCP,+KAwCoCE,QAAO,SAAS1uB,EAAGynC,GACxE,OAAOA,EAAK6mD,UAAY,GAAKlzF,EAAEqsC,GAAMziC,GAAG,cAAgB5J,EAAEqsC,GAAMziC,GAAG,iBAOvE,OAJIvM,KAAK6L,QAAQU,GAAG,eAChB4nB,EAASxyB,KAAK3B,KAAK6L,QAAQ,IAGxBsoB,GAEXuhE,uBAAwB,SAASvhE,GAC7B,IAAIshE,EAEJ,GAAI1wE,EACA0wE,EAAiBthE,EAASjP,MAAK,SAASy6B,EAAM0lB,GAC1C,OAAO1lB,EAAKk2C,SAAWxwB,EAAKwwB,gBAE7B,CACH,IAAIC,EAAW,YACf3hE,EAASnxB,MAAK,SAASuE,EAAGynC,GACtBA,EAAKnqB,aAAaixE,EAAUvuF,MAGhCkuF,EAAiBthE,EAASjP,MAAK,SAASy6B,EAAM0lB,GAC1C,OAAO1lB,EAAKk2C,WAAaxwB,EAAKwwB,SAC1B58E,SAAS0mC,EAAK5qB,aAAa+gE,GAAW,IAAM78E,SAASosD,EAAKtwC,aAAa+gE,GAAW,IAClFn2C,EAAKk2C,SAAWxwB,EAAKwwB,YAG7B1hE,EAAS7C,WAAWwkE,GAGxB,OAAOL,GAEXE,eAAgB,SAAShxF,EAAGwvB,GACxB,IAAIrZ,EAAQqZ,EAAS3sB,OACjBiM,EAAU0gB,EAASpb,MAAMpU,EAAE2C,QAE/B,OAAO6sB,EAAS5E,KAAK9b,GAAW9O,EAAEyiC,UAAY,EAAI,IAAMtsB,IAE5D86E,OAAQ,SAAS/pF,GACW,UAApBA,EAAQosB,UAKZpsB,EAAQ+5B,QAEgB,SAApB/5B,EAAQosB,UAAuBpsB,EAAQg6B,mBAAqB7lC,KAAK+1F,oBAAoBlqF,IACrFA,EAAQg6B,kBAAkB,EAAGh6B,EAAQnD,MAAMlB,SAP3CqE,EAAQmqF,cAAc5mF,SAAS6O,KAAK2nB,SAU5CmwD,oBAAqB,SAASlqF,GAC1B,IAAIoqF,EAAcpqF,EAAQnG,KAAK4S,cAE/B,MAAuB,SAAhB29E,GAA0C,WAAhBA,GACjB,QAAhBA,GAAyC,QAAhBA,GACT,aAAhBA,KAGRtsE,EAAGmnE,MAAMqE,WAAaA,EA/0B1B,CAg1BGr0F,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAElBjH,EAAMmP,KAAOnP,EAAMmP,MAAQ,GAE3B,IAAIomF,EAAWtuF,EAAM7E,OAAO,CACxBoF,KAAM,SAAS0D,EAAS3E,GACTlH,KACN6L,QAAUlJ,EAAEkJ,UACjB3E,EAAUA,GAAW,IACN9E,KAHJpC,KAINuI,aAAarB,IAEtBA,QAAS,CACLivF,eAAgB,IAEpBC,YAAa,WACT,IAAInuF,EAAOjI,KACPkH,EAAUe,EAAKf,QACfivF,EAAiBjvF,EAAQivF,eACzBE,EAAyBpuF,EAAKmE,QAAQyB,KAAK,iBAE/CsoF,EAAiBA,EAAe77E,KAAI,SAASwa,GACzC,IAAIxC,EAEJ,MAAe,eAAXwC,IACAxC,EAAY3xB,EAAM+xB,cAAcG,cAAc,CAC1CC,OAAQ5rB,EAAQ9E,KAChB2wB,SAAU,WACVrqB,MAAOxB,EAAQ8rB,aAGoB,IAArBV,EAAU9qB,OAKzB7G,EAAM+xB,cAAcG,cAAc,CACrCC,OAAQ5rB,EAAQ9E,KAChB2wB,SAAU+B,EACVpsB,MAAOxB,EAAQ4tB,GACf7B,KAAM/rB,EAAQ8rB,WARH,MAYfqjE,GACApuF,EAAKmE,QAAQ+f,YAAYkqE,EAAuBxrF,KAAK,MAGzD5C,EAAKmE,QAAQyB,KAAK,gBAAiBsoF,GACnCluF,EAAKmE,QAAQmY,SAAS4xE,EAAetrF,KAAK,OAE9CiF,KAAM,WAGF,OAFW9P,KAECoM,QAAQ,GAAGkqF,aAI/B3zF,EAAEI,OAAOpC,EAAMmP,KAAM,CACjBomF,SAAUA,IA7DlB,CAgEGp1F,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfoC,EAASJ,EAAEI,OACXmzF,EAAWv1F,EAAMmP,KAAKomF,SAGtBK,EAAa,OAEbC,EAAe,WAGfC,EAAkBC,WAClBC,EAAgBD,WAIhBE,EAAa,CACbC,IAAO,SAAUhrF,EAAS3E,GAAW,OAAO,IAAI4vF,EAAYjrF,EAAS3E,IACrE6vF,KAAQ,SAAUlrF,EAAS3E,GAAW,OAAO,IAAI8vF,EAAanrF,EAAS3E,KAGvE+vF,EAAe,CACfhpC,QAAS,GACT3b,WAAYmkD,EACZrkD,SAAUukD,EACVl7C,KAAM,qBA8BNy7C,EAAehB,EAASnzF,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS3E,GAEpBgvF,EAASnuF,GAAGI,KAAKoC,KADNvK,KACiB6L,EAAS3E,GAD1BlH,KAENm4E,YAETjxE,QAAS,CACL9E,KAAM,WACNqN,KAAM,OACNmkB,WAAY,OACZujE,KAAM,UACNC,UAAW,GACXjB,eAAgB,CAAE,OAAQ,aAAc,SAE5Che,SAAU,WACKn4E,KAENo2F,eAETA,YAAa,WACT,IAAInuF,EAAOjI,KACPkH,EAAUe,EAAKf,QACfivF,EAAiBjvF,EAAQivF,eACzBE,EAAyBpuF,EAAKmE,QAAQyB,KAAK,iBAE/CsoF,EAAiBA,EAAe77E,KAAI,SAASwa,GACzC,MAAe,eAAXA,EACOn0B,EAAM+xB,cAAcG,cAAc,CACrCC,OAAQ5rB,EAAQ9E,KAChB2wB,SAAU+B,EACVpsB,MAAOxB,EAAQ4tB,GACf7V,OAxEK,aA4EE,SAAX6V,EACOmiE,EAAa/vF,EAAQiwF,MAGzBx2F,EAAM+xB,cAAcG,cAAc,CACrCC,OAAQ5rB,EAAQ9E,KAChB2wB,SAAU+B,EACVpsB,MAAOxB,EAAQ4tB,GACf7B,KAAM/rB,EAAQ8rB,cAIlBqjE,GACApuF,EAAKmE,QAAQ+f,YAAYkqE,EAAuBpgE,QAAO,SAAU7wB,GAAK,OAAOA,IAAM6C,EAAKovF,cAAexsF,KAAK,MAGhH5C,EAAKmE,QAAQyB,KAAK,gBAAiBsoF,EAAe94E,OAAO,CAACpV,EAAKovF,cAC/DpvF,EAAKmE,QAAQmY,SAAS4xE,EAAetrF,KAAK,SAI9CmsF,EAAeE,EAAan0F,OAAO,CACnCoF,KAAM,SAAS0D,EAAS3E,GACpBgwF,EAAanvF,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,IAE7CA,QAASnE,EAAO,GAAIm0F,EAAanvF,GAAGb,QAAS,CACzC9E,KAAM,eACNk1F,KAAM,OAEVnf,SAAU,WACN,IAAIlwE,EAAOjI,KAEPu3F,EAAmBtvF,EAAK4D,QAAQ,GAAG6gB,UAAU9hB,MAAM,KAAKmrB,MAAK,SAAU3wB,GAAK,OAAOA,EAAEoyF,SAASjB,MAC9F7pE,EAAYzkB,EAAKf,QAAQowF,KAAQ,IAAMrvF,EAAKf,QAAQowF,KAAK32D,WAAW41D,GAAc,GAAKA,GAAetuF,EAAKf,QAAY,KAAK,GAEhIe,EAAKovF,WAAa3qE,EAClBzkB,EAAKmE,QAAUnE,EAAK4D,QACf0Y,SA1HD,UA2HC4H,YAAYorE,GACZhzE,SAASmI,GACTnI,SAAStc,EAAKf,QAAQkwF,WAAa,IAExCF,EAAanvF,GAAGowE,SAAS5tE,KAAKvK,SAIlC82F,EAAcI,EAAan0F,OAAO,CAClCoF,KAAM,SAAS0D,EAAS3E,GAEpB2E,EAAQ0gD,QACR2qC,EAAanvF,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,IAE7CA,QAASnE,EAAO,GAAIm0F,EAAanvF,GAAGb,QAAS,CACzC9E,KAAM,cACNk1F,KAAM,OAEVnf,SAAU,WACN,IAMIzrD,EANAzkB,EAAOjI,KACPs3F,EAAOrvF,EAAKf,QAAQowF,KACpBF,EAAYnvF,EAAKf,QAAQkwF,UAEzBG,EAAmBtvF,EAAK4D,QAAQ,GAAG6gB,UAAU9hB,MAAM,KAAKmrB,MAAK,SAAU3wB,GAAK,OAAOA,EAAEoyF,SAAShB,MAC9FiB,EAAS90F,EAAE,eAGf,IAAK20F,GAAQF,EAAW,CAEpB,IACIM,EAAgBN,EAAUjnF,MADlB,sBAERunF,IACAJ,EAAOI,EAAc,GACrBN,EAAYA,EAAU30F,QAAQi1F,EAAc,GAAI,KAIpD/2F,EAAMiI,SAAS0uF,KAEfA,EAAOA,EAAK70F,QAAQ,OAAQ,IAAIA,QAAQ,OAAO,SAAU2C,GAAI,OAAOA,EAAE,GAAG2J,iBACzEuoF,EAAO32F,EAAMgpB,GAAGguE,SAASL,IAAS32F,EAAMgpB,GAAGguE,SAAUL,EAAO,SAGhE5qE,EAAY4qE,GAAQA,EAAKl1F,KAAQ,WAAqBk1F,EAAS,KAAK,GACpErvF,EAAKovF,WAAa3qE,EAElBzkB,EAAKmE,QAAUnE,EAAK4D,QACf0Y,SAxKE,cAyKF4H,YAAYorE,GACZhzE,SAASmI,GACTnI,SAAS6yE,GAAa,IACtBt0E,KAAK,eAAe,GAErBngB,EAAEgF,cAAc2vF,KAChBG,EAAO30E,KAAK,UAAWw0E,EAAKM,SAAW,IAClC90E,KAAK,CACF80E,QAAWN,EAAKM,SAAW,GAC3B7/D,UAAa,QACb8/D,MAAS,+BAEZ/nF,KAAKwnF,EAAK/wC,SAAW,IAE1Bt+C,EAAKmE,QAAQ2tC,OAAO09C,EAAO,GAAGnB,YAGlCY,EAAanvF,GAAGowE,SAAS5tE,KAAKvK,SAItC2C,EAAEI,OAAOpC,EAAMmP,KAAM,CACjBgoF,WA1Ka,SAASjsF,EAAS3E,GAgB/B,QAfK2E,GAAWlJ,EAAEgF,cAAckE,IAAYlL,EAAMiI,SAASiD,MACvD3E,EAAU2E,EACVA,EAAUlJ,EAAE,kBAGZhC,EAAMiI,SAAS1B,KACfA,EAAU,CACNowF,KAAMpwF,IAITvG,EAAM8H,UAAUvB,EAAQxB,QACzBwB,EAAQxB,KAAO/E,EAAMC,SAASm3F,SAAWp3F,EAAMC,SAASm3F,SAAW,OAGnEp3F,EAAMuI,WAAWhC,EAAQxB,MAClBwB,EAAQxB,KAAKmG,EAAS3E,GAG5BvG,EAAMuI,WAAW0tF,EAAW1vF,EAAQxB,OAIjCkxF,EAAW1vF,EAAQxB,MAAMmG,EAAS3E,GAAU4I,OAHzC,MAsJXknF,aAAcA,EACdF,YAAaA,EACbkB,gBAAiB,SAAUtyF,GAAQ,OAAOkxF,EAAWlxF,MAGzD/E,EAAM+xB,cAAcyY,eAAe,eAAgB,WAEnDxqC,EAAM+xB,cAAcgY,eAAe,eAAgB,CAAC,CAChDvb,KAAM,OACNrW,OAAQnY,EAAM+xB,cAAcqX,WAAW1sB,OAAO,CAAC,CAAC,SAAU,MAAO,CAAC,SAAU,MAAO,CAAC,UAAW,OAAQ,CAAC,WAAY,WACrH,CACC8R,KAAM,aACNrW,OAAQ,CAAC,UAAW,YAAa,WAAY,UAAW,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,cAGpHnY,EAAM+xB,cAAcyY,eAAe,cAAe,WAElDxqC,EAAM+xB,cAAcgY,eAAe,cAAe,CAAC,CAC/Cvb,KAAM,OACNrW,OAAQnY,EAAM+xB,cAAcqX,WAAW1sB,OAAO,CAAC,CAAC,SAAU,MAAO,CAAC,SAAU,MAAO,CAAC,UAAW,OAAQ,CAAC,WAAY,WACrH,CACC8R,KAAM,aACNrW,OAAQ,CAAC,UAAW,YAAa,WAAY,UAAW,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,cA7NxH,CA+NGhY,OAAOH,MAAM+G,QACF/G,MAAd,IAw5HIg3F,EAAwBl3F,OAAOqrF,OAAO,CACtCr5D,UAAW,KACXwlE,kBA5qFoB,CACpB71F,KAAM,gBACNmkD,QAAS,sKACTqxC,QAAS,eA0qFTM,oBA3oBsB,CACtB91F,KAAM,mBACNmkD,QAAS,wVACTqxC,QAAS,eAyoBTO,gBAhwDkB,CAClB/1F,KAAM,eACNmkD,QAAS,kFACTqxC,QAAS,eA8vDTQ,gBArvDkB,CAClBh2F,KAAM,eACNmkD,QAAS,oJACTqxC,QAAS,eAmvDTS,0BA5+D4B,CAC5Bj2F,KAAM,2BACNmkD,QAAS,2IACTqxC,QAAS,eA0+DTU,uBA3gEyB,CACzBl2F,KAAM,uBACNmkD,QAAS,8IACTqxC,QAAS,eAygETW,wBAhgE0B,CAC1Bn2F,KAAM,yBACNmkD,QAAS,gGACTqxC,QAAS,eA8/DTY,qBA/hEuB,CACvBp2F,KAAM,qBACNmkD,QAAS,gGACTqxC,QAAS,eA6hETa,qBA5/DuB,CACvBr2F,KAAM,sBACNmkD,QAAS,qFACTqxC,QAAS,eA0/DTc,kBA3hEoB,CACpBt2F,KAAM,kBACNmkD,QAAS,oFACTqxC,QAAS,eAyhETe,uBA1gEyB,CACzBv2F,KAAM,wBACNmkD,QAAS,iFACTqxC,QAAS,eAwgETgB,oBAziEsB,CACtBx2F,KAAM,oBACNmkD,QAAS,mFACTqxC,QAAS,eAuiETiB,yBA1/D2B,CAC3Bz2F,KAAM,0BACNmkD,QAAS,uGACTqxC,QAAS,eAw/DTkB,sBAzhEwB,CACxB12F,KAAM,sBACNmkD,QAAS,yGACTqxC,QAAS,eAuhETmB,iBApvDmB,CACnB32F,KAAM,gBACNmkD,QAAS,6IACTqxC,QAAS,eAkvDToB,cAvwDgB,CAChB52F,KAAM,aACNmkD,QAAS,iJACTqxC,QAAS,eAqwDTqB,gBApxDkB,CAClB72F,KAAM,eACNmkD,QAAS,kFACTqxC,QAAS,eAkxDTsB,gBAjvDkB,CAClB92F,KAAM,eACNmkD,QAAS,0RACTqxC,QAAS,eA+uDTuB,eA9vDiB,CACjB/2F,KAAM,cACNmkD,QAAS,oJACTqxC,QAAS,eA4vDTwB,uBAruEyB,CACzBh3F,KAAM,wBACNmkD,QAAS,yHACTqxC,QAAS,eAmuETyB,oBAxvEsB,CACtBj3F,KAAM,oBACNmkD,QAAS,sHACTqxC,QAAS,eAsvET0B,oBAjuEsB,CACtBl3F,KAAM,qBACNmkD,QAAS,6GACTqxC,QAAS,eA+tET2B,iBApvEmB,CACnBn3F,KAAM,iBACNmkD,QAAS,yGACTqxC,QAAS,eAkvET4B,sBA/uEwB,CACxBp3F,KAAM,uBACNmkD,QAAS,sGACTqxC,QAAS,eA6uET6B,mBAlwEqB,CACrBr3F,KAAM,mBACNmkD,QAAS,yGACTqxC,QAAS,eAgwET8B,wBA7jE0B,CAC1Bt3F,KAAM,yBACNmkD,QAAS,8HACTqxC,QAAS,eA2jET+B,qBApkEuB,CACvBv3F,KAAM,qBACNmkD,QAAS,6HACTqxC,QAAS,eAkkETgC,gBAjrEkB,CAClBx3F,KAAM,gBACNmkD,QAAS,sHACTqxC,QAAS,eA+qETiC,aAtyDe,CACfz3F,KAAM,YACNmkD,QAAS,+EACTqxC,QAAS,eAoyDTkC,QA33DU,CACV13F,KAAM,MACNmkD,QAAS,sjCACTqxC,QAAS,eAy3DTmC,WAtwCa,CACb33F,KAAM,SACNmkD,QAAS,2WACTqxC,QAAS,eAowCToC,gBAj2CkB,CAClB53F,KAAM,eACNmkD,QAAS,qgBACTqxC,QAAS,eA+1CTqC,cAlyHgB,CAChB73F,KAAM,aACNmkD,QAAS,mEACTqxC,QAAS,eAgyHTsC,cA7xHgB,CAChB93F,KAAM,aACNmkD,QAAS,oEACTqxC,QAAS,eA2xHTuC,sBA90HwB,CACxB/3F,KAAM,sBACNmkD,QAAS,mEACTqxC,QAAS,eA40HTwC,eA3yHiB,CACjBh4F,KAAM,cACNmkD,QAAS,4DACTqxC,QAAS,eAyyHTyC,mBA9pGqB,CACrBj4F,KAAM,mBACNmkD,QAAS,4NACTqxC,QAAS,eA4pGT0C,wBA7oG0B,CAC1Bl4F,KAAM,yBACNmkD,QAAS,gOACTqxC,QAAS,eA2oGT2C,kBA1pGoB,CACpBn4F,KAAM,kBACNmkD,QAAS,2NACTqxC,QAAS,eAwpGT4C,uBAzoGyB,CACzBp4F,KAAM,wBACNmkD,QAAS,4NACTqxC,QAAS,eAuoGT6C,YAtzHc,CACdr4F,KAAM,WACNmkD,QAAS,sEACTqxC,QAAS,eAozHT8C,eAvwHiB,CACjBt4F,KAAM,cACNmkD,QAAS,wGACTqxC,QAAS,eAqwHT+C,oBApoHsB,CACtBv4F,KAAM,oBACNmkD,QAAS,mEACTqxC,QAAS,eAkoHTgD,eA3yFiB,CACjBx4F,KAAM,cACNmkD,QAAS,mIACTqxC,QAAS,eAyyFTiD,mBA91HqB,CACrBz4F,KAAM,mBACNmkD,QAAS,yEACTqxC,QAAS,eA41HTkD,mBA3pGqB,CACrB14F,KAAM,mBACNmkD,QAAS,kjBACTqxC,QAAS,eAypGTmD,eAtwHiB,CACjB34F,KAAM,cACNmkD,QAAS,oGACTqxC,QAAS,eAowHToD,oBAnoHsB,CACtB54F,KAAM,oBACNmkD,QAAS,oEACTqxC,QAAS,eAioHTqD,YAhtFc,CACd74F,KAAM,UACNmkD,QAAS,0PACTqxC,QAAS,eA8sFTsD,mBAvtFqB,CACrB94F,KAAM,kBACNmkD,QAAS,gRACTqxC,QAAS,eAqtFTuD,yBAprF2B,CAC3B/4F,KAAM,0BACNmkD,QAAS,kbACTqxC,QAAS,eAkrFTwD,mBA7sFqB,CACrBh5F,KAAM,kBACNmkD,QAAS,qZACTqxC,QAAS,eA2sFTyD,eAlxBiB,CACjBj5F,KAAM,cACNmkD,QAAS,8pDACTqxC,QAAS,eAgxBT0D,YAzxBc,CACdl5F,KAAM,UACNmkD,QAAS,whDACTqxC,QAAS,eAuxBT2D,SA5+EW,CACXn5F,KAAM,OACNmkD,QAAS,2PACTqxC,QAAS,eA0+ET4D,eAr7CiB,CACjBp5F,KAAM,aACNmkD,QAAS,gaACTqxC,QAAS,eAm7CT6D,eAt9BiB,CACjBr5F,KAAM,cACNmkD,QAAS,kdACTqxC,QAAS,eAo9BT8D,YA79Bc,CACdt5F,KAAM,UACNmkD,QAAS,oYACTqxC,QAAS,eA29BT+D,SAp1EW,CACXv5F,KAAM,OACNmkD,QAAS,4GACTqxC,QAAS,eAk1ETgE,SA39DW,CACXx5F,KAAM,OACNmkD,QAAS,oqBACTqxC,QAAS,eAy9DTiE,SA5/CW,CACXz5F,KAAM,OACNmkD,QAAS,gQACTqxC,QAAS,eA0/CTkE,iBA3qDmB,CACnB15F,KAAM,gBACNmkD,QAAS,gjBACTqxC,QAAS,eAyqDTmE,gBAhtGkB,CAClB35F,KAAM,eACNmkD,QAAS,0TACTqxC,QAAS,eA8sGToE,eAvqDiB,CACjB55F,KAAM,cACNmkD,QAAS,yjBACTqxC,QAAS,eAqqDTqE,2BA9oH6B,CAC7B75F,KAAM,4BACNmkD,QAAS,0JACTqxC,QAAS,eA4oHTsE,4BAzoH8B,CAC9B95F,KAAM,6BACNmkD,QAAS,0JACTqxC,QAAS,eAuoHTuE,iBAxnHmB,CACnB/5F,KAAM,gBACNmkD,QAAS,oIACTqxC,QAAS,eAsnHTwE,wBAroH0B,CAC1Bh6F,KAAM,yBACNmkD,QAAS,4JACTqxC,QAAS,eAmoHTyE,yBAhoH2B,CAC3Bj6F,KAAM,0BACNmkD,QAAS,2JACTqxC,QAAS,eA8nHT0E,gBAvqDkB,CAClBl6F,KAAM,eACNmkD,QAAS,ikBACTqxC,QAAS,eAqqDT2E,sBAtnHwB,CACxBn6F,KAAM,sBACNmkD,QAAS,oGACTqxC,QAAS,eAonHT4E,gBA/lHkB,CAClBp6F,KAAM,eACNmkD,QAAS,qFACTqxC,QAAS,eA6lHT6E,oBAlnHsB,CACtBr6F,KAAM,oBACNmkD,QAAS,kGACTqxC,QAAS,eAgnHT8E,qBA7mHuB,CACvBt6F,KAAM,qBACNmkD,QAAS,sGACTqxC,QAAS,eA2mHT+E,mBAxmHqB,CACrBv6F,KAAM,mBACNmkD,QAAS,qGACTqxC,QAAS,eAsmHTgF,cA/rDgB,CAChBx6F,KAAM,aACNmkD,QAAS,ujBACTqxC,QAAS,eA6rDTiF,eAxtGiB,CACjBz6F,KAAM,cACNmkD,QAAS,mYACTqxC,QAAS,eAstGTkF,eA/tDiB,CACjB16F,KAAM,cACNmkD,QAAS,6HACTqxC,QAAS,eA6tDTmF,4BA9sD8B,CAC9B36F,KAAM,4BACNmkD,QAAS,+iBACTqxC,QAAS,eA4sDToF,kBArtDoB,CACpB56F,KAAM,iBACNmkD,QAAS,+cACTqxC,QAAS,eAmtDTqF,0BA1sD4B,CAC5B76F,KAAM,0BACNmkD,QAAS,gkBACTqxC,QAAS,eAwsDTsF,gBA7qDkB,CAClB96F,KAAM,eACNmkD,QAAS,+rBACTqxC,QAAS,eA2qDTuF,mBA9tDqB,CACrB/6F,KAAM,kBACNmkD,QAAS,oPACTqxC,QAAS,eA4tDTwF,oBAzqDsB,CACtBh7F,KAAM,oBACNmkD,QAAS,6NACTqxC,QAAS,eAuqDTyF,cAtmHgB,CAChBj7F,KAAM,aACNmkD,QAAS,6aACTqxC,QAAS,eAomHT0F,uBA74EyB,CACzBl7F,KAAM,sBACNmkD,QAAS,0iCACTqxC,QAAS,eA24ET2F,kBAt0EoB,CACpBn7F,KAAM,iBACNmkD,QAAS,+FACTqxC,QAAS,eAo0ET4F,iBA70EmB,CACnBp7F,KAAM,gBACNmkD,QAAS,qFACTqxC,QAAS,eA20ET6F,gBAp1EkB,CAClBr7F,KAAM,gBACNmkD,QAAS,mJACTqxC,QAAS,eAk1ET8F,iBA31EmB,CACnBt7F,KAAM,iBACNmkD,QAAS,wGACTqxC,QAAS,eAy1ET+F,UA16EY,CACZv7F,KAAM,QACNmkD,QAAS,oeACTqxC,QAAS,eAw6ETgG,mBAv2CqB,CACrBx7F,KAAM,kBACNmkD,QAAS,2SACTqxC,QAAS,eAq2CTiG,WAppDa,CACbz7F,KAAM,SACNmkD,QAAS,4OACTqxC,QAAS,eAkpDTkG,eAv1FiB,CACjB17F,KAAM,aACNmkD,QAAS,iKACTqxC,QAAS,eAq1FTmG,iBA1oDmB,CACnB37F,KAAM,gBACNmkD,QAAS,g7BACTqxC,QAAS,eAwoDToG,aArrGe,CACf57F,KAAM,WACNmkD,QAAS,+RACTqxC,QAAS,eAmrGTqG,WA9/Ea,CACb77F,KAAM,SACNmkD,QAAS,gTACTqxC,QAAS,eA4/ETsG,iBA7lGmB,CACnB97F,KAAM,gBACNmkD,QAAS,2fACTqxC,QAAS,eA2lGTuG,WA1mGa,CACb/7F,KAAM,SACNmkD,QAAS,mcACTqxC,QAAS,eAwmGTwG,kBArmGoB,CACpBh8F,KAAM,iBACNmkD,QAAS,ibACTqxC,QAAS,eAmmGTyG,iBAx9HmB,CACnBj8F,KAAM,iBACNmkD,QAAS,6CACTqxC,QAAS,eAs9HT0G,mBA75HqB,CACrBl8F,KAAM,mBACNmkD,QAAS,4EACTqxC,QAAS,eA25HT2G,iBAp9HmB,CACnBn8F,KAAM,iBACNmkD,QAAS,6CACTqxC,QAAS,eAk9HT4G,kBAj+HoB,CACpBp8F,KAAM,kBACNmkD,QAAS,6CACTqxC,QAAS,eA+9HT6G,qBAp8HuB,CACvBr8F,KAAM,sBACNmkD,QAAS,qEACTqxC,QAAS,eAk8HT8G,mBA/7HqB,CACrBt8F,KAAM,oBACNmkD,QAAS,qEACTqxC,QAAS,eA67HT+G,oBA58HsB,CACtBv8F,KAAM,qBACNmkD,QAAS,qEACTqxC,QAAS,eA08HTgH,kBAn9HoB,CACpBx8F,KAAM,mBACNmkD,QAAS,qEACTqxC,QAAS,eAi9HTiH,eA5+HiB,CACjBz8F,KAAM,eACNmkD,QAAS,6CACTqxC,QAAS,eA0+HTkH,YAz/Hc,CACd18F,KAAM,WACNmkD,QAAS,yCACTqxC,QAAS,eAu/HTmH,YAhgIc,CACd38F,KAAM,WACNmkD,QAAS,yCACTqxC,QAAS,eA8/HToH,uBAn7HyB,CACzB58F,KAAM,wBACNmkD,QAAS,8EACTqxC,QAAS,eAi7HTqH,uBA96HyB,CACzB78F,KAAM,wBACNmkD,QAAS,oFACTqxC,QAAS,eA46HTsH,wBA37H0B,CAC1B98F,KAAM,yBACNmkD,QAAS,wEACTqxC,QAAS,eAy7HTuH,qBAl8HuB,CACvB/8F,KAAM,sBACNmkD,QAAS,wEACTqxC,QAAS,eAg8HTwH,YAz/Hc,CACdh9F,KAAM,WACNmkD,QAAS,yCACTqxC,QAAS,eAu/HTyH,YA5gIc,CACdj9F,KAAM,WACNmkD,QAAS,yCACTqxC,QAAS,eA0gIT0H,SAz2FW,CACXl9F,KAAM,OACNmkD,QAAS,8PACTqxC,QAAS,eAu2FT2H,eAl0HiB,CACjBn9F,KAAM,aACNmkD,QAAS,uJACTqxC,QAAS,eAg0HT4H,0BAzvC4B,CAC5Bp9F,KAAM,0BACNmkD,QAAS,0PACTqxC,QAAS,eAuvCT6H,wBApvC0B,CAC1Br9F,KAAM,wBACNmkD,QAAS,8PACTqxC,QAAS,eAkvCT8H,2BAvwC6B,CAC7Bt9F,KAAM,2BACNmkD,QAAS,qLACTqxC,QAAS,eAqwCT+H,eA9wCiB,CACjBv9F,KAAM,cACNmkD,QAAS,qLACTqxC,QAAS,eA4wCTgI,yBAnwC2B,CAC3Bx9F,KAAM,yBACNmkD,QAAS,wLACTqxC,QAAS,eAiwCTiI,mBAlnDqB,CACrBz9F,KAAM,kBACNmkD,QAAS,sqBACTqxC,QAAS,eAgnDTkI,uBArRyB,CACzB19F,KAAM,uBACNmkD,QAAS,sLACTqxC,QAAS,eAmRTmI,mBApQqB,CACrB39F,KAAM,mBACNmkD,QAAS,gGACTqxC,QAAS,eAkQToI,wBA3Q0B,CAC1B59F,KAAM,wBACNmkD,QAAS,qFACTqxC,QAAS,eAyQTqI,qBAlRuB,CACvB79F,KAAM,qBACNmkD,QAAS,gJACTqxC,QAAS,eAgRTsI,sBAjTwB,CACxB99F,KAAM,sBACNmkD,QAAS,2FACTqxC,QAAS,eA+STuI,kBAhSoB,CACpB/9F,KAAM,kBACNmkD,QAAS,kHACTqxC,QAAS,eA8RTwI,uBAvSyB,CACzBh+F,KAAM,uBACNmkD,QAAS,gHACTqxC,QAAS,eAqSTyI,oBA9SsB,CACtBj+F,KAAM,oBACNmkD,QAAS,8GACTqxC,QAAS,eA4ST0I,gBAvLkB,CAClBl+F,KAAM,eACNmkD,QAAS,8cACTqxC,QAAS,eAqLT2I,qBAlLuB,CACvBn+F,KAAM,oBACNmkD,QAAS,0KACTqxC,QAAS,eAgLT4I,oBA/IsB,CACtBp+F,KAAM,mBACNmkD,QAAS,kcACTqxC,QAAS,eA6IT6I,yBAhV2B,CAC3Br+F,KAAM,yBACNmkD,QAAS,4FACTqxC,QAAS,eA8UT8I,qBA/TuB,CACvBt+F,KAAM,qBACNmkD,QAAS,iHACTqxC,QAAS,eA6TT+I,0BAtU4B,CAC5Bv+F,KAAM,0BACNmkD,QAAS,iHACTqxC,QAAS,eAoUTgJ,uBA7UyB,CACzBx+F,KAAM,uBACNmkD,QAAS,kHACTqxC,QAAS,eA2UTiJ,kBAlOoB,CACpBz+F,KAAM,iBACNmkD,QAAS,q+BACTqxC,QAAS,eAgOTkJ,cA7QgB,CAChB1+F,KAAM,aACNmkD,QAAS,gRACTqxC,QAAS,eA2QTmJ,qBA5PuB,CACvB3+F,KAAM,qBACNmkD,QAAS,2gDACTqxC,QAAS,eA0PToJ,wBAnQ0B,CAC1B5+F,KAAM,wBACNmkD,QAAS,6HACTqxC,QAAS,eAiQTqJ,+BAlPiC,CACjC7+F,KAAM,gCACNmkD,QAAS,k+CACTqxC,QAAS,eAgPTsJ,qBA3QuB,CACvB9+F,KAAM,qBACNmkD,QAAS,iKACTqxC,QAAS,eAyQTuJ,4BA1P8B,CAC9B/+F,KAAM,6BACNmkD,QAAS,u5CACTqxC,QAAS,eAwPTwJ,cAzLgB,CAChBh/F,KAAM,aACNmkD,QAAS,iJACTqxC,QAAS,eAuLTyJ,aAhPe,CACfj/F,KAAM,YACNmkD,QAAS,8wBACTqxC,QAAS,eA8OT0J,qBAzKuB,CACvBl/F,KAAM,qBACNmkD,QAAS,uMACTqxC,QAAS,eAuKT2J,eAtLiB,CACjBn/F,KAAM,cACNmkD,QAAS,mYACTqxC,QAAS,eAoLT4J,sBAjLwB,CACxBp/F,KAAM,sBACNmkD,QAAS,wnCACTqxC,QAAS,eA+KT6J,cAtKgB,CAChBr/F,KAAM,aACNmkD,QAAS,4UACTqxC,QAAS,eAoKT8J,iBAzOmB,CACnBt/F,KAAM,gBACNmkD,QAAS,wlBACTqxC,QAAS,eAuOT+J,4BA9N8B,CAC9Bv/F,KAAM,6BACNmkD,QAAS,yiBACTqxC,QAAS,eA4NTgK,mCArOqC,CACrCx/F,KAAM,qCACNmkD,QAAS,2sCACTqxC,QAAS,eAmOTiK,8BApNgC,CAChCz/F,KAAM,+BACNmkD,QAAS,2HACTqxC,QAAS,eAkNTkK,qCA3NuC,CACvC1/F,KAAM,uCACNmkD,QAAS,0tBACTqxC,QAAS,eAyNTmK,gBAxoGkB,CAClB3/F,KAAM,eACNmkD,QAAS,uJACTqxC,QAAS,eAsoGToK,UArpGY,CACZ5/F,KAAM,QACNmkD,QAAS,kFACTqxC,QAAS,eAmpGTqK,iBAhpGmB,CACnB7/F,KAAM,gBACNmkD,QAAS,iOACTqxC,QAAS,eA8oGTsK,oBA3nFsB,CACtB9/F,KAAM,mBACNmkD,QAAS,gIACTqxC,QAAS,eAynFTuK,aAloFe,CACf//F,KAAM,WACNmkD,QAAS,4DACTqxC,QAAS,eAgoFTwK,0BAvnF4B,CAC5BhgG,KAAM,yBACNmkD,QAAS,qFACTqxC,QAAS,eAqnFTyK,iBAlnFmB,CACnBjgG,KAAM,gBACNmkD,QAAS,uNACTqxC,QAAS,eAgnFT0K,sBAjrHwB,CACxBlgG,KAAM,sBACNmkD,QAAS,8IACTqxC,QAAS,eA+qHT2K,sBA5qHwB,CACxBngG,KAAM,sBACNmkD,QAAS,iIACTqxC,QAAS,eA0qHT4K,uBAvqHyB,CACzBpgG,KAAM,uBACNmkD,QAAS,kIACTqxC,QAAS,eAqqHT6K,oBAlqHsB,CACtBrgG,KAAM,oBACNmkD,QAAS,6IACTqxC,QAAS,eAgqHT8K,gBAn8HkB,CAClBtgG,KAAM,eACNmkD,QAAS,wGACTqxC,QAAS,eAi8HT+K,gBA97HkB,CAClBvgG,KAAM,eACNmkD,QAAS,uGACTqxC,QAAS,eA47HTgL,iBA38HmB,CACnBxgG,KAAM,gBACNmkD,QAAS,wGACTqxC,QAAS,eAy8HTiL,cAl9HgB,CAChBzgG,KAAM,aACNmkD,QAAS,uGACTqxC,QAAS,eAg9HTkL,WArnFa,CACb1gG,KAAM,SACNmkD,QAAS,qGACTqxC,QAAS,eAmnFTmL,aA1+Ce,CACf3gG,KAAM,YACNmkD,QAAS,kkBACTqxC,QAAS,eAw+CToL,kBArhDoB,CACpB5gG,KAAM,iBACNmkD,QAAS,6XACTqxC,QAAS,eAmhDTqL,kBApgDoB,CACpB7gG,KAAM,iBACNmkD,QAAS,6aACTqxC,QAAS,eAkgDTsL,cA7hDgB,CAChB9gG,KAAM,YACNmkD,QAAS,sQACTqxC,QAAS,eA2hDTuL,sBAhgDwB,CACxB/gG,KAAM,qBACNmkD,QAAS,2XACTqxC,QAAS,eA8/CTwL,kBA3/CoB,CACpBhhG,KAAM,iBACNmkD,QAAS,6VACTqxC,QAAS,eAy/CTyL,qBA9gDuB,CACvBjhG,KAAM,qBACNmkD,QAAS,2XACTqxC,QAAS,eA4gDT0L,kBArhDoB,CACpBlhG,KAAM,iBACNmkD,QAAS,kZACTqxC,QAAS,eAmhDT2L,qBA9wFuB,CACvBnhG,KAAM,qBACNmkD,QAAS,wQACTqxC,QAAS,eA4wFT4L,UAnxGY,CACZphG,KAAM,QACNmkD,QAAS,uNACTqxC,QAAS,eAixGT6L,mBAptFqB,CACrBrhG,KAAM,kBACNmkD,QAAS,u1BACTqxC,QAAS,eAktFT8L,UA3pBY,CACZthG,KAAM,QACNmkD,QAAS,2QACTqxC,QAAS,eAypBT+L,SAltBW,CACXvhG,KAAM,OACNmkD,QAAS,yMACTqxC,QAAS,eAgtBTgM,gBA/vDkB,CAClBxhG,KAAM,eACNmkD,QAAS,0jBACTqxC,QAAS,eA6vDTiM,cAh6HgB,CAChBzhG,KAAM,aACNmkD,QAAS,mIACTqxC,QAAS,eA85HTkM,iBAjyCmB,CACnB1hG,KAAM,gBACNmkD,QAAS,kQACTqxC,QAAS,eA+xCTmM,YAx0Hc,CACd3hG,KAAM,UACNmkD,QAAS,iFACTqxC,QAAS,eAs0HToM,YAvmDc,CACd5hG,KAAM,UACNmkD,QAAS,wOACTqxC,QAAS,eAqmDTqM,kBAlmDoB,CACpB7hG,KAAM,iBACNmkD,QAAS,uVACTqxC,QAAS,eAgmDTsM,mBA7lDqB,CACrB9hG,KAAM,kBACNmkD,QAAS,maACTqxC,QAAS,eA2lDTuM,cAh7FgB,CAChB/hG,KAAM,YACNmkD,QAAS,8QACTqxC,QAAS,eA86FTwM,qBArkEuB,CACvBhiG,KAAM,oBACNmkD,QAAS,ygBACTqxC,QAAS,eAmkETyM,qBAhkEuB,CACvBjiG,KAAM,oBACNmkD,QAAS,0gBACTqxC,QAAS,eA8jET0M,eA3/CiB,CACjBliG,KAAM,cACNmkD,QAAS,8dACTqxC,QAAS,eAy/CT2M,SA9jDW,CACXniG,KAAM,OACNmkD,QAAS,6NACTqxC,QAAS,eA4jDT4M,SAjkFW,CACXpiG,KAAM,OACNmkD,QAAS,+JACTqxC,QAAS,eA+jFT6M,aAtsCe,CACfriG,KAAM,WACNmkD,QAAS,iPACTqxC,QAAS,eAosCT8M,mBAjsCqB,CACrBtiG,KAAM,kBACNmkD,QAAS,8vBACTqxC,QAAS,eA+rCT+M,OA9rBS,CACTviG,KAAM,KACNmkD,QAAS,smBACTqxC,QAAS,eA4rBTgN,WA3sBa,CACbxiG,KAAM,SACNmkD,QAAS,2iCACTqxC,QAAS,eAysBTiN,SAhvBW,CACXziG,KAAM,OACNmkD,QAAS,2OACTqxC,QAAS,eA8uBTkN,QA/tBU,CACV1iG,KAAM,MACNmkD,QAAS,4jCACTqxC,QAAS,eA6tBTmN,iBAhvCmB,CACnB3iG,KAAM,gBACNmkD,QAAS,+oCACTqxC,QAAS,eA8uCToN,eArpDiB,CACjB5iG,KAAM,cACNmkD,QAAS,kfACTqxC,QAAS,eAmpDTqN,QAlkDU,CACV7iG,KAAM,MACNmkD,QAAS,w5BACTqxC,QAAS,eAgkDTsN,YA/lBc,CACd9iG,KAAM,WACNmkD,QAAS,otDACTqxC,QAAS,eA6lBTuN,SAlqBW,CACX/iG,KAAM,OACNmkD,QAAS,mXACTqxC,QAAS,eAgqBTwN,aA3lBe,CACfhjG,KAAM,YACNmkD,QAAS,u/DACTqxC,QAAS,eAylBTyN,YAxsHc,CACdjjG,KAAM,WACNmkD,QAAS,46DACTqxC,QAAS,eAssHT0N,aAzde,CACfljG,KAAM,YACNmkD,QAAS,gzEACTqxC,QAAS,eAudT2N,YAp9Gc,CACdnjG,KAAM,WACNmkD,QAAS,qaACTqxC,QAAS,eAk9GT4N,YAzlBc,CACdpjG,KAAM,WACNmkD,QAAS,kkEACTqxC,QAAS,eAulBT6N,YAplBc,CACdrjG,KAAM,WACNmkD,QAAS,kqCACTqxC,QAAS,eAklBT8N,oBA/uCsB,CACtBtjG,KAAM,mBACNmkD,QAAS,8sBACTqxC,QAAS,eA6uCT+N,oBAtvCsB,CACtBvjG,KAAM,mBACNmkD,QAAS,qsBACTqxC,QAAS,eAovCTgO,8BAv0EgC,CAChCxjG,KAAM,8BACNmkD,QAAS,oNACTqxC,QAAS,eAq0ETiO,4BAhzE8B,CAC9BzjG,KAAM,4BACNmkD,QAAS,yNACTqxC,QAAS,eA8yETkO,iBA/mCmB,CACnB1jG,KAAM,gBACNmkD,QAAS,mKACTqxC,QAAS,eA6mCTmO,cAtnCgB,CAChB3jG,KAAM,YACNmkD,QAAS,8DACTqxC,QAAS,eAonCToO,kBAroBoB,CACpB5jG,KAAM,iBACNmkD,QAAS,mRACTqxC,QAAS,eAmoBTqO,YAtmCc,CACd7jG,KAAM,WACNmkD,QAAS,sWACTqxC,QAAS,eAomCTsO,SA7mCW,CACX9jG,KAAM,OACNmkD,QAAS,sNACTqxC,QAAS,eA2mCTuO,eAlxEiB,CACjB/jG,KAAM,aACNmkD,QAAS,0MACTqxC,QAAS,eAgxETwO,iBA3sHmB,CACnBhkG,KAAM,gBACNmkD,QAAS,8FACTqxC,QAAS,eAysHTyO,gBAtsHkB,CAClBjkG,KAAM,eACNmkD,QAAS,kGACTqxC,QAAS,eAosHT0O,uBAj9GyB,CACzBlkG,KAAM,uBACNmkD,QAAS,mGACTqxC,QAAS,eA+8GT2O,sBAlsHwB,CACxBnkG,KAAM,sBACNmkD,QAAS,qIACTqxC,QAAS,eAgsHT4O,QA3kEU,CACVpkG,KAAM,MACNmkD,QAAS,+jCACTqxC,QAAS,eAykET6O,WA15Fa,CACbrkG,KAAM,SACNmkD,QAAS,8CACTqxC,QAAS,eAw5FT8O,oBArrDsB,CACtBtkG,KAAM,mBACNmkD,QAAS,icACTqxC,QAAS,eAmrDT+O,WAxxCa,CACbvkG,KAAM,SACNmkD,QAAS,iwCACTqxC,QAAS,eAsxCTgP,aArkGe,CACfxkG,KAAM,WACNmkD,QAAS,iFACTqxC,QAAS,eAmkGTiP,kBAp+GoB,CACpBzkG,KAAM,iBACNmkD,QAAS,gFACTqxC,QAAS,eAk+GTkP,gBA/7HkB,CAClB1kG,KAAM,gBACNmkD,QAAS,kEACTqxC,QAAS,eA67HTmP,gBAh8BkB,CAClB3kG,KAAM,eACNmkD,QAAS,28BACTqxC,QAAS,eA87BToP,aAv8Be,CACf5kG,KAAM,WACNmkD,QAAS,ytCACTqxC,QAAS,eAq8BTqP,YApjFc,CACd7kG,KAAM,UACNmkD,QAAS,kTACTqxC,QAAS,eAkjFTsP,iBAn5EmB,CACnB9kG,KAAM,gBACNmkD,QAAS,40BACTqxC,QAAS,eAi5ETuP,kBAxsHoB,CACpB/kG,KAAM,iBACNmkD,QAAS,mXACTqxC,QAAS,eAssHTwP,cArvDgB,CAChBhlG,KAAM,aACNmkD,QAAS,sVACTqxC,QAAS,eAmvDTyP,eA9mCiB,CACjBjlG,KAAM,cACNmkD,QAAS,2cACTqxC,QAAS,eA4mCT0P,YArnCc,CACdllG,KAAM,UACNmkD,QAAS,uVACTqxC,QAAS,eAmnCT2P,gBAp+CkB,CAClBnlG,KAAM,eACNmkD,QAAS,q0BACTqxC,QAAS,eAk+CT4P,gBA38GkB,CAClBplG,KAAM,eACNmkD,QAAS,2cACTqxC,QAAS,eAy8GT6P,aAh8Ge,CACfrlG,KAAM,WACNmkD,QAAS,uVACTqxC,QAAS,eA87GT8P,iBAv8GmB,CACnBtlG,KAAM,gBACNmkD,QAAS,q0BACTqxC,QAAS,eAq8GT+P,UAp8FY,CACZvlG,KAAM,QACNmkD,QAAS,2DACTqxC,QAAS,eAk8FTgQ,sBA/pFwB,CACxBxlG,KAAM,qBACNmkD,QAAS,0NACTqxC,QAAS,eA6pFTiQ,QAlwBU,CACVzlG,KAAM,MACNmkD,QAAS,qWACTqxC,QAAS,eAgwBTkQ,WAjda,CACb1lG,KAAM,SACNmkD,QAAS,+WACTqxC,QAAS,eA+cTmQ,QAthGU,CACV3lG,KAAM,MACNmkD,QAAS,yiBACTqxC,QAAS,eAohGToQ,aAj/Ge,CACf5lG,KAAM,YACNmkD,QAAS,gvBACTqxC,QAAS,eA++GTqQ,eAx0EiB,CACjB7lG,KAAM,aACNmkD,QAAS,8aACTqxC,QAAS,eAs0ETsQ,gBA/mCkB,CAClB9lG,KAAM,eACNmkD,QAAS,gTACTqxC,QAAS,eA6mCTuQ,aAtnCe,CACf/lG,KAAM,WACNmkD,QAAS,sIACTqxC,QAAS,eAonCTwQ,YAj4Bc,CACdhmG,KAAM,WACNmkD,QAAS,kKACTqxC,QAAS,eA+3BTyQ,aAh0Be,CACfjmG,KAAM,YACNmkD,QAAS,oOACTqxC,QAAS,eA8zBT0Q,cArkBgB,CAChBlmG,KAAM,aACNmkD,QAAS,0VACTqxC,QAAS,eAmkBT2Q,YA5zBc,CACdnmG,KAAM,WACNmkD,QAAS,4KACTqxC,QAAS,eA0zBT4Q,eAz0BiB,CACjBpmG,KAAM,cACNmkD,QAAS,i2BACTqxC,QAAS,eAu0BT6Q,YA13Bc,CACdrmG,KAAM,WACNmkD,QAAS,opCACTqxC,QAAS,eAw3BT8Q,aAvjBe,CACftmG,KAAM,YACNmkD,QAAS,iXACTqxC,QAAS,eAqjBT+Q,kBAljBoB,CACpBvmG,KAAM,kBACNmkD,QAAS,uzBACTqxC,QAAS,eAgjBTgR,cA3hBgB,CAChBxmG,KAAM,aACNmkD,QAAS,oOACTqxC,QAAS,eAyhBTiR,cAx3BgB,CAChBzmG,KAAM,aACNmkD,QAAS,oOACTqxC,QAAS,eAs3BTkR,cAr1BgB,CAChB1mG,KAAM,aACNmkD,QAAS,qTACTqxC,QAAS,eAm1BTmR,eAltBiB,CACjB3mG,KAAM,cACNmkD,QAAS,mNACTqxC,QAAS,eAgtBToR,eAztBiB,CACjB5mG,KAAM,cACNmkD,QAAS,kNACTqxC,QAAS,eAutBTqR,mBA5uBqB,CACrB7mG,KAAM,kBACNmkD,QAAS,0IACTqxC,QAAS,eA0uBTsR,SAr5BW,CACX9mG,KAAM,OACNmkD,QAAS,0IACTqxC,QAAS,eAm5BTuR,cA5kBgB,CAChB/mG,KAAM,aACNmkD,QAAS,+SACTqxC,QAAS,eA0kBTwR,YAn3Bc,CACdhnG,KAAM,WACNmkD,QAAS,gPACTqxC,QAAS,eAi3BTyR,YAx2Bc,CACdjnG,KAAM,WACNmkD,QAAS,ysCACTqxC,QAAS,eAs2BT0R,YA/2Bc,CACdlnG,KAAM,WACNmkD,QAAS,ubACTqxC,QAAS,eA62BT2R,qBA1kBuB,CACvBnnG,KAAM,oBACNmkD,QAAS,2lBACTqxC,QAAS,eAwkBT4R,oBAzjBsB,CACtBpnG,KAAM,mBACNmkD,QAAS,mZACTqxC,QAAS,eAujBT6R,YAt2Bc,CACdrnG,KAAM,WACNmkD,QAAS,goCACTqxC,QAAS,eAo2BT8R,eAzuHiB,CACjBtnG,KAAM,cACNmkD,QAAS,4PACTqxC,QAAS,eAuuHT+R,YAl5Bc,CACdvnG,KAAM,WACNmkD,QAAS,mOACTqxC,QAAS,eAg5BTgS,mBAzhBqB,CACrBxnG,KAAM,kBACNmkD,QAAS,oaACTqxC,QAAS,eAuhBTiS,cAlmBgB,CAChBznG,KAAM,aACNmkD,QAAS,26BACTqxC,QAAS,eAgmBTkS,aAn4Be,CACf1nG,KAAM,YACNmkD,QAAS,kRACTqxC,QAAS,eAi4BTmS,eApsEiB,CACjB3nG,KAAM,cACNmkD,QAAS,8gBACTqxC,QAAS,eAksEToS,YA/0Bc,CACd5nG,KAAM,WACNmkD,QAAS,uYACTqxC,QAAS,eA60BTqS,eA1iBiB,CACjB7nG,KAAM,cACNmkD,QAAS,0TACTqxC,QAAS,eAwiBTsS,SA30BW,CACX9nG,KAAM,OACNmkD,QAAS,kWACTqxC,QAAS,eAy0BTuS,wBAppG0B,CAC1B/nG,KAAM,wBACNmkD,QAAS,6KACTqxC,QAAS,eAkpGTwS,mBA/oGqB,CACrBhoG,KAAM,mBACNmkD,QAAS,wMACTqxC,QAAS,eA6oGTyS,gBA9qGkB,CAClBjoG,KAAM,eACNmkD,QAAS,kJACTqxC,QAAS,eA4qGT0S,WArrGa,CACbloG,KAAM,SACNmkD,QAAS,6DACTqxC,QAAS,eAmrGT2S,gBA1qGkB,CAClBnoG,KAAM,eACNmkD,QAAS,gEACTqxC,QAAS,eAwqGT4S,uBArqGyB,CACzBpoG,KAAM,wBACNmkD,QAAS,sGACTqxC,QAAS,eAmqGT6S,wBAhqG0B,CAC1BroG,KAAM,yBACNmkD,QAAS,wGACTqxC,QAAS,eA8pGT8S,iBA7qDmB,CACnBtoG,KAAM,gBACNmkD,QAAS,4RACTqxC,QAAS,eA2qDT+S,mBAxpFqB,CACrBvoG,KAAM,kBACNmkD,QAAS,qFACTqxC,QAAS,eAspFTgT,iBAnpFmB,CACnBxoG,KAAM,gBACNmkD,QAAS,kFACTqxC,QAAS,eAipFTiT,cAx8BgB,CAChBzoG,KAAM,aACNmkD,QAAS,wNACTqxC,QAAS,eAs8BTkT,WAr9Ba,CACb1oG,KAAM,SACNmkD,QAAS,oKACTqxC,QAAS,eAm9BTmT,eA97BiB,CACjB3oG,KAAM,cACNmkD,QAAS,oXACTqxC,QAAS,eA47BToT,eAj9BiB,CACjB5oG,KAAM,cACNmkD,QAAS,0SACTqxC,QAAS,eA+8BTqT,aAt8Be,CACf7oG,KAAM,YACNmkD,QAAS,4MACTqxC,QAAS,eAo8BTsT,eA/rEiB,CACjB9oG,KAAM,cACNmkD,QAAS,2DACTqxC,QAAS,eA6rETuT,aAx+Ge,CACf/oG,KAAM,YACNmkD,QAAS,iIACTqxC,QAAS,eAs+GTwT,eAn+GiB,CACjBhpG,KAAM,cACNmkD,QAAS,uIACTqxC,QAAS,eAi+GTyT,aAp0Ce,CACfjpG,KAAM,YACNmkD,QAAS,6LACTqxC,QAAS,eAk0CT0T,oBA7rEsB,CACtBlpG,KAAM,mBACNmkD,QAAS,iHACTqxC,QAAS,eA2rET2T,gBAh4DkB,CAClBnpG,KAAM,eACNmkD,QAAS,+lBACTqxC,QAAS,eA83DT4T,SAv4DW,CACXppG,KAAM,OACNmkD,QAAS,ybACTqxC,QAAS,eAq4DT6T,oBA1kDsB,CACtBrpG,KAAM,oBACNmkD,QAAS,sUACTqxC,QAAS,eAwkDT8T,cAz3CgB,CAChBtpG,KAAM,aACNmkD,QAAS,+tDACTqxC,QAAS,eAu3CT+T,YAp3Fc,CACdvpG,KAAM,UACNmkD,QAAS,oEACTqxC,QAAS,eAk3FTgU,mBAn+EqB,CACrBxpG,KAAM,kBACNmkD,QAAS,mIACTqxC,QAAS,eAi+ETiU,eA1+EiB,CACjBzpG,KAAM,aACNmkD,QAAS,8HACTqxC,QAAS,eAw+ETkU,cAvwHgB,CAChB1pG,KAAM,aACNmkD,QAAS,+FACTqxC,QAAS,eAqwHTmU,WAlwHa,CACb3pG,KAAM,UACNmkD,QAAS,8FACTqxC,QAAS,eAgwHToU,gBA/hHkB,CAClB5pG,KAAM,eACNmkD,QAAS,0KACTqxC,QAAS,eA6hHTqU,gBA1hHkB,CAClB7pG,KAAM,eACNmkD,QAAS,mkBACTqxC,QAAS,eAwhHTsU,SA3mGW,CACX9pG,KAAM,OACNmkD,QAAS,ovBACTqxC,QAAS,eAymGTuU,UAtmGY,CACZ/pG,KAAM,QACNmkD,QAAS,k9CACTqxC,QAAS,eAomGTwU,UAvxCY,CACZhqG,KAAM,QACNmkD,QAAS,8gBACTqxC,QAAS,eAqxCTyU,cA9jDgB,CAChBjqG,KAAM,aACNmkD,QAAS,okCACTqxC,QAAS,eA4jDT0U,iBA/xCmB,CACnBlqG,KAAM,gBACNmkD,QAAS,uoBACTqxC,QAAS,eA6xCT2U,gBA1jDkB,CAClBnqG,KAAM,eACNmkD,QAAS,2+BACTqxC,QAAS,eAwjDT4U,cAzqCgB,CAChBpqG,KAAM,aACNmkD,QAAS,4wDACTqxC,QAAS,eAuqCT6U,WAhrCa,CACbrqG,KAAM,SACNmkD,QAAS,00DACTqxC,QAAS,eA8qCT8U,kBA/pCoB,CACpBtqG,KAAM,kBACNmkD,QAAS,+zDACTqxC,QAAS,eA6pCT+U,eAtqCiB,CACjBvqG,KAAM,cACNmkD,QAAS,02DACTqxC,QAAS,eAoqCTgV,UAzhBY,CACZxqG,KAAM,QACNmkD,QAAS,sKACTqxC,QAAS,eAuhBTiV,cA5mFgB,CAChBzqG,KAAM,YACNmkD,QAAS,qgCACTqxC,QAAS,eA0mFTkV,mBArgGqB,CACrB1qG,KAAM,mBACNmkD,QAAS,yGACTqxC,QAAS,eAmgGTmV,SAphIW,CACX3qG,KAAM,OACNmkD,QAAS,iOACTqxC,QAAS,eAkhIToV,eA/gIiB,CACjB5qG,KAAM,cACNmkD,QAAS,8IACTqxC,QAAS,eA6gITqV,aAt3De,CACf7qG,KAAM,YACNmkD,QAAS,+/DACTqxC,QAAS,eAo3DTsV,oBAvsBsB,CACtB9qG,KAAM,mBACNmkD,QAAS,yLACTqxC,QAAS,eAqsBTuV,uBA1wByB,CACzB/qG,KAAM,uBACNmkD,QAAS,6HACTqxC,QAAS,eAwwBTwV,uBAjxByB,CACzBhrG,KAAM,uBACNmkD,QAAS,6HACTqxC,QAAS,eA+wBTyV,UA9gIY,CACZjrG,KAAM,QACNmkD,QAAS,0GACTqxC,QAAS,eA4gIT0V,iBA/uBmB,CACnBlrG,KAAM,gBACNmkD,QAAS,6HACTqxC,QAAS,eA6uBT2V,OA9qES,CACTnrG,KAAM,KACNmkD,QAAS,24BACTqxC,QAAS,eA4qET4V,OAzqES,CACTprG,KAAM,KACNmkD,QAAS,glCACTqxC,QAAS,eAuqET6V,OApqES,CACTrrG,KAAM,KACNmkD,QAAS,w1CACTqxC,QAAS,eAkqET8V,OA/pES,CACTtrG,KAAM,KACNmkD,QAAS,+tBACTqxC,QAAS,eA6pET+V,OA1pES,CACTvrG,KAAM,KACNmkD,QAAS,0lCACTqxC,QAAS,eAwpETgW,OArpES,CACTxrG,KAAM,KACNmkD,QAAS,0wCACTqxC,QAAS,eAmpETiW,SAl9FW,CACXzrG,KAAM,OACNmkD,QAAS,+yBACTqxC,QAAS,eAg9FTkW,eA3gIiB,CACjB1rG,KAAM,cACNmkD,QAAS,0DACTqxC,QAAS,eAygITmW,oBA5xHsB,CACtB3rG,KAAM,oBACNmkD,QAAS,gDACTqxC,QAAS,eA0xHToW,iBAvxHmB,CACnB5rG,KAAM,gBACNmkD,QAAS,qHACTqxC,QAAS,eAqxHTqW,OAl4FS,CACT7rG,KAAM,KACNmkD,QAAS,moBACTqxC,QAAS,eAg4FTsW,UAn1FY,CACZ9rG,KAAM,QACNmkD,QAAS,sLACTqxC,QAAS,eAi1FTuW,iBA11FmB,CACnB/rG,KAAM,gBACNmkD,QAAS,wbACTqxC,QAAS,eAw1FTwW,SAn8HW,CACXhsG,KAAM,OACNmkD,QAAS,sYACTqxC,QAAS,eAi8HTyW,mBAxjEqB,CACrBjsG,KAAM,kBACNmkD,QAAS,2HACTqxC,QAAS,eAsjET0W,UAn4BY,CACZlsG,KAAM,QACNmkD,QAAS,yOACTqxC,QAAS,eAi4BT2W,kBAprGoB,CACpBnsG,KAAM,iBACNmkD,QAAS,iIACTqxC,QAAS,eAkrGT4W,oBA/qGsB,CACtBpsG,KAAM,oBACNmkD,QAAS,oIACTqxC,QAAS,eA6qGT6W,0BAl3C4B,CAC5BrsG,KAAM,0BACNmkD,QAAS,gbACTqxC,QAAS,eAg3CT8W,aAnyDe,CACftsG,KAAM,YACNmkD,QAAS,6SACTqxC,QAAS,eAiyDT+W,cA9xDgB,CAChBvsG,KAAM,aACNmkD,QAAS,qgBACTqxC,QAAS,eA4xDTgX,gBA7vFkB,CAClBxsG,KAAM,eACNmkD,QAAS,+RACTqxC,QAAS,eA2vFTiX,UApwFY,CACZzsG,KAAM,QACNmkD,QAAS,uQACTqxC,QAAS,eAkwFTkX,mBA3xDqB,CACrB1sG,KAAM,mBACNmkD,QAAS,6ZACTqxC,QAAS,eAyxDTmX,gBA9uFkB,CAClB3sG,KAAM,eACNmkD,QAAS,oKACTqxC,QAAS,eA4uFToX,WAjyHa,CACb5sG,KAAM,SACNmkD,QAAS,2cACTqxC,QAAS,eA+xHTqX,WA1kBa,CACb7sG,KAAM,SACNmkD,QAAS,2NACTqxC,QAAS,eAwkBTsX,UA3xCY,CACZ9sG,KAAM,QACNmkD,QAAS,yJACTqxC,QAAS,eAyxCTuX,8BAp+EgC,CAChC/sG,KAAM,8BACNmkD,QAAS,sNACTqxC,QAAS,eAk+ETwX,4BA78E8B,CAC9BhtG,KAAM,4BACNmkD,QAAS,uNACTqxC,QAAS,eA28ETyX,WA5pEa,CACbjtG,KAAM,SACNmkD,QAAS,6LACTqxC,QAAS,eA0pET0X,eAryFiB,CACjBltG,KAAM,cACNmkD,QAAS,+OACTqxC,QAAS,eAmyFT2X,cAlsBgB,CAChBntG,KAAM,YACNmkD,QAAS,yHACTqxC,QAAS,eAgsBT4X,iBAvoEmB,CACnBptG,KAAM,gBACNmkD,QAAS,gHACTqxC,QAAS,eAqoET6X,iBA9oEmB,CACnBrtG,KAAM,gBACNmkD,QAAS,+GACTqxC,QAAS,eA4oET8X,cArpEgB,CAChBttG,KAAM,aACNmkD,QAAS,6GACTqxC,QAAS,eAmpET+X,iBAtqFmB,CACnBvtG,KAAM,gBACNmkD,QAAS,8IACTqxC,QAAS,eAoqFTgY,WArxEa,CACbxtG,KAAM,SACNmkD,QAAS,0GACTqxC,QAAS,eAmxETiY,OAx4BS,CACTztG,KAAM,KACNmkD,QAAS,sgBACTqxC,QAAS,eAs4BTkY,4BAzyE8B,CAC9B1tG,KAAM,6BACNmkD,QAAS,mGACTqxC,QAAS,eAuyETmY,yBAx0E2B,CAC3B3tG,KAAM,yBACNmkD,QAAS,wGACTqxC,QAAS,eAs0EToY,6BAjzE+B,CAC/B5tG,KAAM,8BACNmkD,QAAS,mGACTqxC,QAAS,eA+yETqY,0BAh1E4B,CAC5B7tG,KAAM,0BACNmkD,QAAS,wGACTqxC,QAAS,eA80ETsY,4BA/zE8B,CAC9B9tG,KAAM,6BACNmkD,QAAS,oFACTqxC,QAAS,eA6zETuY,yBA91E2B,CAC3B/tG,KAAM,yBACNmkD,QAAS,mFACTqxC,QAAS,eA41ETwY,yBA3zE2B,CAC3BhuG,KAAM,0BACNmkD,QAAS,oFACTqxC,QAAS,eAyzETyY,sBA11EwB,CACxBjuG,KAAM,sBACNmkD,QAAS,qFACTqxC,QAAS,eAw1ET0Y,2BAz0E6B,CAC7BluG,KAAM,4BACNmkD,QAAS,kFACTqxC,QAAS,eAu0ET2Y,wBAx2E0B,CAC1BnuG,KAAM,wBACNmkD,QAAS,iFACTqxC,QAAS,eAs2ET4Y,kBAnmGoB,CACpBpuG,KAAM,kBACNmkD,QAAS,uDACTqxC,QAAS,eAimGT6Y,kBA9lGoB,CACpBruG,KAAM,kBACNmkD,QAAS,0CACTqxC,QAAS,eA4lGT8Y,kBAzlGoB,CACpBtuG,KAAM,kBACNmkD,QAAS,qGACTqxC,QAAS,eAulGT+Y,WA5sGa,CACbvuG,KAAM,SACNmkD,QAAS,kIACTqxC,QAAS,eA0sGTgZ,eA7iIiB,CACjBxuG,KAAM,gBACNmkD,QAAS,yHACTqxC,QAAS,eA2iITiZ,eAxiIiB,CACjBzuG,KAAM,gBACNmkD,QAAS,wGACTqxC,QAAS,eAsiITkZ,WArjIa,CACb1uG,KAAM,SACNmkD,QAAS,mJACTqxC,QAAS,eAmjITmZ,qBApiIuB,CACvB3uG,KAAM,sBACNmkD,QAAS,iGACTqxC,QAAS,eAkiIToZ,kBA/hIoB,CACpB5uG,KAAM,iBACNmkD,QAAS,8HACTqxC,QAAS,eA6hITqZ,gBA9kGkB,CAClB7uG,KAAM,gBACNmkD,QAAS,0GACTqxC,QAAS,eA4kGTsZ,gBA7zHkB,CAClB9uG,KAAM,eACNmkD,QAAS,2IACTqxC,QAAS,eA2zHTuZ,cAxoIgB,CAChB/uG,KAAM,aACNmkD,QAAS,wEACTqxC,QAAS,eAsoITwZ,eA7nIiB,CACjBhvG,KAAM,eACNmkD,QAAS,wFACTqxC,QAAS,eA2nITyZ,YApoIc,CACdjvG,KAAM,WACNmkD,QAAS,iEACTqxC,QAAS,eAkoIT0Z,eA3zHiB,CACjBlvG,KAAM,cACNmkD,QAAS,yIACTqxC,QAAS,eAyzHT2Z,YAtpDc,CACdnvG,KAAM,WACNmkD,QAAS,ufACTqxC,QAAS,eAopDT4Z,SAn8GW,CACXpvG,KAAM,OACNmkD,QAAS,gaACTqxC,QAAS,eAi8GT6Z,iBAx7GmB,CACnBrvG,KAAM,gBACNmkD,QAAS,4ZACTqxC,QAAS,eAs7GT8Z,gBAnuCkB,CAClBtvG,KAAM,eACNmkD,QAAS,yVACTqxC,QAAS,eAiuCT+Z,aA1uCe,CACfvvG,KAAM,WACNmkD,QAAS,mOACTqxC,QAAS,eAwuCTga,iBA3zHmB,CACnBxvG,KAAM,iBACNmkD,QAAS,8kCACTqxC,QAAS,eAyzHTia,mBAtzHqB,CACrBzvG,KAAM,mBACNmkD,QAAS,4zCACTqxC,QAAS,eAozHTka,gBAjtEkB,CAClB1vG,KAAM,eACNmkD,QAAS,6rCACTqxC,QAAS,eA+sETma,iBAlzHmB,CACnB3vG,KAAM,iBACNmkD,QAAS,qXACTqxC,QAAS,eAgzHToa,mBA/nBqB,CACrB5vG,KAAM,mBACNmkD,QAAS,irBACTqxC,QAAS,eA6nBTqa,mBA9yHqB,CACrB7vG,KAAM,mBACNmkD,QAAS,irBACTqxC,QAAS,eA4yHTsa,mBAvoBqB,CACrB9vG,KAAM,mBACNmkD,QAAS,qXACTqxC,QAAS,eAqoBTua,kBAhtEoB,CACpB/vG,KAAM,iBACNmkD,QAAS,uSACTqxC,QAAS,eA8sETwa,yBA3yH2B,CAC3BhwG,KAAM,yBACNmkD,QAAS,ueACTqxC,QAAS,eAyyHTya,wBAtyH0B,CAC1BjwG,KAAM,wBACNmkD,QAAS,8IACTqxC,QAAS,eAoyHT0a,SAz7GW,CACXlwG,KAAM,OACNmkD,QAAS,sSACTqxC,QAAS,eAu7GT2a,UA5wGY,CACZnwG,KAAM,QACNmkD,QAAS,+EACTqxC,QAAS,eA0wGT4a,WAvwGa,CACbpwG,KAAM,SACNmkD,QAAS,8EACTqxC,QAAS,eAqwGT6a,+BAhiFiC,CACjCrwG,KAAM,gCACNmkD,QAAS,+FACTqxC,QAAS,eA8hFT8a,mBAviFqB,CACrBtwG,KAAM,mBACNmkD,QAAS,uMACTqxC,QAAS,eAqiFT+a,iBApjFmB,CACnBvwG,KAAM,iBACNmkD,QAAS,+TACTqxC,QAAS,eAkjFTgb,kBA/iFoB,CACpBxwG,KAAM,kBACNmkD,QAAS,0MACTqxC,QAAS,eA6iFTib,6BA5gF+B,CAC/BzwG,KAAM,8BACNmkD,QAAS,gGACTqxC,QAAS,eA0gFTkb,cA33CgB,CAChB1wG,KAAM,aACNmkD,QAAS,gLACTqxC,QAAS,eAy3CTmb,oBAt3CsB,CACtB3wG,KAAM,oBACNmkD,QAAS,wPACTqxC,QAAS,eAo3CTob,cA3yHgB,CAChB5wG,KAAM,aACNmkD,QAAS,8GACTqxC,QAAS,eAyyHTqb,aAtyHe,CACf7wG,KAAM,YACNmkD,QAAS,4GACTqxC,QAAS,eAoyHTsb,iBAj0DmB,CACnB9wG,KAAM,gBACNmkD,QAAS,4WACTqxC,QAAS,eA+zDTub,SA1iIW,CACX/wG,KAAM,OACNmkD,QAAS,kFACTqxC,QAAS,eAwiITwb,cAnyHgB,CAChBhxG,KAAM,aACNmkD,QAAS,iIACTqxC,QAAS,eAiyHTyb,aA9xHe,CACfjxG,KAAM,YACNmkD,QAAS,+HACTqxC,QAAS,eA4xHT0b,gBAz2GkB,CAClBlxG,KAAM,eACNmkD,QAAS,6HACTqxC,QAAS,eAu2GT2b,UAt3GY,CACZnxG,KAAM,QACNmkD,QAAS,sCACTqxC,QAAS,eAo3GT4b,iBAj3GmB,CACnBpxG,KAAM,gBACNmkD,QAAS,sMACTqxC,QAAS,eA+2GT6b,YA1pGc,CACdrxG,KAAM,WACNmkD,QAAS,wCACTqxC,QAAS,eAwpGT8b,WA7yFa,CACbtxG,KAAM,SACNmkD,QAAS,uIACTqxC,QAAS,eA2yFT+b,mBAtiIqB,CACrBvxG,KAAM,kBACNmkD,QAAS,oOACTqxC,QAAS,eAoiITgc,iBA7iImB,CACnBxxG,KAAM,gBACNmkD,QAAS,sOACTqxC,QAAS,eA2iITic,eA58FiB,CACjBzxG,KAAM,cACNmkD,QAAS,0NACTqxC,QAAS,eA08FTkc,eA3vCiB,CACjB1xG,KAAM,cACNmkD,QAAS,khBACTqxC,QAAS,eAyvCTmc,YAlwCc,CACd3xG,KAAM,UACNmkD,QAAS,8bACTqxC,QAAS,eAgwCToc,kBA76HoB,CACpB5xG,KAAM,iBACNmkD,QAAS,kjBACTqxC,QAAS,eA26HTqc,aApoGe,CACf7xG,KAAM,YACNmkD,QAAS,2HACTqxC,QAAS,eAkoGTsc,YAnuEc,CACd9xG,KAAM,UACNmkD,QAAS,6LACTqxC,QAAS,eAiuETuc,kBAtyHoB,CACpB/xG,KAAM,iBACNmkD,QAAS,mHACTqxC,QAAS,eAoyHTwc,iBAjyHmB,CACnBhyG,KAAM,gBACNmkD,QAAS,kHACTqxC,QAAS,eA+xHTyc,YA1iIc,CACdjyG,KAAM,UACNmkD,QAAS,uEACTqxC,QAAS,eAwiIT0c,kBA7xHoB,CACpBlyG,KAAM,iBACNmkD,QAAS,kOACTqxC,QAAS,eA2xHT2c,YAtwHc,CACdnyG,KAAM,UACNmkD,QAAS,mOACTqxC,QAAS,eAowHT4c,gBAzxHkB,CAClBpyG,KAAM,eACNmkD,QAAS,mOACTqxC,QAAS,eAuxHT6c,iBApxHmB,CACnBryG,KAAM,gBACNmkD,QAAS,mOACTqxC,QAAS,eAkxHT8c,eA/wHiB,CACjBtyG,KAAM,cACNmkD,QAAS,oOACTqxC,QAAS,eA6wHT+c,sBAt3BwB,CACxBvyG,KAAM,sBACNmkD,QAAS,4MACTqxC,QAAS,eAo3BTgd,sBA73BwB,CACxBxyG,KAAM,sBACNmkD,QAAS,4MACTqxC,QAAS,eA23BTid,YAtxFc,CACdzyG,KAAM,UACNmkD,QAAS,m/BACTqxC,QAAS,eAoxFTkd,eA7jDiB,CACjB1yG,KAAM,cACNmkD,QAAS,gRACTqxC,QAAS,eA2jDTmd,eAprHiB,CACjB3yG,KAAM,cACNmkD,QAAS,oWACTqxC,QAAS,eAkrHTod,iBAjgHmB,CACnB5yG,KAAM,gBACNmkD,QAAS,0cACTqxC,QAAS,eA+/GTqd,cAxgHgB,CAChB7yG,KAAM,YACNmkD,QAAS,2RACTqxC,QAAS,eAsgHTsd,iBAz9DmB,CACnB9yG,KAAM,gBACNmkD,QAAS,8IACTqxC,QAAS,eAu9DTud,qBAl0BuB,CACvB/yG,KAAM,oBACNmkD,QAAS,2QACTqxC,QAAS,eAg0BTwd,sBA7zBwB,CACxBhzG,KAAM,sBACNmkD,QAAS,sWACTqxC,QAAS,eA2zBTyd,mBAxzBqB,CACrBjzG,KAAM,kBACNmkD,QAAS,qpBACTqxC,QAAS,eAszBT0d,qBAnzBuB,CACvBlzG,KAAM,oBACNmkD,QAAS,k7BACTqxC,QAAS,eAizBT2d,oBA9yBsB,CACtBnzG,KAAM,mBACNmkD,QAAS,6uCACTqxC,QAAS,eA4yBT4d,wBAnvB0B,CAC1BpzG,KAAM,wBACNmkD,QAAS,+uBACTqxC,QAAS,eAivBT6d,eA52BiB,CACjBrzG,KAAM,aACNmkD,QAAS,qkBACTqxC,QAAS,eA02BT8d,sBA/uBwB,CACxBtzG,KAAM,qBACNmkD,QAAS,mNACTqxC,QAAS,eA6uBT+d,aAx+De,CACfvzG,KAAM,WACNmkD,QAAS,mZACTqxC,QAAS,eAs+DTge,UAviGY,CACZxzG,KAAM,QACNmkD,QAAS,0DACTqxC,QAAS,eAqiGTie,YAh+Fc,CACdzzG,KAAM,WACNmkD,QAAS,2DACTqxC,QAAS,eA89FTke,WAjiHa,CACb1zG,KAAM,SACNmkD,QAAS,gOACTqxC,QAAS,eA+hHTme,YAtgDc,CACd3zG,KAAM,UACNmkD,QAAS,wVACTqxC,QAAS,eAogDToe,WA3nFa,CACb5zG,KAAM,SACNmkD,QAAS,2cACTqxC,QAAS,eAynFTqe,QAl6CU,CACV7zG,KAAM,MACNmkD,QAAS,sIACTqxC,QAAS,eAg6CTse,iBAnxCmB,CACnB9zG,KAAM,gBACNmkD,QAAS,gsBACTqxC,QAAS,eAixCTue,cA1xCgB,CAChB/zG,KAAM,YACNmkD,QAAS,imBACTqxC,QAAS,eAwxCTwe,SArjGW,CACXh0G,KAAM,OACNmkD,QAAS,uCACTqxC,QAAS,eAmjGTye,WA9+Fa,CACbj0G,KAAM,UACNmkD,QAAS,0CACTqxC,QAAS,eA4+FT0e,aA3/Fe,CACfl0G,KAAM,WACNmkD,QAAS,sLACTqxC,QAAS,eAy/FT2e,eA56GiB,CACjBn0G,KAAM,cACNmkD,QAAS,uJACTqxC,QAAS,eA06GT4e,SAz7GW,CACXp0G,KAAM,OACNmkD,QAAS,qEACTqxC,QAAS,eAu7GT6e,gBAp7GkB,CAClBr0G,KAAM,eACNmkD,QAAS,iOACTqxC,QAAS,eAk7GT8e,WAjtGa,CACbt0G,KAAM,UACNmkD,QAAS,mEACTqxC,QAAS,eA+sGT+e,YA1lGc,CACdv0G,KAAM,UACNmkD,QAAS,yFACTqxC,QAAS,eAwlGTgf,mBAryHqB,CACrBx0G,KAAM,kBACNmkD,QAAS,+EACTqxC,QAAS,eAmyHTif,iBAhyHmB,CACnBz0G,KAAM,gBACNmkD,QAAS,gFACTqxC,QAAS,eA8xHTkf,kBA3xHoB,CACpB10G,KAAM,iBACNmkD,QAAS,iFACTqxC,QAAS,eAyxHTmf,gBAtxHkB,CAClB30G,KAAM,eACNmkD,QAAS,kFACTqxC,QAAS,eAoxHTof,UAzjHY,CACZ50G,KAAM,QACNmkD,QAAS,+VACTqxC,QAAS,eAujHTqf,gBAtvDkB,CAClB70G,KAAM,eACNmkD,QAAS,6tIACTqxC,QAAS,eAovDTsf,WA/nGa,CACb90G,KAAM,UACNmkD,QAAS,oxCACTqxC,QAAS,eA6nGTuf,kBAtoGoB,CACpB/0G,KAAM,kBACNmkD,QAAS,46BACTqxC,QAAS,eAooGTwf,kBA3nGoB,CACpBh1G,KAAM,kBACNmkD,QAAS,gpBACTqxC,QAAS,eAynGTyf,mBA95FqB,CACrBj1G,KAAM,kBACNmkD,QAAS,gYACTqxC,QAAS,eA45FT0f,uBAj7FyB,CACzBl1G,KAAM,sBACNmkD,QAAS,gRACTqxC,QAAS,eA+6FT2f,gBAx7FkB,CAClBn1G,KAAM,cACNmkD,QAAS,2KACTqxC,QAAS,eAs7FT4f,cA7xCgB,CAChBp1G,KAAM,aACNmkD,QAAS,kzHACTqxC,QAAS,eA2xCT6f,WApyCa,CACbr1G,KAAM,SACNmkD,QAAS,yzHACTqxC,QAAS,eAkyCT8f,SAznHW,CACXt1G,KAAM,OACNmkD,QAAS,yGACTqxC,QAAS,eAunHT+f,sBA5xHwB,CACxBv1G,KAAM,qBACNmkD,QAAS,6OACTqxC,QAAS,eA0xHTggB,4BAjmF8B,CAC9Bx1G,KAAM,4BACNmkD,QAAS,+VACTqxC,QAAS,eA+lFTigB,0BA1kF4B,CAC5Bz1G,KAAM,0BACNmkD,QAAS,yVACTqxC,QAAS,eAwkFTkgB,YA3nIc,CACd11G,KAAM,UACNmkD,QAAS,mFACTqxC,QAAS,eAynITmgB,eA1xHiB,CACjB31G,KAAM,cACNmkD,QAAS,6NACTqxC,QAAS,eAwxHTogB,kBArxHoB,CACpB51G,KAAM,iBACNmkD,QAAS,oLACTqxC,QAAS,eAmxHTqgB,kBAhxHoB,CACpB71G,KAAM,iBACNmkD,QAAS,kJACTqxC,QAAS,eA8wHTsgB,WAjkGa,CACb91G,KAAM,SACNmkD,QAAS,oEACTqxC,QAAS,eA+jGTugB,sBA5wHwB,CACxB/1G,KAAM,sBACNmkD,QAAS,4fACTqxC,QAAS,eA0wHTwgB,WAr2Fa,CACbh2G,KAAM,SACNmkD,QAAS,k9BACTqxC,QAAS,eAm2FTygB,eA11FiB,CACjBj2G,KAAM,cACNmkD,QAAS,wIACTqxC,QAAS,eAw1FT0gB,gBAj2FkB,CAClBl2G,KAAM,eACNmkD,QAAS,wIACTqxC,QAAS,eA+1FT2gB,iBA9wFmB,CACnBn2G,KAAM,gBACNmkD,QAAS,0JACTqxC,QAAS,eA4wFT4gB,cAjnDgB,CAChBp2G,KAAM,aACNmkD,QAAS,qQACTqxC,QAAS,eA+mDT6gB,SA5oIW,CACXr2G,KAAM,OACNmkD,QAAS,kFACTqxC,QAAS,eA0oIT8gB,WA/sCa,CACbt2G,KAAM,UACNmkD,QAAS,oZACTqxC,QAAS,eA6sCT+gB,QAttCU,CACVv2G,KAAM,MACNmkD,QAAS,mSACTqxC,QAAS,eAotCTghB,SA3lHW,CACXx2G,KAAM,OACNmkD,QAAS,uMACTqxC,QAAS,eAylHTihB,WA9xGa,CACbz2G,KAAM,SACNmkD,QAAS,8RACTqxC,QAAS,eA4xGTkhB,cA3kEgB,CAChB12G,KAAM,aACNmkD,QAAS,+uBACTqxC,QAAS,eAykETmhB,cAhkEgB,CAChB32G,KAAM,aACNmkD,QAAS,gSACTqxC,QAAS,eA8jETohB,sBA7mGwB,CACxB52G,KAAM,sBACNmkD,QAAS,qOACTqxC,QAAS,eA2mGTqhB,cA90FgB,CAChB72G,KAAM,aACNmkD,QAAS,8DACTqxC,QAAS,eA40FTshB,WA/xFa,CACb92G,KAAM,SACNmkD,QAAS,6+BACTqxC,QAAS,eA6xFTuhB,UAx8CY,CACZ/2G,KAAM,QACNmkD,QAAS,0ZACTqxC,QAAS,eAs8CTwhB,YAvyFc,CACdh3G,KAAM,UACNmkD,QAAS,8EACTqxC,QAAS,eAqyFTyhB,cAhpGgB,CAChBj3G,KAAM,YACNmkD,QAAS,+dACTqxC,QAAS,eA8oGT0hB,gBA36DkB,CAClBl3G,KAAM,cACNmkD,QAAS,2bACTqxC,QAAS,eAy6DT2hB,eAtqFiB,CACjBn3G,KAAM,eACNmkD,QAAS,sHACTqxC,QAAS,eAoqFT4hB,YAz0Fc,CACdp3G,KAAM,UACNmkD,QAAS,4YACTqxC,QAAS,eAu0FT6hB,QAhgCU,CACVr3G,KAAM,MACNmkD,QAAS,4JACTqxC,QAAS,eA8/BT8hB,aA3lFe,CACft3G,KAAM,YACNmkD,QAAS,0PACTqxC,QAAS,eAylFT+hB,oBAtlFsB,CACtBv3G,KAAM,oBACNmkD,QAAS,8TACTqxC,QAAS,eAolFTgiB,oBAjlFsB,CACtBx3G,KAAM,oBACNmkD,QAAS,mSACTqxC,QAAS,eA+kFTiiB,YA18Gc,CACdz3G,KAAM,WACNmkD,QAAS,+EACTqxC,QAAS,eAw8GTkiB,iBAz7GmB,CACnB13G,KAAM,iBACNmkD,QAAS,4DACTqxC,QAAS,eAu7GTmiB,cAh8GgB,CAChB33G,KAAM,aACNmkD,QAAS,6JACTqxC,QAAS,eA87GToiB,aAv8Ge,CACf53G,KAAM,YACNmkD,QAAS,8EACTqxC,QAAS,eAq8GTqiB,kBAt7GoB,CACpB73G,KAAM,kBACNmkD,QAAS,yDACTqxC,QAAS,eAo7GTsiB,iBAznDmB,CACnB93G,KAAM,gBACNmkD,QAAS,6qDACTqxC,QAAS,eAunDTuiB,SAxgGW,CACX/3G,KAAM,OACNmkD,QAAS,0HACTqxC,QAAS,eAsgGTwiB,gBA/gGkB,CAClBh4G,KAAM,eACNmkD,QAAS,4OACTqxC,QAAS,eA6gGTyiB,UA9oGY,CACZj4G,KAAM,QACNmkD,QAAS,uPACTqxC,QAAS,eA4oGT0iB,SA3mGW,CACXl4G,KAAM,OACNmkD,QAAS,qCACTqxC,QAAS,eAymGT2iB,WApiGa,CACbn4G,KAAM,UACNmkD,QAAS,uCACTqxC,QAAS,eAkiGT4iB,kBA75EoB,CACpBp4G,KAAM,gBACNmkD,QAAS,qtDACTqxC,QAAS,eA25ET6iB,uBAx1DyB,CACzBr4G,KAAM,uBACNmkD,QAAS,ieACTqxC,QAAS,eAs1DT8iB,mBAn1DqB,CACrBt4G,KAAM,mBACNmkD,QAAS,s+EACTqxC,QAAS,eAi1DT+iB,sBA90DwB,CACxBv4G,KAAM,sBACNmkD,QAAS,0jBACTqxC,QAAS,eA40DTgjB,sBAz0DwB,CACxBx4G,KAAM,sBACNmkD,QAAS,8xCACTqxC,QAAS,eAu0DTijB,wBAp0D0B,CAC1Bz4G,KAAM,wBACNmkD,QAAS,6cACTqxC,QAAS,eAk0DTkjB,mBAv0CqB,CACrB14G,KAAM,mBACNmkD,QAAS,qdACTqxC,QAAS,eAq0CTmjB,gBA90CkB,CAClB34G,KAAM,eACNmkD,QAAS,4SACTqxC,QAAS,eA40CTojB,cArgCgB,CAChB54G,KAAM,YACNmkD,QAAS,idACTqxC,QAAS,eAmgCTqjB,cAh6EgB,CAChB74G,KAAM,YACNmkD,QAAS,6tBACTqxC,QAAS,eA85ETsjB,QA3mDU,CACV94G,KAAM,MACNmkD,QAAS,kGACTqxC,QAAS,eAymDTujB,cA55EgB,CAChB/4G,KAAM,YACNmkD,QAAS,8rBACTqxC,QAAS,eA05ETwjB,WAvmDa,CACbh5G,KAAM,SACNmkD,QAAS,6TACTqxC,QAAS,eAqmDTyjB,aAtxDe,CACfj5G,KAAM,YACNmkD,QAAS,wQACTqxC,QAAS,eAoxDT0jB,2BAztE6B,CAC7Bl5G,KAAM,4BACNmkD,QAAS,8HACTqxC,QAAS,eAutET2jB,yBAhuE2B,CAC3Bn5G,KAAM,0BACNmkD,QAAS,wHACTqxC,QAAS,eA8tET4jB,0BArtE4B,CAC5Bp5G,KAAM,2BACNmkD,QAAS,2HACTqxC,QAAS,eAmtET6jB,2BA9uE6B,CAC7Br5G,KAAM,4BACNmkD,QAAS,8HACTqxC,QAAS,eA4uET8jB,yBArvE2B,CAC3Bt5G,KAAM,0BACNmkD,QAAS,wHACTqxC,QAAS,eAmvET+jB,0BA1uE4B,CAC5Bv5G,KAAM,2BACNmkD,QAAS,2HACTqxC,QAAS,eAwuETgkB,qBAntEuB,CACvBx5G,KAAM,qBACNmkD,QAAS,qRACTqxC,QAAS,eAitETikB,wBApwE0B,CAC1Bz5G,KAAM,yBACNmkD,QAAS,4HACTqxC,QAAS,eAkwETkkB,sBA3wEwB,CACxB15G,KAAM,uBACNmkD,QAAS,sHACTqxC,QAAS,eAywETmkB,uBAhwEyB,CACzB35G,KAAM,wBACNmkD,QAAS,yHACTqxC,QAAS,eA8vETokB,cAjjDgB,CAChB55G,KAAM,aACNmkD,QAAS,+OACTqxC,QAAS,eA+iDTqkB,oBAhuDsB,CACtB75G,KAAM,oBACNmkD,QAAS,0RACTqxC,QAAS,eA8tDTskB,cAjxDgB,CAChB95G,KAAM,aACNmkD,QAAS,6MACTqxC,QAAS,eA+wDTukB,wBA5wD0B,CAC1B/5G,KAAM,wBACNmkD,QAAS,+fACTqxC,QAAS,eA0wDTwkB,sBA/uDwB,CACxBh6G,KAAM,sBACNmkD,QAAS,8XACTqxC,QAAS,eA6uDTykB,sBAhjDwB,CACxBj6G,KAAM,sBACNmkD,QAAS,6PACTqxC,QAAS,eA8iDT0kB,0BAzwD4B,CAC5Bl6G,KAAM,2BACNmkD,QAAS,0LACTqxC,QAAS,eAuwDT2kB,2BApwD6B,CAC7Bn6G,KAAM,4BACNmkD,QAAS,0LACTqxC,QAAS,eAkwDT4kB,gBA7iDkB,CAClBp6G,KAAM,eACNmkD,QAAS,gPACTqxC,QAAS,eA2iDT6kB,gBAluDkB,CAClBr6G,KAAM,eACNmkD,QAAS,ySACTqxC,QAAS,eAguDT8kB,UAryDY,CACZt6G,KAAM,QACNmkD,QAAS,6NACTqxC,QAAS,eAmyDT+kB,wBA5zB0B,CAC1Bv6G,KAAM,wBACNmkD,QAAS,+LACTqxC,QAAS,eA0zBTglB,qBAvzBuB,CACvBx6G,KAAM,qBACNmkD,QAAS,yLACTqxC,QAAS,eAqzBTilB,uBAp0ByB,CACzBz6G,KAAM,uBACNmkD,QAAS,iMACTqxC,QAAS,eAk0BTklB,oBAnyDsB,CACtB16G,KAAM,mBACNmkD,QAAS,0cACTqxC,QAAS,eAiyDTmlB,mBApvDqB,CACrB36G,KAAM,mBACNmkD,QAAS,qYACTqxC,QAAS,eAkvDTolB,mBA/iDqB,CACrB56G,KAAM,mBACNmkD,QAAS,6PACTqxC,QAAS,eA6iDTqlB,wBAxwD0B,CAC1B76G,KAAM,yBACNmkD,QAAS,8LACTqxC,QAAS,eAswDTslB,wBAnwD0B,CAC1B96G,KAAM,yBACNmkD,QAAS,wLACTqxC,QAAS,eAiwDTulB,iBAxsDmB,CACnB/6G,KAAM,gBACNmkD,QAAS,+NACTqxC,QAAS,eAssDTwlB,gBAvlDkB,CAClBh7G,KAAM,eACNmkD,QAAS,kvBACTqxC,QAAS,eAqlDTylB,mBAl2CqB,CACrBj7G,KAAM,oBACNmkD,QAAS,mjBACTqxC,QAAS,eAg2CT0lB,gBAz2CkB,CAClBl7G,KAAM,gBACNmkD,QAAS,4eACTqxC,QAAS,eAu2CT2lB,oBAllEsB,CACtBn7G,KAAM,mBACNmkD,QAAS,k4CACTqxC,QAAS,eAglET4lB,aA/uHe,CACfp7G,KAAM,YACNmkD,QAAS,oGACTqxC,QAAS,eA6uHT6lB,iBAlwHmB,CACnBr7G,KAAM,gBACNmkD,QAAS,0HACTqxC,QAAS,eAgwHT8lB,iBAvvHmB,CACnBt7G,KAAM,gBACNmkD,QAAS,qIACTqxC,QAAS,eAqvHT+lB,kBA9vHoB,CACpBv7G,KAAM,kBACNmkD,QAAS,0jBACTqxC,QAAS,eA4vHTgmB,aArzEe,CACfx7G,KAAM,YACNmkD,QAAS,iKACTqxC,QAAS,eAmzETimB,aA5nEe,CACfz7G,KAAM,WACNmkD,QAAS,kxEACTqxC,QAAS,eA0nETkmB,kBAjnEoB,CACpB17G,KAAM,iBACNmkD,QAAS,o7CACTqxC,QAAS,eA+mETmmB,YAxnEc,CACd37G,KAAM,UACNmkD,QAAS,kjCACTqxC,QAAS,eAsnETomB,mBAzxFqB,CACrB57G,KAAM,kBACNmkD,QAAS,uGACTqxC,QAAS,eAuxFTqmB,mBApxFqB,CACrB77G,KAAM,kBACNmkD,QAAS,kGACTqxC,QAAS,eAkxFTsmB,oBAjyFsB,CACtB97G,KAAM,mBACNmkD,QAAS,qGACTqxC,QAAS,eA+xFTumB,iBAxyFmB,CACnB/7G,KAAM,gBACNmkD,QAAS,mGACTqxC,QAAS,eAsyFTwmB,eAngCiB,CACjBh8G,KAAM,cACNmkD,QAAS,yOACTqxC,QAAS,eAigCTymB,oBAt7BsB,CACtBj8G,KAAM,oBACNmkD,QAAS,8PACTqxC,QAAS,eAo7BT0mB,yBA3qD2B,CAC3Bl8G,KAAM,0BACNmkD,QAAS,wXACTqxC,QAAS,eAyqDT2mB,iBApsDmB,CACnBn8G,KAAM,gBACNmkD,QAAS,4jBACTqxC,QAAS,eAksDT4mB,0BArkE4B,CAC5Bp8G,KAAM,2BACNmkD,QAAS,4jBACTqxC,QAAS,eAmkET6mB,uBA5kEyB,CACzBr8G,KAAM,uBACNmkD,QAAS,seACTqxC,QAAS,eA0kET8mB,uBAnlEyB,CACzBt8G,KAAM,uBACNmkD,QAAS,seACTqxC,QAAS,eAilET+mB,iBA1lEmB,CACnBv8G,KAAM,gBACNmkD,QAAS,4sBACTqxC,QAAS,eAwlETgnB,0BA7jE4B,CAC5Bx8G,KAAM,2BACNmkD,QAAS,6pBACTqxC,QAAS,eA2jETinB,uBApkEyB,CACzBz8G,KAAM,uBACNmkD,QAAS,0kBACTqxC,QAAS,eAkkETknB,iBAn5FmB,CACnB18G,KAAM,eACNmkD,QAAS,8GACTqxC,QAAS,eAi5FTmnB,UA5qHY,CACZ38G,KAAM,QACNmkD,QAAS,4QACTqxC,QAAS,eA0qHTonB,cAj3CgB,CAChB58G,KAAM,aACNmkD,QAAS,sgBACTqxC,QAAS,eA+2CTqnB,WAx3Ca,CACb78G,KAAM,SACNmkD,QAAS,qXACTqxC,QAAS,eAs3CTsnB,eAv2CiB,CACjB98G,KAAM,cACNmkD,QAAS,4oBACTqxC,QAAS,eAq2CTunB,YA92Cc,CACd/8G,KAAM,UACNmkD,QAAS,kjBACTqxC,QAAS,eA42CTwnB,cAvgFgB,CAChBh9G,KAAM,YACNmkD,QAAS,iNACTqxC,QAAS,eAqgFTynB,SA1vHW,CACXj9G,KAAM,OACNmkD,QAAS,4GACTqxC,QAAS,eAwvHT0nB,YAzyIc,CACdl9G,KAAM,UACNmkD,QAAS,4GACTqxC,QAAS,eAuyIT2nB,WA5pHa,CACbn9G,KAAM,SACNmkD,QAAS,grBACTqxC,QAAS,eA0pHT4nB,mBAjpHqB,CACrBp9G,KAAM,kBACNmkD,QAAS,mrBACTqxC,QAAS,eA+oHT6nB,WAtoHa,CACbr9G,KAAM,SACNmkD,QAAS,8RACTqxC,QAAS,eAooHT8nB,UArjDY,CACZt9G,KAAM,QACNmkD,QAAS,qIACTqxC,QAAS,eAmjDT+nB,YA9tGc,CACdv9G,KAAM,UACNmkD,QAAS,iXACTqxC,QAAS,eA4tGTgoB,WA/8Ga,CACbx9G,KAAM,SACNmkD,QAAS,8EACTqxC,QAAS,eA68GTioB,SA5iDW,CACXz9G,KAAM,OACNmkD,QAAS,iLACTqxC,QAAS,eA0iDTkoB,mBAzsDqB,CACrB19G,KAAM,kBACNmkD,QAAS,oqBACTqxC,QAAS,eAusDTmoB,oBAhtDsB,CACtB39G,KAAM,mBACNmkD,QAAS,qlDACTqxC,QAAS,eA8sDTooB,OA7mCS,CACT59G,KAAM,KACNmkD,QAAS,8kBACTqxC,QAAS,eA2mCTqoB,WA1nCa,CACb79G,KAAM,SACNmkD,QAAS,q3BACTqxC,QAAS,eAwnCTsoB,kBA3gEoB,CACpB99G,KAAM,iBACNmkD,QAAS,4HACTqxC,QAAS,eAygETuoB,aA5zCe,CACf/9G,KAAM,YACNmkD,QAAS,40BACTqxC,QAAS,eA0zCTwoB,UAn0CY,CACZh+G,KAAM,QACNmkD,QAAS,6sBACTqxC,QAAS,eAi0CTyoB,eAxrGiB,CACjBj+G,KAAM,cACNmkD,QAAS,0GACTqxC,QAAS,eAsrGT0oB,eA7qGiB,CACjBl+G,KAAM,cACNmkD,QAAS,qLACTqxC,QAAS,eA2qGT2oB,aAprGe,CACfn+G,KAAM,YACNmkD,QAAS,+QACTqxC,QAAS,eAkrGT4oB,kBAz0HoB,CACpBp+G,KAAM,iBACNmkD,QAAS,kJACTqxC,QAAS,eAu0HT6oB,oBAp0HsB,CACtBr+G,KAAM,mBACNmkD,QAAS,sFACTqxC,QAAS,eAk0HT8oB,cA74HgB,CAChBt+G,KAAM,aACNmkD,QAAS,ylCACTqxC,QAAS,eA24HT+oB,WAt8Ga,CACbv+G,KAAM,SACNmkD,QAAS,8DACTqxC,QAAS,eAo8GTgpB,mBA37GqB,CACrBx+G,KAAM,kBACNmkD,QAAS,uCACTqxC,QAAS,eAy7GTipB,kBAl8GoB,CACpBz+G,KAAM,iBACNmkD,QAAS,6FACTqxC,QAAS,eAg8GTkpB,WA36Ga,CACb1+G,KAAM,SACNmkD,QAAS,8ZACTqxC,QAAS,eAy6GTmpB,YAtmHc,CACd3+G,KAAM,WACNmkD,QAAS,wOACTqxC,QAAS,eAomHTopB,MAnnHQ,CACR5+G,KAAM,IACNmkD,QAAS,+IACTqxC,QAAS,eAinHTqpB,aA9mHe,CACf7+G,KAAM,YACNmkD,QAAS,iTACTqxC,QAAS,eA4mHTspB,cA33CgB,CAChB9+G,KAAM,aACNmkD,QAAS,6zBACTqxC,QAAS,eAy3CTupB,WAl4Ca,CACb/+G,KAAM,SACNmkD,QAAS,uwBACTqxC,QAAS,eAg4CTwpB,eAj0CiB,CACjBh/G,KAAM,cACNmkD,QAAS,mtBACTqxC,QAAS,eA+zCTypB,YAx0Cc,CACdj/G,KAAM,UACNmkD,QAAS,scACTqxC,QAAS,eAs0CT0pB,mBAjiGqB,CACrBl/G,KAAM,mBACNmkD,QAAS,2WACTqxC,QAAS,eA+hGT2pB,gBA5hGkB,CAClBn/G,KAAM,gBACNmkD,QAAS,yXACTqxC,QAAS,eA0hGT4pB,WAn6Ga,CACbp/G,KAAM,UACNmkD,QAAS,gVACTqxC,QAAS,eAi6GT6pB,YA95Gc,CACdr/G,KAAM,WACNmkD,QAAS,sTACTqxC,QAAS,kBAs6Gb,SAAUj1F,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfmP,EAAOnP,EAAMmP,KAEb4gB,EADK/vB,EAAMgpB,GACC+G,OACZ3tB,EAASJ,EAAEI,OAEX2+G,EAAWhxF,EAAO3tB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KACX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,UAE5BA,EAAQ9E,KACf6F,EAAK05G,MAAQ,IAAI7xG,EAAKknF,aAAanrF,EAASlJ,EAAEI,OAAO,GAAImE,IACzDe,EAAK4D,QAAU5D,EAAKmE,QAAUnE,EAAK05G,MAAM91G,QAEzClL,EAAM6zB,OAAOvsB,IAEjBf,QAASnE,EAAO,GAAI+M,EAAKknF,aAAajvF,GAAGb,QAAS,CAC9C9E,KAAM,aAEVmvB,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAEhCe,EAAK05G,MAAQ,IAAI7xG,EAAKknF,aAAa/uF,EAAK4D,QAASlJ,EAAEI,OAAO,GAAIkF,EAAKf,aAIvE06G,EAAUlxF,EAAO3tB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KACX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,UAE5BA,EAAQ9E,KACf6F,EAAK05G,MAAQ,IAAI7xG,EAAKgnF,YAAYjrF,EAASlJ,EAAEI,OAAO,GAAImE,IACxDe,EAAK4D,QAAU5D,EAAKmE,QAAUnE,EAAK05G,MAAM91G,QAEzClL,EAAM6zB,OAAOvsB,IAEjBf,QAASnE,EAAO,GAAI+M,EAAKgnF,YAAY/uF,GAAGb,QAAS,CAC7C9E,KAAM,YAEVmvB,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAE5BA,EAAQowF,MACRt3F,KAAK6L,QAAQiE,KAAK,IAGtB7H,EAAK05G,MAAQ,IAAI7xG,EAAKgnF,YAAY7uF,EAAK4D,QAASlJ,EAAEI,OAAO,GAAIkF,EAAKf,aAI1EvG,EAAMgpB,GAAGqN,OAAO0qF,GAChB/gH,EAAMgpB,GAAGqN,OAAO4qF,GAEhBjhH,EAAMwuC,YAAY,WAAY,OAC9BxuC,EAAMgpB,GAAGguE,SAAWA,EACpBh3F,EAAMgpB,GAAG2tE,KAAOxnF,EAAKgoF,WA9DzB,CA+DGh3F,OAAOH,MAAM+G,QACF/G,OAgBd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBogE,EAAQnwF,EAAMgpB,GAAGmnE,MACjB5nF,EAAavI,EAAMuI,WACnBvB,EAAgBhF,EAAEgF,cAClB5E,EAASJ,EAAEI,OACX8+G,EAAWl/G,EAAEyM,UACbgf,EAAaztB,EAAMytB,WACnB0zF,EAAe,aACfC,EAAc,mBACdjsC,EAAO,OACPC,EAAO,OACPnrB,EAAQ,QACRo3D,EAAc,cACdn3D,EAAe,eACfo3D,EAAgB,kBAChBC,EAAW,SAAUjzF,GACb,IAAIkzF,EAAWlzF,EAAIkzF,SACfC,EAAUnzF,EAAImzF,QACd/iF,EAAMpQ,EAAIoQ,IAEd,MAAO,iDAAuD8iF,EAAmC,GAAxB,uBAAlE,2CAELA,EAAmI,GAAvH,iCAAsCxhH,EAAMgpB,GAAG2tE,KAAK30F,EAAE,kCAAmC,CAAE20F,KAAM,MAAU,WACxH8qB,EAAW,mCAAsC/iF,EAAM,WAAe,IAC3E,UAEJgjF,EAAiB1hH,EAAMkP,UAAS,SAAUof,GAGlC,MAAO,wDAFOA,EAAIs3B,QAEiE,IAA5E,mEAKfsqC,EAAK,gBACLyxB,EAAY,CACRv2F,OAAQ,CACJ6sB,OAAQ,gBACR9rC,SAAU,cAEdsX,IAAK,CACDw0B,OAAQ,aACR9rC,SAAU,iBAEd+e,KAAM,CACF+sB,OAAQ,cACR9rC,SAAU,eACVmkF,UAAW,YAEfnlE,MAAO,CACH8sB,OAAQ,eACR9rC,SAAU,cACVmkF,UAAW,YAEf1T,OAAQ,CACJzwE,SAAU,gBACV8rC,OAAQ,kBAGhB2pE,EAAU,CACNn+F,IAAO,SACP2H,OAAU,MACVF,KAAQ,QACRC,MAAS,OACTyxD,OAAU,UAEdilC,EAAa,CACTz2F,OAAQ,IACR3H,IAAK,IACLyH,KAAM,IACNC,MAAO,IACPyxD,OAAQ,KAEZklC,EAAa,CACTnwE,WAAc,CAAEv1B,OAAQ,MAAOtN,KAAM,eACrC2iC,SAAY,CAAEr1B,OAAQ,OAAQtN,KAAM,eAM5C,SAASizG,EAAa72G,GAClB,KAAOA,EAAQrE,SACPm7G,EAAgC92G,IAGpCA,EAAUA,EAAQM,SAI1B,SAASw2G,EAAgC92G,GACrC,IAAIkyC,EAAQlyC,EAAQgC,KAAKlN,EAAM6qB,GAAK,SACpC,GAAIuyB,EAGA,OAFAlyC,EAAQiX,KAAK,QAASi7B,GACtBlyC,EAAQqmB,WAAWvxB,EAAM6qB,GAAK,UACvB,EAIf,SAASo3F,EAA6B/2G,GAClC,IAAIkyC,EAAQlyC,EAAQiX,KAAK,SACzB,GAAIi7B,EAGA,OAFAlyC,EAAQgC,KAAKlN,EAAM6qB,GAAK,QAASuyB,GACjClyC,EAAQiX,KAAK,QAAS,KACf,EAIf,SAAS+/F,EAAoBh3G,GACzB,KAAOA,EAAQrE,SAAWqE,EAAQU,GAAG,UAC7Bq2G,EAA6B/2G,IAGjCA,EAAUA,EAAQM,SAI1B,IAAI22G,EAAcpyF,EAAO3tB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpB,IACI89B,EADA/8B,EAAOjI,KAGX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC89B,EAAO/8B,EAAKf,QAAQ4F,SAASqD,MAAM,cAAgB,aAAe,WAElElI,EAAK+pB,WAAaywF,EAAWz9E,GAEzBrkC,EAAM4C,QAAQkb,OAASze,KAAK+iH,wBAC5B96G,EAAK4D,QAAQod,GAAGtoB,EAAM4C,QAAQ2lB,UAAY2nE,EAAI5oF,EAAKf,QAAQ+uB,OAAQhuB,EAAK+6G,QAAQx5G,KAAKvB,IAGzFA,EAAK4D,QAAQod,GAAGhhB,EAAKf,QAAQ+7G,OAASpyB,EAAI5oF,EAAKf,QAAQ+uB,OAAQhuB,EAAK+6G,QAAQx5G,KAAKvB,IAErD,UAAxBA,EAAKf,QAAQ+7G,QACbh7G,EAAK4D,QAAQod,GAAG,UAAY4nE,EAAI5oF,EAAKf,QAAQ+uB,OAAQhuB,EAAKi7G,SAAS15G,KAAKvB,KAIhFf,QAAS,CACL9E,KAAM,cACN6zB,OAAQ,GACRlZ,OAAQ,EACRomG,UAAW,IACXC,UAAW,IACXhB,SAAS,EACTt1G,SAAU,SACVm2G,OAAQ,aACR3xB,UAAW,CACPC,KAAM,CACF/qE,QAAS,UACTE,SAAU,GAEd4+B,MAAO,CACH5+B,SAAU,GACVvZ,MAAM,KAKlBnL,QAAS,WACL,IAAIkxF,EAAQlzF,KAAKkzF,MAEbA,IACAA,EAAMrnF,QAAQotB,IAAI43D,GAClBqC,EAAMlxF,WAGVm4B,aAAan6B,KAAKolC,SAElB1U,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,OAG3BmN,KAAM,WACEnN,KAAKkzF,OACLlzF,KAAKkzF,MAAM5tC,SAInBp4C,KAAM,SAAS5F,GACXA,EAASA,GAAUtH,KAAK6L,QAExB7L,KAAKqjH,WAAW/7G,GAChBtH,KAAKsjH,MAAMh8G,IAGfA,OAAQ,WACJ,OAAItH,KAAKkzF,MACElzF,KAAKkzF,MAAMhsF,QAAQiqF,OAEvB,MAGX+xB,SAAU,SAASv+G,GACf,IAAIg5E,EAAgBh7E,EAAEgC,EAAEg5E,eAEpBh5E,EAAEwiC,SAAWxmC,EAAMupB,KAAKK,OACxBvqB,KAAKsjH,MAAM3lC,IAInBqlC,QAAS,SAASr+G,GACd,IAAIsD,EAAOjI,KAEP29E,EAAgBh7E,EAAEgC,EAAEg5E,eACpB11E,EAAKs7G,oBAAsBt7G,EAAK86G,uBAChC96G,EAAKq7G,MAAM3lC,GACJ11E,EAAKu7G,mBACZv7G,EAAKo7G,WAAW1lC,GAChB11E,EAAKq7G,MAAM3lC,KAEXxjD,aAAalyB,EAAKm9B,SAElBn9B,EAAKm9B,QAAUrM,YAAW,WACtB9wB,EAAKq7G,MAAM3lC,KACZ11E,EAAKf,QAAQi8G,aAIxBK,gBAAiB,WACb,OAAOxjH,KAAKkH,QAAQ+7G,QAAUjjH,KAAKkH,QAAQ+7G,OAAO9yG,MAAM,UAG5D4yG,qBAAsB,WAClB,OAAO/iH,KAAKkH,QAAQ+7G,QAAUjjH,KAAKkH,QAAQ+7G,OAAO9yG,MAAM,eAG5DozG,gBAAiB,WACb,OAAOvjH,KAAKkH,QAAQ+7G,QAAUjjH,KAAKkH,QAAQ+7G,OAAO9yG,MAAM,UAG5DszG,iBAAkB,WACd,IAAIx7G,EAAOjI,KACP8M,EAAW7E,EAAKf,QAAQ4F,SACxBklB,EAAa/pB,EAAK+pB,WAClBjV,EAASiV,EAAWjV,OACpBm2E,EAAQjrF,EAAKirF,MACb/B,EAAS+B,EAAMhsF,QAAQiqF,OACvB4D,EAAepyF,EAAEwuF,GAAQp0E,SACzB2mG,EAAgB/gH,EAAEuwF,EAAMrnF,SAASkR,SACjCsH,EAAWm+F,EAAWtvB,EAAMT,QAAU8vB,EAAQz1G,GAAYA,GAC1D62G,EAAe5uB,EAAah4E,GAAU2mG,EAAc3mG,GAAWpa,EAAEwuF,GAAQn/D,EAAWviB,QAAU,EAElGxH,EAAK27G,QAAQ92G,EAAU7E,EAAKf,QAAQ6V,QAEpC9U,EAAK47G,MACD13F,YAAY,mDACZ5H,SAAS,aAAeF,GACxBzX,IAAImQ,EAAQ4mG,IAGpBC,QAAS,SAAS92G,EAAU62G,EAAcG,GACtC,IAAI77G,EAAOjI,KACP+jH,EAAwB,OAAZj3G,GAAiC,QAAZA,EACjCk3G,EAAY/7G,EAAKirF,MAAMT,QACvBx+C,EAAa8vE,GAAaC,IAAgBD,IAAcC,EAAa,GAAK,EAC1EC,EAAaF,EAAY,UAAYj3G,EAAW,UAAYy1G,EAAQz1G,GACpEiQ,GAAW+mG,GAAcnjH,EAAMqL,YAAY/D,EAAK47G,QAAU,EAAKF,EAEnE17G,EAAKirF,MAAM9mF,QAAQQ,IAAIq3G,EAAYlnG,EAASk3B,EAAY,OAG5DiwE,gBAAiB,WACb,IAAIj8G,EAAOjI,KACPmxF,EAASlpF,EAAKirF,MAAMhsF,QAAQiqF,OAC5BgzB,EAAShzB,EAAO,GAAGxhE,IAAM1nB,EAAK4D,QAAQ,GAAG8jB,IAAMhvB,EAAM8uB,OACrD20F,EAAc,GAEdjzB,EAAOruE,KAAKi/F,IACZqC,EAAYziH,KAAKwvF,EAAOruE,KAAKi/F,IAG7BoC,IACAC,EAAYziH,KAAKwiH,EAASrC,GAC1B3wB,EAAOruE,KAAKi/F,EAAaqC,EAAYv5G,KAAK,MAC1C5C,EAAKirF,MAAMrnF,QAAQiX,KAAK,KAAMqhG,EAASrC,KAK/CuC,mBAAoB,SAAS/8G,GACzB,IAEIg9G,EAAWC,EAAYC,EAFvBC,EAAYzkH,KAAKkzF,MAAMrnF,QAAQiX,KAAK,MACpC4hG,EAAqBp9G,EAAOwb,KAAKi/F,GAGhC2C,KAILJ,EAAYI,EAAmB95G,MAAM,OAEpB05G,EAAU98G,OAAS,IAChC+8G,EAAaD,EAAUruF,QAAO,SAAS/G,GACnC,OAAOA,IAAQu1F,MAInBF,GAAcA,EAAW/8G,OAAS,GAClCg9G,EAAuBD,EAAW15G,KAAK,KACvCvD,EAAOwb,KAAKi/F,EAAayC,IAEzBl9G,EAAOgqB,WAAWywF,KAI1B4C,WAAY,WACH3kH,KAAKkzF,QAIVlzF,KAAKkzF,MAAM9B,UAAW,EACtBpxF,KAAKkzF,MAAM3B,WAGnB5wF,EAAMgpB,GAAGqN,OAAO8rF,GAEhB,IAAI8B,EAAU9B,EAAY//G,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS3E,GACpB,IACI89B,EADA/8B,EAAOjI,KAGX8iH,EAAY/6G,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAExC89B,EAAO/8B,EAAKf,QAAQ4F,SAASqD,MAAM,cAAgB,aAAe,WAElElI,EAAK+pB,WAAaywF,EAAWz9E,GAE7B/8B,EAAK48G,wBAA0B58G,EAAK68G,iBAAiBt7G,KAAKvB,IAEtDjI,KAAK+iH,wBAA0B/iH,KAAKujH,oBACpCt7G,EAAK4D,QAAQod,GAAG,aAAe4nE,EAAI5oF,EAAKf,QAAQ+uB,OAAQhuB,EAAK88G,YAAYv7G,KAAKvB,IAG9EjI,KAAKkH,QAAQi7G,UAAYniH,KAAK+iH,wBAC9B96G,EAAK4D,QAAQod,GAAG,aAAe4nE,EAAI5oF,EAAKf,QAAQ+uB,OAAQhuB,EAAK+8G,YAAYx7G,KAAKvB,IAG9EjI,KAAKkH,QAAQi7G,UAAYniH,KAAKwjH,mBAC9Bv7G,EAAK4D,QAAQod,GAAG,OAAS4nE,EAAI5oF,EAAKf,QAAQ+uB,OAAQhuB,EAAKg9G,MAAMz7G,KAAKvB,IAGlEtH,EAAM4C,QAAQkb,OACdxW,EAAK4D,QAAQod,GAAGtoB,EAAM4C,QAAQ2lB,UAAY2nE,EAAI5oF,EAAKf,QAAQ+uB,OAAQhuB,EAAK88G,YAAYv7G,KAAKvB,KAIjGf,QAAS,CACL9E,KAAM,UACN6zB,OAAQ,GACRswB,QAhRa,SAAS5hD,GACtB,OAAOA,EAAE2C,OAAOuG,KAAKlN,EAAM6qB,GAAK,UAgRhC23F,UAAW,IACXf,SAAS,EACTrlG,OAAQ,EACRjQ,SAAU,SACVm2G,OAAQ,aACRd,UAAU,EACVn1G,MAAO,KACPL,OAAQ,KACR2kF,UAAW,CACPC,KAAM,CACF/qE,QAAS,UACTE,SAAU,GAEd4+B,MAAO,CACH5+B,SAAU,GACVvZ,MAAM,KAKlB9C,OAAQ,CAAEyrE,EAAMC,EAAMisC,EAAap3D,EAAOC,GAE1Ck6D,YAAa,SAASpgH,GAClBk+G,EAAoBlgH,EAAEgC,EAAEg5E,iBAG5B0lC,WAAY,SAAS/7G,GACjBu7G,EAAoBv7G,IAGxB49G,eAAgB,SAAS59G,GACrB,IAII69G,EAJAl9G,EAAOjI,KACPolH,EAAiBn9G,EAAKf,QAAQq/C,QAC9B16C,EAAU5D,EAAKs+C,QACf8+D,EAAap9G,EAAKf,QAAQi+G,OAG1Bx9G,EAAcy9G,IAAmBA,EAAe/2F,KAC1C,WAAYpmB,EAAKf,UACnBm+G,GAAcj3F,EAAWg3F,EAAe/2F,MAG5CpmB,EAAKmC,QAAQygD,EAAc,CAAE3jD,QAASk+G,EAAgB99G,OAAQA,IAEzD+9G,GAODx5G,EAAQsB,QAERg4G,EAASt5G,EAAQkqB,KAAK,IAAMksF,GAAe,IAIvCkD,EAAOp+G,IAAMq+G,EAAe/2F,KAAO82F,EAAOp+G,IAE1C8E,EAAQiE,KAAKuyG,EAAe,CAAE97D,QAAS6+D,KAG3Cv5G,EAAQkqB,KAAK,IAAMksF,GACdhpF,IAAI,OAAS43D,GACb5nE,GAAG,OAAS4nE,GAAI,WACb5oF,EAAKmC,QAAQ43G,GACbn2G,EAAQqB,YArBhBrB,EAAQ0gD,QACR5rD,EAAMgpB,GAAG0M,SAASxqB,GAAS,GAG3B5D,EAAKq9G,aAAaF,KAoBfA,GAAkBl8G,EAAWk8G,IACpCA,EAAiBA,EAAe,CAAE96G,OAAQtK,KAAMsH,OAAQA,IACxDuE,EAAQiE,KAAKs1G,GAAkB,KAE/Bv5G,EAAQiE,KAAKs1G,GAGjBn9G,EAAK4oB,QAAQ,WAAW,WACpB,MAAO,CAAEsD,SAAUtoB,OAI3By5G,aAAc,SAASp+G,GACnB,IAAIe,EAAOjI,KAeX0H,OAAOogD,KAAK/kD,EAAO,CACf2C,KAAM,MACNq/C,SAAU,OACVpnB,OAAO,EACP5P,MAAO,SAASszC,EAAKjZ,GACjBznD,EAAMgpB,GAAG0M,SAASpuB,EAAKs+C,SAAS,GAEhCt+C,EAAKmC,QAAQwgD,EAAO,CAAExC,OAAQA,EAAQiZ,IAAKA,KAE/CtZ,QAvBY,SAASl6C,GACjBlN,EAAMgpB,GAAG0M,SAASpuB,EAAKs+C,SAAS,GAEhCt+C,EAAKs+C,QAAQz2C,KAAKjC,GAEdlN,EAAMuL,aAAajE,EAAKirF,MAAMrnF,SAAWlL,EAAMuL,aAAajE,EAAKirF,MAAM9mF,WACvEnE,EAAKirF,MAAM9mF,QAAQQ,IAAI,SAAUjM,EAAMuL,aAAajE,EAAKirF,MAAMrnF,SAAW,MAC1E5D,EAAKirF,MAAMpmF,WACX7E,EAAKw7G,oBAGTx7G,EAAKmC,QAAQ43G,IAYEx4G,KAAKvB,IACzBf,KAGP49G,iBAAkB,SAASngH,GACnBA,EAAEwiC,UAAYxmC,EAAMupB,KAAKM,KACzBxqB,KAAKmN,QAIbyQ,QAAS,WACL,IACIs1E,EADOlzF,KACMkzF,MAEbA,GAASA,EAAMhsF,QAAQiqF,QAHhBnxF,KAIFklH,eAAehyB,EAAMhsF,QAAQiqF,SAI1CmyB,MAAO,SAASh8G,GACZ,IAAIW,EAAOjI,KACPyT,EAAUxL,EAAKX,SAEdW,EAAKirF,OACNjrF,EAAKs9G,aAGL9xG,GAAWA,EAAQ,IAAMnM,EAAO,KAChCW,EAAKirF,MAAM5tC,OAAM,GACjBr9C,EAAKirF,MAAMrnF,QAAQ4b,WAAU,GAAM,IAGlChU,GAAWA,EAAQ,IAAMnM,EAAO,KACjCW,EAAKi9G,eAAe59G,GACpBW,EAAKirF,MAAMhsF,QAAQiqF,OAAS7pF,GAGhCW,EAAKirF,MAAMvpF,IAAI,cAAc,WACzB+4G,EAAap7G,GAEbW,EAAKo8G,mBAAmB/8G,GAExBtH,KAAK6L,QACAylB,WAAW,MACXxO,KAAK,eAAe,GAEzB++F,EAAS5oF,IAAI,UAAY43D,EAAI5oF,EAAK48G,4BAGtC58G,EAAK08G,cAGTY,WAAY,WACR,IAAIt9G,EAAOjI,KACPkH,EAAUe,EAAKf,QACfkF,EAAUzJ,EAAEhC,EAAMkP,SAASqyG,EAAfvhH,CAAyB,CACjCyhH,QAASl7G,EAAQk7G,SAAgC,WAArBl7G,EAAQ4F,SACpCuyB,IAAKmjF,EAAWt7G,EAAQ4F,UACxBq1G,SAAUj7G,EAAQi7G,YAG1Bl6G,EAAKirF,MAAQ,IAAIpC,EAAM1kF,EAASrJ,EAAO,CACnC+I,UAAU,EACV05G,SAAU,WACNv9G,EAAKi8G,kBAEDh9G,EAAQk7G,QACRn6G,EAAKw7G,mBAELx7G,EAAK27G,QAAQ37G,EAAKf,QAAQ4F,SAAU7E,EAAKf,QAAQ6V,QAGrD/c,KAAK6L,QAAQylB,WAAW,eAExBuwF,EAAS54F,GAAG,UAAY4nE,EAAI5oF,EAAK48G,yBAEjC58G,EAAKmC,QAAQ0rE,GACb7tE,EAAKirF,MAAM9B,SAvhB/B,WAyhBgB9rC,MAAO,WACHr9C,EAAKmC,QAAQ2rE,IAEjBgc,kBAAkB,EAClBT,UAAWpqF,EAAQoqF,WACpBgxB,EAAUp7G,EAAQ4F,YAErBV,EAAQQ,IAAI,CACRI,MAAO9F,EAAQ8F,MACfL,OAAQzF,EAAQyF,SAGpB1E,EAAKs+C,QAAUn6C,EAAQ2pB,KAAK,sBAC5B9tB,EAAK47G,MAAQz3G,EAAQ2pB,KAAK,cAEtB7uB,EAAQi7G,UAAYniH,KAAK+iH,uBACzB32G,EAAQ6c,GAAG,aAAe4nE,EAAI5oF,EAAK+8G,YAAYx7G,KAAKvB,IAEpDmE,EAAQ6c,GAAG,QAAU4nE,EAAI,oBAAqB5oF,EAAKw9G,kBAAkBj8G,KAAKvB,KAIlFw9G,kBAAmB,SAAS9gH,GACxBA,EAAEwE,iBACFnJ,KAAKmN,QAGT63G,YAAa,SAASrgH,GAClB,IAAIsD,EAAOjI,KAEXm6B,aAAalyB,EAAKm9B,SAElBn9B,EAAKm9B,QAAUrM,YAAW,WACtB9wB,EAAKy9G,YAAY/gH,EAAEg5E,iBACpB11E,EAAKf,QAAQk8G,YAGpB6B,MAAO,SAAStgH,GACZ3E,KAAK0lH,YAAY/gH,EAAEg5E,gBAGvB+nC,YAAa,SAASp+G,GACdtH,KAAKkzF,QAAUlzF,KAAKkzF,MAAM9B,SAC1BpxF,KAAKkzF,MAAM5tC,QAEXo9D,EAAa//G,EAAE2E,KAIvBtF,QAAS,WACLhC,KAAK6L,QAAQotB,IAAI43D,GAEjBgxB,EAAS5oF,IAAI,UAAY43D,EAAI7wF,KAAK6kH,yBAElC/B,EAAY/6G,GAAG/F,QAAQuI,KAAKvK,SAIpCW,EAAMgpB,GAAGqN,OAAO4tF,GAnlBpB,CAolBG9jH,OAAOH,MAAM+G,QACF/G,OAEd,SAAUgC,GA0BNhC,MAAMopB,QAAQ47F,KAAOhlH,MAAMopB,QAAQ47F,MAAQ,GAC3ChlH,MAAM6H,WAAW7H,MAAMopB,QAAQ47F,KAAM,CACjCC,cA1BJ,WACI,OAAOjjH,EAAEqpC,YA0BT65E,WAvBJ,SAAoBtnD,GAChB,OAAO57D,EAAE+7D,KAAKt2D,MAAMzF,EAAG47D,IAuBvBunD,aApBJ,SAAsBhuD,EAAM/wD,GACxB,GAAKA,EAIL,GAA6B,mBAAlBA,EAAI0rB,UACXqlC,EAAKrlC,UAAY1rB,OAEjB,IAAK,IAAIe,KAAUf,EACXA,EAAI2H,eAAe5G,KACnBgwD,EAAKhwD,GAAUf,EAAIe,OApBvC,CAiCGhH,OAAOH,MAAM+G,QAmBhB5G,OAAOH,MAAQG,OAAOH,OAAS,GAE/B,IAAIiH,EAAQjH,MAAMiH,MACdrE,EAAU5C,MAAM4C,QAEhBwiH,EAAc,CACdC,UAAW,SAAUC,aAAc,SAAUC,KAAM,SACnDC,WAAY,SAAUC,MAAO,SAAUC,MAAO,SAC9CC,OAAQ,SAAUC,MAAO,SAAUC,eAAgB,SACnDC,KAAM,SAAUC,WAAY,SAAUC,MAAO,SAC7CC,UAAW,SAAUC,UAAW,SAAUC,WAAY,SACtDC,UAAW,SAAUC,MAAO,SAAUC,eAAgB,SACtDC,SAAU,SAAUC,QAAS,SAAUC,KAAM,SAC7CC,SAAU,SAAUC,SAAU,SAAUC,cAAe,SACvDC,SAAU,SAAUC,SAAU,SAAUC,UAAW,SACnDC,UAAW,SAAUC,YAAa,SAAUC,eAAgB,SAC5DC,WAAY,SAAUC,WAAY,SAAUC,QAAS,SACrDC,WAAY,SAAUC,aAAc,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,cAAe,SAAUC,cAAe,SACjEC,WAAY,SAAUC,SAAU,SAAUC,YAAa,SACvDC,QAAS,SAAUC,QAAS,SAAUC,WAAY,SAClDC,UAAW,SAAUC,YAAa,SAAUC,YAAa,SACzDC,QAAS,SAAUC,UAAW,SAAUC,WAAY,SACpDC,KAAM,SAAUC,UAAW,SAAUC,KAAM,SAC3CC,KAAM,SAAUC,MAAO,SAAUC,YAAa,SAC9CC,SAAU,SAAUC,QAAS,SAAUC,UAAW,SAClDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,SAAU,SAAUC,cAAe,SAAUC,UAAW,SACxDC,aAAc,SAAUC,UAAW,SAAUC,WAAY,SACzDC,UAAW,SAAUC,qBAAsB,SAAUC,UAAW,SAChEC,UAAW,SAAUC,WAAY,SAAUC,UAAW,SACtDC,YAAa,SAAUC,cAAe,SAAUC,aAAc,SAC9DC,eAAgB,SAAUC,eAAgB,SAAUC,eAAgB,SACpEC,YAAa,SAAUC,KAAM,SAAUC,UAAW,SAClDC,MAAO,SAAUC,QAAS,SAAUC,OAAQ,SAC5CC,iBAAkB,SAAUC,WAAY,SAAUC,aAAc,SAChEC,aAAc,SAAUC,eAAgB,SAAUC,gBAAiB,SACnEC,kBAAmB,SAAUC,gBAAiB,SAAUC,gBAAiB,SACzEC,aAAc,SAAUC,UAAW,SAAUC,UAAW,SACxDC,SAAU,SAAUC,YAAa,SAAUC,KAAM,SACjDC,QAAS,SAAUC,MAAO,SAAUC,UAAW,SAC/CC,OAAQ,SAAUC,UAAW,SAAUC,OAAQ,SAC/CC,cAAe,SAAUC,UAAW,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,WAAY,SAAUC,UAAW,SAC1DC,KAAM,SAAUC,KAAM,SAAUC,KAAM,SACtCC,WAAY,SAAUC,OAAQ,SAAUC,IAAK,SAC7CC,UAAW,SAAUC,UAAW,SAAUC,YAAa,SACvDC,OAAQ,SAAUC,WAAY,SAAUC,SAAU,SAClDC,SAAU,SAAUC,OAAQ,SAAUC,OAAQ,SAC9CC,QAAS,SAAUC,UAAW,SAAUC,UAAW,SACnDC,UAAW,SAAUC,KAAM,SAAUC,YAAa,SAClDC,UAAW,SAAUC,IAAK,SAAUC,KAAM,SAC1CC,QAAS,SAAUC,OAAQ,SAAUC,UAAW,SAChDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,WAAY,SAAUC,OAAQ,SAAUC,YAAa,UAGrDltG,EAAUze,EAAQye,QAElBmtG,EAAkB,SAAUC,GAC5B,IAAIC,EAAa5uH,OAAOypB,KAAK67F,GAC7BsJ,EAAW1tH,KAAK,eAEhB,IAAI2tH,EAAS,IAAIrhH,OAAO,KAAOohH,EAAWxkH,KAAK,KAAO,WAAY,KAGlE,OAFAskH,EAAkB,SAAUC,GAAS,OAAOE,EAAOj3G,KAAK+2G,IAEjDE,EAAOj3G,KAAK+2G,IAGnBG,EAAY3nH,EAAM7E,OAAO,CACzBoF,KAAM,aAENqnH,MAAO,WAAa,OAAOxvH,MAE3ByvH,MAAO,WAAa,OAAOzvH,MAE3B0vH,MAAO,SAASxoH,GAAW,OAAOlH,KAAK2vH,UAAUD,MAAMxoH,IAEvDyoH,QAAS,WAAa,OAAO3vH,MAE7B4vH,MAAO,SAAS1oH,GAAW,MAAO,IAAMlH,KAAK0vH,MAAMxoH,IAEnD2oH,UAAW,WACP,IAAIC,EAAM9vH,KAAK2vH,UACf,MAAQ,QAAWG,EAAK,EAAI,KAAQA,EAAK,EAAI,KAAQA,EAAK,EAAI,KAAQ/mH,WAAYuJ,OAAOtS,KAAKkF,GAAIgR,QAAQ,IAAO,KAGrH65G,UAAW,WACP,OAAI/tG,EAAQoB,MAAQpB,EAAQxf,QAAU,EAC3BxC,KAAK4vH,QAET5vH,KAAK6vH,aAGhB/+D,OAAQ,SAASpsD,GACb,OAAOA,IAAM1E,MAAS,MAAC0E,GAAkC1E,KAAK6vH,cAAgBG,EAAWtrH,GAAGmrH,aAGhGhxF,KAAM,SAASoxF,GACX,GAAc,OAAVA,EACA,OAAOC,IAGX,IAAIC,EAAKnwH,KAAK2vH,UACVS,EAAKH,EAAMN,UAEf,OAAOtsH,KAAKo6E,KAAKp6E,KAAKqmC,IAAoB,IAAfymF,EAAGE,EAAID,EAAGC,GAAW,GAC/BhtH,KAAKqmC,IAAoB,KAAfymF,EAAGt7G,EAAIu7G,EAAGv7G,GAAW,GAC/BxR,KAAKqmC,IAAoB,KAAfymF,EAAGhrG,EAAIirG,EAAGjrG,GAAW,KAGpDhe,MAAO,WACH,IAAIzC,EAAI1E,KAAK2vH,UAKb,OAJIjrH,IAAM1E,OACN0E,EAAI,IAAI4rH,EAAM5rH,EAAE2rH,EAAG3rH,EAAEmQ,EAAGnQ,EAAEygB,EAAGzgB,EAAEQ,IAG5BR,KAIX6rH,EAAMhB,EAAUxsH,OAAO,CACvBoF,KAAM,SAASkoH,EAAGx7G,EAAGsQ,EAAGjgB,GACpBqqH,EAAUxnH,GAAGI,KAAKoC,KAAKvK,MAEvBA,KAAKqwH,EAAIA,EACTrwH,KAAK6U,EAAIA,EACT7U,KAAKmlB,EAAIA,EACTnlB,KAAKkF,EAAIA,GAGbsqH,MAAO,WACH,IAQI5qH,EAAGK,EARHgqB,EAAMjvB,KACNqwH,EAAIphG,EAAIohG,EACRx7G,EAAIoa,EAAIpa,EACRsQ,EAAI8J,EAAI9J,EACRhP,EAAM9S,KAAK8S,IAAIk6G,EAAGx7G,EAAGsQ,GACrBvM,EAAMvV,KAAKuV,IAAIy3G,EAAGx7G,EAAGsQ,GACrByf,EAAQhsB,EAAMzC,EACd1E,EAAImH,EAGR,OAAc,IAAVgsB,EACO,IAAI4rF,EAAI,EAAG,EAAG/+G,EAAGzR,KAAKkF,IAGrB,IAAR0T,GACA3T,EAAI2/B,EAAQhsB,EAERhU,EADAyrH,IAAMz3G,GACD/D,EAAIsQ,GAAKyf,EACP/vB,IAAM+D,EACT,GAAKuM,EAAIkrG,GAAKzrF,EAEd,GAAKyrF,EAAIx7G,GAAK+vB,GAGtBhgC,GAAK,IACG,IACJA,GAAK,OAGTK,EAAI,EACJL,GAAK,GAGF,IAAI4rH,EAAI5rH,EAAGK,EAAGwM,EAAGzR,KAAKkF,KAGjCurH,MAAO,WACH,IAMI7rH,EAAGK,EANHgqB,EAAMjvB,KACNqwH,EAAIphG,EAAIohG,EACRx7G,EAAIoa,EAAIpa,EACRsQ,EAAI8J,EAAI9J,EACRvM,EAAMvV,KAAKuV,IAAIy3G,EAAGx7G,EAAGsQ,GACrBhP,EAAM9S,KAAK8S,IAAIk6G,EAAGx7G,EAAGsQ,GACfurG,GAAK93G,EAAMzC,GAAO,EAE5B,GAAIyC,IAAQzC,EACRvR,EAAIK,EAAI,MACL,CACH,IAAIT,EAAIoU,EAAMzC,EAEd,OADAlR,EAAIyrH,EAAI,GAAMlsH,GAAK,EAAIoU,EAAMzC,GAAO3R,GAAKoU,EAAMzC,GACvCyC,GACR,KAAKy3G,EAAGzrH,GAAKiQ,EAAIsQ,GAAK3gB,GAAKqQ,EAAIsQ,EAAI,EAAI,GAAI,MAC3C,KAAKtQ,EAAGjQ,GAAKugB,EAAIkrG,GAAK7rH,EAAI,EAAG,MAC7B,KAAK2gB,EAAGvgB,GAAKyrH,EAAIx7G,GAAKrQ,EAAI,GAK9B,OAAO,IAAImsH,EAAQ,GAAJ/rH,EAAY,IAAJK,EAAa,IAAJyrH,EAAS1wH,KAAKkF,IAGlDyqH,QAAS,WACL,OAAO,IAAIW,EAAe,IAATtwH,KAAKqwH,EAAkB,IAATrwH,KAAK6U,EAAkB,IAAT7U,KAAKmlB,EAASnlB,KAAKkF,MAIpEorH,EAAQC,EAAIxtH,OAAO,CACnBoF,KAAM,SAASkoH,EAAGx7G,EAAGsQ,EAAGjgB,GACpBqrH,EAAIxoH,GAAGI,KAAKoC,KAAKvK,KAAMqD,KAAK0S,MAAMs6G,GAAIhtH,KAAK0S,MAAMlB,GAAIxR,KAAK0S,MAAMoP,GAAIjgB,IAGxEuqH,MAAO,WACH,OAAO,IAAIc,EAAIvwH,KAAKqwH,EAAI,IAAKrwH,KAAK6U,EAAI,IAAK7U,KAAKmlB,EAAI,IAAKnlB,KAAKkF,IAGlEsqH,MAAO,WACH,OAAOxvH,KAAKyvH,QAAQD,SAGxBiB,MAAO,WACH,OAAOzwH,KAAKyvH,QAAQgB,SAGxBf,MAAO,SAASxoH,GACZ,IAAIwB,EAAQkoH,EAAI5wH,KAAKqwH,EAAG,GAAKO,EAAI5wH,KAAK6U,EAAG,GAAK+7G,EAAI5wH,KAAKmlB,EAAG,GAM1D,OAJIje,GAAWA,EAAQ2pH,QACnBnoH,GAASkoH,EAAIvtH,KAAK0S,MAAe,IAAT/V,KAAKkF,GAAU,IAGpCwD,GAGXinH,QAAS,WACL,OAAO3vH,QAIf,SAAS4wH,EAAIE,EAAG9jH,EAAOxB,QACP,IAARA,IAAkBA,EAAM,KAG5B,IADA,IAAI+K,EAASu6G,EAAE5/G,SAAS,IACjBlE,EAAQuJ,EAAO/O,QAClB+O,EAAS/K,EAAM+K,EAGnB,OAAOA,EAGX,IAAIi6G,EAAMjB,EAAUxsH,OAAO,CACvBoF,KAAM,SAASvD,EAAGK,EAAGwM,EAAGvM,GACpBqqH,EAAUxnH,GAAGI,KAAKoC,KAAKvK,MAEvBA,KAAK4E,EAAIA,EACT5E,KAAKiF,EAAIA,EACTjF,KAAKyR,EAAIA,EACTzR,KAAKkF,EAAIA,GAGbuqH,MAAO,WACH,IAIIY,EAAGx7G,EAAGsQ,EAJN8J,EAAMjvB,KACN4E,EAAIqqB,EAAIrqB,EACRK,EAAIgqB,EAAIhqB,EACRwM,EAAIwd,EAAIxd,EAGZ,GAAU,IAANxM,EACAorH,EAAIx7G,EAAIsQ,EAAI1T,MACT,CACH7M,GAAK,GAEL,IAAI2C,EAAIlE,KAAKkN,MAAM3L,GACfuoD,EAAIvoD,EAAI2C,EACRwpH,EAAIt/G,GAAK,EAAIxM,GACbb,EAAIqN,GAAK,EAAIxM,EAAIkoD,GACjBhoD,EAAIsM,GAAK,EAAIxM,GAAK,EAAIkoD,IAE1B,OAAQ5lD,GACR,KAAK,EAAG8oH,EAAI5+G,EAAGoD,EAAI1P,EAAGggB,EAAI4rG,EAAG,MAC7B,KAAK,EAAGV,EAAIjsH,EAAGyQ,EAAIpD,EAAG0T,EAAI4rG,EAAG,MAC7B,KAAK,EAAGV,EAAIU,EAAGl8G,EAAIpD,EAAG0T,EAAIhgB,EAAG,MAC7B,KAAK,EAAGkrH,EAAIU,EAAGl8G,EAAIzQ,EAAG+gB,EAAI1T,EAAG,MAC7B,KAAK,EAAG4+G,EAAIlrH,EAAG0P,EAAIk8G,EAAG5rG,EAAI1T,EAAG,MAC7B,QAAS4+G,EAAI5+G,EAAGoD,EAAIk8G,EAAG5rG,EAAI/gB,GAI/B,OAAO,IAAImsH,EAAIF,EAAGx7G,EAAGsQ,EAAGnlB,KAAKkF,IAGjCurH,MAAO,WACH,OAAOzwH,KAAKyvH,QAAQgB,SAGxBd,QAAS,WACL,OAAO3vH,KAAKyvH,QAAQE,aAIxBgB,EAAMpB,EAAUxsH,OAAO,CACvBoF,KAAM,SAASvD,EAAGK,EAAGyrH,EAAGxrH,GACpBqqH,EAAUxnH,GAAGI,KAAKoC,KAAKvK,MAEvBA,KAAK4E,EAAIA,EACT5E,KAAKiF,EAAIA,EACTjF,KAAK0wH,EAAIA,EACT1wH,KAAKkF,EAAIA,GAGbuqH,MAAO,WACH,IAGIY,EAAGx7G,EAAGsQ,EAHNvgB,EAAI5E,KAAK4E,EAAI,IACbK,EAAIjF,KAAKiF,EAAI,IACbyrH,EAAI1wH,KAAK0wH,EAAI,IAGjB,GAAU,IAANzrH,EACAorH,EAAIx7G,EAAIsQ,EAAIurG,MACT,CACH,IAAItsH,EAAIssH,EAAI,GAAMA,GAAK,EAAIzrH,GAAKyrH,EAAIzrH,EAAIyrH,EAAIzrH,EACxC8rH,EAAI,EAAIL,EAAItsH,EAChBisH,EAAIW,EAAQD,EAAG3sH,EAAGQ,EAAI,EAAI,GAC1BiQ,EAAIm8G,EAAQD,EAAG3sH,EAAGQ,GAClBugB,EAAI6rG,EAAQD,EAAG3sH,EAAGQ,EAAI,EAAI,GAG9B,OAAO,IAAI2rH,EAAIF,EAAGx7G,EAAGsQ,EAAGnlB,KAAKkF,IAGjCsqH,MAAO,WACH,OAAOxvH,KAAKyvH,QAAQD,SAGxBG,QAAS,WACL,OAAO3vH,KAAKyvH,QAAQE,aAI5B,SAASqB,EAAQD,EAAG3sH,EAAGa,GACnB,IAAIE,EAAIF,EAUR,OARIE,EAAI,IACJA,GAAK,GAGLA,EAAI,IACJA,GAAK,GAGLA,EAAI,EAAI,EACD4rH,EAAc,GAAT3sH,EAAI2sH,GAAS5rH,EAGzBA,EAAI,GACGf,EAGPe,EAAI,EAAI,EACD4rH,GAAK3sH,EAAI2sH,IAAM,EAAI,EAAI5rH,GAAK,EAGhC4rH,EAGX,SAASE,EAAa/rH,GAClB,OAAO6D,WAAWA,WAAWkQ,SAAS/T,EAAG,IAAM,KAAMgR,QAAQ,IAGjE,SAAS85G,EAAWtnH,EAAO8lB,GACvB,IAAIxpB,EAAGi2B,EAEP,GAAa,MAATvyB,GAA2B,SAAVA,EACjB,OAAO,KAGX,GAAIA,aAAiB6mH,EACjB,OAAO7mH,EAGX,IAAI0mH,EAAQ1mH,EAAM4P,cAClB,GAAKtT,EAAImqH,EAAgBC,GAOrB,OALIA,EADS,gBAATpqH,EAAE,GACM,IAAIurH,EAAI,EAAG,EAAG,EAAG,GAEjBP,EAAWjK,EAAY/gH,EAAE,IAAKwpB,IAEpCre,MAAQ,CAAEnL,EAAE,IACXoqH,EAsCX,IApCKpqH,EAAI,gDAAgDqT,KAAK+2G,IAC1Dn0F,EAAM,IAAIq1F,EAAMr3G,SAASjU,EAAE,GAAI,IAC3BiU,SAASjU,EAAE,GAAI,IACfiU,SAASjU,EAAE,GAAI,IAAK,IAChBA,EAAI,uCAAuCqT,KAAK+2G,IACxDn0F,EAAM,IAAIq1F,EAAMr3G,SAASjU,EAAE,GAAKA,EAAE,GAAI,IAClCiU,SAASjU,EAAE,GAAKA,EAAE,GAAI,IACtBiU,SAASjU,EAAE,GAAKA,EAAE,GAAI,IAAK,IACvBA,EAAI,iDAAiDqT,KAAK+2G,IAClEn0F,EAAM,IAAIq1F,EAAMr3G,SAASjU,EAAE,GAAKA,EAAE,GAAI,IAClCiU,SAASjU,EAAE,GAAKA,EAAE,GAAI,IACtBiU,SAASjU,EAAE,GAAKA,EAAE,GAAI,IACtBisH,EAAajsH,EAAE,GAAKA,EAAE,MAClBA,EAAI,6DAA6DqT,KAAK+2G,IAC9En0F,EAAM,IAAIq1F,EAAMr3G,SAASjU,EAAE,GAAI,IAC3BiU,SAASjU,EAAE,GAAI,IACfiU,SAASjU,EAAE,GAAI,IACfisH,EAAajsH,EAAE,MACXA,EAAI,uDAAuDqT,KAAK+2G,IACxEn0F,EAAM,IAAIq1F,EAAMr3G,SAASjU,EAAE,GAAI,IAC3BiU,SAASjU,EAAE,GAAI,IACfiU,SAASjU,EAAE,GAAI,IAAK,IAChBA,EAAI,wEAAwEqT,KAAK+2G,IACzFn0F,EAAM,IAAIq1F,EAAMr3G,SAASjU,EAAE,GAAI,IAC3BiU,SAASjU,EAAE,GAAI,IACfiU,SAASjU,EAAE,GAAI,IAAK+D,WAAW/D,EAAE,MAC7BA,EAAI,qFAAqFqT,KAAK+2G,IACtGn0F,EAAM,IAAIs1F,EAAIxnH,WAAW/D,EAAE,IAAM,IAC7B+D,WAAW/D,EAAE,IAAM,IACnB+D,WAAW/D,EAAE,IAAM,IAAK,IACpBA,EAAI,sGAAsGqT,KAAK+2G,MACvHn0F,EAAM,IAAIs1F,EAAIxnH,WAAW/D,EAAE,IAAM,IAC7B+D,WAAW/D,EAAE,IAAM,IACnB+D,WAAW/D,EAAE,IAAM,IAAK+D,WAAW/D,EAAE,MAGzCi2B,EACAA,EAAI9qB,MAAQnL,OACT,IAAKwpB,EACR,MAAM,IAAI/d,MAAM,uBAAyB2+G,GAG7C,OAAOn0F,EAGX,IAEIi2F,EAAQtpH,EAAM7E,OAAO,CACrBoF,KAAM,SAASO,GACX,IAAIyoH,EAAWnxH,KAEf,GAAyB,IAArBqH,UAAUG,OAIV,IAHA,IAAIqV,EAAUq0G,EAAMr0G,QAChBu0G,EAAgBpxH,KAAKqxH,aAAa3oH,GAE7BkB,EAAM,EAAGA,EAAMiT,EAAQrV,OAAQoC,IAAO,CAC3C,IAAI0nH,EAAcz0G,EAAQjT,GAAK2nH,GAC3BC,EAAY30G,EAAQjT,GAAKorD,QACzBhlD,EAAQshH,EAAYj5G,KAAK+4G,GAE7B,GAAIphH,EAAO,CACP,IAAIyhH,EAAWD,EAAUxhH,GACzBmhH,EAASd,EAAIoB,EAAS,GACtBN,EAASt8G,EAAI48G,EAAS,GACtBN,EAAShsG,EAAIssG,EAAS,SAI9BzxH,KAAKqwH,EAAIhpH,UAAU,GACnBrH,KAAK6U,EAAIxN,UAAU,GACnBrH,KAAKmlB,EAAI9d,UAAU,GAGvBrH,KAAKqwH,EAAIrwH,KAAK0xH,cAAc1xH,KAAKqwH,GACjCrwH,KAAK6U,EAAI7U,KAAK0xH,cAAc1xH,KAAK6U,GACjC7U,KAAKmlB,EAAInlB,KAAK0xH,cAAc1xH,KAAKmlB,IAGrCuqG,MAAO,WACH,IAAIlkH,EAAMxL,KAAK2xH,SACXtB,EAAIrwH,KAAKqwH,EAAEn/G,SAAS,IACpB2D,EAAI7U,KAAK6U,EAAE3D,SAAS,IACpBiU,EAAInlB,KAAKmlB,EAAEjU,SAAS,IAExB,MAAO,IAAM1F,EAAI6kH,GAAK7kH,EAAIqJ,GAAKrJ,EAAI2Z,IAGvCksG,aAAc,SAAS3oH,GACnB,IAAI0mH,EAAQ1mH,GAAS,QAUrB,MARwB,MAApB0mH,EAAMtkH,OAAO,KACbskH,EAAQA,EAAM5zG,OAAO,EAAG,IAI5B4zG,GADAA,EAAQA,EAAM3sH,QAAQ,KAAM,KACd6V,cACd82G,EAAQ8B,EAAMnL,YAAYqJ,IAAUA,GAKxCsC,cAAe,SAAShpH,GACpB,OAAIA,EAAQ,GAAKI,MAAMJ,GACZ,EAGJA,EAAQ,IAAM,IAAMA,GAG/BipH,SAAU,SAASjpH,GACf,OAAyB,IAAjBA,EAAMlB,OAAgB,IAAMkB,EAAQA,GAGhDkpH,WAAY,SAASlpH,GACjB,IAAIqN,EAAQ1S,KAAK0S,MAMjB,OAJA/V,KAAKqwH,EAAIt6G,EAAM/V,KAAK0xH,cAAc1xH,KAAKqwH,EAAI3nH,IAC3C1I,KAAK6U,EAAIkB,EAAM/V,KAAK0xH,cAAc1xH,KAAK6U,EAAInM,IAC3C1I,KAAKmlB,EAAIpP,EAAM/V,KAAK0xH,cAAc1xH,KAAKmlB,EAAIzc,IAEpC1I,MAGX6xH,eAAgB,WACZ,OAAOxuH,KAAKo6E,KAAK,KAAQz9E,KAAKqwH,EAAIrwH,KAAKqwH,EAAI,KAAQrwH,KAAK6U,EAAI7U,KAAK6U,EAAI,KAAQ7U,KAAKmlB,EAAInlB,KAAKmlB,IAG/F2sG,OAAQ,WACJ,OAAO9xH,KAAK6xH,iBAnFA,OAuFpBX,EAAMa,UAAY,SAAS1B,EAAGx7G,EAAGsQ,EAAGjgB,GAChC,OAAO,IAAIorH,EAAMD,EAAGx7G,EAAGsQ,EAAQ,MAALjgB,EAAYA,EAAI,IAG9CgsH,EAAMc,QAAU,SAAS3B,EAAGx7G,EAAGsQ,EAAGjgB,GAC9B,OAAO,IAAIqrH,EAAIF,EAAGx7G,EAAGsQ,EAAQ,MAALjgB,EAAYA,EAAI,IAG5CgsH,EAAMe,QAAU,SAASrtH,EAAGK,EAAGwM,EAAGvM,GAC9B,OAAO,IAAIsrH,EAAI5rH,EAAGK,EAAGwM,EAAQ,MAALvM,EAAYA,EAAI,IAG5CgsH,EAAMgB,QAAU,SAASttH,EAAGK,EAAGyrH,EAAGxrH,GAC9B,OAAO,IAAIyrH,EAAI/rH,EAAGK,EAAGyrH,EAAQ,MAALxrH,EAAYA,EAAI,IAG5CgsH,EAAMr0G,QAAU,CAAE,CACd00G,GAAI,+CACJv8D,QAAS,SAAShlD,GACd,MAAO,CACHiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,OAG5E,CACCuhH,GAAI,0BACJv8D,QAAS,SAAShlD,GACd,MAAO,CACHiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,IAAKiJ,SAASjJ,EAAM,GAAI,OAG5E,CACCuhH,GAAI,0BACJv8D,QAAS,SAAShlD,GACd,MAAO,CACHiJ,SAASjJ,EAAM,GAAKA,EAAM,GAAI,IAC9BiJ,SAASjJ,EAAM,GAAKA,EAAM,GAAI,IAC9BiJ,SAASjJ,EAAM,GAAKA,EAAM,GAAI,QAK1CkhH,EAAMnL,YAAcA,EAEpBplH,MAAM6H,WAAW7H,MAAO,CACpBqvH,WAAYA,EACZjK,YAAaA,EACbmL,MAAOA,IAUX,SAAUvuH,GAGV7B,OAAOH,MAAMglH,KAAO7kH,OAAOH,MAAMglH,MAAQ,GAEzC,IAAIwM,EAAWxxH,MAAMiH,MAAM7E,OAAO,CAC9BoF,KAAM,SAASsH,GAEXzP,KAAK8xB,MAAQriB,EACbzP,KAAKoyH,QAAU,EACfpyH,KAAKm5D,KAAO,IAGhBk5D,IAAK,SAAS9gH,EAAK7I,GACf,IAAI4R,EAAMta,KAAKm5D,KACXm5D,EAAQ,CAAE/gH,IAAKA,EAAK7I,MAAOA,GAE/B4R,EAAI/I,GAAO+gH,EAENtyH,KAAKuyH,OAGNvyH,KAAKwyH,MAAMC,MAAQH,EACnBA,EAAMI,MAAQ1yH,KAAKwyH,MACnBxyH,KAAKwyH,MAAQF,GAJbtyH,KAAKuyH,MAAQvyH,KAAKwyH,MAAQF,EAO1BtyH,KAAKoyH,SAAWpyH,KAAK8xB,OACrBxX,EAAIta,KAAKuyH,MAAMhhH,KAAO,KACtBvR,KAAKuyH,MAAQvyH,KAAKuyH,MAAME,MACxBzyH,KAAKuyH,MAAMG,MAAQ,MAEnB1yH,KAAKoyH,WAIb7iG,IAAK,SAAShe,GACV,IAAI+gH,EAAQtyH,KAAKm5D,KAAK5nD,GAEtB,GAAI+gH,EAmBA,OAlBIA,IAAUtyH,KAAKuyH,OAASD,IAAUtyH,KAAKwyH,QACvCxyH,KAAKuyH,MAAQD,EAAMG,MACnBzyH,KAAKuyH,MAAMG,MAAQ,MAGnBJ,IAAUtyH,KAAKwyH,QACXF,EAAMI,QACNJ,EAAMI,MAAMD,MAAQH,EAAMG,MAC1BH,EAAMG,MAAMC,MAAQJ,EAAMI,OAG9BJ,EAAMI,MAAQ1yH,KAAKwyH,MACnBF,EAAMG,MAAQ,KAEdzyH,KAAKwyH,MAAMC,MAAQH,EACnBtyH,KAAKwyH,MAAQF,GAGVA,EAAM5pH,SAKrBiqH,EAAgB,eAGpB,SAASC,EAAchyF,GACnB,OAAO9uB,OAAO8uB,GAAMn+B,QAAQkwH,EAHpB,KAMZ,SAASE,EAAUjnE,GACf,IAAI57C,EAAQ,GACZ,IAAK,IAAIuB,KAAOq6C,EACZ57C,EAAMrO,KAAK4P,EAAMq6C,EAAOr6C,IAG5B,OAAOvB,EAAMkV,OAAOra,KAAK,IAK7B,SAASioH,EAAQlkH,GAKb,IAFA,IAAI0vC,EAAO,WAEF/2C,EAAI,EAAGA,EAAIqH,EAAIpH,SAAUD,EAC9B+2C,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACzEA,GAAQ1vC,EAAI0C,WAAW/J,GAG3B,OAAO+2C,IAAS,EAOpB,IAIIy0E,EAJAC,EAAkB,CAClBC,mBAAoB,GAKA,oBAAb7jH,YACP2jH,EAAoB3jH,SAAS0O,cAAc,QACzBrR,MAAMsR,QAAU,wQAKtC,IAAIm1G,EAAcvyH,MAAMiH,MAAM7E,OAAO,CACjCoF,KAAM,SAASjB,GAEXlH,KAAK4nF,OAAS,IAAIuqC,EAAS,KAC3BnyH,KAAKkH,QAAUvE,EAAEI,OAAO,GAAIiwH,EAAiB9rH,IAGjDq9E,QAAS,SAAS3jD,EAAMn0B,EAAOvF,GAG3B,QAFgB,IAAZA,IAAsBA,EAAU,IAEhC,MAAO05B,EACP,MA3BD,CAAE5zB,MAAO,EAAGL,OAAQ,EAAGwmH,SAAU,GA8BpC,IACIC,EAAWN,EAAQlyF,EADRiyF,EAAUpmH,IAErB4mH,EAAerzH,KAAK4nF,OAAOr4D,IAAI6jG,GAEnC,GAAIC,EACA,OAAOA,EAGX,IAAI5jH,EAtCD,CAAEzC,MAAO,EAAGL,OAAQ,EAAGwmH,SAAU,GAuChCG,EAAapsH,EAAQgyC,KAAO65E,EAC5BQ,EAAiBvzH,KAAKwzH,kBAAkBriD,WAAU,GAEtD,IAAK,IAAI5/D,KAAO9E,EAAO,CACnB,IAAI/D,EAAQ+D,EAAM8E,QACG,IAAV7I,IACP4qH,EAAW7mH,MAAM8E,GAAO7I,GAIhC,IAAI+qH,GAAoC,IAA1BvsH,EAAQ0rH,cAA0BA,EAAchyF,GAAQ9uB,OAAO8uB,GAkB7E,OAhBA0yF,EAAW/vF,YAAckwF,EACzBH,EAAWp1G,YAAYq1G,GACvBnkH,SAAS6O,KAAKC,YAAYo1G,GAEtBG,EAAQjsH,SACRiI,EAAKzC,MAAQsmH,EAAWn1G,YAAcne,KAAKkH,QAAQ+rH,mBACnDxjH,EAAK9C,OAAS2mH,EAAW/+F,aACzB9kB,EAAK0jH,SAAWI,EAAeG,UAAY1zH,KAAKkH,QAAQ+rH,oBAGxDxjH,EAAKzC,MAAQ,GAAKyC,EAAK9C,OAAS,GAChC3M,KAAK4nF,OAAOyqC,IAAIe,EAAU3jH,GAG9B6jH,EAAW1tG,WAAWvH,YAAYi1G,GAE3B7jH,GAGX+jH,gBAAiB,WACb,IAAIlrE,EAASl5C,SAAS0O,cAAc,OAIpC,OAHAwqC,EAAO77C,MAAMsR,QAAU,0DACnB/d,KAAKkH,QAAQ+rH,mBAAqB,eAAiBjzH,KAAKkH,QAAQ+rH,mBAAqB,uBAElF3qE,KAIf4qE,EAAYz/G,QAAU,IAAIy/G,EAM1BvyH,MAAM6H,WAAW7H,MAAMglH,KAAM,CACzBwM,SAAUA,EACVe,YAAaA,EACbS,YAPJ,SAAqB/yF,EAAMn0B,EAAO6mH,GAC9B,OAAOJ,EAAYz/G,QAAQ8wE,QAAQ3jD,EAAMn0B,EAAO6mH,IAOhDT,UAAWA,EACXC,QAASA,EACTF,cAAeA,IA1LnB,CA6LG9xH,OAAOH,MAAM+G,QAShB,SAAU/E,GAGV7B,OAAOH,MAAQG,OAAOH,OAAS,GAC/B,IACIizH,EADejzH,MAAMopB,QACW47F,KAChCG,EAAe8N,EAAiB9N,aAChCl+G,EAAQjH,MAAMiH,MACdisH,EAAYlzH,MAAMglH,KAElBmO,EADUnzH,MAAM4C,QACSye,QAEzB4jG,EAAgBgO,EAAiBhO,cACjCC,EAAa+N,EAAiB/N,WAE9BkO,EAAgB,SAAUC,GAC1B,SAASD,IACLC,EAAS5rH,MAAMpI,KAAMqH,WA6EzB,OA1EAy+G,EAAaiO,EAAcC,GAC3BD,EAAa1rH,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WAC7D0rH,EAAa1rH,UAAUC,YAAcyrH,EACrCA,EAAahsH,GAAKgsH,EAAa1rH,UAC/B0rH,EAAahsH,GAAGI,KAAO4rH,EAAahsH,GAAGO,YAEvCyrH,EAAa1rH,UAAU4rH,UAAY,WAE/B,OADAj0H,KAAKk0H,WAAal0H,KAAKk0H,YAAc,GAC9Bl0H,KAAKk0H,YAGhBH,EAAa1rH,UAAU8rH,YAAc,SAAsBtoH,GAMvD,OALK7L,KAAKk0H,WAGNl0H,KAAKk0H,WAAWvyH,KAAKkK,GAFrB7L,KAAKk0H,WAAa,CAAEroH,GAIjB7L,MAGX+zH,EAAa1rH,UAAU+rH,eAAiB,SAAyBvoH,GAC7D,IAAIooH,EAAYj0H,KAAKi0H,YACjBl7G,EAAQk7G,EAAUt+G,QAAQ9J,GAI9B,OAHe,IAAXkN,GACAk7G,EAAUzpH,OAAOuO,EAAO,GAErB/Y,MAGX+zH,EAAa1rH,UAAU+B,QAAU,SAAkB2tE,EAAY34D,GAC3D,IAAI60G,EAAYj0H,KAAKk0H,WAErB,GAAID,IAAcj0H,KAAKq0H,WACnB,IAAK,IAAIzqH,EAAM,EAAGA,EAAMqqH,EAAUzsH,OAAQoC,IAAO,CAC7C,IAAI0qH,EAAWL,EAAUrqH,GACrB0qH,EAASv8C,IACTu8C,EAASv8C,GAAY34D,GAIjC,OAAOpf,MAGX+zH,EAAa1rH,UAAUksH,cAAgB,SAAwB5vH,QACjD,IAANA,IAAgBA,EAAI,IAExBA,EAAEkH,QAAU7L,KACZA,KAAKoK,QAAQ,gBAAiBzF,IAGlCovH,EAAa1rH,UAAUmsH,eAAiB,WACpCx0H,KAAKoK,QAAQ,iBAAkB,CAC3ByB,QAAS7L,QAIjB+zH,EAAa1rH,UAAUosH,QAAU,WAE7B,OADAz0H,KAAKq0H,YAAcr0H,KAAKq0H,YAAc,GAAK,EACpCr0H,MAGX+zH,EAAa1rH,UAAUqsH,OAAS,WAE5B,OADA10H,KAAKq0H,WAAahxH,KAAKuV,KAAK5Y,KAAKq0H,YAAc,GAAK,EAAG,GAChDr0H,MAGX+zH,EAAa1rH,UAAUssH,eAAiB,SAAyB1vG,EAAOvc,GAChE1I,KAAKilB,IACLjlB,KAAKilB,GAAOmvG,eAAep0H,MAE/BA,KAAKilB,GAASvc,EACdA,EAAMyrH,YAAYn0H,OAGf+zH,EA/EQ,CAgFjBnsH,GAEF,SAASgtH,EAAW1qH,EAAO2qH,GAEvB,OADA3qH,EAAMvI,KAAKyG,MAAM8B,EAAO2qH,GACjB3qH,EAKX,IAAIgO,EAAW,CACX,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,OAAW,GAAO,OAAW,IAAO,OAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,IAAO,KAGX,SAAS48G,EAAchE,GAOnB,IANA,IAAIh4G,EAAS,CAAE,IACX,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACzC,GAAM,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACzC,EAAM,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAEzCi8G,EAAQ,GACLjE,EAAI,GACHA,EAAIh4G,EAAO,GACXA,EAAOjD,SAEPk/G,GAAS78G,EAASY,EAAO,IACzBg4G,GAAKh4G,EAAO,IAGpB,OAAOi8G,EAKX,SAASC,EAAQtsH,GACb,YAHY,IAGEA,EAGlB,IAAIusH,EAAQ,EAEZ,SAASC,IACL,MAAO,OAASD,IAGpB,IAAIE,EAAa9xH,KAAK+xH,GAAK,IACvBC,EAAU/iH,OAAOgjH,UACjBC,GAAWjjH,OAAOgjH,UAEtB,SAASE,EAAIC,GACT,OAAOA,EAAUN,EAGrB,IAAIhnG,EAAerc,OAAOqc,aA+C1B,IAAIunG,EAAU,oEAEd,SAASC,EAAalxG,GAMlB,IALA,IAAI8uE,EAAS,GACThsF,EAAI,EAEJquH,EAlDR,SAAoBnxG,GAGhB,IAFA,IAAI8uE,EAAS,GAEJhsF,EAAI,EAAGA,EAAIkd,EAAMjd,OAAQD,IAAK,CACnC,IAAI8gD,EAAO5jC,EAAMnT,WAAW/J,GAE5B,GAAI,OAAU8gD,GAAQA,GAAQ,MAAQ,CAClC,IAAIwtE,EAAKxtE,EACLytE,EAAMrxG,EAAMnT,aAAa/J,GAExBuB,MAAMgtH,KAGPztE,EAAuB,MAAfwtE,EAAK,QACLC,EAAM,OAAU,OAI5BztE,EAAO,IAEPkrC,GAAUplE,EAAak6B,GAChBA,EAAO,MAEdkrC,GAAUplE,EAAa,IAAQk6B,IAAS,GACxCkrC,GAAUplE,EAAa,IAAe,GAAPk6B,IACxBA,EAAO,OAEdkrC,GAAUplE,EAAa,IAAQk6B,IAAS,IACxCkrC,GAAUplE,EAAa,IAAQk6B,IAAS,EAAI,IAC5CkrC,GAAUplE,EAAa,IAAe,GAAPk6B,IACxBA,EAAO,UAEdkrC,GAAUplE,EAAa,IAAQk6B,IAAS,IACxCkrC,GAAUplE,EAAa,IAAQk6B,IAAS,GAAK,IAC7CkrC,GAAUplE,EAAa,IAAQk6B,IAAS,EAAI,IAC5CkrC,GAAUplE,EAAa,IAAe,GAAPk6B,IAIvC,OAAOkrC,EAWQwiC,CAAWtxG,GAEnBld,EAAIquH,EAASpuH,QAAQ,CACxB,IAAIwuH,EAAOJ,EAAStkH,WAAW/J,KAC3B0uH,EAAOL,EAAStkH,WAAW/J,KAC3B2uH,EAAON,EAAStkH,WAAW/J,KAE3B4uH,EAAOH,GAAQ,EACfI,GAAgB,EAAPJ,IAAa,EAAMC,GAAQ,EACpCI,GAAgB,GAAPJ,IAAc,EAAMC,GAAQ,EACrCI,EAAc,GAAPJ,EAEPptH,MAAMmtH,GACNI,EAAOC,EAAO,GACPxtH,MAAMotH,KACbI,EAAO,IAGX/iC,EAASA,EACLmiC,EAAQ5qH,OAAOqrH,GAAQT,EAAQ5qH,OAAOsrH,GACtCV,EAAQ5qH,OAAOurH,GAAQX,EAAQ5qH,OAAOwrH,GAG9C,OAAO/iC,EAGX,SAASgjC,EAAiB5xH,GACtB,OAAIqwH,GAASrwH,EAAES,GAAK,IAAImd,UACb,CACHnd,EAAGT,EAAES,EAAEmd,SACPpe,EAAGQ,EAAER,EAAEoe,UAIR,CACHnd,EAAGT,EAAEq9E,OAASr9E,EAAEmkB,SAAW,EAC3B3kB,EAAGQ,EAAEs9E,OAASt9E,EAAEokB,SAAW,GAInC,SAASytG,EAAa7xH,GAGlB,YAFU,IAANA,IAAgBA,EAAI,IAEjBA,EAAE8Z,MAAQ9Z,EAAE8Z,MAAMigE,aAAe/5E,EAAE2C,OAG9C,SAASmvH,EAAcrH,GACnB,MAAiB,KAAVA,GAA0B,OAAVA,GAA4B,SAAVA,GAA8B,gBAAVA,IAA4B4F,EAAQ5F,GAGrG,SAASjtF,EAAK3nB,GACV,GAAIA,EACA,OAAOA,EAAMA,EAAMhT,OAAS,GAIpC,SAASkvH,EAAWhuH,EAAOyN,EAAKyC,GAC5B,OAAOvV,KAAKuV,IAAIvV,KAAK8S,IAAIzN,EAAOkQ,GAAMzC,GAS1C,SAASwgH,EAAUzxH,EAAG0xH,GAClB,GAAI1xH,EAAEsC,OAAS,EACX,OAAOtC,EAAE0B,QAmBb,OAAO,SAAUse,EAAKhgB,GAClB,GAAIA,EAAEsC,QAAU,EACZ,OAAOtC,EAEX,IAAIF,EAAI3B,KAAKkN,MAAMrL,EAAEsC,OAAS,GAC1BqkB,EAAO3mB,EAAE0B,MAAM,EAAG5B,GAClB8mB,EAAQ5mB,EAAE0B,MAAM5B,GAGpB,OA1BJ,SAAeE,EAAGigB,GAEd,IADA,IAAIkrG,EAAI,GAAIwG,EAAK,EAAGC,EAAK,EAAGvvH,EAAI,EACzBsvH,EAAK3xH,EAAEsC,QAAUsvH,EAAK3xG,EAAE3d,QACvBovH,EAAI1xH,EAAE2xH,GAAK1xG,EAAE2xG,KAAQ,EACrBzG,EAAE9oH,KAAOrC,EAAE2xH,KAEXxG,EAAE9oH,KAAO4d,EAAE2xG,KASnB,OANID,EAAK3xH,EAAEsC,QACP6oH,EAAE1uH,KAAKyG,MAAMioH,EAAGnrH,EAAE0B,MAAMiwH,IAExBC,EAAK3xG,EAAE3d,QACP6oH,EAAE1uH,KAAKyG,MAAMioH,EAAGlrG,EAAEve,MAAMkwH,IAErBzG,EAWA77E,CAFP3oB,EAAO3G,EAAK2G,GACZC,EAAQ5G,EAAK4G,IARV,CAUJ5mB,GAGP,IAAI0tC,EAAMxkC,KAAKwkC,KAAO,WAClB,OAAO,IAAIxkC,MAAOnF,WAGtB,SAAS8tH,EAAIC,GACT,OAAOA,EAAU7B,EAWrB,SAASp/G,EAAMrN,EAAOsN,GAClB,IATS+6G,EASLkG,GATKlG,EASO/6G,GAPL3S,KAAKqmC,IAAI,GAAIqnF,GAGjB,EAKP,OAAO1tH,KAAK0S,MAAMrN,EAAQuuH,GAASA,EAGvC,SAASC,EAAexuH,EAAOmmD,GAC3B,OAAOmmE,EAAQtsH,GAASA,EAAQmmD,EAGpC,SAASsoE,EAAWtrH,EAASxB,GACzB,IAAK,IAAIZ,KAAaY,EAElB,IADA,IAAIN,EAAaN,EAAU+5B,OAAO54B,MAAM,KAC/BhB,EAAM,EAAGA,EAAMG,EAAWvC,OAAQoC,IACvCiC,EAAQpK,iBAAiBsI,EAAWH,GAAMS,EAAOZ,IAAY,GAKzE,SAASi6G,EAAc73G,GACnB,IAAIqtC,EAAMrtC,EAAQurH,wBAEd/9G,EAAkBjK,SAASiK,gBAE/B,MAAO,CACH+K,IAAK80B,EAAI90B,KAAOtjB,OAAOssB,aAAe/T,EAAgBsd,YAActd,EAAgBg+G,WAAa,GACjGxrG,KAAMqtB,EAAIrtB,MAAQ/qB,OAAOusB,aAAehU,EAAgBuT,aAAevT,EAAgBi+G,YAAc,IAI7G,SAASC,EAAc1rH,EAASsD,GAK5B,IAJA,IAAIoH,EAAS,GACT9J,EAAQ3L,OAAOwO,iBAAiBzD,IAAY,GAC5C2rH,EAAct0H,MAAMD,QAAQkM,GAAUA,EAAS,CAAEA,GAE5CvF,EAAM,EAAGA,EAAM4tH,EAAYhwH,OAAQoC,IAAO,CAC/C,IAAIqb,EAAQuyG,EAAY5tH,GACxB2M,EAAO0O,GAASxY,EAAMwY,GAG1B,OAAO1O,EAGX,SAASkhH,EAAU/uH,GACf,OAAII,MAAMJ,GACCA,EAEJA,EAAQ,KAGnB,SAASikF,EAAY9gF,EAAS4D,GAC1B,IAAIA,EAYG,CACH,IAAIioH,EAASH,EAAc1rH,EAAS,CAAE,QAAS,WAE/C,MAAO,CACHmB,MAAOiM,SAASy+G,EAAO1qH,MAAO,IAC9BL,OAAQsM,SAASy+G,EAAO/qH,OAAQ,KAhBpC,IAAIK,EAAQyC,EAAKzC,MACbL,EAAS8C,EAAK9C,OAEdqoH,EAAQhoH,KACRnB,EAAQY,MAAMO,MAAQyqH,EAAUzqH,IAGhCgoH,EAAQroH,KACRd,EAAQY,MAAME,OAAS8qH,EAAU9qH,IAa7C,SAASgrH,EAAa9rH,EAASxB,GAG3B,IAAK,IAAIjI,UAFM,IAAXiI,IAAqBA,EAAS,IAEjBA,EAEb,IADA,IAAIN,EAAa3H,EAAKohC,OAAO54B,MAAM,KAC1BhB,EAAM,EAAGA,EAAMG,EAAWvC,OAAQoC,IACvCiC,EAAQ5J,oBAAoB8H,EAAWH,GAAMS,EAAOjI,IAAO,GAKvE,SAASw1H,EAAe/rH,GACpB,IAAIojB,EAAMsoG,EAAc1rH,EAAS,CAAE,cAAe,eAC9CgsH,EAAc5oG,EAAI4oG,YAClBC,EAAa7oG,EAAI6oG,WACrB,MAAO,CACH1zG,IAAKrb,WAAW+uH,GAChBjsG,KAAM9iB,WAAW8uH,IAIzB,IAAIE,EAAU,SAAU/D,GACpB,SAAS+D,EAAO7yH,EAAGigB,EAAGzgB,EAAGF,EAAGG,EAAGwoD,QACjB,IAANjoD,IAAgBA,EAAI,QACd,IAANigB,IAAgBA,EAAI,QACd,IAANzgB,IAAgBA,EAAI,QACd,IAANF,IAAgBA,EAAI,QACd,IAANG,IAAgBA,EAAI,QACd,IAANwoD,IAAgBA,EAAI,GAExB6mE,EAASzpH,KAAKvK,MAEdA,KAAKkF,EAAIA,EACTlF,KAAKmlB,EAAIA,EACTnlB,KAAK0E,EAAIA,EACT1E,KAAKwE,EAAIA,EACTxE,KAAK2E,EAAIA,EACT3E,KAAKmtD,EAAIA,EAyGb,OAtGA24D,EAAaiS,EAAQ/D,GACrB+D,EAAO1vH,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WACvD0vH,EAAO1vH,UAAUC,YAAcyvH,EAC/BA,EAAOhwH,GAAKgwH,EAAO1vH,UACnB0vH,EAAOhwH,GAAGI,KAAO4vH,EAAOhwH,GAAGO,YAE3ByvH,EAAO1vH,UAAU2vH,aAAe,SAAuBC,GACnD,OAAO,IAAIF,EACP/3H,KAAKkF,EAAI+yH,EAAO/yH,EAAIlF,KAAK0E,EAAIuzH,EAAO9yG,EACpCnlB,KAAKmlB,EAAI8yG,EAAO/yH,EAAIlF,KAAKwE,EAAIyzH,EAAO9yG,EACpCnlB,KAAKkF,EAAI+yH,EAAOvzH,EAAI1E,KAAK0E,EAAIuzH,EAAOzzH,EACpCxE,KAAKmlB,EAAI8yG,EAAOvzH,EAAI1E,KAAKwE,EAAIyzH,EAAOzzH,EACpCxE,KAAKkF,EAAI+yH,EAAOtzH,EAAI3E,KAAK0E,EAAIuzH,EAAO9qE,EAAIntD,KAAK2E,EAC7C3E,KAAKmlB,EAAI8yG,EAAOtzH,EAAI3E,KAAKwE,EAAIyzH,EAAO9qE,EAAIntD,KAAKmtD,IAIrD4qE,EAAO1vH,UAAU6vH,OAAS,WACtB,IAAIjpG,EAAMjvB,KACNkF,EAAI+pB,EAAI/pB,EACRigB,EAAI8J,EAAI9J,EACR3gB,EAAIyqB,EAAIvqB,EACRC,EAAIsqB,EAAIzqB,EACRqQ,EAAIoa,EAAItqB,EACRC,EAAIqqB,EAAIk+B,EACRgrE,EAAMjzH,EAAIP,EAAIwgB,EAAI3gB,EAEtB,OAAY,IAAR2zH,EACO,KAGJ,IAAIJ,EAAOpzH,EAAIwzH,GAAMhzG,EAAIgzG,GAAM3zH,EAAI2zH,EAAKjzH,EAAIizH,GAC9C3zH,EAAII,EAAID,EAAIkQ,GAAKsjH,GAAMhzG,EAAItQ,EAAI3P,EAAIN,GAAKuzH,IAGjDJ,EAAO1vH,UAAUlB,MAAQ,WACrB,OAAO,IAAI4wH,EAAO/3H,KAAKkF,EAAGlF,KAAKmlB,EAAGnlB,KAAK0E,EAAG1E,KAAKwE,EAAGxE,KAAK2E,EAAG3E,KAAKmtD,IAGnE4qE,EAAO1vH,UAAUyoD,OAAS,SAAiBm/D,GACvC,QAAKA,IAIEjwH,KAAKkF,IAAM+qH,EAAM/qH,GAAKlF,KAAKmlB,IAAM8qG,EAAM9qG,GAC1CnlB,KAAK0E,IAAMurH,EAAMvrH,GAAK1E,KAAKwE,IAAMyrH,EAAMzrH,GACvCxE,KAAK2E,IAAMsrH,EAAMtrH,GAAK3E,KAAKmtD,IAAM8iE,EAAM9iE,IAG/C4qE,EAAO1vH,UAAU0N,MAAQ,SAAkBC,GAQvC,OAPAhW,KAAKkF,EAAI6Q,EAAM/V,KAAKkF,EAAG8Q,GACvBhW,KAAKmlB,EAAIpP,EAAM/V,KAAKmlB,EAAGnP,GACvBhW,KAAK0E,EAAIqR,EAAM/V,KAAK0E,EAAGsR,GACvBhW,KAAKwE,EAAIuR,EAAM/V,KAAKwE,EAAGwR,GACvBhW,KAAK2E,EAAIoR,EAAM/V,KAAK2E,EAAGqR,GACvBhW,KAAKmtD,EAAIp3C,EAAM/V,KAAKmtD,EAAGn3C,GAEhBhW,MAGX+3H,EAAO1vH,UAAUsrD,QAAU,SAAkB39C,GACzC,IAAIO,EAAS,CAAEvW,KAAKkF,EAAGlF,KAAKmlB,EAAGnlB,KAAK0E,EAAG1E,KAAKwE,EAAGxE,KAAK2E,EAAG3E,KAAKmtD,GAE5D,GAAI6nE,EAAQh/G,GACR,IAAK,IAAIzO,EAAI,EAAGA,EAAIgP,EAAO/O,OAAQD,IAC/BgP,EAAOhP,GAAKwO,EAAMQ,EAAOhP,GAAIyO,GAIrC,OAAOO,GAGXwhH,EAAO1vH,UAAU6I,SAAW,SAAmB8E,EAAWoiH,GAGtD,YAFkB,IAAdA,IAAwBA,EAAY,KAEjCp4H,KAAK2zD,QAAQ39C,GAAWnL,KAAKutH,IAGxCL,EAAO/nF,UAAY,SAAoB5qC,EAAGjB,GACtC,OAAO,IAAI4zH,EAAO,EAAG,EAAG,EAAG,EAAG3yH,EAAGjB,IAGrC4zH,EAAOM,KAAO,WACV,OAAO,IAAIN,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,IAGrCA,EAAOhnF,OAAS,SAAiBunF,EAAOlzH,EAAGjB,GACvC,IAAI8zH,EAAS,IAAIF,EAQjB,OAPAE,EAAO/yH,EAAI7B,KAAKk1H,IAAIxB,EAAIuB,IACxBL,EAAO9yG,EAAI9hB,KAAKm1H,IAAIzB,EAAIuB,IACxBL,EAAOvzH,GAAKuzH,EAAO9yG,EACnB8yG,EAAOzzH,EAAIyzH,EAAO/yH,EAClB+yH,EAAOtzH,EAAKS,EAAIA,EAAI6yH,EAAO/yH,EAAIf,EAAI8zH,EAAO9yG,GAAM,EAChD8yG,EAAO9qE,EAAKhpD,EAAIA,EAAI8zH,EAAO/yH,EAAIE,EAAI6yH,EAAO9yG,GAAM,EAEzC8yG,GAGXF,EAAOpoF,MAAQ,SAAgB8oF,EAAQC,GACnC,OAAO,IAAIX,EAAOU,EAAQ,EAAG,EAAGC,EAAQ,EAAG,IAGxCX,EAzHE,CA0HXnwH,GAEFmwH,EAAOY,SAAWZ,EAAOM,OAEzB,IAAIO,EAAe,iBAYnB,SAASC,EAAgBhtH,GACrB,IAAI0nC,EAAYjkC,iBAAiBzD,GAAS0nC,UAE1C,MAAkB,SAAdA,EACOwkF,EAAOM,OAdtB,SAAqBS,GACjB,IAAI3oH,EAAQ2oH,EAAa3oH,MAAMyoH,GAC/B,GAAc,OAAVzoH,GAAmC,IAAjBA,EAAM3I,OACxB,OAAOuwH,EAAOM,OAGlB,IAAI5pG,EAAUte,EAAM,GAAGvF,MAAM,KAAK0P,KAAI,SAAUlV,GAAK,OAAO2D,WAAW3D,MACvE,OAAO,IAAKiL,SAAShI,UAAUmB,KAAKpB,MAAO2vH,EAAQ,CAAE,MAAO16G,OAAQoR,KAU7DsqG,CAAYxlF,GAGvB,SAASylF,EAAantH,GAClB,IAAKA,EACD,OAAOksH,EAAOM,OAKlB,IAFA,IAAIJ,EAASY,EAAgBhtH,GACzBM,EAASN,EAAQotH,cACd9sH,GAAQ,CACX,IAAI+sH,EAAeL,EAAgB1sH,GACnC8rH,EAASA,EAAOD,aAAakB,GAC7B/sH,EAASA,EAAO8sH,cAIpB,OADAhB,EAAO9yG,EAAI8yG,EAAOvzH,EAAIuzH,EAAOtzH,EAAIszH,EAAO9qE,EAAI,EACrC8qE,EAGX,IAAItS,EAAO,CACV5rE,OAAQ66E,EACRE,cAAeA,EACflP,cAAeA,EACfoP,QAASA,EACTE,aAAcA,EACdM,IAAKA,EACLG,aAAcA,EACdY,iBAAkBA,EAClBC,aAAcA,EACdC,cAAeA,EACft0F,KAAMA,EACNu0F,WAAYA,EACZC,UAAWA,EACX/jF,IAAKA,EACLizE,WAAYA,EACZkR,IAAKA,EACLhhH,MAAOA,EACPmhH,eAAgBA,EAChBC,WAAYA,EACZzT,cAAeA,EACf/2B,YAAaA,EACb4qC,cAAeA,EACfI,aAAcA,EACdC,eAAgBA,EAChBoB,aAAcA,EACd7D,WAAYA,EACZE,QAASA,EACTE,QAASA,GAGN4D,EAAa,GAAGjoH,SAEhBkoH,EAAgB,SAAUC,GAC1B,SAASD,EAAalyH,EAAS+X,GAQ3B,IAAK,IAAIgG,UANM,IAAXhG,IAAqBA,EAAS,IAElCo6G,EAAgB9uH,KAAKvK,MAErBA,KAAKif,OAASA,EAEI/X,EAAS,CACvB,IAAIY,EAASZ,EAAQ+d,GACrBnd,EATW9H,KASO62E,MAAM/uE,EAAQmd,GATrBjlB,KAUFilB,GAASnd,GAuF1B,OAnFAg+G,EAAasT,EAAcC,GAC3BD,EAAa/wH,UAAY5H,OAAOumD,OAAQqyE,GAAmBA,EAAgBhxH,WAC3E+wH,EAAa/wH,UAAUC,YAAc8wH,EACrCA,EAAarxH,GAAKqxH,EAAa/wH,UAC/B+wH,EAAarxH,GAAGI,KAAOixH,EAAarxH,GAAGO,YAEvC8wH,EAAa/wH,UAAUknB,IAAM,SAActK,GAIvC,IAHA,IAAIjV,EAAQiV,EAAMra,MAAM,KACpB2L,EAASvW,KAENgQ,EAAMxI,QAAU+O,GAAQ,CAE3BA,EAASA,EADEvG,EAAM6F,SAIrB,OAAOU,GAGX6iH,EAAa/wH,UAAUmnB,IAAM,SAAcvK,EAAOvc,GAChC1I,KAAKuvB,IAAItK,KAEPvc,IACZ1I,KAAKutD,KAAKtoC,EAAOjlB,KAAK62E,MAAMnuE,EAAOuc,IACnCjlB,KAAKu0H,cAAc,CACftvG,MAAOjlB,KAAKif,OAASgG,EACrBvc,MAAOA,MAKnB0wH,EAAa/wH,UAAUklD,KAAO,SAAetoC,EAAOvc,GAChD,IAEI8kD,EAAYvoC,EAAMtP,QAAQ,MAAQ,EAClC2jH,EAAYt5H,KACZquD,EAAYppC,EAEhB,GAAIuoC,EAAW,CAIX,IAHA,IAAIx9C,EAAQq+C,EAAUzjD,MAAM,KACxBqU,EAASjf,KAAKif,OAEXjP,EAAMxI,OAAS,GAAG,CAErByX,IADAovC,EAAYr+C,EAAM6F,SACI,IAEtB,IAAImX,EAAMssG,EAAUjrE,GAEfrhC,KACDA,EAAM,IAAIosG,EAAa,GAAIn6G,IACvBk1G,YAlBDn0H,MAmBHs5H,EAAUjrE,GAAarhC,GAE3BssG,EAAYtsG,EAEhBqhC,EAAYr+C,EAAM,GAGtBspH,EAAUC,OAAOlrE,GACjBirE,EAAUjrE,GAAa3lD,GAG3B0wH,EAAa/wH,UAAUkxH,OAAS,SAAiBt0G,GAC7C,IAAIxR,EAAUzT,KAAKilB,GACfxR,GAAWA,EAAQ2gH,gBACnB3gH,EAAQ2gH,eAAep0H,OAI/Bo5H,EAAa/wH,UAAUwuE,MAAQ,SAAgBjrB,EAAQ3mC,GACnD,IAAIvf,EAAOyzH,EAAW5uH,KAAKqhD,GACvB4tE,EAAU5tE,EAUd,OARgB,OAAZ4tE,GAAoBxE,EAAQwE,IAAqB,oBAAT9zH,IAClCkmD,aAAkBwtE,GAAmBxtE,aAAkBhkD,IACzD4xH,EAAU,IAAIJ,EAAaI,EAASx5H,KAAKif,OAASgG,EAAQ,MAG9Du0G,EAAQrF,YAAYn0H,OAGjBw5H,GAGJJ,EAnGQ,CAoGjBrF,GAEF,SAAS0F,EAAYx0G,GACjB,OAAO,SAASvc,GAMZ,OALI1I,KAAKilB,KAAWvc,IAChB1I,KAAKilB,GAASvc,EACd1I,KAAKw0H,kBAGFx0H,MAIf,SAAS05H,EAAYz0G,GACjB,OAAO,WACH,OAAOjlB,KAAKilB,IAepB,IAAI00G,EAAgB,SAAUC,EAAOxlH,GACjC,IAAImC,EAAU,SAAUqjH,GACpB,SAASrjH,IACLqjH,EAAMxxH,MAAMpI,KAAMqH,WAOtB,OANCy+G,EAAavvG,EAAQqjH,GACtBrjH,EAAOlO,UAAY5H,OAAOumD,OAAQ4yE,GAASA,EAAMvxH,WACjDkO,EAAOlO,UAAUC,YAAciO,EAC/BA,EAAOxO,GAAKwO,EAAOlO,UACnBkO,EAAOxO,GAAGI,KAAOoO,EAAOxO,GAAGO,YAEpBiO,EATE,CAUXqjH,GAGF,OAzBJ,SAAyB7xH,EAAI6mB,GACzB,IAAK,IAAIrnB,EAAI,EAAGA,EAAIqnB,EAAOpnB,OAAQD,IAAK,CACpC,IAAInF,EAAOwsB,EAAOrnB,GACdsyH,EAAcz3H,EAAK0I,OAAO,GAAGiE,cACf3M,EAAK4I,UAAU,EAAG5I,EAAKoF,QAEzCO,EAAG,MAAQ8xH,GAAeJ,EAAYr3H,GACtC2F,EAAG,MAAQ8xH,GAAeH,EAAYt3H,IAgB1C03H,CAAgBvjH,EAAOlO,UAAW+L,GAE3BmC,GAGX,SAASwjH,EAAS1mF,GACd,OAAIA,GAAmD,mBAA1BA,EAAe4kF,OACjC5kF,EAAe4kF,SAGnB5kF,EAGX,IAAI2mF,EAAS,SAAUC,GACnB,SAASD,EAAM50H,EAAGjB,GACd81H,EAAW1vH,KAAKvK,MAEhBA,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,EAGlB2hH,EAAakU,EAAOC,GACpBD,EAAM3xH,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC1D2xH,EAAM3xH,UAAUC,YAAc0xH,EAC9BA,EAAMjyH,GAAKiyH,EAAM3xH,UACjB2xH,EAAMjyH,GAAGI,KAAO6xH,EAAMjyH,GAAGO,YAEzB,IAAI4xH,EAAkB,CAAEhnH,KAAM,IAwK9B,OAtKA8mH,EAAM3xH,UAAUyoD,OAAS,SAAiBm/D,GACtC,OAAOA,GAASA,EAAM7qH,IAAMpF,KAAKoF,GAAK6qH,EAAM9rH,IAAMnE,KAAKmE,GAG3D61H,EAAM3xH,UAAUlB,MAAQ,WACpB,OAAO,IAAI6yH,EAAMh6H,KAAKoF,EAAGpF,KAAKmE,IAGlC61H,EAAM3xH,UAAU0oC,OAAS,SAAiBunF,EAAO1/E,GAC7C,IAAIuhF,EAAcH,EAAMhzE,OAAOpO,IAAWohF,EAAM9mH,KAEhD,OAAOlT,KAAKuzC,UAAUwkF,EAAOhnF,OAAOunF,EAAO6B,EAAY/0H,EAAG+0H,EAAYh2H,KAG1E61H,EAAM3xH,UAAU2nC,UAAY,SAAoB5qC,EAAGjB,GAM/C,OALAnE,KAAKoF,GAAKA,EACVpF,KAAKmE,GAAKA,EAEVnE,KAAKw0H,iBAEEx0H,MAGXg6H,EAAM3xH,UAAU+xH,cAAgB,SAAwBC,GACpD,OAAOr6H,KAAKgwC,UAAUqqF,EAAMj1H,EAAGi1H,EAAMl2H,IAGzC61H,EAAM3xH,UAAUkyB,KAAO,SAAen1B,EAAGjB,GAErC,OADAnE,KAAKoF,EAAIpF,KAAKmE,EAAI,EACXnE,KAAKgwC,UAAU5qC,EAAGjB,IAG7B61H,EAAM3xH,UAAUsnC,MAAQ,SAAgB8oF,EAAQC,GAQ5C,YAPe,IAAXA,IAAqBA,EAASD,GAElCz4H,KAAKoF,GAAKqzH,EACVz4H,KAAKmE,GAAKu0H,EAEV14H,KAAKw0H,iBAEEx0H,MAGXg6H,EAAM3xH,UAAUiyH,UAAY,SAAoB7B,EAAQC,GACpD,OAAO14H,KAAKmH,QAAQwoC,MAAM8oF,EAAQC,IAGtCsB,EAAM3xH,UAAUkrC,UAAY,SAAoBF,GAC5C,IAAI4kF,EAAS8B,EAAS1mF,GAElBjuC,EADMpF,KACEoF,EACRjB,EAFMnE,KAEEmE,EAOZ,OALAnE,KAAKoF,EAAI6yH,EAAO/yH,EAAIE,EAAI6yH,EAAOvzH,EAAIP,EAAI8zH,EAAOtzH,EAC9C3E,KAAKmE,EAAI8zH,EAAO9yG,EAAI/f,EAAI6yH,EAAOzzH,EAAIL,EAAI8zH,EAAO9qE,EAE9CntD,KAAKw0H,iBAEEx0H,MAGXg6H,EAAM3xH,UAAUkyH,cAAgB,SAAwBlnF,GACpD,IAAIgnF,EAAQr6H,KAAKmH,QAMjB,OAJIksC,GACAgnF,EAAM9mF,UAAUF,GAGbgnF,GAGXL,EAAM3xH,UAAUmyH,WAAa,SAAqBH,GAC9C,IAAIh9C,EAAKr9E,KAAKoF,EAAIi1H,EAAMj1H,EACpBk4E,EAAKt9E,KAAKmE,EAAIk2H,EAAMl2H,EAExB,OAAOd,KAAKo6E,KAAKJ,EAAKA,EAAKC,EAAKA,IAGpC08C,EAAM3xH,UAAU0N,MAAQ,SAAkBrK,GAMtC,OALA1L,KAAKoF,EAAI2Q,EAAM/V,KAAKoF,EAAGsG,GACvB1L,KAAKmE,EAAI4R,EAAM/V,KAAKmE,EAAGuH,GAEvB1L,KAAKw0H,iBAEEx0H,MAGXg6H,EAAM3xH,UAAUsrD,QAAU,SAAkBjoD,GACxC,IAAI+uH,EAAUzF,EAAQtpH,GAItB,MAAO,CAHC+uH,EAAU1kH,EAAM/V,KAAKoF,EAAGsG,GAAU1L,KAAKoF,EACvCq1H,EAAU1kH,EAAM/V,KAAKmE,EAAGuH,GAAU1L,KAAKmE,IAKnD61H,EAAM3xH,UAAU6I,SAAW,SAAmBxF,EAAQ0sH,QAChC,IAAdA,IAAwBA,EAAY,KAExC,IACIhzH,EADMpF,KACEoF,EACRjB,EAFMnE,KAEEmE,EAOZ,OALI6wH,EAAQtpH,KACRtG,EAAI2Q,EAAM3Q,EAAGsG,GACbvH,EAAI4R,EAAM5R,EAAGuH,IAGVtG,EAAIgzH,EAAYj0H,GAG3B61H,EAAMhzE,OAAS,SAAiB0zE,EAAMC,GAClC,GAAI3F,EAAQ0F,GACR,OAAIA,aAAgBV,EACTU,EACqB,IAArBrzH,UAAUG,QAAgC,IAAhBkzH,EAAKlzH,OAC/B,IAAIwyH,EAAMU,EAAK,GAAIA,EAAK,IAG5B,IAAIV,EAAMU,EAAMC,IAI/BX,EAAM7jH,IAAM,WAMR,IALA,IAAI/O,EAAcC,UAEdw8E,EAAOwxC,EACPvxC,EAAOuxC,EAEF9tH,EAAI,EAAGA,EAAIF,UAAUG,OAAQD,IAAK,CACvC,IAAI8yH,EAAQjzH,EAAYG,GACxBs8E,EAAOxgF,KAAK8S,IAAIkkH,EAAMj1H,EAAGy+E,GACzBC,EAAOzgF,KAAK8S,IAAIkkH,EAAMl2H,EAAG2/E,GAG7B,OAAO,IAAIk2C,EAAMn2C,EAAMC,IAG3Bk2C,EAAMphH,IAAM,WAMR,IALA,IAAIxR,EAAcC,UAEduzH,EAAOrF,EACPsF,EAAOtF,EAEFhuH,EAAI,EAAGA,EAAIF,UAAUG,OAAQD,IAAK,CACvC,IAAI8yH,EAAQjzH,EAAYG,GACxBqzH,EAAOv3H,KAAKuV,IAAIyhH,EAAMj1H,EAAGw1H,GACzBC,EAAOx3H,KAAKuV,IAAIyhH,EAAMl2H,EAAG02H,GAG7B,OAAO,IAAIb,EAAMY,EAAMC,IAG3Bb,EAAMc,SAAW,WACb,OAAO,IAAId,EAAMzE,EAASA,IAG9ByE,EAAMe,SAAW,WACb,OAAO,IAAIf,EAAM3E,EAASA,IAG9B6E,EAAgBhnH,KAAKqc,IAAM,WACvB,OAAO,IAAIyqG,EAAM,EAAG,IAGxBv5H,OAAOu6H,iBAAkBhB,EAAOE,GAEzBF,EAtLC,CAuLVL,EAAc5F,EAAc,CAAE,IAAK,OAEjCkH,EAAQ,SAAUhB,GAClB,SAASgB,EAAKjuH,EAAOL,GACjBstH,EAAW1vH,KAAKvK,MAEhBA,KAAKgN,MAAQA,GAAS,EACtBhN,KAAK2M,OAASA,GAAU,EAG5Bm5G,EAAamV,EAAMhB,GACnBgB,EAAK5yH,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACzD4yH,EAAK5yH,UAAUC,YAAc2yH,EAC7BA,EAAKlzH,GAAKkzH,EAAK5yH,UACf4yH,EAAKlzH,GAAGI,KAAO8yH,EAAKlzH,GAAGO,YAEvB,IAAI4xH,EAAkB,CAAEhnH,KAAM,IAoC9B,OAlCA+nH,EAAK5yH,UAAUyoD,OAAS,SAAiBm/D,GACrC,OAAOA,GAASA,EAAMjjH,QAAUhN,KAAKgN,OAASijH,EAAMtjH,SAAW3M,KAAK2M,QAGxEsuH,EAAK5yH,UAAUlB,MAAQ,WACnB,OAAO,IAAI8zH,EAAKj7H,KAAKgN,MAAOhN,KAAK2M,SAGrCsuH,EAAK5yH,UAAUsrD,QAAU,SAAkBjoD,GACvC,IAAI+uH,EAAUzF,EAAQtpH,GAItB,MAAO,CAHK+uH,EAAU1kH,EAAM/V,KAAKgN,MAAOtB,GAAU1L,KAAKgN,MAC1CytH,EAAU1kH,EAAM/V,KAAK2M,OAAQjB,GAAU1L,KAAK2M,SAK7DsuH,EAAKj0E,OAAS,SAAiB0zE,EAAMC,GACjC,GAAI3F,EAAQ0F,GACR,OAAIA,aAAgBO,EACTP,EACqB,IAArBrzH,UAAUG,QAAgC,IAAhBkzH,EAAKlzH,OAC/B,IAAIyzH,EAAKP,EAAK,GAAIA,EAAK,IAG3B,IAAIO,EAAKP,EAAMC,IAI9BT,EAAgBhnH,KAAKqc,IAAM,WACvB,OAAO,IAAI0rG,EAAK,EAAG,IAGvBx6H,OAAOu6H,iBAAkBC,EAAMf,GAExBe,EAlDA,CAmDTtB,EAAc5F,EAAc,CAAE,QAAS,YAErCmH,EAAQ,SAAU7B,GAClB,SAAS6B,EAAKtiF,EAAQnpC,EAAM0rH,QACT,IAAXviF,IAAqBA,EAAS,IAAIohF,QACzB,IAATvqH,IAAmBA,EAAO,IAAIwrH,QACb,IAAjBE,IAA2BA,EAAe,GAE9C9B,EAAgB9uH,KAAKvK,MAErBA,KAAKo7H,UAAUxiF,GACf54C,KAAKiyB,QAAQxiB,GACbzP,KAAKq7H,gBAAgBF,GAyKzB,OAtKArV,EAAaoV,EAAM7B,GACnB6B,EAAK7yH,UAAY5H,OAAOumD,OAAQqyE,GAAmBA,EAAgBhxH,WACnE6yH,EAAK7yH,UAAUC,YAAc4yH,EAC7BA,EAAKnzH,GAAKmzH,EAAK7yH,UACf6yH,EAAKnzH,GAAGI,KAAO+yH,EAAKnzH,GAAGO,YAEvB4yH,EAAK7yH,UAAUlB,MAAQ,WACnB,OAAO,IAAI+zH,EACPl7H,KAAK44C,OAAOzxC,QACZnH,KAAKyP,KAAKtI,UAIlB+zH,EAAK7yH,UAAUyoD,OAAS,SAAiBm/D,GACrC,OAAOA,GACAA,EAAMr3E,OAAOkY,OAAO9wD,KAAK44C,SACzBq3E,EAAMxgH,KAAKqhD,OAAO9wD,KAAKyP,OAGlCyrH,EAAK7yH,UAAU+yH,UAAY,SAAoB1yH,GAG3C,OAFA1I,KAAK20H,eAAe,SAAUqF,EAAMhzE,OAAOt+C,IAC3C1I,KAAKw0H,iBACEx0H,MAGXk7H,EAAK7yH,UAAUizH,UAAY,WACvB,OAAOt7H,KAAK44C,QAGhBsiF,EAAK7yH,UAAUgzH,gBAAkB,SAA0B1vG,GAIvD,OAHA3rB,KAAKm7H,aAAej4H,MAAMD,QAAQ0oB,GAAUA,EAAS,CAAEA,EAAQA,GAE/D3rB,KAAKw0H,iBACEx0H,MAGXk7H,EAAK7yH,UAAUkzH,gBAAkB,WAC7B,OAAOv7H,KAAKm7H,cAGhBD,EAAK7yH,UAAU4pB,QAAU,SAAkBvpB,GAGvC,OAFA1I,KAAK20H,eAAe,OAAQsG,EAAKj0E,OAAOt+C,IACxC1I,KAAKw0H,iBACEx0H,MAGXk7H,EAAK7yH,UAAUupB,QAAU,WACrB,OAAO5xB,KAAKyP,MAGhByrH,EAAK7yH,UAAU2E,MAAQ,WACnB,OAAOhN,KAAKyP,KAAKzC,OAGrBkuH,EAAK7yH,UAAUsE,OAAS,WACpB,OAAO3M,KAAKyP,KAAK9C,QAGrBuuH,EAAK7yH,UAAUmzH,QAAU,WACrB,OAAOx7H,KAAK44C,OAAOzxC,SAGvB+zH,EAAK7yH,UAAUozH,YAAc,WACzB,OAAOz7H,KAAK44C,OAAOzxC,QAAQ6oC,UAAUhwC,KAAKgN,QAAShN,KAAK2M,WAG5DuuH,EAAK7yH,UAAUqzH,SAAW,WACtB,OAAO17H,KAAK44C,OAAOzxC,QAAQ6oC,UAAUhwC,KAAKgN,QAAS,IAGvDkuH,EAAK7yH,UAAUszH,WAAa,WACxB,OAAO37H,KAAK44C,OAAOzxC,QAAQ6oC,UAAU,EAAGhwC,KAAK2M,WAGjDuuH,EAAK7yH,UAAUk1E,OAAS,WACpB,OAAOv9E,KAAK44C,OAAOzxC,QAAQ6oC,UAAUhwC,KAAKgN,QAAU,EAAGhN,KAAK2M,SAAW,IAG3EuuH,EAAK7yH,UAAUuzH,KAAO,SAAe3D,GACjC,IAAI4D,EAAK77H,KAAKw7H,UAAUjB,cAActC,GAClC6D,EAAK97H,KAAK07H,WAAWnB,cAActC,GACnC8D,EAAK/7H,KAAKy7H,cAAclB,cAActC,GACtC+D,EAAKh8H,KAAK27H,aAAapB,cAActC,GAEzC,OAAOiD,EAAKe,WAAWJ,EAAIC,EAAIC,EAAIC,IAGvCd,EAAK7yH,UAAUkyH,cAAgB,SAAwBv1H,GACnD,OAAOk2H,EAAKe,WACRj8H,KAAKw7H,UAAUjoF,UAAUvuC,GACzBhF,KAAKy7H,cAAcloF,UAAUvuC,KAIrCk2H,EAAK7yH,UAAU6zH,OAAS,SAAiB92H,EAAGjB,GAQxC,YAPU,IAANA,IAAgBA,EAAIiB,GAExBpF,KAAKyP,KAAKzC,OAAS,EAAI5H,EACvBpF,KAAKyP,KAAK9C,QAAU,EAAIxI,EAExBnE,KAAK44C,OAAO5I,WAAW5qC,GAAIjB,GAEpBnE,MAGXk7H,EAAK7yH,UAAU8zH,WAAa,SAAqB/2H,EAAGjB,GAChD,OAAOnE,KAAKmH,QAAQ+0H,OAAO92H,EAAGjB,IAGlC+2H,EAAK7yH,UAAU+zH,cAAgB,SAAwB/B,GACnD,IAAIzhF,EAAS54C,KAAK44C,OACd6iF,EAAcz7H,KAAKy7H,cACvB,QAASpB,EAAMj1H,EAAIwzC,EAAOxzC,GAAKi1H,EAAMl2H,EAAIy0C,EAAOz0C,GAAKs3H,EAAYr2H,EAAIi1H,EAAMj1H,GAAKq2H,EAAYt3H,EAAIk2H,EAAMl2H,IAG1G+2H,EAAK7yH,UAAUg0H,UAAY,SAAoBhC,EAAOrtH,GAClD,IAAIsvH,EAAYt8H,KAAKm8H,WAAWnvH,EAAOA,GACnCuvH,EAAYv8H,KAAKm8H,YAAYnvH,GAAQA,GAEzC,OAAOsvH,EAAUF,cAAc/B,KAAWkC,EAAUH,cAAc/B,IAGtEa,EAAKe,WAAa,WACd,IAAIT,EAAUxB,EAAM7jH,IAAI/N,MAAM,KAAMf,WAChCo0H,EAAczB,EAAMphH,IAAIxQ,MAAM,KAAMf,WACpCoI,EAAO,IAAIwrH,EACXQ,EAAYr2H,EAAIo2H,EAAQp2H,EACxBq2H,EAAYt3H,EAAIq3H,EAAQr3H,GAG5B,OAAO,IAAI+2H,EAAKM,EAAS/rH,IAG7ByrH,EAAKsB,MAAQ,SAAgBt3H,EAAGigB,GAC5B,OAAO+1G,EAAKe,WACRjC,EAAM7jH,IAAIjR,EAAEs2H,UAAWr2G,EAAEq2G,WACzBxB,EAAMphH,IAAI1T,EAAEu2H,cAAet2G,EAAEs2G,iBAIrCP,EAAKuB,UAAY,SAAoBv3H,EAAGigB,GACpC,IAAIu3G,EAAQ,CACR7wG,KAAM3mB,EAAEs2H,UAAUp2H,EAClBgf,IAAKlf,EAAEs2H,UAAUr3H,EACjB2nB,MAAO5mB,EAAEu2H,cAAcr2H,EACvB2mB,OAAQ7mB,EAAEu2H,cAAct3H,GAGxBw4H,EAAQ,CACR9wG,KAAM1G,EAAEq2G,UAAUp2H,EAClBgf,IAAKe,EAAEq2G,UAAUr3H,EACjB2nB,MAAO3G,EAAEs2G,cAAcr2H,EACvB2mB,OAAQ5G,EAAEs2G,cAAct3H,GAG5B,GAAIu4H,EAAM7wG,MAAQ8wG,EAAM7wG,OACpB6wG,EAAM9wG,MAAQ6wG,EAAM5wG,OACpB4wG,EAAMt4G,KAAOu4G,EAAM5wG,QACnB4wG,EAAMv4G,KAAOs4G,EAAM3wG,OACnB,OAAOmvG,EAAKe,WACR,IAAIjC,EAAM32H,KAAKuV,IAAI8jH,EAAM7wG,KAAM8wG,EAAM9wG,MAAOxoB,KAAKuV,IAAI8jH,EAAMt4G,IAAKu4G,EAAMv4G,MACtE,IAAI41G,EAAM32H,KAAK8S,IAAIumH,EAAM5wG,MAAO6wG,EAAM7wG,OAAQzoB,KAAK8S,IAAIumH,EAAM3wG,OAAQ4wG,EAAM5wG,WAKhFmvG,EAnLA,CAoLTnH,GAEE6I,EAAkB,SAAUvD,GAC5B,SAASuD,EAAe3E,QACL,IAAXA,IAAqBA,EAASF,EAAOM,QAEzCgB,EAAgB9uH,KAAKvK,MAErBA,KAAK68H,QAAU5E,EAmFnB,OAhFAnS,EAAa8W,EAAgBvD,GAC7BuD,EAAev0H,UAAY5H,OAAOumD,OAAQqyE,GAAmBA,EAAgBhxH,WAC7Eu0H,EAAev0H,UAAUC,YAAcs0H,EACvCA,EAAe70H,GAAK60H,EAAev0H,UACnCu0H,EAAe70H,GAAGI,KAAOy0H,EAAe70H,GAAGO,YAE3Cs0H,EAAev0H,UAAUlB,MAAQ,WAC7B,OAAO,IAAIy1H,EACP58H,KAAK68H,QAAQ11H,UAIrBy1H,EAAev0H,UAAUyoD,OAAS,SAAiBm/D,GAC/C,OAAOA,GACAA,EAAM4M,QAAQ/rE,OAAO9wD,KAAK68H,UAGrCD,EAAev0H,UAAU2nC,UAAY,SAAoB5qC,EAAGjB,GAIxD,OAHAnE,KAAK68H,QAAU78H,KAAK68H,QAAQ7E,aAAaD,EAAO/nF,UAAU5qC,EAAGjB,IAE7DnE,KAAK88H,iBACE98H,MAGX48H,EAAev0H,UAAUsnC,MAAQ,SAAgB8oF,EAAQC,EAAQ9/E,QAC9C,IAAX8/E,IAAqBA,EAASD,QACnB,IAAX7/E,IAAqBA,EAAS,MAElC,IAAIuhF,EAAcvhF,EAclB,OAZIuhF,IACAA,EAAcH,EAAMhzE,OAAOmzE,GAC3Bn6H,KAAK68H,QAAU78H,KAAK68H,QAAQ7E,aAAaD,EAAO/nF,UAAUmqF,EAAY/0H,EAAG+0H,EAAYh2H,KAGzFnE,KAAK68H,QAAU78H,KAAK68H,QAAQ7E,aAAaD,EAAOpoF,MAAM8oF,EAAQC,IAE1DyB,IACAn6H,KAAK68H,QAAU78H,KAAK68H,QAAQ7E,aAAaD,EAAO/nF,WAAWmqF,EAAY/0H,GAAI+0H,EAAYh2H,KAG3FnE,KAAK88H,iBACE98H,MAGX48H,EAAev0H,UAAU0oC,OAAS,SAAiBunF,EAAO1/E,GACtD,IAAIuhF,EAAcH,EAAMhzE,OAAOpO,IAAWohF,EAAM9mH,KAKhD,OAHAlT,KAAK68H,QAAU78H,KAAK68H,QAAQ7E,aAAaD,EAAOhnF,OAAOunF,EAAO6B,EAAY/0H,EAAG+0H,EAAYh2H,IAEzFnE,KAAK88H,iBACE98H,MAGX48H,EAAev0H,UAAU00H,SAAW,SAAmB1pF,GACnD,IAAI4kF,EAAS8B,EAAS1mF,GAKtB,OAHArzC,KAAK68H,QAAU78H,KAAK68H,QAAQ7E,aAAaC,GAEzCj4H,KAAK88H,iBACE98H,MAGX48H,EAAev0H,UAAU4vH,OAAS,SAAiBvvH,GAC/C,OAAIA,GACA1I,KAAK68H,QAAUn0H,EACf1I,KAAK88H,iBACE98H,MAGJA,KAAK68H,SAGhBD,EAAev0H,UAAUy0H,eAAiB,WACtC98H,KAAKu0H,cAAc,CACftvG,MAAO,YACPvc,MAAO1I,QAIR48H,EAzFU,CA0FnB7I,GAEF,SAASiJ,GAAY/E,GACjB,OAAe,OAAXA,EACO,KAGPA,aAAkB2E,EACX3E,EAGJ,IAAI2E,EAAe3E,GAG9B,IAAIgF,GAAa,SAAU5D,GACvB,SAASlyG,EAAQjgB,GACbmyH,EAAgB9uH,KAAKvK,MAErBA,KAAKuI,aAAarB,GAGtB4+G,EAAa3+F,EAASkyG,GACtBlyG,EAAQ9e,UAAY5H,OAAOumD,OAAQqyE,GAAmBA,EAAgBhxH,WACtE8e,EAAQ9e,UAAUC,YAAc6e,EAChCA,EAAQpf,GAAKof,EAAQ9e,UACrB8e,EAAQpf,GAAGI,KAAOgf,EAAQpf,GAAGO,YAE7B,IAAI40H,EAAqB,CAAExnG,SAAU,IAwIrC,OAtIAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,QAGXpI,EAAQ9e,UAAUE,aAAe,SAAuBrB,QACpC,IAAZA,IAAsBA,EAAU,IAEpC,IAAI4yC,EAAO5yC,EAAQ4yC,KACfvG,EAAYrsC,EAAQqsC,UAEpBA,IACArsC,EAAQqsC,UAAYypF,GAAYzpF,IAGhCuG,IAASA,EAAKnqB,KACdmqB,EAAKnqB,GAAKulG,KAGdl1H,KAAKkH,QAAU,IAAIkyH,EAAalyH,GAChClH,KAAKkH,QAAQitH,YAAYn0H,OAG7BmnB,EAAQ9e,UAAUkrC,UAAY,SAAoB7qC,GAC9C,IAAIssH,EAAQtsH,GAGR,OAAO1I,KAAKkH,QAAQqoB,IAAI,aAFxBvvB,KAAKkH,QAAQsoB,IAAI,YAAawtG,GAAYt0H,KAMlDye,EAAQ9e,UAAU80H,gBAAkB,WAIhC,IAHA,IACIjE,EADArtH,EAAU7L,KAGP6L,EAAQM,QAAQ,CAEnB,IAAIknC,GADJxnC,EAAUA,EAAQM,QACWonC,YACzBF,IACA6lF,EAAe7lF,EAAe4kF,SAASD,aAAakB,GAAgBnB,EAAOM,SAInF,GAAIa,EACA,OAAO8D,GAAY9D,IAI3B/xG,EAAQ9e,UAAU+0H,iBAAmB,SAA2BD,QACpC,IAApBA,IAA8BA,EAAkBn9H,KAAKm9H,mBAEzD,IAIIE,EAHAC,EAAgBvD,EADG/5H,KAAKuzC,aAGxB2lF,EAAea,EAASoD,GAS5B,GALIE,EADAC,GAAiBpE,EACAA,EAAalB,aAAasF,GAE1BA,GAAiBpE,EAIlC,OAAO8D,GAAYK,IAI3Bl2G,EAAQ9e,UAAUiE,QAAU,SAAkB5D,GAC1C,OAAIssH,EAAQtsH,IACR1I,KAAKkH,QAAQsoB,IAAI,UAAW9mB,GACrB1I,OAG4B,IAAhCA,KAAKkH,QAAQqoB,IAAI,YAG5BpI,EAAQ9e,UAAUyxC,KAAO,SAAepxC,GACpC,IAAIxB,EAAUlH,KAAKkH,QACnB,OAAI8tH,EAAQtsH,IACJA,IAAUA,EAAMinB,KAChBjnB,EAAMinB,GAAKulG,KAEfhuH,EAAQsoB,IAAI,OAAQ9mB,GACb1I,MAGJkH,EAAQqoB,IAAI,SAGvBpI,EAAQ9e,UAAUuuB,QAAU,SAAkBluB,GAC1C,OAAIssH,EAAQtsH,IACR1I,KAAKkH,QAAQsoB,IAAI,UAAW9mB,GACrB1I,MAGJk3H,EAAel3H,KAAKkH,QAAQqoB,IAAI,WAAY,IAGvDpI,EAAQ9e,UAAUk1H,YAAc,SAAsBlqF,GAClD,IAAIuoF,EAAO57H,KAAKw9H,aAAanqF,GAC7B,GAAIuoF,EAAM,CACN,IAAI9hF,EAAO95C,KAAK85C,OAChB,OAAOA,EAAOohF,EAAKuB,UAAUb,EAAM9hF,EAAK8hF,KAAKvoF,IAAmBuoF,IAIxEz0G,EAAQ9e,UAAU+zH,cAAgB,SAAwB/B,EAAO8C,GAC7D,GAAIn9H,KAAKsM,UAAW,CAChB,IAAIinC,EAAYvzC,KAAKo9H,iBAAiBD,GAClCM,EAAmBpD,EAIvB,OAHI9mF,IACAkqF,EAAmBpD,EAAME,cAAchnF,EAAU0kF,SAASC,WAEtDl4H,KAAK09H,YAAc19H,KAAK29H,eAAeF,IAAuBz9H,KAAKq8H,WAAar8H,KAAK49H,cAAgB59H,KAAKq8H,UAAUoB,GAEhI,OAAO,GAGXt2G,EAAQ9e,UAAUq1H,SAAW,WACzB,IAAIzqG,EAAOjzB,KAAKkH,QAAQ+rB,KACxB,OAAOA,IAASwjG,EAAcxjG,EAAKm8F,QAGvCjoG,EAAQ9e,UAAUu1H,WAAa,WAC3B,IAAIC,EAAS79H,KAAKkH,QAAQ22H,OAC1B,OAAOA,GAAUA,EAAO7wH,MAAQ,IAAMypH,EAAcoH,EAAOzO,QAG/DjoG,EAAQ9e,UAAUm1H,aAAe,SAAuBnqF,GACpD,OAAOrzC,KAAK47H,KAAKvoF,IAGrB5yC,OAAOu6H,iBAAkB7zG,EAAQ9e,UAAW60H,GAErC/1G,EArJK,CAsJd4sG,GAEF,SAAS+J,GAAqBvgD,EAAQ9uE,EAAIsvH,EAAI9F,GAC1C,IAAI+F,EAAW,EACXC,EAAW,EASf,OAPIhG,IACA+F,EAAW36H,KAAKowC,MAAMwkF,EAAOvzH,EAAIq5H,EAAI9F,EAAO/yH,EAAIuJ,GAC/B,IAAbwpH,EAAO9yG,IACP84G,EAAW56H,KAAKowC,MAAMwkF,EAAOzzH,EAAIu5H,EAAI9F,EAAO9yG,EAAI1W,KAIjD,CACHrJ,EAAG44H,EACH75H,EAAG85H,GAIX,IAAIC,GAAW76H,KAAK+xH,GAAK,EAErB+I,GAAY,SAAUlE,GACtB,SAASmE,EAAO7gD,EAAQ5xD,QACL,IAAX4xD,IAAqBA,EAAS,IAAIy8C,QACvB,IAAXruG,IAAqBA,EAAS,GAElCsuG,EAAW1vH,KAAKvK,MAEhBA,KAAKq+H,UAAU9gD,GACfv9E,KAAKs+H,UAAU3yG,GAiFnB,OA9EAm6F,EAAasY,EAAQnE,GACrBmE,EAAO/1H,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC3D+1H,EAAO/1H,UAAUC,YAAc81H,EAC/BA,EAAOr2H,GAAKq2H,EAAO/1H,UACnB+1H,EAAOr2H,GAAGI,KAAOi2H,EAAOr2H,GAAGO,YAE3B81H,EAAO/1H,UAAUg2H,UAAY,SAAoB31H,GAG7C,OAFA1I,KAAK20H,eAAe,SAAUqF,EAAMhzE,OAAOt+C,IAC3C1I,KAAKw0H,iBACEx0H,MAGXo+H,EAAO/1H,UAAUk2H,UAAY,WACzB,OAAOv+H,KAAKu9E,QAGhB6gD,EAAO/1H,UAAUyoD,OAAS,SAAiBm/D,GACvC,OAAOA,GACAA,EAAM1yC,OAAOzsB,OAAO9wD,KAAKu9E,SACzB0yC,EAAMtkG,SAAW3rB,KAAK2rB,QAGjCyyG,EAAO/1H,UAAUlB,MAAQ,WACrB,OAAO,IAAIi3H,EAAOp+H,KAAKu9E,OAAOp2E,QAASnH,KAAK2rB,SAGhDyyG,EAAO/1H,UAAUm2H,QAAU,SAAkBlG,GACzC,OAAOt4H,KAAKy+H,SAAS1H,EAAIuB,KAG7B8F,EAAO/1H,UAAUuzH,KAAO,SAAe3D,GAOnC,IANA,IAEIyG,EAAgBZ,GAAqB99H,KAAKu9E,OAAQv9E,KAAK2rB,OAAQ3rB,KAAK2rB,OAAQssG,GAC5E6C,EAAWd,EAAMe,WACjBA,EAAWf,EAAMc,WAEZvzH,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIo3H,EAPO3+H,KAOkBy+H,SAASC,EAAct5H,EAAImC,EAAI22H,IAAU3D,cAActC,GAChF2G,EARO5+H,KAQkBy+H,SAASC,EAAcv6H,EAAIoD,EAAI22H,IAAU3D,cAActC,GAChF4G,EAAe,IAAI7E,EAAM2E,EAAcv5H,EAAGw5H,EAAcz6H,GAE5D22H,EAAWd,EAAM7jH,IAAI2kH,EAAU+D,GAC/B9D,EAAWf,EAAMphH,IAAImiH,EAAU8D,GAGnC,OAAO3D,EAAKe,WAAWnB,EAAUC,IAGrCqD,EAAO/1H,UAAUo2H,SAAW,SAAmBnG,GAC3C,IACI/6C,EADMv9E,KACOu9E,OACb5xD,EAFM3rB,KAEO2rB,OAEjB,OAAO,IAAIquG,EACPz8C,EAAOn4E,EAAIumB,EAAStoB,KAAKk1H,IAAID,GAC7B/6C,EAAOp5E,EAAIwnB,EAAStoB,KAAKm1H,IAAIF,KAIrC8F,EAAO/1H,UAAU+zH,cAAgB,SAAwB/B,GACrD,IACI98C,EADMv9E,KACOu9E,OACb5xD,EAFM3rB,KAEO2rB,OAGjB,OAFetoB,KAAKqmC,IAAI2wF,EAAMj1H,EAAIm4E,EAAOn4E,EAAG,GACxC/B,KAAKqmC,IAAI2wF,EAAMl2H,EAAIo5E,EAAOp5E,EAAG,IAAMd,KAAKqmC,IAAI/d,EAAQ,IAI5DyyG,EAAO/1H,UAAUg0H,UAAY,SAAoBhC,EAAOrtH,GACpD,IACIuwE,EADMv9E,KACOu9E,OACb5xD,EAFM3rB,KAEO2rB,OACbmzG,EAAgBvhD,EAAOi9C,WAAWH,GAEtC,OAAO1uG,EAAS3e,GAAS8xH,GAAiBA,GAAiBnzG,EAAS3e,GAGjEoxH,EAzFI,CA0FbzE,EAAc5F,EAAc,CAAE,YAI5BgL,GAAY,SAAUnF,GAAS,OAC9B,SAAUA,GACP,SAASoF,IACLpF,EAAMxxH,MAAMpI,KAAMqH,WAiDtB,OA9CAy+G,EAAakZ,EAAWpF,GACxBoF,EAAU32H,UAAY5H,OAAOumD,OAAQ4yE,GAASA,EAAMvxH,WACpD22H,EAAU32H,UAAUC,YAAc02H,EAClCA,EAAUj3H,GAAKi3H,EAAU32H,UACzB22H,EAAUj3H,GAAGI,KAAO62H,EAAUj3H,GAAGO,YAEjC02H,EAAU32H,UAAU4qB,KAAO,SAAem8F,EAAOx4F,GAC7C,IAAI1vB,EAAUlH,KAAKkH,QAEnB,GAAI8tH,EAAQ5F,GAAQ,CAChB,GAAIA,GAlBL,aAkBcA,EAAM15F,SAAuB,CACtC,IAAIupG,EAAU,CACV7P,MAAOA,GAEP4F,EAAQp+F,KACRqoG,EAAQroG,QAAUA,GAEtB1vB,EAAQsoB,IAAI,OAAQyvG,QAEpB/3H,EAAQsoB,IAAI,OAAQ4/F,GAGxB,OAAOpvH,KAGX,OAAOkH,EAAQqoB,IAAI,SAGvByvG,EAAU32H,UAAUw1H,OAAS,SAAiBzO,EAAOpiH,EAAO4pB,GACxD,OAAIo+F,EAAQ5F,IACRpvH,KAAKkH,QAAQsoB,IAAI,eAAgB4/F,GAE7B4F,EAAQhoH,IACRhN,KAAKkH,QAAQsoB,IAAI,eAAgBxiB,GAGjCgoH,EAAQp+F,IACR52B,KAAKkH,QAAQsoB,IAAI,iBAAkBoH,GAGhC52B,MAGJA,KAAKkH,QAAQqoB,IAAI,WAGrByvG,EApD2B,CAqDpCpF,IAGFsF,GAAuBnH,EAAOY,SAASznH,WAEvCiuH,GAAa,SAAUvF,GAAS,OAC/B,SAAUA,GACP,SAASoF,IACLpF,EAAMxxH,MAAMpI,KAAMqH,WAqCtB,OAlCAy+G,EAAakZ,EAAWpF,GACxBoF,EAAU32H,UAAY5H,OAAOumD,OAAQ4yE,GAASA,EAAMvxH,WACpD22H,EAAU32H,UAAUC,YAAc02H,EAClCA,EAAUj3H,GAAKi3H,EAAU32H,UACzB22H,EAAUj3H,GAAGI,KAAO62H,EAAUj3H,GAAGO,YAEjC02H,EAAU32H,UAAUuzH,KAAO,SAAevoF,GACtC,IAEIuoF,EAFAyB,EAAiBtD,EAAS/5H,KAAKo9H,iBAAiB/pF,IAChD+rF,EAAa/B,EAAiBA,EAAensH,WAAaguH,GAG1Dl/H,KAAKq/H,YAAcr/H,KAAKs/H,cAAgBF,EACxCxD,EAAO57H,KAAKq/H,WAAWl4H,SAEvBy0H,EAAO57H,KAAKu/H,MAAMlC,GAClBr9H,KAAKq/H,WAAazD,EAAOA,EAAKz0H,QAAU,KACxCnH,KAAKs/H,YAAcF,GAGvB,IAAII,EAAcx/H,KAAKkH,QAAQqoB,IAAI,gBAKnC,OAJIiwG,GAAe5D,GACfA,EAAKM,OAAOsD,EAAc,GAGvB5D,GAGXoD,EAAU32H,UAAUmsH,eAAiB,kBAC1Bx0H,KAAKq/H,WACZr/H,KAAKoK,QAAQ,iBAAkB,CAC3ByB,QAAS7L,QAIVg/H,EAxC4B,CAyCrCpF,IAGN,SAAS6F,GAAiBr9H,GACtB,IAAIisD,EAAY,IAAMjsD,EACtB,OAAO,SAASsG,GACZ,OAAIssH,EAAQtsH,IACR1I,KAAK20H,eAAetmE,EAAW3lD,GAC/B1I,KAAKw0H,iBACEx0H,MAGJA,KAAKquD,IAUpB,IAAIqxE,GAAe,SAAU9F,EAAOxlH,QAClB,IAAVA,IAAoBA,EAAQ,CAAE,aAElC,IAAImC,EAAU,SAAUqjH,GACpB,SAASrjH,IACLqjH,EAAMxxH,MAAMpI,KAAMqH,WAOtB,OANCy+G,EAAavvG,EAAQqjH,GACtBrjH,EAAOlO,UAAY5H,OAAOumD,OAAQ4yE,GAASA,EAAMvxH,WACjDkO,EAAOlO,UAAUC,YAAciO,EAC/BA,EAAOxO,GAAKwO,EAAOlO,UACnBkO,EAAOxO,GAAGI,KAAOoO,EAAOxO,GAAGO,YAEpBiO,EATE,CAUXqjH,GAGF,OAtBJ,SAAiC7xH,EAAIqM,GACjC,IAAK,IAAI7M,EAAI,EAAGA,EAAI6M,EAAM5M,OAAQD,IAC9BQ,EAAGqM,EAAM7M,IAAMk4H,GAAiBrrH,EAAM7M,IAkB1Co4H,CAAwBppH,EAAOlO,UAAW+L,GAEnCmC,GAKP6nH,GAAU,SAAUnE,GACpB,SAASmE,EAAOwB,EAAU14H,QACL,IAAb04H,IAAuBA,EAAW,IAAIzB,SAC1B,IAAZj3H,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,KAAMkH,GAEtBlH,KAAK4/H,SAASA,GAET5K,EAAQh1H,KAAKkH,QAAQ22H,SACtB79H,KAAK69H,OAZI,QAgBjB/X,EAAasY,EAAQnE,GACrBmE,EAAO/1H,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC3D+1H,EAAO/1H,UAAUC,YAAc81H,EAC/BA,EAAOr2H,GAAKq2H,EAAO/1H,UACnB+1H,EAAOr2H,GAAGI,KAAOi2H,EAAOr2H,GAAGO,YAE3B,IAAI40H,EAAqB,CAAExnG,SAAU,IAwBrC,OAtBAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,UAGX6uG,EAAO/1H,UAAUw3H,QAAU,WACvB,OAAO7/H,KAAK8/H,UAAUlE,QAG1BwC,EAAO/1H,UAAUk3H,MAAQ,SAAgBtH,GACrC,OAAOj4H,KAAK8/H,UAAUlE,KAAK3D,IAG/BmG,EAAO/1H,UAAUs1H,eAAiB,SAAyBtD,GACvD,OAAOr6H,KAAK4/H,WAAWxD,cAAc/B,IAGzC+D,EAAO/1H,UAAUg0H,UAAY,SAAoBhC,GAC7C,OAAOr6H,KAAK4/H,WAAWvD,UAAUhC,EAAOr6H,KAAKkH,QAAQ22H,OAAO7wH,MAAQ,IAGxEvM,OAAOu6H,iBAAkBoD,EAAO/1H,UAAW60H,GAEpCkB,EA5CE,CA6CXW,GAAUI,GAAWO,GAAazC,OAEhC8C,GAAY,GAEhB,SAASC,GAAQ96H,EAAGigB,EAAG86G,GAGnB,YAFkB,IAAdA,IAAwBA,EAAYF,IAEK,IAAtChqH,EAAM1S,KAAK6T,IAAIhS,EAAIigB,GAAI86G,GAGlC,SAASC,GAAYh7H,EAAGigB,EAAG86G,GACvB,OAAO/6H,EAAIigB,GAAK66G,GAAQ96H,EAAGigB,EAAG86G,GAmBlC,IACIE,GAAQ98H,KAAKqmC,IAGb02F,GAAS,SAAUnG,GACnB,SAASoG,EAAI9iD,EAAQr2E,QACF,IAAXq2E,IAAqBA,EAAS,IAAIy8C,QACtB,IAAZ9yH,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,MAEhBA,KAAKq+H,UAAU9gD,GAEfv9E,KAAKsgI,QAAUp5H,EAAQo5H,QACvBtgI,KAAKugI,QAAUr5H,EAAQq5H,SAAWr5H,EAAQo5H,QAC1CtgI,KAAKwgI,WAAat5H,EAAQs5H,WAC1BxgI,KAAKygI,SAAWv5H,EAAQu5H,SACxBzgI,KAAK0gI,cAAgBx5H,EAAQw5H,gBAAiB,EAC9C1gI,KAAK2gI,UAAYz5H,EAAQy5H,UA4N7B,OAzNA7a,EAAaua,EAAKpG,GAClBoG,EAAIh4H,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACxDg4H,EAAIh4H,UAAUC,YAAc+3H,EAC5BA,EAAIt4H,GAAKs4H,EAAIh4H,UACbg4H,EAAIt4H,GAAGI,KAAOk4H,EAAIt4H,GAAGO,YAErB+3H,EAAIh4H,UAAUlB,MAAQ,WAClB,OAAO,IAAIk5H,EAAIrgI,KAAKu9E,OAAQ,CACxB+iD,QAAStgI,KAAKsgI,QACdC,QAASvgI,KAAKugI,QACdC,WAAYxgI,KAAKwgI,WACjBC,SAAUzgI,KAAKygI,SACfC,cAAe1gI,KAAK0gI,iBAI5BL,EAAIh4H,UAAUg2H,UAAY,SAAoB31H,GAG1C,OAFA1I,KAAK20H,eAAe,SAAUqF,EAAMhzE,OAAOt+C,IAC3C1I,KAAKw0H,iBACEx0H,MAGXqgI,EAAIh4H,UAAUk2H,UAAY,WACtB,OAAOv+H,KAAKu9E,QAGhB8iD,EAAIh4H,UAAUm2H,QAAU,SAAkBlG,GACtC,IAAI/6C,EAASv9E,KAAKu9E,OACdqjD,EAAS7J,EAAIuB,GAEjB,OAAO,IAAI0B,EACPz8C,EAAOn4E,EAAIpF,KAAKsgI,QAAUj9H,KAAKk1H,IAAIqI,GACnCrjD,EAAOp5E,EAAInE,KAAKugI,QAAUl9H,KAAKm1H,IAAIoI,KAI3CP,EAAIh4H,UAAUw4H,YAAc,WACxB,IAUIxtF,EARAmtF,EAAaxgI,KAAKwgI,WAClBnhG,EAAMr/B,KAAK0gI,eAAiB,EAAI,EAChCG,EAAc,CAAE7gI,KAAKw+H,QAAQgC,IAC7BM,EAAW9gI,KAAK+gI,eAChBC,EAAgBF,EAASL,SAAWK,EAASN,WAC7CS,EAAoB59H,KAAK4iE,KAAK+6D,EAjEvB,IAkEPE,EAAmBF,EAAgBC,EACnCE,EAAeX,EAEfxgI,KAAK2gI,YACLttF,EAAiB2pF,KAAcjsF,OAAO/wC,KAAK2gI,UAAW3gI,KAAKu9E,SAG/D,IAAK,IAAIh2E,EAAI,EAAGA,GAAK05H,EAAmB15H,IAAK,CACzC,IAAI65H,EAAYD,EAAe9hG,EAAM6hG,EACjCG,EAjBOrhI,KAiBWshI,qBAAqBH,EAAcC,EAAW/tF,GAEpEwtF,EAAYl/H,KAAK0/H,EAAOE,IAAKF,EAAOG,IAAKH,EAAOI,IAChDN,EAAeC,EAGnB,OAAOP,GAGXR,EAAIh4H,UAAUuzH,KAAO,SAAe3D,GAgBhC,IAfA,IAEI6I,EAAW9gI,KAAK+gI,eAChBP,EAAaM,EAASN,WACtBC,EAAWK,EAASL,SACpB/B,EAAgBZ,GAAqB99H,KAAKu9E,OAAQv9E,KAAKsgI,QAAStgI,KAAKugI,QAAStI,GAC9E+F,EAAWxI,EAAIkJ,EAAct5H,GAC7B64H,EAAWzI,EAAIkJ,EAAcv6H,GAC7Bu9H,EAAW1hI,KAAKw+H,QAAQiC,GAAUlG,cAActC,GAChD0J,EAAgBC,GAAe5D,EAAUwC,GACzCqB,EAAgBD,GAAe3D,EAAUuC,GACzC3B,EAAe7+H,KAAKw+H,QAAQgC,GAAYjG,cAActC,GACtD6C,EAAWd,EAAM7jH,IAAI0oH,EAAc6C,GACnC3G,EAAWf,EAAMphH,IAAIimH,EAAc6C,GAEhCC,EAAgBlB,GAAYoB,EAAgBpB,GAAU,CACzD,IAAI9B,OAAgB,EAChBgD,EAAgBlB,IAChB9B,EAlBO3+H,KAkBkBw+H,QAAQmD,GAAepH,cAActC,GAC9D0J,GAAiB,IAGrB,IAAI/C,OAAgB,EAChBiD,EAAgBpB,IAChB7B,EAxBO5+H,KAwBkBw+H,QAAQqD,GAAetH,cAActC,GAC9D4J,GAAiB,IAGrBhD,EAAe,IAAI7E,EAAM2E,EAAcv5H,EAAGw5H,EAAcz6H,GACxD22H,EAAWd,EAAM7jH,IAAI2kH,EAAU+D,GAC/B9D,EAAWf,EAAMphH,IAAImiH,EAAU8D,GAGnC,OAAO3D,EAAKe,WAAWnB,EAAUC,IAGrCsF,EAAIh4H,UAAU04H,aAAe,WACzB,IAAI9xG,EAAMjvB,KACNwgI,EAAavxG,EAAIuxG,WACjBC,EAAWxxG,EAAIwxG,SACfC,EAAgBzxG,EAAIyxG,cAExB,GAAIA,EAAe,CACf,IAAIoB,EAAWtB,EACfA,EAAaC,EACbA,EAAWqB,EAOf,OAJItB,EAAaC,GAAaC,GAAiBF,IAAeC,KAC1DA,GAAY,KAGT,CACHD,WAAYA,EACZC,SAAUA,IAIlBJ,EAAIh4H,UAAUi5H,qBAAuB,SAA+Bd,EAAYC,EAAUptF,GACtF,IAAI0uF,EAAK/hI,KAAKw+H,QAAQgC,GAClBiB,EAAKzhI,KAAKw+H,QAAQiC,GAClBuB,EAAehiI,KAAKiiI,cAAczB,GAClC0B,EAAeliI,KAAKiiI,cAAcxB,GAClCt7H,GAAK4xH,EAAI0J,GAAY1J,EAAIyJ,IAAe,EACxCe,EAAM,IAAIvH,EAAM+H,EAAG38H,EAAID,EAAI68H,EAAa58H,EAAG28H,EAAG59H,EAAIgB,EAAI68H,EAAa79H,GACnEq9H,EAAM,IAAIxH,EAAMyH,EAAGr8H,EAAID,EAAI+8H,EAAa98H,EAAGq8H,EAAGt9H,EAAIgB,EAAI+8H,EAAa/9H,GAQvE,OAPIkvC,IACA0uF,EAAGxuF,UAAUF,GACbouF,EAAGluF,UAAUF,GACbkuF,EAAIhuF,UAAUF,GACdmuF,EAAIjuF,UAAUF,IAGX,CACH0uF,GAAIA,EACJR,IAAKA,EACLC,IAAKA,EACLC,GAAIA,IAIZpB,EAAIh4H,UAAU45H,cAAgB,SAAwB3J,GAClD,IAAIsI,EAAS7J,EAAIuB,GAEjB,OAAO,IAAI0B,GAAOh6H,KAAKsgI,QAAUj9H,KAAKm1H,IAAIoI,GAAS5gI,KAAKugI,QAAUl9H,KAAKk1H,IAAIqI,KAG/EP,EAAIh4H,UAAU+zH,cAAgB,SAAwB/B,GAClD,IAaI+B,EAbA0E,EAAW9gI,KAAK+gI,eAChBC,EAAgBF,EAASL,SAAWK,EAASN,WAC7CvxG,EAAMjvB,KACNu9E,EAAStuD,EAAIsuD,OACb+iD,EAAUrxG,EAAIqxG,QACdC,EAAUtxG,EAAIsxG,QACd/iD,EAAWD,EAAOi9C,WAAWH,GAC7B8H,EAAW9+H,KAAKowC,MAAM4mF,EAAMl2H,EAAIo5E,EAAOp5E,EAAGk2H,EAAMj1H,EAAIm4E,EAAOn4E,GAC3Dg9H,EAAe9B,EAAUC,EACzBl9H,KAAKo6E,KAAK0iD,GAAMG,EAAS,GAAKH,GAAM98H,KAAKm1H,IAAI2J,GAAW,GAAKhC,GAAMI,EAAS,GAAKJ,GAAM98H,KAAKk1H,IAAI4J,GAAW,IAC3GE,EAAariI,KAAKw+H,QAAQx+H,KAAKwgI,YAAYzqH,MAAMgqH,IACjD2B,EAAW1hI,KAAKw+H,QAAQx+H,KAAKygI,UAAU1qH,MAAMgqH,IAC7CuC,EAzMZ,SAA0BC,EAAIR,EAAIN,EAAIe,GAClC,IAAIC,EAAMV,EAAG38H,EAAIm9H,EAAGn9H,EAChBs9H,EAAMF,EAAGp9H,EAAIq8H,EAAGr8H,EAChBu9H,EAAMZ,EAAG59H,EAAIo+H,EAAGp+H,EAChBy+H,EAAMJ,EAAGr+H,EAAIs9H,EAAGt9H,EAChB0+H,EAAKN,EAAGn9H,EAAIq8H,EAAGr8H,EACf09H,EAAKP,EAAGp+H,EAAIs9H,EAAGt9H,EACfK,EAAIi+H,EAAMG,EAAMF,EAAMC,EACtB19H,GAAKw9H,EAAMK,EAAKH,EAAME,GAAMr+H,EAC5BW,GAAKu9H,EAAMI,EAAKF,EAAMC,GAAMr+H,EAEhC,GAAIS,GAAK,GAAKA,GAAK,GAAKE,GAAK,GAAKA,GAAK,EACnC,OAAO,IAAI60H,EAAMuI,EAAGn9H,EAAID,EAAIs9H,EAAKF,EAAGp+H,EAAIgB,EAAIw9H,GA6LzBI,CAAiBxlD,EAAQ88C,EAAMtkH,MAAMgqH,IAAYsC,EAAYX,GAGhF,GAAIV,EAAgB,IAChB5E,EAAgBkG,GAAgBpC,GAAY3iD,EAAOi9C,WAAW8H,GAAe9kD,IAAa0iD,GAAY1iD,EAAU4kD,OAC7G,CACH,IAAI9J,EAAQ0K,GAAezlD,EAAOn4E,EAAGm4E,EAAOp5E,EAAGm8H,EAASC,EAASlG,EAAMj1H,EAAGi1H,EAAMl2H,GAClE,MAAVm0H,IACAA,GAAS,IAAMA,GAAS,KAG5B,IAAI2K,EAAenC,EAASN,YAAclI,GAASA,GAASwI,EAASL,SACrErE,EAAiB6G,GAAgB/C,GAAY1iD,EAAU4kD,KAAmBa,KAAkBX,GAAgBA,EAAaxxE,OAAOupE,IAEpI,OAAO+B,GAGXiE,EAAIh4H,UAAUg0H,UAAY,SAAoBhC,EAAOrtH,GACjD,IAAI8zH,EAAW9gI,KAAK+gI,eAChBxjD,EAASv9E,KAAKu9E,OACd+6C,EAAQ0K,GAAezlD,EAAOn4E,EAAGm4E,EAAOp5E,EAAGnE,KAAKsgI,QAAStgI,KAAKugI,QAASlG,EAAMj1H,EAAGi1H,EAAMl2H,GAO1F,OANc,MAAVm0H,IACAA,GAAS,IAAMA,GAAS,KAGTwI,EAASN,YAAclI,GAASA,GAASwI,EAASL,UAE9CzgI,KAAKw+H,QAAQlG,GAAOkC,WAAWH,IAAUrtH,GAGpEqzH,EAAIpE,WAAa,SAAqB3mH,EAAO3J,EAAK8C,EAAIsvH,EAAImF,EAAUC,EAAOxpF,GACvE,IAAIypF,EAgCZ,SAAgCttE,GAC5B,IAAImnB,EAAKnnB,EAAWmnB,GAChBC,EAAKpnB,EAAWonB,GAChBC,EAAKrnB,EAAWqnB,GAChBC,EAAKtnB,EAAWsnB,GAChB3uE,EAAKqnD,EAAWrnD,GAChBsvH,EAAKjoE,EAAWioE,GAChBmF,EAAWptE,EAAWotE,SACtBC,EAAQrtE,EAAWqtE,MACnBxpF,EAAWmc,EAAWnc,cAA2B,IAAbA,IAAuBA,EAAW,GAE1E,IAAI87E,EAAUsB,EAAIp9E,GACd0pF,EAAShgI,KAAKk1H,IAAI9C,GAClB6N,EAAOjgI,KAAKm1H,IAAI/C,GAEhB8N,EAAKF,GAAUpmD,EAAKE,GAAM,EAAImmD,GAAQpmD,EAAKE,GAAM,EACjDomD,GAAMF,GAAQrmD,EAAKE,GAAM,EAAIkmD,GAAUnmD,EAAKE,GAAM,EAElD5mE,EAAO0sH,IAAaC,EAAQ,GAAK,EAEjCM,EAAMpgI,KAAKqmC,IAAI65F,EAAI,GACnBG,EAAMrgI,KAAKqmC,IAAI85F,EAAI,GACnBG,EAAMtgI,KAAKqmC,IAAIj7B,EAAI,GACnBm1H,EAAMvgI,KAAKqmC,IAAIq0F,EAAI,GAEnBn5F,EAAQ6+F,EAAME,EAAMD,EAAME,EAE1Bh/F,EAAQ,IAERn2B,GADAm2B,EAAQvhC,KAAKo6E,KAAKgmD,EAAME,EAAMD,EAAME,GAEpCD,EAAMtgI,KAAKqmC,IAAIj7B,EAAI,GAEnBsvH,GAAKn5F,EACLg/F,EAAMvgI,KAAKqmC,IAAIq0F,EAAI,IAGvB,IAAI8F,EAASrtH,EAAOnT,KAAKo6E,MAAMkmD,EAAMC,EAAMD,EAAMD,EAAME,EAAMH,IAAQE,EAAMD,EAAME,EAAMH,IAEnF36H,MAAM+6H,KACNA,EAAS,GAGb,IAAIC,EAAMD,GAAUp1H,EAAK+0H,GAAMzF,EAC3BgG,EAAkBhG,EAAKwF,GAAfM,EAAqBp1H,EAE7Bu1H,EAAKX,EAASS,EAAMR,EAAOS,GAAO9mD,EAAKE,GAAM,EAC7C8mD,EAAKX,EAAOQ,EAAMT,EAASU,GAAO7mD,EAAKE,GAAM,EAE7C8mD,GAAMX,EAAKO,GAAOr1H,EAClB01H,GAAMX,EAAKO,GAAOhG,EAClBqG,IAAOb,EAAKO,GAAOr1H,EACnB41H,IAAOb,EAAKO,GAAOhG,EAEnByC,GAAc2D,GAAM,EAAI,GAAK,GAAK3O,EAAInyH,KAAKihI,KAAKJ,EAAK7gI,KAAKo6E,KAAKymD,EAAKA,EAAKC,EAAKA,KAE9EI,EAAcxuH,GAAOmuH,EAAKE,EAAKD,EAAKE,IAAOhhI,KAAKo6E,KAAKymD,EAAKA,EAAKC,EAAKA,GAAM9gI,KAAKo6E,KAAK2mD,EAAKA,EAAKC,EAAKA,IAAM,IACzG/L,GAAS4L,EAAKG,EAAKF,EAAKC,GAAM,EAAI,GAAK,GAAK5O,EAAInyH,KAAKihI,KAAKC,KAEzDpB,GAAS7K,EAAQ,IAClBA,GAAS,KAGT6K,GAAS7K,EAAQ,IACjBA,GAAS,KAEb,IAAImI,EAAWD,EAAalI,EACxBkM,EAAe/D,GAAY,EAAI,GAAK,EAGxC,OAFAA,EAAYp9H,KAAK6T,IAAIupH,GAAY,IAAO+D,EAEjC,CACHjnD,OAAQ,IAAIy8C,EAAMgK,EAAIC,GACtBzD,WAAYA,EACZC,SAAUA,EACVH,QAAS7xH,EACT8xH,QAASxC,EACT4C,UAAWhnF,GA3GS8qF,CAAuB,CACvCxnD,GAAI3nE,EAAMlQ,EACV83E,GAAI5nE,EAAMnR,EACVg5E,GAAIxxE,EAAIvG,EACRg4E,GAAIzxE,EAAIxH,EACRsK,GAAIA,EACJsvH,GAAIA,EACJmF,SAAUA,EACVC,MAAOA,EACPxpF,SAAUA,IAGd,OAAO,IAAI0mF,EAAI+C,EAAc7lD,OAAQ,CACjCijD,WAAY4C,EAAc5C,WAC1BC,SAAU2C,EAAc3C,SACxBH,QAAS8C,EAAc9C,QACvBC,QAAS6C,EAAc7C,QACvBI,UAAWyC,EAAczC,UACzBD,cAAyB,IAAVyC,KAIhB9C,EA1OC,CA2OV1G,EAAc5F,EA7OA,CAAE,UAAW,UAAW,aAAc,WAAY,mBA+OlE,SAASiP,GAAegB,EAAIC,EAAIx1H,EAAIsvH,EAAI34H,EAAGjB,GACvC,IAAIo0H,EAAMxiH,GAAO3Q,EAAI4+H,GAAMv1H,EAAI,GAC3B+pH,EAAMziH,GAAO5R,EAAI8/H,GAAMlG,EAAI,GAE/B,OAAOhoH,EAAMy/G,EAAInyH,KAAKowC,MAAM+kF,EAAKD,KAkFrC,SAASqJ,GAAetJ,EAAOhjH,GAG3B,IAFA,IAAIkrH,EAAalI,EAEVkI,EAAalrH,GAChBkrH,GAAc,GAGlB,OAAOA,EAGX,IAAI7+H,GAAO,GAAGA,KACV0tB,GAAM,GAAGA,IACT7kB,GAAS,GAAGA,OACZqL,GAAQ,GAAGA,MACXjP,GAAQ,GAAGA,MACXuD,GAAU,GAAGA,QAEbu6H,GAAiB,SAAUrL,GAC3B,SAASqL,EAAclqH,QACL,IAAVA,IAAoBA,EAAQ,IAEhC6+G,EAAgB9uH,KAAKvK,MAErBA,KAAKwH,OAAS,EACdxH,KAAK2kI,QAAQ,EAAGnqH,EAAMhT,OAAQgT,GA2HlC,OAxHAsrG,EAAa4e,EAAerL,GAC5BqL,EAAcr8H,UAAY5H,OAAOumD,OAAQqyE,GAAmBA,EAAgBhxH,WAC5Eq8H,EAAcr8H,UAAUC,YAAco8H,EACtCA,EAAc38H,GAAK28H,EAAcr8H,UACjCq8H,EAAc38H,GAAGI,KAAOu8H,EAAc38H,GAAGO,YAEzCo8H,EAAcr8H,UAAU8rB,SAAW,SAAmBzrB,GAClD,OAAIA,GACA1I,KAAK2kI,QAAQ,EAAG3kI,KAAKwH,OAAQkB,GAE7B1I,KAAK8+D,UACE9+D,MAGJA,KAAK4G,MAAM,IAGtB89H,EAAcr8H,UAAU1G,KAAO,WAC3B,IAAIwyB,EAAW9sB,UACXkP,EAAS5U,GAAKyG,MAAMpI,KAAMm0B,GAI9B,OAFAn0B,KAAK4kI,KAAKzwG,GAEH5d,GAGXmuH,EAAcr8H,UAAUzB,MAAQ,WAC5B,OAAOA,GAAM2D,KAAKvK,OAGtB0kI,EAAcr8H,UAAUgnB,IAAM,WAC1B,IAAI7nB,EAASxH,KAAKwH,OACd+O,EAAS8Y,GAAIjnB,MAAMpI,MAMvB,OAJIwH,GACAxH,KAAK6kI,QAAQ,CAAEtuH,IAGZA,GAGXmuH,EAAcr8H,UAAUmC,OAAS,SAAmBuO,EAAOkzC,GACvD,IAAI93B,EAAWvtB,GAAM2D,KAAKlD,UAAW,GACjCkP,EAASvW,KAAK2kI,QAAQ5rH,EAAOkzC,EAAS93B,GAI1C,OAFAn0B,KAAK8+D,UAEEvoD,GAGXmuH,EAAcr8H,UAAUwN,MAAQ,WAC5B,IAAIrO,EAASxH,KAAKwH,OACd+O,EAASV,GAAMzN,MAAMpI,MAMzB,OAJIwH,GACAxH,KAAK6kI,QAAQ,CAAEtuH,IAGZA,GAGXmuH,EAAcr8H,UAAU8B,QAAU,WAC9B,IAAIgqB,EAAW9sB,UACXkP,EAASpM,GAAQ/B,MAAMpI,KAAMm0B,GAIjC,OAFAn0B,KAAK4kI,KAAKzwG,GAEH5d,GAGXmuH,EAAcr8H,UAAUsN,QAAU,SAAkB9J,GAKhD,IAJA,IAEIrE,EAASxH,KAAKwH,OAEToC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GALW5J,KAKE4J,KAASiC,EAClB,OAAOjC,EAGf,OAAQ,GAGZ86H,EAAcr8H,UAAUs8H,QAAU,SAAkB5rH,EAAOkzC,EAAS93B,GAChE,IAAI5d,EAAS/L,GAAOpC,MAAMpI,KAAM,CAAE+Y,EAAOkzC,GAAU5uC,OAAO8W,IAK1D,OAHAn0B,KAAK8kI,eAAevuH,GACpBvW,KAAK+kI,aAAa5wG,GAEX5d,GAGXmuH,EAAcr8H,UAAUu8H,KAAO,SAAezwG,GAC1Cn0B,KAAK+kI,aAAa5wG,GAClBn0B,KAAK8+D,WAGT4lE,EAAcr8H,UAAUw8H,QAAU,SAAkB1wG,GAChDn0B,KAAK8kI,eAAe3wG,GACpBn0B,KAAK8+D,WAGT4lE,EAAcr8H,UAAU08H,aAAe,SAAuB5wG,GAG1D,IAFA,IAESvqB,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IACrCuqB,EAASvqB,GAAKuqH,YAHHn0H,OAOnB0kI,EAAcr8H,UAAUy8H,eAAiB,SAAyB3wG,GAG9D,IAFA,IAESvqB,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IACrCuqB,EAASvqB,GAAKwqH,eAHHp0H,OAOnB0kI,EAAcr8H,UAAUy2D,QAAU,aAE3B4lE,EAlIS,CAmIlB3Q,GAEEiR,GAAyB,SAAUC,GACnC,SAASD,IACLC,EAAiB78H,MAAMpI,KAAMqH,WAajC,OAVAy+G,EAAakf,EAAuBC,GACpCD,EAAsB38H,UAAY5H,OAAOumD,OAAQi+E,GAAoBA,EAAiB58H,WACtF28H,EAAsB38H,UAAUC,YAAc08H,EAC9CA,EAAsBj9H,GAAKi9H,EAAsB38H,UACjD28H,EAAsBj9H,GAAGI,KAAO68H,EAAsBj9H,GAAGO,YAEzD08H,EAAsB38H,UAAUy2D,QAAU,WACtC9+D,KAAKw0H,kBAGFwQ,EAfiB,CAgB1BN,IAEF,SAASQ,GAAgBxD,EAAUyD,EAAc9K,GAC7C,IAAI/B,EAAQ9C,EAAInyH,KAAKowC,MAAM0xF,EAAahhI,EAAIu9H,EAASv9H,EAAGghI,EAAa//H,EAAIs8H,EAASt8H,IAGlF,OAFmBi1H,EAAME,cAAcyC,KAAcjsF,QAAQunF,EAAOoJ,IAEhDt8H,EAAIs8H,EAASt8H,EAGrC,SAASggI,GAAiBjgI,EAAG8f,EAAOo8G,GAChC,IAAIgE,EAAK,EAAIlgI,EACb,OAAO9B,KAAKqmC,IAAI27F,EAAI,GAAKhE,EAAO,GAAGp8G,GAC/B,EAAI5hB,KAAKqmC,IAAI27F,EAAI,GAAKlgI,EAAIk8H,EAAO,GAAGp8G,GACpC,EAAI5hB,KAAKqmC,IAAIvkC,EAAG,GAAKkgI,EAAKhE,EAAO,GAAGp8G,GACpC5hB,KAAKqmC,IAAIvkC,EAAG,GAAKk8H,EAAO,GAAGp8G,GAGnC,SAASqgH,GAAkBjE,EAAQp8G,GAC/B,MAAO,EAAGo8G,EAAO,GAAGp8G,GAAS,EAAIo8G,EAAO,GAAGp8G,GAAS,EAAIo8G,EAAO,GAAGp8G,GAASo8G,EAAO,GAAGp8G,GACjF,GAAKo8G,EAAO,GAAGp8G,GAAS,EAAIo8G,EAAO,GAAGp8G,GAASo8G,EAAO,GAAGp8G,IACzD,IAAMo8G,EAAO,GAAGp8G,GAASo8G,EAAO,GAAGp8G,IACnCo8G,EAAO,GAAGp8G,IAIlB,IAAIsgH,GAAiB,SAAUvR,GAC3B,SAASuR,EAAcC,EAAMC,QACZ,IAATD,IAAmBA,EAAO,QAClB,IAARC,IAAkBA,EAAM,GAE5BzR,EAASzpH,KAAKvK,MAEdA,KAAKwlI,KAAOA,EACZxlI,KAAKylI,IAAMA,EA8Cf,OA3CA3f,EAAayf,EAAevR,GAC5BuR,EAAcl9H,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WAC9Dk9H,EAAcl9H,UAAUC,YAAci9H,EACtCA,EAAcx9H,GAAKw9H,EAAcl9H,UACjCk9H,EAAcx9H,GAAGI,KAAOo9H,EAAcx9H,GAAGO,YAEzCi9H,EAAcl9H,UAAU4E,IAAM,SAAcy4H,GACxC,OAAO,IAAIH,EAAcxvH,EAAM/V,KAAKwlI,KAAOE,EAAQF,KAAMzF,IAAYhqH,EAAM/V,KAAKylI,IAAMC,EAAQD,IAAK1F,MAGvGwF,EAAcl9H,UAAUs9H,YAAc,SAAsBj9H,GACxD,OAAO,IAAI68H,EAAcvlI,KAAKwlI,KAAO98H,EAAO1I,KAAKylI,MAGrDF,EAAcl9H,UAAUu9H,OAAS,WAC7B,OAAO,IAAIL,GAAevlI,KAAKwlI,MAAOxlI,KAAKylI,MAG/CF,EAAcl9H,UAAU00H,SAAW,SAAmB2I,GAClD,OAAO,IAAIH,EAAcvlI,KAAKwlI,KAAOE,EAAQF,KAAOxlI,KAAKylI,IAAMC,EAAQD,IACnEzlI,KAAKwlI,KAAOE,EAAQD,IAAMzlI,KAAKylI,IAAMC,EAAQF,OAGrDD,EAAcl9H,UAAUw9H,iBAAmB,SAA2Bn9H,GAClE,OAAO,IAAI68H,EAAcvlI,KAAKwlI,KAAO98H,EAAO1I,KAAKylI,IAAM/8H,IAG3D68H,EAAcl9H,UAAUy9H,QAAU,SAAkBhV,GAChD,IAAIiV,EAAS1iI,KAAKowC,MAAMzzC,KAAKylI,IAAKzlI,KAAKwlI,MACnCnV,EAAIhtH,KAAKo6E,KAAKp6E,KAAKqmC,IAAI1pC,KAAKylI,IAAK,GAAKpiI,KAAKqmC,IAAI1pC,KAAKwlI,KAAM,IAC1DQ,EAAO3iI,KAAKqmC,IAAI2mF,EAAG,EAAIS,GAE3B,OAAO,IAAIyU,EAAcS,EAAO3iI,KAAKk1H,IAAIwN,EAASjV,GAAIkV,EAAO3iI,KAAKm1H,IAAIuN,EAASjV,KAGnFyU,EAAcl9H,UAAUyoD,OAAS,SAAiB40E,GAC9C,OAAO1lI,KAAKwlI,OAASE,EAAQF,MAAQxlI,KAAKylI,MAAQC,EAAQD,KAG9DF,EAAcl9H,UAAU49H,OAAS,WAC7B,OAAoB,IAAbjmI,KAAKylI,KAGTF,EAtDS,CAuDlB39H,GAEF,SAASs+H,GAAa9gI,GAClB,OAAOA,EAAI,GAAK,EAAI,EAYxB,SAAS+gI,GAAmBjhI,EAAGigB,EAAGzgB,EAAGF,GACjC,GAAU,IAANU,EACA,OAXR,SAAgCA,EAAGigB,EAAGzgB,GAClC,IAAI0hI,EAAa/iI,KAAKo6E,KAAKp6E,KAAKqmC,IAAIvkB,EAAG,GAAK,EAAIjgB,EAAIR,GACpD,MAAO,GACDygB,EAAIihH,IAAe,EAAIlhI,KACvBigB,EAAIihH,IAAe,EAAIlhI,IAOlBmhI,CAAuBlhH,EAAGzgB,EAAGF,GAGxC,IAKIy4E,EAAIE,EAAID,EAAIE,EAAIkpD,EAAIC,EAAIC,EALxBzV,GAAK,EAAI7rH,EAAIR,EAAIrB,KAAKqmC,IAAIvkB,EAAG,KAAO,EAAI9hB,KAAKqmC,IAAIxkC,EAAG,IACpDd,GAAK,EAAIf,KAAKqmC,IAAIvkB,EAAG,GAAK,EAAIjgB,EAAIigB,EAAIzgB,EAAI,GAAKrB,KAAKqmC,IAAIxkC,EAAG,GAAKV,IAAM,GAAKnB,KAAKqmC,IAAIxkC,EAAG,IACvFb,EAAIhB,KAAKqmC,IAAIqnF,EAAI,EAAG,GAAK1tH,KAAKqmC,IAAItlC,EAAI,EAAG,GACzCmD,EAAI,IAAIg+H,GAAc,EAAE,GACxBkB,GAAOthH,GAAK,EAAIjgB,GAGhBb,EAAI,GACJ44E,EAAK,IAAIsoD,IAAenhI,EAAI,EAAGf,KAAKo6E,MAAMp5E,IAAIyhI,QAAQ,GACtD3oD,EAAK,IAAIooD,IAAenhI,EAAI,GAAKf,KAAKo6E,MAAMp5E,IAAIyhI,QAAQ,KAExD7oD,GAAM74E,EAAI,EAAIf,KAAKo6E,KAAKp5E,GACxB44E,EAAK,IAAIsoD,GAAcW,GAAajpD,GAAM55E,KAAKqmC,IAAIrmC,KAAK6T,IAAI+lE,GAAK,EAAI,IACrEE,GAAM/4E,EAAI,EAAIf,KAAKo6E,KAAKp5E,GACxB84E,EAAK,IAAIooD,GAAcW,GAAa/oD,GAAM95E,KAAKqmC,IAAIrmC,KAAK6T,IAAIimE,GAAK,EAAI,KAGzED,EAAKD,EAAGhwE,IAAIkwE,GAEZopD,EAAKtpD,EAAGhwE,IAAIkwE,GAAI0oD,kBAAiB,IACjCW,EAAKvpD,EAAGhwE,IAAIkwE,EAAGyoD,UAAUC,iBAAiBxiI,KAAKo6E,KAAK,GAAK,GAEzDL,EAAKmpD,EAAGt5H,IAAI1F,EAAEw1H,SAASyJ,IACvBF,EAAKC,EAAGt5H,IAAI1F,EAAEq+H,SAAS7I,SAASyJ,IAEhC,IAAIjwH,EAAS,GAYb,OAVI2mE,EAAG+oD,UACH1vH,EAAO5U,KAAKoU,EAAMmnE,EAAGsoD,KAAOiB,EAAK1G,KAEjC3iD,EAAG6oD,UACH1vH,EAAO5U,KAAKoU,EAAMqnE,EAAGooD,KAAOiB,EAAK1G,KAEjCuG,EAAGL,UACH1vH,EAAO5U,KAAKoU,EAAMuwH,EAAGd,KAAOiB,EAAK1G,KAG9BxpH,EAGX,SAASmwH,GAAgBrF,EAAQhH,EAAOp1G,EAAO0hH,EAAW/yE,GAKtD,IAJA,IAEI0uE,EAFAsE,EAAatB,GAAkBjE,EAAQsF,GACvCE,EAAQV,GAAmBS,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAKvM,EAAMsM,IAGzF/8H,EAAM,EAAGA,EAAMi9H,EAAMr/H,OAAQoC,IAClC,GAAI,GAAKi9H,EAAMj9H,IAAQi9H,EAAMj9H,IAAQ,IACjC04H,EAAe8C,GAAiByB,EAAMj9H,GAAMqb,EAAOo8G,GAC/Ch+H,KAAK6T,IAAIorH,EAAejI,EAAMp1G,KAAW2uC,GACzC,OAAO,EAsBvB,SAASkzE,GAAuB5hI,EAAGigB,EAAGk1G,GAClC,IAAI0M,EACJ,GAAI7hI,EAAEE,IAAM+f,EAAE/f,EAAG,CACb,IAAIy+E,EAAOxgF,KAAK8S,IAAIjR,EAAEE,EAAG+f,EAAE/f,GACvBw1H,EAAOv3H,KAAKuV,IAAI1T,EAAEE,EAAG+f,EAAE/f,GACvB0+E,EAAOzgF,KAAK8S,IAAIjR,EAAEf,EAAGghB,EAAEhhB,GACvB02H,EAAOx3H,KAAKuV,IAAI1T,EAAEf,EAAGghB,EAAEhhB,GACvB+hE,EAAU2d,GAAQw2C,EAAMj1H,GAAKi1H,EAAMj1H,EAAIw1H,EAGvCmM,EADAjjD,IAAS+2C,EACIR,EAAMl2H,GAAK2/E,GAAQ5d,EAEnBA,IAAc20D,EAAO/2C,KAAU5+E,EAAEE,EAAI+f,EAAE/f,IAAMF,EAAEf,EAAIghB,EAAEhhB,GAAK,EAAIk2H,EAAMj1H,EAAIy+E,EAAO+2C,EAAOP,EAAMj1H,IAAOw1H,EAAO/2C,GAAQC,EAAOu2C,EAAMl2H,GAAM,EAI1J,OAAO4iI,EAAa,EAAI,EAG5B,SAASC,GAAc5kI,GACnB,IAAIisD,EAAY,IAAMjsD,EACtB,OAAO,SAASsG,GACZ,OAAIssH,EAAQtsH,IACR1I,KAAK20H,eAAetmE,EAAW2rE,EAAMhzE,OAAOt+C,IAC5C1I,KAAKw0H,iBACEx0H,MAGJA,KAAKquD,IAUpB,IAAI44E,GAAa,SAAUrN,EAAOxlH,GAC9B,IAAImC,EAAU,SAAUqjH,GACpB,SAASrjH,IACLqjH,EAAMxxH,MAAMpI,KAAMqH,WAOtB,OANCy+G,EAAavvG,EAAQqjH,GACtBrjH,EAAOlO,UAAY5H,OAAOumD,OAAQ4yE,GAASA,EAAMvxH,WACjDkO,EAAOlO,UAAUC,YAAciO,EAC/BA,EAAOxO,GAAKwO,EAAOlO,UACnBkO,EAAOxO,GAAGI,KAAOoO,EAAOxO,GAAGO,YAEpBiO,EATE,CAUXqjH,GAGF,OApBJ,SAA8B7xH,EAAIqM,GAC9B,IAAK,IAAI7M,EAAI,EAAGA,EAAI6M,EAAM5M,OAAQD,IAC9BQ,EAAGqM,EAAM7M,IAAMy/H,GAAc5yH,EAAM7M,IAgBvC2/H,CAAqB3wH,EAAOlO,UAAW+L,GAEhCmC,GAKP4wH,GAAW,SAAUlN,GACrB,SAASkN,EAAQh2C,EAAQi2C,EAAWC,GAChCpN,EAAW1vH,KAAKvK,MAEhBA,KAAKmxF,OAAOA,GAAU,IAAI6oC,GAC1Bh6H,KAAKonI,UAAUA,GACfpnI,KAAKqnI,WAAWA,GA0IpB,OAvIAvhB,EAAaqhB,EAASlN,GACtBkN,EAAQ9+H,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC5D8+H,EAAQ9+H,UAAUC,YAAc6+H,EAChCA,EAAQp/H,GAAKo/H,EAAQ9+H,UACrB8+H,EAAQp/H,GAAGI,KAAOg/H,EAAQp/H,GAAGO,YAE7B6+H,EAAQ9+H,UAAUi/H,OAAS,SAAiBC,EAAWtP,GACnD,IAAIuP,EAAgBxnI,KAAKmxF,SAASopC,cAActC,GAC5CwP,EAAkBF,EAAUp2C,SAASopC,cAActC,GAYvD,OATIj4H,KAAKqnI,cAAgBE,EAAUH,YACxBpnI,KAAK0nI,kBACRF,EAAexnI,KAAKqnI,aAAa9M,cAActC,GAC/CsP,EAAUH,YAAY7M,cAActC,GAASwP,GAG1CznI,KAAK2nI,iBAAiBH,EAAeC,IAMpDN,EAAQ9+H,UAAUs/H,iBAAmB,SAA2B5F,EAAIN,GAChE,OAAOvG,EAAKe,WAAW8F,EAAIN,IAG/B0F,EAAQ9+H,UAAUq/H,kBAAoB,SAA4B3F,EAAIR,EAAKC,EAAKC,GAC5E,IAAIJ,EAAS,CAAEU,EAAIR,EAAKC,EAAKC,GACzBmG,EAAY5nI,KAAK6nI,kBAAkBxG,EAAQ,KAC3CyG,EAAY9nI,KAAK6nI,kBAAkBxG,EAAQ,KAC3C0G,EAAUC,GAAY,CAAEJ,EAAUzxH,IAAKyxH,EAAUhvH,IAAKmpH,EAAG38H,EAAGq8H,EAAGr8H,IAC/D6iI,EAAUD,GAAY,CAAEF,EAAU3xH,IAAK2xH,EAAUlvH,IAAKmpH,EAAG59H,EAAGs9H,EAAGt9H,IAEnE,OAAO+2H,EAAKe,WAAW,IAAIjC,EAAM+N,EAAQ5xH,IAAK8xH,EAAQ9xH,KAAM,IAAI6jH,EAAM+N,EAAQnvH,IAAKqvH,EAAQrvH,OAG/FuuH,EAAQ9+H,UAAUw/H,kBAAoB,SAA4BxG,EAAQp8G,GACtE,IAAIijH,EAAWloI,KAAKmoI,eAChB9G,EAAO,GAAGp8G,GAAQo8G,EAAO,GAAGp8G,GAC5Bo8G,EAAO,GAAGp8G,GAAQo8G,EAAO,GAAGp8G,IAGhC,MAAO,CACH9O,IAAKivH,GAAiB8C,EAAS/xH,IAAK8O,EAAOo8G,GAC3CzoH,IAAKwsH,GAAiB8C,EAAStvH,IAAKqM,EAAOo8G,KAInD8F,EAAQ9+H,UAAU8/H,eAAiB,SAAyBlrD,EAAIE,EAAIirD,EAAIC,GACpE,IAAInjI,EAAI+3E,EAAK,EAAIE,EAAK,EAAIirD,EAAKC,EAC3BljH,GAAM,GAAK83D,EAAK,EAAIE,EAAKirD,GACzB1jI,EAAIu4E,EAAKE,EACTM,EAAOp6E,KAAKo6E,KAAKt4D,EAAIA,EAAI,EAAIjgB,EAAIR,GACjC2gI,EAAK,EACLiD,EAAK,EAEC,IAANpjI,EACU,IAANigB,IACAkgH,EAAKiD,GAAM5jI,EAAIygB,GAEXrc,MAAM20E,KACd4nD,IAAQlgH,EAAIs4D,IAAS,EAAIv4E,GACzBojI,IAAQnjH,EAAIs4D,IAAS,EAAIv4E,IAG7B,IAAIiR,EAAM9S,KAAKuV,IAAIvV,KAAK8S,IAAIkvH,EAAIiD,GAAK,IACjCnyH,EAAM,GAAKA,EAAM,KACjBA,EAAM,GAGV,IAAIyC,EAAMvV,KAAK8S,IAAI9S,KAAKuV,IAAIysH,EAAIiD,GAAK,GAKrC,OAJI1vH,EAAM,GAAKA,EAAM,KACjBA,EAAM,GAGH,CACHzC,IAAKA,EACLyC,IAAKA,IAIbuuH,EAAQ9+H,UAAUkgI,iBAAmB,SAA2BC,EAASnO,GACrE,IAAIoO,EAMJ,OAJIA,EADAzoI,KAAKqnI,cAAgBmB,EAAQpB,YAtKzC,SAAiC/F,EAAQhH,EAAOuB,GAK5C,IAJA,IAEI8M,EAFA9B,EAAatB,GAAkBjE,EAAQ,KACvCwF,EAAQV,GAAmBS,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAKvM,EAAMj1H,GAE9F0V,EAAQ,EACHvT,EAAI,EAAGA,EAAIs/H,EAAMr/H,OAAQD,KAEdy4H,GADhB0I,EAAkBtD,GAAiByB,EAAMt/H,GAAI,IAAK85H,GACThH,EAAMl2H,IAAMukI,EAAkBrO,EAAMl2H,MACxC,IAAb0iI,EAAMt/H,IAAyB,IAAbs/H,EAAMt/H,KAAaq0H,EAAKH,cAAcr2H,EAAIi1H,EAAMj1H,GAAO,EAAIyhI,EAAMt/H,IAAMs/H,EAAMt/H,GAAK,IACxHuT,IAIR,OAAOA,EA0JsB6tH,CAAwB,CAAE3oI,KAAKmxF,SAAUnxF,KAAKqnI,aAAcmB,EAAQpB,YAAaoB,EAAQr3C,UAAYkpC,EAAOr6H,KAAKsnI,OAAOkB,IAExH1B,GAAuB9mI,KAAKmxF,SAAUq3C,EAAQr3C,SAAUkpC,GAE1EoO,GAGXtB,EAAQ9+H,UAAUugI,aAAe,SAAuBJ,EAASnO,EAAOrtH,EAAO67H,GAE3E,GADW7oI,KAAKsnI,OAAOkB,GAAStM,OAAOlvH,EAAOA,GACrCovH,cAAc/B,GAAQ,CAC3B,IAAI0H,EAAK/hI,KAAKmxF,SACVswC,EAAKzhI,KAAKqnI,aACV7E,EAAKgG,EAAQpB,YACb0B,EAAKN,EAAQr3C,SAEjB,GAAmB,UAAf03C,GAA0B9G,EAAGvH,WAAWH,IAAUrtH,EAClD,OAAQk4H,GAAgBnD,EAAIN,EAAIpH,GAC7B,GAAmB,QAAfwO,GAAwBC,EAAGtO,WAAWH,IAAUrtH,EACvD,OAAQk4H,GAAgB4D,EAAItG,EAAInI,GAIpC,IAAIgH,EAAS,CAAEU,EAAIN,EAAIe,EAAIsG,GAC3B,GAAIpC,GAAgBrF,EAAQhH,EAAO,IAAK,IAAKrtH,IAAU05H,GAAgBrF,EAAQhH,EAAO,IAAK,IAAKrtH,GAC5F,OAAO,EAEX,IAAI2sC,EAAWqjF,KAAcjsF,OAAO,GAAIspF,GACpC0O,EAAgB,CAAEhH,EAAGxH,cAAc5gF,GAAW8nF,EAAGlH,cAAc5gF,GAAW6oF,EAAGjI,cAAc5gF,GAAWmvF,EAAGvO,cAAc5gF,IAC3H,OAAO+sF,GAAgBqC,EAAe1O,EAAO,IAAK,IAAKrtH,IAAU05H,GAAgBqC,EAAe1O,EAAO,IAAK,IAAKrtH,KAIzHm6H,EAAQ9+H,UAAU2gI,YAAc,SAAsBR,EAASnO,EAAOrtH,GAClE,IAAI+0H,EAAK/hI,KAAKmxF,SACVswC,EAAK+G,EAAQr3C,SACbmnC,EAAQ9C,EAAInyH,KAAKowC,MAAMguF,EAAGt9H,EAAI49H,EAAG59H,EAAGs9H,EAAGr8H,EAAI28H,EAAG38H,IAElD,OADW,IAAI81H,EAAK,CAAE6G,EAAG38H,EAAG28H,EAAG59H,EAAI6I,EAAQ,GAAK,CAAE+0H,EAAGvH,WAAWiH,GAAKz0H,IACzDovH,cAAc/B,EAAME,cAAcyC,KAAcjsF,QAAQunF,EAAOyJ,MAG/EoF,EAAQ9+H,UAAU4gI,YAAc,SAAsBT,EAASnO,EAAOrtH,EAAO67H,GAOzE,OALI7oI,KAAKqnI,cAAgBmB,EAAQpB,YAClBpnI,KAAK4oI,aAAaJ,EAASnO,EAAOrtH,EAAQ,EAAG67H,GAE7C7oI,KAAKgpI,YAAYR,EAASnO,EAAOrtH,IAK7Cm6H,EAhJG,CAiJZF,GAAWlT,EAnJA,CAAE,SAAU,YAAa,gBAqJtC,SAASiU,GAAYx9F,GAKjB,IAJA,IAAIhjC,EAASgjC,EAAIhjC,OACb2O,EAAMk/G,EACNz8G,EAAM28G,EAEDhuH,EAAI,EAAGA,EAAIC,EAAQD,IACxBqR,EAAMvV,KAAKuV,IAAIA,EAAK4xB,EAAIjjC,IACxB4O,EAAM9S,KAAK8S,IAAIA,EAAKq0B,EAAIjjC,IAG5B,MAAO,CACH4O,IAAKA,EACLyC,IAAKA,GAIb,IAAIgnH,GAAW,CACdxB,OAAQD,GACRkC,IAAKD,GACLlF,KAAMA,EACNlB,MAAOA,EACPmN,QAASA,GACTpP,OAAQA,EACRkD,KAAMA,EACNlB,SAAUA,EACV6C,eAAgBA,EAChBrpF,UAAWypF,IAKR33H,GAAI,IACJ2P,GAAI,IAmGR,SAASk0H,GAAiBt/H,EAAKy3H,GAC3B,KAAOA,EAAOz3H,EAAM,KAAOy3H,EAAOz3H,GAAKknD,OAAOuwE,EAAOz3H,EAAM,KAAOy3H,EAAOz3H,EAAM,GAAGknD,OAAOuwE,EAAOz3H,EAAM,MAClGy3H,EAAO72H,OAAOZ,EAAM,EAAG,GAgC/B,SAASu/H,GAAapH,EAAIN,GACtB,IAAIv8H,GAAKu8H,EAAGt9H,EAAI49H,EAAG59H,IAAMs9H,EAAGr8H,EAAI28H,EAAG38H,GAGnC,MAAO,CAFC28H,EAAG59H,EAAIe,EAAI68H,EAAG38H,EAEVF,GAGhB,SAASkkI,GAAiB7G,EAAIR,EAAIN,GAC9B,IAII4H,EAJAC,EAASjkI,GACTkkI,EAASv0H,GACTw0H,GAAW,EACXC,GAAoB,EAGxB,GArBJ,SAAgBlH,EAAIR,EAAIN,GACpB,IACIrkD,EAAKssD,GADAP,GAAa5G,EAAIR,GACKN,EAAGr8H,GAElC,OAAQm9H,EAAGn9H,IAAM28H,EAAG38H,GAAK28H,EAAG38H,IAAMq8H,EAAGr8H,GAAM2Q,EAAMqnE,EAAI,KAAOrnE,EAAM0rH,EAAGt9H,EAAG,GAiBpEwlI,CAAOpH,EAAIR,EAAIN,GACf4H,EAAUO,GAAWrH,EAAIR,EAAI18H,GAAG2P,QAC7B,CACH,IAAI60H,EAAY,CACZzkI,EAAG0kI,GAAmBvH,EAAIR,EAAIN,EAAIp8H,IAClClB,EAAG2lI,GAAmBvH,EAAIR,EAAIN,EAAIzsH,KAGtC,GAAI60H,EAAUzkI,GAAKykI,EAAU1lI,EACzBklI,EAAUO,GAAWrH,EAAId,EAAIp8H,GAAG2P,IAChCw0H,GAAW,OAOX,GA3DZ,SAAoBjH,EAAIR,EAAIN,GACxB,IAAIsI,GAAa,EAEjB,GAAIxH,EAAGn9H,IAAM28H,EAAG38H,EACZ2kI,GAAa,OACV,GAAIhI,EAAG38H,IAAMq8H,EAAGr8H,GACd28H,EAAG59H,EAAIs9H,EAAGt9H,GAAKo+H,EAAGp+H,GAAK49H,EAAG59H,GAAOs9H,EAAGt9H,EAAI49H,EAAG59H,GAAK49H,EAAG59H,GAAKo+H,EAAGp+H,KAC5D4lI,GAAa,OAEd,CACH,IACI3sD,EAAKssD,GADAP,GAAa5G,EAAGR,GACMN,EAAGr8H,GAC5Bm9H,EAAGp+H,GAAK49H,EAAG59H,GAAKs9H,EAAGt9H,GAAKi5E,GACxB2kD,EAAG59H,GAAKo+H,EAAGp+H,GAAKs9H,EAAGt9H,GAAKi5E,IAC1B2sD,GAAa,GAIrB,OAAOA,EAoCKA,CAAWxH,EAAIR,EAAIN,KACnB6H,EAASt0H,GACTu0H,EAASlkI,IAGTwkI,EAAUP,GACVD,EAAU,OAUVA,EAjLiB,KA0KZ5H,EAAG8H,GAAUhH,EAAGgH,IAAWhH,EAAGgH,IAAWxH,EAAGwH,IAC5ChH,EAAGgH,GAAU9H,EAAG8H,IAAWxH,EAAGwH,IAAWhH,EAAGgH,GACtCS,IAAYvI,EAAG8H,GAAUhH,EAAGgH,KAAYxH,EAAGuH,GAAU/G,EAAG+G,MAEvDU,IAAYvI,EAAG6H,GAAU/G,EAAG+G,KAAYvH,EAAGwH,GAAUhH,EAAGgH,MAIpEE,GAAoB,EAKhC,IAAIQ,EAAWC,GAAmBb,EAAS9G,EAAIR,EAAIuH,EAAQC,GAE3D,GAAIE,EAAmB,CACnB,IAAIU,EAAYb,EAChBA,EAASC,EACTA,EAASY,EAGb,IAAIC,EAAUC,GAAkBhB,EAAStH,EAAIN,EAAI6H,EAAQC,GAOzD,OALIC,IACAc,GAAqB/H,EAAIR,EAAIkI,EAAUZ,GACvCiB,GAAqBvI,EAAIN,EAAI2I,EAASf,IAGnC,CAAEY,EAAUG,GAGvB,SAASE,GAAqBvI,EAAIN,EAAI8I,EAAIlB,GAClCtH,EAAG59H,EAAIs9H,EAAGt9H,EACNs9H,EAAGt9H,EAAIomI,EAAGpmI,GACVomI,EAAGnlI,EAAI28H,EAAG38H,GAAKq8H,EAAGt9H,EAAI49H,EAAG59H,GAAKklI,EAC9BkB,EAAGpmI,EAAIs9H,EAAGt9H,GACHomI,EAAGpmI,EAAI49H,EAAG59H,IACjBomI,EAAGnlI,EAAIq8H,EAAGr8H,GAAKq8H,EAAGt9H,EAAI49H,EAAG59H,GAAKklI,EAC9BkB,EAAGpmI,EAAI49H,EAAG59H,GAGVomI,EAAGpmI,EAAIs9H,EAAGt9H,GACVomI,EAAGnlI,EAAI28H,EAAG38H,GAAK28H,EAAG59H,EAAIs9H,EAAGt9H,GAAKklI,EAC9BkB,EAAGpmI,EAAIs9H,EAAGt9H,GACH49H,EAAG59H,EAAIomI,EAAGpmI,IACjBomI,EAAGnlI,EAAIq8H,EAAGr8H,GAAK28H,EAAG59H,EAAIs9H,EAAGt9H,GAAKklI,EAC9BkB,EAAGpmI,EAAI49H,EAAG59H,GAKtB,SAASylI,GAAWrH,EAAIR,EAAIuH,EAAQC,GAChC,IAAInkI,EAAI28H,EAAGuH,GAAU/G,EAAG+G,GACpBnlI,EAAI49H,EAAGwH,GAAUhH,EAAGgH,GASxB,OANU,IAANnkI,EACU,EAEAjB,EAAIiB,EAMtB,SAAS0kI,GAAmBvH,EAAIR,EAAIN,EAAIx8G,GACpC,OAAQw8G,EAAGx8G,GAAS88G,EAAG98G,IAAU88G,EAAG98G,GAASs9G,EAAGt9G,IACnCw8G,EAAGx8G,GAAS88G,EAAG98G,IAAU88G,EAAG98G,GAASs9G,EAAGt9G,GAGzD,SAASolH,GAAkBhB,EAAS9G,EAAIC,EAAI8G,EAAQC,GAChD,IAAIlE,EAAK9C,EAAG+G,GAER9rD,EApPK,MAmPAglD,EAAG8G,GACSjE,GAErB,OAAOhL,GAAMgL,EAAK7nD,EAAU+kD,EAAGgH,GAAU/rD,EAAW6rD,EAASC,EAAQC,GAGzE,SAASW,GAAmBb,EAAS9G,EAAIC,EAAI8G,EAAQC,GACjD,IAAIlE,EAAK9C,EAAG+G,GACRhB,EAAK9F,EAAG8G,GACR9rD,EA5PK,MA4PO8qD,EAAKjD,GAErB,OAAOhL,GAAMiO,EAAK9qD,EAAUglD,EAAG+G,GAAU/rD,EAAW6rD,EAASC,EAAQC,GAGzE,SAASlP,GAAMmQ,EAAQC,EAAQnB,EAAQC,GACnC,IAAIpE,EAAe,IAAInL,EAIvB,OAHAmL,EAAamE,GAAUkB,EACvBrF,EAAaoE,GAAUkB,EAEhBtF,EAGX,SAASuE,GAAkB3hI,EAAI3C,GAI3B,IAHA,IAAIoC,EAASO,EAAGP,OACZ+O,EAAS,EAEJhP,EAAI,EAAGA,EAAIC,EAAQD,IACxBgP,GAAUlT,KAAKqmC,IAAItkC,EAAEmC,GAAKQ,EAAGR,GAEjC,OAAOgP,EAGX,SAASyzH,GAAWthI,GAChB,OAAOA,GAAS,GAAK,EAAI,EAG7B,IAAIgiI,GAAW,CACXha,EAAG,SAASthF,EAAMloC,GAId,IAHA,IAAI4uD,EAAa5uD,EAAQ4uD,WACrBhpD,EAAW5F,EAAQ4F,SAEdvF,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,GAAK,EAAG,CAC3C,IAAI8yH,EAAQ,IAAIL,EAAMlkE,EAAWvuD,GAAIuuD,EAAWvuD,EAAI,IAEhDL,EAAQyjI,YACRtQ,EAAMD,cAActtH,GAGxBsiC,EAAKw7F,OAAOvQ,EAAMj1H,EAAGi1H,EAAMl2H,GAE3B2I,EAAS1H,EAAIi1H,EAAMj1H,EACnB0H,EAAS3I,EAAIk2H,EAAMl2H,IAI3BO,EAAG,SAAS0qC,EAAMloC,GAId,IAHA,IAAI4uD,EAAa5uD,EAAQ4uD,WACrBhpD,EAAW5F,EAAQ4F,SAEdvF,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,GAAK,EAAG,CAC3C,IAAI8/H,EAAa,IAAIrN,EAAMlkE,EAAWvuD,GAAIuuD,EAAWvuD,EAAI,IACrD6/H,EAAY,IAAIpN,EAAMlkE,EAAWvuD,EAAI,GAAIuuD,EAAWvuD,EAAI,IACxD8yH,EAAQ,IAAIL,EAAMlkE,EAAWvuD,EAAI,GAAIuuD,EAAWvuD,EAAI,IACpDL,EAAQyjI,aACRvD,EAAUhN,cAActtH,GACxBu6H,EAAWjN,cAActtH,GACzButH,EAAMD,cAActtH,IAGxBsiC,EAAKy7F,QAAQxD,EAAYD,EAAW/M,GAEpCvtH,EAAS1H,EAAIi1H,EAAMj1H,EACnB0H,EAAS3I,EAAIk2H,EAAMl2H,IAI3BsN,EAAG,SAAS29B,EAAMloC,GACd,IAAIwB,EAAQxB,EAAQyjI,WAAa,EAAIzjI,EAAQ4F,SAAS1H,EAEtD0lI,GAAiB5jI,EAAQ4uD,YAAY,EAAMptD,GAC3C1I,KAAK0wH,EAAEthF,EAAMloC,IAGjBtC,EAAG,SAASwqC,EAAMloC,GACd,IAAIwB,EAAQxB,EAAQyjI,WAAa,EAAIzjI,EAAQ4F,SAAS3I,EAEtD2mI,GAAiB5jI,EAAQ4uD,YAAY,EAAOptD,GAC5C1I,KAAK0wH,EAAEthF,EAAMloC,IAGjBhC,EAAG,SAASkqC,EAAMloC,GAId,IAHA,IAAI4uD,EAAa5uD,EAAQ4uD,WACrBhpD,EAAW5F,EAAQ4F,SAEdvF,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,GAAK,EAAG,CAC3C,IAAI+4H,EAAUxqE,EAAWvuD,GACrBg5H,EAAUzqE,EAAWvuD,EAAI,GACzBoyC,EAAWmc,EAAWvuD,EAAI,GAC1B27H,EAAWptE,EAAWvuD,EAAI,GAC1B47H,EAAQrtE,EAAWvuD,EAAI,GACvBm6H,EAAW,IAAI1H,EAAMlkE,EAAWvuD,EAAI,GAAIuuD,EAAWvuD,EAAI,IAEvDL,EAAQyjI,YACRjJ,EAAStH,cAActtH,GAEvBA,EAAS1H,IAAMs8H,EAASt8H,GAAK0H,EAAS3I,IAAMu9H,EAASv9H,IACrDirC,EAAK27F,MAAMrJ,EAAUpB,EAASC,EAAS2C,EAAUC,EAAOxpF,GAExD7sC,EAAS1H,EAAIs8H,EAASt8H,EACtB0H,EAAS3I,EAAIu9H,EAASv9H,KAKlCc,EAAG,SAASmqC,EAAMloC,GACd,IAGI8jI,EAHAl1E,EAAa5uD,EAAQ4uD,WACrBhpD,EAAW5F,EAAQ4F,SACnBm+H,EAAkB/jI,EAAQ+jI,gBAGN,MAApBA,GAA+C,MAApBA,IAC3BD,EAAgB7oG,EAAKA,EAAKiN,EAAKqe,OAAOy9E,UAAU9D,aAGpD,IAAK,IAAI7/H,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,GAAK,EAAG,CAC3C,IAAI6/H,EAAY,IAAIpN,EAAMlkE,EAAWvuD,GAAIuuD,EAAWvuD,EAAI,IACpDm6H,EAAW,IAAI1H,EAAMlkE,EAAWvuD,EAAI,GAAIuuD,EAAWvuD,EAAI,IACvD8/H,OAAa,EAEbngI,EAAQyjI,aACRvD,EAAUhN,cAActtH,GACxB40H,EAAStH,cAActtH,IAIvBu6H,EADA2D,EACaG,GAAgBH,EAAel+H,GAE/BA,EAAS3F,QAG1B6jI,EAAgB5D,EAEhBh4F,EAAKy7F,QAAQxD,EAAYD,EAAW1F,GAEpC50H,EAAS1H,EAAIs8H,EAASt8H,EACtB0H,EAAS3I,EAAIu9H,EAASv9H,IAI9BC,EAAG,SAASgrC,EAAMloC,GAId,IAHA,IAAI4uD,EAAa5uD,EAAQ4uD,WACrBhpD,EAAW5F,EAAQ4F,SAEdvF,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,GAAK,EAAG,CAC3C,IAAI49H,EAAe,IAAInL,EAAMlkE,EAAWvuD,GAAIuuD,EAAWvuD,EAAI,IACvDm6H,EAAW,IAAI1H,EAAMlkE,EAAWvuD,EAAI,GAAIuuD,EAAWvuD,EAAI,IAEvDL,EAAQyjI,aACRxF,EAAa/K,cAActtH,GAC3B40H,EAAStH,cAActtH,IAG3B,IAAIs+H,EAAqBC,GAA8Bv+H,EAAUq4H,EAAczD,GAE/EtyF,EAAKy7F,QAAQO,EAAmB/D,WAAY+D,EAAmBhE,UAAW1F,GAE1E50H,EAAS1H,EAAIs8H,EAASt8H,EACtB0H,EAAS3I,EAAIu9H,EAASv9H,IAI9BgB,EAAG,SAASiqC,EAAMloC,GACd,IAGIi+H,EAHArvE,EAAa5uD,EAAQ4uD,WACrBhpD,EAAW5F,EAAQ4F,SACnBm+H,EAAkB/jI,EAAQ+jI,gBAGN,MAApBA,GAA+C,MAApBA,IAE3B9F,EADkBhjG,EAAKA,EAAKiN,EAAKqe,OAAOy9E,UACb9D,YAAYjgI,QAClCizH,cAActtH,EAASwtH,WAAW,EAAI,IACtC3qF,MAAM,MAGf,IAAK,IAAIpoC,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,GAAK,EAAG,CAC3C,IAAIm6H,EAAW,IAAI1H,EAAMlkE,EAAWvuD,GAAIuuD,EAAWvuD,EAAI,IACnDL,EAAQyjI,YACRjJ,EAAStH,cAActtH,GAIvBq4H,EADAA,EACegG,GAAgBhG,EAAcr4H,GAE9BA,EAAS3F,QAG5B,IAAIikI,EAAqBC,GAA8Bv+H,EAAUq4H,EAAczD,GAE/EtyF,EAAKy7F,QAAQO,EAAmB/D,WAAY+D,EAAmBhE,UAAW1F,GAE1E50H,EAAS1H,EAAIs8H,EAASt8H,EACtB0H,EAAS3I,EAAIu9H,EAASv9H,KAKlC,SAAS2mI,GAAiBh1E,EAAYw1E,EAAY5iI,GAG9C,IAFA,IAAI6iI,EAAiBD,EAAa,EAAI,EAE7B/jI,EAAI,EAAGA,EAAIuuD,EAAWtuD,OAAQD,GAAK,EACxCuuD,EAAWtrD,OAAOjD,EAAIgkI,EAAgB,EAAG7iI,GAIjD,SAASyiI,GAAgB9Q,EAAO98C,GAC5B,GAAI88C,GAAS98C,EACT,OAAOA,EAAO+8C,UAAU,GAAGtqF,WAAWqqF,EAAMj1H,GAAIi1H,EAAMl2H,GAI9D,IAAIqnI,GAAQ,EAAI,EAEhB,SAASH,GAA8Bv+H,EAAUq4H,EAAczD,GAC3D,IAAI+J,EAActG,EAAah+H,QAAQwoC,MAAM,EAAI,GACjD,MAAO,CACH03F,WAAYoE,EAAYtkI,QAAQizH,cAActtH,EAASwtH,UAAUkR,KACjEpE,UAAWqE,EAAYrR,cAAcsH,EAASpH,UAAUkR,MAIhE,IAAIE,GAAgB,kCAChBC,GAAc,oDAYlB,SAASC,GAAUC,EAAcj9H,GAC7B,IACIq8H,EADAn+H,EAAW,IAAIktH,EA6CnB,OA1CAprH,EAAInM,QAAQipI,IAAe,SAAUv7H,EAAOtE,EAASy4B,EAAQwnG,GACzD,IAAIpmF,EAAU75C,EAAQyM,cAClBqyH,EAAajlF,IAAY75C,EACzBiqD,EAfZ,SAAyBlnD,GACrB,IAAIknD,EAAa,GAIjB,OAHAlnD,EAAInM,QAAQkpI,IAAa,SAASx7H,EAAO1E,GACrCqqD,EAAWn0D,KAAKoH,WAAW0C,OAExBqqD,EAUci2E,CAAgBznG,EAAOd,QAmBxC,GArCG,MAoBCkiB,IACIilF,GACA79H,EAAS1H,GAAK0wD,EAAW,GACzBhpD,EAAS3I,GAAK2xD,EAAW,KAEzBhpD,EAAS1H,EAAI0wD,EAAW,GACxBhpD,EAAS3I,EAAI2xD,EAAW,IAG5B+1E,EAAazvF,OAAOtvC,EAAS1H,EAAG0H,EAAS3I,GAErC2xD,EAAWtuD,OAAS,IACpBk+C,EAAU,IACVoQ,EAAWtrD,OAAO,EAAG,KAIzBkgI,GAAShlF,GACTglF,GAAShlF,GACLmmF,EAAc,CACV/1E,WAAYA,EACZhpD,SAAUA,EACV69H,WAAYA,EACZM,gBAAiBA,IAIrBa,GA9CJ,MA8CiBA,EAAUxzH,eACvBuzH,EAAavmF,aAEd,GAlDJ,MAkDQI,EACP,MAAM,IAAIj1C,MAAM,sDAAwDi1C,GAG5EulF,EAAkBvlF,KAGfmmF,EAGX,SAASG,GAAoB73G,EAAU83G,EAAgB54F,GAGnD,IAFA,IAAI64F,EAEK3kI,EAAI,EAAGA,EAAI4sB,EAAS3sB,OAAQD,IAAK,CACtC,IAAIsE,EAAUsoB,EAAS5sB,GACvB,GAAIsE,EAAQS,UAAW,CACnB,IAAI6/H,EAAqBF,EAAiBpgI,EAAQ+vH,KAAKvoF,GAAkBxnC,EAAQg0H,UAC7EsM,IAEID,EADAA,EACchR,EAAKsB,MAAM0P,EAAaC,GAExBA,IAM9B,OAAOD,EAGX,SAASE,GAA2Bj4G,EAAUkf,GAG1C,IAFA,IAAI64F,EAEK3kI,EAAI,EAAGA,EAAI4sB,EAAS3sB,OAAQD,IAAK,CACtC,IAAIsE,EAAUsoB,EAAS5sB,GACvB,GAAIsE,EAAQS,UAAW,CACnB,IAAI6/H,EAAqBtgI,EAAQ0xH,YAAYlqF,GACzC84F,IAEID,EADAA,EACchR,EAAKsB,MAAM0P,EAAaC,GAExBA,IAM9B,OAAOD,EAGX,IAAIG,GAAQ,IAWRC,GAAQ,SAAUrS,GAClB,SAASqS,EAAKplI,GACV+yH,EAAW1vH,KAAKvK,KAAMkH,GACtBlH,KAAKkrI,SAAW,IAAIlG,GACpBhlI,KAAKkrI,SAAS/W,YAAYn0H,MAErBg1H,EAAQh1H,KAAKkH,QAAQ22H,UACtB79H,KAAK69H,OAAO,QAEP7I,EAAQh1H,KAAKkH,QAAQ22H,OAAO0O,WAC7BvsI,KAAKkH,QAAQsoB,IAAI,kBAAmB,UAKhDs2F,EAAawmB,EAAMrS,GACnBqS,EAAKjkI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACzDikI,EAAKjkI,UAAUC,YAAcgkI,EAC7BA,EAAKvkI,GAAKukI,EAAKjkI,UACfikI,EAAKvkI,GAAGI,KAAOmkI,EAAKvkI,GAAGO,YAEvB,IAAI40H,EAAqB,CAAExnG,SAAU,IAmRrC,OAjRAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,QAGX+8G,EAAKjkI,UAAU+zC,OAAS,SAAiBh3C,EAAGjB,GAOxC,OANAnE,KAAKy0H,UACLz0H,KAAKkrI,SAAS/2G,SAAS,IACvBn0B,KAAK00H,SAEL10H,KAAK4qI,OAAOxlI,EAAGjB,GAERnE,MAGXssI,EAAKjkI,UAAUuiI,OAAS,SAAiBxlI,EAAGjB,GACxC,IAAIqoI,EAAWxX,EAAQ7wH,GAAK,IAAI61H,EAAM50H,EAAGjB,GAAKiB,EAC1CojI,EAAU,IAAIrB,GAAQqF,GAI1B,OAFAxsI,KAAKkrI,SAASvpI,KAAK6mI,GAEZxoI,MAGXssI,EAAKjkI,UAAUwiI,QAAU,SAAkBxD,EAAYD,EAAWoF,GAC9D,GAAIxsI,KAAKkrI,SAAS1jI,OAAS,EAAG,CAC1B,IAAIilI,EAActqG,EAAKniC,KAAKkrI,UACxB1C,EAAU,IAAIrB,GAAQqF,EAAUpF,GACpCpnI,KAAKy0H,UACLgY,EAAYpF,WAAWA,GACvBrnI,KAAK00H,SAEL10H,KAAKkrI,SAASvpI,KAAK6mI,GAGvB,OAAOxoI,MAGXssI,EAAKjkI,UAAUqkI,IAAM,SAAclM,EAAYC,EAAUH,EAASC,EAASG,GACvE,GAAI1gI,KAAKkrI,SAAS1jI,OAAS,EAAG,CAC1B,IACI2pF,EADchvD,EAAKniC,KAAKkrI,UACH/5C,SACrB77E,EAAQyhH,EAAIyJ,GACZjjD,EAAS,IAAIy8C,EAAM7oC,EAAO/rF,EAAIk7H,EAAUj9H,KAAKk1H,IAAIjjH,GACjD67E,EAAOhtF,EAAIo8H,EAAUl9H,KAAKm1H,IAAIljH,IAC9Bo3H,EAAM,IAAItM,GAAM7iD,EAAQ,CACxBijD,WAAYA,EACZC,SAAUA,EACVH,QAASA,EACTC,QAASA,EACTG,cAAeA,IAGnB1gI,KAAK2sI,gBAAgBD,GAGzB,OAAO1sI,MAGXssI,EAAKjkI,UAAU0iI,MAAQ,SAAgBp/H,EAAK8C,EAAIsvH,EAAImF,EAAUC,EAAOxpF,GACjE,GAAI35C,KAAKkrI,SAAS1jI,OAAS,EAAG,CAC1B,IACI2pF,EADchvD,EAAKniC,KAAKkrI,UACH/5C,SACrBu7C,EAAMtM,GAAMnE,WAAW9qC,EAAQ6oC,EAAMhzE,OAAOr7C,GAAM8C,EAAIsvH,EAAImF,EAAUC,EAAOxpF,GAE/E35C,KAAK2sI,gBAAgBD,GAEzB,OAAO1sI,MAGXssI,EAAKjkI,UAAUskI,gBAAkB,SAA0BD,GAGvD1sI,KAAKy0H,UAIL,IAFA,IAAIoM,EAAc6L,EAAI7L,cAEbt5H,EAAI,EAAGA,EAAIs5H,EAAYr5H,OAAQD,GAAK,EAN9BvH,KAOF6qI,QAAQhK,EAAYt5H,GAAIs5H,EAAYt5H,EAAI,GAAIs5H,EAAYt5H,EAAI,IAGzEvH,KAAK00H,SACL10H,KAAKw0H,kBAGT8X,EAAKjkI,UAAUi9C,MAAQ,WAInB,OAHAtlD,KAAKkH,QAAQ0lI,QAAS,EACtB5sI,KAAKw0H,iBAEEx0H,MAGXssI,EAAKjkI,UAAUw3H,QAAU,WACrB,OAAO7/H,KAAKu/H,SAGhB+M,EAAKjkI,UAAU6I,SAAW,SAAmBxF,GACzC,IAzHoBmhI,EAAcC,EARd92H,EAiIhBu9E,EAAS,GAET23C,EAAWlrI,KAAKkrI,SAChB1jI,EAAS0jI,EAAS1jI,OACtB,GAAIA,EAAS,EAAG,CAKZ,IAJA,IAEIulI,EAFA/8H,EAAQ,GACRg9H,GAvIYh3H,EAuIQtK,EAvIY,WAI5C,IAHA,IAAItE,EAAcC,UAEdg6H,EAAS,GAAIhxG,EAAMhpB,UAAUG,OACzB6oB,KAAUgxG,EAAQhxG,GAAQjpB,EAAaipB,GAE/C,OAAOgxG,EAAO/mH,KAAI,SAAUy2G,GAAK,OAAOA,EAAE7/G,SAAS8E,MAAenL,KAAKwhI,MAoItD9kI,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI7B,GAnIQmnI,EAmIW3B,EAAS3jI,EAAI,GAnIVulI,EAmIc5B,EAAS3jI,GAnIFslI,EAAaxF,cAAgByF,EAAW1F,YAAc,IAAM,KAoIvG1hI,IAASqnI,IACTA,EAAcrnI,EACdsK,EAAMrO,KAAK+D,IAGF,MAATA,EACAsK,EAAMrO,KAAKqrI,EAAM9B,EAAS3jI,GAAG4pF,WAE7BnhF,EAAMrO,KAAKqrI,EACP9B,EAAS3jI,EAAI,GAAG8/H,aAAc6D,EAAS3jI,GAAG6/H,YAAa8D,EAAS3jI,GAAG4pF,WAK/EoC,EAAS,IAAMy5C,EAAM9B,EAAS,GAAG/5C,UAAYk7C,GAAQr8H,EAAMnF,KAAKwhI,IAC5DrsI,KAAKkH,QAAQ0lI,SACbr5C,GAAU,KAIlB,OAAOA,GAGX+4C,EAAKjkI,UAAUs1H,eAAiB,SAAyB6O,GAMrD,IALA,IAGIh0F,EAAU/kC,EAHVy3H,EAAWlrI,KAAKkrI,SAChB1jI,EAAS0jI,EAAS1jI,OAClBihI,EAAqB,EAGhB7+H,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B4uC,EAAW0yF,EAASthI,EAAM,GAC1B6J,EAAUy3H,EAASthI,GACnB6+H,GAAsBjwF,EAAS+vF,iBAAiB90H,EAAS+4H,GAO7D,OAJIxsI,KAAKkH,QAAQ0lI,QAAW1B,EAAS,GAAG/5C,SAASrgC,OAAOo6E,EAAS1jI,EAAS,GAAG2pF,YACzEs3C,GAAsB3B,GAAuBoE,EAAS,GAAG/5C,SAAU+5C,EAAS1jI,EAAS,GAAG2pF,SAAUq7C,IAG/F/D,EAAqB,GAAM,GAGtC6D,EAAKjkI,UAAUg0H,UAAY,SAAoBmQ,EAAUx/H,GACrD,IAAIk+H,EAAWlrI,KAAKkrI,SAChB1jI,EAAS0jI,EAAS1jI,OAClBylI,EAAYjgI,GAAShN,KAAKkH,QAAQ22H,OAAO7wH,MAE7C,GAAIxF,EAAS,EAAG,CACZ,GAAI0jI,EAAS,GAAGjC,YAAYiC,EAAS,GAAIsB,EAAUS,EAAW,SAC1D,OAAO,EAGX,IAAK,IAAIrjI,EAAM,EAAGA,GAAOpC,EAAS,EAAGoC,IACjC,GAAIshI,EAASthI,EAAM,GAAGq/H,YAAYiC,EAASthI,GAAM4iI,EAAUS,GACvD,OAAO,EAIf,GAAI/B,EAAS1jI,EAAS,GAAGyhI,YAAYiC,EAAS1jI,EAAS,GAAIglI,EAAUS,EAAW,OAC5E,OAAO,EAGf,OAAO,GAGXX,EAAKjkI,UAAUk3H,MAAQ,SAAgBtH,GACnC,IAEIiU,EAFAhB,EAAWlrI,KAAKkrI,SAChB1jI,EAAS0jI,EAAS1jI,OAGtB,GAAe,IAAXA,EAAc,CACd,IAAI2pF,EAAS+5C,EAAS,GAAG/5C,SAASopC,cAActC,GAChDiU,EAAc,IAAIhR,EAAK/pC,EAAQ8pC,EAAK/nH,WACjC,GAAI1L,EAAS,EAChB,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI2lI,EAAahC,EAAS3jI,EAAI,GAAG+/H,OAAO4D,EAAS3jI,GAAI0wH,GAEjDiU,EADAA,EACchR,EAAKsB,MAAM0P,EAAagB,GAExBA,EAK1B,OAAOhB,GAGXI,EAAKt3G,MAAQ,SAAgBpmB,EAAK1H,GAC9B,OAAOimI,GAAUn4G,MAAMpmB,EAAK1H,IAGhColI,EAAKc,SAAW,SAAmB/hD,EAAMnkF,GACrC,IAAIkoC,EAAO,IAAIk9F,EAAKplI,GAChB+nB,EAAMo8D,EAAK8vC,aACX1sH,EAAKwgB,EAAI,GACT8uG,EAAK9uG,EAAI,GAEb,GAAW,IAAPxgB,GAAmB,IAAPsvH,EACZ3uF,EAAKgN,OAAOivC,EAAKmwC,WACZoP,OAAOv/C,EAAKqwC,YACZkP,OAAOv/C,EAAKowC,eACZmP,OAAOv/C,EAAKswC,cACZr2E,YACF,CACH,IAAI1M,EAASyyC,EAAKzyC,OACdxzC,EAAIwzC,EAAOxzC,EACXjB,EAAIy0C,EAAOz0C,EACX6I,EAAQq+E,EAAKr+E,QACbL,EAAS0+E,EAAK1+E,SAClB8B,EAAKioH,EAAWjoH,EAAI,EAAGzB,EAAQ,GAC/B+wH,EAAKrH,EAAWqH,EAAI,EAAGpxH,EAAS,GAEhCyiC,EAAKgN,OAAOh3C,EAAIqJ,EAAItK,GACfymI,OAAOxlI,EAAI4H,EAAQyB,EAAItK,GACvB4mI,MAAM,CAAE3lI,EAAI4H,EAAO7I,EAAI45H,GAAMtvH,EAAIsvH,GAAI,GACrC6M,OAAOxlI,EAAI4H,EAAO7I,EAAIwI,EAASoxH,GAC/BgN,MAAM,CAAE3lI,EAAI4H,EAAQyB,EAAItK,EAAIwI,GAAU8B,EAAIsvH,GAAI,GAC9C6M,OAAOxlI,EAAIqJ,EAAItK,EAAIwI,GACnBo+H,MAAM,CAAE3lI,EAAGjB,EAAIwI,EAASoxH,GAAMtvH,EAAIsvH,GAAI,GACtC6M,OAAOxlI,EAAGjB,EAAI45H,GACdgN,MAAM,CAAE3lI,EAAIqJ,EAAItK,GAAKsK,EAAIsvH,GAAI,GAGtC,OAAO3uF,GAGXk9F,EAAKrQ,WAAa,SAAqBoF,EAAQn6H,GAC3C,GAAIm6H,EAAQ,CAGR,IAFA,IAAIjyF,EAAO,IAAIk9F,EAAKplI,GAEXK,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAAK,CACpC,IAAIilI,EAAWxS,EAAMhzE,OAAOq6E,EAAO95H,IAC/BilI,IACU,IAANjlI,EACA6nC,EAAKgN,OAAOowF,GAEZp9F,EAAKw7F,OAAO4B,IAKxB,OAAOp9F,IAIfk9F,EAAKe,gBAAkB,SAA0BhM,EAAQn6H,GACrD,GAAIm6H,EAAQ,CACR,IAAI6J,EA11BhB,SAAuBoC,EAAUV,GAC7B,IAAIvL,EAASiM,EAAS1mI,MAAM,GACxBskI,EAAW,GACX1jI,EAAS65H,EAAO75H,OAOpB,GALIA,EAAS,IACT0hI,GAAiB,EAAG7H,GACpB75H,EAAS65H,EAAO75H,QAGhBA,EAAS,GAAiB,IAAXA,GAAgB65H,EAAO,GAAGvwE,OAAOuwE,EAAO,IACvD,OAAO6J,EAGX,IA2BIqC,EAAqBC,EA3BrBjL,EAAKlB,EAAO,GACZU,EAAKV,EAAO,GACZI,EAAKJ,EAAO,GAIhB,IAFA6J,EAASvpI,KAAK,IAAIwlI,GAAQ5E,IAEnBA,EAAGzxE,OAAOuwE,EAAO75H,EAAS,KAC7BolI,GAAS,EACTvL,EAAOhyG,MACP7nB,IAGJ,GAAe,IAAXA,EAAc,CACd,IAAI6hI,EAAUO,GAAWrH,EAAGR,EAAI18H,GAAG2P,IAWnC,OATAmtB,EAAK+oG,GAAU7D,WACXgD,GAAkBhB,EAAS9G,EAAIR,EAAI18H,GAAG2P,KAG1Ck2H,EAASvpI,KAAK,IAAIwlI,GACdpF,EACAmI,GAAmBb,EAAS9G,EAAIR,EAAI18H,GAAG2P,MAGpCk2H,EAKX,GAAI0B,EAAQ,CAER,IAAIa,EAAgBrE,GADpB7G,EAAKlB,EAAO75H,EAAS,GAAIu6H,EAAKV,EAAO,GAAII,EAAKJ,EAAO,IAErDkM,EAAsBE,EAAc,GACpCD,EAAmBC,EAAc,QAGjCF,EAAsBlD,GADNT,GAAWrH,EAAIR,EAAI18H,GAAE2P,IACcutH,EAAIR,EAAI18H,GAAG2P,IAIlE,IADA,IAAI04H,EAAMH,EACD3jI,EAAM,EAAGA,GAAOpC,EAAS,EAAGoC,IAGjC,GAFAs/H,GAAiBt/H,EAAKy3H,GAElBz3H,EAAM,IADVpC,EAAS65H,EAAO75H,QACO,CAEnB,IAAImmI,EAAkBvE,GADtB7G,EAAKlB,EAAOz3H,GAAMm4H,EAAKV,EAAOz3H,EAAM,GAAI63H,EAAKJ,EAAOz3H,EAAM,IAG1Du4B,EAAK+oG,GAAU7D,WAAWqG,GAC1BA,EAAMC,EAAgB,GAEtB,IAAIpM,EAAMoM,EAAgB,GAC1BzC,EAASvpI,KAAK,IAAIwlI,GAAQpF,EAAIR,IAItC,GAAIqL,EAAQ,CAER,IAAIgB,EAAkBxE,GADtB7G,EAAKlB,EAAO75H,EAAS,GAAIu6H,EAAKV,EAAO75H,EAAS,GAAIi6H,EAAKJ,EAAO,IAG9Dl/F,EAAK+oG,GAAU7D,WAAWqG,GAC1BxC,EAASvpI,KAAK,IAAIwlI,GACdpF,EACA6L,EAAgB,KAGpBzrG,EAAK+oG,GAAU7D,WAAWuG,EAAgB,IAC1C1C,EAASvpI,KAAK,IAAIwlI,GACd1F,EACA+L,QAED,CACH,IAAIK,EAAYjE,GAAW7H,EAAIN,EAAIp8H,GAAG2P,IAEtCmtB,EAAK+oG,GAAU7D,WAAWqG,GAC1BxC,EAASvpI,KAAK,IAAIwlI,GACd1F,EACAyI,GAAmB2D,EAAW9L,EAAIN,EAAIp8H,GAAG2P,MAIjD,OAAOk2H,EA4vBgB4C,CAAczM,GACzBjyF,EAAO,IAAIk9F,EAAKplI,GAGpB,OAFAkoC,EAAK87F,SAASvpI,KAAKyG,MAAMgnC,EAAK87F,SAAUA,GAEjC97F,IAIfk9F,EAAKyB,QAAU,SAAkBrB,EAAKxlI,GAClC,IAAIkoC,EAAO,IAAIk9F,EAAKplI,GAChBs5H,EAAakM,EAAIlM,WACjBlrH,EAAQo3H,EAAIlO,QAAQgC,GAGxB,OAFApxF,EAAKgN,OAAO9mC,EAAMlQ,EAAGkQ,EAAMnR,GAC3BirC,EAAKs9F,IAAIlM,EAAYkM,EAAIjM,SAAUiM,EAAIpM,QAASoM,EAAInM,QAASmM,EAAIhM,eAC1DtxF,GAGX3uC,OAAOu6H,iBAAkBsR,EAAKjkI,UAAW60H,GAElCoP,EAxSA,CAySTvN,GAAUI,GAAWlC,MAEnBkQ,GAAa,SAAUlT,GACvB,SAASkT,EAAUjmI,GACf+yH,EAAW1vH,KAAKvK,KAAMkH,GACtBlH,KAAKytD,MAAQ,IAAIu3E,GACjBhlI,KAAKytD,MAAM0mE,YAAYn0H,MAElBg1H,EAAQh1H,KAAKkH,QAAQ22H,SACtB79H,KAAK69H,OAAO,QAIpB/X,EAAaqnB,EAAWlT,GACxBkT,EAAU9kI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC9D8kI,EAAU9kI,UAAUC,YAAc6kI,EAClCA,EAAUplI,GAAKolI,EAAU9kI,UACzB8kI,EAAUplI,GAAGI,KAAOglI,EAAUplI,GAAGO,YAEjC,IAAI0lI,EAAuB,CAAEt4G,SAAU,IAkHvC,OAhHAy3G,EAAUn4G,MAAQ,SAAgBpmB,EAAK1H,GAEnC,OAAO0kI,GADQ,IAAIuB,EAAUjmI,GACF0H,IAG/Bu+H,EAAU9kI,UAAU6I,SAAW,SAAmBxF,GAC9C,IAAI+hD,EAAQztD,KAAKytD,MACb8lC,EAAS,GAEb,GAAI9lC,EAAMjmD,OAAS,EAAG,CAGlB,IAFA,IAAI+O,EAAS,GAEJhP,EAAI,EAAGA,EAAIkmD,EAAMjmD,OAAQD,IAC9BgP,EAAO5U,KAAK8rD,EAAMlmD,GAAG2J,SAASxF,IAGlC6nF,EAASh9E,EAAO1L,KAAKwhI,IAGzB,OAAO94C,GAGXy6C,EAAqBt4G,SAASnG,IAAM,WAChC,MAAO,aAGX49G,EAAU9kI,UAAU+zC,OAAS,SAAiBh3C,EAAGjB,GAC7C,IAAIirC,EAAO,IAAIk9F,GAKf,OAJAl9F,EAAKgN,OAAOh3C,EAAGjB,GAEfnE,KAAKytD,MAAM9rD,KAAKytC,GAETpvC,MAGXmtI,EAAU9kI,UAAUuiI,OAAS,SAAiBxlI,EAAGjB,GAK7C,OAJInE,KAAKytD,MAAMjmD,OAAS,GACpB26B,EAAKniC,KAAKytD,OAAOm9E,OAAOxlI,EAAGjB,GAGxBnE,MAGXmtI,EAAU9kI,UAAUwiI,QAAU,SAAkBxD,EAAYD,EAAWoF,GAKnE,OAJIxsI,KAAKytD,MAAMjmD,OAAS,GACpB26B,EAAKniC,KAAKytD,OAAOo9E,QAAQxD,EAAYD,EAAWoF,GAG7CxsI,MAGXmtI,EAAU9kI,UAAUqkI,IAAM,SAAclM,EAAYC,EAAUH,EAASC,EAASG,GAK5E,OAJI1gI,KAAKytD,MAAMjmD,OAAS,GACpB26B,EAAKniC,KAAKytD,OAAOi/E,IAAIlM,EAAYC,EAAUH,EAASC,EAASG,GAG1D1gI,MAGXmtI,EAAU9kI,UAAU0iI,MAAQ,SAAgBp/H,EAAK8C,EAAIsvH,EAAImF,EAAUC,EAAOxpF,GAKtE,OAJI35C,KAAKytD,MAAMjmD,OAAS,GACpB26B,EAAKniC,KAAKytD,OAAOs9E,MAAMp/H,EAAK8C,EAAIsvH,EAAImF,EAAUC,EAAOxpF,GAGlD35C,MAGXmtI,EAAU9kI,UAAUi9C,MAAQ,WAKxB,OAJItlD,KAAKytD,MAAMjmD,OAAS,GACpB26B,EAAKniC,KAAKytD,OAAOnI,QAGdtlD,MAGXmtI,EAAU9kI,UAAUk3H,MAAQ,SAAgBtH,GACxC,OAAO+T,GAAoBhsI,KAAKytD,OAAO,EAAMwqE,IAGjDkV,EAAU9kI,UAAUw3H,QAAU,WAC1B,OAAOmM,GAAoBhsI,KAAKytD,OAAO,IAG3C0/E,EAAU9kI,UAAUs1H,eAAiB,SAAyB6O,GAG1D,IAFA,IAAI/+E,EAAQztD,KAAKytD,MAER7jD,EAAM,EAAGA,EAAM6jD,EAAMjmD,OAAQoC,IAClC,GAAI6jD,EAAM7jD,GAAK+zH,eAAe6O,GAC1B,OAAO,EAGf,OAAO,GAGXW,EAAU9kI,UAAUg0H,UAAY,SAAoBmQ,GAIhD,IAHA,IAAI/+E,EAAQztD,KAAKytD,MACbzgD,EAAQhN,KAAKkH,QAAQ22H,OAAO7wH,MAEvBpD,EAAM,EAAGA,EAAM6jD,EAAMjmD,OAAQoC,IAClC,GAAI6jD,EAAM7jD,GAAKyyH,UAAUmQ,EAAUx/H,GAC/B,OAAO,EAGf,OAAO,GAGXmgI,EAAU9kI,UAAUm1H,aAAe,SAAuBnqF,GACtD,OAAO+4F,GAA2BpsI,KAAKytD,MAAOztD,KAAKo9H,iBAAiB/pF,KAGxE5yC,OAAOu6H,iBAAkBmS,EAAU9kI,UAAW2lI,GAEvCb,EAnIK,CAoIdpO,GAAUI,GAAWlC,MAInBoD,GAAO,SAAUpG,GACjB,SAASoG,EAAIT,EAAU14H,QACF,IAAb04H,IAAuBA,EAAW,IAAIQ,SAC1B,IAAZl5H,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,KAAMkH,GAEtBlH,KAAK4/H,SAASA,GAET5K,EAAQh1H,KAAKkH,QAAQ22H,SACtB79H,KAAK69H,OAZM,QAgBnB/X,EAAaua,EAAKpG,GAClBoG,EAAIh4H,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACxDg4H,EAAIh4H,UAAUC,YAAc+3H,EAC5BA,EAAIt4H,GAAKs4H,EAAIh4H,UACbg4H,EAAIt4H,GAAGI,KAAOk4H,EAAIt4H,GAAGO,YAErB,IAAI40H,EAAqB,CAAExnG,SAAU,IAuCrC,OArCAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,OAGX8wG,EAAIh4H,UAAUk3H,MAAQ,SAAgBtH,GAClC,OAAOj4H,KAAK8/H,UAAUlE,KAAK3D,IAG/BoI,EAAIh4H,UAAUw3H,QAAU,WACpB,OAAO7/H,KAAK4/H,WAAWhE,QAG3ByE,EAAIh4H,UAAU4lI,OAAS,WACnB,IAAI7+F,EAAO,IAAIk9F,GACXzL,EAAc7gI,KAAK4/H,WAAWiB,cAElC,GAAIA,EAAYr5H,OAAS,EAAG,CACxB4nC,EAAKgN,OAAOykF,EAAY,GAAGz7H,EAAGy7H,EAAY,GAAG18H,GAE7C,IAAK,IAAIoD,EAAI,EAAGA,EAAIs5H,EAAYr5H,OAAQD,GAAK,EACzC6nC,EAAKy7F,QAAQhK,EAAYt5H,GAAIs5H,EAAYt5H,EAAI,GAAIs5H,EAAYt5H,EAAI,IAIzE,OAAO6nC,GAGXixF,EAAIh4H,UAAUs1H,eAAiB,SAAyBtD,GACpD,OAAOr6H,KAAK4/H,WAAWxD,cAAc/B,IAGzCgG,EAAIh4H,UAAUg0H,UAAY,SAAoBhC,GAC1C,OAAOr6H,KAAK4/H,WAAWvD,UAAUhC,EAAOr6H,KAAKkH,QAAQ22H,OAAO7wH,MAAQ,IAGxEvM,OAAOu6H,iBAAkBqF,EAAIh4H,UAAW60H,GAEjCmD,EA3DD,CA4DRtB,GAAUI,GAAWO,GAAazC,OAKhCiR,GAAQ,SAAUjU,GAClB,SAASiU,EAAK3nF,EAASz5C,EAAU5F,QACZ,IAAb4F,IAAuBA,EAAW,IAAIktH,QAC1B,IAAZ9yH,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,KAAMkH,GAEtBlH,KAAKumD,QAAQA,GACbvmD,KAAK8M,SAASA,GAET9M,KAAKkH,QAAQ6vF,OACd/2F,KAAKkH,QAAQ6vF,KAdN,mBAiBNi+B,EAAQh1H,KAAKkH,QAAQ+rB,OACtBjzB,KAAKizB,KAjBE,QAqBf6yF,EAAaooB,EAAMjU,GACnBiU,EAAK7lI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACzD6lI,EAAK7lI,UAAUC,YAAc4lI,EAC7BA,EAAKnmI,GAAKmmI,EAAK7lI,UACf6lI,EAAKnmI,GAAGI,KAAO+lI,EAAKnmI,GAAGO,YAEvB,IAAI40H,EAAqB,CAAExnG,SAAU,IA4CrC,OA1CAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,QAGX2+G,EAAK7lI,UAAUk+C,QAAU,SAAkB79C,GACvC,OAAIssH,EAAQtsH,IACR1I,KAAKkH,QAAQsoB,IAAI,UAAW9mB,GACrB1I,MAGJA,KAAKkH,QAAQqoB,IAAI,YAG5B2+G,EAAK7lI,UAAUk8E,QAAU,WAKrB,OAJcsvC,EAAUF,YAAY3zH,KAAKumD,UAAW,CAChDwwC,KAAM/2F,KAAKkH,QAAQqoB,IAAI,WAM/B2+G,EAAK7lI,UAAUgjF,KAAO,WAClB,IAAI57E,EAAOzP,KAAKukF,UACZ8P,EAAMr0F,KAAK8M,WAAW3F,QAC1B,OAAO,IAAI+zH,EAAK7mC,EAAK,CAAE5kF,EAAKzC,MAAOyC,EAAK9C,UAG5CuhI,EAAK7lI,UAAUuzH,KAAO,SAAevoF,GACjC,IAAIgqF,EAAiBtD,EAAS/5H,KAAKo9H,iBAAiB/pF,IACpD,OAAOrzC,KAAKqrF,OAAOuwC,KAAKyB,IAG5B6Q,EAAK7lI,UAAUw3H,QAAU,WACrB,OAAO7/H,KAAKqrF,OAAOuwC,QAGvBsS,EAAK7lI,UAAUs1H,eAAiB,SAAyBtD,GACrD,OAAOr6H,KAAKqrF,OAAO+wC,cAAc/B,IAGrC55H,OAAOu6H,iBAAkBkT,EAAK7lI,UAAW60H,GAElCgR,EArEA,CAsETnP,GAAUkI,GAAWhK,GAAW,CAAE,eAEhCkR,GAAW,SAAUlU,GACrB,SAASmU,EAAMrnI,EAAKskF,EAAMnkF,QACT,IAATmkF,IAAmBA,EAAO,IAAI6vC,QAClB,IAAZh0H,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,KAAMkH,GAEtBlH,KAAK+G,IAAIA,GACT/G,KAAKqrF,KAAKA,GAGdy6B,EAAasoB,EAAOnU,GACpBmU,EAAM/lI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC1D+lI,EAAM/lI,UAAUC,YAAc8lI,EAC9BA,EAAMrmI,GAAKqmI,EAAM/lI,UACjB+lI,EAAMrmI,GAAGI,KAAOimI,EAAMrmI,GAAGO,YAEzB,IAAI40H,EAAqB,CAAExnG,SAAU,IAkCrC,OAhCAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,SAGX6+G,EAAM/lI,UAAUtB,IAAM,SAAc2B,GAChC,OAAIssH,EAAQtsH,IACR1I,KAAKkH,QAAQsoB,IAAI,MAAO9mB,GACjB1I,MAGJA,KAAKkH,QAAQqoB,IAAI,QAG5B6+G,EAAM/lI,UAAUuzH,KAAO,SAAevoF,GAClC,IAAIgqF,EAAiBtD,EAAS/5H,KAAKo9H,iBAAiB/pF,IACpD,OAAOrzC,KAAKquI,MAAMzS,KAAKyB,IAG3B+Q,EAAM/lI,UAAUw3H,QAAU,WACtB,OAAO7/H,KAAKquI,MAAMzS,QAGtBwS,EAAM/lI,UAAUs1H,eAAiB,SAAyBtD,GACtD,OAAOr6H,KAAKquI,MAAMjS,cAAc/B,IAGpC+T,EAAM/lI,UAAUq1H,SAAW,WACvB,OAAO19H,KAAK+G,OAGhBtG,OAAOu6H,iBAAkBoT,EAAM/lI,UAAW60H,GAEnCkR,EAnDG,CAoDZ1O,GAAazC,GAAW,CAAE,UAExBqR,GAAc,SAAU1U,EAAO1vD,GAAiB,OAC/C,SAAU0vD,GACP,SAASoF,IACLpF,EAAMxxH,MAAMpI,KAAMqH,WAyBtB,OAtBAy+G,EAAakZ,EAAWpF,GACxBoF,EAAU32H,UAAY5H,OAAOumD,OAAQ4yE,GAASA,EAAMvxH,WACpD22H,EAAU32H,UAAUC,YAAc02H,EAClCA,EAAUj3H,GAAKi3H,EAAU32H,UACzB22H,EAAUj3H,GAAGI,KAAO62H,EAAUj3H,GAAGO,YAEjC02H,EAAU32H,UAAUkmI,SAAW,SAAmBvlH,GAG9C,IAFA,IAAImsB,EAAWn1C,KAAKkqE,GAEX3iE,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IAAK,CACtC,IAAIm8B,EAAQyR,EAAS5tC,GAEjBm8B,EAAM6qG,SACN7qG,EAAM6qG,SAASvlH,GAEfA,EAAS0a,GAIjB,OAAO1jC,MAGJg/H,EA5B4C,CA6BrDpF,IAGF4U,GAAS,SAAUvU,GACnB,SAASuU,EAAMtnI,GACX+yH,EAAW1vH,KAAKvK,KAAMkH,GACtBlH,KAAKm1C,SAAW,GAGpB2wE,EAAa0oB,EAAOvU,GACpBuU,EAAMnmI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC1DmmI,EAAMnmI,UAAUC,YAAckmI,EAC9BA,EAAMzmI,GAAKymI,EAAMnmI,UACjBmmI,EAAMzmI,GAAGI,KAAOqmI,EAAMzmI,GAAGO,YAEzB,IAAI40H,EAAqB,CAAExnG,SAAU,IAiHrC,OA/GAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,SAGXi/G,EAAMnmI,UAAUomI,eAAiB,SAAyBzhG,EAAQ5Y,EAAOrb,GACrE/Y,KAAKoK,QAAQ,iBAAiB,CAC1B4iC,OAAQA,EACR5Y,MAAOA,EACPrb,MAAOA,KAIfy1H,EAAMnmI,UAAU0xC,OAAS,WAMrB,OALA66E,EAAW50H,KAAKm1C,SAAU9tC,WAC1BrH,KAAK0uI,UAAUrnI,UAAWrH,MAE1BA,KAAKyuI,eAAe,MAAOpnI,WAEpBrH,MAGXwuI,EAAMnmI,UAAUu0D,OAAS,SAAiB7jD,EAAOlN,GAM7C,OALA7L,KAAKm1C,SAAS3qC,OAAOuO,EAAO,EAAGlN,GAC/BA,EAAQM,OAASnM,KAEjBA,KAAKyuI,eAAe,MAAO,CAAE5iI,GAAWkN,GAEjC/Y,MAGXwuI,EAAMnmI,UAAUsmI,SAAW,SAAmB9iI,EAASkN,GACnD,OAAO/Y,KAAK48D,OAAO7jD,EAAOlN,IAG9B2iI,EAAMnmI,UAAU0uB,OAAS,SAAiBlrB,GACtC,IAAIkN,EAAQ/Y,KAAKm1C,SAASx/B,QAAQ9J,GAOlC,OANIkN,GAAS,IACT/Y,KAAKm1C,SAAS3qC,OAAOuO,EAAO,GAC5BlN,EAAQM,OAAS,KACjBnM,KAAKyuI,eAAe,SAAU,CAAE5iI,GAAWkN,IAGxC/Y,MAGXwuI,EAAMnmI,UAAUumI,SAAW,SAAmB71H,GAC1C,GAAI,GAAKA,GAASA,EAAQ/Y,KAAKm1C,SAAS3tC,OAAQ,CAC5C,IAAIqE,EAAU7L,KAAKm1C,SAASp8B,GAC5B/Y,KAAKm1C,SAAS3qC,OAAOuO,EAAO,GAC5BlN,EAAQM,OAAS,KACjBnM,KAAKyuI,eAAe,SAAU,CAAE5iI,GAAWkN,GAG/C,OAAO/Y,MAGXwuI,EAAMnmI,UAAU4tD,MAAQ,WACpB,IAAI7hC,EAAQp0B,KAAKm1C,SAMjB,OALAn1C,KAAKm1C,SAAW,GAChBn1C,KAAK0uI,UAAUt6G,EAAO,MAEtBp0B,KAAKyuI,eAAe,SAAUr6G,EAAO,GAE9Bp0B,MAGXwuI,EAAMnmI,UAAUuzH,KAAO,SAAevoF,GAClC,OAAO24F,GAAoBhsI,KAAKm1C,UAAU,EAAMn1C,KAAKo9H,iBAAiB/pF,KAG1Em7F,EAAMnmI,UAAUw3H,QAAU,WACtB,OAAOmM,GAAoBhsI,KAAKm1C,UAAU,IAG9Cq5F,EAAMnmI,UAAUm1H,aAAe,SAAuBnqF,GAClD,OAAO+4F,GAA2BpsI,KAAKm1C,SAAUn1C,KAAKo9H,iBAAiB/pF,KAG3Em7F,EAAMnmI,UAAU+0H,iBAAmB,SAA2B/pF,GAC1D,OAAO4pF,GAAU50H,UAAU+0H,iBAAiB7yH,KAAKvK,KAAMqzC,IAAmB,MAG9Em7F,EAAMnmI,UAAU+zH,cAAgB,SAAwB/B,EAAO8C,GAC3D,GAAIn9H,KAAKsM,UAGL,IAFA,IAAI6oC,EAAWn1C,KAAKm1C,SAChB5B,EAAYvzC,KAAKo9H,iBAAiBD,GAC7BvzH,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IACrC,GAAIurC,EAASvrC,GAAKwyH,cAAc/B,EAAO9mF,GACnC,OAAO,EAInB,OAAO,GAGXi7F,EAAMnmI,UAAUqmI,UAAY,SAAoBv6G,EAAU06G,GAGtD,IAFA,IAEStnI,EAAI,EAAGA,EAAI4sB,EAAS3sB,OAAQD,IAAK,CACtC,IAAIm8B,EAAQvP,EAAS5sB,GACjB4E,EAASu3B,EAAMv3B,OACfA,GAAUA,IALHnM,MAK0BmM,EAAO4qB,QACxC5qB,EAAO4qB,OAAO2M,GAGlBA,EAAMv3B,OAAS0iI,IAIvBpuI,OAAOu6H,iBAAkBwT,EAAMnmI,UAAW60H,GAEnCsR,EA7HC,CA8HVF,GAAYrR,GAAW,aAEzB,SAAS6R,GAAiBzU,EAAOuB,EAAM/vH,GACnC,IAAIkjI,EAAYljI,EAAQ0nC,aAAeypF,KACnC/E,EAAS8W,EAAU9W,SACvBA,EAAOtzH,GAAK01H,EAAMj1H,EAAIw2H,EAAKhjF,OAAOxzC,EAClC6yH,EAAO9qE,GAAKktE,EAAMl2H,EAAIy3H,EAAKhjF,OAAOz0C,EAElC4qI,EAAU9W,OAAOA,GACjBpsH,EAAQ0nC,UAAUw7F,GAGtB,SAASC,GAAWv/H,EAAM47E,EAAM4jD,EAAOjqG,EAAMkqG,GAUzC,MARc,UAAVD,EACQ5jD,EAAKzyC,OAAO5T,GACH,QAAViqG,EACC5jD,EAAKzyC,OAAO5T,GAAQqmD,EAAK57E,KAAKy/H,GAAaz/H,EAE3C47E,EAAKzyC,OAAO5T,IAASqmD,EAAK57E,KAAKy/H,GAAaz/H,GAAQ,EAMpE,SAAS0/H,GAAkB1/H,EAAM47E,EAAM4jD,EAAOjqG,EAAMkqG,GAUhD,MARc,UAAVD,EACQ5jD,EAAKzyC,OAAO5T,GAAQqmD,EAAK57E,KAAKy/H,GAAaz/H,EAClC,QAAVw/H,EACC5jD,EAAKzyC,OAAO5T,GAEZqmD,EAAKzyC,OAAO5T,IAASqmD,EAAK57E,KAAKy/H,GAAaz/H,GAAQ,EAMpE,IAAIujH,GAAkB,CAClBoc,aAAc,QACdC,eAAgB,QAChBC,WAAY,QACZC,QAAS,EACTC,YAAa,aACbC,YAAa,EACbzjH,MAAM,EACN0jH,QAAQ,GAGRpuI,GAAU,SAAU6yB,EAAUnL,GAC9BmL,EAAS7yB,QAAQ0nB,IAGjB2mH,GAAiB,SAAUx7G,EAAUnL,GAGrC,IAFA,IAESpf,EAFIuqB,EAAS3sB,OAEE,EAAGoC,GAAO,EAAGA,IACjCof,EAASmL,EAASvqB,GAAMA,IAI5B8uE,GAAU,SAAUk3D,GACpB,SAASl3D,EAAO2S,EAAMnkF,GAClB0oI,EAASrlI,KAAKvK,KAAM2C,EAAEI,OAAO,GAAIiwH,GAAiB9rH,IAClDlH,KAAKquI,MAAQhjD,EACbrrF,KAAK6vI,UAAY,GA4KrB,OAzKA/pB,EAAaptC,EAAQk3D,GACrBl3D,EAAOrwE,UAAY5H,OAAOumD,OAAQ4oF,GAAYA,EAASvnI,WACvDqwE,EAAOrwE,UAAUC,YAAcowE,EAC/BA,EAAO3wE,GAAK2wE,EAAOrwE,UACnBqwE,EAAO3wE,GAAGI,KAAOuwE,EAAO3wE,GAAGO,YAE3BowE,EAAOrwE,UAAUgjF,KAAO,SAAe3iF,GACnC,OAAIA,GACA1I,KAAKquI,MAAQ3lI,EACN1I,MAGJA,KAAKquI,OAGhB31D,EAAOrwE,UAAUynI,SAAW,WACxB,IAAI5oI,EAAUlH,KAAKkH,QACf6oI,EAAW/vI,KAAK6vI,UACQ,eAAxB3oI,EAAQsoI,aACRO,EAASb,UAAY,QACrBa,EAASC,gBAAkB,SAC3BD,EAASE,UAAY,IACrBF,EAASG,WAAa,MAEtBH,EAASb,UAAY,SACrBa,EAASC,gBAAkB,QAC3BD,EAASE,UAAY,IACrBF,EAASG,WAAa,KAGtBhpI,EAAQ4O,SACR9V,KAAKsB,QAAUquI,GACf3vI,KAAKmwI,aAAehB,KAEpBnvI,KAAKsB,QAAUA,GACftB,KAAKmwI,aAAenB,KAI5Bt2D,EAAOrwE,UAAU+nI,OAAS,WAGtB,GAAKpwI,KAAKquI,OAAkC,IAAzBruI,KAAKm1C,SAAS3tC,OAAjC,CAGAxH,KAAK8vI,WAED9vI,KAAKkH,QAAQqsC,WACbvzC,KAAKuzC,UAAU,MA4BnB,IAzBA,IAcI88F,EAAcn8E,EAAOo8E,EAdrBppI,EAAUlH,KAAKkH,QACfmkF,EAAOrrF,KAAKquI,MACZp/G,EAAMjvB,KAAKuwI,cACX/mG,EAASva,EAAIua,OACbgnG,EAAavhH,EAAIuhH,WACjBC,EAAQzwI,KAAK6vI,UACbX,EAAYuB,EAAMvB,UAClBc,EAAkBS,EAAMT,gBACxBC,EAAYQ,EAAMR,UAClBC,EAAaO,EAAMP,WACnBQ,EAAc,IAAI1W,EAClB2W,EAAgB,IAAI3W,EACpBvqH,EAAO,IAAIwrH,EACX2V,EAAa5B,GAAWwB,EAAYnlD,EAAMnkF,EAAQkoI,aAAcc,EAAYF,GAG5Ea,EAAkB,SAAUjV,EAAMhyH,GAClC,IAAIiC,EAAUqoD,EAAM//B,SAASvqB,GAE7B+mI,EAAcV,GAAaI,EAC3BM,EAAcT,GAAclB,GAAWpT,EAAKnsH,KAAKugI,GAAkBM,EAAUppI,EAAQooI,WAAYY,EAAYF,GAC7GlB,GAAiB6B,EAAe/U,EAAM/vH,GACtCwkI,GAAgBzU,EAAKnsH,KAAKy/H,GAAahoI,EAAQqoI,SAG1CuB,EAAW,EAAGA,EAAWtnG,EAAOhiC,OAAQspI,IAC7C58E,EAAQ1qB,EAAOsnG,GACfJ,EAAYT,GAAaI,EAtCdrwI,KAsCsCmwI,aAAaj8E,EAAMzkD,KAAM47E,EAAMnkF,EAAQmoI,eAAgBY,EAAWf,GACnHwB,EAAYR,GAAcU,EAC1BnhI,EAAKy/H,GAAah7E,EAAMzkD,KACxBA,EAAKugI,GAAmB97E,EAAM68E,SAC9BT,EAAW,IAAIpV,EAAKwV,EAAajhI,GA1CtBzP,KA2CFsB,QAAQ4yD,EAAM88E,OAAQH,GAE/BD,GAAc18E,EAAM68E,SAAW7pI,EAAQuoI,YAG3C,IAAKvoI,EAAQ8kB,MAAQkoC,EAAMzkD,KAAO47E,EAAK57E,KAAKy/H,GAAY,CACpD,IAAIv/F,EAAQ07C,EAAK57E,KAAKy/H,GAAaoB,EAAS7gI,KAAKy/H,GAC7C+B,EAAcX,EAAS9U,UAAU7rF,MAAMA,EAAOA,GAE9CuhG,EAAWlC,GADEsB,EAAS7gI,KAAKugI,GAAmBrgG,EACZ07C,EAAMnkF,EAAQkoI,aAAcc,EAAYF,GAC1Ez8F,EAAYypF,KACE,MAAdiT,EACA18F,EAAUvD,UAAUq7C,EAAKzyC,OAAOxzC,EAAI6rI,EAAY7rI,EAAG8rI,EAAWD,EAAY9sI,GAE1EovC,EAAUvD,UAAUkhG,EAAWD,EAAY7rI,EAAGimF,EAAKzyC,OAAOz0C,EAAI8sI,EAAY9sI,GAE9EovC,EAAU5D,MAAMA,EAAOA,GAEvB3vC,KAAKuzC,UAAUA,MAIvBmlC,EAAOrwE,UAAUkoI,YAAc,WAkB3B,IAjBA,IAAIpf,EAAWnxH,KAGXkH,EADMlH,KACQkH,QACdiuC,EAFMn1C,KAESm1C,SACfs6F,EAAcvoI,EAAQuoI,YACtBzjH,EAAO9kB,EAAQ8kB,KACfujH,EAAUroI,EAAQqoI,QAClBL,EAAYlvI,KAAK6vI,UAAUX,UAC3Bh7E,EAAQl0D,KAAKmxI,YACb3nG,EAAS,GACT4nG,EAAW,WACX5nG,EAAO7nC,KAAKuyD,GACZs8E,GAAct8E,EAAM68E,SAAWtB,GAE/Be,GAAcf,EAET7lI,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IAAO,CAC5C,IAAIiC,EAAUspC,EAASvrC,GACnBgyH,EAAOzmF,EAASvrC,GAAK2zH,cACrB1xH,EAAQS,WAAasvH,IACjB5vG,GAAQkoC,EAAMzkD,KAAOmsH,EAAKnsH,KAAKy/H,GAAaK,EAAUpe,EAASkd,MAAM5+H,KAAKy/H,GAC9C,IAAxBh7E,EAAM88E,OAAOxpI,QACb2pH,EAASkgB,YAAYn9E,EAAO0nE,EAAM/vH,GAClCulI,IACAl9E,EAAQi9D,EAASggB,cAEjBC,IACAl9E,EAAQi9D,EAASggB,YACjBhgB,EAASkgB,YAAYn9E,EAAO0nE,EAAM/vH,IAGtCslH,EAASkgB,YAAYn9E,EAAO0nE,EAAM/vH,IAS9C,OAJIqoD,EAAM88E,OAAOxpI,QACb4pI,IAGG,CACH5nG,OAAQA,EACRgnG,WAAYA,IAIpB93D,EAAOrwE,UAAUgpI,YAAc,SAAsBn9E,EAAO0nE,EAAM/vH,GAC9DqoD,EAAMzkD,MAAQmsH,EAAKnsH,KAAKzP,KAAK6vI,UAAUX,WAAalvI,KAAKkH,QAAQqoI,QACjEr7E,EAAM68E,SAAW1tI,KAAKuV,IAAIgjH,EAAKnsH,KAAKzP,KAAK6vI,UAAUG,iBAAkB97E,EAAM68E,UAC3E78E,EAAM88E,OAAOrvI,KAAKi6H,GAClB1nE,EAAM//B,SAASxyB,KAAKkK,IAGxB6sE,EAAOrwE,UAAU8oI,UAAY,WACzB,MAAO,CACHJ,SAAU,EACVthI,MAAOzP,KAAKkH,QAAQqoI,QACpByB,OAAQ,GACR78G,SAAU,KAIXukD,EAhLE,CAiLX81D,IAEE8C,GAAU,SAAUrX,GACpB,SAASsX,EAAQ3R,EAAU14H,QACN,IAAb04H,IAAuBA,EAAW,IAAI1E,QAC1B,IAAZh0H,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,KAAMkH,GAEtBlH,KAAK4/H,SAASA,GAET5K,EAAQh1H,KAAKkH,QAAQ22H,SACtB79H,KAAK69H,OAAO,QAIpB/X,EAAayrB,EAAStX,GACtBsX,EAAQlpI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC5DkpI,EAAQlpI,UAAUC,YAAcipI,EAChCA,EAAQxpI,GAAKwpI,EAAQlpI,UACrBkpI,EAAQxpI,GAAGI,KAAOopI,EAAQxpI,GAAGO,YAE7B,IAAI40H,EAAqB,CAAExnG,SAAU,IAwBrC,OAtBAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,QAGXgiH,EAAQlpI,UAAUk3H,MAAQ,SAAgBtH,GACtC,OAAOj4H,KAAK8/H,UAAUlE,KAAK3D,IAG/BsZ,EAAQlpI,UAAUw3H,QAAU,WACxB,OAAO7/H,KAAK8/H,UAAUlE,QAG1B2V,EAAQlpI,UAAUs1H,eAAiB,SAAyBtD,GACxD,OAAOr6H,KAAK8/H,UAAU1D,cAAc/B,IAGxCkX,EAAQlpI,UAAUg0H,UAAY,SAAoBhC,GAC9C,OAAOr6H,KAAK4/H,WAAWvD,UAAUhC,EAAOr6H,KAAKkH,QAAQ22H,OAAO7wH,MAAQ,IAGxEvM,OAAOu6H,iBAAkBuW,EAAQlpI,UAAW60H,GAErCqU,EA5CE,CA6CXxS,GAAUI,GAAWO,GAAazC,OAEpC,SAASuU,GAAcr9G,EAAUk3D,EAAMomD,EAAWzsG,EAAMkqG,GACpD,IAAK,IAAItlI,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IAAO,CAC5C,IAAIgyH,EAAOznG,EAASvqB,GAAK2zH,cACzB,GAAI3B,EAAM,CACN,IAAIvB,EAAQuB,EAAKhjF,OAAOzxC,QACxBkzH,EAAMr1F,GAAQgqG,GAAWpT,EAAKnsH,KAAKy/H,GAAY7jD,EAAMomD,GAAa,QAASzsG,EAAMkqG,GACjFJ,GAAiBzU,EAAOuB,EAAMznG,EAASvqB,MAanD,SAAS8nI,GAAcv9G,EAAUw9G,EAAWC,EAAW1C,GACnD,GAAI/6G,EAAS3sB,OAAS,EAIlB,IAHA,IAAIoxC,EAAS,IAAIohF,EACb6X,EAAe19G,EAAS,GAAGynG,KAEtBhyH,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IAAO,CAC5C,IAAIiC,EAAUsoB,EAASvqB,GAAKiC,QACxB+vH,EAAOznG,EAASvqB,GAAKgyH,KACzBhjF,EAAO+4F,GAAaE,EAAaj5F,OAAO+4F,GAAaE,EAAapiI,KAAKy/H,GACvEt2F,EAAOg5F,GAAahW,EAAKhjF,OAAOg5F,GAChC9C,GAAiBl2F,EAAQgjF,EAAM/vH,GAC/B+vH,EAAKhjF,OAAO+4F,GAAa/4F,EAAO+4F,GAChCE,EAAejW,GAK3B,SAASkW,GAAoB39G,GAGzB,IAFA,IAAIu9G,EAAgB,GAEX9nI,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IAAO,CAC5C,IAAIiC,EAAUsoB,EAASvqB,GACnBgyH,EAAO/vH,EAAQ0xH,cACf3B,GACA8V,EAAc/vI,KAAK,CACfkK,QAASA,EACT+vH,KAAMA,IAKlB,OAAO8V,EAyDX,SAASK,GAAa59G,EAAUk3D,EAAMrmD,EAAM4sG,EAAW1C,GAKnD,IAJA,IAAI8C,EA/CR,SAAmB79G,EAAUk3D,EAAM6jD,GAc/B,IAbA,IAIIrjI,EAAS+vH,EAJTqW,EAAU5mD,EAAK57E,KAAKy/H,GACpB8C,EAAS,GACTE,EAAQ,GACRC,EAAY,EAGZC,EAAoB,WACpBF,EAAMvwI,KAAK,CACPkK,QAASA,EACT+vH,KAAMA,KAILhyH,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IAIrC,GAHAiC,EAAUsoB,EAASvqB,GAEnBgyH,EAAO/vH,EAAQ0xH,cACL,CACN,IAAI9tH,EAAOmsH,EAAKnsH,KAAKy/H,GACjBiD,EAAY1iI,EAAOwiI,EACfC,EAAM1qI,QACNwqI,EAAOrwI,KAAKuwI,GACZA,EAAQ,GACRE,IACAD,EAAY1iI,IAEZ2iI,IACAJ,EAAOrwI,KAAKuwI,GACZA,EAAQ,GACRC,EAAY,IAGhBC,IACAD,GAAa1iI,GASzB,OAJIyiI,EAAM1qI,QACNwqI,EAAOrwI,KAAKuwI,GAGTF,EAIMK,CAAUl+G,EAAUk3D,EAAM6jD,GACnCt2F,EAASyyC,EAAKzyC,OAAOzxC,QACrBoP,EAAS,GAEJ3M,EAAM,EAAGA,EAAMooI,EAAOxqI,OAAQoC,IAAO,CAC1C,IAAIsoI,EAAQF,EAAOpoI,GACf0oI,EAAeJ,EAAM,GACzBt5F,EAAOg5F,GAAaU,EAAa1W,KAAKhjF,OAAOg5F,GAC7C9C,GAAiBl2F,EAAQ05F,EAAa1W,KAAM0W,EAAazmI,SACzDymI,EAAa1W,KAAKhjF,OAAO5T,GAAQ4T,EAAO5T,GACxC0sG,GAAcQ,EAAOltG,EAAM4sG,EAAW1C,GACtC34H,EAAO5U,KAAK,IACZ,IAAK,IAAI4wI,EAAa,EAAGA,EAAaL,EAAM1qI,OAAQ+qI,IAChDh8H,EAAO3M,GAAKjI,KAAKuwI,EAAMK,GAAY1mI,SAG3C,OAAO0K,EAyBX,IAAIi8H,GAAc,SAAUvN,GACxB,SAASuN,IACLvN,EAAiB78H,MAAMpI,KAAMqH,WAejC,OAZAy+G,EAAa0sB,EAAYvN,GACzBuN,EAAWnqI,UAAY5H,OAAOumD,OAAQi+E,GAAoBA,EAAiB58H,WAC3EmqI,EAAWnqI,UAAUC,YAAckqI,EACnCA,EAAWzqI,GAAKyqI,EAAWnqI,UAC3BmqI,EAAWzqI,GAAGI,KAAOqqI,EAAWzqI,GAAGO,YAEnCkqI,EAAWnqI,UAAUy2D,QAAU,WAC3B9+D,KAAKu0H,cAAc,CACftvG,MAAO,WAIRutH,EAjBM,CAkBf9N,IAEF,SAAS+N,GAAgBrwI,GACrB,OAAO,SAASsG,GACZ,OAAIssH,EAAQtsH,IACR1I,KAAKkH,QAAQsoB,IAAIptB,EAAMsG,GAChB1I,MAGJA,KAAKkH,QAAQqoB,IAAIntB,IAUhC,IAAmCgS,GAC3BmC,GAkBJm8H,GAAgB,SAAUzY,GAC1B,SAASyY,EAAa31H,EAAQqyG,EAAOx4F,GACjCqjG,EAAW1vH,KAAKvK,MAEhBA,KAAKkH,QAAU,IAAIkyH,EAAa,CAC5Br8G,OAAQA,EACRqyG,MAAOA,EACPx4F,QAASo+F,EAAQp+F,GAAWA,EAAU,IAG1C52B,KAAKkH,QAAQitH,YAAYn0H,MAwB7B,OArBA8lH,EAAa4sB,EAAczY,GAC3ByY,EAAarqI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACjEqqI,EAAarqI,UAAUC,YAAcoqI,EACrCA,EAAa3qI,GAAK2qI,EAAarqI,UAC/BqqI,EAAa3qI,GAAGI,KAAOuqI,EAAa3qI,GAAGO,YAEvCoqI,EAAa1rF,OAAS,SAAiB2rF,GACnC,GAAI3d,EAAQ2d,GAUR,OARIA,aAAeD,EACRC,EACAA,EAAInrI,OAAS,EACb,IAAIkrI,EAAaC,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAErC,IAAID,EAAaC,EAAI51H,OAAQ41H,EAAIvjB,MAAOujB,EAAI/7G,UAOxD87G,EAlCQ,EAnBgBt+H,GAiBrB,CAAE,SAAU,QAAS,WAhB3BmC,GAAU,SAAUqjH,GACpB,SAASrjH,IACLqjH,EAAMxxH,MAAMpI,KAAMqH,WAOtB,OANCy+G,EAAavvG,EAAQqjH,GACtBrjH,EAAOlO,UAAY5H,OAAOumD,OAAQ4yE,GAASA,EAAMvxH,WACjDkO,EAAOlO,UAAUC,YAAciO,EAC/BA,EAAOxO,GAAKwO,EAAOlO,UACnBkO,EAAOxO,GAAGI,KAAOoO,EAAOxO,GAAGO,YAEpBiO,EATE,CAqDHw9G,GA5Dd,SAAgChsH,EAAIqM,GAChC,IAAK,IAAI7M,EAAI,EAAGA,EAAI6M,EAAM5M,OAAQD,IAC9BQ,EAAGqM,EAAM7M,IAAMkrI,GAAgBr+H,EAAM7M,IAgBzCqrI,CAAuBr8H,GAAOlO,UAAW+L,IAElCmC,KA0CPs8H,GAAY,SAAUxZ,GACtB,SAASwZ,EAAS3rI,QACE,IAAZA,IAAsBA,EAAU,IAEpCmyH,EAAgB9uH,KAAKvK,MAErBA,KAAK8yI,MAAQ,IAAIN,GAAWxyI,KAAK+yI,aAAa7rI,EAAQ4rI,QACtD9yI,KAAK8yI,MAAM3e,YAAYn0H,MACvBA,KAAKgzI,WAAa9rI,EAAQ+rI,UAC1BjzI,KAAK2vB,GAAKulG,IAGdpP,EAAa+sB,EAAUxZ,GACvBwZ,EAASxqI,UAAY5H,OAAOumD,OAAQqyE,GAAmBA,EAAgBhxH,WACvEwqI,EAASxqI,UAAUC,YAAcuqI,EACjCA,EAAS9qI,GAAK8qI,EAASxqI,UACvBwqI,EAAS9qI,GAAGI,KAAO0qI,EAAS9qI,GAAGO,YAE/B,IAAI40H,EAAqB,CAAExnG,SAAU,IAmDrC,OAjDAwnG,EAAmBxnG,SAASnG,IAAM,WAC9B,MAAO,YAGXsjH,EAASxqI,UAAU4qI,UAAY,SAAoBvqI,GAC/C,OAAIssH,EAAQtsH,IACR1I,KAAKgzI,WAAatqI,EAClB1I,KAAKu0H,gBACEv0H,MAGJA,KAAKgzI,YAGhBH,EAASxqI,UAAU0qI,aAAe,SAAuBD,QACvC,IAAVA,IAAoBA,EAAQ,IAGhC,IADA,IAAIv8H,EAAS,GACJ3M,EAAM,EAAGA,EAAMkpI,EAAMtrI,OAAQoC,IAClC2M,EAAO5U,KAAK+wI,GAAa1rF,OAAO8rF,EAAMlpI,KAG1C,OAAO2M,GAGXs8H,EAASxqI,UAAU6qI,QAAU,SAAkBn2H,EAAQqyG,EAAOx4F,GAC1D52B,KAAK8yI,MAAMnxI,KAAK,IAAI+wI,GAAa31H,EAAQqyG,EAAOx4F,KAGpDi8G,EAASxqI,UAAU8qI,WAAa,SAAqBvrH,GACjD,IAAI7O,EAAQ/Y,KAAK8yI,MAAMn9H,QAAQiS,GAC3B7O,GAAS,GACT/Y,KAAK8yI,MAAMtoI,OAAOuO,EAAO,IAIjC85H,EAASxqI,UAAUksH,cAAgB,SAAwB5vH,GACvD3E,KAAKoK,QAAQ,gBAAiB,CAC1B6a,MAAO,YAActgB,EAAI,IAAMA,EAAEsgB,MAAQ,IACzCvc,MAAO1I,QAIf6yI,EAASxqI,UAAUmsH,eAAiB,WAChCx0H,KAAKu0H,iBAGT9zH,OAAOu6H,iBAAkB6X,EAASxqI,UAAW60H,GAEtC2V,EArEI,CAsEb9e,GAIEqf,GAAkB,SAAUnZ,GAC5B,SAASmZ,EAAelsI,QACJ,IAAZA,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,KAAMkH,GAEtBlH,KAAKsV,MAAMpO,EAAQoO,OAAS,IAAI0kH,GAChCh6H,KAAK2L,IAAIzE,EAAQyE,KAAO,IAAIquH,EAAM,EAAG,IASzC,OANAlU,EAAastB,EAAgBnZ,GAC7BmZ,EAAe/qI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACnE+qI,EAAe/qI,UAAUC,YAAc8qI,EACvCA,EAAerrI,GAAKqrI,EAAe/qI,UACnC+qI,EAAerrI,GAAGI,KAAOirI,EAAerrI,GAAGO,YAEpC8qI,EAhBU,CAiBnBnM,GAAW4L,GAnBE,CAAE,QAAS,SAqBtBQ,GAAkB,SAAUpZ,GAC5B,SAASoZ,EAAensI,QACJ,IAAZA,IAAsBA,EAAU,IAEpC+yH,EAAW1vH,KAAKvK,KAAMkH,GAEtBlH,KAAKu9E,OAAOr2E,EAAQq2E,QAAU,IAAIy8C,GAClCh6H,KAAKszI,QAAUte,EAAQ9tH,EAAQykB,QAAUzkB,EAAQykB,OAAS,EAC1D3rB,KAAKuzI,cAAgBrsI,EAAQssI,aA6BjC,OA1BA1tB,EAAautB,EAAgBpZ,GAC7BoZ,EAAehrI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WACnEgrI,EAAehrI,UAAUC,YAAc+qI,EACvCA,EAAetrI,GAAKsrI,EAAehrI,UACnCgrI,EAAetrI,GAAGI,KAAOkrI,EAAetrI,GAAGO,YAE3C+qI,EAAehrI,UAAUsjB,OAAS,SAAiBjjB,GAC/C,OAAIssH,EAAQtsH,IACR1I,KAAKszI,QAAU5qI,EACf1I,KAAKw0H,iBACEx0H,MAGJA,KAAKszI,SAGhBD,EAAehrI,UAAUmrI,aAAe,SAAuB9qI,GAC3D,OAAIssH,EAAQtsH,IACR1I,KAAKuzI,cAAgB7qI,EACrB1I,KAAKu0H,gBACEv0H,MAGJA,KAAKuzI,eAGTF,EArCU,CAsCnBpM,GAAW4L,GAAU,CAAE,YAsCzB,IAMI9rH,GA+IA0sH,GArJAC,GAAkB,CACrBC,MArCD,SAAe7mI,GACX,MAAO,GAAMzJ,KAAKk1H,IAAIzrH,EAAWzJ,KAAK+xH,IAAM,GAqC/Cwe,OAlCD,SAAgB9mI,GACZ,OAAOA,GAkCV+mI,eA/BD,SAAwB/mI,EAAU4wB,EAAMpoB,EAAOupB,GAC3C,IAAI55B,EAAI,QACJ8rH,EAAI,EACJ7rH,EAAI25B,EAER,OAAiB,IAAb/xB,EACOwI,EAGM,IAAbxI,EACOwI,EAAQupB,GAGdkyF,IACDA,EAAI,IAGJ7rH,EAAI7B,KAAK6T,IAAI2nB,IACb35B,EAAI25B,EACJ55B,EAAI8rH,EAAI,GAER9rH,EAAI8rH,GAAK,EAAI1tH,KAAK+xH,IAAM/xH,KAAKywI,KAAKj1G,EAAO35B,GAGtCA,EAAI7B,KAAKqmC,IAAI,GAAI,GAAK58B,GACtBzJ,KAAKm1H,KAAKlmH,OAAOxF,GAAY7H,IAAM,IAAM5B,KAAK+xH,IAAMrE,GAAKlyF,EAAOvpB,KAWvEy+H,GAAoB,SAAU/f,GAC9B,SAAS+f,IACL/f,EAASzpH,KAAKvK,MAEdA,KAAKg0I,OAAS,GAGlBluB,EAAaiuB,EAAkB/f,GAC/B+f,EAAiB1rI,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WACjE0rI,EAAiB1rI,UAAUC,YAAcyrI,EACzCA,EAAiBhsI,GAAKgsI,EAAiB1rI,UACvC0rI,EAAiBhsI,GAAGI,KAAO4rI,EAAiBhsI,GAAGO,YAE/C,IAAI4xH,EAAkB,CAAEzmH,QAAS,IAsCjC,OApCAymH,EAAgBzmH,QAAQ8b,IAAM,WAK1B,OAJKxI,KACDA,GAAW,IAAIgtH,GAGZhtH,IAGXgtH,EAAiB1rI,UAAU4uB,SAAW,SAAmB70B,EAAMsD,GAC3D1F,KAAKg0I,OAAOryI,KAAK,CACbS,KAAMA,EACNsD,KAAMA,KAIdquI,EAAiB1rI,UAAU2+C,OAAS,SAAiBn7C,EAAS3E,GAC1D,IACIiJ,EADAikB,EAAQp0B,KAAKg0I,OAGjB,GAAI9sI,GAAWA,EAAQxB,KAEnB,IADA,IAAIA,EAAOwB,EAAQxB,KAAK4S,cACf/Q,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9B,GAAI6sB,EAAM7sB,GAAGnF,KAAKkW,gBAAkB5S,EAAM,CACtCyK,EAAQikB,EAAM7sB,GACd,MAKZ,GAAI4I,EACA,OAAO,IAAIA,EAAMzK,KAAKmG,EAAS3E,IAIvCzG,OAAOu6H,iBAAkB+Y,EAAkB7Z,GAEpC6Z,EAnDY,CAoDrBnsI,GAEE8zC,GAAa,SAAUs4E,GACvB,SAASt4E,EAAU7vC,EAAS3E,GACxB8sH,EAASzpH,KAAKvK,MAEdA,KAAKkH,QAAUvE,EAAEI,OAAO,GAAI/C,KAAKkH,QAASA,GAC1ClH,KAAK6L,QAAUA,EAGnBi6G,EAAapqE,EAAWs4E,GACxBt4E,EAAUrzC,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WAC1DqzC,EAAUrzC,UAAUC,YAAcozC,EAClCA,EAAU3zC,GAAK2zC,EAAUrzC,UACzBqzC,EAAU3zC,GAAGI,KAAOuzC,EAAU3zC,GAAGO,YAEjC,IAAI40H,EAAqB,CAAEh2H,QAAS,IAsEpC,OApEAw0C,EAAUsL,OAAS,SAAiBthD,EAAMmG,EAAS3E,GAC/C,OAAO6sI,GAAiBtgI,QAAQuzC,OAAOthD,EAAMmG,EAAS3E,IAG1Dg2H,EAAmBh2H,QAAQqoB,IAAM,WAC7B,OAAOvvB,KAAKi0I,UAAY,CACpBvtH,SAAU,IACVwtH,OAAQ,UAIhBhX,EAAmBh2H,QAAQsoB,IAAM,SAAU9mB,GACvC1I,KAAKi0I,SAAWvrI,GAGpBgzC,EAAUrzC,UAAUqtC,MAAQ,aAC5BgG,EAAUrzC,UAAUqqC,KAAO,aAE3BgJ,EAAUrzC,UAAUyuC,KAAO,WACvB,IAAIq6E,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfwf,EAAWxf,EAAQwf,SACnBye,EAAQj+B,EAAQi+B,WAAqB,IAAVA,IAAoBA,EAAQ,GAC3D,IAAI+uG,EAASR,GAAgBxsI,EAAQgtI,QACjC5+H,EAAQs9B,IAAQzN,EAChBgvG,EAAS7+H,EAAQoR,EAEJ,IAAbA,GACA1mB,KAAK0yC,KAAK,GACV1yC,KAAKo0I,SAELr7G,YAAW,WACP,IAAIs7G,EAAO,WACP,IAAIljB,EAASmjB,SAAb,CAIA,IAAIC,EAAW3hG,IAEXlV,EAAOg5F,EAAW6d,EAAWj/H,EAAO,EAAGoR,GAEvC8tH,EAAiBN,EADNx2G,EAAOhX,EACgBgX,EAAM,EAAG,EAAGhX,GAElDyqG,EAASz+E,KAAK8hG,GAEVD,EAAWJ,EACXxzI,MAAMijC,eAAeywG,GAErBljB,EAASijB,UAIjBC,MACDlvG,IAIXuW,EAAUrzC,UAAU+rI,MAAQ,WACxBp0I,KAAKs0I,UAAW,GAGpB54F,EAAUrzC,UAAUrG,QAAU,WAC1BhC,KAAKo0I,SAGT3zI,OAAOu6H,iBAAkBt/E,EAAUrzC,UAAW60H,GAEvCxhF,EApFK,CAqFd9zC,GAIE6sI,GAAc,SAAUzgB,GACxB,SAASygB,IACLzgB,EAAS5rH,MAAMpI,KAAMqH,WAGzBy+G,EAAa2uB,EAAYzgB,GACzBygB,EAAWpsI,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WAC3DosI,EAAWpsI,UAAUC,YAAcmsI,EACnCA,EAAW1sI,GAAK0sI,EAAWpsI,UAC3BosI,EAAW1sI,GAAGI,KAAOssI,EAAW1sI,GAAGO,YAEnC,IAAI4xH,EAAkB,CAAEzmH,QAAS,IAiBjC,OAfAymH,EAAgBzmH,QAAQ8b,IAAM,WAK1B,OAJKkkH,KACDA,GAAa,IAAIgB,GAGdhB,IAGXgB,EAAWpsI,UAAU2sB,MAAQ,SAAgBpmB,EAAK1H,GAE9C,OAAO0kI,GADS,IAAIuB,GAAUjmI,GACF0H,IAGhCnO,OAAOu6H,iBAAkByZ,EAAYva,GAE9Bua,EA5BM,CA6Bf7sI,GAEE8sI,GAAY,SAAU1gB,GACtB,SAAS0gB,EAASC,GACd3gB,EAASzpH,KAAKvK,MAEdA,KAAKyjC,WAAa,GAClBzjC,KAAKmM,OAAS,KAEVwoI,IACA30I,KAAK20I,WAAaA,EAClB30I,KAAK40I,WAsFb,OAlFA9uB,EAAa4uB,EAAU1gB,GACvB0gB,EAASrsI,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WACzDqsI,EAASrsI,UAAUC,YAAcosI,EACjCA,EAAS3sI,GAAK2sI,EAASrsI,UACvBqsI,EAAS3sI,GAAGI,KAAOusI,EAAS3sI,GAAGO,YAE/BosI,EAASrsI,UAAUrG,QAAU,WAGrBhC,KAAK20I,YACL30I,KAAK20I,WAAWvgB,eAAep0H,MAInC,IADA,IAAIm1C,EAAWn1C,KAAKyjC,WACXl8B,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IAPtBvH,KAQFyjC,WAAWl8B,GAAGvF,UAG3BhC,KAAKmM,OAAS,MAGlBuoI,EAASrsI,UAAUuiE,KAAO,aAE1B8pE,EAASrsI,UAAUusI,QAAU,WACrB50I,KAAK20I,YACL30I,KAAK20I,WAAWxgB,YAAYn0H,OAIpC00I,EAASrsI,UAAU0xC,OAAS,SAAiB7W,GACzCljC,KAAKyjC,WAAW9hC,KAAKuhC,GACrBA,EAAK/2B,OAASnM,MAGlB00I,EAASrsI,UAAUsmI,SAAW,SAAmBzrG,EAAMmxD,GACnDr0F,KAAKyjC,WAAWj5B,OAAO6pF,EAAK,EAAGnxD,GAC/BA,EAAK/2B,OAASnM,MAGlB00I,EAASrsI,UAAU0uB,OAAS,SAAiBhe,EAAO+B,GAIhD,IAHA,IAEInP,EAAMoN,EAAQ+B,EACTvT,EAAIwR,EAAOxR,EAAIoE,EAAKpE,IAHdvH,KAIFyjC,WAAWl8B,GAAGstI,aAE3B70I,KAAKyjC,WAAWj5B,OAAOuO,EAAO+B,IAGlC45H,EAASrsI,UAAUwsI,WAAa,WAC5B70I,KAAKi2D,QACLj2D,KAAKgC,WAGT0yI,EAASrsI,UAAU4tD,MAAQ,WACvBj2D,KAAK+2B,OAAO,EAAG/2B,KAAKyjC,WAAWj8B,SAGnCktI,EAASrsI,UAAUysI,WAAa,WACxB90I,KAAKmM,QACLnM,KAAKmM,OAAO2oI,cAIpBJ,EAASrsI,UAAUmsH,eAAiB,WAChCx0H,KAAK80I,cAGTJ,EAASrsI,UAAUksH,cAAgB,WAC/Bv0H,KAAK80I,cAGTJ,EAASrsI,UAAUomI,eAAiB,SAAyB9pI,GACxC,QAAbA,EAAEqoC,OACFhtC,KAAK4qE,KAAKjmE,EAAEyvB,MAAOzvB,EAAEoU,OACD,WAAbpU,EAAEqoC,QACThtC,KAAK+2B,OAAOpyB,EAAEoU,MAAOpU,EAAEyvB,MAAM5sB,QAGjCxH,KAAK80I,cAGFJ,EA/FI,CAgGb9sI,GAEEyC,GAAS,CACT,QACA,aACA,aACA,YACA,UAGA0qI,GAAa,SAAUC,GACvB,SAASC,EAAQppI,EAAS3E,GACtB8tI,EAAczqI,KAAKvK,MAEnBA,KAAKkH,QAAUvE,EAAEI,OAAO,GAAImE,GAC5BlH,KAAK6L,QAAUA,EACf7L,KAAK6L,QAAQqpI,mBAAqBl1I,KAAKm1I,aAAa3rI,KAAKxJ,MAEzDA,KAAK+hF,OAAS/hF,KAAKo1I,SAAS,SAC5Bp1I,KAAK+kH,YAAc/kH,KAAKo1I,SAAS,cACjCp1I,KAAKglH,YAAchlH,KAAKo1I,SAAS,cACjCp1I,KAAKq1I,WAAar1I,KAAKo1I,SAAS,aAEhCp1I,KAAKs1I,QAAU,IAAI9G,GAEnB7hD,EAAY9gF,EAAS7L,KAAKkH,SAE1BlH,KAAKwJ,KAAKa,GAAQrK,KAAKkH,SAEvBlH,KAAKu1I,kBA4IT,OAzIAzvB,EAAamvB,EAASD,GACtBC,EAAQ5sI,UAAY5H,OAAOumD,OAAQguF,GAAiBA,EAAc3sI,WAClE4sI,EAAQ5sI,UAAUC,YAAc2sI,EAChCA,EAAQltI,GAAKktI,EAAQ5sI,UACrB4sI,EAAQltI,GAAGI,KAAO8sI,EAAQltI,GAAGO,YAE7B2sI,EAAQ5sI,UAAUmtI,KAAO,SAAe3pI,GACpC7L,KAAKs1I,QAAQngG,SAASxzC,KAAKkK,IAG/BopI,EAAQ5sI,UAAU4tD,MAAQ,WACtBj2D,KAAKs1I,QAAQngG,SAAW,IAG5B8/F,EAAQ5sI,UAAUrG,QAAU,WACxBhC,KAAKs1I,QAAU,KACft1I,KAAK6L,QAAQqpI,mBAAqB,KAClCl1I,KAAKiK,UAGTgrI,EAAQ5sI,UAAUogB,YAAc,SAAsB9jB,GAMlD,IALA,IAGIu+B,EADAuyG,EAAUjf,EAAa7xH,IAGnBu+B,GAAQuyG,IACZvyG,EAAOuyG,EAAQC,WACXD,IAPOz1I,KAOc6L,UAIzB4pI,EAAUA,EAAQxc,cAGtB,GAAI/1F,EACA,OAAOA,EAAKyxG,YAIpBM,EAAQ5sI,UAAU8sI,aAAe,WAC7B,OAAOn1I,KAAKs1I,SAGhBL,EAAQ5sI,UAAUupB,QAAU,WACxB,OAAO+6D,EAAY3sF,KAAK6L,UAG5BopI,EAAQ5sI,UAAUwpB,YAAc,SAAsBpiB,GAClD,IAAIA,EAGA,OAAOzP,KAAK8xB,MAFZ9xB,KAAK8xB,MAAQriB,GAMrBwlI,EAAQ5sI,UAAU4pB,QAAU,SAAkBxiB,GAC1Ck9E,EAAY3sF,KAAK6L,QAAS4D,GAE1BzP,KAAK6xB,YAAYpiB,GACjBzP,KAAK+xB,WAGTkjH,EAAQ5sI,UAAUkhB,OAAS,SAAiBoI,GACxC,IAAIliB,EAAOzP,KAAK4xB,UACZC,EAAc7xB,KAAK6xB,eAEnBF,IAAUliB,EAAKzC,MAAQ,GAAKyC,EAAK9C,OAAS,MAAQklB,GAAepiB,EAAKzC,QAAU6kB,EAAY7kB,OAASyC,EAAK9C,SAAWklB,EAAYllB,WACjI3M,KAAK6xB,YAAYpiB,GACjBzP,KAAK+xB,QAAQtiB,EAAMkiB,GACnB3xB,KAAKoK,QAAQ,SAAUqF,KAI/BwlI,EAAQ5sI,UAAUoH,KAAO,SAAe/G,GACpC,IAAKA,EACD,OAAO1I,KAAK4xB,UAGhB5xB,KAAKiyB,QAAQvpB,IAGjBusI,EAAQ5sI,UAAUstI,gBAAkB,WAChC31I,KAAK41I,oBAAqB,GAG9BX,EAAQ5sI,UAAUwtI,eAAiB,WAC/B71I,KAAK41I,oBAAqB,GAG9BX,EAAQ5sI,UAAUktI,gBAAkB,aAEpCN,EAAQ5sI,UAAU0pB,QAAU,aAE5BkjH,EAAQ5sI,UAAU+sI,SAAW,SAAmB3rI,GAC5C,IAAI0nH,EAAWnxH,KAEf,OAAO,SAAU2E,GACb,IAAIu+B,EAAOiuF,EAAS1oG,YAAY9jB,GAC5Bu+B,IAASiuF,EAASykB,oBAClBzkB,EAAS/mH,QAAQX,EAAW,CACxBoC,QAASq3B,EACTva,cAAehkB,EACfe,KAAM+D,MAMtBwrI,EAAQ5sI,UAAUytI,eAAiB,WAC/B,IAAIjqI,EAAU7L,KAAK6L,QACfkqI,EAAUne,EAAe/rH,GACzBojB,EAAMy0F,EAAc73G,GACpBggB,EAAOoD,EAAIpD,KACXzH,EAAM6K,EAAI7K,IAEd,MAAO,CACHyH,KAAMA,EAAOkqH,EAAQlqH,KACrBzH,IAAKA,EAAM2xH,EAAQ3xH,MAI3B6wH,EAAQ5sI,UAAU2tI,cAAgB,SAAwBrxI,GACtD,IAAIoY,EAAS/c,KAAK81I,iBACdG,EAAQ1f,EAAiB5xH,GACzBS,EAAI6wI,EAAM7wI,EAAI2X,EAAO8O,KACrB1nB,EAAI8xI,EAAM9xI,EAAI4Y,EAAOqH,IAErB8xH,EAAmBld,EAAah5H,KAAK6L,SAASqsH,SAMlD,OALY,IAAI8B,EACZ50H,EACAjB,GACFovC,UAAU2iG,IAKTjB,EA/JK,CAgKdt0I,MAAM2I,YAER,SAAS6sI,GAAW/zI,EAAMsG,GACtB,OAAQssH,EAAQtsH,IAAoB,OAAVA,EAAmB,IAAMtG,EAAO,KAAQsG,EAAQ,KAAS,GAGvF,SAAS0tI,GAAcC,GAEnB,IADA,IAAI9iD,EAAS,GACJhsF,EAAI,EAAGA,EAAI8uI,EAAM7uI,OAAQD,IAC9BgsF,GAAU4iD,GAAWE,EAAM9uI,GAAG,GAAI8uI,EAAM9uI,GAAG,IAG/C,OAAOgsF,EAGX,SAAS+iD,GAAYD,GAEjB,IADA,IAAI9iD,EAAS,GACJhsF,EAAI,EAAGA,EAAI8uI,EAAM7uI,OAAQD,IAAK,CACnC,IAAImB,EAAQ2tI,EAAM9uI,GAAG,GACjBytH,EAAQtsH,KACR6qF,GAAU8iD,EAAM9uI,GAAG,GAAK,IAAMmB,EAAQ,KAI9C,GAAe,KAAX6qF,EACA,OAAOA,EAIf,IAAIgjD,GAAW,GAEXC,GAAS,6BACTC,GAAO,OAQPC,GAAY,aACZC,GAAmB,SAAU7mI,GAAQ,OAAOA,EAAKrN,QAAQ,YAAa,iBACtEm0I,GAAmB,SAAUtgH,GAC7BpzB,MAAMi7B,KAAK7H,EAAU3Q,iBAAiB,iBAAuBrkB,SAAQ,SAAUuK,GAC3E,IAAIgrI,EAAchrI,EAAQkpB,aAAa2hH,IACvC7qI,EAAQm8B,gBAAgB0uG,IAVf,SAAUG,EAAahrI,GAAkBgrI,EAAYjsI,MAAM,KAAKqrB,QAAO,SAAUhxB,GAAK,MAAa,KAANA,KAAa3D,SAAQ,SAAU2D,GACrI,IAAI+K,EAAQ/K,EAAE2F,MAAM,KACpBiB,EAAQY,MAAMuD,EAAM,GAAGwzB,QAAUxzB,EAAM,GAAGwzB,UAS1CszG,CAAWD,EAAahrI,OAI5BkrI,GAAY,SAASzgH,EAAWugE,GAChCvgE,EAAUtY,UAAY24H,GAAiB9/C,GACvC+/C,GAAiBtgH,IAGrB,GAAwB,oBAAblnB,SAA0B,CACjC,IACI4nI,GAAgB5nI,SAAS0O,cAAc,OACvCm5H,GAAiC,oBAAdC,UAEvBF,GAAch5H,UAJK,iDAMfi5H,IAAaD,GAAcjtF,WAAWotF,eAAiBX,KACvDO,GAAY,SAASzgH,EAAWugE,GAC5B,IACIugD,GADS,IAAIF,WACKG,gBAAgBV,GAAiB9/C,GAAM,YAC7D+/C,GAAiBQ,GACjB,IAAIE,EAAcloI,SAASmoI,UAAUH,EAAS/9H,iBAE9Cid,EAAUtY,UAAY,GACtBsY,EAAUpY,YAAYo5H,KAKlC,IAAIE,GAAcT,GAEdjlG,GAAY,YACZ2lG,GAAgB,CAChB39F,KAAM,YACN7mB,KAAM,QAGV,SAASykH,GAAahyI,EAAMgD,GACxB,MAAgB,SAAThD,GAA6B,SAATA,KAAqBgD,GAA4B,aAAnBA,EAAMgtB,UAoBnE,IAAIs0C,GAAQ,SAAU2tE,GAClB,SAAS3tE,EAAK2qE,EAAYztI,GACtBywI,EAAYptI,KAAKvK,KAAM20I,GACvB30I,KAAK43I,YAAc,GAEnB53I,KAAKkH,QAAUA,EAmVnB,OAhVA4+G,EAAa97C,EAAM2tE,GACnB3tE,EAAK3hE,UAAY5H,OAAOumD,OAAQ2wF,GAAeA,EAAYtvI,WAC3D2hE,EAAK3hE,UAAUC,YAAc0hE,EAC7BA,EAAKjiE,GAAKiiE,EAAK3hE,UACf2hE,EAAKjiE,GAAGI,KAAO6hE,EAAKjiE,GAAGO,YAEvB0hE,EAAK3hE,UAAUrG,QAAU,WACjBhC,KAAK6L,UACL7L,KAAK6L,QAAQ6pI,WAAa,KAC1B11I,KAAK6L,QAAU,MAGnB7L,KAAK63I,mBACLF,EAAYtvI,UAAUrG,QAAQuI,KAAKvK,OAGvCgqE,EAAK3hE,UAAUuiE,KAAO,SAAez2C,EAAUkgE,GAG3C,IAFA,IAAI88B,EAAWnxH,KAENuH,EAAI,EAAGA,EAAI4sB,EAAS3sB,OAAQD,IAAK,CACtC,IAAIotI,EAAaxgH,EAAS5sB,GACtB4tC,EAAWw/F,EAAWx/F,SAEtB2iG,EAAY,IAAIvB,GAAS5B,EAAWj/G,UAAUi/G,EAAYxjB,EAASjqH,SAEnE8tH,EAAQ3gC,GACR88B,EAASwd,SAASmJ,EAAWzjD,GAE7B88B,EAASp3E,OAAO+9F,GAGpBA,EAAUC,oBAEN5iG,GAAYA,EAAS3tC,OAAS,GAC9BswI,EAAUltE,KAAKz1B,GAGnB,IAAItpC,EAAUslH,EAAStlH,QACnBA,GACAisI,EAAUE,SAASnsI,EAASwoF,KAKxCrqB,EAAK3hE,UAAUo1C,KAAO,WAGlB,IAFA,IAAIA,EAAOz9C,KAEJy9C,EAAKtxC,QACRsxC,EAAOA,EAAKtxC,OAGhB,OAAOsxC,GAGXusB,EAAK3hE,UAAU2vI,SAAW,SAAmB1jH,EAAY+/D,GACrD,IAAI/9D,EAAYlnB,SAAS0O,cAAc,OACvC05H,GAAYlhH,EACR,eAAiBkgH,GAAS,mBACtBx2I,KAAK4P,SACT,UAGJ,IAAI/D,EAAUyqB,EAAUyzB,WAAWA,WAC/Bl+C,IACImpH,EAAQ3gC,GACR//D,EAAW+8C,aAAaxlE,EAASyoB,EAAWmP,WAAW4wD,IAAQ,MAE/D//D,EAAWpW,YAAYrS,GAE3B7L,KAAKi4I,WAAWpsI,KAIxBm+D,EAAK3hE,UAAU4vI,WAAa,SAAqBpsI,GACzC7L,KAAK6L,UACL7L,KAAK6L,QAAQ6pI,WAAa,MAG9B11I,KAAK6L,QAAUA,EACf7L,KAAK6L,QAAQ6pI,WAAa11I,KAG1B,IADA,IAAI+rD,EAAQ/rD,KAAKyjC,WACRl8B,EAAI,EAAGA,EAAIwkD,EAAMvkD,OAAQD,IAAK,CACnC,IAAI2wI,EAAersI,EAAQ43B,WAAWl8B,GACtCwkD,EAAMxkD,GAAG0wI,WAAWC,KAI5BluE,EAAK3hE,UAAU4tD,MAAQ,WACnBj2D,KAAK63I,mBAED73I,KAAK6L,UACL7L,KAAK6L,QAAQmS,UAAY,IAI7B,IADA,IAAIm3B,EAAWn1C,KAAKyjC,WACXl8B,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IACjC4tC,EAAS5tC,GAAGvF,UAGhBhC,KAAKyjC,WAAa,IAGtBumC,EAAK3hE,UAAUwsI,WAAa,WACxB,GAAI70I,KAAK6L,QAAS,CACd,IAAI+Z,EAAa5lB,KAAK6L,QAAQ+Z,WAC1BA,GACAA,EAAWvH,YAAYre,KAAK6L,SAEhC7L,KAAK6L,QAAU,KAGnB8rI,EAAYtvI,UAAUwsI,WAAWtqI,KAAKvK,OAG1CgqE,EAAK3hE,UAAUwH,SAAW,WACtB,OAAO7P,KAAKm4I,kBAGhBnuE,EAAK3hE,UAAUuH,OAAS,WACpB,OAAO5P,KAAK6P,YAGhBm6D,EAAK3hE,UAAU8vI,eAAiB,WAI5B,IAHA,IAAIpsF,EAAQ/rD,KAAKyjC,WACb8vD,EAAS,GAEJhsF,EAAI,EAAGA,EAAIwkD,EAAMvkD,OAAQD,IAC9BgsF,GAAUxnC,EAAMxkD,GAAGqI,SAGvB,OAAO2jF,GAGXvpB,EAAK3hE,UAAUksH,cAAgB,SAAwB5vH,GACnD,IAAIsgB,EAAQtgB,EAAEsgB,MACVvc,EAAQ/D,EAAE+D,MAEA,YAAVuc,EACAjlB,KAAK4M,IAAI,UAAWlE,EAAQ,GAAK+tI,IAC1BgB,GAAcxyH,IAAUyyH,GAAazyH,EAAOvc,GACnD1I,KAAKo4I,iBAAiBnzH,EAAOvc,GACZ,YAAVuc,EACPjlB,KAAK8iB,KAAK,UAAWpa,GACJ,WAAVuc,EACPjlB,KAAK4M,IAAI,SAAUlE,GACF,OAAVuc,IACHvc,EACA1I,KAAK8iB,KAAK,KAAMpa,GAEhB1I,KAAKsxB,WAAW,OAIxBqmH,EAAYtvI,UAAUksH,cAAchqH,KAAKvK,KAAM2E,IAGnDqlE,EAAK3hE,UAAUya,KAAO,SAAe1gB,EAAMsG,GACnC1I,KAAK6L,SACL7L,KAAK6L,QAAQgZ,aAAaziB,EAAMsG,IAIxCshE,EAAK3hE,UAAUgwI,QAAU,SAAkBhC,GAGvC,IAFA,IAES9uI,EAAI,EAAGA,EAAI8uI,EAAM7uI,OAAQD,IAFnBvH,KAGF8iB,KAAKuzH,EAAM9uI,GAAG,GAAI8uI,EAAM9uI,GAAG,KAI5CyiE,EAAK3hE,UAAUuE,IAAM,SAAcxK,EAAMsG,GACjC1I,KAAK6L,UACL7L,KAAK6L,QAAQY,MAAMrK,GAAQsG,IAInCshE,EAAK3hE,UAAUiwI,OAAS,SAAiBnpI,GAGrC,IAFA,IAES5H,EAAI,EAAGA,EAAI4H,EAAO3H,OAAQD,IAFpBvH,KAGF4M,IAAIuC,EAAO5H,GAAG,GAAI4H,EAAO5H,GAAG,KAI7CyiE,EAAK3hE,UAAUipB,WAAa,SAAqBlvB,GACzCpC,KAAK6L,SACL7L,KAAK6L,QAAQm8B,gBAAgB5lC,IAIrC4nE,EAAK3hE,UAAUkwI,aAAe,SAAuBhlG,GACjD,IAAI8iG,EAAQ,GAQZ,OAPI9iG,GACA8iG,EAAM10I,KAAK,CACPmwC,GACA,UAAYyB,EAAU0kF,SAAS/mH,SAAS,GAAK,MAI9CmlI,GAGXrsE,EAAK3hE,UAAUmwI,gBAAkB,WAC7B,OAAOpC,GACHp2I,KAAKu4I,aAAav4I,KAAK20I,WAAWphG,eAI1Cy2B,EAAK3hE,UAAUowI,gBAAkB,SAA0B/vI,GACnDA,EACA1I,KAAKq4I,QAAQr4I,KAAKu4I,aAAa7vI,IAE/B1I,KAAKsxB,WAAWwgB,KAIxBk4B,EAAK3hE,UAAUqwI,SAAW,WACtB,IAAIxxI,EAAUlH,KAAK20I,WAAWztI,QAC1BuF,EAAQ,CAAE,CAAE,SAAUvF,EAAQyxI,SAMlC,OAJwB,IAApBzxI,EAAQoF,SACRG,EAAM9K,KAAK,CAAE,UAAW80I,KAGrBhqI,GAGXu9D,EAAK3hE,UAAUiuI,YAAc,WACzB,OAAOH,GAAW,QAASG,GAAYt2I,KAAK04I,UAAS,MAGzD1uE,EAAK3hE,UAAUuwI,cAAgB,WAC3B,OAAOzC,GAAW,UAAWn2I,KAAK20I,WAAWztI,QAAQ0vB,UAGzDozC,EAAK3hE,UAAUwwI,SAAW,WACtB,OAAO1C,GAAW,KAAMn2I,KAAK20I,WAAWztI,QAAQyoB,KAGpDq6C,EAAK3hE,UAAU0vI,kBAAoB,WAC/B,IAAIpD,EAAa30I,KAAK20I,WAClBiD,EAAc53I,KAAK43I,YACvB,GAAIjD,EAAY,CACZ,IACImE,EADA5xI,EAAUytI,EAAWztI,QAGzB,IAAK,IAAI+d,KAASwyH,GAAe,CAC7B,IAAIngG,EAAapwC,EAAQqoB,IAAItK,GACzBqyB,GAAcogG,GAAazyH,EAAOqyB,KAClCsgG,EAAY3yH,GAASqyB,EACrBwhG,GAAiB,GAGrBA,GACA94I,KAAK+4I,iBAAiB,CAClB/rG,OAAQ,MACR4qG,YAAaA,MAM7B5tE,EAAK3hE,UAAU0wI,iBAAmB,SAA2Bp0I,GACrD3E,KAAKmM,QACLnM,KAAKmM,OAAO4sI,iBAAiBp0I,IAIrCqlE,EAAK3hE,UAAU+vI,iBAAmB,SAA2B1yI,EAAMgD,GAC/D,IAAIkvI,EAAc53I,KAAK43I,YACnBnkI,EAAUmkI,EAAYlyI,GACtBod,EAAO20H,GAAc/xI,GACrB4xC,EAAa,GACb7jC,IACA6jC,EAAW5xC,GAAQ+N,EACnBzT,KAAK+4I,iBAAiB,CAClB/rG,OAAQ,SACR4qG,YAAatgG,WAEVsgG,EAAYlyI,IAGlBgD,GAKD4uC,EAAW5xC,GAAQgD,EACnB1I,KAAK+4I,iBAAiB,CAClB/rG,OAAQ,MACR4qG,YAAatgG,IAEjBsgG,EAAYlyI,GAAQgD,EACpB1I,KAAK8iB,KAAKA,EAAM9iB,KAAKg5I,OAAOtwI,EAAMinB,MAV9Blc,GACAzT,KAAKsxB,WAAWxO,IAa5BknD,EAAK3hE,UAAUwvI,iBAAmB,WAC9B,IAAID,EAAc53I,KAAK43I,YAEvB53I,KAAK+4I,iBAAiB,CAClB/rG,OAAQ,SACR4qG,YAAaA,IAEjB53I,KAAK43I,YAAc,IAGvB5tE,EAAK3hE,UAAU4wI,kBAAoB,WAC/B,OAAO7C,GAAcp2I,KAAKk5I,mBAG9BlvE,EAAK3hE,UAAU6wI,eAAiB,WAC5B,IAEItB,EAAc53I,KAAK43I,YACnBvB,EAAQ,GAEZ,IAAK,IAAIpxH,KAAS2yH,EACdvB,EAAM10I,KAAK,CAAE81I,GAAcxyH,GANhBjlB,KAMiCg5I,OAAOpB,EAAY3yH,GAAO0K,MAG1E,OAAO0mH,GAGXrsE,EAAK3hE,UAAU2wI,OAAS,SAAiBrpH,GACrC,IAAIwpH,GAAgBn5I,KAAKkH,SAAW,IAAIiyI,aACpCC,EAAWp5I,KAAKq5I,UAAU52I,QAAQ,KAAM,OAE5C,MAAQ,QADG02I,EAAe,GAAKC,GACP,IAAMzpH,EAAK,KAGvCq6C,EAAK3hE,UAAUgxI,QAAU,WACrB,OAtWR,WACI,IAAIrxI,EAAOoH,SAASkqI,qBAAqB,QAAQ,GAC7CnhH,EAAO/oB,SAASmT,SAAS4V,KACzB9J,EAAM,GAEV,GAAIrmB,KAAU8rH,GAAkB,IAAI1wG,KAAM,CACtC,IAAIm2H,EAAYphH,EAAKxiB,QAAQ,MACV,IAAf4jI,IACAphH,EAAOA,EAAKntB,UAAU,EAAGuuI,IAG7BlrH,EAAM8J,EAGV,OAAO9J,EAwVIgrH,IAGJrvE,EAxVA,CAyVT0qE,IAEE8E,GAAoB,SAAUC,GAC9B,SAASD,IACLC,EAAQrxI,MAAMpI,KAAMqH,WAiCxB,OA9BAy+G,EAAa0zB,EAAkBC,GAC/BD,EAAiBnxI,UAAY5H,OAAOumD,OAAQyyF,GAAWA,EAAQpxI,WAC/DmxI,EAAiBnxI,UAAUC,YAAckxI,EACzCA,EAAiBzxI,GAAKyxI,EAAiBnxI,UACvCmxI,EAAiBzxI,GAAGI,KAAOqxI,EAAiBzxI,GAAGO,YAE/CkxI,EAAiBnxI,UAAUwH,SAAW,WAClC,MAAQ,SAAY7P,KAAK05I,eAAkB,IAAO15I,KAAKs2I,cAAiB,OAG5EkD,EAAiBnxI,UAAUqxI,aAAe,WACtC,OAAOvD,GAAW,SAAUn2I,KAAK20I,WAAW53H,WAGhDy8H,EAAiBnxI,UAAUqwI,SAAW,WAClC,IAAI/D,EAAa30I,KAAK20I,WACtB,MAAO,CACH,CAAE,aAAcA,EAAWvlB,SAC3B,CAAE,eAAgBulB,EAAW/9G,aAIrC4iH,EAAiBnxI,UAAUksH,cAAgB,SAAwB5vH,GAC/C,WAAZA,EAAEsgB,MACFjlB,KAAK8iB,KAAKne,EAAEsgB,MAAOtgB,EAAE+D,OACF,UAAZ/D,EAAEsgB,OAAiC,YAAZtgB,EAAEsgB,OAChCjlB,KAAK4M,IAAI,QAAUjI,EAAEsgB,MAAOtgB,EAAE+D,QAI/B8wI,EAnCY,CAoCrBxvE,IAEE2vE,GAAgB,SAAUF,GAC1B,SAASE,EAAahF,GAClB8E,EAAQlvI,KAAKvK,KAAM20I,GAEnB30I,KAAK2vB,GAAKglH,EAAWhlH,GAErB3vB,KAAK45I,YAyCT,OAtCA9zB,EAAa6zB,EAAcF,GAC3BE,EAAatxI,UAAY5H,OAAOumD,OAAQyyF,GAAWA,EAAQpxI,WAC3DsxI,EAAatxI,UAAUC,YAAcqxI,EACrCA,EAAa5xI,GAAK4xI,EAAatxI,UAC/BsxI,EAAa5xI,GAAGI,KAAOwxI,EAAa5xI,GAAGO,YAEvCqxI,EAAatxI,UAAUuxI,UAAY,WAM/B,IALA,IAEI9G,EAAQ9yI,KAAK20I,WAAW7B,MACxBjnI,EAAU7L,KAAK6L,QAEVjC,EAAM,EAAGA,EAAMkpI,EAAMtrI,OAAQoC,IAAO,CACzC,IAAIiwI,EAAW,IAAIL,GAAiB1G,EAAMlpI,IAN/B5J,KAOF+5C,OAAO8/F,GACZhuI,GACAguI,EAAS7B,SAASnsI,KAK9B8tI,EAAatxI,UAAUksH,cAAgB,SAAwB5vH,GAC3C,mBAAZA,EAAEsgB,OACFyvH,GAASrsI,UAAU4tD,MAAM1rD,KAAKvK,MAC9BA,KAAK45I,aACc,aAAZj1I,EAAEsgB,OACTjlB,KAAKq4I,QAAQr4I,KAAK85I,mBAI1BH,EAAatxI,UAAU0xI,kBAAoB,WACvC,OAAO3D,GAAcp2I,KAAK85I,mBAG9BH,EAAatxI,UAAU2xI,SAAW,WAC9B,MAAO,CAAE,gBAAiBh6I,KAAK20I,WAAW1B,YAAc,iBAAmB,sBAGxE0G,EA/CQ,CAgDjB3vE,IAEEiwE,GAAsB,SAAUC,GAChC,SAASD,IACLC,EAAgB9xI,MAAMpI,KAAMqH,WA4BhC,OAzBAy+G,EAAam0B,EAAoBC,GACjCD,EAAmB5xI,UAAY5H,OAAOumD,OAAQkzF,GAAmBA,EAAgB7xI,WACjF4xI,EAAmB5xI,UAAUC,YAAc2xI,EAC3CA,EAAmBlyI,GAAKkyI,EAAmB5xI,UAC3C4xI,EAAmBlyI,GAAGI,KAAO8xI,EAAmBlyI,GAAGO,YAEnD2xI,EAAmB5xI,UAAUwH,SAAW,WACpC,MAAQ,uBAA0B7P,KAAO,GAAI,KAAQA,KAAK+5I,oBAAuB,IAAO/5I,KAAKm4I,iBAAoB,qBAGrH8B,EAAmB5xI,UAAUyxI,eAAiB,WAC1C,IAAInF,EAAa30I,KAAK20I,WAClBr/H,EAAQq/H,EAAWr/H,QACnB3J,EAAMgpI,EAAWhpI,MASrB,MARY,CACR,CAAE,KAAM2J,EAAMlQ,GACd,CAAE,KAAMkQ,EAAMnR,GACd,CAAE,KAAMwH,EAAIvG,GACZ,CAAE,KAAMuG,EAAIxH,GACZnE,KAAKg6I,aAMNC,EA9Bc,CA+BvBN,IAEEQ,GAAsB,SAAUD,GAChC,SAASC,IACLD,EAAgB9xI,MAAMpI,KAAMqH,WA0BhC,OAvBAy+G,EAAaq0B,EAAoBD,GACjCC,EAAmB9xI,UAAY5H,OAAOumD,OAAQkzF,GAAmBA,EAAgB7xI,WACjF8xI,EAAmB9xI,UAAUC,YAAc6xI,EAC3CA,EAAmBpyI,GAAKoyI,EAAmB9xI,UAC3C8xI,EAAmBpyI,GAAGI,KAAOgyI,EAAmBpyI,GAAGO,YAEnD6xI,EAAmB9xI,UAAUwH,SAAW,WACpC,MAAQ,uBAA0B7P,KAAO,GAAI,KAAQA,KAAK+5I,oBAAuB,IAAO/5I,KAAKm4I,iBAAoB,qBAGrHgC,EAAmB9xI,UAAUyxI,eAAiB,WAC1C,IAAInF,EAAa30I,KAAK20I,WAClBp3D,EAASo3D,EAAWp3D,SACpB5xD,EAASgpH,EAAWhpH,SAOxB,MANY,CACR,CAAE,KAAM4xD,EAAOn4E,GACf,CAAE,KAAMm4E,EAAOp5E,GACf,CAAE,IAAKwnB,GACP3rB,KAAKg6I,aAKNG,EA5Bc,CA6BvBR,IAEES,GAAY,SAAUX,GACtB,SAASW,EAASzF,GACd8E,EAAQlvI,KAAKvK,MAEbA,KAAK20I,WAAaA,EAClB30I,KAAK2vB,GAAKglH,EAAWhlH,GAErB3vB,KAAK4qE,KAAK,CAAE+pE,IAahB,OAVA7uB,EAAas0B,EAAUX,GACvBW,EAAS/xI,UAAY5H,OAAOumD,OAAQyyF,GAAWA,EAAQpxI,WACvD+xI,EAAS/xI,UAAUC,YAAc8xI,EACjCA,EAASryI,GAAKqyI,EAAS/xI,UACvB+xI,EAASryI,GAAGI,KAAOiyI,EAASryI,GAAGO,YAE/B8xI,EAAS/xI,UAAUwH,SAAW,WAC1B,MAAQ,iBAAoB7P,KAAO,GAAI,KAAQA,KAAKm4I,iBAAoB,eAGrEiC,EApBI,CAqBbpwE,IAEEqwE,GAAkB,SAAUZ,GAC5B,SAASY,IACLZ,EAAQlvI,KAAKvK,MACbA,KAAKs6I,cAAgB,GA6FzB,OA1FAx0B,EAAau0B,EAAgBZ,GAC7BY,EAAehyI,UAAY5H,OAAOumD,OAAQyyF,GAAWA,EAAQpxI,WAC7DgyI,EAAehyI,UAAUC,YAAc+xI,EACvCA,EAAetyI,GAAKsyI,EAAehyI,UACnCgyI,EAAetyI,GAAGI,KAAOkyI,EAAetyI,GAAGO,YAE3C+xI,EAAehyI,UAAU2vI,SAAW,SAAmB1jH,GACnDt0B,KAAK6L,QAAUyoB,GAGnB+lH,EAAehyI,UAAUwH,SAAW,WAChC,MAAQ,SAAY7P,KAAKm4I,iBAAoB,WAGjDkC,EAAehyI,UAAU0wI,iBAAmB,SAA2Bp0I,GACnE,IAAIizI,EAAcjzI,EAAEizI,YAChB5qG,EAASroC,EAAEqoC,OAEA,QAAXA,EACAhtC,KAAKu6I,eAAe3C,GACF,WAAX5qG,GACPhtC,KAAKw6I,kBAAkB5C,IAI/ByC,EAAehyI,UAAUoyI,iBAAmB,SAA2B/0I,EAAMspC,GACzE,IAAItZ,EAUJ,MATa,SAAThwB,EACAgwB,EAAW0kH,GACK,SAAT10I,IACHspC,aAAgBokG,GAChB19G,EAAWukH,GACJjrG,aAAgBqkG,KACvB39G,EAAWykH,KAGZ,IAAIzkH,EAASsZ,IAGxBqrG,EAAehyI,UAAUkyI,eAAiB,SAAyB3C,GAG/D,IAAK,IAAI3yH,KAAS2yH,EAFH53I,KAGF06I,cAAcz1H,EAAO2yH,EAAY3yH,KAIlDo1H,EAAehyI,UAAUqyI,cAAgB,SAAwBh1I,EAAMivI,GACnE,IACI9oI,EADM7L,KACQ6L,QACdyuI,EAFMt6I,KAEcs6I,cACpB3qH,EAAKglH,EAAWhlH,GAChBgrH,EAAUL,EAAc3qH,GAC5B,GAAKgrH,EAWDA,EAAQ7/H,YAXE,CACV,IAAIooB,EAAOljC,KAAKy6I,iBAAiB/0I,EAAMivI,GACvC2F,EAAc3qH,GAAM,CAChB9jB,QAASq3B,EACTpoB,MAAO,GAEX9a,KAAK+5C,OAAO7W,GACRr3B,GACAq3B,EAAK80G,SAASh4I,KAAK6L,WAO/BwuI,EAAehyI,UAAUmyI,kBAAoB,SAA4B5C,GAGrE,IAAK,IAAI3yH,KAAS2yH,EAFH53I,KAGF46I,iBAAiBhD,EAAY3yH,KAI9Co1H,EAAehyI,UAAUuyI,iBAAmB,SAA2BjG,GACnE,IAAI2F,EAAgBt6I,KAAKs6I,cACrB3qH,EAAKglH,EAAWhlH,GAChBgrH,EAAUL,EAAc3qH,GAExBgrH,IACAA,EAAQ7/H,QACc,IAAlB6/H,EAAQ7/H,QACR9a,KAAK+2B,OAAO/2B,KAAKyjC,WAAW9tB,QAAQglI,EAAQ9uI,SAAU,UAC/CyuI,EAAc3qH,MAK1B0qH,EAhGU,CAiGnBrwE,IAEE6wE,GAAY,SAAUpB,GACtB,SAASoB,EAAS3zI,GACduyI,EAAQlvI,KAAKvK,MACbA,KAAKkH,QAAUA,EACflH,KAAK86I,KAAO,IAAIT,GA0BpB,OAvBAv0B,EAAa+0B,EAAUpB,GACvBoB,EAASxyI,UAAY5H,OAAOumD,OAAQyyF,GAAWA,EAAQpxI,WACvDwyI,EAASxyI,UAAUC,YAAcuyI,EACjCA,EAAS9yI,GAAK8yI,EAASxyI,UACvBwyI,EAAS9yI,GAAGI,KAAO0yI,EAAS9yI,GAAGO,YAE/BuyI,EAASxyI,UAAU2vI,SAAW,SAAmB1jH,GAC7Ct0B,KAAK6L,QAAUyoB,EACft0B,KAAK86I,KAAK9C,SAAS1jH,EAAWymH,oBAGlCF,EAASxyI,UAAU4tD,MAAQ,WACvBy+E,GAASrsI,UAAU4tD,MAAM1rD,KAAKvK,OAGlC66I,EAASxyI,UAAUwH,SAAW,WAC1B,OAAO7P,KAAK86I,KAAKlrI,SAAW5P,KAAKm4I,kBAGrC0C,EAASxyI,UAAU0wI,iBAAmB,SAA2Bp0I,GAC7D3E,KAAK86I,KAAK/B,iBAAiBp0I,IAGxBk2I,EA9BI,CA+Bb7wE,IAEEgxE,GAAc,CACdC,IAAK,CAAE,IAAK,KACZC,KAAM,CAAE,EAAG,KACXC,SAAU,CAAE,EAAG,KACfC,QAAS,CAAE,IAAK,IAAK,IAAK,KAC1BC,YAAa,CAAE,EAAG,IAAK,IAAK,KAC5BC,eAAgB,CAAE,EAAG,IAAK,IAAK,IAAK,IAAK,MAGzCC,GAAQ,QACRC,GAAO,OAEPC,GAAgB,CAChB,eAAgB,eAChB,eAAgB,SAChB,eAAgB,eAChB,iBAAkB,kBAGlBC,GAAY,SAAUjC,GACtB,SAASiC,IACLjC,EAAQrxI,MAAMpI,KAAMqH,WA6IxB,OA1IAy+G,EAAa41B,EAAUjC,GACvBiC,EAASrzI,UAAY5H,OAAOumD,OAAQyyF,GAAWA,EAAQpxI,WACvDqzI,EAASrzI,UAAUC,YAAcozI,EACjCA,EAAS3zI,GAAK2zI,EAASrzI,UACvBqzI,EAAS3zI,GAAGI,KAAOuzI,EAAS3zI,GAAGO,YAE/BozI,EAASrzI,UAAUmsH,eAAiB,WAChCx0H,KAAK8iB,KAAK,IAAK9iB,KAAK27I,cACpB37I,KAAK80I,cAGT4G,EAASrzI,UAAUksH,cAAgB,SAAwB5vH,GACvD,OAAQA,EAAEsgB,OACV,IAAK,OACGtgB,EAAE+D,MACF1I,KAAKq4I,QAAQr4I,KAAK47I,QAAQj3I,EAAE+D,QAE5B1I,KAAKsxB,WAAW,QAEpB,MAEJ,IAAK,aACDtxB,KAAKq4I,QAAQr4I,KAAK47I,QAAQ,CAAExsB,MAAOzqH,EAAE+D,SACrC,MAEJ,IAAK,SACG/D,EAAE+D,MACF1I,KAAKq4I,QAAQr4I,KAAK67I,UAAUl3I,EAAE+D,QAE9B1I,KAAKsxB,WAAW,UAEpB,MAEJ,IAAK,YACDtxB,KAAKy4I,gBAAgB9zI,EAAE+D,OACvB,MAEJ,QACI,IAAItG,EAAOq5I,GAAc92I,EAAEsgB,OACvB7iB,GACApC,KAAK8iB,KAAK1gB,EAAMuC,EAAE+D,OAK1B+wI,EAAQpxI,UAAUksH,cAAchqH,KAAKvK,KAAM2E,IAG/C+2I,EAASrzI,UAAUk+C,QAAU,WACrBvmD,KAAK6L,UACL7L,KAAK6L,QAAQ03B,YAAcvjC,KAAK20I,WAAWpuF,YAInDm1F,EAASrzI,UAAUszI,WAAa,WAC5B,OAAO37I,KAAK20I,WAAWzjI,SApyBZ,SAoyBsC4qI,GAGrDJ,EAASrzI,UAAUwzI,UAAY,SAAoBhe,GAC/C,IAAIwY,EAAQ,GAmBZ,OAjBIxY,IAAWpH,EAAcoH,EAAOzO,QAChCinB,EAAM10I,KAAK,CAAE,SAAUk8H,EAAOzO,QAC9BinB,EAAM10I,KAAK,CAAE,eAAgBk8H,EAAO7wH,QACpCqpI,EAAM10I,KAAK,CAAE,iBAAkB3B,KAAK+7I,cAAcle,KAClDwY,EAAM10I,KAAK,CAAE,kBAAmBk8H,EAAO0O,WAEnCvX,EAAQ6I,EAAOjnG,UACfy/G,EAAM10I,KAAK,CAAE,iBAAkBk8H,EAAOjnG,UAGtCo+F,EAAQ6I,EAAOme,WACf3F,EAAM10I,KAAK,CAAE,mBAAoB3B,KAAKi8I,eAAepe,MAGzDwY,EAAM10I,KAAK,CAAE,SAAU80I,KAGpBJ,GAGXqF,EAASrzI,UAAU6zI,aAAe,WAC9B,OAAO9F,GACHp2I,KAAK67I,UAAU77I,KAAK20I,WAAWztI,QAAQ22H,UAI/C6d,EAASrzI,UAAU4zI,eAAiB,SAAyBpe,GACzD,IAAIme,EAAWne,EAAOme,SAClBhvI,EAAQ6wH,EAAO7wH,MAEnB,QAFwC,IAAVA,IAAoBA,EAAQ,GAEtDgvI,GAAYA,IAAaT,GAAO,CAIhC,IAHA,IAAIY,EAAYnB,GAAYgB,EAAS1jI,eACjC/B,EAAS,GAEJhP,EAAI,EAAGA,EAAI40I,EAAU30I,OAAQD,IAClCgP,EAAO5U,KAAKw6I,EAAU50I,GAAKyF,GAG/B,OAAOuJ,EAAO1L,KAAK,OAI3B6wI,EAASrzI,UAAU0zI,cAAgB,SAAwBle,GACvD,IAAIme,EAAWne,EAAOme,SAClBI,EAAUve,EAAOue,QAErB,OAAQJ,GAAyB,UAAbA,EAAwBR,GAAOY,GAGvDV,EAASrzI,UAAUuzI,QAAU,SAAkB3oH,GAC3C,IAAIojH,EAAQ,GAaZ,OAZMpjH,GAA0B,aAAlBA,EAAKyC,WACXzC,IAASwjG,EAAcxjG,EAAKm8F,QAC5BinB,EAAM10I,KAAK,CAAE,OAAQsxB,EAAKm8F,QAEtB4F,EAAQ/hG,EAAK2D,UACby/G,EAAM10I,KAAK,CAAE,eAAgBsxB,EAAK2D,WAGtCy/G,EAAM10I,KAAK,CAAE,OAAQ80I,MAItBJ,GAGXqF,EAASrzI,UAAUg0I,WAAa,WAC5B,OAAOjG,GACHp2I,KAAK47I,QAAQ57I,KAAK20I,WAAWztI,QAAQ+rB,QAI7CyoH,EAASrzI,UAAUwH,SAAW,WAC1B,MAAO,SAAY7P,KAAK64I,WAAc,IAAO74I,KAAKs2I,cAAiB,IAAOt2I,KAAK44I,gBAAmB,IAAOzC,GAAW,IAAKn2I,KAAK27I,cAChH37I,KAAKk8I,eAAmBl8I,KAAKq8I,aAAiBr8I,KAAKi5I,oBAAwBj5I,KAAKw4I,kBAAqB,YAGhHkD,EA/II,CAgJb1xE,IAEEsyE,GAAW,SAAUC,GACrB,SAASD,IACLC,EAAYn0I,MAAMpI,KAAMqH,WAa5B,OAVAy+G,EAAaw2B,EAASC,GACtBD,EAAQj0I,UAAY5H,OAAOumD,OAAQu1F,GAAeA,EAAYl0I,WAC9Di0I,EAAQj0I,UAAUC,YAAcg0I,EAChCA,EAAQv0I,GAAKu0I,EAAQj0I,UACrBi0I,EAAQv0I,GAAGI,KAAOm0I,EAAQv0I,GAAGO,YAE7Bg0I,EAAQj0I,UAAUszI,WAAa,WAC3B,OAAO37I,KAAK20I,WAAW1G,SAAS/8H,SAt4BrB,IAy4BRorI,EAfG,CAgBZZ,IAEEc,GAAc,SAAUD,GACxB,SAASC,IACLD,EAAYn0I,MAAMpI,KAAMqH,WAgC5B,OA7BAy+G,EAAa02B,EAAYD,GACzBC,EAAWn0I,UAAY5H,OAAOumD,OAAQu1F,GAAeA,EAAYl0I,WACjEm0I,EAAWn0I,UAAUC,YAAck0I,EACnCA,EAAWz0I,GAAKy0I,EAAWn0I,UAC3Bm0I,EAAWz0I,GAAGI,KAAOq0I,EAAWz0I,GAAGO,YAEnCk0I,EAAWn0I,UAAUmsH,eAAiB,WAClC,IAAIj3C,EAASv9E,KAAKu9E,SAClBv9E,KAAK8iB,KAAK,KAAMy6D,EAAOn4E,GACvBpF,KAAK8iB,KAAK,KAAMy6D,EAAOp5E,GACvBnE,KAAK8iB,KAAK,IAAK9iB,KAAK2rB,UACpB3rB,KAAK80I,cAGT0H,EAAWn0I,UAAUk1E,OAAS,WAC1B,OAAOv9E,KAAK20I,WAAW/U,WAAWriD,QAGtCi/D,EAAWn0I,UAAUsjB,OAAS,WAC1B,OAAO3rB,KAAK20I,WAAW/U,WAAWj0G,QAGtC6wH,EAAWn0I,UAAUwH,SAAW,WAC5B,MAAO,WAAc7P,KAAK64I,WAAc,IAAO74I,KAAKs2I,cAAiB,IAAOt2I,KAAK44I,gBACrE,OAAU54I,KAAKu9E,SAAU,EAAI,SAAYv9E,KAAKu9E,SAAU,EAAI,QAAWv9E,KAAK2rB,SAAY,IACvF3rB,KAAKk8I,eAAkB,IAAOl8I,KAAKq8I,aAAgB,IAAOr8I,KAAKi5I,oBAC/Dj5I,KAAKw4I,kBAAqB,eAGpCgE,EAlCM,CAmCfd,IAEEe,GAAa,SAAUhD,GACvB,SAASgD,IACLhD,EAAQrxI,MAAMpI,KAAMqH,WAqBxB,OAlBAy+G,EAAa22B,EAAWhD,GACxBgD,EAAUp0I,UAAY5H,OAAOumD,OAAQyyF,GAAWA,EAAQpxI,WACxDo0I,EAAUp0I,UAAUC,YAAcm0I,EAClCA,EAAU10I,GAAK00I,EAAUp0I,UACzBo0I,EAAU10I,GAAGI,KAAOs0I,EAAU10I,GAAGO,YAEjCm0I,EAAUp0I,UAAUwH,SAAW,WAC3B,MAAQ,MAAQ7P,KAAK64I,WAAa74I,KAAKw4I,kBAAoBx4I,KAAKs2I,cAAgBt2I,KAAK44I,gBAAkB54I,KAAKi5I,qBAAuB,IAAOj5I,KAAKm4I,iBAAoB,QAGvKsE,EAAUp0I,UAAUksH,cAAgB,SAAwB5vH,GACxC,cAAZA,EAAEsgB,OACFjlB,KAAKy4I,gBAAgB9zI,EAAE+D,OAG3B+wI,EAAQpxI,UAAUksH,cAAchqH,KAAKvK,KAAM2E,IAGxC83I,EAvBK,CAwBdzyE,IAEE0yE,GAAa,SAAUH,GACvB,SAASG,IACLH,EAAYn0I,MAAMpI,KAAMqH,WA0D5B,OAvDAy+G,EAAa42B,EAAWH,GACxBG,EAAUr0I,UAAY5H,OAAOumD,OAAQu1F,GAAeA,EAAYl0I,WAChEq0I,EAAUr0I,UAAUC,YAAco0I,EAClCA,EAAU30I,GAAK20I,EAAUr0I,UACzBq0I,EAAU30I,GAAGI,KAAOu0I,EAAU30I,GAAGO,YAEjCo0I,EAAUr0I,UAAUmsH,eAAiB,WACjCx0H,KAAKq4I,QAAQr4I,KAAK28I,eAClB38I,KAAK80I,cAGT4H,EAAUr0I,UAAUksH,cAAgB,SAAwB5vH,GACxC,QAAZA,EAAEsgB,OACFjlB,KAAKq4I,QAAQr4I,KAAK48I,aAGtBL,EAAYl0I,UAAUksH,cAAchqH,KAAKvK,KAAM2E,IAGnD+3I,EAAUr0I,UAAUs0I,YAAc,WAC9B,IAAItxD,EAAOrrF,KAAK20I,WAAWtpD,OACvBwwC,EAAKxwC,EAAKmwC,UAEd,MAAO,CACH,CAAE,IAAKK,EAAGz2H,GACV,CAAE,IAAKy2H,EAAG13H,GACV,CAAE,QAASknF,EAAKr+E,QAAU,MAC1B,CAAE,SAAUq+E,EAAK1+E,SAAW,QAIpC+vI,EAAUr0I,UAAUw0I,eAAiB,WACjC,OAAOzG,GAAcp2I,KAAK28I,gBAG9BD,EAAUr0I,UAAUu0I,UAAY,SAAoB9uE,GAChD,IAAI/mE,EAAM/G,KAAK20I,WAAW5tI,MAM1B,OAJI+mE,IACA/mE,EAAMpG,MAAMitB,WAAW7mB,IAGpB,CAAE,CAAE,aAAcA,KAG7B21I,EAAUr0I,UAAUy0I,aAAe,WAC/B,OAAO1G,GAAcp2I,KAAK48I,WAAU,KAGxCF,EAAUr0I,UAAUwH,SAAW,WAC3B,MAAO,qCAAwC7P,KAAK64I,WAAc,IAAO74I,KAAKs2I,cAAiB,IAAOt2I,KAAKw4I,kBAAqB,IAAOx4I,KAAK44I,gBACpI54I,KAAK68I,iBAAoB,IAAO78I,KAAK88I,eAAkB,IAAO98I,KAAKi5I,oBADpE,aAKJyD,EA5DK,CA6DdhB,IAEEqB,GAAiB,SAAUR,GAC3B,SAASQ,IACLR,EAAYn0I,MAAMpI,KAAMqH,WAa5B,OAVAy+G,EAAai3B,EAAeR,GAC5BQ,EAAc10I,UAAY5H,OAAOumD,OAAQu1F,GAAeA,EAAYl0I,WACpE00I,EAAc10I,UAAUC,YAAcy0I,EACtCA,EAAch1I,GAAKg1I,EAAc10I,UACjC00I,EAAch1I,GAAGI,KAAO40I,EAAch1I,GAAGO,YAEzCy0I,EAAc10I,UAAUszI,WAAa,WACjC,OAAO37I,KAAK20I,WAAWzjI,SAthCZ,IAshCsC,aAG9C6rI,EAfS,CAgBlBrB,IAEEsB,GAAY,SAAUT,GACtB,SAASS,IACLT,EAAYn0I,MAAMpI,KAAMqH,WA2C5B,OAxCAy+G,EAAak3B,EAAUT,GACvBS,EAAS30I,UAAY5H,OAAOumD,OAAQu1F,GAAeA,EAAYl0I,WAC/D20I,EAAS30I,UAAUC,YAAc00I,EACjCA,EAASj1I,GAAKi1I,EAAS30I,UACvB20I,EAASj1I,GAAGI,KAAO60I,EAASj1I,GAAGO,YAE/B00I,EAAS30I,UAAUmsH,eAAiB,WAChC,IAAIoL,EAAW5/H,KAAK20I,WAAW/U,WAC/B5/H,KAAK8iB,KAAK,IAAK88G,EAAShnF,OAAOxzC,GAC/BpF,KAAK8iB,KAAK,IAAK88G,EAAShnF,OAAOz0C,GAC/BnE,KAAK8iB,KAAK,QAAS88G,EAASnwH,KAAKzC,OACjChN,KAAK8iB,KAAK,SAAU88G,EAASnwH,KAAK9C,QAClC3M,KAAK8iB,KAAK,KAAM88G,EAASzE,aAAa,IACtCn7H,KAAK8iB,KAAK,KAAM88G,EAASzE,aAAa,IACtCn7H,KAAK80I,cAGTkI,EAAS30I,UAAUoH,KAAO,WACtB,OAAOzP,KAAK20I,WAAW/U,WAAWnwH,MAGtCutI,EAAS30I,UAAUuwC,OAAS,WACxB,OAAO54C,KAAK20I,WAAW/U,WAAWhnF,QAGtCokG,EAAS30I,UAAUoG,GAAK,WACpB,OAAOzO,KAAK20I,WAAW/U,WAAWzE,aAAa,IAGnD6hB,EAAS30I,UAAU01H,GAAK,WACpB,OAAO/9H,KAAK20I,WAAW/U,WAAWzE,aAAa,IAGnD6hB,EAAS30I,UAAUwH,SAAW,WAC1B,MAAO,SAAY7P,KAAK64I,WAAc,IAAO74I,KAAKs2I,cAAiB,IAAOt2I,KAAK44I,gBAAmB,OAAU54I,KAAK44C,SAAU,EAAI,QAAW54C,KAAK44C,SAAU,EAAlJ,SACe54C,KAAKyO,KAAQ,SAAYzO,KAAK+9H,KAD7C,YAEkB/9H,KAAKyP,OAAY,MAAI,aAAgBzP,KAAKyP,OAAa,OAAI,KAAQzP,KAAKk8I,eAAkB,IACtGl8I,KAAKq8I,aAAgB,IAAOr8I,KAAKi5I,oBAAuB,IAAOj5I,KAAKw4I,kBAAqB,OAGnGwE,EA7CI,CA8CbtB,IAEEuB,GAAe,wBAEnB,SAASC,GAAet8G,GACpB,IAAKA,GAAwB,iBAATA,IAAsBq8G,GAAalwI,KAAK6zB,GACxD,OAAOA,EAGX,IAAI/0B,EAAUqxI,GAAe9hG,SAG7B,OAFA6hG,GAAa5rI,UAAY,EAElBuvB,EAAKn+B,QAAQw6I,IAAc,SAAU9sI,GAGxC,OAFAtE,EAAQmS,UAAY7N,EAEbtE,EAAQ03B,aAAe13B,EAAQqlE,aAItB,oBAAb9hE,WACP8tI,GAAe9hG,SAAWhsC,SAAS0O,cAAc,SAGrD,IAAIq/H,GAAY,SAAUZ,GACtB,SAASY,IACLZ,EAAYn0I,MAAMpI,KAAMqH,WAsE5B,OAnEAy+G,EAAaq3B,EAAUZ,GACvBY,EAAS90I,UAAY5H,OAAOumD,OAAQu1F,GAAeA,EAAYl0I,WAC/D80I,EAAS90I,UAAUC,YAAc60I,EACjCA,EAASp1I,GAAKo1I,EAAS90I,UACvB80I,EAASp1I,GAAGI,KAAOg1I,EAASp1I,GAAGO,YAE/B60I,EAAS90I,UAAUmsH,eAAiB,WAChC,IAAIngC,EAAMr0F,KAAKq0F,MACfr0F,KAAK8iB,KAAK,IAAKuxE,EAAIjvF,GACnBpF,KAAK8iB,KAAK,IAAKuxE,EAAIlwF,GACnBnE,KAAK80I,cAGTqI,EAAS90I,UAAUksH,cAAgB,SAAwB5vH,GACvC,SAAZA,EAAEsgB,OACFjlB,KAAK8iB,KAAK,QAASwzH,GAAYt2I,KAAK04I,aACpC14I,KAAKw0H,kBACc,YAAZ7vH,EAAEsgB,OACTs3H,EAAYl0I,UAAUk+C,QAAQh8C,KAAKvK,KAAMA,KAAK20I,WAAWpuF,WAG7Dg2F,EAAYl0I,UAAUksH,cAAchqH,KAAKvK,KAAM2E,IAGnDw4I,EAAS90I,UAAUqwI,SAAW,SAAmB5qE,GAC7C,IAAIrhE,EAAQ8vI,EAAYl0I,UAAUqwI,SAASnuI,KAAKvK,KAAM8tE,GAClDipB,EAAO/2F,KAAK20I,WAAWztI,QAAQ6vF,KAQnC,OANIjpB,IACAipB,EAAOp2F,MAAMitB,WAAWmpE,IAG5BtqF,EAAM9K,KAAK,CAAE,OAAQo1F,GAAQ,CAAE,cAAe,QAEvCtqF,GAGX0wI,EAAS90I,UAAUgsF,IAAM,WACrB,IAAIA,EAAMr0F,KAAK20I,WAAW7nI,WACtB2C,EAAOzP,KAAK20I,WAAWpwD,UAC3B,OAAO8P,EAAIltF,QAAQi2I,KAAK/oD,EAAIlwF,EAAIsL,EAAK0jH,WAGzCgqB,EAAS90I,UAAUg1I,cAAgB,WAC/B,IAAI92F,EAAUvmD,KAAK20I,WAAWpuF,UAI9B,OAHAA,EAAU22F,GAAe32F,GACzBA,EAAU5lD,MAAMitB,WAAW24B,GAEpBstE,EAAUjB,cAAcrsE,IAGnC42F,EAAS90I,UAAUi1I,iBAAmB,WAClC,IAAInsD,EAMJ,QAJKnxF,KAAKkH,SAAW,IAAIq2I,KAASzpB,EAAe1wG,MAAQ0wG,EAAe7wG,OACpEkuE,EAAS,OAGNglD,GAAW,cAAehlD,IAGrCgsD,EAAS90I,UAAUwH,SAAW,WAC1B,MAAO,SAAY7P,KAAK64I,WAAc,IAAO74I,KAAKs9I,mBAAsB,IAAOt9I,KAAKs2I,cAAiB,IAAOt2I,KAAK44I,gBACrG,MAAS54I,KAAKq0F,MAAO,EAAI,QAAWr0F,KAAKq0F,MAAO,EAAI,KAAQr0F,KAAKk8I,eAAkB,IAAOl8I,KAAKw4I,kBAAqB,IAAOx4I,KAAKi5I,oBAC/Hj5I,KAAKq8I,aAAgB,IAAOr8I,KAAKq9I,gBAAmB,WAG9DF,EAxEI,CAyEbzB,IAEFnF,GAASlW,IAAMic,GACf/F,GAASnY,OAASoe,GAClBjG,GAAS/H,MAAQiO,GACjBlG,GAASnI,MAAQsO,GACjBnG,GAASpJ,UAAY4P,GACrBxG,GAASjK,KAAOoP,GAChBnF,GAASrb,KAAO8hB,GAChBzG,GAASrI,KAAOiP,GAuBhB,IAAIK,GAAa,SAAUC,GACvB,SAASxI,EAAQppI,EAAS3E,GACtBu2I,EAAYlzI,KAAKvK,KAAM6L,EAAS3E,GAEhClH,KAAK09I,MAAQ,IAAI7C,GAASl4I,EAAEI,OAAO,CAC/Bw6I,IA1BF,QA0BOhmB,EAAc1rH,EAAS,aAAaooC,WAC1Cj0C,KAAKkH,UAERswI,GAAYx3I,KAAK6L,QAAS7L,KAAK29I,UAAU,KAEzC39I,KAAK49I,aAAe59I,KAAK6L,QAAQkvI,kBACjC/6I,KAAK49I,aAAanxI,MAAMO,MAAQ,OAChChN,KAAK49I,aAAanxI,MAAME,OAAS,OACjC3M,KAAK49I,aAAanxI,MAAMkgB,SAAW,SAhC3C,SAAuB9gB,GACnB,IAAIgyI,EAEJ,IACIA,EAAMhyI,EAAQiyI,aAAejyI,EAAQiyI,eAAiB,KACxD,MAAOn5I,IAET,GAAIk5I,EAAK,CACL,IAAIhyH,GAASgyH,EAAIl5I,EAAI,EACjByf,GAAQy5H,EAAI1wF,EAAI,EAChB1gD,EAAQZ,EAAQY,MAEP,IAATof,GAAsB,IAARzH,IACd3X,EAAMof,KAAOA,EAAO,KACpBpf,EAAM2X,IAAMA,EAAM,OAoBtB25H,CAAc/9I,KAAK49I,cAEnB59I,KAAK09I,MAAM1F,SAASh4I,KAAK49I,cAEzBzmB,EAAWn3H,KAAK6L,QAAS,CACrByd,MAAOtpB,KAAK+hF,OACZi8D,UAAWh+I,KAAK+kH,YAChBk5B,SAAUj+I,KAAKglH,YACf57F,UAAWppB,KAAKq1I,aAGpBr1I,KAAKupB,SAGTu8F,EAAamvB,EAASwI,GACtBxI,EAAQ5sI,UAAY5H,OAAOumD,OAAQy2F,GAAeA,EAAYp1I,WAC9D4sI,EAAQ5sI,UAAUC,YAAc2sI,EAChCA,EAAQltI,GAAKktI,EAAQ5sI,UACrB4sI,EAAQltI,GAAGI,KAAO8sI,EAAQltI,GAAGO,YAE7B,IAAI40H,EAAqB,CAAEx3H,KAAM,IA4EjC,OA1EAw3H,EAAmBx3H,KAAK6pB,IAAM,WAC1B,MAAO,OAGX0lH,EAAQ5sI,UAAUrG,QAAU,WACpBhC,KAAK09I,QACL19I,KAAK09I,MAAM17I,UACXhC,KAAK09I,MAAQ,KACb19I,KAAK49I,aAAe,KACpBjmB,EAAa33H,KAAK6L,QAAS,CACvByd,MAAOtpB,KAAK+hF,OACZi8D,UAAWh+I,KAAK+kH,YAChBk5B,SAAUj+I,KAAKglH,YACf57F,UAAWppB,KAAKq1I,cAIxBoI,EAAYp1I,UAAUrG,QAAQuI,KAAKvK,OAGvCi1I,EAAQ5sI,UAAU2nC,UAAY,SAAoBjzB,GAC9C,IAAI66E,EAAWv0F,KAAK0S,MAAMgH,EAAO3X,GAAM,IAAO/B,KAAK0S,MAAMgH,EAAO5Y,GAAM,IAAOnE,KAAK8xB,MAAW,MAAI,IAAO9xB,KAAK8xB,MAAY,OAEzH9xB,KAAK4jH,QAAU7mG,EACf/c,KAAK49I,aAAa/4H,aAAa,UAAW+yE,IAG9Cq9C,EAAQ5sI,UAAUmtI,KAAO,SAAe3pI,GACpC4xI,EAAYp1I,UAAUmtI,KAAKjrI,KAAKvK,KAAM6L,GACtC7L,KAAK09I,MAAM9yE,KAAK,CAAE/+D,KAGtBopI,EAAQ5sI,UAAU4tD,MAAQ,WACtBwnF,EAAYp1I,UAAU4tD,MAAM1rD,KAAKvK,MACjCA,KAAK09I,MAAMznF,SAGfg/E,EAAQ5sI,UAAUwuF,IAAM,WACpB,MAAO,yBAA2B72F,KAAK29I,aAG3C1I,EAAQ5sI,UAAU8sI,aAAe,WAC7B,IACI+I,EADMl+I,KACOs1I,QACbv4H,EAFM/c,KAEO4jH,QAEjB,GAAI7mG,EAAQ,CACR,IAAIiP,EAAO,IAAIwiH,GACfxiH,EAAKmpB,SAASxzC,KAAKu8I,GAEnBlyH,EAAKunB,UACDypF,KAAchtF,WAAWjzB,EAAO3X,GAAI2X,EAAO5Y,IAG/C+5I,EAASlyH,EAGb,OAAOkyH,GAGXjJ,EAAQ5sI,UAAU0pB,QAAU,WACpB/xB,KAAK4jH,SACL5jH,KAAKgwC,UAAUhwC,KAAK4jH,UAI5BqxB,EAAQ5sI,UAAUs1I,UAAY,SAAoBQ,GAG9C,MAAQ,SAF0B,iBAAdA,EAAyBA,EACzC,yDACuB,UAAY3H,GAAS,8DAAiEx2I,KAAK09I,MAAM9tI,SAAY,UAG5InP,OAAOu6H,iBAAkBia,EAAQ5sI,UAAW60H,GAErC+X,EA/GK,CAgHdF,IAEEqJ,GAAa,GAEjB,SAASC,GAAWC,EAAKlvG,GACrB,IAAI87F,EAAW97F,EAAK87F,SAEpB,GAAwB,IAApBA,EAAS1jI,OAAb,CAIA,IAAIghI,EAAU0C,EAAS,GACnB/5C,EAASq3C,EAAQr3C,SACrBmtD,EAAIliG,OAAO+0C,EAAO/rF,EAAG+rF,EAAOhtF,GAE5B,IAAK,IAAIoD,EAAI,EAAGA,EAAI2jI,EAAS1jI,OAAQD,IAAK,CAEtC4pF,GADAq3C,EAAU0C,EAAS3jI,IACF4pF,SAEjB,IACIotD,EADUrT,EAAS3jI,EAAI,GACL8/H,aAClBD,EAAYoB,EAAQpB,YAEpBmX,GAAWnX,EACXkX,EAAIE,cAAcD,EAAQn5I,EAAGm5I,EAAQp6I,EACjCijI,EAAUhiI,EAAGgiI,EAAUjjI,EACvBgtF,EAAO/rF,EAAG+rF,EAAOhtF,GAErBm6I,EAAI1T,OAAOz5C,EAAO/rF,EAAG+rF,EAAOhtF,GAIhCirC,EAAKloC,QAAQ0lI,QACb0R,EAAIxS,aAIZ,IAAI2S,GAAU,SAAU9G,GACpB,SAAS3tE,EAAK2qE,GACVgD,EAAYptI,KAAKvK,KAAM20I,GACnBA,GACA30I,KAAK0+I,WA8Gb,OA1GA54B,EAAa97C,EAAM2tE,GACnB3tE,EAAK3hE,UAAY5H,OAAOumD,OAAQ2wF,GAAeA,EAAYtvI,WAC3D2hE,EAAK3hE,UAAUC,YAAc0hE,EAC7BA,EAAKjiE,GAAKiiE,EAAK3hE,UACf2hE,EAAKjiE,GAAGI,KAAO6hE,EAAKjiE,GAAGO,YAEvB0hE,EAAK3hE,UAAUq2I,SAAW,WACtB,IAAI5kG,EAAO95C,KAAK20I,WAAW76F,OACvBA,IACA95C,KAAK85C,KAAOA,EACZA,EAAKq6E,YAAYn0H,QAIzBgqE,EAAK3hE,UAAU4tD,MAAQ,WACfj2D,KAAK20I,YACL30I,KAAK20I,WAAWvgB,eAAep0H,MAGnCA,KAAK2+I,YAELhH,EAAYtvI,UAAU4tD,MAAM1rD,KAAKvK,OAGrCgqE,EAAK3hE,UAAUs2I,UAAY,WACnB3+I,KAAK85C,OACL95C,KAAK85C,KAAKs6E,eAAep0H,aAClBA,KAAK85C,OAIpBkwB,EAAK3hE,UAAUu2I,QAAU,SAAkBN,GACnCt+I,KAAK85C,OACLwkG,EAAIO,YACJR,GAAWC,EAAKt+I,KAAK85C,MACrBwkG,EAAIxkG,SAIZkwB,EAAK3hE,UAAUksH,cAAgB,SAAwB5vH,GACnC,SAAZA,EAAEsgB,QACFjlB,KAAK2+I,YACL3+I,KAAK0+I,YAGT/G,EAAYtvI,UAAUksH,cAAchqH,KAAKvK,KAAM2E,IAGnDqlE,EAAK3hE,UAAUy2I,aAAe,SAAuBR,GACjD,GAAIt+I,KAAK20I,WAAY,CACjB,IAAIphG,EAAYvzC,KAAK20I,WAAWphG,YAC5BA,GACA+qG,EAAI/qG,UAAUnrC,MAAMk2I,EAAK/qG,EAAU0kF,SAAStkE,QAAQ,MAKhEqW,EAAK3hE,UAAU02I,aAAe,SAAuB5qH,EAAUkgE,EAAK2qD,GAGhE,IAFA,IAESz3I,EAAI,EAAGA,EAAI4sB,EAAS3sB,OAAQD,IAAK,CACtC,IAAIotI,EAAaxgH,EAAS5sB,GACtB4tC,EAAWw/F,EAAWx/F,SAEtB2iG,EAAY,IAAIsG,GAAWzJ,EAAWj/G,UAAUi/G,EAAYqK,GAE5D7pG,GAAYA,EAAS3tC,OAAS,GAC9BswI,EAAUltE,KAAKz1B,EAAUk/C,EAAK2qD,GAG9BhqB,EAAQ3gC,GAZDr0F,KAaE2uI,SAASmJ,EAAWzjD,GAbtBr0F,KAeE+5C,OAAO+9F,KAK5B9tE,EAAK3hE,UAAUuiE,KAAO,SAAez2C,EAAUkgE,EAAK2qD,GAChDh/I,KAAK++I,aAAa5qH,EAAUkgE,EAAK2qD,GAEjCh/I,KAAK80I,cAGT9qE,EAAK3hE,UAAU42I,WAAa,SAAqBX,GAC7C,GAAIt+I,KAAK20I,WAAY,CACjB,IAAI/9G,EAAU52B,KAAK20I,WAAW/9G,UAC1Bo+F,EAAQp+F,IACR52B,KAAKk/I,YAAYZ,EAAK1nH,KAKlCozC,EAAK3hE,UAAU62I,YAAc,SAAsBZ,EAAK51I,GACpD,IAAIy2I,EAAWz2I,EACXy2I,GAAYb,EAAIY,cAChBC,GAAYb,EAAIY,aAEpBZ,EAAIY,YAAcC,GAGtBn1E,EAAK3hE,UAAUiE,QAAU,WACrB,IAAIvF,EAAM/G,KAAK20I,WACf,OAAQ5tI,GAAQA,IAA+B,IAAxBA,EAAIG,QAAQoF,SAGhC09D,EAlHE,CAmHX0qE,IAEE0K,GAAe,SAAUnlB,GACzB,SAASwiB,IACLxiB,EAAW7xH,MAAMpI,KAAMqH,WA+B3B,OA5BAy+G,EAAa22B,EAAWxiB,GACxBwiB,EAAUp0I,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC9Do0I,EAAUp0I,UAAUC,YAAcm0I,EAClCA,EAAU10I,GAAK00I,EAAUp0I,UACzBo0I,EAAU10I,GAAGI,KAAOs0I,EAAU10I,GAAGO,YAEjCm0I,EAAUp0I,UAAUg3I,SAAW,SAAmBf,GAC9C,GAAKt+I,KAAKsM,UAAV,CAIAgyI,EAAI/vG,OAEJvuC,KAAK8+I,aAAaR,GAClBt+I,KAAK4+I,QAAQN,GACbt+I,KAAKi/I,WAAWX,GAGhB,IADA,IAAI76G,EAAazjC,KAAKyjC,WACbl8B,EAAI,EAAGA,EAAIk8B,EAAWj8B,OAAQD,IAAK,CACxC,IAAIm8B,EAAQD,EAAWl8B,GACnBm8B,EAAMp3B,WACNo3B,EAAM27G,SAASf,GAIvBA,EAAItpG,YAGDynG,EAjCO,CAkChBnO,GAAYmQ,GAAQ,eAIlBa,GAAc,SAAUrlB,GACxB,SAAS4gB,EAAS0E,EAAQ9vI,GACtBwqH,EAAW1vH,KAAKvK,MAEhBA,KAAKu/I,OAASA,EACdv/I,KAAKyP,KAAOA,EACZzP,KAAKs+I,IAAMiB,EAAOC,WAAW,MAE7B,IAAIC,EAAoBz/I,KAAK0/I,YAAYl2I,KAAKxJ,MAC9CA,KAAK80I,WAAan0I,MAAMukC,UAAS,WAC7BvkC,MAAMijC,eAAe67G,KAZf,oBA+Dd,OA/CA35B,EAAa+0B,EAAU5gB,GACvB4gB,EAASxyI,UAAY5H,OAAOumD,OAAQizE,GAAcA,EAAW5xH,WAC7DwyI,EAASxyI,UAAUC,YAAcuyI,EACjCA,EAAS9yI,GAAK8yI,EAASxyI,UACvBwyI,EAAS9yI,GAAGI,KAAO0yI,EAAS9yI,GAAGO,YAE/BuyI,EAASxyI,UAAUrG,QAAU,WACzBi4H,EAAW5xH,UAAUrG,QAAQuI,KAAKvK,MAClCA,KAAKu/I,OAAS,KACdv/I,KAAKs+I,IAAM,MAGfzD,EAASxyI,UAAUuiE,KAAO,SAAez2C,EAAUkgE,EAAK2qD,GACpDh/I,KAAK++I,aAAa5qH,EAAUkgE,EAAK2qD,GACjCh/I,KAAK0/I,eAGT7E,EAASxyI,UAAUs3I,SAAW,SAAmBhwG,GAC7C,IACI4vG,EADMv/I,KACOu/I,OACb9vI,EAFMzP,KAEKyP,KACf8vI,EAAOvyI,MAAQyC,EAAKzC,MAAQ2iC,EAC5B4vG,EAAO5yI,OAAS8C,EAAK9C,OAASgjC,EAC9B3vC,KAAKs+I,IAAI3uG,MAAMA,EAAOA,IAG1BkrG,EAASxyI,UAAUu3I,kBAAoB,WACnC,MAAuC,iBAA5B9+I,OAAOue,iBACPve,OAAOue,iBAGX,GAGXw7H,EAASxyI,UAAUq3I,YAAc,SAAsBx4I,GACnD,GAAKlH,KAAKs+I,IAAV,CAIA,IACI3uG,EADazoC,GAAWA,EAAQ24I,WACX,EAAI7/I,KAAK4/I,oBAClC5/I,KAAK2/I,SAAShwG,GAEd3vC,KAAKs+I,IAAIwB,UAAU,EAAG,EAAG9/I,KAAKu/I,OAAOvyI,MAAOhN,KAAKu/I,OAAO5yI,QACxD3M,KAAKq/I,SAASr/I,KAAKs+I,OAGhBzD,EA7DM,CA8DfvM,GAAY8Q,GAAa,eAEvBW,GAAY,SAAU/rB,GACtB,SAAS+rB,IACL/rB,EAASzpH,KAAKvK,MAEdA,KAAKggJ,OAAS,GA6ClB,OA1CAl6B,EAAai6B,EAAU/rB,GACvB+rB,EAAS13I,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WACzD03I,EAAS13I,UAAUC,YAAcy3I,EACjCA,EAASh4I,GAAKg4I,EAAS13I,UACvB03I,EAASh4I,GAAGI,KAAO43I,EAASh4I,GAAGO,YAE/By3I,EAAS13I,UAAUu8H,KAAO,SAAeqb,EAAOrkB,GAC5C57H,KAAKggJ,OAAOr+I,KAAK,CACbi6H,KAAMA,EACNqkB,MAAOA,IAEXA,EAAMC,UAAYlgJ,MAGtB+/I,EAAS13I,UAAU83I,YAAc,SAAsB9lB,GAInD,IAHA,IAAI2lB,EAAShgJ,KAAKggJ,OACdx4I,EAASw4I,EAAOx4I,OAChB+O,EAAS,GACJ3M,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBo2I,EAAOp2I,GAAKgyH,KAAKQ,cAAc/B,IAC/B9jH,EAAO5U,KAAKq+I,EAAOp2I,GAAKq2I,OAGhC,OAAO1pI,GAGXwpI,EAAS13I,UAAUu0D,OAAS,SAAiBqjF,EAAOrkB,GAChD57H,KAAK4kI,KAAKqb,EAAOrkB,IAGrBmkB,EAAS13I,UAAU0uB,OAAS,SAAiBkpH,GAIzC,IAHA,IAAID,EAAShgJ,KAAKggJ,OACdx4I,EAASw4I,EAAOx4I,OAEXoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GAAIo2I,EAAOp2I,GAAKq2I,QAAUA,EAAO,CAC7BD,EAAOx1I,OAAOZ,EAAK,GACnB,QAKLm2I,EAjDI,CAkDbn4I,GAEEw4I,GAAY,SAAUC,GACtB,SAASD,EAAS/0D,GACdg1D,EAAY91I,KAAKvK,MACjBA,KAAKm1C,SAAW,GAChBn1C,KAAKqrF,KAAOA,EAyEhB,OAtEAy6B,EAAas6B,EAAUC,GACvBD,EAAS/3I,UAAY5H,OAAOumD,OAAQq5F,GAAeA,EAAYh4I,WAC/D+3I,EAAS/3I,UAAUC,YAAc83I,EACjCA,EAASr4I,GAAKq4I,EAAS/3I,UACvB+3I,EAASr4I,GAAGI,KAAOi4I,EAASr4I,GAAGO,YAE/B83I,EAAS/3I,UAAUi4I,SAAW,SAAmBj1D,GAC7C,IAAIk1D,EAAWvgJ,KAAKqrF,KAChBm1D,EAAkBD,EAAS9kB,cAC3BA,EAAcpwC,EAAKowC,cACnB6kB,EAAWC,EAAS3nG,OAAOxzC,GAAKimF,EAAKzyC,OAAOxzC,GAAKm7I,EAAS3nG,OAAOz0C,GAAKknF,EAAKzyC,OAAOz0C,GAAKs3H,EAAYr2H,GAAKo7I,EAAgBp7I,GACxHq2H,EAAYt3H,GAAKq8I,EAAgBr8I,EACrC,OAAOm8I,GAGXF,EAAS/3I,UAAU83I,YAAc,SAAsB9lB,GAInD,IAHA,IAAIllF,EAAWn1C,KAAKm1C,SAChB3tC,EAAS2tC,EAAS3tC,OAClB+O,EAAS8pI,EAAYh4I,UAAU83I,YAAY51I,KAAKvK,KAAMq6H,GACjDzwH,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5BgrH,EAAWr+G,EAAQ4+B,EAASvrC,GAAKu2I,YAAY9lB,IAEjD,OAAO9jH,GAGX6pI,EAAS/3I,UAAUu0D,OAAS,SAAiBqjF,EAAOrkB,GAChD,IAAIzmF,EAAWn1C,KAAKm1C,SAChBsrG,GAAW,EAEf,GAAIzgJ,KAAKsgJ,SAAS1kB,GAAO,CACrB,GAAI57H,KAAKggJ,OAAOx4I,OAAS,EACrBxH,KAAK4kI,KAAKqb,EAAOrkB,OACd,CACEzmF,EAAS3tC,QACVxH,KAAKsqE,gBAGT,IAAK,IAAI1gE,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IACrC,GAAIurC,EAASvrC,GAAKgzD,OAAOqjF,EAAOrkB,GAAO,CACnC6kB,GAAW,EACX,MAIHA,GACDzgJ,KAAK4kI,KAAKqb,EAAOrkB,GAGzB6kB,GAAW,EAGf,OAAOA,GAGXL,EAAS/3I,UAAUiiE,cAAgB,WAC/B,IACI+gB,EADMrrF,KACKqrF,KACXl2C,EAFMn1C,KAESm1C,SACfooC,EAAS8N,EAAK9N,SACdmjE,EAAYr1D,EAAKr+E,QAAU,EAC3B2zI,EAAat1D,EAAK1+E,SAAW,EAEjCwoC,EAASxzC,KACL,IAAIy+I,EAAS,IAAIllB,EAAK,CAAE7vC,EAAKzyC,OAAOxzC,EAAGimF,EAAKzyC,OAAOz0C,GAAK,CAAEu8I,EAAWC,KACrE,IAAIP,EAAS,IAAIllB,EAAK,CAAE39C,EAAOn4E,EAAGimF,EAAKzyC,OAAOz0C,GAAK,CAAEu8I,EAAWC,KAChE,IAAIP,EAAS,IAAIllB,EAAK,CAAE7vC,EAAKzyC,OAAOxzC,EAAGm4E,EAAOp5E,GAAK,CAAEu8I,EAAWC,KAChE,IAAIP,EAAS,IAAIllB,EAAK,CAAE39C,EAAOn4E,EAAGm4E,EAAOp5E,GAAK,CAAEu8I,EAAWC,OAI5DP,EA7EI,CA8EbL,IAEEa,GAAY,IAIZC,GAAkB,SAAU7sB,GAC5B,SAAS6sB,IACL7sB,EAASzpH,KAAKvK,MAEdA,KAAK8gJ,YA2LT,OAxLAh7B,EAAa+6B,EAAgB7sB,GAC7B6sB,EAAex4I,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WAC/Dw4I,EAAex4I,UAAUC,YAAcu4I,EACvCA,EAAe94I,GAAK84I,EAAex4I,UACnCw4I,EAAe94I,GAAGI,KAAO04I,EAAe94I,GAAGO,YAE3Cu4I,EAAex4I,UAAUy4I,UAAY,WACjC9gJ,KAAK+gJ,QAAU,GACf/gJ,KAAKy9C,KAAO,IAAIsiG,GAChB//I,KAAKghJ,aAAe,IAGxBH,EAAex4I,UAAU4tD,MAAQ,WAI7B,IAHA,IAEI+qF,EAAehhJ,KAAKghJ,aACfp3I,EAAM,EAAGA,EAAMo3I,EAAax5I,OAAQoC,IAH9B5J,KAIF+2B,OAAOiqH,EAAap3I,IAEjC5J,KAAK8gJ,aAGTD,EAAex4I,UAAU44I,WAAa,SAAqB5mB,GACvD,IAAI6mB,GAAelhJ,KAAK+gJ,QAAS19I,KAAKkN,MAAO8pH,EAAMj1H,EAAIw7I,MAAiB,IAAMv9I,KAAKkN,MAAO8pH,EAAMl2H,EAAIy8I,KAChGrqI,EAASvW,KAAKy9C,KAAK0iG,YAAY9lB,GAE/B6mB,IACA3qI,EAASA,EAAO8G,OAAO6jI,EAAWf,YAAY9lB,KAGlDr6H,KAAKmhJ,aAAa5qI,GAElBA,EAAO2O,KAAKk8H,IACZ,IAAK,IAAIx3I,EAAM,EAAGA,EAAM2M,EAAO/O,OAAQoC,IACnC,GAAI2M,EAAO3M,GAAKwyH,cAAc/B,GAC1B,OAAO9jH,EAAO3M,IAK1Bi3I,EAAex4I,UAAU84I,aAAe,SAAuBhtH,GAG3D,IAFA,IAESvqB,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IAAO,CAM5C,IALA,IAAIiC,EAAUsoB,EAASvqB,GACnBgwC,EAAS,EACTynG,EAAch+I,KAAKqmC,IAxDlB,IACD,IAwDArR,EAAU,GAEPxsB,GACHwsB,EAAQ12B,KAAKkK,GACbA,EAAUA,EAAQM,OAGtB,KAAOksB,EAAQ7wB,QAEXoyC,MADA/tC,EAAUwsB,EAAQhJ,OACEljB,OAASN,EAAQM,OAAOgpC,SAfrCn1C,KAeyDghJ,cAAcrrI,QAAQ9J,GAAW,GAAKw1I,EACtGA,GAnEC,IAsELltH,EAASvqB,GAAK03I,QAAU1nG,IAIhCinG,EAAex4I,UAAUksH,cAAgB,SAAwB5vH,GAC7C,cAAZA,EAAEsgB,OAAqC,iBAAZtgB,EAAEsgB,OAC7BjlB,KAAKuhJ,WAAW58I,EAAEkH,UAI1Bg1I,EAAex4I,UAAUmsH,eAAiB,SAAyB7vH,GAC/D3E,KAAKuhJ,WAAW58I,EAAEkH,UAGtBg1I,EAAex4I,UAAUk5I,WAAa,SAAqB11I,GAGvD,GAAyB,UAArBA,EAAQ6pB,SACR,IAAK,IAAI9rB,EAAM,EAAGA,EAAMiC,EAAQspC,SAAS3tC,OAAQoC,IAHtC5J,KAIEuhJ,WAAW11I,EAAQspC,SAASvrC,SAGrCiC,EAAQq0I,WACRr0I,EAAQq0I,UAAUnpH,OAAOlrB,GAE7B7L,KAAKwhJ,aAAa31I,IAI1Bg1I,EAAex4I,UAAU4E,IAAM,SAAcknB,GACzC,IAAIstH,EAAgBv+I,MAAMD,QAAQkxB,GAAYA,EAASvtB,MAAM,GAAK,CAAEutB,GAEpEygG,EAAW50H,KAAKghJ,aAAcS,GAC9BzhJ,KAAK0hJ,QAAQD,IAGjBZ,EAAex4I,UAAUomI,eAAiB,SAAyB9pI,GAG/D,GAAiB,WAAbA,EAAEqoC,OACF,IAAK,IAAIpjC,EAAM,EAAGA,EAAMjF,EAAEyvB,MAAM5sB,OAAQoC,IAH7B5J,KAIE+2B,OAAOpyB,EAAEyvB,MAAMxqB,SAG5B5J,KAAK0hJ,QAAQx+I,MAAMmF,UAAUzB,MAAM2D,KAAK5F,EAAEyvB,MAAO,KAIzDysH,EAAex4I,UAAUq5I,QAAU,SAAkBvtH,GAKjD,IAJA,IAEItoB,EAEGsoB,EAAS3sB,OAAS,IACrBqE,EAAUsoB,EAAS9E,OACX8kG,YANGn0H,MAOc,UAArB6L,EAAQ6pB,SACRk/F,EAAWzgG,EAAUtoB,EAAQspC,UARtBn1C,KAUEwhJ,aAAa31I,IAKlCg1I,EAAex4I,UAAUm5I,aAAe,SAAuBvB,GAC3D,IAAIrkB,EAAOqkB,EAAMrkB,OACjB,GAAIA,EAAM,CACN,IAAI+lB,EAAU3hJ,KAAK4hJ,WAAWhmB,GAC1Bx2H,EAAIu8I,EAAQ,GAAG,GACfx9I,EAAIw9I,EAAQ,GAAG,GAEnB,GAAI3hJ,KAAK6hJ,OAAOF,GACZ3hJ,KAAKy9C,KAAKmf,OAAOqjF,EAAOrkB,OACrB,CACH,IAAImlB,EAAU/gJ,KAAK+gJ,QACdA,EAAQ37I,KACT27I,EAAQ37I,GAAK,IAGZ27I,EAAQ37I,GAAGjB,KACZ48I,EAAQ37I,GAAGjB,GAAK,IAAIi8I,GAChB,IAAIllB,EAAK,CAAE91H,EAAIw7I,GAAWz8I,EAAIy8I,IAAa,CAAEA,GAAWA,OAIhEG,EAAQ37I,GAAGjB,GAAGy4D,OAAOqjF,EAAOrkB,MAKxCilB,EAAex4I,UAAU0uB,OAAS,SAAiBlrB,GAK/C,GAFAA,EAAQuoH,eAAep0H,MAEE,UAArB6L,EAAQ6pB,SAER,IADA,IAAIyf,EAAWtpC,EAAQspC,SACdvrC,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IAN9B5J,KAOE+2B,OAAOoe,EAASvrC,SAEtBiC,EAAQq0I,YACfr0I,EAAQq0I,UAAUnpH,OAAOlrB,UAClBA,EAAQq0I,YAIvBW,EAAex4I,UAAUw5I,OAAS,SAAiBF,GAC/C,OAAOA,EAAQ,GAAGn6I,OAAS,GAAKm6I,EAAQ,GAAGn6I,OAAS,GAGxDq5I,EAAex4I,UAAUu5I,WAAa,SAAqBv2D,GAKvD,IAJA,IAAIowC,EAAcpwC,EAAKowC,cACnBqmB,EAAUz+I,KAAKkN,MAAMkrH,EAAYr2H,EAAIw7I,IACrCmB,EAAU1+I,KAAKkN,MAAMkrH,EAAYt3H,EAAIy8I,IACrCe,EAAU,CAAE,GAAI,IACXv8I,EAAI/B,KAAKkN,MAAM86E,EAAKzyC,OAAOxzC,EAAIw7I,IAAYx7I,GAAK08I,EAAS18I,IAC9Du8I,EAAQ,GAAGhgJ,KAAKyD,GAEpB,IAAK,IAAIjB,EAAId,KAAKkN,MAAM86E,EAAKzyC,OAAOz0C,EAAIy8I,IAAYz8I,GAAK49I,EAAS59I,IAC9Dw9I,EAAQ,GAAGhgJ,KAAKwC,GAEpB,OAAOw9I,GAGJd,EA/LU,CAgMnBj5I,GAEF,SAASw5I,GAAenkE,EAAIE,GACxB,OAAIF,EAAGqkE,QAAUnkE,EAAGmkE,QACT,EAEPrkE,EAAGqkE,QAAUnkE,EAAGmkE,SACR,EAGL,EAGX,IAAIU,GAAgB,SAAuBrhE,GACvCA,EAAQn3E,KAAK,aAAcxJ,KAAK+kH,YAAYv7G,KAAKxJ,OACjD2gF,EAAQn3E,KAAK,aAAcxJ,KAAKglH,YAAYx7G,KAAKxJ,OAEjDA,KAAK6L,QAAU80E,EAAQ90E,SAG3Bm2I,GAAc35I,UAAU4tD,MAAQ,WAC5Bj2D,KAAKiiJ,gBAGTD,GAAc35I,UAAUrG,QAAU,WAC9BhC,KAAKiiJ,sBACEjiJ,KAAK6L,SAGhBm2I,GAAc35I,UAAU08G,YAAc,SAAsBpgH,GACxD,IAAIg0I,EAAS34I,KAAKkiJ,aAAav9I,GAE1Bg0I,GAGI34I,KAAKmiJ,WACNniJ,KAAKoiJ,eAAiBpiJ,KAAKqiJ,cAG/BriJ,KAAKsiJ,WAAW3J,IANhB34I,KAAKiiJ,gBAUbD,GAAc35I,UAAU28G,YAAc,WAClChlH,KAAKiiJ,gBAGTD,GAAc35I,UAAU65I,aAAe,SAAuBv9I,GAG1D,IAFA,IAAIs7I,EAAQt7I,EAAEkH,QAEPo0I,IAAUjrB,EAAQirB,EAAM/4I,QAAQyxI,SACnCsH,EAAQA,EAAM9zI,OAGlB,GAAI8zI,EACA,OAAOA,EAAM/4I,QAAQyxI,QAI7BqJ,GAAc35I,UAAUg6I,WAAa,WACjC,GAAIriJ,KAAK6L,QACL,OAAO7L,KAAK6L,QAAQY,MAAMksI,QAIlCqJ,GAAc35I,UAAUi6I,WAAa,SAAqB3J,GAClD34I,KAAK6L,UACL7L,KAAK6L,QAAQY,MAAMksI,OAASA,EAC5B34I,KAAKmiJ,SAAWxJ,IAIxBqJ,GAAc35I,UAAU45I,aAAe,WAC/BjiJ,KAAKmiJ,WACLniJ,KAAKsiJ,WAAWtiJ,KAAKoiJ,gBAAkB,WAChCpiJ,KAAKmiJ,WAepB,IAAII,GAAc,SAAUv4E,GACxB,SAAS0xE,IACL1xE,EAAK5hE,MAAMpI,KAAMqH,WAuIrB,OApIAy+G,EAAa41B,EAAU1xE,GACvB0xE,EAASrzI,UAAY5H,OAAOumD,OAAQgjB,GAAQA,EAAK3hE,WACjDqzI,EAASrzI,UAAUC,YAAcozI,EACjCA,EAAS3zI,GAAK2zI,EAASrzI,UACvBqzI,EAAS3zI,GAAGI,KAAOuzI,EAAS3zI,GAAGO,YAE/BozI,EAASrzI,UAAUg3I,SAAW,SAAmBf,GAC7CA,EAAI/vG,OAEJvuC,KAAK8+I,aAAaR,GAClBt+I,KAAK4+I,QAAQN,GACbt+I,KAAKi/I,WAAWX,GAEhBA,EAAIO,YAEJ7+I,KAAKwiJ,aAAalE,EAAKt+I,KAAK20I,YAE5B30I,KAAKyiJ,YAAYnE,GACjBt+I,KAAK0iJ,WAAWpE,GAChBt+I,KAAK2iJ,YAAYrE,GAEjBt+I,KAAK4iJ,QAAQtE,GACbt+I,KAAK6iJ,UAAUvE,GAEfA,EAAItpG,WAGR0mG,EAASrzI,UAAUu6I,QAAU,SAAkBtE,GAC3C,IAAIrrH,EAAOjzB,KAAK20I,WAAWztI,QAAQ+rB,KAC/B6vH,GAAU,EAkBd,OAhBI7vH,IACsB,aAAlBA,EAAKyC,UACL11B,KAAK+iJ,gBAAgBzE,EAAKrrH,GAC1B6vH,GAAU,GACFrsB,EAAcxjG,EAAKm8F,SAC3BkvB,EAAI0E,UAAY/vH,EAAKm8F,MAErBkvB,EAAI/vG,OACJvuC,KAAKk/I,YAAYZ,EAAKrrH,EAAK2D,SAC3B0nH,EAAIrrH,OACJqrH,EAAItpG,UAEJ8tG,GAAU,IAIXA,GAGXpH,EAASrzI,UAAU06I,gBAAkB,SAA0BzE,EAAKrrH,GAChE,IACIgwH,EADArnB,EAAO57H,KAAK20I,WAAW9U,UAG3B,GAAI5sG,aAAgBmgH,GAAgB,CAChC,IAAI99H,EAAQ2d,EAAK3d,QACb3J,EAAMsnB,EAAKtnB,MACfs3I,EAAW3E,EAAI4E,qBAAqB5tI,EAAMlQ,EAAGkQ,EAAMnR,EAAGwH,EAAIvG,EAAGuG,EAAIxH,QAC9D,GAAI8uB,aAAgBogH,GAAgB,CACvC,IAAI91D,EAAStqD,EAAKsqD,SAClB0lE,EAAW3E,EAAI6E,qBAAqB5lE,EAAOn4E,EAAGm4E,EAAOp5E,EAAG,EAAGo5E,EAAOn4E,EAAGm4E,EAAOp5E,EAAG8uB,EAAKtH,WA5EhG,SAA0Bs3H,EAAUnQ,GAChC,IAAK,IAAIlpI,EAAM,EAAGA,EAAMkpI,EAAMtrI,OAAQoC,IAAO,CACzC,IAAIge,EAAOkrH,EAAMlpI,GACbwlH,EAAQzuH,MAAMqvH,WAAWpoG,EAAKwnG,SAElCA,EAAMlqH,GAAK0iB,EAAKgP,UAEhBqsH,EAASG,aAAax7H,EAAK7K,SAAUqyG,EAAMS,cAwE3CwzB,CAAiBJ,EAAUhwH,EAAK6/G,OAEhCwL,EAAI/vG,OAECtb,EAAKggH,aACNqL,EAAI/qG,UAAUqoF,EAAK5uH,QAAS,EAAG,EAAG4uH,EAAKjvH,SAAUivH,EAAKhjF,OAAOxzC,EAAGw2H,EAAKhjF,OAAOz0C,GAEhFm6I,EAAI0E,UAAYC,EAChB3E,EAAIrrH,OAEJqrH,EAAItpG,WAGR0mG,EAASrzI,UAAUw6I,UAAY,SAAoBvE,GAC/C,IAAIzgB,EAAS79H,KAAK20I,WAAWztI,QAAQ22H,OACrC,GAAIA,IAAWpH,EAAcoH,EAAOzO,QAAUyO,EAAO7wH,MAAQ,EASzD,OARAsxI,EAAIgF,YAAczlB,EAAOzO,MACzBkvB,EAAIiF,UAAYrsB,EAAe2G,EAAO7wH,MAAO,GAE7CsxI,EAAI/vG,OACJvuC,KAAKk/I,YAAYZ,EAAKzgB,EAAOjnG,SAC7B0nH,EAAIzgB,SACJygB,EAAItpG,WAEG,GAIf0mG,EAASrzI,UAAU2zI,SAAW,WAC1B,IAAIne,EAAS79H,KAAK20I,WAAWztI,QAAQ22H,OACrC,GAAIA,GAAUA,EAAOme,SACjB,OAAOne,EAAOme,SAAS1jI,eAI/BojI,EAASrzI,UAAUo6I,YAAc,SAAsBnE,GACnD,IAAItC,EAAWh8I,KAAKg8I,WACpB,GAAIA,GAAYA,IAAaT,GAAO,CAChC,IAAIY,EAAYnB,GAAYgB,GACxBsC,EAAImE,YACJnE,EAAImE,YAAYtG,IAEhBmC,EAAIkF,QAAUrH,EACdmC,EAAImF,eAAiBtH,KAKjCT,EAASrzI,UAAUq6I,WAAa,SAAqBpE,GACjD,IAAItC,EAAWh8I,KAAKg8I,WAChBne,EAAS79H,KAAK20I,WAAWztI,QAAQ22H,OACjCme,GAAYA,IAAaT,GACzB+C,EAAIlC,QAAUZ,GACP3d,GAAUA,EAAOue,UACxBkC,EAAIlC,QAAUve,EAAOue,UAI7BV,EAASrzI,UAAUs6I,YAAc,SAAsBrE,GACnD,IAAIzgB,EAAS79H,KAAK20I,WAAWztI,QAAQ22H,OACjCA,GAAUA,EAAO0O,WACjB+R,EAAI/R,SAAW1O,EAAO0O,WAI9BmP,EAASrzI,UAAUm6I,aAAe,SAAuBlE,EAAKlvG,GAC1DivG,GAAWC,EAAKlvG,IAGbssG,EAzIM,CA0If+C,IAEEiF,GAAa,SAAUhI,GACvB,SAASY,IACLZ,EAAStzI,MAAMpI,KAAMqH,WAczB,OAXAy+G,EAAaw2B,EAASZ,GACtBY,EAAQj0I,UAAY5H,OAAOumD,OAAQ00F,GAAYA,EAASrzI,WACxDi0I,EAAQj0I,UAAUC,YAAcg0I,EAChCA,EAAQv0I,GAAKu0I,EAAQj0I,UACrBi0I,EAAQv0I,GAAGI,KAAOm0I,EAAQv0I,GAAGO,YAE7Bg0I,EAAQj0I,UAAUm6I,aAAe,SAAuBlE,GAEpDD,GAAWC,EADAt+I,KAAK20I,WAAW1G,WAIxBqO,EAhBK,CAiBdiG,IAEEoB,GAAgB,SAAUjI,GAC1B,SAASc,IACLd,EAAStzI,MAAMpI,KAAMqH,WAiBzB,OAdAy+G,EAAa02B,EAAYd,GACzBc,EAAWn0I,UAAY5H,OAAOumD,OAAQ00F,GAAYA,EAASrzI,WAC3Dm0I,EAAWn0I,UAAUC,YAAck0I,EACnCA,EAAWz0I,GAAKy0I,EAAWn0I,UAC3Bm0I,EAAWz0I,GAAGI,KAAOq0I,EAAWz0I,GAAGO,YAEnCk0I,EAAWn0I,UAAUm6I,aAAe,SAAuBlE,GACvD,IAAIrvH,EAAMjvB,KAAK20I,WAAW/U,WACtBriD,EAAStuD,EAAIsuD,OACb5xD,EAASsD,EAAItD,OAEjB2yH,EAAI5R,IAAInvD,EAAOn4E,EAAGm4E,EAAOp5E,EAAGwnB,EAAQ,EAAa,EAAVtoB,KAAK+xH,KAGzConB,EAnBQ,CAoBjB+F,IAEEqB,GAAe,SAAUlI,GACzB,SAASgB,EAAU/H,EAAYqK,GAC3BtD,EAASnxI,KAAKvK,KAAM20I,GAEpB30I,KAAK6jJ,OAAS7jJ,KAAK6jJ,OAAOr6I,KAAKxJ,MAC/BA,KAAK8jJ,QAAU9jJ,KAAK8jJ,QAAQt6I,KAAKxJ,MAEjCA,KAAK62B,QAAU+uF,IAEf,IAAI6f,EAAMzlI,KAAKylI,IAAM,IAAI2I,MACrBrnI,EAAM4tI,EAAW5tI,MAEjBi4I,IAAU,UAAUjyI,KAAKhG,KACzB0+H,EAAIse,YAAc/E,GAGlBj4I,IACA0+H,EAAI1+H,IAAMA,GAGV0+H,EAAI9+G,SACJ3mB,KAAK6jJ,UAELpe,EAAIue,OAAShkJ,KAAK6jJ,OAClBpe,EAAIwe,QAAUjkJ,KAAK8jJ,SAqD3B,OAjDAh+B,EAAa42B,EAAWhB,GACxBgB,EAAUr0I,UAAY5H,OAAOumD,OAAQ00F,GAAYA,EAASrzI,WAC1Dq0I,EAAUr0I,UAAUC,YAAco0I,EAClCA,EAAU30I,GAAK20I,EAAUr0I,UACzBq0I,EAAU30I,GAAGI,KAAOu0I,EAAU30I,GAAGO,YAEjCo0I,EAAUr0I,UAAUg3I,SAAW,SAAmBf,GACjB,aAAzBt+I,KAAK62B,QAAQo8B,UACbqrF,EAAI/vG,OAEJvuC,KAAK8+I,aAAaR,GAClBt+I,KAAK4+I,QAAQN,GAEbt+I,KAAKkkJ,UAAU5F,GAEfA,EAAItpG,YAIZ0nG,EAAUr0I,UAAUksH,cAAgB,SAAwB5vH,GACxC,QAAZA,EAAEsgB,OACFjlB,KAAK62B,QAAU+uF,IACf5lH,KAAKylI,IAAI1+H,IAAM/G,KAAK20I,WAAW5tI,OAE/B20I,EAASrzI,UAAUksH,cAAchqH,KAAKvK,KAAM2E,IAIpD+3I,EAAUr0I,UAAUw7I,OAAS,WACzB7jJ,KAAK62B,QAAQ8e,UACb31C,KAAK80I,cAGT4H,EAAUr0I,UAAUy7I,QAAU,WAC1B9jJ,KAAK62B,QAAQ+oC,OAAO,IAAInvD,MACpB,yBAA2BzQ,KAAKylI,IAAI1+H,IACpC,wDAIR21I,EAAUr0I,UAAU67I,UAAY,SAAoB5F,GAChD,IAAIjzD,EAAOrrF,KAAK20I,WAAWtpD,OACvBmwC,EAAUnwC,EAAKmwC,UAEnB8iB,EAAI4F,UACAlkJ,KAAKylI,IAAKjK,EAAQp2H,EAAGo2H,EAAQr3H,EAAGknF,EAAKr+E,QAASq+E,EAAK1+E,WAIpD+vI,EA7EO,CA8EhB6F,IAEE4B,GAAmB,SAAUzI,GAC7B,SAASqB,IACLrB,EAAStzI,MAAMpI,KAAMqH,WAgBzB,OAbAy+G,EAAai3B,EAAerB,GAC5BqB,EAAc10I,UAAY5H,OAAOumD,OAAQ00F,GAAYA,EAASrzI,WAC9D00I,EAAc10I,UAAUC,YAAcy0I,EACtCA,EAAch1I,GAAKg1I,EAAc10I,UACjC00I,EAAch1I,GAAGI,KAAO40I,EAAch1I,GAAGO,YAEzCy0I,EAAc10I,UAAUm6I,aAAe,SAAuBlE,GAE1D,IADA,IAAI7wF,EAAQztD,KAAK20I,WAAWlnF,MACnBlmD,EAAI,EAAGA,EAAIkmD,EAAMjmD,OAAQD,IAC9B82I,GAAWC,EAAK7wF,EAAMlmD,KAIvBw1I,EAlBW,CAmBpBwF,IAEE6B,GAAc,SAAU1I,GACxB,SAASsB,IACLtB,EAAStzI,MAAMpI,KAAMqH,WAwBzB,OArBAy+G,EAAak3B,EAAUtB,GACvBsB,EAAS30I,UAAY5H,OAAOumD,OAAQ00F,GAAYA,EAASrzI,WACzD20I,EAAS30I,UAAUC,YAAc00I,EACjCA,EAASj1I,GAAKi1I,EAAS30I,UACvB20I,EAASj1I,GAAGI,KAAO60I,EAASj1I,GAAGO,YAE/B00I,EAAS30I,UAAUm6I,aAAe,SAAuBlE,GACrD,IAAI1e,EAAW5/H,KAAK20I,WAAW/U,WAC3B3wG,EAAM2wG,EAASzE,aACf1sH,EAAKwgB,EAAI,GACT8uG,EAAK9uG,EAAI,GAEb,GAAW,IAAPxgB,GAAmB,IAAPsvH,EAAU,CACtB,IAAInlF,EAASgnF,EAAShnF,OAClBnpC,EAAOmwH,EAASnwH,KACpB6uI,EAAIjzD,KAAKzyC,EAAOxzC,EAAGwzC,EAAOz0C,EAAGsL,EAAKzC,MAAOyC,EAAK9C,aAE9C+uI,EAASrzI,UAAUm6I,aAAaj4I,KAAKvK,KAAMs+I,EAAKhS,GAAKc,SAASxN,KAI/Dod,EA1BM,CA2BfuF,IAEE8B,GAAc,SAAU3I,GACxB,SAASyB,IACLzB,EAAStzI,MAAMpI,KAAMqH,WAqCzB,OAlCAy+G,EAAaq3B,EAAUzB,GACvByB,EAAS90I,UAAY5H,OAAOumD,OAAQ00F,GAAYA,EAASrzI,WACzD80I,EAAS90I,UAAUC,YAAc60I,EACjCA,EAASp1I,GAAKo1I,EAAS90I,UACvB80I,EAASp1I,GAAGI,KAAOg1I,EAASp1I,GAAGO,YAE/B60I,EAAS90I,UAAUg3I,SAAW,SAAmBf,GAC7C,IAAI19G,EAAO5gC,KAAK20I,WACZtgD,EAAMzzD,EAAK9zB,WACX2C,EAAOmxB,EAAK2jD,UAEhB+5D,EAAI/vG,OAEJvuC,KAAK8+I,aAAaR,GAClBt+I,KAAK4+I,QAAQN,GACbt+I,KAAKi/I,WAAWX,GAEhBA,EAAIO,YAEJP,EAAIvnD,KAAOn2D,EAAK15B,QAAQ6vF,KACxBunD,EAAIgG,UAAY,OAEZtkJ,KAAK4iJ,QAAQtE,IACbA,EAAIiG,SAAS3jH,EAAK2lB,UAAW8tC,EAAIjvF,EAAGivF,EAAIlwF,EAAIsL,EAAK0jH,UAGjDnzH,KAAK6iJ,UAAUvE,KACft+I,KAAKyiJ,YAAYnE,GACjBA,EAAIkG,WAAW5jH,EAAK2lB,UAAW8tC,EAAIjvF,EAAGivF,EAAIlwF,EAAIsL,EAAK0jH,WAGvDmrB,EAAItpG,WAGDmoG,EAvCM,CAwCfoF,IAEFnE,GAAW/d,IAAMqjB,GACjBtF,GAAWhgB,OAASulB,GACpBvF,GAAW5P,MAAQ4Q,GACnBhB,GAAWhQ,MAAQwV,GACnBxF,GAAWjR,UAAYgX,GACvB/F,GAAW9R,KAAOiW,GAClBnE,GAAWljB,KAAOkpB,GAClBhG,GAAWlQ,KAAOmW,GAElB,IAiNII,GACAC,GAlNAC,GAAa,SAAUlH,GACvB,SAASxI,EAAQppI,EAAS3E,GACtBu2I,EAAYlzI,KAAKvK,KAAM6L,EAAS3E,GAEhClH,KAAK6L,QAAQmS,UAAYhe,KAAK29I,UAAU39I,MAExC,IAAIu/I,EAASv/I,KAAK6L,QAAQkvI,kBAC1BwE,EAAO9yI,MAAMO,MAAQ,OACrBuyI,EAAO9yI,MAAME,OAAS,OAEtB,IAAI8C,EAAOk9E,EAAY9gF,GAEvB0zI,EAAOvyI,MAAQyC,EAAKzC,MACpBuyI,EAAO5yI,OAAS8C,EAAK9C,OAErB3M,KAAK49I,aAAe2B,EAEpBv/I,KAAK09I,MAAQ,IAAI4B,GAAWC,EAAQ9vI,GAEpCzP,KAAK4kJ,mBAAqB5kJ,KAAK6kJ,YAAYr7I,KAAKxJ,MAEhDm3H,EAAWn3H,KAAK6L,QAAS,CACrByd,MAAOtpB,KAAK4kJ,mBACZx7H,UAAWppB,KAAK4kJ,qBAIxB9+B,EAAamvB,EAASwI,GACtBxI,EAAQ5sI,UAAY5H,OAAOumD,OAAQy2F,GAAeA,EAAYp1I,WAC9D4sI,EAAQ5sI,UAAUC,YAAc2sI,EAChCA,EAAQltI,GAAKktI,EAAQ5sI,UACrB4sI,EAAQltI,GAAGI,KAAO8sI,EAAQltI,GAAGO,YAE7B,IAAI40H,EAAqB,CAAEx3H,KAAM,IA6KjC,OA3KAw3H,EAAmBx3H,KAAK6pB,IAAM,WAC1B,MAAO,UAGX0lH,EAAQ5sI,UAAUrG,QAAU,WACxBy7I,EAAYp1I,UAAUrG,QAAQuI,KAAKvK,MAE/BA,KAAK09I,QACL19I,KAAK09I,MAAM17I,UACXhC,KAAK09I,MAAQ,MAGb19I,KAAK8kJ,cACL9kJ,KAAK8kJ,YAAY7uF,eACVj2D,KAAK8kJ,aAGZ9kJ,KAAK+kJ,UACL/kJ,KAAK+kJ,QAAQ/iJ,iBACNhC,KAAK+kJ,SAGhBptB,EAAa33H,KAAK6L,QAAS,CACvByd,MAAOtpB,KAAK4kJ,mBACZx7H,UAAWppB,KAAK4kJ,sBAIxB3P,EAAQ5sI,UAAUmtI,KAAO,SAAe3pI,GACpC4xI,EAAYp1I,UAAUmtI,KAAKjrI,KAAKvK,KAAM6L,GACtC7L,KAAK09I,MAAM9yE,KAAK,CAAE/+D,QAAWiwI,EAAW97I,KAAKkH,QAAQ83I,MAEjDh/I,KAAK8kJ,aACL9kJ,KAAK8kJ,YAAY73I,IAAI,CAAEpB,KAI/BopI,EAAQ5sI,UAAU4tD,MAAQ,WACtBwnF,EAAYp1I,UAAU4tD,MAAM1rD,KAAKvK,MACjCA,KAAK09I,MAAMznF,QAEPj2D,KAAK8kJ,aACL9kJ,KAAK8kJ,YAAY7uF,QAGjBj2D,KAAK+kJ,SACL/kJ,KAAK+kJ,QAAQ9uF,SAIrBg/E,EAAQ5sI,UAAUogB,YAAc,SAAsB9jB,GAClD,GAAI3E,KAAK8kJ,YAAa,CAClB,IAAIzqB,EAAQr6H,KAAKg2I,cAAcrxI,GAE/B,OADY3E,KAAK8kJ,YAAY7D,WAAW5mB,KAKhD4a,EAAQ5sI,UAAUwgC,MAAQ,WACtB,IACI4U,EADMz9C,KACK09I,MACXsH,EAFMhlJ,KAEY49I,aAClBqH,EAAgB,GAEpBxnG,EAAK8wF,UAAS,SAAUuJ,GAChBA,EAAUjhH,SACVouH,EAActjJ,KAAKm2I,EAAUjhH,YAIrC,IAAI5P,EAAU2+F,IACVs/B,EAAiB,WACjBznG,EAAKiiG,YAAY,CAAEG,YAAY,IAE/B,IACI,IAAIhyI,EAAOm3I,EAAYG,YACvBl+H,EAAQ0uB,QAAQ9nC,GAClB,MAAOlJ,GACLsiB,EAAQ24C,OAAOj7D,KAMvB,OAFAkhH,EAAWo/B,GAAetmF,KAAKumF,EAAgBA,GAExCj+H,GAGXguH,EAAQ5sI,UAAUstI,gBAAkB,WAChC8H,EAAYp1I,UAAUstI,gBAAgBprI,KAAKvK,MACvCA,KAAK8kJ,cACL9kJ,KAAK8kJ,YAAY7uF,eACVj2D,KAAK8kJ,cAIpB7P,EAAQ5sI,UAAUwtI,eAAiB,WAE/B,GADA4H,EAAYp1I,UAAUwtI,eAAetrI,KAAKvK,OACrCA,KAAK8kJ,YAAa,CACnB9kJ,KAAK8kJ,YAAc,IAAIjE,GAIvB,IAFA,IAAIp9G,EAAazjC,KAAK09I,MAAMj6G,WACxBu9G,EAAe,GACVp3I,EAAM,EAAGA,EAAM65B,EAAWj8B,OAAQoC,IACvCo3I,EAAar/I,KAAK8hC,EAAW75B,GAAK+qI,YAEtC30I,KAAK8kJ,YAAY73I,IAAI+zI,KAI7B/L,EAAQ5sI,UAAU0pB,QAAU,WACxB/xB,KAAK49I,aAAa5wI,MAAQhN,KAAK8xB,MAAM9kB,MACrChN,KAAK49I,aAAajxI,OAAS3M,KAAK8xB,MAAMnlB,OAEtC3M,KAAK09I,MAAMjuI,KAAOzP,KAAK8xB,MACvB9xB,KAAK09I,MAAM5I,cAGfG,EAAQ5sI,UAAUs1I,UAAY,WAC1B,MAAO,qBAGX1I,EAAQ5sI,UAAUktI,gBAAkB,WAChCv1I,KAAK8kJ,YAAc,IAAIjE,GACvB7gJ,KAAK+kJ,QAAU,IAAI/C,GAAchiJ,MAEjCy9I,EAAYp1I,UAAUktI,gBAAgBhrI,KAAKvK,OAG/Ci1I,EAAQ5sI,UAAUw8I,YAAc,SAAsBlgJ,GAClD,IAAI3E,KAAK41I,mBAAT,CAIA,IAAIqK,EAAQjgJ,KAAKyoB,YAAY9jB,GAE7B,GAAe,UAAXA,EAAEe,KAAkB,CACpB,IAAI0/I,EAAeplJ,KAAKqlJ,cACpBD,GAAgBA,IAAiBnF,GACjCjgJ,KAAKoK,QAAQ,aAAc,CACvByB,QAASu5I,EACTz8H,cAAehkB,EACfe,KAAM,eAIVu6I,GAASmF,IAAiBnF,GAC1BjgJ,KAAKoK,QAAQ,aAAc,CACvByB,QAASo0I,EACTt3H,cAAehkB,EACfe,KAAM,eAId1F,KAAKoK,QAAQ,YAAa,CACtByB,QAASo0I,EACTt3H,cAAehkB,EACfe,KAAM,cAGV1F,KAAKqlJ,cAAgBpF,OACdA,GACPjgJ,KAAKoK,QAAQ,QAAS,CAClByB,QAASo0I,EACTt3H,cAAehkB,EACfe,KAAM,YAKlBjF,OAAOu6H,iBAAkBia,EAAQ5sI,UAAW60H,GAErC+X,EA9MK,CA+MdF,IAKEuQ,GAAc,WAAc,MAA2B,oBAAbl2I,UAQ1Cm2I,GAAkB,SAAUvxB,GAC5B,SAASuxB,IACLvxB,EAASzpH,KAAKvK,MAEdA,KAAKg0I,OAAS,CAAE,CACZ5xI,KAAM,MACNsD,KAAM83I,IACP,CACCp7I,KAAM,SACNsD,KAAMi/I,KAId7+B,EAAay/B,EAAgBvxB,GAC7BuxB,EAAel9I,UAAY5H,OAAOumD,OAAQgtE,GAAYA,EAAS3rH,WAC/Dk9I,EAAel9I,UAAUC,YAAci9I,EACvCA,EAAex9I,GAAKw9I,EAAel9I,UACnCk9I,EAAex9I,GAAGI,KAAOo9I,EAAex9I,GAAGO,YAE3C,IAAI4xH,EAAkB,CAAE32H,QAAS,GAAGkQ,QAAS,IA8C7C,OA5CAymH,EAAgB32H,QAAQgsB,IAAM,WAQ1B,OAPKm1H,KACDA,GAAY,CACRnF,OA9B0B+F,MACtCl2I,SAAS0O,cAAc,UAAU0hI,WA8BrB3oD,IA5BuByuD,MACnCl2I,SAASo2I,eAAeC,WAAW,oDAAqD,SA+B7Ef,IAGXxqB,EAAgBzmH,QAAQ8b,IAAM,WAK1B,OAJKk1H,KACDA,GAAa,IAAIc,GAGdd,IAGXc,EAAel9I,UAAU2+C,OAAS,SAAiBn7C,EAAS3E,GACxD,IAAIktB,EAAQp0B,KAAKg0I,OACb7jI,EAAQikB,EAAM,GAElB,GAAIltB,GAAWA,EAAQxB,KAEnB,IADA,IAAIggJ,EAAYx+I,EAAQxB,KAAK4S,cACpB/Q,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9B,GAAI6sB,EAAM7sB,GAAGnF,OAASsjJ,EAAW,CAC7Bv1I,EAAQikB,EAAM7sB,GACd,MAKZ,GAAI4I,EACA,OAAO,IAAIA,EAAMzK,KAAKmG,EAAS3E,GAGnCvG,MAAM2vB,aACF,oIACiExO,UAAmB,YAG5FrhB,OAAOu6H,iBAAkBuqB,EAAgBrrB,GAElCqrB,EAjEU,CAkEnB39I,GAEEqtI,GAAW,SAAUwI,GACrB,SAASxI,IACLwI,EAAYr1I,MAAMpI,KAAMqH,WAG5By+G,EAAamvB,EAASwI,GACtBxI,EAAQ5sI,UAAY5H,OAAOumD,OAAQy2F,GAAeA,EAAYp1I,WAC9D4sI,EAAQ5sI,UAAUC,YAAc2sI,EAChCA,EAAQltI,GAAKktI,EAAQ5sI,UACrB4sI,EAAQltI,GAAGI,KAAO8sI,EAAQltI,GAAGO,YAE7B,IAAI4xH,EAAkB,CAAE32H,QAAS,IAYjC,OAVA22H,EAAgB32H,QAAQgsB,IAAM,WAC1B,OAAOg2H,GAAehiJ,SAG1B0xI,EAAQjuF,OAAS,SAAiBn7C,EAAS3E,GACvC,OAAOq+I,GAAe9xI,QAAQuzC,OAAOn7C,EAAS3E,IAGlDzG,OAAOu6H,iBAAkBia,EAAS/a,GAE3B+a,EAvBG,CAwBZF,IAEF,SAAS4Q,GAAYzxF,GACjB,IAAIzW,EAAO,IAAIo9F,GAAS,CACpB1B,cAAc,IAEdvd,EAAO1nE,EAAMqpE,cACbqoB,EAAY1xF,EAEhB,GAAI0nE,EAAM,CACN,IAAIhjF,EAASgjF,EAAKN,YACduqB,EAAa,IAAIrX,GACrBqX,EAAWtyG,UAAUypF,KAAchtF,WAAW4I,EAAOxzC,GAAIwzC,EAAOz0C,IAChE0hJ,EAAW1wG,SAASxzC,KAAKuyD,GACzB0xF,EAAYC,EAGhBpoG,EAAKmtB,KAAK,CAAEg7E,IAEZ,IAAI/uD,EAAM,qCAAuC2/C,GAAS,8DAAiE/4F,EAAK7tC,SAAY,SAI5I,OAFA6tC,EAAKz7C,UAEE60F,EAGX,IAAIivD,GAAQ,CACX7Q,QAASuI,GACT3C,SAAUA,GACV7wE,KAAMA,GACNyyE,UAAWA,GACXH,QAASA,GACTE,WAAYA,GACZQ,SAAUA,GACVN,UAAWA,GACXS,SAAUA,GACVzB,SAAUA,GACVqB,cAAeA,GACf1C,eAAgBA,GAChBD,SAAUA,GACVZ,iBAAkBA,GAClBS,mBAAoBA,GACpBE,mBAAoBA,GACpBwL,YAAaA,IAGVpG,GAAS,CACZtK,QAAS0P,GACT9J,SAAUyE,GACVt1E,KAAMy0E,GACNhC,UAAW2C,GACX9C,QAASoH,GACTlH,WAAYmH,GACZ3G,SAAUoH,GACV1H,UAAWkH,GACXzG,SAAUkH,GACV3I,SAAU6G,GACVxF,cAAeoH,IA8DhB,IAAIniI,GAAU8xG,GAAkB,GAoBhC,SAASiyB,GAAUC,GACf,OAAO9iJ,MAAMmF,UAAUzB,MAAM2D,KAAKy7I,GAGtC,IAAIC,GAAuB,uBAEvBC,GAAc,GAEdC,GAAW,GACfA,GAASzI,MAAQyI,GAIjB,IACIC,MAD8B,oBAAXtlJ,UACKkhB,GAAQoB,MAAQpB,GAAQiB,MAEhDojI,GAAY,SAAUC,GACxB,SAASD,EAASz3I,EAAKy8E,EAAMnkF,GACvBo/I,EAAQ/7I,KAAKvK,KAAM4O,EAAKy8E,EAAKiwC,YAAap0H,GAC1ClH,KAAKumJ,SAAWl7D,EAmBtB,OAhBAy6B,EAAaugC,EAAUC,GACvBD,EAASh+I,UAAY5H,OAAOumD,OAAQs/F,GAAWA,EAAQj+I,WACvDg+I,EAASh+I,UAAUC,YAAc+9I,EACjCA,EAASt+I,GAAKs+I,EAASh+I,UACvBg+I,EAASt+I,GAAGI,KAAOk+I,EAASt+I,GAAGO,YAC7B+9I,EAASh+I,UAAUgjF,KAAO,WAItB,OAAOrrF,KAAKumJ,UAEhBF,EAASh+I,UAAUw3H,QAAU,WAEzB,OAAO7/H,KAAKumJ,UAGXF,EAtBM,CAuBbnY,IAuBF,SAASsY,GAAO35H,EAAI1d,GAChB1O,OAAOypB,KAAK/a,GAAQ7N,SAAQ,SAASiQ,GACjCsb,EAAGpgB,MAAM8E,GAAOpC,EAAOoC,MAI/B,IAA+Ew/G,GAA3EvvH,GAA6B,oBAAZ2lB,SAA2BA,QAAQ9e,aAAuB0oH,GAgB5E5pG,QAAQ9e,WAfD7G,QACK,SAASqrB,EAAIpH,GAAY,OAAOoH,EAAGrrB,QAAQikB,IAElDsrG,GAAE1rG,sBACK,SAASwH,EAAIpH,GAAY,OAAOoH,EAAGxH,sBAAsBI,IAEhEsrG,GAAEzrG,mBACK,SAASuH,EAAIpH,GAAY,OAAOoH,EAAGvH,mBAAmBG,IAE7DsrG,GAAExrG,kBACK,SAASsH,EAAIpH,GAAY,OAAOoH,EAAGtH,kBAAkBE,IAEzD,SAASxgB,GACnB,OAAgE,IAAzD,GAAG0Q,QAAQpL,KAAK6E,SAASuW,iBAAiB1gB,GAAIjF,QAItD,SAASqM,GAAQwgB,EAAIpH,GACjB,GAAIoH,EAAGxgB,QACH,OAAOwgB,EAAGxgB,QAAQoZ,GAKtB,KAAOoH,IAAO,iCAAiC9f,KAAK+E,OAAO+a,KAAM,CAC7D,GAAmB,GAAfA,EAAG6I,UAA+Bl0B,GAAQqrB,EAAIpH,GAC9C,OAAOoH,EAEXA,EAAKA,EAAGjH,YAMhB,IAAI6gI,GAAa,SAAU9jJ,GACvB,OAAIA,EAMO,SAAS8jJ,EAAW55H,GACvB,IAAI1lB,EAAQ0lB,EAAGskD,WAAU,GACzB,GAAmB,GAAftkD,EAAG6I,SAA6B,CAChC,IAAoCnuB,EAAhCm/I,EAAM/jJ,EAAEkqB,GAAK85H,EAAShkJ,EAAEwE,GACxB0G,EAAO64I,EAAI74I,OACf,IAAKtG,KAAKsG,EACN84I,EAAO94I,KAAKtG,EAAGsG,EAAKtG,IAgBxB,IAdI,YAAYwF,KAAK8f,EAAGsD,SACpBhpB,EAAMq4I,WAAW,MAAM0E,UAAUr3H,EAAI,EAAG,GACjC,sCAAsC9f,KAAK8f,EAAGsD,WAIrDhpB,EAAM6gC,gBAAgB,MACtB7gC,EAAM6gC,gBAAgB,QACjB,cAAcj7B,KAAK8f,EAAGsD,WACvBhpB,EAAMuB,MAAQmkB,EAAGnkB,OAErBvB,EAAMoqE,QAAU1kD,EAAG0kD,QACnBpqE,EAAMsqE,SAAW5kD,EAAG4kD,UAEnBlqE,EAAIslB,EAAGk9B,WAAYxiD,EAAGA,EAAIA,EAAEyiD,YAC7B7iD,EAAM+W,YAAYuoI,EAAWl/I,IAGrC,OAAOJ,GAIJ,SAAoB0lB,GACvB,IAAI1lB,EAAQ,SAAUy/I,EAAK1jH,GACvB,IAAI/7B,EAAQ+7B,EAAKiuC,WAAU,GACvBjuC,EAAKgyG,qBACL/tI,EAAM+tI,mBAAqBhyG,EAAKgyG,oBAEpC,IAAK,IAAI3tI,EAAI27B,EAAK6mB,WAAYxiD,EAAGA,EAAIA,EAAEyiD,YACnC7iD,EAAM+W,YAAY0oI,EAAKr/I,IAE3B,OAAOJ,EARC,CAST0lB,GAGCg6H,EAAWh6H,EAAGlH,iBAAiB,UAC/BkhI,EAASr/I,QACTu+I,GAAU5+I,EAAMwe,iBAAiB,WAAWrkB,SAAQ,SAAUwlJ,EAAWv/I,GACrEu/I,EAAUtH,WAAW,MAAM0E,UAAU2C,EAASt/I,GAAI,EAAG,MAM7D,IAAIozB,EAAO9N,EAAGlH,iBAAiB,mCAW/B,OAVAogI,GAAU5+I,EAAMwe,iBAAiB,oCAAoCrkB,SAAQ,SAAUurB,EAAItlB,GACvFslB,EAAGmb,gBAAgB,MACnBnb,EAAGmb,gBAAgB,QACd,cAAcj7B,KAAK8f,EAAGsD,WACvBtD,EAAGnkB,MAAQiyB,EAAKpzB,GAAGmB,OAEvBmkB,EAAG0kD,QAAU52C,EAAKpzB,GAAGgqE,QACrB1kD,EAAG4kD,SAAW92C,EAAKpzB,GAAGkqE,YAGnBtqE,GAtEF,CAyEI,oBAAXrG,QAA0BA,OAAOH,OAASG,OAAOH,MAAM+G,QAmiBjE,IAkJQi2B,GAlJJopH,GAAuB,WACvB,IAAIC,EAAuB,oDAEvBC,EAAuB,eACvBC,EAAuB,gBACvBC,EAAuB,uCACvBC,EAAuB,mCACvBC,EAAuB,SACvBC,EAAuB,QACvBC,EAAuB,QACvBC,EAAuB,OACvBC,EAAuB,WACvBC,EAAuB,WAEvBC,EAAS,GAAIC,EAAS,GAE1B,SAAS5yH,EAAMvQ,GACX,IA4GIojI,EA5GAltH,EAAOlW,EACX,GAAI/V,GAAei5I,EAAQhtH,GACvB,OAAOgtH,EAAOhtH,GAQlB,SAASmqB,EAAKiwB,IANd,WACI,IAAI/vE,EAAIqiJ,EAAehvI,KAAKoM,GACxBzf,IACAyf,EAAQA,EAAMjJ,OAAOxW,EAAE,GAAGwC,SAI9BsgJ,GACA,IAAI9iJ,EAAI+vE,EAAM18D,KAAKoM,GACnB,GAAIzf,EAEA,OADAyf,EAAQA,EAAMjJ,OAAOxW,EAAE,GAAGwC,QACnBxC,EAAE,GAIjB,SAAS+iJ,IACL,IACIvgJ,EAAQqM,EADRu7G,EAAQzuH,MAAMqvH,WAAWvrG,GAAO,GAEpC,GAAI2qG,EAAO,CACP,IAAIj/G,EACA,eAAekI,KAAKoM,IACpB,iBAAiBpM,KAAKoM,IACtB,UAAUpM,KAAKoM,GAMnB,OALAA,EAAQA,EAAMjJ,OAAOrL,EAAM,GAAG3I,QAC9B4nH,EAAQA,EAAMK,SACRjoH,EAASs9C,EAAKoiG,MAChBrzI,EAAUixC,EAAKmiG,IAEZ,CAAE73B,MAAOA,EAAO5nH,OAAQA,EAAQqM,QAASA,IAqFxD,OAPKg0I,EAAM/iG,EAAKkiG,IACZa,EA3EJ,SAA8B90H,GAC1B,IAAIulG,EACA0vB,EAAKC,EACLnV,EAAQ,GACRh9H,GAAU,EAEd,GAAIgvC,EAAKwiG,GAAY,CAqBjB,GAlBa,MADbhvB,EAAQxzE,EAAKsiG,MAET9uB,EAAQ,QAERA,GACAA,EA2lBpB,SAAoBA,GAChB,IAAI4vB,EAAMn/I,WAAWuvH,GACrB,MAAI,QAAQvrH,KAAKurH,GACNj1H,KAAK+xH,GAAK8yB,EAAM,IAElB,OAAOn7I,KAAKurH,GACV4vB,EAEF,QAAQn7I,KAAKurH,GACXj1H,KAAK+xH,GAAK8yB,EAAM,EAElB,OAAOn7I,KAAKurH,GACVj1H,KAAK+xH,GAAK8yB,EAAM,SADtB,EAtmBmBC,CAAW7vB,GACnBxzE,EAAK0iG,KAIM,OADXQ,EAAMljG,EAAKqiG,IAEPa,EAAMljG,EAAKqiG,GACJa,GAAO,KAAKj7I,KAAKgmB,KACxBjd,GAAU,GAEdmyI,EAAMnjG,EAAKqiG,GACXriG,EAAK0iG,IAGL,QAAQz6I,KAAKgmB,IAAsB,MAATulG,GAAwB,MAAP0vB,EAAa,CACxD,IAAI5iJ,EAAI0/C,EAAKmiG,GAAc9iJ,EAAI2gD,EAAKmiG,GACpCnxI,GAAU,EACD,MAAL1Q,EACA4iJ,EAAM,OACM,QAAL5iJ,IACP4iJ,EAAM,SAED,MAAL7jJ,EACA8jJ,EAAM,MACM,QAAL9jJ,IACP8jJ,EAAM,UAEVnjG,EAAK0iG,GAIT,KAAO/iI,IAAUqgC,EAAKyiG,IAAa,CAC/B,IAAI3/H,EAAOmgI,IACX,IAAKngI,EACD,MAEJkrH,EAAMnxI,KAAKimB,GACXk9B,EAAK0iG,GAGT,MAAO,CACH9hJ,KAAU,SACV4yH,MAAUA,EACVl6F,GAAU4pH,GAAOC,EAAMD,EAAM,IAAMC,EAAMD,GAAYC,GAAY,KACjEnV,MAAUA,EACVh9H,QAAUA,IAiBZsyI,CAAqBP,IAErBA,EAAM/iG,EAAK2iG,MACjBI,EAfJ,WACI,GAAI/iG,EAAKwiG,GAAY,CACjB,IAAIj5H,EAAMy2B,EAAK4iG,GAGf,OAFAr5H,EAAMA,EAAI5rB,QAAQ,iBAAkB,IACpCqiD,EAAKyiG,GACE,CAAE7hJ,KAAM,MAAO2oB,IAAKA,IAUzBg6H,IAGFV,EAAOhtH,GAAQktH,GAAO,CAAEniJ,KAAM,QAG1C,OAAO,SAAS+e,GACZ,OAAI/V,GAAek5I,EAAQnjI,GAChBmjI,EAAOnjI,GAEVmjI,EAAOnjI,GAAS6jI,GAAc7jI,GAAOnK,IAAI0a,IA7I9B,GAiJvBszH,IACI3qH,GAAQ,GACL,SAASlZ,EAAO2zG,GACdA,IACDA,EAAY,YAGhB,IAAIhF,EAAW3uG,EAAQ2zG,EAEvB,GAAI1pH,GAAeivB,GAAOy1F,GACtB,OAAOz1F,GAAMy1F,GAGjB,IAIIpuH,EAJAi2B,EAAM,GACNstH,EAAU,EAAGl0D,EAAM,EACnBm0D,EAAW,EACXC,GAAY,EAGhB,SAASC,EAAWj6I,GAChB,OAAQzJ,EAAIyJ,EAAG4J,KAAKoM,EAAMjJ,OAAO64E,IAGrC,SAAS7wD,EAAK50B,GACV,OAAOA,EAAInM,QAAQ,aAAc,IAGrC,KAAO4xF,EAAM5vE,EAAMjd,SACVihJ,GAAaC,EAAW,cACzBF,IACAn0D,MAEMo0D,GAAaC,EAAW,cAC9BF,IACAn0D,MAEMo0D,GAAaC,EAAW,YAC9BD,EAAYzjJ,EAAE,GACdqvF,KAEkB,KAAbo0D,GAAoBC,EAAW,UAGlB,KAAbD,GAAoBC,EAAW,SAFpCr0D,GAAO,EAKW,KAAbo0D,GAAoBC,EAAW,QAIlB,KAAbD,GAAoBC,EAAW,QAHpCD,GAAY,EACZp0D,KAMKq0D,EAAWtwB,KACXqwB,IAAcD,GAAYn0D,EAAMk0D,IACjCttH,EAAIt5B,KAAK6hC,EAAK/e,EAAMzZ,UAAUu9I,EAASl0D,KACvCk0D,EAAUl0D,EAAMrvF,EAAE,GAAGwC,QAEzB6sF,GAAOrvF,EAAE,GAAGwC,QAGZ6sF,IAMR,OAHIk0D,EAAUl0D,GACVp5D,EAAIt5B,KAAK6hC,EAAK/e,EAAMzZ,UAAUu9I,EAASl0D,KAEnC12D,GAAMy1F,GAAYn4F,IAI9B0tH,GAAa,SAAUhrH,GACvB,OAAO,SAAS9Q,GAIZ,IAEQ7nB,EAFJqpB,EAAMsP,EAAM9Q,GACXwB,KAEIrpB,EAAI,2DAA2DqT,KAAKwU,MAE7D7nB,EAAI,kCAAkCqT,KAAKwU,OADnDwB,EAAMsP,EAAM9Q,GAAM7nB,EAAE,IAK5B,OAAOqpB,GAdE,CAgBd5tB,OAAOumD,OAASvmD,OAAOumD,OAAO,MAAQ,IAErC4hG,GAAgB,SAAUjrH,GAC1B,OAAO,SAASo5D,GACZ,IAAIpqF,EAASgxB,EAAMo5D,GAInB,OAHc,MAAVpqF,IACAA,EAASgxB,EAAMo5D,GAAQ88B,EAAUF,YAAY,OAAQ,CAAE58B,KAAMA,IAAQpqF,QAElEA,GANK,CAQjBlM,OAAOumD,OAASvmD,OAAOumD,OAAO,MAAQ,IAEzC,SAAS6hG,GAAaC,GACP,MAAPA,IACAA,EAAM15I,UAGV,IADA,IAAImH,EAAS,GACJhP,EAAI,EAAGA,EAAIuhJ,EAAIC,YAAYvhJ,SAAUD,EAC1CyhJ,EAAaF,EAAIC,YAAYxhJ,IAEjC,OAAOgP,EACP,SAASyyI,EAAaC,GAClB,GAAIA,EAAI,CACJ,IAAIjrH,EAAQ,KACZ,IACIA,EAAQirH,EAAGC,SACb,MAAOC,IACLnrH,GAsBZ,SAAkBorH,EAAYprH,GAC1B,IAAK,IAAIz2B,EAAI,EAAGA,EAAIy2B,EAAMx2B,SAAUD,EAAG,CACnC,IAAI8oH,EAAIryF,EAAMz2B,GACd,OAAQ8oH,EAAE3qH,MACR,KAAK,EACHsjJ,EAAa34B,EAAE+4B,YACf,MACF,KAAK,EACH,IAAI38I,EAAS4jH,EAAE5jH,MACX48I,EAASf,GAAc/4I,GAAiB9C,EAAO,gBAC/C68I,EAAS,sBAAsBv8I,KAAKwC,GAAiB9C,EAAO,gBAC5D88I,EAAS,UAAYh6I,GAAiB9C,EAAO,cAC7C1F,EAASyiJ,EAAUn5B,GACnBtpH,EAAIS,OAAS,GACbiiJ,EAAQL,EAAYC,EAAQC,EAAMC,EAAQxiJ,EAAI,MAnClD2iJ,CAAST,EAAIjrH,IAIzB,SAASwrH,EAAUjsH,GACf,IAAIx2B,EAAMwI,GAAiBguB,EAAK9wB,MAAO,OACvC,GAAI1F,EACA,OAAOuhJ,GAAcvhJ,GAAK48C,QAAO,SAASz+C,EAAG2nB,GACzC,IAAIkqE,EAAO4xD,GAAW97H,GAItB,OAHIkqE,GACA7xF,EAAEvD,KAAKo1F,GAEJ7xF,IACR,IAIH,IAAI6xF,EAAO4xD,GAAWprH,EAAKxf,SAC3B,OAAOg5E,EAAO,CAAEA,GAAS,GAsBjC,SAAS0yD,EAAQL,EAAYh1I,EAAOk1I,EAAMC,EAAQl7H,GAGxC,UAAUthB,KAAKshB,IACX,gBAAgBthB,KAAKshB,IAAQ,MAAMthB,KAAKshB,KAC1CA,EAAMvc,OAAOs3I,EAAWjxH,MAAM11B,QAAQ,UAAW,IAAM4rB,GAG/Dja,EAAM9S,SAAQ,SAASc,GACnBA,EAAOA,EAAKK,QAAQ,mBAAoB,MACpC6mJ,IACAlnJ,GAAQ,SAERmnJ,IACAnnJ,GAAQ,WAEZmU,EAAOnU,GAAQisB,MAK3B,SAAS3f,GAAese,EAAKzb,GACzB,OAAO9Q,OAAO4H,UAAUqG,eAAenE,KAAKyiB,EAAKzb,GAoBrD,SAASo4I,GAAWvnJ,EAAMwnJ,GACtB,IAAI74B,EAAIo1B,GAER,IADA/jJ,EAAO,YAAcA,EACd2uH,IAAMriH,GAAeqiH,EAAG3uH,IAC3B2uH,EAAItwH,OAAOusD,eAAe+jE,GAEzBA,IACDA,EAAIo1B,GAASzI,OAEjB3sB,EAAE3uH,IAAS2uH,EAAE3uH,IAAS,IAAa,MAAPwnJ,EAAc,EAAIA,GAGlD,SAASC,GAAaznJ,EAAM8sB,GAExBi3H,GADA/jJ,EAAO,YAAcA,GACG,MAAP8sB,EAAc,EAAIA,EAGvC,SAAS46H,GAAW5kJ,EAAGioD,EAAG48F,GACtB,IAAK,IAAIxiJ,EAAI,EAAGA,EAAIrC,EAAEsC,QAAS,CAC3B,IAAIpF,EAAO8C,EAAEqC,KACT2nB,EAAMnmB,WAAW7D,EAAEqC,IACnBuB,MAAMomB,GACNi+B,EAAE/qD,EAAM2nJ,IAER58F,EAAE/qD,EAAM8sB,KACN3nB,IAKd,SAASyiJ,GAAev9I,GACpB,IAAIw9I,EAAe16I,GAAiB9C,EAAO,iBACvCw9I,GACAH,GAAWxB,GAAc2B,EAAc,QAASJ,GAAc,GAElE,IAAIK,EAAmB36I,GAAiB9C,EAAO,qBAC3Cy9I,GACAJ,GAAWxB,GAAc4B,EAAkB,QAASP,GAAY,GAIxE,SAASQ,GAAav7I,EAAKhC,GACvB,IAAIwiH,EAAQzuH,MAAMqvH,WAAWphH,GAAK,GASlC,OARIwgH,IACAA,EAAQA,EAAMK,QACV7iH,EACAwiH,EAAQA,EAAMS,YACK,IAAZT,EAAMlqH,IACbkqH,EAAQ,OAGTA,EAGX,SAASg7B,GAA4Bj2H,EAAUnL,GAC3C,IAAIqhI,EAAU,EACV79G,GAAO,EAaX,SAAS64B,KACA74B,KAAU69G,GAAW,IACtBrhI,IACAwjB,GAAO,GAffrY,EAAS7yB,SAAQ,SAASurB,GAEtB,IADA,IAAIy9H,EAASz9H,EAAGlH,iBAAiB,OACxBpe,EAAI,EAAGA,EAAI+iJ,EAAO9iJ,SAAUD,EAAG,CACpC,IAAIk+H,EAAM6kB,EAAO/iJ,GACZk+H,EAAI9+G,WACL0jI,IACA5kB,EAAIue,OAASve,EAAIwe,QAAU5+E,OAIvCA,IAUJ,SAASklF,GAAYp2H,EAAUnL,GAC3B,IAAIwhI,EAAO,GACX,SAASv9I,EAAIohB,GACJ63H,GAAY73H,KACb63H,GAAY73H,IAAO,EACnBm8H,EAAK7oJ,KAAK0sB,IAIlB8F,EAAS7yB,SAAQ,SAASslJ,EAAK/6I,GACvB,SAASkB,KAAKlB,EAAQskB,UACtBljB,EAAIpB,EAAQ9E,KAEhBggJ,GACIx3I,GACIk7I,GAAmB5+I,GAAU,qBAEnCvK,SAAQ,SAASopJ,GACA,OAAXA,EAAGhlJ,MACHuH,EAAIy9I,EAAGr8H,QAIXxiB,EAAQspC,UACR4wG,GAAUl6I,EAAQspC,UAAU7zC,QAAQslJ,MAI5C,IAAI9rI,EAAQ0vI,EAAKhjJ,OACjB,SAAS69D,MACCvqD,GAAS,GAKXsvI,GAA4Bj2H,EAAUnL,GAGhC,IAAVlO,GACAuqD,IAEJmlF,EAAKlpJ,SAAQ,SAAS+sB,GAClB,IAAIo3G,EAAMygB,GAAY73H,GAAO,IAAIvtB,OAAOstI,MAClC,UAAUrhI,KAAKshB,KACjBo3G,EAAIse,YAAc,aAEtBte,EAAI1+H,IAAMsnB,EACNo3G,EAAI9+G,SACJ0+C,KAEAogE,EAAIue,OAAS3+E,EACbogE,EAAIwe,QAAU,WACViC,GAAY73H,GAAO,KACnBg3C,SAMhB,SAASslF,GAAa75B,GAClB,IAAIv6G,EAAS,GACb,EAAG,CACC,IAAI85G,EAAIS,EAAI,GACZv6G,EAASzE,OAAOqc,aAAa,GAAKkiG,GAAK95G,EACvCu6G,EAAIztH,KAAKkN,MAAMugH,EAAI,UACdA,EAAI,GACb,OAAOv6G,EAGX,SAASq0I,GAAa/+I,EAASY,EAAOynD,IAClCiyF,GAAW1lJ,OAAOumD,OAAOm/F,KAChBt6I,EAAQskB,QAAQ7X,eAAiB,CACtCzM,QAASA,EACTY,MAAOA,GAEX,IAAIo+I,EAAat7I,GAAiB9C,EAAO,mBACzC,GAAIo+I,GAA4B,QAAdA,EAAsB,CACpC,IAAIz7B,EAAQ7/G,GAAiB9C,EAAO,yBACpCo+I,EAAWjgJ,MAAM,QAAQtJ,SAAQ,SAASc,GACtC,IAAK+jJ,GAAS/jJ,KACV+jJ,GAAS/jJ,GAAQgtH,EACL,aAARhtH,GAAqB,CACrB,IAAI2a,EAASxN,GAAiB9C,EAAO,yBACvB,QAAVsQ,IACAopI,GAAS,oBAAsBp9I,WAAWgU,SAwClE,SAAgCtQ,GAC5B,SAAS0iB,EAAK/sB,GAAQ,OAAOmN,GAAiB9C,EAAOrK,GACrD,GAAyB,QAArB+sB,EAAK,cACe,UAApBA,EAAK,aACc,QAAnBA,EAAK,YACLA,EAAK,WAAa,EAClB,OAAO,GAvCP27H,CAAuBr+I,KACvB05I,GAAS4E,iBAAmB,CACxBl/I,QAASA,EACTqoD,MAAOA,IAKnB,SAAS82F,KACL7E,GAAW1lJ,OAAOusD,eAAem5F,IAGrC,SAAS8E,GAAc77G,GACnB,GAAyB,MAArB+2G,GAAS+E,SAAkB,CAC3B,IAAIhyG,EAAM9J,EAAKwsF,KAAKuqB,GAAStpB,SACzBspB,GAAS+E,SACT/E,GAAS+E,SAAWhwB,EAAKuB,UAAU0pB,GAAS+E,SAAUhyG,GAEtDitG,GAAS+E,SAAWhyG,GAyBhC,SAASuxG,GAAmB5+I,EAASs/I,GACjC,OAAOrqJ,OAAOwO,iBAAiBzD,EAASs/I,GAAa,MAGzD,SAAS57I,GAAiB9C,EAAO0iB,EAAMi8H,GACnC,IAAIl8H,EAAMziB,EAAM8C,iBAAiB4f,GAYjC,OAXW,MAAPD,GAAuB,KAARA,IACXlN,GAAQH,OACRqN,EAAMziB,EAAM8C,iBAAiB,WAAa4f,GACnCnN,GAAQqB,QACf6L,EAAMziB,EAAM8C,iBAAiB,QAAU4f,GAChCnN,GAAQmB,MACf+L,EAAMziB,EAAM8C,iBAAiB,MAAQ4f,GAC9Bi3H,KACPl3H,EAAMziB,EAAM8C,iBAAiB,OAAS4f,KAG1C9nB,UAAUG,OAAS,IAAa,MAAP0nB,GAAuB,KAARA,GACjCk8H,EAEAl8H,EAIf,SAASm8H,GAAuB5+I,EAAO0iB,EAAMzmB,EAAO4iJ,GAChD7+I,EAAM8+I,YAAYp8H,EAAMzmB,EAAO4iJ,GAC3BtpI,GAAQH,OACRpV,EAAM8+I,YAAY,WAAap8H,EAAMzmB,EAAO4iJ,GACrCtpI,GAAQqB,QACf5W,EAAM8+I,YAAY,QAAUp8H,EAAMzmB,EAAO4iJ,GAClCtpI,GAAQmB,MACf1W,EAAM8+I,YAAY,MAAQp8H,EAAMzmB,EAAO4iJ,GAChClF,KACP35I,EAAM8+I,YAAY,OAASp8H,EAAMzmB,EAAO4iJ,GAIxC7+I,EAHA0iB,EAAO,KAAOA,EAAK1sB,QAAQ,iBAAiB,SAASwC,EAAG88H,EAAIN,GACxD,OAAOM,EAAKN,EAAG1yH,kBAELrG,GAItB,SAAS8iJ,GAAU/+I,EAAOg/I,GAEtB,OADAA,EAAO,UAAYA,EACZ,CACHz+I,MAAOjE,WAAWwG,GAAiB9C,EAAOg/I,EAAO,WACjDh/I,MAAO8C,GAAiB9C,EAAOg/I,EAAO,UACtCr8B,MAAO+6B,GAAa56I,GAAiB9C,EAAOg/I,EAAO,WAAW,IAItE,SAASC,GAAU7/I,EAAS0sD,GACxB,IAAI5Y,EAAO9zC,EAAQY,MAAMsR,QACrBxH,EAASgiD,IAEb,OADA1sD,EAAQY,MAAMsR,QAAU4hC,EACjBppC,EAGX,SAASo1I,GAAgBl/I,EAAOg/I,GAC5B,IAAIp7B,EAAI9gH,GAAiB9C,EAAO,UAAYg/I,EAAO,WAAW7gJ,MAAM,QAAQ0P,IAAIvR,YAIhF,OAHgB,GAAZsnH,EAAE7oH,QACF6oH,EAAE1uH,KAAK0uH,EAAE,IAENu7B,GAAe,CAAExmJ,EAAGirH,EAAE,GAAIlsH,EAAGksH,EAAE,KAG1C,SAASw7B,GAAchgJ,GACnB,IAAIqtC,EAAMrtC,EAAQurH,wBAGlB,OAFAl+E,EAAMC,GAASD,EAAK,iBAAkBrtC,GACtCqtC,EAAMC,GAASD,EAAK,YAAartC,GAIrC,SAASstC,GAASD,EAAK/pB,EAAMtjB,GACzB,IAAIY,EAAOq/I,EAAIC,EAAIC,EAAIC,EAWvB,MAVmB,iBAAR98H,GACP1iB,EAAQg+I,GAAmB5+I,GAC3BigJ,EAAK/iJ,WAAWwG,GAAiB9C,EAAO0iB,EAAK1sB,QAAQ,IAAK,SAC1DspJ,EAAKhjJ,WAAWwG,GAAiB9C,EAAO0iB,EAAK1sB,QAAQ,IAAK,WAC1DupJ,EAAKjjJ,WAAWwG,GAAiB9C,EAAO0iB,EAAK1sB,QAAQ,IAAK,YAC1DwpJ,EAAKljJ,WAAWwG,GAAiB9C,EAAO0iB,EAAK1sB,QAAQ,IAAK,WAEtC,iBAAR0sB,IACZ28H,EAAKC,EAAKC,EAAKC,EAAK98H,GAEjB,CACH/K,IAAS80B,EAAI90B,IAAM0nI,EACnBhgI,MAASotB,EAAIptB,MAAQigI,EACrBhgI,OAASmtB,EAAIntB,OAASigI,EACtBngI,KAASqtB,EAAIrtB,KAAOogI,EACpBj/I,MAASksC,EAAIptB,MAAQotB,EAAIrtB,KAAOkgI,EAAKE,EACrCt/I,OAASusC,EAAIntB,OAASmtB,EAAI90B,IAAM4nI,EAAKF,GAqB7C,SAASI,GAAiBz2B,GACtB,OAAS,IAAMA,EAAWpyH,KAAK+xH,GAAM,IAmBzC,SAAS+2B,GAAelM,EAAOj7I,GAG3B,OAFAA,EAAI,IAAI+yH,EAAO/yH,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAC/Ci7I,EAAM1sG,UAAUvuC,GACTA,EAGX,SAASonJ,GAAYnM,EAAOoM,GACxBpM,EAAMnmG,KAAKuyG,GAGf,SAASC,GAAal9G,EAAMhqC,EAAGjB,EAAG+C,GAE9B,IADA,IAAIm6H,EAAS,IAAIjB,GAAM,CAAEh7H,EAAGjB,GAAK+C,GAAS25H,cAAet5H,EAAI,EACtDA,EAAI85H,EAAO75H,QACd4nC,EAAKy7F,QAAQxJ,EAAO95H,KAAM85H,EAAO95H,KAAM85H,EAAO95H,MAItD,SAASqkJ,GAAev7B,GAIpB,OAHIA,EAAEjrH,GAAK,GAAKirH,EAAElsH,GAAK,KACnBksH,EAAEjrH,EAAIirH,EAAElsH,EAAI,GAETksH,EAGX,SAASk8B,GAAyBrzG,EAAKszG,EAAKC,EAAKC,EAAKC,GAKlD,IAAIC,EAAOvpJ,KAAKuV,IAAI,EAAG4zI,EAAIpnJ,GAAIynJ,EAAOxpJ,KAAKuV,IAAI,EAAG4zI,EAAIroJ,GAClD2oJ,EAAOzpJ,KAAKuV,IAAI,EAAG6zI,EAAIrnJ,GAAI2nJ,EAAO1pJ,KAAKuV,IAAI,EAAG6zI,EAAItoJ,GAClD6oJ,EAAO3pJ,KAAKuV,IAAI,EAAG8zI,EAAItnJ,GAAI6nJ,EAAO5pJ,KAAKuV,IAAI,EAAG8zI,EAAIvoJ,GAClD+oJ,EAAO7pJ,KAAKuV,IAAI,EAAG+zI,EAAIvnJ,GAAI+nJ,EAAO9pJ,KAAKuV,IAAI,EAAG+zI,EAAIxoJ,GAElDgpD,EAAI9pD,KAAK8S,IACT+iC,EAAIlsC,OAAS4/I,EAAOE,GACpB5zG,EAAIvsC,QAAUogJ,EAAOE,GACrB/zG,EAAIlsC,OAASggJ,EAAOE,GACpBh0G,EAAIvsC,QAAUwgJ,EAAON,IAUzB,OAPI1/F,EAAI,IACJy/F,GAAQz/F,EAAG0/F,GAAQ1/F,EACnB2/F,GAAQ3/F,EAAG4/F,GAAQ5/F,EACnB6/F,GAAQ7/F,EAAG8/F,GAAQ9/F,EACnB+/F,GAAQ//F,EAAGggG,GAAQhgG,GAGhB,CACH0uE,GAAI,CAAEz2H,EAAGwnJ,EAAMzoJ,EAAG0oJ,GAClB/wB,GAAI,CAAE12H,EAAG0nJ,EAAM3oJ,EAAG4oJ,GAClBhxB,GAAI,CAAE32H,EAAG4nJ,EAAM7oJ,EAAG8oJ,GAClBjxB,GAAI,CAAE52H,EAAG8nJ,EAAM/oJ,EAAGgpJ,IAI1B,SAASC,GAAgBvhJ,EAASqtC,EAAKxzC,GACnC,IAAI+G,EAAQg+I,GAAmB5+I,GAE3B2gJ,EAAMb,GAAgBl/I,EAAO,YAC7BggJ,EAAMd,GAAgBl/I,EAAO,aAC7BkgJ,EAAMhB,GAAgBl/I,EAAO,eAC7BigJ,EAAMf,GAAgBl/I,EAAO,gBAEjC,GAAY,WAAR/G,GAA6B,WAARA,EAAmB,CACxC,IAAI2nJ,EAAK7B,GAAU/+I,EAAO,OACtBsvH,EAAKyvB,GAAU/+I,EAAO,SACtB6gJ,EAAK9B,GAAU/+I,EAAO,UACtBuvH,EAAKwvB,GAAU/+I,EAAO,QAK1B,GAJA+/I,EAAIpnJ,GAAK42H,EAAGhvH,MAAOw/I,EAAIroJ,GAAKkpJ,EAAGrgJ,MAC/By/I,EAAIrnJ,GAAK22H,EAAG/uH,MAAOy/I,EAAItoJ,GAAKkpJ,EAAGrgJ,MAC/B0/I,EAAItnJ,GAAK22H,EAAG/uH,MAAO0/I,EAAIvoJ,GAAKmpJ,EAAGtgJ,MAC/B2/I,EAAIvnJ,GAAK42H,EAAGhvH,MAAO2/I,EAAIxoJ,GAAKmpJ,EAAGtgJ,MACnB,WAARtH,EAAmB,CACnB,IAAI6nJ,EAAKxkJ,WAAWwG,GAAiB9C,EAAO,gBACxC+gJ,EAAKzkJ,WAAWwG,GAAiB9C,EAAO,kBACxCghJ,EAAK1kJ,WAAWwG,GAAiB9C,EAAO,mBACxCihJ,EAAK3kJ,WAAWwG,GAAiB9C,EAAO,iBAC5C+/I,EAAIpnJ,GAAKsoJ,EAAIlB,EAAIroJ,GAAKopJ,EACtBd,EAAIrnJ,GAAKooJ,EAAIf,EAAItoJ,GAAKopJ,EACtBb,EAAItnJ,GAAKooJ,EAAId,EAAIvoJ,GAAKspJ,EACtBd,EAAIvnJ,GAAKsoJ,EAAIf,EAAIxoJ,GAAKspJ,GAW9B,MAPmB,iBAAR/nJ,IACP8mJ,EAAIpnJ,GAAKM,EAAM8mJ,EAAIroJ,GAAKuB,EACxB+mJ,EAAIrnJ,GAAKM,EAAM+mJ,EAAItoJ,GAAKuB,EACxBgnJ,EAAItnJ,GAAKM,EAAMgnJ,EAAIvoJ,GAAKuB,EACxBinJ,EAAIvnJ,GAAKM,EAAMinJ,EAAIxoJ,GAAKuB,GAGrBioJ,GAASz0G,EAAKszG,EAAKC,EAAKC,EAAKC,GAOxC,SAASgB,GAASz0G,EAAK00G,EAAMC,EAAMC,EAAMC,GACrC,IAAIx1G,EAAMg0G,GAAyBrzG,EAAK00G,EAAMC,EAAMC,EAAMC,GACtDvB,EAAMj0G,EAAIsjF,GACV4wB,EAAMl0G,EAAIujF,GACV4wB,EAAMn0G,EAAIwjF,GACV4wB,EAAMp0G,EAAIyjF,GACV5sF,EAAO,IAAIk9F,GAAK,CAAEr5G,KAAM,KAAM4qG,OAAQ,OAqC1C,OApCAzuF,EAAKgN,OAAOlD,EAAIrtB,KAAMqtB,EAAI90B,IAAMooI,EAAIroJ,GAChCqoJ,EAAIpnJ,GACJknJ,GAAal9G,EAAM8J,EAAIrtB,KAAO2gI,EAAIpnJ,EAAG8zC,EAAI90B,IAAMooI,EAAIroJ,EAAG,CAClDq8H,YAAa,IACbC,UAAW,GACXH,QAASksB,EAAIpnJ,EACbm7H,QAASisB,EAAIroJ,IAGrBirC,EAAKw7F,OAAO1xF,EAAIptB,MAAQ2gI,EAAIrnJ,EAAG8zC,EAAI90B,KAC/BqoI,EAAIrnJ,GACJknJ,GAAal9G,EAAM8J,EAAIptB,MAAQ2gI,EAAIrnJ,EAAG8zC,EAAI90B,IAAMqoI,EAAItoJ,EAAG,CACnDq8H,YAAa,GACbC,SAAU,EACVH,QAASmsB,EAAIrnJ,EACbm7H,QAASksB,EAAItoJ,IAGrBirC,EAAKw7F,OAAO1xF,EAAIptB,MAAOotB,EAAIntB,OAAS2gI,EAAIvoJ,GACpCuoJ,EAAItnJ,GACJknJ,GAAal9G,EAAM8J,EAAIptB,MAAQ4gI,EAAItnJ,EAAG8zC,EAAIntB,OAAS2gI,EAAIvoJ,EAAG,CACtDq8H,WAAY,EACZC,SAAU,GACVH,QAASosB,EAAItnJ,EACbm7H,QAASmsB,EAAIvoJ,IAGrBirC,EAAKw7F,OAAO1xF,EAAIrtB,KAAO8gI,EAAIvnJ,EAAG8zC,EAAIntB,QAC9B4gI,EAAIvnJ,GACJknJ,GAAal9G,EAAM8J,EAAIrtB,KAAO8gI,EAAIvnJ,EAAG8zC,EAAIntB,OAAS4gI,EAAIxoJ,EAAG,CACrDq8H,WAAY,GACZC,SAAU,IACVH,QAASqsB,EAAIvnJ,EACbm7H,QAASosB,EAAIxoJ,IAGdirC,EAAKkW,QAGhB,SAAS0oG,GAAc9+H,EAAKziB,GACxB,IAAImC,EAAMkD,OAAO/I,WAAWmmB,IAC5B,OAAQziB,GACN,IAAK,uBAIH,OAHImC,EAAIpH,OAAS,IACboH,EAAM,IAAMA,GAETA,EACT,IAAK,cACH,OAAOkmH,EAAc5lG,GAAK5W,cAC5B,IAAK,cACH,OAAOw8G,EAAc5lG,GAAKngB,cAC5B,IAAK,cACL,IAAK,cACH,OAAO47I,GAAaz7H,EAAM,GAC5B,IAAK,cACL,IAAK,cACH,OAAOy7H,GAAaz7H,EAAM,GAAGngB,cAC/B,QACE,OAAOH,GAIf,SAASq/I,GAAyBpiJ,EAAS06C,GACvC,SAAS2nG,EAAe9rJ,EAAMqK,EAAO2rH,GACjC,OAAKA,GAGLA,EAAYA,EAAU31H,QAAQ,uBAAwB,MA/gB9D,SAAwBL,GACpB,IAAI0W,EAAS,GAAIi4G,EAAIo1B,GAErB,IADA/jJ,EAAO,YAAcA,EACd2uH,GACCriH,GAAeqiH,EAAG3uH,IAClB0W,EAAOnX,KAAKovH,EAAE3uH,IAElB2uH,EAAItwH,OAAOusD,eAAe+jE,GAE9B,OAAOj4G,EAAOhD,UAugBHq4I,CAAe/rJ,GAAMkY,KAAI,SAAS4U,GACrC,OAAO8+H,GAAc9+H,EAAKziB,MAC3B5B,KAAKutH,IALG41B,GAlhBnB,SAAoB5rJ,GAEhB,OAAO+jJ,GADP/jJ,EAAO,YAAcA,GAihBQgsJ,CAAWhsJ,IAAS,EAAGqK,GAOpD,IACiBzH,EADbE,EAAIojJ,GAAc/hG,EAAS,QAC3BhwC,EAAS,GAuBb,OAtBArR,EAAE5D,SAAQ,SAASurB,GACf,IAAI0rB,GACCvzC,EAAI,uBAAuBqT,KAAKwU,IACjCtW,EAAO5U,KAAKqD,EAAE,GAAGvC,QAAQ,qBAAqB,SAASwC,EAAG8rH,GACtD,OAAOj/G,OAAOqc,aAAalV,SAAS83G,EAAG,UAGrC/rH,EAAI,2BAA2BqT,KAAKwU,KAC1C0rB,EAAM+vG,GAActjJ,EAAE,IACtBuR,EAAO5U,KAAKusJ,EAAe31G,EAAI,GAAIA,EAAI,OAEjCvzC,EAAI,4BAA4BqT,KAAKwU,KAC3C0rB,EAAM+vG,GAActjJ,EAAE,IACtBuR,EAAO5U,KAAKusJ,EAAe31G,EAAI,GAAIA,EAAI,GAAIA,EAAI,OAEzCvzC,EAAI,wBAAwBqT,KAAKwU,IACvCtW,EAAO5U,KAAKkK,EAAQkpB,aAAa/vB,EAAE,KAAO,IAG1CuR,EAAO5U,KAAKkrB,MAGbtW,EAAO1L,KAAK,IAGvB,SAASwjJ,GAAW5hJ,GAChB,GAAIA,EAAMsR,QACN,OAAOtR,EAAMsR,QAMjB,IADA,IAAIxH,EAAS,GACJhP,EAAI,EAAGA,EAAIkF,EAAMjF,SAAUD,EAChCgP,EAAO5U,KAAK8K,EAAMlF,GAAK,KAAOgI,GAAiB9C,EAAOA,EAAMlF,KAEhE,OAAOgP,EAAO1L,KAAK,OAGvB,SAASyjJ,GAA0BziJ,EAASqoD,GACxC,GAAIroD,EAAQskB,SAAW81H,GAAvB,CAIA,IAAIsI,EAAO,GAcX,GAFAC,EAAO,UAAW3iJ,EAAQk+C,YAC1BykG,EAAO,SAAU,MACbD,EAAK/mJ,OAAS,EAAG,CACjB,IAAIinJ,EAAY5iJ,EAAQ6gB,UACxB7gB,EAAQ6gB,WAAa,kCACrBgiI,GAAe7iJ,EAASqoD,GACxBroD,EAAQ6gB,UAAY+hI,EACpBF,EAAKjtJ,SAAQ,SAASurB,GAAKhhB,EAAQwS,YAAYwO,WAE/C6hI,GAAe7iJ,EAASqoD,QAxBxBw6F,GAAe7iJ,EAASqoD,GAI5B,SAASs6F,EAAOG,EAAMC,GAClB,IAAIniJ,EAAQg+I,GAAmB5+I,EAAS8iJ,GAAOpoG,EAAU95C,EAAM85C,QAE/D,GADAyjG,GAAev9I,GACX85C,GAAsB,UAAXA,GAAkC,QAAXA,GAAoC,OAAf95C,EAAMO,MAAgB,CAC7E,IAAI6hJ,EAAOhjJ,EAAQ+0E,cAAc9iE,cAAcmoI,IAC/C4I,EAAKpiJ,MAAMsR,QAAUswI,GAAW5hJ,GAChCoiJ,EAAKtrH,YAAc0qH,GAAyBpiJ,EAAS06C,GACrD16C,EAAQwlE,aAAaw9E,EAAMD,GAC3BL,EAAK5sJ,KAAKktJ,KAgBtB,SAASH,GAAe7iJ,EAASqoD,GAC7B,IAAIznD,EAAQg+I,GAAmB5+I,GAE3BuY,EAAMonI,GAAU/+I,EAAO,OACvBqf,EAAQ0/H,GAAU/+I,EAAO,SACzBsf,EAASy/H,GAAU/+I,EAAO,UAC1Bof,EAAO2/H,GAAU/+I,EAAO,QAExBmhJ,EAAOjC,GAAgBl/I,EAAO,YAC9BohJ,EAAOlC,GAAgBl/I,EAAO,aAC9BshJ,EAAOpC,GAAgBl/I,EAAO,eAC9BqhJ,EAAOnC,GAAgBl/I,EAAO,gBAE9B4yB,EAAM9vB,GAAiB9C,EAAO,aAE9BqiJ,EAAkBv/I,GAAiB9C,EAAO,oBAC9CqiJ,EAAkB3E,GAAa2E,GAE/B,IAmBIC,EAAcC,EAnBdC,EAAkBlI,GAAsBx3I,GAAiB9C,EAAO,qBAChEyiJ,EAAmB5G,GAAe/4I,GAAiB9C,EAAO,sBAC1D0iJ,EAAqB7G,GAAe/4I,GAAiB9C,EAAO,wBAC5D2iJ,EAAmB9G,GAAe/4I,GAAiB9C,EAAO,sBAC1D4iJ,EAAiB/G,GAAe/4I,GAAiB9C,EAAO,oBAgBxD25I,IAEoB,aADpB2I,EAAetiJ,EAAMsiJ,gBAEjBC,EAAmBnjJ,EAAQY,MAAMsiJ,aACjCljJ,EAAQY,MAAMsiJ,aAAe,QAIjC/sI,GAAQoB,MAAQpB,GAAQxf,QAAU,KAKlC2sJ,EAAqB7G,GAAcz8I,EAAQ2D,aAAa2/I,qBAG5D,IA4BIG,EAAO/nJ,EAAG6hE,EA5BVmmF,EAAWp2G,GAASttC,EAAQurH,wBAAyB,iBAAkBvrH,IAK3E,WACI,IAAIiuC,EAAOvqC,GAAiB9C,EAAO,QAC/BzH,EAAI,uBAAuBqT,KAAKyhC,GACpC,GAAI90C,EAAG,CACH,IAAIE,EAAIF,EAAE,GAAG4F,MAAM,UACfwZ,EAAc,QAARlf,EAAE,GAAeqqJ,EAASnrI,IAAMrb,WAAW7D,EAAE,IAAMqqJ,EAASnrI,IAClE0H,EAAgB,QAAR5mB,EAAE,GAAeqqJ,EAASzjI,MAAQ/iB,WAAW7D,EAAE,IAAMqqJ,EAAS1jI,KACtEE,EAAiB,QAAR7mB,EAAE,GAAeqqJ,EAASxjI,OAAShjB,WAAW7D,EAAE,IAAMqqJ,EAASnrI,IACxEyH,EAAe,QAAR3mB,EAAE,GAAeqqJ,EAAS1jI,KAAO9iB,WAAW7D,EAAE,IAAMqqJ,EAAS1jI,KACpE0sB,EAAM,IAAIi2F,GACV6d,GAAW,IAAI/f,IACdlwF,OAAOvwB,EAAMzH,GACbwmH,OAAO9+G,EAAO1H,GACdwmH,OAAO9+G,EAAOC,GACd6+G,OAAO/+G,EAAME,GACbu5B,QACL8mG,GAAY7zG,EAAK8zG,GACjBn4F,EAAMna,OAAOxB,GACb2b,EAAQ3b,EACR0yG,GAAcoB,IAnBtB,GAwBA,IAAIx/I,EAAU0C,GAAiB9C,EAAO,WAEtC,GAAe,aAAXI,EAKA,IADAyiJ,EAAQ,GACH/nJ,EAAI,EAAG6hE,EAAQv9D,EAAQspC,SAAU5tC,EAAI6hE,EAAM5hE,SAAUD,EACtD+nJ,EAAM3tJ,KAAKynE,EAAM7hE,GAAG6vH,8BAIJ,IADpBk4B,EAAQzjJ,EAAQ2jJ,kBACNhoJ,SAKN8nJ,EAAQ,CAAEzjJ,EAAQurH,0BAS1B,IAFAk4B,EA+DA,SAAqBA,GACjB,GAAI,QAAQviJ,KAAKlB,EAAQskB,SAAU,CAC/B,IAAI5R,EAAQ4nI,GAAS5nI,MACrB,GAAIA,GAA6D,YAApDhP,GAAiBgP,EAAM9R,MAAO,mBAAkC,CACzE,IAAIgjJ,EAAkBjE,GAAUjtI,EAAM9R,MAAO,QAAQO,MACjD0iJ,EAAiBlE,GAAUjtI,EAAM9R,MAAO,OAAOO,MAEnD,GAAwB,IAApByiJ,GAA4C,IAAnBC,EACzB,OAAOJ,EAEX,IAAIK,EAAWpxI,EAAM1S,QAAQurH,wBAEzBw4B,EADYrxI,EAAM1S,QAAQ29D,KAAK,GAAGJ,MAAM,GACfguD,wBAC7B,GAAIw4B,EAAaxrI,KAAOurI,EAASvrI,KAAOwrI,EAAa/jI,MAAQ8jI,EAAS9jI,KAClE,OAAOk6H,GAAUuJ,GAAOh1I,KAAI,SAAS4+B,GACjC,MAAO,CACHrtB,KAASqtB,EAAIrtB,KAAO4jI,EACpBrrI,IAAS80B,EAAI90B,IAAMsrI,EACnB5jI,MAASotB,EAAIptB,MAAQ2jI,EACrB1jI,OAASmtB,EAAIntB,OAAS2jI,EACtB/iJ,OAASusC,EAAIvsC,OACbK,MAASksC,EAAIlsC,WAMjC,OAAOsiJ,EA1FHO,CAAYP,GAEf/nJ,EAAI,EAAGA,EAAI+nJ,EAAM9nJ,SAAUD,EAC5BuoJ,EAAWR,EAAM/nJ,GAAU,IAANA,EAASA,GAAK+nJ,EAAM9nJ,OAAS,GAMtD,GAAuB,KAAnBqE,EAAQskB,SAAkBtkB,EAAQssB,OAAS,OAAOprB,KAAKlB,EAAQkpB,aAAa,YACvEoxH,GAAS4J,cAAgBvuJ,GAAQqK,EAASs6I,GAAS4J,cAAc,CAClE,IAAI1/B,EAAIjhH,SAASo3B,cACjB6pF,EAAE2/B,mBAAmBnkJ,GACrBk6I,GAAU11B,EAAEm/B,kBAAkBluJ,SAAQ,SAAS43C,GAC3C,IAAIrkC,EAAI,IAAI25H,GACZ35H,EAAEo7I,SAAW,CACT5hI,IAASxiB,EAAQssB,KACjB/T,IAAS80B,EAAI90B,IACb0H,MAASotB,EAAIptB,MACbC,OAASmtB,EAAIntB,OACbF,KAASqtB,EAAIrtB,MAEjBqoC,EAAMna,OAAOllC,MAuCzB,OAlCIy6I,EAAM9nJ,OAAS,GAAgB,aAAXqF,IAA2BhB,EAAQkpB,aAAa,oBAmVxE,WACI,IAAIm7H,EAAgB3gJ,GAAiB9C,EAAO,mBAC5C,GAAqB,QAAjByjJ,EACA,OAEJ,IAAIC,EAAoB5gJ,GAAiB9C,EAAO,uBAEhD,SAAS2jJ,EAAYjjG,GACjBu+F,GAAU7/I,GAAS,WACfA,EAAQY,MAAMK,SAAW,WACzB,IAAIujJ,EAASxkJ,EAAQ+0E,cAAc9iE,cAAcmoI,IACjDoK,EAAO5jJ,MAAMK,SAAW,WACxBujJ,EAAO5jJ,MAAM6jJ,UAAY,aACA,WAArBH,GACAE,EAAO5jJ,MAAMO,MAAQ,MACrBqjJ,EAAO5jJ,MAAMof,KAAO,SACpBwkI,EAAO5jJ,MAAM63I,UAAY,SAEzB+L,EAAO5jJ,MAAMof,KAAO,MAExBshC,EAAEkjG,GACFxkJ,EAAQwlE,aAAag/E,EAAQxkJ,EAAQk+C,YACrCwmG,GAAcF,EAAQn8F,GACtBroD,EAAQwS,YAAYgyI,MAI5B,SAASG,EAAarjG,GAClB,IAAIjoD,EAAI2G,EAAQ+Z,WAAWuvB,SACvBrwC,EAAI+G,EAAQkpB,aAAa,qBAC7B,GAAS,MAALjwB,EACA,OAAOqoD,EAAI,EAAFroD,EAAKI,EAAEsC,QAEpB,IAAK,IAAID,EAAI,EAAGA,EAAIrC,EAAEsC,SAAUD,EAC5B,GAAIrC,EAAEqC,KAAOsE,EACT,OAAOshD,EAAE5lD,EAAGrC,EAAEsC,QAK1B,OAAQ0oJ,GACN,IAAK,SACL,IAAK,OACL,IAAK,SACHE,GAAY,SAASC,GAEjBA,EAAO5jJ,MAAMgkJ,SAAW,MACxBJ,EAAO5jJ,MAAMikJ,WAAa,OAC1BL,EAAO5jJ,MAAMkkJ,aAAe,QAC5BN,EAAO5jJ,MAAMmkJ,WAAa,eAC1BP,EAAOryI,UAAY,CACf6yI,KAAW,IACXC,OAAW,IACXC,OAAW,KACbb,MAEN,MAEF,IAAK,UACL,IAAK,uBACHE,GAAY,SAASC,GACjBG,GAAa,SAAS5mJ,KAChBA,EACmB,wBAAjBsmJ,GAA2CtmJ,EAAM,KACjDA,EAAM,IAAMA,GAEhBymJ,EAAOryI,UAAYpU,EAAM,UAGjC,MAEF,IAAK,cACL,IAAK,cACHwmJ,GAAY,SAASC,GACjBG,GAAa,SAAS5mJ,GAClBA,EAAMkrH,EAAclrH,EAAM,GACL,eAAjBsmJ,IACAtmJ,EAAMA,EAAImF,eAEdshJ,EAAOryI,UAAYpU,EAAM,UAGjC,MAEF,IAAK,cACL,IAAK,cACL,IAAK,cACL,IAAK,cACHwmJ,GAAY,SAASC,GACjBG,GAAa,SAAS5mJ,GAClBA,EAAM+gJ,GAAa/gJ,GACf,UAAUmD,KAAKmjJ,KACftmJ,EAAMA,EAAImF,eAEdshJ,EAAOryI,UAAYpU,EAAM,WAhbrConJ,CAAW1B,EAAM,IAKrB,WACI,SAAS2B,IACL,IAAI5E,EAAWe,GAAgBvhJ,EAAS0jJ,EAAU,WAC9Ch3G,EAAM,IAAIi2F,GACd4d,GAAY7zG,EAAK8zG,GACjBn4F,EAAMna,OAAOxB,GACb2b,EAAQ3b,EACR0yG,GAAcoB,IAyxB1B,SAAqBxgJ,GACjB,MAAO,+BAA+BkB,KAAKlB,EAAQskB,SAxxB3C+gI,CAAYrlJ,IAEL,wBAAwBkB,KAAKwC,GAAiB9C,EAAO,cAErD,wBAAwBM,KAAKwC,GAAiB9C,EAAO,gBAErD,wBAAwBM,KAAKwC,GAAiB9C,EAAO,iBAH5DwkJ,IAFAA,IAVR,GA6tBJ,SAA2BplJ,EAASqoD,GAChC,IAAIgqF,EAEJ,GAAIryI,EAAQqpI,mBACRgJ,EAASryI,EAAQqpI,0BACd,GAAIp0I,OAAOH,OAASG,OAAOH,MAAM+G,QAAUmE,EAAQkpB,aAAaj0B,OAAOH,MAAMmiB,KAAK,SAAU,CAC/F,IAAIgQ,EAAShyB,OAAOH,MAAMy1B,eAAet1B,OAAOH,MAAM+G,OAAOmE,IACzDinB,IAAWA,EAAOq+H,iBAAmBr+H,EAAOqiH,gBAExC+I,EADAprH,EAAOq+H,gBACEr+H,EAAOq+H,kBAEPr+H,EAAOqiH,gBAK5B,IAAK+I,EACD,OAAO,EAGX,IAAIkT,EAAU,IAAI5iB,GAClB4iB,EAAQj8G,SAASxzC,KAAKu8I,GAEtB,IAAItiB,EAAO/vH,EAAQurH,wBAKnB,OAJAg6B,EAAQ79G,UAAUypF,KAAchtF,UAAU4rF,EAAK/vG,KAAM+vG,EAAKx3G,MAE1D8vC,EAAMna,OAAOq3G,IAEN,EAruBFC,CAAkBxlJ,EAASqoD,IAC5Bo9F,GAAezlJ,EAASqoD,GAGxBkyF,IAA6B,YAAhB2I,IACbljJ,EAAQY,MAAMsiJ,aAAeC,GAG1B96F,EA8CP,SAASq9F,EAASniC,EAAO/+F,EAAKmhI,EAAMC,EAAOC,EAAQC,EAAIC,EAAIC,GACvD,KAAIL,GAAQ,GAAZ,CAIA,IAAIpiH,EAAMnsB,EAAO,IAAIurH,GACrB2d,GAAelpI,EAAM4uI,GACrB39F,EAAMna,OAAO92B,GAEb2oI,GAAe+F,GACf/F,GAAegG,GAGfxiH,EAAO,IAAIk9F,GAAK,CACZr5G,KAAM,CAAEm8F,MAAOA,GACfyO,OAAQ,OAEZ56G,EAAK82B,OAAO3K,GACZA,EAAKgN,OAAOu1G,EAAGvsJ,EAAI/B,KAAKuV,IAAI+4I,EAAGvsJ,EAAGqsJ,GAAS,EAAG,GACzC7mB,OAAOv6G,GAAOuhI,EAAGxsJ,EAAI/B,KAAKuV,IAAIg5I,EAAGxsJ,EAAGssJ,GAAU,GAAI,GAClD9mB,OAAOv6G,EAAMhtB,KAAKuV,IAAIg5I,EAAGxsJ,EAAGssJ,GAASF,GACrC5mB,OAAOvnI,KAAKuV,IAAI+4I,EAAGvsJ,EAAGqsJ,GAAQD,GAC9BlsG,QAEDqsG,EAAGvsJ,GACH0sJ,EAAgBL,EAAOE,EAAI,EAAG,EAAG,EAAG,EAAG,EAAGA,EAAGvsJ,EAAG,IAGhDwsJ,EAAGxsJ,GACH0sJ,EAAgBJ,EAAQE,EAAI,CAAE,EAAG,EAAG,EAAG,EAAGvhI,EAAMuhI,EAAGxsJ,EAAG,IAK1D,SAAS0sJ,EAAgBJ,EAAQrhC,EAAGwhC,GAChC,IAAIv5B,EAAQj1H,KAAK+xH,GAAG,EAAIs8B,GAAUA,EAASF,GAIvCO,EAAK,CACL3sJ,EAAGirH,EAAEjrH,EAAIssJ,EACTvtJ,EAAGksH,EAAElsH,EAAIqtJ,GAGTpiH,EAAO,IAAIk9F,GAAK,CAChBr5G,KAAM,CAAEm8F,MAAOA,GACfyO,OAAQ,OACTzhF,OAAO,EAAG,GAEb+vG,GAAe/8G,EAAMyiH,GAErBvF,GAAal9G,EAAM,EAAGihF,EAAElsH,EAAG,CACvBq8H,YAAa,GACbC,UAAWyrB,GAAiB5zB,GAC5BgI,QAASjQ,EAAEjrH,EACXm7H,QAASlQ,EAAElsH,IAGX4tJ,EAAG3sJ,EAAI,GAAK2sJ,EAAG5tJ,EAAI,GACnBirC,EAAKw7F,OAAOmnB,EAAG3sJ,EAAI/B,KAAKk1H,IAAID,GAAQjI,EAAElsH,EAAI4tJ,EAAG5tJ,EAAId,KAAKm1H,IAAIF,IAC1Dg0B,GAAal9G,EAAM,EAAGihF,EAAElsH,EAAG,CACvBq8H,YAAa0rB,GAAiB5zB,GAC9BmI,UAAW,GACXH,QAASyxB,EAAG3sJ,EACZm7H,QAASwxB,EAAG5tJ,EACZu8H,eAAe,KAGdqxB,EAAG3sJ,EAAI,EACZgqC,EAAKw7F,OAAOmnB,EAAG3sJ,EAAGosJ,GACb5mB,OAAO,EAAG4mB,GAGfpiH,EAAKw7F,OAAOmnB,EAAG3sJ,EAAGosJ,GACb5mB,OAAOmnB,EAAG3sJ,EAAG,GAGtB6d,EAAK82B,OAAO3K,EAAKkW,UAkCzB,SAAS0sG,EAAkB99F,EAAOhb,EAAK+4G,EAAY/C,EAAkBC,EAAoBC,EAAkBC,GAwY/G,IAA0BpM,EAvYlB,GAAKgP,GAA6B,QAAdA,EAIpB,GAAuB,OAAnBA,EAAWvsJ,KAAe,CAC1B,IAAI+/H,EAAMygB,GAAY+L,EAAW5jI,KAC7Bo3G,GAAOA,EAAIz4H,MAAQ,GAAKy4H,EAAI94H,OAAS,GACrCulJ,EAAoBh+F,EAAOhb,EAAKusF,EAAIz4H,MAAOy4H,EAAI94H,QAAQ,SAASunD,EAAOm3B,GACnEn3B,EAAMna,OAAO,IAAIo0F,GAAQ8jB,EAAW5jI,IAAKg9D,WAG9C,IAAuB,UAAnB4mE,EAAWvsJ,KAGlB,OAFAwsJ,EAAoBh+F,EAAOhb,EAAKA,EAAIlsC,MAAOksC,EAAIvsC,QA2XjCs2I,EA3X0DgP,EA4XzE,SAAS/9F,EAAOm3B,GACnB,IAAIr+E,EAAQq+E,EAAKr+E,QAASL,EAAS0+E,EAAK1+E,SAExC,OAAQs2I,EAASv9I,MACf,IAAK,SAGH,IAAI4yH,EAA0B,MAAlB2qB,EAAS3qB,MAAgB2qB,EAAS3qB,MAAQj1H,KAAK+xH,GAC3D,OAAQ6tB,EAAS7kH,IACf,IAAK,MACHk6F,EAAQ,EACR,MACF,IAAK,OACHA,GAASj1H,KAAK+xH,GAAK,EACnB,MACF,IAAK,SACHkD,EAAQj1H,KAAK+xH,GACb,MACF,IAAK,QACHkD,EAAQj1H,KAAK+xH,GAAK,EAClB,MACF,IAAK,WAAY,IAAK,WACpBkD,GAASj1H,KAAKowC,MAAM9mC,EAAQK,GAC5B,MACF,IAAK,YAAa,IAAK,YACrBsrH,EAAQj1H,KAAKowC,MAAM9mC,EAAQK,GAC3B,MACF,IAAK,cAAe,IAAK,cACvBsrH,EAAQj1H,KAAK+xH,GAAK/xH,KAAKowC,MAAM9mC,EAAQK,GACrC,MACF,IAAK,eAAgB,IAAK,eACxBsrH,EAAQj1H,KAAK+xH,GAAK/xH,KAAKowC,MAAM9mC,EAAQK,GAIrCi2I,EAASntI,UACTwiH,GAASj1H,KAAK+xH,KAIlBkD,GAAS,EAAIj1H,KAAK+xH,IACN,IACRkD,GAAS,EAAIj1H,KAAK+xH,IAUtB,IAAI+8B,EAAQ9uJ,KAAK6T,IAAIlK,EAAQ3J,KAAKm1H,IAAIF,IAAUj1H,KAAK6T,IAAIvK,EAAStJ,KAAKk1H,IAAID,IAkCvE85B,EAAc/uJ,KAAKgvJ,KAAKrlJ,EAAQ3J,KAAKmrH,IAAI8J,GAAS3rH,GAClD6rH,EAAMn1H,KAAKm1H,IAAI45B,GAAc75B,EAAMl1H,KAAKk1H,IAAI65B,GAC5C/hI,EAAMhtB,KAAK6T,IAAIshH,GAAOn1H,KAAK6T,IAAIqhH,GAC/BnzH,EAAIirB,EAAI,EAAImoG,EACZr0H,EAAIksB,EAAI,EAAIkoG,EAIZD,EAAQj1H,KAAK+xH,GAAG,GAAKkD,GAAS,EAAEj1H,KAAK+xH,GAAG,IACxChwH,GAAKA,EACLjB,GAAKA,GAIT,IAAImuJ,EAAW,GAAIxmI,EAAQ,EACvBgnH,EAAQmQ,EAASnQ,MAAMx4H,KAAI,SAASrV,EAAGsC,GACvC,IAAIwV,EAAS9X,EAAE4O,QACXkJ,EACAA,EAAShU,WAAWgU,GAAU,IACvB9X,EAAEuC,OACTuV,EAAShU,WAAW9D,EAAEuC,QAAU2qJ,EACnB,IAAN5qJ,EACPwV,EAAS,EACFxV,GAAK07I,EAASnQ,MAAMtrI,OAAS,IACpCuV,EAAS,GAEb,IAAI6K,EAAO,CACPwnG,MAAOnqH,EAAEmqH,MAAMS,YACf9yG,OAAQA,GAaZ,OAXc,MAAVA,GACA+O,EAAQ/O,EAERu1I,EAAShxJ,SAAQ,SAAS2D,EAAGsC,GACdtC,EAAE2iB,KACR7K,OAAS9X,EAAE4mB,MAAQC,EAAQ7mB,EAAE4mB,OAAStkB,EAAI,IAAM+qJ,EAAS9qJ,OAAS,MAE3E8qJ,EAAW,IAEXA,EAAS3wJ,KAAK,CAAEkqB,KAAMC,EAAOlE,KAAMA,IAEhCA,KAGPtS,EAAQ,CAAE,GAAMlQ,EAAG,GAAMjB,GACzBwH,EAAM,CAAE,GAAMvG,EAAG,GAAMjB,GAG3B+vD,EAAMna,OACFuyF,GAAKc,SAAS/hD,GACTwyC,OAAO,MACP5qG,KAAK,IAAImgH,GAAe,CACrB99H,MAAYA,EACZ3J,IAAYA,EACZmnI,MAAYA,EACZG,WAAY,MAGxB,MACF,IAAK,SAECnyI,OAAO6P,SAAW7P,OAAO6P,QAAQ8f,KACjC3vB,OAAO6P,QAAQ8f,IAAI,+DA3gB3B,SAASyhI,EAAoBh+F,EAAOhb,EAAKq5G,EAAWC,EAAYC,GAC5D,IAA2CtlG,EAAvCulG,EAAeH,EAAYC,EAG3BG,EAASz5G,EAQb,GAPwB,eAApBk2G,GACAuD,EAASx5G,GAASw5G,EAAQ,iBAAkB9mJ,GAC5C8mJ,EAASx5G,GAASw5G,EAAQ,YAAa9mJ,IACZ,eAApBujJ,IACPuD,EAASx5G,GAASw5G,EAAQ,iBAAkB9mJ,KAG3C,yBAAyBkB,KAAKsiJ,GAC/B,GAAsB,WAAlBA,EACAliG,EAAI9pD,KAAK8S,IAAIw8I,EAAO3lJ,MAAQulJ,EACfI,EAAOhmJ,OAAS6lJ,GAC7BD,GAAaplG,EACbqlG,GAAcrlG,OAEb,GAAsB,SAAlBkiG,EACLliG,EAAI9pD,KAAKuV,IAAI+5I,EAAO3lJ,MAAQulJ,EACfI,EAAOhmJ,OAAS6lJ,GAC7BD,GAAaplG,EACbqlG,GAAcrlG,MAEb,CACD,IAAI19C,EAAO4/I,EAAezkJ,MAAM,QAG5B2nJ,EADA,KAAKxlJ,KAAK0C,EAAK,IACHkjJ,EAAO3lJ,MAAQjE,WAAW0G,EAAK,IAAM,IAErC1G,WAAW0G,EAAK,IAI5B+iJ,EADe,GAAf/iJ,EAAKjI,QAA0B,QAAXiI,EAAK,GACZ8iJ,EAAYG,EAClB,KAAK3lJ,KAAK0C,EAAK,IACTkjJ,EAAOhmJ,OAAS5D,WAAW0G,EAAK,IAAM,IAEtC1G,WAAW0G,EAAK,IAKzC,IAAI4kF,EAAMviF,OAAOq9I,GAUjB,OAAQ96D,GACN,IAAK,SAAWA,EAAM,WAAY,MAClC,IAAK,MAAWA,EAAM,QAAS,MAC/B,IAAK,OAAWA,EAAM,QAAS,MAC/B,IAAK,QAAWA,EAAM,WAAY,MAClC,IAAK,SAAWA,EAAM,UAIN,IADlBA,EAAMA,EAAIzpF,MAAM,QACRpD,SACJ6sF,EAAI,GAAK,OAGT,KAAKtnF,KAAKsnF,EAAI,IACdA,EAAI,GAAKtrF,WAAWsrF,EAAI,IAAM,KAAOs+D,EAAO3lJ,MAAQulJ,GAEpDl+D,EAAI,GAAKtrF,WAAWsrF,EAAI,IAExB,KAAKtnF,KAAKsnF,EAAI,IACdA,EAAI,GAAKtrF,WAAWsrF,EAAI,IAAM,KAAOs+D,EAAOhmJ,OAAS6lJ,GAErDn+D,EAAI,GAAKtrF,WAAWsrF,EAAI,IAG5B,IAAIhJ,EAAO,IAAI6vC,EAAK,CAAEy3B,EAAO9mI,KAAOwoE,EAAI,GAAIs+D,EAAOvuI,IAAMiwE,EAAI,IAAM,CAAEk+D,EAAWC,IAMhF,SAASI,IACL,KAAOvnE,EAAKzyC,OAAOxzC,EAAI8zC,EAAIrtB,MACvBw/D,EAAKzyC,OAAOxzC,GAAKmtJ,EAIzB,SAASM,IACL,KAAOxnE,EAAKzyC,OAAOz0C,EAAI+0C,EAAI90B,KACvBinE,EAAKzyC,OAAOz0C,GAAKquJ,EAIzB,SAASM,IACL,KAAOznE,EAAKzyC,OAAOxzC,EAAI8zC,EAAIptB,OACvB2mI,EAASv+F,EAAOm3B,EAAKlkF,SACrBkkF,EAAKzyC,OAAOxzC,GAAKmtJ,EAIzB,GAAwB,aAApBrD,EACAuD,EAASv+F,EAAOm3B,QAEf,GAAwB,YAApB6jE,EACL0D,IACAE,SAEC,GAAwB,YAApB5D,EAEL,IADA2D,IACOxnE,EAAKzyC,OAAOz0C,EAAI+0C,EAAIntB,QACvB0mI,EAASv+F,EAAOm3B,EAAKlkF,SACrBkkF,EAAKzyC,OAAOz0C,GAAKquJ,OAGpB,GAAwB,UAApBtD,EAA8B,CACnC0D,IACAC,IAEA,IADA,IAAIj6G,EAASyyC,EAAKzyC,OAAOzxC,QAClBkkF,EAAKzyC,OAAOz0C,EAAI+0C,EAAIntB,QACvBs/D,EAAKzyC,OAAOxzC,EAAIwzC,EAAOxzC,EACvB0tJ,IACAznE,EAAKzyC,OAAOz0C,GAAKquJ,IA4GjC,SAAS1C,EAAW52G,EAAK65G,EAASC,GAC9B,GAAkB,IAAd95G,EAAIlsC,OAA8B,IAAfksC,EAAIvsC,OAA3B,EAzRJ,SAAwBusC,GACpB,IAAI+4G,EAAa,IAAIzjB,GAIrB,GAHA4d,GAAY6F,EAAYtE,GAASz0G,EAAK00G,EAAMC,EAAMC,EAAMC,IACxD75F,EAAMna,OAAOk4G,GAETnD,EAAiB,CACjB,IAAI1/G,EAAO,IAAIk9F,GAAK,CAChBr5G,KAAM,CAAEm8F,MAAO0/B,EAAgBj/B,aAC/BgO,OAAQ,OAEZzuF,EAAKgN,OAAOlD,EAAIrtB,KAAMqtB,EAAI90B,KACrBwmH,OAAO1xF,EAAIptB,MAAOotB,EAAI90B,KACtBwmH,OAAO1xF,EAAIptB,MAAOotB,EAAIntB,QACtB6+G,OAAO1xF,EAAIrtB,KAAMqtB,EAAIntB,QACrBu5B,QACL2sG,EAAWl4G,OAAO3K,GAGtB,IAAK,IAAI7nC,EAAI0nJ,EAAgBznJ,SAAUD,GAAK,GACxCyqJ,EACIC,EAAY/4G,EACZ+1G,EAAgB1nJ,GAChB2nJ,EAAiB3nJ,EAAI2nJ,EAAiB1nJ,QACtC2nJ,EAAmB5nJ,EAAI4nJ,EAAmB3nJ,QAC1C4nJ,EAAiB7nJ,EAAI6nJ,EAAiB5nJ,QACtC6nJ,EAAe9nJ,EAAI8nJ,EAAe7nJ,SAoQ1CyrJ,CAAe/5G,GAEf,IAAIg6G,EAAkBrnI,EAAK7e,MAAQ,IAAO+lJ,GAAkB,OAAP1zH,GAAkB2zH,GAAiB,OAAP3zH,GAC7E8zH,EAAmBrnI,EAAM9e,MAAQ,IAAOgmJ,GAAiB,OAAP3zH,GAAkB0zH,GAAkB,OAAP1zH,GAenF,GAAkB,IAAdjb,EAAIpX,OAA8B,IAAf6e,EAAK7e,OAA+B,IAAhB8e,EAAM9e,OAAgC,IAAjB+e,EAAO/e,MAAvE,CAMA,GAAIoX,EAAIgrG,OAAStjG,EAAMsjG,OAAShrG,EAAIgrG,OAASrjG,EAAOqjG,OAAShrG,EAAIgrG,OAASvjG,EAAKujG,OAGvEhrG,EAAIpX,OAAS8e,EAAM9e,OAASoX,EAAIpX,OAAS+e,EAAO/e,OAASoX,EAAIpX,OAAS6e,EAAK7e,OAEvEkmJ,GAAkBC,EAAiB,CAEnCj6G,EAAMC,GAASD,EAAK90B,EAAIpX,MAAM,GAG9B,IAAIoiC,EAAOg+G,GAAgBvhJ,EAASqtC,EAAK90B,EAAIpX,MAAM,GAMnD,OALAoiC,EAAKloC,QAAQ22H,OAAS,CAClBzO,MAAOhrG,EAAIgrG,MACXpiH,MAAOoX,EAAIpX,YAEfknD,EAAMna,OAAO3K,GAQzB,GAAe,IAAXw+G,EAAKxoJ,GAAsB,IAAXyoJ,EAAKzoJ,GAAsB,IAAX0oJ,EAAK1oJ,GAAsB,IAAX2oJ,EAAK3oJ,GAGjDgf,EAAIpX,MAAQ,GAAK6e,EAAK7e,MAAQ,GAAK8e,EAAM9e,MAAQ,GAAK+e,EAAO/e,MAAQ,EA6CrE,OA3CIoX,EAAIpX,MAAQ,GACZknD,EAAMna,OACF,IAAIuyF,GAAK,CACLzO,OAAQ,CAAE7wH,MAAOoX,EAAIpX,MAAOoiH,MAAOhrG,EAAIgrG,SAEtChzE,OAAOlD,EAAIrtB,KAAMqtB,EAAI90B,IAAMA,EAAIpX,MAAM,GACrC49H,OAAO1xF,EAAIptB,MAAOotB,EAAI90B,IAAMA,EAAIpX,MAAM,IAK/C+e,EAAO/e,MAAQ,GACfknD,EAAMna,OACF,IAAIuyF,GAAK,CACLzO,OAAQ,CAAE7wH,MAAO+e,EAAO/e,MAAOoiH,MAAOrjG,EAAOqjG,SAE5ChzE,OAAOlD,EAAIrtB,KAAMqtB,EAAIntB,OAASA,EAAO/e,MAAM,GAC3C49H,OAAO1xF,EAAIptB,MAAOotB,EAAIntB,OAASA,EAAO/e,MAAM,IAKrDkmJ,GACAh/F,EAAMna,OACF,IAAIuyF,GAAK,CACLzO,OAAQ,CAAE7wH,MAAO6e,EAAK7e,MAAOoiH,MAAOvjG,EAAKujG,SAExChzE,OAAOlD,EAAIrtB,KAAOA,EAAK7e,MAAM,EAAGksC,EAAI90B,KACpCwmH,OAAO1xF,EAAIrtB,KAAOA,EAAK7e,MAAM,EAAGksC,EAAIntB,cAK7ConI,GACAj/F,EAAMna,OACF,IAAIuyF,GAAK,CACLzO,OAAQ,CAAE7wH,MAAO8e,EAAM9e,MAAOoiH,MAAOtjG,EAAMsjG,SAE1ChzE,OAAOlD,EAAIptB,MAAQA,EAAM9e,MAAM,EAAGksC,EAAI90B,KACtCwmH,OAAO1xF,EAAIptB,MAAQA,EAAM9e,MAAM,EAAGksC,EAAIntB,UAS3D,IAAIwsB,EAAMg0G,GAAyBrzG,EAAK00G,EAAMC,EAAMC,EAAMC,GACtDvB,EAAMj0G,EAAIsjF,GACV4wB,EAAMl0G,EAAIujF,GACV4wB,EAAMn0G,EAAIwjF,GACV4wB,EAAMp0G,EAAIyjF,GAGdu1B,EAASntI,EAAIgrG,MACJl2E,EAAIlsC,MAAOoX,EAAIpX,MAAO6e,EAAK7e,MAAO8e,EAAM9e,MACxCw/I,EAAKC,EACL,CAAE,EAAG,EAAG,EAAG,EAAGvzG,EAAIrtB,KAAMqtB,EAAI90B,MAGrCmtI,EAASxlI,EAAOqjG,MACPl2E,EAAIlsC,MAAO+e,EAAO/e,MAAO8e,EAAM9e,MAAO6e,EAAK7e,MAC3C0/I,EAAKC,EACL,EAAG,EAAG,EAAG,GAAI,EAAGzzG,EAAIptB,MAAOotB,EAAIntB,SAQxCwlI,EAAS1lI,EAAKujG,MACLl2E,EAAIvsC,OAAQkf,EAAK7e,MAAO+e,EAAO/e,MAAOoX,EAAIpX,MAC1ComJ,EAAIzG,GAAMyG,EAAI5G,GACd,CAAE,GAAI,EAAG,EAAG,EAAGtzG,EAAIrtB,KAAMqtB,EAAIntB,SAGtCwlI,EAASzlI,EAAMsjG,MACNl2E,EAAIvsC,OAAQmf,EAAM9e,MAAOoX,EAAIpX,MAAO+e,EAAO/e,MAC3ComJ,EAAI3G,GAAM2G,EAAI1G,GACd,CAAE,EAAG,GAAI,EAAG,EAAGxzG,EAAIptB,MAAOotB,EAAI90B,OAdvC,SAASgvI,EAAIriC,GACT,MAAO,CAAE3rH,EAAG2rH,EAAE5sH,EAAGA,EAAG4sH,EAAE3rH,KA4MlC,SAASiuJ,GAAYxnJ,EAASwiB,EAAK6lC,GAC/B,IAAIhb,EAAM2yG,GAAchgJ,GACpBw/E,EAAO,IAAI6vC,EAAK,CAAEhiF,EAAIrtB,KAAMqtB,EAAI90B,KAAO,CAAE80B,EAAIlsC,MAAOksC,EAAIvsC,SACxDk8B,EAAQ,IAAIslG,GAAQ9/G,EAAKg9D,GAC7B+gE,GAAYvjH,EAAOukH,GAAgBvhJ,EAASqtC,EAAK,YACjDgb,EAAMna,OAAOlR,GAGjB,SAASyqH,GAAWpuJ,EAAGigB,GACnB,IAAIouI,EAAK9I,GAAmBvlJ,GACxBsuJ,EAAK/I,GAAmBtlI,GACxBsuI,EAAK1qJ,WAAWwG,GAAiBgkJ,EAAI,YACrCG,EAAK3qJ,WAAWwG,GAAiBikJ,EAAI,YACrCG,EAAKpkJ,GAAiBgkJ,EAAI,YAC1B9F,EAAKl+I,GAAiBikJ,EAAI,YAC9B,OAAI1qJ,MAAM2qJ,IAAO3qJ,MAAM4qJ,GACd,kBAAkB3mJ,KAAK4mJ,IAAS,kBAAkB5mJ,KAAK0gJ,GACjD,EAED,UAANkG,GACQ,EAEF,UAANlG,EACO,EAEJ,EAEP3kJ,MAAM2qJ,GACQ,IAAPC,EAAW,EAAIA,EAAK,GAAK,EAAI,EAEpC5qJ,MAAM4qJ,GACQ,IAAPD,EAAW,EAAIA,EAAK,EAAI,GAAK,EAEjC1qJ,WAAW0qJ,GAAM1qJ,WAAW2qJ,GAoEvC,SAASE,GAAgB/nJ,EAASqoD,GAC9B,IAAI2/F,EAAMhoJ,EAAQskB,QAAQ7X,cAC1B,GAAW,SAAPu7I,IAAmC,YAAhBhoJ,EAAQnG,MAAsC,SAAhBmG,EAAQnG,MACzD,OAzDR,SAAwBmG,EAASqoD,GAC7B,IACIk7D,EAAQ7/G,GADAk7I,GAAmB5+I,GACK,SAChCqtC,EAAMrtC,EAAQurH,wBACE,YAAhBvrH,EAAQnG,MACRwuD,EAAMna,OACFuyF,GAAKc,SACD,IAAIlS,EAAK,CAAEhiF,EAAIrtB,KAAK,EAAGqtB,EAAI90B,IAAI,GAClB,CAAE80B,EAAIlsC,MAAM,EAAGksC,EAAIvsC,OAAO,KACzCkxH,OAAOzO,EAAO,IAEhBvjH,EAAQ0lE,SAURrd,EAAMna,QACF,IAAIuyF,IACCzO,OAAOzO,EAAO,KACdhzE,OAAOlD,EAAIrtB,KAAO,IAAOqtB,EAAIlsC,MACtBksC,EAAI90B,IAAM,IAAO80B,EAAIvsC,QAC5Bi+H,OAAO1xF,EAAIrtB,KAAO,IAAOqtB,EAAIlsC,MACtBksC,EAAI90B,IAAM,IAAO80B,EAAIvsC,QAC5Bi+H,OAAO1xF,EAAIrtB,KAAO,IAAOqtB,EAAIlsC,MACtBksC,EAAI90B,IAAM,IAAO80B,EAAIlsC,UAIzCknD,EAAMna,OACF,IAAIqkF,GACA,IAAID,GAAS,EACRjlF,EAAIrtB,KAAOqtB,EAAIptB,OAAS,GACxBotB,EAAI90B,IAAM80B,EAAIntB,QAAU,GAC1B1oB,KAAK8S,IAAI+iC,EAAIlsC,MAAM,EAAGksC,EAAIvsC,OAAO,GAAK,IAC3CkxH,OAAOzO,EAAO,IAEhBvjH,EAAQ0lE,SACRrd,EAAMna,OACF,IAAIqkF,GACA,IAAID,GAAS,EACRjlF,EAAIrtB,KAAOqtB,EAAIptB,OAAS,GACxBotB,EAAI90B,IAAM80B,EAAIntB,QAAU,GAC1B1oB,KAAK8S,IAAI+iC,EAAIlsC,MAAM,EAAGksC,EAAIvsC,OAAO,GAAK,IAC3CsmB,KAAKm8F,GAAOyO,OAAO,QAStBi2B,CAAejoJ,EAASqoD,GAEnC,IAGIp/B,EAHAi8F,EAAIllH,EAAQ+Z,WACZkjI,EAAMj9I,EAAQ+0E,cACd/zD,EAAKi8H,EAAIhrI,cAAcmoI,IAS3B,GAPAp5H,EAAGpgB,MAAMsR,QAAUswI,GAAW5D,GAAmB5+I,IACtC,SAAPgoJ,IACAhnI,EAAGpgB,MAAMsnJ,WAAa,OAEf,UAAPF,GAA0B,YAAPA,IACnBhnI,EAAGpgB,MAAMkgB,SAAW,QAEb,UAAPknI,EACA,GAAIhoJ,EAAQqqC,SACR,IAAK,IAAI3uC,EAAI,EAAGA,EAAIsE,EAAQ3E,QAAQM,SAAUD,GAC1CutB,EAASg0H,EAAIhrI,cAAcmoI,KACpBx5I,MAAMsR,QAAUswI,GAAW5D,GAAmB5+I,EAAQ3E,QAAQK,KACrEutB,EAAOroB,MAAMI,QAAU,QACvBioB,EAAOyO,YAAc13B,EAAQ3E,QAAQK,GAAGg8B,YACxC1W,EAAG3O,YAAY4W,QAGnBA,EAvFZ,SAA2BjpB,GACvB,OAAIA,EAAQmoJ,iBAAmBnoJ,EAAQmoJ,gBAAgBxsJ,OAAS,EACrDqE,EAAQmoJ,gBAAgB,GAE5BnoJ,EAAQ3E,QAAQ2E,EAAQ2lE,eAmFdyiF,CAAkBpoJ,GACvBipB,IACAjI,EAAG0W,YAAczO,EAAOyO,kBAIhC1W,EAAG0W,YAAc13B,EAAQnD,MAE7BqoH,EAAE1/C,aAAaxkD,EAAIhhB,GACnBghB,EAAGD,WAAa/gB,EAAQ+gB,WACxBC,EAAG8J,UAAY9qB,EAAQ8qB,UAIvB9qB,EAAQY,MAAMI,QAAU,OAExBykJ,GAAezkI,EAAIqnC,GACnBroD,EAAQY,MAAMI,QAAU,GACxBkkH,EAAE1yG,YAAYwO,GAmBlB,SAASykI,GAAezlJ,EAASqoD,GAM7B,OALIiyF,GAAS4E,iBAAiBl/I,UAAYA,IAGtCs6I,GAAS4E,iBAAiB72F,MAAQA,GAE9BroD,EAAQskB,QAAQ7X,eACtB,IAAK,MACH+6I,GAAYxnJ,EAASA,EAAQ9E,IAAKmtD,GAClC,MAEF,IAAK,MACH,IAAIxK,EA5BZ,SAAsB79C,GAClB,IAAIqoJ,EAAa,IAAIpzJ,OAAOqzJ,cACxBzqG,EAAMwqG,EAAWE,kBAAkBvoJ,GAEvC,GAAImW,GAAQqB,WAAaxX,EAAQkpB,aAAa,WAAYlpB,EAAQkpB,aAAa,WAAY,CACvF,IACIs/H,GADM,IAAIvzJ,OAAOo2I,WAAYG,gBAAgB3tF,EAAK,iBACrCrwC,gBACb6/B,EAAM2yG,GAAchgJ,GACxBwoJ,EAAOxvI,aAAa,QAASq0B,EAAIlsC,OACjCqnJ,EAAOxvI,aAAa,SAAUq0B,EAAIvsC,QAClC+8C,EAAMwqG,EAAWE,kBAAkBC,GAGvC,OAAO3qG,EAeO4qG,CAAazoJ,GAEvBwnJ,GAAYxnJ,EADE,6BAAgC8pH,EAAajsE,GAC7BwK,GAC9B,MAEF,IAAK,SACH,IACIm/F,GAAYxnJ,EAASA,EAAQs5I,UAAU,aAAcjxF,GACvD,MAAOi1F,IAGT,MAEF,IAAK,WACL,IAAK,QACL,IAAK,SACHyK,GAAgB/nJ,EAASqoD,GACzB,MAEF,QAEE,IADA,IAAI/e,EAAW,GAAIo/G,EAAS,GAAIpnI,EAAa,GACpC5lB,EAAIsE,EAAQk+C,WAAYxiD,EAAGA,EAAIA,EAAEyiD,YACtC,OAAQziD,EAAEmuB,UACR,KAAK,EACC,KAAK3oB,KAAKxF,EAAEsG,OACZ2mJ,GAAW3oJ,EAAStE,EAAG2sD,GAE3B,MACF,KAAK,EACH,IAAIznD,EAAQg+I,GAAmBljJ,GAC3BktJ,EAAWllJ,GAAiB9C,EAAO,SAEvB,UADD8C,GAAiB9C,EAAO,YAEnC0gB,EAAWxrB,KAAK4F,GAEC,QAAZktJ,EACLF,EAAO5yJ,KAAK4F,GAEZ4tC,EAASxzC,KAAK4F,GAM1BovH,EAAUxhF,EAAUm+G,IAAYhyJ,SAAQ,SAASurB,GAAK0jI,GAAc1jI,EAAIqnC,MACxEyiE,EAAU49B,EAAQjB,IAAYhyJ,SAAQ,SAASurB,GAAK0jI,GAAc1jI,EAAIqnC,MACtEyiE,EAAUxpG,EAAYmmI,IAAYhyJ,SAAQ,SAASurB,GAAK0jI,GAAc1jI,EAAIqnC,OAIlF,SAASsgG,GAAW3oJ,EAASq3B,EAAMgxB,GAC/B,GAz/CU,OADN3yD,EAAK4kJ,GAAS+E,aAId3pJ,EACsB,IAAfA,EAAGyL,SAAiC,IAAhBzL,EAAGoL,cADlC,GAs/CA,CA3/CJ,IACQpL,EA6/CAkL,EAAQg+I,GAAmB5+I,GAE/B,KAAI9C,WAAWwG,GAAiB9C,EAAO,iBAAmB,KAA1D,CAOA,IAAIm0B,EAAOsC,EAAKr1B,KACZyH,EAAQ,EACR3J,EAAMi1B,EAAK7E,OAAO,UAAY,EAElC,GAAKpwB,EAAL,CAIA,IAAI8kJ,EAAWlhJ,GAAiB9C,EAAO,aACnCikJ,EAAanhJ,GAAiB9C,EAAO,eAGrCsqF,EAAO,CACPxnF,GAAiB9C,EAAO,cACxB8C,GAAiB9C,EAAO,gBACxB8C,GAAiB9C,EAAO,eACxBgkJ,EACAlhJ,GAAiB9C,EAAO,gBAC1B5B,KAAK,KAKP,GAHA4lJ,EAAW1nJ,WAAW0nJ,GACtBC,EAAa3nJ,WAAW2nJ,GAEP,IAAbD,IAAkB3nJ,MAAM2nJ,GAA5B,CAIA,IAAIrhC,EAAQ7/G,GAAiB9C,EAAO,SAChCmnD,EAAQ/nD,EAAQ+0E,cAAcp6C,cAE9BkuH,EAA0B,WADfnlJ,GAAiB9C,EAAO,cAEnCkoJ,EAAcplJ,GAAiB9C,EAAO,eAAgB,GACtDsnJ,EAAaxkJ,GAAiB9C,EAAO,eACrCmoJ,EAAgBrlJ,GAAiB9C,EAAO,kBAKxCooJ,EAAqBhpJ,EAAQurH,wBAAwBpqH,MAAQyjJ,EAAW,EACjD,IAAvBoE,IACAA,EAAqB,KAKzB,IAAIC,EAAiB,KAEjBC,EAAY5O,GAAoB,UAChC6O,EAAc7O,GAAS,gBACvB8O,EAAW9O,GAAmB,SAC9B+O,EAAkB/O,GAAS,oBAO/B,IALI4O,GACAI,GAyQJ,SAAuBj8G,GACnB,IAAIlsC,EAAQyjJ,EAAW,GACnB2E,EAAel8G,EAAIntB,OAEnBqpI,GADmB,MAAnBF,EACgBA,EAEAloJ,EAEpBqoJ,EAAaroJ,EAAOksC,EAAK67G,EAAWK,OA7QhCE,MAMR,aAJIN,GAAeC,IACfE,GA4PJ,SAAsBj8G,GAClB,IAAIlsC,EAAQyjJ,EAAW,GACvB4E,EAAaroJ,EAAOksC,EAAK87G,EAAa97G,EAAIntB,OAASmtB,EAAIvsC,OAAS,KAChE0oJ,EAAaroJ,EAAOksC,EAAK+7G,EAAU/7G,EAAI90B,YA1P3C,SAAS+wI,EAAYnsI,GACjB4qC,EAAM2hG,WAAWryH,GACjB,IAAIsyH,EAAczP,GAAUnyF,EAAM47F,kBAElC2F,EAAc,SAAU5zJ,GAAM,OAAOi0J,EAAYl0J,QAAQC,IACzD4zJ,EAAYnsI,GAGhB,SAASysI,EAA6B7hG,GAGlC,GAAIwyF,IAAapkI,GAAQJ,QAAUI,GAAQkB,OAAQ,CAe/C,IANA,IAAIwyI,EAAa9hG,EAAM47F,iBAAkBt2G,EAAM,CAC3C90B,IAAUuxI,IACV7pI,OAAU6pI,IACV5pI,QAAU4pI,IACV9pI,KAAU8pI,KACXnpH,GAAO,EACDjlC,EAAI,EAAGA,EAAImuJ,EAAWluJ,SAAUD,EAAG,CACxC,IAAI4d,EAAIuwI,EAAWnuJ,GACf4d,EAAEnY,OAAS,GAAKmY,EAAE4G,SAAW+oI,IAGjC57G,EAAIrtB,KAASxoB,KAAK8S,IAAIgP,EAAE0G,KAASqtB,EAAIrtB,MACrCqtB,EAAI90B,IAAS/gB,KAAK8S,IAAIgP,EAAEf,IAAS80B,EAAI90B,KACrC80B,EAAIptB,MAASzoB,KAAKuV,IAAIuM,EAAE2G,MAASotB,EAAIptB,OACrCotB,EAAIntB,OAAS1oB,KAAKuV,IAAIuM,EAAE4G,OAASmtB,EAAIntB,QACrCygB,GAAO,GAEX,OAAKA,GAGL0M,EAAIlsC,MAAQksC,EAAIptB,MAAQotB,EAAIrtB,KAC5BqtB,EAAIvsC,OAASusC,EAAIntB,OAASmtB,EAAI90B,IACvB80B,GAJI0a,EAAMwjE,wBAMrB,OAAOxjE,EAAMwjE,wBAOjB,SAASk+B,IACL,IACIp8G,EADA08G,EAAYtgJ,EACP++E,EAAMzzD,EAAKplB,OAAOlG,GAAOymB,OAAO,MAEzC,GADAzmB,GAAS++E,EACLA,EAAM,GAAK/+E,GAAS3J,EACpB,OAAO,EAKXioD,EAAMiiG,SAAS3yH,EAAM5tB,GACrBs+C,EAAMkiG,OAAO5yH,EAAM5tB,EAAQ,GAC3B4jC,EAAMu8G,EAA6B7hG,GAGnC,IAAIgK,GAAQ,EACZ,IAAI82F,GAAeC,EAAc,KAC7BtgE,EAAMzzD,EAAKplB,OAAOlG,GAAOymB,OAAO,QACrB,EAAG,CAGV63B,EAAMkiG,OAAO5yH,EAAM5tB,EAAQ++E,GAC3B,IAAIg8B,EAAIolC,EAA6B7hG,GACjCy8D,EAAEtkG,QAAUmtB,EAAIntB,SAChBmtB,EAAMm3E,EACNzyD,GAAQ,EACRtoD,GAAS++E,GAKrB,IAAKz2B,EAAO,CAkCR,GAjBAy2B,EAAM,SAAU0hE,EAAQ5/I,EAAK6/I,EAAKp9I,GAC9Bg7C,EAAMkiG,OAAO5yH,EAAM8yH,GACnB,IAAI3lC,EAAIolC,EAA6B7hG,GACrC,OAAIy8D,EAAEtkG,QAAUmtB,EAAIntB,QAAU5V,EAAM6/I,EACzBD,EAAQ5/I,EAAMA,EAAM6/I,GAAQ,EAAGA,GAC/B3lC,EAAEvkG,OAASotB,EAAIptB,OACtBotB,EAAMm3E,EACF2lC,EAAMp9I,EACCm9I,EAAQC,EAAMA,EAAMp9I,GAAQ,EAAGA,GAE/Bo9I,GAGJA,EAbT,CAeH1gJ,EAAOjS,KAAK8S,IAAIxK,EAAK2J,EAAQu/I,GAAqBlpJ,GAEjD0oF,GAAO/+E,EAGP,OAAO,EAKX,GAHAA,EAAQ++E,EAGI,KADZA,EAAMzgC,EAAM1iD,WAAW6qB,OAAO,SAE1B,OAAO,EAEPs4D,EAAM,IAENzgC,EAAMkiG,OAAO5yH,EAAM0wB,EAAMqiG,YAAc5hE,GACvCn7C,EAAMu8G,EAA6B7hG,IAOvCwyF,KACAltG,EAAM0a,EAAM47F,iBAAiB,IAGjC,IAAI5gJ,EAAMglD,EAAM1iD,WAChB,GAAK,sBAAsBnE,KAAKgnJ,IAI3B,GAAI,KAAKhnJ,KAAK6B,GAAM,CAOrB,IAAIsnJ,EAAK,EACT,IAAK7hE,EAAMuhE,EAAWvhE,EAAMzgC,EAAMqiG,cAAe5hE,EAAK,CAClD,IAAIhsC,EAAOznB,EAAKtvB,WAAW+iF,GACf,GAARhsC,EAGA6tG,GAAM,EAAIA,EAAK,EACA,IAAR7tG,GAAsB,IAARA,EAErB6tG,EAAK,EAGLA,IAMR,MAAQ7hE,EAAMzlF,EAAImtB,OAAO,QAAU,GAAG,CAClC,IAAIjrB,EAAS,WAAW0K,OAAO,EAAG,GAAK06I,EAAK7hE,GAAO,GACnDzlF,EAAMA,EAAI4M,OAAO,EAAG64E,GAAOvjF,EAASlC,EAAI4M,OAAO64E,EAAM,UA7BzDzlF,EAAMA,EAAInM,QAAQ,OAAQ,KAiCzBm7D,IACDk3F,EAAiB57G,EAAIntB,QAK7B,SAAkBnd,EAAKsqC,GAMnB,GAAIktG,KAAct9I,MAAM4nJ,GAAa,CACjC,IAAI/jJ,EAASi8I,GAAc7xD,GACvB3yE,GAAO80B,EAAI90B,IAAM80B,EAAIntB,OAASpf,GAAU,EAC5CusC,EAAM,CACF90B,IAASA,EACT0H,MAASotB,EAAIptB,MACbC,OAAS3H,EAAMzX,EACfkf,KAASqtB,EAAIrtB,KACblf,OAASA,EACTK,MAASksC,EAAIptB,MAAQotB,EAAIrtB,MAYjC,OAAQ+oI,GACN,IAAK,YACHhmJ,EAAMA,EAAIG,cACV,MACF,IAAK,YACHH,EAAMA,EAAI0J,cACV,MACF,IAAK,aACH1J,EAAMA,EAAInM,QAAQ,eAAe,SAAUiuH,GAAK,OAAOA,EAAE3hH,iBAI7D,IAAI6xB,EAAO,IAAIylH,GACXz3I,EAAK,IAAIssH,EAAK,CAAEhiF,EAAIrtB,KAAMqtB,EAAI90B,KACZ,CAAE80B,EAAIlsC,MAAOksC,EAAIvsC,SACnC,CACIoqF,KAAMA,EACN9jE,KAAM,CAAEm8F,MAAOA,KAGvBl7D,EAAMna,OAAOnZ,GAlDbu1H,CAASvnJ,EAAKsqC,GAqDlB,SAASm8G,EAAa9R,EAAW6S,EAAShnC,EAAOinC,GAC7C,GAAIjnC,EAAO,CACP,IAAIhgF,EAAO,IAAIk9F,GAAK,CAAEzO,OAAQ,CAC1B7wH,MAAOu2I,EACPn0B,MAAOA,KAGXinC,GAAQ9S,EACRn0G,EAAKgN,OAAOg6G,EAAQvqI,KAAMwqI,GACrBzrB,OAAOwrB,EAAQtqI,MAAOuqI,GAC3BniG,EAAMna,OAAO3K,KAmEzB,SAASmhH,GAAc1kJ,EAASyqB,GAC5B,IAAI7pB,EAAQg+I,GAAmB5+I,GAI/B,GAFAm+I,GAAev9I,IAEX,kDAAkDM,KAAKlB,EAAQskB,UAI1C,MAArBg2H,GAAS+E,SAAb,CAIA,IAAIt0H,EAAU7tB,WAAWwG,GAAiB9C,EAAO,YAC7CwgF,EAAa19E,GAAiB9C,EAAO,cACrCI,EAAU0C,GAAiB9C,EAAO,WAEtC,GAAgB,IAAZmqB,GAA+B,UAAdq2D,GAAqC,QAAXpgF,EAA/C,CAIA,IACIqnD,EADA4nE,EAjyDR,SAAsBrvH,GAClB,IAAIolJ,EAAetiJ,GAAiB9C,EAAO,aAC3C,GAAoB,QAAhBolJ,EACA,OAAO,KAEX,IAAI55B,EAAS,gCAAgC5/G,KAAKw5I,GAClD,GAAI55B,EAAQ,CACR,IAAIr/E,EAASrpC,GAAiB9C,EAAO,oBAGrC,MAAO,CACHwrH,OAHJA,EAASA,EAAO,GAAGrtH,MAAM,YAAY0P,IAAIvR,YAIrC6vC,OAHJA,EAASA,EAAOhuC,MAAM,QAAQ0P,IAAIvR,cAwxD7ButJ,CAAa7pJ,GAGlBmtC,EAASrqC,GAAiB9C,EAAO,YAChCqvH,GAAMllG,EAAU,IAAgB,QAAVgjB,IACvBA,EAAS,GAEbsa,EAzEJ,SAAgCroD,EAASqoD,EAAOta,GAC5C,IAAI28G,EACU,QAAV38G,GAEA28G,EAAOpQ,GAAS4E,iBAAiB72F,MACjCta,EAAS7wC,WAAW6wC,KAMpB28G,EAAOriG,EACPta,EAAS,GAGb,IADA,IAAI10C,EAAIqxJ,EAAKphH,SACJ5tC,EAAI,EAAGA,EAAIrC,EAAEsC,UACM,MAApBtC,EAAEqC,GAAGivJ,aAAuBtxJ,EAAEqC,GAAGivJ,YAAc58G,KADvBryC,GAMhC,IAAIgxC,EAAM,IAAIi2F,GAId,GAHA+nB,EAAK35F,OAAOr1D,EAAGgxC,GACfA,EAAIi+G,YAAc58G,EAEd28G,IAASriG,GAOLiyF,GAAS+E,SAAU,CACnB,IAAIlmJ,EAAImhJ,GAAStpB,QAAQ3E,SACrB7H,EAAI81B,GAAS+E,SAAS3wB,cAAcv1H,GACxConJ,GAAY7zG,EAAK+zF,GAAKc,SAAS/c,IAOvC,OAAO93E,EA+BCk+G,CAAuB5qJ,EAASyqB,EAAWsjB,GAY/ChjB,EAAU,GACVs9B,EAAMt9B,QAAQA,EAAUs9B,EAAMt9B,WAGlCg0H,GAAa/+I,EAASY,EAAOynD,GAExB4nE,EAID4vB,GAAU7/I,GAAS,WAEfw/I,GAAuBx/I,EAAQY,MAAO,YAAa,OAAQ,aAG3D4+I,GAAuBx/I,EAAQY,MAAO,aAAc,OAAQ,aAKjB,UAAvC8C,GAAiB9C,EAAO,aAExB4+I,GAAuBx/I,EAAQY,MAAO,WAAY,WAAY,aAKlE,IAAImvH,EAAO/vH,EAAQurH,wBACfhyH,EAAIw2H,EAAK/vG,KAAOiwG,EAAGljF,OAAO,GAC1Bz0C,EAAIy3H,EAAKx3G,IAAM03G,EAAGljF,OAAO,GACzB5zC,EAAI,CAAE,EAAG,EAAG,EAAG,GAAII,GAAIjB,GAC3Ba,EAAI0xJ,GAAK1xJ,EAAG82H,EAAG7D,QACfjzH,EAAI0xJ,GAAK1xJ,EAAG,CAAE,EAAG,EAAG,EAAG,EAAGI,EAAGjB,IAC7Ba,EAAImnJ,GAAej4F,EAAOlvD,GAE1BmhJ,GAAStpB,QAAUspB,GAAStpB,QAAQ7E,aAAahzH,GAEjDspJ,GAA0BziJ,EAASqoD,MA9BvCo6F,GAA0BziJ,EAASqoD,GAkCvC82F,OAsBJ,SAAS0L,GAAKxxJ,EAAGigB,GACb,IAAIwxI,EAAKzxJ,EAAE,GAAI0xJ,EAAK1xJ,EAAE,GAAIirH,EAAKjrH,EAAE,GAAI2xJ,EAAK3xJ,EAAE,GAAI4xJ,EAAK5xJ,EAAE,GAAIotD,EAAKptD,EAAE,GAC9D6xJ,EAAK5xI,EAAE,GAAI6xI,EAAK7xI,EAAE,GAAIirG,EAAKjrG,EAAE,GAAI8xI,EAAK9xI,EAAE,GAC5C,MAAO,CACHwxI,EAAGI,EAAKH,EAAGxmC,EAAaumC,EAAGK,EAAKJ,EAAGK,EACnC9mC,EAAG4mC,EAAKF,EAAGzmC,EAAaD,EAAG6mC,EAAKH,EAAGI,EACnCH,EAAGC,EAAKzkG,EAAG89D,EAJsCjrG,EAAE,GAI3B2xI,EAAGE,EAAK1kG,EAAG2kG,EAJyB9xI,EAAE,IAQtE,IAAI4E,GAAU,CACb8sE,IAAKivD,GACLvG,OAAQA,GACR55B,KAAMA,EACNoO,aAAcA,EACd0gB,WAAYA,GACZ7I,UAAWA,GACX8I,SAAUA,GACVtb,aAAcA,EACd6b,QAASA,GACTsQ,eAAgBA,GAChB2R,YAlzGD,SAAqBhjG,EAAOhtD,GACxB,IAAItG,EAAW,CACXoM,MAAO,QAASL,OAAQ,QACxBqyI,KAAM,aAGN6G,EAAa3xF,EACb0nE,EAAO1nE,EAAMqpE,cAEjB,GAAI3B,EAAM,CACN,IAAIhjF,EAASgjF,EAAKN,aAClBuqB,EAAa,IAAIrX,IACNj7F,UAAUypF,KAAchtF,WAAW4I,EAAOxzC,GAAIwzC,EAAOz0C,IAChE0hJ,EAAW1wG,SAASxzC,KAAKuyD,GAEzB,IAAIzkD,EAAOmsH,EAAKhqG,UAChBhxB,EAASoM,MAAQyC,EAAKzC,MAAQ,KAC9BpM,EAAS+L,OAAS8C,EAAK9C,OAAS,KAGpC,IAAIwqJ,EAAiBx0J,EAAEI,OAAOnC,EAAUsG,GAEpCovB,EAAYlnB,SAAS0O,cAAc,OACnCrR,EAAQ6pB,EAAU7pB,MAEtBA,EAAMI,QAAU,OAChBJ,EAAMO,MAAQmqJ,EAAenqJ,MAC7BP,EAAME,OAASwqJ,EAAexqJ,OAC9ByC,SAAS6O,KAAKC,YAAYoY,GAE1B,IAAIqqD,EAAU,IAAIgkE,GAAUruH,EAAW6gI,GACvCx2E,EAAQg1D,kBACRh1D,EAAQ60D,KAAKqQ,GAEb,IAAI5+H,EAAU05D,EAAQ93C,QAClB7mC,EAAU,WACV2+E,EAAQ3+E,UACRoN,SAAS6O,KAAKI,YAAYiY,IAI9B,OAFArP,EAAQ03C,KAAK38D,EAASA,GAEfilB,GA0wGVmwI,UAvwGD,SAAmBljG,EAAOhtD,GACtB,IAAI2vF,EAAM8uD,GAAYzxF,GAMtB,OAJKhtD,GAAYA,EAAQkjD,MACrBysC,EAAM,6BAA+B8+B,EAAa9+B,IAG/C+uB,IAAgBjwE,QAAQkhD,IAiwGlCupD,SAAUA,GACVS,eAAgBA,GAChB15H,QAAS81G,GACTmB,OAAQA,GACRiC,IAAKA,GACLiM,KAAMA,GACNa,UAAWA,GACXe,KAAMA,GACNE,MAAOD,GACPK,MAAOA,GACP91D,OAAQA,GACRwiD,KAAMoW,GACNrC,MA32ND,SAAe96G,EAAUk3D,EAAMomD,GAC3BD,GAAcr9G,EAAUk3D,EAAMomD,EAAW,IAAK,UA22NjD4lB,OAx2ND,SAAgBljI,EAAUk3D,EAAMomD,GAC5BD,GAAcr9G,EAAUk3D,EAAMomD,EAAW,IAAK,WAw2NjDS,MAn0ND,SAAe/9G,GACXu9G,GAAcI,GAAoB39G,GAAW,IAAK,IAAK,UAm0N1DmjI,OAh0ND,SAAgBnjI,GACZu9G,GAAcI,GAAoB39G,GAAW,IAAK,IAAK,WAg0N1DnI,KA3vND,SAAcmI,EAAUk3D,GACpB,OAAO0mD,GAAa59G,EAAUk3D,EAAM,IAAK,IAAK,UA2vNjDksE,MAxvND,SAAepjI,EAAUk3D,GACrB,OAAO0mD,GAAa59G,EAAUk3D,EAAM,IAAK,IAAK,WAwvNjDmsE,IArvND,SAAa3rJ,EAASw/E,GAClB,IAAIuwC,EAAO/vH,EAAQ0xH,cACnB,GAAI3B,EAAM,CACN,IAAIjvC,EAAcivC,EAAKnsH,KACnBgoJ,EAAWpsE,EAAK57E,KACpB,GAAIgoJ,EAASzqJ,MAAQ2/E,EAAY3/E,OAASyqJ,EAAS9qJ,OAASggF,EAAYhgF,OAAQ,CAC5E,IAAIgjC,EAAQtsC,KAAK8S,IAAIshJ,EAASzqJ,MAAQ2/E,EAAY3/E,MAAOyqJ,EAAS9qJ,OAASggF,EAAYhgF,QACnF4mC,EAAY1nC,EAAQ0nC,aAAeypF,KACvCzpF,EAAU5D,MAAMA,EAAOA,GACvB9jC,EAAQ0nC,UAAUA,MA6uN7B6/F,eAAgBA,GAChBC,eAAgBA,GAChBX,aAAcA,GACdG,SAAUA,GACVn3F,UAAWA,GACXq4F,iBAAkBA,GAClB2jB,QAlkGD,SAAiB7rJ,EAAS3E,GACjBA,IACDA,EAAU,IAEd,IAAI+f,EAAU2+F,IAEd,IAAK/5G,EACD,OAAOob,EAAQ24C,OAAO,wBAG1B,GAAsC,mBAA3B9+D,OAAOwO,iBACd,MAAM,IAAImB,MAAM,oLAGpB9P,MAAMsoC,IAAI0uH,WAAW9O,GAAah9I,EAAQ+0E,gBAE1C,IA1BWolE,EA0BPr2G,EAzBgB,iBADTq2G,EA0BO9+I,EAAQyoC,OAAS,GAxBxB,CAAEvqC,EAAG4gJ,EAAO7hJ,EAAG6hJ,GAEtB9iJ,MAAMD,QAAQ+iJ,GACP,CAAE5gJ,EAAG4gJ,EAAM,GAAI7hJ,EAAG6hJ,EAAM,IAE5B,CAAE5gJ,EAAG4gJ,EAAM5gJ,EAAGjB,EAAG6hJ,EAAM7hJ,GAqB9B,SAASyzJ,EAAM/rJ,GACX,IAtKUghB,EAAIgrI,EAsKV3jG,EAAQ,IAAIs6E,GAGZn6C,EAAMxoF,EAAQurH,wBA2BlB,OA1BA+0B,GAAej4F,EAAO,CAClBvkB,EAAMvqC,EACN,EACA,EACAuqC,EAAMxrC,GACJkwF,EAAIxoE,KAAO8jB,EAAMvqC,GACjBivF,EAAIjwE,IAAMurB,EAAMxrC,IAGtBgiJ,GAAS+E,UAAW,EACpB/E,GAAStpB,QAAU9E,EAAOM,OAC1B8tB,GAAS4E,iBAAmB,CACxBl/I,QAASA,EACTqoD,MAAOA,IAGgB,IAAvBhtD,EAAQ4wJ,WACR3R,GAAS4J,YAAc,IAEvB5J,GAAS4J,YAAc7oJ,EAAQ4wJ,WA7LrBD,EAgMI,gBAhMRhrI,EAgMDhhB,GA/LNksJ,UACHlrI,EAAGkrI,UAAU9qJ,IAAI4qJ,GAEjBhrI,EAAGH,WAAa,IAAMmrI,EA6LtBtH,GAAc1kJ,EAASqoD,GAzL/B,SAAqBrnC,EAAIgrI,GACjBhrI,EAAGkrI,UACHlrI,EAAGkrI,UAAUhhI,OAAO8gI,GAEpBhrI,EAAGH,UAAYG,EAAGH,UAAU9hB,MAAM,OAAO+4C,QAAO,SAASz+C,EAAGkyC,GAIxD,OAHIA,GAAQygH,GACR3yJ,EAAEvD,KAAKy1C,GAEJlyC,IACR,IAAI2F,KAAK,KAiLZshB,CAAYtgB,EAAS,gBAEdqoD,EA6cX,OA1cAq2F,GAAY,CAAE1+I,IAAW,WACrB,IAAImsJ,EAAa9wJ,GAAWA,EAAQ+wJ,eAChCC,EAAehxJ,GAAWA,EAAQixJ,WAAkC,QAArBjxJ,EAAQixJ,UACvDC,EAAez3J,MAAMsoC,IAAIovH,iBAAgB,SAAS9mJ,EAAKw4I,GACvD,MAAW,aAAPx4I,EAGO2mJ,EAAehxJ,EAAQqK,GAAO,KAElCA,KAAOrK,EAAUA,EAAQqK,GAAOw4I,KAEvCuO,EAAYJ,GAAgBE,EAAaD,UAAU,GACnDI,EAAaL,GAAgBE,EAAaD,UAAU,GACpDx/G,EAASzxC,EAAQyxC,QAAUy/G,EAAaz/G,OACxC6/G,EAAYjmJ,QAAQomC,GACxB,GAAIq/G,GAAcO,EAAY,CACrB5/G,IACDA,EAAS,CAAE9sB,KAAM,EAAGzH,IAAK,EAAG0H,MAAO,EAAGC,OAAQ,IAM9CusI,IAAcA,GAAc3oH,EAAMvqC,GAClCmzJ,IAAcA,GAAc5oH,EAAMxrC,GACtCw0C,EAAO9sB,MAAU8jB,EAAMvqC,EACvBuzC,EAAO7sB,OAAU6jB,EAAMvqC,EACvBuzC,EAAOv0B,KAAUurB,EAAMxrC,EACvBw0C,EAAO5sB,QAAU4jB,EAAMxrC,EAEvB,IAAI+vD,EAAQ,IAAIs6E,GAAM,CAClBvlG,IAAK,CACDwvH,WAAgB,EAChBN,UAAgBD,EAAeE,EAAaD,UAAY,OACxDO,cAAgBF,MAyEhC,SAA0BxvI,EAAUnd,EAASmsJ,EAAYM,EAAWC,EAAY5/G,EAAQzxC,GACpF,IAAI2I,EAxBR,SAAsBA,GAClB,GAAgB,MAAZA,EAIA,MAHuB,iBAAZA,IACPA,EAAWlP,MAAMkP,SAASA,EAASpN,QAAQ,aAAc,MAEtC,mBAAZoN,EACA,SAAShC,GACZ,IAAIgf,EAAKhd,EAAShC,GAClB,GAAIgf,GAAmB,iBAANA,EAAgB,CAC7B,IAAIhP,EAAMzO,SAAS0O,cAAc,OACjCD,EAAIG,UAAY6O,EAChBA,EAAKhP,EAAIk9H,kBAEb,OAAOluH,GAIR,WACH,OAAOhd,EAASshE,WAAU,IAMnBwnF,CAAazxJ,EAAQ2I,UAChCi5I,EAAMj9I,EAAQ+0E,cACdg4E,EAAQ,GACR3xJ,EAAOC,EAAQ2xJ,aAAehtJ,EAAU46I,GAAW56I,GACnDyqB,EAAYwyH,EAAIhrI,cAAc,sBAC9Bg7I,EAAS,EAMb/S,GAAU9+I,EAAK0e,iBAAiB,UAAUrkB,SAAQ,SAASy3J,GACvDA,EAAMnzI,WAAW1H,YAAY66I,MAKjChT,GAAU9+I,EAAK0e,iBAAiB,OAAOrkB,SAAQ,SAAS03J,GACpDjT,GAAUiT,EAAG7jH,UAAU7zC,SAAQ,SAAS23J,EAAIlgJ,GACxCkgJ,EAAGp0I,aAAa,oBAAqB9L,SAI7CytI,GAAOlwH,EAAW,CACdzpB,QAAY,QACZC,SAAY,WACZwjJ,UAAY,cACZzkI,KAAY,WACZzH,IAAY,aAGZk0I,IAIA9R,GAAOlwH,EAAW,CACdtpB,MAAesrJ,EAAY,KAC3BzgC,YAAel/E,EAAO9sB,KAAO,KAC7B8kI,aAAeh4G,EAAO7sB,MAAQ,OAoBlC06H,GAAOv/I,EAAM,CAAE0lB,SAAU,YAG7B9gB,EAAQ+Z,WAAWyrD,aAAa/6C,EAAWzqB,GAC3CyqB,EAAUpY,YAAYjX,GAIlBC,EAAQgyJ,gBACR9O,GAA4B,CAAE9zH,IAAa,WACvCpvB,EAAQgyJ,gBAAgB5iI,EAAW6iI,MAGvC/O,GAA4B,CAAE9zH,GAAa6iI,GAG/C,SAASA,KACa,KAAdnB,GAAqBO,IACrBa,EAAanyJ,GAIb,IAAIi9C,EAAOm1G,IACXpyJ,EAAK2e,WAAWyrD,aAAantB,EAAMj9C,GACnCi9C,EAAKhmC,YAAYjX,GAGjB4I,GACA+oJ,EAAMt3J,SAAQ,SAAS4iD,EAAM38C,GACzB,IAAIslB,EAAKhd,EAAS,CACdhE,QAAaq4C,EACbo1G,QAAa/xJ,EAAI,EACjB+9D,WAAaszF,EAAMpxJ,SAEnBqlB,GACAq3B,EAAKhmC,YAAY2O,MAK7B09H,GAAYqO,EAAO5vI,EAASxf,KAAK,KAAM,CAAEovJ,MAAOA,EAAOtiI,UAAWA,KAGtE,SAASijI,EAAa1sI,GAClB,GAAI3lB,EAAQqyJ,cAAgB/3J,GAAQqrB,EAAI3lB,EAAQqyJ,eAAiB1sI,EAAG0H,cAAgBgkI,EAAaO,EAC7F,OAAO,EAGX,IAAIjF,EAAMhnI,EAAGsD,QACb,QAAI,YAAYpjB,KAAK8mJ,IAAQhnI,EAAG0H,cAAgBgkI,EAAaO,KAIrDjsI,EAAGkI,aAAa,qBAChB,0FAA0FhoB,KAAK8f,EAAGsD,UAG9G,SAASipI,EAAavtJ,GAIlB,GAHuB,SAAnBA,EAAQskB,SACRq2H,GAAO36I,EAAS,CAAE2tJ,YAAa,WAE/BD,EAAa1tJ,GAAjB,CAGA,IAAIY,EAAQg+I,GAAmB5+I,GAC3B4tJ,EAAgB1wJ,WAAWwG,GAAiB9C,EAAO,mBACnDitJ,EAAe3wJ,WAAWwG,GAAiB9C,EAAO,wBAClDktJ,EAAab,EACjBA,GAAUW,EAAgBC,EAE1B,IADA,IAAI3G,GAAU,EACLlmI,EAAKhhB,EAAQk+C,WAAYl9B,EAAIA,EAAKA,EAAGm9B,YAC1C,GAAmB,GAAfn9B,EAAG6I,SAA6B,CAEhC,GADAq9H,GAAU,EACNvxJ,GAAQqrB,EAAImrI,GAAa,CACzB4B,EAAe/sI,GACf,SAEJ,IAAK0rI,EAAY,CAEba,EAAavsI,GACb,SAEJ,IAAK,wBAAwB9f,KAAKwC,GAAiBk7I,GAAmB59H,GAAK,aACvE,SAEJ,IAAIgtI,EAAOC,EAAcjtI,GACb,GAARgtI,GAIKA,GAIDN,EAAa1sI,GANjB+sI,EAAe/sI,GAafusI,EAAavsI,QAGG,GAAfA,EAAG6I,UAA4B6iI,IACpCwB,EAAUltI,EAAIkmI,GACdA,GAAU,GAGlB+F,EAASa,GAGb,SAASK,EAAcntI,GACnB,IAAIkkG,EAAIlkG,EAAGjH,WAAY1b,EAAQ6mH,EAAEhnE,WACjC,GAAIl9B,IAAO3iB,EACP,OAAO,EAEX,GAAI2iB,IAAOkkG,EAAE57E,SAAS,GAAI,CACtB,GAAsB,GAAlBjrC,EAAMwrB,UACY,GAAlBxrB,EAAMwrB,SACN,OAAO,EAEX,GAAsB,GAAlBxrB,EAAMwrB,SAEN,OAAQ,KAAK3oB,KAAK7C,EAAM2D,MAGhC,OAAO,EAGX,SAAS+rJ,EAAe/sI,GACpB,GAAmB,GAAfA,EAAG6I,UAAiB7I,IAAO5lB,GAAQ+yJ,EAAcntI,GACjD,OAAO+sI,EAAe/sI,EAAGjH,YAE7B,IAAIrH,EAAO07I,EAAUC,EAAOvmF,EAAMwmF,EAElCF,GADA17I,EAAQlS,GAAQwgB,EAAI,WACAtO,EAAM67I,cAAc,YACpClzJ,EAAQmzJ,gBACRH,EAAQ37I,GAASA,EAAM67I,cAAc,UAOrCzmF,EAAOtnE,GAAQwgB,EAAI,aACP8mD,EAAKymF,cAAc,wBAC3BD,EAAWxmF,EAAKymF,cAAc,oBAGtC,IAAIl2G,EAAOm1G,IACPzlG,EAAQk1F,EAAItiH,cAChBotB,EAAM0mG,eAAerzJ,GACrB2sD,EAAM2mG,aAAa1tI,GACnBq3B,EAAKhmC,YAAY01C,EAAM4mG,mBACvBvzJ,EAAK2e,WAAWyrD,aAAantB,EAAMj9C,GACnCwzJ,EAAwB5tI,EAAGjH,YACvBrH,IACAA,EAAQlS,GAAQwgB,EAAI,SAChB3lB,EAAQmzJ,eAAiBH,GACzB37I,EAAM8yD,aAAa6oF,EAAM/oF,WAAU,GAAO5yD,EAAMwrC,YAEhDkwG,GACA17I,EAAM8yD,aAAa4oF,EAAS9oF,WAAU,GAAO5yD,EAAMwrC,aAGvD7iD,EAAQmzJ,eAAiBF,IACzBxmF,EAAOtnE,GAAQwgB,EAAI,YACdwkD,aAAa8oF,EAAShpF,WAAU,GAAOwC,EAAK5pB,YAIzD,SAASsvG,IACL,IAAIn1G,EAAO4kG,EAAIhrI,cAAc,kBAmC7B,OAlCA0oI,GAAOtiG,EAAM,CACTr3C,QAAW,QACXyjJ,UAAW,cACXtjJ,MAAWsrJ,EAAaA,EAAY,KAAQ,OAC5CviB,QAAYp9F,EAAOv0B,IAAM,MACbu0B,EAAO7sB,MAAQ,MACf6sB,EAAO5sB,OAAS,MAChB4sB,EAAO9sB,KAAO,KAG1B/e,SAAW,WAGXH,OAAW4rJ,EAAcA,EAAa,KAAQ,OAC9C5rI,SAAW4rI,GAAcD,EAAY,SAAW,UAChDriG,MAAW,SAeX/uD,GAAWA,EAAQwzJ,gBACnBx2G,EAAKx3B,UAAYxlB,EAAQwzJ,eAE7B9B,EAAMj3J,KAAKuiD,GACJA,EAGX,SAAS41G,EAAc9T,GACnB,IAAI9sG,EAAM8sG,EAAM5uB,wBAChB,GAAkB,IAAdl+E,EAAIlsC,OAA8B,IAAfksC,EAAIvsC,OAEvB,OAAO,EAEX,IAAIyX,EAAMnd,EAAKmwH,wBAAwBhzG,IACnCu2I,EAAYpC,EAAaO,EAC7B,OAAQ5/G,EAAIvsC,OAASguJ,EAAa,EAC3BzhH,EAAI90B,IAAMA,EAAMu2I,EAAa,EAC7BzhH,EAAIntB,OAAS3H,EAAMu2I,EAAa,EACjC,EAGV,SAASZ,EAAU72H,EAAM6vH,GACrB,GAAK,KAAKhmJ,KAAKm2B,EAAKr1B,MAApB,CAIA,IAAIwiB,EAAM6S,EAAKr1B,KAAKrG,OAChBosD,EAAQk1F,EAAItiH,cAChBotB,EAAMo8F,mBAAmB9sH,GACzB,IAAI22H,EAAOC,EAAclmG,GACzB,GAAKimG,EAAL,CAIA,IAAIe,EAAW13H,EACf,GAAY,GAAR22H,EAIID,EAFA7G,EAEe7vH,EAAKtd,WAELsd,QAgBnB,GAZA,SAAU23H,EAAQ1kJ,EAAKk+E,EAAKz7E,GAExB,OADAg7C,EAAMkiG,OAAO5yH,EAAMmxD,GACfl+E,GAAOk+E,GAAOA,GAAOz7E,EACdy7E,EAEPylE,EAAclmG,GACPinG,EAAQ1kJ,EAAMA,EAAMk+E,GAAQ,EAAGA,GAE/BwmE,EAAQxmE,EAAMA,EAAMz7E,GAAQ,EAAGA,GAR9C,CAUG,EAAGyX,GAAO,EAAGA,IAEX,KAAKtjB,KAAK6mD,EAAM1iD,aAAe6hJ,EAEhC6G,EAAe12H,EAAKtd,gBACjB,CAGHg1I,EAAW13H,EAAK62H,UAAUnmG,EAAMknG,WAEhC,IAAI52G,EAAOm1G,IACXzlG,EAAM0mG,eAAerzJ,GACrBi9C,EAAKhmC,YAAY01C,EAAM4mG,mBACvBvzJ,EAAK2e,WAAWyrD,aAAantB,EAAMj9C,GACnCwzJ,EAAwBG,EAASh1I,YAIzCm0I,EAAUa,KAGd,SAASH,EAAwB5tI,GAI7B,IAAIosI,EAAK5sJ,GAAQwgB,EAAI,MACjBosI,IACAA,EAAGp0I,aAAa,kBAAmB,KACnC41I,EAAwBxB,EAAGrzI,cAha/Bm1I,EACI,SAAS31J,GACL,GAAI8B,EAAQmvB,SAAU,CAClB,IAAI2kI,GAAW,EAAO1B,EAAU,GAChC,SAAUj0F,IACN,GAAIi0F,EAAUl0J,EAAEwzJ,MAAMpxJ,OAAQ,CAC1B,IAAI08C,EAAO0zG,EAAMxyJ,EAAEwzJ,MAAMU,IACzBplG,EAAMna,OAAOmK,GACbh9C,EAAQmvB,SAAS,CACb6tB,KAAMA,EACNo1G,UAAWA,EACXh0F,WAAYlgE,EAAEwzJ,MAAMpxJ,OACpBgzB,OAAQ,WACJwgI,GAAW,KAGdA,EAID51J,EAAEkxB,UAAU1Q,WAAWvH,YAAYjZ,EAAEkxB,WAHrCyC,WAAWssC,QAMfjgE,EAAEkxB,UAAU1Q,WAAWvH,YAAYjZ,EAAEkxB,WACrCrP,EAAQ0uB,QAAQue,GApBxB,QAwBA9uD,EAAEwzJ,MAAMt3J,SAAQ,SAAS4iD,GACrBgQ,EAAMna,OAAO69G,EAAM1zG,OAEvB9+C,EAAEkxB,UAAU1Q,WAAWvH,YAAYjZ,EAAEkxB,WACrCrP,EAAQ0uB,QAAQue,KAGxBroD,EACAmsJ,EACAM,EAAYA,EAAY3/G,EAAO9sB,KAAO8sB,EAAO7sB,MAAQ,KACrDysI,EAAaA,EAAa5/G,EAAOv0B,IAAMu0B,EAAO5sB,OAAS,KACvD4sB,EACAzxC,QAGJ+f,EAAQ0uB,QAAQiiH,EAAM/rJ,OA0XvBob,GAqkFVkvI,SA/jFD,SAAkBtqJ,GACd,IAAIqoD,EAAQ,IAAIs6E,GAehB,OAdA2X,GAAS+E,UAAW,EACpB/E,GAAStpB,QAAU9E,EAAOM,OAC1B8tB,GAAS4E,iBAAmB,CACxBl/I,QAASA,EACTqoD,MAAOA,GAEX02F,GAAa/+I,EAAS4+I,GAAmB5+I,GAAUqoD,GAChB,GAA/BroD,EAAQk+C,WAAWr0B,SAEnB8+H,GAAW3oJ,EAASA,EAAQk+C,WAAYmK,GAExCw6F,GAAe7iJ,EAASqoD,GAE5B82F,KACO92F,GAgjFV20F,aAAcA,IAGfloJ,MAAM6H,WAAW7H,MAAO,CACpBopB,QAASA,GACT61G,SAAUA,KAId3K,EAAQ,IAERt0H,MAAMopB,QAAQo9G,QAAUxmI,MAAMi/H,SAASuH,QACvCxmI,MAAMmpB,QAAQC,QAAUppB,MAAMopB,QAC9BppB,MAAMmpB,QAAQ81G,SAAWj/H,MAAMi/H,SAC/Bj/H,MAAMopB,QAAQ47F,KAAKgO,YAAchzH,MAAMglH,KAAKgO,YAC5ChzH,MAAMopB,QAAQ47F,KAAKkN,UAAYlyH,MAAMglH,KAAKkN,UAC1ClyH,MAAMopB,QAAQmnG,MAAQvwH,MAAMuwH,MAC5BvwH,MAAMglH,KAAKgQ,aAAeh1H,MAAMopB,QAAQ47F,KAAKgQ,aAhoW7C,CAkoWG70H,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IAAIkuF,EAAK,SACLlwF,EAAQG,OAAOH,MACf6H,EAAa7H,EAAM6H,WACnB+iF,EAAQ5qF,EAAMopB,QAAQ47F,KACtBqP,EAAUzpC,EAAMypC,QAChB0B,EAAanrC,EAAMmrC,WACnBH,EAAmBhrC,EAAMgrC,iBACzBxqH,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aAKpB+uJ,EAAyB,iCAAsCt6J,EAAMgpB,GAAG2tE,KAAK30F,EAAE,kCAAmC,CAAE20F,KAAM,MAAU,SAEpI4jE,EAAiBv6J,EAAMiH,MAAM7E,OAAO,CACpCoF,KAAM,SAASw4E,EAASz5E,GACpBlH,KAAK6L,QAAUlJ,EAPA,sEAQf3C,KAAKumD,QAAUvmD,KAAK6L,QAAQspC,SAAS,sBAErCjuC,EAAUA,GAAW,GAErBlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASlH,KAAKm7J,gBAAgBj0J,IACjElH,KAAKo7J,aAAe,CAChBjuH,SAAUjmC,EAAQimC,SAClBmkD,UAAWpqF,EAAQoqF,UACnBS,kBAAkB,EAClBd,UAAW,WAGfjxF,KAAKq7J,kBAAoBr7J,KAAK2kH,WAAWn7G,KAAKxJ,MAE9CA,KAAK2gF,QAAUA,EACf3gF,KAAKs7J,eAGTp0J,QAAS,CACL4F,SAAU,MACVm2G,OAAQ,aACRlmG,OAAQ,EACRolG,UAAU,EACVo5C,UAAW,EACXp4C,UAAW,KAGfm4C,YAAa,WACTt7J,KAAKw7J,aAAex7J,KAAKy7J,WAAWjyJ,KAAKxJ,MACzCA,KAAK07J,qBAAuB17J,KAAK27J,cAAcnyJ,KAAKxJ,MACpDA,KAAK47J,mBAAqB57J,KAAKglH,YAAYx7G,KAAKxJ,MAChDA,KAAK67J,kBAAoB77J,KAAKq1I,WAAW7rI,KAAKxJ,MAE9CA,KAAK2gF,QAAQn3E,KAAK,QAASxJ,KAAKw7J,cAChCx7J,KAAK2gF,QAAQn3E,KAAK,aAAcxJ,KAAKw7J,cACrCx7J,KAAK2gF,QAAQn3E,KAAK,aAAcxJ,KAAK47J,oBACrC57J,KAAK2gF,QAAQn3E,KAAK,YAAaxJ,KAAK67J,mBAEpC77J,KAAK2gF,QAAQ90E,QAAQod,GAAG,aAAe4nE,EAAI7wF,KAAK07J,sBAEhD17J,KAAK6L,QAAQod,GAAG,QAAU4nE,EAAI,oBAAqB7wF,KAAK87J,WAAWtyJ,KAAKxJ,OACxEA,KAAK6L,QAAQod,GAAG,aAAe4nE,EAAI7wF,KAAK+7J,cAAcvyJ,KAAKxJ,QAG/Dg8J,SAAU,WAKN,OAJKh8J,KAAKkzF,QACNlzF,KAAKkzF,MAAQ,IAAIvyF,EAAMgpB,GAAGmnE,MAAM9wF,KAAK6L,QAAS7L,KAAKo7J,eAGhDp7J,KAAKkzF,OAGhBlxF,QAAS,WACL,IAAIkxF,EAAQlzF,KAAKkzF,MAEjBlzF,KAAK2gF,QAAQ12E,OAAO,QAASjK,KAAKw7J,cAClCx7J,KAAK2gF,QAAQ12E,OAAO,aAAcjK,KAAKw7J,cACvCx7J,KAAK2gF,QAAQ12E,OAAO,aAAcjK,KAAK47J,oBACvC57J,KAAK2gF,QAAQ12E,OAAO,YAAajK,KAAK67J,mBAEtC77J,KAAK2gF,QAAQ90E,QAAQotB,IAAI,aAAe43D,EAAI7wF,KAAK07J,sBACjD17J,KAAK6L,QAAQotB,IAAI,QAAU43D,GAC3B7wF,KAAK6L,QAAQotB,IAAI,aAAe43D,GAE5BqC,IACAA,EAAMlxF,iBACChC,KAAKkzF,cAETlzF,KAAKo7J,aAEZjhI,aAAan6B,KAAKgkE,iBAEXhkE,KAAK6L,eACL7L,KAAKumD,eACLvmD,KAAK2gF,SAGhBw6E,gBAAiB,SAASj0J,GAEtB,MAAO,CACH4F,UAFJ5F,EAAUA,GAAW,IAEC4F,SAClBm2G,OAAQ/7G,EAAQ+7G,OAChBlmG,OAAQ7V,EAAQ6V,OAChBolG,SAAUj7G,EAAQi7G,SAClBn1G,MAAO9F,EAAQ8F,MACfL,OAAQzF,EAAQyF,OAChB45C,QAASr/C,EAAQq/C,QACjB01G,OAAQ/0J,EAAQ+0J,OAChBV,UAAWr0J,EAAQq0J,UACnBp4C,UAAWj8G,EAAQi8G,YAI3B+4C,cAAe,SAASjc,GACpB,KAAOA,IAAUA,EAAM/4I,QAAQi1J,SAC3Blc,EAAQA,EAAM9zI,OAElB,OAAO8zI,GAGXmc,eAAgB,SAAS90J,EAAQ24I,EAAO/4I,GACpC,IAAIq/C,EAAUr/C,EAAQq/C,QAQtB,GAPI5lD,EAAMuI,WAAWq9C,KACjBA,EAAUA,EAAQ,CACd16C,QAASo0I,EACT34I,OAAQA,KAIZi/C,EAEA,OADAvmD,KAAKumD,QAAQz2C,KAAKy2C,IACX,GAIfmsC,UAAW,SAASutD,EAAO/4I,EAASylF,EAAavtE,GAC7C,IAAItS,EAAW5F,EAAQ4F,SACnBuvJ,EAAgBn1J,EAAQ6V,QAAU,EAClC4jE,EAAU3gF,KAAK2gF,QACf5jE,EAAS4jE,EAAQ27E,UAAUxmB,iBAC3BrmI,EAAOkxE,EAAQ/uD,UACf2qI,EAAgB57E,EAAQ27E,UAAU14C,QAClCgY,EAAOqkB,EAAMrkB,OACb5uH,EAAQ2/E,EAAY3/E,MACpBL,EAASggF,EAAYhgF,OACrBkf,EAAO,EAAGzH,EAAM,EAOpB,GALAw3G,EAAKhjF,OAAO5I,UAAUjzB,EAAO8O,KAAM9O,EAAOqH,KACtCm4I,GACA3gC,EAAKhjF,OAAO5I,WAAWusH,EAAcn3J,GAAIm3J,EAAcp4J,GAG3C,UAAZ2I,GAAwBsS,EAAO,CAC/B,IAAI62H,EAAQ1f,EAAiBn3G,GAC7ByM,EAAOoqH,EAAM7wI,EAAI4H,EAAQ,EACzBoX,EAAM6xH,EAAM9xI,EAAIwI,EAAS0vJ,MACN,QAAZvvJ,GACP+e,EAAO+vG,EAAKhjF,OAAOxzC,EAAI4H,EAAQqvJ,EAC/Bj4I,EAAMw3G,EAAKr+C,SAASp5E,EAAIwI,EAAS,GACd,SAAZG,GACP+e,EAAO+vG,EAAKH,cAAcr2H,EAAIi3J,EAC9Bj4I,EAAMw3G,EAAKr+C,SAASp5E,EAAIwI,EAAS,GACd,UAAZG,GACP+e,EAAO+vG,EAAKr+C,SAASn4E,EAAI4H,EAAQ,EACjCoX,EAAMw3G,EAAKH,cAAct3H,EAAIk4J,IAE7BxwI,EAAO+vG,EAAKr+C,SAASn4E,EAAI4H,EAAQ,EACjCoX,EAAMw3G,EAAKhjF,OAAOz0C,EAAIwI,EAAS0vJ,GAGnC,MAAO,CACHxwI,KAAM6qG,EAAW7qG,EAAM9O,EAAO8O,KAAM9O,EAAO8O,KAAOpc,EAAKzC,OACvDoX,IAAKsyG,EAAWtyG,EAAKrH,EAAOqH,IAAKrH,EAAOqH,IAAM3U,EAAK9C,UAI3DO,KAAM,SAAS+yI,EAAO/4I,GAClBlH,KAAKsjH,MAAM28B,EAAOA,EAAOz3I,EAAW,GAAIxI,KAAKkH,QAASlH,KAAKm7J,gBAAgBlb,EAAM/4I,QAAQi1J,SAAUj1J,KAGvGiG,KAAM,WACF,IAAI+lF,EAAQlzF,KAAKkzF,MACbz/E,EAAUzT,KAAKmiJ,gBAEZniJ,KAAKmiJ,SACZhoH,aAAan6B,KAAKw8J,cACdtpE,GAASA,EAAM5mF,WAAamH,IAC3BzT,KAAK2gF,QAAQv2E,QAAQ,eAAgB,CAAEyB,QAAS4H,EAAQwsI,MAAO34I,OAAQmM,EAAQnM,OAAQ4rF,MAAOA,KAC/FA,EAAM5tC,SAIdw2G,WAAY,SAASn3J,GACjBA,EAAEwE,iBACFnJ,KAAKmN,QAGTm2G,MAAO,SAASh8G,EAAQ24I,EAAO/4I,EAASkY,EAAO+lB,GAC3C,IAAI1xB,EAAUzT,KAAKmiJ,SAInB,GAFAhoH,aAAan6B,KAAKgkE,WAEdvwD,KAAaA,EAAQwsI,QAAUA,GAAS/4I,EAAQ+0J,QAAWxoJ,EAAQnM,SAAWA,GAAlF,CAIA6yB,aAAan6B,KAAKw8J,cAElB,IAAItpE,EAAQlzF,KAAKg8J,WAEjB,IAAKh8J,KAAK2gF,QAAQv2E,QAAQ,cAAe,CAAEyB,QAASo0I,EAAO34I,OAAQA,EAAQ4rF,MAAOA,KAC9ElzF,KAAKo8J,eAAe90J,EAAQ24I,EAAO/4I,GAAU,CAE7ClH,KAAKy8J,UAAUv1J,GACf,IAAIylF,EAAc3sF,KAAK08J,SAASx1J,GAE5BgsF,EAAM5mF,WACN4mF,EAAM5tC,OAAM,GAGhBtlD,KAAKmiJ,SAAW,CACZj7I,QAASA,EACTylF,YAAaA,EACbszD,MAAOA,EACP34I,OAAQA,EACRwF,SAAU9M,KAAK0yF,UAAUxrF,EAAQ+0J,OAAShc,EAAQ34I,EAAQJ,EAASylF,EAAavtE,IAGhF+lB,EACAnlC,KAAKw8J,aAAezjI,WAAW/4B,KAAKq7J,kBAAmBn0J,EAAQi8G,WAAa,GAE5EnjH,KAAK2kH,gBAKjBA,WAAY,WACR,IACI73G,EADU9M,KAAKmiJ,SACIr1I,SAEvB9M,KAAKg8J,WAAWzqE,KAAKzkF,EAAS+e,KAAM/e,EAASsX,MAGjDq4I,UAAW,SAASv1J,GACZA,EAAQi7G,UAAYniH,KAAK28J,eACzB38J,KAAK6L,QAAQsgB,YAAY,sBACzBnsB,KAAK28J,aAAa5lI,gBACX/2B,KAAK28J,cAGXz1J,EAAQi7G,UAAaniH,KAAK28J,eAC3B38J,KAAK6L,QAAQ0Y,SAAS,sBACtBvkB,KAAK28J,aAAeh6J,EAAEs4J,GAAwB9tH,SAASntC,KAAK6L,WAIpE4vJ,WAAY,SAAS92J,GACjB,IAAIs7I,EAAQjgJ,KAAKk8J,cAAcv3J,EAAEkH,SAEjC,GAAIo0I,EAAO,CACP,IAAI/4I,EAAUsB,EAAW,GAAIxI,KAAKkH,QAASlH,KAAKm7J,gBAAgBlb,EAAM/4I,QAAQi1J,UAE1Ej1J,GAAWA,EAAQ+7G,QAAUt+G,EAAEe,MAC/B1F,KAAKsjH,MAAM3+G,EAAEkH,QAASo0I,EAAO/4I,EAASvC,EAAEgkB,eAAe,KAKnE+zI,SAAU,SAASx1J,GACflH,KAAK6L,QAAQe,IAAI,CACbI,MAAOgoH,EAAQ9tH,EAAQ8F,OAAS9F,EAAQ8F,MAAQ,OAChDL,OAAQqoH,EAAQ9tH,EAAQyF,QAAUzF,EAAQyF,OAAS,SAGvD,IAAIxF,EAAQnH,KAAK6L,QAAQ1E,QAAQgmC,SAAS/9B,SAAS6O,MAAMrR,IAAI,CAAEqgF,WAAY,WACvEjgF,EAAQjB,EAAW5E,GACnBwF,EAASV,EAAY9E,GAQzB,OAPAA,EAAM4vB,SAEN/2B,KAAK6L,QAAQe,IAAI,CACbI,MAAOA,EACPL,OAAQA,IAGL,CACHK,MAAOA,EACPL,OAAQA,IAIhBq4G,YAAa,SAASrgH,GAClB,GAAI3E,KAAKkzF,QAAUlzF,KAAK48J,oBAAoBj4J,EAAEgkB,eAAgB,CAC1D,IAAIwzI,EAAUn8J,KACVyT,EAAU0oJ,EAAQha,SAElB1uI,GAAWA,EAAQvM,QAAQi7G,WAC3Bg6C,EAAQn4F,SAAWjrC,YAAW,WAC1BoB,aAAagiI,EAAQK,cACrBL,EAAQhvJ,SACTsG,EAAQvM,QAAQq0J,WAAa,MAK5ClmB,WAAY,SAAS1wI,GACjB,IAAI8O,EAAUzT,KAAKmiJ,SACnB,GAAI1uI,GAAW9O,EAAEkH,QAAS,CACtB,IAAI3E,EAAUuM,EAAQvM,QACtB,GAAwB,UAApBA,EAAQ4F,SAAsB,CAC9B,IAAIA,EAAW9M,KAAK0yF,UAAU/tF,EAAEkH,QAAS3E,EAASuM,EAAQk5E,YAAahoF,EAAEgkB,eACzElV,EAAQ3G,SAAWA,EACnB9M,KAAKg8J,WAAW5vJ,QAAQQ,IAAI,CAAEif,KAAM/e,EAAS+e,KAAMzH,IAAKtX,EAASsX,SAK7Eu3I,cAAe,SAASh3J,GAChB3E,KAAKkzF,QAAUlzF,KAAK48J,oBAAoBj4J,KACxCw1B,aAAan6B,KAAKw8J,cAClBx8J,KAAKmN,SAIbyvJ,oBAAqB,SAASj4J,GAC1B,OAAOA,EAAEw2B,eAAiBx4B,EAAEgC,EAAEw2B,eAAe9uB,QAAQrM,KAAKkzF,MAAM9mF,SAAS5E,QAG7Eu0J,cAAe,WACX,IAAII,EAAUn8J,KACVyT,EAAU0oJ,EAAQha,SAClB1uI,GAAWA,EAAQvM,QAAQi7G,WAC3Bg6C,EAAQn4F,SAAWjrC,YAAW,WAC1BojI,EAAQhvJ,SACTsG,EAAQvM,QAAQq0J,WAAa,OAK5C56J,EAAMopB,QAAQmxI,eAAiBA,EAlVnC,CAoVGp6J,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IAAIhC,EAAQG,OAAOH,MACf60I,EAAO70I,EAAMopB,QACb8yI,EAAiBrnB,EAAKP,QACtBvkH,EAAS/vB,EAAMgpB,GAAG+G,OAClBloB,EAAa7H,EAAM6H,WAEvB7H,EAAM4C,QAAQszF,IAAMgmE,EAAet5J,QAAQszF,IAC3Cl2F,EAAM4C,QAAQg8I,OAASsd,EAAet5J,QAAQg8I,OAE9C,IAAItK,EAAUvkH,EAAO3tB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS3E,GACpBwpB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS,IAEnC7L,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAE5ClH,KAAKs8J,UAAYO,EAAe71G,OAAOhnD,KAAK6L,QAAQ,GAAI3E,GACpDlH,KAAKs8J,UAAUtsH,YACfhwC,KAAKgwC,UAAYA,GAGrBhwC,KAAK88J,wBAA0B98J,KAAK+8J,sBAAsBvzJ,KAAKxJ,MAC/DA,KAAKg9J,aAAa,SAClBh9J,KAAKg9J,aAAa,cAClBh9J,KAAKg9J,aAAa,cAClBh9J,KAAKg9J,aAAa,aAElBh9J,KAAKu1I,mBAGTruI,QAAS,CACL9E,KAAM,UACN+5J,QAAS,IAGb9xJ,OAAQ,CACJ,QACA,aACA,aACA,YACA,SACA,cACA,gBAGJ0yJ,sBAAuB,SAASp4J,GAC5B3E,KAAKoK,QAAQzF,EAAEe,KAAMf,IAGzBq4J,aAAc,SAAS59I,GACnBpf,KAAKs8J,UAAU9yJ,KAAK4V,EAAOpf,KAAK88J,0BAGpCtnB,KAAM,SAAS3pI,GACX7L,KAAKs8J,UAAU9mB,KAAK3pI,IAGxBoqD,MAAO,WACCj2D,KAAKs8J,WACLt8J,KAAKs8J,UAAUrmG,QAEnBj2D,KAAKi9J,eAGTj7J,QAAS,WACDhC,KAAKs8J,YACLt8J,KAAKs8J,UAAUt6J,iBACRhC,KAAKs8J,WAGZt8J,KAAKk9J,WACLl9J,KAAKk9J,SAASl7J,iBACPhC,KAAKk9J,UAGhBxsI,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,OAG3Bm1I,aAAc,WACV,OAAOn1I,KAAKs8J,UAAUnnB,gBAG1B1sH,YAAa,SAAS9jB,GAClB,OAAO3E,KAAKs8J,UAAU7zI,YAAY9jB,IAGtCw4J,YAAa,SAASld,EAAO/4I,GACrBlH,KAAKk9J,UACLl9J,KAAKk9J,SAAShwJ,KAAK+yI,EAAO/4I,IAIlC+1J,YAAa,WACLj9J,KAAKk9J,UACLl9J,KAAKk9J,SAAS/vJ,QAItBwoI,gBAAiB,WACb31I,KAAKs8J,UAAU3mB,kBACf31I,KAAKi9J,eAGTpnB,eAAgB,WACZ71I,KAAKs8J,UAAUzmB,kBAGnBjkH,QAAS,WACL,MAAO,CACH5kB,MAAOhN,KAAK6L,QAAQmB,QACpBL,OAAQ3M,KAAK6L,QAAQc,WAI7BslB,QAAS,SAASxiB,GACdzP,KAAK6L,QAAQe,IAAI,CACbI,MAAOyC,EAAKzC,MACZL,OAAQ8C,EAAK9C,SAGjB3M,KAAK8xB,MAAQriB,EACbzP,KAAKs8J,UAAUzqI,YAAYpiB,GAC3BzP,KAAK+xB,WAGTA,QAAS,WACL/xB,KAAKs8J,UAAUzqI,YAAY7xB,KAAK8xB,OAChC9xB,KAAKs8J,UAAUvqI,WAGnBwjH,gBAAiB,WACT50I,EAAMgpB,GAAGmnE,QACT9wF,KAAKk9J,SAAW,IAAI1nB,EAAK0lB,eAAel7J,KAAMA,KAAKkH,QAAQi1J,SAAW,QAalF,SAASnsH,EAAUjzB,GACf/c,KAAKs8J,UAAUtsH,UAAUjzB,GAT7Bpc,EAAMgpB,GAAGqN,OAAOi+G,GAEhBA,EAAQjuF,OAAS,SAASn7C,EAAS3E,GAC/B,OAAO,IAAI+tI,EAAQppI,EAAS3E,IAGhCvG,EAAMopB,QAAQkrH,QAAUA,EAhJ5B,CAsJGn0I,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IACIonB,EADQjpB,OAAOH,MACCopB,QAChB2tI,EAAU3tI,EAAQ2tI,QAEtB3tI,EAAQ2tI,QAAU,SAAS7rJ,EAAS3E,GAChC,OAAOwwJ,EAAQ/0J,EAAEkJ,GAAS,GAAI3E,IAIlC6iB,EAAQ2tI,QAAQvB,SAAWpsI,EAAQosI,SACnCpsI,EAAQ2tI,QAAQ7O,aAAe9+H,EAAQ8+H,aAZ3C,CAcG/nJ,OAAOH,MAAM+G,SAiBhB,SAAU/E,GAGV7B,OAAOH,MAAMmpB,QAAUhpB,OAAOH,MAAMmpB,SAAW,GAC/C,IAAIC,EAAUppB,MAAMopB,QAChB47F,EAAO57F,EAAQ47F,KACf2mB,EAAOviH,EAAQuiH,KACfkC,EAAQzkH,EAAQykH,MAChB5mI,EAAQjH,MAAMiH,MACdrE,EAAU5C,MAAM4C,QAChBq8H,EAAWj/H,MAAMi/H,SACjB1E,EAAO0E,EAAS1E,KAChBkD,EAASwB,EAASxB,OAClBg/B,EAAoBx9B,EAASrsF,UAC7B4zF,EAAUvH,EAASuH,QACnBr9G,EAAUnpB,MAAMmpB,QAEhBthB,EAAa7H,MAAM6H,WACnBU,EAAavI,MAAMuI,WACnBm0J,EAAqB18J,MAAMmuB,OAE3BwuI,EAAM,MACNC,EAAmB,iBACnBC,EAAQ,OACRttE,EAAS,SACTF,EAAS,SACTytE,EAAS,SAETC,EAAQ,QACRC,EAAO,OACPC,EAAe,kBAEfC,EAAoB,GAGpBC,EAAe,UACfzsH,EAAS,SAET0sH,EAAS,SACTtzI,EAAO,OACP6qG,EAAYhjH,OAAOgjH,UACnB0oC,GAAa1rJ,OAAOgjH,UACpBmhB,EAAO,OACPwnB,EAAa,YACbC,EAAa,YACbC,EAAa,YACb/3J,EAAS,SACTg4J,EAAU,UACVzzI,EAAQ,QACR0zI,EAAe,cAEfn4J,EAAS,SACT+pF,EAAM,MACNquE,EAAW,WAEXC,EAAQ,OACRntH,EAAQ,QACR/rC,EAAI,IACJ2P,EAAI,IAGJwpJ,EAAY,CACflB,IAAKA,EACLC,iBAAkBA,EAClBC,MAAOA,EACPttE,OAAQA,EACRF,OAAQA,EACRytE,OAAQA,EACRgB,gBAzCqB,EA0CrBf,MAAOA,EACPC,KAAMA,EACNC,aAAcA,EACdc,eAzCoB,IA0CpBb,kBAAmBA,EACnBc,cAzCmB,IA0CnB9zI,IAzCS,MA0CTizI,aAAcA,EACdzsH,OAAQA,EACRutH,iBAzCsB,IA0CtBb,OAAQA,EACRtzI,KAAMA,EACN6qG,UAAWA,EACX0oC,UAAWA,EACXvnB,KAAMA,EACNwnB,WAAYA,EACZC,WAAYA,EACZC,WAAYA,EACZ/3J,OAAQA,EACRg4J,QAASA,EACTzzI,MAAOA,EACP0zI,aAAcA,EACdriF,MAzCW,QA0CX91E,OAAQA,EACR+pF,IAAKA,EACLquE,SAAUA,EACVtwF,MAzCW,QA0CXuwF,MAAOA,EACPntH,MAAOA,EACP/rC,EAAGA,EACH2P,EAAGA,EACH6pJ,uBAzC4B,GA4C7B,SAAS57J,EAAQyF,GACb,OAAOxF,MAAMD,QAAQyF,GAczB,IAAIo2J,EAAc,OAQlB,SAASC,EAAiB3vH,GACtB,IAAIryB,EAAS,GACTqyB,EAAKloC,QAAQ22H,QAAUl9H,MAAMopB,QAAQ47F,KAAKqP,QAAQ5lF,EAAKloC,QAAQ22H,OAAO7wH,QAClEoiC,EAAKloC,QAAQ22H,OAAO7wH,MAAQ,GAAM,IAClC+P,EAAS,GAIjB,IAAK,IAAIxV,EAAI,EAAGA,EAAI6nC,EAAK87F,SAAS1jI,OAAQD,IACtC6nC,EAAK87F,SAAS3jI,GAAG4pF,SAASp7E,MAAM,GAAGi6B,UAAUjzB,EAAQA,GAGzD,OAAOqyB,EAGX,SAAS4vH,EAAUC,EAAQC,GAIvB,OAAQD,EAAO75J,EAAI85J,EAAO/6J,EAAI86J,EAAO96J,EAAI+6J,EAAO95J,EAAI,EAGxD,SAAS0vD,EAASpsD,GACd,MAAwB,iBAAVA,IAAuBI,MAAMJ,GAG/C,SAASE,EAASF,GACd,cAAcA,IAAUxC,EAO5B,SAASi5J,GAASz2J,GACd,MAAwB,iBAAVA,EAGlB,SAAS02J,GAAW12J,GAChB,OAAIosD,EAASpsD,GACFA,EAAQ,KAEZA,EAGX,IAAI22J,GAAoB,sCAExB,SAASC,GAAYr6I,GACjB,OAAOo6I,GAAkBtyJ,KAAKkY,GAuBlC,SAASs6I,GAAW72J,EAAO82J,QACA,IAAnBA,IAA6BA,EAAiB,GAElD,IAAIjwB,EAAU,CAAEnrH,IAAK,EAAG0H,MAAO,EAAGC,OAAQ,EAAGF,KAAM,GAWnD,MATsB,iBAAZ,EACN0jH,EAAW,IAAIA,EAAa,MAAIA,EAAc,OAAIA,EAAY,KAAI7mI,GAElE6mI,EAAW,IAAI7mI,EAAS,KAAK82J,EAC7BjwB,EAAa,MAAI7mI,EAAW,OAAK82J,EACjCjwB,EAAc,OAAI7mI,EAAY,QAAK82J,EACnCjwB,EAAY,KAAI7mI,EAAU,MAAK82J,GAG5BjwB,EAGX,IAAI97H,GAAU,CACV1D,QAAS,SAASF,GACd,OAAOA,IAIX4vJ,GAAkB73J,EAAM7E,OAAO,IAYnC,SAAS28J,GAAYx4J,GAGjB,IAAI2I,EAOJ,YATgB,IAAZ3I,IAAsBA,EAAU,IAGhCA,EAAQ2I,SACR3I,EAAQ2I,SAAWA,EAAW4vJ,GAAgB1vJ,QAAQ7I,EAAQ2I,UACvD3G,EAAWhC,EAAQq/C,WAC1B12C,EAAW3I,EAAQq/C,SAGhB12C,EAGX,SAASquB,GAAK1jB,EAAOwO,GAGjB,IAFA,IAAIxhB,EAASgT,EAAMhT,OACf+O,EAAS,GACJ3M,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBof,EAASxO,EAAM5Q,KACf2M,EAAQ5U,KAAK6Y,EAAM5Q,IAI3B,OAAO2M,EA9BXkpJ,GAAgBxoI,SAAW,SAAS0oI,GAChClsJ,GAAUksJ,GAGdF,GAAgB1vJ,QAAU,SAASF,EAAU3I,GACzC,OAAOuM,GAAQ1D,QAAQF,EAAU3I,IAuCrC,IAAI04J,GAAU,WACV5/J,KAAKm5D,KAAO,IAehB,SAAS9jC,GAAQ3sB,EAAO8R,GACpB,GAAIA,EACA,OAAiC,IAA1BA,EAAM7E,QAAQjN,GAd7Bk3J,GAAQv3J,UAAUknB,IAAM,SAAcntB,GAClC,OAAOpC,KAAKm5D,KAAKn5D,KAAK6/J,KAAKz9J,KAG/Bw9J,GAAQv3J,UAAUmnB,IAAM,SAAcptB,EAAMsG,GACxC1I,KAAKm5D,KAAKn5D,KAAK6/J,KAAKz9J,IAASsG,GAGjCk3J,GAAQv3J,UAAUw3J,KAAO,SAAez9J,GACpC,OAAOA,aAAgBgM,KAAOhM,EAAK6G,UAAY7G,GAanD,IAAI09J,GAAU,UAEVC,GAAmBn4J,EAAM7E,OAAO,CAChCoF,KAAM,SAASmsH,EAAU5qH,GACrB1J,KAAKs0H,SAAWA,EAChBt0H,KAAKggK,WAAax3J,EAAW,GAAIxI,KAAKggK,WAAYt2J,IAGtDU,QAAS,SAAShI,EAAM+0B,GACpB,IAGI9tB,EAFAirH,EADMt0H,KACSs0H,SACf0rC,EAFMhgK,KAEWggK,WAQrB,OANIA,EAAW59J,GACXiH,EAAqBrJ,KAAKigK,aAAaD,EAAW59J,GAAO+0B,GAClDm9F,EAAgB,UACvBjrH,EAAqBrJ,KAAKigK,aAAaH,GAAS19J,EAAM+0B,IAGnD9tB,GAGX42J,aAAc,SAASC,GAInB,IAHA,IAAI94J,EAAcC,UAEd8vB,EAAO,GAAI9G,EAAMhpB,UAAUG,OAAS,EAChC6oB,KAAQ,GAAM8G,EAAM9G,GAAQjpB,EAAaipB,EAAM,GAEvD,OAAOrwB,KAAKs0H,SAAS4rC,GAAQ93J,MAAMpI,KAAKs0H,SAAUn9F,IAGtDgpI,iBAAkB,SAAS/rJ,GAGvB,GAAIpU,KAAKs0H,SAAS6rC,iBACd,OAAOngK,KAAKs0H,SAAS6rC,iBAAiB/rJ,GAG1C,IAAK,IAAIxK,EAAM,EAAGA,EAAMwK,EAAM5M,OAAQoC,IAClC,GAPW5J,KAOEggK,WAAW5rJ,EAAMxK,IAC1B,OAAO,KAMvB,SAAS0Q,GAAIE,EAAOwO,GAGhB,IAFA,IAAIxhB,EAASgT,EAAMhT,OACf+O,EAAS,GACJ3M,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIlB,EAAQsgB,EAASxO,EAAM5Q,IACvBjJ,MAAMopB,QAAQ47F,KAAKqP,QAAQtsH,IAC3B6N,EAAO5U,KAAK+G,GAGpB,OAAO6N,EAGX,IAAIyL,GAAUze,EAAQye,SAAW,GAwBjC,IAAIiN,GAAMtuB,MAAMopB,QAAQ47F,KACpB5rE,GAAS9qB,GAAI8qB,OACbo9E,GAAaloG,GAAIkoG,WACjBnC,GAAU/lG,GAAI+lG,QACdQ,GAAMvmG,GAAIumG,IACV9R,GAAgBz0F,GAAIy0F,cACpB/2B,GAAc19D,GAAI09D,YAClB4pC,GAAmBtnG,GAAIsnG,iBACvBC,GAAevnG,GAAIunG,aACnB1D,GAAU7jG,GAAI6jG,QACd3wF,GAAOlT,GAAIkT,KACXu0F,GAAaznG,GAAIynG,WACjB7D,GAAY5jG,GAAI4jG,UAChBkE,GAAM9nG,GAAI8nG,IACVhhH,GAAQkZ,GAAIlZ,MACZ4hH,GAAe1oG,GAAI0oG,aACnBT,GAAiBjoG,GAAIioG,eAErBkpC,GAAax4J,EAAM7E,OAAO,IAuD9B,SAASs9J,GAAkB36J,EAAMwB,GAC7B,IAAIW,EAAQnC,EAAK2C,UACbR,EAAMX,QACNW,EAAMX,QAAUsB,EAAW,GAAIX,EAAMX,QAASA,GAE9CW,EAAMX,QAAUA,EAIxB,SAASo5J,GAAkB91H,GAIvB,IAHA,IAAIr0B,EAAMm/G,EACN18G,EAAMolJ,EAEDp0J,EAAM,EAAGpC,EAASgjC,EAAIhjC,OAAQoC,EAAMpC,EAAQoC,IAAO,CACxD,IAAIlB,EAAQ8hC,EAAI5gC,GACF,OAAVlB,GAAkBmJ,SAASnJ,KAC3ByN,EAAM9S,KAAK8S,IAAIA,EAAKzN,GACpBkQ,EAAMvV,KAAKuV,IAAIA,EAAKlQ,IAI5B,MAAO,CACHyN,IAAKA,IAAQm/G,OAAYwmB,EAAY3lI,EACrCyC,IAAKA,IAAQolJ,OAAYliB,EAAYljI,GA1E7CwnJ,GAAWG,WAAa,SAASr5J,EAASs5J,EAAOvtG,QAC/B,IAAVA,IAAoBA,EAAQ,CAAEwtG,MAAO,KAIpCv5J,GAAW+rD,EAAMwtG,MAFN,IAE4BrxJ,SAASoxJ,OAIrD//J,OAAOypB,KAAKhjB,GAAS5F,SAAQ,SAASiQ,GAClC,IAAI7I,EAAQxB,EAAQqK,GACR,eAARA,GAAmC,MAAXA,EAAI,IAAe7I,IAInC,SAAR6I,EACAivJ,EAAM7+J,KAAK+G,GACa,iBAAVA,IACduqD,EAAMwtG,QACNL,GAAWG,WAAW73J,EAAO83J,EAAOvtG,GACpCA,EAAMwtG,cAKlBL,GAAWM,UAAY,SAASF,EAAOx3I,GACnC,IAAIu1C,EAAW,GAEf,GAAIiiG,EAAMh5J,OAAS,GAAK4H,SAASoxJ,MAAO,CACpC,IACIjiG,EAAWiiG,EAAMlmJ,KAAI,SAASy8E,GAC1B,OAAO3nF,SAASoxJ,MAAM51F,KAAKmsB,MAEjC,MAAOpyF,GAELhE,MAAM2vB,aAAa3rB,GAGvBg8J,QAAQ5wF,IAAIxR,GAAUI,KAAK31C,EAAUA,QAErCA,KAIRo3I,GAAWQ,aAAe,SAAS15J,EAAS8hB,GACxC,IAAIw3I,EAAQ,GACZJ,GAAWG,WAAWr5J,EAASs5J,GAE/BJ,GAAWM,UAAUF,EAAOx3I,IAuChC,IAAI+uG,GAAS6H,EAAS7H,OAClBa,GAAe,iBAYnB,SAASC,GAAgBhtH,GACrB,IAAI0nC,EAAYjkC,iBAAiBzD,GAAS0nC,UAE1C,MAAkB,SAAdA,EACOwkF,GAAOM,OAdtB,SAAqBS,GACjB,IAAI3oH,EAAQ2oH,EAAa3oH,MAAMyoH,IAC/B,GAAc,OAAVzoH,GAAmC,IAAjBA,EAAM3I,OACxB,OAAOuwH,GAAOM,OAGlB,IAAI5pG,EAAUte,EAAM,GAAGvF,MAAM,KAAK0P,KAAI,SAAUlV,GAAK,OAAO2D,WAAW3D,MACvE,OAAO,IAAKiL,SAAShI,UAAUmB,KAAKpB,MAAO2vH,GAAQ,CAAE,MAAO16G,OAAQoR,KAU7DsqG,CAAYxlF,GA6BvB,IAAIstH,GAAU,GAEVC,GAAYl5J,EAAM7E,OAAO,CACzBoF,KAAM,SAAS2Q,GAGX9Y,KAAK+gK,OAAS,GACd/gK,KAAKghK,QAAUloJ,EAASA,EAAOlS,MAAM,GAAK,GAE1C,IAAK,IAAIW,EAAI,EAAGA,EAAIvH,KAAKghK,QAAQx5J,OAAQD,IAL1BvH,KAMF+gK,OANE/gK,KAMcghK,QAAQz5J,IAAMA,GAI/CuR,OAAQ,WACJ,OAAO9Y,KAAKghK,QAAQ/qI,QAAO,SAAU+Y,GAAQ,OAAOA,IAAS6xH,OAGjEI,IAAK,SAASv4J,GACV,YAA8BozI,IAAvB97I,KAAK+gK,OAAOr4J,IAGvBuE,IAAK,SAASvE,GACL1I,KAAKihK,IAAIv4J,KACV1I,KAAK+gK,OAAOr4J,GAAS1I,KAAKghK,QAAQx5J,OAClCxH,KAAKghK,QAAQr/J,KAAK+G,KAI1Bw4J,OAAQ,SAASx4J,GACb,IAAIqQ,EAAQ/Y,KAAK+gK,OAAOr4J,QACVozI,IAAV/iI,IACA/Y,KAAKghK,QAAQjoJ,GAAS8nJ,UACf7gK,KAAK+gK,OAAOr4J,KAI3ButD,MAAO,WACHj2D,KAAK+gK,OAAS,GACd/gK,KAAKghK,QAAU,MAInBvgK,OAAOu6H,kBACPv6H,OAAOu6H,iBAAiB8lC,GAAU/4J,GAAI,CAClC0H,KAAM,CACF8f,IAAK,WACD,OAAOvvB,KAAKghK,QAAQx5J,WAMpC,IAAI25J,GAAav5J,EAAM7E,OAAO,CAC1BoF,KAAM,SAAS2Q,GACX9Y,KAAKutD,KAAO,IAAI6zG,IAAItoJ,IAGxBA,OAAQ,WACJ,OAAO5V,MAAMi7B,KAAKn+B,KAAKutD,OAG3B0zG,IAAK,SAASv4J,GACV,OAAO1I,KAAKutD,KAAK0zG,IAAIv4J,IAGzBuE,IAAK,SAASvE,GACV1I,KAAKutD,KAAKtgD,IAAIvE,IAGlBw4J,OAAQ,SAASx4J,GACb1I,KAAKutD,KAAK2zG,OAAOx4J,IAGrButD,MAAO,WACHj2D,KAAKutD,KAAK0I,WAIdx1D,OAAOu6H,kBACPv6H,OAAOu6H,iBAAiBmmC,GAAWp5J,GAAI,CACnC0H,KAAM,CACF8f,IAAK,WACD,OAAOvvB,KAAKutD,KAAK99C,SAsDjC,SAAS4xJ,GAAclrJ,EAAKyC,GACxB,IAAIimB,EAAO9oB,GAAM6C,EAAMzC,EAAK0nJ,GAE5B,GAAa,IAATh/H,EAAY,CACZ,GAAY,IAARjmB,EACA,MAAO,GAGXimB,EAAOx7B,KAAK6T,IAAI0B,GAGpB,IAAI+2B,EAAQtsC,KAAKqmC,IAAI,GAAIrmC,KAAKkN,MAAMlN,KAAKotB,IAAIoO,GAAQx7B,KAAKotB,IAAI,MAC1D6wI,EAAgBvrJ,GAAO8oB,EAAO8Q,EAAQkuH,GAa1C,OAAO9nJ,GAAM45B,GAVT2xH,EAAgB,SACE,GACXA,EAAgB,SACL,GACXA,EAAgB,SACL,EAEA,GAGgBzD,GAG1C,IAAI7jC,GAAQpyH,EAAM7E,OAAO,CACrBoF,KAAM,SAAS/C,EAAGjB,GAEdnE,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,GAGlBgD,MAAO,WACH,OAAO,IAAI6yH,GAAMh6H,KAAKoF,EAAGpF,KAAKmE,IAGlC2sD,OAAQ,SAASupE,GACb,OAAOA,GAASr6H,KAAKoF,IAAMi1H,EAAMj1H,GAAKpF,KAAKmE,IAAMk2H,EAAMl2H,GAG3D4sC,OAAQ,SAASwsC,EAAQy5C,GACrB,IAAIuqC,EAAQxqC,GAAIC,GACZwqC,EAAOn+J,KAAKk1H,IAAIgpC,GAChBE,EAAOp+J,KAAKm1H,IAAI+oC,GAChBv9B,EAAKzmD,EAAOn4E,EACZ6+H,EAAK1mD,EAAOp5E,EAEZiB,EADMpF,KACEoF,EACRjB,EAFMnE,KAEEmE,EAYZ,OAVAnE,KAAKoF,EAAI2Q,GACLiuH,GAAM5+H,EAAI4+H,GAAMw9B,GAAQr9J,EAAI8/H,GAAMw9B,EA1rBxB,GA8rBdzhK,KAAKmE,EAAI4R,GACLkuH,GAAM9/H,EAAI8/H,GAAMu9B,GAAQp8J,EAAI4+H,GAAMy9B,EA/rBxB,GAmsBPzhK,MAGX+8H,SAAU,SAAS73H,GAKf,OAHAlF,KAAKoF,GAAKF,EACVlF,KAAKmE,GAAKe,EAEHlF,MAGXw6H,WAAY,SAASH,GACjB,IAAIh9C,EAAKr9E,KAAKoF,EAAIi1H,EAAMj1H,EACpBk4E,EAAKt9E,KAAKmE,EAAIk2H,EAAMl2H,EAExB,OAAOd,KAAKo6E,KAAKJ,EAAKA,EAAKC,EAAKA,MAIxC08C,GAAM0nC,SAAW,SAASnkF,EAAQ+6C,EAAO3sG,GACrC,IAAI8pG,EAAUsB,GAAIuB,GAElB,OAAO,IAAI0B,GACPz8C,EAAOn4E,EAAIumB,EAAStoB,KAAKk1H,IAAI9C,GAC7Bl4C,EAAOp5E,EAAIwnB,EAAStoB,KAAKm1H,IAAI/C,KAIrC,IAAIksC,GAAM/5J,EAAM7E,OAAO,CACnBoF,KAAM,SAAS80E,EAAIC,EAAIC,EAAIC,GAEvBp9E,KAAKi9E,GAAKA,GAAM,EAChBj9E,KAAKk9E,GAAKA,GAAM,EAChBl9E,KAAKm9E,GAAKA,GAAM,EAChBn9E,KAAKo9E,GAAKA,GAAM,GAGpBtsB,OAAQ,SAAS5X,GACb,OAAOl5C,KAAKi9E,KAAO/jC,EAAI+jC,IAAMj9E,KAAKm9E,KAAOjkC,EAAIikC,IACzCn9E,KAAKk9E,KAAOhkC,EAAIgkC,IAAMl9E,KAAKo9E,KAAOlkC,EAAIkkC,IAG9CpwE,MAAO,WACH,OAAOhN,KAAKm9E,GAAKn9E,KAAKi9E,IAG1BtwE,OAAQ,WACJ,OAAO3M,KAAKo9E,GAAKp9E,KAAKk9E,IAG1BltC,UAAW,SAASqtC,EAAIC,GAMpB,OALAt9E,KAAKi9E,IAAMI,EACXr9E,KAAKm9E,IAAME,EACXr9E,KAAKk9E,IAAMI,EACXt9E,KAAKo9E,IAAME,EAEJt9E,MAGXu6B,KAAM,SAASn1B,EAAGjB,GACd,IAAIwI,EAAS3M,KAAK2M,SACdK,EAAQhN,KAAKgN,QAYjB,OAVIgoH,GAAQ5vH,KACRpF,KAAKi9E,GAAK73E,EACVpF,KAAKm9E,GAAKn9E,KAAKi9E,GAAKjwE,GAGpBgoH,GAAQ7wH,KACRnE,KAAKk9E,GAAK/4E,EACVnE,KAAKo9E,GAAKp9E,KAAKk9E,GAAKvwE,GAGjB3M,MAGXgsB,KAAM,SAAS41I,GAMX,OALA5hK,KAAKi9E,GAAK55E,KAAK8S,IAAInW,KAAKi9E,GAAI2kF,EAAU3kF,IACtCj9E,KAAKk9E,GAAK75E,KAAK8S,IAAInW,KAAKk9E,GAAI0kF,EAAU1kF,IACtCl9E,KAAKm9E,GAAK95E,KAAKuV,IAAI5Y,KAAKm9E,GAAIykF,EAAUzkF,IACtCn9E,KAAKo9E,GAAK/5E,KAAKuV,IAAI5Y,KAAKo9E,GAAIwkF,EAAUxkF,IAE/Bp9E,MAGX6hK,UAAW,SAASxnC,GAChB,IAAIynC,EAAa7+J,EAAQo3H,GACrBj1H,EAAI08J,EAAaznC,EAAM,GAAKA,EAAMj1H,EAClCjB,EAAI29J,EAAaznC,EAAM,GAAKA,EAAMl2H,EAGtC,OAFAnE,KAAKgsB,KAAK,IAAI21I,GAAIv8J,EAAGjB,EAAGiB,EAAGjB,IAEpBnE,MAGX+hK,OAAQ,SAASH,EAAW58H,GAYxB,OAVIA,IAAS3/B,GAAM2/B,IACfhlC,KAAKi9E,GAAK2kF,EAAU3kF,GACpBj9E,KAAKm9E,GAAKykF,EAAUzkF,IAGpBn4C,IAAShwB,GAAMgwB,IACfhlC,KAAKk9E,GAAK0kF,EAAU1kF,GACpBl9E,KAAKo9E,GAAKwkF,EAAUxkF,IAGjBp9E,MAGXgiK,QAAS,SAASJ,EAAWzwE,GACzB,IAAIxkF,EAAS3M,KAAK2M,SACdK,EAAQhN,KAAKgN,QACbg4B,EAAOmsD,IAAWlB,GAAOkB,IAAWjB,EAASl7E,EAAI3P,EACjD0X,EAASioB,IAAShwB,EAAIrI,EAASK,EAEnC,GAAImkF,IAAWnB,EAAQ,CACnB,IAAIiyE,EAAeL,EAAUrkF,SACzBA,EAASv9E,KAAKu9E,SAElBv9E,KAAKi9E,IAAMglF,EAAa78J,EAAIm4E,EAAOn4E,EACnCpF,KAAKk9E,IAAM+kF,EAAa99J,EAAIo5E,EAAOp5E,OAEnCnE,KAAKglC,EAAO,GADLmsD,IAAWlB,GAAOkB,IAAW1mE,EACnBm3I,EAAU58H,EAAO,GAAKjoB,EAEtB6kJ,EAAU58H,EAAO,GAMtC,OAHAhlC,KAAKm9E,GAAKn9E,KAAKi9E,GAAKjwE,EACpBhN,KAAKo9E,GAAKp9E,KAAKk9E,GAAKvwE,EAEb3M,MAGXkiK,OAAQ,SAASC,EAAIC,GAKjB,OAHApiK,KAAKm9E,IAAMglF,EACXniK,KAAKo9E,IAAMglF,EAEJpiK,MAGXk8H,OAAQ,SAASimC,EAAIC,GAEjB,OADApiK,KAAKkiK,QAAQC,GAAKC,GACXpiK,MAGXwL,IAAK,SAASuqI,GACV,IAAIxG,EAAUgwB,GAAWxpB,GAOzB,OALA/1I,KAAKi9E,IAAMsyD,EAAQ1jH,KACnB7rB,KAAKm9E,IAAMoyD,EAAQzjH,MACnB9rB,KAAKk9E,IAAMqyD,EAAQnrH,IACnBpkB,KAAKo9E,IAAMmyD,EAAQxjH,OAEZ/rB,MAGXqiK,MAAO,SAAStsB,GACZ,IAAIxG,EAAUgwB,GAAWxpB,GAOzB,OALAxG,EAAQ1jH,MAAQ0jH,EAAQ1jH,KACxB0jH,EAAQnrH,KAAOmrH,EAAQnrH,IACvBmrH,EAAQzjH,OAASyjH,EAAQzjH,MACzByjH,EAAQxjH,QAAUwjH,EAAQxjH,OAEnB/rB,KAAKwL,IAAI+jI,IAGpBpoI,MAAO,WACH,OAAO,IAAIw6J,GAAI3hK,KAAKi9E,GAAIj9E,KAAKk9E,GAAIl9E,KAAKm9E,GAAIn9E,KAAKo9E,KAGnDG,OAAQ,WACJ,OAAO,IAAIy8C,GACPh6H,KAAKi9E,GAAKj9E,KAAKgN,QAAU,EACzBhN,KAAKk9E,GAAKl9E,KAAK2M,SAAW,IAIlCyvH,cAAe,SAAS/B,GAEpB,OAAOA,EAAMj1H,GAAKpF,KAAKi9E,IAAMo9C,EAAMj1H,GAAKpF,KAAKm9E,IACtCk9C,EAAMl2H,GAAKnE,KAAKk9E,IAAMm9C,EAAMl2H,GAAKnE,KAAKo9E,IAGjDikD,OAAQ,WACJ,MAAO,CACH,IAAIrH,GAAMh6H,KAAKi9E,GAAIj9E,KAAKk9E,IACxB,IAAI88C,GAAMh6H,KAAKm9E,GAAIn9E,KAAKk9E,IACxB,IAAI88C,GAAMh6H,KAAKm9E,GAAIn9E,KAAKo9E,IACxB,IAAI48C,GAAMh6H,KAAKi9E,GAAIj9E,KAAKo9E,MAIhCklF,QAAS,WACL,MAAO,CAAEtiK,KAAKi9E,GAAIj9E,KAAKk9E,GAAIl9E,KAAKm9E,GAAIn9E,KAAKo9E,IAAKvyE,KAAK,MAGvD03J,SAAU,SAASrpH,GACf,QAASA,EAAIkkC,GAAKp9E,KAAKk9E,IAAMl9E,KAAKo9E,GAAKlkC,EAAIgkC,IAAMhkC,EAAIikC,GAAKn9E,KAAKi9E,IAAMj9E,KAAKm9E,GAAKjkC,EAAI+jC,KAGvFlsC,OAAQ,SAAS4I,GACb,IAAI3sC,EAAQhN,KAAKgN,QACbL,EAAS3M,KAAK2M,SACdsiB,EAAMjvB,KAAKu9E,SACXymD,EAAK/0G,EAAI7pB,EACT6+H,EAAKh1G,EAAI9qB,EAETq+J,EAAKC,GAAY,EAAG,EAAGz+B,EAAIC,EAAItqF,GAC/B+oH,EAAKD,GAAYz1J,EAAO,EAAGg3H,EAAIC,EAAItqF,GACnCgpH,EAAKF,GAAYz1J,EAAOL,EAAQq3H,EAAIC,EAAItqF,GACxCipH,EAAKH,GAAY,EAAG91J,EAAQq3H,EAAIC,EAAItqF,GAQxC,OANA3sC,EAAQ3J,KAAKuV,IAAI4pJ,EAAGp9J,EAAGs9J,EAAGt9J,EAAGu9J,EAAGv9J,EAAGw9J,EAAGx9J,GAAK/B,KAAK8S,IAAIqsJ,EAAGp9J,EAAGs9J,EAAGt9J,EAAGu9J,EAAGv9J,EAAGw9J,EAAGx9J,GACzEuH,EAAStJ,KAAKuV,IAAI4pJ,EAAGr+J,EAAGu+J,EAAGv+J,EAAGw+J,EAAGx+J,EAAGy+J,EAAGz+J,GAAKd,KAAK8S,IAAIqsJ,EAAGr+J,EAAGu+J,EAAGv+J,EAAGw+J,EAAGx+J,EAAGy+J,EAAGz+J,GAE1EnE,KAAKm9E,GAAKn9E,KAAKi9E,GAAKjwE,EACpBhN,KAAKo9E,GAAKp9E,KAAKk9E,GAAKvwE,EAEb3M,MAGX6iK,OAAQ,WACJ,OAAO,IAAI3nC,EAAK,CAAEl7H,KAAKi9E,GAAIj9E,KAAKk9E,IAAM,CAAEl9E,KAAKgN,QAAShN,KAAK2M,YAG/Dm2J,QAAS,WACL,OAAwB,IAAjB9iK,KAAKgN,SAAmC,IAAlBhN,KAAK2M,UAGtCsiI,MAAO,SAAS2yB,EAAW58H,EAAMysG,GAC7B,IAAIthB,EAAKnrF,EAAO,EACZorF,EAAKprF,EAAO,EACZ+9H,EAAW/9H,IAAS3/B,EAAI+rC,EAAQC,EAChC5hC,EAAOzP,KAAK+iK,KAEZ1tI,GAAQo8G,EAAW,CAAEhnH,EAAMwlE,KAC3BjwF,KAAKmwH,GAAMyxC,EAAUzxC,GACrBnwH,KAAKowH,GAAMpwH,KAAKmwH,GAAM1gH,GACf4lB,GAAQo8G,EAAW,CAAE9mH,EAAOulE,KACnClwF,KAAKowH,GAAMwxC,EAAUxxC,GACrBpwH,KAAKmwH,GAAMnwH,KAAKowH,GAAM3gH,GACfgiI,IAAczhD,IACrBhwF,KAAKmwH,GAAMyxC,EAAUzxC,IAAOyxC,EAAUmB,KAActzJ,GAAQ,EAC5DzP,KAAKowH,GAAMpwH,KAAKmwH,GAAM1gH,MAKlC,SAASgzJ,GAAYr9J,EAAGjB,EAAG6/H,EAAIC,EAAI3L,GAC/B,IAAIipC,EAAQxqC,GAAIuB,GAEhB,OAAO,IAAI0B,GACPgK,GAAM5+H,EAAI4+H,GAAM3gI,KAAKk1H,IAAIgpC,IAAUp9J,EAAI8/H,GAAM5gI,KAAKm1H,IAAI+oC,GACtDt9B,GAAM7+H,EAAI4+H,GAAM3gI,KAAKm1H,IAAI+oC,IAAUp9J,EAAI8/H,GAAM5gI,KAAKk1H,IAAIgpC,IAI9D,IAAIyB,GAAOp7J,EAAM7E,OAAO,CACpBoF,KAAM,SAASo1E,EAAQ0lF,EAAat3I,EAAQ60G,EAAYlI,GAEpDt4H,KAAKu9E,OAASA,EACdv9E,KAAKijK,YAAcA,EACnBjjK,KAAK2rB,OAASA,EACd3rB,KAAKwgI,WAAaA,EAClBxgI,KAAKs4H,MAAQA,GAGjBnxH,MAAO,WACH,OAAO,IAAI67J,GAAKhjK,KAAKu9E,OAAQv9E,KAAKijK,YAAajjK,KAAK2rB,OAAQ3rB,KAAKwgI,WAAYxgI,KAAKs4H,QAGtF4qC,OAAQ,WACJ,OAAOljK,KAAKwgI,WAAaxgI,KAAKs4H,MAAQ,GAG1CgG,UAAW,SAAS6kC,EAAWF,GAO3B,OANIA,EACAjjK,KAAKijK,YAAcE,EAEnBnjK,KAAK2rB,OAASw3I,EAGXnjK,MAGXq6H,MAAO,SAAS/B,EAAO2qC,GACnB,IAAIG,EAAcrsC,GAAIuB,GAClB+qC,EAAKhgK,KAAKk1H,IAAI6qC,GACdE,EAAKjgK,KAAKm1H,IAAI4qC,GACdz3I,EAASs3I,EAAcjjK,KAAKijK,YAAcjjK,KAAK2rB,OAC/CvmB,EAAI2Q,GAAM/V,KAAKu9E,OAAOn4E,EAAKi+J,EAAK13I,EAv+BtB,GAw+BVxnB,EAAI4R,GAAM/V,KAAKu9E,OAAOp5E,EAAKm/J,EAAK33I,EAx+BtB,GA0+Bd,OAAO,IAAIquG,GAAM50H,EAAGjB,IAGxBo/J,YAAa,SAAS/lF,EAAUxwE,EAAOL,GACnC,IAAI62J,EAASxjK,KAAKmH,QAAQ+0H,OAAO1+C,GAC7BimF,EAAWD,EAAON,SAClBQ,EAAWF,EAAOnpC,MAAMopC,GACxBE,EAAK32J,EAAQ,EACb42J,EAAKj3J,EAAS,EACd4mJ,EAAKlwJ,KAAKm1H,IAAIzB,GAAI0sC,IAClBI,EAAKxgK,KAAKk1H,IAAIxB,GAAI0sC,IAClBr+J,EAAIs+J,EAASt+J,EAAIu+J,EACjBx/J,EAAIu/J,EAASv/J,EAAIy/J,EAUrB,OARIvgK,KAAK6T,IAAIq8I,GAAM,KACfnuJ,GAAKu+J,GAAME,EAAKxgK,KAAK6T,IAAI2sJ,IAGzBxgK,KAAK6T,IAAI2sJ,GAAM,KACf1/J,GAAKy/J,GAAMrQ,EAAKlwJ,KAAK6T,IAAIq8I,IAGtB,IAAIoO,GAAIv8J,EAAGjB,EAAGiB,EAAI4H,EAAO7I,EAAIwI,IAGxCyvH,cAAe,SAASrL,GACpB,IAAIxzC,EAASv9E,KAAKu9E,OACd0lF,EAAcjjK,KAAKijK,YACnBt3I,EAAS3rB,KAAK2rB,OACd60G,EAAaxgI,KAAKwgI,WAClBC,EAAWzgI,KAAKwgI,WAAaxgI,KAAKs4H,MAClCj7C,EAAK0zC,EAAE3rH,EAAIm4E,EAAOn4E,EAClBk4E,EAAKyzC,EAAE5sH,EAAIo5E,EAAOp5E,EAClB2/J,EAAS,IAAI9pC,GAAM38C,EAAIC,GACvB+kD,EAAariI,KAAKq6H,MAAMmG,GACxBujC,EAAc,IAAI/pC,GAAMqI,EAAWj9H,EAAIm4E,EAAOn4E,EAAGi9H,EAAWl+H,EAAIo5E,EAAOp5E,GACvEu9H,EAAW1hI,KAAKq6H,MAAMoG,GACtBujC,EAAY,IAAIhqC,GAAM0H,EAASt8H,EAAIm4E,EAAOn4E,EAAGs8H,EAASv9H,EAAIo5E,EAAOp5E,GACjE8/J,EAAOluJ,GAAMsnE,EAAKA,EAAKC,EAAKA,EAhhClB,GAkhCd,OAAQymF,EAAYjzG,OAAOgzG,IAAW9E,EAAU+E,EAAaD,MACrD9E,EAAUgF,EAAWF,IACtBG,GAAQhB,EAAcA,GAAegB,GAAQt4I,EAASA,GAGjEu4I,QAAS,WACL,IASIC,EAPAjrH,EAAM,IAAIyoH,GAAIrsC,EAAWA,EAAW0oC,EAAWA,GAC/Cx9B,EAAazqH,GAAM/V,KAAKwgI,WAAa,KACrCC,EAAW1qH,IAAOyqH,EAAaxgI,KAAKs4H,OAAS,KAC7C2qC,EAAcjjK,KAAKijK,YACnBmB,EAAY,CAAE,EAAG,GAAI,IAAK,IAAK5jC,EAAYC,GAAWv7G,KAAKm/I,IAC3DC,EAAkBF,EAAUzuJ,QAAQ6qH,GACpC+jC,EAAgBH,EAAUzuJ,QAAQ8qH,GAIlC0jC,EADA3jC,IAAeC,EACN2jC,EAELE,EAAkBC,EACTH,EAAUx9J,MAAM09J,EAAiBC,EAAgB,GAEjD,GAAGlnJ,OACR+mJ,EAAUx9J,MAAM,EAAG29J,EAAgB,GACnCH,EAAUx9J,MAAM09J,EAAiBF,EAAU58J,SAKvD,IAAK,IAAID,EAAI,EAAGA,EAAI48J,EAAO38J,OAAQD,IAAK,CACpC,IAAI8yH,EAzBOr6H,KAyBUq6H,MAAM8pC,EAAO58J,IAClC2xC,EAAI2oH,UAAUxnC,GACdnhF,EAAI2oH,UAAUxnC,EAAO4oC,GAOzB,OAJKA,GACD/pH,EAAI2oH,UAAU7hK,KAAKu9E,QAGhBrkC,GAGXgjF,OAAQ,SAASxzH,GAEb,OADA1I,KAAK2rB,QAAUjjB,EACR1I,QAIf,SAASqkK,GAAgBn/J,EAAGigB,GACxB,OAAOjgB,EAAIigB,EAGf,IAAIq/I,GAASxB,GAAKjgK,OAAO,CACrBoF,KAAM,SAASo1E,EAAQ5xD,EAAQ60G,EAAYlI,GACvC0qC,GAAKj7J,GAAGI,KAAKoC,KAAKvK,KAAMu9E,EAAQ,EAAG5xD,EAAQ60G,EAAYlI,IAG3D4D,OAAQ,SAASxzH,GACb,OAAOs6J,GAAKj7J,GAAGm0H,OAAO3xH,KAAKvK,KAAM0I,IAGrCvB,MAAO,WACH,OAAO,IAAIq9J,GAAOxkK,KAAKu9E,OAAQv9E,KAAK2rB,OAAQ3rB,KAAKwgI,WAAYxgI,KAAKs4H,QAGtEgG,UAAW,SAAS6kC,GAGhB,OAFAnjK,KAAK2rB,OAASw3I,EAEPnjK,QAMXykK,GAAe78J,EAAM7E,OAAO,CAC5B2hK,WAAY,SAASlB,EAAQt8J,GACzB,IAAIs5H,EAAagjC,EAAOhjC,WAAa,IACjCC,EAAW+iC,EAAOlrC,MAAQkI,EAG1BgjC,EAAOlrC,MAAQ,GAAKkI,IAAeC,IACnCA,GATU,MAYd,IAAIljD,EAAS,IAAIqiD,EAAS5F,MAAMwpC,EAAOjmF,OAAOn4E,EAAGo+J,EAAOjmF,OAAOp5E,GAC3DwnB,EAAStoB,KAAKuV,IAAI4qJ,EAAO73I,OAAQ,GACjCs3I,EAAc5/J,KAAKuV,IAAI4qJ,EAAOP,YAAa,GAC3Cv2B,EAAM,IAAI9M,EAASS,IAAI9iD,EAAQ,CAC/BijD,WAAYA,EACZC,SAAUA,EACVH,QAAS30G,EACT40G,QAAS50G,IAETyjB,EAAOk9F,EAAKyB,QAAQrB,EAAKxlI,GAASo+C,QAEtC,GAAI29G,EAAa,CACbv2B,EAAIpM,QAAUoM,EAAInM,QAAU0iC,EAC5B,IAAI0B,EAAWj4B,EAAIlO,QAAQiC,GAC3BrxF,EAAKw7F,OAAO+5B,EAASv/J,EAAGu/J,EAASxgK,GACjCirC,EAAKs9F,IAAIjM,EAAUD,EAAYyiC,EAAaA,GAAa,QAEzD7zH,EAAKw7F,OAAOrtD,EAAOn4E,EAAGm4E,EAAOp5E,GAGjC,OAAOirC,KAIfq1H,GAAahxJ,QAAU,IAAIgxJ,GAE3B,IAAIG,GAAeh9J,EAAM7E,OAAO,CAC5BoF,KAAM,SAASjB,GAEXlH,KAAKm1C,SAAW,GAEhBn1C,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASlH,KAAK6kK,gBAAgB39J,KAGrE29J,gBAAiB,SAAS39J,GACtB,OAAOA,GAGXkpI,OAAQ,SAASwxB,GAIb,IAHA,IACI1oH,EADA/D,EAAWn1C,KAAKm1C,SAGX5tC,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IAAK,CACtC,IAAIu9J,EAAe3vH,EAAS5tC,GAC5Bu9J,EAAa10B,OAAOwxB,GAEpB1oH,EAAMA,EAAMA,EAAIltB,KAAK84I,EAAa5rH,KAAO4rH,EAAa5rH,IAAI/xC,QAG9DnH,KAAKk5C,IAAMA,GAAO0oH,GAGtB5/J,QAAS,WACL,IAAImzC,EAAWn1C,KAAKm1C,SAEhBn1C,KAAKsxF,WACLtxF,KAAKsxF,UAAUtvF,UAGnB,IAAK,IAAIuF,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IACjC4tC,EAAS5tC,GAAGvF,WAIpB+iK,QAAS,WACL,IAAI54J,EAASnM,KAAKmM,OAElB,OAAOA,EAASA,EAAO44J,UAAY,MAGvCC,UAAW,WACP,IAAIC,EAAUjlK,KAAKklK,aACnB,GAAID,EACA,OAAOA,EAAQ36J,QAIvB46J,WAAY,WAER,IADA,IAAIr5J,EAAU7L,KACP6L,GAAS,CACZ,GAAIA,EAAQs5J,aACR,OAAOt5J,EAAQs5J,aAEnBt5J,EAAUA,EAAQM,SAI1Bi5J,kBAAmB,SAAS/nF,EAAIC,GAI5B,IAHA,IAAInoC,EAAWn1C,KAAKm1C,SAChBkwH,EAAgBlwH,EAAS3tC,OAEpBD,EAAI,EAAGA,EAAI89J,EAAe99J,IAC/B4tC,EAAS5tC,GAAG2xC,IAAIlJ,UAAUqtC,EAAIC,IAItCvjC,OAAQ,WAIJ,IAHA,IAAI3yC,EAAcC,UACd8pH,EAAWnxH,KAENuH,EAAI,EAAGA,EAAIF,UAAUG,OAAQD,IAAK,CACvC,IAAIynC,EAAO5nC,EAAYG,GACvB4pH,EAASh8E,SAASxzC,KAAKqtC,GACvBA,EAAK7iC,OAASglH,IAItBm0C,aAAc,YACmB,IAAzBtlK,KAAKkH,QAAQoF,UAIjBtM,KAAKulK,eAELvlK,KAAKwlK,YAELxlK,KAAKm4I,iBAELn4I,KAAKylK,kBACLzlK,KAAK0lK,mBAGTF,UAAW,WACHxlK,KAAKk+I,SACLl+I,KAAKk+I,OAAOynB,aAAe3lK,KAEvBA,KAAKmM,QACLnM,KAAKmM,OAAOy5J,aAAa5lK,KAAKk+I,UAK1C/F,eAAgB,WAGZ,IAFA,IAAIhjG,EAAWn1C,KAAKm1C,SAChB3tC,EAAS2tC,EAAS3tC,OACbD,EAAI,EAAGA,EAAIC,EAAQD,IACxB4tC,EAAS5tC,GAAG+9J,gBAIpBC,aAAc,WACVvlK,KAAKk+I,OAAS,IAAI1P,EAAM,CACpB50F,OAAQ55C,KAAKkH,QAAQ0yC,OACrBttC,QAAS4qH,GAAel3H,KAAKkH,QAAQoF,SAAS,MAItDm5J,gBAAiB,WACTzlK,KAAKk+I,QAAUl+I,KAAKkH,QAAQoqF,YAC5BtxF,KAAKsxF,UAAYvnE,EAAQ2xB,UAAUsL,OAC/BhnD,KAAKk+I,OAAQl+I,KAAKkH,QAAQoqF,aAKtCs0E,aAAc,SAASC,GACdA,EAAYF,eACbE,EAAYF,aAAe3lK,MAG3B6lK,EAAY3+J,QAAQ4+J,OACpB9lK,KAAK+lK,WAAW7nB,OAAOnkG,OAAO8rH,GACvB7wC,GAAQ6wC,EAAY3+J,QAAQ0yC,QACnC55C,KAAKgmK,YAAYC,YAAYJ,GACtB7lK,KAAKkmK,YACZlmK,KAAKimK,YAAYJ,GACV7lK,KAAKk+I,OACZl+I,KAAKk+I,OAAOnkG,OAAO8rH,GAInB7lK,KAAKmM,OAAOy5J,aAAaC,IAIjCE,SAAU,WACN,OAAI/lK,KAAKmM,OACEnM,KAAKmM,OAAO45J,WAGhB/lK,MAGXgmK,UAAW,WACP,OAAIhmK,KAAKmM,OACEnM,KAAKmM,OAAO65J,YAGhBhmK,MAGXimK,YAAa,SAASJ,GAClB,IAGIxxE,EAHAz6C,EAASisH,EAAY3+J,QAAQ0yC,QAAU,EACvCusH,EAAUnmK,KAAKk+I,OAAO/oG,SACtB3tC,EAAS2+J,EAAQ3+J,OAGrB,IAAK6sF,EAAM,EAAGA,EAAM7sF,EAAQ6sF,IAAO,CAC/B,IAAI+xE,EAAUD,EAAQ9xE,GAEtB,GADW6iC,GAAekvC,EAAQl/J,QAAQ0yC,OAAQ,GACvCA,EACP,MAIR55C,KAAKk+I,OAAOthF,OAAOy3B,EAAKwxE,IAG5Bt3B,SAAU,SAASvlH,GAIf,IAHA,IAAImsB,EAAWn1C,KAAKm1C,SAChB3tC,EAAS2tC,EAAS3tC,OAEbD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIm8B,EAAQyR,EAAS5tC,GAErByhB,EAAS0a,GACLA,EAAM6qG,UACN7qG,EAAM6qG,SAASvlH,KAK3B3c,QAAS,SAAS8D,GAId,IAHA,IAAItE,EAAU7L,KACVqmK,GAAU,EAEPx6J,IAAYw6J,IACfA,EAAUl2J,EAAMtE,MAGZA,EAAUA,EAAQM,QAI1B,GAAIk6J,EACA,OAAOx6J,GAIf65J,eAAgB,aAEhBY,aAAc,WACV,IAAIp/J,GAAWlH,KAAKkH,SAAW,IAAIq/J,UACnC,SAAUvmK,KAAKwmK,iBAAoBt/J,IAA+B,IAApBA,EAAQoF,UAG1Dm6J,gBAAiB,SAASv5J,EAAM0pB,GAC5B,IAAIu6F,EAAWnxH,KAEXkH,GAAWlH,KAAKkH,SAAW,IAAIq/J,WAAa,GAC5CG,EAAex/J,EAAQg3I,OACvBqoB,EAAYvmK,KAAK2mK,WAErB,IAAKJ,EAAW,CACZ,IAAIK,EAAmB,CACnB3zI,KAAM,CACFm8F,MAAOmvC,EACP3nI,QAASA,GAAW,IAExBinG,OAAQ,CACJzO,MAAOmvC,EACPvxJ,MAAO,EACP4pB,QAASA,GAAW,KAI5B,GAAI8vI,GAeA,KAdAH,EAAYvmK,KAAK2mK,WAAaD,EAC1B/jK,EAAEI,OAAO/C,KAAK6mK,sBAAuB,CACjCtB,aAAc,WAAc,OAAOp0C,EAASq1C,gBAAgBI,IAC5Dt8J,OAAQtK,KAAKglK,YACbl2H,OAAQ9uC,KAAK8uC,OACbza,SAAUr0B,KAAKq0B,SACfyyI,SAAU9mK,KAAK8mK,SACfp+J,MAAO1I,KAAK0I,MACZujB,WAAYjsB,KAAKisB,WACjB86I,aAAc/mK,KAAK+mK,aACnBngH,MAAO5mD,KAAK4mD,UAKhB,YAGJ2/G,EAAYvmK,KAAK2mK,WAAa3mK,KAAKwmK,gBAAgBI,GAGlD5xC,GAAQuxC,EAAUr/J,QAAQ0yC,UAC3B2sH,EAAUr/J,QAAQ0yC,OAASs9E,GAAehwH,EAAQ0yC,OAAQ55C,KAAKkH,QAAQ0yC,SAG3E55C,KAAK4lK,aAAaW,GAGtBA,EAAUj6J,QAAQY,IAGtB85J,sBAAuB,SAASn7J,EAAS3E,EAAS+/J,GAC9C,IAAIC,EAAU,IAAI56B,EAAK3pI,EAAEI,OAAO,CAC5B86H,OAAQ,CACJzO,MAAO,QAEXn8F,KAAMjzB,KAAKmnK,eAAeF,GAC1Br6B,OAAQ/gI,EAAQ3E,QAAQ0lI,QACzB1lI,IAIH,OAFAggK,EAAQh8B,SAAS/2G,SAAStoB,EAAQq/H,SAAS/2G,YAEpC+yI,GAGXC,eAAgB,SAASjgK,GACrB,GAAIlH,KAAKmM,OACL,OAAOnM,KAAKmM,OAAOg7J,eAAejgK,IAI1CkgK,6BAA8B,WAC1B,OAAO,KAIfxC,GAAav8J,UAAUnB,QAAU,GAEjC,IAAImgK,GAAazC,GAAa7hK,OAAO,CACjCoF,KAAM,SAASjB,GACX09J,GAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKkH,QAAQyxC,OAAS4mH,GAAWv/J,KAAKkH,QAAQyxC,QAC9C34C,KAAKkH,QAAQ6uI,QAAUwpB,GAAWv/J,KAAKkH,QAAQ6uI,UAGnD3F,OAAQ,SAASwxB,GACb,IAUI1oH,EAVAi4E,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACf8F,EAAQ9F,EAAQ8F,MAChBL,EAASzF,EAAQyF,OACjB26J,EAAcpgK,EAAQogK,YACtBC,EAAav6J,GAASL,EACtBgsC,EAASzxC,EAAQyxC,OACjBo9F,EAAU7uI,EAAQ6uI,QAClByxB,EAActgK,EAAQugK,OAAOz6J,MAG7B06J,EAAmB,WACnBv2C,EAAS8d,MAAM2yB,EAAWv8J,EAAG6B,EAAQ+nI,OACrC9d,EAAS8d,MAAM2yB,EAAW5sJ,EAAG9N,EAAQmwJ,QACrClmC,EAASw2C,WAAazuH,EAAI/xC,QAAQk7J,MAAM1pH,GAAQ0pH,MAAMmF,IAGtDI,EAAahG,EAAUz6J,QACvBogK,IACAK,EAAWzqF,GAAKyqF,EAAW3qF,GAAKjwE,EAChC46J,EAAWxqF,GAAKwqF,EAAW1qF,GAAKvwE,GAGhC26J,GACAM,EAAWvF,MAAM1pH,GAAQ0pH,MAAMmF,GAAanF,MAAMtsB,GAGtD6uB,GAAa78J,GAAGqoI,OAAO7lI,KAAKvK,KAAM4nK,GAG9B1uH,EADAquH,EACMvnK,KAAKk5C,IAAM,IAAIyoH,GAAI,EAAG,EAAG30J,EAAOL,GAEhC3M,KAAKk5C,IAGXouH,GAAeC,GACfG,IACAE,EAAa5nK,KAAK4nK,WAAa5nK,KAAK2nK,WAAWxgK,QAAQk7J,MAAMtsB,KAE7D6xB,EAAa5nK,KAAK4nK,WAAa1uH,EAAI/xC,QACnC+xC,EAAI1tC,IAAIuqI,GAASvqI,IAAIg8J,GAAah8J,IAAImtC,GACtC+uH,KAGJ1nK,KAAKolK,kBACDlsH,EAAI+jC,GAAK2qF,EAAW3qF,GAAKtkC,EAAO9sB,KAAO27I,EAAczxB,EAAQlqH,KAC7DqtB,EAAIgkC,GAAK0qF,EAAW1qF,GAAKvkC,EAAOv0B,IAAMojJ,EAAczxB,EAAQ3xH,KAIhE,IADA,IAAI+wB,EAAWn1C,KAAKm1C,SACX5tC,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IAAK,CACtC,IAAIynC,EAAOmG,EAAS5tC,GACpBynC,EAAKohG,OAAOphG,EAAKkK,OAIzB+1F,MAAO,SAAS2yB,EAAW58H,EAAMysG,GAC7BzxI,KAAKk5C,IAAI+1F,MAAM2yB,EAAW58H,EAAMysG,IAGpCo2B,OAAQ,WACJ,IAAI3gK,EAAUlH,KAAKkH,QACnB,OAAOA,EAAQugK,OAAOz6J,OAAS9F,EAAQ+qJ,YAG3CsT,aAAc,WACVX,GAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAEpBA,KAAKkH,QACPoF,SAAWtM,KAAK6nK,UACxB7nK,KAAKk+I,OAAOnkG,OAAOuyF,EAAKc,SACpBptI,KAAK2nK,WAAW9E,SAChB7iK,KAAK8nK,iBAKjBA,YAAa,WACT,IAAI5gK,EAAUlH,KAAKkH,QACfugK,EAASvgK,EAAQugK,QAAU,GAE/B,MAAO,CACH5pC,OAAQ,CACJ7wH,MAAOy6J,EAAOz6J,MACdoiH,MAAOq4C,EAAOr4C,MACdx4F,QAASsgG,GAAeuwC,EAAO7wI,QAAS1vB,EAAQ0vB,SAChDolH,SAAUyrB,EAAOzrB,UAErB/oH,KAAM,CACFm8F,MAAOloH,EAAQ+qJ,WACfr7H,QAAS1vB,EAAQ0vB,SAErB+hH,OAAQzxI,EAAQyxI,WAK5B0nB,GAAkBgH,GAAY,CAC1Bp4B,MAAOxkH,EACP4sI,OAAQpnE,EACRt3C,OAAQ,GACRo9F,QAAS,GACT0xB,OAAQ,CACJr4C,MAAOouC,EACPxwJ,MAAO,GAEXilJ,WAAY,GACZqV,aAAa,EACbt6J,MAAO,EACPL,OAAQ,EACRL,SAAS,IAGb,IAAIy7J,GAAeV,GAAWtkK,OAAO,CACjCoF,KAAM,SAASjB,EAAS8gK,GACpBX,GAAWt/J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAE9BlH,KAAKgoK,UAAYA,GAGrBC,WAAY,WACR,IACI/gK,EADMlH,KACQkH,QACdgyC,EAFMl5C,KAEI2nK,WACVjiK,EAAOwB,EAAQxB,KACfi0C,EAAWzyC,EAAQyyC,SACnB4jC,EAASrkC,EAAIqkC,SACbmjE,EAAYxnG,EAAIlsC,QAAU,EAC1B2zI,EAAaznG,EAAIvsC,SAAW,EAEhC,IAAKzF,EAAQoF,UAAYtM,KAAK6nK,SAC1B,OAAO,KAGX,IACIh8J,EADAY,EAAQzM,KAAK8nK,cAGjB,GAAIpiK,IAAS+3J,EACT5xJ,EAAU,IAAIke,EAAQq0G,OAClB,IAAIA,EAAO,CACProH,GAAMmjC,EAAI+jC,GAAKyjE,EAlkDb,GAmkDF3qI,GAAMmjC,EAAIgkC,GAAKyjE,EAnkDb,IAokDHt9I,KAAK8S,IAAIuqI,EAAWC,IACvBl0I,QAED,GAAI/G,IAAS44J,EAChBzyJ,EAAUygI,EAAKrQ,WAAW,CACtB,CAAE/iF,EAAI+jC,GAAKyjE,EAAWxnG,EAAIgkC,IAC1B,CAAEhkC,EAAI+jC,GAAI/jC,EAAIkkC,IACd,CAAElkC,EAAIikC,GAAIjkC,EAAIkkC,KACf3wE,GAAO64C,aACP,GAAI5/C,IAASg4J,GAChB7xJ,EAAU,IAAIke,EAAQojH,UAAU1gI,IAExB2vC,OAAOlD,EAAI+jC,GAAI/jC,EAAIgkC,IAAI0tD,OAAO1xF,EAAIikC,GAAIjkC,EAAIkkC,IAClDvxE,EAAQuwC,OAAOlD,EAAI+jC,GAAI/jC,EAAIkkC,IAAIwtD,OAAO1xF,EAAIikC,GAAIjkC,EAAIgkC,QAC/C,CACH,IAAImO,EAAOnyC,EAAI2pH,SACf,GAAIn9J,IAAS24J,EAAc,CACvB,IAAI6J,EAAehxC,GAAehwH,EAAQghK,aAAc78E,EAAKr+E,QAAU,GACvEq+E,EAAKgwC,gBAAgB6sC,GAGzBr8J,EAAUygI,EAAKc,SAAS/hD,EAAM5+E,GAWlC,OARIktC,GACA9tC,EAAQ0nC,UAAU6pH,IACbrsH,QAAQ4I,EAAU,CAAE4jC,EAAOn4E,EAAGm4E,EAAOp5E,KAI9C0H,EAAQ3E,QAAQ0yC,OAAS1yC,EAAQ0yC,OAE1B/tC,GAGXiS,cAAe,WACX,IAAIqzG,EAAWnxH,KAEX0mK,EAAe1mK,KAAKkH,QAAQg3I,OAC5B8pB,EAAYhoK,KAAKgoK,WAAa,GAkBlC,OAfItB,EACSA,EAAa,CAClBh+J,MAAOs/J,EAAUt/J,MACjB2rB,SAAU2zI,EAAU3zI,SACpB/pB,OAAQtK,KAAKglK,YACbl2H,OAAQk5H,EAAUl5H,OAClBg4H,SAAUkB,EAAUlB,SACpBz7E,KAAMrrF,KAAK2nK,WAAW9E,SACtB37J,QAASlH,KAAKmoK,gBACd5C,aAAc,WAAc,OAAOp0C,EAAS82C,gBAGvCjoK,KAAKioK,cAMtBE,cAAe,WACX,IAAIjhK,EAAUlH,KAAKkH,QACnB,MAAO,CACH+qJ,WAAY/qJ,EAAQ+qJ,WACpBwV,OAAQvgK,EAAQugK,OAChB9uH,OAAQzxC,EAAQyxC,OAChBo9F,QAAS7uI,EAAQ6uI,QACjBrwI,KAAMwB,EAAQxB,KACd+J,KAAMvI,EAAQ8F,MACdV,QAASpF,EAAQoF,UAIzBi5J,aAAc,WACVvlK,KAAKk+I,OAASl+I,KAAK8d,mBAI3BuiJ,GAAkB0H,GAAc,CAC5BriK,KAAM+3J,EACNxuB,MAAOj/C,EACPqnE,OAAQrnE,IAGZ,IACIo4E,GAAS,SAETC,GAAY,CACZC,MAAO,CACH5iK,KALK,SAMLi0C,SAAU,EACVm5F,MAAO,CAAE,CACL/1H,OAAQ,EACRqyG,MAAOmvC,EACP3nI,QAAS,GACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,IACV,CACC7Z,OAAQ,EACRqyG,MAAOmvC,EACP3nI,QAAS,KAGjB2xI,WAAY,CACR7iK,KAAM0iK,GACNt1B,MAAO,CAAE,CACL/1H,OAAQ,EACRqyG,MAAOmvC,EACP3nI,QAAS,KACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,GACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,OAGjB4xI,aAAc,CACV9iK,KAAM0iK,GACNt1B,MAAO,CAAE,CACL/1H,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,IACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KAGjB6xI,aAAc,CACV/iK,KAAM0iK,GACNM,YAAY,EACZ51B,MAAO,CAAE,CACL/1H,OAAQ,EACRqyG,MAAOmvC,EACP3nI,QAAS,GACV,CACC7Z,OAAQ,GACRqyG,MAAOmvC,EACP3nI,QAAS,IACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KAGjB+xI,WAAY,CACRjjK,KAAM0iK,GACNM,YAAY,EACZ51B,MAAO,CAAE,CACL/1H,OAAQ,EACRqyG,MAAOmvC,EACP3nI,QAAS,IACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KACV,CACC7Z,OAAQ,IACRqyG,MAAOmvC,EACP3nI,QAAS,KAGjBgyI,aAAc,CACVljK,KAAM0iK,GACN7qF,OAAQ,CAAE,GAAK,IACf5xD,OAAQ,KAIhB,SAASk9I,GAAQx4C,EAAGprH,GAChB,GAAIorH,EAAEpzC,KAAOh4E,EAAEg4E,IAAMozC,EAAEnzC,KAAOj4E,EAAEi4E,IAAMmzC,EAAElzC,KAAOl4E,EAAEk4E,IAAMkzC,EAAEjzC,KAAOn4E,EAAEm4E,GAC9D,OAAOn4E,EAGX,IAAIC,EAAI7B,KAAK8S,IAAIk6G,EAAEpzC,GAAIh4E,EAAEg4E,IACrB93D,EAAI9hB,KAAKuV,IAAIy3G,EAAEpzC,GAAIh4E,EAAEg4E,IACrBv4E,EAAIrB,KAAK8S,IAAIk6G,EAAElzC,GAAIl4E,EAAEk4E,IACrB34E,EAAInB,KAAKuV,IAAIy3G,EAAElzC,GAAIl4E,EAAEk4E,IACrBx4E,EAAItB,KAAK8S,IAAIk6G,EAAEnzC,GAAIj4E,EAAEi4E,IACrB/vB,EAAI9pD,KAAKuV,IAAIy3G,EAAEnzC,GAAIj4E,EAAEi4E,IACrBroE,EAAIxR,KAAK8S,IAAIk6G,EAAEjzC,GAAIn4E,EAAEm4E,IACrBx4E,EAAIvB,KAAKuV,IAAIy3G,EAAEjzC,GAAIn4E,EAAEm4E,IACrBkyE,EAAQ,GA2BZ,OAdAA,EAAM,GAAK,IAAIqS,GAAIx8I,EAAGxgB,EAAGD,EAAGyoD,GAC5BmiG,EAAM,GAAK,IAAIqS,GAAIz8J,EAAGioD,EAAGhoC,EAAGtQ,GAC5By6I,EAAM,GAAK,IAAIqS,GAAIj9J,EAAGyoD,EAAG3oD,EAAGqQ,GAC5By6I,EAAM,GAAK,IAAIqS,GAAIx8I,EAAGtQ,EAAGnQ,EAAGE,GAGxByrH,EAAEpzC,KAAO/3E,GAAKmrH,EAAEnzC,KAAOv4E,GAAKM,EAAEg4E,KAAO/3E,GAAKD,EAAEi4E,KAAOv4E,GACnD2qJ,EAAM,GAAK,IAAIqS,GAAIz8J,EAAGP,EAAGwgB,EAAGgoC,GAC5BmiG,EAAM,GAAK,IAAIqS,GAAIj9J,EAAGmQ,EAAGrQ,EAAGI,KAE5B0qJ,EAAM,GAAK,IAAIqS,GAAIj9J,EAAGC,EAAGH,EAAG2oD,GAC5BmiG,EAAM,GAAK,IAAIqS,GAAIz8J,EAAG2P,EAAGsQ,EAAGvgB,IAGzBs5B,GAAKoxH,GAAO,SAASp2G,GACxB,OAAOA,EAAIvsC,SAAW,GAAKusC,EAAIlsC,QAAU,KAC1C,GAGP,IAAI87J,GAAclE,GAAa7hK,OAAO,CAClCoF,KAAM,SAASjB,GACX09J,GAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhC,IAAI6hK,EAAc/oK,KAAKkH,QACvB6hK,EAAY/7J,MAAQiM,SAAS8vJ,EAAY/7J,MAAO,IAChD+7J,EAAYp8J,OAASsM,SAAS8vJ,EAAYp8J,OAAQ,IAElD3M,KAAKgpK,UAAY,IAGrB54B,OAAQ,WACJ,IACIlpI,EADMlH,KACQkH,QACdiuC,EAFMn1C,KAESm1C,SACf8zH,EAAa,IAAItH,GAAI,EAAG,EAAGz6J,EAAQ8F,MAAO9F,EAAQyF,QAEtD3M,KAAKk5C,IAAM+vH,EAAW5G,MAAMn7J,EAAQyxC,QAEpC,IAAK,IAAIpxC,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IACjC4tC,EAAS5tC,GAAG6oI,OAAO64B,GACnBA,EAAaJ,GAAQI,EAAY9zH,EAAS5tC,GAAG2xC,MAAQ,IAAIyoH,IAIjE4D,aAAc,WACVvlK,KAAKk+I,OAAS,IAAI1P,EAClBxuI,KAAKkpK,oBAGTA,iBAAkB,WACd,IAAIhiK,EAAUlH,KAAKkH,QACfugK,EAASvgK,EAAQugK,QAAU,GAC3BvuH,EAAMl5C,KAAKk5C,IAAI/xC,QAAQqE,IAAItE,EAAQyxC,QAAQ0pH,MAAMoF,EAAOz6J,OAExDilJ,EAAa3lB,EAAKc,SAASl0F,EAAI2pH,SAAU,CACzChlC,OAAQ,CACJzO,MAAOq4C,EAAOz6J,MAAQy6J,EAAOr4C,MAAQ,GACrCpiH,MAAOy6J,EAAOz6J,MACdgvI,SAAUyrB,EAAOzrB,UAErB/oH,KAAM,CACFm8F,MAAOloH,EAAQ+qJ,WACfr7H,QAAS1vB,EAAQ0vB,SAErBgjB,QAAS,KAGb55C,KAAKk+I,OAAOnkG,OAAOk4G,IAGvB8S,QAAS,WACL,OAAO/kK,MAGXmnK,eAAgB,SAASjgK,GACrB,IAGIiiK,EAHAH,EAAYhpK,KAAKgpK,UACjBI,EAAWv2C,GAAU3rH,GACrB+7I,EAAWolB,GAAUnhK,EAAQ+7I,UAGjC,GAAI+lB,EAAUI,GACVD,EAAkBH,EAAUI,OACzB,CACH,IAAInC,EAAkBtkK,EAAEI,OAAO,GAAIkgJ,EAAU/7I,GACvB,WAAlB+7I,EAASv9I,KACTyjK,EAAkB,IAAIp/I,EAAQqpH,eAAe6zB,IAEzC//J,EAAQ+7J,cACRgE,EAAgBn0B,MAoCpC,SAA0B5rI,GAMtB,IALA,IAAI4rI,EAAQ5rI,EAAQ4rI,MAChBu2B,EAAcniK,EAAQ+7J,YAAc/7J,EAAQykB,OAAU,IACtDnkB,EAASsrI,EAAMtrI,OACf8hK,EAAe,GAEV/hK,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIgiK,EAAc5mK,EAAEI,OAAO,GAAI+vI,EAAMvrI,IACrCgiK,EAAYxsJ,QAAUwsJ,EAAYxsJ,QAAU,IAAMssJ,GAAaA,GAAa,IAC5EC,EAAa3nK,KAAK4nK,GAGtB,OAAOD,EAhDiCE,CAAiBvC,KAE7CkC,EAAkB,IAAIp/I,EAAQspH,eAAe4zB,IAC7ByB,YAAqC,IAAxBzlB,EAASylB,YAE1CM,EAAUI,GAAYD,EAG1B,OAAOA,GAGXM,eAAgB,WACZ,IAAIT,EAAYhpK,KAAKgpK,UACrB,IAAK,IAAII,KAAYJ,EACjBA,EAAUI,GAAUl1C,WAAa,IAIzCzkH,KAAM,WACF,IAAIvI,EAAUlH,KAAKkH,QACnB,OAAO,IAAIy6J,GAAI,EAAG,EAAGz6J,EAAQ8F,MAAO9F,EAAQyF,WAIpD0zJ,GAAkByI,GAAa,CAC3B97J,MAv4DgB,IAw4DhBL,OA14DiB,IA24DjBslJ,WAAYsM,EACZkJ,OAAQ,CACJr4C,MAAOouC,EACPxwJ,MAAO,GAEX2rC,OAAQ4mH,GAAW,GACnB3lH,QAAS,IAkBb,IAAI8vH,GAAe9E,GAAa7hK,OAAO,CACnCoF,KAAM,SAASjB,GACX09J,GAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAChClH,KAAK2pK,kBAGTA,eAAgB,WACZ,IAAIziK,EAAUlH,KAAKkH,QACfA,EAAQkrC,UACRpyC,KAAKiwI,UAAY5qI,EACjBrF,KAAK4pK,YAAc50J,EACnBhV,KAAK6pK,eAAiBz4H,EACtBpxC,KAAK8pK,iBAAmBz4H,EACxBrxC,KAAK+pK,aAAe7iK,EAAQqoI,QAC5BvvI,KAAKgqK,eAAiB9iK,EAAQ+iK,WAE9BjqK,KAAKiwI,UAAYj7H,EACjBhV,KAAK4pK,YAAcvkK,EACnBrF,KAAK6pK,eAAiBx4H,EACtBrxC,KAAK8pK,iBAAmB14H,EACxBpxC,KAAK+pK,aAAe7iK,EAAQ+iK,SAC5BjqK,KAAKgqK,eAAiB9iK,EAAQqoI,UAItCa,OAAQ,SAASwxB,GACb5hK,KAAKk5C,IAAM0oH,EAAUz6J,QACrBnH,KAAKkqK,kBAGTA,eAAgB,WACZ,IAAI/4C,EAAWnxH,KAEXivB,EAAMjvB,KACNk5C,EAAMjqB,EAAIiqB,IACV0wH,EAAc36I,EAAI26I,YAClB35B,EAAYhhH,EAAIghH,UAChB65B,EAAmB76I,EAAI66I,iBACvBD,EAAiB56I,EAAI46I,eACrBp5B,EAAQzwI,KAAKmqK,eACb3gI,EAASinG,EAAMjnG,OACfgnG,EAAaC,EAAMD,WACnB45B,EAAuB35B,EAAM25B,qBAC7BC,EAAc7gI,EAAOhiC,OACrB8iK,EAAcpxH,EAAI+2F,EAAY,GAAKjwI,KAAKgvI,WAAWwB,EAAYt3F,EAAI2wH,MAEvE,GAAIQ,EAAa,CAGb,IAFA,IAAIz5B,EAAa05B,EAERx5B,EAAW,EAAGA,EAAWu5B,EAAav5B,IAAY,CAMvD,IALA,IAAI58E,EAAQ1qB,EAAOsnG,GACfy5B,EAAgBr2G,EAAMq2G,cACtBl6B,EAAen3F,EAAI0wH,EAAc,GACjCY,EAAqBD,EAAc/iK,OAE9BoC,EAAM,EAAGA,EAAM4gK,EAAoB5gK,IAAO,CAC/C,IAAIiC,EAAU0+J,EAAc3gK,GACxB6gK,EAAiBt5C,EAASxkC,YAAY9gF,GACtC6+J,EAAoB95B,EAAazf,EAAS6d,WAAWy7B,EAAeZ,GAAiB31G,EAAMtgD,WAE3F+2J,EAAa,IAAIhJ,GACrBgJ,EAAW16B,EAAY,GAAKy6B,EAC5BC,EAAW16B,EAAY,GAAKy6B,EAAoBD,EAAeZ,GAC/Dc,EAAWf,EAAc,GAAKv5B,EAC9Bs6B,EAAWf,EAAc,GAAKv5B,EAAeo6B,EAAeX,GAE5Dj+J,EAAQukI,OAAOu6B,GAEft6B,GAAgBo6B,EAAeX,GAAoB34C,EAAS64C,eAEhEp5B,GAAc18E,EAAMtgD,UAAYu9G,EAAS44C,aAE7C7wH,EAAI+2F,EAAY,GAAKq6B,EACrBpxH,EAAI+2F,EAAY,GAAKq6B,EAAc95B,EACnCt3F,EAAI0wH,EAAc,GAAK1wH,EAAI0wH,EAAc,GAAKQ,IAItDp7B,WAAY,SAASv/H,EAAMwiI,GACvB,IAAI38H,EAAQ,EACR25H,EAAQjvI,KAAKkH,QAAQ+nI,MAMzB,OALIA,IAAUtkH,GAASskH,IAAU/+C,EAC7B56E,EAAQ28H,EAAUxiI,EACXw/H,IAAUj/C,IACjB16E,GAAS28H,EAAUxiI,GAAQ,GAExB6F,GAGX60J,aAAc,WAoBV,IAnBA,IAEIl7I,EAAMjvB,KACNk5C,EAAMjqB,EAAIiqB,IACV/D,EAAWlmB,EAAIkmB,SACf20H,EAAmB76I,EAAI66I,iBACvBD,EAAiB56I,EAAI46I,eACrBG,EAAiB/6I,EAAI+6I,eACrBD,EAAe96I,EAAI86I,aACnB93B,EAAUl8H,GAAMmjC,EAAI4wH,MACpBzE,EAAgBlwH,EAAS3tC,OACzBgiC,EAAS,GAET51B,EAAY,EACZg3J,EAAoB,EACpBp6B,EAAa,EACb45B,EAAuB,EACvBG,EAAgB,GAEX3gK,EAAM,EAAGA,EAAMy7J,EAAez7J,IAAO,CAC1C,IAAIiC,EAAUspC,EAASvrC,GAClBiC,EAAQqtC,KACTrtC,EAAQukI,OAAOl3F,GAGnB,IAAIuxH,EAzBOzqK,KAyBmB2sF,YAAY9gF,GAzB/B7L,KA0BEkH,QAAQ8kB,MAAQjW,GAAM60J,EAAoBZ,EAAiBS,EAAeX,IAAqB73B,IACxGzoG,EAAO7nC,KAAK,CACR4oK,cAAeA,EACf32J,UAAWA,EACXg3J,kBAAmBA,IAEvBR,EAAuB/mK,KAAKuV,IAAIwxJ,EAAsBQ,GACtDp6B,GAAcu5B,EAAen2J,EAC7BA,EAAY,EACZg3J,EAAoB,EACpBL,EAAgB,IAEpB32J,EAAYvQ,KAAKuV,IAAIhF,EAAW62J,EAAeZ,IAC3Ce,EAAoB,IACpBA,GAAqBZ,GAEzBY,GAAqBH,EAAeX,GACpCS,EAAc5oK,KAAKkK,GAWvB,OARA29B,EAAO7nC,KAAK,CACR4oK,cAAeA,EACf32J,UAAWA,EACXg3J,kBAAmBA,IAKhB,CACHphI,OAAQA,EACRgnG,WAJJA,GAAc58H,EAKVw2J,qBANJA,EAAuB/mK,KAAKuV,IAAIwxJ,EAAsBQ,KAU1Dj+E,YAAa,SAAS9gF,GAClB,MAAO,CACHmB,MAAOnB,EAAQqtC,IAAIlsC,QACnBL,OAAQd,EAAQqtC,IAAIvsC,WAI5B44J,aAAc,eAGlBlF,GAAkBqJ,GAAc,CAC5Bt3H,UAAU,EACVpmB,MAAM,EACNi+I,SAAU,EACV16B,QAAS,IAGb,IAAIs7B,GAAc9gJ,EAAQmkH,KAEtBA,GAAO02B,GAAa7hK,OAAO,CAC3BoF,KAAM,SAASo+C,EAASr/C,GACpB09J,GAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKumD,QAAUA,EAGfvmD,KAAKowI,OAAO,IAAIuxB,KAGpBvxB,OAAQ,SAASwxB,GACb,IAAI16J,EAAUlH,KAAKkH,QACfuI,EAAOvI,EAAQuI,KAAOk2G,EAAKgO,YAAY3zH,KAAKumD,QAAS,CAAEwwC,KAAM7vF,EAAQ6vF,OAEzE/2F,KAAKmzH,SAAW1jH,EAAK0jH,SAErBnzH,KAAKk5C,IAAM,IAAIyoH,GAAIC,EAAU3kF,GAAI2kF,EAAU1kF,GACnC0kF,EAAU3kF,GAAKxtE,EAAKzC,MAAO40J,EAAU1kF,GAAKztE,EAAK9C,SAG3D44J,aAAc,WACV,IAAIt2I,EAAMjvB,KAAKkH,QACX6vF,EAAO9nE,EAAI8nE,KACXq4B,EAAQngG,EAAImgG,MACZx4F,EAAU3H,EAAI2H,QACd+hH,EAAS1pH,EAAI0pH,OAEjB34I,KAAKk+I,OAAS,IAAI2sB,GAAY7qK,KAAKumD,QAASvmD,KAAKk5C,IAAI2pH,SAASrnC,UAAW,CACrEzkC,KAAMA,EACN9jE,KAAM,CAAEm8F,MAAOA,EAAOx4F,QAASA,GAC/B+hH,OAAQA,OAUpB,SAASmyB,GAAUz/E,GACf,IAAIzyC,EAASyyC,EAAKzyC,OACd6iF,EAAcpwC,EAAKowC,cAEvB,OAAO,IAAIkmC,GAAI/oH,EAAOxzC,EAAGwzC,EAAOz0C,EAAGs3H,EAAYr2H,EAAGq2H,EAAYt3H,GATlEk8J,GAAkBnyB,GAAM,CACpBn3C,KAAM6mE,EACNxuC,MAAOouC,IAUX,IAAIuN,GAAmB,MAEnBC,GAAU3D,GAAWtkK,OAAO,CAC5BoF,KAAM,SAASo+C,EAASr/C,EAAS2G,GAC7Bw5J,GAAWt/J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC9BlH,KAAKumD,QAAUA,EACfvmD,KAAK6N,KAAOA,EAEZ7N,KAAKirK,kBAC4B,IAA7BjrK,KAAKkH,QAAQgkK,aACblrK,KAAKowI,OAAO,IAAIuxB,KAIxBsJ,eAAgB,WACZ,IAAI/jK,EAAUlH,KAAKkH,QACfsiE,EAAO13D,OAAO9R,KAAKumD,SAAS37C,MAAMmgK,IAClCI,EAAe,IAAIzB,GAAa,CAAEt3H,UAAU,EAAM68F,MAAO/nI,EAAQ+nI,MAAOjjH,MAAM,IAC9Eo/I,EAAc5iK,EAAW,GAAKtB,EAAS,CAAE0vB,QAAS,EAAG06D,UAAW,OAEpEtxF,KAAKs2B,UAAY60I,EACjBnrK,KAAK+5C,OAAOoxH,GAEZ,IAAK,IAAIE,EAAS,EAAGA,EAAS7hG,EAAKhiE,OAAQ6jK,IAAU,CACjD,IAAIzqI,EAAO,IAAIstG,GAAK1kE,EAAK6hG,GAAQ7nI,OAAQ4nI,GACzCD,EAAapxH,OAAOnZ,KAI5BwvG,OAAQ,SAASwxB,GACb,IAAI16J,EAAUlH,KAAKkH,QACfokK,EAAWpkK,EAAQg3I,OAGvB,GAFAl+I,KAAKs2B,UAAUpvB,QAAQ+nI,MAAQ/nI,EAAQ+nI,MAEnCq8B,IAAatrK,KAAKurK,WAAY,CAC9B,IAAIC,EAAY5J,EACX4J,EAAU1I,YACX9iK,KAAKurK,YAAa,EAClBvrK,KAAKowI,OAAOo7B,GACZxrK,KAAKurK,YAAa,EAClBC,EAAYxrK,KAAKk5C,KAErB,IAAIglG,EAASl+I,KAAKk+I,OAASotB,EAAStrK,KAAKyrK,cAAcD,IAEnDttB,IACAstB,EAAYV,GAAU5sB,EAAO3gB,eAAiB,IAAIrC,GAElDgjB,EAAOh3I,QAAQ0yC,OAAS1yC,EAAQ0yC,QAGpC55C,KAAKk5C,IAAMl5C,KAAK4nK,WAAa5nK,KAAK2nK,WAAa6D,OAI/C,GAFAnE,GAAWt/J,GAAGqoI,OAAO7lI,KAAKvK,KAAM4hK,GAE5B16J,EAAQyyC,SAAU,CAClB,IAAIhB,EAAS4mH,GAAWr4J,EAAQyxC,QAC5BO,EAAMl5C,KAAKk5C,IAAImpH,MAAM1pH,GAEzB34C,KAAK4hK,UAAYA,EACjB5hK,KAAK0rK,UAAYxyH,EAAI/xC,SAErB+xC,EAAMl5C,KAAK+wC,UACPf,UAAU2I,EAAO9sB,KAAO8sB,EAAO7sB,MAAO6sB,EAAOv0B,IAAMu0B,EAAO5sB,QAE9D/rB,KAAK2rK,WAAazyH,EAAI/xC,QAEtB+xC,EAAI1tC,IAAImtC,KAKpB4sH,aAAc,WACV,IAAIr+J,EAAUlH,KAAKkH,QAQnB,GANAlH,KAAKk+I,OAAS,IAAI1P,EAAM,CACpBj7F,UAAWvzC,KAAK4rK,oBAChBhyH,OAAQ1yC,EAAQ0yC,OAChBksH,OAAQ5+J,EAAQ4+J,SAGhB9lK,KAAK6nK,SAAU,CACf,IAAI3uH,EAAMozF,EAAKc,SAASptI,KAAK2nK,WAAW9E,SAAU7iK,KAAK8nK,eACvD9nK,KAAKk+I,OAAOnkG,OAAOb,KAI3BosH,aAAc,WACV,GAAKtlK,KAAKkH,QAAQoF,QAIlB,GAAItM,KAAKkH,QAAQg3I,OAAQ,CACrB,IAAIA,EAASl+I,KAAKk+I,OACdA,IAAWlpB,GAAQkpB,EAAOh3I,QAAQ4+J,UAClC5nB,EAAOh3I,QAAQ4+J,OAAS9lK,KAAKkH,QAAQ4+J,QAEzC9lK,KAAKwlK,YACLxlK,KAAKylK,uBAEL4B,GAAWt/J,GAAGu9J,aAAa/6J,KAAKvK,OAIxCyrK,cAAe,SAAS7J,GACpB,IAAIzwC,EAAWnxH,KAEX67B,EAAU,CACV+E,KAAM5gC,KAAKumD,QACX8kC,KAAMu2E,EAAUiB,SAChBv4J,OAAQtK,KAAKglK,YACb99J,QAASlH,KAAKkH,QACdq+J,aAAc,WAIV,OAHAp0C,EAASo6C,YAAa,EACtBp6C,EAASif,OAAOwxB,GAChBzwC,EAASo6C,YAAa,EACfp6C,EAAS06C,qBAOxB,OAJI7rK,KAAK6N,MACLlL,EAAEI,OAAO84B,EAAS77B,KAAK6N,MAGpBguB,GAGXgwI,iBAAkB,WACd7rK,KAAKulK,eACLvlK,KAAKm4I,iBACL,IAAI+F,EAASl+I,KAAKk+I,OAElB,cADOl+I,KAAKk+I,OACLA,GAGXntG,OAAQ,WACJ,IAAI7pC,EAAUlH,KAAKkH,QAInB,OAHAlH,KAAKk5C,IAAInI,OAAO7pC,EAAQyyC,UACxB35C,KAAKivI,MAAMjvI,KAAK4hK,UAAWv8J,EAAG6B,EAAQ+nI,OACtCjvI,KAAKivI,MAAMjvI,KAAK4hK,UAAW5sJ,EAAG9N,EAAQmwJ,QAC/Br3J,KAAKk5C,KAGhB0yH,kBAAmB,WACf,IAAIjyH,EAAW35C,KAAKkH,QAAQyyC,SAC5B,IAAKA,EACD,OAAO,KAGX,IAAI1qB,EAAMjvB,KAAK0rK,UAAUnuF,SACrBymD,EAAK/0G,EAAI7pB,EACT6+H,EAAKh1G,EAAI9qB,EACT2nK,EAAY9rK,KAAK2rK,WAAWpuF,SAEhC,OAAO6/E,IACKptH,UAAU87H,EAAU1mK,EAAI4+H,EAAI8nC,EAAU3nK,EAAI8/H,GAC1ClzF,OAAO4I,EAAU,CAAEqqF,EAAIC,OAIvC8nC,GAAQnH,GAAa7hK,OAAO,CAC5BoF,KAAM,SAASjB,GACX09J,GAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKgsK,SAAW,IAAIhB,GAAQhrK,KAAKkH,QAAQ05B,KAAMj+B,EAAEI,OAAO,GAAI/C,KAAKkH,QAAS,CACtEmwJ,OAAQr3J,KAAKkH,QAAQ4F,YAGzB9M,KAAK+5C,OAAO/5C,KAAKgsK,WAGrB57B,OAAQ,SAASwxB,GACbgD,GAAa78J,GAAGqoI,OAAO7lI,KAAKvK,KAAM4hK,GAClC5hK,KAAKk5C,IAAI6oH,OAAOH,EAAWv8J,MAiCnC,SAAS4mK,GAAwB73I,GAC7B,IAAK,IAAI7sB,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAI2xC,EAAM9kB,EAAM7sB,GAAGykK,SACfE,EAAU93I,EAAM7sB,EAAI,GAAGykK,SAC3BE,EAAQhlK,QAAQyxC,OAASh2C,EAAEI,OAAOw8J,GAAW2M,EAAQhlK,QAAQyxC,QAAS,CAAE5sB,OAAQ,IAChFmtB,EAAIhyC,QAAQyxC,OAASh2C,EAAEI,OAAOw8J,GAAWrmH,EAAIhyC,QAAQyxC,QAAS,CAAEv0B,IAAK,KAlC7E2nJ,GAAMI,WAAa,SAASjlK,EAASklK,GACjC,IAQIruH,EARAsuH,EAAenlK,EAanB,MAXuB,iBAAZA,IACPmlK,EAAe,CAAEzrI,KAAM15B,KAG3BmlK,EAAe1pK,EAAEI,OAAO,CAAEuJ,SAAS,GAAQ8/J,EAAgBC,KAGvCA,EAAa//J,SAAW+/J,EAAazrI,OACrDmd,EAAQ,IAAIguH,GAAMM,IAGftuH,GAGXguH,GAAMO,YAAc,SAASC,GACzB,IAAIn4I,EAAQ,GAAG/W,OAAOkvJ,GAClBnoJ,EAAMgQ,EAAM6B,QAAO,SAAU+Y,GAAQ,OAAOA,GAAQA,EAAK9nC,QAAQ4F,WAAaojF,KAC9EnkE,EAASqI,EAAM6B,QAAO,SAAU+Y,GAAQ,OAAOA,GAAQA,EAAK9nC,QAAQ4F,WAAaojF,KAMrF,OAJA+7E,GAAwB7nJ,GACxB6nJ,GAAwBlgJ,GAExBA,EAAOjW,UACAsO,EAAI/G,OAAO0O,IAYtBs0I,GAAkB0L,GAAO,CACrB38C,MAAOouC,EACP1wJ,SAAUmjF,EACVg/C,MAAOj/C,EACPr3C,OAAQ4mH,GAAW,GACnBxpB,QAASwpB,GAAW,KAGxB,IAAIiN,GAAYxB,GAAQjoK,OAAO,CAC3BoF,KAAM,SAASO,EAAOk4B,EAAM7nB,EAAOsb,EAAUntB,GACzC8jK,GAAQjjK,GAAGI,KAAKoC,KAAKvK,KAAM4gC,EAAM15B,GAEjClH,KAAK4gC,KAAOA,EACZ5gC,KAAK0I,MAAQA,EACb1I,KAAK+Y,MAAQA,EACb/Y,KAAKq0B,SAAWA,EAChBr0B,KAAKowI,OAAO,IAAIuxB,KAGpB8J,cAAe,SAAS7J,GACpB,IAAI/lI,EAAUmvI,GAAQjjK,GAAG0jK,cAAclhK,KAAKvK,KAAM4hK,GAOlD,OALA/lI,EAAQnzB,MAAQ1I,KAAK0I,MACrBmzB,EAAQxH,SAAWr0B,KAAKq0B,SACxBwH,EAAQnrB,OAAS1Q,KAAKkH,QAAQwJ,OAC9BmrB,EAAQvoB,QAAUtT,KAAKkH,QAAQoM,QAExBuoB,GAGXvS,MAAO,SAASwJ,EAAQnuB,GAEpBmuB,EAAO1oB,QAAQmzJ,EAAkB,CAC7B1xJ,QAAS2qH,GAAa7xH,GACtB+D,MAAO1I,KAAK0I,MACZk4B,KAAM5gC,KAAK4gC,KACX7nB,MAAO/Y,KAAK+Y,MACZsb,SAAUr0B,KAAKq0B,SACf2Q,KAAMhlC,KAAKmM,OAAOjF,WAI1B6pC,OAAQ,WACJ,GAAI/wC,KAAKkH,QAAQulK,gBAAkBz8E,EAAQ,CACvC,IAAI92C,EAAMl5C,KAAK0rK,UAAU7I,SACrBtvH,EAAYvzC,KAAK4rK,oBAErB5rK,KAAKk5C,IAAM4xH,GAAU5xH,EAAI0iF,KAAKroF,EAAU0kF,gBAExC+yC,GAAQjjK,GAAGgpC,OAAOxmC,KAAKvK,MAG3B,OAAOA,KAAKk5C,KAGhB0yH,kBAAmB,WACf,IAAI1kK,EAAUlH,KAAKkH,QACfyyC,EAAWzyC,EAAQyyC,SACvB,IAAKA,EACD,OAAO,KAGX,GAAIzyC,EAAQulK,gBAAkBz8E,EAC1B,OAAOg7E,GAAQjjK,GAAG6jK,kBAAkBrhK,KAAKvK,MAG7C,IAAI0sK,EAAiBtP,IAAoBrsH,OAAO4I,GAAUs+E,SACtD/+E,EAAMl5C,KAAK0rK,UAAU7I,SACrBx3E,EAAOrrF,KAAK4hK,UAAUiB,SAEtB8J,EAAiBzlK,EAAQylK,gBAAkB18E,EAC3C28E,EAAYD,IAAmB18E,GAAO08E,IAAmBz8E,EAAS7qF,EAAI2P,EACtE63J,EAAeF,IAAmB18E,GAAO08E,IAAmBz8E,EAASl7E,EAAI3P,EACzEynK,EAAaH,IAAmB18E,GAAO08E,IAAmBliJ,EAAO4gE,EAAKzyC,OAASyyC,EAAKowC,cAEpFD,EAAUtiF,EAAIsiF,UAAUjB,cAAcmyC,GACtChxC,EAAWxiF,EAAIwiF,WAAWnB,cAAcmyC,GACxCjxC,EAAcviF,EAAIuiF,cAAclB,cAAcmyC,GAC9C/wC,EAAaziF,EAAIyiF,aAAapB,cAAcmyC,GAC5Cf,EAAazwC,EAAKe,WAAWT,EAASE,EAAUD,EAAaE,GAE7D3rF,EAAY,GAChBA,EAAU68H,GAAgBxhF,EAAKzyC,OAAOi0H,GAAgBlB,EAAW/yH,OAAOi0H,GAExE,IAGI79B,EAAY+9B,EAHZC,EAAe3pK,KAAK6T,IAAIskH,EAAQqxC,GAAgB78H,EAAU68H,GAAgBC,EAAWD,IACrFI,EAAgB5pK,KAAK6T,IAAIwkH,EAASmxC,GAAgB78H,EAAU68H,GAAgBC,EAAWD,IAIvF92J,GAAMi3J,EAAcnP,KAAuB9nJ,GAAMk3J,EAAepP,IAChE7uB,EAAaxT,EACbuxC,EAAWrxC,GACJuxC,EAAgBD,GACvBh+B,EAAatT,EACbqxC,EAAWtxC,IAEXuT,EAAaxT,EACbuxC,EAAWpxC,GAGf,IAAIuxC,EAAcl+B,EAAW49B,IAAcG,EAASH,GAAa59B,EAAW49B,IAAc,EAG1F,OAFA58H,EAAU48H,GAAavhF,EAAK9N,SAASqvF,GAAaM,EAE3C9P,IACFptH,UAAUA,EAAU5qC,EAAG4qC,EAAU7rC,GACjC4sC,OAAO4I,MAIpB0mH,GAAkBmM,GAAW,CACzBtB,aAAa,IAGjB,IAGIiC,GAAO9F,GAAWtkK,OAAO,CACzBoF,KAAM,SAASymB,EAAQ1nB,EAASi+J,GAC5BkC,GAAWt/J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAE9BlH,KAAK4uB,OAASA,EACd5uB,KAAKmlK,aAAeA,EAEpBnlK,KAAK4P,UAGTzC,KAAM,WACFnN,KAAKkH,QAAQoF,SAAU,GAG3BY,KAAM,WACFlN,KAAKkH,QAAQoF,SAAU,GAG3BsD,OAAQ,WACJ,IAAIuhH,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QAEnB,GAAIA,EAAQoF,QAAS,CACjB,IAMIU,EAAOL,EANPknB,EAAQ3sB,EAAQ2sB,MAChByjE,EAAOpwF,EAAQowF,KACfp+C,EAAM,IAAIyoH,GACVyL,EAAa,WAAc,OAAOj8C,GAClC1hH,EAAO6nF,EAAK7nF,KACZmxB,EAAO5gC,KAAK4uB,OAAOgS,KAGvB,GAAIo0F,GAAQnhG,IAAUA,EAAMvnB,QAAS,CACjC,IAAI+gK,EAAe3N,GAAY7rI,GAC3Bw5I,EACAzsI,EAAOysI,EAAartK,KAAK4uB,QAClBiF,EAAMnjB,SACbkwB,EAAO5gC,KAAKmlK,aAAaz0J,OAAO48J,KAAKz5I,EAAMnjB,OAAQkwB,IAGlD/M,EAAMu7F,QACPv7F,EAAMu7F,MAAQv7F,EAAM/mB,WAAaixJ,EA3C3B,OA2C0DzmE,EAAK26D,YAGzEjyJ,KAAK6zB,MAAQ,IAAIm3I,GAAQpqI,EAAMp4B,EAAW,GAAIqrB,IAC9C7zB,KAAK6zB,MAAM05I,SAAWH,EAElBv5I,EAAM/mB,WAAaixJ,GAAW/oC,GAAQvlH,KAClC6nF,EAAK5xF,OAAS+3J,EACdhuJ,EAAOpM,KAAKuV,IAAI5Y,KAAK6zB,MAAMqlB,IAAIlsC,QAAShN,KAAK6zB,MAAMqlB,IAAIvsC,WAEvDK,EAAQhN,KAAK6zB,MAAMqlB,IAAIlsC,QACvBL,EAAS3M,KAAK6zB,MAAMqlB,IAAIvsC,UAE5BusC,EAAIltB,KAAKhsB,KAAK6zB,MAAMqlB,MAI5Bo+C,EAAKtqF,MAAQA,GAASyC,GA7DV,EA8DZ6nF,EAAK3qF,OAASA,GAAU8C,GA9DZ,EAgEZ,IAAI64C,EAAS,IAAIy/G,GAAav/J,EAAW,GAAI8uF,IAC7ChvC,EAAOilH,SAAWH,EAElBptK,KAAKsoD,OAASA,EACdtoD,KAAK+5C,OAAOuO,GAERtoD,KAAK6zB,OACL7zB,KAAK+5C,OAAO/5C,KAAK6zB,OAGrBy0B,EAAO8nF,OAAO,IAAIuxB,IAClB3hK,KAAKwtK,WAAat0H,EAAIltB,KAAKs8B,EAAOpP,OAI1Ck3F,OAAQ,SAASwxB,GACb,IAWQ6L,EAAWv0H,EAAK0uH,EAXpB34I,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACd2sB,EAAQ5E,EAAI4E,MACZy0B,EAASr5B,EAAIq5B,OACbklH,EAAav+I,EAAIu+I,WACjBjwF,EAASqkF,EAAUrkF,SACnB/1E,EAASN,EAAQwmK,KAAKlmK,OACtBsF,EAAW5F,EAAQ4F,SAGnB5F,EAAQoF,UAGJ+oB,GAAQvoB,EAAU,CAAE2d,EAAME,IACtB7d,IAAa2d,GACbm9I,EAAa4F,EAAWxL,QAAQJ,EAAW90J,GAAUkjC,WAAWxoC,EAAQo6J,EAAUrkF,SAASp5E,EAAIqpK,EAAWjwF,SAASp5E,GAE/G+C,EAAQwmK,KAAKphK,UACbmhK,EAAY,CAAE7L,EAAU3kF,GAAIM,EAAOp5E,GACnCnE,KAAK2tK,WAAa,CACdF,EACA,CAAE7F,EAAWzqF,GAAII,EAAOp5E,IAE5B+0C,EAAM0uH,EAAWzgK,QAAQ06J,UAAU4L,MAGvC7F,EAAa4F,EAAWxL,QAAQJ,EAAW90J,GAAUkjC,UAAUxoC,EAAQo6J,EAAUrkF,SAASp5E,EAAIqpK,EAAWjwF,SAASp5E,GAE9G+C,EAAQwmK,KAAKphK,UACbmhK,EAAY,CAAE7L,EAAUzkF,GAAII,EAAOp5E,GACnCnE,KAAK2tK,WAAa,CACdF,EACA,CAAE7F,EAAW3qF,GAAIM,EAAOp5E,IAE5B+0C,EAAM0uH,EAAWzgK,QAAQ06J,UAAU4L,KAIvC3gK,IAAaojF,GACb03E,EAAa4F,EAAWxL,QAAQJ,EAAW90J,GAAUkjC,UAAU4xH,EAAUrkF,SAASn4E,EAAIooK,EAAWjwF,SAASn4E,EAAGoC,GAEzGN,EAAQwmK,KAAKphK,UACbmhK,EAAY,CAAElwF,EAAOn4E,EAAGw8J,EAAUxkF,IAClCp9E,KAAK2tK,WAAa,CACdF,EACA,CAAElwF,EAAOn4E,EAAGwiK,EAAW1qF,KAE3BhkC,EAAM0uH,EAAWzgK,QAAQ06J,UAAU4L,MAGvC7F,EAAa4F,EAAWxL,QAAQJ,EAAW90J,GAAUkjC,UAAU4xH,EAAUrkF,SAASn4E,EAAIooK,EAAWjwF,SAASn4E,GAAIoC,GAE1GN,EAAQwmK,KAAKphK,UACbmhK,EAAY,CAAElwF,EAAOn4E,EAAGw8J,EAAU1kF,IAClCl9E,KAAK2tK,WAAa,CACdF,EACA,CAAElwF,EAAOn4E,EAAGwiK,EAAWxqF,KAE3BlkC,EAAM0uH,EAAWzgK,QAAQ06J,UAAU4L,KAK3CnlH,GACAA,EAAO8nF,OAAOw3B,GAGd/zI,IACAA,EAAMu8G,OAAOw3B,GACTt/G,IACIphD,EAAQ2sB,MAAM/mB,WAAasxJ,GAC3BvqI,EAAMqlB,IAAI8oH,QAAQ15G,EAAOpP,IAAKpsC,GAElC+mB,EAAMu8G,OAAOv8G,EAAMqlB,OAI3Bl5C,KAAK4nK,WAAaA,EAClB5nK,KAAK4hK,UAAYA,EACjB5hK,KAAKk5C,IAAMA,GAAO0uH,IAI1BrC,aAAc,WACV8B,GAAWt/J,GAAGw9J,aAAah7J,KAAKvK,MAChCA,KAAKk+I,OAAOh3I,QAAQ4+J,OAAS9lK,KAAKkH,QAAQ4+J,OAEtC9lK,KAAKkH,QAAQoF,SACbtM,KAAK4tK,cAIbtI,aAAc,WACV,IAAIn0C,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfw/J,EAAex/J,EAAQg3I,OACvBh3I,EAAQoF,SAAWo6J,GACnB1mK,KAAKk+I,OAASwoB,EAAa/jK,EAAEI,OAAO/C,KAAK4uB,OAAQ,CAC7CtkB,OAAQtK,KAAKglK,YACb35E,KAAMrrF,KAAK4hK,UAAUiB,SACrB37J,QAAS,CACL+qJ,WAAY/qJ,EAAQ+qJ,WACpBwV,OAAQvgK,EAAQ+qJ,WAChB36D,KAAMpwF,EAAQowF,KACdzjE,MAAO3sB,EAAQ2sB,MACf65I,KAAMxmK,EAAQwmK,KACd5gK,SAAU5F,EAAQ4F,SAClBR,QAASpF,EAAQoF,SAErBi5J,aAAc,WACVp0C,EAASo0C,eACTp0C,EAASgnB,iBACT,IAAI01B,EAAgB18C,EAAS+sB,OAE7B,cADO/sB,EAAS+sB,OACT2vB,MAGf7tK,KAAKwlK,aAEL6B,GAAWt/J,GAAGu9J,aAAa/6J,KAAKvK,OAIxC4tK,WAAY,WACR,IAAI1mK,EAAUlH,KAAKkH,QAAQwmK,KAE3B,GAAI1tK,KAAK2tK,WAAY,CACjB,IAAIv+H,EAAOk9F,EAAKrQ,WAAWj8H,KAAK2tK,WAAY,CACxC9vC,OAAQ,CACJzO,MAAOloH,EAAQkoH,MACfpiH,MAAO9F,EAAQ8F,MACfgvI,SAAU90I,EAAQ80I,YAI1B+iB,EAAiB3vH,GACjBpvC,KAAKk+I,OAAOnkG,OAAO3K,KAI3B9lB,MAAO,SAASwJ,EAAQnuB,GACpB,IAAIwyB,EAAOn3B,KAAK8tK,UAAUnpK,GAErBmuB,EAAO1oB,QAAQ6zJ,EAAY9mI,IAC5BxyB,EAAEwE,kBAIV4kK,KAAM,SAASj7I,EAAQnuB,GACnB,IAAIwyB,EAAOn3B,KAAK8tK,UAAUnpK,GAErBmuB,EAAO1oB,QAAQ8zJ,EAAY/mI,IAC5BxyB,EAAEwE,kBAIVwkB,IAAK,SAASmF,EAAQnuB,GAClB,IAAIwyB,EAAOn3B,KAAK8tK,UAAUnpK,GAE1BmuB,EAAO1oB,QAAQ+zJ,EAAYhnI,IAG/B22I,UAAW,SAASnpK,GAChB,IAAIuC,EAAUlH,KAAKkH,QAEnB,OAAOvE,EAAEI,OAAO/C,KAAK4uB,OAAQ,CACzB/iB,QAAS2qH,GAAa7xH,GACtBi8B,KAAMo0F,GAAQ9tH,EAAQ2sB,OAAS3sB,EAAQ2sB,MAAM+M,KAAO,GACpDs9G,OAAQl+I,KAAKk+I,YAKzBmiB,GAAkB8M,GAAM,CACpB71E,KAAM,CACFhrF,SAAS,EACT5G,KAAM+3J,GAEV5pI,MAAO,CACH/mB,SAAUixJ,EACVzxJ,SAAS,EACT2iI,MAAOj/C,EACPqnE,OAAQrnE,GAEZ09E,KAAM,CACFphK,SAAS,GAEbA,SAAS,EACTQ,SAAUmjF,EACVr2C,OAAQ,IAGZ,IAUIo0H,GAVwB,CACxBt9J,OAAQ,SAAUA,EAAQhI,GAAS,OAAOA,GAE1CwI,SAAU,SAAUxI,GAAS,OAAOA,GAEpC6U,UAAW,SAAU7U,GAAS,OAAO,IAAI0F,KAAK1F,IAE9CuM,SAAU,WAAc,OAAO,IAK/Bg5J,GAAcrmK,EAAM7E,OAAO,IAI/BkrK,GAAYh3I,SAAW,SAAS0oI,GAC5BqO,GAAYrO,GAGZl/J,OAAOu6H,kBACPv6H,OAAOu6H,iBAAiBizC,GAAa,CACjCzoB,eAAgB,CACZj2H,IAAK,WACD,OAAOy+I,OAMvB,IAAIE,GAAuB,uBAEvBC,GAAgBvmK,EAAM7E,OAAO,CAC7BoF,KAAM,SAASimK,GACXpuK,KAAKquK,aAAeD,GAGxBd,KAAM,SAASgB,GAIX,IAHA,IAAIlnK,EAAcC,UAEdyR,EAAS,GAAIuX,EAAMhpB,UAAUG,OAAS,EAClC6oB,KAAQ,GAAMvX,EAAQuX,GAAQjpB,EAAaipB,EAAM,GAEzD,IAAIk+I,EAAOvuK,KAAKuuK,KAEhB,OAAI3lK,EAAS0lK,IAAiBA,EAAan+J,MAAM2tJ,GACtCyQ,EAAK79J,OAAOtI,MAAMmmK,EAAM,CAAED,GAAejxJ,OAAQvE,IAGrDy1J,EAAKr9J,SAAS4H,EAAO,GAAIw1J,IAGpCE,WAAY,SAASF,EAAcx1J,EAAQ21J,GACvC,IAAIF,EAAOvuK,KAAKuuK,KAahB,OAVI3lK,EAAS0lK,IAAiBA,EAAan+J,MAAM2tJ,GACpCwQ,EAAa7rK,QAAQyrK,IAAsB,SAAS/9J,EAAO4I,EAAOC,GACvE,IAAItQ,EAAQoQ,EAAOG,SAASF,EAAO,KAEnC,OAAOw1J,EAAKr9J,SAASxI,EAAOsQ,EAAoBA,EAAkBhO,UAAU,GAAK,GAAIyjK,MAGhFF,EAAKr9J,SAAS4H,EAAO,GAAIw1J,EAAcG,MAOxDhuK,OAAOu6H,kBACPv6H,OAAOu6H,iBAAiBmzC,GAAcpmK,GAAI,CACtCwmK,KAAM,CACFh/I,IAAK,WACD,OAAOvvB,KAAKquK,cAAgBJ,GAAYzoB,gBAE5Ch2H,IAAK,SAAS9mB,GACV1I,KAAKquK,aAAe3lK,MAMpC,IAqCIgmK,GArCAC,GAAe/mK,EAAM7E,OAAO,CAC5BoF,KAAM,SAASymK,EAAO/yI,QACF,IAAZA,IAAsBA,EAAU,IAEpC77B,KAAKquK,aAAexyI,EAAQuyI,YAC5BpuK,KAAKsK,OAASuxB,EAAQvxB,QAAUskK,EAChC5uK,KAAK0Q,OAAS,IAAIy9J,GAActyI,EAAQuyI,aACxCpuK,KAAK4uK,MAAQA,EACb5uK,KAAKu9I,IAAMhrI,QAAQspB,EAAQ0hH,MAG/B/oH,OAAQ,SAASpyB,EAAM+0B,GACfn3B,KAAK4uK,OACL5uK,KAAK4uK,MAAMxkK,QAAQhI,EAAM+0B,IAIjC03I,WAAY,SAAS7pI,GACjB,IAAI8pI,IAAa9uK,KAAK4uK,OAAS,IAAI1nK,SAAW,IAAI4nK,SAClD,OAAOA,GAAYA,EAASC,OAAS/pI,KAIzCvkC,OAAOu6H,kBACPv6H,OAAOu6H,iBAAiB2zC,GAAa5mK,GAAI,CACrCwmK,KAAM,CACFh/I,IAAK,WACD,OAAOvvB,KAAKquK,cAAgBJ,GAAYzoB,gBAE5Ch2H,IAAK,SAAS9mB,GACV1I,KAAKquK,aAAe3lK,EACpB1I,KAAK0Q,OAAO69J,KAAO7lK,MAQnC,IAAIsmK,GAAmBpnK,EAAM7E,OAAO,IAIpCisK,GAAiB/3I,SAAW,SAAS0oI,GACjC+O,GAAY/O,GAGhBqP,GAAiBhoH,OAAS,SAASn7C,EAASxB,GACxC,GAAIqkK,GACA,OAAOA,GAAU1nH,OAAOn7C,EAASxB,IAIzC,IAAI4kK,GAAW,CACdN,aAAcA,GACdK,iBAAkBA,GAClBb,cAAeA,GACfF,YAAaA,GACbxO,gBAAiBA,IAGlB,SAASyP,GAAehoK,EAASioK,GAC7B,IAAIC,EAAQloK,EAAQkoK,MAChBC,EAAQnoK,EAAQmoK,MAChBviK,EAAW5F,EAAQ4F,SAEnBgvC,EAAO,IAAIwwF,EAAK,CAChBzO,OAAQ,CACJ7wH,MAAOmiK,EAAYniK,MACnBoiH,MAAO+/C,EAAY//C,SAc3B,OAVIloH,EAAQkrC,SACR0J,EAAKM,OAAOgzH,EAAOtiK,GACd89H,OAAOwkC,EAAQD,EAAY1/J,KAAM3C,GAEtCgvC,EAAKM,OAAOtvC,EAAUuiK,GACjBzkC,OAAO99H,EAAUuiK,EAAQF,EAAY1/J,MAG9CsvJ,EAAiBjjH,GAEVA,EAGX,SAASwzH,GAAmBpoK,EAASqoK,GACjC,IAAI9B,EAAYvmK,EAAQumK,UACpB+B,EAAUtoK,EAAQsoK,QAClB1iK,EAAW5F,EAAQ4F,SAEnB4gK,EAAO,IAAIphC,EAAK,CAChBzO,OAAQ,CACJ7wH,MAAOuiK,EAASviK,MAChBoiH,MAAOmgD,EAASngD,MAChB4sB,SAAUuzB,EAASvzB,YAc3B,OAVI90I,EAAQkrC,SACRs7H,EAAKtxH,OAAOqxH,EAAW3gK,GAClB89H,OAAO4kC,EAAS1iK,GAErB4gK,EAAKtxH,OAAOtvC,EAAU2gK,GACjB7iC,OAAO99H,EAAU0iK,GAG1BzQ,EAAiB2O,GAEVA,EAGX,IAAI+B,GAAO7K,GAAa7hK,OAAO,CAC3BoF,KAAM,SAASjB,EAASi+J,QACC,IAAjBA,IAA2BA,EAAe,IAAIwJ,IAElD/J,GAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKmlK,aAAeA,EAEfnlK,KAAKkH,QAAQoF,UACdtM,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAAS,CACxCwoK,OAAQ,CACJpjK,SAAS,GAEbohK,KAAM,CACFphK,SAAS,GAEbqsC,OAAQ,EACRg3H,cAAe,EACfC,cAAe,KAIvB5vK,KAAKkH,QAAQ2oK,WAAarnK,EAAW,GAAI,CACrC4mH,MAAOpvH,KAAKkH,QAAQwmK,KAAKt+C,MACzBpiH,MAAOhN,KAAKkH,QAAQwmK,KAAK1gK,MACzBV,QAAStM,KAAKkH,QAAQ4oK,gBAAkBr5B,GACzCz2I,KAAKkH,QAAQ2oK,WAAY,CACxBpgK,KAAMzP,KAAKkH,QAAQ0oK,cACnB3gC,MAAOjvI,KAAKkH,QAAQ4oK,gBAGxB9vK,KAAKkH,QAAQ6oK,WAAavnK,EAAW,GAAI,CACrC4mH,MAAOpvH,KAAKkH,QAAQwmK,KAAKt+C,MACzBpiH,MAAOhN,KAAKkH,QAAQwmK,KAAK1gK,MACzBV,QAAStM,KAAKkH,QAAQ8oK,gBAAkBv5B,GACzCz2I,KAAKkH,QAAQ6oK,WAAY,CACxBtgK,KAAMzP,KAAKkH,QAAQyoK,cACnB1gC,MAAOjvI,KAAKkH,QAAQ8oK,gBAGxBhwK,KAAKiwK,aAEAjwK,KAAKkH,QAAQgpK,cACdlwK,KAAKmwK,eAGTnwK,KAAKowK,cACLpwK,KAAKqwK,eAGTJ,WAAY,aAGZK,YAAa,WACT,MAAO,CACHn6J,IAAKnW,KAAKkH,QAAQwoK,OAAOjrH,KACzB7rC,IAAK5Y,KAAKuwK,gBAIlBC,uBAAwB,SAASC,GAC7B,IAAI92H,EAAW82H,EAAa92H,SAExBwlH,GAASxlH,KACT82H,EAAahE,cAAgB9yH,EAASs1F,MACtCwhC,EAAa92H,SAAWA,EAAS2+E,QAIzC63C,aAAc,WACV,IAAIh/C,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACf+nI,EAAQ/nI,EAAQkrC,SAAWznB,EAAQqlE,EACnCygF,EAAejoK,EAAW,GAAKtB,EAAQwoK,OAAQ,CAC/CzgC,MAAOA,EACPr1F,OAAQ1yC,EAAQ0yC,SAEhBlH,EAAOrvC,KAAKuV,IAAI,EAAG63J,EAAa/9H,MAIpC,GAFA1yC,KAAK0wK,cAEDD,EAAankK,QAAS,CACtBtM,KAAKwwK,uBAAuBC,GACE,SAA1BA,EAAa92H,WACb82H,EAAa92H,SAAW,EACxBzyC,EAAQypK,kBAAmB,GAI/B,IADA,IAAI/8G,EAAQ5zD,KAAKswK,cACR1mK,EAAMgqD,EAAMz9C,IAAKvM,EAAMgqD,EAAMh7C,IAAKhP,GAAO8oC,EAAM,CACpD,IAAIk+H,EAAe,CAAE73J,MAAOnP,EAAKkR,MAAO84C,EAAMh7C,KAC1Cib,EAAQs9F,EAAS0/C,gBAAgBjnK,EAAK6mK,EAAcG,GACpD/8I,IACAs9F,EAASp3E,OAAOlmB,GAChBs9F,EAASu+C,OAAO/tK,KAAKkyB,OAMrC68I,YAAa,WACT1wK,KAAKm1C,SAAWjX,GAAKl+B,KAAKm1C,UAAU,SAAUzR,GAAS,QAASA,aAAiB8oI,OACjFxsK,KAAK0vK,OAAS,IAGlBoB,WAAY,WACR,IAAI3/C,EAAWnxH,KAEXA,KAAK+9C,QACL/9C,KAAKm1C,SAAWjX,GAAKl+B,KAAKm1C,UAAU,SAAUzR,GAAS,OAAOA,IAAUytF,EAASpzE,SACjF/9C,KAAK+9C,WAAQ+9F,IAIrB7lF,MAAO,WACHj2D,KAAK0wK,cACL1wK,KAAK8wK,cAGTC,QAAS,WACL,IACI7pK,EADMlH,KACQkH,QACdgyC,EAFMl5C,KAEIk5C,IACV9G,EAAWlrC,EAAQkrC,SACnBwB,EAAS1sC,EAAQwoK,OAAO97H,OACxBo9H,EAAQp9H,EAASsF,EAAI+jC,GAAK/jC,EAAIikC,GAC9B8zF,EAAQr9H,EAASsF,EAAIkkC,GAAKlkC,EAAIgkC,GAC9BqmE,EAAYr8I,EAAQwmK,KAAK1gK,OAAS,EAEtC,OAAOolC,EACH,IAAIuvH,GAAIqP,EAAO93H,EAAIgkC,GAAI8zF,EAAO93H,EAAIkkC,GAAKmmE,GACvC,IAAIoe,GAAIzoH,EAAI+jC,GAAIg0F,EAAO/3H,EAAIikC,GAAKomE,EAAW0tB,IAGnDb,YAAa,WACT,IAAIlpK,EAAUlH,KAAKkH,QACfmlK,EAAe7jK,EAAW,CAC1BmxC,SAAUzyC,EAAQkrC,UAAY,GAAK,EACnCxR,KAAM,GACNgZ,OAAQ,EACRs3H,YAAY,GACbhqK,EAAQ62C,OAEX,GAAIsuH,EAAa//J,SAAW+/J,EAAazrI,KAAM,CAC3C,IAAImd,EAAQ,IAAIitH,GAAQqB,EAAazrI,KAAMyrI,GAC3CrsK,KAAK+5C,OAAOgE,GACZ/9C,KAAK+9C,MAAQA,IAIrBsyH,YAAa,WACT,IAAIl/C,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfiqK,EAAQjqK,EAAQiqK,MAChB/8I,EAAQ+8I,EAAMtjK,MAAQ,GAE1B7N,KAAKmxK,MAAQ,GAEb,IAAK,IAAI5pK,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAIynC,EAAOxmC,EAAW,GAAI2oK,EAAO/8I,EAAM7sB,IACvCynC,EAAKtmC,MAAQyoH,EAASigD,eAAepiI,EAAKtmC,OAE1C,IAAI2oK,EAAO,IAAIlE,GAAK,CAChBzkK,MAAOsmC,EAAKtmC,MACZk4B,KAAMoO,EAAKnb,MAAM+M,KACjBvM,SAAU2a,GACXA,EAAMmiF,EAASg0C,cAEdkM,EAAKnqK,QAAQoF,UACT0oH,GAAQq8C,EAAKnqK,QAAQ4F,UACjB5F,EAAQkrC,WAAa/c,GAAQg8I,EAAKnqK,QAAQ4F,SAAU,CAAE2d,EAAME,IAC5D0mJ,EAAKnqK,QAAQ4F,SAAW5F,EAAQ4O,QAAU2U,EAAOE,EACzCzjB,EAAQkrC,UAAa/c,GAAQg8I,EAAKnqK,QAAQ4F,SAAU,CAAEmjF,EAAKC,MACnEmhF,EAAKnqK,QAAQ4F,SAAW5F,EAAQ4O,QAAUo6E,EAASD,GAGnD/oF,EAAQkrC,SACRi/H,EAAKnqK,QAAQ4F,SAAW5F,EAAQ4O,QAAU2U,EAAOE,EAEjD0mJ,EAAKnqK,QAAQ4F,SAAW5F,EAAQ4O,QAAUo6E,EAASD,EAG3DkhC,EAASp3E,OAAOs3H,GAChBlgD,EAASggD,MAAMxvK,KAAK0vK,MAKhCD,eAAgB,SAAS1oK,GACrB,OAAOA,GAGX48J,aAAc,WACVV,GAAa78J,GAAGu9J,aAAa/6J,KAAKvK,MAElCA,KAAKsxK,mBAGT/L,aAAc,WACVX,GAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAElCA,KAAKkpK,mBACLlpK,KAAK4tK,cAGT2D,gBAAiB,WACb,IAAIC,EAAYxxK,KAAKyxK,WAQrB,OAPKD,IACDA,EAAYxxK,KAAKyxK,WAAa,IAAIjjC,EAAM,CACpC50F,QAAS,IAEb55C,KAAK4lK,aAAa5lK,KAAKyxK,aAGpBD,GAGXE,YAAa,SAASC,GAClB,IAAIzqK,EAAUlH,KAAKkH,QACf6pK,EAAU/wK,KAAK+wK,UACfn9H,EAAS1sC,EAAQwoK,OAAO97H,OACxBg+H,EAAY1qK,EAAQ6oK,WAAWzjK,QAAUpF,EAAQ0qK,UAAY,EAC7DC,EAAkB,CAGlBz/H,SAAUlrC,EAAQkrC,UAGtB,SAASxiC,EAAOkiK,EAAe3C,EAAa4C,GACxC,IAAIj3J,EAAQg3J,EAActqK,OACtBkrC,EAAOrvC,KAAKuV,IAAI,EAAGu2J,EAAYz8H,MAEnC,GAAIy8H,EAAY7iK,QACZ,IAAK,IAAI/E,EAAI4nK,EAAY1qH,KAAMl9C,EAAIuT,EAAOvT,GAAKmrC,EACvCsiF,GAAQ+8C,IAAcxqK,EAAIwqK,GAAa,IAI3CF,EAAgBzC,MAAQx7H,EAASm9H,EAAQ5zF,GAAK4zF,EAAQ5zF,GAAKgyF,EAAY1/J,KACvEoiK,EAAgBxC,MAAQz7H,EAASm9H,EAAQ7zF,GAAKiyF,EAAY1/J,KAAOshK,EAAQ7zF,GACzE20F,EAAgB/kK,SAAWglK,EAAcvqK,GAEzCoqK,EAAU53H,OAAOm1H,GAAe2C,EAAiB1C,KAK7Dv/J,EAAO5P,KAAKgyK,wBAAyB9qK,EAAQ6oK,YAC7CngK,EAAO5P,KAAKiyK,wBAAyB/qK,EAAQ2oK,WAAY+B,EAAY1qK,EAAQgrK,YAGjFtE,WAAY,WACR,IAAI1mK,EAAUlH,KAAKkH,QACfwmK,EAAOxmK,EAAQwmK,KACfqD,EAAU/wK,KAAK+wK,UAEnB,GAAIrD,EAAK1gK,MAAQ,GAAK0gK,EAAKphK,QAAS,CAChC,IAAI8iC,EAAO,IAAIk9F,EAAK,CAChBzO,OAAQ,CACJ7wH,MAAO0gK,EAAK1gK,MACZoiH,MAAOs+C,EAAKt+C,MACZ4sB,SAAU0xB,EAAK1xB,YAQvB5sG,EAAKgN,OAAO20H,EAAQ9zF,GAAI8zF,EAAQ7zF,IAC3B0tD,OAAOmmC,EAAQ5zF,GAAI4zF,EAAQ3zF,IAE5Bl2E,EAAQirK,aACRpT,EAAiB3vH,GAGrB,IAAI8kB,EAAQl0D,KAAKoyK,WAAa,IAAI5jC,EAClCt6E,EAAMna,OAAO3K,GAEbpvC,KAAKk+I,OAAOnkG,OAAOma,GACnBl0D,KAAK0xK,YAAYx9G,KAIzBm+G,kBAAmB,WACf,IAAInrK,EAAUlH,KAAKkH,QACforK,EAAW,EAUf,OARIprK,EAAQ6oK,WAAWzjK,SAAWpF,EAAQ2oK,WAAWvjK,QACjDgmK,EAAWjvK,KAAKuV,IAAI1R,EAAQ6oK,WAAWtgK,KAAMvI,EAAQ2oK,WAAWpgK,MACzDvI,EAAQ6oK,WAAWzjK,QAC1BgmK,EAAWprK,EAAQ6oK,WAAWtgK,KACvBvI,EAAQ2oK,WAAWvjK,UAC1BgmK,EAAWprK,EAAQ2oK,WAAWpgK,MAG3B6iK,GAGXpJ,iBAAkB,WACd,IACIhiK,EADMlH,KACQkH,QACdgyC,EAFMl5C,KAEIk5C,IACV+4G,EAAa/qJ,EAAQ+qJ,WAErBA,IACAjyJ,KAAKuyK,gBAAkBjmC,EAAKc,SAASl0F,EAAI2pH,SAAU,CAC/C5vI,KAAM,CACFm8F,MAAO6iC,GAEXp0B,OAAQ,OAGZ79H,KAAKk+I,OAAOnkG,OAAO/5C,KAAKuyK,mBAIhCjB,gBAAiB,WACb,IAAIngD,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfsrK,EAAYtrK,EAAQsrK,WAAa,GACjCpgI,EAAWlrC,EAAQkrC,SACnBqgI,EAAWzyK,KAAKyyK,SAEpB,GAAyB,IAArBD,EAAUhrK,OAAd,CAUA,IANA,IAAI0sD,EAAQl0D,KAAK0yK,eAAiB,IAAIlkC,EAAM,CACxC50F,QAAS,IAGT+4H,EAAUz0I,GAAKl+B,KAAK2tF,KAAKilF,MAAM,SAAU5tI,GAAQ,OAAOA,EAAK99B,QAAQkrC,WAAa++E,EAASjqH,QAAQkrC,YAAa,GAE3GxoC,EAAM,EAAGA,EAAM4oK,EAAUhrK,OAAQoC,IAAO,CAC7C,IAAIolC,EAAOwjI,EAAU5oK,GACjBipK,OAAQ,EAAUC,OAAQ,EAC1BrC,EAAezhI,EAAKnb,MACpBA,OAAQ,EAyBZ,GAvBIue,GACAygI,GAASF,GAAWF,EAASzB,OAAOD,UACpC+B,EAAQ3hD,EAAS4hD,QAAQ/jI,EAAK7Q,KAAM6Q,EAAK5Q,IAAI,KAE7Cy0I,EAAQ1hD,EAAS4hD,QAAQ/jI,EAAK7Q,KAAM6Q,EAAK5Q,IAAI,GAC7C00I,GAASH,GAAWF,EAASxB,OAAOF,WAGpCN,IACAA,EAAapZ,OAASoZ,EAAa3jK,UAAY2d,EAC/CoJ,EAAQs9F,EAAS6hD,oBACbvC,EACAzhI,EACA,IAAI2yH,GACAkR,EAAM51F,GACN61F,EAAM51F,GACN21F,EAAM11F,GACN21F,EAAM11F,MAMI,IAAlBy1F,EAAM7lK,SAAoC,IAAnB8lK,EAAMnmK,SAAgB,CAC7C,IAAIsmK,EAAW,IAAI/3C,EACf,CAAE23C,EAAM51F,GAAI61F,EAAM51F,IAClB,CAAE21F,EAAM7lK,QAAS8lK,EAAMnmK,WAGvByiC,EAAOk9F,EAAKc,SAAS6lC,EAAU,CAC/BhgJ,KAAM,CACFm8F,MAAOpgF,EAAKogF,MACZx4F,QAASoY,EAAKpY,SAElBinG,OAAQ,OAGZ3pE,EAAMna,OAAO3K,GACTvb,GACAqgC,EAAMna,OAAOlmB,IAKzB7zB,KAAK4lK,aAAa1xG,KAGtB8+G,oBAAqB,SAASn/I,EAAOmb,EAAMkK,GAEvC,IAAsB,IAAlBrlB,EAAMvnB,QACN,OAAO,KAGX,IACI4mK,EADAtyI,EAAO/M,EAAM+M,KAGjB,GAAIo0F,GAAQnhG,IAAUA,EAAMvnB,QAAS,CACjC,IAAI6mK,EAAgBzT,GAAY7rI,GAC5Bs/I,EACAvyI,EAAOuyI,EAAc,CAAEvyI,KAAMA,EAAMoO,KAAMA,IAClCnb,EAAMnjB,SACbkwB,EAAO5gC,KAAKmlK,aAAaz0J,OAAO48J,KAAKz5I,EAAMnjB,OAAQkwB,IAGlD/M,EAAMu7F,QACPv7F,EAAMu7F,MAAQpvH,KAAKkH,QAAQwoK,OAAOtgD,OAQ1C,OAJA8jD,EAAU,IAAIlI,GAAQpqI,EAAM/M,IACpBu8G,OAAOl3F,GACfg6H,EAAQ5N,eAED4N,EAAQh1B,QAGnBk1B,gBAAiB,SAAST,GACtB,IAAIzrK,EAAUlH,KAAKkH,QACfmsK,EAAiBnsK,EAAQmsK,eACzBC,EAAiBpsK,EAAQosK,eACzBpB,EAAYhrK,EAAQgrK,UACpB9/H,EAAWlrC,EAAQkrC,SACnBmhI,EAAkBZ,EAAQzrK,QAAQwmK,KAAKphK,QACvCslK,EAAY0B,EAAehnK,QAAUpF,EAAQ0qK,UAAY,EACzDb,EAAU4B,EAAQ5B,UAClByC,EAAUzC,EAAQ3+H,EAAW,KAAO,MACpCqhI,EAAc,CACdhG,UAAWsD,EAAQ3+H,EAAW,KAAO,MACrCo9H,QAASuB,EAAQ3+H,EAAW,KAAO,MACnCA,SAAUA,GAEV29H,EAAa,GAEbz5I,EAAYt2B,KAAKuxK,kBAErB,SAAS3hK,EAAOkiK,EAAevC,EAAUwC,GACrC,IAAIj3J,EAAQg3J,EAActqK,OACtBkrC,EAAOrvC,KAAKuV,IAAI,EAAG22J,EAAS78H,MAEhC,GAAI68H,EAASjjK,QACT,IAAK,IAAI/E,EAAIgoK,EAAS9qH,KAAMl9C,EAAIuT,EAAOvT,GAAKmrC,EAAM,CAC9C,IAAI2hD,EAAMt+E,GAAM+7J,EAAcvqK,IACzB8tB,GAAQg/D,EAAK07E,IACVxoK,EAAIwqK,GAAa,GAAOwB,GAAmBC,IAAYn/E,IACvDo/E,EAAY3mK,SAAWunF,EACvB/9D,EAAUyjB,OAAOu1H,GAAmBmE,EAAalE,IAEjDQ,EAAWpuK,KAAK0yF,KAUpC,OAHAzkF,EAAO5P,KAAKgyK,wBAAyBsB,GACrC1jK,EAAO5P,KAAKiyK,wBAAyBoB,EAAgBzB,EAAYM,GAE1D57I,EAAU6e,UAGrBi7F,OAAQ,SAASl3F,GAcb,IAbA,IAAIjqB,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdwoK,EAASzgJ,EAAIygJ,OACb3xH,EAAQ9uB,EAAI8uB,MACZ3L,EAAWlrC,EAAQkrC,SACnBt3B,EAAQ40J,EAAOloK,OACfksK,EAASthI,EAAWhB,EAAQC,EAC5BsiI,EAAY51H,EAAQA,EAAM7E,IAAIw6H,KAAY,EAC1ChhK,EAAQ1S,KAAKqyK,oBAAsBnrK,EAAQyxC,OAASg7H,EAEpDjgF,IADW1zF,KAAK+kK,WAAa,IAAI7rH,KAAOA,GACtBw6H,KAClBE,EAAe,EAEVrsK,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIssK,EAAYnE,EAAOnoK,GAAG2xC,IAAIw6H,KAC1BG,EAAYnhK,GAASghF,IACrBkgF,EAAevwK,KAAKuV,IAAIg7J,EAAcC,IAK1C7zK,KAAKk5C,IADL9G,EACW,IAAIuvH,GACXzoH,EAAI+jC,GAAI/jC,EAAIgkC,GACZhkC,EAAI+jC,GAAK22F,EAAelhK,EAAOwmC,EAAIkkC,IAG5B,IAAIukF,GACXzoH,EAAI+jC,GAAI/jC,EAAIgkC,GACZhkC,EAAIikC,GAAIjkC,EAAIgkC,GAAK02F,EAAelhK,GAIxC1S,KAAK8zK,eACL9zK,KAAK+zK,gBACL/zK,KAAKg0K,gBAGTC,uBAAwB,WACpB,OAAOj0K,KAAKgyK,yBAGhBkC,eAAgB,SAASrgJ,GACrB,OAAOA,EAAM9a,OAGjBg7J,cAAe,WAWX,IAVA,IAGI7sK,EADMlH,KACQkH,QACdwoK,EAFM1vK,KAEO0vK,OACbyE,EAAqBn0K,KAAKm0K,qBAC1B/hI,EAAWlrC,EAAQkrC,SACnBwB,EAAS1sC,EAAQwoK,OAAO97H,OACxBk+H,EAAgB9xK,KAAKi0K,yBAEhBrqK,EAAM,EAAGA,EAAM8lK,EAAOloK,OAAQoC,IAAO,CAC1C,IAAIiqB,EAAQ67I,EAAO9lK,GACfwqK,EAZOp0K,KAYWk0K,eAAergJ,GACjCggJ,EAAYzhI,EAAWve,EAAMqlB,IAAIvsC,SAAWknB,EAAMqlB,IAAIlsC,QACtDqnK,EAAoBvC,EAAcsC,GAClCE,EAAmBxC,EAAcsC,EAAS,GAC1CG,OAAgB,EAAUC,OAAc,EAE5C,GAAIpiI,EAAU,CACV,GAAI+hI,EAEAI,EADaF,GAAqBC,EAAmBD,GAAqB,EAChDR,EAAY,OAEtCU,EAAgBF,EAAqBR,EAAY,EAGrDW,EAAcD,OAEVJ,GACAI,EAAgBF,EAChBG,EAAcF,GAGdE,GADAD,EAAgBF,EAAqBR,EAAY,GACnBA,EAjC3B7zK,KAqCFy0K,cAAc5gJ,EAAO+f,EAAQ2gI,EAAeC,KAI7DC,cAAe,SAAS5gJ,EAAO+f,EAAQ2gI,EAAeC,QAC9B,IAAhBA,IAA0BA,EAAcD,GAE5C,IAIIG,EAJAxtK,EAAUlH,KAAKkH,QACfkrC,EAAWlrC,EAAQkrC,SACnB2+H,EAAU/wK,KAAK+wK,UACf4D,EAAc30K,KAAKqyK,oBAAsBnrK,EAAQyxC,OAGrD,GAAIvG,EAAU,CACV,IAAIwiI,EAAS7D,EAAQ5zF,GAEjBvpC,GACAghI,GAAUD,EACV9gJ,EAAM3sB,QAAQylK,eAAiBliJ,IAE/BmqJ,GAAUD,EAAc9gJ,EAAMqlB,IAAIlsC,QAClC6mB,EAAM3sB,QAAQylK,eAAiBhiJ,GAGnC+pJ,EAAW7gJ,EAAMqlB,IAAI3e,KAAKq6I,EAAQL,OAC/B,CACH,IAAIM,EAAS9D,EAAQ7zF,GAEjBtpC,GACAihI,GAAUF,EAAc9gJ,EAAMqlB,IAAIvsC,SAClCknB,EAAM3sB,QAAQylK,eAAiBz8E,IAE/B2kF,GAAUF,EACV9gJ,EAAM3sB,QAAQylK,eAAiB18E,GAGnCykF,EAAW,IAAI/S,GACX4S,EAAeM,EACfL,EAAaK,EAAShhJ,EAAMqlB,IAAIvsC,UAIxCknB,EAAMu8G,OAAOskC,IAGjBI,qBAAsB,SAASJ,EAAUK,GACrC,OAAIL,EAAS1nK,QAAU+nK,EACZ,EAGPL,EAAS/nK,SAAWooK,GACZ,IAGJ,IAGZpE,iBAAkB,WAGd,IAAK3wK,KAAKkH,QAAQypK,kBAAoB3wK,KAAKkH,QAAQkrC,SAC/C,OAAO,EAQX,IALA,IAAI0/H,EAAgB9xK,KAAKgyK,wBACrBtC,EAAS1vK,KAAK0vK,OACdsF,EAAQ3xK,KAAK8S,IAAIu5J,EAAOloK,OAAQsqK,EAActqK,OAAS,GACvD8wH,EAAQ,EAEH1uH,EAAM,EAAGA,EAAMorK,EAAOprK,IAAO,CAClC,IAAIoD,EAAQ3J,KAAK6T,IAAI46J,EAAcloK,EAAM,GAAKkoK,EAAcloK,IACxD8qK,EAAWhF,EAAO9lK,GAAKsvC,IACvB+7H,EAdOj1K,KAce80K,qBAAqBJ,EAAU1nK,GAMzD,GAJmB,IAAfioK,IACA38C,EAAQ28C,IAGG,KAAX38C,EACA,MAIR,GAAc,IAAVA,EAAa,CACb,IAAK,IAAI48C,EAAQ,EAAGA,EAAQxF,EAAOloK,OAAQ0tK,IACvCxF,EAAOwF,GAAOhuK,QAAQyyC,SAAW2+E,EACjCo3C,EAAOwF,GAAO9kC,OAAO,IAAIuxB,IAG7B,OAAO,IAIfmS,aAAc,WACV,IACI5sK,EADMlH,KACQkH,QACd62C,EAFM/9C,KAEM+9C,MACZnK,EAAS1sC,EAAQwoK,OAAO97H,OACxBxB,EAAWlrC,EAAQkrC,SAEnB2L,IACI3L,GACA2L,EAAM72C,QAAQ+nI,MAAQr7F,EAASjpB,EAAQF,EACvCszB,EAAM72C,QAAQmwJ,OAASt5G,EAAM72C,QAAQ4F,WAErCixC,EAAM72C,QAAQ+nI,MAAQlxF,EAAM72C,QAAQ4F,SACpCixC,EAAM72C,QAAQmwJ,OAASzjH,EAASq8C,EAAMC,GAG1CnyC,EAAMqyF,OAAOpwI,KAAKk5C,OAI1B86H,aAAc,WAGV,IAFA,IAAI7iD,EAAWnxH,KAEN4J,EAAM,EAAGA,EAAM5J,KAAKmxK,MAAM3pK,OAAQoC,IAAO,CAC9C,IAAIolC,EAAOmiF,EAASggD,MAAMvnK,GACtBlB,EAAQsmC,EAAK9nC,QAAQwB,MACrBysK,OAAO,EAEPngD,GAAQtsH,IACJyoH,EAASikD,iBAAiB1sK,GAC1BsmC,EAAK9hC,OAEL8hC,EAAK7hC,OAGTgoK,EAAOhkD,EAASkkD,SAAS3sK,IAEzBsmC,EAAK7hC,OAGT6hC,EAAKohG,OAAO+kC,GAAQhkD,EAAS4/C,aAIrCsE,SAAU,SAAS3sK,GACf,OAAO1I,KAAK+yK,QAAQrqK,IAGxBs5J,QAAS,SAASsT,GACd,IAAIvE,EAAUuE,EAAWvE,UACrB3+H,EAAWpyC,KAAKkH,QAAQkrC,SACxBiiD,EAAMjiD,EAAWp9B,EAAI3P,EAEzBrF,KAAKk5C,IAAI6oH,OAAOgP,EAAS18E,GACrBjiD,EACApyC,KAAKk5C,IAAIgpH,OAAO,EAAGliK,KAAK+wK,UAAUpkK,SAAWokK,EAAQpkK,UAErD3M,KAAKk5C,IAAIgpH,OAAOliK,KAAK+wK,UAAU/jK,QAAU+jK,EAAQ/jK,QAAS,GAE9DhN,KAAKk5C,IAAIm7C,EAAM,IAAMr0F,KAAK+wK,UAAU18E,EAAM,GAAK08E,EAAQ18E,EAAM,GAC7Dr0F,KAAKk5C,IAAIm7C,EAAM,IAAMr0F,KAAK+wK,UAAU18E,EAAM,GAAK08E,EAAQ18E,EAAM,IAGjEkhF,cAAe,SAAS7sK,EAAOxB,EAAS20B,GACpC,IAEI+E,EAFAuwF,EAAWnxH,KAGXw1K,EAAO9V,GAAYx4J,GACnBuuK,EAAc,WACd,OAAKvuK,EAAQwJ,OAINygH,EAASg0C,aAAaz0J,OAAO89J,WAChCtnK,EAAQwJ,OAAQ,CAAEhI,GAASxB,EAAQoM,SAJ5B5K,GAQX8sK,EAQA50I,EAAO40I,EAPe7yK,EAAEI,OAAO,GAAI84B,EAAS,CACpC+E,WAAS,OAAO60I,KACpB/sK,MAAOA,EACPgI,OAAQxJ,EAAQwJ,OAChB4C,QAASpM,EAAQoM,WAKrBstB,EAAO60I,IAGX,OAAO70I,GAGXu0I,KAAM,SAASh3I,EAAOC,EAAI42I,GACtB,IAAIG,EAAOn1K,KAAK+yK,QAAQ50I,EAAMC,EAAI42I,GAClC,GAAIG,EACA,OAAOA,EAAKtS,UAIpB+E,WAAY,WACR,IAAI1uH,EAAMl5C,KAAKk5C,IAAI/xC,QACfuoK,EAAS1vK,KAAK0vK,OAClB,GAAIA,EAAOloK,OAAQ,CACf,IAAIw9B,EAAOhlC,KAAKkH,QAAQkrC,SAAWp9B,EAAI3P,EACvC,GAAIrF,KAAKmlK,aAAa0J,WAAW7pI,GAAO,CACpC,IAAIjoB,EAAS/c,KAAK01K,iBAClBx8H,EAAIlU,EAAO,IAAMjoB,EAAOzH,MACxB4jC,EAAIlU,EAAO,IAAMjoB,EAAOpR,QACrB,CACC+jK,EAAO,GAAGxoK,QAAQoF,SAClB4sC,EAAIltB,KAAK0jJ,EAAO,GAAGx2H,KAEvB,IAAIy8H,EAAYjG,EAAOA,EAAOloK,OAAS,GACnCmuK,EAAUzuK,QAAQoF,SAClB4sC,EAAIltB,KAAK2pJ,EAAUz8H,MAK/B,OAAOA,GAGXw8H,eAAgB,WAeZ,IAdA,IAEIzmJ,EAAMjvB,KAAKkH,QACXkrC,EAAWnjB,EAAImjB,SACft8B,EAAUmZ,EAAInZ,QACdq+J,EAAqBn0K,KAAKm0K,qBAC1BrC,EAAgB9xK,KAAKi0K,yBACrB2B,EAAcxjI,EAAWp9B,EAAI3P,EAC7BqqK,EAAS1vK,KAAK0vK,OACdmG,EAAgB//J,EAAU,EAAI,EAC9BggK,EAAchgK,EAAU,EAAI,EAC5BigK,EAAiB,EACjBC,EAAe,EAEVpsK,EAAM,EAAGA,EAAM8lK,EAAOloK,OAAQoC,IAAO,CAC1C,IAAIiqB,EAAQ67I,EAAO9lK,GACfwqK,EAhBOp0K,KAgBWk0K,eAAergJ,GACjCoiJ,OAAY,EAAUC,OAAU,EAEhC/B,GACA8B,EAAYnE,EAAcsC,EAASyB,GACnCK,EAAUpE,EAAcsC,EAAS0B,IAEjCG,EAAYC,EAAUpE,EAAcsC,GAGxC2B,EAAiB1yK,KAAKuV,IAAIm9J,EAAgBE,EAAYpiJ,EAAMqlB,IAAI08H,EAAc,IAC9EI,EAAe3yK,KAAKuV,IAAIo9J,EAAcniJ,EAAMqlB,IAAI08H,EAAc,GAAKM,GAGvE,MAAO,CACH5gK,MAAOygK,EACPpqK,IAAKqqK,IAIbG,WAAY,SAASh4I,EAAMC,EAAIjoB,EAAKyC,EAAKmE,GACrC,IAAI7V,EAAUlH,KAAKkH,QAEnB,GAAKi3B,EAAOhoB,GAAO4G,EAAS,KAAOi4G,GAAQ9tH,EAAQiP,MAAQjP,EAAQiP,KAAOA,IAAUyC,EAAMwlB,GAAMrhB,EAAS,KAAOi4G,GAAQ9tH,EAAQ0R,MAAQA,GAAO1R,EAAQ0R,KACnJ,OAAO,KAGX,GAAKwlB,EAAKjoB,GAAO4G,EAAS,GAAOnE,EAAMulB,GAAQphB,EAAS,EACpD,MAAO,CACH5G,IAAKgoB,EACLvlB,IAAKwlB,GAIb,IAAIg4I,EAAYh4I,EAAKD,EACjBk4I,EAAWl4I,EACXm4I,EAAWl4I,EAUf,OARID,EAAOhoB,GAAO4G,EAAS,GACvBs5J,EAAW3/C,GAAWv4F,EAAMhoB,EAAKyC,GACjC09J,EAAW5/C,GAAWv4F,EAAOi4I,EAAWjgK,EAAMigK,EAAWx9J,IAClDwlB,EAAKxlB,GAAOmE,EAAS,IAC5Bu5J,EAAW5/C,GAAWt4F,EAAIjoB,EAAKyC,GAC/By9J,EAAW3/C,GAAWt4F,EAAKg4I,EAAWjgK,EAAKyC,EAAMw9J,IAG9C,CACHjgK,IAAKkgK,EACLz9J,IAAK09J,IAIbC,WAAY,WACR,MAAO,CACHpgK,IAAKnW,KAAKw2K,UACV59J,IAAK5Y,KAAKy2K,YAIlBC,QAAS,WAOL,IAAIznJ,EAAMjvB,KAAKkH,QAGf,OAFe+nB,EAAImjB,UAEC,EAAI,IADVnjB,EAAInZ,SACuB,EAAI,IAGjD6gK,SAAU,WACN,IACIvkI,EADMpyC,KAAKkH,QACIkrC,SACf2+H,EAAU/wK,KAAK+wK,UACfhgC,EAAW3+F,EAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,QACjDg4B,EAAOoN,EAAWp9B,EAAI3P,EACtBuxK,EAAU52K,KAAK02K,UAEfG,EAAa7xI,GADW,IAAZ4xI,EAAgB,EAAI,GACF1lK,WAGlC,MAAO,CACH8zB,KAAMA,EACN6xI,WAAYA,EACZD,QAASA,EACT7F,QAASA,EACThgC,SAAUA,EACV08B,UARYsD,EAAQ8F,KAY5BC,YAAa,SAASz8C,GAClB,IAAIprG,EAAMjvB,KAAK22K,WACX3xI,EAAO/V,EAAI+V,KACX4xI,EAAU3nJ,EAAI2nJ,QACdC,EAAa5nJ,EAAI4nJ,WACjB9F,EAAU9hJ,EAAI8hJ,QACdhgC,EAAW9hH,EAAI8hH,SAInB,OAHe6lC,EAAU,EAAIv8C,EAAMr1F,GAAQ+rI,EAAQ8F,GAAc9F,EAAQ8F,GAAcx8C,EAAMr1F,IACrE+rG,GAK5BgmC,aAAc,SAASC,EAAUpjH,GAG7B,IACIjkB,EAAQ+mF,GAAWsgD,GADP,WAUhB,OANIrnI,EAAQ,EACAikB,EAAQvwD,KAAK8S,IAAI,EAAGw5B,GAEpBikB,EAASA,GAAS,EAAIjkB,IAMtCwkI,mBAAoB,WAChB,OAAQn0K,KAAKkH,QAAQ+vK,WAGzBC,mBAAoB,eAIxB7W,GAAkBoP,GAAM,CACpBC,OAAQ,CACJpjK,SAAS,EACTqtC,SAAU,EACV/F,QAAQ,EACRlB,KAAM,EACN+R,KAAM,GAEVipH,KAAM,CACF1gK,MAAO,EACPoiH,MAAOouC,EACPlxJ,SAAS,GAEbyxC,MAAO,CACHzxC,SAAS,EACTQ,SAAUkjF,GAEd+/E,WAAY,CACR9gC,MAAOmvB,EACP3uJ,KAAM,EACNg1C,KAAM,EACN/R,KAAM,GAEVm9H,WAAY,CACR5gC,MAAOmvB,EACP3uJ,KAAM,EACNg1C,KAAM,EACN/R,KAAM,GAEVykI,kBAAmB,EACnBnH,cAAe5R,EACf0R,cAAer5B,EACf68B,eAAgB,CACZ7uH,KAAM,EACN/R,KAAM,GAEV2gI,eAAgB,CACZ/mK,SAAS,EACTU,MAAO,EACPoiH,MAAOouC,EACP/4G,KAAM,EACN/R,KAAM,GAGViG,OAAQ,EACRrsC,SAAS,EACTwJ,SAAS,EACTmhK,WAAW,EACX9F,MAAO,CACHt9I,MAAO,CACH+M,KAAM,KAIduxI,aAAa,EACbjC,cAAc,IAGlB,IAAIkH,GAAe,eACfC,GAAU,UACVC,GAAU,UACVC,GAAQ,QACRC,GAAO,OACPC,GAAQ,QACRC,GAAS,SACTC,GAAQ,QAGRC,GAAkB,IAClBC,GAAkB,IAClBC,GAAgB,KAChBC,GAAe,MACfC,GAAgB,OAChBC,GAAiB,QACjBC,GAAgB,QAChBC,GAAgB,CAChBC,MAASF,GACT3jK,OAAU0jK,GACVI,MAASL,GACT7jK,KAAQ4jK,GACR57J,MAAS27J,GACTxhK,QAAWuhK,GACXz7J,QAAWw7J,GACXv7J,aAhBuB,GAmB3B,SAASi8J,GAAiBpzK,EAAGigB,GAIzB,OAHWjgB,EAAE+D,UAAYkc,GACRjgB,EAAE+R,oBAAsBkO,EAAElO,qBAEf4gK,GAGhC,SAASU,GAASliK,EAAMmiK,GACpB,OAAO,IAAIpqK,KAAKiI,EAAKpN,UAAYuvK,GAGrC,SAASC,GAAO/vK,GACZ,IAAI6N,EAQJ,OANI7N,aAAiB0F,KACjBmI,EAAS7N,EACFA,IACP6N,EAAS,IAAInI,KAAK1F,IAGf6N,EAGX,SAASmiK,GAAYriK,EAAMqpB,QACF,IAAjBA,IAA2BA,EAAe,GAE9C,IAAIi5I,EAAiB,EACjBz8J,EAAM7F,EAAKK,SAEf,IAAK5N,MAAMoT,GACP,KAAOA,IAAQwjB,GACC,IAARxjB,EACAA,EAAM,EAENA,IAGJy8J,IAIR,OAAOJ,GAASliK,GAAOsiK,EAAiBZ,IAG5C,SAASr7J,GAAUrG,EAAM8F,GACrB,OAAc,IAAVA,GAAmC,KAApB9F,EAAKQ,aACpBR,EAAKoG,SAASpG,EAAKQ,WAAa,IACzB,GAgBf,SAAS+hK,GAAYC,EAAWnwK,EAAO2vH,EAAM34F,GACzC,IAAInpB,EAASsiK,EAEb,GAAIA,EAAW,CACX,IAAIxiK,EAAOoiK,GAAOI,GACd18J,EAAQ9F,EAAKQ,WAEbwhH,IAASs/C,GAETj7J,GADAnG,EAAS,IAAInI,KAAKiI,EAAKO,cAAgBlO,EAAO,EAAG,GAC/B,GACX2vH,IAASq/C,GAEhBh7J,GADAnG,EAAS,IAAInI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAajO,EAAO,GAC7CyT,GACXk8G,IAASo/C,GAEhB/6J,GADAnG,EAASqiK,GAAYF,GAAYriK,EAAMqpB,GAAuB,EAARh3B,EAAW8uK,IAC/Cr7J,GACXk8G,IAASm/C,GAEhB96J,GADAnG,EAAS,IAAInI,KAAKiI,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAY/N,GACtDyT,GACXk8G,IAASk/C,GAChBhhK,EA9BZ,SAAkBF,EAAM8F,GACpB,IAAI28J,EAAc,IAAI1qK,KAAKiI,GAE3ByiK,EAAYC,WAAW,EAAG,EAAG,GAE7B,IAAIC,GAAU3iK,EAAKY,oBAAsB6hK,EAAY7hK,qBAAuB4gK,GAE5E,OAAOU,GAASO,EAAaE,EAAS78J,EAAQ27J,IAuB7BmB,CAAS5iK,EAAM3N,GACjB2vH,IAASi/C,IAChB/gK,EAASgiK,GAASliK,EAAM3N,EAAQmvK,KAErB9gK,aAAe,GACtBR,EAAO2iK,WAAW,GAEf7gD,IAASg/C,GAChB9gK,EAASgiK,GAASliK,EAAM3N,EAAQkvK,IACzBv/C,IAAS++C,KAChB7gK,EAASgiK,GAASliK,EAAM3N,IAGxB2vH,IAAS++C,IAAgB7gK,EAAOS,kBAAoB,GACpDT,EAAO4iK,gBAAgB,GAI/B,OAAO5iK,EAGX,SAAS6iK,GAAU/iK,EAAMgiH,EAAM34F,GAC3B,OAAOk5I,GAAYH,GAAOpiK,GAAO,EAAGgiH,EAAM34F,GAG9C,SAAS25I,GAASR,EAAWxgD,EAAM34F,GAC/B,IAAIrpB,EAAOoiK,GAAOI,GAElB,OAAIxiK,GAAQ+iK,GAAU/iK,EAAMgiH,EAAM34F,GAAcz2B,YAAcoN,EAAKpN,UACxDoN,EAGJuiK,GAAYviK,EAAM,EAAGgiH,EAAM34F,GAGtC,SAAS45I,GAAap0K,EAAGigB,GACrB,OAAIjgB,GAAKigB,EACEjgB,EAAE+D,UAAYkc,EAAElc,WAGnB,EAGZ,SAASswK,GAASr0K,EAAGigB,GACjB,OAAOjgB,EAAE+D,UAAYkc,EAGzB,SAASq0J,GAAO9wK,GACZ,GAAIzF,EAAQyF,GAAQ,CAEhB,IADA,IAAI6N,EAAS,GACJ3M,EAAM,EAAGA,EAAMlB,EAAMlB,OAAQoC,IAClC2M,EAAO5U,KAAK63K,GAAO9wK,EAAMkB,KAG7B,OAAO2M,EACJ,GAAI7N,EACP,OAAO+vK,GAAO/vK,GAAOO,UAI7B,SAASwwK,GAAWv0K,EAAGigB,GACnB,OAAIjgB,GAAKigB,EACEq0J,GAAOt0K,KAAOs0K,GAAOr0J,GAGzBjgB,IAAMigB,EAGjB,SAASu0J,GAAUrjK,EAAMf,EAAOqkK,GAC5B,OAAOrB,GAAiBjiK,EAAMf,GAAS6iK,GAAcwB,GAGzD,SAASC,GAAUlxK,EAAO4M,EAAOqkK,EAAUE,GACvC,IAAIxjK,EAAOoiK,GAAO/vK,GACdyzC,EAAYs8H,GAAOnjK,GAcvB,OAXIqkK,IAAajC,GACJrhK,EAAKM,WAAawlC,EAAUxlC,WAA8D,IAAhDN,EAAKO,cAAgBulC,EAAUvlC,eAC9E8iK,GAAUrjK,EAAM,IAAIjI,KAAKiI,EAAKO,cAAeP,EAAKM,YAAa6gK,IAAQ,IAAIppK,KAAKiI,EAAKO,cAAeP,EAAKM,WAAa,EAAG,GAAGF,UACzHkjK,IAAahC,GACZthK,EAAKO,cAAgBulC,EAAUvlC,cAAgBgjK,GAAUvjK,EAAM,IAAIjI,KAAKiI,EAAKO,cAAe,GAAI8gK,GAAQ,GAAK,GAC9GiC,IAAanC,IAAQmC,IAAalC,GACjCiC,GAAUrjK,EAAM8lC,EAAWw9H,GAE3BJ,GAASljK,EAAMf,GAAS6iK,GAAcwB,IAGnCE,EAGnB,SAASnzJ,GAASxhB,EAAGigB,EAAGkzG,GAapB,OAVIA,IAASs/C,GACFxyJ,EAAEvO,cAAgB1R,EAAE0R,cACpByhH,IAASq/C,GACe,GAAxBhxJ,GAASxhB,EAAGigB,EAAGwyJ,IAAcxyJ,EAAExO,WAAazR,EAAEyR,WAC9C0hH,IAASm/C,GACTn0K,KAAKkN,MAAMgpK,GAASp0J,EAAGjgB,GAAK6yK,IAE5B10K,KAAKkN,MAAMgpK,GAASp0J,EAAGjgB,GAAKizK,GAAc9/C,IAuCzD,SAAS96G,GAAU6wJ,EAAa/3J,GAO5B,OALIzN,EAASyN,IACA+3J,EAAY7wJ,UAAUlH,IAEtBoiK,GAAOpiK,GAKxB,SAASyjK,GAAW1L,EAAa2L,GAC7B,GAAI92K,EAAQ82K,GAAQ,CAEhB,IADA,IAAIxjK,EAAS,GACJ3M,EAAM,EAAGA,EAAMmwK,EAAMvyK,OAAQoC,IAClC2M,EAAO5U,KAAK4b,GAAU6wJ,EAAa2L,EAAMnwK,KAG7C,OAAO2M,EAGX,OAAOgH,GAAU6wJ,EAAa2L,GAGlC,SAAS9kK,GAAS/N,EAASknK,GACvB,OAAIt5G,EAAS5tD,EAAQw4B,cACVx4B,EAAQw4B,aAGf0uI,GAAeA,EAAYn5J,SACpBm5J,EAAYn5J,WAGhB,EAqBX,IAAI+kK,GAAevK,GAAK1sK,OAAO,CAC3BktK,WAAY,WACRjwK,KAAKi6K,OAAS,IAGlBC,eAAgB,WACZ,MAAO,IAGX/yK,MAAO,WACH,IAAIF,EAAO,IAAI+yK,GAAar3K,EAAEI,OAAO,GAAI/C,KAAKkH,QAAS,CACnDizK,WAAYn6K,KAAKkH,QAAQkzK,gBACzBp6K,KAAKmlK,cAGT,OAFAl+J,EAAKkpK,eAEElpK,GAGX49J,gBAAiB,SAAS39J,GACtB,IAAIizK,EAAajzK,EAAQizK,YAAc,GACnCE,EAAarlD,GAAQ9tH,EAAQiP,KAC7BmkK,EAAatlD,GAAQ9tH,EAAQ0R,KAGjC,GAFA1R,EAAQkzK,cAAgBlzK,EAAQizK,WAAaA,GAExCE,GAAcC,IAAeH,EAAW3yK,OAAQ,CACjD,IACIoR,EADAzC,EAAMkkK,EAAah3K,KAAKkN,MAAMrJ,EAAQiP,KAAO,EAI7CyC,EADA0hK,EACMpzK,EAAQ+vK,UAAY5zK,KAAKkN,MAAMrJ,EAAQ0R,KAAO,EAAIvV,KAAK4iE,KAAK/+D,EAAQ0R,KAEpEuhK,EAAW3yK,OAGrBN,EAAQizK,WAAajzK,EAAQizK,WAAWvzK,MAAMuP,EAAKyC,GAGvD,OAAO1R,GAGXqzK,aAAc,WACV,IAAIrzK,EAAUlH,KAAKkH,QACfM,EAASN,EAAQizK,WAAW3yK,QAAU,EAU1C,MAAO,CACH2O,IAVM2+C,EAAS5tD,EAAQiP,KAAOjP,EAAQiP,IAAM,EAAI,EAWhDyC,IARAk8C,EAAS5tD,EAAQ0R,MAAQ1R,EAAQ0R,IAAM,GAAM,GAAK1R,EAAQ0R,IAAM5Y,KAAKw6K,aAAa5hK,IAC5EpR,GAAU,EAAIN,EAAQ0R,IAAM,GAE5BpR,GAAUN,EAAQ+vK,UAAY,EAAI,KAShDwD,kBAAmB,SAASzF,GACxB,IAEIp8J,EAFA1R,EAAUlH,KAAKkH,QACfiP,EAAM2+C,EAAS5tD,EAAQiP,KAAOjP,EAAQiP,IAAM,EAWhD,GAPIyC,EADAk8C,EAAS5tD,EAAQ0R,KACX1R,EAAQ0R,IACPk8C,EAAS5tD,EAAQiP,KAClBA,EAAMjP,EAAQizK,WAAW3yK,OAEzBxH,KAAKw6K,aAAa5hK,KAAO,EAG/Bo8J,EAAO,CACP,IAAIwF,EAAax6K,KAAKw6K,aACtBrkK,EAAMugH,GAAWvgH,EAAK,EAAGqkK,EAAW5hK,KACpCA,EAAM89G,GAAW99G,EAAK,EAAG4hK,EAAW5hK,KAGxC,MAAO,CACHzC,IAAKA,EACLyC,IAAKA,IAIbg7C,MAAO,WACH,IAAI1sD,EAAUlH,KAAKkH,QAInB,MAAO,CACHiP,IAJM2+C,EAAS5tD,EAAQiP,KAAOjP,EAAQiP,IAAM,EAK5CyC,IAJMk8C,EAAS5tD,EAAQ0R,KAAO1R,EAAQ0R,IAAM5Y,KAAKw6K,aAAa5hK,MAQtE8hK,aAAc,WACV,OAAO16K,KAAK4zD,SAGhB4mH,WAAY,WACR,IAAItzK,EAAUlH,KAAKkH,QACnB,MAAO,CAAEiP,IAAK,EAAGyC,IAAKvV,KAAKuV,IAAI5Y,KAAK26K,YAAc,EAAGzzK,EAAQkzK,cAAc5yK,SAAWN,EAAQ+vK,UAAY,EAAI,KAGlH2D,aAAc,WACV,IAAI3rJ,EAAMjvB,KAAKu6K,eACXpkK,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACVm4J,EAAU/wK,KAAK+wK,UAInB,MAAO,CACHphI,OAJO3vC,KAAKkH,QAAQkrC,SAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,UACzC4L,EAAMzC,GAAQ,IAGfnW,KAAKkH,QAAQ4O,SAAW,EAAI,GAC5CojC,IAAK63H,EACL56J,IAAKA,EACLyC,IAAKA,IAIbm7J,cAAe,WACXtE,GAAK1nK,GAAGgsK,cAAcxpK,KAAKvK,MAC3BA,KAAK66K,wBAGTA,qBAAsB,WAClB,IACI3hI,EADMl5C,KACIk5C,IACVw2H,EAFM1vK,KAEO0vK,OAEjB,GAAIA,EAAOloK,OAAS,EAAG,CACnB,IAAIszK,EAAY96K,KAAKkH,QAAQkrC,SAAWp9B,EAAI3P,EACxCiQ,EAAQ4jC,EAAI4hI,EAAY,GACxBnvK,EAAMutC,EAAI4hI,EAAY,GACtBC,EAAarL,EAAO,GACpBiG,EAAYxzI,GAAKutI,IAEjBqL,EAAW7hI,IAAI4hI,EAAY,GAAKnvK,GAAOovK,EAAW7hI,IAAI4hI,EAAY,GAAKxlK,KACvEylK,EAAW7zK,QAAQoF,SAAU,IAE7BqpK,EAAUz8H,IAAI4hI,EAAY,GAAKnvK,GAAOgqK,EAAUz8H,IAAI4hI,EAAY,GAAKxlK,KACrEqgK,EAAUzuK,QAAQoF,SAAU,KAKxC0lK,sBAAuB,WACnB,OAAOhyK,KAAKg7K,WAAWjL,YAG3BkC,sBAAuB,WACnB,OAAOjyK,KAAKg7K,WAAWnL,YAG3BoE,uBAAwB,WACpB,OAAOj0K,KAAKg7K,WAAWC,YAG3BC,YAAa,SAASC,GAQlB,IAPA,IAAIlsJ,EAAMjvB,KAAKu6K,eACXpkK,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACVo8J,EAAQ3xK,KAAK4iE,KAAKrtD,GAClBnF,EAAUpQ,KAAKkN,MAAM4F,GACrBilK,EAAU,GAEP3nK,GAAWuhK,GACdoG,EAAQz5K,KAAK8R,GACbA,GAAW0nK,EAGf,OAAOC,GAGXC,iBAAkB,SAASF,GAYvB,IAXA,IAAIlsJ,EAAMjvB,KAAKkH,QACXkrC,EAAWnjB,EAAImjB,SACft8B,EAAUmZ,EAAInZ,QACd26H,EAAQzwI,KAAK46K,eACbjrI,EAAQ8gG,EAAM9gG,MACduJ,EAAMu3F,EAAMv3F,IACZ/iC,EAAMs6H,EAAMt6H,IACZk+E,EAAMn7C,GAAK9G,EAAWp9B,EAAI3P,IAAMyQ,EAAU,EAAI,IAC9CslK,EAAUp7K,KAAKk7K,YAAYC,GAC3BjnF,EAAY,GAEPtqF,EAAM,EAAGA,EAAMwxK,EAAQ5zK,OAAQoC,IACpCsqF,EAAUvyF,KAAK0yF,EAAMt+E,GAAM45B,GAASyrI,EAAQxxK,GAAOuM,GA70IzC,IAg1Id,OAAO+9E,GAGX8mF,SAAU,WACN,IAAI9zK,EAAUlH,KAAKkH,QACfy2B,EAAQ39B,KAAKi6K,OACbrmH,EAAQ5zD,KAAKu6K,eACbxJ,EAAU/wK,KAAK+wK,UACfzyH,EAAOyyH,EAAQzO,UAAY1uG,EAAMz9C,IAAM,IAAMy9C,EAAMh7C,IAAM1R,EAAQ4O,QAAU5O,EAAQ+vK,UAEvF,GAAIt5I,EAAM29I,QAAUh9H,EAAM,CACtB,IAAIi9H,EAAWr0K,EAAQ2oK,WAAWvjK,SAAWpF,EAAQmsK,eAAe/mK,QACpEqxB,EAAM29I,MAAQh9H,EACd3gB,EAAMs9I,WAAaj7K,KAAKq7K,iBAAiB,GACzC19I,EAAMoyI,WAAa/vK,KAAKw7K,0BAA0B79I,EAAMs9I,WAAYlK,GACpEpzI,EAAMkyI,WAAa0L,EAAWv7K,KAAKw7K,0BAA0Bx7K,KAAKq7K,iBAAiB,IAAMtK,GAAW,GAGxG,OAAOpzI,GAGX69I,0BAA2B,SAAStnF,EAAW68E,GAC3C,IAAK78E,EAAU1sF,OACX,OAAO0sF,EAQX,IALA,IAAIlvD,EAAOhlC,KAAKkH,QAAQkrC,SAAWp9B,EAAI3P,EACnC6gE,EAAU,SAAUp5D,GAAY,OAAOikK,EAAQ/rI,EAAO,IAAMl4B,GAAYA,GAAYikK,EAAQ/rI,EAAO,IAEnGr5B,EAAMuoF,EAAU1sF,OAAS,EACzBy/D,EAAa,GACTf,EAAQguB,EAAUjtB,KAAgBA,GAAct7D,GACpDs7D,IAKJ,IAFA,IAAIC,EAAWv7D,GAEPu6D,EAAQguB,EAAUhtB,KAAcA,GAAY,GAChDA,IAGJ,OAAOgtB,EAAUttF,MAAMqgE,EAAYC,EAAW,IAGlDyvG,SAAU,WACN,IAAI1nJ,EAAMjvB,KAAKkH,QACXkrC,EAAWnjB,EAAImjB,SACft8B,EAAUmZ,EAAInZ,QACdi7J,EAAU/wK,KAAK+wK,UACfhgC,EAAW3+F,EAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,QACjDg4B,EAAOoN,EAAWp9B,EAAI3P,EACtBuxK,EAAU9gK,GAAW,EAAI,EAEzB+gK,EAAa7xI,GADW,IAAZ4xI,EAAgB,EAAI,GACF1lK,WAGlC,MAAO,CACH8zB,KAAMA,EACN6xI,WAAYA,EACZD,QAASA,EACT7F,QAASA,EACThgC,SAAUA,EACV08B,UARYsD,EAAQ8F,KAY5BH,QAAS,WASL,OAFU12K,KAAKkH,QACG4O,SACA,EAAI,GAG1Bi9J,QAAS,SAAS50I,EAAMC,EAAI42I,GACxB,IAAI9tK,EAAUlH,KAAKkH,QACf4O,EAAU5O,EAAQ4O,QAClBmhK,EAAY/vK,EAAQ+vK,UACpBhoJ,EAAMjvB,KAAK46K,eACXjrI,EAAQ1gB,EAAI0gB,MACZuJ,EAAMjqB,EAAIiqB,IACV/iC,EAAM8Y,EAAI9Y,IACVs6H,EAAQzwI,KAAK22K,WACbmE,EAAYrqC,EAAMzrG,KAClByoI,EAAYh9B,EAAMg9B,UAElBgO,EAAUviI,EAAI/xC,QACdu0K,GAAc1mD,GAAQ52F,GAEtB9oB,EAAQ4hH,GAAe/4F,EAAM,GAC7BxyB,EAAMurH,GAAe94F,EAAI9oB,GAC7B3J,EAAMtI,KAAKuV,IAAIjN,EAAM,EAAG2J,GAMxB,IAAIysH,EAAK0rC,GAAan4J,EAAQa,GAAOw5B,EACjC8xF,EAAKgsC,IAHT9hK,EAAMtI,KAAKuV,IAAItD,EAAO3J,IAGM,EAAIwK,GAAOw5B,EAcvC,OAZI+rI,GAAczE,IACdx1C,EAAKM,GAGLizC,IACAjzC,EAAKrL,GAAWqL,EAAI7oF,EAAI4hI,EAAY,GAAI5hI,EAAI4hI,EAAY,IACxDr5C,EAAK/K,GAAW+K,EAAIvoF,EAAI4hI,EAAY,GAAI5hI,EAAI4hI,EAAY,KAG5DW,EAAQX,EAAY,GAAKhlK,EAAU2rH,EAAKM,EACxC05C,EAAQX,EAAY,GAAKhlK,EAAUisH,EAAKN,EAEjCg6C,GAGXE,UAAW,SAASxG,GAChB,IACI2F,EADW96K,KAAKkH,QAAQkrC,SACDp9B,EAAI3P,EAC3B0rK,EAAU/wK,KAAK+wK,UACf6K,EAAezG,EAAKhuK,QAKxB,OAHAy0K,EAAad,EAAY,GAAKpkD,GAAWy+C,EAAK2F,EAAY,GAAI/J,EAAQ+J,EAAY,GAAI/J,EAAQ+J,EAAY,IAC1Gc,EAAad,EAAY,GAAKpkD,GAAWy+C,EAAK2F,EAAY,GAAI/J,EAAQ+J,EAAY,GAAI/J,EAAQ+J,EAAY,IAEnGc,GAGXzG,KAAM,SAASh3I,EAAMC,EAAI42I,GACrB,IAAI7+J,EAAM9S,KAAKkN,MAAMvQ,KAAKkH,QAAQiP,KAAO,GACrCb,EAAQ6oB,EACRxyB,EAAMyyB,EAcV,MAZqB,iBAAV9oB,EACPA,EAAQtV,KAAK67K,cAAcvmK,GACpBw/C,EAASx/C,KAChBA,GAASa,GAGM,iBAARxK,EACPA,EAAM3L,KAAK67K,cAAclwK,GAClBmpD,EAASnpD,KAChBA,GAAOwK,GAGJs5J,GAAK1nK,GAAGotK,KAAK5qK,KAAKvK,KAAMsV,EAAO3J,EAAKqpK,IAG/C8G,mBAAoB,SAASzhD,GACzB,IAAIprG,EAAMjvB,KAAKkH,QACX4O,EAAUmZ,EAAInZ,QACdmhK,EAAYhoJ,EAAIgoJ,UAEhB6D,EADW7rJ,EAAImjB,SACQp9B,EAAI3P,EAC3BorI,EAAQzwI,KAAK46K,eACbjrI,EAAQ8gG,EAAM9gG,MACduJ,EAAMu3F,EAAMv3F,IACZ/iC,EAAMs6H,EAAMt6H,IACZyC,EAAM63H,EAAM73H,IACZo/B,EAAaliC,EAAU8C,EAAMzC,EAC7Bs3J,EAAYv0H,EAAI4hI,EAAY,GAC5BtL,EAAUt2H,EAAI4hI,EAAY,GAC1BzmF,EAAMgmC,EAAMygD,GAEhB,GAAIzmF,EAAMo5E,GAAap5E,EAAMm7E,EACzB,OAAO,KAGX,IAAI9mK,EAAQsvC,GAAcq8C,EAAMo5E,GAAa99H,EACzC9Q,EAAOn2B,EAAQ,EAQnB,OANIuuK,EACAvuK,EAAQrF,KAAK0S,MAAMrN,GACH,IAATm2B,GAAcn2B,EAAQ,GAC7BA,IAGGrF,KAAKkN,MAAM7H,IAGtBqzK,YAAa,SAAS1hD,GAClB,IAAIthH,EAAQ/Y,KAAK87K,mBAAmBzhD,GAEpC,OAAc,OAAVthH,EACO,KAGJ/Y,KAAKkH,QAAQizK,WAAWphK,IAGnC8iK,cAAe,SAASnzK,GACpB,OAAO1I,KAAKg8K,WAAWtzK,GAASrF,KAAKkN,MAAMvQ,KAAKkH,QAAQiP,KAAO,IAGnE8lK,WAAY,SAASljK,EAAO6tC,GACxB,IAAI1/C,EAAUlH,KAAKkH,QAEnB,OAAQ0/C,EAAQ1/C,EAAQkzK,cAAgBlzK,EAAQizK,YAAYphK,IAGhEmjK,gBAAiB,WACb,OAAQl8K,KAAKkH,QAAQizK,YAAc,IAAI3yK,QAG3C20K,eAAgB,SAASv3I,GACrB,IAAI19B,EAAUlH,KAAKkH,QACf6pK,EAAU/wK,KAAK+wK,UACfthK,EAAOvI,EAAQkrC,SAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,QACrD4mD,EAAQ1sD,EAAQizK,WAAW3yK,OAE3BuV,EAAShH,GAAM6uB,GADPn1B,EAAOmkD,GACeiqG,GAElC,MAAO,CACH1nJ,IAAK4G,EACLnE,IAAKg7C,EAAQ72C,IAIrBq/J,WAAY,SAASzsI,EAAOgpG,GACxB,IAAI7rI,EAAWzJ,KAAK6T,IAAIlX,KAAK82K,YAAYn+B,IACrC4hC,EAAev6K,KAAKy6K,oBACpB7mH,EAAQ2mH,EAAa3hK,IAAM2hK,EAAapkK,IACxCyuB,EAAQ5kC,KAAK+2K,aAAapnI,EAAOikB,GACjCyoH,EAAWvvK,EAAW83B,EACtB03I,GAAY,EAAIxvK,GAAY83B,EAC5BzuB,EAAMokK,EAAapkK,IAAMkmK,EACzBzjK,EAAM2hK,EAAa3hK,IAAM0jK,EAM7B,OAJI1jK,EAAMzC,EArbO,KAsbbyC,EAAMzC,EAtbO,IAybV,CACHA,IAAKA,EACLyC,IAAKA,IAIb2jK,UAAW,SAAS5sI,EAAOgpG,GACvB,IAAI1pH,EAAMjvB,KAAKw6K,aACXgC,EAAWvtJ,EAAI9Y,IACfsmK,EAAWxtJ,EAAIrW,IACfg7C,EAAQ5zD,KAAKo8K,WAAWzsI,EAAOgpG,GAEnC,MAAO,CACHxiI,IAAKugH,GAAW9iE,EAAMz9C,IAAKqmK,EAAUC,GACrC7jK,IAAK89G,GAAW9iE,EAAMh7C,IAAK4jK,EAAUC,KAI7ClM,YAAa,WACT,IAAID,EAActwK,KAAKswK,cAEvB,OAAOA,EAAY13J,IAAM03J,EAAYn6J,KAGzCm6J,YAAa,WACT,IAAIppK,EAAUlH,KAAKkH,QACf+vK,EAAY/vK,EAAQ+vK,UACpBxG,EAAevpK,EAAQwoK,OACvBzgJ,EAAMjvB,KAAKy6K,mBAAkB,GAC7BtkK,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACVtD,EAAQjS,KAAKkN,MAAM4F,GAkBvB,OAhBK8gK,GAID9gK,EAAM9S,KAAK4iE,KAAK9vD,GAChByC,EAAMvV,KAAKkN,MAAMqI,KAJjBzC,EAAM9S,KAAKkN,MAAM4F,GACjByC,EAAMvV,KAAK4iE,KAAKrtD,IAcb,CACHzC,KAPAA,EAAMs6J,EAAahsH,KACZgsH,EAAahsH,KAAOgsH,EAAa/9H,KAAOrvC,KAAK4iE,MAAM9vD,EAAMs6J,EAAahsH,MAAQgsH,EAAa/9H,MAE3F+9H,EAAahsH,MAIRnvC,EACZsD,KAAM1R,EAAQizK,WAAW3yK,OAASoR,GAAOq+J,EAAY,EAAI,GAAK,GAAK3hK,IAI3Eu7J,gBAAiB,SAAS93J,EAAO03J,EAAcG,GAC3C,IAAI1pK,EAAUlH,KAAKkH,QACfmtB,EAAWntB,EAAQ6sB,UAAY7sB,EAAQ6sB,UAAUhb,GAAS,KAC1D+tJ,EAAW5vC,GAAehwH,EAAQizK,WAAWphK,GAAQ,IAEzD63J,EAAav8I,SAAWA,EACxB,IAAIuM,EAAO5gC,KAAKu1K,cAAczO,EAAU2J,EAAcG,GAEtD,OAAO,IAAIpE,GAAU1F,EAAUlmI,EAAM7nB,EAAOsb,EAAUo8I,IAG1D2E,iBAAkB,SAAS1sK,GACvB,IAAIkrD,EAAQ5zD,KAAKy6K,oBAEjB,OAAOp3K,KAAKkN,MAAMqjD,EAAMz9C,MAAQzN,GAASA,GAASrF,KAAK4iE,KAAKrS,EAAMh7C,MAGtEy8J,SAAU,SAAS3sK,GACf,IAAIxB,EAAUlH,KAAKkH,QACf6R,EAAQrQ,EAAQrF,KAAKkN,MAAMrJ,EAAQiP,KAAO,GAC9C,OAAOnW,KAAK+yK,QAAQh6J,IAGxBi7J,aAAc,WACVvE,GAAK1nK,GAAGisK,aAAazpK,KAAKvK,MAC1BA,KAAK08K,uBAGTA,oBAAqB,WACjB,IACIvL,EADMnxK,KACMmxK,MACZj4H,EAFMl5C,KAEIk5C,IACd,GAAIi4H,GAASA,EAAM3pK,OAKf,IAJA,IAAIszK,EAAY96K,KAAKkH,QAAQkrC,SAAWp9B,EAAI3P,EACxCiQ,EAAQ4jC,EAAI4hI,EAAY,GACxBnvK,EAAMutC,EAAI4hI,EAAY,GAEjBlxK,EAAM,EAAGA,EAAMunK,EAAM3pK,OAAQoC,IAAO,CACzC,IAAIynK,EAAOF,EAAMvnK,GACbynK,EAAKn4H,MAAQvtC,EAAM0lK,EAAKn4H,IAAI4hI,EAAY,IAAMzJ,EAAKn4H,IAAI4hI,EAAY,GAAKxlK,IACxE+7J,EAAKlkK,SAMrBwvK,IAAK,SAAS/3I,GACV,IAAIgvB,EAAQ5zD,KAAKy6K,mBAAkB,GAE/B9qI,EADM3vC,KAAK46K,eACCjrI,MACZ5yB,EAAShH,GAAM6uB,EAAQ+K,EAAOkuH,GAC9B2c,EAAax6K,KAAKw6K,aAClBrkK,EAAMy9C,EAAMz9C,IAAM4G,EAClBnE,EAAMg7C,EAAMh7C,IAAMmE,EAEtB,OAAO/c,KAAKm2K,WAAWhgK,EAAKyC,EAAK,EAAG4hK,EAAW5hK,IAAKmE,IAGxD6/J,YAAa,SAAStnK,EAAO3J,GACzB,IAAIsjB,EAAMjvB,KAAKkH,QACX4O,EAAUmZ,EAAInZ,QAEdglK,EADW7rJ,EAAImjB,SACQp9B,EAAI3P,EAC3BuuD,EAAQ5zD,KAAKy6K,mBAAkB,GAC/BhqC,EAAQzwI,KAAK46K,eACbjrI,EAAQ8gG,EAAM9gG,MAEd89H,EADMh9B,EAAMv3F,IACI4hI,GAAahlK,EAAU,EAAI,IAE3C+mK,EAAYvnK,EAAMwlK,GAAarN,EAC/BqP,EAAUnxK,EAAImvK,GAAarN,EAE3Bt3J,EAAMy9C,EAAMz9C,IAAM0mK,EAAYltI,EAC9B/2B,EAAMg7C,EAAMz9C,IAAM2mK,EAAUntI,EAC5BotI,EAAW15K,KAAK8S,IAAIA,EAAKyC,GACzBokK,EAAW35K,KAAKuV,IAAIzC,EAAKyC,GAE7B,GAAIokK,EAAWD,GA9jBS,IA+jBpB,MAAO,CACH5mK,IAAK4mK,EACLnkK,IAAKokK,IAKjBzG,WAAY,WACR,OAAOv2K,KAAK4zD,SAGhBooH,WAAY,SAAStzK,GACjB,IAAIxB,EAAUlH,KAAKkH,QACf6R,EAAQ/Y,KAAKi9K,eACbj9K,KAAKi9K,eAAe1tJ,IAAI7mB,GA1kBpC,SAAiBA,EAAO8hC,GACpB,GAAI9hC,aAAiB0F,KAAM,CAEvB,IADA,IAAI5G,EAASgjC,EAAIhjC,OACRoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GAAI6vK,GAAWjvI,EAAI5gC,GAAMlB,GACrB,OAAOkB,EAIf,OAAQ,EAGZ,OAAO4gC,EAAI70B,QAAQjN,GA8jBsBiN,CAAQjN,EAAOxB,EAAQkzK,eAE5D,OAAOrhK,GAGXmkK,oBAAqB,WACjB,IAAIh2K,EAAUlH,KAAKkH,QACfiP,EAAM,EAaV,OAXI2+C,EAAS5tD,EAAQiP,OACjBA,EAAM9S,KAAKkN,MAAMrJ,EAAQiP,MAUtB,CACHA,IAAKA,EACLyC,IARAk8C,EAAS5tD,EAAQ0R,KACX1R,EAAQ+vK,UAAY5zK,KAAKkN,MAAMrJ,EAAQ0R,KAAOvV,KAAK4iE,KAAK/+D,EAAQ0R,KAAO,EAEvE5Y,KAAKmkE,aAAe,IASlCg5G,cAAe,WACX,IAAKn9K,KAAKi9K,eAGN,IAFA,IAAIG,EAASp9K,KAAKi9K,eAAiB,IAAIrd,GACnCwa,EAAgBp6K,KAAKkH,QAAQkzK,cACxBxwK,EAAM,EAAGA,EAAMwwK,EAAc5yK,OAAQoC,IAC1CwzK,EAAO5tJ,IAAI4qJ,EAAcxwK,GAAMA,IAK3Cu6D,WAAY,WACR,OAAO9gE,KAAKuV,IAAI5Y,KAAKkH,QAAQkzK,cAAc5yK,OAAQxH,KAAK26K,YAAc,MAI9Eta,GAAkB2Z,GAAc,CAC5Bt0K,KAAM,WACN0sC,UAAU,EACVkhI,eAAgB,CACZhnK,SAAS,EACTU,MAAO,EACPoiH,MAAOouC,GAEXkS,OAAQ,CACJ91H,OAAQ,GAEZq9H,WAAW,EACX/G,cAAc,IAGlB,IAAImN,GAAmB,IAEnBC,GAAmB,CACnBjhK,aAAc,eACdD,QAAS,WACT9F,QAAS,QACT6F,MAAO,QACPhI,KAAM,MACNkkK,MAAO,MACP9jK,OAAQ,UACR6jK,MAAO,QAMPmF,GAAa,CACbnG,GAAcC,GAASC,GAASC,GAAOC,GAAMC,GAAOC,GAAQC,IAE5D6F,GAAM,MAEV,SAASC,GAActD,GACnB,IAAIvmH,EAAQumH,EAAWnoG,OAOvB,OANKpe,KACDA,EAAQumH,EAAWnoG,OAASsuF,GAAkB6Z,IACxChkK,IAAMsiK,GAAO7kH,EAAMz9C,KACzBy9C,EAAMh7C,IAAM6/J,GAAO7kH,EAAMh7C,MAGtBg7C,EAGX,IAAI8pH,GAAiB91K,EAAM7E,OAAO,CAC9BoF,KAAM,SAASjB,GACXlH,KAAKkH,QAAUA,GAGnBy2K,eAAgB,WACZ,MAAO,CACHxnK,IAAK,EACLyC,IAAK,IAIbglK,aAAc,WACV,MAAO,IAGXh3H,MAAO,WACH,MAAO,IAGX2vH,WAAY,WACR,MAAO,IAGX7kG,WAAY,WACR,OAAQ,GAGZ54D,OAAQ,WACJ,MAAO,IAGXkjK,WAAY,WACR,OAAQ,GAGZ6B,YAAa,WACT,OAAO,GAGX15G,WAAY,WACR,OAAO,GAGX25G,OAAQ,WACJ,OAAO,QAIXC,GAAYn2K,EAAM7E,OAAO,CACzBoF,KAAM,SAASmN,EAAO3J,EAAKzE,GACvBlH,KAAKkH,QAAUA,EACfA,EAAQ2yK,aAAe3yK,EAAQ2yK,cAAgB,EAE/C,IAAImE,EAAkB92K,EAAQ82K,gBAC1B/G,EAAY/vK,EAAQ+vK,UAExBj3K,KAAKsV,MAAQsjK,GAAYtjK,EAAO,EAAGpO,EAAQyyK,SAAUzyK,EAAQw4B,cAC7D,IAAIu+I,EAAWj+K,KAAKk+K,iBAAiBvyK,GACjCwyK,GAAalH,GAAawC,GAAW9tK,EAAKsyK,KAAc/2K,EAAQk3K,WAEpEp+K,KAAK2L,IAAM3L,KAAKk+K,iBAAiBvyK,GAAMsrK,EAAWkH,EAAY,EAAI,GAElE,IAAIhoK,EAAMjP,EAAQiP,KAAOb,EACzBtV,KAAKq+K,WAAar+K,KAAKk+K,iBAAiB/nK,GACxCnW,KAAKs+K,aAAeN,EAAkBh+K,KAAKq+K,WAAaloK,EAExD,IAAIyC,EAAM1R,EAAQ0R,IAClB,GAAKA,EAGE,CACH,IAAIysD,GAAQ4xG,GAAawC,GAAW7gK,EAAK5Y,KAAKk+K,iBAAiBtlK,KAAS,EAAI,EAC5E5Y,KAAKu+K,SAAWv+K,KAAKk+K,iBAAiBtlK,GAAK,EAAOysD,GAClDrlE,KAAKw+K,WAAaR,EAAkBh+K,KAAKk+K,iBAAiBtlK,GAAMq+J,GAAa/vK,EAAQ0R,SALrF5Y,KAAKu+K,SAAWN,EAChBj+K,KAAKw+K,WAAaR,GAAmBG,EAAYn+K,KAAK2L,IAAMA,EAO5D3L,KAAKu+K,SAAWv+K,KAAKq+K,aACrBr+K,KAAKu+K,SAAWv+K,KAAKq+K,YAErBr+K,KAAKw+K,YAAcx+K,KAAKs+K,eACxBt+K,KAAKw+K,WAAax+K,KAAKk+K,iBAAiBl+K,KAAKs+K,cAAc,EAAO,KAI1EV,aAAc,WACV,MAAO,CACHznK,IAAKnW,KAAKs+K,aACV1lK,IAAK5Y,KAAKw+K,aAIlBb,eAAgB,WACZ,IAAK39K,KAAKy+K,SAAU,CAChB,IAAIv3K,EAAUlH,KAAKkH,QAEfyyK,EAAWzyK,EAAQyyK,SACnBE,EAAe3yK,EAAQ2yK,aAEvB6E,EAAS9E,GAAU55K,KAAKs+K,aAAct+K,KAAKq+K,WAAY1E,EAAUE,GACjE8E,EAAS/E,GAAU55K,KAAKw+K,WAAYx+K,KAAKq+K,WAAY1E,EAAUE,GAEnE75K,KAAKy+K,SAAW,CAAEtoK,IAAKuoK,EAAQ9lK,IAAK+lK,GAGxC,OAAO3+K,KAAKy+K,UAGhB73H,MAAO,WACH,MAAO,CACHzwC,IAAKnW,KAAKsV,MACVsD,IAAK5Y,KAAK2L,MAIlBw4D,WAAY,WAGR,OAFcnkE,KAAKg8K,WAAWh8K,KAAK2L,MAEjB3L,KAAKkH,QAAQ+vK,UAAY,EAAI,IAGnDV,WAAY,WACR,MAAO,CACHpgK,IAAKnW,KAAKq+K,WACVzlK,IAAK5Y,KAAKu+K,WAIlB7sG,WAAY,SAAShpE,GACjB,IAAIxB,EAAUlH,KAAKkH,QACnB,OAAO7D,KAAKkN,MAAMqpK,GAAUlxK,EAAO1I,KAAKq+K,WAAYn3K,EAAQyyK,SAAUzyK,EAAQ2yK,gBAGlFmC,WAAY,SAAStzK,GACjB,IAAIxB,EAAUlH,KAAKkH,QACnB,OAAO7D,KAAKkN,MAAMqpK,GAAUlxK,EAAO1I,KAAKsV,MAAOpO,EAAQyyK,SAAUzyK,EAAQ2yK,gBAG7ED,UAAW,SAASlxK,GAChB,IAAIxB,EAAUlH,KAAKkH,QACnB,OAAO0yK,GAAUlxK,EAAO1I,KAAKq+K,WAAYn3K,EAAQyyK,SAAUzyK,EAAQ2yK,eAGvEgE,YAAa,WAGT,OAFa79K,KAAK0xE,WAAW1xE,KAAKu+K,UAElB,GAGpBzlK,OAAQ,WACJ,IAAIA,EAAS9Y,KAAKghK,QAClB,IAAKloJ,EAAQ,CACT,IAAI5R,EAAUlH,KAAKkH,QACf0sD,EAAQ5zD,KAAKu2K,aACjBv2K,KAAKghK,QAAUloJ,EAAS,GAExB,IAAK,IAAIzC,EAAOu9C,EAAMz9C,IAAKE,GAAQu9C,EAAMh7C,KACrCE,EAAOnX,KAAK0U,GACZA,EAAOuiK,GAAYviK,EAAMnP,EAAQ2yK,aAAc3yK,EAAQyyK,SAAUzyK,EAAQw4B,cAIjF,OAAO5mB,GAGXglK,OAAQ,SAAS/kK,EAAO6tC,GACpB,IAAI1/C,EAAUlH,KAAKkH,QAEnB,OAAO0xK,GAAYhyH,EAAQ5mD,KAAKsV,MAAQtV,KAAKq+K,WAAYn3K,EAAQ2yK,aAAe9gK,EAAO7R,EAAQyyK,SAAUzyK,EAAQw4B,eAGrHw+I,iBAAkB,SAASx1K,EAAOk2K,EAAOv5G,GACrC,IAAIp2C,EAAMjvB,KAAKkH,QACXyyK,EAAW1qJ,EAAI0qJ,SACfE,EAAe5qJ,EAAI4qJ,aACnBn6I,EAAezQ,EAAIyQ,aACnBpqB,EAAQtV,KAAKsV,MAEbo9B,EAAOknI,GAAUlxK,EAAO4M,EAAOqkK,EAAUE,GACzCgF,EAAcD,EAAQv7K,KAAK4iE,KAAKvzB,GAAQrvC,KAAKkN,MAAMmiC,GAMvD,OAJI2yB,IACAw5G,GAAex5G,GAGZuzG,GAAYtjK,EAAOupK,EAAchF,EAAcF,EAAUj6I,MAIxE,SAASo/I,GAAa53K,EAAS63K,EAAWC,GAYtC,IAXA,IASIC,EAAWvsI,EAAMwsI,EATjBC,EAAiB1B,GAAcv2K,EAAQizK,YACvCiF,GAAQl4K,EAAQ0R,KAAOumK,EAAevmK,MAAQ1R,EAAQiP,KAAOgpK,EAAehpK,KAC5EkpK,EAAoBn4K,EAAQm4K,kBAC5BC,EAAgBp4K,EAAQo4K,cACxBC,EAAWr4K,EAAQyyK,WAAa6D,GAChCgC,EAAaT,EAAYxB,GAAW5nK,QAAQopK,GAAa,EACzDpF,EAAW4F,EAAWhC,GAAWiC,KAAgBt4K,EAAQyyK,SACzD8F,EAAQL,EAAOjH,GAAcwB,GAC7B+F,EAAaD,GAGT/sI,GAAQ+sI,GAASH,GAAe,CACpCL,EAAYA,GAAaI,EAAkB1F,GAAU/yK,MAAM,GAE3D,GACIs4K,EAAWD,EAAUppK,cAChBqpK,GAAYH,IAAcpF,GAAYuF,EAAWF,GAE1D,GAAIE,EAEAO,EAAQC,GADRhtI,EAAOwsI,OAEJ,IAAIvF,IAAax3I,GAAKo7I,IAAa,CACtC7qI,EAAOrvC,KAAK4iE,KAAKy5G,EAAaJ,GAC9B,MACG,IAAIC,EAIJ,CACCE,EAAQH,IACR5sI,EAAOrvC,KAAK4iE,KAAKy5G,EAAaJ,IAElC,MAPA3F,EAAW4D,GAAWiC,MAAiBr9I,GAAKo7I,IAC5CmC,EAAaN,EAAOjH,GAAcwB,GAClCsF,EAAY,MASpB/3K,EAAQ2yK,aAAennI,EACvBxrC,EAAQyyK,SAAWA,EAyCvB,SAASgG,GAASz4K,GACd,IAAIyyK,GAAYzyK,EAAQyyK,UAAY,IAAIrhK,cAWxC,OAViBqhK,IAAa6D,KAAQnoJ,GAAQskJ,EAAU4D,KAxC5D,SAAyBr2K,GAMrB,IALA,IAGI04K,EAAcvnD,EAHd8hD,EAAajzK,EAAQizK,WACrBr/J,EAAQk6G,GAAQmlD,GAAcA,EAAW3yK,OAAS,EAClDq4K,EAAUvqD,EAGLwqD,EAAa,EAAGA,EAAahlK,EAAOglK,IAAc,CACvD,IAAIhZ,EAAWqT,EAAW2F,GAE1B,GAAIhZ,GAAY8Y,EAAc,CAC1B,IAAI/gJ,EAAOy5I,GAAiBxR,EAAU8Y,GAClC/gJ,EAAO,IAIHw5F,GAHJwnD,EAAUx8K,KAAK8S,IAAI0pK,EAAShhJ,KAEbq5I,GACJP,GACAkI,GAAW5H,QACXP,GACAmI,GAAW7H,GACXP,GACAoI,GAAW9H,GACXP,GACAqI,GAAW/H,GACXP,GACAsI,GAAWhI,GACXP,GAEAD,IAKnBuI,EAAe9Y,EAGnB5/J,EAAQyyK,SAAWthD,GAAQm/C,GAQvBuI,CAAgB74K,GAGhByyK,IAAa6D,IArSV,SAqSiBt2K,EAAQ2yK,cAC5BiF,GAAa53K,GAGVA,EAGX,IAAI84K,GAAmBhG,GAAaj3K,OAAO,CACvCoE,MAAO,WACH,IAAIF,EAAO,IAAI+4K,GAAiBr9K,EAAEI,OAAO,GAAI/C,KAAKkH,SAAUlH,KAAKmlK,cAGjE,OAFAl+J,EAAKkpK,eAEElpK,GAGXizK,eAAgB,WACZ,IAAI5kK,EAAQtV,KAAKigL,UAAUr5H,QAAQzwC,IACnC,OAAOnW,KAAKkH,QAAQyyK,SAAW35K,KAAKkH,QAAQ2yK,aAAevkK,GAG/DuvJ,gBAAiB,SAAS39J,GACtB,OAAOA,GAGX+oK,WAAY,WACR+J,GAAajyK,GAAGkoK,WAAW1lK,KAAKvK,MAEhC,IAAImlK,EAAenlK,KAAKmlK,aACpBiJ,EAAcjJ,EAAaoJ,KAC3BrnK,EAAUlH,KAAKkH,QAEfizK,EAAajzK,EAAQizK,YAAc,GAyBvC,GAxBKA,EAAW+F,WACZ/F,EAAaL,GAAW1L,EAAa+L,IAC1B+F,SAAU,GAGzBh5K,EAAUsB,EAAW,CACjBw1K,iBAAiB,GAClB92K,EAAS,CACRizK,WAAYA,EACZhkK,IAAKoH,GAAU6wJ,EAAalnK,EAAQiP,KACpCyC,IAAK2E,GAAU6wJ,EAAalnK,EAAQ0R,KACpC8mB,aAAczqB,GAAS/N,EAASknK,KAGhCjJ,EAAagb,SAAWhb,EAAa0J,WAAW3nK,EAAQkrC,SAAWp9B,EAAI3P,KACvE6B,EAAQ82K,iBAAkB,GAG9B92K,EAAQk5K,gBAAkBl5K,EAAQk5K,iBAAmBl5K,EAAQyyK,SAC7DzyK,EAAQm5K,oBAAsBn5K,EAAQm5K,qBAAuBn5K,EAAQ2yK,aAErE75K,KAAKkH,QAAUA,EACfA,EAAQkzK,cAAgBD,EAEpBA,EAAW3yK,OAAS,EAAG,CACvB,IAAIosD,EAAQ6pH,GAActD,GACtBmG,EAAep5K,EAAQo5K,aAI3B,GAFAtgL,KAAKigL,UAAY,IAAIlC,GAAUnqH,EAAMz9C,IAAKy9C,EAAMh7C,IAAK+mK,GAASz4K,IAE1Do5K,EAAc,CACd,IAAIL,EAAYjgL,KAAKigL,UAAUrC,eAE3B2C,EAAkB59K,EAAEI,OAAO,GAAImE,EAAS,CACxC+vK,WAAW,EACX+G,iBAAiB,EACjBrE,SAAU,MACVxjK,IAAK8pK,EAAU9pK,IACfyC,IAAKqnK,EAAUrnK,IACf0mK,cAAegB,IAGfE,EAAmBxgL,KAAKigL,UAAU/4K,QAEtC43K,GAAayB,EAAiBC,EAAiB7G,SAAU6G,EAAiB3G,cAE1E75K,KAAKygL,cAAgB,IAAI1C,GAAUnqH,EAAMz9C,IAAKy9C,EAAMh7C,IAAK2nK,QAEzDvgL,KAAKygL,cAAgBzgL,KAAKigL,eAI9B/4K,EAAQyyK,SAAWzyK,EAAQyyK,UAAYnC,GACvCx3K,KAAKigL,UAAYjgL,KAAKygL,cAAgB,IAAI/C,GAAex2K,GAG7DlH,KAAK0gL,YAAc,IAGvBxF,YAAa,SAASC,GAClB,IACI8E,EADMjgL,KACUigL,UAChBQ,EAFMzgL,KAEcygL,cACpB5C,EAAc4C,EAAc5C,cAEhC,IAAK79K,KAAKkH,QAAQo5K,eAAiBzC,EAC/B,OAAO7D,GAAajyK,GAAGmzK,YAAY3wK,KAAKvK,KAAMm7K,GAGlD,IAAIC,EAAU,GACVtiK,EAAS2nK,EAAc3nK,SACvBiE,EAAS,EAER/c,KAAKkH,QAAQ+vK,YACdn+J,EAASA,EAAOuE,OAAOojK,EAAc3C,OAAOD,IAC5C9gK,EAAS,IAGb,IAAK,IAAInT,EAAM,EAAGA,EAAMkP,EAAOtR,OAAQoC,IAEnC,GADAwxK,EAAQz5K,KAAKs+K,EAAUrG,UAAU9gK,EAAOlP,IAAQmT,GAC/B,IAAbo+J,GAAkBvxK,GAAO,EAAG,CAC5B,IAAI2+I,EAAU6yB,EAAQ5zK,OAAS,EAC/B4zK,EAAQ5wK,OAAOZ,EAAK,EAAGwxK,EAAQ7yB,EAAU,IAAM6yB,EAAQ7yB,GAAW6yB,EAAQ7yB,EAAU,IAAM4yB,GAIlG,OAAOC,GAGXhG,iBAAkB,SAAS1sK,GACvB,IAAIkrD,EAAQ5zD,KAAK4zD,QACbumH,EAAan6K,KAAKkH,QAAQizK,YAAc,GAE5C,OAAOb,GAAa5wK,EAAOkrD,EAAMz9C,MAAQ,GAAKmjK,GAAa5wK,EAAOkrD,EAAMh7C,MAAQ,GAAKuhK,EAAW3yK,QAGpG4pK,eAAgB,SAAS1oK,GACrB,OAAO6U,GAAUvd,KAAKmlK,aAAaoJ,KAAM7lK,IAG7C2sK,SAAU,SAAS3sK,GACf,OAAO1I,KAAK+yK,QAAQrqK,IAGxByzK,eAAgB,SAASv3I,GACrB,IAAI19B,EAAUlH,KAAKkH,QACfyyK,EAAWzyK,EAAQyyK,SACnBj6I,EAAex4B,EAAQw4B,aACvB0S,EAAWlrC,EAAQkrC,SACnB2+H,EAAU/wK,KAAK+wK,UACfthK,EAAO2iC,EAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,QAC7C4mD,EAAQ5zD,KAAK4zD,QACbjkB,EAAQlgC,GAAQmkD,EAAMh7C,IAAMg7C,EAAMz9C,KAClC4G,EAAShH,GAAM6uB,EAAQ+K,EAAOkuH,GAElC,GAAIjqG,EAAMz9C,KAAOy9C,EAAMh7C,IAAK,CACxB,IAAIulB,EAAOo6I,GAASrxK,EAAQiP,KAAOy9C,EAAMz9C,IAAK4G,GAC1CqhB,EAAKm6I,GAASrxK,EAAQ0R,KAAOg7C,EAAMh7C,IAAKmE,GAE5C62C,EAAQ,CACJz9C,IAAKyiK,GAAYz6I,EAAM,EAAGw7I,EAAUj6I,GACpC9mB,IAAKggK,GAAYx6I,EAAI,EAAGu7I,EAAUj6I,IAI1C,OAAOk0B,GAGX08G,YAAa,WACT,MAAO,CACHn6J,IAAKnW,KAAKkH,QAAQwoK,OAAOjrH,KACzB7rC,IAAK5Y,KAAKygL,cAAc5C,gBAIhClB,IAAK,SAAS/3I,GACV,GAAI5kC,KAAK2gL,UACL,OAAO,KAGX,IAAIz5K,EAAUlH,KAAKkH,QACf6pK,EAAU/wK,KAAK+wK,UACfthK,EAAOvI,EAAQkrC,SAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,QACrDiiB,EAAMjvB,KAAKigL,UAAUrC,eACrBznK,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACVgoK,EAAc5gL,KAAKigL,UAAUr5H,QAE7B7pC,EAAShH,GAAM6uB,GADPn1B,GAAQmJ,EAAMzC,IACQ0nJ,IAAsB32J,EAAQ4O,SAAW,EAAI,GAC3EqoB,EAAOo6I,GAASpiK,EAAK4G,GACrBqhB,EAAKm6I,GAAS3/J,EAAKmE,GAEnB8jK,EAAW7gL,KAAKm2K,WAAWqD,GAAOr7I,GAAOq7I,GAAOp7I,GAAKo7I,GAAOoH,EAAYzqK,KAAMqjK,GAAOoH,EAAYhoK,KAAMmE,GAE3G,OAAI8jK,GACAA,EAAS1qK,IAAMsiK,GAAOoI,EAAS1qK,KAC/B0qK,EAASjoK,IAAM6/J,GAAOoI,EAASjoK,KAC/BioK,EAASlH,SAAWzyK,EAAQyyK,SAC5BkH,EAAShH,aAAe3yK,EAAQ2yK,cAAgB,EAChDgH,EAAST,gBAAkBl5K,EAAQk5K,gBACnCS,EAASR,oBAAsBn5K,EAAQm5K,oBAEhCQ,QARX,GAYJjE,YAAa,SAAStnK,EAAO3J,GACzB,GAAI3L,KAAK2gL,UACL,OAAO,KAGX,IAAI/D,EAAc5C,GAAajyK,GAAG60K,YAAYryK,KAAKvK,KAAMsV,EAAO3J,GAC5Dm1K,EAAa9gL,KAAKigL,UAAUrC,eAC5BmD,EAAe/gL,KAAKigL,UAAUtC,iBAC9BhuI,EAAQ4pI,GAASuH,EAAWloK,IAAKkoK,EAAW3qK,MAAQ4qK,EAAanoK,IAAMmoK,EAAa5qK,KACpFjP,EAAUlH,KAAKkH,QAKnB,MAAO,CACHiP,IAJMoiK,GAASuI,EAAW3qK,IAAKymK,EAAYzmK,IAAMw5B,GAKjD/2B,IAJM2/J,GAASuI,EAAW3qK,IAAKymK,EAAYhkK,IAAM+2B,GAKjDgqI,SAAUzyK,EAAQk5K,iBAAmBl5K,EAAQyyK,SAC7CE,aAAc3yK,EAAQm5K,qBAAuBn5K,EAAQ2yK,eAI7DuC,WAAY,SAASzsI,EAAOgpG,GACxB,GAAI34I,KAAK2gL,UACL,MAAO,GAGX,IAAIz5K,EAAUlH,KAAKkH,QACfswJ,EAAMtwJ,EAAQk5K,kBAAoB5C,GAClCoD,EAAc5gL,KAAKigL,UAAUr5H,QAC7B33B,EAAMjvB,KAAKigL,UAAUrC,eACrBb,EAAW9tJ,EAAI9Y,IACf6mK,EAAW/tJ,EAAIrW,IAEf9L,EAAWzJ,KAAK6T,IAAIlX,KAAK82K,YAAYn+B,IACrC/kF,EAAQopH,EAAWD,EACnBn4I,EAAQ5kC,KAAK+2K,aAAapnI,EAAOikB,GACjCyoH,EAAWh5K,KAAK0S,MAAMjJ,EAAW83B,GACjC03I,EAAWj5K,KAAK0S,OAAO,EAAIjJ,GAAY83B,GAGvC+0I,EADQ35K,KAAKigL,UAAU/4K,QACNyyK,SACjBxjK,EAAM,IAAI/H,KAAK2uK,EAAS9zK,UAAYozK,GACpCzjK,EAAM,IAAIxK,KAAK4uK,EAAS/zK,UAAYqzK,GAExC,GAAI9kB,EAAK,CACL,IAOIwpB,EAAkBxI,EAPlB6G,EAAoBn4K,EAAQm4K,kBAC5BC,EAAgBp4K,EAAQo4K,cAExB2B,EAAU9+I,GAAKk9I,EAAkB1F,IAAa2F,EAAgBnH,GAAcwB,GAC5EuH,EAAY3H,GAASyD,EAAUD,GAC/Bl+I,EAAO06I,GAAS3gK,EAAKzC,GACrBgrK,EAAgB5D,GAAW5nK,QAAQgkK,GAGvC,GAAI96I,EAAOs5I,GAAcwB,IAAaA,IAAavC,GAC/CuC,EAAW4D,GAAW4D,EAAgB,GAGtChrK,EAAMoiK,GAASwE,EADfvE,GAAS0I,GAAa5B,EAAgB,IADtC0B,EAAmB7+I,GAAKk9I,EAAkB1F,KACoBxB,GAAcwB,IAAa,GAEzF/gK,EAAM2/J,GAASyE,GAAWxE,QAEvB,GAAI35I,EAAOoiJ,GAAWtH,IAAahC,GAAO,CAC7C,IAAIyJ,EAAY,EAEhB,EAAG,CACCD,IACAxH,EAAW4D,GAAW4D,GACtBC,EAAY,EACZ5I,EAAQ,EAAIL,GAAcwB,GAC1B,GACIqH,EAAmB3B,EAAkB1F,GAAUyH,GAC/CA,UACKA,EAAY/B,EAAkB1F,GAAUnyK,QAAUgxK,EAAQwI,EAAmBE,SACjFvH,IAAahC,IAASa,EAAQwI,EAAmBE,IAE1D1I,GAASA,EAAQwI,EAAmBE,GAAa,GACrC,IACR/qK,EAAMoiK,GAASwE,GAAWvE,GAC1B5/J,EAAM2/J,GAASyE,EAAUxE,GACzBriK,EAAMoiK,GAASpiK,EAAKugH,GAAW99G,EAAKgoK,EAAYzqK,IAAKyqK,EAAYhoK,KAAOA,GACxEA,EAAM2/J,GAAS3/J,EAAK89G,GAAWvgH,EAAKyqK,EAAYzqK,IAAKyqK,EAAYhoK,KAAOzC,KAKpF,OAAIA,GAAOyC,GAAO2gK,GAAS3gK,EAAKzC,GAAO,EAC5B,CACHA,IAAKA,EACLyC,IAAKA,EACL+gK,SAAUzyK,EAAQk5K,iBAAmBl5K,EAAQyyK,SAC7CE,aAAc3yK,EAAQm5K,qBAAuBn5K,EAAQ2yK,mBAL7D,GAUJ0C,UAAW,SAAS5sI,EAAOgpG,GACvB,IAAIioC,EAAc5gL,KAAKigL,UAAUr5H,QAC7BgN,EAAQ5zD,KAAKo8K,WAAWzsI,EAAOgpG,GAWnC,OATI/kF,IACIA,EAAMz9C,IAAMyqK,EAAYzqK,MACxBy9C,EAAMz9C,IAAMyqK,EAAYzqK,KAExBy9C,EAAMh7C,IAAMgoK,EAAYhoK,MACxBg7C,EAAMh7C,IAAMgoK,EAAYhoK,MAIzBg7C,GAGXA,MAAO,WACH,OAAO5zD,KAAKigL,UAAUrC,gBAG1BzN,aAAc,WACV6J,GAAajyK,GAAGooK,aAAa5lK,KAAKvK,MAClCA,KAAKqhL,qBAGT3Q,YAAa,WACTsJ,GAAajyK,GAAG2oK,YAAYnmK,KAAKvK,MACjCA,KAAK0gL,YAAc,IAGvB3M,cAAe,WACX/zK,KAAKshL,qBACLtH,GAAajyK,GAAGgsK,cAAcxpK,KAAKvK,OAGvCshL,mBAAoB,WAChB,IACIp6K,EADMlH,KACQkH,QACdw5K,EAFM1gL,KAEY0gL,YACtB,GAA2B,IAAvBA,EAAYl5K,OAAhB,CAIA,IAAIupK,EAAU/wK,KAAK+wK,UACf3+H,EAAWlrC,EAAQkrC,SACnBwB,EAAS1sC,EAAQw5K,YAAY9sI,QAAU1sC,EAAQwoK,OAAO97H,OAEtDmnI,EAAa2F,EAAY,GAC7B,GAAI3F,EAAY,CACZ,IAAIjuK,EAAWslC,EAAW2+H,EAAQ7zF,GAAM69F,EAAW7hI,IAAIvsC,SAAW,EAAKokK,EAAQ9zF,GAC/Ej9E,KAAKy0K,cAAcsG,EAAYnnI,EAAQ9mC,GAG3C,IAAI6oK,EAAY+K,EAAY,GAC5B,GAAI/K,EAAW,CACX,IAAI4L,EAAanvI,EAAW2+H,EAAQ3zF,GAAMu4F,EAAUz8H,IAAIvsC,SAAW,EAAKokK,EAAQ5zF,GAChFn9E,KAAKy0K,cAAckB,EAAW/hI,EAAQ2tI,MAI9C5Q,iBAAkB,WACdqJ,GAAajyK,GAAG4oK,iBAAiBpmK,KAAKvK,MACtCA,KAAKwhL,yBAGT3G,qBAAsB,WAClBb,GAAajyK,GAAG8yK,qBAAqBtwK,KAAKvK,MAC1CA,KAAKyhL,yBAGTA,sBAAuB,WACnB,IACIf,EADM1gL,KACY0gL,YAClBhR,EAFM1vK,KAEO0vK,OACjB,GAA2B,IAAvBgR,EAAYl5K,OAAhB,CAaA,IAAIk6K,EAAkBhB,EAAY,GAClC,GAAIgB,GAAmBA,EAAgBx6K,QAAQoF,QAC3C,IAAK,IAAI/E,EAAI,EAAGA,EAAImoK,EAAOloK,OAAQD,IAAK,CAEpC,IADeuyC,EAAK4nI,EAAiBhS,EAAOnoK,IAExC,MAKZ,IAAIo6K,EAAiBjB,EAAY,GACjC,GAAIiB,GAAkBA,EAAez6K,QAAQoF,QACzC,IAAK,IAAIs1K,EAAMlS,EAAOloK,OAAS,EAAGo6K,EAAM,IAAKA,EAAK,CAE9C,IADiB9nI,EAAK6nI,EAAgBjS,EAAOkS,IAEzC,OAxBZ,SAAS9nI,EAAK+nI,EAAYhuJ,GACtB,QAAKA,EAAM3sB,QAAQoF,UAAWunB,EAAMqlB,IAAIqpH,SAASsf,EAAW3oI,QACxDrlB,EAAM3sB,QAAQoF,SAAU,GACjB,KA2BnBs7J,WAAY,WAIR,IAHA,IAAI1uH,EAAM8gI,GAAajyK,GAAG6/J,WAAWr9J,KAAKvK,MACtC0gL,EAAc1gL,KAAK0gL,YAEdn5K,EAAI,EAAGA,EAAIm5K,EAAYl5K,OAAQD,IAAK,CACzC,IAAIssB,EAAQ6sJ,EAAYn5K,GACpBssB,EAAM3sB,QAAQoF,SACd4sC,EAAIltB,KAAK6H,EAAMqlB,KAIvB,OAAOA,GAGX23H,gBAAiB,SAAS93J,EAAO03J,EAAcG,QACtB,IAAjBA,IAA2BA,EAAe,IAE9C,IAAI1pK,EAAUlH,KAAKkH,QACfmtB,EAAWntB,EAAQ6sB,YAAc7sB,EAAQo5K,aAAep5K,EAAQ6sB,UAAUhb,GAAS,KACnF1C,EAAOrW,KAAKygL,cAAc3C,OAAO/kK,GACjC+oK,EAAarR,EAAasR,YAAY/hL,KAAKygL,cAAcv5K,QAAQyyK,UAErElJ,EAAa//J,OAAS+/J,EAAa//J,QAAUoxK,EAC7ClR,EAAav8I,SAAWA,EAExB,IAAIuM,EAAO5gC,KAAKu1K,cAAcl/J,EAAMo6J,EAAcG,GAClD,GAAIhwI,EACA,OAAO,IAAI4rI,GAAUn2J,EAAMuqB,EAAM7nB,EAAOsb,EAAUo8I,IAI1D4Q,kBAAmB,WACf,IAAIlwD,EAAWnxH,KAEXivB,EAAMjvB,KAAKygL,cACXnC,EAAervJ,EAAIqvJ,aACnBE,EAAavvJ,EAAIuvJ,WACjBt3K,EAAUlH,KAAKkH,QACfupK,EAAe9tK,EAAEI,OAAO,GAAImE,EAAQwoK,OAAQxoK,EAAQw5K,YAAa,CACjEzxC,MAAOj/C,EACPp2C,OAAQ1yC,EAAQ0yC,SAGpB,IAA6B,IAAzB62H,EAAankK,QAAjB,CAIAtM,KAAKwwK,uBAAuBC,GAC5BA,EAAahE,cAAgBz8E,EAEC,SAA1BygF,EAAa92H,WACb82H,EAAa92H,SAAW,EACxBzyC,EAAQs6K,uBAAwB,GAGpC,IAAIM,EAAarR,EAAasR,YAAY/hL,KAAKygL,cAAcv5K,QAAQyyK,UACrElJ,EAAa//J,OAAS+/J,EAAa//J,QAAUoxK,EAE7C,IAAIE,EAAc,SAAUjpK,EAAO1C,EAAMuqB,GACrC,GAAIA,EAAM,CACN,IAAI/M,EAAQ,IAAI24I,GAAUn2J,EAAMuqB,EAAM7nB,EAAO,KAAM03J,GACnDt/C,EAASp3E,OAAOlmB,GAChBs9F,EAASuvD,YAAY/+K,KAAKkyB,KAKlCmuJ,EAAY,EAAG1D,EADCt+K,KAAKu1K,cAAc+I,EAAc7N,EAAc,CAAE13J,MAAO,EAAG+B,MAAO,KAIlFknK,EAAY,EAAGxD,EADDx+K,KAAKu1K,cAAciJ,EAAY/N,EAAc,CAAE13J,MAAO,EAAG+B,MAAO,OAIlF0mK,sBAAuB,WACnB,IAAIrwD,EAAWnxH,KAEX0vK,EAAS1vK,KAAK0gL,YAClB,GAAK1gL,KAAKkH,QAAQs6K,wBAAyBxhL,KAAKkH,QAAQkrC,UAA8B,IAAlBs9H,EAAOloK,OAA3E,CAIA,IAAIy6K,EAAc,SAAUpuJ,EAAOi+I,EAAe/4J,GAC9C,IAAI/L,EAAoE,EAA5D3J,KAAK6T,IAAI46J,EAAc/4J,EAAQ,GAAK+4J,EAAc/4J,IAC1Du/G,EAAQnH,EAAS2jD,qBAAqBjhJ,EAAMqlB,IAAKlsC,GACvC,IAAVsrH,IACAzkG,EAAM3sB,QAAQyyC,SAAW2+E,EACzBzkG,EAAMu8G,OAAO,IAAIuxB,MAIrBmQ,EAAgB9xK,KAAKgyK,wBACzBiQ,EAAYvS,EAAO,GAAIoC,EAAe,GACtCmQ,EAAYvS,EAAO,GAAIoC,EAAeA,EAActqK,OAAS,KAGjEq0K,cAAe,SAASnzK,GACpB,OAAO1I,KAAKigL,UAAUvuG,WAAWhpE,IAGrCysK,KAAM,SAASh3I,EAAMC,EAAI42I,GACrB,IAAIkN,EAAYliL,KAAKigL,UACjB3qK,EAAQ6oB,EACRxyB,EAAMyyB,EAEN9oB,aAAiBlH,OACjBkH,EAAQ4sK,EAAUtI,UAAUtkK,IAG5B3J,aAAeyC,OACfzC,EAAMu2K,EAAUtI,UAAUjuK,IAG9B,IAAIwpK,EAAOn1K,KAAK+yK,QAAQz9J,EAAO3J,EAAKqpK,GACpC,GAAIG,EACA,OAAOA,EAAKtS,UAIpBkQ,QAAS,SAAS7tK,EAAGigB,EAAG6vJ,GACpB,IAAI1/J,EAAQpQ,EACRyG,EAAMwZ,EAUV,cARW7P,IAAUlP,IACjBkP,EAAQtV,KAAK67K,cAAcvmK,WAGpB3J,IAAQvF,IACfuF,EAAM3L,KAAK67K,cAAclwK,IAGtBquK,GAAajyK,GAAGgrK,QAAQxoK,KAAKvK,KAAMsV,EAAO3J,EAAKqpK,IAG1DuB,WAAY,WACR,IACI3iH,EAAQ6pH,GADEz9K,KAAKkH,QACekzK,eAElC,MAAO,CACHjkK,IAAKsiK,GAAO7kH,EAAMz9C,KAClByC,IAAK6/J,GAAO7kH,EAAMh7C,OAI1BqjK,WAAY,SAASljK,EAAO6tC,GACxB,OAAO5mD,KAAKigL,UAAUnC,OAAO/kK,EAAO6tC,IAGxCs1H,gBAAiB,WACb,OAAOl8K,KAAKigL,UAAUpC,eAG1BtD,aAAc,WACV,OAAOv6K,KAAKigL,UAAUtC,kBAG1BxJ,mBAAoB,WAChB,OAAQn0K,KAAKygL,cAAcv5K,QAAQ+vK,WAGvCC,mBAAoB,WACZl3K,KAAK2gL,YAIT3gL,KAAKkH,QAAQizK,WAAan6K,KAAKigL,UAAUnnK,WAG7CijK,YAAa,SAAS1hD,GAClB,IAAIthH,EAAQ/Y,KAAK87K,mBAAmBzhD,GAEpC,OAAc,OAAVthH,EACO,KAGJ/Y,KAAKigL,UAAUnC,OAAO/kK,IAGjCijK,WAAY,SAAStzK,GACjB,OAAO1I,KAAKigL,UAAUjE,WAAWtzK,IAGrCw0K,oBAAqB,WACjB,IAAItpH,EAAQ5zD,KAAKigL,UAAU1J,aAC3B,MAAO,CACHpgK,IAAKnW,KAAKigL,UAAUjE,WAAWpoH,EAAMz9C,KACrCyC,IAAK5Y,KAAKigL,UAAUjE,WAAWpoH,EAAMh7C,OAI7C4hK,WAAY,WACR,OAAOx6K,KAAKigL,UAAUr5H,SAG1Bud,WAAY,WACR,OAAOnkE,KAAKigL,UAAU97G,cAG1Bw8G,QAAS,WACL,OAAQ3gL,KAAKkH,QAAQkzK,cAAc5yK,QAGvCkzK,aAAc,WACV,IAAqC,IAAjC16K,KAAKkH,QAAQ82K,iBAA6Bh+K,KAAK2gL,UAC/C,OAAO3gL,KAAK4zD,QAGhB,IAAI1sD,EAAUlH,KAAKkH,QACf45K,EAAarD,GAAcv2K,EAAQkzK,eAQvC,OANgB,IAAI2D,GAAU+C,EAAW3qK,IAAK2qK,EAAWloK,IAAKjW,EAAEI,OAAO,GAAImE,EAAS,CAChF+vK,WAAW,EACX+G,iBAAiB,EACjBI,YAAY,KAGCR,kBAuEzB,SAASrtK,GAAM7H,EAAOgqC,GAClB,OAAO38B,GAAM1S,KAAKkN,MAAM7H,EAAQgqC,GAAQA,EAAMmrH,GAGlD,SAAS53F,GAAKv9D,EAAOgqC,GACjB,OAAO38B,GAAM1S,KAAK4iE,KAAKv9D,EAAQgqC,GAAQA,EAAMmrH,GAGjD,SAASskB,GAAgBz5K,GACrB,OAAOrF,KAAKuV,IAAIvV,KAAK8S,IAAIzN,EAAO20K,KAAmB,KA5EvDhd,GAAkB2f,GAAkB,CAChCt6K,KAAMi4J,EACN+R,OAAQ,CACJqS,YAAazE,IAEjBoD,YAAa,CACTp0K,SAAS,GAEb+yK,kBAAmB,CACfhjK,aAAc,CAAE,EAAG,GAAI,KACvBD,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxB9F,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxB6F,MAAO,CAAE,EAAG,EAAG,GACfhI,KAAM,CAAE,EAAG,EAAG,GACdkkK,MAAO,CAAE,EAAG,GACZ9jK,OAAQ,CAAE,EAAG,EAAG,EAAG,GACnB6jK,MAAO,CAAE,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,KAEjCkH,cAAe,KA6DnB,IAAI8C,GAAoB/+K,KAAKqmC,IAAI,IAAI,GAEjC24I,GAAc5S,GAAK1sK,OAAO,CAC1BoF,KAAM,SAASquK,EAAWC,EAAWvvK,EAASi+J,GAC1CsK,GAAK1nK,GAAGI,KAAKoC,KAAKvK,KAAM2C,EAAEI,OAAO,GAAImE,EAAS,CAC1CsvK,UAAWA,EACXC,UAAWA,IACXtR,IAGRN,gBAAiB,SAAS39J,GACtB,IAAIo7K,EA8NZ,SAAyB9L,EAAWC,EAAWvvK,GAC3C,IAAIq7K,EAAcr7K,EAAQq7K,YAEtBC,EAtSR,SAAqBrsK,EAAKyC,EAAK6pK,GAC3B,IAAKtsK,IAAQyC,EACT,OAAO,EAGX,IAAI8pK,EAEJ,GAAIvsK,GAAO,GAAKyC,GAAO,EAAG,CACtB,IAAIy9J,EAAWlgK,IAAQyC,EAAM,EAAIzC,EAGjC,IAAe,IAAXssK,IAAsBA,IADd7pK,EAAMy9J,GAAYz9J,EAn7BjB,GAq7BT,OAAO,EAGX8pK,EAAUr/K,KAAKuV,IAAI,EAAGy9J,GAAaz9J,EAAMy9J,GAAY,QAErDqM,EAAUvsK,EAGd,OAAOusK,EAkROC,CAAYnM,EAAWC,EAAW8L,GAC5CK,EAhRR,SAAqBzsK,EAAKyC,EAAK6pK,GAC3B,IAAKtsK,IAAQyC,EACT,OAAO,EAGX,IAAIiqK,EAEJ,GAAI1sK,GAAO,GAAKyC,GAAO,EAAG,CACtB,IAAI09J,EAAWngK,IAAQyC,EAAM,EAAIA,EAE7BimB,EAAOx7B,KAAK6T,KAAKo/J,EAAWngK,GAAOmgK,GACvC,IAAe,IAAXmM,IAAsBA,GAAU5jJ,EA38BvB,GA48BT,OAAO,EAGXgkJ,EAAUx/K,KAAK8S,IAAI,EAAGmgK,GAAangK,EAAMmgK,GAAY,QAErDuM,EAAUjqK,EAGd,OAAOiqK,EA4POC,CAAYtM,EAAWC,EAAW8L,GAE5C3Q,EAAYvQ,GAAcmhB,EAASI,GACnCN,EAAc,CACd1Q,UAAWA,IAGkB,IAA7B1qK,EAAQ67K,mBACJP,EAAU,GAAKQ,GAAeR,EAAS5Q,EAAW,EAAI,KACtD4Q,GAAW5Q,GAGXgR,EAAU,GAAKI,GAAeJ,EAAShR,EAAW,EAAI,KACtDgR,GAAWhR,IAOnB,OAHA0Q,EAAYnsK,IAAM5F,GAAMiyK,EAAS5Q,GACjC0Q,EAAY1pK,IAAMqtD,GAAK28G,EAAShR,GAEzB0Q,EAtPeW,CAAgB/7K,EAAQsvK,UAAWtvK,EAAQuvK,UAAWvvK,GAGxE,OAFAlH,KAAKkjL,aAwPb,SAA0BZ,EAAap7K,GACnC,MAAO,CACHiP,IAAK6+G,GAAQ9tH,EAAQiP,KAAO9S,KAAK8S,IAAImsK,EAAYnsK,IAAKjP,EAAQiP,KAAOmsK,EAAYnsK,IACjFyC,IAAKo8G,GAAQ9tH,EAAQ0R,KAAOvV,KAAKuV,IAAI0pK,EAAY1pK,IAAK1R,EAAQ0R,KAAO0pK,EAAY1pK,IACjFg5J,UAAW0Q,EAAY1Q,WA5PHuR,CAAiBb,EAAap7K,GAyQ1D,SAAqBo7K,EAAac,GAC9B,IACIC,EAAYC,EADZp8K,EAAUk8K,EAGd,GAAIA,EAAa,EAbrB,SAAyBl8K,EAAS0nB,GAC9B,IAAK,IAAIhlB,EAAM,EAAGA,EAAMglB,EAAOpnB,OAAQoC,IAAO,CAC1C,IAAIqb,EAAQ2J,EAAOhlB,GACI,OAAnB1C,EAAQ+d,KACR/d,EAAQ+d,QAAS62H,IAUrBynC,CAAgBH,EAAa,CAAE,MAAO,QAEtCC,EAAaruD,GAAQouD,EAAYjtK,KACjCmtK,EAAatuD,GAAQouD,EAAYxqK,KAEjC,IAAI4qK,EAAgBH,GAAcC,EAE9BE,GACIJ,EAAYjtK,MAAQitK,EAAYxqK,MAC5BwqK,EAAYjtK,IAAM,EAClBitK,EAAYjtK,IAAM,EAElBitK,EAAYxqK,IAAM,GAK1BwqK,EAAYxR,WACZ0Q,EAAYnsK,IAAM5F,GAAM+xK,EAAYnsK,IAAKitK,EAAYxR,WACrD0Q,EAAY1pK,IAAMqtD,GAAKq8G,EAAY1pK,IAAKwqK,EAAYxR,YAC7C4R,IACPt8K,EAAUsB,EAAW85K,EAAac,GAGlCd,EAAY1Q,UAAYvQ,GAAcn6J,EAAQiP,IAAKjP,EAAQ0R,MAInE0pK,EAAYpQ,WAAahrK,EAAQ0qK,WAAa0Q,EAAY1Q,WAAa,EAEvE,IAAIr7J,EAAS/N,EAAW85K,EAAap7K,GACjCqP,EAAOJ,KAAOI,EAAOqC,MACjByqK,IAAeC,EACf/sK,EAAOqC,IAAMrC,EAAOJ,IAAMI,EAAOq7J,WACzByR,GAAcC,IACtB/sK,EAAOJ,IAAMI,EAAOqC,IAAMrC,EAAOq7J,YAIzC,OAAOr7J,EAnTIktK,CAAYnB,EAAap7K,IAGpC+oK,WAAY,WACRjwK,KAAKw8K,SAAWx8K,KAAKkjL,aAAa/sK,IAClCnW,KAAKy8K,SAAWz8K,KAAKkjL,aAAatqK,IAClC5Y,KAAK0jL,eAAiB1jL,KAAKkjL,aAAatR,UACxC5xK,KAAKw2K,UAAYx2K,KAAKkH,QAAQsvK,UAC9Bx2K,KAAKy2K,UAAYz2K,KAAKkH,QAAQuvK,WAGlCtvK,MAAO,WACH,OAAO,IAAIk7K,GACPriL,KAAKw2K,UACLx2K,KAAKy2K,UACL9zK,EAAEI,OAAO,GAAI/C,KAAKkH,SAClBlH,KAAKmlK,eAIbntH,WAAY,WACR,OAAO,GAGX4b,MAAO,WACH,IAAI1sD,EAAUlH,KAAKkH,QACnB,MAAO,CAAEiP,IAAKjP,EAAQiP,IAAKyC,IAAK1R,EAAQ0R,MAG5C+qK,aAAc,SAASC,GACnB,GAAkB,IAAdA,EACA,OAAO,EAGX,IAAI18K,EAAUlH,KAAKkH,QACf0sD,EAAQ1sD,EAAQ0R,IAAM1R,EAAQiP,IAElC,OAAO9S,KAAKkN,MAAMwF,GAAM69C,EAAQgwH,EAzyLlB,IAyyLiD,GAGnEvI,iBAAkB,SAAShjD,EAAM05C,GAC7B,IAAI7qK,EAAUlH,KAAKkH,QACf+nB,EAAMjvB,KAAK22K,WACXC,EAAU3nJ,EAAI2nJ,QACdC,EAAa5nJ,EAAI4nJ,WACjB9F,EAAU9hJ,EAAI8hJ,QAIdr+H,EAAO2lF,GAHIppG,EAAI8hH,UACP7pI,EAAQ0R,IAAM1R,EAAQiP,MAG9B0tK,EAAY7jL,KAAK2jL,aAAatrD,GAC9BnkC,EAAY,GACZG,EAAM08E,EAAQ8F,GACdiN,EAAW,EAEX/R,IACA+R,EAAW/R,EAAW15C,GAG1B,IAAK,IAAIzuH,EAAM,EAAGA,EAAMi6K,EAAWj6K,IAC3BA,EAAMk6K,GAAa,GACnB5vF,EAAUvyF,KAAKoU,GAAMs+E,EAj0Lf,IAo0LVA,GAAY3hD,EAAOkkI,EAGvB,OAAO1iF,GAGX89E,sBAAuB,WACnB,OAAOhyK,KAAKq7K,iBAAiBr7K,KAAKkH,QAAQ0qK,YAG9CK,sBAAuB,WACnB,OAAOjyK,KAAKq7K,iBAAiBr7K,KAAKkH,QAAQgrK,YAG9Ca,QAAS,SAAS7tK,EAAGigB,EAAG6vJ,QACN,IAAVA,IAAoBA,GAAQ,GAEhC,IAAI9tK,EAAUlH,KAAKkH,QACf+nB,EAAMjvB,KAAK22K,WACX3xI,EAAO/V,EAAI+V,KACX4xI,EAAU3nJ,EAAI2nJ,QACd7F,EAAU9hJ,EAAI8hJ,QACdhgC,EAAW9hH,EAAI8hH,SACf08B,EAAYx+I,EAAIw+I,UAChB/6H,EAAOkkI,GAAW7lC,GAAY7pI,EAAQ0R,IAAM1R,EAAQiP,MAEpDb,EAAQ4hH,GAAehyH,EAAGigB,GAAK,GAC/BxZ,EAAMurH,GAAe/xG,EAAGjgB,GAAK,GAE7B8vK,IACA1/J,EAAQohH,GAAWphH,EAAOpO,EAAQiP,IAAKjP,EAAQ0R,KAC/CjN,EAAM+qH,GAAW/qH,EAAKzE,EAAQiP,IAAKjP,EAAQ0R,MAG/C,IAAImpH,EAAK1+H,KAAK8S,IAAIb,EAAO3J,GAAOzE,EAAQiP,IACpCsrH,EAAKp+H,KAAKuV,IAAItD,EAAO3J,GAAOzE,EAAQiP,IAEpCslK,EAAU,IAAI9Z,GAAIoP,EAAQ9zF,GAAI8zF,EAAQ7zF,GAAI6zF,EAAQ9zF,GAAI8zF,EAAQ7zF,IAIlE,OAHAu+F,EAAQz2I,EAAO,GAAKm9I,GAAgB1U,EAAY/6H,GAAQkkI,EAAU,EAAI70C,EAAKN,IAC3Eg6C,EAAQz2I,EAAO,GAAKm9I,GAAgB1U,EAAY/6H,GAAQkkI,EAAU,EAAIn1C,EAAKM,IAEpE05C,GAGXsI,SAAU,SAAS1pD,GACf,IAAInzH,EAAUlH,KAAKkH,QACf0R,EAAMtG,OAAOpL,EAAQ0R,KACrBzC,EAAM7D,OAAOpL,EAAQiP,KACrB4G,EAAS/c,KAAK82K,YAAYz8C,GAG9B,OAAIt9G,EAAS,GAAKA,EAAS,EAChB,KAIJhH,GADKI,EANM4G,GAAUnE,EAAMzC,GAOd0nJ,IAGxBse,eAAgB,SAASv3I,GACrB,IAAI19B,EAAUlH,KAAKkH,QACfkrC,EAAWlrC,EAAQkrC,SACnBt8B,EAAU5O,EAAQ4O,QAClB8C,EAAM1R,EAAQ0R,IACdzC,EAAMjP,EAAQiP,IAEd46H,EADM/wI,KAAK22K,WACI5lC,SAGfh0H,EAAShH,GAAM6uB,GADPmsG,GADAn4H,EAAMzC,IAEgB0nJ,GAMlC,OAJKzrH,IAAYt8B,GAAcs8B,GAAYt8B,IACvCiH,GAAUA,GAGP,CACH5G,IAAKA,EAAM4G,EACXnE,IAAKA,EAAMmE,EACXA,OAAQA,IAIhBwzJ,YAAa,WACT,OAAOvwK,KAAK2jL,aAAa3jL,KAAKkH,QAAQ0qK,YAG1Cf,gBAAiB,SAAS93J,EAAO03J,EAAcG,GAC3C,IAAI1pK,EAAUlH,KAAKkH,QACfwB,EAAQqN,GAAM7O,EAAQiP,IAAO4C,EAAQ7R,EAAQ0qK,UAAY/T,GACzDj9H,EAAO5gC,KAAKu1K,cAAc7sK,EAAO+nK,EAAcG,GAEnD,OAAO,IAAIpE,GAAU9jK,EAAOk4B,EAAM7nB,EAAO,KAAM03J,IAGnD2E,iBAAkB,SAAS1sK,GACvB,IAAIkrD,EAAQ5zD,KAAK4zD,QACjB,OAAOA,EAAMz9C,KAAOzN,GAASA,GAASkrD,EAAMh7C,KAGhD+jK,IAAK,SAAS/3I,GACV,IAAIgvB,EAAQ5zD,KAAKm8K,eAAev3I,GAChC,OAAO5kC,KAAKm2K,WAAWviH,EAAMz9C,IAAKy9C,EAAMh7C,IAAK5Y,KAAKw8K,SAAUx8K,KAAKy8K,SAAU7oH,EAAM72C,SAGrF6/J,YAAa,SAAStnK,EAAO3J,GACzB,IAAIqsC,EAAah4C,KAAK+jL,SAASzuK,GAC3B4iC,EAAWl4C,KAAK+jL,SAASp4K,GACzBwK,EAAM9S,KAAK8S,IAAI6hC,EAAYE,GAC3Bt/B,EAAMvV,KAAKuV,IAAIo/B,EAAYE,GAE/B,GAAIl4C,KAAKgkL,aAAa7tK,EAAKyC,GACvB,MAAO,CACHzC,IAAKA,EACLyC,IAAKA,IAKjBwjK,WAAY,SAASzsI,EAAOgpG,GACxB,IAAI7rI,EAAWzJ,KAAK6T,IAAIlX,KAAK82K,YAAYn+B,IACrC/kF,EAAQ5zD,KAAKkH,QAAQ0R,IAAM5Y,KAAKkH,QAAQiP,IACxCyuB,EAAQ5kC,KAAK+2K,aAAapnI,EAAOikB,GACjCyoH,EAAWvvK,EAAW83B,EACtB03I,GAAY,EAAIxvK,GAAY83B,EAC5BzuB,EAAMJ,GAAM/V,KAAKkH,QAAQiP,IAAMkmK,EAAUxe,GACzCjlJ,EAAM7C,GAAM/V,KAAKkH,QAAQ0R,IAAM0jK,EAAUze,GAM7C,OAJIjlJ,EAAMzC,EAAMisK,KACZxpK,EAAMzC,EAAMisK,IAGT,CACHjsK,IAAKA,EACLyC,IAAKA,IAIb2jK,UAAW,SAAS5sI,EAAOgpG,GACvB,IACI6jC,EADMx8K,KACSw8K,SACfC,EAFMz8K,KAESy8K,SACf7oH,EAAQ5zD,KAAKo8K,WAAWzsI,EAAOgpG,GAEnC,MAAO,CACHxiI,IAAKugH,GAAW9iE,EAAMz9C,IAAKqmK,EAAUC,GACrC7jK,IAAK89G,GAAW9iE,EAAMh7C,IAAK4jK,EAAUC,GACrC8F,aAAa,IAIrByB,aAAc,SAAS7tK,EAAKyC,GACxB,OAAOA,EAAMzC,EAAMisK,MA+F3B,SAASY,GAAet6K,EAAO4vC,EAAS2rI,GACpC,IAAIC,EAAYnuK,GAAM1S,KAAK6T,IAAIxO,EAAQ4vC,GAAUulH,GAGjD,OAAqB,IAAdqmB,GAAmBA,EAFV5rI,GAAW,EAAI2rI,GAKnC5jB,GAAkBgiB,GAAa,CAC3B38K,KAAM,UACNyQ,IAAK,EACLyC,IAAK,EACLw5B,UAAU,EACVkhI,eAAgB,CACZhnK,SAAS,EACTU,MAAO,EACPoiH,MAAOouC,GAEXkS,OAAQ,CACJh/J,OAAQ,0BAEZkpC,OAAQ,IAGZ,IAEIuqI,GAAgB1U,GAAK1sK,OAAO,CAC5BoF,KAAM,SAASquK,EAAWC,EAAWgN,EAAate,GAC9C,IAAIhvJ,EAAMsiK,GAAOjC,GACb59J,EAAM6/J,GAAOhC,GAEbrI,EAAcjJ,EAAaoJ,KAC3BrnK,EAAUu8K,GAAe,GAO7Bv8K,EAkMR,SAAuBsvK,EAAWC,EAAWvvK,GACzC,IAAIiP,EAAMjP,EAAQiP,KAAOqgK,EACrB59J,EAAM1R,EAAQ0R,KAAO69J,EACrBkD,EAAWzyK,EAAQyyK,WAAa/gK,GAAOzC,EAnB/C,SAAmByuB,GACf,IAAIyzF,EAAOk/C,GAEP3yI,GAASszI,GACT7/C,EAAOs/C,GACA/yI,GAASqzI,GAChB5/C,EAAOq/C,GACA9yI,GAASozI,GAChB3/C,EAAOo/C,GACA7yI,GAASmzI,KAChB1/C,EAAOm/C,IAGX,OAAOn/C,EAM0C+rD,CAAU9L,GAAiB1/J,EAAKzC,IAAQohK,IACrF8M,EAAelM,GAAcwB,GAC7Bj6I,EAAex4B,EAAQw4B,cAAgB,EACvC8iJ,EAAUpJ,GAAUI,GAAOrjK,GAAO,EAAGwjK,EAAUj6I,IAAiB+4I,GAAO7/J,GACvEgqK,EAAUvJ,GAASG,GAAO5gK,GAAO,EAAG+gK,EAAUj6I,GAE9CkyI,GADgB1qK,EAAQ0qK,UAAY1qK,EAAQ0qK,eAAY91B,IAC3B71E,GACbo7F,GAAcmhB,EAAQv5K,UAAW25K,EAAQ35K,WACzCo7K,GACAA,EAChBC,EAAc59J,GAAS87J,EAASI,EAASjJ,GAEzC4K,EADat+G,GAAKq+G,EAAa1S,GACL0S,EAC1BE,EAAOnhL,KAAKkN,MAAMg0K,EAAa,GAC/BE,EAAOF,EAAaC,EAEnBt9K,EAAQyyK,iBACFzyK,EAAQyyK,SASnB,OANAzyK,EAAQyyK,SAAWzyK,EAAQyyK,UAAYA,EACvCzyK,EAAQiP,IAAMjP,EAAQiP,KAAOyiK,GAAY4J,GAAUgC,EAAM7K,EAAUj6I,GACnEx4B,EAAQ0R,IAAM1R,EAAQ0R,KAAOggK,GAAYgK,EAAS6B,EAAM9K,EAAUj6I,GAClEx4B,EAAQgrK,UAAYhrK,EAAQgrK,WAAaN,EAAY,EACrD1qK,EAAQ0qK,UAAYA,EAEb1qK,EA/NOw9K,CAAcvuK,EAAKyC,EAN7B1R,EAAUsB,EAAWtB,GAAW,GAAI,CAChCiP,IAAKoH,GAAU6wJ,EAAalnK,EAAQiP,KACpCyC,IAAK2E,GAAU6wJ,EAAalnK,EAAQ0R,KACpCu+J,kBAAmB2C,GAAW1L,EAAalnK,EAAQy9K,oBAAsBz9K,EAAQiwK,mBACjFz3I,aAAczqB,GAAS/N,EAASknK,MAIpCqB,GAAK1nK,GAAGI,KAAKoC,KAAKvK,KAAMkH,EAASi+J,GAEjCnlK,KAAKouK,YAAcA,EACnBpuK,KAAKw2K,UAAYrgK,EACjBnW,KAAKy2K,UAAY79J,EAEjB,IAAI8mB,EAAex4B,EAAQw4B,cAAgB,EAC3C1/B,KAAKw8K,SAAWhD,GAAOJ,GAAUI,GAAOrjK,GAAO,EAAGjP,EAAQyyK,SAAUj6I,IACpE1/B,KAAKy8K,SAAWjD,GAAOH,GAASG,GAAO5gK,GAAO,EAAG1R,EAAQyyK,SAAUj6I,KAGvEv4B,MAAO,WACH,OAAO,IAAIg9K,GAAcnkL,KAAKw2K,UAAWx2K,KAAKy2K,UAAW9zK,EAAEI,OAAO,GAAI/C,KAAKkH,SAAUlH,KAAKmlK,eAG9FvxG,MAAO,WACH,IAAI1sD,EAAUlH,KAAKkH,QACnB,MAAO,CAAEiP,IAAKjP,EAAQiP,IAAKyC,IAAK1R,EAAQ0R,MAG5C+qK,aAAc,SAASC,GACnB,IAAI18K,EAAUlH,KAAKkH,QAEnB,OAAO7D,KAAKkN,MACRmW,GAASxf,EAAQiP,IAAKjP,EAAQ0R,IAAK1R,EAAQyyK,UAAYiK,EAAY,IAI3EvI,iBAAkB,SAAS3oI,GAYvB,IAXA,IAAIxrC,EAAUlH,KAAKkH,QACf+nB,EAAMjvB,KAAK22K,WACXt3I,EAAMpQ,EAAI2nJ,QACV7lC,EAAW9hH,EAAI8hH,SACfz7H,EAAQ2Z,EAAIw+I,UACZoW,EAAY7jL,KAAK2jL,aAAajxI,GAE9B/C,EAAQohG,EADIwoC,GAASryK,EAAQ0R,IAAK1R,EAAQiP,KAE1CupB,EAAex4B,EAAQw4B,cAAgB,EAEvCw0D,EAAY,CAAE5+E,GACT/N,EAAI,EAAGA,EAAIs8K,EAAWt8K,IAAK,CAChC,IACI8sF,EAAM/+E,EAAQikK,GADPX,GAAY1xK,EAAQiP,IAAK5O,EAAImrC,EAAMxrC,EAAQyyK,SAAUj6I,GAC/Bx4B,EAAQiP,KAAOw5B,EAAQtQ,EAExD60D,EAAUvyF,KAAKoU,GAAMs+E,EA9oMX,IAipMd,OAAOH,GAGX89E,sBAAuB,WACnB,OAAOhyK,KAAKq7K,iBAAiBr7K,KAAKkH,QAAQ0qK,YAG9CK,sBAAuB,WACnB,OAAOjyK,KAAKq7K,iBAAiBr7K,KAAKkH,QAAQgrK,YAG9Ca,QAAS,SAAS7tK,EAAGigB,EAAG6vJ,GACpB,OAAOqN,GAAYh6K,UAAU0qK,QAAQxoK,KACjCvK,KAAMud,GAAUvd,KAAKouK,YAAalpK,GAAIqY,GAAUvd,KAAKouK,YAAajpJ,GAAI6vJ,IAI9E+O,SAAU,SAAS1pD,GACf,IAAI3xH,EAAQ25K,GAAYh6K,UAAU07K,SAASx5K,KAAKvK,KAAMq6H,GAEtD,OAAiB,OAAV3xH,EAAiB+vK,GAAO/vK,GAAS,MAG5C6nK,YAAa,WACT,OAAOvwK,KAAK2jL,aAAa3jL,KAAKkH,QAAQ0qK,YAG1Cf,gBAAiB,SAAS93J,EAAO03J,EAAcG,GAC3C,IAAI1pK,EAAUlH,KAAKkH,QACf6V,EAAShE,EAAQ7R,EAAQ0qK,UACzBlyI,EAAex4B,EAAQw4B,cAAgB,EACvCrpB,EAAOnP,EAAQiP,IAEf4G,EAAS,IACT1G,EAAOuiK,GAAYviK,EAAM0G,EAAQ7V,EAAQyyK,SAAUj6I,IAGvD,IAAIoiJ,EAAarR,EAAasR,YAAY76K,EAAQyyK,UAClDlJ,EAAa//J,OAAS+/J,EAAa//J,QAAUoxK,EAE7C,IAAIlhJ,EAAO5gC,KAAKu1K,cAAcl/J,EAAMo6J,EAAcG,GAClD,OAAO,IAAIpE,GAAUn2J,EAAMuqB,EAAM7nB,EAAO,KAAM03J,IAGlD0L,eAAgB,SAASv3I,GACrB,IAAI19B,EAAUlH,KAAKkH,QACf6pK,EAAU/wK,KAAK+wK,UACf3+H,EAAWlrC,EAAQkrC,SACnBt8B,EAAU5O,EAAQ4O,QAClBrG,EAAO2iC,EAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,QAC7C4mD,EAAQ5zD,KAAK4zD,QACbjkB,EAAQlgC,EAAO8pK,GAAS3lH,EAAMh7C,IAAKg7C,EAAMz9C,KAEzC4G,EAAShH,GAAM6uB,EAAQ+K,EAAOkuH,GAQlC,OAPKzrH,IAAYt8B,GAAcs8B,GAAYt8B,IACvCiH,GAAUA,GAMP,CACH5G,IAJOoiK,GAASrxK,EAAQiP,IAAK4G,GAK7BnE,IAJK2/J,GAASrxK,EAAQ0R,IAAKmE,GAK3BA,OAAQA,IAIhBq4J,iBAAkB,SAAS1sK,GACvB,IAAIkrD,EAAQ5zD,KAAK4zD,QAEjB,OAAO0lH,GAAa5wK,EAAOkrD,EAAMz9C,MAAQ,GAAKmjK,GAAa5wK,EAAOkrD,EAAMh7C,MAAQ,GAGpF+jK,IAAK,SAAS/3I,GACV,IAAIgvB,EAAQ5zD,KAAKm8K,eAAev3I,GAAO,GACnCggJ,EAAgB5kL,KAAKm2K,WAAWqD,GAAO5lH,EAAMz9C,KAAMqjK,GAAO5lH,EAAMh7C,KAAM5Y,KAAKw8K,SAAUx8K,KAAKy8K,SAAU7oH,EAAM72C,QAE9G,GAAI6nK,EACA,MAAO,CACHzuK,IAAKsiK,GAAOmM,EAAczuK,KAC1ByC,IAAK6/J,GAAOmM,EAAchsK,OAKtCgkK,YAAa,SAAStnK,EAAO3J,GACzB,IAAIqsC,EAAah4C,KAAK+jL,SAASzuK,GAC3B4iC,EAAWl4C,KAAK+jL,SAASp4K,GACzBwK,EAAM9S,KAAK8S,IAAI6hC,EAAYE,GAC3Bt/B,EAAMvV,KAAKuV,IAAIo/B,EAAYE,GAE/B,MAAO,CACH/hC,IAAKsiK,GAAOtiK,GACZyC,IAAK6/J,GAAO7/J,KAIpBwjK,WAAY,SAASzsI,EAAOgpG,GACxB,IAAI7rI,EAAWzJ,KAAK6T,IAAIlX,KAAK82K,YAAYn+B,IACrC/kF,EAAQ5zD,KAAKkH,QAAQ0R,IAAM5Y,KAAKkH,QAAQiP,IACxCyuB,EAAQ5kC,KAAK+2K,aAAapnI,EAAOikB,GACjCyoH,EAAWvvK,EAAW83B,EACtB03I,GAAY,EAAIxvK,GAAY83B,EAC5BzuB,EAAMsiK,GAAOe,GAAOx5K,KAAKkH,QAAQiP,KAAOkmK,GACxCzjK,EAAM6/J,GAAOe,GAAOx5K,KAAKkH,QAAQ0R,KAAO0jK,GAM5C,OAJI1jK,EAAMzC,EA3KI,MA4KVyC,EAAM6/J,GAAOe,GAAOrjK,GA5KV,MA+KP,CACHA,IAAKA,EACLyC,IAAKA,IAIb2jK,UAAW,SAAS5sI,EAAOgpG,GACvB,IAAI/kF,EAAQ5zD,KAAKo8K,WAAWzsI,EAAOgpG,GAInC,MAAO,CACHxiI,IAJMsiK,GAAO/hD,GAAW8iD,GAAO5lH,EAAMz9C,KAAMnW,KAAKw8K,SAAUx8K,KAAKy8K,WAK/D7jK,IAJM6/J,GAAO/hD,GAAW8iD,GAAO5lH,EAAMh7C,KAAM5Y,KAAKw8K,SAAUx8K,KAAKy8K,eAyD3Epc,GAAkB8jB,GAAe,CAC7Bz+K,KAAMi4J,EACN2V,eAAgB,CACZhnK,SAAS,EACTU,MAAO,EACPoiH,MAAOouC,GAEXkS,OAAQ,CACJqS,YAAazE,MAIrB,IACIuH,GAAoB,KAEpBC,GAAkBrV,GAAK1sK,OAAO,CAC9BoF,KAAM,SAASquK,EAAWC,EAAWvvK,EAASi+J,GAE1C,IAAIse,EAAcj7K,EAAW,CAAEopK,UANd,GAM6Cz7J,IAAKqgK,EAAW59J,IAAK69J,GAAavvK,GAC5Fc,EAAOy7K,EAAY7R,UACnBgR,EA0XZ,SAAuBhqK,EAAK5Q,GACxB,IACI46K,EADAmC,EAAkBhvK,GAAM0a,GAAI7X,EAAK5Q,GAAO61J,GAAqB,EAG7D+kB,EADAhqK,GAAO,EACG5Q,EACiB,IAApB+8K,IAA0BA,EAAkB,IAAOA,EAAkB,IAClE1hL,KAAKqmC,IAAI1hC,EAAMyoB,GAAI7X,EAAK5Q,GAAQ,IAEhC3E,KAAKqmC,IAAI1hC,EAAM3E,KAAK4iE,KAAKx1C,GAAI7X,EAAK5Q,KAGhD,OAAO46K,EArYWoC,CAAcvO,EAAWzuK,GACnCw6K,EA8WZ,SAAuBrsK,EAAKyC,EAAK1R,GAC7B,IAAIc,EAAOd,EAAQ0qK,UACf4Q,EAAUrsK,EACVA,GAAO,EACPqsK,EAAU5pK,GAAO,EAAIvV,KAAKqmC,IAAI1hC,GAAO,GAAK,EAClCd,EAAQq7K,cAChBC,EAAUn/K,KAAKqmC,IAAI1hC,EAAM3E,KAAKkN,MAAMkgB,GAAIta,EAAKnO,MAEjD,OAAOw6K,EAtXWyC,CAAczO,EAAWC,EAAWgN,GAC9C7vH,EAmVZ,SAAmB4uH,EAASI,EAASa,EAAav8K,GAC9C,IAAIiP,EAAMstK,EAAYttK,IAClByC,EAAM6qK,EAAY7qK,IAElBo8G,GAAQyuD,EAAYtM,oBAAsBsM,EAAYtM,mBAAqB,GAC3E+N,KAGClwD,GAAQ9tH,EAAQ0R,KAEV1R,EAAQ0R,KAAO,GACtBssK,KAFAtsK,EAAMgqK,EAKL5tD,GAAQ9tH,EAAQiP,KAEVjP,EAAQiP,KAAO,GACtB+uK,KAFA/uK,EAAMqsK,EAKV,MAAO,CACHrsK,IAAKA,EACLyC,IAAKA,GAzWOusK,CAAU3C,EAASI,EAASa,EAAav8K,GAErDu8K,EAAY7qK,IAAMg7C,EAAMh7C,IACxB6qK,EAAYttK,IAAMy9C,EAAMz9C,IACxBstK,EAAYvR,UAAYhrK,EAAQgrK,WAAan8J,GAAM/N,EAAO,EAAG61J,GAE7D4R,GAAK1nK,GAAGI,KAAKoC,KAAKvK,KAAMyjL,EAAate,GAErCnlK,KAAKw8K,SAAWxnD,GAAQ9tH,EAAQiP,KAAO9S,KAAK8S,IAAIqsK,EAASt7K,EAAQiP,KAAOqsK,EACxExiL,KAAKy8K,SAAWznD,GAAQ9tH,EAAQ0R,KAAOvV,KAAKuV,IAAIgqK,EAAS17K,EAAQ0R,KAAOgqK,EACxE5iL,KAAKolL,OAASrvK,GAAM0a,GAAImjC,EAAMz9C,IAAKnO,GAAO61J,GAC1C79J,KAAKqlL,OAAStvK,GAAM0a,GAAImjC,EAAMh7C,IAAK5Q,GAAO61J,GAC1C79J,KAAKw2K,UAAYA,EACjBx2K,KAAKy2K,UAAYA,EAEjBz2K,KAAKmwK,gBAGThpK,MAAO,WACH,OAAO,IAAI29K,GACP9kL,KAAKw2K,UACLx2K,KAAKy2K,UACL9zK,EAAEI,OAAO,GAAI/C,KAAKkH,SAClBlH,KAAKmlK,eAIbntH,WAAY,WACR,OAAOh4C,KAAKkH,QAAQiP,KAGxB48J,QAAS,SAAS7tK,EAAGigB,EAAG6vJ,GACpB,IAAI/lJ,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdk+K,EAASn2J,EAAIm2J,OACbC,EAASp2J,EAAIo2J,OACbr9K,EAAOd,EAAQ0qK,UACfz7J,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACd63H,EAAQzwI,KAAK22K,WACb3xI,EAAOyrG,EAAMzrG,KACb4xI,EAAUnmC,EAAMmmC,QAChB7F,EAAUtgC,EAAMsgC,QAChBhgC,EAAWN,EAAMM,SACjB08B,EAAYh9B,EAAMg9B,UAClB/6H,EAAOkkI,GAAW7lC,GAAYs0C,EAASD,IACvC9vK,EAAQ4hH,GAAehyH,EAAGigB,GAAK,GAC/BxZ,EAAMurH,GAAe/xG,EAAGjgB,GAAK,GAEjC,GAAIoQ,GAAS,GAAK3J,GAAO,EACrB,OAAO,KAGPqpK,IACA1/J,EAAQohH,GAAWphH,EAAOa,EAAKyC,GAC/BjN,EAAM+qH,GAAW/qH,EAAKwK,EAAKyC,IAG/BtD,EAAQmb,GAAInb,EAAOtN,GACnB2D,EAAM8kB,GAAI9kB,EAAK3D,GAEf,IAAI+5H,EAAK1+H,KAAK8S,IAAIb,EAAO3J,GAAOy5K,EAC5B3jD,EAAKp+H,KAAKuV,IAAItD,EAAO3J,GAAOy5K,EAE5B3J,EAAU,IAAI9Z,GAAIoP,EAAQ9zF,GAAI8zF,EAAQ7zF,GAAI6zF,EAAQ9zF,GAAI8zF,EAAQ7zF,IAIlE,OAHAu+F,EAAQz2I,EAAO,GAAKm9I,GAAgB1U,EAAY/6H,GAAQkkI,EAAU,EAAI70C,EAAKN,IAC3Eg6C,EAAQz2I,EAAO,GAAKm9I,GAAgB1U,EAAY/6H,GAAQkkI,EAAU,EAAIn1C,EAAKM,IAEpE05C,GAGXsI,SAAU,SAAS1pD,GACf,IAAIprG,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdk+K,EAASn2J,EAAIm2J,OACbC,EAASp2J,EAAIo2J,OACbr9K,EAAOd,EAAQ0qK,UACfnhC,EAAQzwI,KAAK22K,WACb3xI,EAAOyrG,EAAMzrG,KACb4xI,EAAUnmC,EAAMmmC,QAChBnJ,EAAYh9B,EAAMg9B,UAClB18B,EAAWN,EAAMM,SACjBr+F,GAAS2yI,EAASD,GAAUr0C,EAC5Bh0H,EAAS65J,GAAWv8C,EAAMr1F,GAAQyoI,GAGtC,GAAI1wJ,EAAS,GAAKA,EAASg0H,EACvB,OAAO,KAGX,IAAIroI,EAAQ08K,EANMroK,EAAS21B,EAQ3B,OAAO38B,GAAM1S,KAAKqmC,IAAI1hC,EAAMU,GAAQm1J,IAGxCjqG,MAAO,WACH,IAAI1sD,EAAUlH,KAAKkH,QACnB,MAAO,CAAEiP,IAAKjP,EAAQiP,IAAKyC,IAAK1R,EAAQ0R,MAG5CujK,eAAgB,SAASv3I,GACrB,IAAI3V,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdk+K,EAASn2J,EAAIm2J,OACbC,EAASp2J,EAAIo2J,OACbvvK,EAAU5O,EAAQ4O,QAClBs8B,EAAWlrC,EAAQkrC,SACnBpqC,EAAOd,EAAQ0qK,UACfb,EAAU/wK,KAAK+wK,UACfthK,EAAO2iC,EAAW2+H,EAAQpkK,SAAWokK,EAAQ/jK,QAE7C+P,EAAShH,GAAM6uB,GADPn1B,GAAQ41K,EAASD,IACKvnB,GAMlC,OAJKzrH,IAAYt8B,GAAcs8B,GAAYt8B,IACvCiH,GAAUA,GAGP,CACH5G,IAAK9S,KAAKqmC,IAAI1hC,EAAMo9K,EAASroK,GAC7BnE,IAAKvV,KAAKqmC,IAAI1hC,EAAMq9K,EAAStoK,GAC7BA,OAAQA,IAIhBwzJ,YAAa,WACT,IAAI+U,EAAWjiL,KAAKkN,MAAMvQ,KAAKqlL,QAG/B,OAFYhiL,KAAKkN,MAAM+0K,EAAWtlL,KAAKolL,QAAU,GAKrDpT,sBAAuB,WACnB,IAAIwG,EAAQ,GAMZ,OAJAx4K,KAAKulL,6BAA4B,SAAUz4K,GACvC0rK,EAAM72K,KAAKmL,KACZ,CAAE4lC,KAAM,EAAG+R,KAAM,IAEb+zH,GAGX9G,YAAa,SAASC,GAClB,IAAIzqK,EAAUlH,KAAKkH,QACf6oK,EAAa7oK,EAAQ6oK,WACrBF,EAAa3oK,EAAQ2oK,WACrBz9H,EAAWlrC,EAAQkrC,SACnBwB,EAAS1sC,EAAQwoK,OAAO97H,OACxBm9H,EAAU/wK,KAAK+wK,UAEfc,EAAkB,CAGlBz/H,SAAUA,GAGd,SAASxiC,EAAO41K,EAAcrW,GAC1B0C,EAAgBzC,MAAQx7H,EAASm9H,EAAQ5zF,GAAK4zF,EAAQ5zF,GAAKgyF,EAAY1/J,KACvEoiK,EAAgBxC,MAAQz7H,EAASm9H,EAAQ7zF,GAAKiyF,EAAY1/J,KAAOshK,EAAQ7zF,GACzE20F,EAAgB/kK,SAAW04K,EAE3B7T,EAAU53H,OAAOm1H,GAAe2C,EAAiB1C,IAWrD,OARIY,EAAWzjK,SACXtM,KAAKulL,4BAA4B31K,EAAQmgK,GAGzCF,EAAWvjK,SACXtM,KAAKylL,4BAA4B71K,EAAQigK,GApBjC,IA0BhBuD,gBAAiB,SAAST,GACtB,IAAIzrK,EAAUlH,KAAKkH,QACfmsK,EAAiBnsK,EAAQmsK,eACzBC,EAAiBpsK,EAAQosK,eACzBlhI,EAAWlrC,EAAQkrC,SACnB2+H,EAAU4B,EAAQ5B,UAClB0C,EAAc,CACdhG,UAAWsD,EAAQ3+H,EAAW,KAAO,MACrCo9H,QAASuB,EAAQ3+H,EAAW,KAAO,MACnCA,SAAUA,GAEV29H,EAAa,GAEbz5I,EAAYt2B,KAAKuxK,kBACrB,SAAS3hK,EAAO41K,EAAcjW,GACrBl6I,GAAQmwJ,EAAczV,KACvB0D,EAAY3mK,SAAW04K,EACvBlvJ,EAAUyjB,OAAOu1H,GAAmBmE,EAAalE,IAEjDQ,EAAWpuK,KAAK6jL,IAYxB,OARIlS,EAAehnK,SACftM,KAAKulL,4BAA4B31K,EAAQ0jK,GAGzCD,EAAe/mK,SACftM,KAAKylL,4BAA4B71K,EAAQyjK,GAGtC/8I,EAAU6e,UAGrBowI,4BAA6B,SAASv8J,EAAUmmJ,GAQ5C,IAPA,IAAIlgJ,EAAMjvB,KAAK22K,WACXlJ,EAAYx+I,EAAIw+I,UAChB/6H,EAAOzjB,EAAIyjB,KAEX0yI,EADQplL,KACOolL,OACfC,EAFQrlL,KAEOqlL,OAEVpuD,EAAQ5zH,KAAK4iE,KAAKm/G,GAAUjW,EAAY1qH,KAAMwyE,GAASouD,EAAQpuD,GAASk4C,EAAYz8H,KAAM,CAE/F1pB,EADejT,GAAM03J,EAAY/6H,GAAQukF,EAAQmuD,GAASvnB,GACvCsR,KAI3BsW,4BAA6B,SAASz8J,EAAUmmJ,GAgB5C,IAfA,IAEIlgJ,EAAMjvB,KAAKkH,QACXiP,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACVs5J,EAAYjjJ,EAAIijJ,UAChBlqK,EAAOinB,EAAI2iJ,UACXnhC,EAAQzwI,KAAK22K,WACblJ,EAAYh9B,EAAMg9B,UAClB/6H,EAAO+9F,EAAM/9F,KAEb0yI,EADQplL,KACOolL,OACfC,EAFQrlL,KAEOqlL,OAGVpuD,EAFG5zH,KAAKkN,MAAM60K,GAECnuD,EAAQouD,EAAQpuD,IAEpC,IADA,IAAIyuD,EAhBO1lL,KAgBiB2lL,sBAAsB1uD,GACzCrtH,EAAMulK,EAAY1qH,KAAM76C,EAAMsoK,EAAWtoK,GAAOulK,EAAYz8H,KAAM,CACvE,IAAIhqC,EAAQg9K,EAAah9K,MAAQkB,EAAM87K,EAAaE,UACpD,GAAIl9K,EAAQkQ,EACR,MAEJ,GAAIlQ,GAASyN,EAET6S,EADejT,GAAM03J,EAAY/6H,GAAQjiB,GAAI/nB,EAAOV,GAAQo9K,GAASvnB,GAClDsR,KAMnC0B,gBAAiB,SAAS93J,EAAO03J,EAAcG,GAC3C,IAAI35C,EAAQ5zH,KAAK4iE,KAAKjmE,KAAKolL,OAASrsK,GAChCrQ,EAAQrF,KAAKqmC,IAAI1pC,KAAKkH,QAAQ0qK,UAAW36C,GACzCr2F,EAAO5gC,KAAKu1K,cAAc7sK,EAAO+nK,EAAcG,GAEnD,OAAO,IAAIpE,GAAU9jK,EAAOk4B,EAAM7nB,EAAO,KAAM03J,IAGnD2E,iBAAkB,SAAS1sK,GACvB,IAAIkrD,EAAQ5zD,KAAK4zD,QACjB,OAAOA,EAAMz9C,KAAOzN,GAASA,GAASkrD,EAAMh7C,KAGhD+jK,IAAK,SAAS/3I,GACV,IAAIgvB,EAAQ5zD,KAAKm8K,eAAev3I,GAChC,OAAO5kC,KAAKm2K,WAAWviH,EAAMz9C,IAAKy9C,EAAMh7C,IAAK5Y,KAAKw8K,SAAUx8K,KAAKy8K,SAAU7oH,EAAM72C,SAGrF6/J,YAAa,SAAStnK,EAAO3J,GACzB,IAAIqsC,EAAah4C,KAAK+jL,SAASzuK,GAC3B4iC,EAAWl4C,KAAK+jL,SAASp4K,GAI7B,MAAO,CACHwK,IAJM9S,KAAK8S,IAAI6hC,EAAYE,GAK3Bt/B,IAJMvV,KAAKuV,IAAIo/B,EAAYE,KAQnCkkI,WAAY,SAASzsI,EAAOgpG,GACxB,IACI3wI,EADMhI,KAAKkH,QACA0qK,UACXwT,EAAS30J,GAAIzwB,KAAKkH,QAAQiP,IAAKnO,GAC/Bq9K,EAAS50J,GAAIzwB,KAAKkH,QAAQ0R,IAAK5Q,GAC/B8E,EAAWzJ,KAAK6T,IAAIlX,KAAK82K,YAAYn+B,IACrC/kF,EAAQyxH,EAASD,EACjBxgJ,EAAQ5kC,KAAK+2K,aAAapnI,EAAOikB,GACjCz9C,EAAM9S,KAAKqmC,IAAI1hC,EAAMo9K,EAASt4K,EAAW83B,GACzChsB,EAAMvV,KAAKqmC,IAAI1hC,EAAMq9K,GAAU,EAAIv4K,GAAY83B,GAMnD,OAJIhsB,EAAMzC,EAAM0uK,KACZjsK,EAAMzC,EAAM0uK,IAGT,CACH1uK,IAAKA,EACLyC,IAAKA,IAIb2jK,UAAW,SAAS5sI,EAAOgpG,GACvB,IAAI/kF,EAAQ5zD,KAAKo8K,WAAWzsI,EAAOgpG,GAE/B6jC,EADMx8K,KACSw8K,SACfC,EAFMz8K,KAESy8K,SAEnB,MAAO,CACHtmK,IAAKugH,GAAW9iE,EAAMz9C,IAAKqmK,EAAUC,GACrC7jK,IAAK89G,GAAW9iE,EAAMh7C,IAAK4jK,EAAUC,KAI7CkJ,sBAAuB,SAAS1uD,GAC5B,IAAIhoG,EAAMjvB,KAAKkH,QACXgrK,EAAYjjJ,EAAIijJ,UAChBlqK,EAAOinB,EAAI2iJ,UACXlpK,EAAQrF,KAAKqmC,IAAI1hC,EAAMivH,GAK3B,MAAO,CACHvuH,MAAOA,EACPk9K,WANYviL,KAAKqmC,IAAI1hC,EAAMivH,EAAQ,GACVvuH,GACAwpK,IAQjCyE,SAAU,WACN,IAAIj4I,EAAO+wI,GAAK1nK,GAAG4uK,SAASpsK,KAAKvK,MAGjC,OAFA0+B,EAAKgU,KAAOhU,EAAKk4I,SAAWl4I,EAAKqyG,UAAY/wI,KAAKqlL,OAASrlL,KAAKolL,SAEzD1mJ,KAuDf,SAASwmJ,KACL,MAAM,IAAIz0K,MAAM,6DAGpB,SAASggB,GAAIrrB,EAAG4C,GACZ,OAAO3E,KAAKotB,IAAIrrB,GAAK/B,KAAKotB,IAAIzoB,GAGlCq4J,GAAkBykB,GAAiB,CAC/Bp/K,KAAM,MACNksK,UA1ZqB,GA2ZrBM,UAAW,EACXiF,kBAAmB,EACnB/kI,UAAU,EACVkhI,eAAgB,CACZhnK,SAAS,EACTU,MAAO,EACPoiH,MAAOouC,GAEX5jH,OAAQ,EACRs2H,cAAc,IAGlB,IAAI2V,GAAiB,CACjBzS,gBAAiB,SAAST,GACtB,IAIImT,EAAaC,EAJb7+K,EAAUlH,KAAKkH,QACfykB,EAAStoB,KAAK6T,IAAIlX,KAAKk5C,IAAIqkC,SAASp5E,EAAIwuK,EAAQ5B,UAAU7zF,IAC1Ds0F,EAAY,GACZwU,GAAY,EAoBhB,OAjBI9+K,EAAQosK,eAAehnK,UACvBw5K,EAAc9lL,KAAKimL,oBAAoBtT,GACvCqT,GAAY,EAEZxU,EAAYxxK,KAAKkmL,qBACbJ,EAAan6J,EAAQzkB,EAAQosK,iBAIjCpsK,EAAQmsK,eAAe/mK,UACvBy5K,EAAc/lL,KAAKmmL,oBAAoBxT,EAASqT,GAEhDjsI,GAAOy3H,EAAWxxK,KAAKomL,qBACnBL,EAAap6J,EAAQzkB,EAAQmsK,eAAgBV,EAASqT,KAIvDxU,GAGX0U,qBAAsB,SAAS/hB,EAAQx4I,EAAQzkB,GAC3C,OAAOlH,KAAKqmL,gBAAgBliB,EAAQx4I,EAAQzkB,IAGhDk/K,qBAAsB,SAASjiB,EAAQx4I,EAAQzkB,EAASyrK,EAASqT,GAC7D,IAAIM,EAAiBtmL,KAAKsmL,gBAAkBtmL,KAAKsmL,eAAe36J,EAAQgnJ,EAASqT,GACjF,OAAOhmL,KAAKqmL,gBAAgBliB,EAAQx4I,EAAQzkB,EAASo/K,IAGzDD,gBAAiB,SAASliB,EAAQx4I,EAAQzkB,EAASo/K,GAa/C,IAZA,IAAI75K,EAAQ,CACRoxH,OAAQ,CACJ7wH,MAAO9F,EAAQ8F,MACfoiH,MAAOloH,EAAQkoH,MACf4sB,SAAU90I,EAAQ80I,WAItBz+D,EAASv9E,KAAKk5C,IAAIqkC,SAClBuzE,EAAS,IAAI1yB,EAAO,CAAE7gD,EAAOn4E,EAAGm4E,EAAOp5E,GAAKwnB,GAC5C2K,EAAYt2B,KAAKuxK,kBAEZhqK,EAAI,EAAGA,EAAI48J,EAAO38J,OAAQD,IAAK,CACpC,IAAImmK,EAAO,IAAIphC,EAAK7/H,GAChB65K,IACAx1B,EAAOnlI,OAAS26J,EAAeniB,EAAO58J,KAG1CmmK,EAAKtxH,OAAO00G,EAAOvzE,QACdqtD,OAAOkmB,EAAOtyB,QAAQ2lC,EAAO58J,GAAK,MAEvC+uB,EAAUyjB,OAAO2zH,GAGrB,OAAOp3I,EAAU6e,UAGrBoxI,eAAgB,SAAS5T,EAASljK,EAAMg1C,EAAM/R,EAAM8zI,GAChD,IAAIr1D,EAAWnxH,KAEXymL,EAAOzmL,KAAK0mL,UAAUj3K,EAAMg1C,EAAM/R,EAAM8zI,GACxCt/K,EAAUyrK,EAAQzrK,QAClBy/K,EAAiBz/K,EAAQoF,UAA4C,KAAhCpF,EAAQwmK,MAAQ,IAAIphK,QAE7D,OAAOgO,GAAImsK,GAAM,SAAUjiL,GACvB,IAAIqsH,EAAQM,EAAS6P,cAAcx8H,GAEnC,IAAKmiL,GAA4B,KAAV91D,EACnB,OAAOA,OAMnB+1D,GAAoB5M,GAAaj3K,OAAO,CACxC6wD,MAAO,WACH,MAAO,CAAEz9C,IAAK,EAAGyC,IAAK5Y,KAAKkH,QAAQizK,WAAW3yK,SAGlD4oI,OAAQ,SAASl3F,GACbl5C,KAAKk5C,IAAMA,EACXl5C,KAAK6mL,gBAGT9V,QAAS,WACL,OAAO/wK,KAAKk5C,KAGhB2tI,aAAc,WAUV,IATA,IAGInX,EADM1vK,KACO0vK,OACbe,EAFMzwK,KAEakH,QAAQwoK,OAC3BjrH,EAAOgsH,EAAahsH,MAAQ,EAC5B/R,EAAO+9H,EAAa/9H,MAAQ,EAC5B4gF,EAAa,IAAIquC,GAEZp6J,EAAI,EAAGA,EAAImoK,EAAOloK,OAAQD,IAAK,CACpCmoK,EAAOnoK,GAAG6oI,OAAO9c,GACjB,IAAIohD,EAAWhF,EAAOnoK,GAAG2xC,IAEzBw2H,EAAOnoK,GAAG6oI,OAbCpwI,KAae+yK,QAAQtuH,EAAOl9C,EAAImrC,GAAM6wH,YAC/C,EAAGmR,EAAS1nK,QAAS0nK,EAAS/nK,aAK1C+5K,UAAW,SAASj3K,EAAMq3K,EAAYC,EAAYP,QAC3B,IAAfA,IAAyBA,GAAa,GAW1C,IATA,IAAIt/K,EAAUlH,KAAKkH,QAEf8/K,EADa9/K,EAAQizK,WAAW3yK,OACRiI,GAAQ,EAChCw3K,EAAW,IAAMD,EAEjBt0I,EAAOq0I,GAAc,EACrBN,EAAO,GACPnuD,EAAQ,EAEH/wH,EALEu/K,GAAc,EAKNv/K,EAAIy/K,EAAUz/K,GAAKmrC,EAE9B4lF,EADApxH,EAAQ4O,QACA,IAAMvO,EAAI0/K,EAEV1/K,EAAI0/K,EAGhB3uD,EAAQviH,GAAMuiH,EA53NJ,GA43N8B,IAElCkuD,GAAcnxJ,GAAQijG,EAAOkuD,IAC/BC,EAAK9kL,KAAK22H,GAIlB,OAAOmuD,GAGXS,eAAgB,WACZ,OAAOlnL,KAAK0mL,UAAU,IAG1BS,eAAgB,WACZ,OAAOnnL,KAAK0mL,UAAU,KAG1B1lD,cAAe,SAASF,GACpB,OAAQ,IAAMA,EAAW9gI,KAAKkH,QAAQs5H,YAAc,KAGxDslD,YAAa,WACT,IAAI30D,EAAWnxH,KAEf,OAAOsa,GAAIta,KAAKknL,kBAAkB,SAAUpmD,GAAY,OAAO3P,EAAS6P,cAAcF,OAG1F8sC,WAAY,WACR,MAAO,IAGXqY,oBAAqB,SAAStT,GAC1B,IAAIW,EAAiBtzK,KAAKkH,QAAQosK,eAClC,OAAOtzK,KAAKumL,eAAe5T,EAAS,EAAGW,EAAe7uH,KAAM6uH,EAAe5gI,OAG/EyzI,oBAAqB,SAASxT,EAASqT,GACnC,IAAI/2J,EAAMjvB,KAAKkH,QACXmsK,EAAiBpkJ,EAAIokJ,eACrBC,EAAiBrkJ,EAAIqkJ,eACrB2S,EAAsBD,EAAYhmL,KAAK0mL,UAAU,EAAGpT,EAAe7uH,KAAM6uH,EAAe5gI,MAAQ,KAEpG,OAAO1yC,KAAKumL,eAAe5T,EAAS,GAAKU,EAAe5uH,KAAM4uH,EAAe3gI,KAAMuzI,IAGvFK,eAAgB,SAAS36J,EAAQgnJ,EAASqT,GACtC,GAAIrT,EAAQzrK,QAAQxB,OAAS43J,EAAK,CAC9B,IAAI8pB,EAAarwD,GAAI,KAAwC,EAAjC/2H,KAAKkH,QAAQizK,WAAW3yK,SAChD6/K,EAAchkL,KAAKk1H,IAAI6uD,GAAcz7J,EACrCm6J,EAAc9lL,KAAK8lL,cASvB,OAPqB,SAASxtD,GAC1B,OAAK0tD,GAAa3wJ,GAAQijG,EAAOwtD,GACtBn6J,EAGJ07J,KAMnB/V,gBAAiB,WASb,IARA,IAEIkB,EAAYxyK,KAAKkH,QAAQsrK,WAAa,GAEtCt+G,EAAQl0D,KAAK0yK,eAAiB,IAAIlkC,EAAM,CACxC50F,QAAS,IAGJryC,EAAI,EAAGA,EAAIirK,EAAUhrK,OAAQD,IAAK,CACvC,IAAI+/K,EAAO9U,EAAUjrK,GACjB4tK,EAVOn1K,KAUSunL,aAAaD,GAC7B5L,EAXO17K,KAWe+yK,QAAQuU,EAAKnpJ,MAEnCqmJ,EAAO8C,EAAKnpJ,KAAO96B,KAAKkN,MAAM+2K,EAAKnpJ,MACvCg3I,EAAK30C,YAAcgkD,EAAO9I,EAAWpjD,MAErC,IAAImsD,EAAOphL,KAAK4iE,KAAKqhH,EAAKlpJ,IAAMkpJ,EAAKlpJ,GACrC+2I,EAAK78C,QAAUmsD,EAAOD,GAAQ9I,EAAWpjD,MAEzC,IAAIkvD,EAAO/iB,GAAahxJ,QAAQixJ,WAAWyQ,EAAM,CAC7CliJ,KAAM,CACFm8F,MAAOk4D,EAAKl4D,MACZx4F,QAAS0wJ,EAAK1wJ,SAElBinG,OAAQ,CACJjnG,QAAS0wJ,EAAK1wJ,WAGtBs9B,EAAMna,OAAOytI,GAGjBxnL,KAAK4lK,aAAa1xG,IAGtBqzH,aAAc,SAASD,GACnB,OAAOtnL,KAAK+yK,QAAQuU,EAAKnpJ,KAAMmpJ,EAAKlpJ,GAAK,IAG7C20I,QAAS,SAAS50I,EAAMC,GACpB,IAAIl3B,EAAUlH,KAAKkH,QACf+vK,EAAY/vK,EAAQ+vK,UACpB/9H,EAAMl5C,KAAKk5C,IACXutI,EAAOzmL,KAAK8lL,cACZ2B,EAAYhB,EAAKj/K,OACjBkgL,EAAY,IAAMD,EAClBE,EAAYxpJ,EAEZj3B,EAAQ4O,UAAYmhK,IACpB0Q,GAAaA,EAAY,GAAKF,GAIlC,IAAIG,EAAYnB,EADhBkB,EAAYjxD,GAAWrzH,KAAKkN,MAAMo3K,GAAY,EAAGF,EAAY,IAGzDxQ,IACA2Q,GAAwBF,EAAY,GAEpB,IACZE,GAAa,KAIrB,IAEItvD,EAAQovD,GAFEhxD,GAAWrzH,KAAK4iE,KAAK7nC,GAAMupJ,GAAYA,EAAWF,EAAY,GACtDE,EAAY,GAGlC,OAAO,IAAI3kB,GAAK9pH,EAAIqkC,SAAU,EAAGrkC,EAAIvsC,SAAW,EAAGi7K,EAAWtvD,IAGlE68C,KAAM,SAASh3I,EAAMC,GACjB,IAAI+2I,EAAOn1K,KAAK+yK,QAAQ50I,EAAMC,GAC1BoiG,EAAa20C,EAAK30C,WAAa,IAC/BC,EAAWD,EAAa20C,EAAK78C,MAEjC,OAAO,IAAIsH,EAASS,IAAI,CAAE80C,EAAK53F,OAAOn4E,EAAG+vK,EAAK53F,OAAOp5E,GAAK,CACtDq8H,WAAYA,EACZC,SAAUA,EACVH,QAAS60C,EAAKxpJ,OACd40G,QAAS40C,EAAKxpJ,UAItBmwJ,mBAAoB,SAASzhD,GAMzB,IALA,IAEI7yH,EAASxH,KAAKkH,QAAQizK,WAAW3yK,OACjCuR,EAAQ,KAEHxR,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAE7B,GAPWvH,KAMS+yK,QAAQxrK,GACnB60H,cAAc/B,GAAQ,CAC3BthH,EAAQxR,EACR,OAIR,OAAOwR,KAIfsnJ,GAAkBumB,GAAmB,CACjCpmD,WAAY,GACZkvC,OAAQ,CACJ/2H,OAAQ4mH,GAAW,KAEvB+T,eAAgB,CACZhnK,SAAS,GAEb2qK,WAAW,IAEfzuK,EAAWo+K,GAAkBv+K,UAAWw9K,IAExC,IAAIgC,GAAYpY,GAAK1sK,OAAO,CACxBoF,KAAM,SAASjB,EAASi+J,GACpBsK,GAAK1nK,GAAGI,KAAKoC,KAAKvK,KAAMkH,EAASi+J,GAEjC,IAAI2iB,EAAkB9nL,KAAKkH,QAE3B4gL,EAAgB5V,UAAY4V,EAAgB5V,WAAa4V,EAAgBlW,UAAY,GAGzF+R,aAAc,SAASC,GACnB,OAAOvB,GAAYh6K,UAAUs7K,aAAap5K,KAAKvK,KAAM4jL,GAAa,GAGtExzC,OAAQ,SAASl3F,GACbl5C,KAAKk5C,IAAMA,EACXl5C,KAAK6mL,gBAGTA,aAAc,WAaV,IAZA,IAEI53J,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdwoK,EAASzgJ,EAAIygJ,OACbe,EAAexhJ,EAAI/nB,QAAQwoK,OAC3BjrH,EAAOgsH,EAAahsH,MAAQ,EAC5B/R,EAAO+9H,EAAa/9H,MAAQ,EAE5B4gF,EAAa,IAAIquC,GACjB8kB,EAAOzmL,KAAK0mL,UAAUx/K,EAAQ0qK,UAAWntH,EAAM/R,GAE1CnrC,EAAI,EAAGA,EAAImoK,EAAOloK,OAAQD,IAAK,CACpCmoK,EAAOnoK,GAAG6oI,OAAO9c,GACjB,IAAIohD,EAAWhF,EAAOnoK,GAAG2xC,IAEzBw2H,EAAOnoK,GAAG6oI,OAhBCpwI,KAgBe+yK,QAAQ0T,EAAKl/K,IAAIg8J,YAAY,EAAGmR,EAAS1nK,QAAS0nK,EAAS/nK,aAI7FokK,QAAS,WACL,OAAO/wK,KAAKk5C,KAGhBwtI,UAAW,SAASj3K,EAAMq3K,EAAYC,EAAYP,QAC3B,IAAfA,IAAyBA,GAAa,GAQ1C,IANA,IAAIrwK,EAAMnW,KAAKkH,QAAQiP,IACnB0tK,EAAY7jL,KAAK2jL,aAAal0K,GAC9Bg3K,EAAO,GAEP/zI,EAAOq0I,GAAc,EAEhBx/K,EAHEu/K,GAAc,EAGNv/K,EAAIs8K,EAAWt8K,GAAKmrC,EAAM,CACzC,IAAIj/B,GAAW,IAAM0C,EAAM5O,EAAIkI,GAAQ,IACjC+2K,GAAcnxJ,GAAQ5hB,EAAS+yK,IACjCC,EAAK9kL,KAAK8R,GAIlB,OAAOgzK,GAGXS,eAAgB,WACZ,OAAOlnL,KAAK0mL,UAAU1mL,KAAKkH,QAAQ0qK,YAGvCuV,eAAgB,WACZ,OAAOnnL,KAAK0mL,UAAU1mL,KAAKkH,QAAQgrK,YAGvClxC,cAAe,SAASz5H,GACpB,OAAQ,IAAMA,EAAIvH,KAAKkH,QAAQs5H,YAAc,KAGjDotC,WAAY,WACR,MAAO,IAGXqY,oBAAqB,SAAStT,GAC1B,IAAIW,EAAiBtzK,KAAKkH,QAAQosK,eAClC,OAAOtzK,KAAKumL,eAAe5T,EAAS3yK,KAAKkH,QAAQ0qK,UAAW0B,EAAe7uH,KAAM6uH,EAAe5gI,OAGpGyzI,oBAAqB,SAASxT,EAASqT,GACnC,IAAI9+K,EAAUlH,KAAKkH,QACfmsK,EAAiBnsK,EAAQmsK,eACzBC,EAAiBpsK,EAAQosK,eACzB2S,EAAsBD,EAAYhmL,KAAK0mL,UAAUx/K,EAAQ0qK,UAAW0B,EAAe7uH,KAAM6uH,EAAe5gI,MAAQ,KAEpH,OAAO1yC,KAAKumL,eAAe5T,EAASzrK,EAAQgrK,UAAWmB,EAAe5uH,KAAM4uH,EAAe3gI,KAAMuzI,IAGrGsB,aAAc,SAASD,GACnB,OAAOtnL,KAAK+yK,QAAQuU,EAAKnpJ,KAAMmpJ,EAAKlpJ,KAGxC20I,QAAS,SAAS7tK,EAAGigB,GACjB,IACIje,EADMlH,KACQkH,QACdgyC,EAFMl5C,KAEIk5C,IACVsnF,EAAat5H,EAAQs5H,WACrBlrH,EAAQohH,GAAWxxH,EAAGgC,EAAQiP,IAAKjP,EAAQ0R,KAC3CjN,EAAM+qH,GAAWvxG,GAAK7P,EAAOA,EAAOpO,EAAQ0R,KAUhD,GARI1R,EAAQ4O,UACRR,IAAU,EACV3J,IAAQ,IAIZA,GAAO,IAAMA,EAAM60H,GAAc,MADjClrH,GAAS,IAAMA,EAAQkrH,GAAc,KAGpB,CACb,IAAIjoF,EAAMjjC,EACVA,EAAQ3J,EACRA,EAAM4sC,EAGV,OAAO,IAAIyqH,GAAK9pH,EAAIqkC,SAAU,EAAGrkC,EAAIvsC,SAAW,EAAG2I,EAAO3J,EAAM2J,IAGpE6/J,KAAM,SAASh3I,EAAMC,QACN,IAAPA,IAAiBA,EAAKD,GAE1B,IAKIqiG,EAAYC,EALZv5H,EAAUlH,KAAKkH,QACfoO,EAAQ,IAAMpO,EAAQs5H,WACtB20C,EAAOn1K,KAAK+yK,QAAQ50I,EAAMC,GAC1BjoB,EAAM9S,KAAK8S,IAAIgoB,EAAMC,GACrBxlB,EAAMvV,KAAKuV,IAAIulB,EAAMC,GAczB,OAXIl3B,EAAQ4O,SACR0qH,EAAarqH,EACbsqH,EAAW7nH,IAEX4nH,EAAa,IAAM5nH,EACnB6nH,EAAW,IAAMtqH,GAGrBqqH,GAAcA,EAAalrH,GAAS,IACpCmrH,GAAYA,EAAWnrH,GAAS,IAEzB,IAAIsqH,EAASS,IAAI,CAAE80C,EAAK53F,OAAOn4E,EAAG+vK,EAAK53F,OAAOp5E,GAAK,CACtDq8H,WAAYA,EACZC,SAAUA,EACVH,QAAS60C,EAAKxpJ,OACd40G,QAAS40C,EAAKxpJ,UAItBo4J,SAAU,SAAS1pD,GACf,IAAInzH,EAAUlH,KAAKkH,QACfq2E,EAASv9E,KAAKk5C,IAAIqkC,SAClBF,EAAKg9C,EAAMj1H,EAAIm4E,EAAOn4E,EACtBk4E,EAAK+8C,EAAMl2H,EAAIo5E,EAAOp5E,EACtBo9J,EAAQl+J,KAAK0S,MAAMy/G,GAAInyH,KAAKowC,MAAM6pC,EAAID,KACtC/nE,EAAQpO,EAAQs5H,WAOpB,OALKt5H,EAAQ4O,UACTyrJ,IAAU,EACVjsJ,IAAU,IAGNisJ,EAAQjsJ,EAAQ,KAAO,KAGnCihK,WAAY,WACR,MAAO,CACHpgK,IAAK,EACLyC,IAAe,EAAVvV,KAAK+xH,OAKtBirC,GAAkBwnB,GAAW,CACzBniL,KAAM,QACN86H,WAAY,EACZ1qH,SAAS,EACT87J,UAAW,GACXz7J,IAAK,EACLyC,IAAK,IACL82J,OAAQ,CACJ/2H,OAAQ4mH,GAAW,KAEvB+T,eAAgB,CACZlkD,MAAOouC,EACPlxJ,SAAS,EACTU,MAAO,GAEXqmK,eAAgB,CACZjkD,MAAO,UAIf5mH,EAAWq/K,GAAUx/K,UAAWw9K,GAAgB,CAC5CvU,gBAAiBsV,GAAkBv+K,UAAUipK,gBAC7CwU,YAAac,GAAkBv+K,UAAUy9K,YACzClyH,MAAOyuH,GAAYh6K,UAAUurD,MAC7B28G,YAAa8R,GAAYh6K,UAAUkoK,YACnCM,gBAAiBwR,GAAYh6K,UAAUwoK,kBAG3C,IAAIkX,GAAwB,CACxB7gL,QAAS,CACLosK,eAAgB,CACZhnK,SAAS,IAIjBglK,gBAAiB,WACb,IAEIriJ,EAAMjvB,KAAKkH,QACXxB,EAAOupB,EAAIqkJ,eAAe5tK,KAC1B8sK,EAAYvjJ,EAAIujJ,eAA6B,IAAdA,IAAwBA,EAAY,IAQvE,IAPA,IAAIG,EAAU3yK,KAAKyyK,SAASuV,UACxBlC,EAAcnT,EAAQmT,cACtBvoG,EAASo1F,EAAQz5H,IAAIqkC,SACrBrpB,EAAQl0D,KAAK0yK,eAAiB,IAAIlkC,EAAM,CACxC50F,QAAS,IAGJryC,EAAI,EAAGA,EAAIirK,EAAUhrK,OAAQD,IAAK,CACvC,IAAI+/K,EAAO9U,EAAUjrK,GACjB0gL,EAAY,CACZh1J,KAAM,CACFm8F,MAAOk4D,EAAKl4D,MACZx4F,QAAS0wJ,EAAK1wJ,SAElBinG,OAAQ,CACJjnG,QAAS0wJ,EAAK1wJ,UAIlBu+I,EAxBOn1K,KAwBS+yK,QAAQuU,EAAKnpJ,KAAMmpJ,EAAKlpJ,IAAI,GAC5CopJ,EAAO,IAAIxkB,GAAKzlF,EAAQA,EAAOp5E,EAAIgxK,EAAK/3F,GAAIG,EAAOp5E,EAAIgxK,EAAKj4F,GAAI,EAAG,KAEnE+iE,OAAQ,EAERA,EADAv6I,IAAS43J,EACDmH,GAAahxJ,QAAQixJ,WAAW8iB,EAAMS,GAEtC37C,EAAKrQ,WA/BNj8H,KA+B0BkoL,eAAeV,EAAM1B,GAAcmC,GAAW3iI,QAGnF4O,EAAMna,OAAOkmG,GAGjBjgJ,KAAK4lK,aAAa1xG,IAGtBg0H,eAAgB,SAASV,EAAMrjB,GAO3B,IANA,IAAIgkB,EAAc,GACdC,EAAc,GACd7qG,EAAS,CAAEiqG,EAAKjqG,OAAOn4E,EAAGoiL,EAAKjqG,OAAOp5E,GACtCkkL,EAAc,IAAIjqD,EAAO7gD,EAAQiqG,EAAKvkB,aACtCqlB,EAAc,IAAIlqD,EAAO7gD,EAAQiqG,EAAK77J,QAEjCpkB,EAAI,EAAGA,EAAI48J,EAAO38J,OAAQD,IAC/B4gL,EAAYxmL,KAAK0mL,EAAY7pD,QAAQ2lC,EAAO58J,GAAK,MACjD6gL,EAAYzmL,KAAK2mL,EAAY9pD,QAAQ2lC,EAAO58J,GAAK,MAOrD,OAJA4gL,EAAYryK,UACZqyK,EAAYxmL,KAAKwmL,EAAY,IAC7BC,EAAYzmL,KAAKymL,EAAY,IAEtBA,EAAY/qK,OAAO8qK,IAG9B/U,gBAAiB,SAAST,GACtB,IAAIzrK,EAAUlH,KAAKkH,QACf6oK,EAAa/vK,KAAKuoL,8BAClBzC,EAAcnT,EAAQmT,cACtBvoG,EAASo1F,EAAQz5H,IAAIqkC,SACrBi0F,EAAY,GAQhB,GANItqK,EAAQosK,eAAehnK,UACvBklK,EAAYxxK,KAAKqmL,gBACb9oG,EAAQwyF,EAAY+V,EAAa5+K,EAAQosK,iBAI7CpsK,EAAQmsK,eAAe/mK,QAAS,CAChC,IAAIujK,EAAa7vK,KAAKwoL,8BACtBzuI,GAAOy3H,EAAWxxK,KAAKqmL,gBACnB9oG,EAAQsyF,EAAYiW,EAAa5+K,EAAQmsK,iBAIjD,OAAO7B,GAGX6U,gBAAiB,SAAS9oG,EAAQi7F,EAAOrU,EAAQj9J,GAC7C,IAAIuF,EAAQ,CACRoxH,OAAQ,CACJ7wH,MAAO9F,EAAQ8F,MACfoiH,MAAOloH,EAAQkoH,MACf4sB,SAAU90I,EAAQ80I,WAGtBv3F,EAAOv9C,EAAQu9C,UAAmB,IAATA,IAAmBA,EAAO,GACvD,IAAI/R,EAAOxrC,EAAQwrC,UAAmB,IAATA,IAAmBA,EAAO,GAGvD,IAFA,IAAIpc,EAAYt2B,KAAKuxK,kBAEZ6C,EAAS3vH,EAAM2vH,EAASoE,EAAMhxK,OAAQ4sK,GAAU1hI,EAAM,CAC3D,IAAI+1I,EAAalrG,EAAOp5E,EAAIq0K,EAAMpE,GAClC,GAAIqU,EAAa,EAAG,CAChB,IAAI33B,EAAS,IAAI1yB,EAAO,CAAE7gD,EAAOn4E,EAAGm4E,EAAOp5E,GAAKskL,GAChD,GAAIvhL,EAAQxB,OAAS43J,EACjBhnI,EAAUyjB,OAAO,IAAIhwB,EAAQq0G,OAAO0yB,EAAQrkJ,QACzC,CAEH,IADA,IAAIihK,EAAO,IAAIphC,EAAK7/H,GACXi8K,EAAU,EAAGA,EAAUvkB,EAAO38J,OAAQkhL,IAC3Chb,EAAK9iC,OAAOkmB,EAAOtyB,QAAQ2lC,EAAOukB,GAAW,MAGjDhb,EAAKpoH,QACLhvB,EAAUyjB,OAAO2zH,KAK7B,OAAOp3I,EAAU6e,UAGrB4uI,SAAU,SAAS1pD,GACf,IAAI02C,EAAU/wK,KAAK+wK,UACf4B,EAAU3yK,KAAKyyK,SAASuV,UACxBlC,EAAcnT,EAAQmT,cACtBvoG,EAASo1F,EAAQz5H,IAAIqkC,SACrB5xD,EAAS0uG,EAAMG,WAAWj9C,GAC1BC,EAAW7xD,EAEf,GAAI3rB,KAAKkH,QAAQosK,eAAe5tK,OAAS43J,GAAOwoB,EAAYt+K,OAAS,EAAG,CACpE,IAAI61E,EAAKg9C,EAAMj1H,EAAIm4E,EAAOn4E,EACtBk4E,EAAK+8C,EAAMl2H,EAAIo5E,EAAOp5E,EACtBo9J,GAAS/rC,GAAInyH,KAAKowC,MAAM6pC,EAAID,IAAO,KAAO,IAE9CyoG,EAAY5gK,MAAK,SAAShgB,EAAGigB,GACzB,OAAOwjK,GAAgBzjL,EAAGq8J,GAASonB,GAAgBxjK,EAAGo8I,MAK1D,IAEIqnB,EAAQ,GAFGD,GAAgB7C,EAAY,GAAIA,EAAY,IAAM,EAG7D+C,EAAO,IAFCF,GAAgBpnB,EAAOukB,EAAY,IAEtB8C,EAEzBprG,EAAW7xD,GAAUtoB,KAAKm1H,IAAIzB,GAAI8xD,IAASxlL,KAAKm1H,IAAIzB,GAAI6xD,KAG5D,OAAO5oL,KAAK8oL,WAAWzgL,UAAU07K,SAASx5K,KACtCvK,KAAM,IAAIg6H,GAAM+2C,EAAQ9zF,GAAI8zF,EAAQ3zF,GAAKI,MAKrD,SAASmrG,GAAgBzjL,EAAGigB,GACxB,OAAO,IAAM9hB,KAAK6T,IAAI7T,KAAK6T,IAAIhS,EAAIigB,GAAK,KAG5C,IAAI4jK,GAAmB1G,GAAYt/K,OAAO,CACtCwlL,4BAA6B,WACzB,OAAOvoL,KAAKq7K,iBAAiBr7K,KAAKkH,QAAQ0qK,YAG9C4W,4BAA6B,WACzB,IAAIthL,EAAUlH,KAAKkH,QACf8hL,EAAgB,EAKpB,OAHI9hL,EAAQosK,eAAehnK,UACvB08K,EAAgB9hL,EAAQ0qK,WAErB5xK,KAAKq7K,iBAAiBn0K,EAAQgrK,UAAW8W,IAGpDF,SAAU,WACN,OAAOzG,MAIf75K,EAAWugL,GAAiB1gL,UAAW0/K,IAEvC,IAAIkB,GAAuBnE,GAAgB/hL,OAAO,CAC9CwlL,4BAA6B,WACzB,IAAIr0F,EAAY,GAMhB,OAJAl0F,KAAKulL,6BAA4B,SAASz4K,GACtConF,EAAUvyF,KAAKmL,KAChB9M,KAAKkH,QAAQosK,gBAETp/E,GAGXs0F,4BAA6B,WACzB,IAAIt0F,EAAY,GAMhB,OAJAl0F,KAAKylL,6BAA4B,SAAS34K,GACtConF,EAAUvyF,KAAKmL,KAChB9M,KAAKkH,QAAQmsK,gBAETn/E,GAGX40F,SAAU,WACN,OAAOhE,MAIft8K,EAAWygL,GAAqB5gL,UAAW0/K,IAE3C,IAGImB,GAAiBthL,EAAM7E,OAAO,CAC9BoF,KAAM,SAASykI,GAEX5sI,KAAK4sI,OAASA,GAGlB53E,QAAS,SAASm0H,GACd,IAEI9nD,EAAS8nD,EAAWviL,MAAM,GAC1BskI,EAAW,GACX0B,EAAS5sI,KAAK4sI,OACdplI,EAAS65H,EAAO75H,OAOpB,GALIA,EAAS,IACTxH,KAAKkpI,iBAAiB,EAAG7H,GACzB75H,EAAS65H,EAAO75H,QAGhBA,EAAS,GAAiB,IAAXA,GAAgB65H,EAAO,GAAGvwE,OAAOuwE,EAAO,IACvD,OAAO6J,EAGX,IA2BIqC,EAAqBC,EA3BrBjL,EAAKlB,EAAO,GACZU,EAAKV,EAAO,GACZI,EAAKJ,EAAO,GAIhB,IAFA6J,EAASvpI,KAAK,IAAIwlI,EAAQ5E,IAEnBA,EAAGzxE,OAAOuwE,EAAO75H,EAAS,KAC7BolI,GAAS,EACTvL,EAAOhyG,MACP7nB,IAGJ,GAAe,IAAXA,EAAc,CACd,IAAI6hI,EAAUrpI,KAAKqpI,QAAQ9G,EAAGR,EAAI18H,EAAG2P,GAWrC,OATAmtB,GAAK+oG,GAAU7D,WACXrnI,KAAKqqI,kBAAkBhB,EAAS9G,EAAIR,EAAI18H,EAAG2P,IAG/Ck2H,EAASvpI,KAAK,IAAIwlI,EACdpF,EACA/hI,KAAKkqI,mBAAmBb,EAAS9G,EAAIR,EAAI18H,EAAG2P,KAGzCk2H,EAKX,GAAI0B,EAAQ,CACRrK,EAAKlB,EAAO75H,EAAS,GAAIu6H,EAAKV,EAAO,GAAII,EAAKJ,EAAO,GACrD,IAAIoM,EAAgBztI,KAAKytI,cAAclL,EAAIR,EAAIN,GAC/C8L,EAAsBE,EAAc,GACpCD,EAAmBC,EAAc,OAC9B,CACH,IAAI27C,EAAYppL,KAAKqpI,QAAQ9G,EAAIR,EAAI18H,EAAE2P,GACvCu4H,EAAsBvtI,KAAKqqI,kBAAkB++C,EAAW7mD,EAAIR,EAAI18H,EAAG2P,GAIvE,IADA,IAAI04H,EAAMH,EACD3jI,EAAM,EAAGA,GAAOpC,EAAS,EAAGoC,IAGjC,GA3DW5J,KAyDFkpI,iBAAiBt/H,EAAKy3H,GAE3Bz3H,EAAM,IADVpC,EAAS65H,EAAO75H,QACO,CACnB+6H,EAAKlB,EAAOz3H,GAAMm4H,EAAKV,EAAOz3H,EAAM,GAAI63H,EAAKJ,EAAOz3H,EAAM,GAC1D,IAAI+jI,EA7DG3tI,KA6DwBytI,cAAclL,EAAGR,EAAGN,GAEnDt/F,GAAK+oG,GAAU7D,WAAWqG,GAC1BA,EAAMC,EAAgB,GAEtB,IAAIpM,EAAMoM,EAAgB,GAC1BzC,EAASvpI,KAAK,IAAIwlI,EAAQpF,EAAIR,IAItC,GAAIqL,EAAQ,CACRrK,EAAKlB,EAAO75H,EAAS,GAAIu6H,EAAKV,EAAO75H,EAAS,GAAIi6H,EAAKJ,EAAO,GAC9D,IAAIuM,EAAkB5tI,KAAKytI,cAAclL,EAAIR,EAAIN,GAEjDt/F,GAAK+oG,GAAU7D,WAAWqG,GAC1BxC,EAASvpI,KAAK,IAAIwlI,EACdpF,EACA6L,EAAgB,KAGpBzrG,GAAK+oG,GAAU7D,WAAWuG,EAAgB,IAC1C1C,EAASvpI,KAAK,IAAIwlI,EACd1F,EACA+L,QAED,CACH,IAAIK,EAAY7tI,KAAKqpI,QAAQtH,EAAIN,EAAIp8H,EAAG2P,GAExCmtB,GAAK+oG,GAAU7D,WAAWqG,GAC1BxC,EAASvpI,KAAK,IAAIwlI,EACd1F,EACAzhI,KAAKkqI,mBAAmB2D,EAAW9L,EAAIN,EAAIp8H,EAAG2P,KAItD,OAAOk2H,GAGXhC,iBAAkB,SAASt/H,EAAKy3H,GAC5B,KAAOA,EAAOz3H,EAAM,KAAOy3H,EAAOz3H,GAAKknD,OAAOuwE,EAAOz3H,EAAM,KAAOy3H,EAAOz3H,EAAM,GAAGknD,OAAOuwE,EAAOz3H,EAAM,MAClGy3H,EAAO72H,OAAOZ,EAAM,EAAG,IAI/BmgI,WAAY,SAASxH,EAAIR,EAAIN,GACzB,IAAIsI,GAAa,EAEjB,GAAIxH,EAAGn9H,IAAM28H,EAAG38H,EACZ2kI,GAAa,OACV,GAAIhI,EAAG38H,IAAMq8H,EAAGr8H,GACd28H,EAAG59H,EAAIs9H,EAAGt9H,GAAKo+H,EAAGp+H,GAAK49H,EAAG59H,GAAOs9H,EAAGt9H,EAAI49H,EAAG59H,GAAK49H,EAAG59H,GAAKo+H,EAAGp+H,KAC5D4lI,GAAa,OAEd,CACH,IAAIhiI,EAAK/H,KAAKmpI,aAAa5G,EAAGR,GAC1B3kD,EAAKp9E,KAAK0pI,kBAAkB3hI,EAAI05H,EAAGr8H,GACjCm9H,EAAGp+H,GAAK49H,EAAG59H,GAAKs9H,EAAGt9H,GAAKi5E,GACxB2kD,EAAG59H,GAAKo+H,EAAGp+H,GAAKs9H,EAAGt9H,GAAKi5E,IAC1B2sD,GAAa,GAIrB,OAAOA,GAGXJ,OAAQ,SAASpH,EAAIR,EAAIN,GACrB,IAAI15H,EAAK/H,KAAKmpI,aAAa5G,EAAIR,GAC3B3kD,EAAKp9E,KAAK0pI,kBAAkB3hI,EAAI05H,EAAGr8H,GAEvC,OAAQm9H,EAAGn9H,IAAM28H,EAAG38H,GAAK28H,EAAG38H,IAAMq8H,EAAGr8H,GAAM2Q,GAAMqnE,EAAI,KAAOrnE,GAAM0rH,EAAGt9H,EAAG,IAG5EglI,aAAc,SAASpH,EAAIN,GACvB,IAAIv8H,GAAKu8H,EAAGt9H,EAAI49H,EAAG59H,IAAMs9H,EAAGr8H,EAAI28H,EAAG38H,GAGnC,MAAO,CAFC28H,EAAG59H,EAAIe,EAAI68H,EAAG38H,EAEVF,IAGhBuoI,cAAe,SAASlL,EAAIR,EAAIN,GAC5B,IAII4H,EAJAC,EAASjkI,EACTkkI,EAASv0H,EACTw0H,GAAW,EACXC,GAAoB,EAGxB,GAAIzpI,KAAK2pI,OAAOpH,EAAIR,EAAIN,GACpB4H,EAAUrpI,KAAKqpI,QAAQ9G,EAAIR,EAAI18H,EAAG2P,OAC/B,CACH,IAAI60H,EAAY,CACZzkI,EAAGpF,KAAK8pI,mBAAmBvH,EAAIR,EAAIN,EAAIp8H,GACvClB,EAAGnE,KAAK8pI,mBAAmBvH,EAAIR,EAAIN,EAAIzsH,IAG3C,GAAI60H,EAAUzkI,GAAKykI,EAAU1lI,EACzBklI,EAAUrpI,KAAKqpI,QAAQ9G,EAAId,EAAIp8H,EAAG2P,GAClCw0H,GAAW,OAOX,GALIxpI,KAAK+pI,WAAWxH,EAAIR,EAAIN,KACxB6H,EAASt0H,EACTu0H,EAASlkI,GAGTwkI,EAAUP,GACVD,EAAU,OAUVA,EAxLa,KAiLR5H,EAAG8H,GAAUhH,EAAGgH,IAAWhH,EAAGgH,IAAWxH,EAAGwH,IAC5ChH,EAAGgH,GAAU9H,EAAG8H,IAAWxH,EAAGwH,IAAWhH,EAAGgH,GACtCS,IAAYvI,EAAG8H,GAAUhH,EAAGgH,KAAYxH,EAAGuH,GAAU/G,EAAG+G,MAEvDU,IAAYvI,EAAG6H,GAAU/G,EAAG+G,KAAYvH,EAAGwH,GAAUhH,EAAGgH,MAIpEE,GAAoB,EAKhC,IAAIS,EAAqBlqI,KAAKkqI,mBAAmBb,EAAS9G,EAAIR,EAAIuH,EAAQC,GAE1E,GAAIE,EAAmB,CACnB,IAAIU,EAAYb,EAChBA,EAASC,EACTA,EAASY,EAGb,IAAIE,EAAoBrqI,KAAKqqI,kBAAkBhB,EAAStH,EAAIN,EAAI6H,EAAQC,GAOxE,OALIC,IACAxpI,KAAKsqI,qBAAqB/H,EAAIR,EAAImI,EAAoBb,GACtDrpI,KAAKsqI,qBAAqBvI,EAAIN,EAAI4I,EAAmBhB,IAGlD,CAAEa,EAAoBG,IAGjCC,qBAAsB,SAASvI,EAAIN,EAAI8I,EAAIlB,GACnCtH,EAAG59H,EAAIs9H,EAAGt9H,EACNs9H,EAAGt9H,EAAIomI,EAAGpmI,GACVomI,EAAGnlI,EAAI28H,EAAG38H,GAAKq8H,EAAGt9H,EAAI49H,EAAG59H,GAAKklI,EAC9BkB,EAAGpmI,EAAIs9H,EAAGt9H,GACHomI,EAAGpmI,EAAI49H,EAAG59H,IACjBomI,EAAGnlI,EAAIq8H,EAAGr8H,GAAKq8H,EAAGt9H,EAAI49H,EAAG59H,GAAKklI,EAC9BkB,EAAGpmI,EAAI49H,EAAG59H,GAGVomI,EAAGpmI,EAAIs9H,EAAGt9H,GACVomI,EAAGnlI,EAAI28H,EAAG38H,GAAK28H,EAAG59H,EAAIs9H,EAAGt9H,GAAKklI,EAC9BkB,EAAGpmI,EAAIs9H,EAAGt9H,GACH49H,EAAG59H,EAAIomI,EAAGpmI,IACjBomI,EAAGnlI,EAAIq8H,EAAGr8H,GAAK28H,EAAG59H,EAAIs9H,EAAGt9H,GAAKklI,EAC9BkB,EAAGpmI,EAAI49H,EAAG59H,IAKtBklI,QAAS,SAAS9G,EAAIR,EAAIuH,EAAQC,GAC9B,IAAInkI,EAAI28H,EAAGuH,GAAU/G,EAAG+G,GACpBnlI,EAAI49H,EAAGwH,GAAUhH,EAAGgH,GASxB,OANU,IAANnkI,EACU,EAEAjB,EAAIiB,GAMtB0kI,mBAAoB,SAASvH,EAAIR,EAAIN,EAAIx8G,GACrC,OAAQw8G,EAAGx8G,GAAS88G,EAAG98G,IAAU88G,EAAG98G,GAASs9G,EAAGt9G,IACnCw8G,EAAGx8G,GAAS88G,EAAG98G,IAAU88G,EAAG98G,GAASs9G,EAAGt9G,IAGzDolH,kBAAmB,SAAShB,EAAS9G,EAAIC,EAAI8G,EAAQC,GACjD,IAAIlE,EAAK9C,EAAG+G,GAER9rD,EA3PC,MA0PIglD,EAAG8G,GACSjE,GAErB,OAAOrlI,KAAKq6H,MAAMgL,EAAK7nD,EAAU+kD,EAAGgH,GAAU/rD,EAAW6rD,EAASC,EAAQC,IAG9EW,mBAAoB,SAASb,EAAS9G,EAAIC,EAAI8G,EAAQC,GAClD,IAAIlE,EAAK9C,EAAG+G,GACRhB,EAAK9F,EAAG8G,GACR9rD,EAnQC,MAmQW8qD,EAAKjD,GAErB,OAAOrlI,KAAKq6H,MAAMiO,EAAK9qD,EAAUglD,EAAG+G,GAAU/rD,EAAW6rD,EAASC,EAAQC,IAG9ElP,MAAO,SAASmQ,EAAQC,EAAQnB,EAAQC,GACpC,IAAIpE,EAAe,IAAIvF,EAAS5F,MAIhC,OAHAmL,EAAamE,GAAUkB,EACvBrF,EAAaoE,GAAUkB,EAEhBtF,GAGXuE,kBAAmB,SAAS3hI,EAAI3C,GAI5B,IAHA,IAAIoC,EAASO,EAAGP,OACZ+O,EAAS,EAEJhP,EAAI,EAAGA,EAAIC,EAAQD,IACxBgP,GAAUlT,KAAKqmC,IAAItkC,EAAEmC,GAAKQ,EAAGR,GAEjC,OAAOgP,KAIf,SAASyzH,GAAWthI,GAChB,OAAOA,GAAS,GAAK,EAAI,EAG7BohB,EAAQu/J,UAAYhhB,GAEpB1nK,MAAM6H,WAAW7H,MAAMmpB,QAAS,CAC5B00I,UAAWA,EACXyQ,SAAUA,GACV5N,cAAeA,GACfrnC,MAAOA,GACP2nC,IAAKA,GACLqB,KAAMA,GACNwB,OAAQA,GACRC,aAAcA,GACdsD,aAAcA,GACdnD,aAAcA,GACdyC,WAAYA,GACZyB,YAAaA,GACbY,aAAcA,GACdx7B,KAAMA,GACN88B,QAASA,GACTe,MAAOA,GACPS,UAAWA,GACXiD,KAAMA,GACNtC,KAAMA,GACN6M,aAAcA,GACdgG,iBAAkBA,GAClBmE,cAAeA,GACf9B,YAAaA,GACbyC,gBAAiBA,GACjB+C,UAAWA,GACXjB,kBAAmBA,GACnBmC,iBAAkBA,GAClBE,qBAAsBA,GACtBC,eAAgBA,GAChBpe,UAAWA,GACXvmJ,SAxrPJ,SAAkB1Y,EAASkc,GAGvB,IAFA,IAAIuhK,EAAarmL,EAAQ8kB,GAAWA,EAAU,CAAEA,GAEvCne,EAAM,EAAGA,EAAM0/K,EAAW9hL,OAAQoC,IAAO,CAC9C,IAAI8iB,EAAY48J,EAAW1/K,IACmB,IAA1CiC,EAAQ6gB,UAAU/W,QAAQ+W,KAC1B7gB,EAAQ6gB,WAAa,IAAMA,KAmrPnCP,YA5qPJ,SAAqBtgB,EAAS6gB,GACtB7gB,GAAWA,EAAQ6gB,YACnB7gB,EAAQ6gB,UAAY7gB,EAAQ6gB,UAAUjqB,QAAQiqB,EAAW,IAAIjqB,QAAQq8J,EAAa,OA2qPtFC,iBAAkBA,EAClBC,UAAWA,EACXuqB,oBA3oPJ,SAA6B7gL,GACzB,OAAOosD,EAASpsD,IAAWE,EAASF,IAAUmJ,SAASnJ,IA2oPvDF,WAAYA,EACZ+uH,cAxnPJ,SAAuB1rH,EAASsD,GAC5B,IAAIqoH,EAAc5uH,EAASuG,GAAU,CAAEA,GAAWA,EAElD,GAAIlM,EAAQu0H,GAAc,CAItB,IAHA,IAAIjhH,EAAS,GACT9J,EAAQ3L,OAAOwO,iBAAiBzD,GAE3BjC,EAAM,EAAGA,EAAM4tH,EAAYhwH,OAAQoC,IAAO,CAC/C,IAAIqb,EAAQuyG,EAAY5tH,GACxB2M,EAAO0O,GAASq6I,GAAYr6I,GAASlc,WAAW0D,EAAMwY,IAAUxY,EAAMwY,GAG1E,OAAO1O,EACJ,GAAI4oJ,GAAShwJ,GAChB,IAAK,IAAIq6K,KAAWr6K,EAChBtD,EAAQY,MAAM+8K,GAAWpqB,GAAWjwJ,EAAOq6K,KA0mPnDjqB,WAAYA,GACZG,YAAaA,GACb5wI,OAAQuuI,EACRn/H,KAAMA,GACNurJ,WA7iPJ,SAAoB59K,EAAS0qE,GACzB,GAAI1qE,EAAQ6gB,UAER,IADA,IAAItY,EAAQmiE,EAAW3rE,MAAM,KACpBhB,EAAM,EAAGA,EAAMwK,EAAM5M,OAAQoC,IAClC,GAAIiC,EAAQ6gB,UAAU/W,UAAsD,IAA3C9J,EAAQ6gB,UAAU/W,QAAQvB,EAAMxK,IAC7D,OAAO,GAyiPnBg2J,QAASA,GACTvqI,QAASA,GACTq0J,iBA/gPJ,SAA0Bp0K,EAAO3J,EAAK0qB,GAClC,OAAO11B,MAAMopB,QAAQ47F,KAAK5vG,MAAMT,GAAS3J,EAAM2J,GAAS+gB,EAxQtC,IAuxPlB0pI,iBAAkBA,GAClB98J,QAASA,EACTiG,WAAYA,EACZ4rD,SAAUA,EACVqqG,SAAUA,GACVv2J,SAAUA,EACV0R,IAAKA,GACLqvK,gBAv9OJ,SAAyBhlL,GACrB,IAAIigC,EAAQ,EAkBZ,OAhBIjgC,EAAEmgC,YACFF,GAASjgC,EAAEmgC,WAAa,IAEpB9iB,GAAQH,SAKR+iB,GAAiB,EAAIvhC,KAAKuV,IAAI9X,OAAOue,iBAAkB,QAEpD1a,EAAEogC,SACTH,EAAQjgC,EAAEogC,OAAS,GAGvBH,EAAQA,EAAQ,EAAIvhC,KAAK4iE,KAAKrhC,GAASvhC,KAAKkN,MAAMq0B,IAu8OlDw7H,WAAYA,GACZC,kBAAmBA,GACnBC,kBAAmBA,GACnBlB,WAAYA,GACZrpI,KAl2OJ,SAAcvb,EAAOovK,GACjB,IAAK,IAAIriL,EAAI,EAAGA,EAAIiT,EAAMhT,OAAQD,IAAK,CACnC,IAAIynC,EAAOx0B,EAAMjT,GACjB,GAAIqiL,EAAU56I,EAAMznC,EAAGiT,GACnB,OAAOw0B,IA+1OfgqF,aAn0OJ,SAAsBntH,GAClB,IAAKA,EACD,OAAOksH,GAAOM,OAKlB,IAFA,IAAIJ,EAASY,GAAgBhtH,GACzBM,EAASN,EAAQotH,cACd9sH,GAAQ,CACX,IAAI+sH,EAAeL,GAAgB1sH,GACnC8rH,EAASA,EAAOD,aAAakB,GAC7B/sH,EAASA,EAAO8sH,cAIpB,OADAhB,EAAO9yG,EAAI8yG,EAAOvzH,EAAIuzH,EAAOtzH,EAAIszH,EAAO9qE,EAAI,EACrC8qE,GAszOP4xD,cAnzOJ,SAAuBz6D,GAEnB,OADa,IAAIzuH,MAAMuwH,MAAM9B,GAAO0C,SAEzBysC,EAGJf,GA8yOPssB,cAtsOJ,SAAuBhxK,GACnB,OAXIixK,GAAY,EAEG,mBAAR3oB,MAEP2oB,EADU,IAAI3oB,IAAI,CAAC,IACHH,IAAI,IAGjB8oB,EAKI,IAAI5oB,GAAWroJ,GAGnB,IAAIgoJ,GAAUhoJ,GAhBP,IACVixK,GAitOJC,oBA/rOJ,SAA6Bj8J,GACzB,MAAMA,GA+rON7D,KA5rOO,CACPC,OAAQ,GACRC,OAAQ,GACRC,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,IAAK,GACLC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,YAAa,IACbC,aAAc,IACdC,WAAY,KAwqOZwuB,OAAQA,GACRo9E,WAAYA,GACZvvH,MAAOA,EACPotH,QAASA,GACTQ,IAAKA,GACL9R,cAAeA,GACf/2B,YAAaA,GACb4pC,iBAAkBA,GAClBC,aAAcA,GACd1D,QAASA,GACT3wF,KAAMA,GACNu0F,WAAYA,GACZpmG,aAAc3vB,MAAM2vB,aACpBuiG,UAAWA,GACXkE,IAAKA,GACLhhH,MAAOA,GACP4hH,aAAcA,GACdT,eAAgBA,GAChBohD,iBAAkBA,GAClBM,YAAaA,GACbL,SAAUA,GACVc,SAAUA,GACVC,aAAcA,GACdC,SAAUA,GACVE,WAAYA,GACZG,UAAWA,GACXlzJ,SAAUA,GACV0yJ,UAAWA,GACX6Q,aAxwHJ,SAAsB5zK,EAAM6zK,GAKxB,IAJA,IAEInxK,EAFA+8G,EAAM,EACNq0D,EAAOD,EAAY1iL,OAAS,EAGzBsuH,GAAOq0D,GAAM,CAEhB,IAAI5pJ,EAAc2pJ,EADlBnxK,EAAQ1V,KAAKkN,OAAOulH,EAAMq0D,GAAQ,IAGlC,GAAI5pJ,EAAclqB,EACdy/G,EAAM/8G,EAAQ,MADlB,CAKA,KAAIwnB,EAAclqB,GAAlB,CAKA,KAAOojK,GAAWyQ,EAAYnxK,EAAQ,GAAI1C,IACtC0C,IAGJ,OAAOA,EARHoxK,EAAOpxK,EAAQ,GAWvB,OAAImxK,EAAYnxK,IAAU1C,EACf0C,EAGJA,EAAQ,GA2uHf2/J,YAAaA,GACbD,OAAQA,GACRl7J,UAAWA,GACXu8J,WAAYA,GACZN,OAAQA,GACRvkK,SAAUA,KAt2Pd,CAy2PGnU,OAAOH,MAAM+G,QAEhB,SAAU/E,GAEN,IAAImnB,EAAUnpB,MAAMmpB,QAChBmlJ,EAAWnlJ,EAAQmlJ,SACnBz5B,EAAO70I,MAAMopB,QAEjBD,EAAQsgK,YAAc,CAAC,OAAQ,aAAc,eAAgB,eAE7DtgK,EAAQugK,YAAc,CAClBtnL,OAAQ,SAAS8E,EAAOyiL,GACpB,IAAKziL,EAAMstI,aACP,MAAM,IAAI1kI,MAAM,oDAGpB5I,EAAMuvJ,UAAYp3J,KAAKo3J,UACvBvvJ,EAAMqvJ,YAAcl3J,KAAKk3J,YACzBrvJ,EAAM0iL,UAAYvqL,KAAKuqL,UAElBD,IACDziL,EAAMgvF,IAAM72F,KAAK62F,IACjBhvF,EAAM2iL,aAAexqL,KAAKwqL,eAIlCpzB,UAAW,SAASlwJ,GAChB,OAAOsuI,EAAK4hB,UAAUp3J,KAAKm1I,eAAgBjuI,IAG/CgwJ,YAAa,SAAShwJ,GAClB,OAAOsuI,EAAK0hB,YAAYl3J,KAAKm1I,aAAajuI,GAAUA,IAGxDqjL,UAAW,SAASrjL,GAChB,OAAOsuI,EAAK+0C,UAAUvqL,KAAKm1I,eAAgBjuI,IAG/C2vF,IAAK,WACD,GAAI2+C,EAAK3+C,IAAIo+C,QACT,OAAOO,EAAK3+C,IAAI8uD,YAAY3lJ,KAAKm1I,gBAEjC,MAAM,IAAI1kI,MAAM,8EAIxB+5K,aAAc,WACV,IAAK7pL,MAAM4C,QAAQg8I,OACf,OAAO,KAGX,GAAI/J,EAAK+J,OAAOtK,QAAS,CACrB,IAAI3+G,EAAY3zB,EAAE,WAAWiK,IAAI,CAC7BC,QAAS,OACTG,MAAOhN,KAAK6L,QAAQmB,QACpBL,OAAQ3M,KAAK6L,QAAQc,WACtBwgC,SAAS/9B,SAAS6O,MAEjB0iE,EAAU,IAAI60D,EAAK+J,OAAOtK,QAAQ3+G,EAAU,IAChDqqD,EAAQ60D,KAAKx1I,KAAKm1I,gBAClB,IAAItsG,EAAQ83C,EAAQi9D,aAAauH,YAKjC,OAHAxkE,EAAQ3+E,UACRs0B,EAAUS,SAEH8R,EAEP,MAAM,IAAIp4B,MAAM,oFAK5Bw+J,EAAShB,YAAYh3I,SAAS,CAC3BvmB,OAAQ,SAASA,GACb,OAAO/P,MAAM+P,OAAOtI,MAAM,KAAM,CAACsI,GAAQ2M,OAAOna,MAAMmF,UAAUzB,MAAM2D,KAAKlD,UAAW,MAE1F6J,SAAUvQ,MAAMuQ,SAChBqM,UAAW5c,MAAM4c,UACjBtI,SAAU,WACN,OAAOtU,MAAM2S,UAAUW,UAAUC,SAASe,YAIjDg6J,EAASxP,gBAAgBxoI,SAAS,CAC/BlnB,QAASpP,MAAMkP,WAGlBia,EAAQ2gK,QAAU3gK,EAAQkwG,MAC1BlwG,EAAQ4gK,MAAQ5gK,EAAQ63I,IACxB73I,EAAQ6gK,QAAU,SAAShmL,GACvB,OAAOmlB,EAAQ6/J,gBAAgBhlL,EAAEgkB,gBAxFzC,CA2FG7nB,OAAOH,MAAM+G,QAWF/G,OASd,WAGAG,OAAOH,MAAMmpB,QAAUhpB,OAAOH,MAAMmpB,SAAW,GAE/C,IAAI8gK,EAAU,IACVC,EAAc,GACdrtB,EAAQ,OACRstB,EAAO,+BAEPC,EAAS,QAAUD,EACnBE,EAAS,QAAUF,EACnBG,EAAc,cACd1sB,EAAQ,OAER4S,EAAQ,WAAc,MAAO,CAC7B75E,KAAM,CACFmwE,OAAQ,CACJz6J,MAAO,IAGf6mB,MAAO,CACHkjE,KAAMg0F,EACNh1C,QAAS,GAEb23B,KAAM,CACFlmK,OAAQ,GACRwF,MAAO,GAEXV,SAAS,IAqDT4+K,EAAgB,WAAc,MAAO,CACrCC,cAAe,GACfC,UAAW,GACX3jB,OAAQ,CACJ4jB,YAAa,GACbr+K,MAAO,GAEXs+K,UAAW/sB,EACX1tJ,IAAK,EACL01J,UAAW,CACPkB,OAAQ,CACJ7wI,QAAS,EACT5pB,MAAO,GAEXu+K,SAAU,CACNv+K,MAAO,GAEXw+K,KAAM,CACFx+K,MAAO,GAEXy+K,OAAQ,CACJz+K,MAAO,IAGfw+K,KAAM,CACFx+K,MAAO,GAEXy+K,OAAQ,CACJz+K,MAAO,GAEXuiI,QAAS,GACTg8C,SAAU,CACNv+K,MAAO,KAcX0+K,EAAe,WAAc,MAAO,CACpC76K,IAAK+5K,EACLr7C,QAASs7C,EACTvjL,OAAQ,CACJ8nH,MAAO,aAuFXu8D,EAAkB,WAAc,MAAO,CACvC96K,IAAK,GACL68J,KAAM,CACFt+C,MAAOouC,EACPxwJ,MAAO,GAEXuiI,QAASs7C,IA0CTe,EAAiB,SAAU1kL,GAAW,MAAO,CAC7CoF,SAAS,EACTojK,OAAQ,CACJ34E,KArQK,qCAuQTmwE,QAAShgK,EAAQ8hK,UAAY,GAAK,CAC9B/lB,SAAU,QAEd4oC,KAxOkC,CAClCtlB,UAAW,CACPulB,QAAS,CACLrkB,OAAQ,KAGhBiG,KAAM,CACF92I,QAAS,EACT5pB,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,GAEbsqB,QAAS,IA2NTm1J,UAxNuC,CACvCxlB,UAAW,CACPulB,QAAS,CACLrkB,OAAQ,KAGhBiG,KAAM,CACF92I,QAAS,EACT5pB,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,GAEbsqB,QAAS,IA2MTo1J,kBAzNuC,CACvCzlB,UAAW,CACPulB,QAAS,CACLrkB,OAAQ,KAGhBiG,KAAM,CACF92I,QAAS,EACT5pB,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,GAEbsqB,QAAS,IA4MTq1J,IAzMiC,CACjCp7K,IAAK+5K,EACLr7C,QAASs7C,GAwMTqB,QAAShB,IACTiB,OAlKoC,CACpC1kB,OAAQ,CACJz6J,MAAO,GAEX0iK,OAAQ,CACJzd,WAAYg5B,GAEhBr0J,QAAS,IA4JTy5H,OAAQq7B,IACRU,YAlJyC,CACzC3kB,OAAQ,CACJ4jB,YAAa,GACbr+K,MAAO,GAEXs+K,UAAW/sB,EACX1tJ,IAAK,EACL01J,UAAW,CACPkB,OAAQ,CACJ7wI,QAAS,EACT5pB,MAAO,GAEX0gK,KAAM,CACF1gK,MAAO,IAGf0gK,KAAM,CACFt+C,MAAOouC,EACPxwJ,MAAO,GAEXuiI,QAAS,IA+HT88C,OA5HoC,CACpCx7K,IAAK+5K,EACLr7C,QAASs7C,GA2HTyB,QA9BqC,CACrC5c,OAAQ,CACJtgD,MAAO,GACP6iC,WAAYg5B,EACZ3+K,SAAS,GAEbi6J,UAAW,CACPkB,OAAQ,CACJz6J,MAAO,KAuBfu/K,IAzDiC,CACjC7c,OAAQ,CACJzd,WAAY,GACZ7iC,MAAO,GACP2mB,QAAS,CACL3xH,IAAK,EACL2H,OAAQ,EACRF,KAAM,EACNC,MAAO,KAkDf0gK,MA1HmC,CACnC7zI,OAAQ,GA0HR8zI,OA9CoC,CACpC/c,OAAQ,CACJzd,WAAY,GACZ7iC,MAAO,GACP2mB,QAAS,CACL3xH,IAAK,EACL2H,OAAQ,EACRF,KAAM,EACNC,MAAO,KAuCf4gK,oBAAqBf,IACrBje,KAzHkC,CAClC1gK,MAAO,GAyHPmkK,MAAOA,IACPwb,KAvHkC,CAClC97K,IAAK,EACL01J,UAAW,CACPmH,KAAM,CACF92I,QAAS,EACT5pB,MAAO,IAGf0gK,KAAM,CACF1gK,MAAO,GAEXuiI,QAAS,IA6GTq9C,UA1GuC,CACvClf,KAAM,CACF92I,QAAS,EACT5pB,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,GAEbsqB,QAAS,IAkGTi2J,UA/FuC,CACvCf,QAAS,CACLx/K,SAAS,GAEbU,MAAO,GA4FP8/K,UA5GuC,CACvCpf,KAAM,CACF92I,QAAS,EACT5pB,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,GAEbsqB,QAAS,IAoGTm2J,UAjGuC,CACvCjB,QAAS,CACLx/K,SAAS,GAEbU,MAAO,GA8FPggL,SA3FsC,CACtCn8K,IAAK+5K,EACLr7C,QAASs7C,GA0FToC,YAvFyC,CACzCp8K,IAAK+5K,EACLr7C,QAASs7C,GAsFTqC,YAnFyC,CACzClgL,MAAO,GAmFPmgL,aAhQkC,CAClC5mB,UAAW,CACPulB,QAAS,CACLrkB,OAAQ,KAGhBiG,KAAM,CACF92I,QAAS,EACT5pB,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,GAEbsqB,QAAS,IAmPTw2J,gBAAiBlC,IACjBmC,eAAgB3B,IAChB4B,aAtIkC,CAClCtgL,MAAO,GAsIPugL,UAAW5B,MA0CfhrL,MAAM6H,WAAW7H,MAAMmpB,QAAS,CAC5B0jK,eA1BY,SAAUtmL,GAGtB,YAFgB,IAAZA,IAAsBA,EAAU,IAE7B,CACPumL,aApSoC,CACpC/d,OAAQ,CACJ34E,KAAMg0F,GAEV5Z,MAAOA,IACPpzH,MAAO,CACHg5C,KAAMi0F,EACNryI,OAAQ,IA8RZ+0I,aAAc,CACVpa,eAAgB,CACZhnK,SAAS,IAGjBwV,UAAW,CACP6rE,KAAM,CACFhhF,OAAQ,GACRgsC,OAAQ,CACJv0B,IAAK,MAIjBwnK,eAAgBA,EAAe1kL,GAC/B62C,MAjC6B,CAC7Bg5C,KAAMi0F,GAiCN2C,SA9BgC,CAChC52F,KAAMg0F,GA8BN6C,OA3B8B,CAC9Ble,OAAQ,CACJ34E,KAAMg0F,QA5Td,GA+VA,SAAUpoL,GACN,IAAIg7B,EA2OJh9B,MAAMmpB,QAAQ+jK,UAxNd,SAAmBl8J,GACf,IAAKA,GAASgM,EACV,OAAOA,EAGX,IAyLQmR,EACAg/I,EA1LJC,EAAQ,CAAEnf,MAAOjuK,MAAMmpB,QAAQ0jK,kBAC/BQ,EAAOrrL,EACP,6wCAvBR,WASI,IARA,IAAIkN,EACA,qNAOKtI,EAAI,EAAGA,EAXA,GAWmBA,IAC/BsI,GAAY,8BAAgCtI,EAAI,GAAK,WAGzD,OAAOsI,EAwCIo+K,GA9BP,oGAkCU9gL,OAAOggC,SAAS/9B,SAAS6O,MAEvC,SAASiwK,EAAS38K,EAAK48K,GACnB3+J,EAAIje,EAAK68K,EAAWD,EAAS,oBAGjC,SAASC,EAAWD,EAASh/J,GACzB,OAAO6+J,EAAKj4J,KAAK,WAAao4J,GAASvhL,IAAIuiB,GAG/C,SAASK,EAAI4f,EAAM1mC,GAKf,IAJA,IAAImuD,EAAQk3H,EACR/9K,EAAQo/B,EAAKxkC,MAAM,KACnB2G,EAAMvB,EAAM6F,QAET7F,EAAMxI,OAAS,GAClBqvD,EAAQA,EAAMtlD,GAAOslD,EAAMtlD,IAAQ,GACnCA,EAAMvB,EAAM6F,QAGhBghD,EAAMtlD,GAAO7I,EAGjB,SAAS2lL,EAAmBC,EAAa7oK,GACrC,IAAI8oK,EAAkBxlL,WAAWqlL,EAAW3oK,EAAU,aACjD3c,MAAMylL,IAAoBA,EAAkB,GAC7CD,EAAYhtL,SAAQ,SAASoE,GACzB8pB,EAAI,wBAA0B9pB,EAAO,6BAA8B6oL,MAiJ/E,OA5IA,WACIL,EAAS,qCAAsC,8BAC/CA,EAAS,kCAAmC,qBAC5CA,EAAS,gCAAiC,qBAC1CA,EAAS,0CAA2C,qBACpDA,EAAS,0CAA2C,qBACpDA,EAAS,2CAA4C,0BACrDA,EAAS,6CAA8C,sBACvDA,EAAS,sCAAuC,qBAChDA,EAAS,iCAAkC,qBAC3CA,EAAS,6BAA8B,cACvCA,EAAS,0CAA2C,kBACpDA,EAAS,2CAA4C,kBACrDA,EAAS,4BAA6B,qBACtCA,EAAS,yCAA0C,qBACnDA,EAAS,0CAA2C,QACpDA,EAAS,4CAA6C,QACtDA,EAAS,8CAA+C,WACxDA,EAAS,2CAA4C,WACrDA,EAAS,6CAA8C,qBACvDA,EAAS,8CAA+C,qBACxDA,EAAS,uCAAwC,+BACjDA,EAAS,sDAAuD,qBAChEA,EAAS,yCAA0C,qBACnDA,EAAS,yCAA0C,cACnDA,EAAS,oCAAqC,qBAC9CA,EAAS,6CAA8C,0BACvDA,EAAS,+CAAgD,sBACzDA,EAAS,wCAAyC,qBAClDA,EAAS,iDAAkD,qBAC3DA,EAAS,kDAAmD,QAC5DA,EAAS,oDAAqD,QAC9DA,EAAS,sDAAuD,WAChEA,EAAS,mDAAoD,WAC7DA,EAAS,4CAA6C,qBACtDA,EAAS,oBAAqB,qBAC9BA,EAAS,uBAAwB,qBAEjCA,EAAS,mCAAoC,WAC7CA,EAAS,sCAAuC,oBAChDA,EAAS,qDAAsD,qBAC/DA,EAAS,uDAAwD,oBACjEA,EAAS,2DAA4D,oBACrEA,EAAS,6DAA8D,qBACvEA,EAAS,+CAAgD,qBACzDA,EAAS,6CAA8C,qBACvDA,EAAS,qDAAsD,qBAC/DA,EAAS,mDAAoD,qBAC7DA,EAAS,kCAAmC,qBAC5CA,EAAS,0CAA2C,qBACpDA,EAAS,2CAA4C,qBACrDA,EAAS,0DAA2D,oBACpEA,EAAS,4DAA6D,qBACtEA,EAAS,oDAAqD,qBAE9DA,EAAS,sBAAuB,iBAChCA,EAAS,2BAA4B,qBACrCA,EAAS,+BAAgC,qBACzCA,EAAS,+BAAgC,qBACzCA,EAAS,yBAA0B,qBACnCA,EAAS,oCAAqC,eAE9C,IAAIt3J,EAAU7tB,WAAWqlL,EAAW,qBAAsB,YACrDtlL,MAAM8tB,KACPpH,EAAI,oCAAqCoH,GACzCpH,EAAI,yCAA0CoH,GAC9CpH,EAAI,4CAA6CoH,GACjDpH,EAAI,sCAAuCoH,IAG/Cy3J,EAAmB,CAAC,OAAQ,gBAAiB,+BAC7CA,EAAmB,CAAC,OAAQ,gBAAiB,+BAvEjD,GA2EI7+J,EAAI,qDAAsD,GAC1DA,EAAI,sDAAuD,GAG/D,WACI,SAASunE,EAAKo3F,GACV,OAAOC,EAAWD,EAAS,cAAgB,IACpCC,EAAWD,EAAS,YAAc,IAClCC,EAAWD,EAAS,cAG/B,IAAIK,EAAcz3F,EAAK,cACnB03F,EAAY13F,EAAK,oBACjB23F,EAAgB33F,EAAK,yBACrB43F,EAAY53F,EAAK,oBAErBvnE,EAAI,iCAAkCm/J,GACtCn/J,EAAI,sCAAuCg/J,GAC3Ch/J,EAAI,gCAAiCg/J,GACrCh/J,EAAI,2BAA4Bg/J,GAChCh/J,EAAI,mCAAoCm/J,GACxCn/J,EAAI,wCAAyCg/J,GAC7Ch/J,EAAI,mBAAoBi/J,GACxBj/J,EAAI,sBAAuBk/J,GAC3Bl/J,EAAI,gCAAiCk/J,GApBzC,GAsCQ5/I,EAASnsC,EAAE,sBAAsBgxD,UACjCm6H,EAAanrL,EAAE,wBAAwBiK,IAAI,mBAe/C4iB,EAAI,qBAdesf,EAAO6U,QACxB,SAASnZ,EAAK3d,GACZ,IAAIwnE,EAdR,SAAmBjyF,GACf,IAAIyuH,EAAQzuH,EAAK+N,MAAM,mBACvB,GAAc,OAAV0gH,EACA,OAAiBA,EAAM,GANbv4G,cAAchH,WAAW,GAAK,IAAIA,WAAW,GAS3D,IAAI42I,EAAM9lJ,EAAKwI,MAAM,aAAa,GAClC,OAAOqO,SAASivI,EAAK,IAAM,EAOjB0mC,CAAU/hK,EAAGH,WACnB0iG,EAAQzsH,EAAEkqB,GAAIjgB,IAAI,mBAMtB,OAJIwiH,IAAU0+D,IACVtjJ,EAAI6pD,GAAO+6B,GAGR5kF,IAET,KAMNwjJ,EAAKj3J,SAEL4G,EAAQowJ,EAEDA,GAzOf,CA6OGjtL,OAAOH,MAAM+G,QAEhB,SAAU/E,GAGN,IA4tHQksL,EAEAC,EA9tHJnuL,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMmpB,QAAQH,GACnBnhB,EAAa7H,EAAM6H,WAGnBg1J,EAAQ,OAGRe,EAAQ,OAERivB,EAAiB7sL,EAAMmpB,QAAQ0jK,eAAe,CAC9CxkB,WAAW,IAGX+lB,EAAiB,CACjBp/I,MAAO,CACH+/H,OAAQ,CACJ34E,KAVC,qCAeTi4F,EAAmB,CACnBC,cAAe,CACXC,MAAO,CACHt4J,QAAS,IAEbinG,OAAQ,CACJ7wH,MAAO,IAGfuhD,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLniL,MAAO,EACPL,OAAQ,KAIpByiL,WAAY,CACRvxD,OAAQ,CACJ7wH,MAAO,EACPgvI,SAAU,QAGlBqzC,mBAAoB,CAChBxxD,OAAQ,CACJ7wH,MAAO,GAEX+4B,UAAW,CACPopJ,QAAS,CACLniL,MAAO,EACPL,OAAQ,IAGhB4hD,SAAU,CACN+gI,MAAO,CAAC,OAAQ,aAKxBh3J,EAAS3O,EAAG2O,OACZi3J,EAAgB5lK,EAAG4lK,cAAgB,SAASC,EAAWtoL,GACnD,IAAIqP,EAAS,GAEbA,EAAOq4J,MAAQpmK,EAAW,GAAIglL,EAAgBtmL,EAAQ0nK,OACtDr4J,EAAOk5K,MAAQjnL,EAAW,GAAIumL,EAAgB7nL,EAAQuoL,OACtDl5K,EAAOm5K,QAAUlnL,EAAW,GAAIwmL,EAAkB9nL,EAAQwoL,SAC1Dn5K,EAAOo5K,QAAUnnL,EAAW,GAAItB,EAAQyoL,SAGxC,IAAI/uL,EAAW2V,EAAOq4J,MAAMgd,eAC5BhrL,EAAS0sL,aAAe9kL,EAAW,GAAI5H,EAAS8sK,MAChD9sK,EAASusL,aAAe3kL,EAAW,GAAI5H,EAASirL,MAChDjrL,EAASmrL,UAAYvjL,EAAW,GAAI5H,EAASirL,MAC7CjrL,EAASorL,kBAAoBxjL,EAAW,GAAI5H,EAASmrL,WACrDnrL,EAASwsL,gBAAkB5kL,EAAW,GAAI5H,EAASsrL,SACnDtrL,EAASksL,UAAYtkL,EAAW,GAAI5H,EAASgsL,WAC7ChsL,EAASmsL,UAAYvkL,EAAW,GAAI5H,EAASisL,WAE7Cv0J,EAAOk3J,GAAaj5K,GA+qH5B,SAASq5K,EAAKC,EAAMC,GAChB,OAAOntL,EAAE2X,IAAIu1K,GAAM,SAAS7gJ,EAAMj2B,GAC9B,MAAO,CACH,CAACi2B,EAAM8gJ,EAAK/2K,QA/qHxBw2K,EAAc,QAAS,CACnB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAOmvC,GAEXovB,SAAU,CACNv+D,MAAOmvC,GAEXqvB,OAAQ,CACJle,OAAQ,CACJtgD,MAAOmvC,GAEXwxB,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAOmvC,GAEXyxB,UAAW,CACP5gE,MAAOmvC,GAEX4S,MAAO,CACH75E,KAAM,CACF26D,WAAY,UACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAOmvC,GAEXmP,KAAM,CACFt+C,MAAO,YAGfm9D,IAAK,CACDrlB,QAAS,CACLjkB,SAAU,eAGlBupC,MAAO,CACHtlB,QAAS,CACLjkB,SAAU,eAGlByqB,KAAM,CACFoe,QAAS,CACL75B,WAAY,YAGpBg+B,QAAS,CACLnE,QAAS,CACL75B,WAAY,YAGpBi7B,YAAa,CACTpB,QAAS,CACL75B,WAAY,YAGpBs7B,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGfg9D,YAAa,CACTd,UAAW,OACX5d,KAAM,CACFt+C,MAAOmvC,GAEXkJ,OAAQ,CACJ4jB,YAAa,IACbz0J,QAAS,GAEb2vI,UAAW,CACPkB,OAAQ,CACJr4C,MAAOmvC,EACP3nI,QAAS,MAIrB+1J,KAAM,CACFjf,KAAM,CACFt+C,MAAOmvC,KAInB2xB,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAOmvC,GAEX+U,eAAgB,CACZlkD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAOmvC,GAEX6xB,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,UACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAOmvC,GAEXmP,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UACvB3gB,OAAQ,CACJtgD,MAAOmvC,GAEXsR,WAAY,CACRzgD,MAAOmvC,GAEXwR,WAAY,CACR3gD,MAAOmvC,GAEXmP,KAAM,CACFt+C,MAAOmvC,KAInBmxB,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAOmvC,IAGfhwG,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAOmvC,MAKvBxtH,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAOmvC,GAEXtrI,KAAM,CACFm8F,MAAOmvC,MAKvB6wB,WAAY,CACRvxD,OAAQ,CACJzO,MAAOmvC,IAGf8wB,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAOmvC,GAEXh4G,QAAS,CACL6oE,MAAOmvC,GAEXx4H,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,eAM3BugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAIxBwgJ,EAAc,WAAY,CACtB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAOouC,EACPvL,WAAYsM,EACZ3nI,QAAS,IAEbo5J,UAAW,CACP5gE,MAAO,WAEXg9D,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,YAGfm+D,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGf+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInB+gE,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,YAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,WAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,eAM3BugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,eAAgB,CAC1B3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,WAEX4gE,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfm9D,IAAK,CACDrlB,QAAS,CACLjkB,SAAU,eAGlBupC,MAAO,CACHtlB,QAAS,CACLjkB,SAAU,eAGlByqB,KAAM,CACFoe,QAAS,CACL75B,WAAY,YAGpBg+B,QAAS,CACLnE,QAAS,CACL75B,WAAY,YAGpBi7B,YAAa,CACTpB,QAAS,CACL75B,WAAY,YAGpB45B,KAAM,CACFj1J,QAAS,IAEb22J,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGfg9D,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,WAEXq4C,OAAQ,CACJ4jB,YAAa,IACbz0J,QAAS,GAEb2vI,UAAW,CACPkB,OAAQ,CACJr4C,MAAO,UACPx4F,QAAS,KAIrB+1J,KAAM,CACFjf,KAAM,CACFt+C,MAAO,aAInB8gE,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,KAInBh4G,QAAS,CACL6oE,MAAOmvC,IAGfhwG,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAOmvC,MAKvBxtH,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAOmvC,GAEXtrI,KAAM,CACFm8F,MAAOmvC,MAKvB6wB,WAAY,CACRvxD,OAAQ,CACJzO,MAAOmvC,IAGf8wB,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAOmvC,GAEXh4G,QAAS,CACL6oE,MAAOmvC,GAEXx4H,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,OAM3BoxB,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,UAAW,CACrB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAOouC,EACPvL,WAAYsM,EACZ3nI,QAAS,IAEbo5J,UAAW,CACP5gE,MAAO,WAEXg9D,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,YAGfm+D,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGf+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInB+gE,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,YAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,WAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,eAM3BugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,SAAU,CACpB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,UACP6iC,WAAY,UACZr7H,QAAS,IAEbo5J,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfs+C,KAAM,CACFoe,QAAS,CACL75B,WAAY,YAGpBg+B,QAAS,CACLnE,QAAS,CACL75B,WAAY,YAGpBi7B,YAAa,CACTpB,QAAS,CACL75B,WAAY,YAGpBs6B,IAAK,CACDiE,WAAY,CACRphE,MAAO,YAGfo9D,MAAO,CACHgE,WAAY,CACRphE,MAAO,YAGfm+D,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGfg9D,YAAa,CACTd,UAAW,YAGnB4E,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,YAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,WAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,eAM3BugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,QAAS,CACnB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAOouC,GAEXwyB,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfg9D,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,YAGfm+D,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGf83C,QAAS,CACLjkB,SAAU,QAEdwkB,OAAQ,CACJ4jB,YAAa,IAGrB8E,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClH1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,QAEXygD,WAAY,CACRzgD,MAAO,QAEX2gD,WAAY,CACR3gD,MAAO,QAEXs+C,KAAM,CACFt+C,MAAO,UAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOouC,GAEX3/B,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAOouC,KAInBj3G,QAAS,CACL6oE,MAAO,SAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,QAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,eAM3BugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,aAAc,CACxB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZnkB,OAAQ,CACJ4jB,YAAa,GAEjB3b,OAAQ,CACJtgD,MAAO,WAEX4gE,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfs+C,KAAM,CACFoe,QAAS,CACL75B,WAAY,YAGpBk6B,OAAQ,CACJv1J,QAAS,IAEbq5J,QAAS,CACLnE,QAAS,CACL75B,WAAY,YAGpBi7B,YAAa,CACTpB,QAAS,CACL75B,WAAY,YAGpBm6B,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,YAGfm+D,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGf83C,QAAS,CACLjkB,SAAU,SAGlBitC,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClH1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,KAInBh4G,QAAS,CACL6oE,MAAOmvC,IAGfhwG,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAOmvC,GAEXtrI,KAAM,CACFm8F,MAAOmvC,MAKvB6wB,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAOmvC,GAEXh4G,QAAS,CACL6oE,MAAOmvC,GAEXx4H,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,OAM3BoxB,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,YAAa,CACvB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,WAEX4gE,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfm9D,IAAK,CACDrlB,QAAS,CACLjkB,SAAU,eAGlBupC,MAAO,CACHtlB,QAAS,CACLjkB,SAAU,eAGlByqB,KAAM,CACFoe,QAAS,CACL75B,WAAY,YAGpBk6B,OAAQ,CACJv1J,QAAS,IAEbq5J,QAAS,CACLnE,QAAS,CACL75B,WAAY,YAGpBi7B,YAAa,CACTpB,QAAS,CACL75B,WAAY,YAGpB45B,KAAM,CACFj1J,QAAS,IAEbw1J,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,WAEXq4C,OAAQ,CACJ4jB,YAAa,IACbz0J,QAAS,GAEb2vI,UAAW,CACPkB,OAAQ,CACJr4C,MAAOmvC,EACP3nI,QAAS,MAIrB22J,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGfu9D,KAAM,CACFjf,KAAM,CACFt+C,MAAO,aAInB8gE,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAOmvC,GAEXsR,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,KAInBh4G,QAAS,CACL6oE,MAAOmvC,IAGfhwG,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAOmvC,MAKvBxtH,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAOmvC,GAEXtrI,KAAM,CACFm8F,MAAOmvC,MAKvB6wB,WAAY,CACRvxD,OAAQ,CACJzO,MAAOmvC,IAGf8wB,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAOmvC,GAEXh4G,QAAS,CACL6oE,MAAOmvC,GAEXx4H,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,OAM3BoxB,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,UAAW,CACrB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,WAEX4gE,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfm9D,IAAK,CACDrlB,QAAS,CACLjkB,SAAU,eAGlBupC,MAAO,CACHtlB,QAAS,CACLjkB,SAAU,eAGlByqB,KAAM,CACFoe,QAAS,CACL75B,WAAY,YAGpBk6B,OAAQ,CACJv1J,QAAS,IAEbq5J,QAAS,CACLnE,QAAS,CACL75B,WAAY,YAGpBi7B,YAAa,CACTpB,QAAS,CACL75B,WAAY,YAGpB45B,KAAM,CACFj1J,QAAS,IAEbw1J,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,WAEXq4C,OAAQ,CACJ4jB,YAAa,IACbz0J,QAAS,GAEb2vI,UAAW,CACPkB,OAAQ,CACJr4C,MAAO,UACPx4F,QAAS,MAIrB22J,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGfu9D,KAAM,CACFjf,KAAM,CACFt+C,MAAO,aAInB8gE,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,YAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,WAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,eAM3BugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,YAAa,CACvB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,WAEX83C,QAAS,CACLjkB,SAAU,QAEd+sC,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,UACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfm9D,IAAK,CACDrlB,QAAS,CACLjkB,SAAU,SAGlBupC,MAAO,CACHtlB,QAAS,CACLjkB,SAAU,SAGlByqB,KAAM,CACFoe,QAAS,CACL75B,WAAY,YAGpBk6B,OAAQ,CACJv1J,QAAS,IAEbq5J,QAAS,CACLnE,QAAS,CACL75B,WAAY,YAGpBi7B,YAAa,CACTpB,QAAS,CACL75B,WAAY,YAGpB45B,KAAM,CACFj1J,QAAS,IAEbw1J,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,WAEXq4C,OAAQ,CACJ4jB,YAAa,IACbz0J,QAAS,GAEb2vI,UAAW,CACPkB,OAAQ,CACJr4C,MAAO,UACPx4F,QAAS,MAIrB22J,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGfu9D,KAAM,CACFjf,KAAM,CACFt+C,MAAO,aAInB8gE,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,UACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UACvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,YAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,WAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,YAGfyO,OAAQ,CACJzO,MAAO,cAKvBugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,OAAQ,CACd3gB,MAAO,CACP7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,WAEX4gE,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfg9D,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,YAGfy8D,KAAM,CACFj1J,QAAS,IAEb22J,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGf83C,QAAS,CACLjkB,SAAU,QAEdwkB,OAAQ,CACJ4jB,YAAa,IAGrB8E,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WACjF1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,YAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,WAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,YAGfyO,OAAQ,CACJzO,MAAO,cAKvBugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAMvBwgJ,EAAc,WAAY,CACxB3gB,MAAO,CACF7wH,MAAO,CACHqxE,MAAO,WAEXu+D,SAAU,CACNv+D,MAAO,WAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,WAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,WAEX4gE,UAAW,CACP5gE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,YAGfg9D,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,YAGfy8D,KAAM,CACFj1J,QAAS,IAEb22J,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGf83C,QAAS,CACLjkB,SAAU,QAEdwkB,OAAQ,CACJ4jB,YAAa,IAGrB8E,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,WAEXikD,eAAgB,CACZjkD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,WAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,WAEXygD,WAAY,CACRzgD,MAAO,WAEX2gD,WAAY,CACR3gD,MAAO,WAEXs+C,KAAM,CACFt+C,MAAO,aAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,YAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,WAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,cAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,WAEXn8F,KAAM,CACFm8F,MAAO,cAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,YAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,WAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,YAGfyO,OAAQ,CACJzO,MAAO,cAKvBugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxBwgJ,EAAc,gBAAiB,CAC5B3gB,MAAO,CACF7wH,MAAO,CACHqxE,MAAO,QAEXu+D,SAAU,CACNv+D,MAAO,QAEXw+D,OAAQ,CACJle,OAAQ,CACJtgD,MAAO,QAEX2gE,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,aAInBw8D,eAAgB,CACZlc,OAAQ,CACJtgD,MAAO,QAEX4gE,UAAW,CACP5gE,MAAO,QAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,QAEXs+C,KAAM,CACFt+C,MAAO,YAGfg9D,YAAa,CACTd,UAAW,UACX5d,KAAM,CACFt+C,MAAO,YAGfy8D,KAAM,CACFj1J,QAAS,IAEb22J,UAAW,CACP7f,KAAM,CACFt+C,MAAO,YAGfs9D,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAO,YAGf83C,QAAS,CACLjkB,SAAU,QAEdwkB,OAAQ,CACJ4jB,YAAa,IAGrB6E,UAAW,CACPj+B,WAAY,WAEhBk+B,aAAc,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACtE1C,aAAc,CACV/f,KAAM,CACFt+C,MAAO,WAEXsgD,OAAQ,CACJtgD,MAAO,QAEXikD,eAAgB,CACZjkD,MAAO,WAEXkkD,eAAgB,CACZlkD,MAAO,WAEXrxE,MAAO,CACHqxE,MAAO,QAEXghE,UAAW,CACPhhE,MAAO,WAEX+hD,MAAO,CACH75E,KAAM,CACF26D,WAAY,cACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,QAEXs+C,KAAM,CACFt+C,MAAO,cAKvBqgE,MAAO,CACH7yG,QAAS,CACLwyC,MAAO,WAEXz/E,MAAO,CACH0gJ,sBAAuB,UAEvB3gB,OAAQ,CACJtgD,MAAO,QAEXygD,WAAY,CACRzgD,MAAO,QAEX2gD,WAAY,CACR3gD,MAAO,QAEXs+C,KAAM,CACFt+C,MAAO,UAInBsgE,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAO,WAEXkhE,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAOmvC,GAEX2wB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,aAInB7oE,QAAS,CACL6oE,MAAO,SAGf7gE,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,QAEX8/D,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,QAEXyO,OAAQ,CACJzO,MAAO,WAKvBr+E,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAO,QAEXn8F,KAAM,CACFm8F,MAAO,WAKvBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,SAGfigE,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAO,WAEX7oE,QAAS,CACL6oE,MAAO,QAEXrpF,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOmvC,GAEX1gC,OAAQ,CACJzO,MAAO,SAGfyO,OAAQ,CACJzO,MAAO,WAKvBugE,QAAS,CACL5gJ,OAAQ,CACJ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,UAAW,eAKxB,WACI,IAAI8/I,EAAO,UACP4B,EAAW,UACXC,EAAiB,UACjBC,EAAO,UAEP7B,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAEjE8B,EAAU9B,EAAO,GACjB+B,EAAgBtyB,EAEpB,SAASuyB,IACL,MAAO,CACHx5F,KAAM,CACF26D,WAAY,UACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAOuhE,IAKnBpB,EAAc,QAAS,CACnB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAOy/D,GAEXlB,SAAU,CACNv+D,MAAOy/D,GAEXjB,OAAQ,CACJle,OAAQ,CACJtgD,MAAOy/D,GAEXkB,cAAe,CACXrgB,OAAQ,CACJtgD,MAAOqhE,GAEX3E,QAAS,CACL18D,MAAOqhE,KAInB7E,eAAgB,CACZlc,OAAQ,CACJtgD,MAAOy/D,GAEXmB,UAAW,CACP5gE,MAAOy/D,GAEX1d,MAAO2f,IACP1E,YAAa,CACTd,UAAWqF,EACXjjB,KAAM,CACFt+C,MAAOshE,IAGf7E,KAAM,CACFj1J,QAAS,IAEb22J,UAAW,CACP7f,KAAM,CACFt+C,MAAOuhE,IAGfjE,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAOuhE,IAGfzpB,QAAS,CACLjkB,SAAU,QAEdwkB,OAAQ,CACJ4jB,YAAa,IAGrB8E,aAAcrB,EACdrB,aAAc,CACV/f,KAAM,CACFt+C,MAAOuhE,GAEXjhB,OAAQ,CACJtgD,MAAOy/D,GAEXxb,eAAgB,CACZjkD,MAvFC,WAyFLkkD,eAAgB,CACZlkD,MAAOuhE,GAEX5yI,MAAO,CACHqxE,MAAOy/D,GAEXuB,UAAW,CACPhhE,MAAOqhE,GAEXtf,MAAO2f,MAGfrB,MAAO,CACH7yG,QAAS,CACLwyC,MAAOwhE,GAEXjhJ,MAAO,CACH0gJ,sBAAuBM,EACvBjhB,OAAQ,CACJtgD,MAAOy/D,GAEXhf,WAAY,CACRzgD,MAAOy/D,GAEX9e,WAAY,CACR3gD,MAAOy/D,GAEXnhB,KAAM,CACFt+C,MAAOy/D,KAInBa,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAOwhE,GAEXN,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOy/D,GAEXhxD,OAAQ,CACJzO,MAAOyhE,GAEX3B,MAAO,CACHj8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOy/D,KAInBtoI,QAAS,CACL6oE,MAAOy/D,IAGftgI,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOshE,GAEXxB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOshE,GAEX7yD,OAAQ,CACJzO,MAAOshE,MAKvB3/I,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAOshE,GAEXz9J,KAAM,CACFm8F,MAAOshE,MAKvBtB,WAAY,CACRvxD,OAAQ,CACJzO,MAAOshE,IAGfrB,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAOshE,GAEXnqI,QAAS,CACL6oE,MAAOshE,GAEX3qJ,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOshE,IAGf7yD,OAAQ,CACJzO,MAAOshE,MAKvBf,QAAS,CACL5gJ,OAAQ6gJ,EAAKd,EA1MF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,eAP/E,GAsNA,WACI,IAAID,EAAO,UACP4B,EAAW,UACXC,EAAiB,UACjBC,EAAO,UAEP7B,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAEjE8B,EAAU9B,EAAO,GACjB+B,EAAgBtyB,EAEpB,SAASuyB,IACL,MAAO,CACHx5F,KAAM,CACF26D,WAAY,UACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAOuhE,IAKnBpB,EAAc,YAAa,CACvB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAOy/D,GAEXlB,SAAU,CACNv+D,MAAOy/D,GAEXjB,OAAQ,CACJle,OAAQ,CACJtgD,MAAOy/D,GAEXkB,cAAe,CACXrgB,OAAQ,CACJtgD,MAAOqhE,GAEX3E,QAAS,CACL18D,MAAOqhE,KAInB7E,eAAgB,CACZlc,OAAQ,CACJtgD,MAAOy/D,GAEXmB,UAAW,CACP5gE,MAAOy/D,GAEX1d,MAAO2f,IACP1E,YAAa,CACTd,UAAWqF,EACXjjB,KAAM,CACFt+C,MAAOshE,IAGf7E,KAAM,CACFj1J,QAAS,IAEb22J,UAAW,CACP7f,KAAM,CACFt+C,MAAOuhE,IAGfjE,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAOuhE,IAGfzpB,QAAS,CACLjkB,SAAU,QAEdwkB,OAAQ,CACJ4jB,YAAa,IAGrB8E,aAAcrB,EACdrB,aAAc,CACV/f,KAAM,CACFt+C,MAAOuhE,GAEXjhB,OAAQ,CACJtgD,MAAOy/D,GAEXxb,eAAgB,CACZjkD,MAvFC,WAyFLkkD,eAAgB,CACZlkD,MAAOuhE,GAEX5yI,MAAO,CACHqxE,MAAOy/D,GAEXuB,UAAW,CACPhhE,MAAOqhE,GAEXtf,MAAO2f,MAGfrB,MAAO,CACH7yG,QAAS,CACLwyC,MAAOwhE,GAEXjhJ,MAAO,CACH0gJ,sBAAuBM,EACvBjhB,OAAQ,CACJtgD,MAAOy/D,GAEXhf,WAAY,CACRzgD,MAAOy/D,GAEX9e,WAAY,CACR3gD,MAAOy/D,GAEXnhB,KAAM,CACFt+C,MAAOy/D,KAInBa,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAOwhE,GAEXN,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOy/D,GAEXhxD,OAAQ,CACJzO,MAAOyhE,GAEX3B,MAAO,CACHj8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOy/D,KAInBtoI,QAAS,CACL6oE,MAAOy/D,IAGftgI,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOshE,GAEXxB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOshE,GAEX7yD,OAAQ,CACJzO,MAAOshE,MAKvB3/I,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAOshE,GAEXz9J,KAAM,CACFm8F,MAAOshE,MAKvBtB,WAAY,CACRvxD,OAAQ,CACJzO,MAAOshE,IAGfrB,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAOshE,GAEXnqI,QAAS,CACL6oE,MAAOshE,GAEX3qJ,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOshE,IAGf7yD,OAAQ,CACJzO,MAAOshE,MAKvBf,QAAS,CACL5gJ,OAAQ6gJ,EAAKd,EA1MF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,eAP/E,GAsNI,WACA,IAAID,EAAO,UACP4B,EAAW,UACXC,EAAiB,UACjBC,EAAO,UAEP7B,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAEjE8B,EAAU9B,EAAO,GACjB+B,EAAgBtyB,EAEpB,SAASuyB,IACL,MAAO,CACHx5F,KAAM,CACF26D,WAAY,UACZwV,OAAQ,CACJr4C,MAAO,YAGfv7F,MAAO,CACHu7F,MAAO,WAEXs+C,KAAM,CACFt+C,MAAOuhE,IAKnBpB,EAAc,OAAQ,CAClB3gB,MAAO,CACH7wH,MAAO,CACHqxE,MAAOy/D,GAEXlB,SAAU,CACNv+D,MAAOy/D,GAEXjB,OAAQ,CACJle,OAAQ,CACJtgD,MAAOy/D,GAEXkB,cAAe,CACXrgB,OAAQ,CACJtgD,MAAOqhE,GAEX3E,QAAS,CACL18D,MAAOqhE,KAInB7E,eAAgB,CACZlc,OAAQ,CACJtgD,MAAOy/D,GAEXmB,UAAW,CACP5gE,MAAOy/D,GAEX1d,MAAO2f,IACP1E,YAAa,CACTd,UAAWqF,EACXjjB,KAAM,CACFt+C,MAAOshE,IAGf7E,KAAM,CACFj1J,QAAS,IAEb22J,UAAW,CACP7f,KAAM,CACFt+C,MAAOuhE,IAGfjE,oBAAqB,CACjBhf,KAAM,CACFt+C,MAAOuhE,IAGfzpB,QAAS,CACLjkB,SAAU,QAEdwkB,OAAQ,CACJ4jB,YAAa,IAGrB8E,aAAcrB,EACdrB,aAAc,CACV/f,KAAM,CACFt+C,MAAOuhE,GAEXjhB,OAAQ,CACJtgD,MAAOy/D,GAEXxb,eAAgB,CACZjkD,MAvFC,WAyFLkkD,eAAgB,CACZlkD,MAAOuhE,GAEX5yI,MAAO,CACHqxE,MAAOy/D,GAEXuB,UAAW,CACPhhE,MAAOy/D,GAEX1d,MAAO2f,MAGfrB,MAAO,CACH7yG,QAAS,CACLwyC,MAAOwhE,GAEXjhJ,MAAO,CACH0gJ,sBAAuBM,EACvBjhB,OAAQ,CACJtgD,MAAOy/D,GAEXhf,WAAY,CACRzgD,MAAOy/D,GAEX9e,WAAY,CACR3gD,MAAOy/D,GAEXnhB,KAAM,CACFt+C,MAAOy/D,KAInBa,QAAS,CACLT,cAAe,CACXh8J,KAAM,CACFm8F,MAAOwhE,GAEXN,kBAAmB,CACfr9J,KAAM,CACFm8F,MAAOy/D,GAEXhxD,OAAQ,CACJzO,MAAOyhE,GAEX3B,MAAO,CACHj8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOy/D,KAInBtoI,QAAS,CACL6oE,MAAOy/D,IAGftgI,SAAU,CACNhlC,OAAQ,CACJ4lK,QAAS,CACLl8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOshE,GAEXxB,MAAO,CACHj8J,KAAM,CACFm8F,MAAOshE,GAEX7yD,OAAQ,CACJzO,MAAOshE,MAKvB3/I,OAAQ,CACJw/I,MAAO,CACH1yD,OAAQ,CACJzO,MAAOshE,GAEXz9J,KAAM,CACFm8F,MAAOshE,MAKvBtB,WAAY,CACRvxD,OAAQ,CACJzO,MAAOshE,IAGfrB,mBAAoB,CAChBxxD,OAAQ,CACJzO,MAAOshE,GAEXnqI,QAAS,CACL6oE,MAAOshE,GAEX3qJ,UAAW,CACPopJ,QAAS,CACLl8J,KAAM,CACFm8F,MAAOyhE,GAEXhzD,OAAQ,CACJzO,MAAOshE,IAGf7yD,OAAQ,CACJzO,MAAOshE,MAKvBf,QAAS,CACL5gJ,OAAQ6gJ,EAAKd,EA1MF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,eAP3E,GA0NAS,EAAc,aAAc,CACxB3gB,MAAO,GACP6gB,MAAO,GACPC,QAAS,GACTC,QAAS,CACL5gJ,OAAQ6gJ,EARH,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAClD,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,eAW3Et3J,EAAOy4J,KAAOz4J,EAAO,cAWrBi3J,EAAc,eAAgB,CAC1B3gB,MAAO,GACP6gB,MAAO,CACH7yG,QAAS,CACLwyC,OARR0/D,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,YAEhD,IAQbn/I,MAAO,CACH0gJ,sBAZD,qBAaC3gB,OAAQ,CACJtgD,MAfZy/D,EAAO,WAiBChf,WAAY,CACRzgD,MAAOy/D,GAEX9e,WAAY,CACR3gD,MAAOy/D,GAEXnhB,KAAM,CACFt+C,MAAOy/D,KAInBa,QAAS,GACTC,QAAS,CACL5gJ,OAAQ6gJ,EAAKd,EA3BF,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,eAluHnF,CA0wHGhuL,OAAOH,MAAM+G,QAUF/G,OASd,SAAUgC,GAGV7B,OAAOH,MAAMmpB,QAAUhpB,OAAOH,MAAMmpB,SAAW,GAC/C,IAAIA,EAAUnpB,MAAMmpB,QAChBliB,EAAQkiB,EAAQliB,MAChBktD,EAAWhrC,EAAQgrC,SACnBk8H,EAAmBlnK,EAAQ00I,UAC3BlpC,EAAY07D,EAAiB17D,UAC7B0oC,EAAYgzB,EAAiBhzB,UAC7BhwF,EAAQgjH,EAAiBhjH,MACzBgiB,EAASghG,EAAiBhhG,OAC1BC,EAAM+gG,EAAiB/gG,IACvBC,EAAS8gG,EAAiB9gG,OAC1BzlE,EAAOumK,EAAiBvmK,KACxB8zI,EAAQyyB,EAAiBzyB,MACzBd,EAASuzB,EAAiBvzB,OAC1Bp4J,EAAI2rL,EAAiB3rL,EACrB2P,EAAIg8K,EAAiBh8K,EACrB2V,EAAQqmK,EAAiBrmK,MACzB6yI,EAAQwzB,EAAiBxzB,MACzBG,EAAOqzB,EAAiBrzB,KACxBE,EAAoBmzB,EAAiBnzB,kBACrCP,EAAM0zB,EAAiB1zB,IACvBtoC,EAAUlrG,EAAQkrG,QAClBlmG,EAAShF,EAAQgF,OACjB7rB,EAAU6mB,EAAQ7mB,QAClB2hK,EAAe96I,EAAQ86I,aACvB5qC,EAAQlwG,EAAQkwG,MAChB2nC,EAAM73I,EAAQ63I,IACd5C,EAAmBj1I,EAAQi1I,iBAC3BsB,EAAoBv2I,EAAQu2I,kBAC5BhrI,EAAUvL,EAAQuL,QAClBnsB,EAAa4gB,EAAQ5gB,WACrBguH,EAAiBptG,EAAQotG,eACzBioC,EAAWr1I,EAAQq1I,SACnB32J,EAAashB,EAAQthB,WACrB25B,EAAOrY,EAAQqY,KACfq0F,EAAe1sG,EAAQ0sG,aACvBkpC,EAAc51I,EAAQ41I,YACtBsL,EAAUlhJ,EAAQkhJ,QAClBjD,EAAej+I,EAAQi+I,aACvBxI,EAAaz1I,EAAQy1I,WACrB2pB,EAAiBp/J,EAAQo/J,eACzBnvI,EAASjwB,EAAQiwB,OACjBnxC,EAAWkhB,EAAQlhB,SACnB2U,EAAYuM,EAAQvM,UACpB6hJ,EAAat1I,EAAQs1I,WACrB4a,EAAelwJ,EAAQkwJ,aACvB3S,EAAav9I,EAAQu9I,WACrB0E,EAAQjiJ,EAAQiiJ,MAChBh2J,EAAQ+T,EAAQ/T,MAChB2gH,EAAa5sG,EAAQ4sG,WACrBx4F,EAAOpU,EAAQoU,KACfq5F,EAAgBztG,EAAQytG,cACxBJ,EAAartG,EAAQqtG,WACrB83C,EAAWnlJ,EAAQmlJ,SACnBt3C,GAAe7tG,EAAQ6tG,aACvBp0H,GAAU5C,MAAM4C,QAChBwmB,GAAUppB,MAAMopB,QAChBuiH,GAAOviH,GAAQuiH,KACf5wF,GAAY3xB,GAAQ2xB,UACpBq4F,GAAmBhqH,GAAQgqH,iBAC3BvF,GAAQzkH,GAAQykH,MAChBtd,GAAQvwH,MAAMuwH,MACd0O,GAAWj/H,MAAMi/H,SACjBqxD,GAAgBrxD,GAAS5F,MACzBzmF,GAAYqsF,GAASrsF,UAErB29I,GAAYtpL,EAAM7E,OAAO,CACzBoF,KAAM,SAAS68B,GAEXhlC,KAAKmxL,MAAQnsJ,EACbhlC,KAAKkH,QAAU89B,EAAK99B,SAGxBwB,MAAO,SAAS2xH,GACZ,IAAIr1F,EAAOhlC,KAAKmxL,MAGhB,OAFYnsJ,EAAK+2I,YAAc/2I,EAAK+2I,YAAY1hD,GAASr1F,EAAK++I,SAAS1pD,IAK3E86C,KAAM,SAASh3I,EAAMC,EAAI42I,GAGrB,YAFc,IAAVA,IAAoBA,GAAQ,GAEzBh1K,KAAKmxL,MAAMhc,KAAKh3I,EAAMC,EAAI42I,IAGrCphH,MAAO,WACH,OAAO5zD,KAAKmxL,MAAMv9H,SAGtB2iH,WAAY,WACR,OAAOv2K,KAAKmxL,MAAM5a,gBAI1B,SAAS6a,GAAehvL,EAAMwwK,GAC1B,IAAK,IAAIhpK,EAAM,EAAGA,EAAMgpK,EAAKprK,OAAQoC,IACjC,GAAIgpK,EAAKhpK,GAAK1C,QAAQ9E,OAASA,EAE3B,OADAwwK,EAAKhpK,GAAKstK,qBACH,IAAIga,GAAUte,EAAKhpK,IAKtC,IAAIynL,GAAY1wL,MAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAASwlF,GACX3tF,KAAKk+I,OAASvwD,EAAKuwD,OACnBl+I,KAAKsxL,aAAe3jG,EAAK4jG,eAAerzC,OACxCl+I,KAAKwxL,MAAQ7jG,GAGjByjG,eAAgB,SAAShvL,GACrB,OAAOgvL,GAAehvL,EAAMpC,KAAKwxL,MAAM5e,SAI3C6e,GAAgB7pL,EAAM7E,OAAO,CAC7BoF,KAAM,SAASsqK,GAEXzyK,KAAK0xL,UAAYjf,EACjBzyK,KAAKk+I,OAASu0B,EAASv0B,OACvBl+I,KAAK2xL,iBAAmBlf,EAASmf,aAIzC,SAASC,GAAa/4K,GAIlB,IAHA,IAAItR,EAASsR,EAAOtR,OAChBsT,EAAQ,EAEHvT,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI2gJ,EAAMpvI,EAAOvR,GACbutD,EAASozF,IACTptI,IAIR,OAAOA,EAGX,IAAIg3K,GAAa,CACb37K,IAAK,SAAS2C,GAIV,IAHA,IAAItR,EAASsR,EAAOtR,OAChB2O,EAAMm/G,EAED/tH,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQoQ,EAAOvR,GACfutD,EAASpsD,KACTyN,EAAM9S,KAAK8S,IAAIA,EAAKzN,IAI5B,OAAOyN,IAAQm/G,EAAYx8G,EAAO,GAAK3C,GAG3CyC,IAAK,SAASE,GAIV,IAHA,IAAItR,EAASsR,EAAOtR,OAChBoR,EAAMolJ,EAEDz2J,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQoQ,EAAOvR,GACfutD,EAASpsD,KACTkQ,EAAMvV,KAAKuV,IAAIA,EAAKlQ,IAI5B,OAAOkQ,IAAQolJ,EAAYllJ,EAAO,GAAKF,GAG3Ci8C,IAAK,SAAS/7C,GAIV,IAHA,IAAItR,EAASsR,EAAOtR,OAChBqtD,EAAM,EAEDttD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQoQ,EAAOvR,GACfutD,EAASpsD,KACTmsD,GAAOnsD,GAIf,OAAOmsD,GAGXk9H,UAAW,SAASj5K,GAChB,IAAIvC,EAAS,KAMb,OAJIs7K,GAAa/4K,KACbvC,EAASu7K,GAAWj9H,IAAI/7C,IAGrBvC,GAGXuE,MAAO,SAAShC,GAIZ,IAHA,IAAItR,EAASsR,EAAOtR,OAChBsT,EAAQ,EAEHvT,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQoQ,EAAOvR,GACL,OAAVmB,GAAkBssH,EAAQtsH,IAC1BoS,IAIR,OAAOA,GAGXk3K,IAAK,SAASl5K,GACV,IAAIgC,EAAQ+2K,GAAa/4K,GACrBvC,EAASuC,EAAO,GAMpB,OAJIgC,EAAQ,IACRvE,EAASu7K,GAAWj9H,IAAI/7C,GAAUgC,GAG/BvE,GAGXrM,MAAO,SAAS4O,GAGZ,IAFA,IAAItR,EAASsR,EAAOtR,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAImB,EAAQoQ,EAAOvR,GACnB,GAAc,OAAVmB,GAAkBssH,EAAQtsH,GAC1B,OAAOA,EAIf,OAAOoQ,EAAO,KAItB,SAASm5K,GAAShtK,EAAOitK,GACrB,OAAY,OAARA,EACOA,EAGDpjK,EAAO7J,GAAO,EACjBsK,CAAI2iK,GAGf,IAAIC,GAAevqL,EAAM7E,OAAO,CAC5BoF,KAAM,WAEFnI,KAAKoyL,aAAe,GACpBpyL,KAAKqyL,aAAe,GACpBryL,KAAKsyL,WAAa,GAClBtyL,KAAKuyL,gBAAkB,IAG3Bt7J,SAAU,SAASq3J,EAAakE,EAAaC,GACzC,IAAIthE,EAAWnxH,UACK,IAAhBwyL,IAA0BA,EAAc,CAAExkH,SAC1B,IAAhBykH,IAA0BA,EAAc,IAE5C,IAAK,IAAIlrL,EAAI,EAAGA,EAAI+mL,EAAY9mL,OAAQD,IAAK,CACzC,IAAI7B,EAAO4oL,EAAY/mL,GAEvB4pH,EAASihE,aAAa1sL,GAAQ8sL,EAC9BrhE,EAASkhE,aAAa3sL,GAAQ+sL,EAC9BthE,EAASmhE,WAAW5sL,GAAQyrH,EAASuhE,WAAWF,EAAa,MAC7DrhE,EAASohE,gBAAgB7sL,GAAQyrH,EAASuhE,WAAWF,OAAa12C,KAI1E62C,gBAAiB,SAAS7jJ,GACtB,OAAO9uC,KAAKwyL,YAAY1jJ,GAAQzxB,OAAOrd,KAAKyyL,YAAY3jJ,KAG5D0jJ,YAAa,SAAS1jJ,GAClB,OAAO9uC,KAAKoyL,aAAatjJ,EAAOppC,OAAS,CAAEsoE,IAG/CykH,YAAa,SAAS3jJ,GAClB,OAAO9uC,KAAKqyL,aAAavjJ,EAAOppC,OAAS,CAAEsoE,IAG/C4kH,UAAW,SAAS9jJ,EAAQ+jJ,EAAS7jJ,GACjC,IAKIpgB,EAAQlmB,EALRmF,EAAOihC,EAAOjhC,KACdm6J,EAAYhzC,EAAQhmF,GAAQA,EAAOnhC,EAAKglL,GACxCt8K,EAAS,CAAEi8K,YAAa,CAAE9pL,MAAOs/J,IACjCwqB,EAAcxyL,KAAKwyL,YAAY1jJ,GAC/B2jJ,EAAczyL,KAAKqyL,aAAavjJ,EAAOppC,MAG3C,GAAkB,OAAdsiK,EACAt/J,EAAQ1I,KAAKsyL,WAAWxjJ,EAAOppC,WAC5B,GAAKsvH,EAAQgzC,IAEb,GAAI9kK,MAAMD,QAAQ+kK,GAAY,CACjC,IAAI8qB,EAAY9qB,EAAUphK,MAAM4rL,EAAYhrL,QAC5CkB,EAAQ1I,KAAK+yL,eAAe/qB,EAAWwqB,GACvC5jK,EAAS5uB,KAAK+yL,eAAeD,EAAWL,QACrC,GAAyB,iBAAdzqB,EAAwB,CACtC,IAAIgrB,EAAiBhzL,KAAKizL,aAAankJ,EAAQ0jJ,GAC3CU,EAAiBlzL,KAAKizL,aAAankJ,EAAQ2jJ,GAE/C/pL,EAAQ1I,KAAKmzL,gBAAgBnrB,EAAWwqB,EAAaQ,GACrDpkK,EAAS5uB,KAAKmzL,gBAAgBnrB,EAAWyqB,EAAaS,SAVtDxqL,EAAQ1I,KAAKuyL,gBAAgBzjJ,EAAOppC,MAuBxC,OAVIsvH,EAAQtsH,KACmB,IAAvB8pL,EAAYhrL,OACZ+O,EAAOi8K,YAAY9pL,MAAQA,EAAM8pL,EAAY,IAE7Cj8K,EAAOi8K,YAAc9pL,GAI7B6N,EAAOqY,OAASA,GAAU,GAEnBrY,GAGXm8K,WAAY,SAAS9jK,EAAQwkK,GAIzB,IAHA,IAAI1qL,EAAQ,GACRlB,EAASonB,EAAOpnB,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAE7BmB,EADgBkmB,EAAOrnB,IACJ6rL,EAGvB,OAAO1qL,GAGXqqL,eAAgB,SAASv4K,EAAOoU,GAC5B,IAAIlmB,EAAQ,GAEZ,GAAIkmB,EAGA,IAFA,IAAIpnB,EAASnE,KAAK8S,IAAIyY,EAAOpnB,OAAQgT,EAAMhT,QAElCD,EAAI,EAAGA,EAAIC,EAAQD,IACxBmB,EAAMkmB,EAAOrnB,IAAMiT,EAAMjT,GAIjC,OAAOmB,GAGXyqL,gBAAiB,SAASvnI,EAAQh9B,EAAQykK,QACpB,IAAdA,IAAwBA,EAAYzkK,GAExC,IAAIlmB,EAAQ,GAEZ,GAAIkmB,EAGA,IAFA,IAAIpnB,EAASonB,EAAOpnB,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI8mD,EAAYz/B,EAAOrnB,GACnB+rL,EAAeD,EAAU9rL,GACR,OAAjB+rL,IACA5qL,EAAM2lD,GAAa4jI,GAASqB,EAAc1nI,IAKtD,OAAOljD,GAGXuqL,aAAc,SAASnkJ,EAAQ6jJ,GAC3B,IAAIM,EAAe,GAEnB,GAAIN,EAGA,IAFA,IAAInrL,EAASmrL,EAAgBnrL,OAEpBD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI8mD,EAAYskI,EAAgBprL,GAC5BgsL,EAAkBllI,IAAc2f,EAAQ,QAAU3f,EAAY,QAElE4kI,EAAatxL,KAAiC,OAA5BmtC,EAAOykJ,GAA6BzkJ,EAAOykJ,IAAoBllI,EAAa,MAItG,OAAO4kI,KAIfd,GAAa1+K,QAAU,IAAI0+K,GAE3B,IAEIqB,GAAe,0BACfC,GAAyB,IAAIxlL,OAAO,yCAEpCylL,GAAuB9rL,EAAM7E,OAAO,CACpCoF,KAAM,SAASwrL,EAAY7kJ,EAAQ7pB,GAE/BjlB,KAAK4zL,iBAAiBD,EAAY7kJ,EAAQ7pB,IAG9C2uK,iBAAkB,SAASD,EAAY7kJ,EAAQ7pB,GAC3C,IAAIpX,EAAOihC,EAAOjhC,KACdgmL,EAAiBJ,GAAuBp7K,KAAKs7K,GAEjD,GAAIE,EAAgB,CAChB7zL,KAAK8zL,YAAc9zL,KAAK+zL,kBAAkBjlJ,EAAQ7pB,GAElD,IAAI8vC,EAAU/0D,KAAKg0L,WAAWnmL,GAC1BomL,EAAYj0L,KAAKk0L,qBAAqBrmL,EAAMknD,GAAS,GACrD7e,EAAW29I,EAAe,GAAK9qL,WAAW8qL,EAAe,IAAM,EAC/DM,EAAa,CAAEr+D,IAAK/gE,EAAQrsD,MAAQurL,EAAY/9I,EAAUi0I,KAAMp1H,EAAQrsD,MAAQurL,EAAY/9I,GAEhGl2C,KAAKo0L,YAAc,WACf,OAAOD,QAER,GAAIR,EAAWh+K,SAAWg+K,EAAWh+K,QA1BtC,WA0B0D,EAAG,CAC/D3V,KAAK8zL,YAAc9zL,KAAK+zL,kBAAkBjlJ,EAAQ7pB,GAClD,IAAIovK,EAAgBr0L,KAAKs0L,iBAAiBzmL,EAAM7N,KAAKg0L,WAAWnmL,IAEhE7N,KAAKo0L,YAAc,SAAS1rL,GACxB,MAAO,CAAEotH,IAAKptH,EAAQ2rL,EAAelK,KAAMzhL,EAAQ2rL,MAK/DN,kBAAmB,SAASjlJ,EAAQ7pB,GAChC,IAII6uK,EAJAjmL,EAAOihC,EAAOjhC,KACd8mE,EAASw9G,GAAa1+K,QACtB++K,EAAc79G,EAAO69G,YAAY1jJ,GACjCE,EAAOgmF,EAAQnnH,EAAK,IAAMA,EAAK,GAAK,GAGxC,GAAI5K,EAAQ+rC,GAAO,CACf,IAAIj2B,EAAQkM,EAAQutK,EAAY78K,QAAQsP,GAAS,EACjD6uK,EAAchlK,EAAO,IAAM/V,EAAQ,UAChC,GAAI+7C,EAAS9lB,GAChB8kJ,EAAchlK,SACX,UAAWkgB,IAASgiJ,EAAiB5qL,OAAQ,CAChD,IAAI4sL,EAAiBr+G,EAAOs+G,aAAankJ,EAAQ0jJ,GACjDsB,EAAchlK,EAAOkkK,EAAeR,EAAY78K,QAAQsP,KAG5D,OAAO6uK,GAGXS,cAAe,SAASC,EAAYb,GAChC,IAAI79D,EAAKq0D,EAAMzhL,EAEf,IAAKssH,EAAQ2+D,GACT,OAAO,KAGX,GAAI3zL,KAAKo0L,YACL,OAAOp0L,KAAKo0L,YAAYI,GAG5B,GAAIvxL,EAAQ0wL,GACR79D,EAAM0+D,EAAab,EAAW,GAC9BxJ,EAAOqK,EAAab,EAAW,QAC5B,GAAI7+H,EAASpsD,EAAQK,WAAW4qL,IACnC79D,EAAM0+D,EAAa9rL,EACnByhL,EAAOqK,EAAa9rL,MACjB,MAAKA,EAAQ8qL,GAAan7K,KAAKs7K,IAKlC,MAAM,IAAIljL,MAAM,2BAA6BkjL,GAJ7C,IAAIc,EAAeD,GAAczrL,WAAWL,EAAM,IAAM,KACxDotH,EAAM0+D,EAAanxL,KAAK6T,IAAIu9K,GAC5BtK,EAAOqK,EAAanxL,KAAK6T,IAAIu9K,GAKjC,MAAO,CAAE3+D,IAAKA,EAAKq0D,KAAMA,IAG7BmK,iBAAkB,SAASzmL,EAAMknD,GAC7B,OAAO/0D,KAAKk0L,qBAAqBrmL,EAAMknD,GAAS,GAAQ1xD,KAAKo6E,KAAK1oB,EAAQj6C,QAG9Eo5K,qBAAsB,SAASrmL,EAAMknD,EAAS2/H,GAO1C,IANA,IAEIltL,EAASqG,EAAKrG,OACdo/C,EAAQ8tI,EAAW3/H,EAAQj6C,MAAQ,EAAIi6C,EAAQj6C,MAC/C65K,EAAsB,EAEjB/qL,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIlB,EAPO1I,KAOU8zL,YAAYjmL,EAAKjE,IAClCkrD,EAASpsD,KACTisL,GAAuBtxL,KAAKqmC,IAAIhhC,EAAQqsD,EAAQrsD,MAAO,IAI/D,OAAOrF,KAAKo6E,KAAKk3G,EAAsB/tI,IAG3CotI,WAAY,SAASnmL,GAOjB,IANA,IAEIrG,EAASqG,EAAKrG,OACdqtD,EAAM,EACN/5C,EAAQ,EAEHlR,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIlB,EAPO1I,KAOU8zL,YAAYjmL,EAAKjE,IAClCkrD,EAASpsD,KACTmsD,GAAOnsD,EACPoS,KAIR,MAAO,CACHpS,MAAOmsD,EAAM/5C,EACbA,MAAOA,MAKfkH,GAAUze,GAAQye,SAAW,GAE7B4yK,GAA6B,IAC7BC,GAAS,SAGTC,GAAoB,GAEpBC,GAAc/yK,GAAQoB,KAAO,KAAQ,EACrC4xK,GAAkB,WAClBC,GAAmB,YACnBC,GAAoB,YACpBC,GAAqB,aACrBC,GAAoB,YACpBC,GAAqB,aAErBniL,GAAO,OACPoiL,GAAc,cACdC,GAAM,MACNC,GAAQ,QACRC,GAAQ,QAERC,GAAS,SACTC,GAAO,OAEPC,GAAO,OACPC,GAAM,MACNC,GAAW,UACXC,GAAS,SACTC,GAAS,SACTC,GAAc,cACdC,GAAS,SACTC,GAAQ,QACRC,GAAS,SACTC,GAAU,UACVC,GAAU,UACVC,GAAuB,sBACvBC,GAAO,OACPC,GAAO,OACPC,GAAM,MACNC,GAAa,YACbC,GAAa,YACbC,GAAgB,eAChBC,GAAa,YACbC,GAAe,cACfC,GAAa,YACbC,GAAa,YACbC,GAAY,WACZC,GAAe,cACfC,GAAU,UACVC,GAAe,cACfC,GAAgB,eAChBC,GAAoB,kBACpBC,GAAkB,iBAClBC,GAAgB,eAChBC,GAAsB,oBACtBC,GAAY,YACZC,GAAwB,CACxB/B,GAAKK,GAAQO,GAAMR,GAAaH,GAAUyB,GAC1CvB,GAAQmB,GAAcD,GAAWS,GAAWpB,IAG5CsB,GAAoB,kBACpBC,GAAoB,kBACpBC,GAAoB,kBACpBC,GAAe,cACfC,GAAe,cACfC,GAAc,aACdC,GAAe,cACfC,GAAkB,gBAClBC,GAAkB,gBAClBC,GAAkB,gBAClBn1G,GAAO,OACPo1G,GAAW,UACXC,GAAa,YACbC,GAAa,YACbC,GAAO,OACPC,GAAW,UACXC,GAAe,cACf78G,GAAS,SACT88G,GAAa,YACbC,GAAS,SACTC,GAAe,cACfC,GAAe,cACfC,GAAc,aAEdC,GAAc,MACdC,GAAW,WAEXC,GAAa,YACbC,GAAc,aACdC,GAAc,aAEdC,GAAa,QACbC,GAAmB,IAGnBC,GAAY,YACZC,GAAkB,YAElBl7B,GAAY,CACfo2B,2BAA4BA,GAC5BC,OAAQA,GACRgD,kBAAmBA,GACnBC,kBAAmBA,GACnBC,kBAAmBA,GACnBC,aAAcA,GACdC,aAAcA,GACdC,YAAaA,GACbC,aAAcA,GACdwB,MAzGW,QA0GX7E,kBAAmBA,GACnB8E,eAzGoB,EA0GpB7E,YAAaA,GACbC,gBAAiBA,GACjBC,iBAAkBA,GAClBC,kBAAmBA,GACnBC,mBAAoBA,GACpBC,kBAAmBA,GACnBC,mBAAoBA,GACpBwE,iBAzGsB,EA0GtBvE,YAAaA,GACbpiL,KAAMA,GACNwiL,OAAQA,GACRC,KAAMA,GACNwD,SAAUA,GACV/C,OAAQA,GACRC,QAASA,GACTR,IAAKA,GACLI,YAAaA,GACbS,IAAKA,GACLR,OAAQA,GACRN,KAAMA,GACN4B,gBAAiBA,GACjB1B,SAAUA,GACVW,KAAMA,GACNkB,UAAWA,GACXnB,KAAMA,GACNR,OAAQA,GACRyB,cAAeA,GACfH,cAAeA,GACfL,WAAYA,GACZS,oBAAqBA,GACrBP,aAAcA,GACdI,kBAAmBA,GACnBL,UAAWA,GACXX,qBAAsBA,GACtBa,QAASA,GACTC,aAAcA,GACdtB,OAAQA,GACRe,WAAYA,GACZE,WAAYA,GACZD,aAAcA,GACdH,WAAYA,GACZD,WAAYA,GACZE,cAAeA,GACfiC,OAAQA,GACRV,gBAAiBA,GACjBC,gBAAiBA,GACjBC,gBAAiBA,GACjBY,YAAaA,GACb/1G,KAAMA,GACNq1G,WAAYA,GACZD,SAAUA,GACVE,WAAYA,GACZC,KAAMA,GACNC,SAAUA,GACVC,aAAcA,GACd78G,OAAQA,GACR88G,WAAYA,GACZI,YAAaA,GACb1D,IAAKA,GACLY,MAAOA,GACPiD,WAAYA,GACZC,YAAaA,GACbC,YAAaA,GACbC,WAAYA,GACZC,iBAAkBA,GAClBM,qBAnF0B,GAoF1Bf,aAAcA,GACdC,aAAcA,GACdpB,sBAAuBA,GACvBpC,MAAOA,GACPC,MAAOA,GACPa,QAASA,GACTmD,UAAWA,GACXC,gBAAiBA,IAKdK,GAAen1B,EAAa7hK,OAAO,CACnCoF,KAAM,SAAS2tH,EAAKq0D,EAAM7+C,EAAYsjC,EAAO9/H,EAAQ5nC,GACjD09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAK81H,IAAMA,EACX91H,KAAKmqL,KAAOA,EACZnqL,KAAKsrI,WAAaA,EAClBtrI,KAAK4uK,MAAQA,EACb5uK,KAAK8uC,OAASA,GAGlBshG,OAAQ,SAASwxB,GACb,IASI+L,EATAqsB,EAAUh6L,KAAKkH,QAAQ8yL,QACvB1uD,EAAatrI,KAAKsrI,WAElB2uD,EADOj6L,KAAKk6L,UACInnB,QAAQ/yK,KAAK81H,IAAK91H,KAAKmqL,MACvCgQ,EAAYv4B,EAAUrkF,SACtB68G,EAAYp6L,KAAKq6L,aAAaz4B,EAAWt2B,GACzCgvD,EAAWhvD,EAAa6uD,EAAU/0L,EAAI+0L,EAAUh2L,EAChDo2L,EAAWD,EAAWF,EACtBI,EAASF,EAAWF,EAGpB9uD,GACAqiC,EAAa,CACT,IAAI3zC,EAAMmgE,EAAU/0L,EAAG60L,EAAS/8G,IAChC,IAAI88C,EAAMmgE,EAAU/0L,EAAG60L,EAAS78G,KAEhC48G,GACArsB,EAAWhsK,KAAK,IAAIq4H,EAAMugE,EAAUN,EAAS/8G,IACzC,IAAI88C,EAAMwgE,EAAQP,EAAS/8G,IAC3B,IAAI88C,EAAMugE,EAAUN,EAAS78G,IAC7B,IAAI48C,EAAMwgE,EAAQP,EAAS78G,KAEnCp9E,KAAKk5C,IAAM,IAAIyoH,EAAI44B,EAAUN,EAAS/8G,GAAIs9G,EAAQP,EAAS78G,MAE3DuwF,EAAa,CACT,IAAI3zC,EAAMigE,EAASh9G,GAAIk9G,EAAUh2L,GACjC,IAAI61H,EAAMigE,EAAS98G,GAAIg9G,EAAUh2L,IAEjC61L,GACArsB,EAAWhsK,KAAK,IAAIq4H,EAAMigE,EAASh9G,GAAIs9G,GACnC,IAAIvgE,EAAMigE,EAASh9G,GAAIu9G,GACvB,IAAIxgE,EAAMigE,EAAS98G,GAAIo9G,GACvB,IAAIvgE,EAAMigE,EAAS98G,GAAIq9G,IAE/Bx6L,KAAKk5C,IAAM,IAAIyoH,EAAIs4B,EAASh9G,GAAIs9G,EAAUN,EAAS98G,GAAIq9G,IAG3Dx6L,KAAK2tK,WAAaA,GAGtB0sB,aAAc,SAASnhJ,EAAKoyF,GACxB,IAAI53C,EAAU43C,EAAapyF,EAAIlsC,QAAUksC,EAAIvsC,SAG7C,OAFgBtJ,KAAK8S,IAAI9S,KAAKkN,MAAMmjF,EAAU,GAxDxB,OA6D1B6xE,aAAc,WACV,IAAIp0C,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfg3I,EAASh3I,EAAQg3I,OAEjBA,EACAl+I,KAAKk+I,OAASA,EAAO,CACjBpoB,IAAK91H,KAAK81H,IACVq0D,KAAMnqL,KAAKmqL,KACX9+F,KAAMrrF,KAAKk5C,IAAI2pH,SACfv4J,OAAQtK,KAAKglK,YACb99J,QAAS,CACL8yL,QAAS9yL,EAAQ8yL,QACjB5qE,MAAOloH,EAAQkoH,MACfs+C,KAAMxmK,EAAQwmK,MAElBnI,aAAc,WACVp0C,EAASspE,sBACT,IAAI5sB,EAAgB18C,EAAS+sB,OAE7B,cADO/sB,EAAS+sB,OACT2vB,KAIf7tK,KAAKy6L,uBAIbA,oBAAqB,WACjB,IAGIvzL,EADMlH,KACQkH,QACdymK,EAFM3tK,KAEW2tK,WACjB8F,EAAc,CACd51C,OAAQ,CACJzO,MAAOloH,EAAQkoH,MACfpiH,MAAO9F,EAAQwmK,KAAK1gK,MACpBgvI,SAAU90I,EAAQwmK,KAAK1xB,WAI/B4oB,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAElC,IAAK,IAAI4J,EAAM,EAAGA,EAAM+jK,EAAWnmK,OAAQoC,GAAO,EAAG,CACjD,IAAI8jK,EAAO,IAAIphC,GAAKmnC,GACfr3H,OAAOuxH,EAAW/jK,GAAKxE,EAAGuoK,EAAW/jK,GAAKzF,GAC1CymI,OAAO+iC,EAAW/jK,EAAM,GAAGxE,EAAGuoK,EAAW/jK,EAAM,GAAGzF,GAEvD46J,EAAiB2O,GApBN1tK,KAqBFk+I,OAAOnkG,OAAO2zH,OAKnCrN,EAAkB05B,GAAc,CAC5BzoG,UAAW,CACP5rF,KAAMmvL,GACN1vJ,MAAOyvJ,IAEXoF,SAAS,EACTtsB,KAAM,CACF1gK,MAAO,GAEX4sC,OAAQ,IAGZ,IAAI8gJ,GAAsBX,GAAah3L,OAAO,CAC1Cm3L,QAAS,WAGL,OAFWl6L,KAAK4uK,MAAM+rB,gBAAgB36L,KAAK8uC,WAQnD,SAAS8rJ,GAAY1zL,EAAS20B,EAASo3B,EAAO4nI,QAC5B,IAAV5nI,IAAoBA,EAAQ,SACjB,IAAX4nI,IAAqBA,GAAS,GAElC,IAAIj6L,EAAWqyD,EAAMryD,SAAWqyD,EAAMryD,UAAY,GAC9C6/J,EAAQxtG,EAAMwtG,MAAQxtG,EAAMwtG,OAAS,EACrCq6B,GAAY,EAIhB,GAFA7nI,EAAM8nI,SAAW9nI,EAAM8nI,UAAY,GAE/Bt6B,EAZe,EAaf,OAAO,KAGX,IAAK,IAAIlzJ,KAAYrG,EACjB,IAAKmuB,EAAQ9nB,EAAU0lD,EAAM8nI,WAAa7zL,EAAQwH,eAAenB,GAAW,CACxE,IAAIC,EAAYtG,EAAQqG,GACpBrE,EAAWsE,IACXstL,GAAY,EACPD,IACD3zL,EAAQqG,GAAY2pH,EAAe1pH,EAAUquB,GAAUj7B,EAAS2M,MAE7D4xJ,EAAS3xJ,KACXqtL,IACD5nI,EAAMryD,SAAWA,EAAS2M,IAE9B0lD,EAAMwtG,QACNq6B,EAAYF,GAAYptL,EAAWquB,EAASo3B,EAAO4nI,IAAWC,EAC9D7nI,EAAMwtG,SAKlB,OAAOq6B,EAGX,SAAS5e,GAAgBptI,GAIrB,IAHA,IAAIksJ,EAAclsJ,EAAOtnC,OACrB2yK,EAAa,EAER5yK,EAAI,EAAGA,EAAIyzL,EAAazzL,IAC7B4yK,EAAa92K,KAAKuV,IAAIuhK,EAAYrrI,EAAOvnC,GAAGsG,KAAKrG,QAGrD,OAAO2yK,EAGX,IAAI8gB,GAAmBr2B,EAAa7hK,OAAO,CACvCoF,KAAM,SAASsqK,EAAUvrK,GACrB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKyyK,SAAWA,EAChBzyK,KAAKmlK,aAAesN,EAAStN,aAC7BnlK,KAAK0tL,aAAejb,EAASyoB,mBAAmBh0L,EAAQ4nC,OAAO,IAI/D9uC,KAAKm7L,gBAAkB,GAEvBn7L,KAAKqhI,OAAS,GACdrhI,KAAKo7L,eAAiB,GACtBp7L,KAAKq7L,aAAe,GACpBr7L,KAAKs7L,cAAgB,GACrBt7L,KAAKu7L,YAAc,GAEnBv7L,KAAK4P,UAGTA,OAAQ,WACJ5P,KAAKw7L,mBAAmBx7L,KAAKy7L,SAASjyL,KAAKxJ,QAG/C07L,aAAc,SAAS5sJ,EAAQ6sJ,GAC3B,IAAIz0L,EAAUlH,KAAKs7L,cAAcK,GACjC,IAAKz0L,EAAS,CACV,IAAItG,EAAWZ,KAAK47L,YAAYvzL,UAAUzH,SAC1CZ,KAAKs7L,cAAcK,GAAYz0L,EAAUsB,EAAW,GAAK5H,EAAU,CAC/DwxC,UAAWpyC,KAAKkH,QAAQ20L,YACzB/sJ,GAGP,OAAO5nC,GAGX40L,UAAW,SAASzhE,GAChB,IAAKA,EACD,OAAO,EAGX,GAAIr6H,KAAKkH,QAAQ60L,cAAgBjnI,EAASulE,EAAM3xH,OAAQ,CAMpD,IALA,IAAIo3K,EAAazlD,EAAMylD,WACnBsb,EAAiBp7L,KAAKo7L,eAAetb,GACrCkc,EAAc,GACdC,EAAc,EAET10L,EAAI,EAAGA,EAAI6zL,EAAe5zL,OAAQD,IAAK,CAC5C,IAAI0oH,EAAQmrE,EAAe7zL,GAC3B,GAAI0oH,EAAO,CACP,IAAIiiB,EAAQ7X,EAAMvrF,OAAOojG,MACrBgqD,EAAajsE,EAAMnhF,OAAOojG,MAE9B,GAAKA,GAASgqD,GAAehqD,EAAMh+E,QAAUgoI,EAAWhoI,MACpD,SAGAY,EAASm7D,EAAMvnH,SACfuzL,GAAe54L,KAAK6T,IAAI+4G,EAAMvnH,OAC9BszL,EAAYr6L,KAAK0B,KAAK6T,IAAI+4G,EAAMvnH,UAK5C,GAAIuzL,EAAc,EACd,OAAO5hE,EAAM3xH,MAAQuzL,EAI7B,OAAO5hE,EAAM3xH,OAGjByzL,UAAW,SAAS9hE,EAAOriF,QAEJ,IAAfA,IAAyBA,EAAa,GAE1C,IAAIojJ,EAAiBp7L,KAAKo7L,eAAe/gE,EAAMylD,YAE/C,GAAI9/K,KAAKkH,QAAQk1L,UAAW,CAMxB,IALA,IAAIN,EAAY97L,KAAK87L,UAAUzhE,GAC3BgiE,EAAWP,GAAa,EACxBQ,EAAYtkJ,EACZukJ,GAAe,EAEVh1L,EAAI,EAAGA,EAAI6zL,EAAe5zL,OAAQD,IAAK,CAC5C,IAAI0oH,EAAQmrE,EAAe7zL,GAE3B,GAAI8yH,IAAUpK,EACV,MAGJ,IAAIiiB,EAAQ7X,EAAMvrF,OAAOojG,MACrBgqD,EAAajsE,EAAMnhF,OAAOojG,MAC9B,GAAIA,GAASgqD,EAAY,CACrB,UAAWhqD,IAAU8+C,EAAiB9qL,QAAUgsI,IAAUgqD,EACtD,SAGJ,GAAIhqD,EAAMh+E,OAASg+E,EAAMh+E,QAAUgoI,EAAWhoI,MAC1C,SAIR,IAAIsoI,EA9BGx8L,KA8BmB87L,UAAU7rE,IAC/BusE,GAAc,GAAKH,GACnBG,EAAa,IAAMH,KACpBC,GAAaE,EACbV,GAAaU,EACbD,GAAe,EAnCZv8L,KAqCUkH,QAAQ60L,eACjBD,EAAYz4L,KAAK8S,IAAI2lL,EAAW,KAS5C,OAJIS,IACAD,GAAatkJ,GAGV,CAAEskJ,EAAWR,GAGxB,IAAIhtJ,EAASurF,EAAMvrF,OACfgsI,EAAY96K,KAAK26L,gBAAgB7rJ,GACjCqoI,EAAoBn3K,KAAKy8L,0BAA0B3hB,GAEvD,MAAO,CAAE3D,EAAmBrtJ,EAAQy/J,oBAAoBlvD,EAAM3xH,OAAS2xH,EAAM3xH,MAAQyuK,IAGzFulB,YAAa,SAASC,EAAUC,GAM5B,IALA,IAEIzmL,EAAMm/G,EACN18G,EAAMolJ,EAEDz2J,EAAI,EAAGA,EAAIvH,KAAKo7L,eAAe5zL,OAAQD,IAAK,CACjD,IAAI6zL,EANOp7L,KAMmBo7L,eAAe7zL,GAC7C,GAAK6zL,EAIL,IAAK,IAAIyB,EAAM,EAAGA,EAAMzB,EAAe5zL,OAAQq1L,IAAO,CAClD,IAAIxiE,EAAQ+gE,EAAeyB,GAC3B,GAAIxiE,IACIA,EAAMvrF,OAAOojG,QAAU0qD,GAAaviE,EAAMvrF,OAAO9J,OAAS23J,GAAU,CACpE,IAAIv+J,EAfLp+B,KAemBm8L,UAAU9hE,EAAO,GAAG,GAClCrF,EAAQ52F,IAAOvsB,SAASusB,KACxBxlB,EAAMvV,KAAKuV,IAAIA,EAAKwlB,GACpBjoB,EAAM9S,KAAK8S,IAAIA,EAAKioB,MAOxC,MAAO,CAAEjoB,IAAKA,EAAKyC,IAAKA,IAG5BkkL,iBAAkB,WACd,IAAI3rE,EAAWnxH,KAEXivB,EAAMjvB,KAAKkH,QACXk1L,EAAYntK,EAAImtK,UAChBW,EAAc9tK,EAAI6f,OAClBkuJ,EAAc,GAElB,GAAIZ,EACA,IAAK,IAAI70L,EAAI,EAAGA,EAAIw1L,EAAYv1L,OAAQD,IAAK,CACzC,IAAIunC,EAASiuJ,EAAYx1L,GACrBo1L,EAAW7tJ,EAAO9J,KAClBzzB,EAAMorL,EAAW7tJ,EAAOojG,MAExB+qD,EAASD,EAAYzrL,GACzB,IAAK0rL,EAAQ,CACTA,EAAS9rE,EAASurE,YAAYC,EAAU7tJ,EAAOojG,OAE/C,IAAIgrD,EAAc/rE,EAAS+rE,YACvBA,IACIA,EAAYjnL,SAASzO,SACrBy1L,EAAO9mL,IAAM9S,KAAK8S,IAAI8mL,EAAO9mL,IAAK2T,EAAQw2I,kBAAkB48B,EAAYjnL,UAAUE,MAElF+mL,EAAYb,SAAS70L,SACrBy1L,EAAOrkL,IAAMvV,KAAKuV,IAAIqkL,EAAOrkL,IAAKkR,EAAQw2I,kBAAkB48B,EAAYb,UAAUzjL,OAItFqkL,EAAO9mL,MAAQm/G,GAAa2nE,EAAOrkL,MAAQolJ,EAC3Cg/B,EAAYzrL,GAAO0rL,EAEnBA,EAAS,KAIbA,IACA9rE,EAASgqE,gBAAgBwB,GAAYM,KAMrDE,YAAa,SAAS9iE,EAAOxsH,EAAMiyK,GAC/B,IAMIqU,EANAzrL,EAAQ2xH,EAAM3xH,MACdomC,EAASurF,EAAMvrF,OACf6sJ,EAAWthE,EAAMshE,SACjB3L,EAAY31D,EAAMnzH,QAAQ8oL,UAC1BoN,EAAWvvL,EAAK+gB,OAAsB,SACtCyuK,EAAYxvL,EAAK+gB,OAAuB,UAGxCkmC,EAASsoI,IAAatoI,EAASuoI,GAC/BlJ,EAAa,CAAEr+D,IAAKsnE,EAAUjT,KAAMkT,GAC7BrN,GAAah7D,EAAQg7D,EAAUtnL,SACtC1I,KAAKs9L,kBAAoBt9L,KAAKs9L,mBAAqB,GACnDt9L,KAAKs9L,kBAAkB3B,GAAY37L,KAAKs9L,kBAAkB3B,IACtD,IAAIjI,GAAqB1D,EAAUtnL,MAAOomC,EAAQk/B,GAEtDmmH,EAAan0L,KAAKs9L,kBAAkB3B,GAAUpH,cAAc7rL,EAAOsnL,EAAUtnL,QAG7EyrL,IACA95D,EAAMvE,IAAMq+D,EAAWr+D,IACvBuE,EAAM8vD,KAAOgK,EAAWhK,KACxBnqL,KAAKu9L,iBAAiBljE,EAAOylD,KAIrCyd,iBAAkB,SAASljE,EAAOylD,GAC9B,IAAIx0C,GAActrI,KAAKkH,QAAQ20L,WAC3B30L,EAAUmzH,EAAMnzH,QAAQ8oL,UACxBlhJ,EAASurF,EAAMvrF,OACfgnF,EAAMuE,EAAMvE,IACZq0D,EAAO9vD,EAAM8vD,KAEjB,GAAInqL,KAAKkH,QAAQk1L,UAAW,CACxB,IAAIoB,EAAoBx9L,KAAKw9L,kBAAkBnjE,EAAOylD,GACtDhqD,EAAM0nE,EAAkB1nE,IACxBq0D,EAAOqT,EAAkBrT,SACtB,CACH,IAAIv7J,EAAS,CAAEkxJ,WAAYA,EAAYhxI,OAAQA,GAC/C9uC,KAAKy9L,YAAY,CAAE/0L,MAAOotH,GAAOlnG,GACjC5uB,KAAKy9L,YAAY,CAAE/0L,MAAOyhL,GAAQv7J,GAGtC,IAAI8uK,EAAW,IAAIhD,GAAoB5kE,EAAKq0D,EAAM7+C,EAAYtrI,KAAM8uC,EAAQ5nC,GAC5EmzH,EAAM21D,UAAY,CAAE0N,GACpBrjE,EAAMtgF,OAAO2jJ,IAGjBF,kBAAmB,SAASnjE,EAAOylD,GAC/B,IAAIgc,EAAY97L,KAAKm8L,UAAU9hE,EAAO,GAAG,GAAKA,EAAM3xH,MAChDotH,EAAMuE,EAAMvE,IAAMgmE,EAClB3R,EAAO9vD,EAAM8vD,KAAO2R,EAYxB,OAVA97L,KAAKk9L,YAAcl9L,KAAKk9L,aAAe,CAAEb,SAAU,GAAIpmL,SAAU,IAE7D6/G,EAAM,IACN91H,KAAKk9L,YAAYjnL,SAAS6pK,GAAcz8K,KAAK8S,IAAInW,KAAKk9L,YAAYjnL,SAAS6pK,IAAe,EAAGhqD,IAG7Fq0D,EAAO,IACPnqL,KAAKk9L,YAAYb,SAASvc,GAAcz8K,KAAKuV,IAAI5Y,KAAKk9L,YAAYb,SAASvc,IAAe,EAAGqK,IAG1F,CAAEr0D,IAAKA,EAAKq0D,KAAMA,IAG7BsR,SAAU,SAAS5tL,EAAM+gB,GACrB,IAAIkxJ,EAAalxJ,EAAOkxJ,WACpBhxI,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAElBP,EAAiBp7L,KAAKo7L,eAAetb,GACpCsb,IACDp7L,KAAKo7L,eAAetb,GAAcsb,EAAiB,IAGvD,IAAIC,EAAer7L,KAAKq7L,aAAaM,GAChCN,IACDr7L,KAAKq7L,aAAaM,GAAYN,EAAe,IAGjD,IAAIhhE,EAAQr6H,KAAK29L,YAAY9vL,EAAM+gB,GAC/ByrG,IACA13H,EAAEI,OAAOs3H,EAAOzrG,GAEhByrG,EAAMujE,MAAQ59L,KACdq6H,EAAMwjE,SAAWhwL,EAAK+gB,OAAOivK,SACxB7oE,EAAQqF,EAAMhmG,YACfgmG,EAAMhmG,SAAWya,EAAOjhC,KAAKiyK,IAEjC9/K,KAAKm9L,YAAY9iE,EAAOxsH,EAAMiyK,IAGlC9/K,KAAKqhI,OAAO1/H,KAAK04H,GACjBghE,EAAa15L,KAAK04H,GAClB+gE,EAAez5L,KAAK04H,GAEpBr6H,KAAKy9L,YAAY5vL,EAAK2kL,YAAa5jK,IAGvCkvK,iBAAkB,SAAS52L,EAASwB,EAAOkmB,GACvC,IAAIkxJ,EAAalxJ,EAAOkxJ,WACpBhZ,EAAWl4I,EAAOk4I,SAClBh4H,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAClB1oI,EAAQ,CACRryD,SAAUkuC,EAAOivJ,UACjBhD,SAAU,CACN,OAAQ,YAAa,UAAW,UAAW,UAAW,WACtD,SAAU,SAAU,sBAAuB,sBAC3C,2BAIJiD,EAASh+L,KAAKu7L,YAAYI,GACzB3mE,EAAQgpE,KACTh+L,KAAKu7L,YAAYI,GAAYqC,EAASpD,GAAY1zL,EAAS,GAAI+rD,GAAO,IAG1E,IAAIyoI,EAAex0L,EAYnB,OAXI82L,GAEApD,GADAc,EAAelzL,EAAW,GAAIkzL,GACJ,CACtBhzL,MAAOA,EACPo+J,SAAUA,EACV/tJ,MAAO+mK,EACPhxI,OAAQA,EACRza,SAAUya,EAAOjhC,KAAKiyK,IACvB7sH,GAGAyoI,GAGX+B,YAAa,SAAS5vL,EAAM+gB,GACxB,IAAI+tK,EAAW/tK,EAAOkgB,OAAO9J,KACzBt8B,EAAQmF,EAAKnF,MACbu1L,EAAYj+L,KAAKm7L,gBAAgBwB,GAEjC9qL,SAASnJ,IAAoB,OAAVA,KACnBu1L,EAAYj+L,KAAKm7L,gBAAgBwB,GAC7BsB,GAAa,CAAE9nL,IAAKm/G,EAAW18G,IAAKolJ,IAE9B7nJ,IAAM9S,KAAK8S,IAAI8nL,EAAU9nL,IAAKzN,GACxCu1L,EAAUrlL,IAAMvV,KAAKuV,IAAIqlL,EAAUrlL,IAAKlQ,KAIhDiyL,gBAAiB,SAAS7rJ,GACtB,IAAI2jI,EAAWzyK,KAAKyyK,SAChBkqB,EAAW7tJ,EAAO9J,KAClBA,EAAO23J,EAAWlqB,EAASyrB,eAAevB,GAAYlqB,EAASqI,UAEnE,IAAK91I,EACD,MAAM,IAAIv0B,MAAM,yCAA2CksL,GAG/D,OAAO33J,GAGXorG,OAAQ,SAASwxB,GACb,IAAIzwC,EAAWnxH,KAEXm+L,EAAgBn+L,KAAKm+L,cAAgB,GACrCC,EAAcp+L,KAAKqhI,OACnBqsD,EAAe1tL,KAAK0tL,aACpBmF,EAAU,EAEd7yL,KAAKw7L,oBAAmB,SAAU3tL,EAAM+gB,GACpC,IAAIkxJ,EAAalxJ,EAAOkxJ,WACpBue,EAAgBzvK,EAAOkgB,OAEvBgsI,EAAY3pD,EAASwpE,gBAAgB0D,GACrChkE,EAAQ+jE,EAAYvL,KAEpByL,EAAeH,EAAcre,GAMjC,GALKwe,IACDH,EAAcre,GAAcwe,EACxBntE,EAASmtE,aAAa5Q,EAAc5N,EAAYhF,IAGpDzgD,EAAO,CACP,IAAI8hE,EAAYhrE,EAASgrE,UAAU9hE,EAAOygD,EAAU9iI,cAChDumJ,EAAYptE,EAASotE,UAAUzjB,EAAWqhB,GAC9C,GAAIoC,EAAW,CACX,IAAIC,EAAYrtE,EAASqtE,UAAUF,EAAcC,GAEjDlkE,EAAMokE,UAAYttE,EAASstE,UAAUpkE,EAAOygD,GAC5CzgD,EAAMqkE,WAAavC,EAAU,GAEzBhrE,EAASjqH,QAAQ60L,eACjB1hE,EAAMpuG,WAAaklG,EAAS2qE,UAAUzhE,IAG1ClJ,EAASwtE,YAAYtkE,EAAOmkE,QAE5BnkE,EAAM/tH,SAAU,MAK5BtM,KAAK4+L,iBAAiBT,IACjBn+L,KAAKkH,QAAQ4yC,MAAQ95C,KAAKkH,QAAQ23L,aAAe7+L,KAAKqhI,OAAO75H,QAC9DxH,KAAK6+L,cAGT7+L,KAAKk5C,IAAM0oH,GAGf28B,UAAW,SAASzjB,EAAWqhB,GAC3B,OAAOrhB,EAAU/H,QAAQopB,EAAU,GAAIA,EAAU,IAAKn8L,KAAKkH,QAAQ4yC,OAGvE+kJ,YAAa,WAKT,IAJA,IAEIzD,EAAiBp7L,KAAKo7L,eACtB/5D,EAAS+5D,EAAe,GAAG/9K,OAAO8kB,EAAKi5J,IAClCxxL,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAC/By3H,EAAOz3H,IALA5J,KAME8+L,WAAWz9D,EAAOz3H,KAKvCk1L,WAAY,SAASzkE,GACjB,IAAIuhD,EAAe57K,KAAK0tL,aAAa/R,UAAUthD,EAAMnhF,KAChD0iI,EAAa9qH,OAAOupE,EAAMnhF,MAC3BmhF,EAAM+V,OAAOwrC,IAIrB6iB,UAAW,SAASpkE,EAAOygD,GACvB,IAAI3D,EAAoBn3K,KAAKy8L,0BAA0B3hB,GACnDpyK,EAAQ2xH,EAAM3xH,MAElB,OAAOoyK,EAAU5zK,QAAQ4O,QACrBpN,EAAQyuK,EAAoBzuK,GAASyuK,GAG7CslB,0BAA2B,SAAS3hB,GAChC,IAAI4S,EAAe1tL,KAAK0tL,aACpBxmL,EAAU4zK,EAAU5zK,QAKxB,MAJqB,GAAGmW,OACpBnW,EAAQy9K,oBAAsBz9K,EAAQiwK,mBAGpBuW,EAAaqR,WAAa,IAAM,GAG1DJ,YAAa,SAAStkE,EAAOmkE,GACzBnkE,EAAM+V,OAAOouD,IAGjBI,iBAAkB,aAElBJ,UAAW,SAASF,EAAcC,GAC9B,IACI1C,EADU77L,KAAKkH,QACM20L,WACrBhpB,EAAQgpB,EAAa0C,EAAYD,EACjCxrB,EAAQ+oB,EAAayC,EAAeC,EAExC,OAAO,IAAI58B,EAAIkR,EAAM51F,GAAI61F,EAAM51F,GAAI21F,EAAM11F,GAAI21F,EAAM11F,KAGvDkhH,aAAc,SAAS5Q,EAAc5N,GACjC,OAAO4N,EAAa3a,QAAQ+M,IAGhC0b,mBAAoB,SAASxyK,GAOzB,IANA,IAAImoG,EAAWnxH,KAEX8uC,EAAS9uC,KAAKkH,QAAQ4nC,OACtBh0B,EAAQohK,GAAgBptI,GACxBksJ,EAAclsJ,EAAOtnC,OAEhBm0L,EAAW,EAAGA,EAAWX,EAAaW,IAC3CxqE,EAAS6tE,oBAAoBlwJ,EAAO6sJ,GAAW,sBAAuBA,EAAU3yK,GAGpF,IAAK,IAAI82J,EAAa,EAAGA,EAAahlK,EAAOglK,IACzC,IAAK,IAAImf,EAAa,EAAGA,EAAajE,EAAaiE,IAAc,CAC7D,IAAIZ,EAAgBvvJ,EAAOmwJ,GACvBC,EAAkB/tE,EAASu8D,aAAazR,WAAW6D,GAGvD92J,EAFgBmoG,EAASguE,WAAWd,EAAeY,EAAYnf,GAE3C,CAChBhZ,SAAUo4B,EACVpf,WAAYA,EACZ5D,gBAAiBphK,EACjBg0B,OAAQuvJ,EACR1C,SAAUsD,IAKtB,IAAK,IAAIG,EAAa,EAAGA,EAAapE,EAAaoE,IAC/CjuE,EAAS6tE,oBAAoBlwJ,EAAOswJ,GAAa,sBAAuBA,EAAYp2K,IAI5Fg2K,oBAAqB,SAASlwJ,EAAQ7pB,EAAO02K,EAAU3yK,GACnD,IAAIq2K,EAAkBvwJ,EAAO7pB,GAC7B,GAAIo6K,EAAiB,CACjB,IAAIvf,EAAauf,EAAgBvf,WAGjC92J,EAFgBhpB,KAAKm/L,WAAWrwJ,EAAQ6sJ,EAAU7b,EAAYuf,EAAgBrwJ,MAE1D,CAChB83H,SAAUu4B,EAAgBv4B,SAC1BgZ,WAAYA,EACZhxI,OAAQA,EACR6sJ,SAAUA,EACVtnK,SAAUgrK,EAAgBrwJ,SAKtCmwJ,WAAY,SAASrwJ,EAAQ6sJ,EAAU7b,EAAY9wI,GAC1ChvC,KAAKs/L,aACNt/L,KAAKs/L,WAAa,IAGtB,IAAIC,EAAYv/L,KAAKs/L,WAAW3D,GAC3B4D,IACDA,EAAYv/L,KAAKs/L,WAAW3D,GAAY,IAG5C,IAAI9tL,EAAO0xL,EAAUzf,GAKrB,OAJKjyK,IACDA,EAAO0xL,EAAUzf,GAAcqS,GAAa1+K,QAAQm/K,UAAU9jJ,EAAQgxI,EAAY9wI,IAG/EnhC,GAGX2xL,iBAAkB,SAASnlE,EAAO3pH,GAC9B,OAAoB,OAAhB2pH,EAAM3xH,MACC,GAGJ1I,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQ2pH,EAAM3xH,QAGvD8rL,WAAY,SAAS3mL,GACjB,OAAOA,EAAK2kL,YAAY9pL,SAIhC23J,EAAkB46B,GAAkB,CAChCnsJ,OAAQ,GACR+sJ,YAAY,EACZO,WAAW,EACXtiJ,MAAM,EACN+kJ,aAAa,IAGjB,IAAIY,GAAmB,CACnBn2K,MAAO,SAASslJ,EAAOjqK,GACnB,OAAOiqK,EAAMxkK,QACT4tL,GACAh4L,KAAK8tK,UAAUnpK,KAIvBuqL,MAAO,SAAStgB,EAAOjqK,GACnB,OAAOiqK,EAAMxkK,QACT6tL,GACAj4L,KAAK8tK,UAAUnpK,KAIvBopK,KAAM,SAASa,EAAOjqK,GAClB,OAAOiqK,EAAMxkK,QACT8tL,GACAl4L,KAAK8tK,UAAUnpK,KAIvBgpB,IAAK,SAASihJ,EAAOjqK,GACjB,OAAOiqK,EAAMxkK,QACT+tL,GACAn4L,KAAK8tK,UAAUnpK,KAIvBmpK,UAAW,SAASnpK,GAChB,MAAO,CACH+D,MAAO1I,KAAK0I,MACZujB,WAAYjsB,KAAKisB,WACjByyK,WAAY1+L,KAAK0+L,WACjB53B,SAAU9mK,KAAK8mK,SACfh4H,OAAQ9uC,KAAK8uC,OACbza,SAAUr0B,KAAKq0B,SACf0yI,aAAc/mK,KAAK+mK,aACnBngH,MAAO5mD,KAAK4mD,MACZ/6C,QAAS2qH,EAAa7xH,GACtBgkB,cAAehkB,EACf01H,MAAOr6H,QAKf0/L,GAAY,CACZC,WAAY,WACR,IAAIz4L,EAAUlH,KAAKkH,QAAQiqK,MACvBvwI,EAAO5gC,KAAK69L,UAAY32L,EAAQ2sB,MAAM+M,MAElB,IAApB15B,EAAQoF,SAAqB0oH,EAAQp0F,IAAkB,OAATA,IAC9C5gC,KAAKqxK,KAAO,IAAIvnJ,EAAQqjJ,KAAK,CACzBzkK,MAAO1I,KAAK0I,MACZk4B,KAAMA,EACNvM,SAAUr0B,KAAKq0B,SACfyyI,SAAU9mK,KAAK8mK,SACfh4H,OAAQ9uC,KAAK8uC,QACd9uC,KAAKkH,QAAQiqK,MAAOnxK,KAAK49L,MAAMz4B,cAElCnlK,KAAK+5C,OAAO/5C,KAAKqxK,SAKzBuuB,GAAYh7B,EAAa7hK,OAAO,CAChCoF,KAAM,SAASO,EAAOxB,GAClB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAK0I,MAAQA,EACb1I,KAAKkH,QAAUA,EACflH,KAAKy+L,UAAYvnE,EAAel3H,KAAKkH,QAAQu3L,WAAW,GACxDz+L,KAAK6/L,iBAAkB,GAG3BjwL,OAAQ,WACJ,IAAIqf,EAAMjvB,KAAKkH,QACX4kL,EAAU78J,EAAI68J,QACdpc,EAASzgJ,EAAIygJ,OAEjB,IAAI1vK,KAAK8/L,UAAT,CAWA,GAPA9/L,KAAK8/L,WAAY,EAEbhU,EAAQx/K,SAAWw/K,EAAQr8K,OAC3BzP,KAAKsoD,OAAStoD,KAAK+/L,eACnB//L,KAAK+5C,OAAO/5C,KAAKsoD,SAGjBonH,EAAOpjK,QAAS,CAChB,IAAI6mK,EAAgBzT,EAAYgQ,GAC5B1H,EAAYhoK,KAAKgoK,YACjBg4B,EAAYhgM,KAAK0I,MACjByqK,EACA6sB,EAAY7sB,EAAcnL,GACnB0H,EAAOh/J,SACdsvL,EAAYhgM,KAAKigM,YAAYvwB,EAAOh/J,SAExC1Q,KAAK6zB,MAAQ,IAAIm3I,EAAQg1B,EACrBx3L,EAAW,CACPymI,MAAOj/C,EACPqnE,OAAQrnE,EACRr3C,OAAQ,CACJ9sB,KAAM,EACNC,MAAO,GAEX8tB,OAAQs9E,EAAew4C,EAAO91H,OAAQ55C,KAAK8uC,OAAO8K,SACnD81H,GACH1H,GAEJhoK,KAAK+5C,OAAO/5C,KAAK6zB,OAGrB7zB,KAAK2/L,aAED3/L,KAAK09L,UACL19L,KAAK+5C,OAAO/5C,KAAK09L,YAIzBwC,aAAc,WACV,IAAIh5L,EAAUlH,KAAKkH,QAAQ4kL,QACvB75B,EAAa/qJ,EAAQ+qJ,WACrBwV,EAASj/J,EAAW,CAAE4mH,MAAOpvH,KAAKovH,OAASloH,EAAQugK,QAMvD,OAJKzyC,EAAQyyC,EAAOr4C,SAChBq4C,EAAOr4C,MAAQ,IAAI8B,GAAM+gC,GAAYrgC,WAAWkjE,IAAmBplE,SAGhE+3C,GAGXlC,aAAc,aAEdw6B,aAAc,WACV,IAAI74L,EAAUlH,KAAKkH,QAAQ4kL,QAmB3B,OAlBa,IAAI/jB,EAAa,CAC1BriK,KAAMwB,EAAQxB,KACdsH,MAAO9F,EAAQuI,KACf9C,OAAQzF,EAAQuI,KAChBkqC,SAAUzyC,EAAQyyC,SAClBs4G,WAAY/qJ,EAAQ+qJ,WACpBwV,OAAQznK,KAAKkgM,eACbtpK,QAAS1vB,EAAQ0vB,QACjBgjB,OAAQs9E,EAAehwH,EAAQ0yC,OAAQ55C,KAAK8uC,OAAO8K,QACnD03C,UAAWpqF,EAAQoqF,UACnB4sD,OAAQh3I,EAAQg3I,QACjB,CACC7pH,SAAUr0B,KAAKq0B,SACf3rB,MAAO1I,KAAK0I,MACZomC,OAAQ9uC,KAAK8uC,OACbg4H,SAAU9mK,KAAK8mK,YAMvBq5B,UAAW,WAMP,OALKngM,KAAKsoD,SACNtoD,KAAKsoD,OAAStoD,KAAK+/L,eACnB//L,KAAKsoD,OAAO8nF,OAAOpwI,KAAKogM,YAGrBpgM,KAAKsoD,OAAOpP,KAGvBk3F,OAAQ,SAASwxB,GACb,IAGI16J,EADMlH,KACQkH,QACdu3L,EAFMz+L,KAEUy+L,UAChBrsJ,EAAWlrC,EAAQkrC,SAEvBpyC,KAAK4P,SAEL5P,KAAKk5C,IAAM0oH,EACX,IAAIy+B,EAAWz+B,EAAUz6J,QAuBzB,GArBIirC,EACIqsJ,EACA4B,EAASnjH,IAAMmjH,EAAS1zL,SAExB0zL,EAASjjH,IAAMijH,EAAS1zL,SAGxB8xL,EACA4B,EAASpjH,IAAMojH,EAASrzL,QAExBqzL,EAASljH,IAAMkjH,EAASrzL,QAIhChN,KAAKogM,UAAYC,EACbrgM,KAAKsoD,QACLtoD,KAAKsoD,OAAO8nF,OAAOiwD,GAGvBrgM,KAAKsgM,YAAYD,GAEbrgM,KAAKgwL,UACL,IAAK,IAAIzoL,EAAI,EAAGA,EAAIvH,KAAKgwL,UAAUxoL,OAAQD,IAlChCvH,KAmCEgwL,UAAUzoL,GAAG6oI,OAAOiwD,GAIrC,GAAIrgM,KAAKqxK,KAAM,CACX,IAAIkvB,EAAgBvgM,KAAKmgM,YAEzB,IAAMj5L,EAAQ4kL,QAAQx/K,UAAWpF,EAAQ4kL,QAAQr8K,KAAO,CACpD,IAAI8tE,EAASgjH,EAAchjH,SAC3BgjH,EAAgB,IAAI5+B,EAAIpkF,EAAOn4E,EAAGm4E,EAAOp5E,EAAGo5E,EAAOn4E,EAAGm4E,EAAOp5E,GAGjEnE,KAAKqxK,KAAKjhC,OAAOmwD,KAIzBD,YAAa,SAASpnJ,GAClB,IACIhyC,EADMlH,KACQkH,QACd2sB,EAFM7zB,KAEM6zB,MACZs9D,EAASjqF,EAAQwoK,OAAO5iK,SAExB+mB,IAEAs9D,GADAA,EAASA,IAAWqkG,GAAQvlG,EAAMkB,KACdskG,GAAQvlG,EAASiB,EAErCt9D,EAAMu8G,OAAOl3F,GACbrlB,EAAMqlB,IAAI8oH,QAAQhiK,KAAKmgM,YAAahvG,GACpCt9D,EAAMu8G,OAAOv8G,EAAMqlB,OAI3BstH,gBAAiB,WACb,IAAIslB,EAAU9rL,KAAKkH,QAAQq/J,UAAUulB,QACjC0U,EAAexgM,KAAKkgM,eAAe9wE,MACnCloH,EAAUlH,KAAKkH,QAAQ4kL,QACvBr8K,EAAOvI,EAAQuI,MAAQvI,EAAQugK,OAAOz6J,OAAS,IAAM8+K,EAAQrkB,OAAOz6J,OAAS,GAE7E0e,EAAS,IAAIq8I,EAAa,CAC1BriK,KAAMwB,EAAQxB,KACdsH,MAAOyC,EACP9C,OAAQ8C,EACRkqC,SAAUzyC,EAAQyyC,SAClBs4G,WAAY65B,EAAQ18D,OAASoxE,EAC7B/4B,OAAQ,CACJr4C,MAAO08D,EAAQrkB,OAAOr4C,MACtBpiH,MAAO8+K,EAAQrkB,OAAOz6J,MACtB4pB,QAASsgG,EAAe40D,EAAQrkB,OAAO7wI,QAAS,IAEpDA,QAASsgG,EAAe40D,EAAQl1J,QAAS,KAI7C,OAFAlL,EAAO0kH,OAAOpwI,KAAKogM,WAEZ10K,EAAOu8I,cAGlBw4B,gBAAiB,WACb,OAAQzgM,KAAKsoD,QAAU,IAAI41F,QAG/B2oB,oBAAqB,WACjB,IACI3oB,EAAQ7yD,EADR/iC,EAAStoD,KAAKsoD,OAGlB,GAAIA,EACA+iC,EAAO/iC,EAAOq/G,WAAW9E,SACzB3kB,EAAS51F,EAAO41F,WACb,CACH,IAAIzuI,EAAOzP,KAAKkH,QAAQ4kL,QAAQr8K,KAC5BixL,EAAWjxL,EAAO,EAClB8tE,EAASv9E,KAAKk5C,IAAIqkC,SACtB8N,EAAO,IAAIu0C,GAAS1E,KAAK,CAAE39C,EAAOn4E,EAAIs7L,EAAUnjH,EAAOp5E,EAAIu8L,GAAY,CAAEjxL,EAAMA,IAGnF,MAAO,CACHvI,QAASlH,KAAKkH,QACdmkF,KAAMA,EACN6yD,OAAQA,IAIhByiD,cAAe,WACX,IAAIR,EAAYngM,KAAKmgM,YACjBS,EAAU5gM,KAAK49L,MAAMjwG,KAAKizG,UAG9B,IAFmBA,GAAWA,EAAQr+B,SAAS49B,GAE9B,CACb,IAEIh8L,EAAG08L,EAFHz7L,EAAI+6L,EAAUhjH,GAjsCT,EAksCL2jH,EAAkBr2K,EAWtB,OARIzqB,KAAKy+L,WACLt6L,EAAIg8L,EAAUjjH,GACd2jH,EAAgB3wG,IAEhB/rF,EAAIg8L,EAAU/iH,GACdyjH,EAAgB5wG,GAGb,CACHoqC,MAAO,IAAIL,EAAM50H,EAAGjB,GACpB8qI,MAAO,CACH38F,WAAYwuJ,EACZ1uJ,SAAUyuJ,MAM1BZ,YAAa,SAASvvL,GAClB,OAAO1Q,KAAK49L,MAAM4B,iBAAiBx/L,KAAM0Q,IAG7CqwL,YAAa,SAAS7nJ,GAElB,OADgBl5C,KAAKmgM,YACJ59B,SAASrpH,IAG9B8nJ,eAAgB,WACRhhM,KAAK6zB,QACL7zB,KAAK6zB,MAAM3sB,QAAQ4+J,QAAS,GAG5B9lK,KAAKqxK,OACLrxK,KAAKqxK,KAAKnqK,QAAQ4+J,QAAS,IAInCkC,UAAW,WACP,MAAO,CACH3zI,SAAUr0B,KAAKq0B,SACfyyI,SAAU9mK,KAAK8mK,SACfp+J,MAAO1I,KAAK0I,MACZujB,WAAYjsB,KAAKisB,WACjByyK,WAAY1+L,KAAK0+L,WACjB5vJ,OAAQ9uC,KAAK8uC,WAKzB8wJ,GAAUv3L,UAAUzH,SAAW,CAC3BwxC,UAAU,EACV05I,QAAS,CACLx/K,SAAS,EACT2lJ,WAAYsM,EACZ9uJ,KAnvCe,EAovCf/J,KAAM+3J,EACNgK,OAAQ,CACJz6J,MAAO,GAEX4pB,QAAS,GAEb84I,OAAQ,CACJpjK,SAAS,EACTQ,SAAU0oL,GACV78I,OAAQ4mH,EAAW,GACnBxpB,QAASwpB,EAAW,GACpBjuE,UAAW,CACP5rF,KAAMmvL,GACN1vJ,MAAOyvJ,KAGfzjB,MAAO,CACHt9I,MAAO,IAEX0yI,UAAW,CACPulB,QAAS,CACLrkB,OAAQ,CACJr4C,MAAO,OACPpiH,MAAO,IAGf4sC,OAAQo3I,EAAiBpyB,kBAE7BoxB,UAAW,CACPtiB,KAAM,CACF1gK,MAAO,KAKnBxE,EAAWo3L,GAAUv3L,UAAWo3L,IAChCj3L,EAAWo3L,GAAUv3L,UAAWq3L,IAEhC,IAAIuB,GAAcr8B,EAAa7hK,OAAO,CAClCoF,KAAM,SAASwlK,EAAY7+H,EAAQ6sJ,GAC/B/2B,EAAa78J,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAK2tK,WAAaA,EAClB3tK,KAAK8uC,OAASA,EACd9uC,KAAK27L,SAAWA,GAGpBt6D,OAAQ,WACJ,OAAOrhI,KAAKkhM,iBAAiBlhM,KAAK2tK,aAGtCuzB,iBAAkB,SAAS7/D,GAEvB,IADA,IAAI9qH,EAAS,GACJhP,EAAI,EAAGC,EAAS65H,EAAO75H,OAAQD,EAAIC,EAAQD,IAC5C85H,EAAO95H,KAA4B,IAAtB85H,EAAO95H,GAAG+E,SACvBiK,EAAO5U,KAAK0/H,EAAO95H,GAAG64L,UAAUv9B,SAAStlF,UAIjD,OAAOhnE,GAGXgvJ,aAAc,WACV,IAAIp0C,EAAWnxH,KAEX0mK,EAAe1mK,KAAK8uC,OAAOovG,OAC3BwoB,GACA1mK,KAAKk+I,OAASwoB,EAAa,CACvBrlC,OAAQrhI,KAAKkhM,iBAAiBlhM,KAAK2tK,YACnC7+H,OAAQ9uC,KAAK8uC,OACbxkC,OAAQtK,KAAKglK,YACbO,aAAc,WAGV,OAFAp0C,EAASgwE,gBAEFhwE,EAAS+sB,UAGpBl+I,KAAKk+I,SAAWlpB,EAAQh1H,KAAKk+I,OAAOh3I,QAAQ0yC,UAC5C55C,KAAKk+I,OAAOh3I,QAAQ0yC,OAAS55C,KAAK8uC,OAAO8K,SAG7C55C,KAAKmhM,iBAIbA,cAAe,WACX,IACIj6L,EADMlH,KACQkH,QACd4nC,EAFM9uC,KAEO8uC,OACbsgF,EAAQtgF,EAAOsgF,MACfxuH,EAAWkuC,EAAOivJ,UAElB70L,EAAWkmH,IAAUxuH,IACrBwuH,EAAQxuH,EAASwuH,OAGrB,IAAIs+C,EAAOphC,GAAKrQ,WAAWj8H,KAAKqhI,SAAU,CACtCxD,OAAQ,CACJzO,MAAOA,EACPpiH,MAAO8hC,EAAO9hC,MACd4pB,QAASkY,EAAOlY,QAChBolH,SAAUltG,EAAOktG,UAErBpiG,OAAQ9K,EAAO8K,SAGf1yC,EAAQ0lI,QACR8gC,EAAKpoH,QAGTtlD,KAAKk+I,OAASwvB,GAGlBH,SAAU,SAAS5oK,EAAGy8L,GAClB,OAAOphM,KAAKmM,OAAOk1L,gBAAgBD,EAAOh8L,EAAGg8L,EAAOj9L,EAAGnE,KAAK27L,aAIpEt7B,EAAkB4gC,GAAa,CAC3Br0D,QAAQ,IAGZ,IAAI00D,GAAgB,CAChBC,oBAAqB,SAASlgE,GAe1B,IAdA,IACIpyG,EADejvB,KAAKmM,OAAOsmK,SAASyoB,mBAAmBl7L,KAAK8uC,QACzC5nC,QACnB+vK,EAAYhoJ,EAAIgoJ,UAChB7kI,EAAWnjB,EAAImjB,SACft8B,EAAUmZ,EAAInZ,QAEd0rL,EAAWpvJ,EAAW/sC,EAAI2P,EAC1BgwB,EAAOoN,EAAWp9B,EAAI3P,EACtBo8L,EAAU3rL,EAAU,EAAI,EACxBupB,EAAMoiK,EAENC,EAAgBC,GAAgBtgE,EAAO,GAAImgE,EAAUC,EAASz8J,EAAM3F,GACpE9oB,EAAS,CAAEmrL,GAEN93L,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAAO,CAC1C,IAAIywH,EAAQsnE,GAAgBtgE,EAAOz3H,GAAM43L,EAAUC,EAASz8J,EAAM3F,GAElE,GAAIqiK,EAAcF,KAAcnnE,EAAMmnE,GAAW,CAC7C,IAAII,EAAY,IAAI3Q,GACpB2Q,EAAUJ,GAAYE,EAAcF,GACpCI,EAAU58J,GAAQq1F,EAAMr1F,GAExBzuB,EAAO5U,KAAKigM,EAAWvnE,GAG3BqnE,EAAgBrnE,EASpB,OANK48C,EAEMyqB,IAAkBv/J,EAAK5rB,IAC9BA,EAAO5U,KAAK+/L,GAFZnrL,EAAO5U,KAAKggM,GAAgBx/J,EAAKk/F,GAASmgE,EAAUC,EAASz8J,EAAMlvB,EAAU,EAAI,IAK9ES,IAKf,SAASorL,GAAgBE,EAAWL,EAAUC,EAASz8J,EAAM3F,GACzD,IAAI6Z,EAAM2oJ,EAAU3oJ,IAChB3iC,EAAS,IAAI06K,GAKjB,OAHA16K,EAAOirL,GAAYtoJ,EAAIsoJ,EAAWC,GAClClrL,EAAOyuB,GAAQkU,EAAIlU,EAAO3F,GAEnB9oB,EAGX,IAAIurL,GAAkBb,GAAYl+L,OAAO,CACrCs+H,OAAQ,WACJ,OAAOrhI,KAAKuhM,oBAAoBvhM,KAAK2tK,eAI7CnlK,EAAWs5L,GAAgBz5L,UAAWi5L,IAEtC,IAAIS,GAAgBd,GAAYl+L,OAAO,CACnCo+L,cAAe,WACX,IAAIryJ,EAAS9uC,KAAK8uC,OACdluC,EAAWkuC,EAAOivJ,UAClB3uE,EAAQtgF,EAAOsgF,MAEflmH,EAAWkmH,IAAUxuH,IACrBwuH,EAAQxuH,EAASwuH,OAGrB,IACI8b,EADiB,IAAIg+C,EAAelpL,KAAKkH,QAAQ0lI,QACvB53E,QAAQh1D,KAAKqhI,UACvC2gE,EAAQ,IAAI11D,GAAK,CACjBzO,OAAQ,CACJzO,MAAOA,EACPpiH,MAAO8hC,EAAO9hC,MACd4pB,QAASkY,EAAOlY,QAChBolH,SAAUltG,EAAOktG,UAErBpiG,OAAQ9K,EAAO8K,SAGnBooJ,EAAM92D,SAASvpI,KAAKyG,MAAM45L,EAAM92D,SAAUA,GAE1ClrI,KAAKk+I,OAAS8jD,KAIlBC,GAAiB,CACjBC,eAAgB,WACZ,IAOIz1D,EAPAtb,EAAWnxH,KAGXkH,EADMlH,KACQkH,QACdm0L,EAFMr7L,KAEaq7L,aACnBvsJ,EAAS5nC,EAAQ4nC,OACjBksJ,EAAcK,EAAa7zL,OAG/BxH,KAAKmiM,UAAY,GAEjB,IAAK,IAAIxG,EAAW,EAAGA,EAAWX,EAAaW,IAAY,CAMvD,IALA,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvByG,EAAejxE,EAASkxE,WAAWhH,EAAaM,IAChD2G,EAAaF,EAAa56L,OAC1BmmK,EAAa,GAERklB,EAAU,EAAGA,EAAUyP,EAAYzP,IAAW,CACnD,IAAIx4D,EAAQ+nE,EAAavP,GACrBx4D,EACAszC,EAAWhsK,KAAK04H,GACTlJ,EAASoxE,oBAAoBlE,KAAmB/I,KACnD3nB,EAAWnmK,OAAS,IACpBilI,EAActb,EAASqxE,cACnB70B,EAAY0wB,EAAe1C,EAAUlvD,GAEzCtb,EAASsxE,YAAYh2D,IAEzBkhC,EAAa,IAIjBA,EAAWnmK,OAAS,IACpBilI,EAActb,EAASqxE,cACnB70B,EAAY0wB,EAAe1C,EAAUlvD,GAEzCtb,EAASsxE,YAAYh2D,IAI7BzsI,KAAKm1C,SAAShrC,QAAQ/B,MAAMpI,KAAKm1C,SAAUn1C,KAAKmiM,YAGpDM,YAAa,SAASj6D,GAClBxoI,KAAKmiM,UAAUxgM,KAAK6mI,GACpBA,EAAQr8H,OAASnM,MAGrBqiM,WAAY,SAAShhE,GACjB,OAAOA,GAGXkhE,oBAAqB,SAASzzJ,GAC1B,IAAI4zJ,EAAgB5zJ,EAAO4zJ,cAG3B,OAFkBA,GAAiB1iM,KAAKkH,QAAQk1L,UAE5BlpL,GAAOwvL,GAAiBpN,IAGhD+L,gBAAiB,SAASj8L,EAAGjB,EAAGw3L,GAM5B,IALA,IAGIgH,EAHAr7L,EAAS,IAAI0yH,EAAM50H,EAAGjB,GACtBy+L,EAAY5iM,KAAKq7L,aAAaM,GAC9BkH,EAAuBvtE,EAGlB/tH,EAAI,EAAGA,EAAIq7L,EAAUp7L,OAAQD,IAAK,CACvC,IAAI8yH,EAAQuoE,EAAUr7L,GAEtB,GAAI8yH,GAASrF,EAAQqF,EAAM3xH,QAA0B,OAAhB2xH,EAAM3xH,QAAoC,IAAlB2xH,EAAM/tH,QAAmB,CAClF,IACIwyH,EADWzE,EAAMnhF,IACQqkC,SAASi9C,WAAWlzH,GAE7Cw3H,EAAgB+jE,IAChBF,EAAetoE,EACfwoE,EAAuB/jE,IAKnC,OAAO6jE,IAIXG,GAAgBpnJ,GAAU34C,OAAO,CACjC2yC,MAAO,WACH11C,KAAK+iM,QAAQ/iM,KAAKkH,QAAQgyC,IAAI+jC,KAGlCvqC,KAAM,SAAS2hD,GACX,IAAIn7C,EAAMl5C,KAAKkH,QAAQgyC,IACvBl5C,KAAK+iM,QAAQj5K,EAAQ4/J,iBAAiBxwI,EAAI+jC,GAAI/jC,EAAIikC,GAAIkX,KAG1D0uG,QAAS,SAAS39L,GACd,IAAIyG,EAAU7L,KAAK6L,QACfq/H,EAAWr/H,EAAQq/H,SACnBxP,EAAWwP,EAAS,GAAG/5C,SACvBsqC,EAAcyP,EAAS,GAAG/5C,SAE9BtlF,EAAQ4oH,UACRiH,EAASsnE,KAAK59L,GACdyG,EAAQ6oH,SACR+G,EAAYunE,KAAK59L,MAUzB,SAAS69L,GAAa9uK,GAClB,IAAK,IAAIvqB,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,IACrC,GAAIorH,EAAQ7gG,EAASvqB,GAAKgwC,QACtB,OAAO,EATnBymH,EAAkByiC,GAAe,CAC7Bp8K,SAAUkuK,KAGd7gD,GAAiBtgI,QAAQwjB,SAAS,OAAQ6rK,IAU1C,IAAII,GAAqB,CACrBz9B,gBAAiB,WACb,IAAIhoH,EAAOz9C,KAAK+kK,UAChB,GAAItnH,IAA6C,KAApCA,EAAKv2C,SAAW,IAAIyX,YAAuB,CACpD,IAAIu6B,EAAMuE,EAAKhuC,OACX48I,EAAW/f,GAAKc,SAASl0F,EAAI2pH,UACjC7iK,KAAKk+I,OAAOpkG,KAAKuyG,GACjBrsJ,KAAKsxF,UAAY,IAAIwxG,GAAcz2C,EAAU,CACzCnzG,IAAKA,IAEL+pJ,GAAajjM,KAAKkH,QAAQ4nC,SAC1B9uC,KAAKmjM,sBAAsB92C,KAKvC82C,sBAAuB,SAAS92C,GAG5B,IAFA,IAAIhrB,EAASrhI,KAAKojM,kBAETx5L,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAAO,CAC1C,IAAIywH,EAAQgH,EAAOz3H,GACfywH,GAASA,EAAM6jB,QAAUlpB,EAAQqF,EAAM6jB,OAAOh3I,QAAQ0yC,SACtDygF,EAAM6jB,OAAOpkG,KAAKuyG,MAM9Bg3C,GAAYpI,GAAiBl4L,OAAO,CACpC6M,OAAQ,WAEJqrL,GAAiBlzL,GAAG6H,OAAOrF,KAAKvK,MAEhCA,KAAK88L,mBACL98L,KAAKkiM,kBAGTtG,UAAW,WACP,OAAOgE,IAGXjC,YAAa,SAAS9vL,EAAM+gB,GACxB,IAAIkgB,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAClB+G,EAAgB1iM,KAAKuiM,oBAAoBzzJ,GACzCpmC,EAAQmF,EAAK2kL,YAAY9pL,MAE7B,IAAKssH,EAAQtsH,IAAoB,OAAVA,EAAgB,CACnC,GAAIg6L,IAAkBxvL,GAGlB,OAAO,KAFPxK,EAAQ,EAMhB,IAAIgzL,EAAe17L,KAAK07L,aAAa5sJ,EAAQ6sJ,GAC7CD,EAAe17L,KAAK89L,iBAAiBpC,EAAchzL,EAAOkmB,GAE1D,IAAIwgG,EAAQvhH,EAAK+gB,OAAOwgG,OAAStgF,EAAOsgF,MACpClmH,EAAW4lC,EAAOsgF,SAClBA,EAAQssE,EAAatsE,OAGzB,IAAIiL,EAAQ,IAAIulE,GAAUl3L,EAAOgzL,GAKjC,OAJArhE,EAAMjL,MAAQA,EAEdpvH,KAAK+5C,OAAOsgF,GAELA,GAGX8hE,UAAW,SAAS9hE,GAChB,IAEIyhE,EAAY97L,KAAK87L,UAAUzhE,GAE/B,GAAIr6H,KAAKkH,QAAQk1L,UAIb,IAHA,IAAItc,EAAazlD,EAAMylD,WACnBsb,EAAiBp7L,KAAKo7L,eAAetb,GAEhCv4K,EAAI,EAAGA,EAAI6zL,EAAe5zL,OAAQD,IAAK,CAC5C,IAAI0oH,EAAQmrE,EAAe7zL,GAE3B,GAAI8yH,IAAUpK,EACV,MAGJ6rE,GAfO97L,KAee87L,UAAU7rE,GAfzBjwH,KAiBMkH,QAAQ60L,eACjBD,EAAYz4L,KAAK8S,IAAI2lL,EAAW,IAM5C,MAAO,CAAEA,EAAWA,IAGxB0G,cAAe,SAAS70B,EAAY0wB,EAAe1C,GAC/C,IAAIlvL,EAAQ4xL,EAAc5xL,MAW1B,OAAO,IARHA,IAAUkpL,GACEmM,GACLr1L,IAAUipL,GACLqM,GAEAd,IAGKtzB,EAAY0wB,EAAe1C,IAGpDyH,gBAAiB,WAGb,IAFA,IAAI/hE,EAASrhI,KAAKqhI,OACd9qH,EAAS,GACJ3M,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IACnC2M,EAAO5U,MAAM0/H,EAAOz3H,IAAQ,IAAI0+C,QAEpC,OAAO/xC,EAAO8G,OAAOrd,KAAKmiM,YAG9B/6B,6BAA8B,WAC1B,OAAO,KAIf5+J,EAAW66L,GAAUh7L,UAAW45L,GAAgBiB,IAEhD,IAAII,GAAcrC,GAAYl+L,OAAO,CACjCoF,KAAM,SAASwlK,EAAY0wB,EAAe1C,EAAU4H,EAAaC,GAC7DvC,GAAYl5L,GAAGI,KAAKoC,KAAKvK,KAAM2tK,EAAY0wB,EAAe1C,GAE1D37L,KAAKujM,YAAcA,EACnBvjM,KAAKwjM,YAAcA,GAGvBj+B,aAAc,WACV,IAAIz2H,EAAS9uC,KAAK8uC,OACdluC,EAAWkuC,EAAOivJ,UAClBtqB,EAAc3kI,EAAO4+H,MAAQ,GAC7Bt+C,EAAQtgF,EAAOsgF,MAEflmH,EAAWkmH,IAAUxuH,IACrBwuH,EAAQxuH,EAASwuH,OAGrBpvH,KAAKk+I,OAAS,IAAI1P,GAAM,CACpB50F,OAAQ9K,EAAO8K,SAGnB55C,KAAKyjM,WAAW,CACZxwK,KAAM,CACFm8F,MAAOA,EACPx4F,QAASkY,EAAOlY,SAEpBinG,OAAQ,OAGR41C,EAAYzmK,MAAQ,IAA6B,IAAxBymK,EAAYnnK,SACrCtM,KAAK0jM,aAAa,CACd7lE,OAAQr1H,EAAW,CACf4mH,MAAOA,EACPx4F,QAASkY,EAAOlY,QAChBwlH,QAAS,QACVq3B,MAKfkwB,eAAgB,WACZ,IAAIz4D,EAAWlrI,KAAK4jM,gBAMpB,OAJK14D,IACDA,EAAWlrI,KAAK4jM,gBAAkB5jM,KAAK6jM,wBAGpC34D,GAGX24D,qBAAsB,WAClB,OAAO7jM,KAAK8jM,mBAAmB9jM,KAAKqhI,WAGxC0iE,cAAe,WACX,OAAI/jM,KAAKujM,YACEvjM,KAAKujM,YAAYS,oBAAoBhkM,KAAKwjM,aAG9CxjM,KAAKgkM,oBAAoBhkM,KAAKwjM,cAGzCQ,oBAAqB,SAASR,GAC1B,OAAOxjM,KAAK8jM,mBAAmB9jM,KAAKkhM,iBAAiBsC,IAAc1tL,WAGvEguL,mBAAoB,SAASziE,GACzB,OAAOA,EAAO/mH,KAAI,SAAU+/G,GAAS,OAAO,IAAIuF,GAASuH,QAAQ9M,OAGrEqpE,aAAc,SAASj3L,GACnB,IAAIoxH,EAAS,IAAIyO,GAAK7/H,GACtBoxH,EAAOqN,SAASvpI,KAAKyG,MAAMy1H,EAAOqN,SAAUlrI,KAAK2jM,kBAEjD3jM,KAAKk+I,OAAOnkG,OAAO8jF,IAGvBomE,gBAAiB,WACb,OAAOjkM,KAAKujM,aAAgBvjM,KAAKwjM,aAAexjM,KAAKwjM,YAAYh8L,QAGrEi8L,WAAY,SAASh3L,GACjB,IAAIk3L,EAAiB3jM,KAAK2jM,iBACtBO,EAAeP,EAAe/8L,MAAM,GACpCu9L,EAAmBnkM,KAAKikM,kBAE5B,GAAIE,EAAkB,CAClB,IAAIJ,EAAgB/jM,KAAK+jM,gBAEzBhqJ,EAAOmqJ,EAAcH,GAGzB,IAAI9wK,EAAO,IAAIq5G,GAAK7/H,GACpBwmB,EAAKi4G,SAASvpI,KAAKyG,MAAM6qB,EAAKi4G,SAAUg5D,IAEnCC,GAAoBR,EAAen8L,OAAS,GAC7CxH,KAAKokM,WAAWnxK,GAGpBjzB,KAAKk+I,OAAOnkG,OAAO9mB,IAGvBmxK,WAAY,SAASC,GACjB,IAAIz1B,EAAQ5uK,KAAKmM,OACb0vL,EAAajtB,EAAM1nK,QAAQ20L,WAC3B/gB,EAAYlM,EAAM+rB,gBAAgB36L,KAAK8uC,QACvCw1J,EAAgB11B,EAAM6tB,0BAA0B3hB,GAChDypB,EAAUzpB,EAAU/H,QAAQuxB,EAAeA,GAAe,GAC1Dp5D,EAAWlrI,KAAK2jM,iBAChBa,EAAat5D,EAAS,GAAG/5C,SACzBszG,EAAYtiK,EAAK+oG,GAAU/5C,SAC3BxlF,EAAMkwL,EAAa0I,EAAQtnH,GAAKsnH,EAAQrnH,GAExC2+G,EACAwI,EAASz5D,OAAOj/H,EAAK84L,EAAUtgM,GACtBymI,OAAOj/H,EAAK64L,EAAWrgM,GAEhCkgM,EAASz5D,OAAO65D,EAAUr/L,EAAGuG,GACpBi/H,OAAO45D,EAAWp/L,EAAGuG,MAKtC+4L,GAAkBpB,GAAYvgM,OAAO,CACrC8gM,qBAAsB,WAClB,OAAO7jM,KAAK8jM,mBAAmB9jM,KAAKuhM,oBAAoBvhM,KAAK2tK,cAGjEq2B,oBAAqB,SAASR,GAC1B,OAAOxjM,KAAK8jM,mBAAmB9jM,KAAKuhM,oBAAoBiC,IAAc1tL,aAI9EtN,EAAWk8L,GAAgBr8L,UAAWi5L,IAEtC,IAAIqD,GAAoBrB,GAAYvgM,OAAO,CACvC8gM,qBAAsB,WAClB,IAAIe,EAAiB,IAAI1b,EAAelpL,KAAKkH,QAAQ0lI,QACjD+gC,EAAa3tK,KAAKqhI,SAEtB,OAAOujE,EAAe5vI,QAAQ24G,IAGlCq2B,oBAAqB,WAGjB,IAFA,IAAIL,EAAiB3jM,KAAK2jM,iBACtBI,EAAgB,GACXn6L,EAAM+5L,EAAen8L,OAAS,EAAGoC,GAAO,EAAGA,IAAO,CACvD,IAAI4+H,EAAUm7D,EAAe/5L,GAC7Bm6L,EAAcpiM,KAAK,IAAIi+H,GAASuH,QAC5BqB,EAAQr3C,SACRq3C,EAAQnB,aACRmB,EAAQpB,cAIhB,OAAO28D,KAIXc,GAAYxB,GAAUtgM,OAAO,CAC7By/L,cAAe,SAAS70B,EAAY0wB,EAAe1C,EAAU4H,GACzD,IAEIuB,EAEAtB,EAJApH,EAAYp8L,KAAKkH,QAAQk1L,UACzB3vL,GAAS4xL,EAAc3wB,MAAQ,IAAIjhK,MAInC2vL,GAAaT,EAAW,GAAK4H,IAEP,QADFvjM,KAAKuiM,oBAAoBlE,IAEzCmF,EAAcD,EAAY51B,WAC1Bm3B,EAAkBvB,GAElBC,EAAcxjM,KAAK+kM,gBAAgBp3B,EAAYguB,EAAUlvL,IAajE,OAAO,IARHA,IAAUkpL,GACE+O,GACLj4L,IAAUipL,GACLiP,GAEArB,IAGK31B,EAAY0wB,EAAe1C,EAAUmJ,EAAiBtB,IAG/EpzD,OAAQ,SAASwxB,GAGbyhC,GAAUt7L,GAAGqoI,OAAO7lI,KAAKvK,KAAM4hK,GAE/B,IAAI4hC,EAAcxjM,KAAKglM,aACvB,GAAIxB,EACA,IAAK,IAAI55L,EAAM,EAAGA,EAAM45L,EAAYh8L,OAAQoC,IAAO,CAC/C,IAAIq7L,EAAazB,EAAY55L,GACzB40L,EARGx+L,KAQkB0tL,aAAa3a,QAAQkyB,EAAWnlB,YACzDmlB,EAAW70D,OAAOouD,KAK9BuG,gBAAiB,SAASp3B,EAAYguB,EAAUlvL,GAC5C,IAAI0kH,EAAWnxH,KAEXq7L,EAAer7L,KAAKq7L,aACpB6J,EAAWv3B,EAAW,GAAGmS,WACzBt4K,EAASmmK,EAAWnmK,OACpB09L,EAAW,IACXA,EAAW,EACX19L,KAGJ,IAAI29L,EAASD,EAAW19L,EACpBsvK,EAAc92K,KAAKs7L,cAAc,GAAG8J,oBAAsB,EAAI,EAC9D5B,EAAc,GAElBxjM,KAAKglM,aAAehlM,KAAKglM,cAAgB,GACzC,IAAK,IAAIllB,EAAaolB,EAAUplB,EAAaqlB,EAAQrlB,IAAc,CAC/D,IAAI+S,EAAU/S,EAAahJ,EACvBuuB,EAAkB1J,EAClBthE,OAAQ,EAEZ,GAEIA,EAAQghE,IADRgK,GACsCxS,SACjCwS,EAAkB,IAAMhrE,GAEjC,GAAIA,EACI5tH,IAAUkpL,IAAQ7V,EAAaolB,IAAa7J,EAAagK,GAAiBxS,EAAU,IACpF2Q,EAAY7hM,KAAKwvH,EAASm0E,sBAAsBxlB,EAAY+S,EAASA,EAAU,EAAGwS,IAGtF7B,EAAY7hM,KAAK04H,GAEb5tH,IAAUkpL,IAAQ7V,EAAa,EAAIqlB,IAAW9J,EAAagK,GAAiBxS,EAAU,IACtF2Q,EAAY7hM,KAAKwvH,EAASm0E,sBAAsBxlB,EAAY+S,EAASA,EAAU,EAAGwS,QAEnF,CACH,IAAIE,EAAgBp0E,EAASq0E,qBAAqB1lB,GAClD3uD,EAAS6zE,aAAarjM,KAAK4jM,GAC3B/B,EAAY7hM,KAAK4jM,IAIzB,OAAO/B,GAGX8B,sBAAuB,SAASxlB,EAAY+S,EAAS4S,EAAWC,GAK5D,IAJA,IAEIrrE,EAFAghE,EAAer7L,KAAKq7L,aACpBtiL,EAAQ2sL,EAGL3sL,EAAQ,IAAMshH,GAEjBA,EAAQghE,IADRtiL,GAC4B0sL,GAUhC,OAPKprE,EAIDA,EAAQghE,EAAatiL,GAAO85K,IAH5Bx4D,EAAQr6H,KAAKwlM,qBAAqB1lB,GAClC9/K,KAAKglM,aAAarjM,KAAK04H,IAKpBA,GAGXmrE,qBAAsB,SAAS1lB,GAC3B,IAAI54K,EAAUlH,KAAK07L,aAAa,GAAI,GAChCrhE,EAAQ,IAAIulE,GAAU,EAAG14L,GAI7B,OAHAmzH,EAAMylD,WAAaA,EACnBzlD,EAAMvrF,OAAS,GAERurF,GAGXkoE,oBAAqB,SAASzzJ,GAC1B,OAAOA,EAAO4zJ,eAAiBxvL,IAGnCk0J,6BAA8B,WAC1B,OAAO,KAIXu+B,GAAwB/9L,EAAM7E,OAAO,CACrCoF,KAAM,WAEFnI,KAAK4lM,WAAa,IAGtB7+I,OAAQ,SAAS8+I,GACb,IAAID,EAAa5lM,KAAK4lM,WAEtB,IAAK,IAAIjJ,KAAYkJ,EAAiB,CAClC,IAAIC,EAAaD,EAAgBlJ,GAC7B/oI,EAAQgyI,EAAWjJ,GACvBiJ,EAAWjJ,GAAY/oI,EAAQA,GAAS,CAAEz9C,IAAKm/G,EAAW18G,IAAKolJ,GAE/DpqG,EAAMz9C,IAAM9S,KAAK8S,IAAIy9C,EAAMz9C,IAAK2vL,EAAW3vL,KAC3Cy9C,EAAMh7C,IAAMvV,KAAKuV,IAAIg7C,EAAMh7C,IAAKktL,EAAWltL,OAInD68B,MAAO,SAASknJ,GACZ38L,KAAK4lM,WAAWjJ,QAAY7gD,GAGhCt7I,MAAO,SAASm8L,GACZ,OAAO38L,KAAK4lM,WAAWjJ,MAI3BoJ,GAAWnhC,EAAa7hK,OAAO,CAC/BoF,KAAM,SAASo+C,EAASr/C,EAAS8gK,GAC7BpD,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKo2J,QAAU,IAAI4U,EAAQzkH,EAASvmD,KAAKkH,QAAS8gK,GAClDhoK,KAAK+5C,OAAO/5C,KAAKo2J,UAGrBmP,aAAc,WACVvlK,KAAKo2J,QAAQlvJ,QAAQ4+J,OAAS9lK,KAAKkH,QAAQ4+J,QAG/C11B,OAAQ,SAASwxB,GACb,IAAI16J,EAAUlH,KAAKkH,QACfkrC,EAAWlrC,EAAQkrC,SACnBqsJ,EAAYv3L,EAAQu3L,UACpB79J,EAAO5gC,KAAKm1C,SAAS,GACrBi2H,EAAcxqI,EAAK15B,QACnBgyC,EAAMtY,EAAKsY,IACX68F,EAAUn1G,EAAK15B,QAAQ6uI,QACvB2+B,EAAW9S,EAEfwJ,EAAYn8B,MAAQ78F,EAAW49C,EAASvlE,EACxC2gJ,EAAY/T,OAASjlH,EAAW69C,EAAMD,EAElC9oF,EAAQ4F,WAAassL,GACjBhnJ,GACAg5H,EAAY/T,OAASpnE,GAEhBwuG,GAAavlJ,EAAIvsC,SAAWi1J,EAAUj1J,WACvCy+J,EAAY/T,OAASnnE,IAGzBk7E,EAAYn8B,MAAQwvD,EAAY9zK,EAAQF,EAErCvjB,EAAQ4F,WAAakjF,GAC5Bo7E,EAAY/T,OAASrnE,EACrBo7E,EAAYn8B,MAAQj/C,GACb9oF,EAAQ4F,WAAausL,GACxBjnJ,EACAg5H,EAAY/T,OAASonC,EAAYvuG,EAASD,EAE1Cm7E,EAAYn8B,MAAQwvD,EAAYh0K,EAAOE,EAEpCzjB,EAAQ4F,WAAawsL,KACxBlnJ,EAEIsiI,EADA+pB,EACW,IAAI98B,EACXC,EAAU3kF,GAAI2kF,EAAU1kF,GAAKhkC,EAAIvsC,SACjCi1J,EAAUzkF,GAAIykF,EAAU1kF,IAGjB,IAAIykF,EACXC,EAAU3kF,GAAI2kF,EAAUxkF,GACxBwkF,EAAUzkF,GAAIykF,EAAUxkF,GAAKlkC,EAAIvsC,WAIzCy+J,EAAYn8B,MAAQj/C,EAEhB0kF,EADA+pB,EACW,IAAI98B,EACXC,EAAUzkF,GAAIykF,EAAU1kF,GACxB0kF,EAAUzkF,GAAKjkC,EAAIlsC,QAAS40J,EAAUxkF,IAG/B,IAAIukF,EACXC,EAAU3kF,GAAK/jC,EAAIlsC,QAAS40J,EAAU1kF,GACtC0kF,EAAU3kF,GAAI2kF,EAAUxkF,MAMnCl2E,EAAQyyC,WACLvH,EACA2jG,EAAQlqH,KAAOkqH,EAAQjqH,OAClB4oJ,EAAS1nK,QAAU4zB,EAAKgnI,WAAW56J,SAAW,EAEnD+oI,EAAQ3xH,IAAM2xH,EAAQhqH,QACjB2oJ,EAAS/nK,SAAWi0B,EAAKgnI,WAAWj7J,UAAY,GAI7Di0B,EAAKwvG,OAAOskC,IAGhBsxB,eAAgB,SAASpF,GACrB,IACI37K,EADWjlB,KAAKkH,QAAQkrC,SACLp9B,EAAI3P,EACvBiQ,EAAQ2P,EAAQ,IAChBtZ,EAAMsZ,EAAQ,IACd2b,EAAO5gC,KAAKm1C,SAAS,GACrB8wJ,EAAYjmM,KAAKmM,OAAO+sC,IAE5B,GAAI+sJ,EAAU3wL,GAASsrL,EAAQtrL,IAAUsrL,EAAQj1L,GAAOs6L,EAAUt6L,GAAM,CACpE,IAAIi2J,EAAYhhI,EAAK+mI,WAAWxgK,QAChCy6J,EAAUtsJ,GAASjS,KAAKuV,IAAIqtL,EAAU3wL,GAAQsrL,EAAQtrL,IACtDssJ,EAAUj2J,GAAOtI,KAAK8S,IAAI8vL,EAAUt6L,GAAMi1L,EAAQj1L,IAElD3L,KAAKowI,OAAOwxB,OAwBxB,SAASskC,GAAmBh/L,GACxB,IAAIggK,EAAUhgK,EAAQggK,QAEtB,OAAOA,GAAWA,EAAQjkB,UAAiC,SAArBikB,EAAQjkB,SAtBlDod,EAAkB0lC,GAAU,CACxBj5L,SAAUwsL,GACV3gJ,OAAQ4mH,EAAW,GACnBxpB,QAASwpB,EAAW,GACpBnwC,MAAOouC,EACPvL,WAAY,GACZwV,OAAQ,CACJz6J,MAAO,EACPoiH,MAAO,IAEXqvE,WAAW,EACXrsJ,UAAU,EACVk/C,UAAW,CACP5rF,KAAMmvL,GACN1vJ,MAAOyvJ,IAEXh7I,OAAQ,IASZ,IAEIusJ,GAAMvhC,EAAa7hK,OAAO,CAC1BoF,KAAM,SAASO,EAAOxB,GAClB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAKkH,QAAUA,EACflH,KAAKovH,MAAQloH,EAAQkoH,OAASmvC,EAC9Bv+J,KAAKy+L,UAAYvnE,EAAel3H,KAAKkH,QAAQu3L,WAAW,GACxDz+L,KAAK0I,MAAQA,GAGjBkH,OAAQ,WACA5P,KAAK8/L,YAIT9/L,KAAK8/L,WAAY,EAEjB9/L,KAAKgiL,cACLhiL,KAAK2/L,aAED3/L,KAAK09L,UACL19L,KAAK+5C,OAAO/5C,KAAK09L,YAIzB1b,YAAa,WACT,IAAI96K,EAAUlH,KAAKkH,QACfwoK,EAASxoK,EAAQwoK,OAErB,GAAIA,EAAOpjK,QAAS,CAChB,IAEI0zL,EAFAh4B,EAAYhoK,KAAKgoK,YACjBmL,EAAgBzT,EAAYgQ,GAI5BswB,EADA7sB,EACYA,EAAcnL,GAEdhoK,KAAKigM,YAAYvwB,EAAOh/J,QAGxC1Q,KAAK6zB,MAAQ,IAAIkyK,GAAS/F,EACtBx3L,EAAW,CACP4pC,SAAUlrC,EAAQkrC,UAEtBs9H,GACD1H,GACHhoK,KAAK+5C,OAAO/5C,KAAK6zB,SAIzBosK,YAAa,SAASvvL,GAClB,OAAO1Q,KAAK49L,MAAM4B,iBAAiBx/L,KAAM0Q,IAG7C0/H,OAAQ,SAASwxB,GAGb5hK,KAAK4P,SAEL,IAAIikB,EAAQ7zB,KAAK6zB,MAajB,GAXA7zB,KAAKk5C,IAAM0oH,EAEP/tI,IACAA,EAAM3sB,QAAQu3L,UAAYz+L,KAAKy+L,UAC/B5qK,EAAMu8G,OAAOwxB,IAGb5hK,KAAKqxK,MACLrxK,KAAKqxK,KAAKjhC,OAAOwxB,GAGjB5hK,KAAKgwL,UACL,IAAK,IAAIzoL,EAAI,EAAGA,EAAIvH,KAAKgwL,UAAUxoL,OAAQD,IAlBhCvH,KAmBEgwL,UAAUzoL,GAAG6oI,OAAOwxB,IAKzC2D,aAAc,WACV,IAAIp0C,EAAWnxH,KAGXk5C,EADMl5C,KACIk5C,IACVhyC,EAFMlH,KAEQkH,QACdw/J,EAAex/J,EAAQg3I,OAE3B,IAAqB,IAAjBl+I,KAAKsM,QAGL,GAFAs4J,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAE9B0mK,EAAc,CACd,IAAIxoB,EAASl+I,KAAKomM,WAAa1/B,EAAa,CACxCI,SAAU9mK,KAAK8mK,SACfzyI,SAAUr0B,KAAKq0B,SACf3rB,MAAO1I,KAAK0I,MACZ4B,OAAQtK,KAAKglK,YACbl2H,OAAQ9uC,KAAK8uC,OACb7iB,WAAYjsB,KAAKisB,WACjByyK,WAAY1+L,KAAK0+L,WACjB33B,aAAc/mK,KAAK+mK,aACnBngH,MAAO5mD,KAAK4mD,MACZykC,KAAMnyC,EAAI2pH,SACV0C,aAAc,WACV,IAAIrxG,EAAQ,IAAIs6E,GAEhB,OADArd,EAASk1E,WAAWnyI,GACbA,GAEXhtD,QAASA,IAGTg3I,GACAl+I,KAAKk+I,OAAOnkG,OAAOmkG,QAEhBhlG,EAAIlsC,QAAU,GAAKksC,EAAIvsC,SAAW,GACzC3M,KAAKqmM,WAAWrmM,KAAKk+I,SAKjCmoD,WAAY,SAASnoD,GACjB,IAAIh3I,EAAUlH,KAAKkH,QACfugK,EAASvgK,EAAQugK,OACjB6+B,EAAgBtxE,EAAQyyC,EAAO7wI,SAAW6wI,EAAO7wI,QAAU1vB,EAAQ0vB,QACnEy0D,EAAOrrF,KAAKk5C,IAAI2pH,SAEpBx3E,EAAK57E,KAAKzC,MAAQ3J,KAAK0S,MAAMs1E,EAAK57E,KAAKzC,OAEvC,IAAIoiC,EAAOpvC,KAAKomM,WAAa95D,GAAKc,SAAS/hD,EAAM,CAC7Cp4D,KAAM,CACFm8F,MAAOpvH,KAAKovH,MACZx4F,QAAS1vB,EAAQ0vB,SAErBinG,OAAQ,CACJzO,MAAOpvH,KAAKumM,iBACZv5L,MAAOy6J,EAAOz6J,MACd4pB,QAAS0vK,EACTtqD,SAAUyrB,EAAOzrB,YAIrBhvI,EAAQhN,KAAKk5C,IAAIlsC,QACjBL,EAAS3M,KAAKk5C,IAAIvsC,SAetB,IAbWzF,EAAQkrC,SAAWplC,EAAQL,GAjJpB,IAoJdoyJ,EAAiB3vH,IAGbpiC,EAAQ,GAAKL,EAAS,KACtByiC,EAAKloC,QAAQ22H,OAAO0O,SAAW,UAIvC2R,EAAOnkG,OAAO3K,GAEV82J,GAAmBh/L,GAAU,CAC7B,IAAIggK,EAAUlnK,KAAKgnK,sBAAsB53H,EAAM,CAAEo3J,UAAWxmM,KAAKovH,OAAS5mH,EAAW,CACjFmD,IAAMzE,EAAQkrC,cAAsB0pG,EAAX,CAAE,EAAG,IAC/B50I,EAAQggK,UAEXhpB,EAAOnkG,OAAOmtH,KAItBV,gBAAiB,SAAS/5J,GACtB,IAAI85J,EAAYj6B,GAAKc,SAASptI,KAAKk5C,IAAI2pH,SAAUp2J,GAEjD,OAAOsyJ,EAAiBwH,IAG5Bk6B,gBAAiB,WACb,OAAOzgM,KAAKomM,YAGhBv/B,oBAAqB,WACjB,MAAO,CACH3/J,QAASlH,KAAKkH,QACdmkF,KAAMrrF,KAAKk5C,IAAI2pH,SACf3kB,OAAQl+I,KAAKomM,aAIrBG,eAAgB,WACZ,IAAIn3E,EAAQpvH,KAAKovH,MACbq4C,EAASznK,KAAKkH,QAAQugK,OACtB71C,EAAa61C,EAAO4jB,aAAeyJ,GACnC2R,EAAch/B,EAAOr4C,MAMzB,OAJK4F,EAAQyxE,KACTA,EAAc,IAAIv1E,GAAM9B,GAAOwC,WAAWA,GAAYlC,SAGnD+2E,GAGX9F,cAAe,WACX,IAOIv7L,EAAGjB,EAPH8qB,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdgyC,EAAMjqB,EAAIiqB,IACVulJ,EAAYxvK,EAAIwvK,UAChBmC,EAAU5gM,KAAK49L,MAAMjwG,KAAKizG,WAAa1nJ,EACvC4nJ,EAAkBr2K,EAClBo2K,EAAgB5wG,EAGpB,GAAI/oF,EAAQkrC,SACRhtC,EAAI/B,KAAK8S,IAAI+iC,EAAIikC,GAAIyjH,EAAQzjH,IAv1EpB,EAw1ELshH,EACAt6L,EAAId,KAAKuV,IAAIsgC,EAAIgkC,GAAI0jH,EAAQ1jH,KAE7B/4E,EAAId,KAAK8S,IAAI+iC,EAAIkkC,GAAIwjH,EAAQxjH,IAC7ByjH,EAAgB3wG,OAEjB,CACH,IAAIjT,EAAK55E,KAAKuV,IAAIsgC,EAAI+jC,GAAI2jH,EAAQ3jH,IAC9BE,EAAK95E,KAAK8S,IAAI+iC,EAAIikC,GAAIyjH,EAAQzjH,IAE9Bj2E,EAAQk1L,WACRyE,EAAgB3wG,EACZuuG,GACAqC,EAAkBn2K,EAClBvlB,EAAI+3E,GAEJ/3E,EAAI63E,EAER94E,EAAId,KAAKuV,IAAIsgC,EAAIgkC,GAAI0jH,EAAQ1jH,IA12ExB,IA42EDuhH,EACAr5L,EAAI+3E,EA72EH,GA+2ED/3E,EAAI63E,EA/2EH,EAg3ED6jH,EAAkBn2K,GAEtBxmB,EAAId,KAAKuV,IAAIsgC,EAAIgkC,GAAI0jH,EAAQ1jH,KAIrC,MAAO,CACHm9C,MAAO,IAAIL,EAAM50H,EAAGjB,GACpB8qI,MAAO,CACH38F,WAAYwuJ,EACZ1uJ,SAAUyuJ,KAKtBE,YAAa,SAAS7nJ,GAClB,OAAOl5C,KAAKk5C,IAAIqpH,SAASrpH,IAG7B8uH,UAAW,WACP,MAAO,CACH3zI,SAAUr0B,KAAKq0B,SACfyyI,SAAU9mK,KAAK8mK,SACfp+J,MAAO1I,KAAK0I,MACZujB,WAAYjsB,KAAKisB,WACjByyK,WAAY1+L,KAAK0+L,WACjB33B,aAAc/mK,KAAK+mK,aACnBngH,MAAO5mD,KAAK4mD,MACZ9X,OAAQ9uC,KAAK8uC,WA0BzB,SAASxtC,GAAQ6yB,EAAUnL,GACvBmL,EAAS7yB,QAAQ0nB,GAGrB,SAAS2mH,GAAex7G,EAAUnL,GAG9B,IAFA,IAAIxhB,EAAS2sB,EAAS3sB,OAEboC,EAAMpC,EAAS,EAAGoC,GAAO,EAAGA,IACjCof,EAASmL,EAASvqB,GAAMA,EAAMpC,EAAS,GA7B/CgB,EAAW29L,GAAI99L,UAAWo3L,IAC1Bj3L,EAAW29L,GAAI99L,UAAWq3L,IAE1ByG,GAAI99L,UAAUzH,SAAW,CACrB6mK,OAAQ,CACJz6J,MAAO,GAEXolC,UAAU,EACV80H,QAAS,CACLjkB,SAAU,SAEdysB,OAAQ,CACJpjK,SAAS,EACToE,OAAQ,OAEZkmB,QAAS,EACTu6I,MAAO,CACHt9I,MAAO,KAgBf,IAAI6yK,GAAgB9hC,EAAa7hK,OAAO,CACpCoF,KAAM,SAASjB,GACX09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKsB,QAAU4F,EAAQq2I,IAAM5N,GAAiBruI,IAGlD8uI,OAAQ,SAASl3F,GACb,IAAIjqB,EAAMjvB,KAAKkH,QACXkrC,EAAWnjB,EAAImjB,SACfvhC,EAAMoe,EAAIpe,IACV0+H,EAAUtgH,EAAIsgH,QACdp6F,EAAWn1C,KAAKm1C,SAChBr6B,EAAQq6B,EAAS3tC,OACjBw9B,EAAOoN,EAAWp9B,EAAI3P,EACtBshM,EAAQ7rL,EAAQjK,EAAO0+H,GAAWz0H,EAAQ,GAC1C8rL,GAAYx0J,EAAW8G,EAAIvsC,SAAWusC,EAAIlsC,SAAW25L,EACrD75L,EAAWosC,EAAIlU,EAAO,GAAK4hK,GAAY/1L,EAAM,GAEjD7Q,KAAKsB,QAAQ6zC,GAAU,SAAUzR,EAAO95B,GACpC,IAAIy2L,GAAY38J,EAAMwV,KAAOA,GAAK/xC,QAElCk5L,EAASr7J,EAAO,GAAKl4B,EACrBuzL,EAASr7J,EAAO,GAAKl4B,EAAW85L,EAEhCljK,EAAM0sG,OAAOiwD,GACTz2L,EAAMkR,EAAQ,IACdhO,GAAa85L,EAAWr3D,GAG5BziI,GAAY85L,QAKxBvmC,EAAkBqmC,GAAe,CAC7Bt0J,UAAU,EACVvhC,IAAK,EACL0+H,QAAS,IAGb,IAAIs3D,GAAYjiC,EAAa7hK,OAAO,CAChCqtI,OAAQ,SAASwxB,GAQb,IAPA,IAEIklC,EAAe9mM,KAAKkH,QAAQkrC,SAAW/sC,EAAI2P,EAC3CmgC,EAAWn1C,KAAKm1C,SAChBkwH,EAAgBlwH,EAAS3tC,OACzB0xC,EAAMl5C,KAAKk5C,IAAM,IAAIyoH,EAEhBp6J,EAAI,EAAGA,EAAI89J,EAAe99J,IAAK,CACpC,IAAIu9J,EAAe3vH,EAAS5tC,GAE5B,IAA6B,IAAzBu9J,EAAax4J,QAAmB,CAChC,IAAI+zL,EAAWv7B,EAAa5rH,IAAI/xC,QAChCk5L,EAASt+B,OAAOH,EAAWklC,GAEjB,IAANv/L,IACA2xC,EAfGl5C,KAeYk5C,IAAMmnJ,EAASl5L,SAGlC29J,EAAa10B,OAAOiwD,GACpBnnJ,EAAIltB,KAAKq0K,QAMzBhgC,EAAkBwmC,GAAW,CACzBz0J,UAAU,IAGd,IAAI20J,GAAW9L,GAAiBl4L,OAAO,CACnC6M,OAAQ,WACJqrL,GAAiBlzL,GAAG6H,OAAOrF,KAAKvK,MAChCA,KAAK88L,oBAGTlB,UAAW,WACP,OAAOuK,IAGXa,YAAa,WACT,OAAON,IAGXO,UAAW,WACP,OAAOJ,IAGXnK,YAAa,SAASC,EAAUC,GAG5B,OAFa3B,GAAiBlzL,GAAG20L,YAAYnyL,KAAKvK,KAAM28L,EAAUC,IAKtEe,YAAa,SAAS9vL,EAAM+gB,GACxB,IAAIkxJ,EAAalxJ,EAAOkxJ,WACpBhxI,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAElBz0L,EADMlH,KACQkH,QACdiuC,EAFMn1C,KAESm1C,SACfinJ,EAAYl1L,EAAQk1L,UACpB1zL,EAAQ1I,KAAKw0L,WAAW3mL,GACxB6tL,EAAe17L,KAAK07L,aAAa5sJ,EAAQ6sJ,GAEzClrB,EAAeirB,EAAahsB,OAC5B0sB,GACI3rB,EAAa3jK,WAAawsL,KAC1B7oB,EAAa3jK,SAAWssL,IAIhCsC,EAAaU,UAAYA,EAEzB,IAAIhtE,EAAQvhH,EAAK+gB,OAAOwgG,OAAStgF,EAAOsgF,MACpC1mH,EAAQ,GAAKgzL,EAAawL,gBAC1B93E,EAAQssE,EAAawL,eAGzBxL,EAAe17L,KAAK89L,iBAAiBpC,EAAchzL,EAAOkmB,GACtD1lB,EAAW4lC,EAAOsgF,SAClBA,EAAQssE,EAAatsE,OAGzB,IACIiL,EAAQ,IADIr6H,KAAK47L,YACT,CAAclzL,EAAOgzL,GACjCrhE,EAAMjL,MAAQA,EAEd,IAAI+3E,EAAUhyJ,EAAS2qI,GAClBqnB,IAEDA,EAAU,IADQnnM,KAAKgnM,cACb,CAAgB,CACtB50J,SAAUlrC,EAAQ20L,WAClBhrL,IAAK3J,EAAQ2J,IACb0+H,QAASroI,EAAQqoI,QACjBgO,KAAMr2I,EAAQ20L,aAAe77L,KAAKmlK,cAAgB,IAAI5nB,MAE1Dv9I,KAAK+5C,OAAOotJ,IAGZ/K,EACgBp8L,KAAKonM,aAAat4J,EAAQq4J,GAChCptJ,OAAOsgF,GAEjB8sE,EAAQptJ,OAAOsgF,GAGnB,OAAOA,GAGX+sE,aAAc,SAASt4J,EAAQq4J,GAC3B,IAGIE,EAHAn1D,EAAQpjG,EAAOojG,MACfo1D,EAAap1D,GAAQA,EAAMh+E,OAAiBg+E,EAC5Cq1D,EAAQJ,EAAQhyJ,SAGpB,UAAWmyJ,IAAetW,EAAiB9qL,QACvC,IAAK,IAAIqB,EAAI,EAAGA,EAAIggM,EAAM//L,OAAQD,IAC9B,GAAIggM,EAAMhgM,GAAGigM,cAAgBF,EAAY,CACrCD,EAAYE,EAAMhgM,GAClB,YAIR8/L,EAAYE,EAAM,GAGjBF,KAEDA,EAAY,IADIrnM,KAAKinM,YACT,CAAc,CACtB70J,UAAWpyC,KAAKkH,QAAQ20L,cAElB2L,YAAcF,EACxBH,EAAQptJ,OAAOstJ,IAGnB,OAAOA,GAGX/I,aAAc,SAAS5Q,EAAc5N,EAAYhF,GAC7C,IAAI5zK,EAAUlH,KAAKkH,QACfo3L,EAAe5Q,EAAa3a,QAAQ+M,GACpC9nI,EAAa8iI,EAAU9iI,aAE3B,GAAI9wC,EAAQk1L,UAAW,CACnB,IAAIqL,EAAW3sB,EAAU/H,QAAQ/6H,EAAYA,GAAY,GACrD25F,EAAYzqI,EAAQ20L,WAAax2L,EAAI2P,EACzCspL,EAAa3sD,EAAY,GAAK2sD,EAAa3sD,EAAY,GAAK81D,EAAS91D,EAAY,GAGrF,OAAO2sD,GAGXM,iBAAkB,SAAST,GAIvB,IAHA,IAAIhpJ,EAAWn1C,KAAKm1C,SAChBC,EAAiBD,EAAS3tC,OAErBD,EAAI,EAAGA,EAAI6tC,EAAgB7tC,IAChC4tC,EAAS5tC,GAAG6oI,OAAO+tD,EAAc52L,KAIzCk+J,gBAAiB,WACbzlK,KAAK0nM,uBACLzM,GAAiBlzL,GAAG09J,gBAAgBl7J,KAAKvK,MAErCijM,GAAajjM,KAAKkH,QAAQ4nC,SAC1B9uC,KAAKmjM,yBAIbA,sBAAuB,WAKnB,IAJA,IAEI9hE,EAASrhI,KAAKqhI,OAETz3H,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAAO,CAC1C,IAAIywH,EAAQgH,EAAOz3H,GACf+9L,EAActtE,EAAM6jB,OACpBypD,GAAe3yE,EAAQ2yE,EAAYzgM,QAAQ0yC,UAC3CygF,EAAMnzH,QAAQoqF,UARPtxF,KAQ4BkH,QAAQoqF,UAC3C+oC,EAAMorC,qBAKlBiiC,qBAAsB,WAClB,IAEI9uJ,EAFA1xC,EAAUlH,KAAKkH,QACfoqF,EAAYpqF,EAAQoqF,WAAa,GAGrC,GAAIpqF,EAAQk1L,UAAW,CACnB,IAAIthB,EAAY96K,KAAK26L,gBAAgBzzL,EAAQ4nC,OAAO,IACpD8J,EAASkiI,EAAU/H,QAAQ+H,EAAU9iI,mBAErCY,EAAS54C,KAAK0tL,aAAa3a,QAAQ,GAGvCzhF,EAAU14C,OAAS,IAAIq4I,GAAcr4I,EAAOqkC,GAAIrkC,EAAOskC,IACvDoU,EAAUl/C,UAAYlrC,EAAQ20L,cAItCx7B,EAAkB0mC,GAAU,CACxBz1G,UAAW,CACP5rF,KAAMmwL,MAId,IAAI+R,GAAchjC,EAAa7hK,OAAO,CAClCoF,KAAM,SAASO,EAAOxB,GAClB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAChClH,KAAK0I,MAAQA,GAGjB0nI,OAAQ,SAASl3F,GACb,IAAIjqB,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdwB,EAAQumB,EAAIvmB,MAEZoyK,EADQ7rJ,EAAI2uK,MACMjD,gBAAgBzzL,GAClC2gM,EAAS/sB,EAAU/H,QAAQrqK,EAAM6oF,KAAM7oF,EAAM48C,OAC7CwiJ,EAAShtB,EAAU/H,QAAQrqK,EAAMotH,IAAKptH,EAAMyhL,MAEhD0d,EAAO5qH,GAAK6qH,EAAO7qH,GAAK/jC,EAAI+jC,GAC5B4qH,EAAO1qH,GAAK2qH,EAAO3qH,GAAKjkC,EAAIikC,GAE5Bn9E,KAAK+nM,SAAWF,EAEhB,IAAIG,EAAMF,EAAOvqH,SAASn4E,EACtBi8H,EAAS,GAEbA,EAAO1/H,KAAK,CAAE,CAAEqmM,EAAKF,EAAO5qH,IAAM,CAAE8qH,EAAKH,EAAO3qH,MAChDmkD,EAAO1/H,KAAK,CAAE,CAAEqmM,EAAKH,EAAOzqH,IAAM,CAAE4qH,EAAKF,EAAO1qH,MAEhDp9E,KAAKioM,MAAQ5mE,EAEbrhI,KAAKk5C,IAAM4uJ,EAAO3gM,QAAQ6kB,KAAK67K,GAE1B7nM,KAAK8/L,YACN9/L,KAAK8/L,WAAY,EACjB9/L,KAAK2/L,cAGT3/L,KAAKkoM,cAGTA,WAAY,WACJloM,KAAKqxK,MACLrxK,KAAKqxK,KAAKjhC,OAAOpwI,KAAKk5C,MAI9BqsH,aAAc,WACVX,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAClCA,KAAKmoM,YAAcnoM,KAAKooM,WAAWpoM,KAAKkH,SACxClH,KAAKk+I,OAAOnkG,OACR/5C,KAAKmoM,aAGTnoM,KAAKqoM,iBAGTD,WAAY,SAASlhM,GACjB,IAAIgtD,EAAQ,IAAIs6E,GAKhB,OAHAxuI,KAAKsoM,WAAWp0I,EAAOhtD,GACvBlH,KAAKuoM,YAAYr0I,EAAOhtD,GAEjBgtD,GAGXo0I,WAAY,SAAShyK,EAAWpvB,GAC5B,IAAI+W,EAAOquH,GAAKc,SAASptI,KAAK+nM,SAASllC,SAAU,CAC7C5vI,KAAM,CACFm8F,MAAOpvH,KAAKovH,MACZx4F,QAAS1vB,EAAQ0vB,SAErBinG,OAAQ,OAGR32H,EAAQugK,OAAOz6J,MAAQ,GACvBiR,EAAK/W,QAAQsoB,IAAI,SAAU,CACvB4/F,MAAOpvH,KAAKumM,iBACZv5L,MAAO9F,EAAQugK,OAAOz6J,MACtBgvI,SAAU90I,EAAQugK,OAAOzrB,SACzBplH,QAASsgG,EAAehwH,EAAQugK,OAAO7wI,QAAS1vB,EAAQ0vB,WAIhEmoI,EAAiB9gJ,GACjBqY,EAAUyjB,OAAO97B,GAEbioL,GAAmBh/L,IACnBovB,EAAUyjB,OAAO/5C,KAAKgnK,sBAAsB/oJ,EAAM,CAAEuoL,UAAWxmM,KAAKovH,OAAS5mH,EAAW,CACpFmD,IAAMzE,EAAQkrC,cAAsB0pG,EAAX,CAAE,EAAG,IAC/B50I,EAAQggK,YAInBqhC,YAAa,SAASjyK,EAAWpvB,GAC7BlH,KAAKwoM,UAAUlyK,EAAWpvB,EAASlH,KAAKioM,MAAO/gM,EAAQwmK,OAG3D86B,UAAW,SAASlyK,EAAWpvB,EAAS+gM,EAAOx0B,GAC3C,GAAKw0B,EAcL,IAVA,IAAIQ,EAAY,CACZ5qE,OAAQ,CACJzO,MAAOqkD,EAAYrkD,OAASpvH,KAAKovH,MACjCx4F,QAASsgG,EAAeu8C,EAAY78I,QAAS1vB,EAAQ0vB,SACrD5pB,MAAOymK,EAAYzmK,MACnBgvI,SAAUy3B,EAAYz3B,SACtBI,QAAS,SAIR70I,EAAI,EAAGA,EAAI0gM,EAAMzgM,OAAQD,IAAK,CACnC,IAAImmK,EAAOphC,GAAKrQ,WAAWgsE,EAAM1gM,GAAIkhM,GACrC1pC,EAAiB2O,GACjBp3I,EAAUyjB,OAAO2zH,KAIzB64B,eAAgB,WACZ,IAAI9+B,EAASznK,KAAKkH,QAAQugK,OACtBg/B,EAAch/B,EAAOr4C,MAMzB,OAJK4F,EAAQyxE,KACTA,EAAc,IAAIv1E,GAAMlxH,KAAKovH,OAAOwC,WAAW61C,EAAO4jB,aAAa37D,SAGhE+2E,GAGX4B,cAAe,WACX,IAAInhC,EAAU56B,GAAKc,SAASptI,KAAKk5C,IAAI2pH,SAAU,CAC3C5vI,KAAM,CACFm8F,MAAOmvC,EACP3nI,QAAS,GAEbinG,OAAQ,OAGZ79H,KAAKk+I,OAAOnkG,OAAOmtH,IAGvBV,gBAAiB,WACb,IAAID,EAAYvmK,KAAKkH,QAAQq/J,UACzBmiC,EAAc1oM,KAAKovH,MAEvBpvH,KAAKovH,MAAQm3C,EAAUn3C,OAASpvH,KAAKovH,MACrC,IAAI83C,EAAUlnK,KAAKooM,WACf5/L,EAAW,GAAIxI,KAAKkH,QAAS,CACzBwmK,KAAM,CACFt+C,MAAOpvH,KAAKumM,mBAEjBhgC,IAIP,OAFAvmK,KAAKovH,MAAQs5E,EAENxhC,GAGXu5B,gBAAiB,WACb,OAAOzgM,KAAKmoM,aAGhBthC,oBAAqB,WACjB,MAAO,CACH3/J,QAASlH,KAAKkH,QACdmkF,KAAMrrF,KAAKk5C,IAAI2pH,SACf3kB,OAAQl+I,KAAKmoM,cAIrBxH,cAAe,WACX,IAAIznJ,EAAMl5C,KAAKk5C,IACX0nJ,EAAU5gM,KAAK49L,MAAMjwG,KAAKizG,WAAa1nJ,EAE3C,MAAO,CACHmhF,MAAO,IAAIL,EAAM9gF,EAAIikC,GA31FZ,EA21FiC95E,KAAKuV,IAAIsgC,EAAIgkC,GAAI0jH,EAAQ1jH,IA31F1D,GA41FT+xD,MAAO,CACH38F,WAAY7nB,EACZ2nB,SAAU69C,KAKtBgwG,YAAa,SAASvvL,GAClB,OAAO1Q,KAAK49L,MAAM4B,iBAAiBx/L,KAAM0Q,IAG7CqwL,YAAa,SAAS7nJ,GAClB,OAAOl5C,KAAKk5C,IAAIqpH,SAASrpH,MA4CjC,SAASyvJ,GAAW7vL,GAChB,OAAO+4K,GAAa/4K,KAAYA,EAAOtR,OAzC3C64J,EAAkBunC,GAAa,CAC3Bx1J,UAAU,EACVq1H,OAAQ,CACJ4jB,YAAa,IAEjB3d,KAAM,CACF1gK,MAAO,GAEXk6J,QAAS,CACLjkB,SAAU,SAEdkZ,QAAS,CACLzrJ,OAAQ,0MAQZ61J,UAAW,CACP3vI,QAAS,EACT6wI,OAAQ,CACJz6J,MAAO,EACP4pB,QAAS,GAEb82I,KAAM,CACF1gK,MAAO,EACP4pB,QAAS,IAGjBu6I,MAAO,CACH7kK,SAAS,EACTunB,MAAO,MAIfrrB,EAAWo/L,GAAYv/L,UAAWo3L,IAClCj3L,EAAWo/L,GAAYv/L,UAAWq3L,IAMlC,IAAIkJ,GAAmB3N,GAAiBl4L,OAAO,CAC3C67L,iBAAkB,SAAST,GAIvB,IAHA,IAAIhpJ,EAAWn1C,KAAKm1C,SAChBC,EAAiBD,EAAS3tC,OAErBD,EAAI,EAAGA,EAAI6tC,EAAgB7tC,IAChC4tC,EAAS5tC,GAAG6oI,OAAO+tD,EAAc52L,KAIzCk0L,SAAU,SAAS5tL,EAAM+gB,GACrB,IAYIyrG,EAZAylD,EAAalxJ,EAAOkxJ,WACpBhZ,EAAWl4I,EAAOk4I,SAClBh4H,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAElBxmJ,EADMn1C,KACSm1C,SACfjuC,EAFMlH,KAEQkH,QACdwB,EAAQmF,EAAK2kL,YAEbt+G,EAAWy0H,GADE3oM,KAAK6oM,WAAWngM,IAE7B2rB,EAAWya,EAAOjhC,KAAKiyK,GACvBsb,EAAiBp7L,KAAKo7L,eAAetb,GAGpCsb,IACDp7L,KAAKo7L,eAAetb,GAAcsb,EAAiB,IAGnDlnH,IACAmmD,EAAQr6H,KAAK29L,YAAY9vL,EAAM+gB,IAGnC,IAAIu4K,EAAUhyJ,EAAS2qI,GAClBqnB,IACDA,EAAU,IAAIT,GAAc,CACxBt0J,SAAUlrC,EAAQ20L,WAClBhrL,IAAK3J,EAAQ2J,IACb0+H,QAASroI,EAAQqoI,QACjBgO,KAAMr2I,EAAQ20L,aAAe77L,KAAKmlK,cAAgB,IAAI5nB,MAE1Dv9I,KAAK+5C,OAAOotJ,IAGZ9sE,IACAr6H,KAAKy9L,YAAY/0L,EAAOkmB,GAExBu4K,EAAQptJ,OAAOsgF,GAEfA,EAAMylD,WAAaA,EACnBzlD,EAAMysC,SAAWA,EACjBzsC,EAAMvrF,OAASA,EACfurF,EAAMshE,SAAWA,EACjBthE,EAAMujE,MAAQ59L,KACdq6H,EAAMhmG,SAAWA,EACjBgmG,EAAMwjE,SAAWhwL,EAAK+gB,OAAOivK,UAGjC79L,KAAKqhI,OAAO1/H,KAAK04H,GACjB+gE,EAAez5L,KAAK04H,IAGxBuhE,UAAW,WACP,OAAOgM,IAGXjK,YAAa,SAAS9vL,EAAM+gB,GACxB,IAAIkgB,EAASlgB,EAAOkgB,OAChB8sJ,EAAY57L,KAAK47L,YACjBlzL,EAAQmF,EAAK2kL,YACbkJ,EAAelzL,EAAW,GAAIsmC,GAC9BsgF,EAAQvhH,EAAK+gB,OAAOwgG,OAAStgF,EAAOsgF,MAExCssE,EAAe17L,KAAK89L,iBAAiBpC,EAAchzL,EAAOkmB,GAEtDkgB,EAAOppC,OAASuwL,IACZvtL,EAAM6oF,KAAO7oF,EAAM48C,QACnB8pE,EAAQvhH,EAAK+gB,OAAO08J,WAAax8I,EAAOw8I,WAAax8I,EAAOsgF,OAIhElmH,EAAW4lC,EAAOsgF,SAClBA,EAAQssE,EAAatsE,OAGzBssE,EAAatpJ,UAAYpyC,KAAKkH,QAAQ20L,WAEtC,IAAIxhE,EAAQ,IAAIuhE,EAAUlzL,EAAOgzL,GAGjC,OAFArhE,EAAMjL,MAAQA,EAEPiL,GAGXwuE,WAAY,SAASngM,GACjB,MAAO,CAAEA,EAAMotH,IAAKptH,EAAM6oF,KAAM7oF,EAAM48C,MAAO58C,EAAMyhL,OAGvDsT,YAAa,SAAS/0L,EAAOkmB,GACzB,IAAI+tK,EAAW/tK,EAAOkgB,OAAO9J,KACzBh1B,EAAQhQ,KAAK6oM,WAAWngM,GACxBu1L,EAAYj+L,KAAKm7L,gBAAgBwB,GAErCsB,EAAYj+L,KAAKm7L,gBAAgBwB,GAC7BsB,GAAa,CAAE9nL,IAAKm/G,EAAW18G,IAAKolJ,GAExCigC,EAAYj+L,KAAKm7L,gBAAgBwB,GAAY,CACzCxmL,IAAK9S,KAAK8S,IAAI/N,MAAM/E,KAAM2M,EAAMqN,OAAO,CAAE4gL,EAAU9nL,OACnDyC,IAAKvV,KAAKuV,IAAIxQ,MAAM/E,KAAM2M,EAAMqN,OAAO,CAAE4gL,EAAUrlL,SAI3D4mL,iBAAkB,SAASnlE,EAAO3pH,GAC9B,IAAIhI,EAAQ2xH,EAAM3xH,MAElB,OAAO1I,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EACjChI,EAAM6oF,KAAM7oF,EAAMyhL,KAClBzhL,EAAMotH,IAAKptH,EAAM48C,MAAO+0E,EAAMysC,WAItCs8B,gBAAiB,WACb,OAAOpjM,KAAKqhI,UAIpB74H,EAAWogM,GAAiBvgM,UAAW66L,IAEvC,IAAI4F,GAAUlB,GAAY7kM,OAAO,CAC7BoF,KAAM,SAASO,EAAOxB,GAClB0gM,GAAY7/L,GAAGI,KAAKoC,KAAKvK,KAAM0I,EAAOxB,GAEtClH,KAAK2/L,cAGTvvD,OAAQ,SAASl3F,GACb,IAKI6vJ,EAAaC,EALb/5K,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdwB,EAAQumB,EAAIvmB,MAEZoyK,EADQ7rJ,EAAI2uK,MACMjD,gBAAgBzzL,GAGtClH,KAAKgpM,QAAUA,EAAUluB,EAAU/H,QAAQrqK,EAAMugM,GAAIvgM,EAAMwgM,IAC3DlpM,KAAK+nM,SAAWiB,EAChBhpM,KAAKmpM,cAAcjwJ,GAEnBl5C,KAAK+oM,YAAcA,EAAcjuB,EAAU/H,QAAQrqK,EAAMiT,MAAOjT,EAAMk2K,OACtE5+K,KAAKopM,kBAAkBlwJ,GAEvB,IAAImwJ,EAAavuB,EAAU/H,QAAQrqK,EAAM+iL,QAEzC,GAAI/iL,EAAM8iL,KAAM,CACZ,IAAI8d,EAAWxuB,EAAU/H,QAAQrqK,EAAM8iL,MACvCxrL,KAAKupM,WAAavpM,KAAKwpM,eAAetwJ,EAAKowJ,GAG/CtpM,KAAKypM,cAAgBzpM,KAAK0pM,kBAAkBV,EAASD,GACrD/oM,KAAK2pM,aAAe3pM,KAAK4pM,iBAAiB1wJ,EAAKmwJ,GAE/CrpM,KAAKk5C,IAAM6vJ,EAAY5hM,QAAQ6kB,KAAKg9K,GACpChpM,KAAKkoM,cAGTiB,cAAe,SAASjwJ,GACpBl5C,KAAKgpM,QAAQ/rH,GAAK/jC,EAAI+jC,GACtBj9E,KAAKgpM,QAAQ7rH,GAAKjkC,EAAIikC,IAG1BisH,kBAAmB,SAASlwJ,GACxBl5C,KAAK+oM,YAAY9rH,GAAK/jC,EAAI+jC,GAC1Bj9E,KAAK+oM,YAAY5rH,GAAKjkC,EAAIikC,IAG9BqsH,eAAgB,SAAStwJ,EAAKowJ,GAC1B,MAAO,CACH,CAAE,CAAEpwJ,EAAI+jC,GAAIqsH,EAASpsH,IAAM,CAAEhkC,EAAIikC,GAAImsH,EAASpsH,OAItDwsH,kBAAmB,SAASV,EAASD,GACjC,IAAIf,EAAMe,EAAYxrH,SAASn4E,EAC/B,MAAO,CAAE,CACL,CAAE4iM,EAAM,EAAGe,EAAY7rH,IAAM,CAAE8qH,EAAM,EAAGe,EAAY7rH,IACpD,CAAE8qH,EAAKe,EAAY7rH,IAAM,CAAE8qH,EAAKgB,EAAQ9rH,KACzC,CACC,CAAE8qH,EAAM,EAAGe,EAAY3rH,IAAM,CAAE4qH,EAAM,EAAGe,EAAY3rH,IACpD,CAAE4qH,EAAKe,EAAY3rH,IAAM,CAAE4qH,EAAKgB,EAAQ5rH,OAIhDwsH,iBAAkB,SAAS1wJ,EAAKmwJ,GAC5B,MAAO,CACH,CAAE,CAAEnwJ,EAAI+jC,GAAIosH,EAAWnsH,IAAM,CAAEhkC,EAAIikC,GAAIksH,EAAWnsH,OAI1D2sH,eAAgB,SAAS3iM,GASrB,IARA,IAEIwB,EAAQ1I,KAAK0I,MACbohM,EAAWphM,EAAMohM,UAAY,GAC7BC,EAA6C,EAAhC1mM,KAAK6T,IAAIxO,EAAMwgM,GAAKxgM,EAAMugM,IACvC90K,EAAW,GACX23J,EAAU5kL,EAAQ4kL,SAAW,GAExBvkL,EAAI,EAAGA,EAAIuiM,EAAStiM,OAAQD,IAAK,CACtC,IAAIyiM,EAAeF,EAASviM,GAExBukL,EADAke,EAAethM,EAAMwgM,GAAKa,GAAcC,EAAethM,EAAMugM,GAAKc,EACxD7iM,EAAQ4iM,SAER5iM,EAAQghI,SAEtB,IAAI+hE,EAAgBzhM,EAAW,GAAIsjL,EAAQrkB,QAEtCzyC,EAAQi1E,EAAc76E,SACnB4F,EAlBGh1H,KAkBcovH,OACjB66E,EAAc76E,MAnBXpvH,KAmB4BovH,MAE/B66E,EAAc76E,MACV,IAAI8B,GAAM46D,EAAQ75B,YAAYrgC,WAAWkjE,IAAmBplE,SAIxE,IAAIuwB,EAAQ,IAAI8nB,EAAa,CACzBriK,KAAMomL,EAAQpmL,KACdsH,MAAO8+K,EAAQr8K,KACf9C,OAAQm/K,EAAQr8K,KAChBkqC,SAAUmyI,EAAQnyI,SAClBs4G,WAAY65B,EAAQ75B,WACpBwV,OAAQwiC,EACRrzK,QAASk1J,EAAQl1J,UAGrBqpH,EAAMv3I,MAAQshM,EAEd71K,EAASxyB,KAAKs+I,GAIlB,OADAjgJ,KAAKkqM,eAAe/1K,GACbA,GAGX+1K,eAAgB,SAASJ,GAMrB,IALA,IAAI34E,EAAWnxH,KAEX86K,EAAY96K,KAAK49L,MAAMjD,gBAAgB36L,KAAKkH,SAC5Cq2E,EAASv9E,KAAKk5C,IAAIqkC,SAEbh2E,EAAI,EAAGA,EAAIuiM,EAAStiM,OAAQD,IAAK,CACtC,IAAIyiM,EAAeF,EAASviM,GAAGmB,MAC3By3L,EAAYrlB,EAAU/H,QAAQi3B,GAE9B74E,EAASjqH,QAAQkrC,SACjB+tJ,EAAU5lK,KAAKgjD,EAAOn4E,GAEtB+6L,EAAU5lK,UAAKuhH,EAAWv+D,EAAOp5E,GAGrCgtH,EAASj4E,IAAMi4E,EAASj4E,IAAIltB,KAAKm0K,GACjC2J,EAASviM,GAAG6oI,OAAO+vD,KAI3BiI,WAAY,SAASlhM,GAIjB,IAHA,IAAIgtD,EAAQ0zI,GAAY7/L,GAAGqgM,WAAW79L,KAAKvK,KAAMkH,GAC7C4iM,EAAW9pM,KAAK6pM,eAAe3iM,GAE1BK,EAAI,EAAGA,EAAIuiM,EAAStiM,OAAQD,IAAK,CACtC,IAAIsE,EAAUi+L,EAASviM,GAAG0gK,aACtBp8J,GACAqoD,EAAMna,OAAOluC,GAIrB,OAAOqoD,GAGXq0I,YAAa,SAASjyK,EAAWpvB,GAC7BlH,KAAKwoM,UAAUlyK,EAAWpvB,EAASlH,KAAKypM,cAAeviM,EAAQqkL,UAC/DvrL,KAAKwoM,UAAUlyK,EAAWpvB,EAASlH,KAAK2pM,aAAcziM,EAAQukL,QAC9DzrL,KAAKwoM,UAAUlyK,EAAWpvB,EAASlH,KAAKupM,WAAYriM,EAAQskL,OAGhE+a,eAAgB,WACZ,OAAKvmM,KAAKkH,QAAQugK,QAAU,IAAIr4C,MACrBpvH,KAAKkH,QAAQugK,OAAOr4C,MAG3BpvH,KAAKovH,MACEpvH,KAAKovH,MAGTw4E,GAAY7/L,GAAGw+L,eAAeh8L,KAAKvK,SAIlDqgK,EAAkByoC,GAAS,CACvBrhC,OAAQ,CACJ4jB,YAAa,IAEjB3d,KAAM,CACF1gK,MAAO,GAEXy+K,OAAQ,CACJr8D,MAAO,WAEXo8D,KAAM,CACFx+K,MAAO,EACPgvI,SAAU,OACV5sB,MAAO,WAEX83C,QAAS,CACLjkB,SAAU,SAEdkZ,QAAS,CACLzrJ,OAAQ,oRAUZ61J,UAAW,CACP3vI,QAAS,EACT6wI,OAAQ,CACJz6J,MAAO,EACP4pB,QAAS,GAEb82I,KAAM,CACF1gK,MAAO,EACP4pB,QAAS,IAGjBu6I,MAAO,CACH7kK,SAAS,EACTunB,MAAO,IAEXi2K,SAAU,CACNx9L,SAAS,EACTmD,KAtuGe,EAuuGf/J,KAAMsrL,EAAiBtzB,MACvBzL,WAAYsM,EACZkJ,OAAQ,CACJz6J,MAAO,EACP4pB,QAAS,GAEbA,QAAS,GAEbsxG,SAAU,CACN57H,SAAS,EACTmD,KAjvGe,EAkvGf/J,KAAM+3J,EACNxL,WAAYsM,EACZkJ,OAAQ,CACJz6J,MAAO,EACP4pB,QAAS,GAEbA,QAAS,KAIjBpuB,EAAWsgM,GAAQzgM,UAAWo3L,IAE9B,IAAI0K,GAAkBrB,GAAQ/lM,OAAO,CACjComM,cAAe,SAASjwJ,GACpBl5C,KAAKgpM,QAAQ9rH,GAAKhkC,EAAIgkC,GACtBl9E,KAAKgpM,QAAQ5rH,GAAKlkC,EAAIkkC,IAG1BgsH,kBAAmB,SAASlwJ,GACxBl5C,KAAK+oM,YAAY7rH,GAAKhkC,EAAIgkC,GAC1Bl9E,KAAK+oM,YAAY3rH,GAAKlkC,EAAIkkC,IAG9BosH,eAAgB,SAAStwJ,EAAKowJ,GAC1B,MAAO,CACH,CAAE,CAAEA,EAASrsH,GAAI/jC,EAAIgkC,IAAM,CAAEosH,EAASrsH,GAAI/jC,EAAIkkC,OAItDssH,kBAAmB,SAASV,EAASD,GACjC,IAAIf,EAAMe,EAAYxrH,SAASp5E,EAC/B,MAAO,CAAE,CACL,CAAE4kM,EAAY9rH,GAAI+qH,EAAM,GAAK,CAAEe,EAAY9rH,GAAI+qH,EAAM,GACrD,CAAEe,EAAY9rH,GAAI+qH,GAAO,CAAEgB,EAAQ/rH,GAAI+qH,IACxC,CACC,CAAEe,EAAY5rH,GAAI6qH,EAAM,GAAK,CAAEe,EAAY5rH,GAAI6qH,EAAM,GACrD,CAAEe,EAAY5rH,GAAI6qH,GAAO,CAAEgB,EAAQ7rH,GAAI6qH,MAI/C4B,iBAAkB,SAAS1wJ,EAAKmwJ,GAC5B,MAAO,CACH,CAAE,CAAEA,EAAWpsH,GAAI/jC,EAAIgkC,IAAM,CAAEmsH,EAAWpsH,GAAI/jC,EAAIkkC,SAK1DgtH,GAAexB,GAAiB7lM,OAAO,CACvC04L,SAAU,SAAS5tL,EAAM+gB,GACrB,IAYIyrG,EAZAylD,EAAalxJ,EAAOkxJ,WACpBhZ,EAAWl4I,EAAOk4I,SAClBh4H,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAElBxmJ,EADMn1C,KACSm1C,SACfjuC,EAFMlH,KAEQkH,QACdwB,EAAQmF,EAAK2kL,YAEbt+G,EAAWy0H,GADE3oM,KAAK6oM,WAAWngM,IAE7B2rB,EAAWya,EAAOjhC,KAAKiyK,GACvBsb,EAAiBp7L,KAAKo7L,eAAetb,GAGpCsb,IACDp7L,KAAKo7L,eAAetb,GAAcsb,EAAiB,IAGnDlnH,IACAmmD,EAAQr6H,KAAK29L,YAAY9vL,EAAM+gB,IAGnC,IAAIu4K,EAAUhyJ,EAAS2qI,GAClBqnB,IACDA,EAAU,IAAIT,GAAc,CACxBt0J,SAAUlrC,EAAQ20L,WAClBhrL,IAAK3J,EAAQ2J,IACb0+H,QAASroI,EAAQqoI,QACjBgO,KAAMr2I,EAAQ20L,aAAe77L,KAAKmlK,cAAgB,IAAI5nB,MAE1Dv9I,KAAK+5C,OAAOotJ,IAGZ9sE,IACAr6H,KAAKy9L,YAAY/0L,EAAOkmB,GAExBu4K,EAAQptJ,OAAOsgF,GAEfA,EAAMylD,WAAaA,EACnBzlD,EAAMysC,SAAWA,EACjBzsC,EAAMvrF,OAASA,EACfurF,EAAMshE,SAAWA,EACjBthE,EAAMujE,MAAQ59L,KACdq6H,EAAMhmG,SAAWA,GAGrBr0B,KAAKqhI,OAAO1/H,KAAK04H,GACjB+gE,EAAez5L,KAAK04H,IAGxBuhE,UAAW,WACP,OAAI57L,KAAKkH,QAAQ20L,WACNsO,GAGJrB,IAGXD,WAAY,SAASngM,GACjB,MAAO,CACHA,EAAMiT,MAAOjT,EAAMugM,GAAIvgM,EAAM+iL,OAC7B/iL,EAAMwgM,GAAIxgM,EAAMk2K,QAIxB6e,YAAa,SAAS/0L,EAAOkmB,GACzB,IAAI+tK,EAAW/tK,EAAOkgB,OAAO9J,KACzBi5J,EAAYj+L,KAAKm7L,gBAAgBwB,GACjC3sL,EAAQhQ,KAAK6oM,WAAWngM,GAAO2U,OAAOrd,KAAKqqM,eAAe3hM,EAAMohM,WAEhE90E,EAAQtsH,EAAM8iL,QACdx7K,EAAQA,EAAMqN,OAAO3U,EAAM8iL,OAG/ByS,EAAYj+L,KAAKm7L,gBAAgBwB,GAC7BsB,GAAa,CAAE9nL,IAAKm/G,EAAW18G,IAAKolJ,GAExCigC,EAAYj+L,KAAKm7L,gBAAgBwB,GAAY,CACzCxmL,IAAK9S,KAAK8S,IAAI/N,MAAM/E,KAAM2M,EAAMqN,OAAO,CAAE4gL,EAAU9nL,OACnDyC,IAAKvV,KAAKuV,IAAIxQ,MAAM/E,KAAM2M,EAAMqN,OAAO,CAAE4gL,EAAUrlL,SAI3D4mL,iBAAkB,SAASnlE,EAAO3pH,GAC9B,IAAIhI,EAAQ2xH,EAAM3xH,MAElB,OAAO1I,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EACjChI,EAAMiT,MAAOjT,EAAMugM,GAAIvgM,EAAM+iL,OAC7B/iL,EAAMwgM,GAAIxgM,EAAMk2K,MAAOl2K,EAAM8iL,KAAMnxD,EAAMysC,WAIjDujC,eAAgB,SAASj2K,GAIrB,IAHA,IAAI5sB,GAAU4sB,GAAS,IAAI5sB,OACvB+O,EAAS,GAEJhP,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIynC,EAAO5a,EAAM7sB,GACbytH,EAAQhmF,IAAkB,OAATA,GACjBz4B,EAAO5U,KAAKqtC,GAIpB,OAAOz4B,GAGX6wJ,6BAA8B,WAC1B,OAAO,KAIXkjC,GAAkBvQ,GAAah3L,OAAO,CACtCm3L,QAAS,WACL,IAAItnB,EAAO5yK,KAAK4uK,MAAM27B,WAAWvqM,KAAK8uC,QAGtC,OAFW9uC,KAAKsrI,WAAasnC,EAAKzuK,EAAIyuK,EAAKxtK,KAMnD,SAAS8uE,GAASxrE,GACd,OAAOssH,EAAQtsH,IAAoB,OAAVA,EAG7B,IAAI8hM,GAAe5lC,EAAa7hK,OAAO,CACnCoF,KAAM,SAASsqK,EAAUvrK,GAErB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKyyK,SAAWA,EAChBzyK,KAAKmlK,aAAesN,EAAStN,aAC7BnlK,KAAKyqM,cAELzqM,KAAK4P,UAGT66L,YAAa,WAGTzqM,KAAK0qM,YAAc,GACnB1qM,KAAK2qM,YAAc,GAEnB3qM,KAAKqhI,OAAS,GACdrhI,KAAKq7L,aAAe,GACpBr7L,KAAKs7L,cAAgB,GACrBt7L,KAAKu7L,YAAc,IAGvB3rL,OAAQ,WACJ5P,KAAKw7L,mBAAmBx7L,KAAKy7L,SAASjyL,KAAKxJ,QAG/Cm9L,YAAa,SAAS9iE,EAAOp1G,EAAO2J,GAChC,IAWQulK,EAXJzrL,EAAQ2xH,EAAM3xH,MAAMuc,GACpB2lL,EAAkB3lL,EAAQ,QAC1B4lL,EAAW5lL,EAAQ,WACnB6lL,EAAY7lL,EAAQ,YACpB02K,EAAW/sK,EAAO+sK,SAClB7sJ,EAASlgB,EAAOkgB,OAChBkhJ,EAAY31D,EAAMnzH,QAAQ8oL,UAC1BoN,EAAWxuK,EAAOi8K,GAClBxN,EAAYzuK,EAAOk8K,GAEnBh2I,EAASpsD,KAELosD,EAASsoI,IAAatoI,EAASuoI,KAC/BlJ,EAAa,CAAEr+D,IAAKsnE,EAAUjT,KAAMkT,IAGpCrN,GAAah7D,EAAQg7D,EAAU4a,MAC/B5qM,KAAKs9L,kBAAoBt9L,KAAKs9L,mBAAqB,CAAEl4L,EAAG,GAAIjB,EAAG,IAC/DnE,KAAKs9L,kBAAkBr4K,GAAO02K,GAAY37L,KAAKs9L,kBAAkBr4K,GAAO02K,IACpE,IAAIjI,GAAqB1D,EAAU4a,GAAkB97J,EAAQ7pB,GAEjEkvK,EAAan0L,KAAKs9L,kBAAkBr4K,GAAO02K,GAAUpH,cAAc7rL,EAAOsnL,EAAU4a,KAGpFzW,GACAn0L,KAAKu9L,iBAAiBpJ,EAAY95D,EAAOp1G,KAKrDs4K,iBAAkB,SAASpJ,EAAY95D,EAAOp1G,GAC1C,IAAI6wG,EAAMq+D,EAAWr+D,IACjBq0D,EAAOgK,EAAWhK,KAClBr7I,EAASurF,EAAMvrF,OACf5nC,EAAUmzH,EAAMnzH,QAAQ8oL,UACxB1kD,EAAarmH,IAAUjQ,EACvBg6B,EAAO,GAEXqrF,EAAMp1G,EAAQ,OAAS6wG,EACvBuE,EAAMp1G,EAAQ,QAAUklK,EAExB9vD,EAAM21D,UAAY31D,EAAM21D,WAAa,GACrC,IAAI0N,EAAW,IAAI4M,GAAgBx0E,EAAKq0D,EAAM7+C,EAAYtrI,KAAM8uC,EAAQ5nC,GACxEmzH,EAAM21D,UAAUruL,KAAK+7L,GACrBrjE,EAAMtgF,OAAO2jJ,GAEb1uJ,EAAK/pB,GAAS6wG,EACd91H,KAAKy9L,YAAYzuJ,EAAMF,GACvBE,EAAK/pB,GAASklK,EACdnqL,KAAKy9L,YAAYzuJ,EAAMF,IAG3B2sJ,SAAU,SAAS/yL,EAAOkmB,GACtB,IAYIyrG,EAZAj1H,EAAIsD,EAAMtD,EACVjB,EAAIuE,EAAMvE,EACVw3L,EAAW/sK,EAAO+sK,SAClB7sJ,EAAS9uC,KAAKkH,QAAQ4nC,OAAO6sJ,GAC7B+G,EAAgB1iM,KAAKuiM,oBAAoBzzJ,GACzCusJ,EAAer7L,KAAKq7L,aAAaM,GAEjCnH,EAAa9rL,EACXwrE,GAAS9uE,IAAM8uE,GAAS/vE,KAC1BqwL,EAAax0L,KAAK+qM,mBAAmBvW,EAAYkO,IAIjDlO,KACAn6D,EAAQr6H,KAAK29L,YAAYnJ,EAAY5lK,MAEjCjsB,EAAEI,OAAOs3H,EAAOzrG,GAChB5uB,KAAKm9L,YAAY9iE,EAAOh1H,EAAGupB,GAC3B5uB,KAAKm9L,YAAY9iE,EAAOrlH,EAAG4Z,IAE/B5uB,KAAKy9L,YAAYjJ,EAAY5lK,EAAOkgB,SAGxC9uC,KAAKqhI,OAAO1/H,KAAK04H,GACjBghE,EAAa15L,KAAK04H,IAGtBkoE,oBAAqB,SAASzzJ,GAC1B,OAAOA,EAAO4zJ,eAGlBqI,mBAAoB,aAEpBtN,YAAa,SAAS/0L,EAAOomC,GACzB,IAAIs/H,EAAcpuK,KAAKmlK,aAAaoJ,KAChCy8B,EAAYl8J,EAAOm8J,MACnBC,EAAYp8J,EAAOq8J,MACnB/lM,EAAIsD,EAAMtD,EACVjB,EAAIuE,EAAMvE,EACVinM,EAAaprM,KAAK0qM,YAAYM,GAC9BK,EAAarrM,KAAK2qM,YAAYO,GAE9Bh3H,GAAS9uE,KACTgmM,EAAaprM,KAAK0qM,YAAYM,GAC1BI,GAAc,CAAEj1L,IAAKm/G,EAAW18G,IAAKolJ,GAErCp1J,EAASxD,KACTA,EAAImY,EAAU6wJ,EAAahpK,IAG/BgmM,EAAWj1L,IAAM9S,KAAK8S,IAAIi1L,EAAWj1L,IAAK/Q,GAC1CgmM,EAAWxyL,IAAMvV,KAAKuV,IAAIwyL,EAAWxyL,IAAKxT,IAG1C8uE,GAAS/vE,KACTknM,EAAarrM,KAAK2qM,YAAYO,GAC1BG,GAAc,CAAEl1L,IAAKm/G,EAAW18G,IAAKolJ,GAErCp1J,EAASzE,KACTA,EAAIoZ,EAAU6wJ,EAAajqK,IAG/BknM,EAAWl1L,IAAM9S,KAAK8S,IAAIk1L,EAAWl1L,IAAKhS,GAC1CknM,EAAWzyL,IAAMvV,KAAKuV,IAAIyyL,EAAWzyL,IAAKzU,KAIlD25L,iBAAkB,SAAS52L,EAASwB,EAAOkmB,GACvC,IAAIkgB,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAClB1oI,EAAQ,CACRryD,SAAUkuC,EAAOivJ,UACjBhD,SAAU,CACN,OAAQ,UAAW,UAAW,WAAY,SAAU,SACpD,sBAAuB,sBACvB,2BAIJiD,EAASh+L,KAAKu7L,YAAYI,GACzB3mE,EAAQgpE,KACTh+L,KAAKu7L,YAAYI,GAAYqC,EAASpD,GAAY1zL,EAAS,GAAI+rD,GAAO,IAG1E,IAAIyoI,EAAex0L,EAUnB,OATI82L,GAEApD,GADAc,EAAelzL,EAAW,GAAItB,GACJ,CACtBwB,MAAOA,EACPomC,OAAQA,EACRza,SAAUzF,EAAOyF,UAClB4+B,GAGAyoI,GAGXE,UAAW,WACP,OAAOgE,IAGXlE,aAAc,SAAS5sJ,EAAQ6sJ,GAC3B,IAAIz0L,EAAUlH,KAAKs7L,cAAcK,GACjC,IAAKz0L,EAAS,CACV,IAAItG,EAAWZ,KAAK47L,YAAYvzL,UAAUzH,SAC1CZ,KAAKs7L,cAAcK,GAAYz0L,EAAUsB,EAAW,GAAI5H,EAAU,CAC9DkrL,QAAS,CACLl1J,QAASkY,EAAOlY,SAEpBulI,QAAS,CACLzrJ,OAAQ1Q,KAAKkH,QAAQi1J,QAAQzrJ,QAEjCg/J,OAAQ,CACJh/J,OAAQ1Q,KAAKkH,QAAQwoK,OAAOh/J,SAEjCo+B,GAGP,OAAO5nC,GAGXy2L,YAAa,SAASj1L,EAAOkmB,GACzB,IAAIkgB,EAASlgB,EAAOkgB,OAChB4sJ,EAAe17L,KAAK07L,aAAa5sJ,EAAQlgB,EAAO+sK,UAChDvsE,EAAQxgG,EAAOwgG,OAAStgF,EAAOsgF,MAEnCssE,EAAe17L,KAAK89L,iBAAiBpC,EAAchzL,EAAOkmB,GAEtD1lB,EAAW4lC,EAAOsgF,SAClBA,EAAQssE,EAAatsE,OAGzB,IAAIiL,EAAQ,IAAIulE,GAAUl3L,EAAOgzL,GAKjC,OAJArhE,EAAMjL,MAAQA,EAEdpvH,KAAK+5C,OAAOsgF,GAELA,GAGXkwE,WAAY,SAASz7J,GACjB,IAAIk8J,EAAYl8J,EAAOm8J,MACnBC,EAAYp8J,EAAOq8J,MACnB14B,EAAWzyK,KAAKyyK,SAChBw4B,EAAQD,EAAYv4B,EAAS64B,WAAWN,GAAav4B,EAASzB,MAC9Dm6B,EAAQD,EAAYz4B,EAAS84B,WAAWL,GAAaz4B,EAASxB,MAElE,IAAKg6B,EACD,MAAM,IAAIx6L,MAAM,qCAAuCu6L,GAG3D,IAAKG,EACD,MAAM,IAAI16L,MAAM,qCAAuCy6L,GAG3D,MAAO,CACH9lM,EAAG6lM,EACH9mM,EAAGgnM,IAIX/6D,OAAQ,SAASwxB,GACb,IAAIzwC,EAAWnxH,KAEXo+L,EAAcp+L,KAAKqhI,OACnB2zC,GAASh1K,KAAKkH,QAAQ4yC,KACtB+4I,EAAU,EAEd7yL,KAAKw7L,oBAAmB,SAAU9yL,EAAOkmB,GACrC,IAAIyrG,EAAQ+jE,EAAYvL,KACpB0X,EAAap5E,EAASo5E,WAAW37K,EAAOkgB,QACxC+jI,EAAQ03B,EAAWnlM,EAAE2tK,QAAQrqK,EAAMtD,EAAGsD,EAAMtD,EAAG4vK,GAC/ClC,EAAQy3B,EAAWpmM,EAAE4uK,QAAQrqK,EAAMvE,EAAGuE,EAAMvE,EAAG6wK,GAEnD,GAAI36C,EACA,GAAIw4C,GAASC,EAAO,CAChB,IAAI0rB,EAAYrtE,EAASqtE,UAAU3rB,EAAOC,GAC1Cz4C,EAAM+V,OAAOouD,QAEbnkE,EAAM/tH,SAAU,KAK5BtM,KAAKk5C,IAAM0oH,GAGf48B,UAAW,SAAS3rB,EAAOC,GACvB,OAAO,IAAInR,EAAIkR,EAAM51F,GAAI61F,EAAM51F,GAAI21F,EAAM11F,GAAI21F,EAAM11F,KAGvDo+G,mBAAoB,SAASxyK,GAOzB,IANA,IAGI8lB,EADM9uC,KACOkH,QAAQ4nC,OACrBusJ,EAFMr7L,KAEaq7L,aAEdM,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAAY,CACzD,IAAI0C,EAAgBvvJ,EAAO6sJ,GACDN,EAAaM,KAEnCN,EAAaM,GAAY,IAG7B,IAAK,IAAI9I,EAAU,EAAGA,EAAUwL,EAAcxwL,KAAKrG,OAAQqrL,IAAW,CAClE,IAAIpiD,EAdGzwI,KAccm/L,WAAWd,EAAe1C,EAAU9I,GACrDnqL,EAAQ+nI,EAAM+hD,YACd5jK,EAAS6hH,EAAM7hH,OAEnB5F,EAAStgB,EAAOF,EAAW,CACvBqqL,QAASA,EACT/jJ,OAAQuvJ,EACR1C,SAAUA,EACVtnK,SAAUgqK,EAAcxwL,KAAKglL,GAC7B+K,MAvBG59L,MAwBJ4uB,OAKf4wK,iBAAkB,SAASnlE,EAAO3pH,GAC9B,IAAIhI,EAAQ2xH,EAAM3xH,MAClB,OAAO1I,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQhI,EAAMtD,EAAGsD,EAAMvE,IAGhEi/L,gBAAiB,WAGb,IAFA,IAAI/hE,EAASrhI,KAAKqhI,OACd9qH,EAAS,GACJ3M,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IACnC2M,EAAO5U,MAAM0/H,EAAOz3H,IAAQ,IAAI0+C,QAEpC,OAAO/xC,KAGf8pJ,EAAkBmqC,GAAc,CAC5B17J,OAAQ,GACRqtH,QAAS,CACLzrJ,OAAQ,YAEZg/J,OAAQ,CACJh/J,OAAQ,YAEZopC,MAAM,IAEVtxC,EAAWgiM,GAAaniM,UAAW66L,GAAoB,CACnD/D,WAAYlE,GAAiB5yL,UAAU82L,aAG3C,IAAIqM,GAAS5L,GAAU78L,OAAO,CAC1BoF,KAAM,SAASO,EAAOxB,GAClB04L,GAAU73L,GAAGI,KAAKoC,KAAKvK,KAAM0I,EAAOxB,GAEpClH,KAAK8mK,SAAWp+J,EAAMo+J,UAG1BN,gBAAiB,WACb,IAAID,EAAYvmK,KAAKkH,QAAQq/J,UACzBkB,EAASlB,EAAUkB,OACnBqkB,EAAU9rL,KAAKkH,QAAQ4kL,QACvBvuG,EAASv9E,KAAKk5C,IAAIqkC,SAClB5xD,GAAUmgK,EAAQr8K,KAAOq8K,EAAQrkB,OAAOz6J,MAAQy6J,EAAOz6J,OAAS,EAChEy+L,EAAiB,IAAIj9D,GACrB9iH,EAAS,IAAI3B,GAAQq0G,OAAO,IAAIwB,GAASxB,OAAO,CAAE7gD,EAAOn4E,EAAGm4E,EAAOp5E,EAAIwnB,EAAS,EAAI87I,EAAOz6J,MAAQ,GAAK2e,EAAS87I,EAAOz6J,MAAQ,GAAI,CACpI6wH,OAAQ,CACJzO,MAAO,QAEXn8F,KAAMjzB,KAAKmnK,eAAe,CACtBlkB,SAAU,eACV7zB,MAAO08D,EAAQ75B,WACfnf,MAAO,CAAE,CACL/1H,OAAQ,EACRqyG,MAAO08D,EAAQ75B,WACfr7H,QAAS,IACV,CACC7Z,OAAQ,EACRqyG,MAAO08D,EAAQ75B,WACfr7H,QAAS,QAIjBswI,EAAU,IAAIn9I,GAAQq0G,OAAO,IAAIwB,GAASxB,OAAO,CAAE7gD,EAAOn4E,EAAGm4E,EAAOp5E,GAAKwnB,GAAS,CAClFkyG,OAAQ,CACJzO,MAAOq4C,EAAOr4C,OACV,IAAI8B,GAAM46D,EAAQ75B,YAAYrgC,WAAWkjE,IAAmBplE,QAChE1iH,MAAOy6J,EAAOz6J,MACd4pB,QAAS6wI,EAAO7wI,SAEpB3D,KAAM,CACFm8F,MAAO08D,EAAQ75B,WACfr7H,QAAS2vI,EAAU3vI,WAM3B,OAFA60K,EAAe1xJ,OAAOruB,EAAQw7I,GAEvBukC,KAIfD,GAAOnjM,UAAUzH,SAAW4H,EAAW,GAAIgjM,GAAOnjM,UAAUzH,SAAU,CAClE8uK,OAAQ,CACJ5iK,SAAUkjF,GAEdu2E,UAAW,CACP3vI,QAAS,EACT6wI,OAAQ,CACJr4C,MAAO,OACPpiH,MAAO,EACP4pB,QAAS,MAKrB40K,GAAOnjM,UAAUzH,SAAS2lK,UAAU3sH,YAASkiG,EAE7C,IAAI4vD,GAAclB,GAAaznM,OAAO,CAClC0nM,YAAa,WACTzqM,KAAK2rM,SAAW3tC,EAChBwsC,GAAaziM,GAAG0iM,YAAYlgM,KAAKvK,OAGrCy7L,SAAU,SAAS/yL,EAAOkmB,GACH,OAAflmB,EAAM+G,OAAkB/G,EAAM+G,KAAO,GAAM/G,EAAM+G,KAAO,GAAKmf,EAAOkgB,OAAO88J,eAAet/L,UAC1FtM,KAAK2rM,SAAWtoM,KAAKuV,IAAI5Y,KAAK2rM,SAAUtoM,KAAK6T,IAAIxO,EAAM+G,OACvD+6L,GAAaziM,GAAG0zL,SAASlxL,KAAKvK,KAAM0I,EAAOkmB,KAE3C5uB,KAAKqhI,OAAO1/H,KAAK,MACjB3B,KAAKq7L,aAAazsK,EAAO+sK,UAAUh6L,KAAK,QAIhDyuI,OAAQ,SAASl3F,GACbl5C,KAAK6rM,kBAAkB3yJ,GACvBsxJ,GAAaziM,GAAGqoI,OAAO7lI,KAAKvK,KAAMk5C,IAGtC0iJ,UAAW,WACP,OAAO4P,IAGX7N,YAAa,SAASj1L,EAAOkmB,GACzB,IAAIkgB,EAASlgB,EAAOkgB,OAChBg9J,EAAch9J,EAAOjhC,KAAKrG,OAC1B29B,EAAQvW,EAAOikK,SAAW+B,GAA6BkX,GACvDC,EAAmB,CACnB5mK,MAAOA,EACPze,SAAUkuK,GAA6BzvJ,EACvCz/B,KAAMqwL,IAGN3mE,EAAQxgG,EAAOwgG,OAAStgF,EAAOsgF,MAC/B1mH,EAAM+G,KAAO,GAAKq/B,EAAO88J,eAAet/L,UACxC8iH,EAAQ8H,EACJpoF,EAAO88J,eAAex8E,MAAOA,IAIrC,IAAIssE,EAAelzL,EAAW,CAC1BknK,OAAQ,CACJp+E,UAAW,CACPnsD,MAAOA,EACPze,SAAUkuK,GAA6BzvJ,KAGhDnlC,KAAK07L,aAAa5sJ,EAAQlgB,EAAO+sK,UAAW,CAC3C7P,QAAS,CACLpmL,KAAM+3J,EACNgK,OAAQ34H,EAAO24H,OACf7wI,QAASkY,EAAOlY,QAChB06D,UAAWy6G,KAInBrQ,EAAe17L,KAAK89L,iBAAiBpC,EAAchzL,EAAOkmB,GACtD1lB,EAAW4lC,EAAOsgF,SAClBA,EAAQssE,EAAatsE,OAGzBssE,EAAa5P,QAAQ75B,WAAa7iC,EAElC,IAAIiL,EAAQ,IAAImxE,GAAO9iM,EAAOgzL,GAK9B,OAJArhE,EAAMjL,MAAQA,EAEdpvH,KAAK+5C,OAAOsgF,GAELA,GAGXwxE,kBAAmB,SAAS3yJ,GAOxB,IANA,IAGIpK,EADM9uC,KACOkH,QAAQ4nC,OACrB4kD,EAAUrwF,KAAK8S,IAAI+iC,EAAIlsC,QAASksC,EAAIvsC,UAE/BgvL,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAY7C,IAXA,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvBN,EAROr7L,KAQiBq7L,aAAaM,GAGrCqQ,GAFU3N,EAAc4N,SAAW5oM,KAAKuV,IAAc,IAAV86E,EAAgB,KAE3C,EACjBw4G,GAFU7N,EAAcpsD,SAAqB,GAAVv+C,GAElB,EACjBy4G,EAAU9oM,KAAK+xH,GAAK42E,EAAOA,EAG3BI,GAFU/oM,KAAK+xH,GAAK82E,EAAOA,EACLC,GAffnsM,KAgB0B2rM,SAE5B9Y,EAAU,EAAGA,EAAUwI,EAAa7zL,OAAQqrL,IAAW,CAC5D,IAAIx4D,EAAQghE,EAAaxI,GACzB,GAAIx4D,EAAO,CACP,IAAIwxD,EAAOxoL,KAAK6T,IAAImjH,EAAM3xH,MAAM+G,MAAQ28L,EACpCzgL,EAAStoB,KAAKo6E,MAAM0uH,EAAUtgB,GAAQxoL,KAAK+xH,IAE3Cx7E,EADas9E,EAAemD,EAAMnzH,QAAQ0yC,OAAQ,IAC3B,EAAIjuB,EAASugL,GAExC1jM,EAAW6xH,EAAMnzH,QAAS,CACtB0yC,OAAQA,EACRkyI,QAAS,CACLr8K,KAAe,EAATkc,EACNiuB,OAAQA,GAEZ81H,OAAQ,CACJ91H,OAAQA,EAAS,QAQzC4lJ,iBAAkB,SAASnlE,EAAO3pH,GAC9B,IAAIhI,EAAQ2xH,EAAM3xH,MAClB,OAAO1I,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQhI,EAAMtD,EAAGsD,EAAMvE,EAAGuE,EAAM+G,KAAM4qH,EAAMysC,WAGrFrB,gBAAiB,aAEjBF,aAAc,eAGlBlF,EAAkBqrC,GAAa,CAC3BvvC,QAAS,CACLzrJ,OAAQ,OAEZg/J,OAAQ,CACJh/J,OAAQ,SAIhB,IAAI27L,GAAStkC,EAAahlK,OAAO,IAIjCyF,EAAW6jM,GAAOhkM,UAAWo3L,IAE7B,IAAI6M,GAAS1nC,EAAa7hK,OAAO,CAC7BoF,KAAM,SAASO,EAAOxB,GAClB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKy+L,UAAYz+L,KAAKkH,QAAQu3L,UAC9Bz+L,KAAKovH,MAAQloH,EAAQkoH,OAASmvC,EAC9Bv+J,KAAK0I,MAAQA,GAGjBkH,OAAQ,WACJ,IAAI1I,EAAUlH,KAAKkH,QAEdlH,KAAK8/L,YACN9/L,KAAK8/L,WAAY,EAEb9qE,EAAQh1H,KAAK0I,MAAMpB,UACnBtH,KAAKsH,OAAS,IAAI+kM,GAAO,CACrB3mM,KAAMwB,EAAQI,OAAO24I,MACrBgS,WAAY/qJ,EAAQI,OAAO8nH,OAASpvH,KAAKovH,MACzCx4F,QAAS1vB,EAAQ0vB,QACjBgjB,OAAQ1yC,EAAQ0yC,OAChB6tH,OAAQvgK,EAAQI,OAAOmgK,OACvBpQ,OAAQpnE,EACRg/C,MAAOtkH,IAGX3qB,KAAKsH,OAAOoB,MAAQ1I,KAAK0I,MACzB1I,KAAKsH,OAAO+sB,SAAWr0B,KAAKq0B,SAC5Br0B,KAAKsH,OAAOwnC,OAAS9uC,KAAK8uC,OAE1B9uC,KAAK+5C,OAAO/5C,KAAKsH,SAGrBtH,KAAKgiL,cACLhiL,KAAK2/L,eAIb3d,YAAa,WACT,IACItS,EADU1vK,KAAKkH,QACEwoK,OAErB,GAAIA,EAAOpjK,QAAS,CAChB,IAEI0zL,EAFAh4B,EAAYhoK,KAAKgoK,YACjBmL,EAAgBzT,EAAYgQ,GAI5BswB,EADA7sB,EACYA,EAAcnL,GAEdhoK,KAAKigM,YAAYvwB,EAAOh/J,QAGxC1Q,KAAK6zB,MAAQ,IAAIkyK,GAAS/F,EAAWtwB,EAAQ1H,GAC7ChoK,KAAK+5C,OAAO/5C,KAAK6zB,SAIzBu8G,OAAQ,SAASl3F,GACbl5C,KAAK4P,SAEL,IAAIqf,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdI,EAAS2nB,EAAI3nB,OACbsnK,EAAQ3/I,EAAI2uK,MACZ/B,EAAa30L,EAAQ20L,WACrB/gB,EAAYlM,EAAM+rB,gBAAgB36L,KAAKkH,SACvCo3L,EAAe1vB,EAAM0vB,aAAa1vB,EAAM8e,aAAcxmL,EAAQ44K,WAAYhF,GAC1EyxB,EAAkBzxB,EAAU/H,QAAQ/yK,KAAK0I,MAAMpB,QAC/CklM,EAAc3Q,EAAa0Q,EAAkBjO,EAC7CmO,EAAc5Q,EAAayC,EAAeiO,EAE9C,GAAIjlM,EAAQ,CACR,IAAIolM,EAAa,IAAI/qC,EACjB6qC,EAAYvvH,GAAIwvH,EAAYvvH,GAC5BsvH,EAAYrvH,GAAIsvH,EAAYrvH,IAEhC91E,EAAOJ,QAAQyF,OAASkvL,EAAa6Q,EAAW//L,SAAWzF,EAAQI,OAAOomK,KAAK1gK,MAC/E1F,EAAOJ,QAAQ8F,MAAQ6uL,EAAa30L,EAAQI,OAAOomK,KAAK1gK,MAAQ0/L,EAAW1/L,QAC3E1F,EAAO8oI,OAAOs8D,GAGlB,IAAI74K,EAAQ7zB,KAAK6zB,MACbA,IACAA,EAAM3sB,QAAQu3L,UAAYz+L,KAAKy+L,UAC/B5qK,EAAMu8G,OAAOl3F,IAGbl5C,KAAKqxK,MACLrxK,KAAKqxK,KAAKjhC,OAAOl3F,GAGrBl5C,KAAKk5C,IAAMA,GAGfqsH,aAAc,WACVX,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAElC,IAAIkH,EAAUlH,KAAKkH,QACf+W,EAAOquH,GAAKc,SAASptI,KAAKk5C,IAAI2pH,SAAU,CACxC5vI,KAAM,CACFm8F,MAAOpvH,KAAKovH,MACZx4F,QAAS1vB,EAAQ0vB,SAErBinG,OAAQ,OAGR32H,EAAQugK,OAAOz6J,MAAQ,GACvBiR,EAAK/W,QAAQsoB,IAAI,SAAU,CACvB4/F,MAAOloH,EAAQugK,OAAOr4C,OAASpvH,KAAKovH,MACpCpiH,MAAO9F,EAAQugK,OAAOz6J,MACtBgvI,SAAU90I,EAAQugK,OAAOzrB,SACzBplH,QAASsgG,EAAehwH,EAAQugK,OAAO7wI,QAAS1vB,EAAQ0vB,WAIhE52B,KAAK2sM,WAAa1uL,EAElB8gJ,EAAiB9gJ,GACjBje,KAAKk+I,OAAOnkG,OAAO97B,IAGvBwnJ,gBAAiB,WACTzlK,KAAK2sM,aACL3sM,KAAKsxF,UAAY51C,GAAUsL,OACvBhnD,KAAK2sM,WAAY3sM,KAAKkH,QAAQoqF,aAK1Ck1E,gBAAiB,SAAS/5J,GACtB,OAAO6/H,GAAKc,SAASptI,KAAKk5C,IAAI2pH,SAAUp2J,IAG5Cg0L,gBAAiB,WACb,OAAOzgM,KAAK2sM,YAGhB9lC,oBAAqB,WACjB,MAAO,CACHx7E,KAAMrrF,KAAKk5C,IAAI2pH,SACf3kB,OAAQl+I,KAAK2sM,WACbzlM,QAASlH,KAAKkH,UAItB+4L,YAAa,SAASvvL,GAClB,OAAO1Q,KAAK49L,MAAM4B,iBAAiBx/L,KAAM0Q,IAG7Cs3J,UAAW,WACP,MAAO,CACH3zI,SAAUr0B,KAAKq0B,SACfyyI,SAAU9mK,KAAK8mK,SACfp+J,MAAO1I,KAAK0I,MACZomC,OAAQ9uC,KAAK8uC,SAIrBiyJ,YAAa,SAAS7nJ,GAClB,OAAOl5C,KAAKk5C,IAAIqpH,SAASrpH,MAIjCozJ,GAAOjkM,UAAUs4L,cAAgBwF,GAAI99L,UAAUs4L,cAE/CtgC,EAAkBisC,GAAQ,CACtB7kC,OAAQ,CACJz6J,MAAO,GAEXolC,UAAU,EACVxb,QAAS,EACTtvB,OAAQ,CACJ24I,MAAO,GACPwnB,OAAQ,CACJz6J,MAAO,EACPoiH,MAAO,SAEXs+C,KAAM,CACF1gK,MAAO,IAGf0iK,OAAQ,CACJpjK,SAAS,GAEb6vJ,QAAS,CACLzrJ,OAAQ,iCAEZygK,MAAO,CACHt9I,MAAO,MAIfrrB,EAAW8jM,GAAOjkM,UAAWo3L,IAC7Bj3L,EAAW8jM,GAAOjkM,UAAWq3L,IAE7B,IAAIkN,GAAc3R,GAAiBl4L,OAAO,CACtCoF,KAAM,SAASsqK,EAAUvrK,IAoH7B,SAAkBA,GAGd,IAFA,IAAI4nC,EAAS5nC,EAAQ4nC,OAEZvnC,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CACpC,IAAIslM,EAAa/9J,EAAOvnC,GACpBsG,EAAOg/L,EAAWh/L,MAClBA,GAAS5K,EAAQ4K,EAAK,KAAQsxJ,EAAStxJ,EAAK,MAC5Cg/L,EAAWh/L,KAAO,CAAEA,KAzHxBi/L,CAAS5lM,GAET+zL,GAAiBlzL,GAAGI,KAAKoC,KAAKvK,KAAMyyK,EAAUvrK,IAGlD03L,iBAAkB,SAAST,GAIvB,IAHA,IAAIhpJ,EAAWn1C,KAAKm1C,SAChBC,EAAiBD,EAAS3tC,OAErBD,EAAI,EAAGA,EAAI6tC,EAAgB7tC,IAChC4tC,EAAS5tC,GAAG6oI,OAAO+tD,EAAc52L,KAIzC40L,UAAW,SAAS9hE,GAChB,IAAIvrF,EAASurF,EAAMvrF,OACfgsI,EAAY96K,KAAK26L,gBAAgB7rJ,GACjCqoI,EAAoBn3K,KAAKy8L,0BAA0B3hB,GAEvD,MAAO,CAAE3D,EAAmB98C,EAAM3xH,MAAM+K,SAAW0jK,IAGvDwmB,YAAa,SAAS9vL,EAAM+gB,GACxB,IAAIkxJ,EAAalxJ,EAAOkxJ,WACpBhxI,EAASlgB,EAAOkgB,OAEhB5nC,EADMlH,KACQkH,QACdiuC,EAFMn1C,KAESm1C,SACfzsC,EAAQmF,EAAK2kL,YAEbua,EAAgBvkM,EAAW,CAC3B4pC,UAAWlrC,EAAQ20L,WACnB30B,QAASp4H,EAAOo4H,QAChB4Y,WAAYA,EACZ+b,WAAY30L,EAAQ20L,YACrB/sJ,GAECsgF,EAAQvhH,EAAK+gB,OAAOwgG,OAAStgF,EAAOsgF,MACxC29E,EAAgB/sM,KAAK89L,iBAAiBiP,EAAerkM,EAAOkmB,GACxD1lB,EAAW4lC,EAAOsgF,SAClBA,EAAQ29E,EAAc39E,OAG1B,IAAIihC,EAAS,IAAIi8C,GAAO5jM,EAAOqkM,GAC/B18C,EAAOjhC,MAAQA,EAEf,IAAI+3E,EAAUhyJ,EAAS2qI,GAavB,OAZKqnB,IACDA,EAAU,IAAIT,GAAc,CACxBt0J,SAAUlrC,EAAQ20L,WAClBhrL,IAAK3J,EAAQ2J,IACb0+H,QAASroI,EAAQqoI,QACjBgO,KAAMr2I,EAAQ20L,aAAe77L,KAAKmlK,cAAgB,IAAI5nB,MAE1Dv9I,KAAK+5C,OAAOotJ,IAGhBA,EAAQptJ,OAAOs2G,GAERA,GAGXotC,YAAa,SAAS/0L,EAAOkmB,GACzB,IAAInb,EAAU/K,EAAM+K,QAChBnM,EAASoB,EAAMpB,OACfq1L,EAAW/tK,EAAOkgB,OAAO9J,KACzBi5J,EAAYj+L,KAAKm7L,gBAAgBwB,GAEjC3nE,EAAQvhH,KAAa3K,MAAM2K,IAAYuhH,EAAQ1tH,IAAWwB,MAAMxB,OAChE22L,EAAYj+L,KAAKm7L,gBAAgBwB,GAC7BsB,GAAa,CAAE9nL,IAAKm/G,EAAW18G,IAAKolJ,IAE9B7nJ,IAAM9S,KAAK8S,IAAI8nL,EAAU9nL,IAAK1C,EAASnM,GACjD22L,EAAUrlL,IAAMvV,KAAKuV,IAAIqlL,EAAUrlL,IAAKnF,EAASnM,KAIzDk4L,iBAAkB,SAASnlE,EAAO3pH,GAC9B,OAAO1Q,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQ2pH,EAAM3xH,MAAM+K,QAAS4mH,EAAM3xH,MAAMpB,SAGlFktL,WAAY,SAAS3mL,GACjB,OAAOA,EAAK2kL,YAAY/+K,SAG5BgrL,UAAW,SAASpkE,GAGhB,OAFYA,EAAM3xH,MAAM+K,QAET,GAGnBgyJ,gBAAiB,WACb,IAEIpkC,EAASrhI,KAAKqhI,OAElBrhI,KAAK0nM,uBAEL,IAAK,IAAI99L,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAAO,CAC1C,IAAIywH,EAAQgH,EAAOz3H,GACnBywH,EAAMnzH,QAAQoqF,UARHtxF,KAQwBkH,QAAQoqF,UAC3C+oC,EAAMorC,sBAKlBmnC,GAAYvkM,UAAUq/L,qBAAuBX,GAAS1+L,UAAUq/L,qBAEhErnC,EAAkBusC,GAAa,CAC3Bt7G,UAAW,CACP5rF,KAAMmwL,MAgBd,IAAImX,GAAcplM,EAAM7E,OAAO,CAC3BoF,KAAM,SAASg9J,EAAcj+J,GAEzBlH,KAAKmlK,aAAeA,EACpBnlK,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,IAGhD+lM,SAAU,SAAS/lM,EAASmzH,GACxB,IAAI43B,EAAa/qJ,EAAQ+qJ,WACrBwV,EAASvgK,EAAQugK,OAAOr4C,MAE5B,GAAIiL,EAAO,CACP,IAAI6yE,EAAa7yE,EAAMjL,OAASiL,EAAMnzH,QAAQkoH,MAC9C6iC,EAAa/6B,EAAe+6B,EAAYi7C,GACxCzlC,EAASvwC,EAAeuwC,EAAQylC,GAGpC,IAAIn3D,EAAUwpB,EAAWr4J,EAAQ6uI,SAAW,GAAI,QAEhD,MAAO,CACH+Y,gBAAiBmD,EACjBw0C,YAAah/B,EACb1wE,KAAM7vF,EAAQ6vF,KACdq4B,MAAOloH,EAAQkoH,MACfx4F,QAAS1vB,EAAQ0vB,QACjB4wI,YAAapI,EAAWl4J,EAAQugK,OAAOz6J,OACvC8qH,WAAYsnC,EAAWrpB,EAAQ3xH,KAC/B+oL,cAAe/tC,EAAWrpB,EAAQhqH,QAClC8rG,YAAaunC,EAAWrpB,EAAQlqH,MAChC8kI,aAAcyO,EAAWrpB,EAAQjqH,SAIzC5e,KAAM,SAAShG,EAASkmM,EAAgB/yE,GACpCnzH,EAAQwJ,OAAS08L,EAAe18L,OAEhC,IAAIjE,EAAQzM,KAAKitM,SAASG,EAAgB/yE,GAC1CnzH,EAAQuF,MAAQA,EAEhB,IAAIwlJ,EAAa,IAAI/gC,GAAMzkH,EAAMqiJ,iBAC5B95B,EAAQo4E,EAAeh+E,QAAW6iC,EAAWngC,WAC9C5qH,EAAQwlB,UAAY,2BAGxB1sB,KAAKmlK,aAAa3wI,OAAOukK,GAAc7xL,GAEvClH,KAAKsM,SAAU,GAGnBa,KAAM,WACEnN,KAAKmlK,cACLnlK,KAAKmlK,aAAa3wI,OAAOwkK,IAG7Bh5L,KAAKsM,SAAU,GAGnBtK,QAAS,kBACEhC,KAAKmlK,gBAIpB9E,EAAkB2sC,GAAa,CAC3BvlC,OAAQ,CACJz6J,MAAO,GAEX4pB,QAAS,IAGb,IAAIy2K,GAAmBL,GAAYjqM,OAAO,CACtCoF,KAAM,SAASg9J,EAAcirB,EAAWlpL,GACpC8lM,GAAYjlM,GAAGI,KAAKoC,KAAKvK,KAAMmlK,EAAcj+J,GAE7ClH,KAAKowL,UAAYA,EACjBpwL,KAAKstM,cAAgBnoC,EAAaz0J,OAClC1Q,KAAKutM,gBAGTA,aAAc,WACV,IAEInrM,EAFA4iC,EAAOhlC,KAAKowL,UAAUprJ,KAItB5iC,EAHW4iC,EAAKytI,SAEPib,aACF1oJ,EAAK+2I,YAAc,eAAiB,YAEpC/2I,EAAK99B,QAAQkrC,SAAW,QAAU,QAE7CpyC,KAAK28L,SAAWv6L,GAGpBorM,OAAQ,SAASnzE,GACb,IACIr1F,EADMhlC,KACKowL,UAAUprJ,KACrB99B,EAFMlH,KAEQkH,QACdwB,EAAQs8B,EAAK99B,EAAQumM,WAAa,cAAgB,YAAYpzE,GAC9DqzE,EAAiBhlM,EAEjBxB,EAAQwJ,OACRg9L,EAAiB1tM,KAAKstM,cAAchgC,KAAKpmK,EAAQwJ,OAAQhI,GAClDs8B,EAAK99B,QAAQxB,OAASi4J,IAC7B+vC,EAAiB1tM,KAAKstM,cAAchgC,KAAKtoI,EAAK99B,QAAQwoK,OAAOqS,YAAY/8I,EAAK99B,QAAQyyK,UAAWjxK,IAGrG1I,KAAKkN,KAAK,CACNmtH,MAAOA,EACPlpC,OAAQnxF,KAAK2tM,YACbvd,UAAWpwL,KAAKowL,UAChB1nL,MAAOglM,EACP/Q,SAAU38L,KAAK28L,SACfoC,UAAW/+L,KAAKowL,UAAUprJ,KAAK+5J,WAChC/+L,KAAKkH,UAGZiG,KAAM,WACFnN,KAAKmlK,aAAa3wI,OAAOwkK,GAAc,CACnC5I,UAAWpwL,KAAKowL,UAChBuM,SAAU38L,KAAK28L,SACfoC,UAAW/+L,KAAKowL,UAAUprJ,KAAK+5J,aAIvC4O,UAAW,WACP,IAOI7M,EAAiBD,EAAexmE,EANhC+1D,EADMpwL,KACUowL,UAChBwd,EAFM5tM,KAEYkH,QAClB4F,EAAW8gM,EAAY9gM,SACvBipI,EAAU63D,EAAY73D,QACtB3jG,GAAYg+I,EAAUprJ,KAAK99B,QAAQkrC,SACnC2+H,EAAUqf,EAAU1iB,KAAK9xC,OAuB7B,OApBIxpF,GACA0uJ,EAAkB9wG,EACdljF,IAAaojF,GACb2wG,EAAgB5wG,EAChBoqC,EAAQ02C,EAAQp1C,aAAa3rF,UAAU,EAAG+lG,KAE1C8qD,EAAgB3wG,EAChBmqC,EAAQ02C,EAAQv1C,UAAUxrF,UAAU,GAAI+lG,MAG5C8qD,EAAgB7wG,EACZljF,IAAa2d,GACbq2K,EAAkBn2K,EAClB0vG,EAAQ02C,EAAQv1C,UAAUxrF,WAAW+lG,EAAS,KAE9C+qD,EAAkBr2K,EAClB4vG,EAAQ02C,EAAQr1C,WAAW1rF,UAAU+lG,EAAS,KAI/C,CACH1b,MAAOA,EACP4U,MAAO,CACH38F,WAAYwuJ,EACZ1uJ,SAAUyuJ,OAM1BxgC,EAAkBgtC,GAAkB,CAChCt3D,QAAS,KAGb,IAAI83D,GAAYjpC,EAAa7hK,OAAO,CAChCoF,KAAM,SAASg9J,EAAcngI,EAAM99B,GAC/B09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKglC,KAAOA,EACZhlC,KAAKytM,WAAazoK,aAAgBg1I,EAElC,IAAIozB,EAAiBptM,KAAKkH,QAAQi1J,QAE9BixC,EAAe9gM,UACftM,KAAKm8J,QAAU,IAAIkxC,GAAiBloC,EAAcnlK,KAC9CwI,EAAW,GAAI4kM,EAAgB,CAAEK,WAAYztM,KAAKytM,gBAK9DD,OAAQ,SAASnzE,GACbr6H,KAAKq6H,MAAQA,EACbr6H,KAAK8tM,WACL9tM,KAAK0tK,KAAKphK,SAAQ,GAEdtM,KAAKm8J,SACLn8J,KAAKm8J,QAAQqxC,OAAOnzE,IAI5BltH,KAAM,WACFnN,KAAK0tK,KAAKphK,SAAQ,GAEdtM,KAAKm8J,SACLn8J,KAAKm8J,QAAQhvJ,QAIrB2gM,SAAU,WACN,IAOIt+B,EANAxqI,EADMhlC,KACKglC,KACXq1F,EAFMr6H,KAEMq6H,MACZjoF,EAAWpN,EAAK99B,QAAQkrC,SACxB8G,EAAMl5C,KAAK+tM,SACXC,EAAM57J,EAAWp9B,EAAI3P,EACrBooK,EAAY,IAAIwjB,GAAc/3I,EAAI+jC,GAAI/jC,EAAIgkC,IAS9C,GALIsyF,EADAp9H,EACU,IAAI6+I,GAAc/3I,EAAIikC,GAAIjkC,EAAIgkC,IAE9B,IAAI+zG,GAAc/3I,EAAI+jC,GAAI/jC,EAAIkkC,IAGxCi9C,EACA,GAAIr6H,KAAKytM,WAAY,CACjB,IAAIt4B,EAAOnwI,EAAK+tI,QAAQ/tI,EAAK82I,mBAAmBzhD,IAChDozC,EAAUugC,GAAOx+B,EAAQw+B,GAAO74B,EAAK53F,SAASywH,QAE9CvgC,EAAUugC,GAAOx+B,EAAQw+B,GAAO3zE,EAAM2zE,GAI9ChuM,KAAKk5C,IAAMA,EAEXl5C,KAAK0tK,KAAKtxH,OAAOqxH,GAAW7iC,OAAO4kC,IAGvCu+B,OAAQ,WASJ,IARA,IAMIE,EANAjpK,EAAOhlC,KAAKglC,KACZ4tI,EAAO5tI,EAAK2oD,KAAKilF,KACjBprK,EAASorK,EAAKprK,OACd4qC,EAAWpN,EAAK99B,QAAQkrC,SACxB8G,EAAMlU,EAAK+rI,UAAU5pK,QACrB6mM,EAAM57J,EAAW/sC,EAAI2P,EAGhBzN,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI2mM,EAAct7B,EAAKrrK,GACnB2mM,EAAYhnM,QAAQkrC,WAAaA,IAC5B67J,EAGDA,EAAYjiL,KAAKkiL,EAAYn9B,WAF7Bk9B,EAAcC,EAAYn9B,UAAU5pK,SAUhD,OAHA+xC,EAAI80J,EAAM,GAAKC,EAAYD,EAAM,GACjC90J,EAAI80J,EAAM,GAAKC,EAAYD,EAAM,GAE1B90J,GAGXqsH,aAAc,WACVX,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAElC,IAAIkH,EAAUlH,KAAKkH,QACnBlH,KAAK0tK,KAAO,IAAIphC,GAAK,CACjBzO,OAAQ,CACJzO,MAAOloH,EAAQkoH,MACfpiH,MAAO9F,EAAQ8F,MACf4pB,QAAS1vB,EAAQ0vB,QACjBolH,SAAU90I,EAAQ80I,UAEtB1vI,SAAS,IAGbtM,KAAK8tM,WACL9tM,KAAKk+I,OAAOnkG,OAAO/5C,KAAK0tK,OAG5B1rK,QAAS,WACDhC,KAAKm8J,SACLn8J,KAAKm8J,QAAQn6J,UAGjB4iK,EAAa78J,GAAG/F,QAAQuI,KAAKvK,SAIrCqgK,EAAkBwtC,GAAW,CACzBz+E,MAAOouC,EACPxwJ,MAAO,EACP4sC,QAAS,EACTuiH,QAAS,CACL7vJ,SAAS,KAIjB,IAAI6hM,GAAiBvpC,EAAa7hK,OAAO,CACrCoF,KAAM,SAASjB,EAASymF,GACpBi3E,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAChClH,KAAK2tF,KAAOA,GAGhBygH,WAAY,WAIR,IAHA,IAAIj5J,EAAWn1C,KAAKm1C,SAChB3tC,EAAS2tC,EAAS3tC,OAEbD,EAAI,EAAGA,EAAIC,EAAQD,IACxB,IAAiC,IAA7B4tC,EAAS5tC,GAAGL,QAAQ4yC,KACpB,OAAO,EAGf,OAAO,GAGXu0J,SAAU,WACN,OAAOruM,KAAK2tF,KAAK2gH,aAGrB/oC,aAAc,WAKV,GAJAvlK,KAAKk+I,OAAS,IAAI1P,GAAM,CACpB50F,OAAQ,IAGR55C,KAAKouM,aAAc,CACnB,IACIG,GADUvuM,KAAK4gM,QAAU5gM,KAAKquM,YACXxrC,SACnBxW,EAAW/f,GAAKc,SAASmhE,GAC7BxvC,EAAiB1S,GAEjBrsJ,KAAKk+I,OAAOpkG,KAAKuyG,GACjBrsJ,KAAKwuM,iBAIbxoC,UAAW,WACP,OAAOhmK,MAGXwuM,aAAc,WAKV,IAJA,IACIC,EADMzuM,KACOm1C,SACbyrJ,EAFM5gM,KAEQ4gM,QAETr5L,EAAI,EAAGA,EAAIknM,EAAOjnM,OAAQD,IAI/B,IAHA,IAAI85H,EAASotE,EAAOlnM,GAAG85H,QAAU,GAC7B75H,EAAS65H,EAAO75H,OAEXmjC,EAAI,EAAGA,EAAInjC,EAAQmjC,IAAK,CAC7B,IAAI0vF,EAAQgH,EAAO12F,GACnB,GAAI0vF,IAA2B,IAAlBA,EAAM/tH,SAAqB+tH,EAAM0mE,aAAe1mE,EAAM0mE,YAAYH,GAC3E,GAAIvmE,EAAM2mE,eACN3mE,EAAM2mE,qBACH,CACH,IAAIntK,EAAQwmG,EAAMxmG,MACdw9I,EAAOh3C,EAAMg3C,KAEbx9I,GAASA,EAAM3sB,QAAQoF,UACnBunB,EAAMmyK,gBACNnyK,EAAMmyK,eAAepF,GAEzB/sK,EAAM3sB,QAAQ4+J,QAAS,GAGvBuL,GAAQA,EAAKnqK,QAAQoF,UACrB+kK,EAAKnqK,QAAQ4+J,QAAS,MAQ9C9jK,QAAS,WACL4iK,EAAa78J,GAAG/F,QAAQuI,KAAKvK,aAEtBA,KAAKmM,UAIpBgiM,GAAe9lM,UAAU69J,aAAc,EAEvC,IAAIpgF,GAAOuhF,EAAWtkK,OAAO,CACzBoF,KAAM,SAASjB,GACXmgK,EAAWt/J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAE9BlH,KAAK2vB,GAyMF,OAAS++K,KAvMZ1uM,KAAKowK,cAELpwK,KAAKumD,QAAU,IAAIq+G,EAEnB5kK,KAAKuxL,eAAiB,IAAI4c,GAAe,GAAInuM,MAC7CA,KAAK+5C,OAAO/5C,KAAKumD,SAEjBvmD,KAAK4yK,KAAO,GACZ5yK,KAAKyuM,OAAS,IAGlBr+B,YAAa,WACT,IAAI/D,EAAersK,KAAKkH,QAAQ62C,MAC5BohH,EAASkN,KACTA,EAAe7jK,EAAW,GAAI6jK,EAAc,CACxCp9B,MAAOo9B,EAAav/J,SACpBA,SAAUmjF,KAIlBjwF,KAAK+9C,MAAQguH,EAAMI,WAAWE,EAAcvmF,GAAKz9E,UAAUnB,QAAQ62C,OAC/D/9C,KAAK+9C,OACL/9C,KAAK+5C,OAAO/5C,KAAK+9C,QAIzB4wJ,WAAY,SAAS3pK,GACjBhlC,KAAKumD,QAAQxM,OAAO/U,GACpBhlC,KAAK4yK,KAAKjxK,KAAKqjC,GACfA,EAAK2oD,KAAO3tF,MAGhB4uM,aAAc,SAAS5pK,EAAMqvD,GACzBr0F,KAAKumD,QAAQxM,OAAO/U,GACpBhlC,KAAK4yK,KAAKpoK,OAAO6pF,EAAK,EAAGrvD,GACzBA,EAAK2oD,KAAO3tF,MAGhB6uM,YAAa,SAASjgC,GACd5uK,KAAKuxL,eAAeplL,SAAWnM,KAAKumD,SACpCvmD,KAAKumD,QAAQxM,OAAO/5C,KAAKuxL,gBAG7BvxL,KAAKyuM,OAAO9sM,KAAKitK,GACjB5uK,KAAKuxL,eAAex3I,OAAO60H,GAC3BA,EAAMjhF,KAAO3tF,MAGjBusD,MAAO,WACH,IAEIkmH,EAAWzyK,KAAKmM,OAEpB,GAAIsmK,EAAU,CACV,IAAK,IAAIlrK,EAAI,EAAGA,EAAIvH,KAAK4yK,KAAKprK,OAAQD,IAClCkrK,EAASq8B,WANF9uM,KAMsB4yK,KAAKrrK,IAGtC,IAAK,IAAIq6K,EAAM,EAAGA,EAAM5hL,KAAKyuM,OAAOjnM,OAAQo6K,IACxCnP,EAASs8B,YAVF/uM,KAUuByuM,OAAO7sB,IAI7C5hL,KAAK4yK,KAAO,GACZ5yK,KAAKyuM,OAAS,GAEdzuM,KAAKumD,QAAQvkD,UACbhC,KAAKumD,QAAQpR,SAAW,GACxBn1C,KAAKuxL,eAAep8I,SAAW,IAGnCi7F,OAAQ,SAASwxB,GAEb,IAAIr7G,EACApkB,EAAKniC,KAAKm1C,YAAcn1C,KAAKumD,UAC7BA,EAAUvmD,KAAKm1C,SAAS9lB,OAG5Bg4I,EAAWt/J,GAAGqoI,OAAO7lI,KAAKvK,KAAM4hK,GAE5Br7G,GACAvmD,KAAKm1C,SAASxzC,KAAK4kD,GAGnBvmD,KAAK+9C,QACL/9C,KAAK4nK,WAAW1qF,IAAMl9E,KAAK+9C,MAAM7E,IAAIvsC,WAI7Cm7J,YAAa,WACT,IAAIr7J,EAAQ46J,EAAWt/J,GAAG+/J,YAAYv9J,KAAKvK,MAG3C,OAFAyM,EAAMmtC,QAAU,GAETntC,GAGXi5J,eAAgB,WACR1lK,KAAKkH,QAAQoF,SACbtM,KAAKozK,mBAIbpN,UAAW,WACP,OAAOhmK,MAGX+lK,SAAU,WACN,OAAO/lK,MAGXozK,gBAAiB,WAQb,IAPA,IAAIR,EAAO5yK,KAAK4yK,KACZo8B,EAAUp8B,EAAKv1J,OAAOrd,KAAKmM,OAAOymK,MAClCq8B,EAAa,GACbC,EAAa,GAIR3nM,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAI7B,IAHA,IAAIy9B,EAAO4tI,EAAKrrK,GACZ6qC,EAAWpN,EAAK99B,QAAQkrC,SACxBo/H,EAAYp/H,EAAW68J,EAAaC,EAC/BvkK,EAAI,EAAGA,EAAIqkK,EAAQxnM,OAAQmjC,IAChC,GAAyB,IAArB6mI,EAAUhqK,OAAc,CACxB,IAAImrK,EAAUq8B,EAAQrkK,GAClByH,IAAaugI,EAAQzrK,QAAQkrC,UAC7B2H,EAAOy3H,EAAWxsI,EAAKouI,gBAAgBT,MAO3D/0J,QAAS,WACL5d,KAAKk+I,OAAOjoF,QAEZj2D,KAAKumD,QAAQp6C,OAAS,KACtBnM,KAAKumD,QAAQ4gH,eAAiBnnK,KAAKmnK,eAAe39J,KAAKxJ,MACvDA,KAAKumD,QAAQ++G,eACbtlK,KAAKumD,QAAQp6C,OAASnM,KAElBA,KAAK+9C,OACL/9C,KAAKk+I,OAAOnkG,OAAO/5C,KAAK+9C,MAAMmgG,QAGlCl+I,KAAKk+I,OAAOnkG,OAAO/5C,KAAKumD,QAAQ23F,QAEhCl+I,KAAK0lK,iBACL1lK,KAAKmvM,gBAGTb,UAAW,WAKP,IAJA,IAAI17B,EAAO5yK,KAAK4yK,KACZprK,EAASorK,EAAKprK,OACd8mM,EAAY,IAAI3sC,EAEX/3J,EAAM,EAAGA,EAAMpC,EAAQoC,IAAO,CACnC,IAAIo7B,EAAO4tI,EAAKhpK,GACZwlM,EAAiBpqK,EAAK99B,QAAQkrC,SAAWp9B,EAAI3P,EAC7C0rK,EAAU/rI,EAAK+rI,UACnBu9B,EAAUc,EAAiB,GAAKr+B,EAAQq+B,EAAiB,GACzDd,EAAUc,EAAiB,GAAKr+B,EAAQq+B,EAAiB,GAG7D,GAAqB,IAAjBd,EAAUnxH,GAIV,IAHA,IAAI6xH,EAAUhvM,KAAKmM,OAAOymK,KACtBy8B,EAAWL,EAAQxnM,OAEd0tK,EAAQ,EAAGA,EAAQm6B,EAAUn6B,IAAS,CAC3C,IAAIo6B,EAASN,EAAQ95B,GACrB,IAAKo6B,EAAOpoM,QAAQkrC,SAAU,CAC1B,IAAIm9J,EAAYD,EAAOv+B,UACvBu9B,EAAUrxH,GAAKsyH,EAAUtyH,GACzBqxH,EAAUnxH,GAAKoyH,EAAUpyH,IAIrC,OAAOmxH,GAGX1N,QAAS,WACL,OAAO5gM,KAAKuxL,eAAeqP,SAG/BuO,aAAc,WACV,IAAIlqC,EAAUjlK,KAAKklK,aACfD,GACAA,EAAQzwI,OAAOykK,GAAa,CACxBtrG,KAAM,IAAI0jG,GAAUrxL,MACpB+Y,MAAO/Y,KAAKwvM,UACZptM,KAAMpC,KAAKkH,QAAQ9E,UAM/BssM,GAAK,EAiBT,SAASe,GAAgBj1L,EAAO3O,GACZ,OAAZA,GACA2O,EAAM7Y,KAAKkK,GAInB,SAAS6jM,GAAe5gK,EAAQlgB,EAAQ7V,GACpC,IAAIzM,EAAUsiB,EAAOtiB,QACrB,GAAI0oH,EAAQ1oH,GACR,OAAOA,EAGX,IAAIqjM,EAAkB7gK,EAAO6gK,gBAC7B,OAAIA,EACOA,EAAgB52L,QAD3B,EAKJ,SAAS62L,GAAa9gK,GAMlB,IALA,IAAIjhC,EAAOihC,EAAOjhC,KACdwzH,EAAS,GACTxsE,EAAM,EACN/5C,EAAQ,EAEHlR,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IAAO,CACxC,IAAIo+J,EAAYmqB,GAAa1+K,QAAQm/K,UAAU9jJ,EAAQllC,GACnDlB,EAAQs/J,EAAUwqB,YAAY9pL,MAE9BE,EAASF,KACTA,EAAQK,WAAWL,IAGnBosD,EAASpsD,IACTs/J,EAAU17J,SAA4D,IAAlDojM,GAAe5gK,EAAQk5H,EAAUp5I,OAAQhlB,GAE7Do+J,EAAUt/J,MAAQrF,KAAK6T,IAAIxO,GAC3B24H,EAAO1/H,KAAKqmK,GAERA,EAAU17J,UACVuoD,GAAOmzG,EAAUt/J,OAGP,IAAVA,GACAoS,KAGJumH,EAAO1/H,KAAK,MAIpB,MAAO,CACHilD,MAAOiO,EACPwsE,OAAQA,EACRvmH,MAAOA,GAIf,SAAS+0L,GAAiB3qM,EAAGigB,GACzB,OAAIjgB,GAAKigB,EACEjgB,EAAEoT,gBAAkB6M,EAAE7M,cAG1BpT,IAAMigB,EAGjB,SAAS2qL,GAAmBhhK,EAAQlqB,GAIhC,IAHA,IAAIrO,EAAS,GAET+3K,EAAc,GAAGjxK,OAAOuH,GACnBhb,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,IAAO,CAC1C,IAAIy0L,EAAgBvvJ,EAAOllC,GACvByrB,EAAQgpK,EAAc34L,KAAM4oL,IAC5B/3K,EAAO5U,KAAK08L,GAIpB,OAAO9nL,EAGX,SAASw5L,GAAa9qL,EAAOitK,EAAK9jB,GAC9B,GAAY,OAAR8jB,EACA,OAAOA,EAGX,IAAI3gL,EAAM,SAAW0T,EACjBvc,EAAQwpL,EAAI3gL,GAOhB,OALK7I,IACDA,EAAQ6U,EAAU6wJ,EAAat/I,EAAO7J,GAAO,EAAd6J,CAAoBojK,IACnDA,EAAI3gL,GAAO7I,GAGRA,EAGX,SAASsnM,GAAWvsB,EAAawsB,GAC7B,IAAIvqM,EAAO+9K,EAAY/9K,KACnBwqM,EAAeD,aAA0B7hM,KAE7C,OAAS1I,GAAQwqM,GAAiBL,GAAiBnqM,EAAMi4J,GAG7D,SAASwyC,GAAkB31L,GACvB,OAAwB,IAAjBA,EAAMhT,OAAegT,EAAM,GAAKA,EAlH3CsrE,GAAKz9E,UAAU69J,aAAc,EAE7B7F,EAAkBv6E,GAAM,CACpBlsC,QAAS,EACT0tH,aAAa,EACbvpH,MAAO,CACHkxF,MAAOxkH,GAEXne,SAAS,IA6Gb,IAAI8jM,GAAa,QAUjB,SAASC,GAAWvhK,EAAQE,GACxB,IACIwjJ,EADSL,GAAa1+K,QAAQm/K,UAAU9jJ,EAAQ,KAAME,GACjCwjJ,YAEzB,IAAK,IAAIvtK,KAASutK,EACd,GAAI1oK,EAAQy/J,oBAAoBiJ,EAAYvtK,IACxC,OAAO,EAKnB,SAASqrL,GAASrhL,GACd,IAQIshL,EAAeC,EARfl7L,EAAQ2Z,EAAI3Z,MACZ+pB,EAAMpQ,EAAIoQ,IACVlpB,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACV63L,EAAYxhL,EAAIH,OAChB4hL,EAAUzhL,EAAIyhL,QACd5hK,EAAS7f,EAAI6f,OAGbllC,EAAM0L,EACV,GAIQo7L,EAHJ9mM,GAAOy1B,KAKHkxK,EAAgBF,GAAWvhK,GAD3B0hK,EAAWC,EAAU7mM,IACuBolC,aAE3C74B,GAAOvM,GAAOA,GAAOgP,IAAQ23L,GAEtC,GAAIA,EACA,OAAOC,EAIf,SAASG,GAAuB7hK,EAAQ8kB,EAAO94C,EAAO21L,EAAWC,GAC7D,IAAIv6L,EAAMy9C,EAAMz9C,IACZyC,EAAMg7C,EAAMh7C,IACZg4L,EAAcz6L,EAAM,GAAKA,EAAM2E,EAC/B+1L,EAAcj4L,EAAM,EAAIkC,EAE5B,GAAI81L,GAAeC,EAAa,CAC5B,IACI/1E,EAAUC,EAUNy1E,EAXJ9N,EApDZ,SAA6B5zJ,GACzB,OAAIA,EAAO4zJ,cACA5zJ,EAAO4zJ,cAGX0N,GAAWrjM,KAAK+hC,EAAOppC,OAASopC,EAAOojG,MAAQh/H,GAAOoiL,GA+CrCiN,CAAoBzzJ,GAExC,GAAI4zJ,IAAkBpN,GACdsb,IACA91E,EAAW21E,EAAUt6L,EAAM,IAG3B06L,IACA91E,EAAW01E,EAAU73L,EAAM,SAI3Bg4L,IAcI91E,EAZYu1E,GAAWvhK,GAD3B0hK,EAAWC,EAAUt6L,EAAM,IACiB64B,MAY7BwhK,EAVAF,GAAS,CAChBh7L,MAAOa,EACPkpB,KAAM,EACNlpB,IAAK,EACLyC,IAAKkC,EAAQ,EACbgU,OAAQ2hL,EACRC,QAASA,EACT5hK,OAAQA,KAOhB+hK,IAcI91E,EAZYs1E,GAAWvhK,GAD3B0hK,EAAWC,EAAU73L,EAAM,IACiBo2B,MAY7BwhK,EAVAF,GAAS,CAChBh7L,MAAOsD,EACPymB,IAAK,EACLlpB,IAAK,EACLyC,IAAKkC,EAAQ,EACbgU,OAAQ2hL,EACRC,QAASA,EACT5hK,OAAQA,KAQpBgsF,IACAhsF,EAAOs2J,oBAAsBtqE,GAG7BC,IACAjsF,EAAOgiK,oBAAsB/1E,IAKzC,IAAIg2E,GAAensC,EAAa7hK,OAAO,CACnCoF,KAAM,SAAS2mC,EAAQ5nC,EAASi+J,GAC5BP,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKiwK,WAAWnhI,EAAQ5nC,GACxBlH,KAAK8uC,OAASA,EACd9uC,KAAKgxM,aACLhxM,KAAKyuM,OAAS,GACdzuM,KAAKkH,QAAQ0mL,OAAS5tL,KAAKkH,QAAQ0mL,QAAU,GAC7C5tL,KAAKkH,QAAQ0mL,OAAOx5J,MAAQ,GAC5Bp0B,KAAK4yK,KAAO,GACZ5yK,KAAKixM,WAAa,GAClBjxM,KAAKmlK,aAAeA,EACpBnlK,KAAKkxM,gBAAkBhqM,EAEvBlH,KAAKmxM,cACLnxM,KAAK4P,SACL5P,KAAKoxM,oBAGTnhC,WAAY,aAEZ+gC,WAAY,WAGR,IAFA,IAAIliK,EAAS9uC,KAAK8uC,OAETvnC,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAC/BunC,EAAOvnC,GAAGwR,MAAQxR,GAI1B4pM,YAAa,WAeT,IAdA,IAEI9kC,EAAersK,KAAKkH,QAAQ62C,OAAS,GACrCszJ,EAAerxM,KAAKkH,QAAQmqM,aAC5BC,EAActxM,KAAKkH,QAAQqqM,OAAS,GACpCC,EAAcnuM,KAAKuV,IAAI04L,EAAY9pM,OAAQ,GAC3C+pM,EAAQ,GAER3wM,EAAW4H,EAAW,CACtBu1C,MAAO,CACHqxE,MAAOi9C,EAAaj9C,QAEzBiiF,GAEM9pM,EAAI,EAAGA,EAAIiqM,EAAajqM,IAAK,CAClC,IAAIL,EAAUsB,EAAW,GAAI5H,EAAU0wM,EAAY/pM,IAC/CqB,EAAS1B,EAAQ62C,SACjB72C,EAAQ62C,MAAQv1C,EAAW,CAAEo4B,KAAM15B,EAAQ62C,OAASn9C,EAASm9C,QAGjE,IAAI0zJ,EAAc,IAAI3rH,GAAK5+E,GAC3BuqM,EAAYjC,UAAYjoM,EAExBgqM,EAAM5vM,KAAK8vM,GAvBAzxM,KAwBF+5C,OAAO03J,GAGpBzxM,KAAKuxM,MAAQA,GAGjBG,iBAAkB,SAAS1sK,GACvB,OAAOA,EAAK99B,QAAQkpL,WAGxBghB,iBAAkB,SAASG,GACvB,IAAIpgF,EAAWnxH,UACD,IAAVuxM,IAAoBA,EAAQvxM,KAAKuxM,OAErC,IAAK,IAAIhqM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAE9B,IADA,IAAIomF,EAAO4jH,EAAMhqM,GACRojC,EAAI,EAAGA,EAAIgjD,EAAKilF,KAAKprK,OAAQmjC,IAAK,CACvC,IAAI3F,EAAO2oD,EAAKilF,KAAKjoI,GACjBzjC,EAAUiqH,EAASugF,iBAAiB1sK,GACxC,GAAI99B,GAAWA,EAAQoF,QAAS,CAC5B,IAAIqlM,EAAmB,IAAI9D,GAAU18E,EAASg0C,aAAcngI,EAAM99B,GAElEiqH,EAAS8/E,WAAWtvM,KAAKgwM,GACzBhkH,EAAKpnC,QAAQxM,OAAO43J,MAMpCC,iBAAkB,SAASjkH,GAIvB,IAHA,IAAIsjH,EAAajxM,KAAKixM,WAClBr+B,EAAOjlF,EAAKilF,KAEPrrK,EAAI0pM,EAAWzpM,OAAS,EAAGD,GAAK,EAAGA,IACxC,IAAK,IAAIojC,EAAI,EAAGA,EAAIioI,EAAKprK,OAAQmjC,IAC7B,GAAIsmK,EAAW1pM,GAAGy9B,OAAS4tI,EAAKjoI,GAAI,CAChCsmK,EAAWzmM,OAAOjD,EAAG,GACrB,QAMhBsqM,eAAgB,WAEZ,IADA,IAAIZ,EAAajxM,KAAKixM,WACbrnM,EAAM,EAAGA,EAAMqnM,EAAWzpM,OAAQoC,IACvCqnM,EAAWrnM,GAAKuD,QAIxB2kM,SAAU,SAAS1vM,GAIf,IAHA,IACI2vM,EADAR,EAAQvxM,KAAKuxM,MAGRhqM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAC9B,GAAIgqM,EAAMhqM,GAAGL,QAAQ9E,OAASA,EAAM,CAChC2vM,EAAeR,EAAMhqM,GACrB,MAIR,OAAOwqM,GAAgBR,EAAM,IAGjCS,cAAe,SAAS33E,GAIpB,IAHA,IACI03E,EADAR,EAAQvxM,KAAKuxM,MAGRhqM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAC9B,GAAIgqM,EAAMhqM,GAAG2xC,IAAIkjF,cAAc/B,GAAQ,CACnC03E,EAAeR,EAAMhqM,GACrB,MAIR,OAAOwqM,GAGXpD,WAAY,SAAS3pK,GACNhlC,KAAK8xM,SAAS9sK,EAAK99B,QAAQymF,MAEjCghH,WAAW3pK,GAChBhlC,KAAK4yK,KAAKjxK,KAAKqjC,GACfA,EAAKytI,SAAWzyK,MAGpB8uM,WAAY,SAASmD,GAKjB,IAJA,IAEIC,EAAe,GAEV3qM,EAAI,EAAGA,EAAIvH,KAAK4yK,KAAKprK,OAAQD,IAAK,CACvC,IAAIy9B,EALOhlC,KAKS4yK,KAAKrrK,GACrB0qM,IAAiBjtK,EACjBktK,EAAavwM,KAAKqjC,GAElBA,EAAKhjC,UAIbhC,KAAK4yK,KAAOs/B,GAGhBrD,YAAa,SAASjgC,EAAOjhF,GACzB3tF,KAAKyuM,OAAO9sM,KAAKitK,GACbjhF,EACAA,EAAKkhH,YAAYjgC,GAEjB5uK,KAAK+5C,OAAO60H,IAIpBmgC,YAAa,SAASoD,GAKlB,IAJA,IAEIC,EAAiB,GAEZ7qM,EAAI,EAAGA,EAAIvH,KAAKyuM,OAAOjnM,OAAQD,IAAK,CACzC,IAAIqnK,EALO5uK,KAKUyuM,OAAOlnM,GACxBqnK,IAAUujC,EACVC,EAAezwM,KAAKitK,GAEpBA,EAAM5sK,UAIdhC,KAAKyuM,OAAS2D,GAGlBC,YAAa,SAASvjK,GAQlB,IAPA,IAAIh0B,EAAQg0B,EAAOtnC,OACfomL,EAAS5tL,KAAKkH,QAAQ0mL,OACtBle,EAASke,EAAOle,QAAU,GAC1BqgB,EAAgBnC,EAAOmC,eAAiB,GACxCuiB,EAAsBviB,EAAcrgB,QAAU,GAC9C7hK,EAAO,GAEFtG,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAI82L,EAAgBvvJ,EAAOvnC,GACvBgrM,GAA0C,IAA1BlU,EAAc/xL,QAClC,IAAsC,IAAlC+xL,EAAcmU,gBAAlB,CAIA,IAAI5xK,EAAOy9J,EAAcj8L,KACrB+wK,EAAgBo/B,EAAgB7yC,EAAYgQ,GAAUhQ,EAAY4yC,IAAwB5yC,EAAYgQ,GACtGyD,IACAvyI,EAAOuyI,EAAc,CACjBvyI,KAAMszC,GAAStzC,GAAQA,EAAO,GAC9BkO,OAAQuvJ,KAIhB,IAAIz9L,EAAWy9L,EAAcN,UACzB3uE,EAAQivE,EAAcjvE,MACtBlmH,EAAWkmH,IAAUxuH,IACrBwuH,EAAQxuH,EAASwuH,OAGrB,IAAIqjF,OAAmB,EAAUC,OAAc,EAC3CH,GACAE,EAAmB,GACnBC,EAActjF,IAEdqjF,EAAmB,CACfrjF,MAAOkjF,EAAoBljF,MAC3Br4B,KAAMu7G,EAAoBv7G,MAE9B27G,EAAc3iB,EAAcjE,QAAQ18D,OAGpCl7C,GAAStzC,IAAkB,KAATA,GAClB/yB,EAAKlM,KAAK,CACNi/B,KAAMA,EACN8uI,OAAQ+iC,EACRC,YAAaA,EACb5jK,OAAQuvJ,EACRsU,OAAQJ,KAKpBx4J,EAAO6zI,EAAOx5J,MAAOvmB,IAGzB+kM,UAAW,SAASrB,GAIhB,IAHA,IAAIsB,EAAQ,GACRC,EAAQ,GAEHC,EAAS,EAAGA,EAASxB,EAAM/pM,OAAQurM,IAExC,IADA,IAAIC,EAAWzB,EAAMwB,GAAQngC,KACpBqgC,EAAS,EAAGA,EAASD,EAASxrM,OAAQyrM,IAAU,CACrD,IAAIjuK,EAAOguK,EAASC,GAChBjuK,EAAK99B,QAAQkrC,SACb0gK,EAAMnxM,KAAKqjC,GAEX6tK,EAAMlxM,KAAKqjC,GAKvB,MAAO,CAAE5/B,EAAGytM,EAAO1uM,EAAG2uM,EAAOI,IAAKL,EAAMx1L,OAAOy1L,KAGnDK,kBAAmB,WAMf,IALA,IAEIrkK,EAAS9uC,KAAK8uC,OACdskK,EAAe,GAEV7rM,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CACpC,IAAI82L,EAAgBvvJ,EAAOvnC,GACvBomF,EAPO3tF,KAOSqzM,eAAehV,GAE/B+U,EAAazlH,GACbylH,EAAazlH,GAAMhsF,KAAK08L,GAExB+U,EAAazlH,GAAQ,CAAE0wG,GAI/B,OAAO+U,GAGXE,oBAAqB,SAASxkK,GAG1B,IAFA,IAAIv4B,EAAS,GAEJhP,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CACpC,IAAI82L,EAAgBvvJ,EAAOvnC,IACG,IAA1B82L,EAAc/xL,SACdiK,EAAO5U,KAAK08L,GAIpB,OAAO9nL,GAGX65H,OAAQ,SAASwxB,GACb,IAAI16J,EAAUlH,KAAKkH,QAAQurK,SACvB8+B,EAAQvxM,KAAKuxM,MACb54J,EAAS4mH,EAAWr4J,EAAQyxC,QAEhC34C,KAAKk5C,IAAM0oH,EAAUz6J,QAAQk7J,MAAM1pH,GACnC34C,KAAKuzM,cAELvzM,KAAKwzM,eACLxzM,KAAKyzM,WAAWlC,GAChBvxM,KAAK0zM,aAAanC,IAGtBoC,OAAQ,SAASpC,GACb,IAEIqC,EAAa,GAAGv2L,OAAOk0L,GAC3BvxM,KAAKgxM,aAGL,IAAIvzJ,EAAOz9C,KAAK+kK,UACZtnH,GACAA,EAAKgsH,iBAGT,IAAK,IAAIliK,EAAI,EAAGA,EAAIqsM,EAAWpsM,OAAQD,IAXxBvH,KAYF4xM,iBAAiBgC,EAAWrsM,IACrCqsM,EAAWrsM,GAAGglD,QAGlBvsD,KAAK4P,OAAOgkM,GACZ5zM,KAAKwzM,eACLxzM,KAAKyzM,WAAWzzM,KAAKuxM,OACrBvxM,KAAK0zM,aAAaE,GAElB5zM,KAAKoxM,iBAAiBwC,GAEtB,IAAK,IAAIhyB,EAAM,EAAGA,EAAMgyB,EAAWpsM,OAAQo6K,IACvCgyB,EAAWhyB,GAAKhkK,WAIxB+mK,mBAAoB,SAAS3/I,EAAM6uK,GAQ/B,IAPA,IAAI3sM,EAAU89B,EAAK99B,QACf4sM,EAAiB,GAAGz2L,OACpBnW,EAAQy9K,oBAAsBz9K,EAAQiwK,mBAEtC48B,EAAcF,EAAarsM,OAASssM,EAAetsM,OACnDqnD,EAAeilJ,EAAe,IAAM,EAE/BvsM,EAAI,EAAGA,EAAIwsM,EAAaxsM,IAC7BusM,EAAenyM,KAAKktD,GAGxB,OAAOilJ,GAGXE,YAAa,SAAShvK,EAAMivK,EAAY3P,EAAe4P,GACnD,IAAI/+B,EAAOnwI,EAAK+tI,QAAQuxB,EAAeA,GAAe,GAClD6P,EAAWnvK,EAAK99B,QAAQ4O,QAAU,EAAI,EACtC42L,EAAauH,EAAWlhC,QAAQmhC,EAAqBA,GAAqB,GAC1EE,EAAaH,EAAW/sM,QAAQ4O,QAAU,EAAI,EAC9Cu+L,EAAUrvK,EAAKkU,IAAIlJ,UACnB08J,EAAWrnM,EAAI+uM,GAAcj/B,EAAK9vK,EAAI8uM,GACtCzH,EAAW13L,EAAIo/L,GAAcj/B,EAAKngK,EAAIm/L,IAGtCnvK,EAAK2oD,OAASsmH,EAAWtmH,MACzB0mH,EAAQrkK,UAAU,EAAGhL,EAAK2oD,KAAKz0C,IAAIgkC,GAAK+2H,EAAWtmH,KAAKz0C,IAAIgkC,IAGhEl4C,EAAKorG,OAAOikE,IAGhBC,UAAW,SAASzB,EAAOC,GAYvB,IAXA,IAAI3hF,EAAWnxH,KAEXu0M,EAAU1B,EAAM,GAChB2B,EAAU1B,EAAM,GAChB2B,EAAmBz0M,KAAK2kL,mBAAmB4vB,EAASzB,GACpD4B,EAAmB10M,KAAK2kL,mBAAmB6vB,EAAS3B,GACpD8B,EAAc,GACdC,EAAe,GACfC,EAAa,GACbC,EAAgB,GAEXvtM,EAAI,EAAGA,EAAIurM,EAAMtrM,OAAQD,IAAK,CACnC,IAAIy9B,EAAO8tK,EAAMvrM,GACbomF,EAAO3oD,EAAK2oD,KACZonH,EAASpnH,EAAKh+D,GACdrjB,GAAmC,IAAzB04B,EAAK99B,QAAQoF,QAGvB6kF,EAAS6jH,GAAWnC,EAAOllH,IAAS4mH,EACpCU,EAAkBR,EAElBtjH,IAAWojH,IACXU,EAAkB9jF,EAASwzD,mBAAmBxzF,EAAQ2hH,IAG1D3hF,EAAS6iF,YAAYhvK,EAAMmsD,EAAQujH,EAAiBntM,GAAI0tM,EAAgB1tM,IAEpEy9B,EAAK99B,QAAQguM,WAIbn/L,EAAMivB,EAAK+rI,UAAU9zF,MAAQlnE,EAAMo7E,EAAO4/E,UAAU9zF,MAEhD03H,EAAYI,IACZ/vK,EAAKorG,OAAOprG,EAAKkU,IACZ8oH,QAAQ2yC,EAAYI,GAAQ77J,IAAKzuB,GACjCulB,WAAWhL,EAAK99B,QAAQyxC,OAAQ,IAIrCrsC,IACAqoM,EAAYI,GAAU/vK,IAI1BjvB,EAAMivB,EAAK+rI,UAAU5zF,MAAQpnE,EAAMo7E,EAAO4/E,UAAU5zF,MAE/Cn4C,EAAKmwK,YACNnwK,EAAK99B,QAAQwoK,OAAO97H,QAAU5O,EAAK99B,QAAQwoK,OAAO97H,OAClD5O,EAAKmwK,WAAY,GAGrBhkF,EAAS6iF,YAAYhvK,EAAMmsD,EAAQujH,EAAiBntM,GAAI0tM,EAAgB1tM,IAGpEqtM,EAAaG,IACb/vK,EAAKorG,OAAOprG,EAAKkU,IACZ8oH,QAAQ4yC,EAAaG,GAAQ77J,IAAKvuB,GAClCqlB,UAAUhL,EAAK99B,QAAQyxC,OAAQ,IAIpCrsC,IACAsoM,EAAaG,GAAU/vK,IAIrB,IAANz9B,GAAWitM,EAAQ7mH,OAAS3oD,EAAK2oD,OACjC3oD,EAAKg9H,QAAQwyC,GACbxvK,EAAKorG,OAAOprG,EAAKkU,OAIzB,IAAK,IAAI0oI,EAAM,EAAGA,EAAMixB,EAAMrrM,OAAQo6K,IAAO,CACzC,IAAI0tB,EAASuD,EAAMjxB,GACfwzB,EAAS9F,EAAO3hH,KAChB0nH,EAAWD,EAAOzlL,GAClB2lL,GAAuC,IAA3BhG,EAAOpoM,QAAQoF,QAG3BipM,EAAWP,GAAWlC,EAAOsC,IAAWZ,EACxCgB,EAAoBd,EACpBa,IAAaf,IACbgB,EAAoBrkF,EAASwzD,mBAAmB4wB,EAAU1C,IAG9D1hF,EAAS6iF,YAAY1E,EAAQiG,EAAUd,EAAiB7yB,GAAM4zB,EAAkB5zB,IAE5E0tB,EAAOpoM,QAAQguM,WAIfn/L,EAAMu5L,EAAOv+B,UAAU7zF,MAAQnnE,EAAMw/L,EAASxkC,UAAU7zF,MAEnDoyH,EAAO6F,YACR7F,EAAOpoM,QAAQwoK,OAAO97H,QAAU07J,EAAOpoM,QAAQwoK,OAAO97H,OACtD07J,EAAO6F,WAAY,GAEvBhkF,EAAS6iF,YAAY1E,EAAQiG,EAAUd,EAAiB7yB,GAAM4zB,EAAkB5zB,IAG5EizB,EAAWQ,IACX/F,EAAOl/D,OAAOk/D,EAAOp2J,IAChB8oH,QAAQ6yC,EAAWQ,GAAUn8J,IAAK+2C,GAClCjgD,UAAU,GAAIs/J,EAAOpoM,QAAQyxC,SAIlC28J,IACAT,EAAWQ,GAAY/F,IAI3Bv5L,EAAMu5L,EAAOv+B,UAAU3zF,GAAI4zG,EAAiBvyB,mBAAqB1oJ,EAAMw/L,EAASxkC,UAAU3zF,GAAI4zG,EAAiBvyB,mBAE3Gq2C,EAAcO,IACd/F,EAAOl/D,OAAOk/D,EAAOp2J,IAChB8oH,QAAQ8yC,EAAcO,GAAUn8J,IAAKg3C,GACrClgD,UAAU,EAAGs/J,EAAOpoM,QAAQyxC,SAIjC28J,IACAR,EAAcO,GAAY/F,IAItB,IAAR1tB,IACA0tB,EAAOttC,QAAQuyC,GACfjF,EAAOl/D,OAAOk/D,EAAOp2J,SAKjCu8J,gBAAiB,SAASlE,GAKtB,IAJA,IAAI3+B,EAAO5yK,KAAK4yM,UAAUrB,GAAO2B,IAC7BmB,EAAUqB,GAAa9iC,GACvB+iC,EAAY,EAEPpuM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIkqM,EAAcF,EAAMhqM,GAEpBkqM,EAAY7+B,KAAKprK,OAAS,IAC1BmuM,EAAYtyM,KAAKuV,IACb+8L,EACAtB,EAAQrnM,QAAUykM,EAAY7pC,WAAW56J,UAKrD,GAAkB,IAAd2oM,EACA,IAAK,IAAI/zB,EAAM,EAAGA,EAAMhP,EAAKprK,OAAQo6K,IAAO,CACxC,IAAIssB,EAAct7B,EAAKgP,GAElBssB,EAAYhnM,QAAQkrC,UACrB87J,EAAY99D,OAAO89D,EAAYh1J,IAAIgpH,OAAOyzC,EAAW,MAMrEC,iBAAkB,SAASrE,GAGvB,IAFA,IAAIsE,EAEKtuM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIkqM,EAAcF,EAAMhqM,GACpBqrK,EAAO6+B,EAAY7+B,KACnBkjC,EAAYzyM,KAAKuV,IAAI,EAAG88L,GAAa9iC,GAAMjmK,SAAW8kM,EAAY7pC,WAAWj7J,UAEjF,GAAkB,IAAdmpM,EAAiB,CACjB,IAAK,IAAInrK,EAAI,EAAGA,EAAIioI,EAAKprK,OAAQmjC,IAAK,CAClC,IAAIujK,EAAct7B,EAAKjoI,GAEnBujK,EAAYhnM,QAAQkrC,UACpB87J,EAAY99D,OACR89D,EAAYh1J,IAAIgpH,OAAO,EAAG4zC,IAItCD,GAAW,GAInB,OAAOA,GAGXE,QAAS,SAASxE,GAId,IAHA,IAAI3+B,EAAO5yK,KAAK4yM,UAAUrB,GAAO2B,IAC7B3sH,EAAU,EAELh/E,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIkqM,EAAcF,EAAMhqM,GACpByrM,EAAWvB,EAAY7+B,KACvBojC,EAAUvE,EAAY7pC,WAE1B,GAAIorC,EAASxrM,OAAS,EAAG,CACrB,IAAI6sM,EAAUqB,GAAa1C,GAEvBxsH,EAAUnjF,KAAKuV,IAAIo9L,EAAQ94H,GAAKm3H,EAAQn3H,GAAI84H,EAAQ54H,GAAKi3H,EAAQj3H,IAGrEmJ,EAAUljF,KAAKuV,IAAI2tE,EAASyvH,EAAQ/4H,GAAKo3H,EAAQp3H,IAEjD,IAAK,IAAItyC,EAAI,EAAGA,EAAIqoK,EAASxrM,OAAQmjC,IAAK,CACtC,IAAIujK,EAAc8E,EAASroK,GAE3BujK,EAAY99D,OACR89D,EAAYh1J,IAAIlJ,UAAU,EAAGw2C,MAM7C,IAAK,IAAIo7F,EAAM,EAAGA,EAAMhP,EAAKprK,OAAQo6K,IAAO,CACxC,IAAIq0B,EAAgBrjC,EAAKgP,GAEzBq0B,EAAc7lE,OACV6lE,EAAc/8J,IAAIlJ,UAAUu2C,EAAS,MAKjDktH,WAAY,SAASlC,GAKjB,IAJA,IAEI3+B,EAAO5yK,KAAK4yM,UAAUrB,GAEjBhqM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAJnBvH,KAKFk2M,eAAe3E,EAAMhqM,IAG9BqrK,EAAKxtK,EAAEoC,OAAS,GAAKorK,EAAKzuK,EAAEqD,OAAS,IACrCxH,KAAKs0M,UAAU1hC,EAAKxtK,EAAGwtK,EAAKzuK,GAC5BnE,KAAKy1M,gBAAgBlE,GAErBvxM,KAAKm2M,qBAAqBvjC,GAE1B5yK,KAAKs0M,UAAU1hC,EAAKxtK,EAAGwtK,EAAKzuK,GACxBnE,KAAKy1M,gBAAgBlE,IACrBvxM,KAAKs0M,UAAU1hC,EAAKxtK,EAAGwtK,EAAKzuK,GAGhCnE,KAAK41M,iBAAiBrE,GACtBvxM,KAAKs0M,UAAU1hC,EAAKxtK,EAAGwtK,EAAKzuK,GAExBnE,KAAK41M,iBAAiBrE,IACtBvxM,KAAKs0M,UAAU1hC,EAAKxtK,EAAGwtK,EAAKzuK,GAGhCnE,KAAK+1M,QAAQxE,KAIrB4E,qBAAsB,SAASC,GAQ3B,IAPA,IAKIC,EAFA9E,EADMvxM,KACMuxM,MACZ3+B,EAAO0jC,GAAY/E,GAGd3nM,EAAM,EAAGA,EAAMgpK,EAAKprK,OAAQoC,IAAO,CAC7BgpK,EAAKhpK,GACP+mK,qBACL0lC,GAAU,GAIlB,GAAIA,EAAS,CACT,IAAK,IAAInhC,EAAQ,EAAGA,EAAQq8B,EAAM/pM,OAAQ0tK,IAf/Bl1K,KAgBEk2M,eAAe3E,EAAMr8B,IAG9BkhC,EAAYhxM,EAAEoC,OAAS,GAAK4uM,EAAYjyM,EAAEqD,OAAS,IACnDxH,KAAKs0M,UAAU8B,EAAYhxM,EAAGgxM,EAAYjyM,GAC1CnE,KAAKy1M,gBAAgBlE,MAKjC2E,eAAgB,SAASvoH,GACrB,IAAIilF,EAAOjlF,EAAKilF,KACZprK,EAASorK,EAAKprK,OAElB,GAAIA,EAAS,EACT,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IACxBqrK,EAAKrrK,GAAG6oI,OAAOziD,EAAKi6E,aAKhC8rC,aAAc,SAASnC,GAKnB,IAJA,IAAI9C,EAASzuM,KAAKyuM,OACd3zL,EAAQ2zL,EAAOjnM,OACf0xC,EAAMl5C,KAAKk5C,IAEN3xC,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIgvM,EAAY9H,EAAOlnM,GAAGomF,KACrB4oH,IAAalhL,EAAQkhL,EAAWhF,IACjC9C,EAAOlnM,GAAG6oI,OAAOl3F,KAK7Bq6J,YAAa,WAUT,IATA,IACIr6J,EADMl5C,KACIk5C,IACVq4J,EAFMvxM,KAEMuxM,MACZC,EAAcD,EAAM/pM,OACpBgvM,EAAkBt9J,EAAIvsC,SAEtB8pM,EAAkB,EAClBryL,EAAM80B,EAAIgkC,GAEL31E,EAAI,EAAGA,EAAIiqM,EAAajqM,IAAK,CAClC,IAAIkqM,EAAcF,EAAMhqM,GACpBoF,EAAS8kM,EAAYvqM,QAAQyF,OAIjC,GAFA8kM,EAAYvqM,QAAQ8F,MAAQksC,EAAIlsC,QAE3BykM,EAAYvqM,QAAQyF,OAElB,CACH,GAAIA,EAAOgJ,SAAWhJ,EAAOgJ,QAAQ,KAAM,CACvC,IAAI+gM,EAAWz9L,SAAStM,EAAQ,IAAM,IACtC8kM,EAAYvqM,QAAQyF,OAAS+pM,EAAWx9J,EAAIvsC,SAGhD8kM,EAAYrhE,OAAOl3F,EAAI/xC,SAEvBqvM,GAAmB/E,EAAYvqM,QAAQyF,YATvC8pM,IAaR,IAAK,IAAI70B,EAAM,EAAGA,EAAM4vB,EAAa5vB,IAAO,CACxC,IAAI+0B,EAAgBpF,EAAM3vB,GAErB+0B,EAAczvM,QAAQyF,SACvBgqM,EAAczvM,QAAQyF,OAAS6pM,EAAkBC,GAIzD,IAAK,IAAIG,EAAM,EAAGA,EAAMpF,EAAaoF,IAAO,CACxC,IAAIC,EAAgBtF,EAAMqF,GACtBZ,EAAU98J,EACT/xC,QACAozB,KAAK2e,EAAI+jC,GAAI74D,GAElByyL,EAAczmE,OAAO4lE,GAGrB5xL,GAAOyyL,EAAc3vM,QAAQyF,SAIrCmqM,cAAe,WAKX,IAJA,IAEI59J,EAFA05H,EAAO5yK,KAAK4yK,KACZmkC,EAAYnkC,EAAKprK,OAGZD,EAAI,EAAGA,EAAIwvM,EAAWxvM,IAG3B,IAFA,IAAIyvM,EAAQpkC,EAAKrrK,GAERojC,EAAI,EAAGA,EAAIosK,EAAWpsK,IAAK,CAChC,IAAIssK,EAAQrkC,EAAKjoI,GAEjB,GAAIqsK,EAAM9vM,QAAQkrC,WAAa6kK,EAAM/vM,QAAQkrC,SAAU,CACnD,IAAI2+H,EAAUimC,EAAMjmC,UAAU5pK,QAAQ6kB,KAAKirL,EAAMlmC,WAK7C73H,EAHCA,EAGKA,EAAIltB,KAAK+kJ,GAFTA,GAQtB,OAAO73H,GAAOl5C,KAAKk5C,KAGvBg+J,YAAa,WAIT,IAHA,IAAI3F,EAAQvxM,KAAKuxM,MACbjiD,EAAQ,GAEH1lJ,EAAM,EAAGA,EAAM2nM,EAAM/pM,OAAQoC,IAClC0lJ,EAAM3tJ,KAAK4vM,EAAM3nM,GAAK0kM,aAG1B,OAAOh/C,GAGX6nD,mBAAoB,SAASC,GAEzB,IADA,IAAI9nD,EAAQtvJ,KAAKk3M,cACRttM,EAAM,EAAGA,EAAM0lJ,EAAM9nJ,OAAQoC,IAClCwtM,EAAU3pJ,MAAM9rD,KAAK2qI,GAAKc,SAASkiB,EAAM1lJ,GAAKi5J,YAItDw0C,wBAAyB,SAASh9E,GAE9B,IADA,IAAIi1B,EAAQtvJ,KAAKk3M,cACRttM,EAAM,EAAGA,EAAM0lJ,EAAM9nJ,OAAQoC,IAClC,GAAI0lJ,EAAM1lJ,GAAKwyH,cAAc/B,GACzB,OAAO,GAKnBkrC,aAAc,WACVX,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAElC,IAqNeovH,EArNXloH,EAAUlH,KAAKkH,QAAQurK,SACvB77I,EAAU1vB,EAAQ0vB,QAClBq7H,EAAa/qJ,EAAQ+qJ,WACrBwV,EAASvgK,EAAQugK,YAAuB,IAAXA,IAAqBA,EAAS,IAmNlD,MADEr4C,EAjNG6iC,IAkNW,OAAV7iC,GAA4B,SAAVA,GAA8B,gBAAVA,GAA4B4F,EAAQ5F,KAjNzF6iC,EAAasM,EACb3nI,EAAU,GAGd,IAAI8zH,EAAK1qJ,KAAK4xL,UAAY,IAAI7nK,GAAQojH,UAAU,CAC5Cl6G,KAAM,CACFm8F,MAAO6iC,EACPr7H,QAASA,GAEbinG,OAAQ,CACJzO,MAAOq4C,EAAOz6J,MAAQy6J,EAAOr4C,MAAQ,GACrCpiH,MAAOy6J,EAAOz6J,MACdgvI,SAAUyrB,EAAOzrB,UAErBpiG,QAAS,IAGb55C,KAAKm3M,mBAAmBzsD,GAExB1qJ,KAAK4lK,aAAalb,IAGtB4sD,sBAAuB,SAASz7B,GAC5B,IAAI4yB,EAASzuM,KAAKyuM,OACdl4L,EAAS,GAEb,GAAsB,OAAlBslK,EACA,IAAK,IAAIt0K,EAAI,EAAGA,EAAIknM,EAAOjnM,OAAQD,IAAK,CAEpC,GAAgC,eADpBknM,EAAOlnM,GACTomF,KAAKzmF,QAAQ9E,KAAvB,CAIA,IAAIi/H,EAASotE,EAAOlnM,GAAG6zL,eAAevf,GACtC,GAAIx6C,GAAUA,EAAO75H,OACjB,IAAK,IAAImjC,EAAI,EAAGA,EAAI02F,EAAO75H,OAAQmjC,IAAK,CACpC,IAAI0vF,EAAQgH,EAAO12F,GACf0vF,GAASrF,EAAQqF,EAAM3xH,QAA0B,OAAhB2xH,EAAM3xH,OACvC6N,EAAO5U,KAAK04H,KAOhC,OAAO9jH,GAGXghM,oBAAqB,SAASC,GAC1B,OAAOx3M,KAAKy3M,cAAa,SAASp9E,GAC9B,OAAOA,EAAMvrF,OAAO/1B,QAAUy+L,MAItCE,mBAAoB,SAASt1M,GACzB,OAAOpC,KAAKy3M,cAAa,SAASp9E,GAC9B,OAAOA,EAAMvrF,OAAO1sC,OAASA,MAIrCq1M,aAAc,SAASzuL,GAInB,IAHA,IAAIylL,EAASzuM,KAAKyuM,OACdl4L,EAAS,GAEJhP,EAAI,EAAGA,EAAIknM,EAAOjnM,OAAQD,IAG/B,IAFA,IACI85H,EADQotE,EAAOlnM,GACA85H,OACV12F,EAAI,EAAGA,EAAI02F,EAAO75H,OAAQmjC,IAAK,CACpC,IAAI0vF,EAAQgH,EAAO12F,GACf0vF,IAA2B,IAAlBA,EAAM/tH,SAAqB0c,EAASqxG,IAC7C9jH,EAAO5U,KAAK04H,GAKxB,OAAO9jH,GAGXohM,UAAW,SAAS3uL,GAGhB,IAFA,IAAIylL,EAASzuM,KAAKyuM,OAETlnM,EAAI,EAAGA,EAAIknM,EAAOjnM,OAAQD,IAG/B,IAFA,IACI85H,EADQotE,EAAOlnM,GACA85H,OACV12F,EAAI,EAAGA,EAAI02F,EAAO75H,OAAQmjC,IAAK,CACpC,IAAI0vF,EAAQgH,EAAO12F,GACnB,GAAI0vF,IAA2B,IAAlBA,EAAM/tH,SAAqB0c,EAASqxG,GAC7C,OAAOA,IAMvBu9E,YAAa,SAASv9E,GAGlB,IAFA,IAAIk3E,EAAQvxM,KAAKuxM,MAERhqM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIomF,EAAO4jH,EAAMhqM,GACjB,GAAIomF,EAAKz0C,IAAIkjF,cAAc/B,GACvB,OAAO1sC,IAKnB6lH,aAAc,WACV,IAAI5gC,EAAO5yK,KAAK4yM,UAAU5yM,KAAKuxM,OAC3BsB,EAAQjgC,EAAKxtK,EACb0tM,EAAQlgC,EAAKzuK,EAEjBnE,KAAK63M,sBAAsB/E,EAAOD,GAClC7yM,KAAK63M,sBAAsBhF,EAAOC,IAGtC+E,sBAAuB,SAASjlC,EAAMihC,GAKlC,IAJA,IAEIiE,EAAiB,EAEZvwM,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAAK,CAClC,IAAIy9B,EAAO4tI,EAAKrrK,GACZomF,EAAO3oD,EAAK2oD,KACZwD,EAAS6jH,GAAWnB,EAAclmH,IAASkmH,EAAa,GACxD9U,EAAYx3L,EAAIuwM,EAChBC,EATO/3M,KAScg4M,gBAAgBhzK,EAAM+5J,EAAW5tG,GAE1D,GAAI4mH,EAAW,CACXD,IAEA,IAAIzjH,EAAM1G,EAAKilF,KAAKj9J,QAAQqvB,GAAQ8yK,EACpCnqH,EAAKihH,aAAamJ,EAAW1jH,MAKzC2jH,gBAAiB,SAAShzK,EAAM+5J,EAAW5tG,GACvC,IAAIs/E,EAAezrI,EAAK99B,QAAQwoK,OAC5B5iK,EAAW2jK,EAAa3jK,SACxBmrM,EAASnrM,IAAakkL,EAAiBnmK,KAAO/d,IAAakkL,EAAiBh1G,MAC5E1vE,EAAUmkK,EAAankK,QAE3B,GAAI2rM,IAAsB,IAAZ3rM,EACV,OAAO,KAGX,IAAI0iM,EAAUhvM,KAAK4yM,UAAU5yM,KAAKuxM,OAC9BsC,EAAe1iH,EAAOjqF,QAAQkrC,SAAW48J,EAAQ5pM,EAAI4pM,EAAQ7qM,EAC7D8wM,EAAkBj1M,KAAK2kL,mBAAmBxzF,EAAQ0iH,GAClDloM,EAAMmB,IAAakkL,EAAiBnmK,IACpC+oC,EAAQu9B,EAAOv9B,QACf3wC,EAAOtX,EAAMioD,EAAMh7C,IAAMg7C,EAAMz9C,IAGnC,GAFoBugH,EAAWu+E,EAAgBlW,GAAYnrI,EAAMz9C,IAAKy9C,EAAMh7C,KAExDqK,GAAS,EACzB,OAAO,KAGXgyL,EAAgBzqM,OAAOu0L,EAAY,EAAG,EAAG97K,GACzCkuE,EAAOjqF,QAAQy9K,mBAAqBswB,EAEpC,IAAI8C,EAAY/yK,EAAK79B,QAUrB,OATA69B,EAAKixB,QAEL8hJ,EAAU7wM,QAAQ9E,UAAO05I,EACzBi8D,EAAU7wM,QAAQwmK,KAAKphK,SAAU,EAEjCyrM,EAAU7wM,QAAQkpL,eAAYt0C,EAC9Bi8D,EAAU7wM,QAAQiqK,WAAQr1B,EAC1Bi8D,EAAU7wM,QAAQsrK,eAAY12B,EAEvBi8D,KAIf,SAASG,GAAalzK,GAClB,OAAQA,EAAK2oD,KAAKilF,KAAKtmH,MAAK,SAAUpnD,GAAK,OAAOA,EAAEgC,QAAQkrC,WAAapN,EAAK99B,QAAQkrC,UAAYltC,IAAM8/B,IAA8B,IAAtB9/B,EAAEgC,QAAQoF,WAI9H,SAASopM,GAAa9iC,GAIlB,IAHA,IACI15H,EADA1xC,EAASorK,EAAKprK,OAGTD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIy9B,EAAO4tI,EAAKrrK,GACZ+E,GAAmC,IAAzB04B,EAAK99B,QAAQoF,QAC3B,GAAIA,GAAW4rM,GAAalzK,GAAO,CAC/B,IAAIqvK,EAAU/nM,EAAU04B,EAAK4iI,aAAe5iI,EAAK+rI,UAE5C73H,EAGDA,EAAIltB,KAAKqoL,GAFTn7J,EAAMm7J,EAAQltM,SAO1B,OAAO+xC,GAAO,IAAIyoH,EAGtB,SAASqzC,GAAWpiC,EAAMjlF,GACtB,IAAK,IAAIpmF,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAAK,CAClC,IAAI4pF,EAASyhF,EAAKrrK,GAClB,GAAI4pF,GAAUA,EAAOxD,OAASA,EAC1B,OAAOwD,GASnB,IAAImlH,GAAc,SAAU/E,GAAS,OAAOA,EAAM5tJ,QAAO,SAAUlP,EAAKk5C,GAAQ,OAAOl5C,EAAIp3B,OAAOswE,EAAKilF,QAAU,KAEjHvS,EAAkB0wC,GAAc,CAC5BjiK,OAAQ,GACR2jI,SAAU,CACN95H,OAAQ,IAEZs5G,WAAY,GACZwV,OAAQ,CACJr4C,MAAOouC,EACPxwJ,MAAO,GAEXqkM,aAAc,CACVtzJ,MAAO,IAEX6vI,OAAQ,CACJmC,cAAe,CACXrgB,OAAQ,CACJtgD,MAAO,WAEX08D,QAAS,CACL18D,MAAO,eAMvB,IAAI+oF,GAAsB,CACtBjpB,MAAO,SAAStgB,EAAOjqK,GACnB3E,KAAKo4M,eAAexpC,EAAOjqK,EAAG0zL,KAGlC/uK,MAAO,SAASslJ,EAAOjqK,GACnB3E,KAAKo4M,eAAexpC,EAAOjqK,EAAGyzL,MAIlCigB,GAAmBzwM,EAAM7E,OAAO,CAChCoF,KAAM,SAAS2mC,EAAQ6lC,EAAQ2jI,GAE3B,IAAI3lB,EAAkBh+G,EAAOg+G,gBAAgB7jJ,GACzC0jJ,EAAc79G,EAAO69G,YAAY1jJ,GACjCmkJ,EAAet+G,EAAOs+G,aAAankJ,EAAQ6jJ,GAC3C4lB,EAAev4M,KAAKw4M,cAAgB,GACpC53M,EAAW03M,EAAkB93M,MAAMsuC,EAAOppC,MAC1C+yM,EAAgB3pK,EAAOskB,WAAaxyD,EAExCZ,KAAK04M,QAAU5pK,EACf9uC,KAAK24M,QAAUhkI,EAEf,IAAK,IAAIptE,EAAI,EAAGA,EAAIorL,EAAgBnrL,OAAQD,IAAK,CAC7C,IAAI0d,EAAQ0tK,EAAgBprL,GACxBqxM,OAAiB,EAErB,GAAIz5C,EAASs5C,GACTG,EAAiBH,EAAcxzL,OAC5B,IAAU,IAAN1d,IAAW8tB,EAAQpQ,EAAOutK,GAGjC,MAFAomB,EAAiBH,EAKjBG,GACAL,EAAa52M,KAAK,CACdk3M,cAAe5zL,EACf7iB,KAAM6wL,EAAa1rL,GACnBgsC,UAAWrqC,EAAW0vM,GAAkBA,EAAiB9mB,GAAW8mB,OAMpFE,gBAAiB,SAASC,EAAW7kJ,GACjC,IAGIplB,EADM9uC,KACO04M,QACbH,EAFMv4M,KAEaw4M,cACnB3qM,EAAO7N,KAAKg5M,YAAYD,GAAa,IACrCE,EAAgBprM,EAAKkmB,UAAU,GAC/Bxd,EAAS,GAEb,GAAI0iM,IAAkBnkJ,EAASmkJ,KAAmBh2M,EAAQg2M,GAAgB,CACtE,IAAIlxM,EAAK,aACTA,EAAGM,UAAY4wM,EACf1iM,EAAS,IAAIxO,EAGjB,IAAK,IAAIR,EAAI,EAAGA,EAAIgxM,EAAa/wM,OAAQD,IAAK,CAC1C,IAAI0d,EAAQszL,EAAahxM,GACrB2xM,EAjBOl5M,KAiBcm5M,WAAWtrM,EAAKiL,OAAQmM,EAAM4zL,eACnDnwM,EAAQuc,EAAMsuB,UAAU2lK,EAAWpqK,EAAQjhC,EAAKkmB,UAAWmgC,GAE/D,KAAc,OAAVxrD,IAAkBy2J,EAASz2J,IAAWssH,EAAQtsH,EAAMlB,SAAakB,aAAiB0F,MAAO,CACzFmI,EAAS7N,EACT,MAEIssH,EAAQtsH,IACR0wM,GAASn0L,EAAM7iB,KAAMmU,EAAQ7N,GAKzC,OAAO6N,GAGXyiM,YAAa,SAAS33E,GAOlB,IANA,IACI1sD,EADM30E,KACO24M,QACb7pK,EAFM9uC,KAEO04M,QACb5/L,EAAS,GACTib,EAAY,GAEPxsB,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAAK,CACpC,IAAIsrL,EAAUxxD,EAAO95H,GAErBuR,EAAOnX,KAAKgzE,EAAOi+G,UAAU9jJ,EAAQ+jJ,IACrC9+J,EAAUpyB,KAAKmtC,EAAOjhC,KAAKglL,IAG/B,MAAO,CACH/5K,OAAQA,EACRib,UAAWA,IAInBolL,WAAY,SAAStrM,EAAMoX,GAIvB,IAHA,IAAInM,EAAS,GACTgC,EAAQjN,EAAKrG,OAERD,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIynC,EAAOnhC,EAAKtG,GACZirL,EAAcxjJ,EAAKwjJ,YACnB9pL,OAAQ,EAGRA,EADAssH,EAAQw9D,EAAYvtK,IACZutK,EAAYvtK,GAEZ+pB,EAAKpgB,OAAO3J,GAGxBnM,EAAOnX,KAAK+G,GAGhB,OAAOoQ,KAIf,SAASsgM,GAAS/qJ,EAAW/mD,EAAQoB,GACjC,IAAI4wH,EAAYhyH,EACZ2d,EAAQopC,EAEZ,GAAIA,EAAU14C,QAAQ,MAAQ,EAAG,CAG7B,IAFA,IAAI3F,EAAQq+C,EAAUzjD,MAAM,KAErBoF,EAAMxI,OAAS,GAClByd,EAAQjV,EAAM6F,QACTm/G,EAAQsE,EAAUr0G,MACnBq0G,EAAUr0G,GAAS,IAEvBq0G,EAAYA,EAAUr0G,GAE1BA,EAAQjV,EAAM6F,QAGlByjH,EAAUr0G,GAASvc,EAGvB,IAAI2wM,GAAoBzxM,EAAM7E,OAAO,CACjCoF,KAAM,WAEFnI,KAAK+9L,UAAY,IAGrB9mK,SAAU,SAASq3J,EAAa17H,GAG5B,IAFA,IAESrrD,EAAI,EAAGA,EAAI+mL,EAAY9mL,OAAQD,IAFzBvH,KAGF+9L,UAAUzP,EAAY/mL,IAAMqrD,GAI7CpyD,MAAO,SAAS84M,GACZ,OAAOt5M,KAAK+9L,UAAUub,MAI9BD,GAAkB5lM,QAAU,IAAI4lM,GAEhC,IAAIE,GAAWpT,GAAIpjM,OAAO,CACtBi/K,YAAa,WACT,IAAItS,EAAS1vK,KAAKkH,QAAQwoK,OACtB8pC,EAAchxM,EAAW,GAAIknK,EAAQA,EAAOvxI,MAC5Cs7K,EAAYjxM,EAAW,GAAIknK,EAAQA,EAAOtxI,IAE1Co7K,EAAYltM,UACZtM,KAAK05M,UAAY15M,KAAK25M,aAAaH,GACnCx5M,KAAK+5C,OAAO/5C,KAAK05M,YAGjBD,EAAUntM,UACVtM,KAAK45M,QAAU55M,KAAK25M,aAAaF,GACjCz5M,KAAK+5C,OAAO/5C,KAAK45M,WAIzBD,aAAc,SAASzyM,GACnB,IAGI84L,EAHA7sB,EAAgBzT,EAAYx4J,GAC5B8gK,EAAYhoK,KAAKgoK,YAUrB,OALIg4B,EADA7sB,EACYA,EAAcnL,GAEdhoK,KAAKigM,YAAY/4L,EAAQwJ,QAGlC,IAAIq1L,GAAS/F,EAChBx3L,EAAW,CACP4pC,SAAUpyC,KAAKkH,QAAQkrC,UAE3BlrC,GACD8gK,IAGP53B,OAAQ,SAASwxB,GACb5hK,KAAK4P,SAEL,IAAIqf,EAAMjvB,KACN05M,EAAYzqL,EAAIyqL,UAChBE,EAAU3qL,EAAI2qL,QACdlxM,EAAQumB,EAAIvmB,MAEhB1I,KAAKk5C,IAAM0oH,EAEP83C,IACAA,EAAUxyM,QAAQu3L,UAAY/1L,EAAMy1B,KAAOz1B,EAAM01B,GACjDs7K,EAAUtpE,OAAOwxB,IAGjBg4C,IACAA,EAAQ1yM,QAAQu3L,UAAY/1L,EAAM01B,GAAK11B,EAAMy1B,KAC7Cy7K,EAAQxpE,OAAOwxB,IAGf5hK,KAAKqxK,MACLrxK,KAAKqxK,KAAKjhC,OAAOwxB,MAK7B23C,GAASlxM,UAAUzH,SAAW4H,EAAW,GAAI+wM,GAASlxM,UAAUzH,SAAU,CACtE8uK,OAAQ,CACJh/J,OAAQ,aAEZyrJ,QAAS,CACLzrJ,OAAQ,SAIhB,IAAImpM,GAAgB9S,GAAShkM,OAAO,CAChC64L,UAAW,WACP,OAAO2d,IAGX/kB,WAAY,SAAS3mL,GACjB,OAAOA,EAAK2kL,aAGhBgN,iBAAkB,SAASnlE,EAAO3pH,GAC9B,OAAyB,OAArB2pH,EAAM3xH,MAAMy1B,MAAoC,OAAnBk8F,EAAM3xH,MAAM01B,GAClC,GAGJp+B,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQ2pH,EAAM3xH,MAAMy1B,KAAMk8F,EAAM3xH,MAAM01B,KAG/E+9J,UAAW,SAAS9hE,GAChB,OAAKA,EAIE,CAAEA,EAAM3xH,MAAMy1B,KAAMk8F,EAAM3xH,MAAM01B,IAH5B,GAMfq/J,YAAa,SAAS/0L,EAAOkmB,GACzB,IAAI+tK,EAAW/tK,EAAOkgB,OAAO9J,KACzB7G,EAAOz1B,EAAMy1B,KACbC,EAAK11B,EAAM01B,GACX6/J,EAAYj+L,KAAKm7L,gBAAgBwB,GAEvB,OAAVj0L,GAAkBosD,EAAS32B,IAAS22B,EAAS12B,MAC7C6/J,EAAYj+L,KAAKm7L,gBAAgBwB,GAAYsB,GAAa,CAAE9nL,IAAKm/G,EAAW18G,IAAKolJ,IAEvE7nJ,IAAM9S,KAAK8S,IAAI8nL,EAAU9nL,IAAKgoB,GACxC8/J,EAAUrlL,IAAMvV,KAAKuV,IAAIqlL,EAAUrlL,IAAKulB,GAExC8/J,EAAU9nL,IAAM9S,KAAK8S,IAAI8nL,EAAU9nL,IAAKioB,GACxC6/J,EAAUrlL,IAAMvV,KAAKuV,IAAIqlL,EAAUrlL,IAAKwlB,KAIhDqgK,UAAW,SAASpkE,GAChB,IAAI3xH,EAAQ2xH,EAAM3xH,MAClB,OAAOA,EAAMy1B,KAAOz1B,EAAM01B,MAIlCy7K,GAAcxxM,UAAUyxM,WAAa7e,GAAiB5yL,UAAUyxM,WAEhE,IAAIC,GAAiBna,GAAU78L,OAAO,CAClCwqK,SAAU,WACN,OAAOvtK,KAAKmM,UAIhBglC,GAAO,OAIP6oK,GAAiBp1C,EAAa7hK,OAAO,CACrCoF,KAAM,SAASO,EAAOxB,GAClB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAK0I,MAAQA,EACb1I,KAAKkH,QAAUA,EACflH,KAAKy+L,UAAYvnE,EAAel3H,KAAKkH,QAAQu3L,WAAW,GACxDz+L,KAAK6/L,iBAAkB,EACvB7/L,KAAKi6M,oBAGTrqM,OAAQ,WACJ,IAAI5P,KAAK8/L,UAAT,CAIA9/L,KAAK8/L,WAAY,EAEjB,IAAI7wK,EAAMjvB,KAAKkH,QACX4kL,EAAU78J,EAAI68J,QACdpc,EAASzgJ,EAAIygJ,OACbhnK,EAAQ1I,KAAK0I,MAEbwxM,EAAYl6M,KAAKk6M,UAAY,IAAIH,GAAerxM,EAAOF,EAAW,GAAIxI,KAAKkH,QAAS,CACpFwoK,OAAQA,EAAOvxI,KACf2tJ,QAASA,EAAQ3tJ,QAGjBg8K,EAAUn6M,KAAKm6M,QAAU,IAAIJ,GAAerxM,EAAOF,EAAW,GAAIxI,KAAKkH,QAAS,CAChFwoK,OAAQA,EAAOtxI,GACf0tJ,QAASA,EAAQ1tJ,MAGrBp+B,KAAKo6M,WAAWF,GAChBl6M,KAAKo6M,WAAWD,GAEhBn6M,KAAK+5C,OAAOmgK,GACZl6M,KAAK+5C,OAAOogK,KAGhB/pE,OAAQ,SAASwxB,GACb5hK,KAAK4P,SAEL,IAAIyqM,EAAUz4C,EAAUzjI,KACpBm8K,EAAQ14C,EAAUxjI,GAEtBp+B,KAAKu6M,eAAeF,EAASC,GAE7Bt6M,KAAKk6M,UAAU9pE,OAAOiqE,GACtBr6M,KAAKm6M,QAAQ/pE,OAAOkqE,GAEpBt6M,KAAKk5C,IAAMl5C,KAAKk6M,UAAU/Z,YAAYh5L,QAAQ6kB,KAAKhsB,KAAKm6M,QAAQha,cAGpE35B,gBAAiB,WACb,IAAItyG,EAAQ,IAAIs6E,GAIhB,OAHAt6E,EAAMna,OAAO/5C,KAAKk6M,UAAU1zC,mBAC5BtyG,EAAMna,OAAO/5C,KAAKm6M,QAAQ3zC,mBAEnBtyG,GAGXusI,gBAAiB,WACb,OAAOzgM,KAAKk+I,QAGhB2oB,oBAAqB,WACjB,MAAO,CACH3/J,QAASlH,KAAKkH,QACdi3B,KAAMn+B,KAAKk6M,UAAUrzC,sBACrBzoI,GAAIp+B,KAAKm6M,QAAQtzC,wBAIzB85B,cAAe,WACX,IAAIC,EAAU5gM,KAAK49L,MAAMjwG,KAAKizG,UAG9B,IAFmBA,GAAWA,EAAQr+B,SAASviK,KAAKk5C,KAEnC,CACb,IAGI9zC,EAAGjB,EAAG08L,EAHN3nJ,EAAMl5C,KAAKk5C,IACXqkC,EAASrkC,EAAIqkC,SACbujH,EAAkBr2K,EAatB,OAVIzqB,KAAKkH,QAAQkrC,UACbhtC,EAAIm4E,EAAOn4E,EACXjB,EAAI+0C,EAAIgkC,GA96MH,EA+6ML2jH,EAAgB3wG,IAEhB9qF,EAAI8zC,EAAIikC,GAj7MH,EAk7MLh5E,EAAIo5E,EAAOp5E,EACX08L,EAAgB7wG,GAGb,CACHqqC,MAAO,IAAIL,EAAM50H,EAAGjB,GACpB8qI,MAAO,CACH38F,WAAYwuJ,EACZ1uJ,SAAUyuJ,MAM1BZ,YAAa,SAASvvL,GAClB,OAAO1Q,KAAK49L,MAAM4B,iBAAiBx/L,KAAM0Q,IAG7CqwL,YAAa,SAAS7nJ,GAClB,OAAOl5C,KAAKk5C,IAAIqpH,SAASrpH,IAG7B8nJ,eAAgB,WACZhhM,KAAKk6M,UAAUlZ,iBACfhhM,KAAKm6M,QAAQnZ,kBAGjBiZ,iBAAkB,WACd,IAAIvqC,EAAS1vK,KAAKkH,QAAQwoK,OACrBA,EAAOh/J,SACHg/J,EAAOvxI,MAASuxI,EAAOvxI,KAAKztB,SAC7Bg/J,EAAOvxI,KAAOx7B,EAAEI,OAAO,GAAI2sK,EAAOvxI,KAAM,CACpCztB,OA7HM,SAiITg/J,EAAOtxI,IAAOsxI,EAAOtxI,GAAG1tB,SACzBg/J,EAAOtxI,GAAKz7B,EAAEI,OAAO,GAAI2sK,EAAOtxI,GAAI,CAChC1tB,OAlII,WAwIpB6pM,eAAgB,SAASF,EAASC,GAC9B,IAKQE,EAAmBC,EALvBxrL,EAAMjvB,KAAKkH,QACXwoK,EAASzgJ,EAAIygJ,OACbt9H,EAAWnjB,EAAImjB,SAEfs9H,EAAO5iK,WAAaqkC,KAEhBiB,EACIkoK,EAAMp9H,IAAMm9H,EAAQn9H,IACpBu9H,EAAkBjlB,GAClBglB,EAAoB/kB,KAEpBglB,EAAkBhlB,GAClB+kB,EAAoBhlB,IAGpB8kB,EAAMr9H,IAAMo9H,EAAQp9H,IACpBw9H,EAAkBhwL,EAClB+vL,EAAoB7vL,IAEpB8vL,EAAkB9vL,EAClB6vL,EAAoB/vL,GAIvBilJ,EAAOvxI,MAASuxI,EAAOvxI,KAAKrxB,WAC7B9M,KAAKk6M,UAAUhzM,QAAQwoK,OAAO5iK,SAAW0tM,GAGxC9qC,EAAOtxI,IAAOsxI,EAAOtxI,GAAGtxB,WACzB9M,KAAKm6M,QAAQjzM,QAAQwoK,OAAO5iK,SAAW2tM,KAKnDL,WAAY,SAAS//E,GACjBA,EAAMhmG,SAAWr0B,KAAKq0B,SACtBgmG,EAAMysC,SAAW9mK,KAAK8mK,SACtBzsC,EAAMvrF,OAAS9uC,KAAK8uC,OACpBurF,EAAMjL,MAAQpvH,KAAKovH,MACnBiL,EAAMujE,MAAQ59L,KAAK49L,SAI3Bp1L,EAAWwxM,GAAe3xM,UAAWo3L,IACrCj3L,EAAWwxM,GAAe3xM,UAAWq3L,IAErCsa,GAAe3xM,UAAUzH,SAAW,CAChCkrL,QAAS,CACLx/K,SAAS,EACT2lJ,WAAYsM,EACZ9uJ,KAzgNe,EA0gNf/J,KAAM+3J,EACNgK,OAAQ,CACJz6J,MAAO,GAEX4pB,QAAS,GAEb84I,OAAQ,CACJpjK,SAAS,EACTqsC,OAAQ4mH,EAAW,GACnBxpB,QAASwpB,EAAW,GACpBjuE,UAAW,CACP5rF,KAAMmvL,GACN1vJ,MAAOyvJ,IAEX9nL,SAAUqkC,IAEdggI,MAAO,CACHt9I,MAAO,IAEX0yI,UAAW,CACPulB,QAAS,CACLrkB,OAAQ,CACJr4C,MAAOmvC,EACPvxJ,MAAO,IAGf4sC,OAAQo3I,EAAiBpyB,kBAE7BzC,QAAS,CACLzrJ,OAAQ,cAIhB,IAAIgqM,GAAmBpX,GAAYvgM,OAAO,CACtC8gM,qBAAsB,WAClB,OAAO7jM,KAAK8jM,mBAAmB9jM,KAAKkhM,iBAAiBlhM,KAAK26M,cAG9D5W,cAAe,WACX,IAAI6W,EAAe56M,KAAK46M,aAKxB,OAJK56M,KAAK46M,eACNA,EAAe56M,KAAK46M,aAAe56M,KAAK8jM,mBAAmB9jM,KAAKkhM,iBAAiBlhM,KAAKi8H,aAAanmH,aAGhG8kM,GAGXlX,aAAc,SAASj3L,GACnB,IAAIwhI,EAAS,IAAI3B,GAAK7/H,GAClBouM,EAAW,IAAIvuE,GAAK7/H,GAExBwhI,EAAO/C,SAASvpI,KAAKyG,MAAM6lI,EAAO/C,SAAUlrI,KAAK2jM,kBACjDkX,EAAS3vE,SAASvpI,KAAKyG,MAAMyyM,EAAS3vE,SAAUlrI,KAAK+jM,iBAErD/jM,KAAKk+I,OAAOnkG,OAAOk0F,GACnBjuI,KAAKk+I,OAAOnkG,OAAO8gK,IAGvB5W,gBAAiB,WACb,OAAO,GAGXhoE,WAAY,WACR,OAAOj8H,KAAK2tK,WAAWrzJ,KAAI,SAAU+/G,GAAS,OAAOA,EAAM6/E,cAG/DS,SAAU,WACN,OAAO36M,KAAK2tK,WAAWrzJ,KAAI,SAAU+/G,GAAS,OAAOA,EAAM8/E,cAI/DW,GAAyBJ,GAAiB33M,OAAO,CACjD8gM,qBAAsB,WAClB,OAAO7jM,KAAK+6M,oBAAoB/6M,KAAK26M,aAGzC5W,cAAe,WACX,IAAI6W,EAAe56M,KAAK46M,aAKxB,OAJK56M,KAAK46M,eACNA,EAAe56M,KAAK46M,aAAe56M,KAAK+6M,oBAAoB/6M,KAAKi8H,aAAanmH,YAG3E8kM,GAGXG,oBAAqB,SAAS15E,GAG1B,OAFqB,IAAI6nD,GAEHl0H,QAAQh1D,KAAKkhM,iBAAiB7/D,OAIxD25E,GAAuBN,GAAiB33M,OAAO,CAC/C8gM,qBAAsB,WAClB,OAAO7jM,KAAK8jM,mBAAmB9jM,KAAKuhM,oBAAoBvhM,KAAK26M,cAGjE5W,cAAe,WACX,IAAI6W,EAAe56M,KAAK46M,aAMxB,OALK56M,KAAK46M,eACNA,EAAe56M,KAAK46M,aAAe56M,KAAK8jM,mBAAmB9jM,KAAKuhM,oBAAoBvhM,KAAKi8H,gBAC5EnmH,UAGV8kM,KAIfpyM,EAAWwyM,GAAqB3yM,UAAWi5L,IAE3C,IAAI2Z,GAAiBhgB,GAAiBl4L,OAAO,CACzC6M,OAAQ,WACJqrL,GAAiBlzL,GAAG6H,OAAOrF,KAAKvK,MAEhCA,KAAKkiM,kBAGTtG,UAAW,WACP,OAAOoe,IAGXrc,YAAa,SAAS9vL,EAAM+gB,GACxB,IAAIkgB,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAClBjzL,EAAQmF,EAAK2kL,YAEjB,IAAKt+G,GAASxrE,EAAMy1B,QAAU+1C,GAASxrE,EAAM01B,IAAK,CAC9C,GAAIp+B,KAAKuiM,oBAAoBzzJ,KAAY57B,GAMrC,OAAO,KALPxK,EAAQ,CACJy1B,KAAM,EACNC,GAAI,GAOhB,IAAIs9J,EAAe17L,KAAK07L,aAAa5sJ,EAAQ6sJ,GAC7CD,EAAe17L,KAAK89L,iBAAiBpC,EAAchzL,EAAOkmB,GAE1D,IAAIwgG,EAAQvhH,EAAK+gB,OAAOwgG,OAAStgF,EAAOsgF,MACpClmH,EAAW4lC,EAAOsgF,SAClBA,EAAQssE,EAAatsE,OAGzB,IAAIiL,EAAQ,IAAI2/E,GAAetxM,EAAOgzL,GAKtC,OAJArhE,EAAMjL,MAAQA,EAEdpvH,KAAK+5C,OAAOsgF,GAELA,GAGXmoE,cAAe,SAAS70B,EAAY0wB,EAAe1C,GAC/C,IAAIlvL,GAAS4xL,EAAc3wB,MAAQ,IAAIjhK,MAUvC,OAAO,IARO,WAAVA,EACcquM,GACG,SAAVruM,EACOuuM,GAEAN,IAGK/sC,EAAY0wB,EAAe1C,IAGtDQ,UAAW,SAAS9hE,EAAOriF,GACvB,OAAKqiF,EAIE,CAAEA,EAAM3xH,MAAMy1B,KAAMk8F,EAAM3xH,MAAM01B,IAH5B,CAAE4Z,EAAYA,IAM7BumJ,UAAW,SAASzjB,EAAWqhB,GAC3B,IAAI+e,EAAWpgC,EAAU/H,QAAQopB,EAAU,GAAIA,EAAU,IAAKn8L,KAAKkH,QAAQ4yC,MACvEqhK,EAASrgC,EAAU/H,QAAQopB,EAAU,GAAIA,EAAU,IAAKn8L,KAAKkH,QAAQ4yC,MACzE,GAAIohK,GAAYC,EACZ,MAAO,CACHh9K,KAAM+8K,EACN98K,GAAI+8K,IAKhB3c,UAAW,SAASF,EAAcC,GAC9B,IAEI2c,EAAUC,EAFVh9K,EAAOogK,EAAUpgK,KACjBC,EAAKmgK,EAAUngK,GAWnB,OARIp+B,KAAKkH,QAAQ20L,YACbqf,EAAW,IAAIv5C,EAAIxjI,EAAK8+C,GAAIqhH,EAAaphH,GAAI/+C,EAAKg/C,GAAImhH,EAAalhH,IACnE+9H,EAAS,IAAIx5C,EAAIvjI,EAAG6+C,GAAIqhH,EAAaphH,GAAI9+C,EAAG++C,GAAImhH,EAAalhH,MAE7D89H,EAAW,IAAIv5C,EAAI28B,EAAarhH,GAAI9+C,EAAK++C,GAAIohH,EAAanhH,GAAIh/C,EAAKi/C,IACnE+9H,EAAS,IAAIx5C,EAAI28B,EAAarhH,GAAI7+C,EAAG8+C,GAAIohH,EAAanhH,GAAI/+C,EAAGg/C,KAG1D,CACHj/C,KAAM+8K,EACN98K,GAAI+8K,IAIZ1f,SAAU,SAAS5tL,EAAM+gB,GACrB,IAAI4jK,EAAc3kL,EAAK2kL,YAClB19H,EAAS09H,EAAYr0J,QACtBq0J,EAAYr0J,KAAOq0J,EAAYp0J,IAG9B02B,EAAS09H,EAAYp0J,MACtBo0J,EAAYp0J,GAAKo0J,EAAYr0J,MAGjC88J,GAAiBlzL,GAAG0zL,SAASlxL,KAAKvK,KAAM6N,EAAM+gB,IAGlD6uK,YAAa,SAAS/0L,EAAOkmB,GACzB,GAAc,OAAVlmB,GAAkBosD,EAASpsD,EAAMy1B,OAAS22B,EAASpsD,EAAM01B,IAAK,CAC9D,IAAIu+J,EAAW/tK,EAAOkgB,OAAO9J,KACzBi5J,EAAYj+L,KAAKm7L,gBAAgBwB,GAAY38L,KAAKm7L,gBAAgBwB,IAAa,CAAExmL,IAAKm/G,EAAW18G,IAAKolJ,GACtG7/H,EAAOz1B,EAAMy1B,KACbC,EAAK11B,EAAM01B,GAEf6/J,EAAU9nL,IAAM9S,KAAK8S,IAAI8nL,EAAU9nL,IAAKgoB,EAAMC,GAC9C6/J,EAAUrlL,IAAMvV,KAAKuV,IAAIqlL,EAAUrlL,IAAKulB,EAAMC,KAItDohK,iBAAkB,SAASnlE,EAAO3pH,GAC9B,IAAIhI,EAAQ2xH,EAAM3xH,MAElB,OAAO1I,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQhI,EAAMy1B,KAAMz1B,EAAM01B,KAGnEglK,gBAAiB,WAGb,IAFA,IAAI/hE,EAASrhI,KAAKqhI,OACd9qH,EAAS,GACJ3M,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAAO,CAC1C,IAAIywH,EAAQgH,EAAOz3H,GACfywH,IACA9jH,EAAO5U,MAAM04H,EAAM6/E,WAAa,IAAI5xJ,QACpC/xC,EAAO5U,MAAM04H,EAAM8/E,SAAW,IAAI7xJ,SAI1C,OAAO/xC,EAAO8G,OAAOrd,KAAKmiM,cAIlC35L,EAAWyyM,GAAe5yM,UAAW45L,GAAgBiB,IAErD,IAAIkY,GAAYxT,GAAY7kM,OAAO,CAC/BqtI,OAAQ,SAASl3F,GACb,IAAIjqB,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdwB,EAAQumB,EAAIvmB,MAEZoyK,EADQ7rJ,EAAI2uK,MACMjD,gBAAgBzzL,GAClCm0M,EAAU,GACVC,EAAU,GACVC,EAAW,GAEXzT,EAAShtB,EAAU/H,QAAQrqK,EAAMotH,IAAKptH,EAAMyhL,MAC5CqxB,EAAQ1gC,EAAU/H,QAAQrqK,EAAM6oF,KAAM7oF,EAAM6oF,MAC5CkqH,EAAQ3gC,EAAU/H,QAAQrqK,EAAM48C,MAAO58C,EAAM48C,OAEjDk2J,EAAMv+H,GAAKw+H,EAAMx+H,GAAK6qH,EAAO7qH,GAAK/jC,EAAI+jC,GACtCu+H,EAAMr+H,GAAKs+H,EAAMt+H,GAAK2qH,EAAO3qH,GAAKjkC,EAAIikC,GAEtC,IAAI6qH,EAAMF,EAAOvqH,SAASn4E,EAE1Bi2M,EAAQ15M,KAAK,CAAE65M,EAAMv+H,GAAIu+H,EAAMt+H,KAC/Bm+H,EAAQ15M,KAAK,CAAEqmM,EAAKwT,EAAMt+H,KAC1Bo+H,EAAQ35M,KAAK,CAAEqmM,EAAKyT,EAAMv+H,KAC1Bo+H,EAAQ35M,KAAK,CAAE85M,EAAMt+H,GAAIs+H,EAAMv+H,KAC/Bq+H,EAAS55M,KAAK,CAAEqmM,EAAKF,EAAO5qH,KAC5Bq+H,EAAS55M,KAAK,CAAEqmM,EAAKF,EAAO1qH,KAE5Bp9E,KAAKioM,MAAQ,CACToT,EAASC,EAASC,GAGtBv7M,KAAKk5C,IAAM4uJ,EAAO3gM,QAAQ6kB,KAAKwvL,EAAMr0M,QAAQ6kB,KAAKyvL,IAElDz7M,KAAKkoM,cAGTI,WAAY,eAGZoT,GAAY9S,GAAiB7lM,OAAO,CACpC64L,UAAW,WACP,OAAOwf,MAIXO,GAAmB/2C,EAAa7hK,OAAO,CACvCoF,KAAM,SAASg2B,EAAMC,EAAI0Q,GACrB81H,EAAa78J,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAKm+B,KAAOA,EACZn+B,KAAKo+B,GAAKA,EACVp+B,KAAK8uC,OAASA,GAGlB6+H,WAAY,WACR,IAAIxvI,EAAOn+B,KAAKm+B,KAEZk8K,EADMr6M,KACQm+B,KAAK+a,IACnBohK,EAFMt6M,KAEMo+B,GAAG8a,IACfmoF,EAAS,GAEb,GAAIljG,EAAKmtG,WAAY,CACjB,IAAInnI,EAAIg6B,EAAKsgK,UAAY4b,EAAQn9H,GAAKm9H,EAAQj9H,GAC9CikD,EAAO1/H,KACH,CAAE04M,EAAQp9H,GAAI94E,GACd,CAAEm2M,EAAMn9H,GAAIh5E,QAEb,CACH,IAAIiB,EAAI+4B,EAAKsgK,UAAY4b,EAAQl9H,GAAKk9H,EAAQp9H,GAC9CokD,EAAO1/H,KACH,CAAEyD,EAAGi1M,EAAQn9H,IACb,CAAE93E,EAAGk1M,EAAMl9H,KAInB,OAAOikD,GAGXkkC,aAAc,WACVX,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAElC,IAAI0tK,EAAO1tK,KAAK8uC,OAAO4+H,MAAQ,GAE3Bt+H,EAAOk9F,GAAKrQ,WAAWj8H,KAAK2tK,aAAc,CAC1C9vC,OAAQ,CACJzO,MAAOs+C,EAAKt+C,MACZpiH,MAAO0gK,EAAK1gK,MACZ4pB,QAAS82I,EAAK92I,QACdolH,SAAU0xB,EAAK1xB,YAIvB+iB,EAAiB3vH,GACjBpvC,KAAKk+I,OAAOnkG,OAAO3K,MAI3BixH,EAAkBs7C,GAAkB,CAChCrqH,UAAW,CACP5rF,KAAMmvL,GACN1vJ,MAAOyvJ,MAIf,IAAIgnB,GAAiB7U,GAAShkM,OAAO,CACjC6M,OAAQ,WACJm3L,GAASh/L,GAAG6H,OAAOrF,KAAKvK,MACxBA,KAAK67M,kBAGTrgB,mBAAoB,SAASxyK,GAOzB,IANA,IAEI8lB,EAAS9uC,KAAKkH,QAAQ4nC,OACtBgtK,EAAkB5/B,GAAgBptI,GAClCw8F,GAActrI,KAAKkH,QAAQ20L,WAEtBF,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAK7C,IAJA,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvB/0I,EAAQ,EACRmgH,EAAe,EAEV+Y,EAAa,EAAGA,EAAag8B,EAAiBh8B,IAAc,CACjE,IAAIjyK,EAAOskL,GAAa1+K,QAAQm/K,UAAUyL,EAAeve,GACrDp3K,EAAQmF,EAAK2kL,YAAY9pL,MACzBqzM,EAAUluM,EAAK+gB,OAAOmtL,QACtB59K,EAAOyoB,EACPxoB,OAAK,EAEL29K,EAC8B,UAA1BA,EAAQzjM,eACRzK,EAAK2kL,YAAY9pL,MAAQk+C,EACzBzoB,EAAO,EACPC,EAAKwoB,IAEL/4C,EAAK2kL,YAAY9pL,MAAQq+J,EACzB3oI,EAAKD,EAAO4oI,EACZA,EAAe,GAEZjyG,EAASpsD,KAChBq+J,GAAgBr+J,EAEhB01B,EADAwoB,GAASl+C,GAIbsgB,EAASnb,EAAM,CACXi5J,SAnCG9mK,KAmCgB0tL,aAAazR,WAAW6D,GAC3CA,WAAYA,EACZhxI,OAAQuvJ,EACR1C,SAAUA,EACV/0I,MAAOA,EACPmgH,aAAcA,EACd5oI,KAAMA,EACNC,GAAIA,EACJktG,WAAYA,MAM5BmyD,YAAa,SAAS/0L,EAAOkmB,GACzBm4K,GAASh/L,GAAG01L,YAAYlzL,KAAKvK,KAAM,CAAE0I,MAAOkmB,EAAOwP,IAAMxP,IAG7D6vK,UAAW,SAASpkE,GAChB,OAAOA,EAAM3xH,OAAS,GAG1ByzL,UAAW,SAAS9hE,GAChB,MAAO,CAAEA,EAAMl8F,KAAMk8F,EAAMj8F,KAG/By9K,eAAgB,WAOZ,IANA,IAEI/sK,EAAS9uC,KAAKkH,QAAQ4nC,OACtBusJ,EAAer7L,KAAKq7L,aACpBnwD,EAAWlrI,KAAKkrI,SAAW,GAEtBywD,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAAY,CACzD,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvBt6D,EAASg6D,EAAaM,GAE1B,GAAIt6D,EAEA,IADA,IAAI26E,OAAY,EACPnpB,EAAU,EAAGA,EAAUxxD,EAAO75H,OAAQqrL,IAAW,CACtD,IAAIx4D,EAAQgH,EAAOwxD,GAEnB,GAAIx4D,GAAS2hF,EAAW,CACpB,IAAIxzE,EAAU,IAAImzE,GAAiBK,EAAW3hF,EAAOgkE,GACrDnzD,EAASvpI,KAAK6mI,GAjBfxoI,KAkBU+5C,OAAOyuF,GAGpBwzE,EAAY3hF,OAO5B4hF,GAAc,CAAErmB,GAAM0B,GAAeL,GAAYS,IACjDwkB,GAAsB,CAAE1lB,GAAMiB,IAAgBp6K,OAAO4+L,IAErDE,GAAsBpL,GAAahuM,OAAO,CAC1CktK,WAAY,SAASnhI,GAOjB,GAJA9uC,KAAKo8M,kBAAoB,GACzBp8M,KAAKk+L,eAAiB,GACtBl+L,KAAKq8M,sBAAwB,IAAI1W,GAE7B72J,EAAOtnC,OAAS,EAAG,CACnBxH,KAAK67L,WAAaxmK,EACdyZ,EAAO,GAAGppC,KAAM,CAAEmwL,GAAKG,GAAQyB,GAAeH,GAAeI,GAC5CR,GAAWX,GAAsBgB,KAGtD,IAAK,IAAIhwL,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CACpC,IAAI2qI,EAAQpjG,EAAOvnC,GAAG2qI,MACtB,GAAIA,GAAwB,SAAfA,EAAMxsI,KAAiB,CAd7B1F,KAeMs8M,UAAW,EACpB,UAOhB1sM,OAAQ,SAAS2hM,QACC,IAAVA,IAAoBA,EAAQvxM,KAAKuxM,OAErCvxM,KAAKu8M,mBAAmBhL,GACxBvxM,KAAKw8M,oBAAoBjL,GACzBvxM,KAAKy8M,yBAAyBlL,GAC9BvxM,KAAK08M,aAAanL,GAClBvxM,KAAK28M,gBAAgBpL,IAGzBzC,WAAY,SAAS9pK,GACjB,IAAI23J,EAAW33J,EAAK99B,QAAQ9E,KAE5B2uM,GAAahpM,GAAG+mM,WAAWvkM,KAAKvK,KAAMglC,GAElCA,aAAgBg1I,SACTh6K,KAAKo8M,kBAAkBzf,IAE9B38L,KAAKq8M,sBAAsB5mK,MAAMknJ,UAC1B38L,KAAKk+L,eAAevB,IAG3B33J,IAAShlC,KAAK0tL,qBACP1tL,KAAK0tL,aAGZ1oJ,IAAShlC,KAAK86K,kBACP96K,KAAK86K,WAIpB4hC,aAAc,SAASnL,GAKnB,IAJA,IAAIpgF,EAAWnxH,KAEXozM,EAAepzM,KAAKmzM,oBAEf5rM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIomF,EAAO4jH,EAAMhqM,GACbq1M,EAAaxJ,EAAazlH,EAAKzmF,QAAQ9E,MAAQ,YAAc,GACjE+uH,EAASkhF,YAAYuK,GAErB,IAAIC,EAAgB1rF,EAASmiF,oBAAoBsJ,GACjD,GAAKC,EAKL,IADA,IAAIrzK,EAAS2nF,EAAS2rF,0BAA0BD,GACvCE,EAAU,EAAGA,EAAUvzK,EAAOhiC,OAAQu1M,IAC3C5rF,EAAS6rF,iBAAiBxzK,EAAOuzK,GAAUpvH,KAKvDqvH,iBAAkB,SAASluK,EAAQ6+C,GAC/B3tF,KAAKi9M,gBACDnN,GAAmBhhK,EAAQ,CAAE8mJ,GAAM0B,KAAkB3pG,GAGzD3tF,KAAKk9M,qBACDpN,GAAmBhhK,EAAQ,CAAEmoJ,GAAYS,KAAwB/pG,GAGrE3tF,KAAKm9M,eACDrN,GAAmBhhK,EAAQ,CAAEonJ,GAAQL,KAAQloG,GAGjD3tF,KAAKo9M,oBACDtN,GAAmBhhK,EAAQ,CAAEqoJ,GAAcD,KAAcvpG,GAG7D3tF,KAAKq9M,kBACDvN,GAAmBhhK,EAAQ,CAAEknJ,GAAQwB,KAAoB7pG,GAG7D3tF,KAAKs9M,uBACDxN,GAAmBhhK,EAAQmnJ,IAActoG,GAG7C3tF,KAAKu9M,mBACDzN,GAAmBhhK,EAAQ,CAAEgnJ,GAAUyB,KAAsB5pG,GAGjE3tF,KAAKw9M,gBACD1N,GAAmBhhK,EAAQ2nJ,IAAO9oG,GAGtC3tF,KAAKy9M,qBACD3N,GAAmBhhK,EAAQ,CAAE6oJ,GAAWpB,KAAyB5oG,GAGrE3tF,KAAK09M,gBACD5N,GAAmBhhK,EAAQ,CAAE0nJ,GAAMiB,KAAkB9pG,IAI7D6uH,oBAAqB,SAASjL,GAC1B,IAAIpgF,EAAWnxH,KAEX8uC,EAAS9uC,KAAK29M,WAAa39M,KAAK8uC,OAChC8uK,EAAkB,GACtB59M,KAAK69M,oBAAsB,GAC3B79M,KAAK89M,mBAAqB99M,KAAK89M,oBAAsB,GAErD,IAAK,IAAIv2M,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CACpC,IAAI82L,EAAgBvvJ,EAAOvnC,GACvBmmL,EAAev8D,EAAS+pE,mBAAmBmD,GAC3C0f,EAAW5sF,EAAS2gF,SAASpkB,EAAaxmL,QAAQymF,MAIlD0wG,GAHWwR,GAAiBniB,EAAaxmL,QAAQxB,KAAMi4J,IAE1C0gC,EAAc2f,gBAAkB3oL,EAAQ0oL,EAAUxM,GAC/CpgF,EAAS8sF,gBAAgB5f,EAAe3Q,GAExCv8D,EAAS+sF,aAAa7f,EAAe3Q,GAGzDkwB,EAAgBj8M,KAAK08L,GAGzBr+L,KAAK89M,mBAAqB99M,KAAK69M,oBAC/B79M,KAAK69M,oBAAsB,KAE3B79M,KAAK29M,UAAY7uK,EACjB9uC,KAAK8uC,OAAS8uK,GAGlBM,aAAc,SAASpvK,EAAQ4+I,GAC3B,IAAIhpH,GAAc51B,EAAOjhC,MAAQ,IAAIrG,OAGrC,GAFAkmL,EAAa/S,WAAat3K,KAAKuV,IAAI80K,EAAa/S,YAAc,EAAGj2G,IAE3D5P,EAAS44H,EAAaxmL,QAAQiP,OAAQ2+C,EAAS44H,EAAaxmL,QAAQ0R,KACtE,OAAOk2B,EAGX,IAAI8kB,EAAQ85H,EAAaxQ,sBACrBihC,EAAmB9oL,EAAQyZ,EAAOppC,KAAMw2M,IACxC7d,EAAgB71L,EAAW,GAAIsmC,GAYnC,OAVAuvJ,EAAcxwL,MAAQwwL,EAAcxwL,MAAQ,IAAIjH,MAAMgtD,EAAMz9C,IAAKy9C,EAAMh7C,IAAM,GAEzEulM,GACAxN,GAAuBtS,EAAezqI,EAAO8Q,GAAY,SAAU96D,GAAO,MAAO,CAC7EolC,KAAMF,EAAOjhC,KAAKjE,GAClBk9J,SAAU4mB,EAAazR,WAAWryK,GAAK,GACvCk2K,WAAYl2K,EAAMgqD,EAAMz9C,QACrB,SAAUvM,GAAO,OAAOorH,EAAQlmF,EAAOjhC,KAAKjE,OAGhDy0L,GAGX+f,uBAAwB,WACpBp+M,KAAK89M,mBAAqB,IAG9BO,mBAAoB,SAASvvK,EAAQ4+I,GACjC,IAEIn8K,EAAOu9B,EAAY,MAAI,IAAO4+I,EAAaxT,iBAC/C,GAAIl6K,KAAK89M,mBAAmBvsM,GAExB,OADAvR,KAAK69M,oBAAoBtsM,GAAOvR,KAAK89M,mBAAmBvsM,GACjDvR,KAAK89M,mBAAmBvsM,GAGnC,IAAIkyK,EAAciK,EAAaxmL,QAC3BkzK,EAAgBqJ,EAAYrJ,cAC5BkkC,EAAWzO,GAAiBpsB,EAAY/9K,KAAMi4J,GAC9C4gD,EAAUzvK,EAAOjhC,KACjB2wM,EAAQF,EAAWvO,GAAe9d,GAClC17K,EAAS,GACR+nM,GACD5wB,EAAavQ,gBAGjB,IAAK,IAAIvzK,EAAM,EAAGA,EAAM20M,EAAQ/2M,OAAQoC,IAAO,CAC3C,IAAIk9J,OAAW,EAOf,GALIA,EADAh4H,EAAOkvK,cACIQ,EAAM1vK,EAAOkvK,cAAeO,EAAQ30M,GArBxC5J,KAqBuDmlK,aAAaoJ,MAEhE6L,EAAcxwK,GAGzBorH,EAAQ8xC,IAA0B,OAAbA,EAAmB,CACxC,IAAIgZ,EAAa4N,EAAa1R,WAAWlV,GACzCvwJ,EAAOupK,GAAcvpK,EAAOupK,IAAe,CAAE1rJ,MAAO,GAAI0yI,SAAUA,GAClEvwJ,EAAOupK,GAAY1rJ,MAAMzyB,KAAKiI,IAMtC,OAFA5J,KAAK69M,oBAAoBtsM,GAAOgF,EAEzBA,GAGX0nM,gBAAiB,SAASnvK,EAAQ4+I,GAE9B,IADc5+I,EAAOjhC,KACRrG,OACT,OAAOsnC,EA4BX,IAzBA,IAAIiqK,EAAY/4M,KAAKq+M,mBAAmBvvK,EAAQ4+I,GAC5Cn3K,EAAS/N,EAAW,GAAIsmC,GACxB2vK,EAAa,IAAIpG,GAAiB7vM,EAAW,GAAIsmC,GAASqjJ,GAAa1+K,QAAS4lM,GAAkB5lM,SAClG5F,EAAO0I,EAAO1I,KAAO,GACrBkmB,EAAY25J,EAAaxmL,QAAQ6sB,WAAa,GAE9C6/B,EAAQ85H,EAAaxQ,sBACrBwhC,EAAe,SAAU90M,GACzB,IAAI+0M,EAAc/0M,EAAMgqD,EAAMz9C,IAC1BkkH,EAAQ0+E,EAAUnvM,GAOtB,GANKywH,IACDA,EAAQ0+E,EAAUnvM,GAAO,IAG7BywH,EAAMylD,WAAa6+B,GAEdtkF,EAAMrrF,KAAM,CACb,IAAI83H,EAAW4mB,EAAazR,WAAWryK,GAAK,GAC5CywH,EAAMysC,SAAWA,EACjBzsC,EAAMrrF,KAAOyvK,EAAW3F,gBAAgBz+E,EAAMjmG,MAAO0yI,GAGzD,OAAOzsC,GAGFzwH,EAAMgqD,EAAMz9C,IAAKvM,GAAOgqD,EAAMh7C,IAAKhP,IAAO,CAC/C,IAAIywH,EAAQqkF,EAAa90M,GACzBiE,EAAKwsH,EAAMylD,YAAczlD,EAAMrrF,KAE3BqrF,EAAMjmG,OAASimG,EAAMjmG,MAAM5sB,SAC3BusB,EAAUsmG,EAAMylD,YAAczlD,EAAMrrF,MAU5C,OANI3Z,EAAQ9e,EAAO7Q,KAAMw2M,KACrBvL,GAAuBp6L,EAAQq9C,EAAO85H,EAAavpH,aAAcu6I,GAAc,SAAU90M,GAAO,OAAOmvM,EAAUnvM,MAGrH8jL,EAAaxmL,QAAQ6sB,UAAYA,EAE1Bxd,GAGXs4L,YAAa,SAASjgC,EAAOjhF,GACzB,IAAI7+C,EAAS8/H,EAAM1nK,QAAQ4nC,OACvB4+I,EAAe1tL,KAAKk7L,mBAAmBpsJ,EAAO,IAC9CqrI,EAAauT,EAAaxmL,QAAQizK,WAClCykC,EAAkBv7M,KAAKuV,IAAI,EAAGsjK,GAAgBptI,GAAUqrI,EAAW3yK,QAEvE,GAAIo3M,EAAkB,EAElB,IADAzkC,EAAauT,EAAaxmL,QAAQizK,WAAauT,EAAaxmL,QAAQizK,WAAWvzK,MAAM,GAC9Eg4M,KACHzkC,EAAWx4K,KAAK,IAIxB3B,KAAKq8M,sBAAsBt1J,OAAO6nH,EAAMusB,iBAExC4V,GAAahpM,GAAG8mM,YAAYtkM,KAAKvK,KAAM4uK,EAAOjhF,IAGlD0lH,eAAgB,SAASvkK,GACrB,IAAI5nC,EAAUlH,KAAKkH,QACfy1L,EAAW7tJ,EAAO9J,KAClBy+I,EAAc,GAAGpmK,OAAOnW,EAAQ4zK,WAChC91I,EAAO9G,EAAKulJ,GAAa,SAASv+K,GAAK,OAAOA,EAAE9C,OAASu6L,KAAa,GAEtEkiB,IADQ33M,EAAQqqM,OAAS,CAAE,KACF,IAAM,IAAInvM,MAAQ,UAG/C,OAFgB4iC,GAAQ,IAAI2oD,MAAQkxH,GAKxC3jB,mBAAoB,SAASpsJ,GACzB,IAAI6tJ,EAAW7tJ,EAAO4+I,aAClB1oJ,EAAO23J,EAAW38L,KAAKo8M,kBAAkBzf,GAAY38L,KAAK0tL,aAE9D,IAAK1oJ,EACD,MAAM,IAAIv0B,MAAM,4CAA8CksL,GAGlE,OAAO33J,GAGX85K,sBAAuB,SAASC,EAAapxH,GACzC,IAAIukD,EAAQ6sE,EAAY7sE,MAIxB,MAAO,CACHkqD,UAAWlqD,EACX6pD,aALe7pD,GAAwB,SAAfA,EAAMxsI,KAM9Bo0C,KALO6zC,EAAKzmF,QAAQ4yC,OAS5BgjK,0BAA2B,SAAShuK,GAGhC,IAFA,IAAIkwK,EAAe,GACfpqK,EAAS,GACJhrC,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,IAAO,CAC1C,IAAIxH,EAAO0sC,EAAOllC,GAAK8jL,cAAgB,cAClC94I,EAAOlmC,eAAetM,KACvBwyC,EAAOxyC,IAAQ,EACf48M,EAAar9M,KAAKS,IAK1B,IADA,IAAIonC,EAAS,GACJypK,EAAS,EAAGA,EAAS+L,EAAax3M,OAAQyrM,IAAU,CACzD,IACIgM,EAAaC,GAAYpwK,EADlBkwK,EAAa/L,GACmBA,GACjB,IAAtBgM,EAAWz3M,QAIfgiC,EAAO7nC,KAAKs9M,GAGhB,OAAOz1K,GAGX2zK,eAAgB,SAASruK,EAAQ6+C,GAC7B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrBqwK,EAAW,IAAIpY,GAAS/mM,KAAM2C,EAAEI,OAAO,CACvC+rC,OAAQA,EACR+sJ,WAAY77L,KAAK67L,WACjBhrL,IAAKkuM,EAAYluM,IACjB0+H,QAASwvE,EAAYxvE,SACtBvvI,KAAK8+M,sBAAsBC,EAAapxH,KAE3C3tF,KAAK6uM,YAAYsQ,EAAUxxH,KAG/ByvH,oBAAqB,SAAStuK,EAAQ6+C,GAClC,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrBswK,EAAmB,IAAIvF,GAAc75M,KAAM,CAC3C8uC,OAAQA,EACR+sJ,WAAY77L,KAAK67L,WACjBhrL,IAAKkuM,EAAYluM,IACjB0+H,QAASwvE,EAAYxvE,UAGzBvvI,KAAK6uM,YAAYuQ,EAAkBzxH,KAGvC0vH,kBAAmB,SAASvuK,EAAQ6+C,GAChC,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrBuwK,EAAc,IAAIzS,GAAY5sM,KAAM,CACpC8uC,OAAQA,EACR+sJ,WAAY77L,KAAK67L,WACjBhrL,IAAKkuM,EAAYluM,IACjB0+H,QAASwvE,EAAYxvE,QACrBz1F,KAAM6zC,EAAKzmF,QAAQ4yC,OAGvB95C,KAAK6uM,YAAYwQ,EAAa1xH,KAGlC+vH,gBAAiB,SAAS5uK,EAAQ6+C,GAC9B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrBwwK,EAAY,IAAIjc,GAAUrjM,KAAM2C,EAAEI,OAAO,CACzC84L,WAAY77L,KAAK67L,WACjB/sJ,OAAQA,GACT9uC,KAAK8+M,sBAAsBC,EAAapxH,KAE3C3tF,KAAK6uM,YAAYyQ,EAAW3xH,KAGhCsvH,gBAAiB,SAASnuK,EAAQ6+C,GAC9B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrBywK,EAAY,IAAI1a,GAAU7kM,KAAM2C,EAAEI,OAAO,CACzC84L,WAAY77L,KAAK67L,WACjB/sJ,OAAQA,GACT9uC,KAAK8+M,sBAAsBC,EAAapxH,KAE3C3tF,KAAK6uM,YAAY0Q,EAAW5xH,KAGhCuvH,qBAAsB,SAASpuK,EAAQ6+C,GACnC,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIg4M,EAAiB,IAAIvE,GAAej7M,KAAM,CAC1C67L,WAAY77L,KAAK67L,WACjB/sJ,OAAQA,EACRgL,KAAM6zC,EAAKzmF,QAAQ4yC,OAGvB95C,KAAK6uM,YAAY2Q,EAAgB7xH,KAGrC6vH,gBAAiB,SAAS1uK,EAAQ6+C,GAC9B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrB8/H,EAAQ,IAAI8sC,GAAU17M,KAAM,CAC5B67L,WAAY77L,KAAK67L,WACjBhrL,IAAKkuM,EAAYluM,IACjBi+B,OAAQA,EACRygG,QAASwvE,EAAYxvE,QACrBz1F,KAAM6zC,EAAKzmF,QAAQ4yC,OAGvB95C,KAAK6uM,YAAYjgC,EAAOjhF,KAG5B2vH,uBAAwB,SAASxuK,EAAQ6+C,GACrC,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrB8/H,EAAQ,IAAIg6B,GAAiB5oM,KAAM,CACnC67L,WAAY77L,KAAK67L,WACjBhrL,IAAKkuM,EAAYluM,IACjBi+B,OAAQA,EACRygG,QAASwvE,EAAYxvE,QACrBz1F,KAAM6zC,EAAKzmF,QAAQ4yC,OAGvB95C,KAAK6uM,YAAYjgC,EAAOjhF,KAG5B4vH,mBAAoB,SAASzuK,EAAQ6+C,GACjC,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrB8/H,EAAQ,IAAIw7B,GAAapqM,KAAM,CAC/B67L,WAAY77L,KAAK67L,WACjBhrL,IAAKkuM,EAAYluM,IACjBi+B,OAAQA,EACRygG,QAASwvE,EAAYxvE,QACrBz1F,KAAM6zC,EAAKzmF,QAAQ4yC,OAGvB95C,KAAK6uM,YAAYjgC,EAAOjhF,KAG5B8vH,qBAAsB,SAAS3uK,EAAQ6+C,GACnC,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrB2wK,EAAiB,IAAI7D,GAAe57M,KAAM,CAC1C8uC,OAAQA,EACR+sJ,WAAY77L,KAAK67L,WACjBhrL,IAAKkuM,EAAYluM,IACjB0+H,QAASwvE,EAAYxvE,UAGzBvvI,KAAK6uM,YAAY4Q,EAAgB9xH,KAGrC+xH,qBAAsB,SAASC,EAAkBC,GAK7C,IAJA,IAEIC,EAAiB/P,GAAmB9vM,KAAK8uC,OAAQ8oJ,IAE5C+D,EAAW,EAAGA,EAAW37L,KAAK8uC,OAAOtnC,OAAQm0L,IAAY,CAC9D,IAAI0C,EALOr+L,KAKkB8uC,OAAO6sJ,GACpC,GAAItmK,EAAQgpK,EAAc34L,KAAMu2M,IAAc,CAC1C,IAAIvuC,EAAO2wB,EAAc3wB,KACrBA,GAAQA,EAAKjhK,QAAUkpL,IACvBkqB,EAAel+M,KAAK08L,IAKhC,IAAK,IAAIY,EAAa,EAAGA,EAAa4gB,EAAer4M,OAAQy3L,IAAc,CACvE,IAAI6gB,EAAaD,EAAe5gB,GAAYvR,cAAgB,GAC5D,GAAIoyB,IAAeH,IAAsBG,GAAoC,IAAtBF,EACnD,OAAO,IAKnBG,eAAgB,SAASJ,EAAkBC,GAGvC,IAFA,IAAI9wK,EAAS9uC,KAAK8uC,OAET6sJ,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAAY,CACzD,IAAImkB,EAAahxK,EAAO6sJ,GAAUjO,cAAgB,GAClD,IAAKoyB,IAAeH,IAAsBG,GAAoC,IAAtBF,IAA6B9wK,EAAO6sJ,GAAUqiB,cAClG,OAAO,IAKnBvB,yBAA0B,WAEtB,IADA,IAAI7pC,EAAO5yK,KAAK4yK,KACPrrK,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IACzBqrK,EAAKrrK,aAAcyyK,GACnBpH,EAAKrrK,GAAG4oK,gBAKpBosC,mBAAoB,SAAShL,GAOzB,IANA,IAAIpgF,EAAWnxH,KAEX67L,EAAa77L,KAAK67L,WAClBjkD,EAAc,GAAGv6H,OAAOrd,KAAKkH,QAAQwmL,cACrC9a,EAAO,GAEFrrK,EAAI,EAAGA,EAAIqwI,EAAYpwI,OAAQD,IAAK,CACzC,IAAIk8K,EAAc7rC,EAAYrwI,GAC1Bw2M,EAAW5sF,EAAS2gF,SAASruB,EAAY91F,MAE7C,GAAIt4D,EAAQ0oL,EAAUxM,GAAQ,CAC1B,IAAInvM,EAAOqhL,EAAYrhL,KACnB+3K,EAAasJ,EAAYtJ,gBAA+B,IAAfA,IAAyBA,EAAa,IACnFsJ,EAAcj7K,EAAW,CACrB4pC,SAAUypJ,EACV/lL,SAAU+lL,GAAc1qE,EAASg0C,aAAa5nB,IAC9C45B,kBAAmB0kB,EAAavmE,EAAY,GAC7CmuD,GAEEzuD,EAAQyuD,EAAYxM,aACrBwM,EAAYxM,UAAY9lD,EAASujC,eAGjCvjC,EAASuuF,qBAAqBt9M,EAAMmF,KACpCk8K,EAAYxM,WAAY,GAG5B,IAAIyW,OAAe,EAUnB,GAPIA,EADAsiB,GAAWvsB,EAAatJ,EAAW,IACpB,IAAIrwJ,EAAQk2J,iBAAiByD,EAAatyD,EAASg0C,cAEnD,IAAI6U,EAAayJ,EAAatyD,EAASg0C,cAG1DvtB,EAAYrwI,GAAG4yK,WAAauT,EAAaxmL,QAAQkzK,cAE7Ch4K,EAAM,CACN,GAAI+uH,EAASirF,kBAAkBh6M,GAC3B,MAAM,IAAIqO,MAAO,2BAA6BrO,EAAO,uBAEzD+uH,EAASirF,kBAAkBh6M,GAAQsrL,EAGvCA,EAAaqR,UAAYx3L,EACzBqrK,EAAKjxK,KAAK+rL,GACVv8D,EAASw9E,WAAWjhB,IAI5B,IAAIsyB,EAAchgN,KAAK0tL,cAAgB9a,EAAK,GAC5C5yK,KAAK0tL,aAAesyB,EAEhBnkB,EACA77L,KAAKixK,MAAQ+uC,EAEbhgN,KAAKgxK,MAAQgvC,GAIrBtrD,YAAa,WAGT,IAFA,IAAI5lH,EAAS9uC,KAAK8uC,OAETvnC,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CACpC,IAAI82L,EAAgBvvJ,EAAOvnC,GAC3B,IAAK8tB,EAAQgpK,EAAc34L,KAAMu2M,IAC7B,OAAO,EAIf,OAAO,GAGXU,gBAAiB,SAASpL,GACtB,IAAIpgF,EAAWnxH,KAEXigN,EAAUjgN,KAAKq8M,sBACf6D,EAAeD,EAAQz/M,QACvBo3I,EAAc,GAAGv6H,OAAOrd,KAAKkH,QAAQ4zK,WACrC+gB,EAAa77L,KAAK67L,WAClBskB,EAAc,CAAE/tK,UAAWypJ,EAAY/lL,QAAS+lL,GAAc77L,KAAKmlK,aAAa5nB,KAChFq1B,EAAO,GAEP5yK,KAAKs8M,WACL6D,EAAYp9B,kBAAmB,EAC/Bo9B,EAAYzwC,OAAS,CAAEh/J,OAAQ,OAGnC,IAAK,IAAInJ,EAAI,EAAGA,EAAIqwI,EAAYpwI,OAAQD,IAAK,CACzC,IAAIk8K,EAAc7rC,EAAYrwI,GAC1Bw2M,EAAW5sF,EAAS2gF,SAASruB,EAAY91F,MAE7C,GAAIt4D,EAAQ0oL,EAAUxM,GAAQ,CAC1B,IAAInvM,EAAOqhL,EAAYrhL,KACnBg+M,EAAmBvQ,GAAiBpsB,EAAY/9K,KAAMwzL,IAAe,CAAE/iL,IAAK,GAAKyC,IAAK,GAAM,CAAEzC,IAAK,EAAGyC,IAAK,GAC3Gg7C,EAAQqsJ,EAAQz/M,MAAM4B,IAAS89M,GAAgBE,EAEzC,IAAN74M,GAAWqsD,GAASssJ,IACpBtsJ,EAAMz9C,IAAM9S,KAAK8S,IAAIy9C,EAAMz9C,IAAK+pM,EAAa/pM,KAC7Cy9C,EAAMh7C,IAAMvV,KAAKuV,IAAIg7C,EAAMh7C,IAAKsnM,EAAatnM,MAGjD,IAOIkiK,EAAY,IANZ+0B,GAAiBpsB,EAAY/9K,KAAMwzL,IACxBpvK,EAAQg7J,gBAERh7J,EAAQu4J,aAGMzuH,EAAMz9C,IAAKy9C,EAAMh7C,IAC1CpQ,EAAW,GAAI23M,EAAa18B,GAC5BtyD,EAASg0C,cAGb,GAAI/iK,EAAM,CACN,GAAI+uH,EAAS+sE,eAAe97L,GACxB,MAAM,IAAIqO,MAAO,wBAA0BrO,EAAO,uBAEtD+uH,EAAS+sE,eAAe97L,GAAQ04K,EAEpCA,EAAUikB,UAAYx3L,EAEtBqrK,EAAKjxK,KAAKm5K,GACV3pD,EAASw9E,WAAW7zB,IAI5B,IAAIklC,EAAchgN,KAAK86K,WAAalI,EAAK,GACzC5yK,KAAK86K,UAAYklC,EAEbnkB,EACA77L,KAAKgxK,MAAQgvC,EAEbhgN,KAAKixK,MAAQ+uC,GAIrB5H,eAAgB,SAASxpC,EAAOjqK,EAAG07M,GAC/B,IAAIjf,EAASxyB,EAAM0xC,kBAAkB37M,GACjC01H,EAAQ,IAAIL,EAAMonE,EAAOh8L,EAAGg8L,EAAOj9L,GACnCwpF,EAAO3tF,KAAKugN,UAAUlmF,GACtB8/C,EAAa,GACbrhK,EAAS,GAEb,GAAK60E,EAAL,CAKA,IADA,IAAIqhH,EAAUrhH,EAAKilF,KACVrrK,EAAI,EAAGA,EAAIynM,EAAQxnM,OAAQD,IAAK,CACrC,IAAIy9B,EAAOgqK,EAAQznM,GACfy9B,EAAK++I,SACL0rB,GAAgB32L,EAAQksB,EAAK++I,SAAS1pD,IAEtCo1E,GAAgBt1B,EAAYn1I,EAAK+2I,YAAY1hD,IAI3B,IAAtB8/C,EAAW3yK,QACXioM,GAAgBt1B,EAAYn6K,KAAK0tL,aAAa3R,YAAY1hD,IAG1D8/C,EAAW3yK,OAAS,GAAKsR,EAAOtR,OAAS,GACzConK,EAAMxkK,QAAQi2M,EAAW,CACrBx0M,QAAS2qH,EAAa7xH,GACtBgkB,cAAehkB,EACfmiK,SAAUqpC,GAAkBh2B,GAC5BzxK,MAAOynM,GAAkBr3L,OAKrCynM,UAAW,SAASlmF,GAGhB,IAFA,IAAIk3E,EAAQvxM,KAAKuxM,MAERhqM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIkqM,EAAcF,EAAMhqM,GACxB,GAAIkqM,EAAY7pC,WAAWxrC,cAAc/B,GACrC,OAAOo3E,IAKnB+O,kBAAmB,SAASx7K,EAAM99B,GAC9Bs5M,GAAkBxgN,KAAKkH,QAAS89B,EAAM99B,GACtCs5M,GAAkBxgN,KAAKkxM,gBAAiBlsK,EAAM99B,MAItD,SAASs5M,GAAkBC,EAAez7K,EAAM99B,GAC5C,IAAIw5M,EAA6C,GAAGrjM,OAAlC2nB,aAAgBg1I,EAAyBymC,EAAc/yB,aAA0B+yB,EAAc3lC,WACjHtyK,EAAWk4M,EAAY17K,EAAK+5J,WAAY73L,GAG5C,SAASg4M,GAAYpwK,EAAQ9J,EAAMiuK,GAC/B,OAAO/0K,EAAK4Q,GAAQ,SAAS7pC,GACzB,OAAmB,IAAXguM,IAAiBhuM,EAAEyoL,cAAkBzoL,EAAEyoL,eAAiB1oJ,KAIxEq7H,EAAkB87C,GAAqB,CACnCzuB,aAAc,GACd5S,UAAW,KAGftyK,EAAW2zM,GAAoB9zM,UAAW8vM,IAE1C,IAAIwI,GAAY/4M,EAAM7E,OAAO,CACzBoF,KAAM,WAEFnI,KAAK4gN,QAAU,IAGnB5+M,QAAS,WACLhC,KAAK4gN,QAAU,IAGnB1zM,KAAM,SAASm0H,EAAQzqG,GACnB,IAEIiqL,EAAc,GAAGxjM,OAAOgkH,GAC5BrhI,KAAKmN,OAEL,IAAK,IAAI5F,EAAI,EAAGA,EAAIs5M,EAAYr5M,OAAQD,IAAK,CACzC,IAAI8yH,EAAQwmF,EAAYt5M,GACpB8yH,GAASA,EAAMosC,iBAAmBpsC,EAAMisC,iBAPjCtmK,KAQE8gN,qBAAqBzmF,GAAO,EAAMzjG,GARpC52B,KASE4gN,QAAQj/M,KAAK04H,MAKlCymF,qBAAsB,SAASzmF,EAAOntH,EAAM0pB,GACxC,IAAImqL,GAAiB1mF,EAAMnzH,QAAQq/J,WAAa,IAAIp+I,OACpD,GAAI44L,EAAe,CACf,IAAIjzC,EAAY,CACZhH,SAAUzsC,EAAMysC,SAChBh4H,OAAQurF,EAAMvrF,OACdza,SAAUgmG,EAAMhmG,SAChB3rB,MAAO2xH,EAAM3xH,MACbg2L,WAAYrkE,EAAMqkE,WAClBv1L,eAAgBA,GAChB+0I,OAAQ7jB,EAAMomE,kBACdvzL,KAAMA,GAEV6zM,EAAcjzC,GACTA,EAAU1kK,mBACXixH,EAAMosC,gBAAgBv5J,EAAM0pB,QAGhCyjG,EAAMosC,gBAAgBv5J,EAAM0pB,IAIpCzpB,KAAM,WAIF,IAHA,IAEIk0H,EAASrhI,KAAK4gN,QACXv/E,EAAO75H,QAHCxH,KAIF8gN,qBAAqBz/E,EAAOhyG,OAAO,IAIpD2xL,cAAe,SAASn1M,GAGpB,IAFA,IAAIw1H,EAASrhI,KAAK4gN,QAETr5M,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAAK,CAEpC,GAAIsE,IADQw1H,EAAO95H,GAEf,OAAO,EAIf,OAAO,KAIf,SAAS4B,KACLnJ,KAAKoJ,mBAAoB,EAG7B,SAAS63M,GAAUt8M,EAAGu8M,GAClB,IAAI3vM,GAAO2vM,GAAY,IAAI5oM,cACvB8G,EAAQza,EAAEya,MAGd,MAFsB,SAAR7N,KAAoB6N,EAAMovE,SAAWpvE,EAAMgoB,UAAYhoB,EAAM+hM,SAAY/hM,EAAM7N,EAAM,OAKvG,SAAS6vM,GAAkBxb,GAEvB,IADA,IAAIntI,EAAS,GACJ7uD,EAAM,EAAGA,EAAMg8L,EAAWp+L,OAAQoC,IAAO,CAC9C,IAAIq0L,EAAY2H,EAAWh8L,GACvBq0L,EAAUj5J,KAAK99B,QAAQ9E,OACvBq2D,EAAOwlI,EAAUj5J,KAAK99B,QAAQ9E,MAAQ,CAClC+T,IAAK8nL,EAAUrqI,MAAMz9C,IACrByC,IAAKqlL,EAAUrqI,MAAMh7C,MAIjC,OAAO6/C,EAGX,IAAI4oJ,GAAWz5M,EAAM7E,OAAO,CACxBoF,KAAM,SAASsqK,EAAUvrK,GAErBlH,KAAKyyK,SAAWA,EAChBzyK,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,IAGhDoO,MAAO,SAAS3Q,GAEZ,OADA3E,KAAKshN,QAAUL,GAAUt8M,EAAG3E,KAAKkH,QAAQqK,KAClCvR,KAAKshN,SAGhB/mL,KAAM,SAAS51B,GACX,GAAI3E,KAAKshN,QAAS,CACd,IAAI1b,EAAa5lM,KAAK4lM,WAAa5lM,KAAKuhN,SAAS58M,EAAGU,GAAGgY,OAAOrd,KAAKuhN,SAAS58M,EAAGqQ,IAC/E,GAAI4wL,EAAWp+L,OAEX,OADAxH,KAAK4lM,WAAaA,EACXwb,GAAkBxb,KAKrCj6L,IAAK,WACD,IAAIgnM,EAAS3yM,KAAKshN,QAGlB,OAFAthN,KAAKshN,SAAU,EAER3O,GAGXh2B,IAAK,WACD,IACIlK,EADMzyK,KACSyyK,SACfmzB,EAFM5lM,KAEW4lM,WACrB,GAAIA,EAAWp+L,OAAQ,CACnB,IAAK,IAAIoC,EAAM,EAAGA,EAAMg8L,EAAWp+L,OAAQoC,IAAO,CAC9C,IAAIgqD,EAAQgyI,EAAWh8L,GACvB6oK,EAAS+tC,kBAAkB5sJ,EAAM5uB,KAAM4uB,EAAMA,OAEjD6+G,EAASkhC,OAAOlhC,EAAS8+B,SAIjCvvM,QAAS,kBACEhC,KAAKyyK,UAGhB8uC,SAAU,SAAS58M,EAAGmI,GAClB,IAAI2lK,EAAWzyK,KAAKyyK,SAChB7tI,GAASjgC,EAAEmI,GAAU83B,MACrBmqI,GAAQ/uK,KAAKkH,QAAQ6nK,MAAQ,IAAIz2J,cACjCkpM,EAAc,GAElB,GAAc,IAAV58K,IAAgBmqI,GAAQ,IAAIz2J,gBAAkBxL,EAE9C,IADA,IAAI8lK,EAAOH,EAASG,KACXhpK,EAAM,EAAGA,EAAMgpK,EAAKprK,OAAQoC,IAAO,CACxC,IAAIo7B,EAAO4tI,EAAKhpK,GAEhB,GAAIkD,IAAazH,IAAM2/B,EAAK99B,QAAQkrC,UAAYtlC,IAAakI,GAAKgwB,EAAK99B,QAAQkrC,SAAU,CACrF,IAAIwhB,EAAQ5uB,EAAK23I,IAAI/3I,GAEjBgvB,IACAA,EAAMuiH,YAAa,EACnBqrC,EAAY7/M,KAAK,CACbqjC,KAAMA,EACN4uB,MAAOA,MAO3B,OAAO4tJ,KAIfH,GAASh5M,UAAUnB,QAAU,CACzBqK,IAAK,OACLw9J,KAAM,QAGV,IAAI0yC,GAAgB75M,EAAM7E,OAAO,CAC7BoF,KAAM,SAASymK,EAAO1nK,GAElBlH,KAAK4uK,MAAQA,EACb5uK,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAC5ClH,KAAK8d,iBAGTA,cAAe,WACX,IAAI4jM,EAAU1hN,KAAK2hN,SAAWvyM,SAAS0O,cAAc,OACrD4jM,EAAQh1L,UAAY,YACpB,IAAIk1L,EAAexyM,SAAS0O,cAAc,OAC1C8jM,EAAal1L,UAAY,kBACzBg1L,EAAQxjM,YAAY0jM,IAGxBC,cAAe,WACP7hN,KAAK2hN,SAAS/7L,YACd5lB,KAAK2hN,SAAS/7L,WAAWvH,YAAYre,KAAK2hN,WAIlDG,UAAW,SAAS3yM,GAChBooH,EAAcv3H,KAAK2hN,SAAUxyM,IAGjCmG,MAAO,SAAS3Q,GACZ,GAAIs8M,GAAUt8M,EAAG3E,KAAKkH,QAAQqK,KAAM,CAChC,IAAIq9J,EAAQ5uK,KAAK4uK,MACbv0C,EAAQu0C,EAAM0xC,kBAAkB37M,GAChCo9M,EAAW/hN,KAAKgiN,UAAYpzC,EAAM8iB,UAAUkmB,YAAYv9E,GACxDumE,EAAUmhB,EAAWA,EAASzT,YAAYnnM,QAAU,KAExD,GAAI46M,GAAYnhB,EAAS,CACrB,IAAI7jL,EAAS/c,KAAK81I,iBAalB,OAXA8qD,EAAQ5wJ,UAAUjzB,EAAO8O,KAAM9O,EAAOqH,KACtCpkB,KAAKiiN,iBAAmBrhB,EAExBxxL,SAAS6O,KAAKC,YAAYle,KAAK2hN,UAC/B3hN,KAAK8hN,UAAU,CACXj2L,KAAMlnB,EAAEq9E,MAAQ,EAChB59D,IAAKzf,EAAEs9E,MAAQ,EACfj1E,MAAO,EACPL,OAAQ,KAGL,GAGf,OAAO,GAGXmpI,eAAgB,WACZ,IAAI6vB,EAAe3lK,KAAK4uK,MAAM/iK,QAC1BojB,EAAMsoG,EAAcouC,EAAc,CAAE,cAAe,eACnD9tC,EAAc5oG,EAAI4oG,YAClBC,EAAa7oG,EAAI6oG,WACjB/6G,EAAS+M,EAAQ45F,cAAciiD,GAEnC,MAAO,CACH95I,KAAMgsG,EAAc96G,EAAO8O,KAC3BzH,IAAK0zG,EAAa/6G,EAAOqH,MAIjCmW,KAAM,SAAS51B,GACI3E,KAAKgiN,WAEhBhiN,KAAK8hN,UAAU9hN,KAAKkiN,mBAAmBv9M,KAI/CgH,IAAK,SAAShH,GAEV,GADe3E,KAAKgiN,UACN,CACV,IAAIG,EAAmBniN,KAAK81I,iBACxBssE,EAAoBpiN,KAAKkiN,mBAAmBv9M,GAChDy9M,EAAkBv2L,MAAQs2L,EAAiBt2L,KAC3Cu2L,EAAkBh+L,KAAO+9L,EAAiB/9L,IAE1C,IAAI9O,EAAQ,CAAElQ,EAAGg9M,EAAkBv2L,KAAM1nB,EAAGi+M,EAAkBh+L,KAC1DzY,EAAM,CAAEvG,EAAGg9M,EAAkBv2L,KAAOu2L,EAAkBp1M,MAAO7I,EAAGi+M,EAAkBh+L,IAAMg+L,EAAkBz1M,QAM9G,OALA3M,KAAKqiN,kBAAkB/sM,EAAO3J,GAE9B3L,KAAK6hN,uBACE7hN,KAAKgiN,UAELZ,GAAkBphN,KAAK4lM,cAItCv1J,KAAM,WACF,IAAIu1J,EAAa5lM,KAAK4lM,WACtB,GAAIA,GAAcA,EAAWp+L,OAAQ,CAEjC,IADA,IAAIirK,EAAWzyK,KAAK4uK,MAAM8iB,UACjB9nL,EAAM,EAAGA,EAAMg8L,EAAWp+L,OAAQoC,IAAO,CAC9C,IAAIq0L,EAAY2H,EAAWh8L,GAC3B6oK,EAAS+tC,kBAAkBviB,EAAUj5J,KAAMi5J,EAAUrqI,OAEzD6+G,EAASkhC,OAAOlhC,EAAS8+B,SAIjCvvM,QAAS,WACLhC,KAAK6hN,uBACE7hN,KAAK2hN,gBACL3hN,KAAK4uK,OAGhByzC,kBAAmB,SAAS/sM,EAAO3J,GAK/B,IAJA,IAAIojK,GAAQ/uK,KAAKkH,QAAQ6nK,MAAQ,IAAIz2J,cACjCstL,EAAa,GAEbhzB,EAAO5yK,KAAKgiN,UAAUpvC,KACjBhpK,EAAM,EAAGA,EAAMgpK,EAAKprK,OAAQoC,IAAO,CACxC,IAAIo7B,EAAO4tI,EAAKhpK,GACZwoC,EAAWpN,EAAK99B,QAAQkrC,SAC5B,IAAM28H,IAAS1pK,GAAM+sC,KAAe28H,IAAS/5J,IAAKo9B,IAAa4iF,EAAQhwF,EAAK+5J,WAAY,CACpF,IAAInrI,EAAQ5uB,EAAK43I,YAAYtnK,EAAO3J,GAChCioD,GACAgyI,EAAWjkM,KAAK,CACZqjC,KAAMA,EACN4uB,MAAOA,KAMvB5zD,KAAK4lM,WAAaA,GAGtBsc,mBAAoB,SAASv9M,GACzB,IAAIi8L,EAAU5gM,KAAKiiN,iBACfjkI,EAAgB,CAChB54E,EAAGT,EAAES,EAAE44E,cACP75E,EAAGQ,EAAER,EAAE65E,eAEPgE,EAAQr9E,EAAES,EAAEmd,SACZ0/D,EAAQt9E,EAAER,EAAEoe,SACZwsJ,GAAQ/uK,KAAKkH,QAAQ6nK,MAAQ,IAAIz2J,cACjCuT,EAAOxoB,KAAK8S,IAAI6nE,EAAc54E,EAAG48E,GACjC59D,EAAM/gB,KAAK8S,IAAI6nE,EAAc75E,EAAG89E,GAChCj1E,EAAQ3J,KAAK6T,IAAI8mE,EAAc54E,EAAI48E,GACnCr1E,EAAStJ,KAAK6T,IAAI8mE,EAAc75E,EAAI89E,GA2BxC,OAzBI8sF,IAAS1pK,IACTwmB,EAAO+0K,EAAQ3jH,GACfjwE,EAAQ4zL,EAAQ5zL,SAEhB+hK,IAAS/5J,IACToP,EAAMw8K,EAAQ1jH,GACdvwE,EAASi0L,EAAQj0L,UAGjBq1E,EAAQ4+G,EAAQzjH,KAChBnwE,EAAQ4zL,EAAQzjH,GAAKa,EAAc54E,GAGnC48E,EAAQ4+G,EAAQ3jH,KAChBjwE,EAAQgxE,EAAc54E,EAAIw7L,EAAQ3jH,IAGlCgF,EAAQ2+G,EAAQxjH,KAChBzwE,EAASi0L,EAAQxjH,GAAKY,EAAc75E,GAGpC89E,EAAQ2+G,EAAQ1jH,KAChBvwE,EAASqxE,EAAc75E,EAAIy8L,EAAQ1jH,IAGhC,CACHrxD,KAAMxoB,KAAKuV,IAAIiT,EAAM+0K,EAAQ3jH,IAC7B74D,IAAK/gB,KAAKuV,IAAIwL,EAAKw8K,EAAQ1jH,IAC3BlwE,MAAOA,EACPL,OAAQA,MAKpB80M,GAAcp5M,UAAUnB,QAAU,CAC9BqK,IAAK,QACLw9J,KAAM,QAGV,IACIuzC,GADMv4L,GAAQ47F,KACK+Q,WAQnB6rF,GAAiB36M,EAAM7E,OAAO,CAC9BoF,KAAM,SAASymK,EAAO1nK,GAElBlH,KAAK4uK,MAAQA,EACb5uK,KAAKkH,QAAUsB,EAAW,CACtBg6M,KAPO,IAQRxiN,KAAKkH,QAASA,IAGrBu7M,aAAc,SAAS79K,EAAOw8J,GAO1B,IANA,IAEIryB,GAAQ/uK,KAAKkH,QAAQ6nK,MAAQ,IAAIz2J,cACjCstL,EAAa,GACbhzB,EAAO5yK,KAAK4uK,MAAM8iB,UAAU9e,KAEvBhpK,EAAM,EAAGA,EAAMgpK,EAAKprK,OAAQoC,IAAO,CACxC,IAAIo7B,EAAO4tI,EAAKhpK,GACZwoC,EAAWpN,EAAK99B,QAAQkrC,SAE5B,IAAM28H,IAAS1pK,GAAM+sC,KAAe28H,IAAS/5J,IAAKo9B,IAAapN,EAAKu3I,UAAW,CAC3E,IAAIimC,EAAOF,GAXJtiN,KAW0BkH,QAAQs7M,KAzB1C,IACA,IAyBK5uJ,EAAQ5uB,EAAKu3I,WAAW33I,EAAQ49K,EAAMphB,GAEtCxtI,GACAgyI,EAAWjkM,KAAK,CACZqjC,KAAMA,EACN4uB,MAAOA,KAOvB,OADA5zD,KAAK4lM,WAAaA,EACXwb,GAAkBxb,IAG7Bv1J,KAAM,WACF,IAAIu1J,EAAa5lM,KAAK4lM,WAClBnzB,EAAWzyK,KAAK4uK,MAAM8iB,UAE1B,GAAIkU,GAAcA,EAAWp+L,QAAUirK,EAAS+tC,kBAAmB,CAC/D,IAAK,IAAI52M,EAAM,EAAGA,EAAMg8L,EAAWp+L,OAAQoC,IAAO,CAC9C,IAAIq0L,EAAY2H,EAAWh8L,GAC3B6oK,EAAS+tC,kBAAkBviB,EAAUj5J,KAAMi5J,EAAUrqI,OAEzD6+G,EAASkhC,OAAOlhC,EAAS8+B,SAIjCvvM,QAAS,kBACEhC,KAAK4uK,SAIhB8zC,GAAe99C,EAAa7hK,OAAO,CACnCoF,KAAM,SAASjB,EAASi+J,GACpBP,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKmlK,aAAeA,GAGxBv1J,OAAQ,WACJ,IACIulC,EADMn1C,KACSm1C,SACfjuC,EAFMlH,KAEQkH,QACdkrC,EAAWlrC,EAAQkrC,SAEvBpyC,KAAKk+I,OAAS,IAAIn0H,GAAQ2uD,OAAO,KAAM,CACnC62D,QAASn9F,EAAW,EAAIlrC,EAAQqoI,QAChCE,YAAar9F,EAAWlrC,EAAQqoI,QAAU,EAC1CC,YAAap9F,EAAW,WAAa,aACrCt8B,QAAS5O,EAAQq2I,IACjBjO,WAAYl9F,EAAW,QAAU,WAGrC,IAAK,IAAIxoC,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IAAO,CAC5C,IAAI+4M,EAAaxtK,EAASvrC,GAC1B+4M,EAAWvyE,OAAO,IAAIuxB,GACtBghD,EAAWr9C,iBAInBl1B,OAAQ,SAASl3F,GACbl5C,KAAKk+I,OAAO7yD,KAAKnyC,EAAI2pH,UACrB7iK,KAAKk+I,OAAO9N,SACZ,IAAIxU,EAAO57H,KAAKk+I,OAAO3gB,cAGnBv9H,KAAKk5C,IADL0iF,EACW9xG,EAAQghJ,UAAUlvC,GAElB,IAAI+lC,GAIvB2D,aAAc,WACVtlK,KAAKwlK,aAGTD,aAAc,eAGdq9C,GAAav7C,EAAWtkK,OAAO,CAC/BoF,KAAM,SAASjB,GACXmgK,EAAWt/J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAE9BlH,KAAK6iN,kBACA37M,EAAQq2I,KAITv9I,KAAKgiL,cACLhiL,KAAK+/L,iBAJL//L,KAAK+/L,eACL//L,KAAKgiL,gBAOb6gC,gBAAiB,WACb7iN,KAAKs2B,UAAY,IAAIxM,EAAQ4/I,aAAa,CAAEt3H,UAAU,EAAOpmB,MAAM,EAAOijH,MAAOj/C,EAAQu/C,QAASvvI,KAAKkH,QAAQqoI,UAC/GvvI,KAAK+5C,OAAO/5C,KAAKs2B,YAGrBypK,aAAc,WACV//L,KAAKs2B,UAAUyjB,OAAO,IAAIguH,EAAa/nK,KAAK8iN,mBAGhDA,cAAe,WACX,IAAI57M,EAAUlH,KAAKkH,QACfwrM,EAAcxrM,EAAQwrM,YAC1B,OAAOlqM,EAAW,GAAItB,EAAQ4kL,QAAS,CACnC75B,WAAYygD,EACZjrC,OAAQ,CACJr4C,MAAOsjF,MAKnB1wB,YAAa,WACT,IAAI96K,EAAUlH,KAAKkH,QACfupK,EAAejoK,EAAW,GAAItB,EAAQwoK,QAE1C1vK,KAAKs2B,UAAUyjB,OAAO,IAAIixH,EAAQ9jK,EAAQ05B,KAAM6vI,KAGpD/K,eAAgB,WACZ2B,EAAWt/J,GAAG29J,eAAen7J,KAAKvK,MAElC,IAAI24I,EAAS34I,KAAKkH,QAAQyxI,QAAU,GAChCoqE,EAAY/iN,KAAKgjN,aAAe12E,GAAKc,SAASptI,KAAKs2B,UAAU4iB,IAAI2pH,SAAU,CAC3E5vI,KAAM,CACFm8F,MAAOmvC,EACP3nI,QAAS,GAEbinG,OAAQ,KACR8a,OAAQA,EAAOlsI,OAASksI,IAG5B34I,KAAK4lK,aAAam9C,IAGtBz5L,MAAO,SAASwJ,EAAQnuB,GACpB,IAAIwyB,EAAOn3B,KAAK8tK,UAAUnpK,IAErBmuB,EAAO1oB,QAAQytL,GAAmB1gK,IAASxyB,GAAgB,gBAAXA,EAAEe,MACnDf,EAAEwE,kBAIV4kK,KAAM,SAASj7I,EAAQnuB,GACnB,IAAIwyB,EAAOn3B,KAAK8tK,UAAUnpK,GAO1B,OALKmuB,EAAO1oB,QAAQ0tL,GAAmB3gK,IACnCrE,EAAOmwL,iBAAiB9rL,EAAKqgL,YAAargL,EAAK+rL,aAI5C,GAGXv1L,IAAK,SAASmF,EAAQnuB,GAClBmuB,EAAOqwL,oBAEPrwL,EAAO1oB,QAAQ2tL,GAAmB/3L,KAAK8tK,UAAUnpK,KAGrDmpK,UAAW,SAASnpK,GAChB,IAAIuC,EAAUlH,KAAKkH,QAEnB,MAAO,CACH2E,QAAS2qH,EAAa7xH,GACtBi8B,KAAM15B,EAAQ05B,KACdkO,OAAQ5nC,EAAQ4nC,OAChB0oK,YAAatwM,EAAQ4nC,OAAO/1B,MAC5BmqM,WAAYh8M,EAAQg8M,aAI5B59C,aAAc,WACV,IAAIn0C,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfw/J,EAAex/J,EAAQg3I,OAEvBwoB,GACA1mK,KAAKk+I,OAASwoB,EAAa,CACvBisC,OAAQzrM,EAAQyrM,OAChB7jK,OAAQ5nC,EAAQ4nC,OAChBxkC,OAAQtK,KAAKglK,YACbk+C,WAAYh8M,EAAQg8M,WACpBh8M,QAAS,CACL4kL,QAAS9rL,KAAK8iN,gBACdpzC,OAAQxoK,EAAQwoK,QAEpBnK,aAAc,WACVp0C,EAASo0C,eACTp0C,EAASgnB,iBACThnB,EAASu0C,iBAET,IAAImI,EAAgB18C,EAAS+sB,OAI7B,cAFO/sB,EAAS+sB,OAET2vB,KAGf7tK,KAAKwlK,aAEL6B,EAAWt/J,GAAGu9J,aAAa/6J,KAAKvK,SAKxCojN,GAAa,aAEbC,GAAS,SAETC,GAAS1+C,EAAa7hK,OAAO,CAC7BoF,KAAM,SAASjB,EAASi+J,QACC,IAAjBA,IAA2BA,EAAe,IAE9CP,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKmlK,aAAeA,EAEf9vI,EAAQr1B,KAAKkH,QAAQ4F,SAAU,CAAEmjF,EAAKtlE,EAAOulE,EAAQzlE,EAAM44L,OAC5DrjN,KAAKkH,QAAQ4F,SAAW6d,GAG5B3qB,KAAKujN,mBAELvjN,KAAKwjN,kBAAkBt8M,EAAQ62C,OAE/B/9C,KAAKyjN,eAGTF,iBAAkB,WACd,IAAIr8M,EAAUlH,KAAKkH,QACf4F,EAAW5F,EAAQ4F,SACnB42M,EAAYx8M,EAAQ+nI,MACpBA,EAAQniI,EACRuqJ,EAASrnE,EAETljF,IAAau2M,GACbp0E,EAAQxkH,EACD4K,EAAQvoB,EAAU,CAAEmjF,EAAKC,KAE5B++C,EADc,UAAdy0E,EACQj5L,EACa,QAAdi5L,EACC/4L,EAEAqlE,EAEZqnE,EAASvqJ,GACF42M,IACW,UAAdA,EACArsD,EAASpnE,EACY,QAAdyzH,IACPrsD,EAASnnE,IAIjBlwF,KAAKs2B,UAAY,IAAI+wI,EAAW,CAC5B1uH,OAAQzxC,EAAQyxC,OAChBo9F,QAAS7uI,EAAQ6uI,QACjBkc,WAAY/qJ,EAAQ+qJ,WACpBwV,OAAQvgK,EAAQugK,OAChBpQ,OAAQA,EACRpoB,MAAOA,EACPr1F,OAAQ1yC,EAAQ0yC,OAChB0tH,aAAa,IAGbtnK,KAAK2jN,WACL3jN,KAAK4jN,eAAiB,IAAIv8C,EAAW,CACjChQ,OAAQA,EACRpoB,MAAOA,EACPr1F,OAAQ1yC,EAAQ0yC,OAChB0tH,aAAa,IAGjBtnK,KAAK4jN,eAAiB5jN,KAAKs2B,UAG/Bt2B,KAAK+5C,OAAO/5C,KAAKs2B,YAGrBmtL,YAAa,WACT,IAAIt+C,EAAenlK,KAAKklK,aACpBh+J,EAAUlH,KAAKkH,QACfkrC,EAAWpyC,KAAKsrI,aAChBu4E,EAAe,IAAInB,GAAa,CAChCtwK,SAAUA,EACVm9F,QAASroI,EAAQqoI,QACjBgO,IAAK4nB,EAAa5nB,KACnB4nB,GACC/wI,EAAQltB,EAAQktB,MAEhBltB,EAAQ4O,UACRse,EAAQA,EAAMxtB,MAAM,GAAGkP,WAK3B,IAFA,IAAIgF,EAAQsZ,EAAM5sB,OAETD,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIynC,EAAO5a,EAAM7sB,GAEjBs8M,EAAa9pK,OAAO,IAAI6oK,GAAWp6M,EAAW,GAAI,CAC9CsjL,QAAS5kL,EAAQ4kL,QACjBpc,OAAQxoK,EAAQwoK,OAChBnyB,IAAK4nB,EAAa5nB,KACnBr2I,EAAQ8nC,KAAMA,KAGrB60K,EAAaj0M,SACb5P,KAAK4jN,eAAe7pK,OAAO8pK,IAG/Bv4E,WAAY,WACR,IAAIr8G,EAAMjvB,KAAKkH,QACXsoI,EAAcvgH,EAAIugH,YAClB1iI,EAAWmiB,EAAIniB,SAInB,OAHgBA,IAAau2M,IAAU7zE,IAAgB4zE,KAC/CpuF,EAAQwa,GAAeA,IAAgB4zE,GAAa/tL,EAAQvoB,EAAU,CAAE2d,EAAME,MAK1Fm5L,SAAU,WACN,OAAO9jN,KAAKs2B,UAAU6e,SAAS,GAAGA,SAAS3tC,OAAS,GAGxD4oI,OAAQ,SAASwxB,GACb,IAAI16J,EAAUlH,KAAKkH,QACf68M,EAAYniD,EAAUz6J,QAErBnH,KAAK8jN,YAKN58M,EAAQ4F,WAAau2M,IACrBrjN,KAAKgkN,sBAAsBD,GAC3B/jN,KAAKk5C,IAAM6qK,GAEX/jN,KAAKikN,gBAAgBF,GAGrB/jN,KAAK2jN,YACL3jN,KAAK+9C,MAAMqyF,OAAO,IAAIuxB,EAAI3hK,KAAKs2B,UAAU4iB,IAAI+jC,GAAIj9E,KAAK+9C,MAAM7E,IAAIgkC,GAAIl9E,KAAKs2B,UAAU4iB,IAAIikC,GAAIn9E,KAAK+9C,MAAM7E,IAAIkkC,MAZ1Gp9E,KAAKk5C,IAAM6qK,GAgBnBE,gBAAiB,SAASriD,GACtB,IACI16J,EADMlH,KACQkH,QACdovB,EAFMt2B,KAEUs2B,UAChBxpB,EAAW5F,EAAQ4F,SACnBE,EAAQ9F,EAAQ8F,MAChBL,EAASzF,EAAQyF,OACjB0nF,EAAMvnF,IAAamjF,GAAOnjF,IAAaojF,EAAS7qF,EAAI2P,EACpDo9B,EAAWpyC,KAAKsrI,aAChB44E,EAActiD,EAAUz6J,QACxBg9M,EAAeviD,EAAUz6J,QAEzB2F,IAAa2d,GAAQ3d,IAAa6d,IAClCw5L,EAAajnI,GAAKgnI,EAAYhnI,GAAK,GAGnC9qC,GAAYzlC,GACZw3M,EAAa/mI,GAAK+mI,EAAajnI,GAAKvwE,EACpCw3M,EAAal1E,MAAMi1E,EAAalvM,EAAGshB,EAAUpvB,QAAQmwJ,UAC7CjlH,GAAYplC,IACpBm3M,EAAahnI,GAAKgnI,EAAalnI,GAAKjwE,EACpCm3M,EAAal1E,MAAMi1E,EAAa7+M,EAAGixB,EAAUpvB,QAAQ+nI,QAGzD34G,EAAU85G,OAAO+zE,GAGjB,IAAIjrK,GAFJirK,EAAe7tL,EAAU4iB,KAEF/xC,SAEnBD,EAAQq/E,SAAWr/E,EAAQs/E,WAC3B29H,EAAan0K,UAAU9oC,EAAQq/E,QAASr/E,EAAQs/E,SAChDlwD,EAAU85G,OAAO+zE,IAGrBjrK,EAAIm7C,EAAM,GAAKutE,EAAUvtE,EAAM,GAC/Bn7C,EAAIm7C,EAAM,GAAKutE,EAAUvtE,EAAM,GAE/Br0F,KAAKk5C,IAAMA,GAGf8qK,sBAAuB,SAASpiD,GAC5B,IACI16J,EADMlH,KACQkH,QACdovB,EAFMt2B,KAEUs2B,UAChBiwD,EAAUr/E,EAAQq/E,QAClBC,EAAUt/E,EAAQs/E,QAClBx5E,EAAQ9F,EAAQ8F,MAChBL,EAASzF,EAAQyF,OACjBylC,EAAWpyC,KAAKsrI,aAChB64E,EAAeviD,EAAUz6J,QAEzBirC,GAAYzlC,EACZw3M,EAAa/mI,GAAK+mI,EAAajnI,GAAKvwE,GAC5BylC,GAAYplC,IACpBm3M,EAAahnI,GAAKgnI,EAAalnI,GAAKjwE,GAExCspB,EAAU85G,OAAO+zE,GACjBA,EAAe7tL,EAAU4iB,IAEzB5iB,EAAU85G,OAAO,IAAIuxB,EACjBp7E,EAASC,EACTD,EAAU49H,EAAan3M,QAASw5E,EAAU29H,EAAax3M,YAI/D24J,aAAc,WACNtlK,KAAK8jN,YACLl/C,EAAa78J,GAAGu9J,aAAa/6J,KAAKvK,OAI1CwjN,kBAAmB,SAASzlK,GACxB,IAAIsuH,EAAe7jK,EAAW,GAAI,CAC9B4mH,MAAOouC,EACP1wJ,SAAUmjF,EACVg/C,MAAOj/C,GACRjyC,GACCnd,EAAOyrI,EAAazrI,KAExB,GAAKmd,IAA2B,IAAlBA,EAAMzxC,QAApB,CAIA,GAAI0oH,EAAQq3C,IAAiBA,EAAa//J,QAAS,CAC/C,IAAI6mK,EAAgBzT,EAAY2M,GAC5B8G,EACAvyI,EAAOuyI,EAAc,CAAEvyI,KAAMA,IACtByrI,EAAa37J,SACpBkwB,EAAO5gC,KAAKmlK,aAAaz0J,OAAO48J,KAAKjB,EAAa37J,OAAQkwB,IAIlE5gC,KAAK+9C,MAAQ,IAAIitH,EAAQpqI,EAAMyrI,GAE/BrsK,KAAKokN,oBAELpkN,KAAKqkN,6BAGTD,kBAAmB,WACfpkN,KAAKskN,OAAS,IAAIx6L,EAAQ4/I,aAAa,CACnCt3H,UAAU,EACVpmB,MAAM,IAGVhsB,KAAKs2B,UAAUyjB,OAAO/5C,KAAKskN,SAG/BX,SAAU,WACN,OAAOpxM,QAAQvS,KAAKkH,QAAQ62C,QAAwC,IAA/B/9C,KAAKkH,QAAQ62C,MAAMzxC,UAG5D+3M,yBAA0B,WACRrkN,KAAKkH,QAEP62C,MAAMjxC,WAAaojF,GAC3BlwF,KAAKskN,OAAOvqK,OAAO/5C,KAAK4jN,gBACxB5jN,KAAKskN,OAAOvqK,OAAO/5C,KAAK+9C,SAExB/9C,KAAKskN,OAAOvqK,OAAO/5C,KAAK+9C,OACxB/9C,KAAKskN,OAAOvqK,OAAO/5C,KAAK4jN,oBAKpCvjD,EAAkBijD,GAAQ,CACtBx2M,SAAU6d,EACVyJ,MAAO,GACPmyD,QAAS,EACTC,QAAS,EACT7tC,OAAQ4mH,EAAW,GACnBxpB,QAASwpB,EAAW,GACpBkI,OAAQ,CACJr4C,MAAOouC,EACPxwJ,MAAO,GAEXgiC,KAAM,CACF2pG,OApRM,UAqRNpJ,QAAS,GAEbA,QAAS,EACT0iB,WAAY,GACZr4G,OAAQ,EACRkyI,QAAS,CACLrkB,OAAQ,CACJz6J,MAAO,GAEXA,MAAO,GACPL,OAAQ,EACRjH,KAAM,OACNupI,MAAOxkH,EACP4sI,OAAQrnE,KAIhB,IAAIu0H,GAAkB38M,EAAM7E,OAAO,CAC/BoF,KAAM,WAEFnI,KAAKwkN,UAAY,IAGrBvtL,SAAU,SAASvxB,EAAM4oL,GACrBtuL,KAAKwkN,UAAU7iN,KAAK,CAChB+D,KAAMA,EACN4oL,YAAaA,KAIrBtnI,OAAQ,SAAS22J,EAAWz2M,EAASi+J,GAKjC,IAJA,IAEIr2H,EAFA21K,EAAWzkN,KAAKwkN,UAChBr0M,EAAQs0M,EAAS,GAGZ76M,EAAM,EAAGA,EAAM66M,EAASj9M,OAAQoC,IAAO,CAC5C,IAAI0oH,EAAQmyF,EAAS76M,GAGrB,IAFAklC,EAASghK,GAAmB6N,EAAWrrF,EAAMg8D,cAElC9mL,OAAS,EAAG,CACnB2I,EAAQmiH,EACR,OAIR,OAAO,IAAIniH,EAAMzK,KAAKopC,EAAQ5nC,EAASi+J,MAI/Co/C,GAAgB9wM,QAAU,IAAI8wM,GAK9B,SAASG,GAAUnuI,GACf,IAAI1qE,EAAUuD,SAAS0O,cAAc,OAKrC,OAJIy4D,IACA1qE,EAAQ6gB,UAAY6pD,GAGjB1qE,EAGX,SAAS84M,GAAc94M,GAEnB,IADA,IAAI4H,EAAU5H,EACP4H,IAAYqW,EAAQ2/J,WAAWh2K,EAAS,aAC3CA,EAAUA,EAAQmS,WAGtB,OAAOnS,EAGX,IAAImxM,GAAYh9M,EAAM7E,OAAO,CACzBoF,KAAM,SAASymK,EAAO8e,EAAcxmL,EAASotH,GAEzC,IAAIqxC,EAAeiJ,EAAM/iK,QAEzB7L,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAC5ClH,KAAK4uK,MAAQA,EACb5uK,KAAKs0H,SAAWA,EAChBt0H,KAAK2lK,aAAeA,EACpB3lK,KAAK0tL,aAAeA,EACpB1tL,KAAK6kN,UAAY7kN,KAAK0tL,wBAAwB5jK,EAAQk2J,iBAEtDhgL,KAAK8kN,cAEL9kN,KAAKsM,QAAUtM,KAAKkH,QAAQoF,SAAWq5J,EAAapxI,aAEhDv0B,KAAKsM,UACLtM,KAAK+kN,iBAEL/kN,KAAKwvB,IAAIxvB,KAAK+gK,OAAO/gK,KAAKkH,QAAQi3B,MAAOn+B,KAAK+gK,OAAO/gK,KAAKkH,QAAQk3B,KAElEp+B,KAAKm3H,eAIb6tF,OAAQ,SAASr3H,GACb,OAAO3tF,KAAK0tL,aAAa//F,OAASA,GAGtCo3H,eAAgB,WACZ,IAAI79M,EAAUlH,KAAKkH,QACfkF,EAAUpM,KAAKoM,QAAUs4M,GAAU,oCACvCntF,EAAcnrH,EAAS,CACnBgY,IAAKld,EAAQ6V,OAAOqH,IACpByH,KAAM3kB,EAAQ6V,OAAO8O,KACrB7e,MAAO9F,EAAQ8F,MACfL,OAAQzF,EAAQyF,OAChBsnC,UAAW,QAGf,IAAIlO,EAAY/lC,KAAK+lC,UAAY2+K,GAAU,qCAE3C1kN,KAAKilN,SAAWP,GAAU,gCAC1B1kN,KAAKklN,UAAYR,GAAU,gCAE3Bt4M,EAAQ8R,YAAYle,KAAKilN,UACzB74M,EAAQ8R,YAAYle,KAAKklN,WACzB94M,EAAQ8R,YAAY6nB,GAEpB,IAAI9nB,EAAOje,KAAKie,KAAOymM,GAAU,wCACjC3+K,EAAU7nB,YAAYD,GAEtB,IAAIknM,EAAanlN,KAAKmlN,WAAaT,GAAU,gDACzCU,EAAcplN,KAAKolN,YAAcV,GAAU,iDAC/CS,EAAWjnM,YAAYwmM,MACvBU,EAAYlnM,YAAYwmM,MAExB3+K,EAAU7nB,YAAYinM,GACtBp/K,EAAU7nB,YAAYknM,GAEtBplN,KAAK2lK,aAAaznJ,YAAY9R,GAC9B,IAAIi5M,EAAkB9tF,EAAcxxF,EAAW,CAAE,kBAAmB,mBAAoB,WACpFu/K,EAAmB/tF,EAAc4tF,EAAY,UAAUx4M,OACvD44M,EAAoBhuF,EAAc6tF,EAAa,UAAUz4M,OAE7DzF,EAAQ6+B,UAAY,CAChB0hI,OAAQ,CACJ57I,KAAMw5L,EAAgBG,gBACtB15L,MAAOu5L,EAAgBI,mBAI/BluF,EAAc4tF,EAAY,CACtB/gM,KAAMihM,EAAgB14M,OAAS24M,GAAoB,IAGvD/tF,EAAc6tF,EAAa,CACvBhhM,KAAMihM,EAAgB14M,OAAS44M,GAAqB,IAGxDn5M,EAAQK,MAAMsR,QAAU3R,EAAQK,MAAMsR,SAG1Co5G,WAAY,WAGJ,IAAInqG,GAFwB,IAA5BhtB,KAAKkH,QAAQw+M,aACb1lN,KAAK2lN,mBAAqB3lN,KAAK4lN,YAAYp8M,KAAKxJ,MAEhDm3H,EAAWn3H,KAAK2lK,eAAgB34I,EAAM,IAAoB,MAAIhtB,KAAK2lN,mBAAoB34L,KAG3FhtB,KAAK6lN,WAAa52C,EAASD,iBAAiBhoH,OAAOhnD,KAAK2lK,aAAc,CAClE1rI,iBAAiB,EACjB3kB,MAAOtV,KAAK4/E,OAAOp2E,KAAKxJ,MACxBu6B,KAAMv6B,KAAK4hF,MAAMp4E,KAAKxJ,MACtB2L,IAAK3L,KAAK8hF,KAAKt4E,KAAKxJ,MACpB8lN,IAAK9lN,KAAKq/E,KAAK71E,KAAKxJ,MACpBg/E,MAAOh/E,KAAKgkF,OAAOx6E,KAAKxJ,MACxBgmF,aAAchmF,KAAK+lN,cAAcv8M,KAAKxJ,MACtCkmF,cAAelmF,KAAKgmN,eAAex8M,KAAKxJ,MACxCimN,WAAYjmN,KAAKkmN,YAAY18M,KAAKxJ,SAI1C8kN,YAAa,WACT,IACI59M,EADMlH,KACQkH,QAEdgyC,EAHMl5C,KAEa0tL,aACA//F,KAAK2gH,YACxBlgC,EAAcpuK,KAAK4uK,MAAMzJ,aAAaoJ,KAEtCvuK,KAAK6kN,WACLr8M,EAAWtB,EAAS,CAChBiP,IAAKoH,EAAU6wJ,EAAalnK,EAAQiP,KACpCyC,IAAK2E,EAAU6wJ,EAAalnK,EAAQ0R,KACpCulB,KAAM5gB,EAAU6wJ,EAAalnK,EAAQi3B,MACrCC,GAAI7gB,EAAU6wJ,EAAalnK,EAAQk3B,MAI3C,IAAIqyG,EAAQlZ,EAAcv3H,KAAK2lK,aAAc,CAAE,cAAe,eAC1D9tC,EAAc4Y,EAAM5Y,YACpBC,EAAa2Y,EAAM3Y,WAEvB93H,KAAKkH,QAAUsB,EAAW,GAAI,CAC1BwE,MAAOksC,EAAIlsC,QACXL,OAAQusC,EAAIvsC,SAjJK,GAkJjBopI,QAAS,CACLlqH,KAAMgsG,EACNzzG,IAAK0zG,GAET/6G,OAAQ,CACJ8O,KAAMqtB,EAAI+jC,GAAK46C,EACfzzG,IAAK80B,EAAIgkC,GAAK46C,GAElB35F,KAAMj3B,EAAQiP,IACdioB,GAAIl3B,EAAQ0R,KACb1R,IAGPlF,QAAS,WASL,GARIhC,KAAK6lN,aACL7lN,KAAK6lN,WAAW7jN,iBACThC,KAAK6lN,YAGhB1rL,aAAan6B,KAAKmmN,YAClBnmN,KAAKomN,OAAS,KAEVpmN,KAAKoM,QAAS,CAEV,IAAI4gB,EADR,GAAIhtB,KAAK2lN,mBAELhuF,GAAa33H,KAAK2lK,eAAgB34I,EAAM,IAAoB,MAAIhtB,KAAK2lN,mBAAoB34L,IACzFhtB,KAAK2lN,mBAAqB,KAG9B3lN,KAAK2lK,aAAatnJ,YAAYre,KAAKoM,SACnCpM,KAAKoM,QAAU,OAIvBi6M,gBAAiB,SAASzyJ,GAEtB,MAAO,CACH5uB,KAAMhlC,KAAK0tL,aAAaxmL,QACxBi3B,KAAMn+B,KAAKsmN,OAAO1yJ,EAAMz1B,MACxBC,GAAIp+B,KAAKsmN,OAAO1yJ,EAAMx1B,MAI9BmoL,aAAc,SAASnhN,EAAGjB,GACtB,IAAI6xM,EAAUh2M,KAAK0tL,aAAa//F,KAAKz0C,IACjCstK,EAAcxmN,KAAK4uK,MAAM63C,oBAAoBrhN,EAAGjB,GACpD,OAAO6xM,EAAQ55E,cAAcoqF,IAGjC5mI,OAAQ,SAASj7E,GACb,IAAIuC,EAAUlH,KAAKkH,QACfI,EAASkvH,EAAa7xH,GAC1B,IAAI3E,KAAKomN,QAAW9+M,EAApB,CAIA,IAAI85L,EAASt3K,EAAQysG,iBAAiB5xH,GAEtC,GADa3E,KAAKumN,aAAanlB,EAAOh8L,EAAGg8L,EAAOj9L,GAChD,CAIA,IAAI62B,EAAS2pL,GAAcr9M,GACvBo/M,EAAW1mN,KAAKie,KAAKm5G,wBACrBuvF,GAAU3rL,GAAUomK,EAAOh8L,GAAKshN,EAASthN,GAAKg8L,EAAOh8L,GAAKshN,EAASthN,EAAIshN,EAAS15M,OACrEo0L,EAAOj9L,GAAKuiN,EAASviN,GAAKi9L,EAAOj9L,GAAKuiN,EAASviN,EAAIuiN,EAAS/5M,OAE3E3M,KAAK4uK,MAAMu0C,oBACXnjN,KAAKomN,OAAS,CACVQ,WAAY5rL,EACZgjD,cAAer5E,EAAES,EAAIT,EAAES,EAAEmd,SAAW,EACpCokM,OAAQA,EACR/yJ,MAAO,CACHz1B,KAAMn+B,KAAK+gK,OAAO75J,EAAQi3B,MAC1BC,GAAIp+B,KAAK+gK,OAAO75J,EAAQk3B,MAIhC,IAAIjH,EAAOn3B,KAAKqmN,gBAAgB,CAC5BloL,KAAMn+B,KAAK+gK,OAAO75J,EAAQi3B,MAC1BC,GAAIp+B,KAAK+gK,OAAO75J,EAAQk3B,MAGxBp+B,KAAKoK,QAAQwuL,GAAczhK,KAC3Bn3B,KAAKomN,OAAS,SAItBpiI,OAAQ,SAASr/E,GACb,IAAIq2B,GAEAA,EADAh7B,KAAKomN,OACIpmN,KAAKomN,OAAOQ,WAEZjC,GAAcnuF,EAAa7xH,MAGpCmlB,EAAQvF,SAASyW,EAAQ,oBAIjC4mD,MAAO,SAASj9E,GACZ,GAAK3E,KAAKomN,OAAV,CAIA,IAAIn3L,EAAMjvB,KACNizD,EAAQhkC,EAAIm3L,OACZl/M,EAAU+nB,EAAI/nB,QACdwmL,EAAez+J,EAAIy+J,aACnB95H,EAAQX,EAAMW,MACdtsD,EAAS2rD,EAAM2zJ,WACf9wM,EAAU43K,EAAaxmL,QAAQ4O,QAC/BqoB,EAAOn+B,KAAK+gK,OAAO75J,EAAQi3B,MAC3BC,EAAKp+B,KAAK+gK,OAAO75J,EAAQk3B,IACzBjoB,EAAMnW,KAAK+gK,OAAO75J,EAAQiP,KAC1ByC,EAAM5Y,KAAK+gK,OAAO75J,EAAQ0R,KAC1BgsB,EAAQquB,EAAM+qB,cAAgBr5E,EAAES,EAAEmd,SAClCskM,EAAmBjzJ,EAAMz1B,KAAzB0oL,EAAmCjzJ,EAAMx1B,GACzCghJ,EAAOxrH,EAAMx1B,GAAKw1B,EAAMz1B,KACxBwR,EAAQ4nF,EAAcv3H,KAAKoM,QAAS,SAASY,OAAS0gL,EAAaxR,kBAAoB,GACvFn/J,EAAS1Z,KAAK0S,MAAM6uB,EAAQ+K,IAAU75B,GAAW,EAAI,GAEzD,GAAKxO,GAAW2rD,EAAM0zJ,OAAtB,CAIA,IAAIxB,EAAa79M,GAAUwiB,EAAQ2/J,WAAWniL,EAAQ,iBAClD89M,EAAc99M,GAAUwiB,EAAQ2/J,WAAWniL,EAAQ,kBAEnD2rD,EAAM0zJ,QACN/yJ,EAAMz1B,KAAO96B,KAAK8S,IACd9S,KAAKuV,IAAIzC,EAAKgoB,EAAOphB,GACrBnE,EAAMwmK,GAEVxrH,EAAMx1B,GAAK/6B,KAAK8S,IACZy9C,EAAMz1B,KAAOihJ,EACbxmK,IAEIusM,IAAervM,GAAasvM,GAAetvM,GACnD89C,EAAMz1B,KAAO96B,KAAK8S,IACd9S,KAAKuV,IAAIzC,EAAKgoB,EAAOphB,GACrBnE,EAAM,GAEVg7C,EAAMx1B,GAAK/6B,KAAKuV,IAAIg7C,EAAMz1B,KAAO,EAAGy1B,EAAMx1B,MAClC+mL,GAAcrvM,GAAasvM,IAAgBtvM,KACnD89C,EAAMx1B,GAAK/6B,KAAK8S,IACZ9S,KAAKuV,IAAIzC,EAAM,EAAGioB,EAAKrhB,GACvBnE,GAEJg7C,EAAMz1B,KAAO96B,KAAK8S,IAAIy9C,EAAMx1B,GAAK,EAAGw1B,EAAMz1B,OAG1Cy1B,EAAMz1B,OAAS0oL,GAAiBjzJ,EAAMx1B,KAAOyoL,IAC7C7mN,KAAKu6B,KAAKq5B,EAAMz1B,KAAMy1B,EAAMx1B,IAC5Bp+B,KAAKoK,QAAQ2xE,GAAQ/7E,KAAKqmN,gBAAgBzyJ,QAIlDkuB,KAAM,WACF,GAAI9hF,KAAKomN,OAAQ,CACb,IAAIQ,EAAa5mN,KAAKomN,OAAOQ,WACzBA,GACA98L,EAAQqC,YAAYy6L,EAAY,mBAGpC,IAAIhzJ,EAAQ5zD,KAAKomN,OAAOxyJ,MACxB5zD,KAAKwvB,IAAIokC,EAAMz1B,KAAMy1B,EAAMx1B,IAC3Bp+B,KAAKoK,QAAQyuL,GAAY74L,KAAKqmN,gBAAgBzyJ,WAEvC5zD,KAAKomN,SAIpB/mI,KAAM,SAAS16E,GACX,IACIuC,EADMlH,KACQkH,QACdwmL,EAFM1tL,KAEa0tL,aACnB0T,EAASphM,KAAK4uK,MAAM0xC,kBAAkB37M,GACtCm7K,EAAa4N,EAAa5R,mBAAmB,IAAI9hD,EAAMonE,EAAOh8L,EAAGsoL,EAAax0I,IAAIgkC,KAClF/+C,EAAOn+B,KAAK+gK,OAAO75J,EAAQi3B,MAC3BC,EAAKp+B,KAAK+gK,OAAO75J,EAAQk3B,IACzBjoB,EAAMnW,KAAK+gK,OAAO75J,EAAQiP,KAC1ByC,EAAM5Y,KAAK+gK,OAAO75J,EAAQ0R,KAC1BwmK,EAAOhhJ,EAAKD,EACZ6pK,EAAM7pK,EAAOihJ,EAAO,EACpBxrH,EAAQ,GACRkzJ,EAA+B,IAAlBniN,EAAEya,MAAMuiE,MACrB5kE,EAAS1Z,KAAK0S,MAAMiyL,EAAMloB,GAE1B9/K,KAAKomN,QAAUU,IAInB9mN,KAAK4uK,MAAMu0C,oBAENz1B,EAAaxmL,QAAQ+vK,WACtBl6J,IAGJ62C,EAAMz1B,KAAO96B,KAAK8S,IACd9S,KAAKuV,IAAIzC,EAAKgoB,EAAOphB,GACrBnE,EAAMwmK,GAGVxrH,EAAMx1B,GAAK/6B,KAAK8S,IAAIy9C,EAAMz1B,KAAOihJ,EAAMxmK,GAEvC5Y,KAAK4/E,OAAOj7E,GAER3E,KAAKomN,SACLpmN,KAAKomN,OAAOxyJ,MAAQA,EACpB5zD,KAAKoK,QAAQ2xE,GAAQ/7E,KAAKqmN,gBAAgBzyJ,IAC1C5zD,KAAK8hF,UAIb8jI,YAAa,SAASjhN,GAClB,IAAIwsH,EAAWnxH,KAEX4kC,EAAQ9a,EAAQ6/J,gBAAgBhlL,GAIpC,GAFA3E,KAAK4/E,OAAOj7E,GAER3E,KAAKomN,OAAQ,CACb,IAAIxyJ,EAAQ5zD,KAAKomN,OAAOxyJ,MAExBjvD,EAAEwE,iBACFxE,EAAEs1B,kBAEE52B,KAAK6T,IAAI0tB,GAAS,IAClBA,GAxXQ,GA2XR5kC,KAAKkH,QAAQw+M,WAAW5vM,UACxB8uB,IAAU,GAGV5kC,KAAKk8H,OAAOt3F,IACZ5kC,KAAKoK,QAAQ2xE,GAAQ,CACjB/2C,KAAMhlC,KAAK0tL,aAAaxmL,QACxB09B,MAAOA,EACPjc,cAAehkB,EACfw5B,KAAMn+B,KAAKsmN,OAAO1yJ,EAAMz1B,MACxBC,GAAIp+B,KAAKsmN,OAAO1yJ,EAAMx1B,MAI1Bp+B,KAAKmmN,YACLhsL,aAAan6B,KAAKmmN,YAGtBnmN,KAAKmmN,WAAaptL,YAAW,WACzBo4F,EAASrvC,SACV03G,MAIXusB,cAAe,SAASphN,GACpB,IAAIuC,EAAUlH,KAAKkH,QACfuX,EAAQ9Z,EAAE+jB,QAAQ,GAGtB,GAFa1oB,KAAKumN,aAAa9nM,EAAMujE,MAAOvjE,EAAMwjE,OAElD,CAIAjiF,KAAKomN,OAAS,CACVxyJ,MAAO,CACHz1B,KAAMn+B,KAAK+gK,OAAO75J,EAAQi3B,MAC1BC,GAAIp+B,KAAK+gK,OAAO75J,EAAQk3B,MAGhC,IAAIjH,EAAOn3B,KAAKqmN,gBAAgBrmN,KAAKomN,OAAOxyJ,OAExC5zD,KAAKoK,QAAQwuL,GAAczhK,GAC3Bn3B,KAAKomN,OAAS,KAEdzhN,EAAEwE,mBAIV+8M,YAAa,WACLlmN,KAAKomN,SACLpmN,KAAKoK,QAAQyuL,GAAY74L,KAAKqmN,gBAAgBrmN,KAAKomN,OAAOxyJ,eACnD5zD,KAAKomN,SAIpBJ,eAAgB,SAASrhN,GACrB,GAAK3E,KAAKomN,OAAV,CAIA,IAAIn3L,EAAMjvB,KACN4uK,EAAQ3/I,EAAI2/I,MACZ37G,EAAQhkC,EAAIm3L,OACZl/M,EAAU+nB,EAAI/nB,QACdwmL,EAAez+J,EAAIy+J,aACnB95H,EAAQX,EAAMW,MACd2uE,EAAKqsC,EAAM63C,oBAAoB9hN,EAAE+jB,QAAQ,GAAGtjB,EAAEmd,UAAUnd,EACxD28H,EAAK6sC,EAAM63C,oBAAoB9hN,EAAE+jB,QAAQ,GAAGtjB,EAAEmd,UAAUnd,EACxDymB,EAAOxoB,KAAK8S,IAAIosH,EAAIR,GACpBj2G,EAAQzoB,KAAKuV,IAAI2pH,EAAIR,GAEzBp9H,EAAEwE,iBAEFyqD,EAAMz1B,KAAOuvJ,EAAa5R,mBAAmB,IAAI9hD,EAAMnuG,KAAU3kB,EAAQiP,IAEzEy9C,EAAMx1B,GAAKsvJ,EAAa5R,mBAAmB,IAAI9hD,EAAMluG,KAAW5kB,EAAQ0R,IAExE5Y,KAAKu6B,KAAKq5B,EAAMz1B,KAAMy1B,EAAMx1B,IAE5Bp+B,KAAKoK,QAAQ2xE,GAAQ/7E,KAAKqmN,gBAAgBzyJ,MAG9CmtG,OAAQ,SAASr4J,GACb,IAAIqQ,EAAQrQ,EAMZ,OAJIA,aAAiB0F,OACjB2K,EAAQ/Y,KAAK0tL,aAAa7R,cAAcnzK,IAGrCqQ,GAGXutM,OAAQ,SAASvtM,GACb,IAAIrQ,EAAQqQ,EAQZ,OAPI/Y,KAAK6kN,YACLn8M,EAAQ1I,KAAK0tL,aAAazR,WAAWljK,IACzB/Y,KAAKkH,QAAQ0R,MACrBlQ,EAAQ1I,KAAKkH,QAAQ0R,KAItBlQ,GAGXq+M,MAAO,SAASr+M,GACZ,IAAIglL,EAAe1tL,KAAK0tL,aACpB30K,EAAQ/Y,KAAK+gK,OAAOr4J,GAExB,OAAOglL,EAAa3a,QAAQh6J,EAAOA,GAAO,IAG9CwhB,KAAM,SAAS4D,EAAMC,GACjB,IAAIl3B,EAAUlH,KAAKkH,QACf4O,EAAU9V,KAAK0tL,aAAaxmL,QAAQ4O,QACpCiH,EAAS7V,EAAQ6V,OACjBg5H,EAAU7uI,EAAQ6uI,QAClB0xB,EAASvgK,EAAQ6+B,UAAU0hI,OAC3B57I,EAAO/V,EAAUsoB,EAAKD,EACtBrS,EAAQhW,EAAUqoB,EAAOC,EACzBnb,EAAO,KAAOnN,EAAU,EAAI,GAE5BojC,EAAMl5C,KAAK+mN,MAAMl7L,GACjBm7L,EAAgBjxM,EAAMmjC,EAAIj2B,GAAQlG,EAAO8O,KAAOkqH,EAAQlqH,MAE5D0rG,EAAcv3H,KAAKilN,SAAU,CACzBj4M,MAAOg6M,IAEXzvF,EAAcv3H,KAAK+lC,UAAW,CAC1Bla,KAAMm7L,IAGV9tK,EAAMl5C,KAAK+mN,MAAMj7L,GAEjB,IAAIm7L,EAAiBlxM,EAAM7O,EAAQ8F,OAASksC,EAAIj2B,GAAQlG,EAAO8O,KAAOkqH,EAAQlqH,OAC9E0rG,EAAcv3H,KAAKklN,UAAW,CAC1Bl4M,MAAOi6M,IAGX,IAAIzpI,EAAWt2E,EAAQ8F,MAAQi6M,EAC3BzpI,IAAat2E,EAAQ8F,QACrBwwE,GAAYiqF,EAAO37I,OAGvByrG,EAAcv3H,KAAKklN,UAAW,CAC1Br5L,KAAM2xD,IAEV+5C,EAAcv3H,KAAK+lC,UAAW,CAC1B/4B,MAAO3J,KAAKuV,IAAI1R,EAAQ8F,OAASg6M,EAAgBC,GAAkBx/C,EAAO37I,MAAO,MAIzF0D,IAAK,SAAS2O,EAAMC,GAChB,IAAIl3B,EAAUlH,KAAKkH,QACfiP,EAAMnW,KAAK+gK,OAAO75J,EAAQiP,KAC1ByC,EAAM5Y,KAAK+gK,OAAO75J,EAAQ0R,KAC1B+uK,EAAYjxD,EAAW12H,KAAK+gK,OAAO5iI,GAAOhoB,EAAKyC,GAC/CsuM,EAAUxwF,EAAW12H,KAAK+gK,OAAO3iI,GAAKupJ,EAAY,EAAG/uK,GAErD1R,EAAQoF,SACRtM,KAAKu6B,KAAKotJ,EAAWu/B,GAGzBhgN,EAAQi3B,KAAOn+B,KAAKsmN,OAAO3+B,GAC3BzgL,EAAQk3B,GAAKp+B,KAAKsmN,OAAOY,IAG7BhrF,OAAQ,SAASt3F,GACb,IAAI19B,EAAUlH,KAAKkH,QACfiP,EAAMnW,KAAK+gK,OAAO75J,EAAQiP,KAC1ByC,EAAM5Y,KAAK+gK,OAAO75J,EAAQ0R,KAC1BuuM,EAAOjgN,EAAQw+M,WAAWr1K,KAC1BlS,EAAOn+B,KAAK+gK,OAAO75J,EAAQi3B,MAC3BC,EAAKp+B,KAAK+gK,OAAO75J,EAAQk3B,IACzBw1B,EAAQ,CAAEz1B,KAAMA,EAAMC,GAAIA,GAC1ByoL,EAAWr+M,EAAW,GAAIorD,GAqB9B,GAnBI5zD,KAAKomN,SACLxyJ,EAAQ5zD,KAAKomN,OAAOxyJ,OAGpBuzJ,IAASx8L,IACTipC,EAAMz1B,KAAOu4F,EACTA,EAAWv4F,EAAOyG,EAAO,EAAGxG,EAAK,GACjCjoB,EAAKyC,IAITuuM,IAAS18L,IACTmpC,EAAMx1B,GAAKs4F,EACPA,EAAWt4F,EAAKwG,EAAOgvB,EAAMz1B,KAAO,EAAGvlB,GACvCzC,EACAyC,IAIJg7C,EAAMz1B,OAAS0oL,EAAS1oL,MAAQy1B,EAAMx1B,KAAOyoL,EAASzoL,GAEtD,OADAp+B,KAAKwvB,IAAIokC,EAAMz1B,KAAMy1B,EAAMx1B,KACpB,GAIfiS,KAAM,SAASzL,EAAOw8J,GAClB,IAAIl6L,EAAUlH,KAAKkH,QACfiP,EAAMnW,KAAK+gK,OAAO75J,EAAQiP,KAC1ByC,EAAM5Y,KAAK+gK,OAAO75J,EAAQ0R,KAC1BulB,EAAOn+B,KAAK+gK,OAAO75J,EAAQi3B,MAC3BC,EAAKp+B,KAAK+gK,OAAO75J,EAAQk3B,IACzBw1B,EAAQ,CAAEz1B,KAAMA,EAAMC,GAAIA,GAC1ByoL,EAAWr+M,EAAW,GAAIorD,GAG1B99C,EADM9V,KAAK0tL,aAAaxmL,QACV4O,QACd8iC,EAASvzC,GAAKyQ,EAAU,IAAM,KAC9Bi7J,EAAU/wK,KAAK0tL,aAAa3c,UAC5Bq2C,EAAW/jN,KAAK6T,IAAI65J,EAAQn4H,GAAUwoJ,EAAO/7L,IAC7CoK,EAAOshK,EAAQ/jK,QACfF,EAAWiJ,EAAMqxM,EAAW33M,EAAM,GAClC4sK,EAAWtmK,EAAMjJ,EAAW83B,GAC5B03I,EAAWvmK,GAAO,EAAIjJ,GAAY83B,GAiBtC,GAfI5kC,KAAKomN,SACLxyJ,EAAQ5zD,KAAKomN,OAAOxyJ,OAGxBA,EAAMz1B,KAAOu4F,EACTA,EAAWv4F,EAAOk+I,EAAU,EAAGj+I,EAAK,GACpCjoB,EAAKyC,GAGTg7C,EAAMx1B,GAAKs4F,EACPA,EAAWt4F,EAAKk+I,EAAU1oH,EAAMz1B,KAAO,EAAGvlB,GAC1CzC,EACAyC,GAGAg7C,EAAMz1B,OAAS0oL,EAAS1oL,MAAQy1B,EAAMx1B,KAAOyoL,EAASzoL,GAEtD,OADAp+B,KAAKwvB,IAAIokC,EAAMz1B,KAAMy1B,EAAMx1B,KACpB,GAIfh0B,QAAS,SAAShI,EAAM+0B,GACpB,OAAQn3B,KAAKs0H,UAAYt0H,KAAK4uK,OAAOxkK,QAAQhI,EAAM+0B,MAI3DkpI,EAAkBukD,GAAW,CACzBt4M,SAAS,EACTo5M,WAAY,CACRr1K,KAAM,QAEVl6B,IAAK6nJ,EACLplJ,IAAK08G,IAGT,IAAI1Q,GAAUooF,GAAYjqM,OAAO,CAC7BmK,KAAM,SAASmtH,GACX,GAAKA,GAAUA,EAAMsmE,iBAAkB3gM,KAAKmiJ,UAAYniJ,KAAKmiJ,WAAa9nB,GAA1E,CAIA,IAAInzH,EAAUsB,EAAW,GAAIxI,KAAKkH,QAASmzH,EAAMnzH,QAAQi1J,SACrDhrE,EAASkpC,EAAMsmE,gBAEfxvG,GACAnxF,KAAKmiJ,SAAW9nB,EAChB2yE,GAAYjlM,GAAGmF,KAAK3C,KAAKvK,KAAM,CAC3Bq6H,MAAOA,EACPlpC,OAAQA,GACTjqF,EAASmzH,IAEZr6H,KAAKmN,SAIbA,KAAM,kBACKnN,KAAKmiJ,SACZ6qD,GAAYjlM,GAAGoF,KAAK5C,KAAKvK,SAI7BqnN,GAAgBra,GAAYjqM,OAAO,CACnCoF,KAAM,SAASsqK,EAAUvrK,GACrB8lM,GAAYjlM,GAAGI,KAAKoC,KAAKvK,KAAMyyK,EAAStN,aAAcj+J,GAEtDlH,KAAKyyK,SAAWA,EAChBzyK,KAAKstM,cAAgB76B,EAAStN,aAAaz0J,QAG/C88L,OAAQ,SAASnsE,EAAQ+/D,GACrB,IAAIkmB,EAAgBppL,EAAKmjG,GAAQ,SAAShH,GACtC,IAAI8hC,EAAU9hC,EAAMvrF,OAAOqtH,QAG3B,QAFeA,IAA+B,IAApBA,EAAQ7vJ,YAKtC,GAAIg7M,EAAc9/M,OAAS,EAAG,CAC1B,IAAI6yH,EAAQitF,EAAc,GACtBnyC,EAAOn1K,KAAKyyK,SAASib,aAAa3a,QAAQ14C,EAAMylD,YAEhD3uF,EAASiwG,EAASphM,KAAKunN,YAAYnmB,EAAQjsB,GAAQn1K,KAAKwnN,eAAentF,EAAO86C,GAElFn1K,KAAKkN,KAAK,CACNikF,OAAQA,EACR8qE,QAAQ,EACR56B,OAAQA,EACRylC,SAAUzsC,EAAMysC,SAChB2gD,aAAcznN,KAAKstM,cAAchgC,KAAKttK,KAAKkH,QAAQwgN,eAAgBrtF,EAAMysC,UACzEh4H,OAAQ9uC,KAAKyyK,SAAS3jI,QACvB9uC,KAAKkH,WAIhBqgN,YAAa,SAASltF,EAAO86C,GAWzB,OAVWn1K,KAAKyyK,SAASib,aAMfxmL,QAAQkrC,WACdioF,EAAMj1H,EAAI+vK,EAAK53F,SAASn4E,GAGrB,CACHi1H,MAAOA,EACP4U,MAXQ,CACR38F,WAAY,OACZF,SAAU,YAalBo1K,eAAgB,SAASntF,EAAO86C,GAC5B,IAAIj8H,EAAMmhF,EAAMujE,MAAMjwG,KAAK2gH,YACvBl8J,EAAWpyC,KAAKyyK,SAASib,aAAaxmL,QAAQkrC,SAC9CmrC,EAASrkC,EAAIqkC,SACboqI,EAAaxyC,EAAK53F,SAatB,MAAO,CACH88C,MAPAjoF,EACc,IAAI4nF,EAAMz8C,EAAOn4E,EAAGuiN,EAAWxjN,GAE/B,IAAI61H,EAAM2tF,EAAWviN,EAAGm4E,EAAOp5E,GAK7C8qI,MAdQ,CACR38F,WAAY,SACZF,SAAU,cAiBtBiuH,EAAkBgnD,GAAe,CAC7BK,eAAgB,UAGpB,IAAIE,GAAoBlsK,GAAU34C,OAAO,CACrC2yC,MAAO,WACH,IACI7pC,EADM7L,KACQ6L,QACd3E,EAFMlH,KAEQkH,QAGlB,GAFW2E,EAAQ+vH,OAET,CACN57H,KAAK44C,OAAS1xC,EAAQ0xC,OACtB,IAAI5T,EAAO99B,EAAQkrC,SAAWp9B,EAAI3P,EAE9BwiN,EAAY7nN,KAAK6nN,UAAY,IAAI52B,GAAc,EAAG,GACtD42B,EAAU7iL,GAAQ+vJ,GAElBlpL,EAAQ0nC,UAAUA,KACb5D,MAAMk4K,EAAUziN,EAAGyiN,EAAU1jN,SAGlCnE,KAAKo0I,SAIb1hG,KAAM,SAAS2hD,GACX,IAAIokC,EAAS3uG,EAAQ4/J,iBAAiB1pL,KAAK6nN,UAAUziN,EAAG,EAAGivF,GACvDqkC,EAAS5uG,EAAQ4/J,iBAAiB1pL,KAAK6nN,UAAU1jN,EAAG,EAAGkwF,GAE3Dr0F,KAAK6L,QAAQ0nC,UAAUA,KAClB5D,MAAM8oF,EAAQC,EAAQ14H,KAAK44C,UAIpCw7F,MAAO,WACH14F,GAAU3zC,GAAGqsI,MAAM7pI,KAAKvK,MACxBA,KAAK6L,QAAQ0nC,UAAU,SAI/B8sH,EAAkBunD,GAAmB,CACjClhM,SAAUkuK,KAGd7gD,GAAiBtgI,QAAQwjB,SAAS4+J,GAAK+xB,IAEvC,IAAIE,GAAkBpsK,GAAU34C,OAAO,CACnC2yC,MAAO,WACH,IAAI6nC,EAASv9E,KAAKu9E,OAASv9E,KAAK6L,QAAQ+vH,OAAOr+C,SAC/Cv9E,KAAK6L,QAAQ0nC,UAAUA,KAClB5D,MAAMolJ,GAAaA,GAAax3G,KAIzC7qC,KAAM,SAAS2hD,GACXr0F,KAAK6L,QAAQ0nC,UAAUA,KAClB5D,MAAM0kD,EAAKA,EAAKr0F,KAAKu9E,YAKlC8iF,EAAkBynD,GAAiB,CAC/B5zE,OAAQ,mBAGZH,GAAiBtgI,QAAQwjB,SAAS8+J,GAAQ+xB,IAE1C,IAAIC,GAAkBrsK,GAAU34C,OAAO,CACnC2yC,MAAO,WACH11C,KAAKgoN,OAAShoN,KAAK6L,QAAQ+qB,UAC3B52B,KAAK6L,QAAQ+qB,QAAQ,IAGzB8b,KAAM,SAAS2hD,GACXr0F,KAAK6L,QAAQ+qB,QAAQy9D,EAAMr0F,KAAKgoN,WAIxC3nD,EAAkB0nD,GAAiB,CAC/BrhM,SAAU,IACVwtH,OAAQ,WAGZH,GAAiBtgI,QAAQwjB,SAAS49J,GAAQkzB,IAE1C,IAAIE,GAAevsK,GAAU34C,OAAO,CAChC2yC,MAAO,WACH11C,KAAK6L,QAAQ0nC,UAAUA,KAClB5D,MAAMolJ,GAAaA,GAAa/0L,KAAKkH,QAAQq2E,UAItD7qC,KAAM,SAAS2hD,GACXr0F,KAAK6L,QAAQ0nC,UAAUA,KAClB5D,MAAM0kD,EAAKA,EAAKr0F,KAAKkH,QAAQq2E,YAK1C8iF,EAAkB4nD,GAAc,CAC5B/zE,OAAQ,iBACRxtH,SAAUkuK,KAGd7gD,GAAiBtgI,QAAQwjB,SAASy/J,GAAKuxB,IAEvC,IAAIC,GAAmB1d,GAAaznM,OAAO,CACvC6M,OAAQ,WACJ46L,GAAaziM,GAAG6H,OAAOrF,KAAKvK,MAE5BA,KAAKkiM,kBAGTM,cAAe,SAAS70B,EAAY0wB,EAAe1C,GAU/C,OAAO,IATK0C,EAAc5xL,QAGZipL,GACEqM,GAEAd,IAGKtzB,EAAY0wB,EAAe1C,IAGpDyH,gBAAiB,WAEb,OADaoH,GAAaziM,GAAGq7L,gBAAgB74L,KAAKvK,MACpCqd,OAAOrd,KAAKmiM,YAG9B4I,mBAAoB,SAASriM,EAAOg6L,GAChC,GAAIA,IAAkBxvL,GAAM,CACxB,IAAIi1M,EAAe,CACf/iN,EAAGsD,EAAMtD,EACTjB,EAAGuE,EAAMvE,GAQb,OANK+vE,GAASi0I,EAAa/iN,KACvB+iN,EAAa/iN,EAAI,GAEhB8uE,GAASi0I,EAAahkN,KACvBgkN,EAAahkN,EAAI,GAEdgkN,MAKnB3/M,EAAW0/M,GAAiB7/M,UAAW45L,IAEvC,IAAImmB,GAAarX,GAAahuM,OAAO,CACjCktK,WAAY,WACRjwK,KAAKsrM,WAAa,GAClBtrM,KAAKurM,WAAa,GAElBvrM,KAAKqoN,kBAAoB,IAAI1iB,GAC7B3lM,KAAKsoN,kBAAoB,IAAI3iB,IAGjC/1L,OAAQ,SAAS2hM,GACb,IAAIpgF,EAAWnxH,UACD,IAAVuxM,IAAoBA,EAAQvxM,KAAKuxM,OAIrC,IAFA,IAAI6B,EAAepzM,KAAKmzM,oBAEf5rM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIomF,EAAO4jH,EAAMhqM,GACbq1M,EAAaxJ,EAAazlH,EAAKzmF,QAAQ9E,MAAQ,YAAc,GACjE+uH,EAASkhF,YAAYuK,GACrB,IAAI2L,EAAiBp3F,EAASmiF,oBAAoBsJ,GAE7C2L,IAILp3F,EAASq3F,mBACL1Y,GAAmByY,EAAgBnxB,IACnCzpG,GAGJwjC,EAASs3F,uBACL3Y,GAAmByY,EAAgBlxB,IACnC1pG,GAGJwjC,EAASu3F,kBACL5Y,GAAmByY,EAAgBxyB,IACnCpoG,IAIR3tF,KAAK2oN,WAAWpX,IAGpB1C,YAAa,SAASjgC,EAAOjhF,GACzB3tF,KAAKqoN,kBAAkBthK,OAAO6nH,EAAM87B,aACpC1qM,KAAKsoN,kBAAkBvhK,OAAO6nH,EAAM+7B,aAEpCoG,GAAahpM,GAAG8mM,YAAYtkM,KAAKvK,KAAM4uK,EAAOjhF,IAGlDmhH,WAAY,SAAS9pK,GACjB,IAAI23J,EAAW33J,EAAK99B,QAAQ9E,KAE5B2uM,GAAahpM,GAAG+mM,WAAWvkM,KAAKvK,KAAMglC,GAElCA,EAAK99B,QAAQkrC,UACbpyC,KAAKsoN,kBAAkB7yK,MAAMknJ,UACtB38L,KAAKurM,WAAW5O,KAEvB38L,KAAKqoN,kBAAkB5yK,MAAMknJ,UACtB38L,KAAKsrM,WAAW3O,IAGvB33J,IAAShlC,KAAKgxK,cACPhxK,KAAKgxK,MAGZhsI,IAAShlC,KAAKixK,cACPjxK,KAAKixK,OAIpBoiC,eAAgB,SAASvkK,GACrB,IAAI5nC,EAAUlH,KAAKkH,QACf8jM,EAAYl8J,EAAOm8J,MACnB2d,EAAe,GAAGvrM,OAAOnW,EAAQ+jM,OACjCA,EAAQ/sK,EAAK0qL,GAAc,SAAS1jN,GAAK,OAAOA,EAAE9C,OAAS4oM,KAAc,GACzEE,EAAYp8J,EAAOq8J,MACnB0d,EAAe,GAAGxrM,OAAOnW,EAAQikM,OACjCA,EAAQjtK,EAAK2qL,GAAc,SAAS3jN,GAAK,OAAOA,EAAE9C,OAAS8oM,KAAc,GAEzE2T,GADQ33M,EAAQqqM,OAAS,CAAE,KACH,GAAGnvM,MAAQ,UAGvC,OAFgB6oM,GAAS,IAAIt9G,OAASw9G,GAAS,IAAIx9G,MAAQkxH,GAK/D2J,mBAAoB,SAAS15K,EAAQ6+C,GAC7B7+C,EAAOtnC,OAAS,GAChBxH,KAAK6uM,YACD,IAAIrE,GAAaxqM,KAAM,CAAE8uC,OAAQA,EAAQgL,KAAM6zC,EAAKzmF,QAAQ4yC,OAC5D6zC,IAKZ86H,uBAAwB,SAAS35K,EAAQ6+C,GACjC7+C,EAAOtnC,OAAS,GAChBxH,KAAK6uM,YACD,IAAIqZ,GAAiBloN,KAAM,CAAE8uC,OAAQA,EAAQgL,KAAM6zC,EAAKzmF,QAAQ4yC,OAChE6zC,IAKZ+6H,kBAAmB,SAAS55K,EAAQ6+C,GAC5B7+C,EAAOtnC,OAAS,GAChBxH,KAAK6uM,YACD,IAAInD,GAAY1rM,KAAM,CAAE8uC,OAAQA,EAAQgL,KAAM6zC,EAAKzmF,QAAQ4yC,OAC3D6zC,IAKZm7H,aAAc,SAAS5hN,EAASkrC,EAAU2sJ,GAYtC,IAXA,IA2BIgqB,EA3BApsB,EAAWz1L,EAAQ9E,KACnB4mN,EAAY52K,EAAWpyC,KAAKurM,WAAavrM,KAAKsrM,WAC9C2U,EAAU7tK,EAAWpyC,KAAKsoN,kBAAoBtoN,KAAKqoN,kBACnD5kC,EAAcj7K,EAAW,CAAEsN,SAAUs8B,GAAYpyC,KAAKmlK,aAAa5nB,KAAOr2I,EAAS,CAAEkrC,SAAUA,IAC/F62K,EAAQpZ,GAAiBpsB,EAAY/9K,KAAMwzL,IAC3CgnB,EAAeD,EAAQz/M,QACvB4/M,EAAmB6I,EAAQ,CAAE9yM,IAAK,GAAKyC,IAAK,GAAM,CAAEzC,IAAK,EAAGyC,IAAK,GACjEg7C,EAAQqsJ,EAAQz/M,MAAMm8L,IAAaujB,GAAgBE,EACnD8I,EAAc,CAAEzlC,EAAYttK,IAAKstK,EAAY7qK,KAC7Ck2B,EAAS9uC,KAAK8uC,OAET6sJ,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAAY,CACzD,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvBwtB,EAAiB9qB,EAAcjsJ,EAAW,QAAU,SACxD,GAAK+2K,IAAmB1lC,EAAYrhL,MAAwB,IAAd28L,IAAoBoqB,EAAiB,CAC/E,IAAIC,EAAkBj3B,GAAa1+K,QAAQm/K,UAAUyL,EAAe,GAAG7L,YACvE02B,EAAYvnN,KAAKynN,EAAgBh3K,EAAW,IAAM,MAElD,OAIU,IAAd2sJ,GAAmBmhB,IACnBtsJ,EAAMz9C,IAAM9S,KAAK8S,IAAIy9C,EAAMz9C,IAAK+pM,EAAa/pM,KAC7Cy9C,EAAMh7C,IAAMvV,KAAKuV,IAAIg7C,EAAMh7C,IAAKsnM,EAAatnM,MAKjD,IAAK,IAAIrR,EAAI,EAAGA,EAAI2hN,EAAY1hN,OAAQD,IACpC,GAAI2hN,EAAY3hN,aAAc6G,KAAM,CAChC26M,GAAe,EACf,MAaR,IAAI/jL,EAAO,IARP6qK,GAAiBpsB,EAAY/9K,KAAMi4J,KAAW8lB,EAAY/9K,MAAQqjN,EACvDj/L,EAAQq6J,cACZ8kC,EACIn/L,EAAQg7J,gBAERh7J,EAAQu4J,aAGCzuH,EAAMz9C,IAAKy9C,EAAMh7C,IAAK6qK,EAAazjL,KAAKmlK,cAGhE,GAFAngI,EAAK+5J,UAAYA,EAEbpC,EAAU,CACV,GAAIqsB,EAAUrsB,GACV,MAAM,IAAIlsL,OAAQ2hC,EAAW,IAAM,KAAO,mBAAqBuqJ,EAAW,uBAE9EqsB,EAAUrsB,GAAY33J,EAK1B,OAFAhlC,KAAK2uM,WAAW3pK,GAETA,GAGX2jL,WAAY,SAASpX,GASjB,IARA,IAAIpgF,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfmiN,EAAe,GAAGhsM,OAAOnW,EAAQ+jM,OACjC4H,EAAQ,GACRyW,EAAe,GAAGjsM,OAAOnW,EAAQikM,OACjC2H,EAAQ,GAEHlpM,EAAM,EAAGA,EAAMy/M,EAAa7hN,OAAQoC,IAAO,CAChD,IAAIm0M,EAAW5sF,EAAS2gF,SAASuX,EAAaz/M,GAAK+jF,MAC/Ct4D,EAAQ0oL,EAAUxM,IAClBsB,EAAMlxM,KAAKwvH,EAAS23F,aAAaO,EAAaz/M,IAAM,EAAOA,IAInE,IAAK,IAAIsrK,EAAQ,EAAGA,EAAQo0C,EAAa9hN,OAAQ0tK,IAAS,CACtD,IAAIq0C,EAAap4F,EAAS2gF,SAASwX,EAAap0C,GAAOvnF,MACnDt4D,EAAQk0L,EAAYhY,IACpBuB,EAAMnxM,KAAKwvH,EAAS23F,aAAaQ,EAAap0C,IAAQ,EAAMA,IAIpEl1K,KAAKgxK,MAAQhxK,KAAKgxK,OAAS6hC,EAAM,GACjC7yM,KAAKixK,MAAQjxK,KAAKixK,OAAS6hC,EAAM,IAGrCsF,eAAgB,SAASxpC,EAAOjqK,EAAG07M,GAQ/B,IAPA,IAAIjf,EAASxyB,EAAM0xC,kBAAkB37M,GACjC01H,EAAQ,IAAIL,EAAMonE,EAAOh8L,EAAGg8L,EAAOj9L,GACnC6qM,EAAUhvM,KAAK4yK,KACfprK,EAASwnM,EAAQxnM,OACjBgiN,EAAU,GACVC,EAAU,GAELliN,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIy9B,EAAOgqK,EAAQznM,GACfuR,EAASksB,EAAK99B,QAAQkrC,SAAWq3K,EAAUD,EAC3C3+K,EAAe7F,EAAK++I,SAAS1pD,GACZ,OAAjBxvF,GACA/xB,EAAOnX,KAAKkpC,GAIhB2+K,EAAQhiN,OAAS,GAAKiiN,EAAQjiN,OAAS,GACvConK,EAAMxkK,QAAQi2M,EAAW,CACrBx0M,QAAS2qH,EAAa7xH,GACtBgkB,cAAehkB,EACfS,EAAG+qM,GAAkBqZ,GACrBrlN,EAAGgsM,GAAkBsZ,MAKjCjJ,kBAAmB,SAASx7K,EAAM99B,GAC9B,IAAIkrC,EAAWpN,EAAK99B,QAAQkrC,SACxBwgI,EAAO5yK,KAAK4yM,UAAU5yM,KAAKuxM,OAC3Bx4L,GAASq5B,EAAWwgI,EAAKzuK,EAAIyuK,EAAKxtK,GAAGuQ,QAAQqvB,GAEjD0kL,GAAoB1pN,KAAKkH,QAAS6R,EAAOq5B,EAAUlrC,GACnDwiN,GAAoB1pN,KAAKkxM,gBAAiBn4L,EAAOq5B,EAAUlrC,MAInE,SAASwiN,GAAoBjJ,EAAe1hB,EAAW3sJ,EAAUlrC,GAC7D,IAAIu8K,EAAe,GAAGpmK,OAAO+0B,EAAWquK,EAActV,MAAQsV,EAAcxV,OAAQlM,GACpFv2L,EAAWi7K,EAAav8K,GAG5Bm5J,EAAkB+nD,GAAY,CAC1Bnd,MAAO,GACPE,MAAO,KAGX3iM,EAAW4/M,GAAW//M,UAAW8vM,IAEjC,IAAIwR,GAAa/kD,EAAa7hK,OAAO,CACjCoF,KAAM,SAASO,EAAO86J,EAAQt8J,GAC1B09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAK0I,MAAQA,EACb1I,KAAKwjK,OAASA,GAGlB5zJ,OAAQ,WACJ,IAAI8/J,EAAS1vK,KAAKkH,QAAQwoK,OACtBvK,EAAenlK,KAAK49L,MAAMz4B,aAC1B66B,EAAYhgM,KAAK0I,MAErB,IAAI1I,KAAK8/L,YAA8B,IAAjB9/L,KAAKsM,QAA3B,CAGAtM,KAAK8/L,WAAY,EAEjB,IAAI3sB,EAAgBzT,EAAYgQ,GAC5B1H,EAAYhoK,KAAKgoK,YAQrB,GANImL,EACA6sB,EAAY7sB,EAAcnL,GACnB0H,EAAOh/J,SACdsvL,EAAY76B,EAAaz0J,OAAO48J,KAAKoC,EAAOh/J,OAAQsvL,IAGpDtwB,EAAOpjK,UAAY0zL,GAA2B,IAAdA,GAAkB,CAClD,GAAItwB,EAAO5iK,WAAakjF,GAAU0/E,EAAO5iK,WAAassL,GAC7C1pB,EAAOtgD,QACRsgD,EAAOtgD,MAAQtlG,EAAQ+/J,cAAc7pL,KAAKkH,QAAQkoH,QAEjDsgD,EAAOzd,aACRyd,EAAOzd,WAAajyJ,KAAKkH,QAAQkoH,WAElC,CACH,IAAIw6F,EAAczkD,EAAa4oB,MAAMnC,eAAelc,OACpDA,EAAOtgD,MAAQsgD,EAAOtgD,OAASw6F,EAAYx6F,MAC3CsgD,EAAOzd,WAAayd,EAAOzd,YAAc23D,EAAY33D,WAGzDjyJ,KAAK6zB,MAAQ,IAAIm3I,EAAQg1B,EAAWx3L,EAAW,GAAIknK,EAAQ,CACvDzgC,MAAOj/C,EACPqnE,OAAQ,GACR/lE,UAAW,CACP5rF,KAAMmvL,GACN1vJ,MAAOnlC,KAAK6pN,kBAEhB7hD,GAEJhoK,KAAK+5C,OAAO/5C,KAAK6zB,UAIzBu8G,OAAQ,SAASwxB,GACb5hK,KAAK4P,SACL5P,KAAKk5C,IAAM0oH,EACX5hK,KAAKsgM,eAGTA,YAAa,WACT,IACIwpB,EADM9pN,KACckH,QAAQwoK,OAC5B77I,EAFM7zB,KAEM6zB,MACZ2vI,EAASxjK,KAAKwjK,OAAOr8J,QACrB4iN,EAAiBD,EAActsI,SAC/B86C,EAAQkrC,EAAON,SAEnB,GAAIrvI,EAAO,CACP,IAEIm2L,EAFAC,EAAcp2L,EAAMqlB,IAAIvsC,SACxBu9M,EAAar2L,EAAMqlB,IAAIlsC,QAG3B,GAAI88M,EAAch9M,WAAakjF,EAC3BwzE,EAAO73I,OAAStoB,KAAK6T,KAAKssJ,EAAO73I,OAASs+L,GAAe,GAAKA,EAC9DD,EAAKxmD,EAAOnpC,MAAM/B,GAClBzkG,EAAMu8G,OAAO,IAAIuxB,EAAIqoD,EAAG5kN,EAAG4kN,EAAG7lN,EAAI8lN,EAAc,EAAGD,EAAG5kN,EAAG4kN,EAAG7lN,SACzD,GAAI2lN,EAAch9M,WAAassL,GAClC51B,EAAO73I,OAAS63I,EAAO73I,OAASs+L,EAAc,EAC9CD,EAAKxmD,EAAOnpC,MAAM/B,GAClBzkG,EAAMu8G,OAAO,IAAIuxB,EAAIqoD,EAAG5kN,EAAG4kN,EAAG7lN,EAAI8lN,EAAc,EAAGD,EAAG5kN,EAAG4kN,EAAG7lN,QACzD,CACH,IAAI84E,GACJ+sI,EAAKxmD,EAAOr8J,QAAQ+0H,OAAO6tF,GAAgB1vF,MAAM/B,IAC1ClzH,GAAKo+J,EAAOjmF,OAAOn4E,GACtB63E,EAAK+sI,EAAG5kN,EAAI8kN,EACZr2L,EAAM27G,YAAc7kH,IAEpBsyD,EAAK+sI,EAAG5kN,EAAI8kN,EACZr2L,EAAM27G,YAAc/kH,GAExBoJ,EAAMu8G,OAAO,IAAIuxB,EAAI1kF,EAAI+sI,EAAG7lN,EAAI8lN,EAAaD,EAAG5kN,EAAG4kN,EAAG7lN,OAKlEohK,aAAc,WACV,IAAIp0C,EAAWnxH,KAGXwjK,EADMxjK,KACOwjK,OACbt8J,EAFMlH,KAEQkH,QAIlB,GAFA09J,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAE9BA,KAAK0I,MACL,GAAIxB,EAAQg3I,OAAQ,CAChB,IAAI1d,GAAcgjC,EAAOhjC,WAAa,KAAO,IACzC0d,EAASh3I,EAAQg3I,OAAO,CACxB4oB,SAAU9mK,KAAK8mK,SACfzyI,SAAUr0B,KAAKq0B,SACf3rB,MAAO1I,KAAK0I,MACZomC,OAAQ9uC,KAAK8uC,OACb7iB,WAAYjsB,KAAKisB,WACjBsxD,OAAQ,IAAI0zG,GAAcztB,EAAOjmF,OAAOn4E,EAAGo+J,EAAOjmF,OAAOp5E,GACzDwnB,OAAQ63I,EAAO73I,OACfs3I,YAAaO,EAAOP,YACpBziC,WAAYA,EACZC,SAAUD,EAAagjC,EAAOlrC,MAC9BpxH,QAASA,EACToD,OAAQtK,KAAKglK,YACbO,aAAc,WACV,IAAIrxG,EAAQ,IAAIs6E,GAGhB,OAFArd,EAASg5F,oBAAoBj2J,GAEtBA,KAIXgqF,GACAl+I,KAAKk+I,OAAOnkG,OAAOmkG,QAGvBl+I,KAAKmqN,oBAAoBnqN,KAAKk+I,SAK1CisE,oBAAqB,SAASj2J,GAC1B,IACIsvG,EADMxjK,KACOwjK,OACbt8J,EAFMlH,KAEQkH,QACdkjN,EAAgBljN,EAAQugK,QAAU,GAClCA,EAAS2iD,EAAcp9M,MAAQ,EAAI,CACnC6wH,OAAQ,CACJzO,MAAOg7F,EAAch7F,MACrBpiH,MAAOo9M,EAAcp9M,MACrB4pB,QAASwzL,EAAcxzL,QACvBolH,SAAUouE,EAAcpuE,WAE5B,GACA5sB,EAAQloH,EAAQkoH,MAChBn8F,EAAO,CACPm8F,MAAOA,EACPx4F,QAAS1vB,EAAQ0vB,SAEjBsnH,EAASl+I,KAAKwiM,cAAch/B,EAAQh7J,EAAW,CAC/CyqB,KAAMA,EACN4qG,OAAQ,CACJjnG,QAAS1vB,EAAQ0vB,SAErBgjB,OAAQ1yC,EAAQ0yC,QACjB6tH,IAEHvzG,EAAMna,OAAOmkG,GAETgoD,GAAmBh/L,IACnBgtD,EAAMna,OAAO/5C,KAAKgnK,sBAAsB9oB,EAAQ,CAC5CsoD,UAAWp3E,EACXokB,aAAcvgH,GACfzqB,EAAW,CACV+0E,OAAQ,CAAEimF,EAAOjmF,OAAOn4E,EAAGo+J,EAAOjmF,OAAOp5E,GACzC8+J,YAAaO,EAAOP,YACpBt3I,OAAQ63I,EAAO73I,OACfsnH,WAAW,GACZ/rI,EAAQggK,YAInBs7B,cAAe,SAASh/B,EAAQt8J,GAC5B,OAAIA,EAAQmjN,cACD,IAAItgM,GAAQq0G,OAAO,IAAIwB,GAASxB,OAAO,IAAI6yD,GAAcztB,EAAOjmF,OAAOn4E,EAAGo+J,EAAOjmF,OAAOp5E,GAAIq/J,EAAO73I,QAASzkB,GAGhH4iB,EAAQ26I,aAAahxJ,QAAQixJ,WAAWlB,EAAQt8J,IAG3Du+J,gBAAiB,WACb,IACIv+J,EADMlH,KACQkH,QACdq2E,EAFMv9E,KAEOwjK,OAAOjmF,OAExB/0E,EAAWtB,EAAS,CAChBoqF,UAAW,CACP/T,OAAQ,CAAEA,EAAOn4E,EAAGm4E,EAAOp5E,GAC3BghC,MAAOnlC,KAAK6pN,kBAIpBjlD,EAAa78J,GAAG09J,gBAAgBl7J,KAAKvK,OAGzCwmK,gBAAiB,SAASt/J,GACtB,IAAIq/J,EAAYvmK,KAAKkH,QAAQq/J,WAAa,GACtCkB,EAASlB,EAAUkB,QAAU,GAEjC,OAAOznK,KAAKwiM,cAAcxiM,KAAKwjK,OAAQh7J,EAAW,GAAItB,EAAS,CAC3D+rB,KAAM,CACFm8F,MAAOm3C,EAAUn3C,MACjBx4F,QAAS2vI,EAAU3vI,SAEvBinG,OAAQ,CACJjnG,QAAS6wI,EAAO7wI,QAChB5pB,MAAOy6J,EAAOz6J,MACdoiH,MAAOq4C,EAAOr4C,WAK1BqxE,gBAAiB,WACb,OAAOzgM,KAAKk+I,OAAO/oG,SAAS,IAGhC0xH,oBAAqB,WACjB,IAAIrD,EAASxjK,KAAKwjK,OAElB,MAAO,CACHt8J,QAASlH,KAAKkH,QACdykB,OAAQ63I,EAAO73I,OACfs3I,YAAaO,EAAOP,YACpB1lF,OAAQ,IAAI0zG,GAAcztB,EAAOjmF,OAAOn4E,EAAGo+J,EAAOjmF,OAAOp5E,GACzDq8H,WAAYgjC,EAAOhjC,WACnBC,SAAU+iC,EAAOlrC,MAAQkrC,EAAOhjC,WAChC0d,OAAQl+I,KAAKk+I,SAIrByiD,cAAe,WACX,IAAIn9B,EAASxjK,KAAKwjK,OAAOr8J,QAAQ+0H,OA98TpB,GA+8TTunC,EAAWD,EAAON,SAGtB,MAAO,CACH7oC,MAHWmpC,EAAOnpC,MAAMopC,GAIxBx0B,MAAOq7E,GAAiB7mD,EAAW,OAI3Cw8B,YAAa,SAASvvL,GAClB,OAAO1Q,KAAK49L,MAAM4B,iBAAiBx/L,KAAM0Q,IAG7Cs3J,UAAW,WACP,MAAO,CACH3zI,SAAUr0B,KAAKq0B,SACfyyI,SAAU9mK,KAAK8mK,SACfp+J,MAAO1I,KAAK0I,MACZomC,OAAQ9uC,KAAK8uC,OACb7iB,WAAYjsB,KAAKisB,eAKzBs+L,GAASx0M,EAAM+T,EAAQitG,IAAI,IAAK8mC,GAChC2sD,GAASz0M,EAAM+T,EAAQitG,IAAI,IAAK8mC,GAEpC,SAASysD,GAAiBhyF,GACtB,IAAI7C,EAAU3rG,EAAQitG,IAAIuB,GACtBgL,EAAOvtH,EAAM1S,KAAKm1H,IAAI/C,GAAUooC,GAChCx6B,EAASttH,EAAM1S,KAAKk1H,IAAI9C,GAAUooC,GAoBtC,MAAO,CACHvrH,WAlBAjvC,KAAK6T,IAAIosH,GAAQknF,GACJx6H,EACNqzC,EAAS,EACH14G,EAEAF,EAcb2nB,SAVA/uC,KAAK6T,IAAIosH,GAAQinF,GACNv6H,EACJszC,EAAO,EACHpzC,EAEAD,GASnBowE,EAAkBspD,GAAY,CAC1Bv6F,MAAOmvC,EACP2I,QAAS,CACLjkB,SAAU,gBAEdwkB,OAAQ,CACJz6J,MAAO,IAEX0iK,OAAQ,CACJpjK,SAAS,EACTkxE,SAAU,GACVuZ,KAAMi6F,EAAiBpzB,aACvBjlH,OAAQ4mH,EAAW,IACnBtwB,MAAOwuB,EACP7jH,OAAQ,EACR9sC,SAAUwsL,IAEdhoG,UAAW,CACP5rF,KAAMgxL,IAEVnwB,UAAW,CACPj6J,SAAS,EACTm7J,OAAQ,CACJz6J,MAAO,IAGfV,SAAS,IAGb9D,EAAWmhN,GAAWthN,UAAWo3L,IAEjC,IAAIgrB,GAAgB,CAChBC,iBAAkB,SAAShiN,EAAO2xH,EAAOnzH,GACrC,IAAIyjN,EAAgB3qN,KAAKkH,QAAQ0mL,QAAU,GACvCk8B,EAAgBa,EAAcj7C,QAAU,GACxCqgB,EAAgB46B,EAAc56B,eAAiB,GAC/CuiB,EAAsBviB,EAAcrgB,QAAU,GAElD,GAAIxoK,IAAuC,IAA5BA,EAAQsrM,gBAA2B,CAC9C,IAeIC,EAAkBC,EAflBkY,GAAmC,IAApB1jN,EAAQoF,QACvB6mK,EAAgBy3C,EAAelrD,EAAYoqD,GAC3CpqD,EAAY4yC,IAAwB5yC,EAAYoqD,GAChDlpL,EAAO15B,EAAQ4/J,SAEfqM,IACAvyI,EAAOuyI,EAAc,CACjBvyI,KAAMA,EACNkO,OAAQ5nC,EAAQ4nC,OAChBza,SAAUntB,EAAQmtB,SAClBpI,WAAY/kB,EAAQ+kB,WACpBvjB,MAAOA,KAKXkiN,GACAnY,EAAmB,GACnBC,EAAcr4E,EAAMjL,QAEpBqjF,EAAmB,CACfrjF,MAAOkjF,EAAoBljF,MAC3Br4B,KAAMu7G,EAAoBv7G,MAE9B27G,GAAe3iB,EAAcjE,SAAW,IAAI18D,OAG5Cl7C,GAAStzC,IAAkB,KAATA,GAClB5gC,KAAK6qN,YAAYlpN,KAAK,CAClBgxM,OAAQiY,EACR1H,WAAYh8M,EAAQ6R,MACpB6nB,KAAMA,EACNkO,OAAQ5nC,EAAQ4nC,OAChB4jK,YAAaA,EACbhjC,OAAQ+iC,OASxBqY,GAAWlmD,EAAa7hK,OAAO,CAC/BoF,KAAM,SAASsqK,EAAUvrK,GACrB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKyyK,SAAWA,EAChBzyK,KAAKmlK,aAAesN,EAAStN,aAC7BnlK,KAAKqhI,OAAS,GACdrhI,KAAK6qN,YAAc,GACnB7qN,KAAK4P,UAGTA,OAAQ,WACJ5P,KAAKw7L,mBAAmBx7L,KAAKy7L,SAASjyL,KAAKxJ,QAG/Cw7L,mBAAoB,SAASxyK,GACzB,IAGI9hB,EADMlH,KACQkH,QACdipL,EAFMnwL,KAEayyK,SAASvrK,QAAQipL,kBAAmC,IAAjBA,IAA2BA,EAAe,IAKpG,IAJA,IAAI46B,EAAc56B,EAAa3oL,OAC3BsnC,EAAS5nC,EAAQ4nC,OACjBksJ,EAAclsJ,EAAOtnC,OAEhBm0L,EAAW,EAAGA,EAAWX,EAAaW,IAAY,CACvD,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvB9tL,EAAOwwL,EAAcxwL,KACrB4iI,EAAQm/D,GAAavR,GACrBz3I,EAAQ6pF,EAAM7pF,MACdy6E,EAASoP,EAAMpP,OACfvmH,EAAQ21H,EAAM31H,MACdkwM,EAAgB,IAAMpkK,EACtBqkK,OAAgB,EACfp5M,SAASm5M,KACVC,EAAgB,IAAMnwM,GAE1B,IAAIqmH,OAAe,EAGfA,EADAnM,EAAQqpE,EAAc79D,YACP69D,EAAc79D,WAEdt5H,EAAQs5H,WAGvBm7D,IAAaX,EAAc,GACvBqD,EAAc3uB,OAAO5iK,WAAawsL,KAClC+E,EAAc3uB,OAAO5iK,SAAWkjF,GAIxC,IAAK,IAAIzoF,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAAK,CACpC,IAAIygK,EAAY3mC,EAAO95H,GACvB,GAAKygK,EAAL,CAIA,IAAIp5I,EAASo5I,EAAUp5I,OACnBlmB,EAAQs/J,EAAUt/J,MAClB4D,EAAU07J,EAAU17J,QACpBgsH,EAAkB,IAAV5vH,EAAeuiN,GAAkBviN,EAAQsiN,EAAkB,EACnEE,EAA0B,IAAhBr9M,EAAKrG,QAAgB+K,QAAQqc,EAAOs8L,SAE7ChiN,EAAWm1L,EAAcjvE,SAC1BivE,EAAcjvE,MAAQxgG,EAAOwgG,OAAS+gE,EAAa5oL,EAAIwjN,IAG3D/hM,EAAStgB,EAAO,IAAIohB,EAAQk5I,KAAK,KAAM,EAAG,EAAG7hC,EAAc7I,GAAQ,CAC/DslE,MApDG59L,KAqDH8mK,SAAU9xC,EAAQpmG,EAAOk4I,UAAYl4I,EAAOk4I,SAAW,GACvD/tJ,MAAOxR,EACPunC,OAAQuvJ,EACR1C,SAAUA,EACVtnK,SAAUxmB,EAAKtG,GACf0kB,WAAsB,IAAV26B,EAAcl+C,EAAQk+C,EAAQ,EAC1CskK,QAASA,EACT1Y,gBAAiB5jL,EAAO4jL,gBACxBlmM,QAASA,EACTstC,OAAQohJ,EAAcW,EACtBkuB,eA/DG7pN,KA+DsB6pN,eAAetiN,EAAGo0L,EAAUX,MAGzC,IAAZ1uL,IACA60H,GAAgB7I,OAMhC6yF,mBAAoB,SAASjkN,EAASwB,EAAOkmB,GACzC,IAAIkgB,EAASlgB,EAAOkgB,OAEpB8rJ,GAAY1zL,EAAS,CACjBwB,MAAOA,EACPomC,OAAQA,EACRza,SAAUzF,EAAOyF,SACjByyI,SAAUl4I,EAAOk4I,SACjB76I,WAAY2C,EAAO3C,YACpB,CAAErrB,SAAUkuC,EAAOivJ,UAAWhD,SAAU,CAAE,OAAQ,UAAW,WAAY,SAAU,aAG1FU,SAAU,SAAS/yL,EAAO86J,EAAQ50I,GAC9B,IAAIw8L,EAAiB5iN,EAAW,GAAIomB,EAAOkgB,OAAQ,CAAE/1B,MAAO6V,EAAO7V,QAKnE,GAJA/Y,KAAKmrN,mBAAmBC,EAAgB1iN,EAAOkmB,GAE/C5uB,KAAK0qN,iBAAiBhiN,EAAO0iN,EAAgBx8L,IAEtB,IAAnBA,EAAOtiB,QAAX,CAIA,IAAIk8H,EAAU,IAAImhF,GAAWjhN,EAAO86J,EAAQ4nD,GAC5CzoN,EAAEI,OAAOylI,EAAS55G,GAClB5uB,KAAK+5C,OAAOyuF,GACZxoI,KAAKqhI,OAAO1/H,KAAK6mI,KAGrB4H,OAAQ,SAASwxB,GACb,IAAI3yI,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdm6H,EAASpyG,EAAIoyG,OACbgqF,EAAgBp8L,EAAIo8L,mBAAqC,IAAlBA,IAA4BA,EAAgB,IACvF,IAAIvwM,EAAQumH,EAAO75H,OACf0xC,EAAM0oH,EAAUz6J,QAEhBmkN,EAAWjoN,KAAK8S,IAAI+iC,EAAIlsC,QAASksC,EAAIvsC,UACrC4+M,EAAeD,EAAW,EAC1BE,EAAiBF,EAAsB,IAAXA,EAC5BG,EAAS,IAAI9pD,EAAIzoH,EAAI+jC,GAAI/jC,EAAIgkC,GAAIhkC,EAAI+jC,GAAKquI,EAAUpyK,EAAIgkC,GAAKouI,GAC7DI,EAAeD,EAAOluI,SACtBuuF,EAAY5yH,EAAIqkC,SAChBy9G,EAAc9zL,EAAQ4nC,OAAOtnC,OAC7BmkN,EAAiB,GACjBC,EAAkB,GAClB71E,EAAU7e,EAAehwH,EAAQ6uI,QAASy1E,GAE9CxrN,KAAK4hK,UAAYA,EAEjB7rB,EAAUA,EAAUw1E,EAdR,EAc+BA,EAd/B,EAcsDx1E,EAClE01E,EAAOz7K,UAAU87H,EAAU1mK,EAAIsmN,EAAatmN,EAAG0mK,EAAU3nK,EAAIunN,EAAavnN,GAQ1E,IANA,IAAIwnB,EAAS4/L,EAAex1E,EACxBx4D,EAAS,IAAIy8C,EACbruG,EAAS8/L,EAAOxuI,GAAK84D,EACrBpqH,EAAS8/L,EAAOvuI,GAAK64D,GAGhBxuI,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIihI,EAAUnH,EAAO95H,GACjBi8J,EAASh7B,EAAQg7B,OACjBg0C,EAAchvE,EAAQmzD,SAI1B,GAHAn4B,EAAO73I,OAASA,EAChB63I,EAAOjmF,OAASA,EAEZ8tI,EAAc7jN,OAAQ,CACtB,IAAIqkN,EAAeR,EAAc7T,GACjCh0C,EAAOP,YAAc4oD,EAAa5oD,YAClCO,EAAO73I,OAASkgM,EAAalgM,OAG7B6rL,IAAgBxc,EAAc,GAAKxyD,EAAQ0iF,UAC3C1nD,EAAOjmF,OAASimF,EAAOr8J,QAAQm3H,UAA0B,IAAhBklC,EAAO73I,QAAe0uG,MAAMmpC,EAAON,WAGhF16B,EAAQ4H,OAAOq7E,GAEf,IAAI53L,EAAQ20G,EAAQ30G,MAChBA,GACIA,EAAM3sB,QAAQ4F,WAAawsL,IACvBke,IAAgBxc,EAAc,IAC1BnnK,EAAM27G,cAAgB7kH,EACtBihM,EAAgBjqN,KAAKkyB,GAErB83L,EAAehqN,KAAKkyB,IAOpC83L,EAAenkN,OAAS,IACxBmkN,EAAezmM,KAAKllB,KAAK8rN,iBAAgB,IACzC9rN,KAAK+rN,iBAAiBJ,IAGtBC,EAAgBpkN,OAAS,IACzBokN,EAAgB1mM,KAAKllB,KAAK8rN,iBAAgB,IAC1C9rN,KAAKgsN,kBAAkBJ,IAG3B5rN,KAAKk5C,IAAMuyK,GAGfM,iBAAkB,SAASr8C,GACvB,IAAIu8C,EAAYjsN,KAAKksN,sBAAsBx8C,GAE3C1vK,KAAKmsN,iBAAiBF,EAAWv8C,IAGrCs8C,kBAAmB,SAASt8C,GACxB,IAAIu8C,EAAYjsN,KAAKksN,sBAAsBx8C,GAE3C1vK,KAAKmsN,iBAAiBF,EAAWv8C,IAGrCw8C,sBAAuB,SAASx8C,GAC5B,IAAIlnC,EAAUrmG,EAAKniC,KAAKqhI,QACpBmiC,EAASh7B,EAAQg7B,OACjB1oJ,EAAQ40J,EAAOloK,OAAS,EACxB4kN,EAAK5oD,EAAO73I,OAAS68G,EAAQthI,QAAQwoK,OAAOlyF,SAC5CyuI,EAAY,GACZI,EAAW38C,EAAO,GAAGx2H,IACrBskC,EAAWznE,EAAMs2M,EAASnvI,IAAMsmF,EAAOjmF,OAAOp5E,EAAIioN,EAAKC,EAAS1/M,SAAW0/M,EAAS1/M,SAAW,IAEnGs/M,EAAUtqN,KAAK67E,GAEf,IAAK,IAAIj2E,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAI+kN,EAAY58C,EAAOnoK,EAAI,GAAG2xC,IAE9BmzK,EAAW38C,EAAOnoK,GAAG2xC,IACrBskC,EAAWznE,EAAMu2M,EAAUpvI,GAAKmvI,EAASjvI,IACzC6uI,EAAUtqN,KAAK67E,GAKnB,OAHAA,EAAWznE,EAAMytJ,EAAOjmF,OAAOp5E,EAAIioN,EAAK18C,EAAO50J,GAAOo+B,IAAIkkC,GAAKsyF,EAAO50J,GAAOo+B,IAAIvsC,SAAW,GAC5Fs/M,EAAUtqN,KAAK67E,GAERyuI,GAGXE,iBAAkB,SAASF,EAAWv8C,GAMlC,IALA,IAGI7jJ,EAAMC,EAAOggB,EADbhxB,EAAQmxM,EAAUzkN,OAGbD,EAAI,EAAGA,EAAIuT,EAAOvT,IAIvB,IAHAukC,GAAamgL,EAAU1kN,GACvBskB,EAAOC,EAAQvkB,EAERukC,EAAY,IAAMjgB,GAAQ,GAAKC,EAAQhR,IAC1CgxB,EAVO9rC,KAUcusN,cAAcN,EAAW1kN,IAAKskB,EAAMigB,GACzDA,EAXO9rC,KAWcusN,cAAcN,EAAW1kN,IAAKukB,EAAOggB,GAIlE9rC,KAAK6mL,aAAaolC,EAAWv8C,IAGjC68C,cAAe,SAASN,EAAW96H,EAAQrkF,EAAU0/M,GACjD,IAAIj2M,EAASi2M,EACb,GAAIP,EAAUn/M,GAAY,EAAG,CACzB,IAAI6tJ,EAAYt3J,KAAK8S,IAAI81M,EAAUn/M,GAAWyJ,GAC9CA,GAAUokJ,EACVsxD,EAAUn/M,IAAa6tJ,EACvBsxD,EAAU96H,IAAWwpE,EAGzB,OAAOpkJ,GAGXswK,aAAc,SAASolC,EAAWv8C,GAC9B,IAQI+8C,EANAjkF,EAAUrmG,EAAKniC,KAAKqhI,QACpBmiC,EAASh7B,EAAQg7B,OACjBiN,EAAejoC,EAAQthI,QAAQwoK,OAC/Ba,EAAcb,EAAOloK,OACrBklN,EAAgBj8C,EAAajzF,SAC7BmvI,EAAOnpD,EAAOjmF,OAAOp5E,GAAKq/J,EAAO73I,OAAS+gM,GAAiBh9C,EAAO,GAAGx2H,IAAIvsC,SAG7Es/M,EAAU,IAAM,EAChB,IAAK,IAAI1kN,EAAI,EAAGA,EAAIgpK,EAAahpK,IAAK,CAClC,IAAIssB,EAAQ67I,EAAOnoK,GACf2xC,EAAMrlB,EAAMqlB,IAEhByzK,GAAQV,EAAU1kN,GAClBklN,EAhBWzsN,KAgBK4sN,YACZ1zK,EAAIikC,GACJqmF,EAAOr8J,QAAQ+0H,OAAOwwF,GACtBC,EACAA,EAAOzzK,EAAIvsC,SACXknB,EAAM27G,cAAgB7kH,GAEtBkJ,EAAM27G,cAAgB7kH,GAClB8lJ,EAAaxhC,QAAUwuB,IACvBgvD,EAAOjpD,EAAO73I,OAAS63I,EAAOjmF,OAAOn4E,EAAIsnN,GAE7C74L,EAAMu8G,OAAO,IAAIuxB,EAAI8qD,EAAOvzK,EAAIlsC,QAAS2/M,EAAMF,EAAME,MAEjDl8C,EAAaxhC,QAAUwuB,IACvBgvD,EAAOjpD,EAAOjmF,OAAOn4E,EAAIo+J,EAAO73I,OAAS+gM,GAE7C74L,EAAMu8G,OAAO,IAAIuxB,EAAI8qD,EAAOvzK,EAAIlsC,QAAS2/M,EAAMF,EAAME,KAGzDA,GAAQzzK,EAAIvsC,WAIpB44J,aAAc,WACV,IAAIp0C,EAAWnxH,KAGXwwL,EADMxwL,KACWkH,QAAQspL,WACzBnvD,EAFMrhI,KAEOqhI,OACbvmH,EAAQumH,EAAO75H,OAGnBo9J,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,MAElCA,KAAK6sN,gBAAkB,GAEvB,IAAK,IAAItlN,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIihI,EAAUnH,EAAO95H,GACjBi8J,EAASh7B,EAAQg7B,OACjB3vI,EAAQ20G,EAAQ30G,MAChBykG,EAAQkrC,EAAON,SACf4pD,GAAmBtkF,EAAQthI,QAAQspL,YAAc,IAAIphE,OAASohE,EAAWphE,MAE7E,GAAIv7F,EAAO,CACP,IAAIk5L,EAAgB,IAAIzgF,GAAK,CACzBzO,OAAQ,CACJzO,MAAO09F,EACP9/M,MAAOwjL,EAAWxjL,OAEtBskF,UAAW,CACP5rF,KAAMmvL,GACN1vJ,MAAOqjG,EAAQqhF,kBAIvB,GAAIh2L,EAAM3sB,QAAQ4F,WAAawsL,GAAa,CACxC,IAAIpgJ,EAAMrlB,EAAMqlB,IACZ8zK,EAAcxpD,EAAOjmF,OACrBjoE,EAAQkuJ,EAAOnpC,MAAM/B,GACrB4qC,EAAS,IAAIlpC,EAAM9gF,EAAI+jC,GAAI/jC,EAAIqkC,SAASp5E,GACxC8oN,OAAK,EAAUthN,OAAM,EAAUuhN,OAAW,EAE9C53M,EAAQkuJ,EAAOr8J,QAAQ+0H,OAAOs0D,EAAWz6C,SAAS1b,MAAM/B,GACxDy0F,EAAc3wK,OAAO9mC,EAAMlQ,EAAGkQ,EAAMnR,GAEhC0vB,EAAM27G,cAAgB7kH,GAEtBuiM,EAAW5qF,GAAa0qF,EAAa13M,EAAO4tJ,EAD5Cv3J,EAAM,IAAIquH,EAAM9gF,EAAI+jC,GAAKuzG,EAAWz6C,QAAS78F,EAAIqkC,SAASp5E,IAE1D++J,EAAS,IAAIlpC,EAAMruH,EAAIvG,EAtC3B,EAsCsCuG,EAAIxH,IACtC+oN,EAAWA,GAAYhqD,GACd99J,EAAI/B,KAAK8S,IAAI+2M,EAAS9nN,EAAG89J,EAAO99J,GAErC+rH,EAASg8F,cAAcD,EAAU1pD,EAAOjmF,OAAQimF,EAAO73I,OA1C/D,IA2CQuhM,EAAS9nN,EAAIo+J,EAAOjmF,OAAOn4E,GAC3B6nN,EAAKzpD,EAAOjmF,OAAOn4E,EAAIo+J,EAAO73I,OA5CtC,EA6CY68G,EAAQthI,QAAQwoK,OAAOzgC,QAAUinD,GAC7B+2B,EAAK/pD,EAAO99J,EACZ2nN,EAAcniF,OAAOqiF,EAAI33M,EAAMnR,GAE/B4oN,EAAcniF,OAAOt1H,EAAMlQ,EAAIsN,EAAW4C,EAAMnR,GAGpD4oN,EAAcniF,OAAOqiF,EAAI33M,EAAMnR,GAEnC4oN,EAAcniF,OAAOs4B,EAAO99J,EAAGuG,EAAIxH,KAEnC+oN,EAAS/oN,EAAIwH,EAAIxH,EACjB4oN,EAAcniF,OAAOsiF,EAAS9nN,EAAG8nN,EAAS/oN,MAI9C+oN,EAAW5qF,GAAa0qF,EAAa13M,EAAO4tJ,EAD5Cv3J,EAAM,IAAIquH,EAAM9gF,EAAIikC,GAAKqzG,EAAWz6C,QAAS78F,EAAIqkC,SAASp5E,IAE1D++J,EAAS,IAAIlpC,EAAMruH,EAAIvG,EA9D3B,EA8DsCuG,EAAIxH,IACtC+oN,EAAWA,GAAYhqD,GACd99J,EAAI/B,KAAKuV,IAAIs0M,EAAS9nN,EAAG89J,EAAO99J,GAErC+rH,EAASg8F,cAAcD,EAAU1pD,EAAOjmF,OAAQimF,EAAO73I,OAlE/D,IAmEQuhM,EAAS9nN,EAAIo+J,EAAOjmF,OAAOn4E,GAC3B6nN,EAAKzpD,EAAOjmF,OAAOn4E,EAAIo+J,EAAO73I,OApEtC,EAqEY68G,EAAQthI,QAAQwoK,OAAOzgC,QAAUinD,GAC7B+2B,EAAK/pD,EAAO99J,EACZ2nN,EAAcniF,OAAOqiF,EAAI33M,EAAMnR,GAE/B4oN,EAAcniF,OAAOt1H,EAAMlQ,EAAIsN,EAAW4C,EAAMnR,GAGpD4oN,EAAcniF,OAAOqiF,EAAI33M,EAAMnR,GAEnC4oN,EAAcniF,OAAOs4B,EAAO99J,EAAGuG,EAAIxH,KAEnC+oN,EAAS/oN,EAAIwH,EAAIxH,EACjB4oN,EAAcniF,OAAOsiF,EAAS9nN,EAAG8nN,EAAS/oN,KAIlD4oN,EAAcniF,OAAOj/H,EAAIvG,EAAGuG,EAAIxH,GAEhCgtH,EAAS07F,gBAAgBlrN,KAAKorN,GAC9B57F,EAAS+sB,OAAOnkG,OAAOgzK,OAMvCznD,aAAc,WAGV,GAFAV,EAAa78J,GAAGu9J,aAAa/6J,KAAKvK,MAE9B8pB,EAAQiM,KAAK/1B,KAAKkH,QAAQ4nC,QAAQ,SAAU5nC,GAAW,OAAOA,EAAQkmN,WAAa,CACnF,IAAIxrD,EAAY5hK,KAAK4hK,UACjByrD,EAAYrtN,KAAKk5C,IAAIqkC,SACrBq+C,EAAO57H,KAAKk+I,OAAOtiB,OACvB,IAAKA,EACD,OAGJ,IAAI0xF,EAAa1xF,EAAKH,cAElB9rF,EAAQtsC,KAAK8S,KACZk3M,EAAUlpN,EAAIy9J,EAAU1kF,KAAOmwI,EAAUlpN,EAAIy3H,EAAKhjF,OAAOz0C,IACzDy9J,EAAUxkF,GAAKiwI,EAAUlpN,IAAMmpN,EAAWnpN,EAAIkpN,EAAUlpN,IACxDkpN,EAAUjoN,EAAIw8J,EAAU3kF,KAAOowI,EAAUjoN,EAAIw2H,EAAKhjF,OAAOxzC,IACzDw8J,EAAUzkF,GAAKkwI,EAAUjoN,IAAMkoN,EAAWloN,EAAIioN,EAAUjoN,IAGzDuqC,EAAQ,GACR3vC,KAAKk+I,OAAO3qG,UAAUA,KAAY5D,MAAMA,EAAOA,EAAO,CAAE09K,EAAUjoN,EAAGioN,EAAUlpN,OAK3F2nN,gBAAiB,SAASh2M,GACtB,IAAIy3M,EAAez3M,GAAW,EAAI,EAElC,OAAO,SAAS5Q,EAAGigB,GAGf,QAFajgB,EAAEiH,OAAOq3J,OAAON,SAAW,KAAO,KACjC/9I,EAAEhZ,OAAOq3J,OAAON,SAAW,KAAO,KACtBqqD,IAIlCX,YAAa,SAASY,EAAWhqD,EAAQtmF,EAAIE,EAAInpC,GAC7C,IAAItoB,EAAS63I,EAAO73I,OAChB8hM,EAAgBjqD,EAAOjmF,OACvBymD,EAAKypF,EAAcroN,EACnB6+H,EAAKwpF,EAActpN,EACnBgB,EAAI9B,KAAK8S,IAAI9S,KAAK6T,IAAI+sH,EAAK/mD,GAAK75E,KAAK6T,IAAI+sH,EAAK7mD,IAElD,OAAIj4E,EAAIwmB,EACG6hM,EAGJxpF,EAAK3gI,KAAKo6E,KAAM9xD,EAASA,EAAWxmB,EAAIA,IAAO8uC,EAAY,GAAK,IAG3Ek5K,cAAe,SAAS9yF,EAAO98C,EAAQ5xD,GACnC,OAAOtoB,KAAKqmC,IAAI6zC,EAAOn4E,EAAIi1H,EAAMj1H,EAAG,GAAK/B,KAAKqmC,IAAI6zC,EAAOp5E,EAAIk2H,EAAMl2H,EAAG,GAAKd,KAAKqmC,IAAI/d,EAAQ,IAGhG6zK,iBAAkB,SAASnlE,EAAO3pH,GAC9B,OAAO1Q,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQ2pH,EAAM3xH,QAGvDmhN,eAAgB,SAAShuC,GACrB,OA9coB,GA8cbA,GAGX7V,UAAW,WACP,OAAOhmK,QAIf,SAASsiI,GAAaq0B,EAAII,EAAIH,EAAII,GAC9B,IAGIzgJ,EAHAm3M,GAAO12D,EAAG5xJ,EAAIwxJ,EAAGxxJ,IAAMuxJ,EAAGxyJ,EAAIyyJ,EAAGzyJ,IAAM6yJ,EAAG7yJ,EAAIyyJ,EAAGzyJ,IAAMwyJ,EAAGvxJ,EAAIwxJ,EAAGxxJ,GACjEuoN,GAAM32D,EAAG7yJ,EAAIyyJ,EAAGzyJ,IAAM4yJ,EAAG3xJ,EAAIuxJ,EAAGvxJ,IAAM4xJ,EAAG5xJ,EAAIwxJ,EAAGxxJ,IAAM2xJ,EAAG5yJ,EAAIwyJ,EAAGxyJ,GAGpE,GAAW,IAAPwpN,EAAU,CACV,IAAI5tM,EAAM2tM,EAAMC,EAEhBp3M,EAAS,IAAIyjH,EACT28B,EAAGvxJ,EAAI2a,GAAMg3I,EAAG3xJ,EAAIuxJ,EAAGvxJ,GACvBuxJ,EAAGxyJ,EAAI4b,GAAMg3I,EAAG5yJ,EAAIwyJ,EAAGxyJ,IAI/B,OAAOoS,EAGX8pJ,EAAkByqD,GAAU,CACxBtqF,WAAY,GACZgwD,WAAY,CACRxjL,MAAO,EACPoiH,MAAO,UACP2mB,QAAS,GAEbg6C,cAAe,CACXjE,QAAS,GACTpc,OAAQ,MAIhBlnK,EAAWsiN,GAASziN,UAAWoiN,IAE/BK,GAASziN,UAAU69J,aAAc,EAEjC,IAAI0nD,GAAc7c,GAAahuM,OAAO,CAClC6M,OAAQ,WACJ5P,KAAK6tN,eAAe7tN,KAAK8uC,SAG7B++K,eAAgB,SAAS/+K,GACrB,IAAIiwK,EAAcjwK,EAAO,GACrBg/K,EAAW,IAAIhD,GAAS9qN,KAAM,CAC9B8uC,OAAQA,EACRinG,QAASgpE,EAAYhpE,QACrBvV,WAAYu+E,EAAYv+E,WACxBgwD,WAAYuuB,EAAYvuB,WACxB5C,OAAQ5tL,KAAKkH,QAAQ0mL,SAGzB5tL,KAAK6uM,YAAYif,IAGrBjf,YAAa,SAASjgC,EAAOjhF,GACzBojH,GAAahpM,GAAG8mM,YAAYtkM,KAAKvK,KAAM4uK,EAAOjhF,GAC9C5zC,EAAO/5C,KAAKkH,QAAQ0mL,OAAOx5J,MAAOw6I,EAAMi8C,gBAI5CkD,GAAepE,GAAW5mN,OAAO,CACjCu9L,YAAa,WACT,IACIwpB,EADM9pN,KACckH,QAAQwoK,OAC5B77I,EAFM7zB,KAEM6zB,MACZ2vI,EAASxjK,KAAKwjK,OAAOr8J,QACrBmxH,EAAQkrC,EAAON,SAEnB,GAAIrvI,EAAO,CACP,IAAIo2L,EAAcp2L,EAAMqlB,IAAIvsC,SAC5B,GAAIm9M,EAAch9M,WAAakjF,EAAQ,CACnCwzE,EAAO73I,SAAW63I,EAAO73I,OAAS63I,EAAOP,aAAe,EAExD,IAAI+mD,EAAKxmD,EAAOnpC,MAAM/B,GAEtBzkG,EAAMu8G,OAAO,IAAIuxB,EAAIqoD,EAAG5kN,EAAG4kN,EAAG7lN,EAAI8lN,EAAc,EAAGD,EAAG5kN,EAAG4kN,EAAG7lN,SAE5DwlN,GAAW5hN,GAAGu4L,YAAY/1L,KAAKvK,QAK3CwiM,cAAe,SAASh/B,EAAQt8J,GAC5B,OAAO4iB,EAAQ26I,aAAahxJ,QAAQixJ,WAAWlB,EAAQt8J,MAI/Dm5J,EAAkB0tD,GAAc,CAC5B7mD,QAAS,CACLjkB,SAAU,gBAEdysB,OAAQ,CACJ5iK,SAAUkjF,GAEdsB,UAAW,CACP5rF,KAAMgxL,MAIdluL,EAAWulN,GAAa1lN,UAAWo3L,IAEnC,IAEIuuB,GAAalD,GAAS/nN,OAAO,CAC7B04L,SAAU,SAAS/yL,EAAO86J,EAAQ50I,GAC9B,IAAIw8L,EAAiB5iN,EAAW,GAAIomB,EAAOkgB,OAAQ,CAAE/1B,MAAO6V,EAAO7V,QAKnE,GAJA/Y,KAAKmrN,mBAAmBC,EAAgB1iN,EAAOkmB,GAE/C5uB,KAAK0qN,iBAAiBhiN,EAAO0iN,EAAgBx8L,IAEtB,IAAnBA,EAAOtiB,QAAX,CAIA,IAAIk8H,EAAU,IAAIulF,GAAarlN,EAAO86J,EAAQ4nD,GAE9CzoN,EAAEI,OAAOylI,EAAS55G,GAClB5uB,KAAK+5C,OAAOyuF,GACZxoI,KAAKqhI,OAAO1/H,KAAK6mI,KAGrB4H,OAAQ,SAASwxB,GAmBb,IAlBA,IAgBIqsD,EAdA/mN,EAAUlH,KAAKkH,QACfgyC,EAAM0oH,EAAUz6J,QAEhBmkN,EAAWjoN,KAAK8S,IAAI+iC,EAAIlsC,QAASksC,EAAIvsC,UACrC4+M,EAAeD,EAAW,EAC1BE,EAAiBF,EAAsB,IAAXA,EAC5Bx8K,EAAS5nC,EAAQ4nC,OACjBksJ,EAAclsJ,EAAOtnC,OAErBuuI,EAAU7e,EAAehwH,EAAQ6uI,QAASy1E,GAG1C0C,EAAY3C,GAFhBx1E,EAAUA,EAAUw1E,EARR,EAQ+BA,EAR/B,EAQsDx1E,GAG9Do4E,EAAoB,EAGf5mN,EAAI,EAAGA,EAAIyzL,EAAazzL,IAAK,CAClC,IAAI82L,EAAgBvvJ,EAAOvnC,GACjB,IAANA,GACIytH,EAAQqpE,EAAc4vB,YACtBA,EAAW5vB,EAAc4vB,SACzBC,GAAa7vB,EAAc4vB,UAI/Bj5F,EAAQqpE,EAAc5uL,MACtBy+M,GAAa7vB,EAAc5uL,KAE3B0+M,IAGAn5F,EAAQqpE,EAAc1lJ,SAAWpxC,IAAMyzL,EAAc,IACrDkzB,GAAa7vB,EAAc1lJ,QAI9Bq8E,EAAQi5F,KAGTC,GADAD,EAAyB,MADN1C,EAAex1E,IAAYilD,EAAc,OAKhE,IAEUrvK,EAFNs3I,EAAcgrD,EACdt1K,EAAS,EAGb34C,KAAKqrN,cAAgB,GAErB,IAAK,IAAIzpC,EAAM,EAAGA,EAAMoZ,EAAapZ,IAAO,CACxC,IAAIwsC,EAAkBt/K,EAAO8yI,GAG7Bj2J,GADAs3I,GAAetqH,GADRu+E,EAAek3F,EAAgB3+M,KAAMy+M,EAAYC,GApD7CnuN,KAuDFqrN,cAAc1pN,KAAK,CAAEshK,YAAaA,EAAat3I,OAAQA,IAChEgtB,EAASy1K,EAAgBz1K,QAAU,EACnCsqH,EAAct3I,EAGlBm/L,GAAS/iN,GAAGqoI,OAAO7lI,KAAKvK,KAAM4hK,IAGlCioD,eAAgB,SAAShuC,EAAe27B,EAAaxc,GACjD,OArFsB,GAqFfnf,EACF+Y,IAA8B4iB,EAAc,IAAMxc,EAAc,MAI7E36B,EAAkB2tD,GAAY,CAC1BxtF,WAAY,GACZgwD,WAAY,CACRxjL,MAAO,EACPoiH,MAAO,UACP2mB,QAAS,KAIjB,IAAIs4E,GAAgBT,GAAY7qN,OAAO,CACnC6M,OAAQ,WACJ5P,KAAKsuN,iBAAiBtuN,KAAK8uC,SAG/Bw/K,iBAAkB,SAASx/K,GACvB,IAAIiwK,EAAcjwK,EAAO,GACrBy/K,EAAa,IAAIP,GAAWhuN,KAAM,CAClC8uC,OAAQA,EACRinG,QAASgpE,EAAYhpE,QACrBy6C,WAAYuuB,EAAYvuB,WACxB5C,OAAQ5tL,KAAKkH,QAAQ0mL,SAGzB5tL,KAAK6uM,YAAY0f,MAMrBC,GAAoBzd,GAAahuM,OAAO,CACxCktK,WAAY,WACRjwK,KAAKq8M,sBAAwB,IAAI1W,IAGrC/1L,OAAQ,WACJ5P,KAAKqyM,YAAYryM,KAAK8uC,QACtB9uC,KAAKyuN,kBACLzuN,KAAK08M,eACL18M,KAAK0uN,mBAGTpa,UAAW,WACP,IAAItvK,EAAOhlC,KAAK86K,UACZlnH,EAAQ5uB,EAAK4uB,QACb0wI,EAAgBt/J,EAAK99B,QAAQ4O,QAAU89C,EAAMh7C,IAAMg7C,EAAMz9C,IACzDg/J,EAAOnwI,EAAK+tI,QAAQuxB,GACpB/mH,EAASv9E,KAAKgoL,UAAUjV,QAAQ,GAAGx1F,OACnC82H,EAAUrvK,EAAKkU,IAAIlJ,UACnButC,EAAOn4E,EAAI+vK,EAAKl4F,GAChBM,EAAOp5E,EAAIgxK,EAAKj4F,IAGpBl4C,EAAKorG,OAAOikE,IAGhBqa,gBAAiB,WACb,IAMI5lC,EAAU6lC,EANV1O,EAAUjgN,KAAKq8M,sBACf6D,EAAeD,EAAQz/M,QACvBijL,EAAczjL,KAAK4uN,iBAAiB,CACpC7rC,kBAAkB,EAClBnpI,QAAS,IAIT6pI,EAAY/9K,OAASwzL,IACrBpQ,EAAWh/J,EAAQm/J,qBACnB0lC,EAAmB,CAAEx4M,IAAK,GAAKyC,IAAK,KAEpCkwK,EAAWh/J,EAAQi/J,iBACnB4lC,EAAmB,CAAEx4M,IAAK,EAAGyC,IAAK,IAGtC,IAAIg7C,EAAQqsJ,EAAQz/M,MAAM4B,OAAS89M,GAAgByO,EAE/C/6J,GAASssJ,IACTtsJ,EAAMz9C,IAAM9S,KAAK8S,IAAIy9C,EAAMz9C,IAAK+pM,EAAa/pM,KAC7Cy9C,EAAMh7C,IAAMvV,KAAKuV,IAAIg7C,EAAMh7C,IAAKsnM,EAAatnM,MAGjD,IAAIkiK,EAAY,IAAIgO,EAChBl1H,EAAMz9C,IAAKy9C,EAAMh7C,IACjB6qK,EACAzjL,KAAKmlK,cAGTnlK,KAAK86K,UAAYA,EACjB96K,KAAK2uM,WAAW7zB,IAGpB24B,WAAY,WACR,IAAIxkL,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QAAQurK,SACtBqI,EAAY7rJ,EAAI6rJ,UAChBkN,EAAY/4J,EAAI+4J,UAChB9uI,EAAMjqB,EAAIiqB,IACVsyK,EApEU,IAoEOnoN,KAAK8S,IAAI+iC,EAAIlsC,QAASksC,EAAIvsC,UAC3CopI,EAAUwpB,EAAWr4J,EAAQ6uI,SAAW,GAAIy1E,GAC5C7jD,EAAazuH,EAAI/xC,QAAQk7J,MAAMtsB,GAC/Bs+D,EAAU1sC,EAAWxgK,QAEzBktM,EAAQj3H,GAAKi3H,EAAQn3H,GAAK75E,KAAK8S,IAAIk+L,EAAQrnM,QAASqnM,EAAQ1nM,UAC5D0nM,EAAQplE,MAAM04B,EAAY3yJ,EAAGg7E,GAE7B,IAAI6+H,EAAexa,EAAQltM,QAAQ+6J,OAAO,EAAGmyC,EAAQ1nM,SAAW,GAEhEq7K,EAAU53C,OAAOikE,GACjBv5B,EAAU1qC,OAAOy+E,GACjB,IAAIC,EAAah0C,EAAU/J,UAAUpkK,SAAWmuK,EAAU5hI,IAAIvsC,SAC9DmuK,EAAU1qC,OAAO0qC,EAAU5hI,IAAImpH,MAAM,CAAEj+I,IAAK0qM,KAE5C9uN,KAAKq0M,QAAUA,EACfr0M,KAAKs0M,UAAUD,IAGnByC,cAAe,WACX,OAAO92M,KAAKk5C,KAGhBs6J,aAAc,eAGdub,GAAoBvkB,GAAaznM,OAAO,CACxCy7L,UAAW,SAAS3rB,EAAOC,GACvB,IAAIk8C,EAAcn8C,EAAMt1F,OAAOp5E,EAAI2uK,EAAM51F,GACrCi4F,EAAOn7C,EAAM0nC,SAASmR,EAAMt1F,OAAQs1F,EAAMryC,WAAYwuF,GAE1D,OAAO,IAAIrtD,EAAIwT,EAAK/vK,EAAG+vK,EAAKhxK,EAAGgxK,EAAK/vK,EAAG+vK,EAAKhxK,MAIpDk8J,EAAkB0uD,GAAmB,CACjCj1K,MAAM,IAGV,IAAIm1K,GAAiB/G,GAAiBnlN,OAAO,IAI7CksN,GAAe5mN,UAAUm2L,UAAYuwB,GAAkB1mN,UAAUm2L,UAEjEn+B,EAAkB4uD,GAAgB,CAC9Bn1K,MAAM,IAGV,IAAIo1K,GAAyBvqB,GAAkB5hM,OAAO,CAClDqhM,WAAY,SAASC,GACjB,IAAI9mH,EAASv9E,KAAKmvN,mBAClB9qB,EAASz5D,OAAOrtD,EAAOn4E,EAAGm4E,EAAOp5E,IAGrCgrN,iBAAkB,WAGd,OAFgBnvN,KAAKmM,OAAOsmK,SAASuV,UACd9uI,IAAIqkC,UAI/BomH,eAAgB,WACZ,IAAIz4D,EAAWlrI,KAAK4jM,gBAEpB,IAAK14D,EAAU,CACX,IAAI3tD,EAASv9E,KAAKmvN,mBACdvqB,EAAiB,IAAI1b,GAAe,GACpCvb,EAAa3tK,KAAKqhI,SAEtBssC,EAAWhsK,KAAK47E,IAChB2tD,EAAWlrI,KAAK4jM,gBAAkBgB,EAAe5vI,QAAQ24G,IAChDt+I,MAGb,OAAO67G,KAIXkkF,GAAmB9rB,GAAYvgM,OAAO,CACtCqhM,WAAY,SAASC,GACjB,IACI9mH,EADYv9E,KAAKmM,OAAOsmK,SAASuV,UACd9uI,IAAIqkC,SACvB8xI,EAAgB,IAAIzvF,GAASuH,QAAQ,CAAE5pD,EAAOn4E,EAAGm4E,EAAOp5E,IAE5DkgM,EAASn5D,SAAS/gI,QAAQklN,GAC1BhrB,EAASn5D,SAASvpI,KAAK0tN,MAI3BC,GAAiBL,GAAelsN,OAAO,CACvCy/L,cAAe,SAAS70B,EAAY0wB,EAAe1C,GAS/C,OARa0C,EAAc3wB,MAAQ,IAAIjhK,QAGzBipL,GACA,IAAIw5B,GAAuBvhD,EAAY0wB,EAAe1C,GAEtD,IAAIyzB,GAAiBzhD,EAAY0wB,EAAe1C,IAKlEoP,mBAAoB,SAASriM,EAAOg6L,GAChC,IAAIylB,EAYJ,OAVIj0I,GAASxrE,EAAMtD,IAAMs9L,IAAkBpN,KACvC6yB,EAAe,CACX/iN,EAAGsD,EAAMtD,EACTjB,EAAGuE,EAAMvE,GAETu+L,IAAkBxvL,KAClBi1M,EAAahkN,EAAI,IAIlBgkN,GAGX5lB,oBAAqB,SAASzzJ,GAC1B,OAAOA,EAAO4zJ,eAAiBxvL,IAGnCq8M,qBAAsB,WAKlB,IAJA,IAEIzgL,EAAS9uC,KAAKkH,QAAQ4nC,OAEjBllC,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,IACnC,GALW5J,KAKEuiM,oBAAoBzzJ,EAAOllC,MAAU2rL,GAC9C,OAAO,GAKnB8M,WAAY,SAAShhE,GAKjB,GAFAA,EAAOn8G,KAAKsqM,IAERxvN,KAAKuvN,uBACL,IAAK,IAAI3lN,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAAO,CAC1C,IAAIywH,EAAQgH,EAAOz3H,GACnB,GAAIywH,EAEKnmD,GADOmmD,EAAM3xH,MACEvE,IATjBnE,KASgCuiM,oBAAoBloE,EAAMvrF,UAAYymJ,WAC9Dl0D,EAAOz3H,GAM9B,OAAOy3H,KAIf,SAASmuF,GAAUtqN,EAAGigB,GAClB,OAAOjgB,EAAEwD,MAAMtD,EAAI+f,EAAEzc,MAAMtD,EAG/B,IAAIqqN,GAAgBjB,GAAkBzrN,OAAO,CACzC0rN,gBAAiB,WACb,IAAIzmC,EAAY,IAAIl+J,EAAQ+9J,UAAU7nL,KAAKkH,QAAQ+jM,MAAOjrM,KAAKmlK,cAE/DnlK,KAAKgoL,UAAYA,EACjBhoL,KAAKgxK,MAAQgX,EACbhoL,KAAK2uM,WAAW3mB,IAGpB4mC,iBAAkB,SAAShuN,GACvB,OAAO4H,EAAW5H,EAAU,CACxB0yK,eAAgB,CAAE5tK,KAAM43J,GACxB+V,eAAgB,CAAE3tK,KAAM43J,IACzBt9J,KAAKkH,QAAQikM,QAGpBujB,gBAAiB,WACbF,GAAkBzmN,GAAG2mN,gBAAgBnkN,KAAKvK,MAC1CA,KAAKixK,MAAQjxK,KAAK86K,WAGtB+zB,YAAa,SAASjgC,EAAOjhF,GACzB3tF,KAAKq8M,sBAAsBt1J,OAAO6nH,EAAM+7B,aAExCoG,GAAa1oM,UAAUwmM,YAAYtkM,KAAKvK,KAAM4uK,EAAOjhF,IAGzD+uH,aAAc,WACV,IAAI5tK,EAAS9uC,KAAKszM,oBAAoBtzM,KAAK8uC,QACvC6+C,EAAO3tF,KAAKuxM,MAAM,GAEtBvxM,KAAK09M,gBACD5N,GAAmBhhK,EAAQ,CAAE8nJ,KAC7BjpG,GAGJ3tF,KAAKwoN,mBACD1Y,GAAmBhhK,EAAQ,CAAE+nJ,KAC7BlpG,GAGJ3tF,KAAKi9M,gBACDnN,GAAmBhhK,EAAQ,CAAE6nJ,KAC7BhpG,IAIR+vH,gBAAiB,SAAS5uK,EAAQ6+C,GAC9B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAI83M,EAAY,IAAI2P,GAAejvN,KAAM,CAAE8uC,OAAQA,IAEnD9uC,KAAK6uM,YAAYyQ,EAAW3xH,KAGhC66H,mBAAoB,SAAS15K,EAAQ6+C,GACjC,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIkoN,EAAe,IAAIX,GAAkB/uN,KAAM,CAAE8uC,OAAQA,IAEzD9uC,KAAK6uM,YAAY6gB,EAAc/hI,KAGnCsvH,gBAAiB,SAASnuK,EAAQ6+C,GAC9B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAI+3M,EAAY,IAAI+P,GAAetvN,KAAM,CAAE8uC,OAAQA,IAEnD9uC,KAAK6uM,YAAY0Q,EAAW5xH,KAGhCyqH,eAAgB,SAASxpC,EAAOjqK,EAAG07M,GAC/B,IAAIjf,EAASxyB,EAAM0xC,kBAAkB37M,GACjC01H,EAAQ,IAAIL,EAAMonE,EAAOh8L,EAAGg8L,EAAOj9L,GACnCqmI,EAASxqI,KAAKgxK,MAAM+S,SAAS1pD,GAC7BoQ,EAASzqI,KAAKixK,MAAM8S,SAAS1pD,GAElB,OAAXmQ,GAA8B,OAAXC,GACnBmkC,EAAMxkK,QAAQi2M,EAAW,CACrBx0M,QAAS2qH,EAAa7xH,GACtBS,EAAGolI,EACHrmI,EAAGsmI,KAKf2mE,iBAAkB,eAGtB/wC,EAAkBovD,GAAe,CAC7BxkB,MAAO,GACPE,MAAO,KAGX3iM,EAAWinN,GAAcpnN,UAAW8vM,IAapC,IAAIwX,GAAiBtsB,GAAUtgM,OAAO,CAClCy7L,UAAW,SAASF,EAAcC,GAC9B,IAAIywB,EAAc1wB,EAAa/gH,OAAOp5E,EAAIo6L,EAAUrhH,GAChDi4F,EAAOn7C,EAAM0nC,SAAS48B,EAAa/gH,OAAQ+gH,EAAap7B,SAAU8rD,GAEtE,OAAO,IAAIrtD,EAAIwT,EAAK/vK,EAAG+vK,EAAKhxK,EAAGgxK,EAAK/vK,EAAG+vK,EAAKhxK,IAGhD+9L,eAAgB,WAGZ,GAFAmB,GAAUt7L,GAAGm6L,eAAe33L,KAAKvK,MAE7BA,KAAKmiM,WAAaniM,KAAKmiM,UAAU36L,OAAS,EAG1C,IAFA,IAAIooN,EAvBhB,SAAyB1kF,GAErB,IADA,IAAI0kF,EAAiB,GACZhmN,EAAM,EAAGA,EAAMshI,EAAS1jI,OAAQoC,IAAO,CAC5C,IAAI4+H,EAAU0C,EAASthI,GACvBgmN,EAAepnF,EAAQmzD,UAAYi0B,EAAepnF,EAAQmzD,WAAa,GACvEi0B,EAAepnF,EAAQmzD,UAAUh6L,KAAK6mI,GAG1C,OAAOonF,EAesBC,CAAgB7vN,KAAKmiM,WAEjCv4L,EAAM,EAAGA,EAAMgmN,EAAepoN,OAAQoC,IAAO,CAClD,IAAIshI,EAAW0kF,EAAehmN,GAC9B,GAAIshI,GAAYA,EAAS1jI,OAAS,EAAG,CACjC,IAAIg9L,EAAat5D,EAAS,GAAGyiC,WAAW,GACpClhC,EAActqG,EAAK+oG,GACnBu5D,EAAYtiK,EAAKsqG,EAAYkhC,YAC7BmiD,EAA6C,IAA1BtrB,EAAW1kB,WAC9BiwC,EAAkBtrB,EAAU3kB,aAAe2kB,EAAUvoB,gBAAkB,EACvE4zC,GAAoBC,GACpB5tL,EAAK+oG,GAAUyiC,WAAWhsK,KAAK6iM,MAOnDhC,cAAe,SAAS70B,EAAY0wB,EAAe1C,GAC/C,IASInzD,EAAU,IATF61D,EAAc5xL,QAGZipL,GACEqM,GAEAd,IAGYtzB,EAAY0wB,EAAe1C,GACnD+G,EAAgB1iM,KAAKuiM,oBAAoBlE,GAM7C,OAJI1wB,EAAWnmK,SAAW62L,EAAcxwL,KAAKrG,QAAUk7L,IAAkBpN,KACrE9sD,EAAQthI,QAAQ0lI,QAAS,GAGtBpE,KAIf63B,EAAkBsvD,GAAgB,CAC9B71K,MAAM,EACN+kJ,aAAa,IAGjB,IAAImxB,GAAyBrrB,GAAkB5hM,OAAO,CAClDqhM,WAAY,eAGZ6rB,GAAmB3sB,GAAYvgM,OAAO,CACtCqhM,WAAY,eAGZ8rB,GAAiBP,GAAe5sN,OAAO,CACvCy/L,cAAe,SAAS70B,EAAY0wB,EAAe1C,EAAU4H,GACzD,IAEIuB,EACAtB,EACAh7D,EAJA4zD,EAAYp8L,KAAKkH,QAAQk1L,UACzB3vL,GAAS4xL,EAAc3wB,MAAQ,IAAIjhK,MAkBvC,OAbI2vL,GAAaT,EAAW,GAAK4H,IAC7BC,EAAcD,EAAY51B,WAAW/mK,MAAM,GAC3Ck+L,EAAkBvB,GAGlB92L,IAAUipL,IACVltD,EAAU,IAAIwnF,GAAuBriD,EAAY0wB,EAAe1C,EAAUmJ,EAAiBtB,IACnFt8L,QAAQ0lI,QAAS,GAEzB+gC,EAAWhsK,KAAKgsK,EAAW,IAC3BnlC,EAAU,IAAIynF,GAAiBtiD,EAAY0wB,EAAe1C,EAAUmJ,EAAiBtB,IAGlFh7D,GAGX+5D,oBAAqB,SAASzzJ,GAC1B,OAAOA,EAAO4zJ,eAAiBxvL,MAInCi9M,GAAepC,GAAahrN,OAAO,CACnCoF,KAAM,SAASO,EAAOxB,GAClB6mN,GAAahmN,GAAGI,KAAKoC,KAAKvK,KAAM0I,EAAO,KAAMxB,MAIrDm5J,EAAkB8vD,GAAc,CAC5BjpD,QAAS,CACLjkB,SAAU,QAEdysB,OAAQ,CACJlyF,SAAU,MAIlB,IAAI4yI,GAAqBxrD,EAAa7hK,OAAO,CACzCoF,KAAM,SAASjB,GACX09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKsB,QAAU4F,EAAQq2I,IAAM5N,GAAiBruI,IAGlD8uI,OAAQ,SAASozB,GACb,IACIt8J,EADMlH,KACQkH,QACdiuC,EAFMn1C,KAESm1C,SACftkC,EAAM3J,EAAQ2J,IACd0+H,EAAUroI,EAAQqoI,QAClBz0H,EAAQq6B,EAAS3tC,OACjBm/L,EAAQ7rL,EAAQjK,EAAO0+H,GAAWz0H,EAAQ,GAC1C4sK,EAAYlkB,EAAOlrC,MAAQquE,EAC3BruE,EAAQkrC,EAAOhjC,WAAaknD,GAAa72K,EAAM,GAEnD7Q,KAAKsB,QAAQ6zC,GAAU,SAAUzR,GAC7B,IAAI2sL,EAAa7sD,EAAOr8J,QACxBkpN,EAAW7vF,WAAalI,EACxB+3F,EAAW/3F,MAAQovD,EAEfhkJ,EAAM8/H,SACN6sD,EAAW1kM,OAAS+X,EAAM8/H,OAAO73I,QAGrC+X,EAAM0sG,OAAOigF,GACb3sL,EAAM8/H,OAAS6sD,EAEf/3F,GAASovD,EAAaA,EAAYn4C,QAK9C8wB,EAAkB+vD,GAAoB,CAClCv/M,IAAK,EACL0+H,QAAS,IAGb,IAAI+gF,GAAmB1rD,EAAa7hK,OAAO,CACvCqtI,OAAQ,SAASozB,GACb,IACI1tJ,EADM9V,KACQkH,QAAQ4O,QACtBq/B,EAFMn1C,KAESm1C,SACfkwH,EAAgBlwH,EAAS3tC,OACzB0C,EAAQ4L,EAAUuvJ,EAAgB,EAAI,EACtC3yH,EAAO58B,GAAW,EAAI,EAE1B9V,KAAKk5C,IAAM,IAAIyoH,EAEf,IAAK,IAAIp6J,EAAI2C,EAAO3C,GAAK,GAAKA,EAAI89J,EAAe99J,GAAKmrC,EAAM,CACxD,IAAI69K,EAAcp7K,EAAS5tC,GAAGi8J,OAC9B+sD,EAAY/vF,WAAagjC,EAAOhjC,WAChC+vF,EAAYj4F,MAAQkrC,EAAOlrC,UAKnCk4F,GAAgBzpB,GAAShkM,OAAO,CAChC64L,UAAW,WACP,OAAOu0B,IAGXnpB,YAAa,WACT,OAAOopB,IAGXnpB,UAAW,WACP,OAAOqpB,IAGXhyB,aAAc,SAAS5Q,EAAc5N,GACjC,OAAO4N,EAAa3a,QAAQ+M,IAGhC0e,UAAW,SAASF,EAAcC,GAC9B,IAAIppB,EAAOmpB,EAAan3L,QACpBhD,EAAIm6L,EAAa/gH,OAAOp5E,EAK5B,OAHAgxK,EAAKxpJ,OAASxnB,EAAIo6L,EAAUrhH,GAC5Bi4F,EAAKlS,YAAc9+J,EAAIo6L,EAAUnhH,GAE1B+3F,GAGXwpB,YAAa,SAAStkE,EAAOmkE,GACzBnkE,EAAMmpC,OAASg7B,EACfnkE,EAAM+V,UAGVq1B,gBAAiB,WACbzlK,KAAKkH,QAAQoqF,UAAU/T,OAASv9E,KAAKk5C,IAAI2pH,SAAStlF,SAClDwpH,GAASh/L,GAAG09J,gBAAgBl7J,KAAKvK,SAIzCwwN,GAAcnoN,UAAU+nI,OAAS6qD,GAAiB5yL,UAAU+nI,OAE5DiwB,EAAkBmwD,GAAe,CAC7B12K,MAAM,EACN+kJ,aAAa,EACbvtG,UAAW,CACP5rF,KAAM,SAId,IAAI+qN,GAAgBjC,GAAkBzrN,OAAO,CACzC0rN,gBAAiB,WACb,IAAI/gC,EAAe,IAAI5jK,EAAQ88J,kBAAkB5mL,KAAKkH,QAAQwmL,aAAc1tL,KAAKmlK,cAEjFnlK,KAAKgoL,UAAY0F,EACjB1tL,KAAK0tL,aAAeA,EACpB1tL,KAAK2uM,WAAWjhB,GAChB1tL,KAAKw8M,sBACLx8M,KAAKy8M,4BAGTmS,iBAAkB,SAAShuN,GAevB,OAdIZ,KAAK0wN,eACLloN,EAAW5H,EAAU,CACjB0yK,eAAgB,CAAE5tK,KAAM43J,GACxB+V,eAAgB,CAAE3tK,KAAM43J,KAI5Bt9J,KAAK2wN,eACLnoN,EAAW5H,EAAU,CACjBmiL,kBAAkB,EAClBrT,OAAQ,CAAEh/J,OAAQ,QAInBlI,EAAW5H,EAAUZ,KAAKkH,QAAQ4zK,YAG7C0hC,oBAAqB,WAEjBL,GAAoB9zM,UAAUm0M,oBAAoBjyM,KAAKvK,KAAMA,KAAKuxM,QAGtEkL,yBAA0B,WACtBN,GAAoB9zM,UAAUo0M,yBAAyBlyM,KAAKvK,KAAMA,KAAKuxM,QAG3E2M,aAAc,SAAS7f,GAEnB,OAAOA,GAGXqe,aAAc,WACV,IAAI5tK,EAAS9uC,KAAKszM,oBAAoBtzM,KAAK8uC,QACvC6+C,EAAO3tF,KAAKuxM,MAAM,GAEtBvxM,KAAKi9M,gBACDnN,GAAmBhhK,EAAQ,CAAEgoJ,KAC7BnpG,GAGJ3tF,KAAK09M,gBACD5N,GAAmBhhK,EAAQ,CAAEkoJ,KAC7BrpG,GAGJ3tF,KAAKm9M,eACDrN,GAAmBhhK,EAAQ,CAAEioJ,KAC7BppG,IAIRijI,aAAc,SAAS9hL,GACnB,IAAI5nC,EAAU,CAAE4nC,OAAQA,GACpBiwK,EAAcjwK,EAAO,GACzB,GAAIiwK,EAAa,CACb,IAAIwJ,EAAiBvoN,KAAKszM,oBAAoBxkK,GAC1CojG,EAAQ6sE,EAAY7sE,MACxBhrI,EAAQk1L,UAAYlqD,GAASq2E,EAAe/gN,OAAS,EACrDN,EAAQ60L,aAAe7pD,GAAwB,SAAfA,EAAMxsI,MAAmB6iN,EAAe/gN,OAAS,EAE7EN,EAAQ60L,eACR/7L,KAAK2wN,eAAgB,GAI7B,OAAOzpN,GAGX+1M,gBAAiB,SAASnuK,EAAQ6+C,GAC9B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAI+3M,EAAY,IAAI2Q,GAAelwN,KAAMA,KAAK4wN,aAAa9hL,IAC3D9uC,KAAK6uM,YAAY0Q,EAAW5xH,KAGhC+vH,gBAAiB,SAAS5uK,EAAQ6+C,GAC9B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAI83M,EAAY,IAAIqQ,GAAe3vN,KAAMA,KAAK4wN,aAAa9hL,IAC3D9uC,KAAK6uM,YAAYyQ,EAAW3xH,KAGhCwvH,eAAgB,SAASruK,EAAQ6+C,GAC7B,GAAsB,IAAlB7+C,EAAOtnC,OAAX,CAIA,IAAIu3M,EAAcjwK,EAAO,GACrB5nC,EAAUlH,KAAK4wN,aAAa9hL,GAChC5nC,EAAQ2J,IAAMkuM,EAAYluM,IAC1B3J,EAAQqoI,QAAUwvE,EAAYxvE,QAE9B,IAAI4vE,EAAW,IAAIqR,GAAcxwN,KAAMkH,GACvClH,KAAK6uM,YAAYsQ,EAAUxxH,GAE3B3tF,KAAK0wN,eAAgB,IAGzBx1B,mBAAoB,WAChB,OAAOl7L,KAAK0tL,cAGhB0qB,eAAgB,SAASxpC,EAAOjqK,EAAG07M,GAC/B,IAAIjf,EAASxyB,EAAM0xC,kBAAkB37M,GACjC01H,EAAQ,IAAIL,EAAMonE,EAAOh8L,EAAGg8L,EAAOj9L,GACnC2iK,EAAW9mK,KAAK0tL,aAAa3R,YAAY1hD,GACzC3xH,EAAQ1I,KAAK86K,UAAUiJ,SAAS1pD,GAEnB,OAAbysC,GAA+B,OAAVp+J,GACrBkmK,EAAMxkK,QAAQi2M,EAAW,CACrBx0M,QAAS2qH,EAAa7xH,GACtBmiK,SAAUA,EACVp+J,MAAOA,KAKnB0oM,iBAAkB,eAGtB5oM,EAAWioN,GAAcpoN,UAAW8vM,GAAqB,CACrDtJ,YAAasN,GAAoB9zM,UAAUwmM,YAC3CoP,gBAAiB9B,GAAoB9zM,UAAU41M,gBAC/CI,mBAAoBlC,GAAoB9zM,UAAUg2M,qBAGtDh+C,EAAkBowD,GAAe,CAC7B/iC,aAAc,CACVvT,WAAY,IAEhBW,UAAW,KAGf,IAAI+1C,GAAgBjsD,EAAa7hK,OAAO,CACpCoF,KAAM,SAASO,EAAOxB,EAASkkN,GAC3BxmD,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAK0I,MAAQA,EACb1I,KAAKkH,QAAQ6R,MAAQqyM,EAAeryM,OAGxCq3H,OAAQ,SAAS0gF,GACb,IAAIzvF,EAASrhI,KAAKqhI,OACdxtG,EAAQ7zB,KAAKm1C,SAAS,GAE1Bn1C,KAAKk5C,IAAM,IAAIyoH,EAAItgC,EAAO,GAAGj8H,EAAGi8H,EAAO,GAAGl9H,EAAGk9H,EAAO,GAAGj8H,EAAGi8H,EAAO,GAAGl9H,GAEhE0vB,GACAA,EAAMu8G,OAAO,IAAIuxB,EAAImvD,EAAS7zI,GAAIokD,EAAO,GAAGl9H,EAAG2sN,EAAS3zI,GAAIkkD,EAAO,GAAGl9H,KAI9EohK,aAAc,WACV,IAGIrnB,EAHA/sB,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QAGnB09J,EAAa78J,GAAGw9J,aAAah7J,KAAKvK,OAG9Bk+I,EADAh3I,EAAQg3I,OACCh3I,EAAQg3I,OAAO,CACpB4oB,SAAU9mK,KAAK8mK,SACfzyI,SAAUr0B,KAAKq0B,SACf3rB,MAAO1I,KAAK0I,MACZomC,OAAQ9uC,KAAK8uC,OACb7iB,WAAYjsB,KAAKisB,WACjBo1G,OAAQrhI,KAAKqhI,OACbn6H,QAASA,EACToD,OAAQtK,KAAKglK,YACbO,aAAc,WAAc,OAAOp0C,EAAS4/F,gBAGvC/wN,KAAK+wN,eAId/wN,KAAKk+I,OAAOnkG,OAAOmkG,IAI3B6yE,WAAY,WACR,IAAI7pN,EAAUlH,KAAKkH,QACfugK,EAASvgK,EAAQugK,OAarB,OAZWn7B,GAAKrQ,WAAWj8H,KAAKqhI,OAAQ,CACpCpuG,KAAM,CACFm8F,MAAOloH,EAAQkoH,MACfx4F,QAAS1vB,EAAQ0vB,SAErBinG,OAAQ,CACJzO,MAAOq4C,EAAOr4C,MACdx4F,QAAS6wI,EAAO7wI,QAChB5pB,MAAOy6J,EAAOz6J,SAEnBs4C,SAKPkhH,gBAAiB,SAAS/5J,GACtB,OAAO6/H,GAAKrQ,WAAWj8H,KAAKqhI,OAAQ50H,IAGxCg0L,gBAAiB,WACb,OAAOzgM,KAAKk+I,OAAO/oG,SAAS,IAGhC0xH,oBAAqB,WACjB,IAAIz3H,EAAOk9F,GAAKrQ,WAAWj8H,KAAKqhI,QAAQ/7E,QAExC,MAAO,CACHp+C,QAASlH,KAAKkH,QACdkoC,KAAMA,IAIduxJ,cAAe,WACX,IAAIznJ,EAAMl5C,KAAKk5C,IACf,MAAO,CACHmhF,MAAO,IAAIL,EAAM9gF,EAAIqkC,SAASn4E,EAAG8zC,EAAIgkC,IACrC+xD,MAAO,CACH38F,WAAY,SACZF,SAAU,SAKtB6tJ,YAAa,SAASvvL,GAElB,OADY1Q,KACC49L,MAAM4B,iBADPx/L,KAC+B0Q,MAInD2vJ,EAAkBwwD,GAAe,CAC7BzhG,MAAOmvC,EACPkJ,OAAQ,CACJz6J,MAAO,KAIfxE,EAAWqoN,GAAcxoN,UAAWo3L,IAEpC,IAAIuxB,GAAcpsD,EAAa7hK,OAAO,CAClCoF,KAAM,SAASsqK,EAAUvrK,GACrB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKyyK,SAAWA,EAChBzyK,KAAKqhI,OAAS,GACdrhI,KAAK0vK,OAAS,GACd1vK,KAAK6qN,YAAc,GACnB7qN,KAAK4P,UAGT4vL,iBAAkB,SAASnlE,EAAO3pH,GAC9B,OAAO1Q,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAO2pH,EAAM3xH,QAGtDkH,OAAQ,WACJ,IAAIuhH,EAAWnxH,KAGXkH,EADMlH,KACQkH,QACdipL,EAFMnwL,KAEayyK,SAASvrK,QAAQipL,kBAAmC,IAAjBA,IAA2BA,EAAe,IACpG,IAAIrhJ,EAAS5nC,EAAQ4nC,OAAO,GACxBjhC,EAAOihC,EAAOjhC,KAElB,GAAKA,EAQL,IAJA,IAAI4iI,EAAQm/D,GAAa9gK,GACrB8X,EAAQ6pF,EAAM7pF,MACdy6E,EAASoP,EAAMpP,OAEV95H,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAAK,CACpC,IAAIygK,EAAY3mC,EAAO95H,GAEvB,GAAKygK,EAAL,CAIA,IAAIp5I,EAASo5I,EAAUp5I,OAElB1lB,EAAW4lC,EAAOsgF,SACnBtgF,EAAOsgF,MAAQxgG,EAAOwgG,OAAS+gE,EAAa5oL,EAAI4oL,EAAa3oL,SAGjEonB,EAASpmB,EAAW,CAChBuQ,MAAOxR,EACPq2L,MAAOzsE,EACPriF,OAAQA,EACRza,SAAUxmB,EAAKtG,GACf0kB,WAAY+7I,EAAUt/J,MAAQk+C,GAC/Bh4B,EAAQ,CAAEtiB,QAAS07J,EAAU17J,UAEhC,IAAI5D,EAAQs/J,EAAUwqB,YAAY9pL,MAC9B8/H,EAAUrX,EAASqxE,cAAc95L,EAAOkmB,GACxCiF,EAAQs9F,EAAS6wD,YAAYt5K,EAAOkmB,GAEpC45G,GAAW30G,GACX20G,EAAQzuF,OAAOlmB,MAK3Bs3L,mBAAoB,SAASjkN,EAASwB,EAAOkmB,GACzC,IAAIkgB,EAASlgB,EAAOkgB,OAEpB8rJ,GAAY1zL,EAAS,CACjBwB,MAAOA,EACPomC,OAAQA,EACRza,SAAUzF,EAAOyF,SACjBtb,MAAO6V,EAAO7V,OACf,CAAEnY,SAAUkuC,EAAOivJ,UAAWhD,SAAU,CAAE,OAAQ,UAAW,WAAY,SAAU,aAG1FyH,cAAe,SAAS95L,EAAOkmB,GAC3B,IAAI0sK,EAAgB9yL,EAAW,GAAIomB,EAAOkgB,QAK1C,GAJA9uC,KAAKmrN,mBAAmB7vB,EAAe5yL,EAAOkmB,GAE9C5uB,KAAK0qN,iBAAiBhiN,EAAO4yL,EAAe1sK,IAErB,IAAnBA,EAAOtiB,QAAmB,CAE1B,IAAIk8H,EAAU,IAAIqoF,GAAcnoN,EAAO4yL,EAAe1sK,GAMtD,OALAjsB,EAAEI,OAAOylI,EAAS55G,GAElB5uB,KAAK+5C,OAAOyuF,GACZxoI,KAAKqhI,OAAO1/H,KAAK6mI,GAEVA,IAIfw5C,YAAa,SAASt5K,EAAOkmB,GACzB,IAAIkgB,EAASlgB,EAAOkgB,OAChBza,EAAWzF,EAAOyF,SAClBq7I,EAASlnK,EAAW,GAAIxI,KAAKkH,QAAQwoK,OAAQ5gI,EAAO4gI,QACpD9uI,EAAOl4B,EAEX,GAAIgnK,EAAOpjK,QAAS,CAChB,IAAI6mK,EAAgBzT,EAAYgQ,GAC5B7hK,EAAO,CACPwmB,SAAUA,EACV3rB,MAAOA,EACPujB,WAAY2C,EAAO3C,WACnB66I,SAAUl4I,EAAOk4I,SACjBh4H,OAAQA,GAERqkI,EACAvyI,EAAOuyI,EAActlK,GACd6hK,EAAOh/J,SACdkwB,EAAO5gC,KAAKyyK,SAAStN,aAAaz0J,OAAO48J,KAAKoC,EAAOh/J,OAAQkwB,IAG5D8uI,EAAOtgD,QACRsgD,EAAOtgD,MAAQtlG,EAAQ+/J,cAAc/6I,EAAOsgF,OACvCsgD,EAAOzd,aACRyd,EAAOzd,WAAanjH,EAAOsgF,QAInCpvH,KAAKmrN,mBAAmBz7C,EAAQhnK,EAAOkmB,GACvC,IAAIwnI,EAAU,IAAI4U,EAAQpqI,EAAMp4B,EAAW,CACvC6uJ,OAAQqY,EAAO5iK,UAChB4iK,GAAS7hK,GAIZ,OAFA7N,KAAK0vK,OAAO/tK,KAAKy0J,GAEVA,IAIf66D,aAAc,WAIV,IAHA,IAAIvhD,EAAS1vK,KAAK0vK,OACd35B,EAAU,CAAElqH,KAAM,EAAGC,MAAO,GAEvBvkB,EAAI,EAAGA,EAAImoK,EAAOloK,OAAQD,IAAK,CACpC,IACI0nI,EADQygC,EAAOnoK,GACDL,QAAQ+nI,MAC1B,GAAIA,IAAUj/C,EAAQ,CAClB,IAAIhjF,EAAQ0iK,EAAOnoK,GAAG2xC,IAAIlsC,QAEtBiiI,IAAUxkH,EACVsrH,EAAQlqH,KAAOxoB,KAAKuV,IAAIm9H,EAAQlqH,KAAM7e,GAEtC+oI,EAAQjqH,MAAQzoB,KAAKuV,IAAIm9H,EAAQjqH,MAAO9e,IAKpD,OAAO+oI,GAGXm7E,mBAAoB,SAASh4K,EAAKlsC,EAAOmkN,GAQrC,IAPA,IACIjqN,EADMlH,KACQkH,QACdgkI,EAFMlrI,KAESqhI,OACfvmH,EAAQowH,EAAS1jI,OACjB4pN,EAAelmF,EAAS,GACxBmmF,EAAaD,EAERxnN,EAAM,EAAGA,EAAMshI,EAAS1jI,OAAQoC,IACjCshI,EAASthI,GAAKqiB,WAAaolM,EAAWplM,aACtColM,EAAanmF,EAASthI,IAQ9B,IAJA,IAAI0nN,EAAiBF,EAAanlM,WAAaolM,EAAWplM,WAAcjf,EACpEukN,GAAkBvkN,EAAQskN,GAAiB,EAC3CE,EAAiB,EAEZt8C,EAAQ,EAAGA,EAAQp6J,EAAOo6J,IAAS,CACxC,IAAIjpJ,EAAai/G,EAASgqC,GAAOjpJ,WAC7BwlM,EAAcvmF,EAASgqC,EAAQ,GAC/Bw8C,EAAkBD,EAAcA,EAAYxlM,WAAaA,EACzDo1G,EAAS6J,EAASgqC,GAAO7zC,OAAS,GAClC10H,EAAUzF,EAAqB,cAAKiqN,EAAcllM,EAAeklM,EAAcr2M,EAC/EiC,OAAS,EAQbA,EAAS25G,EAHL35G,EAHCkP,GAGSjf,EAAQskN,GAAiBI,EAAiBzlM,IAAe,EAF1DylM,EAAiB,EAAI1kN,EAAQ,EAKd,EAAGA,GAE/Bq0H,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKs0I,EAAgBr4K,EAAIgkC,GAAKs0I,IAChEnwF,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKjwE,EAAQukN,EAAgBr4K,EAAIgkC,GAAKs0I,IACxEnwF,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKjwE,EAAQ+P,EAAQm8B,EAAIgkC,GAAKvwE,EAAS6kN,IACzEnwF,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKlgE,EAAQm8B,EAAIgkC,GAAKvwE,EAAS6kN,IAEjED,EAAiBx0M,EACjBy0M,GAAkB7kN,EAASzF,EAAQyqN,eACnCL,EAAgB56F,EAAW1pH,EAAQ,EAAI+P,EAAQ,EAAG/P,KAI1D4kN,oBAAqB,SAAS14K,EAAKlsC,EAAOmkN,GAYtC,IAXA,IACIjqN,EADMlH,KACQkH,QACdgkI,EAFMlrI,KAESqhI,OACfvmH,EAAQowH,EAAS1jI,OACjBqqN,EAAkB3qN,EAAQ4qN,WAAa,EACvCA,EAAYD,EAAkB3qN,EAAQ4qN,UAAY9kN,EAAQA,EAC1DukN,EAAiBM,EAAkB,GAAK7kN,EAAQA,EAAQ9F,EAAQ4qN,WAAa,EAE7EC,IADeF,EAAkB7kN,EAAQA,EAAyB,EAAjBukN,GACnBO,GAAa,EAC3CN,EAAiB,EAEZ5nN,EAAM,EAAGA,EAAMkR,EAAOlR,IAAO,CAClC,IAAIy3H,EAAS6J,EAASthI,GAAKy3H,OAAS,GAChCp1G,EAAai/G,EAASthI,GAAKqiB,WAC3BlP,EAAU7V,EAAqB,cAAK6qN,EAAc9lM,EAAe8lM,EAAcj3M,EAC/EnO,EAAUzF,EAAqB,cAAKiqN,EAAcllM,EAAeklM,EAAcr2M,EAEnFumH,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKs0I,EAAgBr4K,EAAIgkC,GAAKs0I,IAChEnwF,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKjwE,EAAQukN,EAAgBr4K,EAAIgkC,GAAKs0I,IACxEnwF,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKjwE,EAAQukN,EAAiBx0M,EAAQm8B,EAAIgkC,GAAKvwE,EAAS6kN,IAC1FnwF,EAAO1/H,KAAK,IAAIsvL,GAAc/3I,EAAI+jC,GAAKs0I,EAAiBx0M,EAAOm8B,EAAIgkC,GAAKvwE,EAAS6kN,IACjFD,GAAkBx0M,EAClBy0M,GAAkB7kN,EAASzF,EAAQyqN,iBAI3CvhF,OAAQ,SAAS0gF,GACb,IAAIzvF,EAASrhI,KAAKqhI,OACdvmH,EAAQumH,EAAO75H,OAEnB,GAAKsT,EAAL,CAIA,IAAI5T,EAAUlH,KAAKkH,QACfgyC,EAAM43K,EAAS3pN,QAAQk7J,MAAMriK,KAAKixN,gBAClCE,EAAcj4K,EAAIvsC,SAAWzF,EAAQyqN,gBAAkB72M,EAAQ,GAC/D9N,EAAQksC,EAAIlsC,QAEZ9F,EAAQ8qN,aACRhyN,KAAKkxN,mBAAmBh4K,EAAKlsC,EAAOmkN,GAEpCnxN,KAAK4xN,oBAAoB14K,EAAKlsC,EAAOmkN,GAGzC,IAAK,IAAIvnN,EAAM,EAAGA,EAAMkR,EAAOlR,IAC3By3H,EAAOz3H,GAAKwmI,OAAO0gF,OAK/BzwD,EAAkB2wD,GAAa,CAC3Bc,UAAW,GACX9kN,MAAO,IACPglN,cAAc,EACdC,eAAe,EACfN,eAAgB,EAChBjiD,OAAQ,CACJpjK,SAAS,EACT2iI,MAAOj/C,EACPljF,SAAUkjF,EACVp2C,OAAQ,KAIhBpxC,EAAWwoN,GAAY3oN,UAAWoiN,IAElC,IAEIyH,GAAelB,GAAYjuN,OAAO,CAClCoF,KAAM,SAASsqK,EAAUvrK,GACrBA,EAAQ8qN,cAAe,EACvB9qN,EAAQ4qN,UALK,IAObd,GAAYjpN,GAAGI,KAAKoC,KAAKvK,KAAMyyK,EAAUvrK,MAI7CirN,GAAiBphB,GAAahuM,OAAO,CACrC6M,OAAQ,WACJ5P,KAAKoyN,YAAYpB,GAAalhB,GAAmB9vM,KAAK8uC,OAAQ,CAAEsnJ,MAChEp2L,KAAKoyN,YAAYF,GAAcpiB,GAAmB9vM,KAAK8uC,OAAQ,CAAEunJ,OAGrE+7B,YAAa,SAASC,EAAWvjL,GAC7B,IAAIiwK,EAAcjwK,EAAO,GACzB,GAAKiwK,EAAL,CAIA,IAAInwC,EAAQ,IAAIyjD,EAAUryN,KAAM,CAC5B8uC,OAAQA,EACR8+I,OAAQ5tL,KAAKkH,QAAQ0mL,OACrBkkC,UAAW/S,EAAY+S,UACvBG,cAAelT,EAAYkT,cAC3BD,aAAcjT,EAAYiT,aAC1BL,eAAgB5S,EAAY4S,eAC5BprD,UAAWw4C,EAAYx4C,YAG3BvmK,KAAK6uM,YAAYjgC,KAGrBigC,YAAa,SAASjgC,EAAOjhF,GACzBojH,GAAahpM,GAAG8mM,YAAYtkM,KAAKvK,KAAM4uK,EAAOjhF,GAC9C5zC,EAAO/5C,KAAKkH,QAAQ0mL,OAAOx5J,MAAOw6I,EAAMi8C,gBAqB5CyH,GAAe1tD,EAAa7hK,OAAO,CACnCoF,KAAM,SAASO,EAAOxB,GAClB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,MAE1BA,KAAKkH,QAAUA,EACflH,KAAKovH,MAAQloH,EAAQkoH,OAASmvC,EAC9Bv+J,KAAK0I,MAAQA,GAGjBkH,OAAQ,WACA5P,KAAK8/L,YAIT9/L,KAAK8/L,WAAY,EAEjB9/L,KAAK+/L,eACL//L,KAAKgiL,cACLhiL,KAAK2/L,eAGT3d,YAAa,WACT,IACItS,EADU1vK,KAAKkH,QACEwoK,OAErB,GAAIA,EAAOpjK,QAAS,CAChB,IAEI0zL,EAFAh4B,EAAYhoK,KAAKgoK,YACjBmL,EAAgBzT,EAAYgQ,GAE5B6iD,EAAa7iD,EAAOtgD,MAGpB4wE,EADA7sB,EACYA,EAAcnL,GAEdhoK,KAAKigM,YAAYvwB,EAAOh/J,QAGnC6hN,IACDA,EAAazoM,EAAQ+/J,cAAc7pL,KAAKovH,QAG5CpvH,KAAK6zB,MAAQ,IAAIm3I,EAAQg1B,EACrBx3L,EAAW,CACPymI,MAAOj/C,EACPqnE,OAAQrnE,EACRr3C,OAAQ,CACJ9sB,KAAM,EACNC,MAAO,GAEX8tB,OAAQs9E,EAAew4C,EAAO91H,OAAQ55C,KAAK8uC,OAAO8K,SAEtD81H,EAAQ,CACJtgD,MAAOmjG,IAEXvqD,GAEJhoK,KAAK+5C,OAAO/5C,KAAK6zB,SAIzBosK,YAAa,SAASvvL,GAClB,OAAO1Q,KAAK49L,MAAM4B,iBAAiBx/L,KAAM0Q,IAG7C0/H,OAAQ,SAASwxB,GACb5hK,KAAK4P,SAEL,IAAIikB,EAAQ7zB,KAAK6zB,MAEjB7zB,KAAKk5C,IAAM0oH,EAEP/tI,GACAA,EAAMu8G,OAAOpwI,KAAKmgM,aAGlBngM,KAAKqxK,MACLrxK,KAAKqxK,KAAKjhC,OAAOwxB,GAGrB5hK,KAAKsoD,OAAO8nF,OAAOpwI,KAAKmgM,cAG5BA,UAAW,WACP,IACIrU,EADU9rL,KAAKkH,QACG4kL,QAClBrkB,EAASqkB,EAAQrkB,OACjBp8E,EAAOrrF,KAAKk5C,IAAI2pH,SAEhB2vD,EADOt7F,EAAe40D,EAAQpmL,KAAM,UACbsrL,EAAiB3yB,aACxCmJ,EAActwC,EAAeuwC,EAAOz6J,MAAOwlN,EAAc,EAAI,GAC7DC,EAAkBpvN,KAAK0S,MAAMyxJ,EAAc,GAE/C,GAAIskB,EAAQr8K,KAAM,CACd,IAAI8tE,EAAS8N,EAAK9N,SAClB8N,EAAK57E,KAAKzC,MAAQq+E,EAAK57E,KAAK9C,OAASm/K,EAAQr8K,KAC7C47E,EAAKzyC,OAAOxzC,EAAI/B,KAAK0S,MAAMwnE,EAAOn4E,EAAIimF,EAAK57E,KAAKzC,MAAQ,GACxDq+E,EAAKzyC,OAAOz0C,EAAId,KAAK0S,MAAMwnE,EAAOp5E,EAAIknF,EAAK57E,KAAK9C,OAAS,GAQ7D,OALA0+E,EAAK57E,KAAKzC,OAASw6J,EACnBn8E,EAAK57E,KAAK9C,QAAU66J,EACpBn8E,EAAKzyC,OAAOz0C,GAAKsuN,EAAkB,GACnCpnI,EAAKzyC,OAAOxzC,GAAKqtN,EAAkB,GAE5B3oM,EAAQghJ,UAAUz/E,IAG7B60G,aAAc,WACV,IAAIh5L,EAAUlH,KAAKkH,QAEfugK,EADUvgK,EAAQ4kL,QACDrkB,OACjB7wI,EAAUsgG,EAAeuwC,EAAO7wI,QAAS1vB,EAAQ0vB,SAErD,MAAO,CACHw4F,MAAOq4C,EAAOr4C,OAASpvH,KAAKovH,MAC5BpiH,MAAOy6J,EAAOz6J,MACd4pB,QAASA,EACTolH,SAAUyrB,EAAOzrB,WAIzB+jD,aAAc,WACV,IAAI74L,EAAUlH,KAAKkH,QACf47M,EAAgB57M,EAAQ4kL,QACxBxjI,EAAS,IAAIy/G,EAAa,CAC1BriK,KAAMwxH,EAAe4rF,EAAcp9M,KAAM,QACzCsH,MAAO81M,EAAcrzM,KACrB9C,OAAQm2M,EAAcrzM,KACtBkqC,SAAUmpK,EAAcnpK,SACxBs4G,WAAYjyJ,KAAKovH,MACjBq4C,OAAQznK,KAAKkgM,eACbh4B,aAAc46C,EAAc56C,aAC5BtxI,QAAS52B,KAAK8uC,OAAOlY,SAAW1vB,EAAQ0vB,QACxCgjB,OAAQs9E,EAAehwH,EAAQ0yC,OAAQ55C,KAAK8uC,OAAO8K,QACnD03C,UAAWpqF,EAAQoqF,UACnB4sD,OAAQh3I,EAAQg3I,QACjB,CACC7pH,SAAUr0B,KAAKq0B,SACf3rB,MAAO1I,KAAK0I,MACZomC,OAAQ9uC,KAAK8uC,OACbg4H,SAAU9mK,KAAK8mK,WAGnB9mK,KAAKsoD,OAASA,EACdtoD,KAAK+5C,OAAOuO,IAGhBk+G,gBAAiB,SAAS/5J,GACtB,IAAIvF,EAAUlH,KAAKkH,QACf47M,EAAgB9iN,KAAKkH,QAAQq/J,UAAUulB,SAAW9rL,KAAKkH,QAAQ4kL,QAE/DvlB,EAAY,IAAIwB,EAAa,CAC7BriK,KAAMwxH,EAAe4rF,EAAcp9M,KAAM,QACzCsH,MAAO81M,EAAcrzM,KACrB9C,OAAQm2M,EAAcrzM,KACtBkqC,SAAUmpK,EAAcnpK,SACxBs4G,WAAY6wD,EAAc1zF,OAASpvH,KAAKovH,MACxCq4C,OAAQznK,KAAKkgM,eACbh4B,aAAc46C,EAAc56C,aAC5BtxI,QAAS52B,KAAK8uC,OAAOlY,SAAW1vB,EAAQ0vB,QACxCgjB,OAAQs9E,EAAehwH,EAAQ0yC,OAAQ55C,KAAK8uC,OAAO8K,UAGvD2sH,EAAUn2B,OAAOpwI,KAAKmgM,aACtB,IAAIjiD,EAASqoB,EAAU0B,aAKvB,OAHA/pB,EAAOh3I,QAAQ+rB,KAAOxmB,EAAMwmB,KAC5BirH,EAAOh3I,QAAQ22H,OAASpxH,EAAMoxH,OAEvBqgB,GAGXuiD,gBAAiB,WACb,OAAOzgM,KAAKomM,YAGhBv/B,oBAAqB,WACjB,MAAO,CACH3/J,QAASlH,KAAKkH,QACdmkF,KAAMrrF,KAAKk5C,IAAI2pH,SACf3kB,OAAQl+I,KAAKomM,aAIrBzF,cAAe,WACX,IAAI90K,EAAO7rB,KAAKk5C,IAAIqkC,SAASn4E,EACzBgf,EAAMpkB,KAAKk5C,IAAIgkC,GAhjYN,EAkjYb,MAAO,CACHm9C,MAAO,IAAIL,EAAMnuG,EAAMzH,GACvB6qH,MAAO,CACH38F,WAAY09C,EACZ59C,SAAU89C,KAKtB6wG,YAAa,SAAS7nJ,GAClB,OAAOl5C,KAAKk5C,IAAIqpH,SAASrpH,IAG7B8nJ,eAAgB,aAIhBh5B,UAAW,WACP,MAAO,CACH5iK,EAAGpF,KAAK0I,MAAMtD,EACdjB,EAAGnE,KAAK0I,MAAMvE,EACduE,MAAO1I,KAAK0I,MAAMA,MAClB2rB,SAAUr0B,KAAKq0B,SACfya,OAAQ9uC,KAAK8uC,WAKzBtmC,EAAW8pN,GAAajqN,UAAWo3L,IACnCj3L,EAAW8pN,GAAajqN,UAAWq3L,IAEnC4yB,GAAajqN,UAAUzH,SAAW,CAC9BkrL,QAAS,CACLpmL,KAAM,OACNwiK,aAAc,EACdT,OAAQ,CACJr4C,MAAO,gBAGf2mB,QAAS,CAAE3xH,IAAK,GAChBsrJ,OAAQ,CACJpjK,SAAS,EACTypI,QAAS,GAEbn/G,QAAS,EACTu6I,MAAO,CACHt9I,MAAO,KAIf,IAAI6+L,GAAe9tD,EAAa7hK,OAAO,CACnCoF,KAAM,SAASsqK,EAAUvrK,GACrB09J,EAAa78J,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAEhClH,KAAKyyK,SAAWA,EAChBzyK,KAAKmlK,aAAesN,EAAStN,aAC7BnlK,KAAKyqM,cAELzqM,KAAK4P,UAGT66L,YAAa,WACTzqM,KAAKqhI,OAAS,GACdrhI,KAAKs7L,cAAgB,GACrBt7L,KAAKu2K,WAAa,CAAEpgK,IAAKm/G,EAAW18G,IAAKolJ,GACzCh+J,KAAKu7L,YAAc,IAGvB3rL,OAAQ,WACJ5P,KAAK2yN,WACL3yN,KAAKw7L,mBAAmBx7L,KAAKy7L,SAASjyL,KAAKxJ,QAG/C2yN,SAAU,WAMN,IALA,IAAIxhG,EAAWnxH,KAGX8uC,EADM9uC,KACOkH,QAAQ4nC,OAEhB6sJ,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAG7C,IAFA,IAAI0C,EAAgBvvJ,EAAO6sJ,GAElB9I,EAAU,EAAGA,EAAUwL,EAAcxwL,KAAKrG,OAAQqrL,IAAW,CAClE,IACIL,EADQrhE,EAASguE,WAAWd,EAAe1C,EAAU9I,GACjCL,YACpBx9D,EAAQw9D,EAAY9pL,QAAgC,OAAtB8pL,EAAY9pL,QAC1CyoH,EAASolD,WAAWpgK,IAAM9S,KAAK8S,IAAIg7G,EAASolD,WAAWpgK,IAAKq8K,EAAY9pL,OACxEyoH,EAASolD,WAAW39J,IAAMvV,KAAKuV,IAAIu4G,EAASolD,WAAW39J,IAAK45K,EAAY9pL,UAMxF+yL,SAAU,SAAS/yL,EAAOkmB,GACtB,IAAIyrG,EACA3xH,GAASssH,EAAQtsH,EAAMA,QAA0B,OAAhBA,EAAMA,QACvC2xH,EAAQr6H,KAAK29L,YAAYj1L,EAAOkmB,KAE5BjsB,EAAEI,OAAOs3H,EAAOzrG,GAIxB5uB,KAAKqhI,OAAO1/H,KAAK04H,IAGrByjE,iBAAkB,SAAS52L,EAASwB,EAAOkmB,GACvC,IAAIkgB,EAASlgB,EAAOkgB,OAChB6sJ,EAAW/sK,EAAO+sK,SAClB1oI,EAAQ,CACRryD,SAAUkuC,EAAOivJ,UACjBhD,SAAU,CACN,OAAQ,UAAW,UAAW,WAC9B,SAAU,SAAU,2BAIxBiD,EAASh+L,KAAKu7L,YAAYI,GACzB3mE,EAAQgpE,KACTh+L,KAAKu7L,YAAYI,GAAYqC,EAASpD,GAAY1zL,EAAS,GAAI+rD,GAAO,IAG1E,IAAIyoI,EAAex0L,EAYnB,OAXI82L,GAEApD,GADAc,EAAelzL,EAAW,GAAItB,GACJ,CACtBwB,MAAOA,EACPomC,OAAQA,EACRza,SAAUzF,EAAOyF,SACjBle,IAAKnW,KAAKu2K,WAAWpgK,IACrByC,IAAK5Y,KAAKu2K,WAAW39J,KACtBq6C,GAGAyoI,GAGXE,UAAW,WACP,OAAO02B,IAGX52B,aAAc,SAAS5sJ,EAAQ6sJ,GAC3B,IAAIz0L,EAAUlH,KAAKs7L,cAAcK,GACjC,IAAKz0L,EAAS,CACV,IAAItG,EAAWZ,KAAK47L,YAAYvzL,UAAUzH,SAC1CZ,KAAKs7L,cAAcK,GAAYz0L,EAAUsB,EAAW,GAAI5H,EAAU,CAC9DkrL,QAAS,CACLl1J,QAASkY,EAAOlY,SAEpBulI,QAAS,CACLzrJ,OAAQ1Q,KAAKkH,QAAQi1J,QAAQzrJ,QAEjCg/J,OAAQ,CACJh/J,OAAQ1Q,KAAKkH,QAAQwoK,OAAOh/J,SAEjCo+B,GAGP,OAAO5nC,GAGXy2L,YAAa,SAASj1L,EAAOkmB,GACzB,IAAIkgB,EAASlgB,EAAOkgB,OAChB4sJ,EAAe17L,KAAK07L,aAAa5sJ,EAAQlgB,EAAO+sK,UAChDvsE,EAAQxgG,EAAOwgG,OAAStgF,EAAOsgF,MAInC,GAFAssE,EAAe17L,KAAK89L,iBAAiBpC,EAAchzL,EAAOkmB,GAEtD1lB,EAAW4lC,EAAOsgF,OAClBA,EAAQssE,EAAatsE,WAClB,GAA4B,IAAxBpvH,KAAKu2K,WAAW39J,IAAW,CAClC,IAAI+2B,EAtXC,SAAUy/E,EAAOwjG,QACH,IAAvBA,IAAiCA,EAAqB,KAE1D,IAAIpsB,EAAY7lM,MAAMqvH,WAAWZ,GAC7BryG,EAAS,EAAI61M,EAEjB,OAAO,SAAUlqN,GACb,IAAImqN,EAAMrsB,EAAU/1E,QAChB78D,EAAQ,IAAMi/J,EAAIniG,EAClB2J,EAAQt9G,EAASrU,EAGrB,OAFAmqN,EAAIniG,GAAKrtH,KAAK8S,IAAIkkH,EAAQzmE,EAAOA,GAE1Bi/J,EAAIjjG,SA0WKkjG,CAAW1jG,GACvBA,EAAQz/E,EAAMjnC,EAAMA,MAAQ1I,KAAKu2K,WAAW39J,KAGhD,IAAIyhH,EAAQ,IAAIi4F,GAAa5pN,EAAOgzL,GAKpC,OAJArhE,EAAMjL,MAAQA,EAEdpvH,KAAK+5C,OAAOsgF,GAELA,GAGXkwE,WAAY,SAASz7J,GACjB,IAAIk8J,EAAYl8J,EAAOm8J,MACnBC,EAAYp8J,EAAOq8J,MACnB14B,EAAWzyK,KAAKyyK,SAChBw4B,EAAQD,EAAYv4B,EAAS64B,WAAWN,GAAav4B,EAASzB,MAC9Dm6B,EAAQD,EAAYz4B,EAAS84B,WAAWL,GAAaz4B,EAASxB,MAElE,IAAKg6B,EACD,MAAM,IAAIx6L,MAAM,qCAAuCu6L,GAG3D,IAAKG,EACD,MAAM,IAAI16L,MAAM,qCAAuCy6L,GAG3D,MAAO,CAAED,MAAOA,EAAOE,MAAOA,IAGlC/6D,OAAQ,SAASwxB,GACb,IAAIzwC,EAAWnxH,KAEXo+L,EAAcp+L,KAAKqhI,OACnB2zC,GAASh1K,KAAKkH,QAAQ4yC,KACtB+4I,EAAU,EAEd7yL,KAAKw7L,oBAAmB,SAAU9yL,EAAOkmB,GACrC,IAAIyrG,EAAQ+jE,EAAYvL,KACpB5jK,EAAMkiG,EAASo5E,WAAW37K,EAAOkgB,QACjCm8J,EAAQh8K,EAAIg8K,MACZE,EAAQl8K,EAAIk8K,MACZ4nB,EAAS9nB,EAAMpvB,cAAcnzK,EAAMtD,GACnC4tN,EAAS7nB,EAAMtvB,cAAcnzK,EAAMvE,GACnC0uK,EAAQo4B,EAAMl4B,QAAQggD,EAAQA,EAAQ/9C,GACtClC,EAAQq4B,EAAMp4B,QAAQigD,EAAQA,EAAQh+C,GAE1C,GAAI36C,EACA,GAAIw4C,GAASC,EAAO,CAChB,IAAI0rB,EAAYrtE,EAASqtE,UAAU3rB,EAAOC,GAC1Cz4C,EAAM+V,OAAOouD,QAEbnkE,EAAM/tH,SAAU,KAK5BtM,KAAKk5C,IAAM0oH,GAGf48B,UAAW,SAAS3rB,EAAOC,GACvB,OAAO,IAAInR,EAAIkR,EAAM51F,GAAI61F,EAAM51F,GAAI21F,EAAM11F,GAAI21F,EAAM11F,KAGvDo+G,mBAAoB,SAASxyK,GAMzB,IALA,IAAImoG,EAAWnxH,KAGX8uC,EADM9uC,KACOkH,QAAQ4nC,OAEhB6sJ,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAQ7C,IAPA,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvBlrD,EAAQtf,EAASo5E,WAAWlM,GAC5B4M,EAAQx6D,EAAMw6D,MACdE,EAAQ16D,EAAM06D,MACd8nB,EAAShoB,EAAM/tB,sBACfg2C,EAAS/nB,EAAMjuB,sBAEV2V,EAAU,EAAGA,EAAUwL,EAAcxwL,KAAKrG,OAAQqrL,IAAW,CAClE,IAAIsgC,EAAQhiG,EAASguE,WAAWd,EAAe1C,EAAU9I,GACrDnqL,EAAQyqN,EAAM3gC,YACd5jK,EAASukM,EAAMvkM,OACfwkM,EAASnoB,EAAMjvB,WAAWtzK,EAAMtD,GAChCiuN,EAASloB,EAAMnvB,WAAWtzK,EAAMvE,GAChCmvN,EAAML,EAAO98M,KAAOi9M,GAAUA,GAAUH,EAAOr6M,IAC/C26M,EAAML,EAAO/8M,KAAOk9M,GAAUA,GAAUH,EAAOt6M,IAE/C06M,GAAOC,GACPvqM,EAAStgB,EAAOF,EAAW,CACvBqqL,QAASA,EACT/jJ,OAAQuvJ,EACR1C,SAAUA,EACVtnK,SAAUgqK,EAAcxwL,KAAKglL,GAC7B+K,MAAOzsE,GACRviG,MAMnB4wK,iBAAkB,SAASnlE,EAAO3pH,GAC9B,IAAIhI,EAAQ2xH,EAAM3xH,MAClB,OAAO1I,KAAKmlK,aAAaz0J,OAAO48J,KAAK58J,EAAQhI,EAAMtD,EAAGsD,EAAMvE,EAAGuE,EAAMA,QAGzE06L,gBAAiB,WAGb,IAFA,IAAI/hE,EAASrhI,KAAKqhI,OACd9qH,EAAS,GACJ3M,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IACnC2M,EAAO5U,MAAM0/H,EAAOz3H,IAAQ,IAAI0+C,QAEpC,OAAO/xC,KAGf8pJ,EAAkBqyD,GAAc,CAC5B5jL,OAAQ,GACRqtH,QAAS,CACLzrJ,OAAQ,iBAEZg/J,OAAQ,CACJh/J,OAAQ,OAEZopC,MAAM,IAEVtxC,EAAWkqN,GAAarqN,UAAW,CAC/B82L,WAAYlE,GAAiB5yL,UAAU82L,aAG3C,IAAIq0B,GAAkBziB,GAAahuM,OAAO,CACtCktK,WAAY,WACRjwK,KAAKsrM,WAAa,GAClBtrM,KAAKurM,WAAa,IAGtB37L,OAAQ,SAAS2hM,QACC,IAAVA,IAAoBA,EAAQvxM,KAAKuxM,OAErCvxM,KAAKyzN,iBACLzzN,KAAK2oN,WAAWpX,GAChBvxM,KAAK08M,aAAanL,GAClBvxM,KAAK0zN,oBAGTD,eAAgB,WAKZ,IAJA,IAEI3kL,EAAS9uC,KAAK29M,WAAa39M,KAAK8uC,OAE3BvnC,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CAUpC,IATA,IAAI82L,EAAgBvvJ,EAAOvnC,GACvBsG,EAAOwwL,EAAcxwL,MAAQ,GAC7BohB,EAPOjvB,KAOQuqM,WAAWlM,GAC1B4M,EAAQh8K,EAAIg8K,MACZE,EAAQl8K,EAAIk8K,MAEZwoB,EAAc7pM,EAAQggK,cAAcmhB,EAAM9wB,YAAc,IACxDy5C,EAAc9pM,EAAQggK,cAAcqhB,EAAMhxB,YAAc,IAEnD+oC,EAAa,EAAGA,EAAar1M,EAAKrG,OAAQ07M,IAAc,CAC7D,IAAIzyE,EAAQ0hD,GAAa1+K,QAAQm/K,UAAUyL,EAAe6kB,GAAY1wB,YAClEptL,EAAIqrI,EAAMrrI,EACVjB,EAAIssI,EAAMtsI,EAETwvN,EAAY1yD,IAAI77J,IACjBuuN,EAAY1mN,IAAI7H,GAGfwuN,EAAY3yD,IAAI98J,IACjByvN,EAAY3mN,IAAI9I,GAIxB8mM,EAAM9wB,WAAaw5C,EAAY76M,SAC/BqyL,EAAMhxB,WAAay5C,EAAY96M,WAIvC4jM,aAAc,SAASnL,GAKnB,IAJA,IAAIpgF,EAAWnxH,KAEXozM,EAAepzM,KAAKmzM,oBAEf5rM,EAAI,EAAGA,EAAIgqM,EAAM/pM,OAAQD,IAAK,CACnC,IAAIomF,EAAO4jH,EAAMhqM,GACbq1M,EAAaxJ,EAAazlH,EAAKzmF,QAAQ9E,MAAQ,YAAc,GACjE+uH,EAASkhF,YAAYuK,GACrB,IAAI2L,EAAiBp3F,EAASmiF,oBAAoBsJ,GAE7C2L,GAILp3F,EAAS0iG,mBACL/jB,GAAmByY,EAAgB,CAAEjyB,KACrC3oG,KAKZkmI,mBAAoB,SAAS/kL,EAAQ6+C,GACjC,IAAIihF,EAAQ,IAAI8jD,GAAa1yN,KAAM,CAC/B8uC,OAAQA,IAGZ9uC,KAAK6uM,YAAYjgC,EAAOjhF,IAG5B0lH,eAAgB,SAASvkK,GACrB,IAAI5nC,EAAUlH,KAAKkH,QACf8jM,EAAYl8J,EAAOm8J,MACnB2d,EAAe,GAAGvrM,OAAOnW,EAAQ+jM,OACjCA,EAAQ/sK,EAAK0qL,GAAc,SAAS1jN,GAAK,OAAOA,EAAE9C,OAAS4oM,KAAc,GACzEE,EAAYp8J,EAAOq8J,MACnB0d,EAAe,GAAGxrM,OAAOnW,EAAQikM,OACjCA,EAAQjtK,EAAK2qL,GAAc,SAAS3jN,GAAK,OAAOA,EAAE9C,OAAS8oM,KAAc,GAEzE2T,GADQ33M,EAAQqqM,OAAS,CAAE,KACH,GAAGnvM,MAAQ,UAGvC,OAFgB6oM,GAAS,IAAIt9G,OAASw9G,GAAS,IAAIx9G,MAAQkxH,GAK/DtU,WAAY,SAASz7J,GACjB,IAAIm8J,EACAE,EAEAjkM,EAAUlH,KAAKkH,QAEf0hN,EAAe,GAAGvrM,OAAOnW,EAAQ+jM,OACjCD,EAAYl8J,EAAOm8J,MAEnBA,EADAD,EACQ4d,EAAa7yL,MAAK,SAAUiP,GAAQ,OAAOA,EAAK5iC,OAAS4oM,KAEzD4d,EAAa,GAGzB,IAAIC,EAAe,GAAGxrM,OAAOnW,EAAQikM,OACjCD,EAAYp8J,EAAOq8J,MAOvB,GALIA,EADAD,EACQ2d,EAAa9yL,MAAK,SAAUiP,GAAQ,OAAOA,EAAK5iC,OAAS8oM,KAEzD2d,EAAa,IAGpB5d,EACD,MAAM,IAAIx6L,MAAM,qCAAuCu6L,GAG3D,IAAKG,EACD,MAAM,IAAI16L,MAAM,qCAAuCy6L,GAG3D,MAAO,CAAED,MAAOA,EAAOE,MAAOA,IAGlCuoB,iBAAkB,WAEd,IADA,IAAI9gD,EAAO5yK,KAAK4yK,KACPrrK,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAC7BqrK,EAAKrrK,GAAG4oK,gBAIhB24C,aAAc,SAAS5hN,EAASkrC,EAAU2sJ,GActC,IAbA,IAwBIgqB,EAxBApsB,EAAWz1L,EAAQ9E,KACnB4mN,EAAY52K,EAAWpyC,KAAKurM,WAAavrM,KAAKsrM,WAC9C7nB,EAAc9gL,EAAEI,OAAO,CACvBo0K,kBAAmB,GACpBjwK,EAAS,CACRkrC,SAAUA,EACVt8B,QAAUs8B,GAAYpyC,KAAKmlK,aAAa5nB,KAAQr2I,EAAQ4O,QAAU5O,EAAQ4O,QAC1EmhK,WAAW,IAEX68C,EAAgBrwC,EAAYtJ,WAAasJ,EAAYtJ,WAAW,GAAK,KACrE+uC,EAAc,CAAEzlC,EAAYttK,IAAKstK,EAAY7qK,IAAKk7M,GAClDhlL,EAAS9uC,KAAK8uC,OAET6sJ,EAAW,EAAGA,EAAW7sJ,EAAOtnC,OAAQm0L,IAAY,CACzD,IAAI0C,EAAgBvvJ,EAAO6sJ,GACvBwtB,EAAiB9qB,EAAcjsJ,EAAW,QAAU,SACxD,GAAK+2K,IAAmB1lC,EAAYrhL,MAAwB,IAAd28L,IAAoBoqB,EAAiB,CAC/E,IAAIC,EAAkBj3B,GAAa1+K,QAAQm/K,UAAUyL,EAAe,GAAG7L,YACvE02B,EAAYvnN,KAAKynN,EAAgBh3K,EAAW,IAAM,MAElD,OAMR,IAAK,IAAI7qC,EAAI,EAAGA,EAAI2hN,EAAY1hN,OAAQD,IACpC,GAAI2hN,EAAY3hN,aAAc6G,KAAM,CAChC26M,GAAe,EACf,MAWR,IAAI/jL,EAAO,IANP6qK,GAAiBpsB,EAAY/9K,KAAMi4J,KAAW8lB,EAAY/9K,MAAQqjN,EACvDj/L,EAAQk2J,iBAERhG,GAGSyJ,EAAazjL,KAAKmlK,cAG1C,GAFAngI,EAAK+5J,UAAYA,EAEbpC,EAAU,CACV,GAAIqsB,EAAUrsB,GACV,MAAM,IAAIlsL,OAAQ2hC,EAAW,IAAM,KAAO,mBAAqBuqJ,EAAW,uBAE9EqsB,EAAUrsB,GAAY33J,EAM1B,OAHAhlC,KAAK2uM,WAAW3pK,GAChBA,EAAKm4I,gBAEEn4I,GAGX2jL,WAAY,SAASpX,GASjB,IARA,IAAIpgF,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfmiN,EAAe,GAAGhsM,OAAOnW,EAAQ+jM,OACjC4H,EAAQ,GACRyW,EAAe,GAAGjsM,OAAOnW,EAAQikM,OACjC2H,EAAQ,GAEHlpM,EAAM,EAAGA,EAAMy/M,EAAa7hN,OAAQoC,IAAO,CAChD,IAAIm0M,EAAW5sF,EAAS2gF,SAASuX,EAAaz/M,GAAK+jF,MAC/Ct4D,EAAQ0oL,EAAUxM,IAClBsB,EAAMlxM,KAAKwvH,EAAS23F,aAAaO,EAAaz/M,IAAM,EAAOA,IAInE,IAAK,IAAIsrK,EAAQ,EAAGA,EAAQo0C,EAAa9hN,OAAQ0tK,IAAS,CACtD,IAAIq0C,EAAap4F,EAAS2gF,SAASwX,EAAap0C,GAAOvnF,MACnDt4D,EAAQk0L,EAAYhY,IACpBuB,EAAMnxM,KAAKwvH,EAAS23F,aAAaQ,EAAap0C,IAAQ,EAAMA,IAIpEl1K,KAAKgxK,MAAQhxK,KAAKgxK,OAAS6hC,EAAM,GACjC7yM,KAAKixK,MAAQjxK,KAAKixK,OAAS6hC,EAAM,IAGrChE,WAAY,SAAS9pK,GACjB,IAAI23J,EAAW33J,EAAK99B,QAAQ9E,KAE5B2uM,GAAahpM,GAAG+mM,WAAWvkM,KAAKvK,KAAMglC,GAElCA,EAAK99B,QAAQkrC,gBACNpyC,KAAKurM,WAAW5O,UAEhB38L,KAAKsrM,WAAW3O,GAGvB33J,IAAShlC,KAAKgxK,cACPhxK,KAAKgxK,MAGZhsI,IAAShlC,KAAKixK,cACPjxK,KAAKixK,OAIpBmnC,eAAgB,SAASxpC,EAAOjqK,EAAG07M,GAQ/B,IAPA,IAAIjf,EAASxyB,EAAM0xC,kBAAkB37M,GACjC01H,EAAQ,IAAIL,EAAMonE,EAAOh8L,EAAGg8L,EAAOj9L,GACnC6qM,EAAUhvM,KAAK4yK,KACfprK,EAASwnM,EAAQxnM,OACjBgiN,EAAU,GACVC,EAAU,GAELliN,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIy9B,EAAOgqK,EAAQznM,GAEnBkoM,GADazqK,EAAK99B,QAAQkrC,SAAWq3K,EAAUD,EACvBxkL,EAAK+2I,YAAY1hD,IAGzCmvF,EAAQhiN,OAAS,GAAKiiN,EAAQjiN,OAAS,GACvConK,EAAMxkK,QAAQi2M,EAAW,CACrBx0M,QAAS2qH,EAAa7xH,GACtBgkB,cAAehkB,EACfS,EAAG+qM,GAAkBqZ,GACrBrlN,EAAGgsM,GAAkBsZ,MAKjCjJ,kBAAmB,SAASx7K,EAAM99B,GAC9B,IAAIkrC,EAAWpN,EAAK99B,QAAQkrC,SACxBwgI,EAAO5yK,KAAK4yM,UAAU5yM,KAAKuxM,OAC3Bx4L,GAASq5B,EAAWwgI,EAAKzuK,EAAIyuK,EAAKxtK,GAAGuQ,QAAQqvB,GAEjD+uL,GAAoB/zN,KAAKkH,QAAS6R,EAAOq5B,EAAUlrC,GACnD6sN,GAAoB/zN,KAAKkxM,gBAAiBn4L,EAAOq5B,EAAUlrC,IAG/DwqM,iBAAkB,SAAS1sK,GAEvB,OAAOriC,EAAEI,OAAO,GAAIiiC,EAAK99B,QAAQkpL,UAAW,CAAEx2I,OAAQ,OAI9D,SAASm6K,GAAoBtT,EAAe1hB,EAAW3sJ,EAAUlrC,GAC7D,IAAIu8K,EAAe,GAAGpmK,OAAO+0B,EAAWquK,EAActV,MAAQsV,EAAcxV,OAAQlM,GACpFv2L,EAAWi7K,EAAav8K,GAG5Bm5J,EAAkBmzD,GAAiB,CAC/BvoB,MAAO,GACPE,MAAO,KAGX3iM,EAAWgrN,GAAgBnrN,UAAW8vM,IAEtC,IAAI6b,GAAQ,QACRC,GAAQ,QAERC,GAAM,MACNC,GAAM,MACNC,GAAY,WAIhB7P,GAAgB9wM,QAAQwjB,SAASklL,GAAqB,CAClDtmB,GAAKK,GAAQM,GAAMiB,GAAe7B,GAAM0B,GACxCrB,GAAaQ,GAAMT,GAAQwB,GAAiB1B,GAAUyB,GACtDJ,GAAcD,GAAWS,GAAWpB,GAAsBU,GAAYS,KAG1E6sB,GAAgB9wM,QAAQwjB,SAASmxL,GAAY,CACzChxB,GAASC,GAActB,KAG3BwuB,GAAgB9wM,QAAQwjB,SAAS22L,GAAa,CAAEl3B,KAChD6tB,GAAgB9wM,QAAQwjB,SAASo3L,GAAe,CAAEl4B,KAClDouB,GAAgB9wM,QAAQwjB,SAASk7L,GAAgB,CAAE/7B,GAAQC,KAE3DkuB,GAAgB9wM,QAAQwjB,SAASw4L,GAAe,CAAE94B,GAAYC,GAAYC,KAC1E0tB,GAAgB9wM,QAAQwjB,SAASw5L,GAAe,CAAE35B,GAAYC,GAAcC,KAE5EutB,GAAgB9wM,QAAQwjB,SAASu8L,GAAiB,CAAEl9B,KAEpDnE,GAAa1+K,QAAQwjB,SACjB,CAAE4+J,GAAKK,GAAQM,GAAMiB,GAAe7B,GAAM0B,IAC1C,CAAEtpH,GAAS,CAAEmrH,GAAU66B,GAAOI,GAAWp/B,GAAiBC,GAAkByE,KAGhFvH,GAAa1+K,QAAQwjB,SACjB,CAAEkgK,GAAcD,GAAWD,GAAYS,IACvC,CAjCO,OAKF,MA4BS,CAAEyB,GAAU66B,GAAOI,GAAW16B,KAGhDvH,GAAa1+K,QAAQwjB,SACjB,CAAE0gK,GAAWpB,IACb,CAAEvoH,GAAS,CAAEmrH,GAAU66B,GAAOI,GAlCd,UAkCwC16B,KAG5DvH,GAAa1+K,QAAQwjB,SAAS,CAAE0/J,GAAYC,GAAYC,IAAiB,CAAExxL,EAAG2P,GAAK,CAAEg/M,GAAOt6B,KAC5FvH,GAAa1+K,QAAQwjB,SAAS,CAAE6/J,GAAYC,GAAcC,IAAc,CAAEhpH,GAAS,CAAEgmJ,GAAOt6B,KAE5FvH,GAAa1+K,QAAQwjB,SACjB,CAAEm/J,GAAQC,IACV,CAAEroH,GAAS,CAAEmrH,GAAU66B,GAAO,kBAAmB,UAAWt6B,KAGhE2f,GAAkB5lM,QAAQwjB,SACtB,CAAE4+J,GAAKK,GAAQM,GAAMiB,GAAe7B,GAAM0B,GAAeK,GAAWpB,IACpE,CAAE7tL,MAAOwrN,GAAK9kG,MAAO6kG,GAAOp2B,SAAUo2B,GAAOI,SAAUF,GAAKG,UAAWJ,KAG3E7a,GAAkB5lM,QAAQwjB,SACtB,CAAEkgK,GAAcD,GAAWD,GAAYS,IACvC,CAAEv5J,KAAMg2L,GAAK/1L,GAAI81L,GAAK9kG,MAAO6kG,GAAOp2B,SAAUo2B,KAGlD5a,GAAkB5lM,QAAQwjB,SACtB,CAAE6/J,GAAYC,GAAcC,IAC5B,CAAEtuL,MAAOwrN,GAAK9kG,MAAO6kG,KAGzB9hC,GAAa1+K,QAAQwjB,SACjB,CAAEmgK,GAASC,GAActB,IACzB,CAAE1wL,EAAG2P,GAAK,CAAEg/M,GAAOI,GAAWl/B,GAAmBC,GAAoBC,GAAmBC,KAG5FlD,GAAa1+K,QAAQwjB,SACjB,CAAE8+J,IAAU,CAAE1wL,EAAG2P,EAAG,QAAU,CAAEg/M,GAAO76B,GAAUi7B,KAGrDjiC,GAAa1+K,QAAQwjB,SACjB,CAAEq/J,IACF,CAAEjxL,EAAG2P,EAAGg5D,GAAS,CAAEgmJ,GAAOI,KAG9BjiC,GAAa1+K,QAAQwjB,SACjB,CAAEg/J,GAAaQ,IACf,CAAE,OAAQ,OAAQ,MAAO,SAAW,CAAE0C,GAAU66B,GAAO,YAAaI,KAGxE/a,GAAkB5lM,QAAQwjB,SACtB,CAAEg/J,GAAaQ,IACf,CAAEllG,KAAM2iI,GAAK/pC,KAAM+pC,GAAKp+F,IAAKq+F,GAAK7uK,MAAO4uK,GACvC9kG,MAAO6kG,GAAO3oC,UAAW2oC,GAAOp2B,SAAUo2B,KAGhD9hC,GAAa1+K,QAAQwjB,SACjB,CAAE6+J,GAAUyB,IACZ,CAAE,QAAS,KAAM,SAAU,KAAM,QAAS,OAAQ,YAAc,CAAE4B,GAAU66B,GAAOI,GAAW16B,KAGlG2f,GAAkB5lM,QAAQwjB,SACtB,CAAE6+J,GAAUyB,IACZ,CAAE57K,MAAOu4M,GAAKjrB,GAAIirB,GAAKzoC,OAAQyoC,GAAKhrB,GAAIgrB,GAAKt1C,MAAOs1C,GAAK1oC,KAAM0oC,GAAKpqB,SAAUmqB,GAC5E7kG,MAAO6kG,GAAOp2B,SAAUo2B,KAG9B9hC,GAAa1+K,QAAQwjB,SACjB,CAAE++J,GAAQwB,IACV,CAAE,UAAW,UAAY,CAAE2B,GAAU66B,GAAO,kBAAmBI,GAAW16B,KAG9E2f,GAAkB5lM,QAAQwjB,SACtB,CAAE++J,GAAQwB,IACV,CAAE/jL,QAASygN,GAAK5sN,OAAQ4sN,GAAK9kG,MAAO6kG,GAAOp2B,SAAUo2B,KAGzD9hC,GAAa1+K,QAAQwjB,SACjB,CAAEy/J,GAAKP,IACP,CAAEnoH,GAAS,CAAEmrH,GAAU66B,GAAO,UAAW,kBAAmB,UAAWt6B,KAG3E,IAAI66B,GAAa,CAAEp7B,GAAUnrH,EAAO3oE,EAAG2P,GAOnCw/M,GAAQ5sN,EAAM7E,OAAO,CACrBoF,KAAM,SAAS0D,EAASu3K,EAAaqxC,EAAc54L,GAC/C,IAAIs1F,EAAWnxH,UACC,IAAZ67B,IAAsBA,EAAU,IAEpC77B,KAAKi0H,UAAY,GACjBj0H,KAAKm0H,YAAYt4F,EAAQy4F,UACzBt0H,KAAKmlK,aAAe,IAAI8J,EAASN,aAAa3uK,KAAM67B,GACpD77B,KAAKmlK,aAAa4oB,MAAQ0mC,EAE1Bz0N,KAAK00N,aAAa7oN,GAElB,IAAI3E,EAAUsB,EAAW,GAAIxI,KAAKkH,QAASk8K,GAC3CpjL,KAAK20N,iBAAmBnsN,EAAW,GAAItB,GACvClH,KAAK40N,OAASH,EACdz0N,KAAK60N,WAAW3tN,EAASutN,GAEzBz0N,KAAK80N,gBACL90N,KAAK+0N,eAEL/0N,KAAKyzN,iBACL3pM,EAAQs2I,WAAWQ,aAAawiB,GAAa,WACzCjyD,EAAS6jG,YAAa,EACjB7jG,EAASz3D,aACVy3D,EAAS/mH,QAAQ,QACjB+mH,EAAS8jG,UACT9jG,EAAS+jG,qBAKrBR,aAAc,SAAS7oN,GAGnB,IAFA7L,KAAKm1N,iBAAiBtpN,GACtBA,EAAQY,MAAMK,SAAW,WAClBjB,EAAQk+C,YACXl+C,EAAQwS,YAAYxS,EAAQk+C,YAEhC/pD,KAAK6L,QAAUA,GAGnBspN,iBAAkB,SAAStpN,GACvBie,EAAQvF,SAAS1Y,EAAS,YAG9BgpN,WAAY,SAAS3tN,EAASutN,GAI1B,IAHA,IAAIW,EAAe,GACftmL,EAAS5nC,EAAQ4nC,QAAU,GAEtBvnC,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAC/B6tN,EAAazzN,KAAKgB,EAAEI,OAAO,GAAI+rC,EAAOvnC,KAE1CL,EAAQ4nC,OAASsmL,EAolDzB,SAA4BluN,GAGxB,IAFA,IAAImuN,EAAUd,GAEL3qN,EAAM,EAAGA,EAAMyrN,EAAQ7tN,OAAQoC,IAAO,CAC3C,IAAI0rN,EAAQD,EAAQzrN,GAAO,OACvB1C,EAAQouN,KACRpuN,EAAQmuN,EAAQzrN,GAAO,QAAU1C,EAAQouN,UAClCpuN,EAAQouN,KAzlDnBC,CAAmBruN,GACnBlH,KAAK0kL,cAAcx9K,EAASutN,GAGC,OAAzBvtN,EAAQipL,qBACDjpL,EAAQipL,aAGnBnwL,KAAKkH,QAAUsB,EAAW,GAAIisN,EAAcvtN,GAC5ClH,KAAKw1N,qBAGT5jM,QAAS,WACL,IAAIs+J,EAAYlwL,KAAKkH,QAAQgpL,WAAa,GAI1C,MAAO,CACHljL,MAJQkjL,EAAUljL,MAAQiM,SAASi3K,EAAUljL,MAAO,IAAM3J,KAAKkN,MAAMvQ,KAAK6L,QAAQsS,aAKlFxR,OAJSujL,EAAUvjL,OAASsM,SAASi3K,EAAUvjL,OAAQ,IAAMtJ,KAAKkN,MAAMvQ,KAAK6L,QAAQ0oB,gBAQ7FhL,OAAQ,SAASoI,GACb,IAAIliB,EAAOzP,KAAK4xB,UACZC,EAAc7xB,KAAK8xB,MACnBgxI,EAAUrzJ,EAAKzC,MAAQ,GAAKyC,EAAK9C,OAAS,EAE1CglB,GAASmxI,KAAajxI,GAAepiB,EAAKzC,QAAU6kB,EAAY7kB,OAASyC,EAAK9C,SAAWklB,EAAYllB,SACrG3M,KAAK8xB,MAAQriB,EACbzP,KAAK+xB,QAAQtiB,EAAMkiB,GACnB3xB,KAAKoK,QAAQ,SAAUqF,IAChBqzJ,GAAW9iK,KAAKy1N,aAAe3rM,EAAQiM,KAAK/1B,KAAKy1N,aAAa,SAAUxwN,GAAK,OAAQA,EAAEqH,aAC9FtM,KAAK01N,qBACL11N,KAAK21N,oBAIb5jM,QAAS,WACL/xB,KAAK41N,wBAGTjiB,OAAQ,SAASkiB,GAIb,GAHA71N,KAAK0kL,cAAc1kL,KAAKkH,SACxBlH,KAAKw1N,oBAEDK,EAAU,CACV,IAAIpjD,EAAWzyK,KAAK81N,OAAOpkC,UACvB/jG,EAAO8kF,EAASq/B,SAAS+jB,GAC7BpjD,EAASkhC,OAAOhmH,QAEhB3tF,KAAKi1N,WAIb/6B,QAAS,SAAS93L,GACd,OAAOgvL,GAAehvL,EAAMpC,KAAK0xL,UAAU9e,OAG/Cwe,eAAgB,SAAShvL,GACrB,OAAOpC,KAAKk6L,QAAQ93L,IAGxB2zN,eAAgB,SAAS3zN,GAGrB,IAFA,IAAImvM,EAAQvxM,KAAK0xL,UAAU6f,MAElB3nM,EAAM,EAAGA,EAAM2nM,EAAM/pM,OAAQoC,IAClC,GAAI2nM,EAAM3nM,GAAK1C,QAAQ9E,OAASA,EAC5B,OAAO,IAAIivL,GAAUkgB,EAAM3nM,KAKvCosN,gBAAiB,SAASpsN,GACtB,IAAI2nM,EAAQvxM,KAAK0xL,UAAU6f,MAC3B,GAAIA,EAAM3nM,GACN,OAAO,IAAIynL,GAAUkgB,EAAM3nM,KAInC6oK,SAAU,WACN,OAAO,IAAIgf,GAAczxL,KAAK0xL,YAGlCjrB,gBAAiB,SAASv5J,EAAM+oB,GAC5B,IAEIorG,EAKI40F,EAAYC,EAPhBzjD,EAAWzyK,KAAK0xL,UAChBqtB,GAAetsC,EAASkrC,WAAalrC,EAAS3jI,QAAU,IAAI,GAG5D5lC,EAAW+sB,GACXorG,EAASoxC,EAASglC,aAAaxhL,IAG3BkpI,EAASlpI,IACTggM,EAAahgM,EAAO6Y,OACpBonL,EAAejgM,EAAO6wI,UAEtBmvD,EAAaC,EAAejgM,EAI5BorG,EADA09E,EAAYr5M,OAASywL,GACZggC,GAAoB1jD,EAASilC,mBAAmBue,GAAaC,GAC/D7gM,EAAQ0pL,EAAYr5M,KAAM,CAAEgxL,GAAKN,GAAQC,KACvC8/B,IAAqB1jD,EAASg8B,OAAO,IAAM,IAAIptE,OAAQ60F,GAEvDzjD,EAASilC,mBAAmBue,IAIzC50F,GACArhI,KAAKo2N,sBAAsBlpN,EAAMm0H,IAIzC+0F,sBAAuB,SAASlpN,EAAMm0H,GAElC,IADA,IAAIklC,EAAYvmK,KAAK2mK,WACZ/8J,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IACnC28J,EAAUu6C,qBAAqBz/E,EAAOz3H,GAAMsD,IAIpDiwJ,YAAa,SAASlnI,GAClB,IAIIokG,EAAOwhD,EAJP5f,EAASj8J,KAAKq2N,iBAEdl6D,EADMn8J,KACQk9J,SACduV,EAFMzyK,KAES0xL,UAYnB,GATIxoL,EAAW+sB,IACXokG,EAAQo4C,EAASklC,UAAU1hL,KACdgmI,IACT4f,EAAgBxhD,EAAMylD,YAEnB7jB,GAAUjnC,EAAQ/+F,KACzB4lJ,EAAgBpJ,EAASib,aAAa7R,cAAc5lJ,IAGpDgmI,GACA,GAAI4f,GAAiB,EAAG,CACpB,IAAIx6C,EAASrhI,KAAK0xL,UAAU4lB,sBAAsBz7B,GAClD1f,EAAQqxC,OAAOnsE,SAEZhH,GACP8hC,EAAQjvJ,KAAKmtH,IAIrB4iC,YAAa,WACTj9J,KAAKk9J,SAAS/vJ,QAGlB4nN,aAAc,WACV,IAAIp0I,EAAU3gF,KAAK2gF,QACf30D,EAAOhsB,KAAKs2N,eAEZpmC,EAAYlwL,KAAKkH,QAAQgpL,WAAa,GACtCA,EAAUljL,OACV8c,EAAQ6iE,YAAY3gE,EAAM,CAAEhf,MAAOkjL,EAAUljL,QAE7CkjL,EAAUvjL,QACVmd,EAAQ6iE,YAAY3gE,EAAM,CAAErf,OAAQujL,EAAUvjL,SAG7Cg0E,GAAWA,EAAQz5E,QAAQxB,OAAS1F,KAAKkH,QAAQqvN,UAWlDv2N,KAAK2gF,QAAQ1qB,QACbj2D,KAAK2gF,QAAQp3D,WAXbvpB,KAAKw2N,kBAELx2N,KAAK2gF,QAAU52D,GAAQkrH,QAAQjuF,OAAOh7B,EAAM,CACxCtmB,KAAM1F,KAAKkH,QAAQqvN,WAGvBv2N,KAAK2gF,QAAQn3E,KAAK,aAAcxJ,KAAKy2N,2BACrCz2N,KAAK2gF,QAAQn3E,KAAK,aAAcxJ,KAAK02N,6BAQ7CJ,aAAc,WACV,OAAOt2N,KAAK6L,SAGhBopN,QAAS,WACL,IAAInsK,EAAQ9oD,KAAK22N,YACjB32N,KAAK8xB,MAAQ,CACT9kB,MAAO87C,EAAM5hD,QAAQ8F,MACrBL,OAAQm8C,EAAM5hD,QAAQyF,QAG1B3M,KAAK42N,eAEL52N,KAAK81N,OAAShtK,EACd9oD,KAAK0xL,UAAY5oI,EAAM4oI,UAEvB5oI,EAAMw8G,gBAE2B,IAA7BtlK,KAAKkH,QAAQyX,aACbmqC,EAAMylF,UAAS,SAAS1iI,GAChBA,EAAQylF,WACRzlF,EAAQylF,UAAU57C,WAK9B11C,KAAK+0N,eACL/0N,KAAK2gF,QAAQ60D,KAAK1sF,EAAMo1F,SAES,IAA7Bl+I,KAAKkH,QAAQyX,aACbmqC,EAAMylF,UAAS,SAAS1iI,GAChBA,EAAQylF,WACRzlF,EAAQylF,UAAUx6C,UAK9B92C,KAAKk9J,SAAWl9J,KAAK62N,iBACrB72N,KAAK2mK,WAAa,IAAIg6C,GACtB3gN,KAAK21N,kBACL31N,KAAK82N,kBACL92N,KAAK+2N,uBACL/2N,KAAKg3N,wBAELh3N,KAAKoK,QAAQ0uL,IACbm+B,GAAkBj3N,KAAK0xL,UAAU6f,OAE5BvxM,KAAKk3N,WACNl3N,KAAKm3N,oBAIbhiF,aAAc,SAASiiF,GACnB,IAAIl5E,EACJ,GAAIk5E,IAAkBA,EAAcpqN,OAASoqN,EAAczqN,QAAUyqN,EAAclwN,SAAU,CACzF,IAAIysB,EAAiB3zB,KAAKkH,QACtBA,EAAUsB,EAAW,GAAI4uN,EAAclwN,QAAS,CAChDgpL,UAAW,CACPljL,MAAOoqN,EAAcpqN,MACrBL,OAAQyqN,EAAczqN,UAI9B0qN,GAAmBr3N,KAAK20N,iBAAkBztN,GAC1ClH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAK20N,iBAAkBztN,GACrDlH,KAAK60N,WAAW70N,KAAKkH,QAASlH,KAAK40N,QACnC50N,KAAKyzN,iBAEL,IAAI3qK,EAAQ9oD,KAAK22N,YAEjB7tK,EAAMw8G,eACN2xD,GAAkBnuK,EAAM4oI,UAAU6f,OAElCrzD,EAASp1F,EAAMo1F,OAEfl+I,KAAKkH,QAAUysB,OAEfuqH,EAASl+I,KAAK2gF,QAAQw0D,eAG1B,OAAO+I,GAGXm4E,eAAgB,WACZ,OAAOr2N,KAAK0xL,qBAAqByqB,IAAuBn8M,KAAKkH,QAAQi1J,SAAWn8J,KAAKkH,QAAQi1J,QAAQF,QAGzG66D,gBAAiB,WACb,IAAI5vN,EAAUlH,KAAKkH,SACM,IAArBA,EAAQ4nK,WACR9uK,KAAKs3N,UAAY,IAAIjW,GAASrhN,KAAK0xL,UAAWxqL,EAAQ4nK,YAI9DioD,qBAAsB,WAClB,IAAIQ,EAAWv3N,KAAKkH,QAAQqwN,SACxBxxL,GAAawxL,GAAY,IAAIxxL,WAChB,IAAbwxL,IAAoC,IAAdxxL,IACtB/lC,KAAKw3N,eAAiB,IAAI/V,GAAczhN,KAAM+lC,KAItDixL,sBAAuB,WACnB,IAAIO,EAAWv3N,KAAKkH,QAAQqwN,SACxB7R,GAAc6R,GAAY,IAAI7R,YACjB,IAAb6R,IAAqC,IAAf7R,IACtB1lN,KAAKy3N,gBAAkB,IAAIlV,GAAeviN,KAAM0lN,KAIxDgS,sBAAuB,WACnB,IAAI5oD,EAAW9uK,KAAKkH,QAAQ4nK,SACxByoD,EAAWv3N,KAAKkH,QAAQqwN,SACxBxxL,GAAawxL,GAAY,IAAIxxL,UAC7B2/K,GAAc6R,GAAY,IAAI7R,WAC9BiS,IAAa7oD,IAA0B,IAAbyoD,IAAoC,IAAdxxL,GAAyB/lC,KAAKmgK,iBAAiB,CAAEq4B,GAAYr1G,GAAMo1G,MACnHq/B,IAA0B,IAAbL,IAAqC,IAAf7R,KAA0B1lN,KAAKmgK,iBAAiB,CAAEs4B,GAAYC,GAAMC,KACvG9sL,EAAU7L,KAAK6L,QAEf7L,KAAK63N,kBAAoBF,GAAaC,GACtC/rN,EAAQY,MAAMs0E,YAAc/gF,KAAK83N,cAAgB,GACjD93N,KAAK63N,kBAAmB,GAChB73N,KAAK63N,kBAAsBF,GAAaC,IAChD/rN,EAAQY,MAAMs0E,YAAc,OAE5B/gF,KAAK63N,kBAAmB,GAG5B73N,KAAK+3N,kBAAkBJ,GAAYC,IAGvCG,iBAAkB,SAASC,EAAM3nL,GAC7B,IAAI4nL,EAAYj4N,KAAKi4N,UAChBA,IAIDA,EAAUC,YACVD,EAAUC,WAAWF,GAGrBC,EAAUE,YACVF,EAAUE,WAAW9nL,KAI7BwmL,eAAgB,WACZ,IACIzpB,EADMptM,KACekH,QAAQi1J,QASjC,OANIn8J,KAAKq2N,iBACKr2N,KAAKo4N,qBAAqBhrB,GAE1B,IAAIxoF,GAAQ5kH,KAAKmlK,aAAcioC,IAMjDgrB,qBAAsB,SAASlxN,GAC3B,OAAO,IAAImgN,GAAcrnN,KAAK0xL,UAAWxqL,IAG7Cw9K,cAAe,SAASx9K,EAASutN,IAixCrC,SAA2BvtN,EAASutN,GAChC,IACI93B,EAAUlP,EAAc7a,EADxBylD,GAAsB5D,GAAgB,IAAgB,cAAK,GAG/D,SAAS6D,EAAe70C,GACpB,IAAI80C,GAAa90C,GAAe,IAAIr0D,OAASq+D,EAAar+D,MACtD74G,EAAS/N,EAAW,GACpB6vN,EACAA,EAAkB17B,GAClBlP,EACAA,EAAakP,GAAW,CACpBjvB,KAAM,CAAEt+C,MAAOmpG,GACf7oD,OAAQ,CAAEtgD,MAAOmpG,GACjBx6K,MAAO,CAAEqxE,MAAOmpG,IAEpB90C,GAKJ,cAFOltK,EAAOomL,GAEPpmL,EAGX,IAAK,IAAI3M,EAAM,EAAGA,EAAM2qN,GAAW/sN,OAAQoC,IACvC+yL,EAAW43B,GAAW3qN,GAAO,OAC7B6jL,EAAevmL,EAAQumL,cAAgB,GAGvC7a,GAFAA,EAAO,GAAGv1J,OAAOnW,EAAQy1L,KAEbriL,IAAIg+M,GAEhBpxN,EAAQy1L,GAAY/pB,EAAKprK,OAAS,EAAIorK,EAAOA,EAAK,GA9yClD4lD,CAAkBtxN,EAASutN,GAkzCnC,SAA6BvtN,EAASutN,GAClC,IAAI3lL,EAAS5nC,EAAQ4nC,OACjB2pL,EAAe3pL,EAAOtnC,OACtBokL,EAAiB1kL,EAAQ0kL,eACzB8sC,EAAiBlwN,EAAW,GAAItB,EAAQ0kL,gBACxC+sC,EAAsBlE,EAAejsN,EAAW,GAAIisN,EAAa7oC,gBAAkB,GACnFgtC,EAAsBpwN,EAAW,GAAImwN,GAEzCE,GAA4BH,GAC5BG,GAA4BD,GAE5B,IAAK,IAAIrxN,EAAI,EAAGA,EAAIkxN,EAAclxN,IAAK,CACnC,IAAI+xM,EAAaxqK,EAAOvnC,GAAG7B,MAAQwB,EAAQ0kL,eAAelmL,KAEtDy6M,EAAc33M,EACd,CAAEqF,KAAM,IACR+qN,EACAD,EAAoBrf,GACpB,CAAEn9C,QAASj1J,EAAQi1J,SACnBu8D,EACA9sC,EAAe0tB,IAGnBxqK,EAAOvnC,GAAGw2L,UAAYoiB,EACtBrxK,EAAOvnC,GAAKiB,EAAW,GAAI23M,EAAarxK,EAAOvnC,IAC/CunC,EAAOvnC,GAAGsG,KAAOihC,EAAOvnC,GAAGsG,MAAQ,IA10CnCirN,CAAoB5xN,EAASutN,IAGjCe,kBAAmB,WAKf,IAJA,IAAItuN,EAAUlH,KAAKkH,QACf4nC,EAAS5nC,EAAQ4nC,OACjBC,EAAS7nC,EAAQipL,cAAgB,GAE5B5oL,EAAI,EAAGA,EAAIunC,EAAOtnC,OAAQD,IAAK,CACpC,IAAI82L,EAAgBvvJ,EAAOvnC,GACvBwxN,EAAchqL,EAAOxnC,EAAIwnC,EAAOvnC,QAChC5G,EAAWy9L,EAAcN,UAE7BM,EAAcjvE,MAAQivE,EAAcjvE,OAAS2pG,EACzCn4N,IACAA,EAASwuH,MAAQxuH,EAASwuH,OAAS2pG,KAK/CpC,UAAW,WACP,IAAIzvN,EAAUlH,KAAKkH,QACfurK,EAAWzyK,KAAKg5N,kBAChBlwK,EAAQ,IAAIh/B,EAAQg/I,YAAY9oK,KAAKi5N,iBACzCnwK,EAAM8lH,MAAQ5uK,KACd8oD,EAAM4oI,UAAYjf,EAElB,IAAI10H,EAAQguH,EAAMI,WAAWjlK,EAAQ62C,OACjC4vI,EAAW5hB,EAAMI,WAAWjlK,EAAQymL,SAAU,CAC9C1+C,MAAO/nI,EAAQ62C,MAAMkxF,MACrBniI,SAAU5F,EAAQ62C,MAAMjxC,WAU5B,OARAg8C,EAAM/O,OAAO3xC,MAAM0gD,EAAOijH,EAAMO,YAAY,CAACvuH,EAAO4vI,KAEhDzmL,EAAQ0mL,QAAU1mL,EAAQ0mL,OAAOthL,SACjCw8C,EAAM/O,OAAO,IAAIupK,GAAO7wC,EAASvrK,QAAQ0mL,OAAQ5tL,KAAKmlK,eAE1Dr8G,EAAM/O,OAAO04H,GACb3pH,EAAMsnF,SAECtnF,GAGXmwK,cAAe,WACX,IAAI/xN,EAAUlH,KAAKkH,QACfuI,EAAOzP,KAAK4xB,UAEhB,OAAOppB,EAAW,CACdmW,YAAazX,EAAQyX,YACrB3R,MAAOyC,EAAKzC,OAASgkL,EAAiBryB,cACtChyJ,OAAQ8C,EAAK9C,QAAUqkL,EAAiBtyB,gBACzCx3J,EAAQgpL,YAGf8oC,gBAAiB,SAASE,GACtB,IAAIhyN,EAAUlH,KAAKkH,QAInB,OAFeq9M,GAAgB9wM,QAAQuzC,OAAOkyK,EAAa,GAAKhyN,EAAQ4nC,OAAQ5nC,EAASlH,KAAKmlK,eAKlGwwD,gBAAiB,WAOb,IANA,IAGI/iD,EADM5yK,KACK0xL,UAAU9e,KACrBumD,EAAan5N,KAAKy1N,YAAc,GAE3BluN,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAAK,CAClC,IAAIy9B,EAAO4tI,EAAKrrK,GACZL,EAAU89B,EAAK99B,QACnB,GAAI89B,aAAgBg1I,GAAgB9yK,EAAQk/B,SAAWl/B,EAAQkrC,SAAU,CACrE,IAAIwhB,EAAQ5uB,EAAK4uB,QAEb7tB,EAAY,IAAI6+K,GAZb5kN,KAYiCglC,EACpCx8B,EAAW,CAAE2N,IAAKy9C,EAAMz9C,IAAKyC,IAAKg7C,EAAMh7C,KAAO1R,EAAQk/B,SAG3D+yL,EAAWx3N,KAAKokC,MAK5BqzL,aAAc,SAASz0N,GACnB,OAAO3E,KAAKoK,QAAQwuL,GAAcj0L,IAGtC+8E,QAAS,SAAS/8E,GACd,OAAO3E,KAAKoK,QAAQ2xE,GAAQp3E,IAGhC00N,WAAY,SAAS10N,GACjB,OAAO3E,KAAKoK,QAAQyuL,GAAYl0L,IAGpCmwN,cAAe,WACX90N,KAAKs5N,cAAgBt5N,KAAK+hF,OAAOv4E,KAAKxJ,MACtCA,KAAK2lN,mBAAqB3lN,KAAK4lN,YAAYp8M,KAAKxJ,MAChDA,KAAK47J,mBAAqB57J,KAAKglH,YAAYx7G,KAAKxJ,MAChDA,KAAKy2N,0BAA4Bz2N,KAAKu5N,WAAW/vN,KAAKxJ,MACtDA,KAAK02N,0BAA4B12N,KAAKw5N,UAAUhwN,KAAKxJ,MAErDA,KAAKq1I,WAAa10I,MAAMukC,SACpBllC,KAAKq1I,WAAW7rI,KAAKxJ,MAxfX,KA6flBm0H,YAAa,SAASG,GACdA,GACAt0H,KAAKi0H,UAAUtyH,KAAK2yH,IAI5BF,eAAgB,SAASE,GACrB,IAAIv7G,EAAQ/Y,KAAKi0H,UAAUt+G,QAAQ2+G,GAC/Bv7G,GAAS,GACT/Y,KAAKi0H,UAAUzpH,OAAOuO,EAAO,IAIrConJ,iBAAkB,SAASp2J,GAEvB,IADA,IAAIkqH,EAAYj0H,KAAKi0H,UACZrqH,EAAM,EAAGA,EAAMqqH,EAAUzsH,OAAQoC,IACtC,GAAIqqH,EAAUrqH,GAAKu2J,iBAAiBp2J,GAChC,OAAO,GAKnBK,QAAS,SAAShI,EAAM+0B,QACP,IAATA,IAAmBA,EAAO,IAE9BA,EAAK7sB,OAAStK,KAEVoC,IAAS22L,GACT5hK,EAAKg6D,OAAOkpC,MAAQr6H,KAAKy5N,uBAAuBtiM,EAAKg6D,OAAOkpC,OACrDj4H,IAAS81L,GAChBl4L,KAAK05N,sBAAsBviM,EAAKkjG,OACzBj4H,IAAS+1L,GAChBn4L,KAAK25N,uBACEv3N,IAAS41L,IAChBh4L,KAAK45N,gBAAgBziM,EAAKkjG,OAK9B,IAFA,IAAIpG,EAAYj0H,KAAKi0H,UACjB5qH,GAAqB,EAChBO,EAAM,EAAGA,EAAMqqH,EAAUzsH,OAAQoC,IAClCqqH,EAAUrqH,GAAKQ,QAAQhI,EAAM+0B,KAC7B9tB,GAAqB,GAI7B,OAAOA,GAGX6rN,cAAe,WACX,IAIIloM,EAII6sM,EARJhuN,EAAU7L,KAAK6L,SAEnB7L,KAAK83N,aAAejsN,EAAQY,MAAMs0E,YAGlCo2C,EAAWtrH,IAAWmhB,EAAM,IAAqB,YAAIhtB,KAAKs5N,cAAetsM,EAAgB,MAAIhtB,KAAK2lN,mBAAoB34L,EAAgB,WAAIhtB,KAAK47J,mBAAoB5uI,IAE/JhtB,KAAK85N,2BAEL3iG,EAAWtrH,IAAWguN,EAAQ,IAAqB,UAAI75N,KAAKq1I,WAAYwkF,IAG5E75N,KAAKi4N,UAAYhpD,EAASD,iBAAiBhoH,OAAOhnD,KAAK6L,QAAS,CAC5DyJ,MAAOtV,KAAK4/E,OAAOp2E,KAAKxJ,MACxBu6B,KAAMv6B,KAAK4hF,MAAMp4E,KAAKxJ,MACtB2L,IAAK3L,KAAK8hF,KAAKt4E,KAAKxJ,MACpB8lN,IAAK9lN,KAAKq/E,KAAK71E,KAAKxJ,MACpBgmF,aAAchmF,KAAK+lN,cAAcv8M,KAAKxJ,MACtCkmF,cAAelmF,KAAKgmN,eAAex8M,KAAKxJ,MACxCimN,WAAYjmN,KAAKkmN,YAAY18M,KAAKxJ,QAGtCA,KAAK03N,yBAGT1yG,YAAa,SAASrgH,GACd3E,KAAK+5N,gBACL/5N,KAAK+5N,cAAcpsM,IAAI3tB,KAAM2E,GAC7B3E,KAAK+5N,cAAgB,MAGrB/5N,KAAKg6N,mBACLh6N,KAAKg6N,kBAAmB,EACxBh6N,KAAKoK,QAAQkuL,MAIrB6+B,iBAAkB,WACVn3N,KAAKi4N,WAAaj4N,KAAKi4N,UAAUz9L,QACjCx6B,KAAKi4N,UAAUz9L,UAIvBurL,cAAe,SAASphN,GAChB3E,KAAKy3N,kBAAoBz3N,KAAKi6N,mBAAmBt1N,KACjD3E,KAAKk6N,iBAAmBv1N,EAAE64E,SAC1Bx9E,KAAKmjN,oBACLnjN,KAAK2gF,QAAQg1D,oBAIrBuwE,YAAa,SAASvhN,GACd3E,KAAKm6N,WAAan6N,KAAKi6N,mBAAmBt1N,KACtC3E,KAAK2gF,SACL3gF,KAAK2gF,QAAQk1D,iBAEjB71I,KAAKm6N,UAAW,EAChBn6N,KAAKoK,QAAQuuL,GAAU,MAI/BqtB,eAAgB,SAASrhN,GACrB,IAAIy1N,EAAiBp6N,KAAKy3N,gBAE1B,GAAI2C,IAAmBp6N,KAAKi6N,mBAAmBt1N,GAAI,CAC/CA,EAAEwE,iBACF,IAAIkxN,EAA0Br6N,KAAKk6N,iBAC/B5zI,GAAc3hF,EAAE64E,SAAW68I,EAA0B,EAEzD,GAAIh3N,KAAK6T,IAAIovE,IAAe,GAAK,CAC7BA,EAAajjF,KAAK0S,MAAmB,GAAbuwE,GAExBtmF,KAAKk6N,iBAAmBv1N,EAAE64E,SAC1B,IAAIrmD,EAAO,CAAEyN,MAAO0hD,EAAYs/G,WAAYA,GAAW5lM,KAAK0xL,UAAU9e,MAAOjqJ,cAAehkB,GAC5F,GAAI3E,KAAKm6N,WAAan6N,KAAKoK,QAAQquL,GAAYthK,GAAO,CAClD,IAAIiqK,EAASphM,KAAKsgN,kBAAkB37M,GAE/B3E,KAAKm6N,WACNn6N,KAAKm6N,UAAW,IAGPhjM,EAAKyuK,WAAaw0B,EAAe3X,aAAan8H,EAAY86G,MACxDphM,KAAKoK,QAAQsuL,GAAMvhK,IAC9BijM,EAAe/pL,WAOnCmpL,UAAW,SAAS70N,GAChB,GAAIA,EAAEkH,QAAS,CACX,IAAIA,EAAU7L,KAAKs6N,qBAAqB31N,EAAEkH,QAASlH,GAE/CkH,GAAWA,EAAQ0uN,OACnB1uN,EAAQ0uN,MAAMv6N,KAAM2E,EAAEgkB,iBAKlCi3D,OAAQ,SAASj7E,GACb,IAAIy8L,EAASphM,KAAKsgN,kBAAkB37M,IAEhC3E,KAAKi6N,mBAAmBt1N,IAAO3E,KAAK0xL,UAAU2lB,wBAAwBjW,KAItEphM,KAAKmgK,iBAAiB,CAAEq4B,GAAYr1G,GAAMo1G,MAC1Cv4L,KAAKw6N,iBAAiB71N,EAAGy8L,EAAQ5I,IAGjCx4L,KAAKs3N,WAAat3N,KAAKs3N,UAAUhiN,MAAM3Q,KACvC3E,KAAK2gF,QAAQg1D,kBACb31I,KAAKmjN,oBACLnjN,KAAKy6N,gBAAiB,EACtBz6N,KAAKmlK,aAAagb,SAAU,GAG5BngL,KAAKw3N,gBACDx3N,KAAKw3N,eAAeliN,MAAM3Q,IAC1B3E,KAAKoK,QAAQquL,GAAY,CAAEmN,WAAYA,GAAW5lM,KAAK0xL,UAAU9e,MAAOjqJ,cAAehkB,MAKnGi9E,MAAO,SAASj9E,GACZ,IACIsuD,EADMjzD,KACMk3N,UACZpoD,EAFM9uK,KAESs3N,UAEnB,IAAIt3N,KAAKi6N,mBAAmBt1N,GAA5B,CAIA,GAAImqK,EAAU,CACV,IAAIr2G,EAASq2G,EAASv0I,KAAK51B,GAEvB8zD,IAAWz4D,KAAKoK,QAAQ+4E,GAAM,CAAEyiH,WAAYntI,EAAQ9vC,cAAehkB,KACnEmqK,EAAS6N,WAEV,GAAI1pH,EAAO,CAId,IAHA,IAAIynK,EAAW,GACX9nD,EAAO3/G,EAAM2/G,KAERrrK,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAAK,CAClC,IAAI2mM,EAAct7B,EAAKrrK,GAEvB,GADe2mM,EAAYhnM,QAAQ9E,KACrB,CACV,IAAI4iC,EAAOkpK,EAAYhnM,QAAQkrC,SAAWztC,EAAER,EAAIQ,EAAES,EAC9Cw/B,EAAQI,EAAKg5C,cAAgBh5C,EAAKziB,SAExB,IAAVqiB,IACA81L,EAASxsB,EAAYhnM,QAAQ9E,MAAQ8rM,EAAY/xB,eAAev3I,KAK5EquB,EAAM2yI,WAAa80B,EACnB16N,KAAKoK,QAAQ+4E,GAAM,CACfyiH,WAAY80B,EACZ/xM,cAAehkB,IAInB3E,KAAKw3N,gBACLx3N,KAAKw3N,eAAej9L,KAAK51B,KAIjCm9E,KAAM,SAASn9E,GACX,IAAI3E,KAAKi6N,mBAAmBt1N,GAA5B,CAIA,IAAImqK,EAAW9uK,KAAKs3N,UAapB,GAZIxoD,GAAYA,EAASnjK,IAAIhH,IACzB3E,KAAK2gF,QAAQk1D,iBACb71I,KAAKoK,QAAQmuL,GAAU,CACnBqN,WAAYA,GAAW5lM,KAAK0xL,UAAU9e,MACtCjqJ,cAAehkB,IAEnB3E,KAAKy6N,gBAAiB,EACtBz6N,KAAKmlK,aAAagb,SAAU,GAE5BngL,KAAK26N,eAAeh2N,EAAG4zL,IAGvBv4L,KAAKw3N,eAAgB,CACrB,IAAI/+J,EAASz4D,KAAKw3N,eAAe7rN,IAAIhH,GACjC8zD,IAAWz4D,KAAKoK,QAAQsuL,GAAM,CAAEkN,WAAYntI,EAAQ9vC,cAAehkB,MACnE3E,KAAKw3N,eAAennL,OACpBrwC,KAAKoK,QAAQuuL,GAAU,CAAEiN,WAAYntI,EAAQ9vC,cAAehkB,QAKxEs1N,mBAAoB,SAASt1N,GACzB,IAAIw0N,EAAan5N,KAAKy1N,aAAe,GACrC,IAAK0D,EAAW3xN,OACZ,OAAO,EAGX,IAAI45L,EAASphM,KAAKsgN,kBAAkB37M,GAChCgpF,EAAO3tF,KAAK0xL,UAAUkmB,YAAYxW,GACtC,GAAIzzG,EACA,IAAK,IAAI/jF,EAAM,EAAGA,EAAMuvN,EAAW3xN,OAAQoC,IACvC,GAAIuvN,EAAWvvN,GAAKo7M,OAAOr3H,GACvB,OAAO,GAMvBitI,oBAAqB,WACjB,IACIlV,GADW1lN,KAAKkH,QAAQqwN,UACE,IAAI7R,YAAc,GAChD,OAAOxuF,EAAewuF,EAAWlD,KAr6ad,KAw6avBoD,YAAa,SAASjhN,GAClB,IAAIwsH,EAAWnxH,KAEX4kC,EAAQ9a,EAAQ6/J,gBAAgBhlL,GAChCy1N,EAAiBp6N,KAAKy3N,gBACtBr2B,EAASphM,KAAKsgN,kBAAkB37M,GAEpC,IAAI3E,KAAKi6N,mBAAmBt1N,IAAO3E,KAAK0xL,UAAU2lB,wBAAwBjW,GAI1E,GAAIg5B,EAAgB,CAChB,IAAIjjM,EAAO,CAAEyN,MAAOA,EAAOghK,WAAYA,GAAW5lM,KAAK0xL,UAAU9e,MAAOjqJ,cAAehkB,IACnF3E,KAAKm6N,UAAan6N,KAAKoK,QAAQquL,GAAYthK,KAC3CxyB,EAAEwE,iBAEGnJ,KAAKm6N,WACNn6N,KAAKmjN,oBACLnjN,KAAK2gF,QAAQg1D,kBACb31I,KAAKm6N,UAAW,GAGhBn6N,KAAKmmN,YACLhsL,aAAan6B,KAAKmmN,YAGtBhvL,EAAKyuK,WAAaw0B,EAAe3X,aAAa79K,EAAOw8J,GACjDjqK,EAAKyuK,aAAe5lM,KAAKoK,QAAQsuL,GAAMvhK,IACvCijM,EAAe/pL,OAGnBrwC,KAAKmmN,WAAaptL,YAAW,WACzBo4F,EAAS/mH,QAAQuuL,GAAUxhK,GAC3Bg6F,EAASgpG,UAAW,EAChBhpG,EAASxwC,SACTwwC,EAASxwC,QAAQk1D,mBAEtB2jD,SAEJ,CACH,IAAIvmI,EAAQjzD,KAAKk3N,UACjB,IAAKjkK,EACejzD,KAAKw6N,iBAAiB71N,EAAGy8L,EAAQ3I,MAE7CxlI,EAAQjzD,KAAKk3N,WAIrB,GAAIjkK,EAAO,CACP,IAAI4nK,EAAa5nK,EAAM4nK,YAAcj2L,EACrCquB,EAAM4nK,WAAaA,EAAaj2L,EAKhC,IAHA,IAAIguI,EAAO5yK,KAAKk3N,UAAUtkD,KACtBn6G,EAAS,GAEJlxD,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAAK,CAClC,IAAI2mM,EAAct7B,EAAKrrK,GACnBo1L,EAAWuR,EAAYhnM,QAAQ9E,KAC/Bu6L,IACAlkI,EAAOkkI,GAAYuR,EAAY9xB,YAAYy+C,EAAa1pG,EAASypG,sBAAuBx5B,IAIhGphM,KAAKoK,QAAQsuL,GAAM,CACf9zJ,MAAOA,EACPghK,WAAYntI,EACZ9vC,cAAehkB,IAGf3E,KAAKmmN,YACLhsL,aAAan6B,KAAKmmN,YAGtBnmN,KAAKmmN,WAAaptL,YAAW,WACzBo4F,EAASwpG,eAAeh2N,EAAGg0L,MAC5Ba,OAKfghC,iBAAkB,SAAS71N,EAAGy8L,EAAQ05B,GAClC,IAAIroD,EAAWzyK,KAAK81N,OAAOpkC,UACvB/jG,EAAO8kF,EAASu/B,cAAc5Q,GAC9BxuB,EAAOH,EAASG,KAAKhsK,MAAM,GAE/B,GAAK+mF,EAAL,CAIA,IAAIl1B,EAASmtI,GAAWhzB,GAER5yK,KAAKoK,QAAQ0wN,EAAY,CACrCl1B,WAAYntI,EACZ9vC,cAAehkB,IAIf3E,KAAKm3N,oBAELn3N,KAAKy6N,gBAAiB,EACtBz6N,KAAKmjN,oBACLnjN,KAAKk3N,UAAY,CACbtxB,WAAYntI,EACZk1B,KAAMA,EACNilF,KAAMA,MAKlB+nD,eAAgB,SAASh2N,EAAGm2N,GACpB96N,KAAKk3N,YACLl3N,KAAKoK,QAAQ0wN,EAAY,CACrBl1B,WAAY5lM,KAAKk3N,UAAUtxB,WAC3Bj9K,cAAehkB,IAEnB3E,KAAKy6N,gBAAiB,EACtBz6N,KAAKk3N,UAAY,OAIzB6D,iBAAkB,SAASp2N,EAAGwL,GAC1B,IAAItE,EAAU7L,KAAK2gF,QAAQl4D,YAAY9jB,GACvC,GAAIkH,EACA,OAAO7L,KAAKs6N,qBAAqBzuN,EAASlH,EAAGwL,IAIrDmqN,qBAAsB,SAASzuN,EAASlH,EAAGwL,GAGvC,IAFA,IACIw1J,EADAlyJ,EAAU5H,EAEP4H,IAAYkyJ,GACfA,EAAelyJ,EAAQkyJ,aACvBlyJ,EAAUA,EAAQtH,OAGtB,GAAIw5J,EAYA,OAXIA,EAAa4H,WACb5H,EAAeA,EAAa4H,SAAS5oK,EAAG3E,KAAKsgN,kBAAkB37M,KAG/DwL,IACAw1J,EAAeA,EAAat5J,QAAQ8D,KAChBw1J,EAAa4H,WAC7B5H,EAAeA,EAAa4H,YAI7B5H,GAIf26C,kBAAmB,SAAS37M,GACxB,IAAIwhF,EAAcr8D,EAAQysG,iBAAiB5xH,GAC3C,OAAO3E,KAAKymN,oBAAoBtgI,EAAY/gF,EAAG+gF,EAAYhiF,IAG/D62N,gBAAiB,WACb,IAAKh7N,KAAKi7N,SAAU,CAChB,IAAIhsM,EAAMsoG,EAAcv3H,KAAK6L,QAAS,CAAE,cAAe,eACnDgsH,EAAc5oG,EAAI4oG,YAClBC,EAAa7oG,EAAI6oG,WACrB93H,KAAKi7N,SAAW,CACZ72M,IAAK0zG,EACLjsG,KAAMgsG,GAId,OAAO73H,KAAKi7N,UAGhBxB,uBAAwB,SAASp/F,GAC7B,IAAI0b,EAAU/1I,KAAKg7N,kBACfj+M,EAAS+M,EAAQ45F,cAAc1jH,KAAK6L,SAExC,MAAO,CACHggB,KAAM9V,EAAMskH,EAAMj1H,EAAI2wI,EAAQlqH,KAAO9O,EAAO8O,MAC5CzH,IAAKrO,EAAMskH,EAAMl2H,EAAI4xI,EAAQ3xH,IAAMrH,EAAOqH,OAIlDqiM,oBAAqB,SAAS39L,EAASC,GACnC,IAAIld,EAAU7L,KAAK6L,QACfkR,EAAS+M,EAAQ45F,cAAc73G,GAC/BkqI,EAAU/1I,KAAKg7N,kBACf9kF,EAAmBpsH,EAAQkvG,aAAantH,GAASqsH,SACjDmC,EAAQ,IAAI42D,GACZnoK,EAAU/L,EAAO8O,KAAOkqH,EAAQlqH,KAChC9C,EAAUhM,EAAOqH,IAAM2xH,EAAQ3xH,KACjCmvB,UAAU2iG,GAEZ,OAAO,IAAIlc,EAAMK,EAAMj1H,EAAGi1H,EAAMl2H,IAGpCk7E,KAAM,SAAS16E,GACX,IAAIwsH,EAAWnxH,KAEXk7N,EAAiBl7N,KAAK2gF,QAAQl4D,YAAY9jB,GAC1CkH,EAAU7L,KAAKs6N,qBAAqBY,EAAgBv2N,GACpDw2N,EAAgBn7N,KAAKq2N,iBAEpBr2N,KAAKo7N,YAAYF,EAAgBv2N,IAAOw2N,GACzCn7N,KAAKmjN,oBAGLgY,GACAn7N,KAAKq7N,oBAAoBr7N,KAAKsgN,kBAAkB37M,GAAIA,GAAG,GAG3D3E,KAAKs7N,gBAAgBzvN,EAASlH,GAG9B3E,KAAKu7N,aAAc,EACnBxiM,YAAW,WACPo4F,EAASoqG,aAAc,IACxB,IAGPx5I,OAAQ,SAASp9E,GACb,IAAIkH,EAAU7L,KAAK+6N,iBAAiBp2N,GACpC3E,KAAKs7N,gBAAgBzvN,EAASlH,IAGlC22N,gBAAiB,SAASzvN,EAASlH,GAI/B,IAHA,IAEI8O,EAAU5H,EACP4H,GACCA,EAAQ6V,OACR7V,EAAQ6V,MALDtpB,KAKiB2E,GAG5B8O,EAAUA,EAAQtH,QAI1BivN,YAAa,SAASvvN,EAASlH,GAC3B,GAAI3E,KAAKy6N,eACL,OAAO,EAGX,IAAIpgG,EAAQr6H,KAAKs6N,qBAAqBzuN,EAASlH,GAAG,SAASkH,GACvD,OAAQA,EAAQqjL,OAASrjL,EAAQkiK,SAAWliK,aAAmBklM,OAKnE,OAFA/wM,KAAKw7N,qBAAqBnhG,EAAO11H,GAE1B01H,GAGXohG,gBAAiB,SAASphG,GACD7xH,EAAW,GAAIxI,KAAKkH,QAAQi1J,QAAS9hC,EAAMnzH,QAAQi1J,SACrD7vJ,SACftM,KAAKk9J,SAAShwJ,KAAKmtH,IAI3BqhG,wBAAyB,SAASC,EAAaC,EAAgBC,GAC3D,IAAIC,EAAgB97N,KAAK+7N,qBAAuB/7N,KAAKg8N,wBAAwBL,GAC7E,GAAKG,EAIL,GAAIF,EACA57N,KAAKi8N,qBAAqBN,GAC1B37N,KAAKk8N,oBAAoBJ,EAAc3mL,SAAU,MAAM,GACvDn1C,KAAKk8N,oBAAoBJ,EAAc3mL,SAAUwmL,EAAY7sL,QAC7D9uC,KAAK2mK,WAAWz5J,KAAK2uN,GAAmBF,OACrC,CACH,IAAIQ,EAEJ,IAAKL,EAAc10D,+BAEf,YADApnK,KAAK2mK,WAAWz5J,KAAKyuN,IAIzBQ,EAAiBn8N,KAAKo8N,mBAAmBT,EAAaG,KAEhCK,EAAe30N,QACjCxH,KAAK2mK,WAAWz5J,KAAKivN,EAAgB,EAAIn8N,KAAKq8N,6BAA6BV,EAAY7sL,WAKnGstL,mBAAoB,SAAST,EAAaG,GAGtC,OAFgB97N,KAAKs8N,oBAAoBR,EAAeH,EAAYrzN,aAEnD2tB,QAAO,SAAUokG,GAAS,OAAOA,IAAUshG,MAGhEW,oBAAqB,SAAShmM,EAAW5wB,GAKrC,IAJA,IAEI27H,EAAS,GAEJ95H,EAAI,EAAGA,EAAI+uB,EAAU6e,SAAS3tC,OAAQD,IAAK,CAChD,IAAIsE,EAAUyqB,EAAU6e,SAAS5tC,GAE7BsE,EAAQvD,cAAgB5C,EACxB27H,EAAO1/H,KAAKkK,GACLA,EAAQspC,UAAYtpC,EAAQspC,SAAS3tC,SAC5C65H,EAASA,EAAOhkH,OAVTrd,KAUyBs8N,oBAAoBzwN,EAASnG,KAIrE,OAAO27H,GAGXk7F,oBAAqB,SAASliG,EAAO11H,GACjC,IAAI63N,EAAex8N,KAAK+5N,cAEpByC,GAAgBA,IAAiBniG,IACjCmiG,EAAa7uM,IAAI3tB,KAAM2E,GACvB3E,KAAK+5N,cAAgB,MAGrB1/F,GAASmiG,IAAiBniG,GAASA,EAAM0zC,OACzC/tK,KAAK+5N,cAAgB1/F,EACrBA,EAAM0zC,KAAK/tK,KAAM2E,KAIzB+0N,sBAAuB,SAASr/F,GACvBA,GAAUA,EAAMvrF,SAIXqjJ,GAAa1+K,QAAQm/K,UAAUv4D,EAAMvrF,OAAQ,KAAMurF,EAAMhmG,UAClDzF,OACN6tM,YACPz8N,KAAK08N,gBAAkB,CAAE/jF,OAAQ34I,KAAK6L,QAAQY,MAAMksI,QACpD34I,KAAK6L,QAAQY,MAAMksI,OAAS,aAIpCghF,qBAAsB,WACd35N,KAAK08N,kBACL18N,KAAK6L,QAAQY,MAAMksI,OAAS34I,KAAK08N,gBAAgB/jF,OACjD34I,KAAK08N,gBAAkB,OAI/B9C,gBAAiB,SAASv/F,GACtB,GAAKA,GAAUA,EAAMvrF,OAArB,CAIA,IAAIA,EAASurF,EAAMvrF,OAGfpmC,EAFMypL,GAAa1+K,QAAQm/K,UAAU9jJ,EAAQ,KAAMurF,EAAMhmG,UAC5CzF,OACE6tM,UACnB,GAAI/zN,EAAO,CACP,IAAIyuB,EAAO,CAAE2X,OAAQA,EAAQurF,MAAOA,EAAO3xH,MAAOA,EAAO4B,OAAQtK,MACjEA,KAAKoK,QAAQqvL,GAAWtiK,MAIhC8kM,qBAAsB,SAAS5hG,EAAOsiG,GAMlC,IALA,IAEIlqD,EAAWzyK,KAAK0xL,UAChBlqL,EAASirK,EAAS3jI,OAAOtnC,OAEpBD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIq1N,EAAanqD,EAAS3jI,OAAOvnC,GAC7Bs1N,EAPO78N,KAOmB88N,4BAA4BF,GACtDruC,EAROvuL,KAQoBq8N,6BAA6BO,GAEvDD,GAAgBC,IAAeviG,EAAMvrF,QAQtC8tL,EAAWhmM,QAAUimM,EAEjBD,EAAWlvD,OACXkvD,EAAWlvD,KAAK92I,QAAUimM,KAV9BD,EAAWC,eAAiBA,EAC5BD,EAAWhmM,QAAU23J,EAEjBquC,EAAWlvD,OACXkvD,EAAWlvD,KAAK92I,QAAU23J,MAY1C2tC,oBAAqB,SAAS/nM,EAAU4oM,EAActnL,EAAO3G,GAGzD,IAFA,IAESvnC,EAAI,EAAGA,EAAI4sB,EAAS3sB,OAAQD,IAAK,CACtC,IAAIsE,EAAUsoB,EAAS5sB,GACnBq1N,EAAa/wN,EAAQijC,QAAUA,EAGnC,GAFsB8tL,IAAeA,EAAWr2D,WAAa,IAAIj6J,SAE1CT,EAAQqyI,OAAQ,CACnC,IAAItnH,EAAUkY,EAASA,EAAOlY,QAAU/qB,EAAQijC,OAAOlY,SACnDgmM,IAAeG,GAAgBtnL,IAC/B5pC,EAAQqyI,OAAOtnH,QAAQ6e,EAAQ,EAAI7e,GAIvC/qB,EAAQspC,UAAYtpC,EAAQspC,SAAS3tC,QAd9BxH,KAeEk8N,oBAAoBrwN,EAAQspC,SAAU4nL,EAActnL,EAAO5pC,EAAQijC,UAKxFktL,wBAAyB,SAAS3hG,GAG9B,IAFA,IAAIyhG,EAAgBzhG,EAAMluH,OAEnB2vN,IAAkBA,EAAcrpD,UACnCqpD,EAAgBA,EAAc3vN,OAGlC,OAAO2vN,GAGXN,qBAAsB,SAASnhG,EAAO11H,GAClC,IAAIg3N,EAAc37N,KAAKg9N,aACnBpB,EAAiB57N,KAAK0xL,UAAU5iJ,OAAOtnC,OAAS,EAChDy1N,EAAqBj9N,KAAKk9N,sBAkB9B,OAhBAl9N,KAAKu8N,oBAAoBliG,EAAO11H,GAE5B01H,GAASshG,IAAgBthG,GAASA,EAAM60D,QACxClvL,KAAKg9N,aAAe3iG,EAEfr6H,KAAKq2N,kBAAqBh8F,EAAM60D,MAAMlvL,KAAM2E,KAC7C3E,KAAKy7N,gBAAgBphG,GAEjB4iG,EACAj9N,KAAK07N,wBAAwBrhG,EAAOuhG,GAEpC57N,KAAK2mK,WAAWz5J,KAAKmtH,KAK1BA,GAGX8iG,qBAAsB,SAAS9iG,GAC3B,IAAIuhG,EAAiB57N,KAAK0xL,UAAU5iJ,OAAOtnC,OAAS,EAC3BxH,KAAKk9N,wBAEtBtB,GAAkB57N,KAAK+7N,uBACvB/7N,KAAKi8N,qBAAqB5hG,GAAO,GACjCr6H,KAAKk8N,oBAAoBl8N,KAAK+7N,qBAAqB5mL,SAAU,MAAM,GACnEn1C,KAAK+7N,qBAAuB,MAEhC/7N,KAAK2mK,YAAc3mK,KAAK2mK,WAAWx5J,OACnCnN,KAAKg9N,aAAe,OAI5BE,oBAAqB,WACjB,IAAIE,OAAsFthF,IAA1D97I,KAAKkH,QAAQ0kL,eAAerlB,UAAUgoB,gBAClE0uC,EAAqBj9N,KAAKkH,QAAQ4nC,OAAO7Y,QAAO,SAAUhxB,GAAK,YAAuC62I,IAAhC72I,EAAEshK,UAAUgoB,mBAAmC/mL,OAAS,EAClI,OAAO41N,GAA6BH,GAGxCZ,6BAA8B,SAASvtL,GACnC,IAAIuuL,EAAyBr9N,KAAKkH,QAAQ0kL,eAAerlB,UAAUgoB,gBAEnE,OAD4Bz/I,EAAOy3H,UAAUgoB,iBACb8uC,GAA0BvuL,EAAOlY,SAAWo6J,EAAiBnyB,wBAGjGi+D,4BAA6B,SAAShuL,GAClC,OAAOA,EAAO+tL,gBAAkB/tL,EAAOlY,SAAWo6J,EAAiBnyB,wBAGvE06D,WAAY,SAAS50N,GACjB,IAIQqoB,EAJJqtG,EAAQr6H,KAAKo7N,YAAYz2N,EAAEkH,QAASlH,EAAEgkB,eAEtC0xG,GAASA,EAAMwlE,kBAAoB7/L,KAAKs9N,yBAA2Bt9N,KAAKq2N,mBACxEr2N,KAAKs9N,uBAAyBt9N,KAAKu9N,mBAAmB/zN,KAAKxJ,MAE3Dm3H,EAAW/nH,WAAY4d,EAAM,IAAmB,UAAIhtB,KAAKs9N,uBAAwBtwM,MAIzFuwM,mBAAoB,SAAS54N,GACzB,IAwBQqoB,EAxBJiC,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACdi1J,EAAUltI,EAAIiuI,SACdqJ,EAAYt3I,EAAI03I,WAChBtsC,EAAQprG,EAAI+tM,aACZ57B,EAASphM,KAAKsgN,kBAAkB37M,GAEpC,GAAI3E,KAAK0xL,UAAUx4I,IAAIkjF,cAAcglE,IACjC,GAAI/mE,GAASA,EAAMwlE,iBAAmBxlE,EAAMvrF,QAAUurF,EAAMluH,OAAOk1L,gBAAiB,CAChF,IAAIm8B,EAAcnjG,EAAMluH,OAAOk1L,gBAAgBD,EAAOh8L,EAAGg8L,EAAOj9L,EAAGk2H,EAAMshE,UACzE,GAAI6hC,GAAeA,IAAgBnjG,EAG/B,GAFAr6H,KAAKg9N,aAAeQ,GAEfA,EAAYtuC,MAAMlvL,KAAM2E,GACJ6D,EAAW,GAAItB,EAAQi1J,QAASqhE,EAAYt2N,QAAQi1J,SACtD7vJ,SACf6vJ,EAAQjvJ,KAAKswN,GAGjBj3D,EAAUr5J,KAAKswN,SAM3B7lG,GAAavoH,WAAY4d,EAAM,IAAmB,UAAIhtB,KAAKs9N,uBAAwBtwM,IACnFhtB,KAAKmjN,oBACLnjN,KAAKs9N,uBAAyB,KAE9Bt9N,KAAKm9N,qBAAqB9iG,IAIlCgb,WAAY,SAAS1wI,GACjB,IAAIy8L,EAASphM,KAAKsgN,kBAAkB37M,GAChC8tK,EAAWzyK,KAAK0xL,UAIpB,GAFA1xL,KAAKy9N,iBAAiBr8B,GAElB3uB,EAASyc,MAAO,CAChB,IAAIwuC,EAAejrD,EAAS4kC,wBAAwBjW,GAChDs8B,GACA19N,KAAKg6N,kBAAmB,EACxBh6N,KAAK0xL,UAAUxC,MAAMlvL,KAAM2E,IACpB3E,KAAKg6N,mBAAqB0D,IACjC19N,KAAKg6N,kBAAmB,EACxBh6N,KAAKoK,QAAQkuL,KAIjBt4L,KAAKq2N,kBACLr2N,KAAKq7N,oBAAoBj6B,EAAQz8L,IAIzC84N,iBAAkB,SAASr8B,GAGvB,IAFA,IAAI6P,EAAajxM,KAAK0xL,UAAUuf,WAEvB1pM,EAAI,EAAGA,EAAI0pM,EAAWzpM,OAAQD,IAAK,CACxC,IAAIkM,EAAUw9L,EAAW1pM,GAErBkM,EAAQylC,IAAIkjF,cAAcglE,GAC1B3tL,EAAQ+5L,OAAOpM,GAEf3tL,EAAQtG,SAKpBkuN,oBAAqB,SAASj6B,EAAQz8L,EAAGwjB,GACrC,IAAInoB,KAAKy6N,eAAT,CAIA,IAAIxrM,EAAMjvB,KACNotM,EAAiBn+K,EAAI/nB,QAAQi1J,QAC7BsW,EAAWxjJ,EAAIyiK,UACfhE,EAAez+J,EAAIyiK,UAAUhE,aAC7BvxB,EAAUltI,EAAIiuI,SACdqJ,EAAYt3I,EAAI03I,WAEpB,GAAI8L,EAAS4kC,wBAAwBjW,GAAS,CAC1C,IAAIroL,EAAQ20K,EAAa5R,mBAAmBslB,GAC5C,GAAIroL,IAAU/Y,KAAK29N,qBAAwB39N,KAAK49N,kBAAoBz1M,EAAS,CACzE,IAAIk5G,EAASoxC,EAAS6kC,sBAAsBv+L,GACxC8kN,EAAYx8F,EAAO/mH,KAAI,SAAS+/G,GAChC,OAAOA,EAAMyzC,UAAUnpK,MAEvBm5N,EAAYD,EAAU,IAAM,GAChCC,EAAU1iC,eAAiByiC,EAEvBx8F,EAAO75H,OAAS,IAAMxH,KAAKoK,QAAQ6tL,GAAc6lC,IAC7C1wB,EAAe9gM,SACf6vJ,EAAQqxC,OAAOnsE,EAAQ+/D,GAG3B76B,EAAUr5J,KAAKm0H,GAEfrhI,KAAK49N,kBAAmB,GAExBzhE,EAAQhvJ,OAGZnN,KAAK29N,mBAAqB5kN,OACnBoP,GAAUnoB,KAAK49N,mBACtBr3D,EAAUp5J,OACVgvJ,EAAQhvJ,OACRnN,KAAK49N,kBAAmB,QAErB59N,KAAK49N,mBACZr3D,EAAUp5J,OACVgvJ,EAAQhvJ,OACRnN,KAAK29N,mBAAqB,KAC1B39N,KAAK49N,kBAAmB,KAIhCG,aAAc,SAAS72N,GACnB,IAAIurK,EAAWzyK,KAAK0xL,UACpB1xL,KAAKq1I,WAAW76G,SAEhBi4I,EAASo/B,iBAET7xM,KAAKmjN,kBAAkBj8M,IAG3Bi8M,kBAAmB,SAASj8M,GACxB,IACIi1J,EADMn8J,KACQk9J,SACdqJ,EAFMvmK,KAEU2mK,WAEpB3mK,KAAKg9N,aAAe,KACpBh9N,KAAK+5N,cAAgB,MAEjB59D,GAAaj1J,GAAWA,EAAQ82N,iBAChC7hE,EAAQhvJ,OAGZnN,KAAK29N,mBAAqB,KAC1B39N,KAAK49N,kBAAmB,EAEpBr3D,GACAA,EAAUp5J,QAIlB8wN,aAAc,WACVj+N,KAAKi1N,WAGTiJ,oBAAqB,WACbl+N,KAAKm+N,iBACLr/K,cAAc9+C,KAAKm+N,gBACnBn+N,KAAKm+N,eAAiB,OAI9B1K,eAAgB,WAMZ,IALA,IAEIvsN,EAAUlH,KAAKkH,QACf0wI,EAAc,GAAGv6H,OAAOnW,EAAQwmL,cAE3BulB,EAAS,EAAGA,EAASr7D,EAAYpwI,OAAQyrM,IAAU,CACxD,IAAIjuK,EAAO4yG,EAAYq7D,IACD,IAAlBjuK,EAAK+rC,UAPE/wE,KAQEo+N,2BAA2Bp5L,EAAMiuK,KAKtDmrB,2BAA4B,SAASp5L,EAAMiuK,GAUvC,IATA,IAOIqL,EALAxvK,EAAS9uC,KAAKkH,QAAQ4nC,OACtB2pL,EAAe3pL,EAAOtnC,OACtB62N,EAAmB,IAAIv0M,EAAQ81I,QAC/BxrI,EAAQ,GACRkqM,GAAW,EAGN3iC,EAAW,EAAGA,EAAW88B,EAAc98B,IAAY,CACxD,IAAI12L,EAAI6pC,EAAO6sJ,GACXsc,EAAShzM,EAAEyoL,eAAiB1oJ,EAAK5iC,OAAU6C,EAAEyoL,cAA2B,IAAXulB,EAC7DplM,EAAO5I,EAAE4I,KACT62D,EAAa72D,EAAKrG,OAClBgC,EAAOvE,EAAE+4M,eAAiB/F,EAG9B,GAFAqmB,EAAW90N,GAAQ80N,EAEf90N,GAAQk7D,EAAa,EAKrB,IAFA,IAAI85I,GAFJF,EAAWtO,GAAWhrK,EAAMitJ,GAAShtL,EAAE+4M,cAAenwM,EAAK,MAEpCkiM,GAAe9d,GAE7BssC,EAAS,EAAGA,EAAS75J,EAAY65J,IAAU,CAChD,IAAIC,EAAU3wN,EAAK0wN,GACfz3D,EAAW03C,EAAMv5M,EAAE+4M,cAAewgB,EAxBnCx+N,KAwBqDmlK,aAAaoJ,OAEjE+vC,GAAa+f,EAAiB9uM,IAAIu3I,KAClC1yI,EAAMzyB,KAAK,CAAEmlK,EAAU03D,IAElBlgB,GACD+f,EAAiB7uM,IAAIs3I,GAAU,KAOnD,GAAI1yI,EAAM5sB,OAAS,EAAG,CACd82M,IACAlqL,EAsVhB,SAAqBqqM,EAAUzqK,QACV,IAAbA,IAAuBA,EAAWlqC,EAAQwvJ,cAM9C,IAJA,IAAIS,EAhBR,SAAmBA,EAAO/lH,QACL,IAAbA,IAAuBA,EAAWlqC,EAAQwvJ,cAE9C,IAAK,IAAI/xK,EAAI,EAAGC,EAASuyK,EAAMvyK,OAAQD,EAAIC,EAAQD,IAC/C,GAAIysD,EAAS+lH,EAAMxyK,GAAIwyK,EAAMxyK,EAAI,IAAM,EAAG,CACtCwyK,EAAM70J,KAAK8uC,GACX,MAIR,OAAO+lH,EAMK2kD,CAAUD,EAAUzqK,GAC5BxsD,EAASuyK,EAAMvyK,OACf+O,EAAS/O,EAAS,EAAI,CAAEuyK,EAAM,IAAO,GAEhCxyK,EAAI,EAAGA,EAAIC,EAAQD,IACiB,IAArCysD,EAAS+lH,EAAMxyK,GAAI46B,EAAK5rB,KACxBA,EAAO5U,KAAKo4K,EAAMxyK,IAI1B,OAAOgP,EAnWaooN,CAAYvqM,GAAO,SAASlvB,EAAGigB,GACnC,OAAO2E,EAAQwvJ,aAAap0K,EAAE,GAAIigB,EAAE,QAI5C,IAAI5O,EAiWhB,SAAmBizD,GAIf,IAHA,IAAIo1J,EAAWp1J,EAAKhiE,OAChB+O,EAAS,GAEJsoN,EAAQ,EAAGA,EAAQD,EAAUC,IAIlC,IAHA,IAAI3sC,EAAM1oH,EAAKq1J,GACXC,EAAW5sC,EAAI1qL,OAEVu3N,EAAQ,EAAGA,EAAQD,EAAUC,IAClCxoN,EAAOwoN,GAASxoN,EAAOwoN,IAAU,GACjCxoN,EAAOwoN,GAAOp9N,KAAKuwL,EAAI6sC,IAI/B,OAAOxoN,EA/WcyoN,CAAU5qM,GACvB4Q,EAAKm1I,WAAa5jK,EAAO,QAClB+nN,IACPt5L,EAAKm1I,WAAa,KAI1B8kD,YAAa,SAASnwL,GAIlB,IAHA,IAAI0jJ,EAAcL,GAAa1+K,QAAQ++K,YAAY1jJ,GAC/Cv4B,GAAS,EAEJhP,EAAI,EAAGA,EAAIirL,EAAYhrL,OAAQD,IAAK,CACzC,IAAI0d,EAAQutK,EAAYjrL,GAOxB,GANI0d,IAAU+oD,EACV/oD,EAAQ,QAERA,GAAgB,SAGf+vG,EAAQlmF,EAAO7pB,IAAS,CACzB1O,GAAS,EACT,OAIR,OAAOA,GAGXq/M,qBAAsB,WAClB,IACIsJ,EADAh4N,EAAUlH,KAAKkH,SAGS,IAAxBA,EAAQyX,cACRzX,EAAQyX,aAAc,EACtBugN,GAAmB,GAGvBl/N,KAAKi1N,UAEDiK,IACAh4N,EAAQyX,aAAc,IAI9BskM,iBAAkB,SAASzL,EAAa0L,GACpC,IAII9uL,EAHAq+I,EADMzyK,KACS0xL,UACfnrB,EAFMvmK,KAEU2mK,WAChB03B,GAAiB5rB,EAASkrC,WAAalrC,EAAS3jI,QAAQ0oK,GAW5D,GAPIpjL,EADAiB,EAAQgpK,EAAc34L,KAAM,CAAEgxL,GAAKP,GAAOC,GAAQC,KAC1C5jB,EAASklC,WAAU,SAASt9E,GAChC,OAAOA,EAAMvrF,OAAO/1B,QAAUy+L,GAAen9E,EAAMthH,QAAUmqM,KAGzDzwC,EAAS8kC,oBAAoBC,GAGrCx3M,KAAKk9N,uBAAyB7+B,EAAc/xL,SAAW8nB,EAAO,CAC9D,IAAIwnM,EAAiBnpD,EAAS3jI,OAAOtnC,OAAS,EAC1C6yH,EAAQjmG,EAAM5sB,OAAS4sB,EAAM,GAAKA,EAEtCp0B,KAAK07N,wBAAwBrhG,EAAOuhG,EAAgBxnM,QAEpDmyI,EAAUr5J,KAAKknB,IAIvB0lM,uBAAwB,WACpB,OAAO95N,KAAK0xL,UAAUuf,WAAWzpM,QAAWxH,KAAKk9J,UAAYl9J,KAAKq2N,kBAAqBr2N,KAAKmgK,iBAAiB,CAAEk4B,GAAiBC,MAGpI6mC,uBAAwB,WACpB,IAAInyM,EAII6sM,GAHRliG,GAAa33H,KAAK6L,UAAWmhB,EAAM,IAAmB,UAAIhtB,KAAKq1I,WAAYroH,IAEvEhtB,KAAK85N,2BAEL3iG,EAAWn3H,KAAK6L,UAAWguN,EAAQ,IAAqB,UAAI75N,KAAKq1I,WAAYwkF,KAIrFuF,aAAc,SAASl4N,EAAS6mL,GAC5BspC,GAAmBr3N,KAAK20N,iBAAkBztN,GAC1ClH,KAAK20N,iBAAmBnsN,EAAWxI,KAAK20N,iBAAkBztN,GAC1DlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAK20N,kBAE/B5mC,IACA/tL,KAAK40N,OAAS7mC,EACd/tL,KAAKmlK,aAAa4oB,MAAQA,GAE9B/tL,KAAK60N,WAAW70N,KAAKkH,QAASlH,KAAK40N,QAEnC50N,KAAK03N,yBAGTnmM,WAAY,SAASrqB,EAAS6mL,GAC1B/tL,KAAKo/N,aAAal4N,EAAS6mL,GAC3B/tL,KAAKyzN,iBACLzzN,KAAK2zM,SACL3zM,KAAKm/N,0BAGTE,aAAc,SAAS9hF,GACnBv9I,KAAKmlK,aAAa5nB,IAAMhrI,QAAQgrI,GAC5Bv9I,KAAK2gF,SAAiC,QAAtB3gF,KAAK2gF,QAAQj7E,MAC7B1F,KAAKw2N,mBAIb8I,eAAgB,SAAS/wD,GACrBvuK,KAAKmlK,aAAaoJ,KAAOA,GAG7BgxD,oBAAqB,WACjBv/N,KAAK41N,wBAGT5zN,QAAS,WAGL,IAAIgrB,EASI6sM,GAXR75N,KAAK05D,YAAa,EAGlBi+D,GAAa33H,KAAK6L,UAAWmhB,EAAM,IAAqB,YAAIhtB,KAAKs5N,cAAetsM,EAAgB,MAAIhtB,KAAK2lN,mBAAoB34L,EAAe,UAAIhtB,KAAKq1I,WAAYroH,EAAgB,WAAIhtB,KAAK47J,mBAAoB5uI,IAE1MhtB,KAAKi4N,YACLj4N,KAAKi4N,UAAUj2N,iBACRhC,KAAKi4N,WAGZj4N,KAAKs9N,yBAEL3lG,GAAavoH,WAAYyqN,EAAQ,IAAqB,UAAI75N,KAAKs9N,uBAAwBzD,IAG3F75N,KAAK42N,eAEL52N,KAAKw2N,kBAELx2N,KAAKk+N,uBAGT1H,gBAAiB,WACb,IAAI71I,EAAU3gF,KAAK2gF,QACfA,IACAA,EAAQ12E,OAAO,aAAcjK,KAAKy2N,2BAClC91I,EAAQ12E,OAAO,aAAcjK,KAAK02N,2BAClC/1I,EAAQ3+E,UAERhC,KAAK2gF,QAAU,OAIvB+0I,mBAAoB,WAChB,IAAIyD,EAAan5N,KAAKy1N,YAEtB,GAAI0D,EACA,KAAOA,EAAW3xN,OAAS,GACvB2xN,EAAWtjN,QAAQ7T,WAK/B40N,aAAc,WACV,IAAI9tK,EAAQ9oD,KAAK81N,OAEbhtK,IACAA,EAAM9mD,UACNhC,KAAK81N,OAAS,MAGlB91N,KAAKmjN,oBACLnjN,KAAK25N,uBACL35N,KAAK01N,qBAED11N,KAAKk9J,UACLl9J,KAAKk9J,SAASl7J,UAGdhC,KAAK2mK,YACL3mK,KAAK2mK,WAAW3kK,UAGhBhC,KAAKw3N,iBACLx3N,KAAKw3N,eAAex1N,iBACbhC,KAAKw3N,gBAGZx3N,KAAKs3N,YACLt3N,KAAKs3N,UAAUt1N,iBACRhC,KAAKs3N,WAGZt3N,KAAKy3N,kBACLz3N,KAAKy3N,gBAAgBz1N,iBACdhC,KAAKy3N,oBAiBxB,SAAStB,GAAoB90F,EAAQj/H,GACjC,GAAIi/H,EACA,IAAK,IAAIz3H,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IACnC,GAAIy3H,EAAOz3H,GAAKk9J,WAAa1kK,EACzB,MAAO,CAAEi/H,EAAOz3H,IAqEhC,SAASivN,GAA4BjtC,UAC1BA,EAAeK,WACfL,EAAeS,cACfT,EAAeqB,mBACfrB,EAAele,YACfke,EAAe0B,oBACf1B,EAAeW,WACfX,EAAeY,aACfZ,EAAeC,YACfD,EAAeuB,oBACfvB,EAAeqE,eACfrE,EAAesB,mBACftB,EAAeO,cACfP,EAAeQ,mBACfR,EAAee,YACff,EAAeM,eACfN,EAAev7B,cACfu7B,EAAeyB,sBACfzB,EAAekB,iBACflB,EAAemB,iBACfnB,EAAegB,iBACfhB,EAAeiB,iBACfjB,EAAe2B,UAG1B,SAASqY,GAAWhzB,GAGhB,IAFA,IAAIn6G,EAAS,GAEJlxD,EAAI,EAAGA,EAAIqrK,EAAKprK,OAAQD,IAAK,CAClC,IAAIy9B,EAAO4tI,EAAKrrK,GACZo1L,EAAW33J,EAAK99B,QAAQ9E,KACxBu6L,IACAlkI,EAAOkkI,GAAY33J,EAAK4uB,SAIhC,OAAO6E,EAiDX,IAAI+mK,GAAc,CAAE,OAAQ,cAE5B,SAASnI,GAAmBnmB,EAAiBhqM,GACzC,IAAK,IAAI+d,KAAS/d,EACd,IAAKmuB,EAAQpQ,EAAOu6M,KAAgBt4N,EAAQwH,eAAeuW,GAAQ,CAC/D,IAAIw6M,EAAav4N,EAAQ+d,GACrBy6M,EAAgBxuB,EAAgBjsL,GACpC,GAAI+vG,EAAQ0qG,GAAgB,CACxB,IAAIC,EAA2B,OAAfF,EACXE,IAAc3qG,EAAQyqG,WAChBvuB,EAAgBjsL,GACnB06M,UACOz4N,EAAQ+d,IAEZy6M,GAAiBvgE,EAASsgE,IAC7BtgE,EAASugE,IACTrI,GAAmBqI,EAAeD,KAQ1D,SAASxI,GAAkB1lB,GACvB,IAAK,IAAI3nM,EAAM,EAAGA,EAAM2nM,EAAM/pM,OAAQoC,IAClC2nM,EAAM3nM,GAAKulM,eAInB9uC,EAAkBm0D,GAAO,CACrB+B,SAAU,GACVrmC,UAAW,GACXtC,OAAQ,CACJthL,SAAS,EACTojK,OAAQ,IAEZge,aAAc,GACd9B,eAAgB,CACZlmL,KAAMwwL,GACNroL,KAAM,GACN04J,UAAW,CACPj6J,SAAS,GAEbojK,OAAQ,GACRk8B,eAAgB,CACZt/L,SAAS,IAGjBwiC,OAAQ,GACRqhJ,aAAc,KACdh0B,QAAS,CACL7vJ,SAAS,GAEbqS,aAAa,EACbm8J,UAAW,GACXrI,SAAU,GACV10H,MAAO,GACPktJ,MAAO,GACPE,MAAO,GACPoG,MAAO,CAAE,IACTziC,UAAU,EACVyoD,UAAU,IAGd52N,MAAM6H,WAAW7H,MAAMmpB,QAAS,CAC5B00I,UAAWA,GACXszB,WAAYA,GACZ+S,UAAWA,GACXvB,YAAaA,GACbqC,sBAAuBA,GACvBQ,IAAKA,GACLY,SAAUA,GACVhB,SAAUA,GACVqE,aAAcA,GACdtB,QAASA,GACT4C,YAAaA,GACbY,OAAQA,GACRM,YAAaA,GACbhE,iBAAkBA,GAClBhB,YAAaA,GACb3M,iBAAkBA,GAClBP,oBAAqBA,GACrByhB,oBAAqBA,GACrBqY,MAAOA,GACPrmB,eAAgBA,GAChBrL,cAAeA,GACf4D,cAAeA,GACfmH,UAAWA,GACXR,iBAAkBA,GAClBgM,kBAAmBA,GACnB2U,WAAYA,GACZK,cAAeA,GACfN,aAAcA,GACdh0B,aAAcA,GACdrG,qBAAsBA,GACtBitB,UAAWA,GACX0G,cAAeA,GACf/D,OAAQA,GACRV,WAAYA,GACZF,aAAcA,GACdrf,UAAWA,GACXzD,UAAWA,GACXqB,YAAaA,GACbn7G,KAAMA,GACNmiI,aAAcA,GACd6C,SAAUA,GACVL,cAAeA,GACfmD,YAAaA,GACbjE,WAAYA,GACZ5Y,aAAcA,GACdoH,oBAAqBA,GACrBoM,gBAAiBA,GACjB9kB,iBAAkBA,GAClB8Z,SAAUA,GACVM,cAAeA,GACfG,eAAgBA,GAChBiB,eAAgBA,GAChBzQ,aAAcA,GACdF,gBAAiBA,GACjB4d,iBAAkBA,GAClBtD,UAAWA,GACXvM,iBAAkBA,GAClBlmB,aAAcA,GACd4P,cAAeA,GACf4C,kBAAmBA,GACnBkC,UAAWA,GACXjiF,QAASA,GACT82F,UAAWA,GACXN,UAAWA,GACXQ,eAAgBA,GAChBD,iBAAkBA,GAClByM,WAAYA,GACZ7F,eAAgBA,GAChBd,cAAeA,GACfJ,SAAUA,GACVnwB,UAAWA,GACXG,UAAWA,GACXI,cAAeA,GACfL,eAAgBA,GAChB6R,aAAcA,GACdwM,gBAAiBA,GACjB9G,WAAYA,GACZiH,aAAcA,GACd1zB,gBAAiBA,GACjB2V,aAAcA,GACdge,iBAAkBA,GAClBjV,YAAaA,GACbkV,mBAAoBA,GACpBC,aAAcA,GACd9d,SAAUA,GACViU,mBAAoBA,GACpBhyH,SAAUA,GACV87H,WAAYA,GACZN,eAAgBA,GAChBS,kBAAmBA,GACnBQ,uBAAwBA,KA1se5B,CA6seG7vM,OAAOH,MAAM+G,SAUhB,SAAU/E,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClB3tB,EAASJ,EAAEI,OAEX4E,GADahH,EAAMJ,WACHoC,EAAEgF,eAElBmmE,GADUntE,EAAM4C,QACP5C,EAAMitB,YAEfgyM,EAAa,mBAEbC,EAAc,cAGdC,EAAQ,QAERC,EAAO,OACPC,EAAU,UACVljL,EAAS,SACTmjL,EAAM,IAENC,EAAmB,CACnBptM,OAAQ,iCACRo0I,QAAS,yBACTgM,QAAS,gBACTitD,eAAgB,0DAChBC,KAAM,oBACNpxL,KAAM,oBACNqxL,UAAW,8BACXC,SAAU,yBACVC,SAAU,yBACVC,aAAc,6BACdC,QAAS,UACTC,OAAQ,WACRC,aAAc,gCAGdC,EAAalwM,EAAO3tB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEXkH,EAAUA,GAAW,GAErBwpB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAKkwE,WAEDjxE,EAAQqnD,WACRtmD,EAAK44N,YACL54N,EAAKkpB,aAGTlpB,EAAKmE,QAAQ6c,GAAG62M,EAAQF,EAAY,qBAAsB33N,EAAK85E,OAAOv4E,KAAKvB,IAEvEf,EAAQwB,OAASxB,EAAQ45N,iBAAmB55N,EAAQktB,MACpDnsB,EAAKq+M,SACEp/M,EAAQktB,OACfnsB,EAAKmsB,MAAMltB,EAAQktB,OAGvBnsB,EAAKypB,mBAELzpB,EAAK84N,eAAiBpgO,EAAMm4B,UAAS,WACjC7wB,EAAKshB,QAAO,OAIpBriB,QAAS,CACLqnD,UAAU,EACVyyK,cAAc,EACdF,gBAAgB,EAChB1sM,MAAO,KACPhyB,KAAM,aACNqN,KAAM,SACNoB,IAAK,EACLowN,SAAU,OACVC,cAAe,gBACfj3M,SAAU,CACNk3M,UAAW,eAInB92N,OAAQ,CAAEyyC,EAAQgjL,GAElB99N,QAAS,WACL,IAAIiG,EAAOjI,KAEX0wB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEvBtH,EAAMq4B,aAAa/wB,EAAK84N,gBAExB94N,EAAKmE,QACAa,IAAIhF,EAAKmE,QAAQ2pB,KAAK,UACtB9oB,IAAIhF,EAAKmE,QAAQ2pB,KAAK,MACtBkD,IAAI2mM,IAGbxrM,MAAO,SAASA,GACZ,IAAInsB,EAAOjI,KAEX,GAAIo0B,IAAUxxB,EACV,OAAOqF,EAAKf,QAAQktB,MAGxBnsB,EAAKf,QAAQktB,MAAQA,EACrBnsB,EAAKk6L,UAAY/tK,EACjBnsB,EAAK2V,WAGTwjN,QAAS,SAASlyM,GACd,IAAIjnB,EAAOjI,KAEPkvB,IAAQjnB,EAAKS,UACbT,EAAKo5N,kBAAkBnyM,GACvBjnB,EAAK2V,UACL3V,EAAKmC,QAAQ0yC,EAAQ,CAAExyC,OAAQtK,KAAM0I,MAAOwmB,MAIpDmyM,kBAAmB,SAAS34N,GACxB,IAGI0mC,EAAM87F,EAHNjjI,EAAOjI,KAEPo0B,EADUnsB,EAAKf,QACCktB,MAKpB,GAFA82G,EAAWjjI,EAAKq5N,OAAO54N,GAElB0rB,EAAL,CAKAnsB,EAAKk6L,UAAY,GAEjB,IAAK,IAAI56L,EAAI,EAAGA,EAAI2jI,EAAS1jI,OAAQD,IAGpB,MAFb6nC,EAAOnnC,EAAKs5N,MAAMntM,EAAMxtB,MAAM,EAAGW,EAAI,MAElBmB,EAAMiN,QAAQy5B,IAAS,GAAKhb,EAAM7sB,IAAM6sB,EAAM7sB,GAAGq5B,OAASsqG,EAAS3jI,GAClFU,EAAKk6L,UAAUxgM,KAAKyyB,EAAM7sB,IAE1BU,EAAKk6L,UAAUxgM,KAAKupI,EAAS3jI,SAZjCU,EAAKf,QAAQktB,MAAQnsB,EAAKk6L,UAAYj3D,GAiB9CnpD,OAAQ,SAASp9E,GACb,IAAIsD,EAAOjI,KACPkH,EAAUe,EAAKf,QACf8nC,EAAOrsC,EAAEgC,EAAE2C,QAAQ+E,QAAQ4zN,EAAMC,EAAiBlxL,MAClDwyL,EAAmBxyL,EAAKyyL,UAAUzrM,UAClC0rM,EAAgBz5N,EAAK05N,UAAUH,GAC/BpyL,EAAOnnC,EAAKs5N,MAAMG,GAClBl5F,EAAUvgI,EAAKk6L,UAAUnzJ,EAAKj2B,SAE7B7R,EAAQ85N,cACTr8N,EAAEwE,iBAGDlB,EAAKmC,QAAQ01N,EAAO,CAAEx1N,OAAQrC,EAAM0gB,cAAehkB,EAAGi9N,OAAyB,aAAjBp5F,EAAQ9iI,KAAqBspC,KAAMw5F,KAClGvgI,EAAKm5N,QAAQhyL,IAIrBuyL,UAAW,SAASvtM,GAChB,IAAInsB,EAAOjI,KAEX,OAAO2C,EAAE2X,IAAI8Z,GAAO,SAAS4a,GACzB,OAAO/mC,EAAKk6L,UAAUx/L,EAAEqsC,GAAMj2B,UAAYi2B,EAAKkiC,cAIvD2wJ,MAAO,WACH,IAAI55N,EAAOjI,KACPykB,EAAQxc,EAAKwc,MAEjBxc,EAAK65N,SAAW75N,EAAKS,QACrBT,EAAK04N,aAAa/zN,IAAI,SAAU3E,EAAKmE,QAAQO,UAC7C1E,EAAKi/J,QAAQ/5J,OACblF,EAAKwc,MAAMyK,IAAIjnB,EAAKS,SACpBT,EAAKwc,MAAM3B,KAAK+8M,GAAa,GAC7B53N,EAAK04N,aAAazzN,OAElB6rB,YAAW,WACPtU,EAAM2hB,aAId6+E,MAAO,SAAS88G,GACZ,IAAI95N,EAAOjI,KACPykB,EAAQxc,EAAKwc,MACbk8M,EAAe14N,EAAK04N,aACpBv0N,EAAUnE,EAAKmE,QACf86J,EAAUj/J,EAAKi/J,QACfh4I,EAAMzK,EAAMyK,MAAMzsB,QAAQ,UAAW,KAErCykK,EAAQ36J,GAAG,cAIXw1N,IACA7yM,EAAMjnB,EAAK65N,UAGfr9M,EAAM3B,KAAK+8M,GAAa,GACxBc,EAAaxzN,OACb+5J,EAAQh6J,OACRuX,EAAMyK,IAAI,IACVjnB,EAAKm5N,QAAQlyM,GACb9iB,EAAQ+f,YAAY+zM,EAAiBO,WAGzCv9G,SAAU,SAASv+G,GACf,IAAIsD,EAAOjI,KACPuR,EAAM5M,EAAEwiC,QACR66L,EAAUzwN,IAAQ5Q,EAAMupB,KAAKK,MAC7B03M,EAAQ1wN,IAAQ5Q,EAAMupB,KAAKM,KAE3Bw3M,GAAWC,KACXh6N,EAAKg9G,MAAMg9G,GAEXlpM,YAAW,WACP9wB,EAAKi/J,QAAQnxI,KAAK,KAAK7rB,QAAQE,QAAQ,cAKnD83N,eAAgB,SAAS56N,GACrB,IAAI66N,EACA76N,EAAO8kB,SAAS8zM,EAAiBhtD,UACjC5rK,EAAO+E,QAAQ4zN,EAAMC,EAAiBlxL,MAE1C,OAAI1nC,EAAO,KAAOtH,KAAKoM,QAAQ,KAIxB+1N,IAAgB76N,EAAO8kB,SAAS,4BAG3Cg2M,gBAAiB,SAAS/gO,GACtB,IACIiG,EAAS3E,EAAEtB,EAAGiG,QACd46N,EAFOliO,KAEekiO,eAAe56N,GAErCjG,EAAG8lC,UAAYxmC,EAAMupB,KAAKK,OAAU23M,GAJ7BliO,KAKF6hO,SAIbQ,cAAe,SAAShhO,GACpB,IACIiG,EAAS3E,EAAEtB,EAAGiG,QADPtH,KAEekiO,eAAe56N,IAGrCtH,KAAK6hO,SAIbS,cAAe,SAASjhO,GACpBsB,EAAEtB,EAAGiG,QAAQid,SAAS27M,EAAiBO,UAG3C8B,aAAc,SAASlhO,GACnBsB,EAAEtB,EAAGiG,QAAQ6kB,YAAY+zM,EAAiBO,UAG9CtoJ,SAAU,WACN,IAAIlwE,EAAOjI,KACP6L,EAAU7L,KAAK6L,QACf22N,EAAiB32N,EAAQU,GAAG,SAC5Bo0N,EAAeh+N,EAAE,eAAkBu9N,EAAiBS,aAAe,kBAAsBT,EAAiBC,eAAiB,mBAE/Hl4N,EAAKmE,QAAUo2N,EAAiB32N,EAC3BmgB,KAAKrpB,EAAE,YACPwJ,SAAWN,EAEZ22N,GACAv6N,EAAK4D,QACAmgB,KAAK20M,GACLp8M,SAAS27M,EAAiBhtD,SAE/BjrK,EAAK04N,aAAe14N,EAAKmE,QAAQ2pB,KAAKkqM,EAAMC,EAAiBS,cAAcxzN,QAE3ElF,EAAK04N,aAAe14N,EAAKmE,QACpB2tC,OAAO4mL,GACP5qM,KAAKkqM,EAAMC,EAAiBS,cAAcxzN,OAGnDlF,EAAKmE,QAAQmY,SAAS27M,EAAiBptM,QACvC7qB,EAAKmE,QAAQ0W,KArRJ,aAqRqB,cAE9B7a,EAAKi/J,QAAUj/J,EAAKmE,QACf2tC,OAAOp3C,EAAE,UAAU4hB,SAAS27M,EAAiBh5D,QAAU,mBACvDnxI,KAAKkqM,EAAMC,EAAiBh5D,UAIrC25D,UAAW,WACP,IAAI54N,EAAOjI,KAEPwiO,EADUv6N,EAAK4D,QACUU,GAAG,SAG5BtE,EAAKwc,MADL+9M,EACav6N,EAAK4D,QAELlJ,EAAE,aAGnBsF,EAAK04N,aAAa5qM,KAAKkqM,EAAMC,EAAiBC,eAAev1N,MAAM,KAAK,IAAImvC,OAAO9xC,EAAKwc,OAExFxc,EAAKwc,MACAF,SAAS27M,EAAiBhtD,SAC1BpwJ,KAAK+8M,GAAa,GAEvB53N,EAAKwc,MACAwE,GAAG82M,EAAOH,EAAY33N,EAAKg9G,MAAMz7G,KAAKvB,GAAM,IAC5CghB,GAAG+2M,EAAUJ,EAAY33N,EAAKi7G,SAAS15G,KAAKvB,IAEjDA,EAAKmE,QACA6c,GAhTD,QAgTY22M,EAAY33N,EAAKq6N,cAAc94N,KAAKvB,IAC/CghB,GAAG82M,EAAOH,EAAY33N,EAAKs6N,aAAa/4N,KAAKvB,IAC7CghB,GAAG+2M,EAAUJ,EAAY33N,EAAKm6N,gBAAgB54N,KAAKvB,IACnDghB,GAAG62M,EAAQF,EAAY33N,EAAKo6N,cAAc74N,KAAKvB,KAGxDq+M,OAAQ,WACJ,IAAIr+M,EAAOjI,KACPkH,EAAUe,EAAKf,QAEfA,EAAQwB,MACRT,EAAKS,MAAMxB,EAAQwB,OACZxB,EAAQ45N,eACf74N,EAAKS,MAAM5H,OAAOyhB,SAAS4V,KAAK11B,QAAQ,gBAAgB,IAAIA,QAAQ,MAAO,KAE3EwF,EAAKS,MAAM,KAInB44N,OAAQ,SAAS54N,GACb,OAAOA,EAAMkC,MAAM,KAAKqrB,QAAO,SAAS+Y,EAAMj2B,GAC1C,QAAIA,EAAQ,GAAc,KAATi2B,OAQzB1wB,MAAO,WACH,OAAO3d,EAAM4C,QAAQ+a,MAAMte,KAAKoM,UAGpCwR,QAAS,WACL,IAQI4qH,EACA5+H,EACApC,EAAQi7N,EAVRx6N,EAAOjI,KACPkH,EAAUe,EAAKf,QACf+iB,EAAW/iB,EAAQ+iB,SACnBi3M,EAAgBj5N,EAAKf,QAAQg6N,cAC7BpxN,EAAO,GACPqoB,EAAO,GACPuqM,EAA8B,KAAjBz6N,EAAKS,QAClBwiI,EAAWjjI,EAAKk6L,UASpB,IAJqB,iBAAjB++B,GAAoCj5N,EAAKqW,UACzC4iN,EAAgB,gBAGft3N,EAAM,EAAGpC,EAAS0jI,EAAS1jI,OAAQoC,EAAMpC,EAAQoC,IAClD4+H,EAAU0C,EAASthI,GACnB64N,EAAgB74N,IAAQshI,EAAS1jI,OAAS,EAEtCghI,IAAY5lI,IACPkN,EAGDqoB,GAAQqwG,EAAQ5nG,MAAQ4nG,GAAW,GAFnCrwG,EAAO,IAKY,iBAAZqwG,GACPA,EAAU,CACN9iI,KAAOoK,EAAoB,OAAb,WACdqoB,KAAMjxB,EAAQ85N,aAAe7oM,EAAO,IACpCyI,KAAM4nG,EACNm6F,UAAW7yN,EACX8yN,WAAY9yN,EACZwnF,KAAOxnF,EAA0B,GAAnB5I,EAAQ+5N,SACtB4B,UAAY/yN,EAAkC,GAA3B,yBACnBgzN,UAAYhzN,EAAmC,GAA5BowN,EAAiBK,SACpCW,cAAeA,EACf6B,iBAAkBN,IAAkBC,EACpCj2F,YAAag2F,EACbrrI,UAAW,IAGfnvF,EAAKk6L,UAAU33L,OAAOZ,EAAK,EAAG4+H,IACvB7gI,EAAc6gI,KACrBA,EAAUzlI,EAAO,GAAIylI,EAAS,CAC1B9iI,KAAM8iI,EAAQ9iI,KAAO8iI,EAAQ9iI,KAAK4S,cAAgB,SAkBjC,cAfrBkwH,EAAUzlI,EAAO,GAAIylI,EAAS,CAC1B5nG,KAAM4nG,EAAQ5nG,MAAQ,GACtBmd,MAAOyqF,EAAQ5nG,MAAQ,GACvB02D,KAAMkxC,EAAQlxC,OAA0B,aAAjBkxC,EAAQ9iI,KAAsBwB,EAAQ+5N,SAAW,IACxE7pI,UAAWoxC,EAAQpxC,WAAa,GAChCq1C,YAAag2F,EACbM,iBAAkBN,GAAiBv3F,EAAS1jI,OAAS,EACrD2wB,KAAMjxB,EAAQ85N,aAAex4F,EAAQrwG,KAAO,IAC5C+oM,cAAeA,EACf2B,UAAWr6F,EAAQq6F,WAAa,GAChCC,UAAWt6F,EAAQs6F,WAAa,GAChCH,SAAUn6F,EAAQm6F,WAAa//N,EAA+B,aAAjB4lI,EAAQ9iI,MAAwC,SAAjB8iI,EAAQ9iI,KAAkB8iI,EAAQm6F,SAC9GC,SAAUp6F,EAAQo6F,WAAahgO,EAA+B,SAAjB4lI,EAAQ9iI,MAAoC,aAAjB8iI,EAAQ9iI,KAAsB8iI,EAAQo6F,YAGtGl9N,OACR8iI,EAAQq6F,WAAa,0BACrBr6F,EAAQs6F,WAAa,IAAM5C,EAAiBK,WAI/B,aAAjB/3F,EAAQ9iI,MAAwC,KAAjB8iI,EAAQ5nG,OACvC4nG,EAAQzqF,MAAQ9zB,EAASk3M,WAG7BhpM,GAAQA,EAAKhoB,MAAM,OAAS,GAAK,IAEjCL,GAAQnP,EAAMkP,SAAS7P,KAAKgjO,aAApBriO,CAAkC6nI,IAIlDxoI,KAAKknK,QACA36G,QACAxS,OAAOp3C,EAAEmN,IAEd9P,KAAKupB,QAAO,IAGhBy5M,aAAc,SAAUn1N,GACpB,IACQo1N,EAUJC,EAAUr1N,EAAK80N,SAAWhiO,EAAMgpB,GAAG2tE,KAAK30F,EAAG,gBAAoBmrE,EAAOjgE,EAAKupF,WAAc,aAAgB,CAAEE,KAAMxpB,EAAOjgE,EAAKypF,QAAW,GACxI6rI,EAAet1N,EAAKk1N,gBAAkBpiO,EAAMgpB,GAAG2tE,KAAK30F,EAAE,wEAA6E,CAAE20F,KAAMxpB,EAAOjgE,EAAKqzN,eAAgBzxN,KAAM,WAAc,GAC3LmxB,EAAO/yB,EAAK+0N,SAAY,0CAA8D,IAAjB/0N,EAAKu1N,QAAoBt1J,EAAOjgE,EAAK+yB,MAAQ/yB,EAAK+yB,MAAQ,UAAa,GAE5IyiM,EAAU,YAAgBv1J,EAAOjgE,EAAKsqB,MAAS,YAAiB21C,EAAOjgE,EAAKi1N,WAAc,KAdtFG,EAAc,CACd,oBAAmC,aAAdp1N,EAAKnI,KAC1B,6BAA8BmI,EAAK+0N,UAAY/0N,EAAK80N,SACpD,yBAA0B90N,EAAK80N,WAAa90N,EAAK+0N,SACjD,aAAc/0N,EAAK4+H,aAA6B,aAAd5+H,EAAKnI,MAGpCjF,OAAOypB,KAAK+4M,GAAahtM,QAAO,SAAU1uB,GAAK,OAAO07N,EAAY17N,MAAOsD,KAAK,KAOgC,wBAA0BgD,EAAK4+H,YAAc,sBAAwB,IAAM,sBAAyB5+H,EAAK4+H,aAA6B,aAAd5+H,EAAKnI,KAAuB,uBAAyB,IAAM,4BAAgCooE,EAAOjgE,EAAK+yB,MAAQ/yB,EAAKkwC,OAAU,KAAQmlL,EAAUtiM,EAAO,OAExY,MAAQ,gCAAoCktC,EAAOjgE,EAAKg1N,WAAc,KAAOh1N,EAAK4+H,YAAc,yBAA2B,IAAM,KAAQ42F,EAAUF,EAAe,SAGtKG,sBAAuB,SAASh3N,GAC5B,IACIg0N,EADOtgO,KACSoM,QAAQ2pB,KAAKkqM,EAAMC,EAAiBI,UAEpDh0N,EACAg0N,EAASvqM,KAAKkqM,EAAMC,EAAiBG,WAChC97M,SAAS27M,EAAiBM,cAC1Br0M,YAAY+zM,EAAiBQ,QAElCJ,EAASvqM,KAAKkqM,EAAMC,EAAiBM,cAChCr0M,YAAY+zM,EAAiBM,cAC7Br+L,OAAO5d,SAAS27M,EAAiBQ,SAI9C6C,aAAc,WACV,IAMIC,EACAx0L,EAPA/mC,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACf86J,EAAUj/J,EAAKi/J,QACf9yI,EAAQnsB,EAAKi/J,QAAQnxI,KAAKkqM,EAAMC,EAAiBlxL,KAAO,iCACxDy0L,EAAiB9iO,EAAMqL,YAAY/D,EAAKi/J,QAAQnxI,KAAKkqM,EAAMC,EAAiBG,UAAY,YAAYn2N,SACpGw5N,EAAiBt3N,EAAQY,QAAU/E,EAAKf,QAAQ2J,IAAM4yN,EAI1D,GAAoB,GAAhBrvM,EAAM5sB,OAAV,CAIA,IAAK,IAAID,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,GAAK,EAGnC,GAFAynC,EAAOrsC,EAAEyxB,EAAM7sB,IAEX5G,EAAMqL,YAAYk7J,IAAYw8D,EAAgB,CAC9C,GAAIn8N,GAAK6sB,EAAM5sB,OAAS,EACpB,MAGJg8N,EAAax0L,EACbA,EAAKjZ,KAAKkqM,EAAMC,EAAiBG,WAAWlzN,OAC5C6hC,EAAKjZ,KAAKkqM,EAAMC,EAAiBE,MAAMjzN,OACvClF,EAAKq7N,uBAAsB,GAI/BE,GACAA,EAAWztM,KAAKkqM,EAAMC,EAAiBG,WAAWnzN,SAI1Dy2N,UAAW,SAAS30L,EAAM40L,EAAcF,GACpC,SAAI10L,EAAKxnC,QAAUk8N,EAAiBE,EAAejjO,EAAMqL,YAAYgjC,GAAM,MACvEA,EAAKjZ,KAAKkqM,EAAMC,EAAiBE,MAAMlzN,OACvC8hC,EAAK2Q,OAAO5pB,KAAKkqM,EAAMC,EAAiBG,WAAWnzN,QAC5C,IAMf22N,cAAe,WACX,IAMI70L,EAAM40L,EANN37N,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACf86J,EAAUj/J,EAAKi/J,QACf9yI,EAAQnsB,EAAKi/J,QAAQnxI,KAAKkqM,EAAMC,EAAiBlxL,KAAO,iCACxDy0L,EAAiB9iO,EAAMqL,YAAY/D,EAAKi/J,QAAQnxI,KAAKkqM,EAAMC,EAAiBG,UAAY,YAAYn2N,SACpGw5N,EAAiBt3N,EAAQY,QAAU/E,EAAKf,QAAQ2J,IAAM4yN,EAGrDrvM,EAAM5sB,QACPS,EAAKq7N,uBAAsB,GAG/B,IAAK,IAAI/7N,EAAI6sB,EAAM5sB,OAAS,EAAGD,GAAK,IAChCynC,EAAOrsC,EAAEyxB,EAAM7sB,OAEfq8N,EAAejjO,EAAMqL,YAAYk7J,IAEdw8D,IAAmB1jO,KAAK2jO,UAAU30L,EAAM40L,EAAcF,IALtCn8N,OAW3CwqB,QAAS,WACL/xB,KAAKujO,eACLvjO,KAAK6jO,iBAGTjyM,QAAS,WACL,OAAOjxB,EAAMqxB,WAAWhyB,KAAKoM,UAGjC1D,MAAO,SAASwmB,GACZ,IAAIjnB,EAAOjI,KAEX,OAAIkvB,IAAQtsB,GACRqF,EAAKo5N,kBAAkBnyM,QACvBjnB,EAAK2V,WAIF3V,EAAKs5N,MAAMt5N,EAAKk6L,YAG3Bo/B,MAAO,SAASuC,GACZ,OAAOnhO,EAAE2X,IAAIwpN,GAAO,SAAS3+M,GACzB,IAAIyb,EAAOj5B,EAAcwd,GAAKA,EAAEyb,KAAOzb,EACvC,MAAgB,MAATyb,EAAe,GAAKA,KAC5B/1B,KAAK,QAIhBlK,EAAM+xB,cAAcyY,eAAe,aAAc,iBAEjDxqC,EAAMgpB,GAAGqN,OAAO4pM,GA/jBpB,CAikBG9/N,OAAOH,MAAM+G,QACF/G,OAEd,SAAUgC,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfmpB,EAAUnpB,EAAMmpB,QAChB4G,EAAS/vB,EAAMgpB,GAAG+G,OAElBqzM,EAAkBrzM,EAAO3tB,OAAO,CAChCoF,KAAM,SAAS0D,EAAS3E,GAGpB,GAFAwpB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,IAE9BA,EAAQ0nK,MACT,MAAM,IAAIn+J,MAAM,kEAGpBzQ,KAAKgkO,qBACLhkO,KAAKikO,oBAELtjO,EAAM6zB,OAAOx0B,KAAM8pB,EAAQH,KAG/Btf,OAAQ,GAERnD,QAAS,CACL9E,KAAM,kBACNk+N,SAAU,CACN56N,KAAM,WACN4xF,KAAM,OACN12D,KAAM,OACN+hM,UAAU,IAIlB3gO,QAAS,WACDhC,KAAKkkO,aACLlkO,KAAKkkO,WAAWliO,UAChBhC,KAAKkkO,WAAa,MAGlBlkO,KAAK4uK,QACL5uK,KAAK4uK,MAAM3kK,OAAO,YAAajK,KAAKmkO,mBACpCnkO,KAAK4uK,MAAM3kK,OAAO,uBAAwBjK,KAAKokO,8BAC/CpkO,KAAK4uK,MAAQ,MAGjBl+I,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,OAG3BgkO,mBAAoB,SAA4Bj4L,GAC5C,IAAIolF,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QAEnB,GAAiD,mBAAtCA,EAAQ0nK,MAAMy1D,oBACrBrkO,KAAK4uK,MAAQ1nK,EAAQ0nK,UAClB,IAA6B,iBAAlB1nK,EAAQ0nK,MAQtB,MAAM,IAAIn+J,MAAM,uFALhB,GAFAzQ,KAAK4uK,MAAQjsK,EAAEuE,EAAQ0nK,OAAO01D,iBAAmB3hO,EAAE,IAAMuE,EAAQ0nK,OAAO01D,iBAEnEtkO,KAAK4uK,QAAU7iI,EAEhB,YADAhT,YAAW,WAAc,OAAOo4F,EAAS6yG,oBAAmB,MAOpEhkO,KAAKmkO,kBAAoBnkO,KAAKmkO,kBAAkB36N,KAAKxJ,MACrDA,KAAK4uK,MAAMplK,KAAK,YAAaxJ,KAAKmkO,mBAElCnkO,KAAKokO,6BAA+BpkO,KAAKokO,6BAA6B56N,KAAKxJ,MAC3EA,KAAK4uK,MAAMplK,KAAK,uBAAwBxJ,KAAKokO,+BAGjDH,kBAAmB,WACf,IAAI9yG,EAAWnxH,KAEXukO,EAAoB5hO,EAAE,WAC1B3C,KAAK6L,QAAQkuC,OAAOwqL,GACpBvkO,KAAKkkO,WAAa,IAAIvjO,EAAMgpB,GAAGi3M,WAAW2D,EAAmB,CACzDnwM,MAAO,CAACp0B,KAAKkH,QAAQo5N,YAGzBtgO,KAAKkkO,WAAW16N,KAAK,SAAS,SAAU7E,GAAK,OAAOwsH,EAASqzG,mBAAmB7/N,OAGpF6/N,mBAAoB,SAAS7/N,GACzB,GAAK3E,KAAKkkO,YAAelkO,KAAK4uK,MAA9B,CAIA,IACIlkG,EADQ1qE,KAAKkkO,WAAW9vM,QACVqwM,WAAU,SAAUz1L,GAAQ,OAAOA,IAASrqC,EAAEqqC,QAEpDhvC,KAAK4uK,MACXy1D,oBAAoB35J,KAG9By5J,kBAAmB,SAASx/N,GACnB3E,KAAKkkO,aAAcv/N,EAAE0E,sBAI1BrJ,KAAKkkO,WAAW9vM,MAAMp0B,KAAKkkO,WAAW9vM,QAAQ/W,OAAQ,CAAC,CAAE3X,KAAM,OAAQk7B,KAAMj8B,EAAE01H,MAAMysC,cAIzFs9D,6BAA8B,SAASz/N,GACnC,GAAK3E,KAAKkkO,WAAV,CAIA,IAAI9vM,EAAQp0B,KAAKkkO,WAAW9vM,QAC5BA,EAAQA,EAAMxtB,MAAM,EAAGjC,EAAE+lE,MAAQ,GACjC1qE,KAAKkkO,WAAW9vM,MAAMA,OAI9BtK,EAAQH,GAAGqN,OAAO+sM,GApHtB,CAsHGjjO,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIiuF,EAAK,cACLlwF,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACdmE,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aACpB4d,EAAUnpB,EAAMmpB,QAChB00I,EAAY10I,EAAQ00I,UACpBkmE,EAAa56M,EAAQ0qM,MACrBriC,EAAeroK,EAAQqoK,aACvBzhK,EAAS/vB,EAAMgpB,GAAG+G,OAClB3iB,EAAapN,EAAMkN,KAAKE,WACxBvF,EAAa7H,EAAM6H,WACnBwsH,EAAUlrG,EAAQkrG,QAClBi9D,EAAWnoK,EAAQmoK,SACnBlyB,EAAmBj2I,EAAQi2I,iBAC3B1qI,EAAUvL,EAAQuL,QAClB45I,EAAWnlJ,EAAQmlJ,SACnBhsK,EAAUC,MAAMD,QAChBF,EAASJ,EAAEI,OACX8M,EAAWlP,EAAMkP,SACjBi+D,EAASntE,EAAMitB,WAEf+2M,EAAgB,aAAe9zI,EAC/B0sE,EAAmBiB,EAAUjB,iBAC7Bs6B,EAAoBr5B,EAAUq5B,kBAC9BC,EAAoBt5B,EAAUs5B,kBAC9BC,EAAoBv5B,EAAUu5B,kBAC9BC,EAAex5B,EAAUw5B,aACzBC,EAAez5B,EAAUy5B,aACzBC,EAAc15B,EAAU05B,YACxBC,EAAe35B,EAAU25B,aACzBc,EAAcz6B,EAAUy6B,YACxBb,EAAkB55B,EAAU45B,gBAC5BC,EAAkB75B,EAAU65B,gBAC5BC,EAAkB95B,EAAU85B,gBAC5Bn1G,EAAOq7E,EAAUr7E,KACjBo1G,EAAW/5B,EAAU+5B,SACrBC,EAAah6B,EAAUg6B,WACvBiB,EAAYj7B,EAAUi7B,UACtBmrC,EAAyB,uBACzBnsC,EAAaj6B,EAAUi6B,WACvBC,EAAOl6B,EAAUk6B,KACjBC,EAAWn6B,EAAUm6B,SACrBC,EAAep6B,EAAUo6B,aACzB78G,EAASyiF,EAAUziF,OACnB88G,EAAar6B,EAAUq6B,WACvBC,EAASt6B,EAAUs6B,OACnB76B,EAAaO,EAAUP,WACvBC,EAAaM,EAAUN,WACvBC,EAAaK,EAAUL,WACvBxtE,EAAmBhuF,EAAEyM,SAASiK,iBAE9ByjC,EAAS,SACT+nL,EAAY,YACZC,GAAQ,QAGR92J,GAAQwwF,EAAUxwF,MAClB0oH,GAAMl4B,EAAUk4B,IAChBP,GAAQ33B,EAAU23B,MAClBC,GAAS53B,EAAU43B,OAEnB9sL,GAAa3I,EAAM2I,WAOvB2lK,EAASD,iBAAiB/3I,SAAS,CAC/B+vB,OAAQ,SAASn7C,EAASxB,GACrB,OAAO,IAAI1J,EAAM++E,WAAW7zE,EAASrD,EAAW,CAC5CnJ,QAAQ,EACRihF,YAAY,EACZG,SAAS,GACVp2E,OAIZ,IAAI06N,GAAwBhlE,EAAiBh9J,OAAO,CAChDi9J,WAAY,CACR7C,YAAa,eACbF,YAAa,eACb+nE,gBAAiB,qBACjBp1N,OAAQ,YACRzH,KAAM,UACNs0N,UAAW,kBAIfjI,GAAQ9jM,EAAO3tB,OAAO,CACtBoF,KAAM,SAAS0D,EAASu3K,GACpB,IAAItyJ,EAEJnwB,EAAMqB,QAAQ6J,GAEd6kB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAEtBu3K,IACAtyJ,EAAasyJ,EAAYtyJ,kBAClBsyJ,EAAYtyJ,YAGvB9wB,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASk8K,GAE5CpjL,KAAKoM,QAAUpM,KAAK6L,QACpB7L,KAAKk1N,gBAED9xC,IACAA,EAAYtyJ,WAAaA,GAG7B9wB,KAAKilO,kBAAoB,IAAIC,GAE7BllO,KAAKwJ,KAAKxJ,KAAKqK,OAAQrK,KAAKkH,SAC5BlH,KAAKmlO,gBAAgB/hD,GAErBpjL,KAAK08N,gBAAkB,GAEvB/7N,EAAM6zB,OAAOx0B,KAAM8pB,EAAQH,KAG/Btf,OAAQ,CACJw6N,EACAprC,EACAmrC,EACA5sC,EACAC,EACAC,EACAC,EACA56B,EACAs6B,EACAC,EACAC,EACAkB,EACAb,EACAC,EACAC,EACAE,EACAr1G,EACAo1G,EACAE,EACAC,EACAC,EACAC,EACA78G,EACA88G,EACA56B,EACAC,EACAC,EACA26B,GAGJ5xL,QAAS,CACL9E,KAAM,QACNm0N,SAAU,GACVxoC,MAAO,UACPN,aAAc,GACdyC,UAAW,GACXtC,OAAQ,GACRF,aAAc,GACd38G,UAAU,EACV66G,eAAgB,GAChB98I,OAAQ,GACRqhJ,aAAc,KACdh0B,QAAS,GACTx9I,aAAa,EACbm8J,UAAW,GACXrI,SAAU,GACV10H,MAAO,GACPktJ,MAAO,GACPE,MAAO,GACPoG,MAAO,CAAC,IACRziC,UAAU,EACVyoD,UAAU,GAGdnjM,MAAO,WACH,OAAOzxB,KAGXib,QAAS,WACL,IAAIgxJ,EAAQ5uK,KACR+mB,EAAW6nJ,EAAMtS,UACrBv1I,EAAS29J,cAAc9V,EAAM1nK,SAC7B6f,EAASyuM,oBAET5mD,EAAMw2D,cACNx2D,EAAMy2D,kBAENz2D,EAAMxkK,QAAQy6N,GACdj2D,EAAMqmD,WAGVrjM,QAAS,WACL,OAAOjxB,EAAMqxB,WAAWhyB,KAAK6L,UAGjC8nM,OAAQ,SAASkiB,GACb71N,KAAK8xB,MAAQ,KACb9xB,KAAKs8J,UAAUq3C,OAAOkiB,IAG1BtkM,WAAY,SAASrqB,GACjB,IAAI0nK,EAAQ5uK,KACR8wB,EAAa5pB,EAAQ4pB,kBAElB5pB,EAAQ4pB,WAEfJ,EAAO3oB,GAAG0pB,WAAWlnB,KAAKqkK,EAAO1nK,GAEjClH,KAAKs8J,UAAU8iE,aAAal4N,EAASlH,KAAKslO,iBAAiBp+N,IAC3DlH,KAAKkH,QAAUlH,KAAKs8J,UAAUp1J,QAC9BlH,KAAKk9J,SAAS3rI,WAAWvxB,KAAKkH,QAAQi1J,SACtCn8J,KAAKilO,kBAAkB1zM,WAAWvxB,KAAKkH,SACvClH,KAAKulO,cAAgB,KAEjBz0M,GACA89I,EAAM42D,cAAc10M,GAGpB89I,EAAM62D,eACN72D,EAAM82D,kBAEN92D,EAAMy2D,kBACNz2D,EAAM+kC,UAGV/kC,EAAMtS,UAAU6iE,0BAIpBqG,cAAe,SAAS10M,GACpB,IAAI89I,EAAQ5uK,KAEZ4uK,EAAM99I,WAAW7mB,OAAO6yC,EAAQ8xH,EAAM+2D,oBACtC/2D,EAAM99I,WAAaA,EAAa/iB,EAAWi5C,OAAOl2B,GAClD89I,EAAM62D,gBAAiB,EACvB72D,EAAMg3D,UAAW,EAEjB90M,EAAWtnB,KAAKszC,EAAQ8xH,EAAM+2D,oBAE1B/2D,EAAM1nK,QAAQ6pE,UACdjgD,EAAWq0C,SAInBnjE,QAAS,WACL,IAAI4sK,EAAQ5uK,KACR8wB,EAAa89I,EAAM99I,WAEvB89I,EAAM/iK,QAAQotB,IAAI43D,GAEd//D,GACAA,EAAW7mB,OAAO6yC,EAAQ8xH,EAAM+2D,oBAGhC/2D,EAAMtS,YACNsS,EAAMtS,UAAUt6J,iBACThC,KAAKs8J,WAGZt8J,KAAKk9J,WACLl9J,KAAKk9J,SAASl7J,iBACPhC,KAAKk9J,UAGhBl9J,KAAK6lO,4BAELn1M,EAAO3oB,GAAG/F,QAAQuI,KAAKqkK,IAG3BmnD,eAAgB,SAAS3zN,GAGrB,IAFA,IAAImvM,EAAQvxM,KAAK0xL,UAAU6f,MAElB3nM,EAAM,EAAGA,EAAM2nM,EAAM/pM,OAAQoC,IAClC,GAAI2nM,EAAM3nM,GAAK1C,QAAQ9E,OAASA,EAC5B,OAAO,IAAIivL,GAAUrxL,KAAMuxM,EAAM3nM,KAK7CosN,gBAAiB,SAASpsN,GACtB,IAAI2nM,EAAQvxM,KAAK0xL,UAAU6f,MAC3B,GAAIA,EAAM3nM,GACN,OAAO,IAAIynL,GAAUrxL,KAAMuxM,EAAM3nM,KAIzCk8N,WAAY,SAAS98M,GAGjB,IAFA,IAAIypJ,EAAWzyK,KAAK0xL,UAChB5iJ,EAAS2jI,EAASkrC,WAAalrC,EAAS3jI,OACnCllC,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,IACnC,GAAIof,EAAS8lB,EAAOllC,IAChB,OAAO,IAAIm8N,GAAY/lO,KAAM8uC,EAAOllC,KAKhDo8N,iBAAkB,SAAS5jO,GACvB,OAAOpC,KAAKimO,cAAc,CAAE7jO,KAAMA,KAGtC8jO,kBAAmB,SAASntN,GACxB,OAAO/Y,KAAKimO,cAAc,CAAEltN,MAAOA,KAGvCo8H,aAAc,SAASjuI,GACnB,IAAI6f,EAAW/mB,KAAKs8J,UACpB,GAAKv1I,EAAL,CAIA,IAAIm3H,EAGJ,GAAIh3I,IAAYA,EAAQ8F,OAAS9F,EAAQyF,QAAS,CAC9C,IAAIujL,EAAYnpK,EAAS7f,QAAQgpL,UAC7Bi2C,EAAoBp/M,EAAS4tM,iBAAiBzkC,UAElD1nL,EAAW0nL,EAAWhpL,GAEtB,IAAI4hD,EAAQ/hC,EAAS4vM,YAErBzmC,EAAUljL,MAAQm5N,EAAkBn5N,MACpCkjL,EAAUvjL,OAASw5N,EAAkBx5N,OAErCm8C,EAAMw8G,eAymClB,SAA2BisC,GACvB,IAAK,IAAI3nM,EAAM,EAAGA,EAAM2nM,EAAM/pM,OAAQoC,IAClC2nM,EAAM3nM,GAAKulM,eAzmCP8nB,CAAkBnuK,EAAM4oI,UAAU6f,OAElCrzD,EAASp1F,EAAMo1F,YAEfA,EAASn3H,EAASouH,eAGtB,OAAO+I,IAGXmmF,oBAAqB,SAA6B35J,GAC9CA,EAAQA,GAAS,EACjB,IAAIzX,EAAQjzD,KAAK08N,gBACjB,MAAKzpK,GAASyX,EAAQ,GAAKA,EAAQzX,EAAMzrD,OAAS,GAAlD,CAIA,IAAI2vB,EAAO,CACPuzC,MAAOA,EACPpgE,OAAQtK,MAEZA,KAAKoK,QAAQw6N,EAAwBztM,GAErCn3B,KAAKkH,QAAQ4nC,OAAS9uC,KAAK08N,gBAAgBhyJ,GAC3C1qE,KAAK08N,gBAAkB18N,KAAK08N,gBAAgB91N,MAAM,EAAG8jE,GAErD1qE,KAAKqlO,kBACLrlO,KAAKi1N,YAGTgR,cAAe,SAAS/+N,GACpB,IAAIo0L,EAAgBt7L,KAAKomO,eAAel/N,GACxC,GAAIo0L,EACA,OAAO,IAAIyqC,GAAY/lO,KAAMs7L,IAIrC8qC,eAAgB,SAASl/N,GACrB,IAEIo0L,EAFA7oB,EAAWzyK,KAAK0xL,UAChB5iJ,EAAS2jI,EAASkrC,WAAalrC,EAAS3jI,OAG5C,GAAIkmF,EAAQ9tH,EAAQ6R,OAChBuiL,EAAgBxsJ,EAAO5nC,EAAQ6R,YAC5B,GAAIi8G,EAAQ9tH,EAAQ9E,MACvB,IAAK,IAAIwH,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,IACnC,GAAIklC,EAAOllC,GAAKxH,OAAS8E,EAAQ9E,KAAM,CACnCk5L,EAAgBxsJ,EAAOllC,GACvB,MAKZ,OAAO0xL,GAGX45B,cAAe,WACVl1N,KAAK6L,QAAQod,GAAG07M,EAAe3kO,KAAKglH,YAAYx7G,KAAKxJ,QAG1DglH,YAAa,SAASrgH,GAClB,IAAIoiB,EAAW/mB,KAAKs8J,UAChBH,EAAUn8J,KAAKk9J,SACf51J,EAAS3C,EAAEw2B,cAET7zB,GAAU3E,EAAE2E,GAAQ+E,QAAQ8vJ,EAAQtwJ,SAASrE,SAAWuf,GAAaA,EAASw0M,aAChFx0M,EAASg3M,aAAa,CAClBC,iBAAkB7hE,EAAQj1J,QAAQi7G,YAK9CmjH,iBAAkB,SAASliD,GACvB,IAAIoM,GAAapM,GAAe,IAAI2K,MAEpC,GAAIyB,IAAuE,IAA1D1lK,EAAQsgK,YAAYz0K,QAAQ65K,EAAUl3K,eACnD,OAAOwR,EAAQ+jK,YAAYjf,MAG/B,GAAI55C,EAAQw6D,GAAY,CACpB,IAAIl3J,EAASxO,EAAQH,GAAG2O,QAAU,GAElC,OADYA,EAAOk3J,IAAcl3J,EAAOk3J,EAAUl3K,gBAAkB,IACvDs2J,OAAS,KAI9By3D,WAAY,WACRrmO,KAAKsmO,aAAatmO,KAAKkH,QAASlH,KAAKslO,iBAAiBtlO,KAAKkH,UAC3DlH,KAAKkH,QAAUlH,KAAKs8J,UAAUp1J,QAC9BlH,KAAKilO,kBAAkB1zM,WAAWvxB,KAAKkH,UAG3Co/N,aAAc,SAASp/N,EAASutN,GAC5Bz0N,KAAKs8J,UAAY,IAAIooE,EAAW1kO,KAAK6L,QAAQ,GAAI3E,EAASutN,EAAc,CACpEngG,SAAU,IAAIywG,GAAsB/kO,MACpCsK,OAAQtK,KACRu9I,IAAKv9I,KAAKumO,YAIlBC,QAAS,SAAS7hO,GACd3E,KAAKs8J,UAAY33J,EAAE2F,QAGvB66N,gBAAiB,SAAS/hD,GACtB,IAAIxU,EAAQ5uK,KACR8wB,GAAcsyJ,GAAe,IAAItyJ,WAErC89I,EAAM+2D,mBAAqB/2D,EAAM82D,eAAel8N,KAAKolK,GAErDA,EAAM99I,WAAa/iB,EACdi5C,OAAOl2B,GACPtnB,KAAK,SAAUolK,EAAM+2D,oBAE1B/2D,EAAMy2D,kBAEFv0M,IACA89I,EAAM62D,gBAAiB,GAG3BzlO,KAAKqmO,aACLrmO,KAAKymO,eAED31M,GACI89I,EAAM1nK,QAAQ6pE,UACd69F,EAAM99I,WAAWq0C,SAK7B0gK,0BAA2B,WACvB,IAAIa,EAAW1mO,KAAK2mO,mBACpB,GAAID,EACA,IAAK,IAAIn1N,KAAOm1N,EACZA,EAASn1N,GAAKvP,UAGtBhC,KAAK2mO,mBAAqB,IAG9BC,qBAAsB,SAASxkO,EAAM2W,GACjC,IAAI2tN,EAAW1mO,KAAK2mO,mBAAqB3mO,KAAK2mO,oBAAsB,GAChEp1N,EAAMnP,EAAO2W,EACbojJ,EAAUuqE,EAASn1N,GAIvB,OAHK4qJ,IACDA,EAAUuqE,EAASn1N,GAAO,IAAI87L,GAAiBrtM,KAAK6L,UAEjDswJ,GAGX0qE,aAAc,SAASliO,GACfA,EAAEyrL,UACYpwL,KAAK4mO,qBAAqBjiO,EAAEg4L,SAAUh4L,EAAEo6L,WAC9C7xL,KAAKvI,GACN3E,KAAKk9J,UACZl9J,KAAKk9J,SAAShwJ,KAAKvI,IAI3BmiO,aAAc,SAASniO,GACfA,EAAEyrL,UACapwL,KAAK4mO,qBAAqBjiO,EAAEg4L,SAAUh4L,EAAEo6L,WAC9C5xL,OACFnN,KAAKk9J,UACZl9J,KAAKk9J,SAAS/vJ,QAItB45N,UAAW,SAASpiO,GAChB3E,KAAK6lO,4BACL7lO,KAAKgnO,aAAariO,EAAE2F,QACftK,KAAKylO,iBAAkBzlO,KAAK4lO,UAAa5lO,KAAKkH,QAAQ6pE,UACvD/wE,KAAKoK,QAAQ0uL,IAIrBkuC,aAAc,SAASjgN,GACnB/mB,KAAKkH,QAAU6f,EAAS7f,QACxBlH,KAAK20N,iBAAmB5tM,EAAS4tM,iBACjC30N,KAAK2gF,QAAU55D,EAAS45D,QACxB3gF,KAAK0xL,UAAY3qK,EAAS2qK,UAC1B1xL,KAAK81N,OAAS/uM,EAAS+uM,OACvB91N,KAAK2mK,WAAa5/I,EAAS4/I,WAC3B3mK,KAAKy1N,YAAc1uM,EAAS0uM,YAC5Bz1N,KAAKs3N,UAAYvwM,EAASuwM,UAC1Bt3N,KAAKw3N,eAAiBzwM,EAASywM,eAC/Bx3N,KAAKy3N,gBAAkB1wM,EAAS0wM,iBAGpCt3D,iBAAkB,SAAS/rJ,GAExB,IADA,IAAI/J,EAASrK,KAAKuJ,QACTK,EAAM,EAAGA,EAAMwK,EAAM5M,OAAQoC,IAClC,GAAIorH,EAAQ3qH,EAAO+J,EAAMxK,KACrB,OAAO,GAKlB68N,aAAc,WACVzmO,KAAKk9J,SAAWl9J,KAAK62N,iBAErB72N,KAAKk9J,SAAS1zJ,KAAKs7N,GAAO9kO,KAAKinO,cAAcz9N,KAAKxJ,QAGtDknO,mBAAoB,SAASviO,GACpB3E,KAAKoK,QAAQytL,EAAmBlzL,IACjC3E,KAAKmnO,iBAAiBxiO,EAAE6yM,YAAa7yM,EAAEu+M,aAI/CikB,iBAAkB,SAAS3vB,EAAa0L,GACpC,IAAIt0C,EAAQ5uK,KAAKs8J,UACbmW,EAAW7D,EAAM8iB,UACjB2M,GAAiB5rB,EAASkrC,WAAalrC,EAAS3jI,QAAQ0oK,GAQ5D,GANI5oC,EAAMsuD,uBAAyBtuD,EAAMmtD,uBACrCntD,EAAMqtD,qBAAqB,MAAM,GACjCrtD,EAAMstD,oBAAoBttD,EAAMmtD,qBAAqB5mL,SAAU,MAAM,GACrEy5H,EAAMmtD,qBAAuB,MAG7Bp5N,EAAE0yB,QAAQgpK,EAAc34L,KAAM,CAACgxL,GAAKP,GAAOC,MAAY,EAAG,CAC1D,IAAI/7D,EAAQgkE,EAAcxwL,KAAKq1M,GAC/B,GAAI7oF,GAASrF,EAAQqF,EAAM/tH,SACvB+tH,EAAM/tH,SAAW+tH,EAAM/tH,YACpB,CACH,IAAIqjM,EAAkBtR,EAAcsR,gBAAkBtR,EAAcsR,iBAAmB,GACnFrjM,EAAUqjM,EAAgBuT,GAC9BvT,EAAgBuT,KAAcluF,EAAQ1oH,KAAYA,QAGtD+xL,EAAc/xL,SAAW+xL,EAAc/xL,QACvCtM,KAAKilO,kBAAkB12L,KAAK8vJ,GAGhCzvB,EAAMgnD,wBAGViB,eAAgB,WACZ,OAAO,IAAIjyG,GAAQ5kH,KAAK6L,QAAS9I,EAAO,GAAI/C,KAAKkH,QAAQi1J,QAAS,CAC9D5e,IAAKv9I,KAAKumO,aAIlBU,cAAe,WACPjnO,KAAKs8J,WACLt8J,KAAKs8J,UAAUyhE,gBAIvBqJ,aAAc,SAASziO,GACnB,IAAIwsH,EAAWnxH,KAEX8uC,EAASnqC,EAAEmqC,OACXpmC,EAAQ/D,EAAE+D,MAEd,GAAIomC,EAAOu4L,uBAAwB,CAC/B,IAAI9wN,EAASu4B,EAAOu4L,uBAAuB3+N,GAE3C,IAAK6N,EACD,OACOA,aAAkBoqJ,QACzBpqJ,EAAOooD,MAAK,SAAU2oK,GAAY,OAAOn2G,EAASo2G,iBAAiB5iO,EAAG2iO,MAEtEtnO,KAAKunO,iBAAiB5iO,EAAG4R,OAEL,iBAAV7N,GACd1I,KAAKunO,iBAAiB5iO,EAAG+D,IAIjC6+N,iBAAkB,SAAS5iO,EAAGkJ,GAC1B,IAAI25N,EAAkB/mO,OAAOC,OAAO,GAAIiE,EAAEmqC,OAAQjhC,GAC9CspB,EAAO,CACPkjG,MAAO11H,EAAE01H,MACTvrF,OAAQnqC,EAAEmqC,OACV04L,gBAAiBA,EACjBl9N,OAAQtK,MAGIA,KAAKoK,QAAQqvL,EAAWtiK,KAEpCn3B,KAAK08N,gBAAgB/6N,KAAK3B,KAAKkH,QAAQ4nC,QAEvC9uC,KAAKkH,QAAQ4nC,OAAS,CAAC04L,GACvBxnO,KAAKqlO,kBACLrlO,KAAKi1N,YAIbwS,UAAW,SAAS9iO,GAChB,IAGIg3L,EAMA0C,EACAqpC,EAVA94D,EAAQ5uK,KACRkH,EAAU0nK,EAAM1nK,QAChB4nC,EAAS8/H,EAAM22D,eAAiBr+N,EAAQ4nC,OAExC2pL,EAAe3pL,EAAOtnC,OACtBqG,EAAO+gK,EAAM99I,WAAW4G,OACxBiwM,GAAW/4D,EAAM99I,WAAWojC,SAAW,IAAI1sD,OAAS,EACpDo2M,EAAkB,GAClBgqB,EAAmB5nO,KAAKilO,kBAM5B,IAFA2C,EAAiB9iL,OAEZ62I,EAAW,EAAGA,EAAW88B,EAAc98B,IACxC0C,EAAgBvvJ,EAAO6sJ,GAEnB/sB,EAAMqwD,YAAY5gC,IAAkBspC,GACpCD,EAAgBxoB,GAAY7gB,EAAexwL,GAC3C+vM,EAAkBA,EAAgBvgM,OAAOqqN,GAEzCE,EAAiBC,aAAaH,EAAe/iO,KAE7C05L,EAAgBt7L,EAAO,GAAIs7L,GAC3Buf,EAAgBj8M,KAAK08L,GAErBupC,EAAiBE,aAAazpC,EAAe15L,IAIrDiqK,EAAM22D,cAAgBz2L,EACtB5nC,EAAQ4nC,OAAS8uK,EACjB59M,KAAKs8J,UAAUk5D,oBAEf5mD,EAAMw2D,cACNx2D,EAAMy2D,kBAENrlO,KAAK4lO,UAAW,GAGpBF,eAAgB,SAAS/gO,GACrB3E,KAAKynO,UAAU9iO,GAEf3E,KAAKoK,QAAQy6N,GACT7kO,KAAKs8J,WAAat8J,KAAKs8J,UAAU04D,YACjCh1N,KAAKi1N,WAIbmQ,YAAa,WACT,IAGIzpC,EAEA0C,EACA0e,EACAgrB,EAPAn5D,EAAQ5uK,KACR6N,EAAO+gK,EAAM99I,WAAW4G,OACxBoX,EAAS8/H,EAAM1nK,QAAQ4nC,OAEvB2pL,EAAe3pL,EAAOtnC,OAK1B,IAAKm0L,EAAW,EAAGA,EAAW88B,EAAc98B,IACxC0C,EAAgBvvJ,EAAO6sJ,GAEnB/sB,EAAMqwD,YAAY5gC,KAClB0e,EAAU1e,EAAc2pC,SACxBD,EAAa/yG,EAAQ+nF,IAAYlvM,EAAKkvM,IAAY,IAAI3oL,MAAQvmB,GAE/B,IAA3BwwL,EAActtH,WACdstH,EAAcxwL,KAAOk6N,KAMrC1C,gBAAiB,WACb,IAMIpyB,EACAjuK,EAPA4pI,EAAQ5uK,KACR6N,EAAO+gK,EAAM99I,WAAW4G,QAAU,GAClCiwM,GAAW/4D,EAAM99I,WAAWojC,SAAW,IAAI1sD,OAAS,EACpDygO,EAAiBp6N,EACjB3G,EAAU0nK,EAAM1nK,QAChB0wI,EAAc,GAAGv6H,OAAOnW,EAAQwmL,cAUpC,IANIi6C,GACI95N,EAAKrG,SACLygO,EAAiBp6N,EAAK,GAAGumB,OAI5B6+K,EAAS,EAAGA,EAASr7D,EAAYpwI,OAAQyrM,KAEpB,KADtBjuK,EAAO4yG,EAAYq7D,IACVliI,UACL69F,EAAMs5D,kBAAkBljM,EAAMijM,EAAgBh1B,IAK1Di1B,kBAAmB,SAASljM,EAAMn3B,EAAMolM,GACpC,IACInzB,EACAhZ,EACAorB,EAHAp3K,GAASjN,GAAQ,IAAIrG,OAKzB,GAAIw9B,EAAK/f,MAEL,IADA+f,EAAKm1I,WAAa,GACb2F,EAAa,EAAGA,EAAahlK,EAAOglK,IACrCoS,EAAMrkL,EAAKiyK,GAEXhZ,EAAWmrB,EAASjtJ,EAAK/f,MAAOitK,GACb,IAAfpS,GACA96I,EAAKm1I,WAAa,CAACrT,GACnB9hI,EAAKjR,UAAY,CAACm+J,KAElBltJ,EAAKm1I,WAAWx4K,KAAKmlK,GACrB9hI,EAAKjR,UAAUpyB,KAAKuwL,SAGrBlyL,KAAKs8J,WACZt8J,KAAKs8J,UAAU8hE,2BAA2Bp5L,EAAMiuK,IAIxDgsB,YAAa,SAASnwL,GAClB,IAEI7pB,EAAO1d,EAFPirL,EAAcL,EAAa1+K,QAAQ++K,YAAY1jJ,GAC/Cv4B,GAAS,EAGb,IAAKhP,EAAI,EAAGA,EAAIirL,EAAYhrL,OAAQD,IAQhC,IAPA0d,EAAQutK,EAAYjrL,MACNymE,GACV/oD,EAAQ,QAERA,GAAgB,SAGf+vG,EAAQlmF,EAAO7pB,IAAS,CACzB1O,GAAS,EACT,MAIR,OAAOA,GAGXgwN,OAAQ,WACJ,OAAO5lO,EAAM4C,QAAQ+a,MAAMte,KAAK6L,UA1rB9B,QA0rB0C7L,KAAK6L,QAAQe,IAAI,gBAIjEu7N,GAAe,CAAC,UAAW,iBAAkB,WAAY,kBAAmB,cAC5E,cAAe,UAAW,UAAW,uBAAwB,mBAAoB,qBAErF,SAASC,GAAkBhmO,GACvBoyN,GAAMzsN,GAAG3F,GAAQ,WACb,IAAI2kB,EAAW/mB,KAAKs8J,UACpB,GAAIv1I,EACA,OAAOA,EAAS3kB,GAAMgG,MAAM2e,EAAU1f,YAKlD,IAAK,IAAIuC,GAAM,EAAGA,GAAMu+N,GAAa3gO,OAAQoC,KACzCw+N,GAAkBD,GAAav+N,KAGnC,SAASs1M,GAAYpwK,EAAQjhC,GACzB,IACIw6N,EAEAtrB,EAEAurB,EALA/xN,EAAS,GAETgyN,EAAiBz5L,EAAO05L,kBAExB9jK,EAAa72D,EAAKrG,OAQtB,GAAmB,IAAfk9D,EAGA,OAFA4jK,EAAc9/N,EAAW,GAAIsmC,IACjB0jK,iBAAkB,EACvB,CAAC81B,GAgBZ,IAbItzG,EAAQuzG,IACR5nO,EAAM2vB,aACF,4HAIAi4M,IACAF,EAAex4N,EAAS04N,KAG5BF,EAAex4N,EAASi/B,EAAO1sC,MAtBT,SAAU6sB,GAC5B,IAAIilC,EAAQjlC,EAAIilC,MAEhB,MAAQ,IAAM8gE,EAAQlmF,EAAO1sC,MAAQ8xD,EAAMxrD,MAAQ,KAAOomC,EAAO1sC,KAAO8xD,EAAMxrD,SAsBjFq0M,EAAU,EAAGA,EAAUr4I,EAAYq4I,IACpCurB,EAAc9/N,EAAW,GAAIsmC,GAExBnuC,EAAMuI,WAAWo/N,EAAYl5G,SAC9Bk5G,EAAYl5G,MAAQxsH,GAGxB0lO,EAAYN,SAAWjrB,EACvBurB,EAAYG,YAAc56N,EAAKkvM,GAASr0M,MACxC6N,EAAO5U,KAAK2mO,GAERD,IACAC,EAAYlmO,KAAOimO,EAAa,CAC5Bv5L,OAAQw5L,EAAap0K,MAAOrmD,EAAKkvM,MAK7C,OAAOxmM,EAGXuT,EAAQugK,YAAYtnL,OAAOyxN,GAAMzsN,IAE7BpH,EAAM+nO,UACN/nO,EAAM+nO,SAAS3lO,OAAOyxN,GAAMzsN,IAGhC+hB,EAAQH,GAAGqN,OAAOw9L,IAElB,IAAI0Q,GAAwBt9N,EAAM7E,OAAO,CACrCoF,KAAM,WACFnI,KAAKwpC,OAAS,GACdxpC,KAAK+Y,MAAQ,GACb/Y,KAAKkH,QAAU,IAGnB2gO,aAAc,SAAS/4L,EAAQnqC,GAC3B,GAAKA,GAAKA,EAAEqoC,QAAWhtC,KAAKkH,QAAQyhO,wBAChC,IAAK,IAAI/+N,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,KACU,IAAzC5J,KAAKwpC,OAAOsF,EAAOllC,GAAK6+N,eACxB35L,EAAOllC,GAAK0C,SAAU,QAI9BtM,KAAKwpC,OAAS,IAItBs+L,aAAc,SAASh5L,EAAQnqC,GACtBA,GAAKA,EAAEqoC,QAAWhtC,KAAKkH,QAAQyhO,yBACC,IAA7B3oO,KAAK+Y,MAAM+1B,EAAO/1B,SAClB+1B,EAAOxiC,SAAU,GAGrBtM,KAAK+Y,MAAQ,IAIrBw1B,KAAM,SAASO,GACNA,IAID9uC,KAAKkH,QAAQyhO,wBACb3oO,KAAKkH,QAAQ4nC,OAAOA,EAAO/1B,OAAOzM,QAAUwiC,EAAOxiC,QAEnDtM,KAAK4oO,UAAU95L,KAIvBvd,WAAY,SAASrqB,GACjBlH,KAAKkH,QAAUA,EACflH,KAAKwpC,OAAS,GACdxpC,KAAK+Y,MAAQ,IAGjB+rC,KAAM,WACF,IAAI59C,EAAUlH,KAAKkH,QACnB,GAAIA,EAAQyhO,wBAER,IADA,IAAI75L,EAAS5nC,EAAQ4nC,OACZllC,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,IACnC5J,KAAK4oO,UAAU95L,EAAOllC,KAKlCg/N,UAAW,SAAS95L,GACZkmF,EAAQlmF,EAAO25L,aACfzoO,KAAKwpC,OAAOsF,EAAO25L,aAAe35L,EAAOxiC,QAEzCtM,KAAK+Y,MAAM+1B,EAAO/1B,OAAS+1B,EAAOxiC,WAK1Cu8N,GAAOloO,EAAMi/H,SAYjB,IAAIhb,GAAUt7G,GAAWvG,OAAO,CAC5BoF,KAAM,SAASw9J,EAAcz+J,GACzB,IAAIi1J,EAAUn8J,KAEdsJ,GAAWvB,GAAGI,KAAKoC,KAAK4xJ,GAExBn8J,KAAKuxB,WAAWrqB,GAEhBi1J,EAAQwJ,aAAeA,EAEvBxJ,EAAQtsJ,SAAW+0G,GAAQ/0G,SACtBssJ,EAAQtsJ,WACTssJ,EAAQtsJ,SAAW+0G,GAAQ/0G,SAAW,SAAUof,GACxC,IAAIkzF,EAAWlzF,EAAIkzF,SACfo7B,EAAMtuH,EAAIsuH,IACVxmD,EAAO9nE,EAAI8nE,KACX0wE,EAASx4I,EAAIw4I,OACb7wI,EAAU3H,EAAI2H,QAElB,MAAO,0BAA4BurF,EAAW,qBAAuB,IAAM,qBAAuBo7B,EAAM,QAAU,IAAM,KAC3H58I,EAAMmiB,KAAK,iBAAoB,WAAgBniB,EAAMmiB,KAAK,kBAAqB,eAC/EniB,EAAMmiB,KAAK,cAAiB,KAAQi0E,EAAO,KAASp2F,EAAMmiB,KAAK,iBAAoB,KAAQ8T,EAAU,MAChG6wI,EAAW9mK,EAAMmiB,KAAK,gBAAmB,KAAS2kJ,EAAY,MAAI,aAAiB,IAH9E,0CAMLtlD,EAAW,GAAK,iCAAmCxhH,EAAMgpB,GAAG2tE,KAAK30F,EAAE,kCAAmC,CAAE20F,KAAM,MAAS,UAC7H,WAIR6kE,EAAQtwJ,QAAUlJ,EAAEw5J,EAAQtsJ,SAASssJ,EAAQj1J,UAC7CvG,EAAM2qC,+BAA+B6wH,EAAQtwJ,QAAS,CAAC,UAAW,WAAY,OAAQ,SAAU,YAEhGswJ,EAAQ5hI,KAAO4hI,EAAQ5hI,KAAK/wB,KAAK2yJ,GACjCA,EAAQn3C,YAAcm3C,EAAQn3C,YAAYx7G,KAAK2yJ,GAE/C,IAAI2sE,EAAyBnoO,EAAM+P,OAAO,mCAAoC/P,EAAMmiB,KAAK,SACzFq5I,EAAQ4sE,gBAAkBpjE,EAAat5J,QAAQy8N,GAAwBj7N,KAAK,uBAC5EsuJ,EAAQjrE,UAAYvwF,EAAM66B,cA34BlB,OA24B2C76B,EAAM8uB,QACzD0sI,EAAQ6sE,qBAAuB7sE,EAAQ8sE,cAAcz/N,KAAK2yJ,IAG9Dn6J,QAAS,WAGLhC,KAAKkpO,oBACLv4I,EAAiB13D,IAHHj5B,KAGekxF,UAHflxF,KAGkCgpO,sBAC5ChpO,KAAK6L,UACL7L,KAAK6L,QAAQotB,IAAI0rM,GAAe5tM,SAChC/2B,KAAK6L,QAAU,OAIvB0lB,WAAY,SAASrqB,GACjBlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,IAGhDA,QAAS,CACL0vB,QAAS,EACT06D,UAAW,CACP5qE,SAz5BqB,KA25BzByiN,eAAgB,SAAUl6M,GAClB,IAAIm6M,EAAUn6M,EAAIm6M,QACd3hB,EAAex4L,EAAIw4L,aACnBpmF,EAASpyG,EAAIoyG,OACb96E,EAAUt3B,EAAIs3B,QAIlB,MAAO,uBACO6iL,EAAU,KAAO3hB,EAAe,QAmd9D,SAAgCpmF,EAAQgoG,EAAaC,EAAY/iL,GAG7D,IAFA,IAAIhwC,EAAS,GAEJhP,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAAK,CACpC,IAAI8yH,EAAQgH,EAAO95H,GACnBgP,GAAU,OAEN8yN,IACA9yN,GAAU,mDAAsD5V,EAAMmiB,KAAK,0BAA6B,KAASgrD,EAAOusD,EAAMvrF,OAAOsgF,OAAU,kBAG/Ik6G,IACA/yN,GAAU,SAAW8jH,EAAMvrF,OAAO1sC,KAAOi4H,EAAMvrF,OAAO1sC,KAAO,IAAM,UAAY,SAGnFmU,GAAU,OAAUgwC,EAAQ8zE,GAAU,QACtC9jH,GAAU,QAGd,OAAOA,EAreKgzN,CAAuBloG,EALLpyG,EAAIo6M,YACLp6M,EAAIq6M,WAImC/iL,GAC5D,YAEJmhK,eAAgB,QAChBvlG,UAAU,GAGd5nF,KAAM,WACF,IAGIxd,EAHAo/I,EAAUn8J,KACVkH,EAAUi1J,EAAQj1J,QAClB2E,EAAUswJ,EAAQtwJ,QAGjBswJ,EAAQhrE,QAAWgrE,EAAQtwJ,UAIhCkR,EAASo/I,EAAQv4C,UACZu4C,EAAQ7vJ,SACTT,EAAQe,IAAI,CAAEwX,IAAKrH,EAAOqH,IAAKyH,KAAM9O,EAAO8O,OAGhDswI,EAAQ7vJ,SAAU,EAClB6vJ,EAAQqtE,eAAep6N,SAAS6O,MAChCpS,EACK+b,MAAK,GAAM,GACX1a,OACA4Z,QAAQ,CACL+E,KAAM9O,EAAO8O,KACbzH,IAAKrH,EAAOqH,KACbld,EAAQoqF,UAAU5qE,YAG7BwiN,kBAAmB,WACXlpO,KAAKypO,cACLtvM,aAAan6B,KAAKypO,aAClBzpO,KAAKypO,YAAc,OAI3B97B,UAAW,SAASl+L,GAChB,IAAI0hF,EAASnxF,KAAKmxF,OACdkpC,EAAQlpC,EAAOkpC,MACf4U,EAAQ99C,EAAO89C,MACf7pI,EAAIi1H,EAAMxuG,KACV1nB,EAAIk2H,EAAMj2G,IAad,MAZyB,WAArB6qH,EAAM38F,WACNltC,GAAKqK,EAAKzC,MAAQ,EACU,UAArBiiI,EAAM38F,aACbltC,GAAKqK,EAAKzC,OAGS,WAAnBiiI,EAAM78F,SACNjuC,GAAKsL,EAAK9C,OAAS,EACO,WAAnBsiI,EAAM78F,WACbjuC,GAAKsL,EAAK9C,QAGP,CACHvH,EAAGA,EACHjB,EAAGA,IAIXy/G,QAAS,WACL,IAAIu4C,EAAUn8J,KACVyP,EAAO0sJ,EAAQO,WACfvrE,EAASgrE,EAAQwxC,UAAUl+L,GAC3B2U,EAAM+sE,EAAOhtF,EACb0nB,EAAOslE,EAAO/rF,EACd0e,EAAYnjB,EAAM4C,QAAQugB,YAC1BguE,EAAWnvF,EAAE7B,QACb61B,EAAY71B,OAAOssB,aAAehe,SAASiK,gBAAgBsd,WAAa,EACxE/J,EAAa9rB,OAAOusB,aAAeje,SAASiK,gBAAgBuT,YAAc,EAC1EyvB,GAAWr8C,KAAK+oO,iBAAmB,IAAI1sL,QAE3C,GAAKA,GAA6B,IAAlBA,EAAQ1M,MAGjB,CACH,IAAI4D,EAAYs1L,GAAKt1L,YAAY5D,MAAM0M,EAAQ1M,MAAO0M,EAAQ1M,MAAO,CAAC0M,EAAQj3C,EAAGi3C,EAAQl4C,IACrFk2H,EAAQ,IAAIwuG,GAAK7uG,MAAMnuG,EAAMzH,GAAKmvB,UAAUA,GAChD1nB,EAAOwuG,EAAMj1H,EACbgf,EAAMi2G,EAAMl2H,OANZigB,GAAO+3I,EAAQ9oE,KAAKjvE,EAAMuS,EAAWlnB,EAAK9C,OAAQV,EAAY6lF,GAAYhuE,GAC1E+H,GAAQswI,EAAQ9oE,KAAKxnE,EAAOe,EAAYnd,EAAKzC,MAAOjB,EAAW+lF,GAAYhuE,GAQ/E,MAAO,CACHM,IAAKA,EACLyH,KAAMA,IAId3e,KAAM,SAASvI,GACX,IAAIw3J,EAAUn8J,KACV0pO,EAAgB/mO,EAAE,eACtB3C,KAAKmxF,OAASxsF,EAAEwsF,OAChBnxF,KAAK6L,QAAQe,IAlLrB,SAAwBH,GACpB,IAAK,IAAIwY,KAASxY,EACVA,EAAMwY,KAAWriB,IACjB6J,EAAMwY,GAAS,IAIvB,OAAOxY,EA2Kck9N,CAAehlO,EAAE8H,QAClCzM,KAAK6L,QAAQmc,YApgCC,4BAogC8BrjB,EAAE+nB,WAC9C1sB,KAAK6L,QAAQmc,YApgCM,2BAogC8BrjB,EAAEs3J,QAEnD,IAAI11G,EAAU5hD,EAAEs3J,OAASj8J,KAAK4pO,eAAejlO,GAAK3E,KAAK6pO,cAAcllO,EAAE01H,OACvEqvG,EAAc55N,KAAKy2C,GACnB5lD,EAAM2qC,+BAA+Bo+L,EAAe,CAAC,qBACrD1pO,KAAK6L,QAAQkqB,KAAK,sBAAsBw2B,QAAQxS,OAAO2vL,GAElDvtE,EAAQj1J,QAAQi7G,WACjBg6C,EAAQtwJ,QAAQotB,IAAI,QAAU43D,GAAI5nE,GAAG,QAAU4nE,EAAI,oBAAqBsrE,EAAQ6sE,sBAChFr4I,EAAiB13D,IAAIkjI,EAAQjrE,UAAWirE,EAAQ6sE,sBAC3C//M,GAAGkzI,EAAQjrE,UAAWirE,EAAQ6sE,uBAGvChpO,KAAKkpO,oBACLlpO,KAAKypO,YAAc1wM,WAAW/4B,KAAKu6B,KAphClB,MAuhCrBptB,KAAM,SAAS28N,GACX,IAAI3tE,EAAUn8J,MAETm8J,EAAQj1J,QAAQi7G,UAAa2nH,KAIlC3vM,aAAagiI,EAAQstE,aACrBttE,EAAQ4tE,eAEJ5tE,EAAQ7vJ,UACR6vJ,EAAQ9hC,MAAQ,KAChB8hC,EAAQ7vJ,SAAU,EAClB6vJ,EAAQpjJ,MAAQ,KAChB43E,EAAiB13D,IAAIkjI,EAAQjrE,UAAWirE,EAAQ6sE,yBAIxDC,cAAe,SAAStkO,GACPhC,EAAEgC,EAAE2C,QAELiF,GAAG,0CACX5H,EAAEwE,iBACFnJ,KAAK2lK,aAAa93J,KAAK,cAAcyuJ,UAAUyhE,eAC/C/9N,KAAKmN,MAAK,KAIlBy8N,eAAgB,SAASjlO,GACrB,IAAI08H,EAAS18H,EAAE08H,OAGXioG,EAAax/M,EAAQoU,KAAKmjG,GAAQ,SAAShH,GAC3C,OAAOrF,EAAQqF,EAAMvrF,OAAO1sC,SAC7BoF,OAEC6hO,EAAc1kO,EAAEmqC,OAAOtnC,OAAS,EAChC4hO,EAAU,EAmBd,OAlBIE,GACAF,IAEAC,GACAD,IAGWzoO,EAAMkP,SAAS7P,KAAKkH,QAAQiiO,eAC7Bt5N,CAAS,CACnBwxH,OAAQA,EACRylC,SAAUniK,EAAEmiK,SACZ2gD,aAAc9iN,EAAE8iN,aAChBlhK,QAASvmD,KAAK6pO,cAAcrgO,KApBrBxJ,MAqBPqpO,YAAaA,EACbC,WAAYA,EACZF,QAASA,KAMjB1sE,SAAU,WAQN,OAPA18J,KAAKwpO,iBAEM,CACPx8N,MAAOjB,EAAW/L,KAAK6L,SACvBc,OAAQV,EAAYjM,KAAK6L,WAMjC29N,eAAgB,WACRxpO,KAAK6L,SACL7L,KAAK6L,QACAshC,SAAS/9B,SAAS6O,MAClBgL,GAAG07M,EAAe3kO,KAAKglH,cAIpCA,YAAa,SAASrgH,GAClB,IAAI2C,EAAS3C,EAAEw2B,cACXyzI,EAAQ5uK,KAAK2lK,aAAa,GAC1Br+J,GAAUA,IAAWsnK,IAAUjsK,EAAEwyB,SAASy5I,EAAOtnK,IACjDtH,KAAKoK,QAAQ06N,KAIrBiF,aAAc,WACV,IAAI5tE,EAAUn8J,KACV6L,EAAU7L,KAAK6L,QACfA,GACAA,EAAQm+N,QAAQ,CACZC,OAAQ,WACC9tE,EAAQ7vJ,SACTT,EAAQotB,IAAI0rM,GAAe5tM,aAO/C8yM,cAAe,SAASxvG,GACpB,IAEI9zE,EADAr/C,EAAUsB,EAAW,GADXxI,KACuBkH,QAASmzH,EAAMnzH,QAAQi1J,SA4B5D,OAzBInnC,EAAQqF,EAAM3xH,SACd69C,EAAU8zE,EAAM3xH,MAAMwI,YAGtBhK,EAAQ2I,SAER02C,EADkB12C,EAAS3I,EAAQ2I,SACzBq6N,CAAgB,CACtBxhO,MAAO2xH,EAAM3xH,MACbo+J,SAAUzsC,EAAMysC,SAChBh4H,OAAQurF,EAAMvrF,OACdza,SAAUgmG,EAAMhmG,SAChBpI,WAAYouG,EAAMpuG,WAClB86I,aAAc1sC,EAAM0sC,aACpBngH,MAAOyzE,EAAMzzE,MACbkvE,IAAKuE,EAAMvE,IACXq0D,KAAM9vD,EAAM8vD,KACZggD,KAAM9vG,EAAM8vG,KACZC,MAAO/vG,EAAM+vG,MACbC,KAAMhwG,EAAMgwG,KACZC,MAAOjwG,EAAMiwG,QAEVpjO,EAAQwJ,SACf61C,EAAU8zE,EAAM4lE,YAAY/4L,EAAQwJ,SAGjC61C,GAGX8sC,KAAM,SAASt2E,EAAQtN,EAAM6jF,GACzB,IAAIC,EAAS,EAUb,OARIx2E,EAAStN,EAAO6jF,IAChBC,EAASD,GAAgBv2E,EAAStN,IAGlCsN,EAAS,IACTw2E,GAAUx2E,GAGPw2E,KAIX85G,GAAmBzoF,GAAQ7hH,OAAO,CAClCoF,KAAM,SAASw9J,EAAcz+J,GACzB09G,GAAQ78G,GAAGI,KAAKoC,KAAKvK,KAAM2lK,EAAcz+J,GACzClH,KAAK6L,QAAQ0Y,SAAS,8BAG1BrX,KAAM,SAASvI,GACG3E,KAAK6L,UAGf7L,KAAKmxF,OAASxsF,EAAEwsF,OAChBnxF,KAAK6L,QAAQe,IAAIjI,EAAE8H,OACnBzM,KAAK6L,QAAQiE,KAAK9P,KAAKumD,QAAQ5hD,IAE/B3E,KAAKu6B,SAIbA,KAAM,WACF,IAAI4hI,EAAUn8J,KACV6L,EAAUswJ,EAAQtwJ,QAClBkR,EAASo/I,EAAQv4C,UAErBu4C,EAAQqtE,iBACR39N,EAAQe,IAAI,CAAEwX,IAAKrH,EAAOqH,IAAKyH,KAAM9O,EAAO8O,OAAQ3e,QAGxDq5C,QAAS,SAAS5hD,GACd,IAAI4hD,EAAU5hD,EAAE+D,MACZxB,EAAUvC,EAAEyrL,UAAUlpL,QAAQi1J,QAQlC,OANIj1J,EAAQ2I,WACR02C,EAAU12C,EAAS3I,EAAQ2I,SAAjBA,CAA2B,CACjCnH,MAAO69C,KAIRA,GAGXp5C,KAAM,WACFnN,KAAK6L,QAAQsB,UAIjBkkL,GAAYzpL,EAAM7E,OAAO,CACzBoF,KAAM,SAASymK,EAAOjhF,GAClB3tF,KAAKuqO,OAAS37D,EACd5uK,KAAKwxL,MAAQ7jG,EACb3tF,KAAKk+I,OAASvwD,EAAKuwD,OACnBl+I,KAAKsxL,aAAe3jG,EAAK4jG,eAAerzC,OACxCl+I,KAAKoC,KAAOurF,EAAKzmF,QAAQ9E,MAG7B0sC,OAAQ,WACJ,IAAI8/H,EAAQ5uK,KAAKuqO,OAEbz7L,EADe8/H,EAAM8iB,UAAUyhB,oBACTnzM,KAAKoC,MAAQ,WAEnCmU,EAAS,GACb,GAAIu4B,EACA,IAAK,IAAIllC,EAAM,EAAGA,EAAMklC,EAAOtnC,OAAQoC,IACnC2M,EAAO5U,KAAK,IAAIokO,GAAYn3D,EAAO9/H,EAAOllC,KAIlD,OAAO2M,KAIXwvN,GAAcn+N,EAAM7E,OAAO,CAC3BoF,KAAM,SAASymK,EAAO1nK,GAClBlH,KAAKuqO,OAAS37D,EACd5uK,KAAKi0I,SAAW/sI,GAGpBm6H,OAAQ,SAASprG,GACb,IAAIorG,EAASrhI,KAAK4gN,QAClB,IAAKv/E,EAAQ,CACT,IAAIvyF,EAAS9uC,KAAKomO,iBACd3zD,EAAWzyK,KAAKuqO,OAAO74C,UAC3B1xL,KAAK4gN,QAAUv/E,EAASoxC,EAAS8kC,oBAAoBzoK,EAAO/1B,OAOhE,OALIpY,EAAMuI,WAAW+sB,KACjBorG,EAASrhI,KAAKwqO,cAAcnpG,EAAQprG,IAIjCorG,GAGXxzH,KAAM,SAASA,GACX,IAAIihC,EAAS9uC,KAAKomO,iBAClB,GAAIv4N,EAAM,CACN,IAAI+gK,EAAQ5uK,KAAKuqO,OACb93D,EAAW7D,EAAM8iB,UAIrB,GAFA5iJ,EAAOjhC,KAAOA,EAEVihC,EAAOkvK,cAAe,CACtB,IAAIh5K,EAAOytI,EAASyoB,mBAAmBpsJ,GACnC5nC,EAAU,GAAGmW,OAAOuxJ,EAAM1nK,QAAQwmL,cAEtC9e,EAAMtS,UAAU8hE,2BAA2Bl3N,EAAQ89B,EAAK+5J,WAAY/5J,EAAK+5J,WAG7EnwB,EAAMgnD,uBACN51N,KAAKyqO,eAGT,OAAO37L,EAAOjhC,MAGlB8pM,UAAW,SAAS1hL,GAEhB,IADA,IAAIorG,EAASrhI,KAAKqhI,SACTz3H,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IACnC,GAAIqsB,EAAOorG,EAAOz3H,IACd,OAAOy3H,EAAOz3H,IAK1B68J,gBAAiB,SAASv5J,EAAMinB,GAIxBA,EAHCA,EAEMxzB,EAAMuI,WAAWirB,GACbn0B,KAAKqhI,OAAOltG,GAEZlxB,EAAQkxB,GAAYA,EAAW,CAACA,GAJhCn0B,KAAKqhI,SAOpBrhI,KAAKuqO,OAAOjuE,UAAU85D,sBAAsBlpN,EAAMinB,IAGtDu2M,iBAAkB,SAASp+N,EAAS2pB,GAChC,IAAI24I,EAAQ5uK,KAAKuqO,OACbjvC,EAAgBt7L,KAAKomO,iBAEzB,GADgBzlO,EAAMuI,WAAW+sB,GAK7B,GAAIZ,EAAQimK,EAAc51L,KAAM,CAACgxL,GAAKP,GAAOC,KAEzC,IADA,IAAIvoL,EAAO7N,KAAK2qO,YAAY10M,GACnBrsB,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IACjCiE,EAAKjE,GAAK0C,QAAUA,OAGxBgvL,EAAchvL,QAAU,SAASuB,GAC7B,OAAOooB,EAAOpoB,EAAKwmB,WAAY/nB,QAVvCgvL,EAAchvL,QAAUA,EACxBsiK,EAAMq2D,kBAAkB12L,KAAK+sJ,GAcjC1sB,EAAMgnD,uBAEN51N,KAAKyqO,gBAGTE,YAAa,SAAS10M,GAKlB,IAJA,IAAIpoB,EAAO7N,KAAKomO,iBAAiBv4N,KAC7BrG,EAASqG,EAAKrG,OACd+O,EAAS,GAEJ3M,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBqsB,EAAOpoB,EAAKjE,KACZ2M,EAAO5U,KAAKkM,EAAKjE,IAGzB,OAAO2M,GAGXi0N,cAAe,SAASnpG,EAAQprG,GAG5B,IAFA,IAAI1f,EAAS,GACT/O,EAAS65H,EAAO75H,OACXoC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxBqsB,EAAOorG,EAAOz3H,KACd2M,EAAO5U,KAAK0/H,EAAOz3H,IAG3B,OAAO2M,GAGX6vN,eAAgB,WACZ,IAAIt3L,EAAS9uC,KAAK04M,QAIlB,OAHK5pK,IACDA,EAAS9uC,KAAK04M,QAAU14M,KAAKuqO,OAAOnE,eAAepmO,KAAKi0I,WAErDnlG,GAGX27L,aAAc,kBACHzqO,KAAK4gN,eACL5gN,KAAK04M,WAgCpB5uL,EAAQ86F,QAAUA,GAClB96F,EAAQujL,iBAAmBA,GAC3BvjL,EAAQi7M,sBAAwBA,GAChCj7M,EAAQunK,UAAYA,GACpBvnK,EAAQi8M,YAAcA,GAl9C1B,CAo9CGjlO,OAAOH,MAAM+G,QAgBF/G,OASd,SAAUgC,GAGV7B,OAAOH,MAAMmpB,QAAUhpB,OAAOH,MAAMmpB,SAAW,GAC/C,IAAIA,EAAUnpB,MAAMmpB,QAChBy1I,EAAaz1I,EAAQy1I,WACrBvqC,EAAUlrG,EAAQkrG,QAClBwpC,EAAY10I,EAAQ00I,UACpBhB,EAAQgB,EAAUhB,MAClBiB,EAAkBD,EAAUC,gBAC5BwQ,EAAWnlJ,EAAQmlJ,SACnBzmK,EAAashB,EAAQthB,WACrBvF,EAAU6mB,EAAQ7mB,QAClBo9J,EAAoBv2I,EAAQu2I,kBAC5BgiB,EAAcv4J,EAAQu4J,YACtB3rD,EAAa5sG,EAAQ4sG,WACrBirC,EAAM73I,EAAQ63I,IACd+nB,EAAmB5/J,EAAQ4/J,iBAC3B3zK,EAAQ+T,EAAQ/T,MAChBgU,EAAUppB,MAAMopB,QAChB6gN,EAAe7gN,EAAQykH,MACvBq8F,EAAc9gN,EAAQuiH,KACtB5wF,EAAY3xB,EAAQ2xB,UACpBq4F,EAAmBhqH,EAAQgqH,iBAC3BnU,EAAWj/H,MAAMi/H,SACjB1E,EAAO0E,EAAS1E,KAChB+1D,EAAgBrxD,EAAS5F,MACzBzmF,EAAYqsF,EAASrsF,UAErBu3L,EAAgB,IAGhBC,EAAgB,eAChBC,EAAc,aAEdC,EAAqB,GAErBC,EAAS7nO,KAAK+xH,GAAK,IACnB2oC,EAAS,SACTotE,EAAS,SACT/sE,EAAU,UACVgtE,EAAiB,gBACjBC,EAAuB,qBAE3B,SAAS7/N,EAAIowH,EAAMlzH,GACf,IAAIkwC,EAASgjF,EAAKN,YACd7rH,EAAOmsH,EAAKhqG,UACZ29G,EAAUgwB,EAAW72J,GAKzB,OAHAkzH,EAAKR,UAAU,CAAExiF,EAAOxzC,EAAImqI,EAAQ1jH,KAAM+sB,EAAOz0C,EAAIorI,EAAQnrH,MAC7Dw3G,EAAK3pG,QAAQ,CAAExiB,EAAKzC,OAASuiI,EAAQ1jH,KAAO0jH,EAAQzjH,OAAQrc,EAAK9C,QAAU4iI,EAAQnrH,IAAMmrH,EAAQxjH,UAE1F6vG,EAGX,IAAI4S,EAAQo8F,EACRU,EAAST,EACT38F,EAAOnkH,EAAQmkH,KAEnB,SAASq9F,EAAkB13M,EAAO3sB,GAC9B,IAAIwtK,EAAW7gJ,EAAMqlB,IACjBk9G,EAAUviI,EAAMshB,SAAS,GAAG+D,IAC5BuuH,EAASvgK,EAAQugK,QAAU,GAC3BxV,EAAa/qJ,EAAQ+qJ,YAAc,GAEnC7lJ,EAAUk/N,EAAOl+F,SAAS,IAAIlS,EAAK,CAAEw5C,EAASz3F,GAAIy3F,EAASx3F,IAAM,CAAEw3F,EAAS1nK,QAAS0nK,EAAS/nK,WAAa,CAC3GkxH,OAAQ,KAGRj9F,EAAO,IAAIstG,EAAKr6G,EAAM+M,KAAM,IAAIqwJ,EAAc76B,EAAQn5E,GAAIm5E,EAAQl5E,IAAK,CACvE6Z,KAAM7vF,EAAQ6vF,KACd9jE,KAAM,CAAEm8F,MAAOloH,EAAQkoH,SAGvBo8G,EAAgBhgO,EAAIo1B,EAAKg7F,OAAOz0H,QAASD,EAAQ6uI,SAEjD01F,EAAWH,EAAOl+F,SAASo+F,EAAe,CAC1C3tG,OAAQ,CACJzO,MAAOq4C,EAAOz6J,MAAQy6J,EAAOr4C,MAAQ,GACrCpiH,MAAOy6J,EAAOz6J,MACd4pB,QAAS6wI,EAAO7wI,QAChBolH,SAAUyrB,EAAOzrB,SACjBzP,SAAU,QACV6P,QAAS,SAEbnpH,KAAM,CACFm8F,MAAO6iC,KAIX99H,EAAW,IAAIq6G,EAKnB,OAJAr6G,EAAS4lB,OAAO3tC,GAChB+nB,EAAS4lB,OAAO0xL,GAChBt3M,EAAS4lB,OAAOnZ,GAETzM,EAGX,SAASu3M,EAAS93K,EAAOz9C,EAAKyC,GAC1B,IAAIulB,EAAO62F,EAAQphE,EAAMz1B,MAAQy1B,EAAMz1B,KAAOqgI,EAAUR,UACpD5/H,EAAK42F,EAAQphE,EAAMx1B,IAAMw1B,EAAMx1B,GAAKogI,EAAUlpC,UAKlD,OAHA1hE,EAAMz1B,KAAO96B,KAAKuV,IAAIvV,KAAK8S,IAAIioB,EAAID,GAAOhoB,GAC1Cy9C,EAAMx1B,GAAK/6B,KAAK8S,IAAI9S,KAAKuV,IAAIwlB,EAAID,GAAOvlB,GAEjCg7C,EAGX,SAASyuG,EAAMzmC,EAAMlzH,GACjB,IAAI6mI,EAAUgwB,EAAW72J,GAKzB,OAHA6mI,EAAQ1jH,MAAQ0jH,EAAQ1jH,KAAM0jH,EAAQnrH,KAAOmrH,EAAQnrH,IACrDmrH,EAAQzjH,OAASyjH,EAAQzjH,MAAOyjH,EAAQxjH,QAAUwjH,EAAQxjH,OAEnDvgB,EAAIowH,EAAM2T,GAGrB,IACIjD,EAAOu+F,EACP51F,EAAUlrH,EAAQkrH,QAElB02F,EAAQ7hN,EAAQliB,MAAM7E,OAAO,CAC7BoF,KAAM,SAAS0D,EAASu3K,EAAa2K,EAAOlyJ,QACxB,IAAZA,IAAsBA,EAAU,IAEpC77B,KAAK6L,QAAUA,EACf7L,KAAK+tL,MAAQA,EACb/tL,KAAK4rO,eAAiB,IAAI38D,EAASN,aAAa3uK,KAAM67B,GACtD77B,KAAK20N,iBAAmBnsN,EAAW,GAAIxI,KAAKkH,QAASk8K,GACrDpjL,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAK20N,kBACnC30N,KAAK60N,WAAW9mC,GAEhB/tL,KAAK2zM,UAGT3xM,QAAS,WACDhC,KAAK2gF,UACL3gF,KAAK2gF,QAAQ3+E,UACbhC,KAAK2gF,QAAU,aAGZ3gF,KAAK6L,eACL7L,KAAKihF,gBAGhBv4E,MAAO,SAASmjO,GACZ,IAAIjvJ,EAAU58E,KAAKqmB,SAAS,GAE5B,GAAyB,IAArBhf,UAAUG,OACV,OAAOo1E,EAAQl0E,QAGnBk0E,EAAQl0E,MAAMmjO,GACd7rO,KAAK8rO,iBAAiBD,IAG1BE,MAAO,WACH,IAAIprJ,EAAU3gF,KAAK2gF,QAEnBA,EAAQ1qB,QACR0qB,EAAQ60D,KAAKx1I,KAAKgsO,WAGtB72F,aAAc,WACV,OAAOn1I,KAAKgsO,UAGhBC,UAAW,SAASnzN,GAChB,IAAIuN,EAAWrmB,KAAKqmB,SAChB4lN,EAAY,GAEhB,GAAyB,IAArB5kO,UAAUG,OAAc,CACxB,IAAK,IAAID,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjC0kO,EAAUtqO,KAAK0kB,EAAS9e,GAAGmB,SAG/B,OAAOujO,EAGX,GAAIhpO,EAAQ6V,GACR,IAAK,IAAI8oK,EAAM,EAAGA,EAAM9oK,EAAOtR,OAAQo6K,IAC/B93J,EAAQgrC,SAASh8C,EAAO8oK,KACxBv7J,EAASu7J,GAAKl5K,MAAMoQ,EAAO8oK,IAKvC5hL,KAAK8rO,iBAAiBhzN,IAG1BgzN,iBAAkB,SAAShzN,GAIvB,IAHA,IAAIuN,EAAW,GAAGhJ,OAAOrd,KAAKkH,QAAQ01E,SAClCsvJ,EAAc,GAAG7uN,OAAOvE,GAEnBvR,EAAI,EAAGA,EAAI2kO,EAAY1kO,OAAQD,IACpC8e,EAAS9e,GAAGmB,MAAQwjO,EAAY3kO,IAIxCgiB,OAAQ,WACJvpB,KAAKu/N,uBAGTA,oBAAqB,WACjB,IAAI5gN,EAAc3e,KAAKkH,QAAQyX,YAE/B3e,KAAKmsO,oBAAmB,GAExBnsO,KAAK2zM,SAEL3zM,KAAKmsO,mBAAmBxtN,IAG5Bg1L,OAAQ,WACJ,IAAIlkM,EAAOzP,KAAKosO,eACZhgO,EAAU,IAAI8uH,EAAK,CAAE,EAAG,GAAK,CAAEzrH,EAAKzC,MAAOyC,EAAK9C,SAEpD3M,KAAK+0N,eAEL/0N,KAAKqsO,UAAYrsO,KAAKssO,mBAEtBtsO,KAAKusO,eAEL,IAAI3wG,EAAOymC,EAAMj2J,EAAQwvH,OAAQ57H,KAAKwsO,kBACtCxsO,KAAKowI,OAAOxU,IAGhBrqG,WAAY,SAASrqB,EAAS6mL,GAC1B/tL,KAAK20N,iBAAmBnsN,EAAWxI,KAAK20N,iBAAkBztN,GAC1DlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAK20N,kBAEnC30N,KAAK60N,WAAW9mC,GAEhB/tL,KAAK2zM,UAGT0rB,aAAc,SAAS9hF,GACnBv9I,KAAK4rO,eAAeruF,IAAMhrI,QAAQgrI,GAC9Bv9I,KAAK2gF,SAAiC,QAAtB3gF,KAAK2gF,QAAQj7E,OAC7B1F,KAAK2gF,QAAQ3+E,UACbhC,KAAK2gF,QAAU,OAIvB2+I,eAAgB,SAAS/wD,GACrBvuK,KAAK4rO,eAAer9D,KAAOA,GAG/BsmD,WAAY,SAAS9mC,GACjB,IAAI0+C,EAAe1+C,GAAS/tL,KAAK+tL,OAAS,GAC1C/tL,KAAK+tL,MAAQ0+C,EAEbzsO,KAAKkH,QAAUsB,EAAW,GAAIikO,EAAczsO,KAAKkH,SACjD,IAAIA,EAAUlH,KAAKkH,QACf01E,EAAU11E,EAAQ01E,QAEtB,GAAI35E,EAAQ25E,GAAU,CAElB,IADA,IAAIv2D,EAAW,GACN9e,EAAI,EAAGA,EAAIq1E,EAAQp1E,OAAQD,IAChC8e,EAAS1kB,KAAK6G,EAAW,GAAIikO,EAAa7vJ,QAASA,EAAQr1E,KAE/DL,EAAQ01E,QAAUv2D,IAI1BimN,iBAAkB,WACd,IAAIplO,EAAUlH,KAAKkH,QAAQmlO,UACvB58N,EAAOzP,KAAK2gF,QAAQlxE,OACpBg4J,EAASvgK,EAAQugK,QAAU,GAC3BilE,EAAe,IAAIxxG,EAAK,CAAE,EAAG,GAAK,CAAEzrH,EAAKzC,MAAOyC,EAAK9C,SAqBzD,OAnBA3M,KAAKwsO,iBAAmBtlO,EAAQyxC,QA1JnB,EA4JT8uH,EAAOz6J,MAAQ,IACf0/N,EAAerqE,EAAMqqE,EAAcjlE,EAAOz6J,QAG9Bs/H,EAAKc,SAASs/F,EAAc,CACxC7uG,OAAQ,CACJzO,MAAOq4C,EAAOz6J,MAAQy6J,EAAOr4C,MAAQ,GACrCpiH,MAAOy6J,EAAOz6J,MACdgvI,SAAUyrB,EAAOzrB,SACjBzP,SAAU,QACV6P,QAAS,SAEbnpH,KAAM,CACFm8F,MAAOloH,EAAQ+qJ,eAO3B8iE,aAAc,WACV,IACI7tN,EADMlH,KACQkH,QACdy5E,EAFM3gF,KAEQ2gF,QACd90E,EAAU7L,KAAK2sO,kBACfl9N,EAAOzP,KAAKosO,eAEhBtiN,EAAQ6iE,YAAY9gF,EAAS4D,GAExBkxE,GAAWA,EAAQz5E,QAAQxB,OAASwB,EAAQqvN,UAS7Cv2N,KAAK2gF,QAAQ1qB,QACbj2D,KAAK2gF,QAAQp3D,WATTo3D,GACAA,EAAQ3+E,UAGZhC,KAAK2gF,QAAUs0D,EAAQjuF,OAAOn7C,EAAS,CACnCnG,KAAMwB,EAAQqvN,aAQ1B6V,aAAc,WACV,IAAIllO,EAAUlH,KAAKkH,QACfuI,EAAOzP,KAAK4sO,WAMhB,OAJI1lO,EAAQmlO,WACR7jO,EAAWiH,EAAMvI,EAAQmlO,WAGtB58N,GAGXk9N,gBAAiB,WAMb,OALK3sO,KAAKihF,iBACNjhF,KAAKihF,eAAiB7xE,SAAS0O,cAAc,OAC7C9d,KAAK6L,QAAQqS,YAAYle,KAAKihF,iBAG3BjhF,KAAKihF,gBAGhBrvD,QAAS,WACL,OAAO5xB,KAAK4sO,YAGhBA,SAAU,WACN,IAAI/gO,EAAU7L,KAAK6L,QACfghO,EAAc7sO,KAAK8sO,eACnB9/N,EAAQnB,EAAQsS,YAChBxR,EAASd,EAAQ0oB,aAUrB,OARKvnB,IACDA,EAAQ6/N,EAAY7/N,OAGnBL,IACDA,EAASkgO,EAAYlgO,QAGlB,CAAEK,MAAOA,EAAOL,OAAQA,IAGnCmgO,aAAc,WACV,MAAO,CACH9/N,MAnUQ,IAoURL,OAtUS,MA0UjBw/N,mBAAoB,SAASzjO,GAGzB1I,KAAKkH,QAAQyX,YAAcjW,EAC3B,IAAK,IAAInB,EAAI,EAAGA,EAAIvH,KAAKqmB,SAAS7e,OAAQD,IAH3BvH,KAIFqmB,SAAS9e,GAAGL,QAAQoqF,UAAU3yE,YAAcjW,KAKjE23J,EAAkBsrE,EAAO,CACrBl5D,SAAU,GACVsb,MAAO,UACPwoC,SAAU,GACV35I,QAAS,GACTjtC,MAAO,GACP08L,UAAW,KAGf,IAAIU,EAASlC,EACTmC,EAAUpC,EACV5wG,EAAQi3D,EAEZ,SAASg8C,EAAeC,EAAmB/9D,GACvC,IAGI75J,EAAO3J,EAHPmB,EAAWogO,EAAkBpgO,SAC7BsiK,EAAQ89D,EAAkB99D,MAC1BC,EAAQ69D,EAAkB79D,MAkB9B,OAfI69D,EAAkB96L,UAClB98B,EAAQ,IAAI0kH,EAAMo1C,EAAOtiK,GACzBnB,EAAM,IAAIquH,EAAMo1C,EAAQD,EAAY1/J,KAAM3C,KAE1CwI,EAAQ,IAAI0kH,EAAMltH,EAAUuiK,GAC5B1jK,EAAM,IAAIquH,EAAMltH,EAAUuiK,EAAQF,EAAY1/J,OAGnC,IAAIs9N,EAAO,CACtBlvG,OAAQ,CACJzO,MAAO+/C,EAAY//C,MACnBpiH,MAAOmiK,EAAYniK,SAExBovC,OAAO9mC,GAAOs1H,OAAOj/H,GAK5B,SAASwhO,EAAYC,EAAWt7D,EAAeo7D,EAAmB/9D,GAC9D,IAAIr0J,EAAQg3J,EAActqK,OAE1B,GAAI2nK,EAAY7iK,QAGZ,IAFA,IAAIsnC,EAASs5L,EAAkBt5L,OAC3Bm9H,EAAUm8D,EAAkBn8D,QACvBxpK,EAAI4nK,EAAY1qH,KAAMl9C,EAAIuT,EAAOvT,GAAK4nK,EAAYz8H,KACnDnrC,EAAI4nK,EAAY4C,UAAa,IAIjCm7D,EAAkB99D,MAAQx7H,EAASm9H,EAAQ5zF,GAAK4zF,EAAQ5zF,GAAKgyF,EAAY1/J,KACzEy9N,EAAkB79D,MAAQz7H,EAASm9H,EAAQ7zF,GAAKiyF,EAAY1/J,KAAOshK,EAAQ7zF,GAC3EgwJ,EAAkBpgO,SAAWglK,EAAcvqK,GAE3C6lO,EAAUrzL,OAAOkzL,EAAeC,EAAmB/9D,KAK/D,IAAIk+D,EAAchrD,EAAYt/K,OAAO,CACjCoF,KAAM,SAASjB,EAAS+9J,GACpB,IAAI2V,EAAe1zK,GAAW,IACzB8tH,EAAQ4lD,EAAa9kK,WAAsC,IAA1B8kK,EAAaxoI,WAAuB6yH,GAAW,IAAI1nB,MACrFq9B,EAAej4K,EAAEI,OAAO,GAAI63K,EAAc,CACtC9kK,SAAS,KAIjBusK,EAAYt6K,GAAGI,KAAKoC,KAAKvK,KAAM,EAAG,EAAG46K,EAAc3V,GAEnDjlK,KAAKkH,QAAQgrK,UAAYlyK,KAAKkH,QAAQgrK,WAAalyK,KAAKkH,QAAQ0qK,UAAY,IAGhF/M,gBAAiB,SAAS39J,GACtB,IAAI0zK,EAAepyK,EAAW,GAAIxI,KAAKkH,QAASA,GAIhD,OAHA0zK,EAAepyK,EAAW,GAAIoyK,EAAe,CAAElL,OAAQ,CAAE97H,OAAQgnI,EAAahnI,WACjEg+H,UAAYgJ,EAAahJ,WAAa9nJ,EAAQu3I,cAAcuZ,EAAazkK,IAAKykK,EAAahiK,KAEjGgiK,GAGX3K,WAAY,aAGZrgK,OAAQ,WACJ,IAAIukB,EAAWn0B,KAAKm0B,SAAW,IAAI64M,EAC/Bt9D,EAAS1vK,KAAKstO,eACdC,EAAYvtO,KAAKwtO,aACjBC,EAAaztO,KAAKmtO,cAClB10K,EAASz4D,KAAK0tO,eAIlB,OAFAv5M,EAAS4lB,OAAOwzL,EAAW79D,EAAQ+9D,EAAYh1K,GAExCtkC,GAGXu5M,aAAc,WAaV,IAZA,IAAIv8G,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfiP,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACdw5B,EAAWlrC,EAAQkrC,SACnBwB,EAAS1sC,EAAQwoK,OAAO97H,OACxB6kB,EAASvxD,EAAQuxD,QAAU,GAC3BtkC,EAAW,IAAI64M,EACflyN,EAAQ29C,EAAOjxD,OACf4uK,EAAYlvK,EAAQkvK,WAAalvK,EAAQ2oK,WAAWpgK,KAAO,EAEtDlI,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIqsD,EAAQ83K,EAASjzK,EAAOlxD,GAAI4O,EAAKyC,GACjCu8J,EAAOhkD,EAAS4hD,QAAQn/G,EAAMz1B,KAAMy1B,EAAMx1B,IAC1Cy0I,EAAQzgI,EAAW++E,EAAS4/C,UAAYoE,EACxCrC,EAAQ1gI,EAAW+iI,EAAOhkD,EAAS4/C,UACnC3+H,EACAygI,EAAM51F,IAAMm5F,GAAaxiI,GAAU,EAAI,GAEvCk/H,EAAM11F,IAAMg5F,GAAaxiI,GAAU,EAAI,GAG3Czf,EAAS4lB,OAAOgzL,EAAO3/F,SAAS,IAAIlS,EAAK,CAAE23C,EAAM51F,GAAI61F,EAAM51F,IAAM,CAAE21F,EAAM11F,GAAK01F,EAAM51F,GAAI61F,EAAM11F,GAAK01F,EAAM51F,KAAO,CAC5GjqD,KAAM,CAAEm8F,MAAOx7D,EAAMw7D,MAAOx4F,QAASg9B,EAAMh9B,SAC3CinG,OAAQ,MAIhB,OAAO1pG,GAGXm5M,aAAc,WAMV,IALA,IACI59D,EADM1vK,KACO0vK,OACbxoK,EAFMlH,KAEQkH,QACditB,EAAW,IAAI64M,EAEVzlO,EAAI,EAAGA,EAAImoK,EAAOloK,OAAQD,IAC/B4sB,EAAS4lB,OAAOwxL,EAAkB77D,EAAOnoK,GAAIL,EAAQwoK,SAGzD,OAAOv7I,GAGXq5M,WAAY,WACR,IAAI9/D,EAAO1tK,KAAKkH,QAAQwmK,KACpBqD,EAAU/wK,KAAK+wK,UACf58I,EAAW,IAAI64M,EAEnB,GAAIt/D,EAAK1gK,MAAQ,GAAK0gK,EAAKphK,QAAS,CAChC,IAAIqhO,EAAW,IAAIZ,EAAO,CACtBlvG,OAAQ,CACJzO,MAAOs+C,EAAKt+C,MACZ4sB,SAAU0xB,EAAK1xB,SACfhvI,MAAO0gK,EAAK1gK,SAIpB2gO,EAASvxL,OAAO20H,EAAQ9zF,GAAI8zF,EAAQ7zF,IAAI0tD,OAAOmmC,EAAQ5zF,GAAI4zF,EAAQ3zF,IACnEjpD,EAAS4lB,OAAO4zL,GAGpB,OAAOx5M,GAGXg5M,YAAa,WACT,IAAI30D,EAAQ,IAAIw0D,EACZ9lO,EAAUlH,KAAKkH,QACf0qK,EAAY1qK,EAAQ6oK,WAAWzjK,QAAUpF,EAAQ0qK,UAAY,EAC7Ds7D,EAAoB,CACpB96L,SAAUlrC,EAAQkrC,SAClBwB,OAAQ1sC,EAAQwoK,OAAO97H,OACvBm9H,QAAS/wK,KAAK+wK,WAQlB,OALAo8D,EAAY30D,EAAOx4K,KAAKgyK,wBAAyBk7D,EAAmBhmO,EAAQ6oK,YAC5Eo9D,EAAY30D,EAAOx4K,KAAKiyK,wBAAyBi7D,EAAmB1kO,EAAW,GAAI,CAC/EupK,SAAUH,EAAY1qK,EAAQgrK,WAC/BhrK,EAAQ2oK,aAEJ2I,KAIfnY,EAAkBgtE,EAAa,CAC3Bl3N,IAAK,EACLyC,IAAK,GAELm3J,WAAY,CACRtgK,KAAM,GACNw/H,MAAO8uB,EACP3uC,MAAOouC,EACPxwJ,MAAOi+N,EACP3+N,SAAS,GAGbujK,WAAY,CACRpgK,KAAM,GACNw/H,MAAO8uB,EACP3uC,MAAOouC,EACPxwJ,MAAOi+N,EACP3+N,SAAS,GAGbohK,KAAM,CACF1gK,MAAOi+N,GAGXv7D,OAAQ,CACJ5iK,SAAUixJ,EACVhoB,QAAS,GAEbniG,QAAQ,EACRu+H,aAAa,IAGjB,IAAIy7D,EAAU9jN,EAAQliB,MAAM7E,OAAO,CAC/BoF,KAAM,SAASwnC,EAAOyzI,GAElB,IAAIn0J,EAAM0gB,EAAMzoC,QACZiP,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACV1R,EAAUlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASk8K,GAE1Dl8K,EAAQ+rB,KAAO/rB,EAAQkoH,MAEvBpvH,KAAK2vC,MAAQA,EAETqlF,EAAQ9tH,EAAQwB,OAChBxB,EAAQwB,MAAQguH,EAAWxvH,EAAQwB,MAAOyN,EAAKyC,GAE/C1R,EAAQwB,MAAQyN,GAIxBzN,MAAO,SAAS0qE,GACZ,IAAIlsE,EAAUlH,KAAKkH,QACfwB,EAAQxB,EAAQwB,MAEpB,GAAyB,IAArBrB,UAAUG,OACV,OAAOkB,EAGX,IAAIumB,EAAMjvB,KAAK2vC,MAAMzoC,QACjBiP,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IAEd1R,EAAQ2mO,UAAY74G,EAAQ9tH,EAAQ2mO,WAAa3mO,EAAQwB,MAAQyN,EACjEjP,EAAQwB,MAAQguH,EAAWtjD,EAAUj9D,EAAKyC,GAEtC5Y,KAAKm0B,UACLn0B,KAAK8tO,aAKjBztE,EAAkButE,EAAS,CACvBx+G,MAAOouC,IAGX,IAAIuwE,EAAgBH,EAAQ7qO,OAAO,CAC/BoF,KAAM,SAASwnC,EAAOzoC,GAClB0mO,EAAQ7lO,GAAGI,KAAKoC,KAAKvK,KAAM2vC,EAAOzoC,GAElClH,KAAKkH,QAAUsB,EAAW,CACtBwlO,MAAO,CACH1hO,QAAS0oH,EAAQ9tH,EAAQ8mO,SAE9BhuO,KAAKkH,UAGZkpI,OAAQ,WACJ,IAaI69F,EAAYC,EAAiBC,EAZ7BjnO,EADMlH,KACQkH,QACdyoC,EAFM3vC,KAEM2vC,MACZ8gG,EAAQ9gG,EAAMzoC,QACd0sC,EAAS68F,EAAM78F,OACfxB,EAAWq+F,EAAMr+F,SACjBm7L,EAAY59L,EAAMohI,UAClBq9D,EAAYlnO,EAAQ8mO,MAAMv+N,MAAQvI,EAAQuI,KAC1C4+N,EAAkBnnO,EAAQuI,KAAO,EACjCkpC,EAAS4mH,EAAWr4J,EAAQyxC,QAC5BjmC,EAAQ0/B,EACHuG,EAAO/E,EAAS,OAAS,SACzB+E,EAAO/E,EAAS,SAAW,OAGpClhC,EAAQkhC,GAAUlhC,EAAQA,EAEtB0/B,GACA+7L,EAAW,IAAIxsE,EACX4rE,EAAUtwJ,GAAKvqE,EAAO66N,EAAUrwJ,GAChCqwJ,EAAUtwJ,GAAKvqE,EAAO66N,EAAUnwJ,IAEhCxpC,EACAu6L,EAASlxJ,IAAMmxJ,EAEfD,EAAShxJ,IAAMixJ,EAGflnO,EAAQ+4I,QAAU+qF,IAKlBiD,EAJAC,EAAkB,IAAIvsE,EAClB4rE,EAAUpwJ,GAAKzqE,EAAO66N,EAAUrwJ,GAAKmxJ,EACrCd,EAAUpwJ,GAAKzqE,EAAO66N,EAAUnwJ,GAAKixJ,MAK7CF,EAAW,IAAIxsE,EACX4rE,EAAUtwJ,GAAIswJ,EAAUrwJ,GAAKxqE,EAC7B66N,EAAUpwJ,GAAIowJ,EAAUrwJ,GAAKxqE,GAE7BkhC,EACAu6L,EAAS/wJ,IAAMgxJ,EAEfD,EAASjxJ,IAAMkxJ,EAGflnO,EAAQ+4I,QAAU+qF,IAKlBiD,EAJAC,EAAkB,IAAIvsE,EAClB4rE,EAAUtwJ,GAAKoxJ,EAAiBd,EAAUrwJ,GAAKxqE,EAC/C66N,EAAUpwJ,GAAKkxJ,EAAiBd,EAAUrwJ,GAAKxqE,KAM3D1S,KAAKmuO,SAAWA,EAChBnuO,KAAKkuO,gBAAkBA,EACvBluO,KAAKk5C,IAAM+0L,GAAcE,EAAShnO,QAAQqE,IAAItE,EAAQugK,OAAOz6J,QAGjEshO,kBAAmB,WACf,IAAIpnO,EAAUlH,KAAKkH,QAEnB,MAAO,CACH+rB,KAAM,CACFm8F,MAAOloH,EAAQkoH,MACfx4F,QAAS1vB,EAAQ0vB,SAErBinG,OAAQ7I,EAAQ9tH,EAAQugK,QAAU,CAC9Br4C,MAAOloH,EAAQugK,OAAOz6J,MAAQ9F,EAAQugK,OAAOr4C,OAASloH,EAAQkoH,MAAQ,GACtEpiH,MAAO9F,EAAQugK,OAAOz6J,MACtBgvI,SAAU90I,EAAQugK,OAAOzrB,SACzBplH,QAAS1vB,EAAQ0vB,SACjB,OAIZ23M,QAAS,WACL,IACI5+L,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACdupI,EAAQ9gG,EAAMzoC,QACd0sC,EAAS68F,EAAM78F,OACfxB,EAAWq+F,EAAMr+F,SACjBuG,EAAS4mH,EAAWr4J,EAAQyxC,QAMhC,OAJYvG,EACRuG,EAAO/E,EAAS,OAAS,SACzB+E,EAAO/E,EAAS,SAAW,UAMvCysH,EAAkB0tE,EAAe,CAC7B9tF,MAAO+qF,EAEPgD,MAAO,CACHvmE,OAAQ,CACJz6J,MAAO,IAIfoiH,MAAOouC,EACPiK,OAAQ,CACJz6J,MAAO,GAEX4pB,QAAS,EAET+hB,OAAQ4mH,EAAW,GACnBjuE,UAAW,CACP5rF,KAAMslO,GAEV1+N,SAAS,IAGb,IAAIkiO,EAA8B9yL,EAAU34C,OAAO,CAC/C2yC,MAAO,WACH,IAAIxuC,EAAUlH,KAAKkH,QACfyxC,EAASzxC,EAAQyxC,OACjBxa,EAAOj3B,EAAQi3B,KACfC,EAAKl3B,EAAQk3B,GACbgU,EAAWlrC,EAAQkrC,SACnBpN,EAAOoN,EAAW,KAAO,KAEzBlrC,EAAQ0sC,SAAWxB,GACnBjU,EAAK6G,IAAS2T,EAAQva,EAAG4G,IAAS2T,IAElCxa,EAAK6G,IAAS2T,EAAQva,EAAG4G,IAAS2T,GAGtC,IAAIkvK,EAAY7nN,KAAK6nN,UAAY,IAAI52B,EAAc9yJ,EAAK8+C,GAAI9+C,EAAK++C,IAC7DuxJ,EAAUzuO,KAAKyuO,QAAU,IAAIx9C,EAAc7yJ,EAAG6+C,GAAI7+C,EAAG8+C,IAEhC,IAArBh2E,EAAQwf,WACRxf,EAAQwf,SAAWrjB,KAAKuV,IAAKivM,EAAUrtF,WAAWi0G,GAAWvnO,EAAQwf,SAAY,IAAM,KAI/FgsB,KAAM,SAAS2hD,GACX,IAAIq6I,EAAahlD,EAAiB1pL,KAAK6nN,UAAUziN,EAAGpF,KAAKyuO,QAAQrpO,EAAGivF,GAChEs6I,EAAajlD,EAAiB1pL,KAAK6nN,UAAU1jN,EAAGnE,KAAKyuO,QAAQtqO,EAAGkwF,GAEpEr0F,KAAK6L,QAAQ0nC,UAAUA,IAAYvD,UAAU0+L,EAAYC,OAIjEtuE,EAAkBmuE,EAA6B,CAC3Ct6F,OAAQi3F,EACRzkN,SAzvBe,MA4vBnBqtH,EAAiBtgI,QAAQwjB,SAAS8zM,EAAeyD,GAEjD,IAAII,GAAU39C,EACV49C,GAAShE,EAETiE,GAAqBf,EAAchrO,OAAO,CAC1CoF,KAAM,SAASwnC,EAAOzoC,GAClB6mO,EAAchmO,GAAGI,KAAKoC,KAAKvK,KAAM2vC,EAAOzoC,GAEnC8tH,EAAQh1H,KAAKkH,QAAQuI,QACtBzP,KAAKkH,QAAQuI,KAA4C,GAArCzP,KAAK2vC,MAAMzoC,QAAQ6oK,WAAWtgK,OAI1Ds/N,aAAc,WACV,IACIp/L,EADM3vC,KACM2vC,MACZlgC,EAFMzP,KAEKkH,QAAQuI,KACnBixL,EAAWjxL,EAAO,EAClB+G,EAAQm5B,EAAMzoC,QAAQ0sC,QAAU,EAAI,EAaxC,OAVIjE,EAAMzoC,QAAQkrC,SACN,CACJ,IAAIw8L,GAAQ,EAAG,EAAIluC,GAAW,IAAIkuC,GAAQ,EAAIp4N,EAAO/G,EAAM,GAAI,IAAIm/N,GAAQ,EAAG,EAAIluC,IAG9E,CACJ,IAAIkuC,GAAQ,EAAIluC,EAAU,GAAI,IAAIkuC,GAAQ,EAAG,EAAIp4N,EAAO/G,GAAO,IAAIm/N,GAAQ,EAAIluC,EAAU,KAOrGotC,QAAS,WACL,IACIn+L,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACdoqF,EAAY,IAAIk9I,EAA4BxuO,KAAKm0B,SAAU3rB,EAAWtB,EAAQoqF,UAAW,CACzFl/C,SAAUzC,EAAMzoC,QAAQkrC,SACxBwB,OAAQjE,EAAMzoC,QAAQ0sC,OACtB+E,OAAQ34C,KAAKuuO,QAAQrnO,EAAQyxC,QAC7Bxa,KAAMwR,EAAMojI,QAAQ7rK,EAAQ2mO,WAC5BzvM,GAAIuR,EAAMojI,QAAQ7rK,EAAQwB,WAGQ,IAAlCxB,EAAQoqF,UAAU3yE,cAClB2yE,EAAUpqF,QAAQwf,SAAW,GAGjC4qE,EAAU57C,QACV47C,EAAUx6C,QAGdlnC,OAAQ,WACJ,IACI+/B,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACd8nO,EAAiBhvO,KAAKsuO,oBACtBruF,EAAQjgJ,KAAK+uO,aAAa7nO,EAAQwB,OAEtCxB,EAAQoqF,UAAU5rF,KAAOqlO,EAEzB,IAAI52M,EAAW,IAAI06M,GAAO,CACtBhxG,OAAQmxG,EAAenxG,OACvB5qG,KAAM+7M,EAAe/7M,OACtBmpB,OAAO6jG,EAAM,IAAIrV,OAAOqV,EAAM,IAAIrV,OAAOqV,EAAM,IAAI36F,QAElD6vH,EAAOxlI,EAAMojI,QAAQ7rK,EAAQwB,OAKjC,OAJAyrB,EAASof,UAAUA,IAAYvD,UAAUmlI,EAAKl4F,GAAIk4F,EAAKj4F,KAEvDl9E,KAAKm0B,SAAWA,EAETA,KAIX86M,GAA4BvzL,EAAU34C,OAAO,CAC7C2yC,MAAO,WACH,IAAIxuC,EAAUlH,KAAKkH,QACf89B,EAAOhlC,KAAKglC,KAAO99B,EAAQkrC,SAAWosH,EAAUxpJ,EAAIwpJ,EAAUn5J,EAC9D+4B,EAAKp+B,KAAKo+B,GAAKl3B,EAAQgoO,UAAU,GAAGlqM,GACpC7G,EAAOn+B,KAAKm+B,KAAOj3B,EAAQioO,UAAU,GAAGnqM,GAEnB,IAArB99B,EAAQwf,WACRxf,EAAQwf,SAAWrjB,KAAKuV,IAAKvV,KAAK6T,IAAIknB,EAAKD,GAAQj3B,EAAQkoO,MAAS,IAAM,IAG9EpvO,KAAKutD,KAAKpvB,IAGduU,KAAM,SAAS2hD,GACX,IAAI3rF,EAAQghL,EAAiB1pL,KAAKm+B,KAAMn+B,KAAKo+B,GAAIi2D,GACjDr0F,KAAKutD,KAAK7kD,IAGd6kD,KAAM,SAAS7kD,GACX,IAAIqmB,EAAS,MAAQ/uB,KAAKglC,KAAKj2B,cAC3BsyH,EAASrhI,KAAKkH,QAAQgoO,UAE1B7tG,EAAO,GAAGtyG,GAAQrmB,GAClB24H,EAAO,GAAGtyG,GAAQrmB,MAI1B23J,EAAkB4uE,GAA2B,CACzC/6F,OAAQi3F,EACRiE,MAx2Be,MA22BnBr7F,EAAiBtgI,QAAQwjB,SAAS+zM,EAAaiE,IAE/C,IAAII,GAAUzE,EACV0E,GAASzE,EAET0E,GAAmBxB,EAAchrO,OAAO,CACxCoF,KAAM,SAASwnC,EAAOzoC,GAClB6mO,EAAchmO,GAAGI,KAAKoC,KAAKvK,KAAM2vC,EAAOzoC,GAEnC8tH,EAAQh1H,KAAKkH,QAAQuI,QACtBzP,KAAKkH,QAAQuI,KAA4C,GAArCzP,KAAK2vC,MAAMzoC,QAAQ6oK,WAAWtgK,OAI1Ds/N,aAAc,SAASrmO,GACnB,IACIinC,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACdupI,EAAQ9gG,EAAMzoC,QACd0sC,EAAS68F,EAAM78F,OACfxB,EAAWq+F,EAAMr+F,SACjB/S,EAAMuU,IAAWxB,GAAY,EAAI,EACjC3iC,EAAOvI,EAAQuI,KAAO4vB,EACtBmwM,EAAU7/L,EAAMojI,QAAQpjI,EAAMzoC,QAAQiP,KACtCg/J,EAAOxlI,EAAMojI,QAAQrqK,GACrBs8B,EAAOoN,EAAWosH,EAAUxpJ,EAAIwpJ,EAAUn5J,EAC1CoqO,EAAWr9L,EAAWosH,EAAUn5J,EAAIm5J,EAAUxpJ,EAC9C2jC,EAAS34C,KAAKuuO,UAAYlvM,EAE1B0iG,EAAK,IAAIkvD,EACblvD,EAAG/8F,GAAQwqM,EAAQxqM,EAAO,KAC1B+8F,EAAG0tG,GAAYD,EAAQC,EAAW,KAElC,IAAIhuG,EAAK,IAAIwvD,EACbxvD,EAAGz8F,GAAQmwI,EAAKnwI,EAAO,KACvBy8F,EAAGguG,GAAYt6D,EAAKs6D,EAAW,KAE3Br9L,GACA2vF,EAAG/xF,UAAU2I,EAAQ,GACrB8oF,EAAGzxF,UAAU2I,EAAQ,KAErBopF,EAAG/xF,UAAU,EAAG2I,GAChB8oF,EAAGzxF,UAAU,EAAG2I,IAGpB,IAAI6pF,EAAKf,EAAGt6H,QACR2hI,EAAK/G,EAAG56H,QAUZ,OARIirC,GACAowF,EAAGxyF,UAAUvgC,EAAM,GACnBq5H,EAAG94F,UAAUvgC,EAAM,KAEnB+yH,EAAGxyF,UAAU,EAAGvgC,GAChBq5H,EAAG94F,UAAU,EAAGvgC,IAGb,CAAEsyH,EAAIN,EAAIe,EAAIsG,IAGzBglG,QAAS,WACL,IACIn+L,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACd+4I,EAAQjgJ,KAAK+uO,aAAa7nO,EAAQwB,OAClCgnO,EAAc1vO,KAAK0vO,YACnBC,EAAW3vO,KAAK+uO,aAAa7nO,EAAQ2mO,WAEzC6B,EAAYtzL,OAAO6jG,EAAM,IAAIrV,OAAOqV,EAAM,IAAIrV,OAAOqV,EAAM,IAAIrV,OAAOqV,EAAM,IAAI36F,QAEhF,IAAIgsC,EAAY,IAAI29I,GAA0BS,EAAalnO,EAAWtB,EAAQoqF,UAAW,CACrFx7E,QAAS65B,EAAMzoC,QAAQ4O,QACvBs8B,SAAUzC,EAAMzoC,QAAQkrC,SACxB+8L,UAAW,CAAEQ,EAAS,GAAIA,EAAS,IACnCT,UAAW,CAAEjvF,EAAM,GAAIA,EAAM,QAGK,IAAlC/4I,EAAQoqF,UAAU3yE,cAClB2yE,EAAUpqF,QAAQwf,SAAW,GAGjC4qE,EAAU57C,QACV47C,EAAUx6C,QAGdlnC,OAAQ,WACJ,IAAIskD,EAAQ,IAAIm7K,GACZL,EAAiBhvO,KAAKsuO,oBAEtBtuO,KAAKkH,QAAQ8mO,MAAM1hO,SACnB4nD,EAAMna,OAAO/5C,KAAK4vO,eAGtB,IAAIhzJ,EAAU58E,KAAK0vO,YAAc,IAAIJ,GAAO,CACxCzxG,OAAQmxG,EAAenxG,OACvB5qG,KAAM+7M,EAAe/7M,OAOzB,OAJAihC,EAAMna,OAAO6iC,GAEb58E,KAAKm0B,SAAW+/B,EAETA,GAGX07K,YAAa,WACT,IAAIC,EAAe7vO,KAAKkH,QAAQ8mO,MAC5BvmE,EAASooE,EAAapoE,QAAU,GAChC0mE,EAAWnuO,KAAKmuO,SAAShnO,QAAQqE,IAAIi8J,EAAOz6J,OAAS,GAEzD,OAAO,IAAIsiO,GAAOliG,SAAS+gG,EAAStrE,SAAU,CAC1C5vI,KAAM,CACFm8F,MAAOygH,EAAazgH,MACpBx4F,QAASi5M,EAAaj5M,SAE1BinG,OAAQ,CACJzO,MAAOq4C,EAAOz6J,MAAQy6J,EAAOr4C,OAASygH,EAAazgH,MAAQ,GAC3DpiH,MAAOy6J,EAAOz6J,MACdgvI,SAAUyrB,EAAOzrB,eAS7B8zF,GAAUlF,EAEVmF,GAAcpE,EAAM5oO,OAAO,CAC3BqtI,OAAQ,SAASxU,GACb,IAAIv1G,EAAWrmB,KAAKqmB,SAChB2pN,EAAQp0G,EAAKhjF,OAAOxzC,EACpB6qO,EAAQr0G,EAAKhjF,OAAOz0C,EAEpB+0C,EAAM,IAAIyoH,EAAIquE,EAAOC,EAAOD,EAAQp0G,EAAK5uH,QAASijO,EAAQr0G,EAAKjvH,UAEnE3M,KAAK2vC,MAAMygG,OAAOl3F,GAClBl5C,KAAKkwO,kBAAkBh3L,GAEvB,IAAK,IAAI3xC,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjC8e,EAAS9e,GAAG6oI,SAGhBpwI,KAAK47H,KAAO57H,KAAKmwO,QAAQj3L,GACzBl5C,KAAKowO,iBACLpwO,KAAKqwO,kBACLrwO,KAAKswO,eACLtwO,KAAK+rO,SAGTuE,aAAc,WACV,IAAInqE,EAAU,IAAI2pE,GACdS,EAAgBvwO,KAAK2vC,MAAM//B,SAC3ByW,EAAWrmB,KAAKqmB,SAEpB8/I,EAAQpsH,OAAO/5C,KAAKqsO,WACpBlmE,EAAQpsH,OAAOw2L,GAEf,IAAK,IAAIhpO,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IAAK,CACtC,IAAIkM,EAAU4S,EAAS9e,GACvB4+J,EAAQpsH,OAAOtmC,EAAQ7D,UACvB6D,EAAQ/K,MAAM+K,EAAQvM,QAAQwB,OAGlC1I,KAAKgsO,SAAW7lE,GAGpBomE,aAAc,WACV,IAEIrlO,EAAUlH,KAAKkH,QACfyoC,EAAQ3vC,KAAK2vC,MAAQ,IAAI09L,EAAYnmO,EAAQyoC,MAAO3vC,KAAK4rO,gBAE7D5rO,KAAKqmB,SAAW,GAEhB,IAAIA,EAAWnf,EAAQ01E,QACvBv2D,EAAWpjB,EAAQojB,GAAYA,EAAW,CAAEA,GAE5C,IAAK,IAAI9e,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IAAK,CACtC,IAAIosB,EAAiBnrB,EAAW,GAAI6d,EAAS9e,GAAI,CAC7C+pF,UAAW,CACP3yE,YAAazX,EAAQyX,eAGzB6xN,EAliCJ,UAkiCkB78M,EAAessH,MAAkB6uF,GAAqBS,GAhB7DvvO,KAkBFqmB,SAAS1kB,KAAK,IAAI6uO,EAAY7gM,EAAOhc,MAItDm5M,aAAc,WACV,IAAI16L,EAAWpyC,KAAKkH,QAAQyoC,MAAMyC,SAElC,MAAO,CACHplC,MAAOolC,EAvEK,GAh+BJ,IAwiCRzlC,OAAQylC,EA1iCC,IAm+BI,KA2ErB+9L,QAAS,SAASj3L,GAOd,IANA,IAUIzpC,EATAkgC,EADM3vC,KACM2vC,MACZtpB,EAFMrmB,KAESqmB,SACfylJ,EAAY5yH,EAAIqkC,SAChBkzJ,EAAcpqN,EAAS,GAAG6yB,IAAI/xC,QAAQ6kB,KAAK2jB,EAAMuJ,KAE5C3xC,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjCkpO,EAAYzkN,KAAK3F,EAAS9e,GAAG2xC,IAAI/xC,SAkBrC,OAdIwoC,EAAMzoC,QAAQkrC,UACd3iC,EAAOghO,EAAYzjO,QAAU,EAC7ByjO,EAAc,IAAI9uE,EACdmK,EAAU1mK,EAAIqK,EAAMypC,EAAIgkC,GACxB4uF,EAAU1mK,EAAIqK,EAAMypC,EAAIkkC,MAG5B3tE,EAAOghO,EAAY9jO,SAAW,EAC9B8jO,EAAc,IAAI9uE,EACdzoH,EAAI+jC,GAAI6uF,EAAU3nK,EAAIsL,EACtBypC,EAAIikC,GAAI2uF,EAAU3nK,EAAIsL,IAIvBghO,GAGXL,eAAgB,WAUZ,IATA,IAaIvxM,EAVA8Q,EADM3vC,KACM2vC,MACZtpB,EAFMrmB,KAESqmB,SACfqqN,EAAW/gM,EAAMuJ,IACjBA,EAAM7yB,EAAS,GAAG6yB,IAAI/xC,QAAQ6kB,KAAK2jB,EAAMuJ,KACzCu3L,EAAczwO,KAAK47H,KAEdr0H,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjC2xC,EAAIltB,KAAK3F,EAAS9e,GAAG2xC,IAAI/xC,SAIzBwoC,EAAMzoC,QAAQkrC,UACdvT,EAAO4xM,EAAYlzJ,SAASn4E,EAAI8zC,EAAIqkC,SAASn4E,EAC7CuqC,EAAMygG,OAAO,IAAIuxB,EACb+uE,EAASzzJ,GAAKp+C,EAAM4xM,EAAYvzJ,GAChCwzJ,EAASvzJ,GAAKt+C,EAAM4xM,EAAYrzJ,OAGpCv+C,EAAO4xM,EAAYlzJ,SAASp5E,EAAI+0C,EAAIqkC,SAASp5E,EAC7CwrC,EAAMygG,OAAO,IAAIuxB,EACb+uE,EAASzzJ,GAAIyzJ,EAASxzJ,GAAKr+C,EAC3B6xM,EAASvzJ,GAAIuzJ,EAAStzJ,GAAKv+C,KAInC,IAAK,IAAI+iJ,EAAM,EAAGA,EAAMv7J,EAAS7e,OAAQo6K,IACrCv7J,EAASu7J,GAAKxxC,OA7BHpwI,KA6BmB47H,OAItCs0G,kBAAmB,SAASt0G,GACxB,IACIjsF,EADM3vC,KACM2vC,MAChB,IAAKA,EAAMzoC,QAAQkrC,SAAU,CACzB,IAAIzlB,EAAWgjB,EAAMi4H,aAAa56J,QAAU4uH,EAAK5uH,QAC7C2f,EAAW,IACXgjB,EAAMuJ,IAAIgpH,OAAOv1I,EAAU,GAC3BgjB,EAAMuJ,IAAI8oH,QAAQpmC,EAAM,UACxBjsF,EAAMygG,OAAOzgG,EAAMuJ,QAK/Bm3L,gBAAiB,WAUb,IATA,IAGI1gM,EADM3vC,KACM2vC,MACZtpB,EAFMrmB,KAESqmB,SACfqqN,EAAW/gM,EAAMuJ,IAAI/xC,QACrBktF,EAAM1kD,EAAMzoC,QAAQkrC,SAAW,IAAM,IACrC67L,EAAa5nN,EAAS,GAAG6yB,IAEpB3xC,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjC0mO,EAAWjiN,KAAK3F,EAAS9e,GAAG2xC,IAAI/xC,SAGpCupO,EAASr8I,EAAM,IAAMhxF,KAAKuV,IAAI83N,EAASr8I,EAAM,GAAK45I,EAAW55I,EAAM,GAAI,GACvEq8I,EAASr8I,EAAM,IAAMhxF,KAAKuV,IAAIq1N,EAAW55I,EAAM,GAAKq8I,EAASr8I,EAAM,GAAI,GAEvE1kD,EAAMygG,OAAOsgG,GAEb,IAAK,IAAI9uD,EAAM,EAAGA,EAAMv7J,EAAS7e,OAAQo6K,IACrCv7J,EAASu7J,GAAKxxC,OAnBHpwI,KAmBmB47H,SAK1CykC,EAAkB0vE,GAAa,CAC3BpxN,aAAa,EACb0tN,UAAW,CACPp6E,WAAY,IAEhBtiH,MAAO,CACHyC,UAAU,KAIlB,IAAIu+L,GAAuB,IAEvBtwG,GAAMt2G,EAAQs2G,IACduwG,GAAS/F,EACTgG,GAAUjG,EAEd,SAASkG,GAAUpkG,EAAKqkG,EAAY14G,EAAM82C,GACtC,IAAIqJ,EAAQ,IAAIq4D,GACZtzJ,EAASmvD,EAAInvD,OACb5xD,EAAS+gH,EAAIskG,aAEjB,GAAI7hE,EAAY7iK,QACZ,IAAK,IAAI/E,EAAI,EAAGA,EAAIwpO,EAAWvpO,OAAQD,IAAK,CACxC,IAAI0pO,EAAYvkG,EAAIlO,QAAQuyG,EAAWxpO,IACnC2pO,EAAU,IAAIjgD,EAAc1zG,EAAOn4E,EAAIumB,EAASwjJ,EAAY1/J,KAAM8tE,EAAOp5E,GAAG4sC,OAAOggM,EAAWxpO,GAAIg2E,GAEtGi7F,EAAMz+H,OAAO,IAAI62L,GAAO,CACpB/yG,OAAQ,CACJzO,MAAO+/C,EAAY//C,MACnBpiH,MAAOmiK,EAAYniK,SAExBovC,OAAO60L,GAAWrmG,OAAOsmG,IAIpC,OAAO14D,EAGX,SAAS24D,GAAahzM,EAAMC,EAAIgxF,EAAOx4F,GACnC,MAAO,CAAEuH,KAAMA,EAAMC,GAAIA,EAAIgxF,MAAOA,EAAOx4F,QAASA,GAGxD,IAAIw6M,GAAc/uD,EAAYt/K,OAAO,CACjCoF,KAAM,SAASjB,EAAS+9J,GACpBod,EAAYt6K,GAAGI,KAAKoC,KAAKvK,KAAM,EAAG,EAAGkH,EAAS+9J,IAGlDJ,gBAAiB,SAAS39J,GACtB,IAAI0zK,EAAepyK,EAAW,GAAIxI,KAAKkH,QAASA,GAIhD,OAHA0zK,EAAahJ,UAAYgJ,EAAahJ,WAAa9nJ,EAAQu3I,cAAcuZ,EAAazkK,IAAKykK,EAAahiK,KACxGgiK,EAAa1I,UAAY0I,EAAa1I,WAAa0I,EAAahJ,UAAY,GAErEgJ,GAGX3K,WAAY,aAGZrgK,OAAQ,SAAS2tE,EAAQ5xD,GACrB,IAAI+gH,EAAM1sI,KAAKqxO,UAAU9zJ,EAAQ5xD,GAEjC3rB,KAAK47H,KAAO8Q,EAAI9Q,OAChB57H,KAAKsxO,cAAgBtxO,KAAKstO,eAC1BttO,KAAKw4K,MAAQx4K,KAAKmtO,cAClBntO,KAAKy4D,OAASz4D,KAAK0tO,gBAGvBt9F,OAAQ,SAASxU,GACb,IAAIr+C,EAASq+C,EAAKr+C,SACd5xD,EAAStoB,KAAK8S,IAAIylH,EAAKjvH,SAAUivH,EAAK5uH,SAAW,EAErD,IAAIgoH,EAAQh1H,KAAK47H,MAMb,OAAO57H,KAAK4P,OAAO2tE,EAAQ5xD,GAL3B3rB,KAAK47H,KAAO57H,KAAK0sI,IAAI9Q,OACrB57H,KAAK2rB,OAAO3rB,KAAK0sI,IAAIskG,cACrBhxO,KAAKuxO,mBACLvxO,KAAKstO,gBAMb5lD,UAAW,SAASh/K,GAChB,IAAIumB,EAAMjvB,KAAKkH,QACXiP,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACV9C,EAAUmZ,EAAInZ,QACd0qH,EAAavxG,EAAIuxG,WACjBC,EAAWxxG,EAAIwxG,SACfnI,EAAQmI,EAAWD,EASvB,OANI1qH,EACS2qH,GAAY/3H,EAAQyN,IAAQyC,EAAMzC,GAAOmiH,GAEvC5vH,EAAQyN,IAAQyC,EAAMzC,GAAOmiH,EAASkI,GAGrCmwG,IAGpBa,UAAW,WACP,IAAI/4K,EAASz4D,KAAKkH,QAAQuxD,OAE1B,OAAOA,GAAUA,EAAOjxD,QAG5BiqO,UAAW,WACP,IAAIxiN,EAAMjvB,KAAKkH,QACX6oK,EAAa9gJ,EAAI8gJ,WACjBF,EAAa5gJ,EAAI4gJ,WACjBpgK,EAAO,EASX,OARIsgK,EAAWzjK,UACXmD,EAAOsgK,EAAWtgK,MAGlBogK,EAAWvjK,UACXmD,EAAOpM,KAAKuV,IAAIi3J,EAAWpgK,KAAMA,IAG9BA,GAGX8gK,YAAa,WACT,IAAIz1J,EAAQunK,EAAYt6K,GAAGwoK,YAAYhmK,KAAKvK,MACxCkH,EAAUlH,KAAKkH,QAOnB,OANYA,EAAQu5H,SAAWv5H,EAAQs5H,YAE1B,KAAQt5H,EAAQ0R,IAAM1R,EAAQ0qK,WAAc,IACrD92J,GAAS,GAGNA,GAGXwyN,aAAc,WACV,IAAIn8G,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfwlI,EAAM1sI,KAAK0sI,IAAIvlI,QACfwkB,EAAS+gH,EAAIskG,aACbD,EAAa/wO,KAAK+wO,WAAWrkG,EAAKxlI,EAAQ0qK,WAC1CwE,EAAYlvK,EAAQkvK,UAAYlvK,EAAQkvK,WAAsB,GAATzqJ,EACrD+lN,EAAc,IAAIb,GAElBc,EAAyB,IAAThmN,EAChBqpG,EAAQ9tH,EAAQyqO,eAChBA,EAAgBzqO,EAAQyqO,cAExBzqO,EAAQyqO,cAAgBA,EAG5B,IAAI7nB,EAAgB5iN,EAAQwoK,OACxBkiE,EAAW9nB,EAAch9M,WAAaixJ,EACtC8zE,EAAmB78G,EAAQh1H,KAAKsxO,eAEhCM,IACAjmN,GAAU3rB,KAAKyxO,YAEXzxO,KAAKwxO,cAAgBK,IACrBlmN,GAAUyqJ,EAAYu7D,GAE1BjlG,EAAIolG,WAAWnmN,GAAQomN,WAAWpmN,IAStC,IANA,IAAI+jJ,EAAS1vK,KAAK0vK,OACd50J,EAAQ40J,EAAOloK,OACfuuI,EAAUwpB,EAAWuqD,EAAc/zE,SACnCi8F,GAAgBj8F,EAAQlqH,KAAOkqH,EAAQjqH,OAAS,EAChDmmN,GAAiBl8F,EAAQ3xH,IAAM2xH,EAAQhqH,QAAU,EAE5CxkB,EAAI,EAAGA,EAAIuT,EAAOvT,IAAK,CAC5B,IAAIssB,EAAQ67I,EAAOnoK,GACfm5I,EAAY7sH,EAAMqlB,IAAIlsC,QAAU,EAChC2zI,EAAa9sH,EAAMqlB,IAAIvsC,SAAW,EAClC2rH,EAAQy4G,EAAWxpO,GACnB0tK,GAAc38C,EAAQq4G,IAAwBzF,EAE9ClhB,EAAKt9E,EAAIlO,QAAQlG,GACjB0L,EAAKgmF,EAAG5kN,EAAK/B,KAAKk1H,IAAI08C,IAAev0B,EAAYsxF,IAAiBJ,EAAW,GAAK,GAClF3tG,EAAK+lF,EAAG7lN,EAAKd,KAAKm1H,IAAIy8C,IAAet0B,EAAasxF,IAAkBL,EAAW,GAAK,GAExF/9M,EAAMu8G,OAAO,IAAIuxB,EAAI39B,EAAK0c,EAAWzc,EAAK0c,EAAY3c,EAAK0c,EAAWzc,EAAK0c,IAC3E,IAAIuxF,EAAW,IAAIjhD,EAAcp9J,EAAMqlB,IAAI+jC,GAAIppD,EAAMqlB,IAAIgkC,IAErDi1J,OAAe,EACnB,GAAKN,EAGE,CAEH,IAAIO,GADJD,EAAehhH,EAASmgH,cAAcn8L,SAAS5tC,IACfq0H,OAAOhjF,OAEnCy5L,EAAiBF,EAAa5+L,aAAeA,IACjD8+L,EAAeriM,UAAUkiM,EAAS9sO,EAAIgtO,EAAahtO,EAAG8sO,EAAS/tO,EAAIiuO,EAAajuO,GAChFguO,EAAa5+L,UAAU8+L,QARvBF,EAAe5G,EAAkB13M,EAAO3sB,EAAQwoK,QAChDgiE,EAAY33L,OAAOo4L,GAUvBhhH,EAASyK,KAAOV,EAAKsB,MAAMrL,EAASyK,KAAMu2G,EAAav2G,QAG3D,OAAO81G,GAGXH,iBAAkB,WACd,IAAI94K,EAASz4D,KAAKy4D,OAAOtjB,SAEzB,GAAIsjB,EAAOjxD,OAAS,EAAG,CACnB,IAAIynB,EAAMjvB,KAAKkH,QACXyqO,EAAgB1iN,EAAI0iN,cACpBv7D,EAAYnnJ,EAAImnJ,UAChBk8D,EAActyO,KAAKuyO,iBAEnBvyO,KAAKkH,QAAQwoK,OAAO5iK,WAAaixJ,IACjCu0E,GAAel8D,EAAYu7D,GAK/B,IAFA,IAAIxuE,EAAYmvE,EAAel8D,EAAY,EAElC7uK,EAAI,EAAGA,EAAIkxD,EAAOjxD,OAAQD,IAC/BkxD,EAAOlxD,GAAGu4H,UAAUgyG,WAAW3uE,GAAW4uE,WAAW5uE,GAGzDnjK,KAAK47H,KAAOV,EAAKsB,MAAMx8H,KAAK47H,KAAM57H,KAAKy4D,OAAOmjE,UAItD8xG,aAAc,WACV,IAAIv8G,EAAWnxH,KAEXkrI,EAAWlrI,KAAKwyO,gBAChBC,EAAgBvnG,EAAS1jI,OACzB+O,EAAS,IAAIs6N,GAEjB,GAAI4B,EAAe,CACf,IAAIxjN,EAAMjvB,KAAKkH,QACXkvK,EAAYnnJ,EAAImnJ,UAChBtgK,EAAUmZ,EAAInZ,QACd67N,EAAgB1iN,EAAI0iN,cACpBW,EAActyO,KAAKuyO,iBAGvBvyO,KAAK2rB,OAAO3rB,KAAK2rB,SAAWyqJ,EAAYu7D,GAExC,IAAK,IAAIpqO,EAAI,EAAGA,EAAIkrO,EAAelrO,IAAK,CACpC,IAAIihI,EAAU0C,EAAS3jI,GACnB42B,EAAOgzF,EAASu2D,UAAUl/C,EAAQ1yH,EAAU,KAAO,SACnDsoB,EAAK+yF,EAASu2D,UAAUl/C,EAAS1yH,EAAiB,OAAP,OAE3CsoB,EAAKD,GAAS,GACd5nB,EAAOwjC,OAAOo3E,EAAS3qF,YAAYrI,EAAMC,EAAIk0M,EAAa9pG,KAKtE,OAAOjyH,GAGXiwB,YAAa,SAASg6F,EAAYC,EAAU6xG,EAAaprO,GACrD,IAAIkvK,EAAYp2K,KAAKkH,QAAQkvK,UACzBs8D,EAAY,IAAI9yG,EAASS,IAAIrgI,KAAK0sI,IAAInvD,OAAQ,CAC9C+iD,QAASgyG,EAAel8D,EAAY,EACpC71C,QAAS+xG,EAAel8D,EAAY,EACpC51C,WAAYA,EACZC,SAAUA,IAGd,OAAO,IAAIJ,GAAIqyG,EAAW,CACtB70G,OAAQ,CACJ7wH,MAAOopK,EACPhnD,MAAOloH,EAAQkoH,MACfx4F,QAAS1vB,EAAQ0vB,QACjBwlH,QAASl1I,EAAQk1I,YAK7Bo2F,cAAe,WACX,IAAItrO,EAAUlH,KAAKkH,QACfuxD,EAASvxD,EAAQuxD,QAAU,GAC3B39C,EAAQ29C,EAAOjxD,OACf0jI,EAAW,GAEf,GAAIpwH,EAAO,CACP,IAAI3E,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACd4nL,EAAet5L,EAAQmpL,sBAC3BnlD,EAASvpI,KAAKwvO,GAAah7N,EAAKyC,EAAK4nL,IAErC,IAAK,IAAIj5L,EAAI,EAAGA,EAAIuT,EAAOvT,IAIvB,IAHA,IAAIqsD,EAAQ83K,EAASjzK,EAAOlxD,GAAI4O,EAAKyC,GACjC65N,EAAgBvnG,EAAS1jI,OAEpBmjC,EAAI,EAAGA,EAAI8nM,EAAe9nM,IAAK,CACpC,IAAI69F,EAAU0C,EAASvgG,GAEvB,GAAI69F,EAAQrqG,MAAQy1B,EAAMz1B,MAAQy1B,EAAMz1B,MAAQqqG,EAAQpqG,GAAI,CACxD8sG,EAASvpI,KAAKwvO,GAAav9K,EAAMz1B,KAAMy1B,EAAMx1B,GAAIw1B,EAAMw7D,MAAOx7D,EAAMh9B,UAEhE4xG,EAAQrqG,MAAQy1B,EAAMx1B,IAAMw1B,EAAMx1B,IAAMoqG,EAAQpqG,IAChD8sG,EAASvpI,KAAKwvO,GAAav9K,EAAMx1B,GAAIoqG,EAAQpqG,GAAIoiK,EAAc5sI,EAAMh9B,UAGzE4xG,EAAQpqG,GAAKw1B,EAAMz1B,KAEnB,QAMhB,OAAO+sG,GAGXqnG,eAAgB,WACZ,IACI7lG,EADM1sI,KACI0sI,IACVxlI,EAFMlH,KAEQkH,QACdkvK,EAAYlvK,EAAQkvK,UACpBu7D,EAAgBzqO,EAAQyqO,cACxBhiE,EAAgBzoK,EAAQ6oK,WAAWtgK,KASvC,OANIvI,EAAQwoK,OAAO5iK,WAAasxJ,EACnB1xB,EAAIskG,aAAerhE,EAAgBgiE,EAAgBv7D,EAEnD1pC,EAAIskG,aAAe56D,GAMpCi7D,UAAW,SAAS9zJ,EAAQ5xD,GACxB,IAAIzkB,EAAUlH,KAAKkH,QASnB,OAPUlH,KAAK0sI,IAAM,IAAI9M,EAASS,IAAI9iD,EAAQ,CAC1C+iD,QAAS30G,EACT40G,QAAS50G,EACT60G,WAAYt5H,EAAQs5H,WAAamwG,GACjClwG,SAAUv5H,EAAQu5H,SAAWkwG,MAMrCxD,YAAa,WACT,IACIzgG,EADM1sI,KACI0sI,IACVxlI,EAFMlH,KAEQkH,QACdyrO,EAAUjmG,EAAIvlI,QAElBnH,KAAK4yO,gBAAkB5yO,KAAK+wO,WAAWrkG,EAAKxlI,EAAQ0qK,WACpD5xK,KAAK+vK,WAAa+gE,GAAU6B,EAAS3yO,KAAK4yO,gBAAiB1rO,EAAQ0qK,UAAW1qK,EAAQ6oK,YAEtF,IAAI8iE,EAAW,IAAIhC,GACnBgC,EAAS94L,OAAO/5C,KAAK+vK,YAErB,IAAIJ,EAAgBzoK,EAAQ6oK,WAAWtgK,KACnCmgK,EAAgB1oK,EAAQ2oK,WAAWpgK,KAIvC,GAFAzP,KAAK8yO,gBAAkBnjE,EAAgBC,EAEnC1oK,EAAQwoK,OAAO5iK,WAAasxJ,EAAS,CACrC,IAAIzyI,EAASgnN,EAAQ3B,aACrB2B,EAAQb,WAAWnmN,EAASgkJ,EAAgBC,GACpCmiE,WAAWpmN,EAASgkJ,EAAgBC,GAOhD,OAJA5vK,KAAK+yO,gBAAkB/yO,KAAKgzO,oBAAoBhzO,KAAK+wO,WAAWrkG,EAAKxlI,EAAQgrK,YAC7ElyK,KAAK6vK,WAAaihE,GAAU6B,EAAS3yO,KAAK+yO,gBAAiB7rO,EAAQgrK,UAAWhrK,EAAQ2oK,YACtFgjE,EAAS94L,OAAO/5C,KAAK6vK,YAEdgjE,GAGXG,oBAAqB,SAAS7uE,GAI1B,IAHA,IAAIj9J,EAAUlH,KAAKkH,QACfu9C,EAAOv9C,EAAQ0qK,UAAY1qK,EAAQgrK,UAE9B3qK,EAAI48J,EAAO38J,OAAS,EAAGD,GAAK,EAAGA,IAChCA,EAAIk9C,GAAS,GACb0/G,EAAO35J,OAAOjD,EAAG,GAIzB,OAAO48J,GAGX4sE,WAAY,SAASvpD,EAAM5D,GACvB,IAAI18K,EAAUlH,KAAKkH,QACf4O,EAAU5O,EAAQ4O,QAClB89C,EAAQ1sD,EAAQ0R,IAAM1R,EAAQiP,IAC9BmiH,EAAQkvD,EAAK/mD,SAAW+mD,EAAKhnD,WAC7ByyG,EAAYr/K,EAAQgwH,EACpBvvF,EAAMmzF,EAAKhnD,WACX9tF,EAAO4lF,EAAQ26G,EAEfn9N,IACAu+E,GAAOikC,EACP5lF,GAAQA,GAGR4lF,GAAS,KAAQpxH,EAAQ0R,IAAMgrK,GAAc,IAC7CqvD,GAAa,GAIjB,IADA,IAAI/+I,EAAY,GACP3sF,EAAI,EAAGA,EAAI0rO,EAAW1rO,IAC3B2sF,EAAUvyF,KAAKoU,EAAMs+E,EAAKoqE,IAC1BpqE,GAAO3hD,EAOX,OAJI38B,EAAMs+E,IAAQmzF,EAAK/mD,UACnBvsC,EAAUvyF,KAAK0yF,GAGZH,GAGXvoE,OAAQ,SAASjjB,GACb,IAAIA,EAKA,OAAO1I,KAAK0sI,IAAIskG,aAJhBhxO,KAAK0sI,IAAIolG,WAAWppO,GAAOqpO,WAAWrpO,GACtC1I,KAAKkzO,gBAAgBlzO,KAAK+vK,WAAW56H,SAAUn1C,KAAK4yO,iBACpD5yO,KAAKkzO,gBAAgBlzO,KAAK6vK,WAAW16H,SAAUn1C,KAAK+yO,iBAAiB,IAM7EG,gBAAiB,SAAS16D,EAAOu4D,EAAYoC,GACzC,IAAIt0M,EAAOs0M,GAASnzO,KAAK8yO,iBAAwB,EAC7CH,EAAU3yO,KAAK0sI,IACf/gH,EAASgnN,EAAQ3B,aAEjBmC,GAASnzO,KAAKkH,QAAQwoK,OAAO5iK,WAAasxJ,GAAoB,IAATv/H,IACrD8zM,EAAU3yO,KAAK0sI,IAAIvlI,SACX2qO,WAAWnmN,EAASkT,GAAMkzM,WAAWpmN,EAASkT,GAG1D,IAAK,IAAIt3B,EAAI,EAAGA,EAAIixK,EAAMhxK,OAAQD,IAAK,CACnC,IAAI6rO,EAAWT,EAAQn0G,QAAQuyG,EAAWxpO,IACtC2jI,EAAWstC,EAAMjxK,GAAG2jI,SACpBmoG,EAAQD,EAAShuO,EAAI8lI,EAAS,GAAG/5C,SAAS/rF,EAC1CkuO,EAAQF,EAASjvO,EAAI+mI,EAAS,GAAG/5C,SAAShtF,EAE9Cq0K,EAAMjxK,GAAGgsC,WAAU,IAAIA,GAAYvD,UAAUqjM,EAAOC,QAKhEjzE,EAAkB+wE,GAAa,CAC3Bj7N,IAAK,EACLyC,IAAK,IAELm3J,WAAY,CACRtgK,KAAM,GACNw/H,MAAO8uB,EACP3uC,MAAOouC,EACPxwJ,MAAOi+N,EACP3+N,SAAS,GAGbujK,WAAY,CACRpgK,KAAM,GACNw/H,MAAO8uB,EACP3uC,MAAOouC,EACPxwJ,MAAOi+N,EACP3+N,SAAS,GAGbk0H,YAAa,GACbC,SAAU,IAEVivC,OAAQ,CACJ5iK,SAAUixJ,EACVhoB,QAAS,KAIjB,IAAIw9F,GAAyB73L,EAAU34C,OAAO,CAC1CoF,KAAM,SAAS0D,EAAS3E,GACpBw0C,EAAU3zC,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GAEtC,IAAI6kM,EAAmB/rM,KAAKkH,QAE5B6kM,EAAiBrlL,SAAWrjB,KAAKuV,IAAKvV,KAAK6T,IAAI60L,EAAiBynC,SAAWznC,EAAiB0nC,UAAY1nC,EAAiBrlL,SAAY,IAAM,IAG/IgsB,KAAM,SAAS2hD,GACX,IAAIntF,EAAUlH,KAAKkH,QACfoxH,EAAQoxD,EAAiBxiL,EAAQusO,SAAUvsO,EAAQssO,SAAUn/I,GAEjEr0F,KAAK6L,QAAQ0nC,UAAUA,IAAYxC,OAAOunF,EAAOpxH,EAAQq2E,YAIjE8iF,EAAkBkzE,GAAwB,CACtCr/F,OAAQi3F,EACRzkN,SAAUokN,IAGd/2F,EAAiBtgI,QAAQwjB,SAASm0M,EAAgBmI,IAElD,IACIn1G,GAASr0G,EAAQq0G,OACjBs1G,GAAU9I,EACV+I,GAAS9I,EAET+I,GAAgBhG,EAAQ7qO,OAAO,CAC/B8wO,SAAU,SAASv7G,GACft4H,KAAKm0B,SAASof,UAAUA,IAAYxC,OAAOunF,EAAOt4H,KAAKu9E,UAG3DuwJ,QAAS,WACL,IACIn+L,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACdusO,EAAW9jM,EAAM+3I,UAAUxgL,EAAQ2mO,WACnC2F,EAAW7jM,EAAM+3I,UAAUxgL,EAAQwB,QAED,IAAlCxB,EAAQoqF,UAAU3yE,YAClB3e,KAAK6zO,SAASL,GAEd,IAAID,GAAuBvzO,KAAKm0B,SAAU3rB,EAAWtB,EAAQoqF,UAAW,CACpEmiJ,SAAUA,EACVD,SAAUA,KACV18L,QAIZlnC,OAAQ,WACJ,IACI+/B,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACditB,EAAW,IAAIu/M,GAenB,OAb0B,IAAtBxsO,EAAQoqF,WACR9oF,EAAWtB,EAAQoqF,UAAW,CAC1BkvC,WAAY,EACZjjD,OAAQ5tC,EAAM+8F,IAAInvD,OAClBznE,QAAS65B,EAAMzoC,QAAQ4O,UAI/Bqe,EAAS4lB,OAAO/5C,KAAK8zO,gBAAiB9zO,KAAK+zO,cAE3C/zO,KAAKm0B,SAAWA,EAChBn0B,KAAK6zO,SAAS3I,GAEP/2M,GAGXi8G,OAAQ,SAAS1D,GACb,IAAInvD,EAASv9E,KAAKu9E,OAASmvD,EAAInvD,OAC3B/1E,EAASkvH,EAAW12H,KAAKkH,QAAQM,QAAU,EAAG,GAAK,KACnDmkB,EAAS3rB,KAAK2rB,OAAS+gH,EAAIskG,aAAexpO,EAC1CwsO,EAAUh0O,KAAKg0O,QAAU3wO,KAAK0S,MAAM4V,EAAS3rB,KAAKkH,QAAQ+sO,IAAIxkO,MAElEzP,KAAK47H,KAAOV,EAAKe,WAAW,IAAIg1D,EAAc1zG,EAAOn4E,EAAI4uO,EAASz2J,EAAOp5E,EAAI6vO,GACjD,IAAI/iD,EAAc1zG,EAAOn4E,EAAI4uO,EAASz2J,EAAOp5E,EAAI6vO,KAGjFF,cAAe,WACX,IAAIlkE,EAAgB5vK,KAAK2vC,MAAMzoC,QAAQ2oK,WAAWpgK,KAC9C8tE,EAASv9E,KAAKu9E,OACd22J,EAAcl0O,KAAKkH,QAAQkoH,MAE3B+kH,EAAa,IAAIR,GAAO,CACxB1gN,KAAM,CAAEm8F,MAAO8kH,GACfr2G,OAAQ,CAAEzO,MAAO8kH,EAAalnO,MAAOi+N,KAQzC,OALAkJ,EAAW/3L,OAAOmhC,EAAOn4E,EAAIpF,KAAK2rB,OAASikJ,EAAeryF,EAAOp5E,GACtDymI,OAAOrtD,EAAOn4E,EAAGm4E,EAAOp5E,EAAKnE,KAAKg0O,QAAU,GAC5CppG,OAAOrtD,EAAOn4E,EAAGm4E,EAAOp5E,EAAKnE,KAAKg0O,QAAU,GAC5C1uL,QAEJ6uL,GAGXJ,WAAY,WACR,IAAI7sO,EAAUlH,KAAKkH,QACfktO,EAAWltO,EAAQ+sO,IAAI7kH,OAASloH,EAAQkoH,MACxC0hC,EAAS,IAAIlxB,EAASxB,OAAOp+H,KAAKu9E,OAAQv9E,KAAKg0O,SAOnD,OALU,IAAI51G,GAAO0yB,EAAQ,CACzB79H,KAAM,CAAEm8F,MAAOglH,GACfv2G,OAAQ,CAAEzO,MAAOglH,QAO7B/zE,EAAkBuzE,GAAe,CAC7BK,IAAK,CACDxkO,KA7FO,KA+FXo0G,MAAO,CACH72G,MAAO,GACPL,OAAQ,IAEZ2kF,UAAW,CACP5rF,KAAM0lO,EACN1kN,SAAUokN,KAIlB,IAAIuJ,GAAUzJ,EAEV0J,GAAc3I,EAAM5oO,OAAO,CAC3BqtI,OAAQ,SAASxU,GACb,IAAIzK,EAAWnxH,KAEXqmB,EAAWrmB,KAAKqmB,SACpBrmB,KAAK2vC,MAAMygG,OAAOxU,GAClB57H,KAAKu0O,iBAAmBv0O,KAAK2vC,MAAMisF,KAEnC,IAAK,IAAIr0H,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjC8e,EAAS9e,GAAG6oI,OAAOjf,EAASxhF,MAAM+8F,KAClCvb,EAASojH,iBAAmBr5G,EAAKsB,MAAMrL,EAASojH,iBAAkBluN,EAAS9e,GAAGq0H,MAGlF57H,KAAK68C,SAAS++E,GACd57H,KAAKw0O,WAAW54G,GAChB57H,KAAKswO,aAAatwO,KAAKqsO,UAAWhmN,EAAUrmB,KAAK2vC,OACjD3vC,KAAK+rO,SAGTuE,aAAc,SAASjE,EAAWhmN,EAAUspB,GACxC,IAAIw2H,EAAUnmK,KAAKgsO,SAAW,IAAIqI,GAElCluE,EAAQpsH,OAAOsyL,GACflmE,EAAQpsH,OAAOpK,EAAM6oI,OACrBrS,EAAQpsH,OAAOpK,EAAM8oB,QACrBz4D,KAAKy0O,eAAepuN,GACpB8/I,EAAQpsH,OAAOpK,EAAM2hM,gBAGzBmD,eAAgB,SAASpuN,GAGrB,IAFA,IAES9e,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IAAK,CACtC,IAAIkM,EAAU4S,EAAS9e,GACvBkM,EAAQ7D,SAJG5P,KAKFgsO,SAASjyL,OAAOtmC,EAAQ0gB,UAEjC1gB,EAAQ/K,MAAM+K,EAAQvM,QAAQwB,SAItCm0C,SAAU,SAAS++E,GAYf,IAXA,IAOIikD,EAAS60D,EAASzzD,EAAS+mB,EAAK2sC,EAPhCxjH,EAAWnxH,KAEX0sI,EAAM1sI,KAAK2vC,MAAM+8F,IACjB+jG,EAAczwO,KAAKu0O,iBACnB7hM,EAAOrvC,KAAK6T,IAAIlX,KAAK40O,QAAQnE,EAAa70G,IAC1CzlH,EAAMJ,EAAM28B,EAAM+rH,GAClB7lJ,EAAM7C,GAAO28B,EAAM+rH,GAEnBo2E,EAAY,EACZttO,EAAI,MAEDA,IAAM,OACTstO,EAAaF,IAAY1zD,EAAY4zD,EAAY,EAAK,GAEtC,GAIZ1+N,IAAQ6xL,GAEJ,IADJnoB,EAAU1uD,EAAS2jH,WAAW3+N,EAAKylH,EAAM8Q,KACrBmzC,GAAW,GAK/BjnK,IAAQovL,GAEJ,IADJ/mB,EAAU9vD,EAAS2jH,WAAWl8N,EAAKgjH,EAAM8Q,KACrBu0C,GAAW,IAM/B+mB,EADAnoB,EAAU,GAAKoB,EAAU,EACb,EAAN9qK,EACC0pK,EAAU,GAAKoB,EAAU,EACpB,EAANroK,EAEA7C,GAAQI,EAAMyC,GAAO,GAAM,EAAG6lJ,GAIpC,IADJi2E,EAAUvjH,EAAS2jH,WAAW9sC,EAAKpsE,EAAM8Q,KACrBgoG,GAAW,KAI/BC,EAAU1zD,EAENyzD,EAAU,GACV97N,EAAMovL,EACN/mB,EAAUyzD,IAEVv+N,EAAM6xL,EACNnoB,EAAU60D,IAKtBI,WAAY,SAASpiM,EAAMkpF,EAAM8Q,GAC7B,IAEI/8F,EAAQ3vC,KAAK2vC,MACbtpB,EAAWrmB,KAAKqmB,SAChBsF,EAAS+gH,EAAIskG,aACb+D,EAAWroG,EAAIvlI,QAEnB4tO,EAASjD,WAAWnmN,EAAS+mB,GAAMq/L,WAAWpmN,EAAS+mB,GAEvD/C,EAAM+8F,IAAMqoG,EACZplM,EAAMygG,OAAOxU,GACb57H,KAAKg1O,SAAWrlM,EAAMisF,KAEtB,IAAK,IAAIr0H,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjC8e,EAAS9e,GAAG6oI,OAAO2kG,GAdR/0O,KAeFg1O,SAAW95G,EAAKsB,MAfdx8H,KAe6Bg1O,SAAU3uN,EAAS9e,GAAGq0H,MAGlE,OAAO57H,KAAK40O,QAAQ50O,KAAKg1O,SAAUp5G,IAGvCg5G,QAAS,SAASK,EAAS/7L,GACvB,OAAO71C,KAAK8S,IAAI+iC,EAAIlsC,QAAUioO,EAAQjoO,QAASksC,EAAIvsC,SAAWsoO,EAAQtoO,WAG1E6nO,WAAY,SAAS54G,GACjB,IAEIs5G,EAAgBl1O,KAAKg1O,SAASz3J,SAC9BuuF,EAAYlwC,EAAKr+C,SACjB43J,EAAWD,EAAc9vO,EAAI0mK,EAAU1mK,EACvCgwO,EAAWF,EAAc/wO,EAAI2nK,EAAU3nK,EAEvCwrC,EADM3vC,KACM2vC,MACZtpB,EAFMrmB,KAESqmB,SAEnBspB,EAAM+8F,IAAInvD,OAAOn4E,GAAK+vO,EACtBxlM,EAAM+8F,IAAInvD,OAAOp5E,GAAKixO,EAEtBzlM,EAAMygG,OAAOxU,GAEb,IAAK,IAAIr0H,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IACjC8e,EAAS9e,GAAG6oI,OAAOzgG,EAAM+8F,KAhBd1sI,KAiBFg1O,SAAW95G,EAAKsB,MAAM7sF,EAAMisF,KAAMv1G,EAAS9e,GAAGq0H,OAI/D2wG,aAAc,WACV,IAEIrlO,EAAUlH,KAAKkH,QACfmf,EAAWnf,EAAQ01E,QACnBjtC,EAAQ3vC,KAAK2vC,MAAQ,IAAIyhM,GAAYlqO,EAAQyoC,MAAO3vC,KAAK4rO,gBAE7D5rO,KAAKqmB,SAAW,GAGhB,IADA,IAAIgvN,EAAcpyO,EAAQojB,GAAYA,EAAW,CAAEA,GAC1C9e,EAAI,EAAGA,EAAI8tO,EAAY7tO,OAAQD,IAAK,CACzC,IAAIkM,EAAU,IAAImgO,GAAcjkM,EAAOnnC,EAAW,GAAI6sO,EAAY9tO,GAAI,CAClE+pF,UAAW,CACP3yE,YAAazX,EAAQyX,gBAZlB3e,KAgBFqmB,SAAS1kB,KAAK8R,OAKnC4sJ,EAAkBi0E,GAAa,CAC3B31N,aAAa,EACb0tN,UAAW,CACPp6E,WAAY,MAIpB,IAAIqjF,GAAWlE,GAAYruO,OAAO,CAC9ByvO,cAAe,WACX,IAAIvjN,EAAMjvB,KAAKkH,QAMf,MAAO,CAAE,CAAEi3B,KALDlP,EAAI9Y,IAKQioB,GAJZnP,EAAIrW,IAIiBw2G,MAHHngG,EAAIohK,sBAG6Bj0C,QAF1CntH,EAAIsmN,gBAK3B/D,UAAW,WACP,OAAO,GAGXgE,sBAAuB,SAASl9G,GAC5B,IAAIm9G,EAAcz1O,KAAKy4D,OAAOtjB,SAAS,GAAGyqF,WAEtC5/H,KAAKkH,QAAQ4O,QACb2/N,EAAYC,YAAYp9G,GAExBm9G,EAAYE,cAAcr9G,IAIlCs9G,SAAU,SAASz3M,EAAMC,EAAIl3B,GACzB,IAAI4O,EAAU9V,KAAKkH,QAAQ4O,QAEvB0qH,EAAaxgI,KAAK0nL,UAAU5xK,EAAUsoB,EAAKD,GAC3CsiG,EAAWzgI,KAAK0nL,UAAU5xK,EAAUqoB,EAAOC,GAE3Cw1B,EAAQ5zD,KAAKwmC,YAAYg6F,EAAYC,EAAUzgI,KAAKuyO,iBAAkBrrO,GAI1E,OAFAlH,KAAKy4D,OAAO1e,OAAO6Z,GAEZA,KAIfysG,EAAkBi1E,GAAU,CACxBn/N,IAAK,EACLyC,IAAK,IAELm3J,WAAY,CACRzjK,SAAS,GAGbujK,WAAY,CACRvjK,SAAS,GAGbojK,OAAQ,CACJpjK,SAAS,GAGbk0H,WAAY,EACZC,SAAU,IACV80G,aAAc,UAGlB,IAEIM,GAAwBn6L,EAAU34C,OAAO,CACzCoF,KAAM,SAAS0D,EAAS3E,GACpBw0C,EAAU3zC,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GAEtC,IAAI6kM,EAAmB/rM,KAAKkH,QACxBwf,EAAYrjB,KAAK6T,IAAI60L,EAAiBynC,SAAWznC,EAAiB0nC,UAAY1nC,EAAiBrlL,SAAY,IAC/GqlL,EAAiBrlL,SAAWgwG,EAAWhwG,EAAUokN,EARtC,KAUX,IAAIgL,EAAajqO,EAAQsoB,SAASjtB,QAAQqoB,IAAI,gBAC1C6/F,EAAQvjH,EAAQkqO,eAChBD,IAAe1mH,IACfpvH,KAAK81O,WAAa,IAAIn1O,MAAMuwH,MAAM4kH,GAClC91O,KAAKovH,MAAQ,IAAIzuH,MAAMuwH,MAAM9B,KAIrC18E,KAAM,SAAS2hD,GACX,IAAIplE,EAAMjvB,KACNkH,EAAU+nB,EAAI/nB,QACd4uO,EAAa7mN,EAAI6mN,WACjB1mH,EAAQngG,EAAImgG,MACZkJ,EAAQoxD,EAAiBxiL,EAAQusO,SAAUvsO,EAAQssO,SAAUn/I,GAGjE,GAFAr0F,KAAK6L,QAAQysH,MAAMA,GAEflJ,EAAO,CACP,IAAIiB,EAAIt6G,EAAM2zK,EAAiBosD,EAAWzlH,EAAGjB,EAAMiB,EAAGh8B,IAClDx/E,EAAIkB,EAAM2zK,EAAiBosD,EAAWjhO,EAAGu6G,EAAMv6G,EAAGw/E,IAClDlvE,EAAIpP,EAAM2zK,EAAiBosD,EAAW3wN,EAAGiqG,EAAMjqG,EAAGkvE,IAEtDr0F,KAAK6L,QAAQgyH,OAAO,IAAIl9H,MAAMuwH,MAAMb,EAAGx7G,EAAGsQ,GAAGuqG,aAKzD2wC,EAAkBw1E,GAAuB,CACrC3hG,OAAQi3F,EACRzkN,SAAUokN,IAGd/2F,EAAiBtgI,QAAQwjB,SAASo0M,EAAsBwK,IAExD,IAAIG,GAAepI,EAAQ7qO,OAAO,CAC9B+qO,QAAS,WACL,IACIn+L,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,QACdusO,EAAW9jM,EAAM+3I,UAAUxgL,EAAQ2mO,WACnC2F,EAAW7jM,EAAM+3I,UAAUxgL,EAAQwB,OAEnC1I,KAAKsxF,WACLtxF,KAAKsxF,UAAU8iD,SAGmB,IAAlCltI,EAAQoqF,UAAU3yE,aAClB3e,KAAKs4H,MAAMk7G,GACXxzO,KAAK69H,OAAO79H,KAAK+1O,kBAEjB/1O,KAAKsxF,UAAY,IAAIukJ,GAAsB71O,KAAMwI,EAAWtB,EAAQoqF,UAAW,CAC3EmiJ,SAAUA,EACVD,SAAUA,KAGdxzO,KAAKsxF,UAAUx6C,SAIvBwhF,MAAO,SAAS5vH,GACZ,IAAI+sO,EAAcz1O,KAAKm0B,SAASyrG,WAC5B5/H,KAAK2vC,MAAMzoC,QAAQ4O,QACnB2/N,EAAYE,cAAcjtO,GAE1B+sO,EAAYC,YAAYhtO,GAE5B1I,KAAK2vC,MAAM6lM,sBAAsB9sO,IAGrCm1H,OAAQ,SAASn1H,GACb1I,KAAKm0B,SAAS0pG,OAAOn1H,IAGzBkH,OAAQ,WACJ,IAAI5P,KAAKm0B,SAAT,CAIA,IACIwb,EADM3vC,KACM2vC,MACZzoC,EAFMlH,KAEQkH,SAEQ,IAAtBA,EAAQoqF,WACR9oF,EAAWtB,EAAQoqF,UAAW,CAC1BkvC,WAAY,EACZjjD,OAAQ5tC,EAAM+8F,IAAInvD,OAClBznE,QAAS65B,EAAMzoC,QAAQ4O,UAI/B9V,KAAKm0B,SAAWwb,EAAMimM,SAASjmM,EAAMzoC,QAAQiP,IAAKnW,KAAKkH,QAAQwB,MAAO,CAClE0mH,MAAOpvH,KAAK+1O,eACZn/M,QAAS1vB,EAAQ0vB,QACjBwlH,QAASzsG,EAAMzoC,QAAQquO,iBAI/BQ,aAAc,WACV,IAAI9mN,EAAMjvB,KAAK2vC,MAAMzoC,QACjBiP,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IACV63H,EAAQzwI,KAAKkH,QACb6nC,EAAS0hG,EAAM1hG,OACfqgF,EAAQqhB,EAAMrhB,MACd1mH,EAAQ+nI,EAAM/nI,MACdmiC,EAAe/gB,EAAQgrC,SAASpsD,GAASA,EAAQyN,EAErD,GAAI44B,EACA,IAAK,IAAInlC,EAAM,EAAGA,EAAMmlC,EAAOvnC,OAAQoC,IAAO,CAC1C,IAAIupN,EAAQpkL,EAAOnlC,GACfqsO,EAAa9iB,EAAM/jG,MACnBjxF,EAAOg1L,EAAMh1L,UAAmB,IAATA,IAAmBA,EAAOhoB,GACrD,IAAIioB,EAAK+0L,EAAM/0L,GAEf,QAF8B,IAAPA,IAAiBA,EAAKxlB,GAEzCulB,GAAQ0M,GAAgBA,GAAgBzM,EACxC,OAAO63M,EAKnB,OAAO7mH,GAGXghB,OAAQ,WACJpwI,KAAK4P,SAEL5P,KAAK47H,KAAO57H,KAAKm0B,SAASynG,UAIlCykC,EAAkB21E,GAAc,CAC5B1kJ,UAAW,CACP5rF,KAAM2lO,EACN3kN,SAAUokN,KAIlB,IAAIoL,GAAW5B,GAAYvxO,OAAO,CAC9B8xN,WAAY,SAAS9mC,GACjBumD,GAAYvsO,GAAG8sN,WAAWtqN,KAAKvK,KAAM+tL,GAErC/tL,KAAKkH,QAAQkoH,MAAQpvH,KAAKkH,QAAQkoH,QAAUpvH,KAAK+tL,MAAMnxG,SAAW,IAAIwyC,OAG1Em9G,aAAc,WACV,IAAIrlO,EAAUlH,KAAKkH,QACfyoC,EAAQ3vC,KAAK2vC,MAAQ,IAAI2lM,GAASpuO,EAAQyoC,MAAO3vC,KAAK4rO,gBAEtDhvJ,EAAU,IAAIo5J,GAAarmM,EAAOnnC,EAAW,GAAI,CACjDumC,OAAQ7nC,EAAQ6nC,OAChBqgF,MAAOloH,EAAQkoH,MACf1mH,MAAOxB,EAAQwB,MACfkuB,QAAS1vB,EAAQ0vB,QACjB06D,UAAW,CACP3yE,YAAazX,EAAQyX,gBAI7B3e,KAAKqmB,SAAW,CAAEu2D,IAGtB63J,eAAgB,SAASpuN,GACrB,IAAK,IAAI9e,EAAI,EAAGA,EAAI8e,EAAS7e,OAAQD,IAAK,CACtC,IAAIkM,EAAU4S,EAAS9e,GACvBkM,EAAQ7D,SAER6D,EAAQ/K,MAAM+K,EAAQvM,QAAQwB,SAItCojO,iBAAkB,SAASpjO,GACvB1I,KAAKkH,QAAQwB,MAAQA,GAGzBqtO,aAAc,WACV,IAAIn5J,EAAU58E,KAAKqmB,SAAS,GAC5B,GAAIu2D,EACA,OAAOA,EAAQm5J,gBAIvBI,oBAAqB,SAASnpO,EAAOL,GACjC,IAAI8C,EAAOzP,KAAK4xB,UACZ2rD,EAASv9E,KAAK2vC,MAAM+8F,IAAInvD,OAExB1xD,EAAO0xD,EAAOn4E,EAAI4H,EAAQ,EAC1BoX,EAAMm5D,EAAOp5E,EAAIwI,EAAS,EAE9B,GAAIK,EAAQyC,EAAKzC,MAAO,CACpB,IAAI8e,EAAQD,EAAO7e,EAEnB6e,EAAOxoB,KAAKuV,IAAIiT,EAAM,GAElBC,EAAQrc,EAAKzC,QACb6e,GAAQC,EAAQrc,EAAKzC,OAI7B,GAAIL,EAAS8C,EAAK9C,OAAQ,CACtB,IAAIivH,EAAO57H,KAAK2vC,MAAMisF,KAClBw6G,EAASx6G,EAAKH,cAAct3H,EAC5B4nB,EAAS3H,EAAMzX,EAEnByX,EAAM/gB,KAAKuV,IAAIwL,EAAKw3G,EAAKhjF,OAAOz0C,GAE5B4nB,EAASqqN,IACThyN,GAAO2H,EAASqqN,GAIxB,MAAO,CACHvqN,KAAMA,EACNzH,IAAKA,MAObiyN,GAAgBH,GAASnzO,OAAO,CAChCwpO,aAAc,WACV,IAAI3xD,EAAe56K,KAAKkH,QAAQyoC,MACO,iBAA5BirI,EAAap6C,aACpBo6C,EAAap6C,WAND,IAShBo6C,EAAan6C,SAAWm6C,EAAap6C,WAAa,IAElD01G,GAASnuO,GAAGwkO,aAAahiO,KAAKvK,SAItCW,MAAM6H,WAAW7H,MAAMmpB,QAAS,CAC5B6hN,MAAOA,EACPoE,YAAaA,GACbhC,cAAeA,EACfe,mBAAoBA,GACpBS,iBAAkBA,GAClBlC,YAAaA,EACbiH,YAAaA,GACbV,cAAeA,GACfxC,YAAaA,GACb8E,SAAUA,GACVF,aAAcA,GACdV,SAAUA,GACVe,cAAeA,KAhwEnB,CAmwEGv1O,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClB5G,EAAUnpB,EAAMmpB,QAChBimN,EAAcjmN,EAAQimN,YACtBuE,EAAcxqN,EAAQwqN,YACtB4B,EAAWpsN,EAAQosN,SACnBG,EAAgBvsN,EAAQusN,cACxB7gG,EAAO70I,EAAMopB,QAEjB,SAAS0qM,EAAavtN,GAClB,IAAIoxB,EAASxO,EAAQH,GAAG2O,QAAU,GAC9Bk3J,EAAYtoL,EAAQ6mL,OAAS,GAC7BuoD,EAAY9mD,EAAUl3K,cAE1B,OAA+C,GAA3CwR,EAAQsgK,YAAYz0K,QAAQ2gO,GACrBxsN,EAAQ+jK,YAAY4B,OAGvBn3J,EAAOk3J,IAAcl3J,EAAOg+M,IAAc,IAAI7mD,MAG1D,IAAIk8C,EAAQj7M,EAAO3tB,OAAO,CACtBoF,KAAM,SAAS0D,EAASu3K,GACpBziL,EAAMqB,QAAQ6J,GACdlJ,EAAEkJ,GAAS0gD,QAEX77B,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAE1B7L,KAAKkH,QAAUvG,EAAM6H,WAAWxI,KAAKkH,QAASk8K,GAE9CpjL,KAAKoM,QAAUpM,KAAK6L,QACpB7L,KAAKu2O,kBAELv2O,KAAK6L,QAAQ0Y,SAAS,WAEtB5jB,EAAM6zB,OAAOx0B,KAAM8pB,EAAQH,KAG/BziB,QAAS,CACL6mL,MAAO,UACPwoC,SAAU,GACV35I,QAAS,GACTjtC,MAAO,GACP08L,UAAW,CACPp6E,WAAY,IAEhBtzI,aAAa,GAGjB4S,WAAY,SAASrqB,GACjBlH,KAAKs8J,UAAU/qI,WAAWrqB,EAASutN,EAAavtN,IAEhDlH,KAAKw2O,eAGT7iC,OAAQ,WACJ3zM,KAAKs8J,UAAUq3C,SACf3zM,KAAKw2O,eAGTx0O,QAAS,WACL0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAKs8J,UAAUt6J,WAGnBu0O,gBAAiB,WACb,IAAIE,EAAYz2O,KAAK02O,aACrB12O,KAAKs8J,UAAY,IAAIm6E,EAAUz2O,KAAK6L,QAAQ,GAAI7L,KAAKkH,QAASutN,EAAaz0N,KAAKkH,UAChFlH,KAAKw2O,eAGTA,YAAa,WACTx2O,KAAK20N,iBAAmB30N,KAAKs8J,UAAUq4D,iBACvC30N,KAAKkH,QAAUlH,KAAKs8J,UAAUp1J,QAC9BlH,KAAK2gF,QAAU3gF,KAAKs8J,UAAU37E,QAC9B3gF,KAAK47H,KAAO57H,KAAKs8J,UAAU1gC,KAC3B57H,KAAKqsO,UAAYrsO,KAAKs8J,UAAU+vE,UAChCrsO,KAAKqmB,SAAWrmB,KAAKs8J,UAAUj2I,SAC/BrmB,KAAK2vC,MAAQ3vC,KAAKs8J,UAAU3sH,OAGhC5d,QAAS,WACL/xB,KAAKs8J,UAAU/yI,YAInB4+M,EAAe,CAAC,UAAW,QAAS,YAAa,gBAErD,SAASC,EAAkBhmO,GACvBupO,EAAM5jO,GAAG3F,GAAQ,WACb,OAAOpC,KAAKs8J,UAAUl6J,GAAMgG,MAAMpI,KAAKs8J,UAAWj1J,YAI1D,IAAK,IAAIuC,EAAM,EAAGA,EAAMu+N,EAAa3gO,OAAQoC,IACzCw+N,EAAkBD,EAAav+N,IAGnCkgB,EAAQugK,YAAYtnL,OAAO4oO,EAAM5jO,IAEjC,IAAI4uO,EAAoBhL,EAAM5oO,OAAO,CAEjCmE,QAAS,CACL9E,KAAM,eAGVs0O,WAAY,WACR,OAAOpC,KAIXsC,EAAoBjL,EAAM5oO,OAAO,CAEjCmE,QAAS,CACL9E,KAAM,cACNutC,MAAO,CACHyC,UAAU,IAIlBskM,WAAY,WACR,OAAO3G,KAIX8G,EAAiBlL,EAAM5oO,OAAO,CAC9BoF,KAAM,SAAS0D,EAASu3K,GACpBuoD,EAAM5jO,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASu3K,GAElCpjL,KAAK6L,QAAQe,IAAI,WAAY,YAC7B5M,KAAK6L,QAAQ0Y,SAAS,cAEtBvkB,KAAK82O,mBAGT5vO,QAAS,CACL9E,KAAM,YAGVmvB,WAAY,SAASrqB,GACjBykO,EAAM5jO,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,GAC/BlH,KAAK82O,mBAGTnjC,OAAQ,WACJg4B,EAAM5jO,GAAG4rM,OAAOppM,KAAKvK,MACrBA,KAAK82O,mBAGTpuO,MAAO,SAASA,GACZ,IAAIqe,EAAW/mB,KAAKs8J,UACpB,GAAyB,IAArBj1J,UAAUG,OACV,OAAOuf,EAASre,QAGpBqe,EAASre,MAAMA,GAEf1I,KAAK82O,mBAGT90O,QAAS,WACL2pO,EAAM5jO,GAAG/F,QAAQuI,KAAKvK,aACfA,KAAK+2O,gBAGhB5hG,aAAc,WACV,OAAIn1I,KAAK+2O,gBAIFpL,EAAM5jO,GAAGotI,aAAa5qI,KAAKvK,OAGtC+xB,QAAS,WACL/xB,KAAKs8J,UAAU/yI,SAEfvpB,KAAK82O,mBAGTA,gBAAiB,WACb,GAAI92O,KAAKkH,QAAQ8vO,eAAgB,CAC7B,IAAInnO,EAAWlP,EAAMkP,SAAS7P,KAAKkH,QAAQ8vO,gBAEvCjwN,EAAW/mB,KAAKs8J,UAChB26E,EAAgBj3O,KAAKk3O,oBAEzBD,EAAcnnO,KAAKD,EAAS,CAAEu/G,MAAOroG,EAASgvN,eAAgBrtO,MAAOqe,EAASre,WAE9E,IAAIoE,EAAWia,EAASovN,oBAAoBc,EAAcjqO,QAASiqO,EAActqO,UAEjFsqO,EAAcrqO,IAAIE,QACX9M,KAAK+2O,iBACZ/2O,KAAK+2O,eAAehgN,SACpB/2B,KAAK+2O,eAAiB,OAI9BG,kBAAmB,WACf,IAAID,EAAgBj3O,KAAK+2O,eAMzB,OALKE,IACDA,EAAgBj3O,KAAK+2O,eAAiBp0O,EAAE,eAAe4hB,SAAS,oBAChEvkB,KAAK6L,QAAQkuC,OAAOk9L,IAGjBA,GAGXP,WAAY,WACR,OAAOR,KAIXiB,EAAsBN,EAAe9zO,OAAO,CAC5CmE,QAAS,CACL9E,KAAM,iBAGVs0O,WAAY,WACR,OAAOL,KAIf,SAASe,EAAmBh1O,GACxBy0O,EAAe9uO,GAAG3F,GAAQ,SAAS8E,GAC/B,IAAIuoL,EAAQzvL,KACRo3B,EAASo+G,EAAKpzI,GAElB,OAAKqtL,EAAMsnD,eAIJvhG,EAAKkiB,QAAQ+3B,EAAM5jL,SAAS8yD,MAAK,SAASu/E,GAC7C,OAAO9mH,EAAO8mH,EAAQh3I,MAJfkwB,EAAOq4J,EAAMt6C,eAAgBjuI,IAShD,IAAImwO,EAAgB,CAAC,YAAa,cAAe,aAEjD,IAAKztO,EAAM,EAAGA,EAAMytO,EAAc7vO,OAAQoC,IACtCwtO,EAAmBC,EAAcztO,IAGrCkgB,EAAQH,GAAGqN,OAAO4/M,GAClB9sN,EAAQH,GAAGqN,OAAO2/M,GAClB7sN,EAAQH,GAAGqN,OAAO6/M,GAClB/sN,EAAQH,GAAGqN,OAAOmgN,GAElBx2O,EAAM6H,WAAWshB,EAAS,CACtB6hN,MAAOA,EACPoE,YAAa6G,EACbtC,YAAaqC,EACbT,SAAUW,EACVR,cAAec,IA9PvB,CAiQGr2O,OAAOH,MAAM+G,QAUF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAElB3tB,EAASJ,EAAEI,OACXyF,EAAa7H,EAAM6H,WACnB6sB,EAAU1yB,EAAE0yB,QACZ1tB,EAAgBhF,EAAEgF,cAElB6tI,EAAO70I,EAAMopB,QACb8+M,EAAOloO,EAAMi/H,SAEb5K,EADOr0H,EAAMopB,QAAQ47F,KACNqP,QACflrG,EAAUnpB,EAAMmpB,QAChB4gK,EAAQ5gK,EAAQ4gK,MAChB1f,EAAUlhJ,EAAQkhJ,QAIlBssE,EAAc,QACdC,EAAoB,eAGxB,SAASC,EAAQ9uO,EAAOqQ,EAAO+B,GAC3B,OAAOpS,EAAMsC,UAAU+N,EAAOA,EAAQ+B,GAG1C,IAAI28N,EAAW92O,EAAMiH,MAAM7E,OAAO,CAC9BoF,KAAM,SAASjB,GACXlH,KAAKuxB,WAAWrqB,IAEpBqqB,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACXiI,EAAKf,QAAUnE,EAAO,GAAIkF,EAAKf,QAASA,GACxCe,EAAKyvO,gBAAkBzvO,EAAKf,QAAQywO,aAAe,EAAI1vO,EAAKf,QAAQwwO,gBAAkB,GAE1F5pK,OAAQ,SAASplE,EAAOsE,EAAOL,GAC3B,IAAI1E,EAAOjI,KAiBX,OAhBIg1H,EAAQtsH,KACRA,GAAS,IAGbT,EAAK2vO,UAAUlvO,EAAOsE,EAAOL,GAEzB1E,EAAKf,QAAQywO,cACb1vO,EAAK0vO,eAGT1vO,EAAK4vO,UAED5vO,EAAKf,QAAQywO,cACb1vO,EAAK0vO,eAGF,CACHh+D,SAAU1xK,EAAK0xK,SACfjmK,QAASzL,EAAKyL,UAGtBxM,QAAS,CACLwwO,gBA1CuB,GA2CvBC,cAAc,EACdG,aAAa,GAEjBF,UAAW,aACXD,aAAc,WACV33O,KAAK0T,QAAQ/R,KAAK3B,KAAKkH,QAAQwwO,iBAhDR,KAkD3BG,QAAS,aAETE,sBAAuB,SAASC,GAC5B,MAAM,IAAIvnO,MAAM9P,EAAM+P,OAlDM,iDAkDgCsnO,EAAWh4O,KAAKoC,UAIhF61O,EAAY,GAEZC,EAAaT,EAAS10O,OAAO,CAC7Bo1O,kBAAmB,GACnBN,QAAS,WACL,IAAI5vO,EAAOjI,KACP0I,EAAQT,EAAKS,MAEjBT,EAAKmwO,WAEL,IAAK,IAAIxuO,EAAM,EAAGA,EAAMlB,EAAMlB,OAAQoC,IAClC3B,EAAKowO,aAAa3vO,EAAMoC,OAAOlB,IAG/B3B,EAAKf,QAAQ4wO,aACb7vO,EAAKqwO,eAGTrwO,EAAKirI,UACLjrI,EAAKswO,iBAETF,aAAc,SAASL,GACnB,IAAI/vO,EAAOjI,KACPw4O,EAAWvwO,EAAKwwO,aAAaT,GAC5BQ,GACDvwO,EAAK8vO,sBAAsBC,GAE/B/vO,EAAKywO,QAAQF,IAEjBE,QAAS,eAGTC,EAAqB,CACrBN,aAAc,SAASL,GACnB,IAAI/vO,EAAOjI,KACPiI,EAAKwwO,aAAaT,GAClB/vO,EAAKywO,QAAQzwO,EAAKwwO,aAAaT,IAE1BA,EAAU1mO,WAAW,GAAK,IAC/BrJ,EAAK8vO,sBAAsBC,GAG3B/vO,EAAK2wO,YAAYZ,EAAU1mO,WAAW,KAG9CsnO,YAAa,SAASvwL,GAGlB,IAFA,IACI3zC,EADAzM,EAAOjI,KAEFuH,EAAI,EAAGA,EAAIU,EAAK4wO,iBAAiBrxO,OAAQD,IAC9C,GAAKmN,EAAWzM,EAAK4wO,iBAAiBtxO,GAAGgD,KAAKtC,EAAMogD,GAAQ,CACxD,IAAK,IAAI1d,EAAI,EAAGA,EAAIj2B,EAASlN,OAAQmjC,IACjC1iC,EAAKywO,QAAQhkO,EAASi2B,IAG1B,YADA1iC,EAAKy8D,YAAchwD,EAASlN,OAAS,KAKjDqxO,iBAAkB,CACd,SAASxwL,GACL,GAAI,IAAMA,GAAQA,GAAQ,IAAK,CAC3B,IAAIpgD,EAAOjI,KACX,MAAO,CAACiI,EAAKwwO,aAAaxwO,EAAK6wO,gBAAgB,IAAK7wO,EAAKwwO,aAAa3mO,OAAOqc,aAAak6B,EAAO,QAGzG,SAASA,GACL,GAAI,IAAMA,GAAQA,GAAQ,GAAI,CAC1B,IAAIpgD,EAAOjI,KACX,MAAO,CAACiI,EAAKwwO,aAAaxwO,EAAK6wO,gBAAgB,IAAK7wO,EAAKwwO,aAAa3mO,OAAOqc,aAAak6B,EAAO,QAGzG,SAASA,GACL,GAAI,GAAKA,GAAQA,GAAQ,GAAI,CACzB,IAAIpgD,EAAOjI,KACX,MAAO,CAACiI,EAAKwwO,aAAaxwO,EAAK6wO,gBAAgB,IAAK7wO,EAAKwwO,aAAa3mO,OAAOqc,aAAak6B,EAAO,QAGzG,SAASA,GACL,IACI9xC,EACAwiO,EAFA9wO,EAAOjI,KAGX,GAAKiI,EAAK+wO,kBAAkB3wL,GAIvB,CACD9xC,EAAS,GACT,IAAK,IAAIhP,EAAI,EAAGA,EAAIU,EAAK+wO,kBAAkB3wL,GAAM7gD,OAAQD,IACrDgP,EAAO5U,KAAKsG,EAAKwwO,aAAaxwO,EAAK6wO,gBAAgB,KACnDviO,EAAO5U,KAAKsG,EAAKwwO,aAAaxwO,EAAK+wO,kBAAkB3wL,GAAM9gD,UAP/DwxO,EAAwC,EAAxB11O,KAAKkN,MAAM83C,EAAO,KAAWA,EAAO,IAAM,GAAK,GAC/D9xC,EAAS,CAACtO,EAAKwwO,aAAaxwO,EAAK6wO,gBAAgB,IAAK7wO,EAAKwwO,aAAa3mO,OAAOqc,aAAa4qN,KAUhG,OAAOxiO,IAGfyiO,kBAAmB,CACf,EAAK,CAAC,KACN,GAAM,CAAC,KACP,GAAM,CAAC,KACP,IAAO,CAAC,IAAI,IAAI,IAAI,MAExBC,sBAAuB,CACnB,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IAEVR,aAAc,CACV,KAAK,EACL,KAAK,EACL91O,GAAK,EACL,KAAK,GAETm2O,gBAAiB,CAAC,SAAU,SAAU,SAAU,WAGpDb,EAAUiB,OAAShB,EAAWn1O,OAAO,CACjCX,KAAM,UACN+2O,YAAa,GACbC,SAAU,IACVC,SAAU,EACVC,SAAU,EACVC,eAAgB,IAChB3B,UAAW,SAASlvO,EAAOsE,EAAOL,GAC9B,IAAI1E,EAAOjI,KACXiI,EAAK+E,MAAQA,EACb/E,EAAK0E,OAASA,EACd1E,EAAKS,MAAQA,EACbT,EAAKy8D,WAAah8D,EAAMlB,OACxBS,EAAKyL,QAAU,GACfzL,EAAKuxO,cAAgB,IAEzBjB,cAAe,WACX,IACI5+D,EADA1xK,EAAOjI,KAEPy5O,EAAcxxO,EAAKkwO,kBACnBl0D,EAAQh8K,EAAKoxO,SACbD,EAAWnxO,EAAKmxO,SAChBM,EAAYr2O,KAAKuV,IAAI,IAAO3Q,EAAK+E,MAAO,IAC5C,GAAI/E,EAAK0E,OAAS+sO,EACd,MAAM,IAAIjpO,MAAM,sDAAwDxI,EAAKS,MAAQ,QAAUgxO,GAGnG,MAAQ//D,EAAW1xK,EAAK0xO,YAAY11D,IAAUw1D,GAAex1D,EAAQm1D,GACjEn1D,EAAQl7K,YAAYk7K,EAAQ,IAAK/tK,QAAQ,IAG7C,GAAIyjK,EAAW8/D,EAAa,CACxB,IAAInuB,EAAWjoN,KAAK4iE,KAAKh+D,EAAK2xO,aAAaR,GAAYK,GACvD,MAAM,IAAIhpO,MAAM,oDAAsDxI,EAAKS,MAAQ,QAAU4iN,GAGjGrjN,EAAKg8K,MAAQA,EACbh8K,EAAK0xK,SAAWA,EAChB1xK,EAAKuxO,cAAgBvxO,EAAKuxO,cAAcxuO,UAAU,EAAG/C,EAAKuxO,cAAchyO,OAAS,GACjFS,EAAKyL,QAAUzL,EAAKyL,QAAQ2J,OAAOpV,EAAKuxO,cAAc/2O,QAAQ,SAAUwhL,GAAOr5K,MAAM3C,EAAKsxO,kBAE9FI,YAAa,SAAS11D,GAClB,OAAOjkL,KAAKgN,MAAQhN,KAAK45O,aAAa31D,IAE1C21D,aAAc,SAAS31D,GACnB,IAAIh8K,EAAOjI,KACP65O,EAAkB,GAAK51D,EAAQ,GACnC,OAAOh8K,EAAKyvO,gBAAkBmC,GAAmB5xO,EAAKy8D,WAAa,GAAKz8D,EAAKqxO,UAAYrxO,EAAKy8D,WAAa,IAE/G0zK,SAAU,WACN,IAAInwO,EAAOjI,KACXiI,EAAK6xO,WAAW7xO,EAAKwwO,aAAaz8J,MAAMtoE,SACxCzL,EAAK8xO,mBAETrB,QAAS,SAASV,GACdh4O,KAAK85O,WAAW9B,EAAUtkO,SAC1B1T,KAAK+5O,mBAET7mG,QAAS,WACLlzI,KAAK85O,WAAW95O,KAAKy4O,aAAaz8J,MAAMtoE,UAE5ComO,WAAY,SAASpmO,GACjB,IAAK,IAAInM,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAC/BvH,KAAKw5O,eAAiBx5O,KAAKg6O,gBAAgBtmO,EAAQ5I,OAAOvD,KAGnEwyO,gBAAiB,WACb,IAAI9xO,EAAOjI,KACXiI,EAAKuxO,eAAiBvxO,EAAKqxO,SAAWrxO,EAAKsxO,gBAE/CS,gBAAiB,CACb70N,EAAK,KACL80N,EAAK,KACLC,EAAK,SACLC,EAAK,UAET1B,aAAc,CACV,EAAK,CAAE/kO,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC,EAAK,CAAEgL,QAAW,YAAYhL,MAAS,GACvC0xO,EAAK,CAAE1mO,QAAW,YAAYhL,MAAS,IACvCwxO,EAAK,CAAExmO,QAAW,YAAYhL,MAAS,IACvC2xO,EAAK,CAAE3mO,QAAW,YAAYhL,MAAS,IACvCiM,EAAK,CAAEjB,QAAW,YAAYhL,MAAS,IACvCjE,EAAK,CAAEiP,QAAW,YAAYhL,MAAS,IACvCkM,EAAK,CAAElB,QAAW,YAAYhL,MAAS,IACvCxE,EAAK,CAAEwP,QAAW,YAAYhL,MAAS,IACvC7D,EAAK,CAAE6O,QAAW,YAAYhL,MAAS,IACvC4xO,EAAK,CAAE5mO,QAAW,YAAYhL,MAAS,IACvC6xO,EAAK,CAAE7mO,QAAW,YAAYhL,MAAS,IACvC3D,EAAK,CAAE2O,QAAW,YAAYhL,MAAS,IACvCnE,EAAK,CAAEmP,QAAW,YAAYhL,MAAS,IACvCpE,EAAK,CAAEoP,QAAW,YAAYhL,MAAS,IACvC8xO,EAAK,CAAE9mO,QAAW,YAAYhL,MAAS,IACvC+xO,EAAK,CAAE/mO,QAAW,YAAYhL,MAAS,IACvCgyO,EAAK,CAAEhnO,QAAW,YAAYhL,MAAS,IACvCrE,EAAK,CAAEqP,QAAW,YAAYhL,MAAS,IACvCiyO,EAAK,CAAEjnO,QAAW,YAAYhL,MAAS,IACvCkyO,EAAK,CAAElnO,QAAW,YAAYhL,MAAS,IACvCoM,EAAK,CAAEpB,QAAW,YAAYhL,MAAS,IACvCmyO,EAAK,CAAEnnO,QAAW,YAAYhL,MAAS,IACvCoyO,EAAK,CAAEpnO,QAAW,YAAYhL,MAAS,IACvCyxO,EAAK,CAAEzmO,QAAW,YAAYhL,MAAS,IACvCrD,EAAK,CAAEqO,QAAW,YAAYhL,MAAS,IACvCsM,EAAK,CAAEtB,QAAW,YAAYhL,MAAS,IACvCnD,EAAK,CAAEmO,QAAW,YAAYhL,MAAS,IACvC,IAAK,CAAEgL,QAAW,YAAYhL,MAAS,IACvC,IAAK,CAAEgL,QAAW,YAAYhL,MAAS,IACvC,IAAK,CAAEgL,QAAW,YAAYhL,MAAS,IACvC/F,EAAK,CAAE+Q,QAAW,YAAYhL,MAAS,IACvC,IAAK,CAAEgL,QAAW,YAAYhL,MAAS,IACvC,IAAK,CAAEgL,QAAW,YAAYhL,MAAS,IACvC,IAAK,CAAEgL,QAAW,YAAYhL,MAAS,IACvCszE,MAAO,CAAEtoE,QAAS,cAEtBxM,QAAS,CACL4wO,aAAa,KAIrBG,EAAU8C,eAAiB9C,EAAUiB,OAAOn2O,OAAOyF,EAAW,GAAImwO,EAAoB,CAClFv2O,KAAM,mBACNq2O,aAAc,CACVuC,OAAQ,CAAEtnO,QAAW,YAAYhL,MAAS,IAC1CuyO,OAAQ,CAAEvnO,QAAW,YAAYhL,MAAS,IAC1CwyO,OAAQ,CAAExnO,QAAW,YAAYhL,MAAS,IAC1CyyO,OAAQ,CAAEznO,QAAW,YAAYhL,MAAS,QAIlDuvO,EAAUmD,OAASlD,EAAWn1O,OAAO,CACjCX,KAAM,UACNi5O,eAAgB,GAChBC,eAAgB,GAChBnC,YAAa,GACbvB,UAAW,SAASlvO,EAAOsE,EAAOL,GAC9B,IAAI1E,EAAOjI,KACXiI,EAAKS,MAAQA,EACbT,EAAK+E,MAAQA,EACb/E,EAAK0E,OAASA,EACd1E,EAAKyL,QAAU,GACfzL,EAAK6Q,OAAS,GACd7Q,EAAKy8D,WAAah8D,EAAMlB,QAE5B+wO,cAAe,WACX,IAAItwO,EAAOjI,KACP05O,EAAYr2O,KAAKuV,IAAI,IAAO3Q,EAAK+E,MAAO,IAC5C,GAAI/E,EAAK0E,OAAS+sO,EACd,MAAM,IAAIjpO,MAAM,uBAKpB,GAFAxI,EAAKszO,cAEDtzO,EAAK0xK,SAAW1xK,EAAKkwO,kBACrB,MAAM,IAAI1nO,MAAM,uBAGxB8qO,YAAa,WACT,IAAItzO,EAAOjI,KAEXiI,EAAK0xK,SAAW1xK,EAAK+E,OAAS,GAAK/E,EAAKy8D,WAAa,EADhC,GACsDz8D,EAAKyvO,gBAAkB,IAEtGU,SAAU,WACN,IAAI1kO,EAAU1T,KAAKy4O,aAAaz8J,MAAMtoE,QACtC1T,KAAK85O,WAAWpmO,IAEpBw/H,QAAS,WACL,IAAIjrI,EAAOjI,KACXiI,EAAKmwO,WACLnwO,EAAKyL,QAAQ/R,KAAKsG,EAAKwwO,aAAa+C,kBAExC9C,QAAS,SAASF,GACdx4O,KAAK85O,WAAWtB,EAAS9kO,SACzB1T,KAAK8Y,OAAOnX,KAAK62O,EAAS9vO,QAE9B4vO,aAAc,WACV,IAEIE,EAFAvwO,EAAOjI,KACPy7O,EAAcxzO,EAAKyzO,kBAGvBzzO,EAAK0zO,SAAWF,EAAY5wO,KAAK,IACjC,IAAK,IAAItD,EAAI,EAAGA,EAAIk0O,EAAYj0O,OAAQD,IACpCixO,EAAWvwO,EAAKwwO,aAAaxwO,EAAK2zO,sBAAsBH,EAAYl0O,KACpEU,EAAK6xO,WAAWtB,EAAS9kO,UAGjCgoO,gBAAiB,WACb,IAIIG,EAEAjyO,EANA3B,EAAOjI,KACP8Y,EAAS7Q,EAAK6Q,OACdtR,EAASsR,EAAOtR,OAChBs0O,EAAa,EAKjB,IAAKlyO,EAAMpC,EAAS,EAAGoC,GAAO,EAAGA,IAC7BkyO,GAAc7zO,EAAK8zO,cAAcjjO,EAAOlP,GAAKpC,EAASoC,EAAK3B,EAAKozO,gBAKpE,IAHAQ,EAASC,EAAa7zO,EAAKkxO,YAE3B2C,EAAa7zO,EAAK8zO,cAAcF,EAAQ,EAAG5zO,EAAKqzO,gBAC3C1xO,EAAMpC,EAAS,EAAGoC,GAAO,EAAGA,IAC7BkyO,GAAc7zO,EAAK8zO,cAAcjjO,EAAOlP,GAAMpC,EAASoC,EAAM,EAAG3B,EAAKqzO,gBAIzE,MAAO,CAACO,EADCC,EAAa7zO,EAAKkxO,cAG/ByC,sBAAuB,SAASlzO,GAC5B,IAAK,IAAIsvO,KAAah4O,KAAKy4O,aACvB,GAAIz4O,KAAKy4O,aAAaT,GAAWtvO,QAAUA,EACvC,OAAOsvO,GAInB+D,cAAe,SAASrzO,EAAOqQ,EAAO6tC,GAClC,OAAQ7tC,EAAQ6tC,GAASA,GAASl+C,GAEtCoxO,WAAY,SAASpmO,GAGjB,IAFA,IAAIhL,EAEKnB,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAChCmB,EAAQuQ,SAASvF,EAAQ5I,OAAOvD,GAAG,IACnCvH,KAAK0T,QAAQ/R,KAAK+G,IAG1B+vO,aAAc,CACV,EAAK,CAAE/kO,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC,EAAK,CAAEgL,QAAW,SAAShL,MAAS,GACpC0xO,EAAK,CAAE1mO,QAAW,SAAShL,MAAS,IACpCwxO,EAAK,CAAExmO,QAAW,SAAShL,MAAS,IACpC2xO,EAAK,CAAE3mO,QAAW,SAAShL,MAAS,IACpCiM,EAAK,CAAEjB,QAAW,SAAShL,MAAS,IACpCjE,EAAK,CAAEiP,QAAW,SAAShL,MAAS,IACpCkM,EAAK,CAAElB,QAAW,SAAShL,MAAS,IACpCxE,EAAK,CAAEwP,QAAW,SAAShL,MAAS,IACpC7D,EAAK,CAAE6O,QAAW,SAAShL,MAAS,IACpC4xO,EAAK,CAAE5mO,QAAW,SAAShL,MAAS,IACpC6xO,EAAK,CAAE7mO,QAAW,SAAShL,MAAS,IACpC3D,EAAK,CAAE2O,QAAW,SAAShL,MAAS,IACpCnE,EAAK,CAAEmP,QAAW,SAAShL,MAAS,IACpCpE,EAAK,CAAEoP,QAAW,SAAShL,MAAS,IACpC8xO,EAAK,CAAE9mO,QAAW,SAAShL,MAAS,IACpC+xO,EAAK,CAAE/mO,QAAW,SAAShL,MAAS,IACpCgyO,EAAK,CAAEhnO,QAAW,SAAShL,MAAS,IACpCrE,EAAK,CAAEqP,QAAW,SAAShL,MAAS,IACpCiyO,EAAK,CAAEjnO,QAAW,SAAShL,MAAS,IACpCkyO,EAAK,CAAElnO,QAAW,SAAShL,MAAS,IACpCoM,EAAK,CAAEpB,QAAW,SAAShL,MAAS,IACpCmyO,EAAK,CAAEnnO,QAAW,SAAShL,MAAS,IACpCoyO,EAAK,CAAEpnO,QAAW,SAAShL,MAAS,IACpCyxO,EAAK,CAAEzmO,QAAW,SAAShL,MAAS,IACpCrD,EAAK,CAAEqO,QAAW,SAAShL,MAAS,IACpCsM,EAAK,CAAEtB,QAAW,SAAShL,MAAS,IACpCnD,EAAK,CAAEmO,QAAW,SAAShL,MAAS,IACpC,IAAK,CAAEgL,QAAW,SAAShL,MAAS,IACpC,IAAK,CAAEgL,QAAW,SAAShL,MAAS,IACpC,IAAK,CAAEgL,QAAW,SAAShL,MAAS,IACpC/F,EAAK,CAAE+Q,QAAW,SAAShL,MAAS,IACpC,IAAK,CAAEgL,QAAW,SAAShL,MAAS,IACpC,IAAK,CAAEgL,QAAW,SAAShL,MAAS,IACpC,IAAK,CAAEgL,QAAW,SAAShL,MAAS,IACpCsyO,OAAQ,CAAEtnO,QAAW,SAAShL,MAAS,IACvCuyO,OAAQ,CAAEvnO,QAAW,SAAShL,MAAS,IACvCwyO,OAAQ,CAAExnO,QAAW,SAAShL,MAAS,IACvCyyO,OAAQ,CAAEznO,QAAW,SAAShL,MAAS,IACvCszE,MAAO,CAAEtoE,QAAW,UACpB8nO,gBAAiB,OAIzBvD,EAAU+D,eAAiB/D,EAAUmD,OAAOr4O,OAAOyF,EAAW,GAAImwO,EAAoB,CAClFv2O,KAAM,mBACNk2O,aAAc,WACV,IAEI5vO,EAFAT,EAAOjI,KACPy7O,EAAcxzO,EAAKyzO,kBAGvBzzO,EAAK0zO,SAAWF,EAAY5wO,KAAK,IAEjC,IAAK,IAAItD,EAAI,EAAGA,EAAIk0O,EAAYj0O,OAAQD,IACpCmB,EAAQ+yO,EAAYl0O,GAChBU,EAAKgxO,sBAAsBvwO,GAC3BT,EAAK2wO,YAAY3wO,EAAKgxO,sBAAsBvwO,IAG5CT,EAAK6xO,WAAW7xO,EAAKwwO,aAAaxwO,EAAK2zO,sBAAsBlzO,IAAQgL,aAMrF,IAAIuoO,EAAWt7O,EAAMiH,MAAM7E,OAAO,CAC9BoF,KAAM,SAAS+zO,GACXl8O,KAAKk8O,SAAWA,GAEpB9D,SAAU,aACV7rO,GAAI,aACJguB,KAAM,aACN1U,UAAW,eAGXs2N,EAAaF,EAASl5O,OAAO,CAC7Bq5O,KAAM,OACNj0O,KAAM,SAAS+zO,EAAUG,GACrB,IAAIp0O,EAAOjI,KACXiI,EAAKi0O,SAAWA,EAChBj0O,EAAKo0O,OAASA,EACdp0O,EAAKq0O,WAAWD,IAEpBjE,SAAU,WACNp4O,KAAKk8O,SAASpC,WAAW95O,KAAKg8E,QAElCzvE,GAAI,SAAS7D,EAAOqQ,GAChB,IAAIsvC,EAAO3/C,EAAM4I,WAAWyH,GAC5B,OAAO/Y,KAAKu8O,OAAOl0L,IAEvB9tB,KAAM,SAASiiN,GAIX,IAHA,IAAIv0O,EAAOjI,KACP4J,EAAM,GAEF3B,EAAKw0O,OAAO7yO,GAAKW,KAAKtC,EAAMu0O,IAAkB5yO,EAAM3B,EAAKw0O,OAAOj1O,QACpEoC,KAGRic,UAAW,SAAS22N,GAChB,IAIIn0L,EAJApgD,EAAOjI,KACPq8O,EAASp0O,EAAKo0O,OACd3zO,EAAQ8zO,EAAc9zO,MACtBg0O,EAAYh0O,EAAMlB,OAGtB,GAAI6tB,EAAQ,IAAKgnN,IAAW,EAAG,CAC3B,IAAIM,EAAcj0O,EAAM8S,OAAOghO,EAAczjO,OAAO5I,MAAM,WACtDwsO,IACAD,EAAYh0O,EAAMiN,QAAQgnO,EAAY,GAAIH,EAAczjO,QAIhE,MAAQsvC,EAAOm0L,EAAc9zO,MAAM4I,WAAWkrO,EAAczjO,SAAW,GACnE9Q,EAAKs0O,OAAOl0L,IAASm0L,EAAczjO,MAAQ2jO,GAC3Cz0O,EAAKi0O,SAASpC,WAAW7xO,EAAK87K,SAAS17H,IACvCm0L,EAAczjO,SAGtBujO,WAAY,SAASD,GACjB,IAAIp0O,EAAOjI,KACXiI,EAAKw0O,OAAS,GAEVpnN,EAAQptB,EAAKm0O,KAAMC,IAAW,GAC9Bp0O,EAAKw0O,OAAO96O,KAAKsG,EAAK20O,UAGtBvnN,EAAQptB,EAAKm/B,SAAUi1M,IAAW,GAClCp0O,EAAKw0O,OAAO96O,KAAKsG,EAAK40O,aAE1B50O,EAAKw0O,OAAO96O,KAAKsG,EAAK60O,aAE1BF,SAAU,SAASJ,GACf,GAAIA,EAAcO,IAEd,OADAP,EAAcO,KAAM,EACbP,EAAcQ,eAAiBh9O,KAAKuR,KAGnDsrO,YAAa,SAASL,GAClB,IAAIv0O,EAAOjI,KACX,GAAIw8O,EAAcQ,eAAiB/0O,EAAKm/B,WACnCo1M,EAAczjO,MAAQ,GAAKyjO,EAAc9zO,MAAMlB,QAC5CS,EAAKi0O,SAASj0O,EAAKm/B,UAAU76B,GAAGiwO,EAAc9zO,MAAO8zO,EAAczjO,MAAQ,IAG/E,OAFA9Q,EAAKi0O,SAASpC,WAAW7xO,EAAKg1O,OAC9BT,EAAc1oK,SAAU,GACjB,GAGfgpK,WAAY,WAER,OADA98O,KAAKk8O,SAASpC,WAAW95O,KAAKi8E,OACvB,GAEXghK,MAAO,KAGPC,EAAY,GAEhBA,EAAU9C,EAAI+B,EAAWp5O,OAAO,CAC5BwO,IAAK,IACL61B,SAAU,IACVm1M,OAAQ,SAASl0L,GACb,OAAOA,GAAQ,GAAKA,EAAO,IAE/B07H,SAAU,SAAS17H,GACf,OAAIA,EAAO,GACAA,EAAO,GAGXA,EAAO,IAElB4zB,KAAM,IACND,MAAO,MAGXkhK,EAAUhD,EAAIiC,EAAWp5O,OAAO,CAC5BwO,IAAK,IACL61B,SAAU,IACVm1M,OAAQ,SAASl0L,GACb,OAAOA,GAAQ,IAAMA,EAAO,KAEhC07H,SAAU,SAAS17H,GACf,OAAOA,EAAO,IAElB4zB,KAAM,IACND,MAAO,MAGXkhK,EAAU7C,EAAI4B,EAASl5O,OAAO,CAC1BwO,IAAK,IACL6mO,SAAU,WACNp4O,KAAKk8O,SAASpC,WAAW95O,KAAKg8E,QAElCzvE,GAAI,SAAS7D,EAAOqQ,GAChB,IAAIokO,EAAQ3F,EAAQ9uO,EAAOqQ,EAAO,GAClC,OAAQA,EAAQ,GAAKrQ,EAAMlB,QAA0B,GAAhBkB,EAAMlB,SAAgB8vO,EAAYvqO,KAAKowO,IAEhF5iN,KAAM,WACFv6B,KAAKk8O,SAASpC,WAAW95O,KAAKi8E,OAElCp2D,UAAW,SAAS22N,GAEhB,IADA,IAAIn0L,GACKA,EAAOmvL,EAAQgF,EAAc9zO,MAAO8zO,EAAczjO,MAAO,KAC9Du+N,EAAYvqO,KAAKs7C,IAAwB,GAAfA,EAAK7gD,QAE/BxH,KAAKk8O,SAASpC,WAAW7gO,SAASovC,EAAM,KACxCm0L,EAAczjO,OAAS,GAG/BgrK,SAAU,SAAS17H,GACf,OAAOA,GAEX4zB,KAAM,GACND,MAAO,MAGXkhK,EAAUd,KAAOH,EAASl5O,OAAO,CAC7BwO,IAAK,OACL6rO,gBAAiB,CAAC,IAAI,KACtBj1O,KAAM,SAAS+zO,EAAUG,GACrBr8O,KAAKk8O,SAAWA,EAChBl8O,KAAKq9O,eAAehB,IAExBjE,SAAU,SAASoE,GACf,IAAIn0L,EAAOm0L,EAAc9zO,MAAM4I,WAAW,GAAK,IAC3CgsO,EAAWt9O,KAAKu9O,aAAal1L,GAEjCroD,KAAKk8O,SAASoB,GAAUlF,YAE5B7rO,GAAI,SAAS7D,EAAOqQ,GAChB,IAAIsvC,EAAO3/C,EAAM4I,WAAWyH,GAC5B,OAAO/Y,KAAKu8O,OAAOl0L,IAEvBk0L,OAAQ,SAASl0L,GACb,OAAOA,GAAQ,KAAOA,EAAO,KAEjCxiC,UAAW,SAAS22N,GAChB,IAAIv0O,EAAOjI,KACPs9O,EAAWr1O,EAAKu1O,cAAchB,GAC9BN,EAAWj0O,EAAKi0O,SAChB10O,EAAS81O,EAAS50O,MAAMlB,OAG5B,GAFAg1O,EAAczjO,OAASvR,EAEnBA,EAAS,EAET,IADA,IAAI6gD,EACGi1L,EAASvkO,MAAQvR,EAAQ81O,EAASvkO,QACrCsvC,EAAOi1L,EAAS50O,MAAM4I,WAAWgsO,EAASvkO,OAC1CukO,EAASrqL,MAAQhrD,EAAKs1O,aAAal1L,GAC/Bi1L,EAASN,eAAiBM,EAASrqL,QACnCqqL,EAASN,cAAgBM,EAASrqL,MAClCipL,EAASoB,EAASrqL,OAAO14B,KAAK+iN,IAElCpB,EAASpC,WAAWoC,EAASoB,EAASrqL,OAAOgpB,MAC7CigK,EAASpC,WAAWoC,EAASoB,EAASrqL,OAAO8wH,SAAS17H,SAItDi1L,EAASrqL,OAASqqL,EAASN,eAC3Bd,EAASoB,EAASrqL,OAAO14B,KAAK+iN,GAElCr1O,EAAKw1O,WAAWH,GAChBpB,EAASwB,SAASJ,EAAUr1O,EAAK01O,WAC7BnB,EAAczjO,MAAQyjO,EAAc9zO,MAAMlB,QAC1CS,EAAKw1O,WAAWH,GAIxBd,EAAcO,KAAM,EACpBP,EAAcvpL,MAAQqqL,EAASrqL,OAEnCwqL,WAAY,SAASH,GACjB,IAAIr1O,EAAOjI,KACXiI,EAAKi0O,SAASpC,WAAW7xO,EAAKi0O,SAASoB,EAASrqL,OAAOgpB,MACvDh0E,EAAKi0O,SAASpC,WAAW7xO,EAAKi0O,SAASoB,EAASrqL,OAAOgpB,OAE3DuhK,cAAe,SAAShB,GACpB,IAAIv0O,EAAOjI,KACPs9O,EAAW,CACP50O,MAAOT,EAAK21O,QAAQpB,EAAc9zO,MAAO8zO,EAAczjO,OACvDA,MAAO,GAKf,OAHAukO,EAASrqL,MAAQhrD,EAAKs1O,aAAaD,EAAS50O,MAAM4I,WAAW,IAC7DgsO,EAASN,cAAgBR,EAAcQ,eAAiB/0O,EAAKsJ,IACzD+rO,EAASrqL,MAAQupL,EAAcQ,cAC5BM,GAEXD,eAAgB,SAAShB,GACrB,IAAIp0O,EAAOjI,KACXiI,EAAK01O,UAAY,GACjB,IAAK,IAAIp2O,EAAI,EAAGA,EAAI80O,EAAO70O,OAAQD,IAC3B8tB,EAAQgnN,EAAO90O,GAAIU,EAAKm1O,kBAAoB,GAC5Cn1O,EAAK01O,UAAUh8O,KAAK06O,EAAO90O,KAIvCg2O,aAAc,SAASl1L,GAEnB,IADA,IAAIpgD,EAAOjI,KACFuH,EAAI,EAAGA,EAAIU,EAAK01O,UAAUn2O,OAAQD,IACvC,GAAIU,EAAKi0O,SAASj0O,EAAK01O,UAAUp2O,IAAIg1O,OAAOl0L,GACxC,OAAOpgD,EAAK01O,UAAUp2O,IAIlCq2O,QAAS,SAASl1O,EAAOqQ,GAGrB,IAFA,IAAIsvC,EACA9xC,EAAS,IACL8xC,EAAO3/C,EAAM4I,WAAWyH,OAAa/Y,KAAKu8O,OAAOl0L,IACrD9xC,GAAUzE,OAAOqc,aAAak6B,EAAO,KAEzC,OAAO9xC,KAIf2mO,EAAUW,KAAO5B,EAASl5O,OAAO,CAC7BwO,IAAK,OACLusO,WAAY,IACZV,gBAAiB,CAAC,IAAI,KACtBW,QAAS,IACTC,MAAO,IACP71O,KAAM,SAAS+zO,EAAUG,GACrBr8O,KAAKk8O,SAAWA,EAChBl8O,KAAKq8O,OAASA,GAElBjE,SAAU,WACNp4O,KAAKk8O,SAASl8O,KAAK89O,YAAY1F,YAEnC7rO,GAAI,WACA,OAAO8oB,EAAQr1B,KAAKuR,IAAKvR,KAAKq8O,SAAW,GAE7Cx2N,UAAW,SAAS22N,GAChB,IAQI/oO,EACAwqO,EACAC,EAVAj2O,EAAOjI,KACPk8O,EAAWj0O,EAAKi0O,SAChBxzO,EAAQ8zO,EAAc9zO,MAAMjG,QAAQ,MAAO,IAC3C07O,EAAkB,IAAIlwO,OAAO,IAAMhG,EAAK81O,QAAU91O,EAAK+1O,MAAQ,IAAK,KACpEjlO,EAAQyjO,EAAczjO,MACtBukO,EAAW,CACPrqL,MAAOhrD,EAAK61O,YAQpB,IAFA5B,EAASpC,WAAW7xO,EAAK+zE,SAEZ,CAKT,GAJAshK,EAASvkO,MAAQ,GAGjBtF,GADAyqO,EAAkBx1O,EAAMoC,OAAOiO,KAAW9Q,EAAK81O,QAAU,EAAI,GACjC,EAAI91O,EAAKm2O,eAAe11O,EAAOqQ,GAAS9Q,EAAKo2O,YAAY31O,EAAOqQ,IAChF89G,GAAGrvH,OACXy2O,EAAYllO,EAAQmlO,EAAkBzqO,EAAQkc,GAAGnoB,OAASiM,EAAQojH,GAAGrvH,YAIrE,IADAy2O,EAAYv1O,EAAMiN,QAAQ1N,EAAK81O,QAAShlO,EAAQ,IAChC,EAAG,CACf,GAAIA,EAAQtF,EAAQojH,GAAGj+G,IAAMnF,EAAQkc,GAAGnoB,OAAS02O,EAAkBx1O,EAAMlB,OACrE,MAAM,IAAIiJ,MAAM,6DAEpBwtO,EAAYv1O,EAAMlB,OAQ1B,GALA81O,EAAS50O,MAAQA,EAAMsC,UAAU+N,EAAOklO,GAAWx7O,QAAQ07O,EAAiB,IAC5El2O,EAAKq2O,SAAS7qO,EAAS6pO,EAAS50O,OAEhCwzO,EAASwB,SAASJ,EAAUr1O,EAAKm1O,iBAE7Ba,GAAav1O,EAAMlB,OACnB,MAGJuR,EAAQklO,EAEJX,EAASrqL,OAAShrD,EAAK61O,aACvB5B,EAASj0O,EAAK61O,YAAYvjN,KAAK+iN,GAC/BA,EAASrqL,MAAQhrD,EAAK61O,YAGrBrqO,EAAQojH,GAAGrvH,QACZ00O,EAASpC,WAAW7xO,EAAK+zE,OAGjCwgK,EAAczjO,MAAQyjO,EAAc9zO,MAAMlB,QAE9C82O,SAAU,SAAS7qO,EAAS/K,GACxB,IAAI2/C,EAAO3/C,EAAM8S,OAAO/H,EAAQkc,GAAGnoB,QAC/BqvH,EAAKpjH,EAAQojH,GACjB,IAAKA,EAAGnxH,OAAS4xO,EAAYvqO,KAAKs7C,GAC9B,MAAM,IAAI53C,MAAM,0BAA4BgD,EAAQkc,GAAK,2DAG7D,GAAe,gBAAXknG,EAAGnxH,OAA2B6xO,EAAkBxqO,KAAKs7C,GACpD,MAAM,IAAI53C,MAAM,0BAA4BgD,EAAQkc,GAAK,qEAG9D,GAAIknG,EAAGrvH,QAAUqvH,EAAGrvH,SAAW6gD,EAAK7gD,OAC/B,MAAM,IAAIiJ,MAAM,0BAA4BgD,EAAQkc,GAAK,YAAcknG,EAAGrvH,OAAS,qBAGxF,GAAIqvH,EAAG1gH,KAAO0gH,EAAG1gH,IAAMkyC,EAAK7gD,OACvB,MAAM,IAAIiJ,MAAM,0BAA4BgD,EAAQkc,GAAK,qBAAuBknG,EAAG1gH,IAAM,qBAG9F,GAAI0gH,EAAGj+G,KAAOi+G,EAAGj+G,IAAMyvC,EAAK7gD,OACvB,MAAM,IAAIiJ,MAAM,0BAA4BgD,EAAQkc,GAAK,oBAAsBknG,EAAGj+G,IAAM,sBAGjGylO,YAAa,SAAS31O,EAAOqQ,GAIzB,IAHA,IACI4W,EACAknG,EAFA5uH,EAAOjI,KAGFuH,EAAI,EAAGA,GAAK,EAAGA,IAGpB,GAFAooB,EAAK6nN,EAAQ9uO,EAAOqQ,EAAOxR,GAC3BsvH,EAAK5uH,EAAKs2O,MAAM5uN,IAAO1nB,EAAKs2O,MAAM5uN,EAAG3kB,UAAU,EAAG2kB,EAAGnoB,OAAS,IAE1D,MAAO,CACHmoB,GAAIA,EACJknG,GAAIA,GAIhB5uH,EAAKu2O,mBAAmB7uN,IAE5B6uN,mBAAoB,SAAS7uN,GACzB,MAAM,IAAIlf,MAAM9P,EAAM+P,OAAO,mDAAmDif,IAEpFyuN,eAAgB,SAAS11O,EAAOqQ,GAC5B,IAAI9Q,EAAOjI,KACPsV,EAAQ5M,EAAMiN,QAAQ1N,EAAK81O,QAAShlO,GACpCpN,EAAMjD,EAAMiN,QAAQ1N,EAAK+1O,MAAO1oO,GAChCqa,EAAKjnB,EAAMsC,UAAUsK,EAAQ,EAAE3J,GAC/BkrH,EAAK5uH,EAAKs2O,MAAM5uN,IAAO1nB,EAAKs2O,MAAM5uN,EAAGnU,OAAOmU,EAAGnoB,OAAS,IAK5D,OAJKqvH,GACD5uH,EAAKu2O,mBAAmB7uN,GAGrB,CACHknG,GAAIA,EACJlnG,GAAIA,IAGZ4uN,MAAO,SAAS5uN,GACZ,IAAIknG,EAAK72H,KAAKy+O,uBACVC,EAAW7nH,EAAG6nH,SAClB,GAAI7nH,EAAGlnG,GACH,OAAOknG,EAAGlnG,GAGd,IAAK,IAAIpoB,EAAI,EAAGA,EAAIm3O,EAASl3O,OAAQD,IAAK,CACtC,GAAIm3O,EAASn3O,GAAGo3O,KAAOtpN,EAAQ1F,EAAI+uN,EAASn3O,GAAGo3O,MAAQ,EACnD,OAAOD,EAASn3O,GAAG7B,KAElB,GAAIg5O,EAASn3O,GAAGkxD,OAEjB,IADA,IAAIA,EAASimL,EAASn3O,GAAGkxD,OAChB9tB,EAAI,EAAGA,EAAI8tB,EAAOjxD,OAAQmjC,IAC/B,GAAI8tB,EAAO9tB,GAAG,IAAMhb,GAAMA,GAAM8oC,EAAO9tB,GAAG,GACtC,OAAO+zM,EAASn3O,GAAG7B,OAMvC+4O,uBAAwB,CACpB,GAAM,CAAE7lO,IAAK,GAAIlT,KAAM,gBACvB,IAAO,CAAE8B,OAAQ,IACjB,KAAQ,CAAEoR,IAAK,EAAGlT,KAAM,gBACxB,IAAO,CAAEkT,IAAK,EAAGlT,KAAM,gBACvB,KAAQ,CAAEkT,IAAK,GAAIlT,KAAM,gBACzB,IAAO,CAAEyQ,IAAK,EAAGyC,IAAK,GAAIlT,KAAM,gBAChC,KAAQ,CAAEyQ,IAAK,EAAGyC,IAAK,GAAIlT,KAAM,gBACjC,IAAO,CAAEyQ,IAAK,GAAIyC,IAAK,GAAIlT,KAAM,gBACjC,KAAQ,CAAEyQ,IAAK,GAAIyC,IAAK,GAAIlT,KAAM,gBAClCg5O,SAAU,CAAC,CACPC,IAAK,CAAC,KAAM,KAAM,OAAQ,QAC1BlmL,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAEV/yD,KAAM,CAAE8B,OAAQ,IAClB,CACEm3O,IAAK,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,QAC/ElmL,OAAQ,CAAC,EAAC,IACV/yD,KAAM,CAAEkT,IAAK,GAAIlT,KAAM,iBACzB,CACEi5O,IAAK,CAAC,QACNlmL,OAAQ,CAAC,CAAC,IAAK,MACf/yD,KAAM,CAAE8B,OAAQ,KAClB,CACEm3O,IAAK,CAAC,KAAK,KAAM,MAAO,MAAO,QAC/Bj5O,KAAM,CAAEkT,IAAK,GAAIlT,KAAM,iBACzB,CACEi5O,IAAK,CAAC,KAAM,OAAQ,OAAQ,QAC5Bj5O,KAAM,CAAE8B,OAAQ,KAClB,CACEm3O,IAAK,CAAC,KAAM,KAAM,QAClBj5O,KAAM,CAAE8B,OAAQ,KAClB,CACEm3O,IAAK,CAAC,OACNlmL,OAAQ,CACJ,CAAC,IAAK,MAEV/yD,KAAM,CAAE8B,OAAQ,IAClB,CACEm3O,IAAK,CAAC,KAAM,QACZj5O,KAAM,CAAE8B,OAAQ,IAClB,CACEm3O,IAAK,CAAC,KAAK,MACXj5O,KAAM,CAAEkT,IAAK,EAAGlT,KAAM,iBACxB,CACEi5O,IAAK,CAAC,MAAM,OACZj5O,KAAM,CAAEkT,IAAK,GAAIlT,KAAM,iBACzB,CACEi5O,IAAK,CAAC,MAAO,OACbj5O,KAAM,CAAEyQ,IAAK,EAAGyC,IAAK,GAAIlT,KAAM,iBAChC,CACCi5O,IAAK,CAAC,MAAO,OACbj5O,KAAM,CAAEyQ,IAAK,EAAGyC,IAAK,GAAIlT,KAAM,iBACjC,CACEi5O,IAAK,CAAC,OAAQ,QACdj5O,KAAM,CAAE8B,OAAQ,OAGxBw0E,MAAO,MAGX,IAAI4iK,EAAcnH,EAAS10O,OAAO,CAC9BoF,KAAM,SAASjB,GACXuwO,EAAS1vO,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC5BlH,KAAK6+O,eAETA,YAAa,WAET,IADA,IAAI52O,EAAOjI,KACFuH,EAAI,EAAGA,EAAIU,EAAKo0O,OAAO70O,OAAQD,IACpCU,EAAKA,EAAKo0O,OAAO90O,IAAM,IAAI21O,EAAUj1O,EAAKo0O,OAAO90O,IAAIU,EAAMA,EAAKo0O,SAGxEzE,UAAW,SAASlvO,EAAOsE,EAAOL,GAC/B,IAAI1E,EAAOjI,KACXiI,EAAKyL,QAAU,GACfzL,EAAKS,MAAQA,EACbT,EAAK+E,MAAQA,EACb/E,EAAK0E,OAASA,EACd1E,EAAK62O,SAAW,EAChB72O,EAAKy3K,WAAa,EAClBz3K,EAAK8Q,MAAQ,EACb9Q,EAAK6E,SAAW,GAEnB+qO,QAAS,WACL,IAAI5vO,EAAOjI,KACPw8O,EAAgB,CACZ9zO,MAAOT,EAAKS,MACZqQ,MAAO,EACPk6C,MAAO,IAEW,IAAtBhrD,EAAKS,MAAMlB,SAIfg1O,EAAcvpL,MACVupL,EAAcQ,cAAgB/0O,EAAK82O,aAAavC,EAAev0O,EAAKo0O,QAExEp0O,EAAKmwO,SAASoE,GAEdv0O,EAAKy1O,SAASlB,EAAev0O,EAAKo0O,QAElCp0O,EAAK6vO,cACL7vO,EAAKirI,UACLjrI,EAAKszO,gBAETmC,SAAU,SAASlB,EAAeH,GAE9B,IADA,IAAIp0O,EAAOjI,KAEPiI,EAAKu0O,EAAcvpL,OAAOptC,UAAU22N,KAChCA,EAAczjO,OAASyjO,EAAc9zO,MAAMlB,SAI/C,GAAKg1O,EAAc1oK,QAKd,CACF,IAAI15B,EAAOoiM,EAAcvpL,MACzBupL,EAAcvpL,MAAQupL,EAAcQ,cACpCR,EAAcQ,cAAgB5iM,EAC9BoiM,EAAc1oK,SAAU,OARvB0oK,EAAcQ,cAAgBR,EAAcvpL,MAC5CupL,EAAcvpL,MAAQhrD,EAAK82O,aAAavC,EAAeH,GACvDp0O,EAAKu0O,EAAcvpL,OAAO14B,KAAKiiN,IAU3CpE,SAAU,SAASoE,GACfx8O,KAAKw8O,EAAcvpL,OAAOmlL,SAASoE,GACnCx8O,KAAK8M,SAAW,GAEpBgrO,YAAa,WACT,IAAI7vO,EAAOjI,KAEXiI,EAAK0zO,SAAW1zO,EAAK62O,SAAW,IAChC72O,EAAK6xO,WAAW7xO,EAAK0zO,WAEzBzoG,QAAS,WACLlzI,KAAK85O,WAAW95O,KAAKg/O,OAEzBzD,YAAa,WACT,IAAItzO,EAAOjI,KACXiI,EAAK0xK,SAAW1xK,EAAK+E,OAAS/E,EAAKy3K,WAAaz3K,EAAKyvO,kBAEzDoC,WAAY,SAASzxL,GAKjB,IAJA,IAEI3/C,EAFAT,EAAOjI,KACP0T,EAAUzL,EAAKwwO,aAAapwL,GAAMn3C,WAG7B3J,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAChCmB,EAAQuQ,SAASvF,EAAQ5I,OAAOvD,GAAG,IACnCU,EAAKyL,QAAQ/R,KAAK+G,GAClBT,EAAKy3K,YAAch3K,EAEvBT,EAAK62O,UAAYz2L,EAAOpgD,EAAK6E,YAEjCiyO,aAAc,SAASvC,EAAeH,GAClC,IAAK,IAAI90O,EAAI,EAAGA,EAAI80O,EAAO70O,OAAQD,IAC/B,GAAIvH,KAAKq8O,EAAO90O,IAAIgF,GAAGiwO,EAAc9zO,MAAO8zO,EAAczjO,OACtD,OAAOsjO,EAAO90O,GAGtBvH,KAAK+3O,sBAAsByE,EAAc9zO,MAAMoC,OAAO0xO,EAAczjO,SAExE0/N,aAAc,CACV,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAC/D,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,SAE9CuG,KAAM,MAGV/G,EAAUgH,SAAWL,EAAY77O,OAAO,CACpCX,KAAM,aACNi6O,OAAQ,CAAC,OAIbpE,EAAUiH,SAAWN,EAAY77O,OAAO,CACpCX,KAAM,aACNi6O,OAAQ,CAAC,OAGbpE,EAAUkH,SAAWP,EAAY77O,OAAO,CACpCX,KAAM,aACNi6O,OAAQ,CAAC,OAGbpE,EAAUmH,QAAUR,EAAY77O,OAAO,CACnCX,KAAM,WACNi6O,OAAQ,CAAC,IAAK,IAAK,IAAK,UAG5BpE,EAAU,WAAa2G,EAAY77O,OAAO,CACvCX,KAAM,eACNi6O,OAAQ,CAAC,OAAQ,IAAK,OAGzB,IAAIgD,EAAU5H,EAAS10O,OAAO,CAC1B60O,UAAW,SAASlvO,EAAOsE,GACvB,IAAI/E,EAAOjI,KACXiI,EAAKyL,QAAU,GACfzL,EAAKS,MAAQA,EACbT,EAAKq3O,eAAiB,EACtBr3O,EAAK+E,MAAQA,GAEjBuuO,YAAa,WACT,IAAItzO,EAAOjI,KAGXiI,EAAK0xK,SAAW1xK,EAAK+E,OACX,IAAM/E,EAAKS,MAAMlB,OAASS,EAAKq3O,gBAAkBr3O,EAAKyvO,gBAH1C,IAK1BG,QAAS,WACL,IAAI5vO,EAAOjI,KACP0I,EAAQT,EAAKS,MACjBT,EAAK6xO,WAAW7xO,EAAK+zE,OAErB,IAAK,IAAIz0E,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9BU,EAAKowO,aAAa3vO,EAAMoC,OAAOvD,IAG/BU,EAAKf,QAAQ4wO,aACb7vO,EAAK6vO,cAGT7vO,EAAK6xO,WAAW7xO,EAAK+2O,MACrB/2O,EAAKszO,eAETlD,aAAc,SAASL,GACnB,IAAI/vO,EAAOjI,KACP0T,EAAUzL,EAAKwwO,aAAaT,GAC3BtkO,GACDzL,EAAK8vO,sBAAsBC,GAE/B/vO,EAAK6xO,WAAWpmO,IAEpBomO,WAAY,SAASpmO,GACjB,IAAK,IAAInM,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAChCvH,KAAK0T,QAAQ/R,KAAKsX,SAASvF,EAAQ5I,OAAOvD,GAAG,MAGrDuwO,YAAa,WACT,IAEI2D,EAFAxzO,EAAOjI,KAIXy7O,EAHuBxzO,EAAKs3O,UAAUt3O,EAAKu3O,cAGZj1O,KAAKtC,EAAKs3O,UAAWt3O,EAAKS,OAEzDT,EAAK0zO,SAAWF,EAAY5wO,KAAK,IACjC,IAAK,IAAItD,EAAI,EAAGA,EAAIk0O,EAAYj0O,OAAQD,IACpCU,EAAKq3O,iBACLr3O,EAAK6xO,WAAW7xO,EAAKwwO,aAAagD,EAAYl0O,MAGtDg4O,UAAW,CACPE,SAAU,SAAS/2O,GACf,IAEAkB,EACA81O,EACAC,EAJIlE,EAAc,CAAC,EAAG,IACtBmE,EAAMl3O,EAAMlB,OAAS,EAKrB,IAAKoC,EAAM,EAAGA,EAAMlB,EAAMlB,OAAQoC,IAC9B6xO,GAAa7xO,EAAMg2O,GAAO,IAAM3mO,SAASvQ,EAAMoC,OAAOlB,GAAK,IAM/D,IAHA+1O,EAASlE,EAAY,GACrBiE,GAA4B,EAAjBjE,EAAY,IAAQvqO,WAE1BtH,EAAM,EAAGA,EAAM81O,EAAQl4O,OAAQoC,IAChC+1O,GAAU1mO,SAASymO,EAAQ50O,OAAOlB,GAAK,IAG3C,MAAO,EAAE,GAAM+1O,EAAS,IAAO,KAEnCE,SAAU,SAASn3O,GAOf,IANA,IAIIo3O,EAJAC,EAAc,EAEdv4O,EAASkB,EAAMlB,OAIVD,EAAI,EAAGA,EAAIC,EAAQD,IAExBw4O,MADWv4O,EAASD,GAAK,GAAK,GAAK,GACXmB,EAAMoC,OAAOvD,GAGzC,OAAkB,KADlBu4O,GATU,GASUC,EATV,QAWC,CAACD,GAEL,CAAC,EAAG,IAEfE,iBAAkB,SAASt3O,GACvB,IACIu3O,EADAxE,EAAcz7O,KAAK6/O,SAASn3O,GAIhC,OAFAu3O,EAAav3O,EAAQ+yO,EAAY,GAE1BA,EAAYp+N,OAAOrd,KAAKy/O,SAASQ,KAE5CC,iBAAkB,SAASx3O,GACvB,IACIy3O,EADA1E,EAAcz7O,KAAKy/O,SAAS/2O,GAIhC,OAFAy3O,EAAaz3O,EAAQ+yO,EAAY,GAE1BA,EAAYp+N,OAAOrd,KAAKy/O,SAASU,MAGhD1H,aAAc,CAAC,WAAY,WAAW,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1Hz8J,MAAO,KACPgjK,KAAM,MACNQ,aAAc,KAGlBvH,EAAUmI,SAAWf,EAAQt8O,OAAO,CAChCX,KAAM,eACNo9O,aAAc,aAGlBvH,EAAUoI,SAAWhB,EAAQt8O,OAAO,CAChCX,KAAM,eACNo9O,aAAc,aAGlBvH,EAAUqI,WAAajB,EAAQt8O,OAAO,CAClCX,KAAM,wBACNo9O,aAAc,qBAGlBvH,EAAUsI,WAAalB,EAAQt8O,OAAO,CAClCX,KAAM,wBACNo9O,aAAc,qBAGlBvH,EAAUuI,OAAS/I,EAAS10O,OAAO,CAC/BX,KAAM,UACNi5O,eAAgB,GAChBC,eAAgB,EAChBmF,mBAAoB,GACpBtH,YAAa,GACbuH,WAAY,GACZC,KAAM,IACN3kK,MAAO,SACPgjK,KAAM,QACNpH,UAAW,SAASlvO,EAAOsE,GACvB,IAAI/E,EAAOjI,KACXiI,EAAKyL,QAAU,GACfzL,EAAKS,MAAQA,EACbT,EAAK+E,MAAQA,EACb/E,EAAKy3K,WAAa,GAEtBm4D,QAAS,WACL,IAAI5vO,EAAOjI,KACP0I,EAAQT,EAAKS,MACjBT,EAAK6xO,WAAW7xO,EAAK+zE,OAErB,IAAK,IAAIz0E,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9BU,EAAKowO,aAAa3vO,EAAMoC,OAAOvD,IAG/BU,EAAKf,QAAQ4wO,aACb7vO,EAAK6vO,cAGT7vO,EAAK6xO,WAAW7xO,EAAK+2O,MACrB/2O,EAAKszO,eAETA,YAAa,WACT,IAAItzO,EAAOjI,KACXiI,EAAK0xK,SAAW1xK,EAAK+E,OAAS/E,EAAKy3K,WAAaz3K,EAAKyvO,kBAEzDI,YAAa,WACT,IAGI+D,EAHA5zO,EAAOjI,KACP0I,EAAQT,EAAKS,MACblB,EAASkB,EAAMlB,OAQnB,GALAq0O,EAAS5zO,EAAK24O,eAAel4O,EAAOlB,EAAQS,EAAKozO,gBAAkBpzO,EAAKkxO,YACxElxO,EAAK0zO,SAAWE,EAAS,GACzB5zO,EAAK6xO,WAAW7xO,EAAKwwO,aAAaoD,MAElCr0O,GACcS,EAAKw4O,mBAAoB,CACnC,IAAII,GAAUhF,EAAS5zO,EAAK24O,eAAel4O,EAAOlB,EAAQS,EAAKqzO,iBAAmBrzO,EAAKkxO,YACvFlxO,EAAK0zO,UAAYkF,EACjB54O,EAAK6xO,WAAW7xO,EAAKwwO,aAAaoI,MAG1CD,eAAgB,SAASl4O,EAAOlB,EAAQo/C,GAEpC,IADA,IAAIm5L,EAAc,EACTx4O,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9Bw4O,GAAe//O,KAAK+7O,cAAc/7O,KAAK+jL,SAASr7K,EAAMoC,OAAOvD,IAAKC,EAAQD,EAAGq/C,GAGjF,OAAOm5L,GAEXhE,cAAe,SAASrzO,EAAOlB,EAAQuR,EAAO6tC,GAE1C,QADcp/C,EAASuR,GAAS6tC,GAASA,GACzBl+C,GAEpBq7K,SAAU,SAASi0D,GACf,IAAI/vO,EAAOjI,KACX,OAAK8I,MAAMkvO,IAGFA,IAAc/vO,EAAK04O,MACxB14O,EAAK8vO,sBAAsBC,GAExB/vO,EAAKy4O,YALDznO,SAAS++N,EAAU,KAOlCK,aAAc,SAASL,GACnB,IAAI/vO,EAAOjI,KACP0I,EAAQT,EAAK87K,SAASi0D,GACtBtkO,EAAUzL,EAAKwwO,aAAa/vO,GAChCT,EAAK6xO,WAAWpmO,IAEpBomO,WAAY,SAASpmO,GAEjB,IADA,IAAIhL,EACKnB,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAChCmB,EAAQuQ,SAASvF,EAAQ5I,OAAOvD,GAAG,IACnCvH,KAAK0T,QAAQ/R,KAAK+G,GAClB1I,KAAK0/K,YAAch3K,GAG3B+vO,aAAc,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UACnHvxO,QAAS,CACL4wO,aAAa,KAIrBG,EAAU6I,QAAUrJ,EAAS10O,OAAO,CAChCX,KAAM,UACN45E,MAAO,IACP+kK,mBAAoB,CAAC,EAAE,EAAG,IAC1BC,gBAAiB,IACjBpJ,UAAW,SAASlvO,EAAOsE,EAAOL,GAC9B,IAAI1E,EAAOjI,KACXiI,EAAK0E,OAASA,EACd1E,EAAK+E,MAAQA,EACb/E,EAAKg5O,WAAat0O,EAAS,EAC3B1E,EAAKS,MAAQA,EAAMjG,QAAQ,IAAIwL,OAAOhG,EAAK+4O,gBAAgB,KAAM,IACjE/4O,EAAKyL,QAAU,GACfzL,EAAKq2O,SAASr2O,EAAKS,OACnBT,EAAK62O,SAAW,EAChB72O,EAAKszO,eAET1D,QAAS,WACL,IAAI5vO,EAAOjI,KACP0I,EAAQT,EAAKS,MACjBT,EAAK6xO,WAAW7xO,EAAK+zE,OAErB,IAAK,IAAIz0E,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9BU,EAAKowO,aAAa3vO,EAAMoC,OAAOvD,IAG/BU,EAAKf,QAAQ4wO,aACb7vO,EAAK6vO,cAGT7vO,EAAK6xO,WAAW7xO,EAAK+zE,OACrB/zE,EAAKyL,QAAQ2b,OAEjBgpN,aAAc,SAASL,GACnB,IAAI/vO,EAAOjI,KACP0T,EAAUzL,EAAKwwO,aAAaT,GAChC/vO,EAAK62O,UAAY7lO,SAAS++N,EAAU,IACpC/vO,EAAK6xO,WAAWpmO,IAEpBokO,YAAa,WACT,IAAI7vO,EAAOjI,KACXiI,EAAK0zO,UAAY,GAAM1zO,EAAK62O,SAAW,IAAO,GAC9C72O,EAAKowO,aAAapwO,EAAK0zO,WAE3BJ,YAAa,WACT,IAAItzO,EAAOjI,KAEXiI,EAAK0xK,SAAW1xK,EAAK+E,OAAmC,IAAzB/E,EAAKS,MAAMlB,OAAS,GAD7B,EACyDS,EAAKyvO,kBAExF4G,SAAU,SAAS51O,GACf,IAAIT,EAAOjI,KAKX,GAHKs3O,EAAYvqO,KAAKrE,IAClBT,EAAK8vO,sBAAsBrvO,EAAMyH,MAAM,UAAU,IAEjDklB,EAAQ3sB,EAAMlB,OAAQS,EAAK84O,oBAAsB,EACjD,MAAM,IAAItwO,MAAM,qEAAuExI,EAAK84O,mBAAmBl2O,KAAK,OAG5HivO,WAAY,SAASpmO,GAGjB,IAFA,IACIwpE,EADAj1E,EAAOjI,KAEFuH,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAChC21E,EAAKj1E,EAAK0E,OAAS1E,EAAKg5O,WAAavtO,EAAQ5I,OAAOvD,GACpDU,EAAKyL,QAAQ/R,KAAK,CAAEqL,MAAO,EAAGkwE,GAAIA,EAAIE,GAAIn1E,EAAK0E,SAC/C1E,EAAKyL,QAAQ/R,KAAK,IAG1B82O,aAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,WAGpGR,EAAUiJ,MAAQzJ,EAAS10O,OAAO,CAC9B60O,UAAW,SAASlvO,EAAOsE,EAAOL,GAG9B,GAAoB,KAFpBjE,GAAS,IAEClB,QAAgB,KAAKuF,KAAKrE,GAChC,MAAM,IAAI+H,MAAM,0DAGpB,IAAIxI,EAAOjI,KACXiI,EAAKyL,QAAU,GACfzL,EAAKf,QAAQyF,OAASA,EACtB1E,EAAK0xK,SAAW3sK,GAAS,GAAK/E,EAAKyvO,iBACnCzvO,EAAKS,MAAQA,EACbT,EAAK0zO,SAAW1zO,EAAKk5O,oBACrBl5O,EAAKm5O,QAAU14O,EAAM,GACrBT,EAAKo5O,SAAW34O,EAAM8S,OAAO,EAAE,GAC/BvT,EAAKq5O,UAAY54O,EAAM8S,OAAO,GAAKvT,EAAK0zO,UAE5C9D,QAAS,WACL,IAAI5vO,EAAOjI,KACXiI,EAAKs5O,UAAUt5O,EAAKwwO,aAAanjO,OACjCrN,EAAKu5O,QAAQv5O,EAAKo5O,SAASp5O,EAAKm5O,SAChCn5O,EAAKs5O,UAAUt5O,EAAKwwO,aAAav1E,QACjCj7J,EAAKu5O,QAAQv5O,EAAKq5O,WAClBr5O,EAAKs5O,UAAUt5O,EAAKwwO,aAAanjO,QAErCksO,QAAS,SAASH,EAAS9vO,GAEvB,IADA,IAAItJ,EAAOjI,KACFuH,EAAI,EAAGA,EAAI85O,EAAS75O,OAAQD,IAC7BgK,GAAO0H,SAAShR,EAAKw5O,SAASlwO,GAAKzG,OAAOvD,GAAG,IAC7CU,EAAKs5O,UAAUr+O,MAAMmF,UAAUzB,MAAM2D,KAAKtC,EAAKwwO,aAAa/sO,OAAO21O,EAASv2O,OAAOvD,KAAKuO,WAAU,GAElG7N,EAAKs5O,UAAUt5O,EAAKwwO,aAAa/sO,OAAO21O,EAASv2O,OAAOvD,KAAI,IAIxEg6O,UAAW,SAASG,EAASC,GAEzB,IADA,IAAI15O,EAAOjI,KACFuH,EAAI,EAAGA,EAAIm6O,EAASl6O,OAAQD,IAC7Bo6O,EACA15O,EAAKyL,QAAQ/R,KAAK,CACdu7E,GAAI,EACJE,GAA0B,IAAtBn1E,EAAKf,QAAQyF,OACjBK,MAAO00O,EAASn6O,KAGpBU,EAAKyL,QAAQ/R,KAAK+/O,EAASn6O,KAIvC45O,kBAAmB,WAIf,IAHA,IAAIvB,EAAM,EACNgC,EAAO,EACPl5O,EAAQ1I,KAAK0I,MAAMkC,MAAM,IAAIkL,UAAUjL,KAAK,IACvCtD,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC1BA,EAAI,EACJq6O,GAAQ3oO,SAASvQ,EAAMoC,OAAOvD,GAAG,IAGjCq4O,GAAO3mO,SAASvQ,EAAMoC,OAAOvD,GAAG,IAIxC,OADgB,IAAO,EAAIq4O,EAAMgC,GAAQ,IAAO,IAGpDH,SAAU,CACN,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJhJ,aAAc,CACV/sO,OAAQ,CACJ,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,GACP,CAAC,EAAE,EAAE,EAAE,IAEX4J,MAAO,CAAC,EAAE,EAAE,GACZ4tJ,OAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,MAIzB+0E,EAAU4J,KAAO5J,EAAUiJ,MAAMn+O,OAAO,CACpC60O,UAAW,SAASlvO,EAAOsE,EAAOL,GAC9B,IAAI1E,EAAOjI,KACX,GAAoB,GAAhB0I,EAAMlB,QAAe,KAAKuF,KAAKrE,GAC/B,MAAM,IAAI+H,MAAM,0BAEpBxI,EAAKS,MAAQA,EACbT,EAAKf,QAAQyF,OAASA,EACtB1E,EAAK0zO,SAAW1zO,EAAKk5O,kBAAkBl5O,EAAKS,OAC5CT,EAAKo5O,SAAWp5O,EAAKS,MAAM8S,OAAO,EAAE,GACpCvT,EAAKq5O,UAAYr5O,EAAKS,MAAM8S,OAAO,GAAKvT,EAAK0zO,SAC7C1zO,EAAKyL,QAAU,GACfzL,EAAK0xK,SAAW3sK,GAAS,GAAK/E,EAAKyvO,oBAI3C,IAAIoK,EAAUpxN,EAAO3tB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS3E,GACnB,IAAIe,EAAOjI,KACX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACnCe,EAAK4D,QAAUlJ,EAAEkJ,GACjB5D,EAAKmE,QAAUnE,EAAK4D,QACpB5D,EAAK4D,QAAQ0Y,SAAS,aAAa3X,IAAI,UAAW,SAClD3E,EAAK85O,YAAcp/O,EAAE,WAAWiK,IAAI,WAAY,YAAYugC,SAASntC,KAAK6L,SAC1E5D,EAAK04E,QAAU60D,EAAKP,QAAQjuF,OAAO/+C,EAAK85O,YAAa,CACjDr8O,KAAMuC,EAAKf,QAAQqvN,WAEvBtuN,EAAK+5O,YAAY96O,GACbA,GAAW8tH,EAAQ9tH,EAAQwB,QAC3BT,EAAK0rM,UAIdpiL,WAAY,SAASrqB,GACjBlH,KAAKgiP,YAAY96O,GACjBlH,KAAK2zM,UAGTA,OAAQ,WACJ,IAAIlkM,EAAOzP,KAAK4sO,WAEhB5sO,KAAK2gF,QAAQ1qB,QACbj2D,KAAK2gF,QAAQ1uD,QAAQ,CACjBjlB,MAAOyC,EAAKzC,MACZL,OAAQ8C,EAAK9C,SAGjB3M,KAAKulK,eACLvlK,KAAK2gF,QAAQ60D,KAAKx1I,KAAKk+I,SAG3BtsH,QAAS,WACL,OAAOjxB,EAAMqxB,WAAWhyB,KAAK6L,UAGjCkmB,QAAS,WACL/xB,KAAK2zM,UAGTpuC,aAAc,WACVvlK,KAAKk+I,OAASl+I,KAAKiiP,WAGvBA,QAAS,WACL,IAUI1rO,EAAQ2rO,EAVRj6O,EAAOjI,KACPkH,EAAUe,EAAKf,QACfwB,EAAQxB,EAAQwB,MAChB0iK,EAAclkK,EAAQ05B,KACtBuhN,EAAar4N,EAAQy1I,WAAW6L,EAAYzyH,QAC5ClpC,EAAOxH,EAAK2kO,WACZnlE,EAASvgK,EAAQugK,QAAU,GAC3By0E,EAAWj0O,EAAKi0O,SAChBt0E,EAAa,IAAI8iB,EAAM,EAAG,EAAGj7K,EAAKzC,MAAOyC,EAAK9C,QAAQ01J,MAAMoF,EAAOz6J,OAAOq1J,MAAMn7J,EAAQ6uI,SACxFqsG,EAAYx6E,EAAWj7J,SAIvBuxI,EAAS,IAAI1I,EAAKhH,MAyBtB,OAvBAvmI,EAAK2/J,WAAaA,EAClB1pB,EAAOnkG,OAAO9xC,EAAKo6O,eAAe5yO,IAE9B27J,EAAY9+J,UAEZ81O,GADa5sG,EAAK7vB,KAAKgO,YAAYjrH,EAAO,CAAEquF,KAAMq0E,EAAYr0E,OAAQpqF,OAC5Cw1O,EAAW/9N,IAAM+9N,EAAWp2N,QAG1DxV,EAAS2lO,EAASpuK,OAAOplE,EAAOk/J,EAAW56J,QAASo1O,GAEhDh3E,EAAY9+J,UACZ41O,EAAgBx5O,EACZxB,EAAQy0O,UAAY3mH,EAAQknH,EAASP,YACrCuG,GAAiB,IAAMhG,EAASP,UAGpCz9F,EAAOnkG,OAAO9xC,EAAKq6O,SAASJ,KAGhCj6O,EAAKm6O,UAAYA,EACjBpiP,KAAKuiP,YAAcviP,KAAKwiP,UAAUjsO,EAAO7C,QAAS6C,EAAOojK,UACzDz7B,EAAOnkG,OAAO/5C,KAAKuiP,aAEZrkG,GAGX/I,aAAc,WACV,OAAOn1I,KAAKiiP,WAGhBrV,SAAU,WACN,IAAI3kO,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf4D,EAAO,IAAIo5N,EAAK5tG,KA3jDR,IACC,KAykDb,OAbIpvH,EAAQmB,QAAU,IAClByC,EAAKzC,MAAQnB,EAAQmB,SAErBnB,EAAQc,SAAW,IACnB8C,EAAK9C,OAASd,EAAQc,UAEtB1E,EAAKf,QAAQ8F,QACdyC,EAAKzC,MAAQ/E,EAAKf,QAAQ8F,OAEzB/E,EAAKf,QAAQyF,SACd8C,EAAK9C,OAAS1E,EAAKf,QAAQyF,QAGvB8C,GAGX/G,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACX,IAAKg1H,EAAQtsH,GACT,OAAOT,EAAKf,QAAQwB,MAExBT,EAAKf,QAAQwB,MAAQA,EAAQ,GAC7BT,EAAK0rM,UAGT6uC,UAAW,SAAS9uO,EAASimK,GAQzB,IAPA,IAGIjnI,EACA1D,EAJA/mC,EAAOjI,KACP4nK,EAAa3/J,EAAK2/J,WAClB96J,EAAW86J,EAAW3qF,GAItB/oB,EAAQ,IAAIshF,EAAKhH,MACZjnI,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAAK,CASrC,GAFAmrC,GANA1D,EAAOrnC,EAAc+L,EAAQnM,IAAMmM,EAAQnM,GAAK,CAC5CyF,MAAO0G,EAAQnM,GACf21E,GAAI,EACJE,GAAIn1E,EAAKm6O,YAGDp1O,MAAQ2sK,EAEhBpyK,EAAI,EAAG,CACP,IAAI8jF,EAAOw9I,EAAK3tG,KAAKe,WACjB,IAAI4sG,EAAK7uG,MAAMltH,EAAUkiC,EAAKkuC,GAAK0qF,EAAW1qF,IAC9C,IAAI2rJ,EAAK7uG,MAAMltH,EAAW4lC,EAAM1D,EAAKouC,GAAKwqF,EAAW1qF,KAGrD9tC,EAAOomG,EAAKlJ,KAAKc,SAAS/hD,EAAM,CAChCp4D,KAAM,CACFm8F,MAAOnnH,EAAKf,QAAQkoH,OAExByO,OAAQ,OAGZ3pE,EAAMna,OAAO3K,GAGjBtiC,GAAY4lC,EAGhB,OAAOwhB,GAGXmuL,eAAgB,SAAS5yO,GACrB,IACIvI,EADOlH,KACQkH,QACfugK,EAASvgK,EAAQugK,QAAU,GAE3BvuH,EAAM,IAAIwxI,EAAM,EAAE,EAAGj7K,EAAKzC,MAAOyC,EAAK9C,QAAQ01J,MAAMoF,EAAOz6J,MAAQ,GAYvE,OAXWwoI,EAAKlJ,KAAKc,SAASl0F,EAAI2pH,SAAU,CACxC5vI,KAAM,CACFm8F,MAAOloH,EAAQ+qJ,YAEnBp0B,OAAQ,CACJzO,MAAOq4C,EAAOz6J,MAAQy6J,EAAOr4C,MAAQ,GACrCpiH,MAAOy6J,EAAOz6J,MACdgvI,SAAUyrB,EAAOzrB,aAO7BsmG,SAAU,SAAS55O,GACf,IAAIT,EAAOjI,KACPorK,EAAcnjK,EAAKf,QAAQ05B,KAC3BA,EAAO34B,EAAKw6O,SAAW,IAAIz3E,EAAQtiK,EAAO,CACtCquF,KAAMq0E,EAAYr0E,KAClBq4B,MAAOg8C,EAAYh8C,MACnB6f,MAAO,SACPooB,OAAQ,SACR1+G,OAAQyyH,EAAYzyH,SAM5B,OAHA/X,EAAKwvG,OAAOnoI,EAAK2/J,YACjBhnI,EAAK0kI,eAEE1kI,EAAKs9G,QAGhB8jG,YAAa,SAAS96O,GAClB,IAAIe,EAAOjI,KAaX,GAZAiI,EAAKvC,MAAQwB,EAAQxB,MAAQuC,EAAKf,QAAQxB,MAAM4S,cAE/B,QAAbrQ,EAAKvC,OACLuC,EAAKvC,KAAO,QACZwB,EAAQwB,MAAQ,IAAMxB,EAAQwB,OAGjB,QAAbT,EAAKvC,OACLuC,EAAKvC,KAAO,OACZwB,EAAQwB,MAAQ,IAAMxB,EAAQwB,QAG7BuvO,EAAUhwO,EAAKvC,MAChB,MAAM,IAAI+K,MAAM,YAAcxI,EAAKvC,KAAO,qBAG9CuC,EAAKi0O,SAAW,IAAIjE,EAAUhwO,EAAKvC,MAEnCuC,EAAKf,QAAUnE,GAAO,EAAMkF,EAAKf,QAASA,IAG9CA,QAAS,CACL9E,KAAM,UACNm0N,SAAU,MACV7tN,MAAO,GACPhD,KAAM,SACNi2O,UAAU,EACV3uO,MAAO,EACPL,OAAQ,EACRyiH,MAAO,QACP6iC,WAAY,QACZrxH,KAAM,CACFt0B,SAAS,EACTyqF,KAAM,0DACNq4B,MAAO,QACPz2E,OAAQ,CACJv0B,IAAK,EACL2H,OAAQ,EACRF,KAAM,EACNC,MAAO,IAGf27I,OAAQ,CACJz6J,MAAO,EACPgvI,SAAU,QACV5sB,MAAO,SAEX2mB,QAAS,CACL3xH,IAAK,EACL2H,OAAQ,EACRF,KAAM,EACNC,MAAO,MAInBhC,EAAQugK,YAAYtnL,OAAO++O,EAAQ/5O,IAEnC+hB,EAAQH,GAAGqN,OAAO8qN,GAElBnhP,EAAM6H,WAAWshB,EAAS,CACtBmuN,UAAWA,EACXR,SAAUA,IAjvDlB,CAovDG32O,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfoC,EAASJ,EAAEI,OACXyyI,EAAO70I,EAAMopB,QACbD,EAAUnpB,EAAMmpB,QAChB4G,EAAS/vB,EAAMgpB,GAAG+G,OAClBg6J,EAAQ5gK,EAAQ4gK,MAChBg4D,EAAa,OACbC,EAAU,UACVC,EAAgB,eAChBC,EAAO,OACPC,EAAc,CAAE,EAAK,GACrBC,EAAoB,CAAE,EAAK,GAC3BC,EAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IACpCC,EAA0C,CAAE,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,GAAG,GAAI,IACzJC,EAA+B,CAAC,CAAE3+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,GAAI9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI25M,mBAAoB,EAAEC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI25M,mBAAoB,GAAGC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,GAAGC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,IAAIC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,IAAIC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,KAAO,CAAE7+O,EAAG,CAAEilC,OAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM25M,mBAAoB,KAAKC,uBAAwB,IAAK9+O,EAAG,CAAEklC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAK/+O,EAAG,CAAEmlC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,IAAKv+O,EAAG,CAAE2kC,OAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK25M,mBAAoB,KAAKC,uBAAwB,MAC/9ZC,EAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,GACzBC,EAAmB,CAAC,EAAE,EAAE,GACxBC,EAA0B,CAAEh/O,EAAG,KAAMD,EAAG,KAAMD,EAAG,KAAMQ,EAAG,MAI1D2+O,EAAmB,CAAC,WAAY,YAEhCC,EAAwB,CACpB,SAASvxD,EAAI7F,GAAS,OAAQ6F,EAAM7F,GAAU,GAAM,GACpD,SAAS6F,GAAM,OAAOA,EAAM,GAAM,GAClC,SAASA,EAAI7F,GAAS,OAAOA,EAAS,GAAM,GAC5C,SAAS6F,EAAI7F,GAAS,OAAQ6F,EAAM7F,GAAU,GAAM,GACpD,SAAS6F,EAAI7F,GAAS,OAAQhpL,KAAKkN,MAAM2hL,EAAM,GAAK7uL,KAAKkN,MAAM87K,EAAS,IAAM,GAAM,GACpF,SAAS6F,EAAI7F,GAAS,OAAS6F,EAAM7F,EAAU,EAAO6F,EAAM7F,EAAU,GAAO,GAC7E,SAAS6F,EAAI7F,GAAS,OAAU6F,EAAM7F,EAAU,EAAO6F,EAAM7F,EAAU,GAAM,GAAM,GACnF,SAAS6F,EAAI7F,GAAS,QAAU6F,EAAM7F,GAAU,EAAO6F,EAAM7F,EAAU,GAAM,GAAM,IAEvFirD,EAAc,OAGdoM,EAAa,IAAIz1O,OAAO,oBACxB01O,EAAoB,IAAI11O,OAAO,uBAC/B21O,EAAY,IAAI31O,OAAO,wBAOvB8H,EAAQ1S,KAAK0S,MAGb8tO,EAAe,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IACjFC,EAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAGhC,SAASC,EAAUr7O,GACf,OAAOuQ,SAASvQ,EAAO,GAG3B,SAASs7O,EAAat7O,EAAOlB,GACzB,IAAI+O,EAASjE,OAAO5J,GAAOwI,SAAS,GAIpC,OAHIqF,EAAO/O,OAASA,IAChB+O,EAAS,IAAIrT,MAAMsE,EAAS+O,EAAO/O,OAAS,GAAGqD,KAAK,GAAK0L,GAEtDA,EAGX,SAAS0tO,EAAUr1O,EAAKkiH,GAGpB,IAFA,IAAIv6G,EAAS,GACT3M,EAAM,EACHA,EAAMgF,EAAIpH,QACb+O,EAAO5U,KAAKiN,EAAI5D,UAAUpB,EAAKA,EAAMknH,IACrClnH,GAAOknH,EAEX,OAAOv6G,EAGX,IAAI2tO,EAAavjP,EAAMiH,MAAM7E,OAAO,CAChCohP,gBAAiB,SAAS3hP,GACtB,OAAIA,EAAU,GACH,EAEFA,EAAU,GACR,EAGJ,GAEX4hP,sBAAuB,SAAS5hP,GAE5B,OADWxC,KACCqkP,qBADDrkP,KAC2BmkP,gBAAgB3hP,GAAW,MAErE8hP,mBAAoB,SAAS98O,EAAQhF,GAEjC,OADWxC,KACCukP,cAAgBP,EAAax8O,EAD9BxH,KAC2CokP,sBAAsB5hP,KAEhFsrE,OAAQ,aACR02K,oBAAqB,aACrBzgE,SAAU,aACVwgE,cAAe,GACfF,qBAAsB,KAGtBI,EAAQ,GACZA,EAAa,QAAIP,EAAWnhP,OAAO,CAC/BshP,qBAAsB,CAAC,GAAI,GAAI,IAC/BE,cAAe,OACfxgE,SAAU,SAASi0D,GACf,OAAO/+N,SAAS++N,EAAW,KAE/BlqK,OAAQ,SAASl/D,EAAKpM,GAKlB,IAJA,IACIwN,EAAQi0O,EAAUr1O,EAAK,GACvB2H,EAFOvW,KAEOskP,mBAAmB11O,EAAIpH,OAAQhF,GAExC+E,EAAI,EAAGA,EAAIyI,EAAMxI,OAAS,EAAGD,IAClCgP,GAAUytO,EAAah0O,EAAMzI,GAAI,IAErC,OAAOgP,EAASytO,EAAah0O,EAAMzI,GAAI,EAAI,EAAIyI,EAAMzI,GAAGC,SAE5Dg9O,oBAAqB,SAASE,EAAaliP,GACvC,IAAImiP,EAAOD,EAAc,EACzB,OAAO,EAAI1kP,KAAKokP,sBAAsB5hP,GAAW,GAAKa,KAAKkN,MAAMm0O,EAAc,GAAK,EAAIC,GAAiB,IAATA,EAAa,EAAI,MAIzHF,EAAmB,aAAIP,EAAWnhP,OAAO,CACrC6hP,WAAY,CAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAE,EAAK,EAAExK,EAAK,GAAGF,EAAK,GAAGG,EAAK,GAAG1lO,EAAK,GAAGlQ,EAAK,GAAGmQ,EAAK,GAAG1Q,EAAK,GAAGW,EAAK,GAAGy1O,EAAK,GAAGC,EAAK,GAAGx1O,EAAK,GAAGR,EAAK,GAAGD,EAAK,GAAGk2O,EAAK,GAAGC,EAAK,GAAGC,EAAK,GAAGr2O,EAAK,GAAGs2O,EAAK,GAAGC,EAAK,GAAG9lO,EAAK,GAAG+lO,EAAK,GAAGC,EAAK,GAAGX,EAAK,GAAG90O,EAAK,GAAG2P,EAAK,GAAGzP,EAAK,GAAG,IAAK,GAAG5C,EAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,IACzW0hP,qBAAsB,CAAC,EAAE,GAAG,IAC5BE,cAAe,OACfxgE,SAAU,SAASi0D,GACf,OAAOh4O,KAAK4kP,WAAW5M,IAE3BlqK,OAAQ,SAASl/D,EAAKpM,GAKlB,IAJA,IAAIqiP,EAAO7kP,KACPgQ,EAAQi0O,EAAUr1O,EAAK,GACvB2H,EAASsuO,EAAKP,mBAAmB11O,EAAIpH,OAAQhF,GAExC+E,EAAI,EAAGA,EAAIyI,EAAMxI,OAAS,EAAGD,IAElCgP,GAAUytO,EADF,GAAKa,EAAK9gE,SAAS/zK,EAAMzI,GAAGuD,OAAO,IAAM+5O,EAAK9gE,SAAS/zK,EAAMzI,GAAGuD,OAAO,IACjD,IAKlC,OAAOyL,EAASytO,EAHW,GAAnBh0O,EAAMzI,GAAGC,OACb,GAAKq9O,EAAK9gE,SAAS/zK,EAAMzI,GAAGuD,OAAO,IAAM+5O,EAAK9gE,SAAS/zK,EAAMzI,GAAGuD,OAAO,IACvE+5O,EAAK9gE,SAAS/zK,EAAMzI,GAAGuD,OAAO,IACE,EAAI,EAAIkF,EAAMzI,GAAGC,SAEzDg9O,oBAAqB,SAASE,EAAaliP,GACvC,OAAO,EAAIxC,KAAKokP,sBAAsB5hP,GAAW,GAAKa,KAAKkN,MAAMm0O,EAAc,GAAUA,EAAc,EAAnB,KAI5FD,EAAU,KAAIP,EAAWnhP,OAAO,CAC5BshP,qBAAsB,CAAC,EAAE,GAAG,IAC5BE,cAAe,OACfxgE,SAAU,SAASi0D,GACf,IAAI3vL,EAAO2vL,EAAU1mO,WAAW,GAChC,GAAI+2C,GAAQ,KAAQ,KAAOA,GAAQA,GAAQ,IACvC,OAAOA,EAGP,MAAM,IAAI53C,MAAM,0BAA4BunO,IAGpDlqK,OAAQ,SAASl/D,EAAKpM,GAIlB,IAHA,IACI+T,EADOvW,KACOskP,mBAAmB11O,EAAIpH,OAAQhF,GAExC+E,EAAI,EAAGA,EAAIqH,EAAIpH,OAAQD,IAC5BgP,GAAUytO,EAJHhkP,KAIqB+jL,SAASn1K,EAAI9D,OAAOvD,IAAK,GAEzD,OAAOgP,GAEXiuO,oBAAqB,SAASE,EAAaliP,GACvC,OAAO,EAAIxC,KAAKokP,sBAAsB5hP,GAAW,EAAIkiP,KAI7D,IAAII,EAAgB,GACpB,IAAK,IAAID,KAAQJ,EACbK,EAAcD,GAAQ,IAAIJ,EAAMI,GAGpC,IAAIE,EAAkB,SAAS9sH,GAC3B,IAAIhwH,EAAOjI,KACPkyL,EAAMj6D,EAAOzwH,OAAS,EACtB6kL,EAASp0D,EAAOzwH,OAAS,EACzBw9O,EAAc34D,EACdhtJ,GAAO,EACP36B,EAAI,EACRuD,EAAKsyB,KAAO,WACR23J,GAAO7yJ,EAAM36B,EAEb2nL,EAAS24D,GADTtgP,GAAK,IAGTuD,EAAKg9O,YAAc,WACf,KAAOhtH,EAAOi6D,GAAK7F,KAAYzpL,GAC3BqF,EAAKsyB,QACD23J,EAAM,GAAKA,GAAOj6D,EAAOzwH,UAGzB6kL,EADA24D,GAA8B,GAAfA,EAAmB,EAAI,EAEtC9yD,GAHA7yJ,GAAOA,GAGK,EAAI44F,EAAOzwH,OAAS,EAAI,GAG5C,MAAO,CAAE0qL,IAAKA,EAAK7F,OAAQA,IAE/BpkL,EAAKi9O,qBAAuB,WAExB,GADAj9O,EAAKsyB,OACD09F,EAAOi6D,GAAK7F,KAAYzpL,EACvB,MAAO,CAAEsvL,IAAKA,EAAK7F,OAAQA,KAKxC,SAAS84D,EAAiBC,EAAUC,EAAKjgP,EAAGjB,GACxC,IAAK,IAAIoD,EAAI,EAAGA,EAAI69O,EAAS59O,OAAQD,IACjC69O,EAAS79O,GAAGnC,GAAGjB,GAAKkhP,EAI5B,SAASC,EAAaF,EAAUC,EAAKjgP,EAAGjB,GACpC,IAAK,IAAIoD,EAAI,EAAGA,EAAIk8O,EAAsBj8O,OAAQD,IAC9C69O,EAAS79O,GAAGnC,GAAGjB,GAAKs/O,EAAsBl8O,GAAGnC,EAAEjB,GAAW,EAANkhP,EAAUpsO,SAASosO,EAAK,IAIpF,IAAIE,EAAW,SAASH,EAAUI,GAM9B,IALA,IACIC,EACAC,EACAr8K,EAHAs8K,EAAc,IAAIZ,EAAgBK,EAAS,IAKtCQ,EAAW,EAAGA,EAAWJ,EAAOh+O,OAAQo+O,IAG7C,IAFAH,EAAQD,EAAOI,GACfF,EAAc,EACPD,EAAMj+O,OAAS,GAAG,CACrB,IAAK,IAAID,EAAI,EAAGA,EAAIk+O,EAAMj+O,OAAQD,IAC7B,IAAK,IAAIojC,EAAI,EAAGA,EAAI,EAAGA,IACpB0+B,EAAOs8K,EAAYV,cACnBK,EAAaF,EAAUK,EAAMl+O,GAAGm+O,GAAa56O,OAAO6/B,GAAI0+B,EAAK6oH,IAAK7oH,EAAKgjH,QAK/E,IADAq5D,IACOD,EAAM,IAAMC,GAAeD,EAAM,GAAGj+O,QACvCi+O,EAAMj7O,OAAO,EAAE,GAK3B,KAAQ6+D,EAAOs8K,EAAYT,wBACvBI,EAAaF,EAAU,EAAG/7K,EAAK6oH,IAAK7oH,EAAKgjH,SAI7Cw5D,EAAgB,SAASC,EAAY3C,GAIrC,IAHA,IAAI4C,EAAqC,EAArB5C,EAChB6C,EAAkB,EAClBC,EAAuB,EACpBH,EAAWt+O,OAASu+O,GAAiBC,EAAkBtD,EAAWl7O,QACrEs+O,GAAcpD,EAAW53O,OAAOk7O,KAOpC,IAJIF,EAAWt+O,OAAS,GAAM,IAC1Bs+O,GAAc,IAAI5iP,MAAM,EAAI4iP,EAAWt+O,OAAS,GAAGqD,KAAK,MAGrDi7O,EAAWt+O,OAASu+O,GACvBD,GAActC,EAAiByC,GAC/BA,GAAwB,EAE5B,OAAOH,GAqBX,IAAII,EAAiB,SAAS9gP,EAAEjB,GAG5B,IAFA,IAAIoS,EAAS,GAEJhP,EADCnC,EAAEoC,OAAS,EACHD,GAAK,EAAGA,IACrBgP,EAAOhP,GAAKnC,EAAEmC,GAAKpD,EAAEoD,GAG1B,OAAOgP,GAGP4vO,EAAsB,SAAS/gP,EAAGjB,GAElC,IADA,IAAIoS,EAAS,GACJhP,EAAI,EAAGA,EAAInC,EAAEoC,OAAQD,IAC1B,IAAK,IAAIojC,EAAI,EAAGA,EAAIxmC,EAAEqD,OAAQmjC,IACtBp0B,EAAOhP,EAAIojC,KAAO/nC,EACjB2T,EAAOhP,EAAIojC,IAAMvlC,EAAEmC,IAAMpD,EAAEwmC,IAAM,EAAIxmC,EAAEwmC,GAAK,IAAM,IAGpDp0B,EAAOhP,EAAIojC,GAAKm4M,EAAYC,EAAkBxsO,EAAOhP,EAAIojC,IAAMo4M,GAAmB39O,EAAEmC,GAAKpD,EAAEwmC,IAAM,MAK5G,OAAOp0B,GAgBX,SAAS6vO,EAAmBx/G,EAAY3P,GACpC,IAAI1gH,EAAS,GACT3M,EAAMg9H,EAAWp/H,OAAS,EAC9B,GACI+O,EAAO3M,GAAOm5O,GAAmBn8G,EAAWh9H,GAAOqtH,GAAS,KAC5DrtH,UACKg9H,EAAWh9H,KAAShH,GAE7B,OAAO2T,GAjEX,WAEI,IADA,IAAIA,EACK0gH,EAAQ,EAAGA,EAAQ,IAAKA,KAE7B1gH,EAAwC,EAA/BwsO,EAAkB9rH,EAAQ,IACtB,MACT1gH,GAAkB,KAGtBwsO,EAAkB9rH,GAAS1gH,EAC3BusO,EAAYvsO,GAAU0gH,EAG1B1gH,EAAyC,EAA/BwsO,EAAkB9rH,EAAQ,GAAU,IAC9C8rH,EAAkB9rH,GAAS1gH,EAC3BwsO,GAAmB,GAAK,EAuC5BsD,GAVA,WAEI,IADA,IACSz8O,EAAM,EAAGA,GADqB,GACoBA,IAAO,CAC9D,IAAI08O,EAAkBtD,EAAqBp5O,EAAM,GAC7C28O,EAAmB,CAAC38O,EAAK,GAC7Bo5O,EAAqBp5O,GAAOu8O,EAAoBG,EAAiBC,IAMzEC,GAaA,IAAIC,EAAyB,SAAS54O,EAAM64O,GACxC,IAKIpuM,EACA1uC,EANA+8O,EAAY3D,EAAqB0D,EAAsB,GACvDnwO,EAAS,IAAIrT,MAAMwjP,GAAqBrpO,OAAOxP,GAC/C+4O,EAAsB,IAAI1jP,MAAMqT,EAAO/O,OAASm/O,EAAUn/O,QAAQ6V,OAAOspO,GACzEE,EAAQh5O,EAAKrG,OACbs/O,EAAiB,GAIrB,IAAKl9O,EAAM,EAAGA,EAAMi9O,EAAOj9O,IACvB0uC,EAAU8tM,EAAmBQ,EAAqB9D,EAAYvsO,EAAOA,EAAO/O,OAAS,KACrFo/O,EAAoBp8O,OAAO,EAAE,GAE7B+L,EAAS2vO,EAAe5tM,EAAS/hC,GAGrC,IAAK3M,EAAM2M,EAAO/O,OAAS,EAAGoC,GAAO,EAAGA,IACpCk9O,EAAeJ,EAAsB,EAAI98O,GAAOo6O,EAAaztO,EAAO3M,GAAM,GAG9E,OAAOk9O,GAGPC,EAAY,SAASC,EAAYC,GAWjC,IAVA,IAGIC,EAEAC,EACAC,EACAC,EACAC,EARAC,EAAgB,EAChBC,EAAa,GACbC,EAAc,GAEdC,EAAgBT,EAA4Bz9M,OAMvCsnG,EAAW,EAAGA,EAAW42G,EAAclgP,OAAQspI,IAAY,CAChEs2G,EAAmBM,EAAc52G,GAAU,GAC3C,IAAK,IAAI80G,EAAW,EAAGA,EAAWwB,EAAkBxB,IAAY,CAC5DuB,EAAsBO,EAAc52G,GAAU,GAC9Co2G,EAAY,GACZG,EAAoB,GACpB,IAAK,IAAI3B,EAAc,EAAGA,GAAeyB,EAAqBzB,IAC1D4B,EAAWN,EAAWh8O,UAAUu8O,EAAeA,EAAgB,GAC/DL,EAAUvlP,KAAK2lP,GACfD,EAAkBF,EAAsBzB,GAAe3B,EAAUuD,GACjEC,GAAiB,EAErBC,EAAW7lP,KAAKulP,GAChBO,EAAY9lP,KAAK8kP,EAAuBY,EACpCJ,EAA4B7D,0BAGxC,MAAO,CAACoE,EAAYC,IAGpBE,EAAa,SAAS/4O,EAAKg5O,EAAuBC,EAAsBC,EAAoBC,GAC3F,IAMGlD,EACAmD,EAPCC,EAAU3Q,EAAYj/N,KAAKzJ,GAC5Bs5O,EAAeD,EAAUA,EAAQ,GAAK,GACtCp3H,EAAQ6yH,EAAWrrO,KAAKzJ,GACxBu5O,EAAat3H,EAAQA,EAAM,GAAK,GAChCu3H,EAAezE,EAAkBtrO,KAAKzJ,GACtCy5O,EAAoBD,EAAeA,EAAa,GAAK,GAyBxD,OArBIF,IAAiBA,EAAa1gP,QAAUogP,GACpCh5O,EAAIpH,QAAU0gP,EAAa1gP,QAAW0gP,EAAa1gP,QAAUqgP,IAC5DlE,EAAkB52O,KAAK6B,EAAI9D,OAAOo9O,EAAa1gP,WACrDq9O,EAAOlC,EACPqF,EAAaE,GAEPG,IAAsBz5O,EAAIpH,QAAU6gP,EAAkB7gP,QAC5D6gP,EAAkB7gP,QAAUsgP,GAAsBC,GAAgBnF,IAClEiC,EAAOjC,EACPoF,EAAaE,GAAgBC,IAG7BtD,EAAOhC,EAEHmF,EADAK,EACaA,EAAoBzE,EAAUvrO,KAAKzJ,EAAI5D,UAAUq9O,EAAkB7gP,SAAS,GAG5Eo8O,EAAUvrO,KAAKzJ,GAAK,IAIjC,CACJi2O,KAAMA,EACNmD,WAAYA,IAIhBM,EAAW,SAAS15O,GACpB,IACIm5O,EADAtD,EAAQ,GAER76O,EAAM,EAKV,IAJA66O,EAAM9iP,KAAKgmP,EAAW/4O,EA5YE,EACD,EACF,EA0YmFm5O,IACxGA,EAAetD,EAAM,GAAGI,KACxBj2O,EAAMA,EAAI4M,OAAOipO,EAAM,GAAGuD,WAAWxgP,QAE9BoH,EAAIpH,OAAS,GAAG,CACpB,IAAI+gP,EAAWZ,EAAW/4O,EA9YT,GACD,EACF,GA4YkFm5O,GAC5FQ,EAAS1D,MAAQkD,GAChBA,EAAeQ,EAAS1D,KACxBJ,EAAM9iP,KAAK4mP,GACX3+O,KAGA66O,EAAM76O,GAAKo+O,YAAcO,EAASP,WAEvCp5O,EAAMA,EAAI4M,OAAO+sO,EAASP,WAAWxgP,QAGxC,OAAOi9O,GAGP+D,EAAwB,SAAS/D,GAGjC,IAFA,IAAIj9O,EAAS,EAEJD,EAAI,EAAGA,EAAIk9O,EAAMj9O,OAAQD,IAE9BC,GADOs9O,EAAcL,EAAMl9O,GAAGs9O,MACfL,oBAAoBC,EAAMl9O,GAAGygP,WAAWxgP,QAG3D,OAAOnE,KAAK4iE,KAAKz+D,EAAS,IAG1BihP,EAAa,SAASC,EAAoBC,GAC1C,IAAIvjP,EAAI,EACJjB,EAAI++O,EAA6B17O,OAAS,EAC1ChF,EAAUa,KAAKkN,MAAM2yO,EAA6B17O,OAAS,GAE/D,GACQkhP,EAAqBxF,EAA6B1gP,GAASmmP,GAAsBxF,mBACjFh/O,EAAI3B,EAGJ4C,EAAI5C,EAERA,EAAU4C,EAAI/B,KAAKkN,OAAOpM,EAAIiB,GAAK,SAE9BjB,EAAIiB,EAAI,GAEjB,OAAIsjP,GAAsBxF,EAA6B99O,GAAGujP,GAAsBxF,mBACrE3gP,EAAU,EAEd2B,EAAI,GAGXykP,EAAgB,SAASnE,EAAOjiP,GAGhC,IAFA,IAAIsjP,EAAa,GAERv+O,EAAI,EAAGA,EAAIk9O,EAAMj9O,OAAQD,IAE9Bu+O,GADOhB,EAAcL,EAAMl9O,GAAGs9O,MACX/2K,OAAO22K,EAAMl9O,GAAGygP,WAAYxlP,GAGnD,OAAOsjP,GAIP+C,EAA0B,SAASn4O,GACnC,IACIo4O,EACAvyO,EAAS,GACb,GAAqB,IAHFwtO,EAAUrzO,GAIzB,MAAO,kBAGPo4O,EAAgBC,EAAUhF,EAAUrzO,GAzehB,cAyeoD,IAE5E,IAAK,IAAInJ,EAAI,EAAGA,EAAIuhP,EAActhP,OAAQD,IACtCgP,GAAUuyO,EAAch+O,OAAOvD,GA7enB,kBA6e0CuD,OAAOvD,GAGjE,OAAOgP,GAGPwyO,EAAY,SAASrgP,EAAOk+O,EAAqBoC,GACjD,IAAIC,EAAkBlF,EAAU6C,GAC5BsC,EAAmBtC,EAAoBp/O,OAAS,EAChD2hP,EAAczgP,GAASwgP,EAEvBE,EAAcpF,EAAat7O,EADlBsgP,EAAaE,GAEtB3yO,EAAS8yO,EAAkBF,EAAaF,GAE5C,OADA1yO,EAAS6yO,EAAcpF,EAAaztO,EAAQ2yO,IAI5CG,EAAoB,SAASC,EAAQC,GACjC,IAAIC,EAAUD,EAAQr4O,SAAS,GAAG1J,OAC9BiiP,EAAUH,EAAQp4O,SAAS,GAAG1J,OAClC,GAEIiiP,GADAH,GAAWC,GAAWE,EAAUD,GACdt4O,SAAS,GAAG1J,aAE3BiiP,GAAWD,GAElB,OAAOF,GAGf,SAASI,GAAY96O,EAAKhF,GACtB,OAAOqP,SAASrK,EAAI9D,OAAOlB,GAAM,IAGrC,IAAI+/O,GAAe,SAASnnP,GAGxB,IAFA,IAAI4iP,EAAW,GACXwE,EAAU,GAAK,EAAIpnP,EACd+E,EAAI,EAAGA,EAAIk8O,EAAsBj8O,OAAQD,IAAK,CACnD69O,EAAS79O,GAAK,IAAIrE,MAAM0mP,GACxB,IAAK,IAAIj/M,EAAI,EAAGA,EAAIi/M,EAASj/M,IACzBy6M,EAAS79O,GAAGojC,GAAK,IAAIznC,MAAM0mP,GAInC,OAAOxE,GAGPyE,GAAuB,SAASzE,EAAU92E,GAC1C,IACIlpK,EACAjB,EAFA8zH,EAASmtH,EAAS,GAGlBx7O,EAAM,EACNpC,EAAS8mK,EAAa9mK,OAE1B,IAAKpC,EAAI,EAAGjB,EAAI,EAAGiB,GAAK,EAAGA,IACb,IAANA,GACA+/O,EAAiBC,EAAUsE,GAAYp7E,EAAc9mK,EAAS,EAAIoC,KAAQxE,EAAGjB,GAIrF,IAAKiB,EAAI,EAAGjB,EAAI,EAAGA,GAAK,EAAGA,IACb,IAANA,GACAghP,EAAiBC,EAAUsE,GAAYp7E,EAAc9mK,EAAS,EAAIoC,KAAQxE,EAAGjB,GAIrF,IADAyF,EAAM,EACDzF,EAAI8zH,EAAOzwH,OAAS,EAAGpC,EAAI,EAAGjB,GAAK8zH,EAAOzwH,OAAS,EAAGrD,IACvDghP,EAAiBC,EAASsE,GAAYp7E,EAAc9mK,EAAS,EAAIoC,KAAQxE,EAAGjB,GAKhF,IAFAghP,EAAiBC,EAAU,EAAGntH,EAAOzwH,OAAS,EAAG,GAE5CpC,EAAI6yH,EAAOzwH,OAAS,EAAGrD,EAAI,EAAGiB,EAAI6yH,EAAOzwH,OAAQpC,IAClD+/O,EAAiBC,EAAUsE,GAAYp7E,EAAc9mK,EAAS,EAAIoC,KAAQxE,EAAGjB,IAIjF2lP,GAA2B,SAAStnP,GACpC,OAAOumP,EAAUvmP,EAxjBQ,gBAwjB6B,KAGtDunP,GAAwB,SAAS3E,EAAUU,GAW3C,IAVA,IAMIkE,EACAC,EACAvhP,EAPAkhP,EADSxE,EAAS,GACD59O,OAEjB01E,EAAK0sK,EAAU,GACfzsK,EAAKysK,EAAU,GAMVhgP,EAAM,EAAGA,EAAMk8O,EAAWt+O,OAAQoC,IACvCogP,EAAW3mP,KAAKkN,MAAM3G,EAAM,GAC5BqgP,EAAMrgP,EAAM,EAEZu7O,EAAiBC,EADjB18O,EAAQghP,GAAY5D,EAAYA,EAAWt+O,OAASoC,EAAM,GAXrD,EAYkCogP,EAAU9sK,EAAK+sK,GACtD9E,EAAiBC,EAAU18O,EAAOy0E,EAAK8sK,EAVlC,EAU4CD,IAIrDE,GAAoB,SAAS9E,EAAU1xO,EAAStO,EAAGjB,GAKnD,IAJA,IAEIuE,EAFA+G,EAAOiE,EAAQlM,OAAS,EACxBA,EAASkM,EAAQlM,OAAS,EAGrBD,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAChC,IAAK,IAAIojC,EAAIpjC,EAAGojC,EAAIl7B,EAAOlI,EAAGojC,IAE1Bw6M,EAAiBC,EADjB18O,EAAQgL,EAAQnM,GACkBnC,EAAIulC,EAAGxmC,EAAIoD,GAC7C49O,EAAiBC,EAAU18O,EAAOtD,EAAImC,EAAGpD,EAAIwmC,GAC7Cw6M,EAAiBC,EAAU18O,EAAOtD,EAAIoC,EAASmjC,EAAGxmC,EAAIqD,EAASD,GAC/D49O,EAAiBC,EAAU18O,EAAOtD,EAAIoC,EAASD,EAAGpD,EAAIqD,EAASmjC,IAKvEw/M,GAAqB,SAAS/E,EAAUnxM,EAAW7uC,EAAGjB,GACtD,IAAIimP,EAAQhlP,EACRilP,EAAQlmP,EACR8zH,EAASmtH,EAAS,GACtB,GACID,EAAiBC,EAAU,EAAGgF,EAAOjmP,GACrCghP,EAAiBC,EAAU,EAAGhgP,EAAGilP,GACjCD,GAASn2M,EAAU,GACnBo2M,GAASp2M,EAAU,SAEhBm2M,GAAS,GAAKA,EAAQnyH,EAAOzwH,SAGpC8iP,GAAoB,SAASlF,GAC7B,IAAIwE,EAAUxE,EAAS,GAAG59O,OAC1B0iP,GAAkB9E,EAAU/B,EAAe,EAAG,GAC9C8G,GAAmB/E,EAAU,EAAE,GAAG,GAAI,EAAE,GACxC8E,GAAkB9E,EAAU/B,EAAeuG,EAAU,EAAG,GACxDO,GAAmB/E,EAAU,CAAC,GAAG,GAAIwE,EAAU,EAAG,GAClDM,GAAkB9E,EAAU/B,EAAe,EAAIuG,EAAU,GACzDO,GAAmB/E,EAAU,EAAE,EAAE,GAAG,EAAGwE,EAAU,IAGjDW,GAAuB,SAASnF,EAAU5iP,GAC1C,KAAIA,EAAU,GAAd,CAIA,IAIIgoP,EACAhtK,EALAy6C,EAASmtH,EAAS,GAClBwE,EAAU3xH,EAAOzwH,OACjBskM,EAAczoM,KAAKkN,MAAM/N,EAAU,GACnC6+H,EAAS,CAAC,GAGVz3H,EAAM,EASV,KAPK4gP,EAAgBvH,EAAwCzgP,IACzDg7E,GAAYosK,EAAU,GAAKY,GAAiB1+C,EAG5C0+C,EAAgBhtK,GAAYosK,EAAU,KAAO99C,EAAc,GAE/DzqE,EAAO1/H,KAAK0/H,EAAOz3H,KAAS4gP,GACpBnpH,EAAOz3H,GAAO4zE,EAAYosK,GAC9BvoH,EAAO1/H,KAAK0/H,EAAOz3H,KAAS4zE,GAEhC,IAAK,IAAIj2E,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAC/B,IAAK,IAAIojC,EAAI,EAAGA,EAAI02F,EAAO75H,OAAQmjC,IAC3BstF,EAAOoJ,EAAO95H,IAAI85H,EAAO12F,MAAQ/nC,GACjCsnP,GAAkB9E,EAAU9B,EAAkBjiH,EAAO95H,GAAK,EAAG85H,EAAO12F,GAAK,KAMrF8/M,GAAqB,SAASrF,GAK9B,IAJA,IAEI18O,EAAQ,EACRkhP,EAAUxE,EAAS,GAAG59O,OACjBD,EAAI,EAAGA,EAAIqiP,EAAU,EAAGriP,IAC7B49O,EAAiBC,EAAU18O,EALrB,EAKiCnB,GACvC49O,EAAiBC,EAAU18O,EAAOnB,EALzB,GAMTmB,GAAS,GAIbgiP,GAAoB,SAAStF,GAC7B,IAKIntH,EACA1wH,EANAojP,EAAS,GACTC,EAAe,GACfC,EAAc,GACdn2O,EAAW,GACXo2O,EAAmB,GAKnBlB,EAAUxE,EAAS,GAAG59O,OAG1B,IAAKD,EAAI,EAAGA,EAAI69O,EAAS59O,OAAQD,IAC7BojP,EAAOpjP,GAAK,EACZsjP,EAAYtjP,GAAK,EACjBujP,EAAiBvjP,GAAK,CAAC,EAAE,GACzBmN,EAASnN,GAAK,CAAC,EAAG,GAClBqjP,EAAarjP,GAAK,GAEtB,IAAKA,EAAI,EAAGA,EAAIqiP,EAASriP,IACrB,IAAK,IAAIojC,EAAI,EAAGA,EAAIi/M,EAASj/M,IACzB,IAAK,IAAI7lC,EAAI,EAAGA,EAAIsgP,EAAS59O,OAAQ1C,IACjCmzH,EAASmtH,EAAStgP,GAClB+lP,EAAY/lP,IAAMmU,SAASg/G,EAAO1wH,GAAGojC,GAAI,IACrCigN,EAAa9lP,GAjBnB,KAiB+BmzH,EAAO1wH,GAAGojC,IAAMpjC,EAAI,EAAIqiP,GAAWj/M,EAAI,GAAK,GACrEstF,EAAO1wH,EAAI,GAAGojC,IAAMigN,EAAa9lP,GAlBvC,IAkBkDmzH,EAAO1wH,EAAI,GAAGojC,EAAI,IAAMigN,EAAa9lP,GAlBvF,KAmBM6lP,EAAO7lP,IAAM,GAEjBimP,GAA4BjmP,EAAG4P,EAAUi2O,EArB3C,EAqBwD1yH,EAAO1wH,GAAGojC,IAChEogN,GAA4BjmP,EAAG4P,EAAUi2O,EArBxC,EAqBwD1yH,EAAOttF,GAAGpjC,IACnEyjP,GAAsBlmP,EAAE6lP,EAAOC,EAAa3yH,EAAO1wH,GAAGojC,GAAGmgN,EAvB3D,GAwBEE,GAAsBlmP,EAAE6lP,EAAOC,EAAa3yH,EAAOttF,GAAGpjC,GAAGujP,EAvBxD,GA2Bb,IACIpsE,EADA93H,EAAQgjM,EAAUA,EAElBzzO,EAAM7D,OAAOgjH,UAEjB,IAAK/tH,EAAI,EAAGA,EAAIojP,EAAOnjP,OAAQD,IAC3BojP,EAAOpjP,IAAM0jP,GAA+BJ,EAAYtjP,GAAIq/C,GACxD+jM,EAAOpjP,GAAK4O,IACZA,EAAMw0O,EAAOpjP,GACbm3K,EAASn3K,GAIjB,OAAOm3K,GAGX,SAASqsE,GAA4BnhP,EAAK8K,EAAUi2O,EAAQO,EAAW7F,GACnE3wO,EAAS9K,GAAKshP,IAAex2O,EAAS9K,GAAKshP,IAAc,EAAK7F,GAAO,IAptBpD,IAqtBb3wO,EAAS9K,GAAKshP,KACdP,EAAO/gP,IAAQ,IAIvB,SAASohP,GAAsBphP,EAAK+gP,EAAQC,EAAcvF,EAAK8F,EAAcD,GACrEN,EAAahhP,GAAKshP,IAAc7F,EAChC8F,EAAavhP,GAAKshP,MAGlBN,EAAahhP,GAAKshP,GAAa7F,EAC3B8F,EAAavhP,GAAKshP,IAAc,IAChCP,EAAO/gP,IAAQ,EAAIuhP,EAAavhP,GAAKshP,GAAa,GAEtDC,EAAavhP,GAAKshP,GAAa,GAIvC,SAASD,GAA+BJ,EAAajkM,GACjD,IAAI/yC,EAAUxQ,KAAKkN,MAAOs6O,EAAcjkM,EAAS,KAC7CwkM,EAAOv3O,EAAU,EACjB2kC,EAAWn1C,KAAK6T,IAAIrD,EAAUu3O,EAAO,IACrC/lL,EAAOhiE,KAAK6T,IAAIrD,EAAU,EAAIu3O,EAAO,IAEzC,OADY,GAAK/nP,KAAK8S,IAAIqiC,EAAW,EAAG6sB,EAAO,GAInD,IAAIgmL,GAAiB,SAASvF,EAAYtjP,GACtCxC,KAAK8lP,WAAaA,EAClB9lP,KAAKwC,QAAUA,GAGf8oP,GAAa,WACbtrP,KAAKurP,kBAAoB,SAASC,EAAa7C,GAC3C,IAAIlE,EAAQ6D,EAASkD,GACrB9C,EAAqBF,EAAsB/D,GAC3CjiP,EAAUimP,EAAWC,EAAoBC,GACzC7C,EAAa8C,EAAcnE,EAAOjiP,GAElC,OAAO,IAAI6oP,GAAevF,EAAYtjP,KAI1CipP,GAAc,WACdzrP,KAAK6kP,KAAOC,EAAc9kP,KAAK0rP,eAGnCD,GAAY1jP,GAAK0jP,GAAYpjP,UAAY,CACrCqjP,aAAc7I,EACd8I,OAAQ,2BACRC,6BAA8B,GAC9BL,kBAAmB,SAASC,EAAa7C,GACrC,IAAI1gP,EAAOjI,KACP6N,EAAO5F,EAAK6lE,OAAO09K,GACnB9C,EAAqBzgP,EAAKugP,sBAAsB36O,GAChDrL,EAAUimP,EAAWC,EAAoBC,GACzC7C,EAAa79O,EAAK48O,KAAKP,mBAAmBz2O,EAAKrG,OAAS,EAAGhF,GAAWqL,EAE1E,OAAO,IAAIw9O,GAAevF,EAAYtjP,IAE1CgmP,sBAAuB,SAAS36O,GAC5B,IACI62D,EAAa72D,EAAKrG,OAGtB,OAFyBnE,KAAK4iE,MAFnBjmE,KAE+B4rP,6BAA+BlnL,GAAc,IAI3FoJ,OAAQ,SAASl/D,GAGb,IAFA,IACI2H,EADOvW,KACO2rP,OACTpkP,EAAI,EAAGA,EAAIqH,EAAIpH,OAAQD,IAC5BgP,GAHOvW,KAGQ6rP,gBAAgBj9O,EAAI0C,WAAW/J,IAElD,OAAOgP,GAEXs1O,gBAAiB,SAASxjM,GACtB,IAAIyjM,EAAa9rP,KAAK+rP,cAAc1jM,GAChC2jM,EAAKF,EAAa,EAClBv1O,EAAS,GAEb,GAAkB,GAAdu1O,EACAv1O,EAASytO,EAAa37L,EAAM,OAE3B,CAGD,IAFA,IAAI4jM,EAAkB,EAAIH,EAEjBvkP,EAAI,EAAGA,EAAIykP,EAAIzkP,IACpBgP,EAASytO,EAAa37L,GAAa,EAAJ9gD,EAAS,GAAK,IAAK,GAAKgP,EAG3DA,GAAW8xC,GAAa,EAAL2jM,EAAY,KAAOC,GAAoBA,GAAkB/6O,SAAS,GAAKqF,EAE9F,OAAOA,GAEXw1O,cAAe,SAAS1jM,GAEpB,IADA,IAAIoQ,EAASz4D,KAAKy4D,OACTlxD,EAAI,EAAGA,EAAIkxD,EAAOjxD,OAAQD,IAC/B,GAAI8gD,EAAOoQ,EAAOlxD,GACd,OAAOA,EAAI,GAIvBkxD,OAAQ,CAAC,IAAI,KAAK,MAAM,QAAQ,WAGpC,IAAIyzL,GAAoB,SAAShQ,GAC7B,OAAIA,GAAYA,EAAS5jO,cAAc3C,QAAQ,UAAY,EAChD,IAAI81O,GAGJ,IAAIH,IAIfa,GAAa,SAASX,EAAa7C,EAAsBzM,GACzD,IACIkQ,EADU,IAAIF,GAAkBhQ,GACPqP,kBAAkBC,EAAa7C,GACxDnmP,EAAU4pP,EAAe5pP,QACzB6pP,EAAqBnJ,EAA6B1gP,EAAU,GAAGmmP,GAC/D7C,EAAaD,EAAcuG,EAAetG,WAAYuG,EAAmBlJ,oBACzEqC,EAASuB,EAAUjB,EAAYuG,GAC/BjH,EAAWuE,GAAannP,GAE5B8nP,GAAkBlF,GAClBmF,GAAqBnF,EAAU5iP,GAC/BioP,GAAmBrF,GAEf5iP,GAAW,GACXunP,GAAsB3E,EAAUpB,EAAa,EAAG,KAGpD6F,GAAqBzE,EAAUpB,EAAa,EAAG,KAC/CuB,EAASH,EAAUI,GAEnB,IAAI9mE,EAASgsE,GAAkBtF,GAC3BkH,EAAgBlH,EAAS1mE,GAEzBl8K,GAAW,GACXunP,GAAsB,CAACuC,GAAgBxC,GAAyBtnP,IAGpE,IAAI8rK,EAAei1E,EAAwBoF,GAAwB3E,EAAatlE,EAAQ,GAGxF,OAFAmrE,GAAqB,CAACyC,GAAgBzD,EAAwBv6E,IAEvDg+E,GAGPC,GAAiB,CACjBC,aAAc,IACdC,kBAAmB,EACnBC,+BAAgC,IAChCC,mBAAoB,OACpBC,0BAA2B,OAC3BC,mBAAoB,GAGpBC,GAASp8N,EAAO3tB,OAAO,CACvBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAK4D,QAAUlJ,EAAEkJ,GACjB5D,EAAKmE,QAAUnE,EAAK4D,QACpB5D,EAAK4D,QAAQ0Y,SAAS,YACtBtc,EAAK85O,YAAcp/O,EAAE,WAAWiK,IAAI,WAAY,YAAYugC,SAASntC,KAAK6L,SAC1E5D,EAAK04E,QAAU60D,EAAKP,QAAQjuF,OAAO/+C,EAAK85O,YAAa,CACjDr8O,KAAMuC,EAAKf,QAAQqvN,WAEvBtuN,EAAKspB,WAAWrqB,IAGpBysM,OAAQ,WACJ,IAAIlkM,EAAOzP,KAAK4sO,WAEhB5sO,KAAK+hP,YAAYn1O,IAAI,CACjBI,MAAOyC,EACP9C,OAAQ8C,IAEZzP,KAAK2gF,QAAQ1qB,QACbj2D,KAAK2gF,QAAQp3D,SAEbvpB,KAAKulK,eACLvlK,KAAK2gF,QAAQ60D,KAAKx1I,KAAKk+I,SAG3BtsH,QAAS,WACL,OAAOjxB,EAAMqxB,WAAWhyB,KAAK6L,UAGjCkmB,QAAS,WACL/xB,KAAK2zM,UAGTpuC,aAAc,WACVvlK,KAAKk+I,OAASl+I,KAAKiiP,WAGvB9sG,aAAc,WACV,OAAOn1I,KAAKiiP,WAGhBA,QAAS,WACL,IAEItoE,EAIAozE,EACA90H,EACAxoH,EAEAu9O,EAVA/kP,EAAOjI,KACP0I,EAAQT,EAAKq+M,OAEb7+C,EAASx/J,EAAKf,QAAQugK,QAAU,GAChC1xB,EAAU9tI,EAAKf,QAAQ6uI,SAAW,EAClCyxB,EAAcC,EAAOz6J,OAAS,EAOlCy6J,EAAOz6J,MAAQw6J,EAEf,IAAItpB,EAAS,IAAI1I,EAAKhH,MAmBtB,OAjBI9lI,IACAuvH,EAASk0H,GAAWzjP,EAAOT,EAAKf,QAAQ+lP,gBAAiBhlP,EAAKf,QAAQg1O,UAEtE8Q,GADAv9O,EAAOxH,EAAK2kO,YACS,GAAKplE,EAAczxB,GACxC4jC,EAAW1xK,EAAKilP,mBAAmBF,EAAa/0H,EAAOzwH,QAEvDulP,EAAgBvlF,EAAczxB,GAAWi3G,EAD9B/0H,EAAOzwH,OAASmyK,GACwC,EAEnEz7B,EAAOnkG,OAAO9xC,EAAKklP,kBAAkB19O,EAAMg4J,IAC3CvpB,EAAOnkG,OAAO9xC,EAAKmlP,cAAcn1H,EAAQ0hD,EAAUozE,IAC/C9kP,EAAKolP,iBACLnvG,EAAOnkG,OAAO9xC,EAAKqlP,YAAY79O,EAAMkqK,IAC9B1xK,EAAKslP,YACZrvG,EAAOnkG,OAAO9xC,EAAKulP,iBAAiB/9O,EAAMkqK,KAI3Cz7B,GAGXovG,YAAa,SAAcG,EAAQ9zE,GAC/B,IACI+zE,EACAnwK,EAASxnE,EAAM03O,EAAS,GACxBE,EAAW3tP,KAAK4tP,aA56BR,EA46BqBj0E,GAC7Bk0E,EAAU7tP,KAAKkH,QAAQggK,QAAQ4mF,SAC/BhhP,EAAW,CACX1H,EAAGm4E,EAASowK,EAAS3gP,MAAQ,EAC7B7I,EAAGo5E,EAASowK,EAAShhP,OAAS,GASlC,OANA+gP,EAAY,IAAI/sP,EAAMi/H,SAAS1E,KAC3B,IAAIv6H,EAAMi/H,SAAS5F,MAAMltH,EAAS1H,EAAG0H,EAAS3I,GAC9C,IAAIxD,EAAMi/H,SAAS3E,KAAK0yH,EAAS3gP,MAAO2gP,EAAShhP,SAG7C,IAAI6oI,EAAKpH,MAAMy/G,EAASH,IAIpCF,iBAAkB,SAASC,EAAQ9zE,GAC/B,IAAIg0E,EAAW3tP,KAAK4tP,aA77BR,EA67BqBj0E,GAE7Bo0E,GADJJ,EAAWtqP,KAAKuV,IAAI+0O,EAAS3gP,MAAO2gP,EAAShhP,SAClB,EACvBqhP,EAAcD,EAAY,EAC1BxwK,EAASkwK,EAAS,EAClBn4O,EAAQ,GACR4oI,EAAS,IAAI1I,EAAKhH,MAYtB,OAVAl5H,EAAMlQ,EAAIkQ,EAAMnR,EAAId,KAAK4iE,KAAKsX,EAASo8F,EAAWg0E,EAAW,GAC7DzvG,EAAOnkG,OAAO/5C,KAAKiuP,aAAa34O,EAAOjS,KAAK4iE,KAAK0nL,EAAsB,EAAXh0E,GAAemqE,EAAe,SAE1FxuO,EAAMlQ,EAAIkQ,EAAMnR,EAAIo5E,EAASowK,EAAW,EACxCzvG,EAAOnkG,OAAO/5C,KAAKiuP,aAAa34O,EAAOq4O,EAAU7J,EAAe9jP,KAAKkH,QAAQkoH,QAE7E95G,EAAMlQ,EAAIm4E,EAASywK,EAAcL,EAAW,EAC5Cr4O,EAAMnR,EAAIo5E,EAASywK,EAAcD,EAAYJ,EAAW,EACxDzvG,EAAOnkG,OAAO/5C,KAAKiuP,aAAa34O,EAAOy4O,EAAWlK,EAAc,SAEzD3lG,GAGX+vG,aAAc,SAAS34O,EAAOo9B,EAAMh/B,EAAS07G,GACzC,IAAIhgF,EAAO,IAAIomG,EAAKrI,UAAU,CAC1Bl6G,KAAM,CACFm8F,MAAOA,GAEXyO,OAAQ,OAGZzuF,EAAKgN,OAAO9mC,EAAMlQ,EAAGkQ,EAAMnR,GAC3B,IAAK,IAAIoD,EAAI,EAAGA,EAAImM,EAAQlM,OAAQD,IAChC6nC,EAAKw7F,OAAOt1H,EAAMlQ,EAAIstC,EAAOh/B,EAAQnM,GAAG,GAAI+N,EAAMnR,EAAIuuC,EAAOh/B,EAAQnM,GAAG,IAI5E,OAFA6nC,EAAKkW,QAEElW,GAGXw9L,SAAU,WACN,IACIn9N,EADAxH,EAAOjI,KAGX,GAAIiI,EAAKf,QAAQuI,KACdA,EAAOwJ,SAAShR,EAAKf,QAAQuI,KAAM,QAC/B,CACH,IAAI5D,EAAU5D,EAAK4D,QACfsK,EAAM9S,KAAK8S,IAAItK,EAAQmB,QAASnB,EAAQc,UAGxC8C,EADA0G,EAAM,EACCA,EAEAo2O,GAAeC,aAI9B,OAAO/8O,GAGXy9O,mBAAoB,SAASz9O,EAAMy+O,GAC/B,IAAIv0E,EAAWt2K,KAAKkN,MAAMd,EAAOy+O,GAEjC,GAAIv0E,EAAW4yE,GAAeM,mBAC1B,MAAM,IAAIp8O,MAAM,sBAQpB,OALIkpK,EAAWu0E,GAAcz+O,GACzBkqK,EAAW,GAAK4yE,GAAeM,oBAC/BlzE,IAGGA,GAGXyzE,cAAe,SAASn1H,EAAQ0hD,EAAUozE,GAQtC,IAPA,IAAI39M,EAAO,IAAIomG,EAAKrI,UAAU,CAC1Bl6G,KAAM,CACFm8F,MAAOpvH,KAAKkH,QAAQkoH,OAExByO,OAAQ,OAGHq0D,EAAM,EAAGA,EAAMj6D,EAAOzwH,OAAQ0qL,IAInC,IAHA,IAAI/tL,EAAI4oP,EAAgB76D,EAAMvY,EAC1B0S,EAAS,EAENA,EAASp0D,EAAOzwH,QAAQ,CAC3B,KAA+B,IAAxBywH,EAAOi6D,GAAK7F,IAAiBA,EAASp0D,EAAOzwH,QAChD6kL,IAGJ,GAAIA,EAASp0D,EAAOzwH,OAAQ,CAExB,IADA,IAAIpC,EAAIinL,EACsB,GAAvBp0D,EAAOi6D,GAAK7F,IACfA,IAGJ,IAAIpvG,EAAKlnE,EAAMg3O,EAAgB3nP,EAAIu0K,GAC/Bz8F,EAAKnnE,EAAM5R,GACXg5E,EAAKpnE,EAAMg3O,EAAgB1gE,EAAS1S,GACpCv8F,EAAKrnE,EAAM5R,EAAIw1K,GAEnBvqI,EAAKgN,OAAO6gC,EAAIC,GACX0tD,OAAO3tD,EAAIG,GACXwtD,OAAOztD,EAAIC,GACXwtD,OAAOztD,EAAID,GACX53B,SAKjB,OAAOlW,GAGX+9M,kBAAmB,SAAS19O,EAAMg4J,GAC9B,IAAIvuH,EAAM,IAAIwxI,EAAM,EAAE,EAAGj7K,EAAMA,GAAM4yJ,MAAMoF,EAAOz6J,MAAQ,GAC1D,OAAOwoI,EAAKlJ,KAAKc,SAASl0F,EAAI2pH,SAAU,CACpC5vI,KAAM,CACFm8F,MAAOpvH,KAAKkH,QAAQ+qJ,YAExBp0B,OAAQ,CACJzO,MAAOq4C,EAAOr4C,MACdpiH,MAAOy6J,EAAOz6J,UAK1BukB,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACXkH,EAAUA,GAAW,GACrBe,EAAKf,QAAUnE,EAAOkF,EAAKf,QAASA,GAChCA,EAAQwB,QAAU9F,IAClBqF,EAAKq+M,OAASr+M,EAAKf,QAAQwB,MAAQ,IAEvCT,EAAK0rM,UAETjrM,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACX,GAAI0I,IAAU9F,EACV,OAAOqF,EAAKq+M,OAEhBr+M,EAAKq+M,OAAS59M,EAAQ,GACtBT,EAAK0rM,UAETzsM,QAAS,CACL9E,KAAM,SACNm0N,SAAU,MACV2lB,SAAU,aACVxzO,MAAO,GACPukP,gBAAiBV,GAAeG,+BAChCz6F,WAAYs6F,GAAeI,mBAC3Bv9H,MAAOm9H,GAAeK,0BACtBn9O,KAAM,GACNsmI,QAAS,EACT0xB,OAAQ,CACJr4C,MAAO,GACPpiH,MAAO,GAEXk6J,QAAS,CACLxhK,KA/lCJ,QAgmCIooP,SAAU,GACV9gP,MAAO,EACPL,OAAQ,IAIhB0gP,eAAgB,WACZ,QAASrtP,KAAKkH,QAAQggK,QAAQ4mF,UAGlCP,SAAU,WACN,MA1mCG,UA0mCIvtP,KAAKkH,QAAQggK,QAAQxhK,MAGhCkoP,aAAc,SAASO,GACnB,IAAInhP,EAAQhN,KAAKkH,QAAQggK,QAAQl6J,MAC7BL,EAAS3M,KAAKkH,QAAQggK,QAAQv6J,OAUlC,OARKK,GAAUL,EAEJK,IAAUL,EACjBA,EAASK,GACDA,GAASL,IACjBK,EAAQL,GAJRK,EAAQL,EAASwhP,EAOd,CACHnhP,MAAOA,EACPL,OAAQA,MAKpBmd,EAAQugK,YAAYtnL,OAAO+pP,GAAO/kP,IAClC+hB,EAAQH,GAAGqN,OAAO81N,IAEpBnsP,EAAM6H,WAAWshB,EAAS,CACpBgjO,OAAQA,GACRP,eAAgBA,GAChB6B,gBAAiB,CACbrJ,gBAAiBA,EACjBQ,SAAUA,EACVM,cAAeA,EACfY,uBAAwBA,EACxBP,eAAgBA,EAChBa,UAAWA,EACXZ,oBAAqBA,EACrBwB,WAAYA,EACZW,SAAUA,EACVE,sBAAuBA,EACvBC,WAAYA,EACZG,cAAeA,EACfC,wBAAyBA,EACzBE,UAAWA,EACXM,kBAAmBA,EACnBM,aAAcA,GACdE,qBAAsBA,GACtBC,yBAA0BA,GAC1BC,sBAAuBA,GACvBG,kBAAmBA,GACnBC,mBAAoBA,GACpBG,kBAAmBA,GACnBC,qBAAsBA,GACtBE,mBAAoBA,GACpBC,kBAAmBA,GACnByB,WAAYA,GACZV,YAAaA,IAEjB4C,aAAc,CACV5J,MAAOK,EACPhC,YAAaA,EACbC,kBAAmBA,EACnBC,qBAAsBA,KAvtCtC,CA2tCGliP,OAAOH,MAAM+G,QACF/G,OASd,WAGAG,OAAOH,MAAMmpB,QAAUhpB,OAAOH,MAAMmpB,SAAW,GAC/C,IAAIA,EAAUnpB,MAAMmpB,QAChBytG,EAAgBztG,EAAQytG,cACxB/uH,EAAashB,EAAQthB,WACrBgxK,EAAS1vJ,EAAQ0vJ,OACjBwX,EAAmBlnK,EAAQ00I,UAC3Bg2D,EAAQ1qM,EAAQ0qM,MAChBzqM,EAAUppB,MAAMopB,QAEhBukO,EAAmBvkO,EAAQ2xB,UAAU34C,OAAO,CAC5C2yC,MAAO,WACH11C,KAAKuuP,gBAAkBxlP,WAAWwuH,EAAcv3H,KAAK6L,QAAS,WAAW+qB,UAG7E8b,KAAM,SAAS2hD,GACXkjC,EAAcv3H,KAAK6L,QAAS,CACxB+qB,QAAS9kB,OAAOgY,EAAQ4/J,iBAAiB1pL,KAAKuuP,gBAAiB,EAAGl6J,OAI1E+/C,MAAO,WACHrqH,EAAQ2xB,UAAU3zC,GAAGqsI,MAAM7pI,KAAKvK,MAChCu3H,EAAcv3H,KAAK6L,QAAS,CACxBgB,QAAS,OACT+pB,QAAS9kB,OAAO9R,KAAKuuP,oBAI7B/zN,OAAQ,WACJzQ,EAAQ2xB,UAAU3zC,GAAGqsI,MAAM7pI,KAAKvK,MAChCu3H,EAAcv3H,KAAK6L,QAAS,CACxB+qB,QAAS9kB,OAAO9R,KAAKuuP,sBAKjC,SAAS7pC,EAAUh4L,EAAWjgB,GAC1B,IAAIoR,EAAMzO,SAAS0O,cAAc,OAMjC,OALAD,EAAI6O,UAAYA,EACZjgB,IACAoR,EAAIpR,MAAMsR,QAAUtR,GAGjBoR,EAGX,IAAI2wO,EAAgB1kO,EAAQliB,MAAM7E,OAAO,CACrCoF,KAAM,SAASmuB,EAAW6uI,EAAcj+J,GAEpClH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAC5ClH,KAAKs2B,UAAYA,EACjBt2B,KAAKmlK,aAAeA,EAEpB,IAAIpvB,EAAUxe,EAAcjhG,EAAW,CAAE,cAAe,eACxDt2B,KAAKyuP,aAAe,CAChBrqO,IAAK2xH,EAAQje,WACbjsG,KAAMkqH,EAAQle,aAGlB73H,KAAK+kN,iBACLzuL,EAAUpY,YAAYle,KAAK6L,UAG/Bk5M,eAAgB,WACZ,IAAIl5M,EAAU7L,KAAK6L,QAAU64M,EAAU,mBAAoB,2DACvDvoD,EAAUn8J,KAAKm8J,QAAUuoD,EAAU,6BACnCgqC,EAAS1uP,KAAK0uP,OAAShqC,EAAU,YAErCvoD,EAAQn+I,UAAY,SAEpBnS,EAAQqS,YAAYi+I,GACpBtwJ,EAAQqS,YAAYwwO,IAGxBxhP,KAAM,SAASixB,EAAMC,EAAIw9F,GACrB,IAAI3sG,EAAMjvB,KACN6L,EAAUojB,EAAIpjB,QACd3E,EAAU+nB,EAAI/nB,QACdwnP,EAASz/N,EAAIy/N,OACbvyF,EAAUltI,EAAIktI,QACd+G,EAASp5I,EAAQ2uJ,OAAOe,EAAOr7I,GAAQq7I,EAAOp7I,EAAKD,GAAQ,GAC3D/f,EAA6B,GAAfw9G,EAAK5uH,QACnB2hP,EAAS/yH,EAAKr+C,SAASn4E,EAAIgZ,EAI3BuxB,GAHSisF,EAAKr+C,SAASn4E,EACHupP,IACZznP,EAAQ0R,IAAM1R,EAAQiP,KAE9B4G,EAASmmJ,EAASh8J,EAAQiP,IAC1ByqB,EAAO5gC,KAAKmlK,aAAaoJ,KAAK79J,OAAOxJ,EAAQwJ,OAAQytB,EAAMC,GAC3DvuB,EAAWia,EAAQ41I,YAAYx4J,GAEnClH,KAAK4uP,mBAEA5uP,KAAK6uP,WACNt3H,EAAc1rH,EAAS,CACnBohF,WAAY,SACZpgF,QAAS,UAEb7M,KAAK6uP,UAAW,GAGhBh/O,IACA+wB,EAAO/wB,EAAS,CACZsuB,KAAMA,EACNC,GAAIA,KAIZ+9H,EAAQn+I,UAAY4iB,EACpB22F,EAAc4kC,EAAS,CACnBtwI,KAAM+vG,EAAKr+C,SAASn4E,EAAI+2J,EAAQh+I,YAAc,EAC9CiG,IAAKw3G,EAAK1+C,KAGd,IAAI4xK,EAAev3H,EAAc4kC,EAAS,CAAE,YAAa,iBAAkB,WAE3E5kC,EAAcm3H,EAAQ,CAClB1hP,MAAOoR,EACPyN,KAAM8iO,EAAS5xO,EAAS4yB,EACxBvrB,IAAKw3G,EAAK1+C,GAAK4xK,EAAar4M,UAAYq4M,EAAaC,eAAiBD,EAAaniP,OAAS,IAGhG4qH,EAAc1rH,EAAS,CACnBohF,WAAY,aAIpB2hK,iBAAkB,WACV5uP,KAAKgvP,cACL70N,aAAan6B,KAAKgvP,cAGlBhvP,KAAKivP,gBACLjvP,KAAKivP,eAAez0N,UAI5BrtB,KAAM,WACF,IAAIgkH,EAAWnxH,KAEfA,KAAK4uP,mBAEL5uP,KAAKgvP,aAAej2N,YAAW,WAC3Bo4F,EAAS09H,UAAW,EACpB19H,EAAS89H,eAAiB,IAAIX,EAAiBn9H,EAAStlH,SACxDslH,EAAS89H,eAAev5M,QACxBy7E,EAAS89H,eAAen4M,SACzB92C,KAAKkH,QAAQq0J,YAGpBv5J,QAAS,WACLhC,KAAK4uP,mBACD5uP,KAAKs2B,WACLt2B,KAAKs2B,UAAUjY,YAAYre,KAAK6L,gBAE7B7L,KAAKs2B,iBACLt2B,KAAKmlK,oBACLnlK,KAAK6L,eACL7L,KAAKm8J,eACLn8J,KAAK0uP,UAIpB5kO,EAAQu2I,kBAAkBmuF,EAAe,CACrC99O,OAAQ,gBACR6qJ,UAAW,MAGf,IAAI2zF,EAAiB,aACjBC,EAAiBD,EACjBE,EAAe,WAEf5wF,EAAY,CACf2wF,eAAgBA,EAChBD,eAAgBA,EAChBE,aAAcA,GAKXC,EAAYvlO,EAAQliB,MAAM7E,OAAO,CACjCoF,KAAM,SAASymK,GAEX5uK,KAAK4uK,MAAQA,EACb,IAWI5hJ,EAXA9lB,EAAUlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAAS0nK,EAAM1nK,QAAQ4a,WACpEskB,EAASl/B,EAAQk/B,OACjBA,IACAA,EAAOjI,KAAOn+B,KAAKud,UAAU6oB,EAAOjI,MACpCiI,EAAOhI,GAAKp+B,KAAKud,UAAU6oB,EAAOhI,KAGjCtU,EAAQkrG,QAAQ9tH,EAAQ4hF,KAAKx8E,WAC9BpF,EAAQ4hF,KAAKx8E,QAAUpF,EAAQoF,SAInCtM,KAAKsvP,cAAgB,IAAIxlO,EAAQi2I,iBAAiB//J,OAAQgtB,EAAM,IAAQgkK,EAAiB7tG,MAAQ,QAASn2D,EAAIgkK,EAAiBuH,UAAY,WAAYvrK,EAAIgkK,EAAiB0H,MAAQ,QAAS1rK,EAAIgkK,EAAiB2H,UAAY,WAAY3rK,IAC1O4hJ,EAAMz6C,YAAYn0H,KAAKsvP,gBAG3B/xO,UAAW,SAAS7U,GAChB,OAAOohB,EAAQvM,UAAUvd,KAAK4uK,MAAMzJ,aAAaoJ,KAAM7lK,IAG3D6mP,MAAO,WACCvvP,KAAK+lC,YACL/lC,KAAK+lC,UAAU/jC,UACfhC,KAAK+lC,UAAY,MAGjB/lC,KAAK8oF,OACL9oF,KAAK8oF,KAAK9mF,UACVhC,KAAK8oF,KAAO,OAIpB9mF,QAAS,WACDhC,KAAK4uK,QACL5uK,KAAK4uK,MAAMx6C,eAAep0H,KAAKsvP,sBACxBtvP,KAAK4uK,OAGhB5uK,KAAKuvP,SAGT57C,OAAQ,WACJ3zM,KAAKwvP,cACLxvP,KAAKyvP,iBAGTA,cAAe,WACX,IAwbOziO,EAvbH4hJ,EADM5uK,KACM4uK,MACZ1nK,EAFMlH,KAEQkH,QACd89B,EAAOhlC,KAAK0vP,WACZj/G,EAAQzrG,EAAK01I,eACbvkK,EAAMs6H,EAAMt6H,IACZyC,EAAM63H,EAAM73H,IACZu6M,EAAQjsN,EAAQk/B,OAChBjI,EAAOg1L,EAAMh1L,KACbC,EAAK+0L,EAAM/0L,GACXsnL,EAAayN,EAAMzN,WACnBiqC,GA6aG3iO,EA7aegY,EA8a1B4qN,EAAavnP,UAAY2kB,EAClB,IAAI4iO,GA7awB,IAA3B5qN,EAAKk3I,oBAITl8K,KAAKuvP,QAGLI,EAAUz2M,IAAMlU,EAAKkU,IAErBl5C,KAAK+lC,UAAY,IAAIjc,EAAQ86L,UAAUh2C,EAAO+gF,EAAW,CACrDx5O,IAAKA,EACLyC,IAAKA,EACLulB,KAAMA,GAAQhoB,EACdioB,GAAIA,GAAMxlB,EACV8sM,WAAY57L,EAAQotG,eAAewuF,EAAY,CAAEr1K,KAAM,SACvD/jC,QAASpF,EAAQoF,SAClB,IAAIwd,EAAQi2I,iBAAiB//J,KAAM,CAClC6vP,YAAa,eACbzpN,OAAQ,UACR0pN,UAAW,gBAGX5oP,EAAQ4hF,KAAKx8E,UACbtM,KAAK8oF,KAAO,IAAI0lK,EAAc5/E,EAAM/iK,QAAS+iK,EAAMzJ,aAAc,CAC7DhvJ,IAAKA,EACLyC,IAAKA,EACL/I,SAAUia,EAAQ41I,YAAYx4J,EAAQ4hF,MACtCp4E,OAAQxJ,EAAQ4hF,KAAKp4E,YAKjCiiN,SAAU,WACN,IAGI1jM,EAHWjvB,KAAK4uK,MAAMoqD,iBAAgB,GACtB5c,kBAAgC,WAErC1hC,eACXvkK,EAAM8Y,EAAI9Y,IACVyC,EAAMqW,EAAIrW,IAEVwtB,EAASpmC,KAAKkH,QAAQk/B,QAAU,GAChCjI,EAAOiI,EAAOjI,MAAQhoB,EACtBgoB,EAAOhoB,IACPgoB,EAAOhoB,GAGX,IAAIioB,EAAKgI,EAAOhI,IAAMxlB,EAClBwlB,EAAKxlB,IACLwlB,EAAKxlB,GAGT5Y,KAAKkH,QAAQk/B,OAAS59B,EAAW,GAAI49B,EAAQ,CACzCjI,KAAMA,EACNC,GAAIA,IAGRp+B,KAAK+vP,cAGTP,YAAa,SAASnwM,GAClB,IAAIozH,EAAWzyK,KAAK4uK,MAAM8iB,UAEtBjf,GACAA,EAASkhC,OAAO7pL,EAAQqY,KAAKswI,EAAS8+B,OAAQlyJ,IAItD2wM,aAAc,WACV,IAAIphF,EAAQ5uK,KAAK4uK,MACb6D,EAAW7D,EAAM8iB,UACjBu+D,EAAax9E,EAAS8+B,MAAMt7K,QAAO,SAAU03D,GAAQ,OAAOA,EAAKzmF,QAAQ9E,OAAS8sP,KAGtFz8E,EAASkrC,UAAY/uC,EAAM1nK,QAAQ4nC,OACnC2jI,EAASvrK,QAAQwmL,aAAe9e,EAAM1nK,QAAQwmL,aAC9Cjb,EAAS2rC,yBAET3rC,EAASkhC,OAAOs8C,IAGpBhoK,MAAO,SAAStjF,GACZ,IAUI+hB,EATAkoJ,EADM5uK,KACM4uK,MACZ7oI,EAFM/lC,KAEU+lC,UAChBq7J,EAASxyB,EAAM0xC,kBAAkB37M,EAAEgkB,eACnCunO,EAAgBlwP,KAAK0vP,WACrBS,EAAYD,EAAcx1E,eAC1B01E,EAAcF,EAAcviK,KAAKz0C,IAAIkjF,cAAcglE,GACnDp8J,EAAO4pI,EAAM8iB,UAAUhE,aACvB95H,EAAQjvD,EAAEihM,WAAW5gK,EAAK99B,QAAQ9E,MAClCgkC,EAASpmC,KAAKkH,QAAQk/B,OAG1B,GAAKwtB,IAASw8L,GAAgBrqN,EAA9B,CAKIrf,EADA0f,EAAOjI,MAAQiI,EAAOhI,GACXo7I,EAAOpzI,EAAOhI,IAAMo7I,EAAOpzI,EAAOjI,MAElCq7I,EAAOzzI,EAAU7+B,QAAQk3B,IAAMo7I,EAAOzzI,EAAU7+B,QAAQi3B,MAGvE,IAAIA,EAAOrU,EAAQ2uJ,OAAO3uJ,EAAQ4sG,WAC9B8iD,EAAO5lH,EAAMz9C,KACbg6O,EAAUh6O,IAAKqjK,EAAO22E,EAAUv3O,KAAO8N,IAGvC0X,EAAKtU,EAAQ2uJ,OAAO3uJ,EAAQ4sG,WAC5B8iD,EAAOr7I,GAAQzX,EACf8yJ,EAAO22E,EAAUh6O,KAAOuQ,EAAUypO,EAAUv3O,MAGhD5Y,KAAKkH,QAAQk/B,OAAS,CAAEjI,KAAMA,EAAMC,GAAIA,GAEpCp+B,KAAKkH,QAAQmpP,WACbrwP,KAAK+vP,aACL/vP,KAAKgwP,gBAGTjqN,EAAUvW,IAAI2O,EAAMC,GAEpBp+B,KAAKswP,SAASnyN,EAAMC,KAGxBqxD,SAAU,WACNzvF,KAAK+vP,aACL/vP,KAAKi2B,SACLj2B,KAAKgwP,eAEDhwP,KAAK8oF,MACL9oF,KAAK8oF,KAAK37E,QAIlBojP,cAAe,WACX,IACIC,EADMxwP,KACsB+lC,UAAU7+B,QACtCi3B,EAAOqyN,EAAsBryN,KAC7BC,EAAKoyN,EAAsBpyN,GAC3BgI,EAJMpmC,KAIOkH,QAAQk/B,OAEzBA,EAAOjI,KAAOA,EACdiI,EAAOhI,GAAKA,GAGhB2xN,WAAY,WACR,IACI3pN,EADMpmC,KACOkH,QAAQk/B,YAAuB,IAAXA,IAAqBA,EAAS,IAMnE,IALA,IACI4oK,EAHMhvM,KAEM4uK,MACI1nK,QAAQwmL,aACxBvvJ,EAAOiI,EAAOjI,KACdC,EAAKgI,EAAOhI,GAEPx0B,EAAM,EAAGA,EAAMolM,EAAQxnM,OAAQoC,IAAO,CAC3C,IAAIo7B,EAAOgqK,EAAQplM,GACfo7B,EAAK2oD,OAASuhK,IACdlqN,EAAK7uB,IAAMgoB,EACX6G,EAAKpsB,IAAMwlB,KAKvBnI,OAAQ,WACJ,IACI24I,EADM5uK,KACM4uK,MACZxoI,EAFMpmC,KAEOkH,QAAQk/B,OAEzB,GAAKwoI,EAAMzO,iBAAiB,CAAE,oBAA9B,CAIA,IAAIuvF,EAAW1vP,KAAK0vP,WAChBv4N,EAAO,CACPgH,KAAMiI,EAAOjI,KACbC,GAAIgI,EAAOhI,IAGf,GAA8B,aAA1BsxN,EAASxoP,QAAQxB,KAAqB,CACtC,IAAI+9K,EAAc,IAAI35J,EAAQk2J,iBAAiBx3K,EAAW,CACtDmxK,SAAU,OACX/K,EAAM1nK,QAAQwmL,aAAa,GAAI,CAC9BvT,WAAY,CAAE/zI,EAAOjI,KAAMiI,EAAOhI,MAClCwwI,EAAMzJ,cAAcj+J,QAExBiwB,EAAKgH,KAAOrU,EAAQ8uJ,YAAY6K,EAAYttK,KAAMstK,EAAY5J,aAAc4J,EAAY9J,UACxFxiJ,EAAKiH,GAAKtU,EAAQ8uJ,YAAY6K,EAAY7qK,IAAK6qK,EAAY5J,aAAc4J,EAAY9J,UAGzF35K,KAAK4uK,MAAMxkK,QAAQ,kBAAmB+sB,KAG1Cs5N,MAAO,SAAS9rP,GACZ,IAAIsqB,EAAMjvB,KACNglC,EAAO/V,EAAI2/I,MAAM8iB,UAAUhE,aAC3B3nJ,EAAY9W,EAAI8W,UAChB6nK,EAAc3+K,EAAI/nB,QAClBk/B,EAASwnK,EAAYxnK,OACrBiqN,EAAWziD,EAAYyiD,SACvBX,EAAW1vP,KAAK0vP,WAChB9qN,EAAQjgC,EAAEigC,MAEd,GAAKmB,EAAL,CAIA,IAAI2qN,EAAShB,EAAS7zE,cAAc91I,EAAU7+B,QAAQi3B,MAClDwyN,EAAOjB,EAAS7zE,cAAc91I,EAAU7+B,QAAQk3B,IAChDgjK,EAASphM,KAAK4uK,MAAM0xC,kBAAkB37M,EAAEgkB,eAE5ChkB,EAAEgkB,cAAcxf,iBAEZ9F,KAAK6T,IAAI0tB,GAAS,IAClBA,GAvRY,GA0RZ+rN,EAAOD,EAAS,GAChB3qN,EAAUsK,KAAKzL,EAAOw8J,GACtBphM,KAAKuwP,kBAELvrN,EAAK99B,QAAQiP,IAAMiwB,EAAOjI,KAC1BiI,EAAOjI,KAAO6G,EAAKo3I,YAAYz3K,EAAEigC,MAAQ5kC,KAAK4uK,MAAMgsD,sBAAuBx5B,GAAQjrL,KAGnFk6O,IACArwP,KAAK+vP,aACL/vP,KAAKgwP,gBAGTjqN,EAAUvW,IAAI4W,EAAOjI,KAAMiI,EAAOhI,IAElCp+B,KAAKswP,SAAStwP,KAAKkH,QAAQk/B,OAAOjI,KAAMn+B,KAAKkH,QAAQk/B,OAAOhI,MAGhEwyN,SAAU,SAASjsP,GACf3E,KAAKyvF,SAAS9qF,IAGlB2rP,SAAU,SAASnyN,EAAMC,GACrB,IAAIq0I,EAAWzyK,KAAK4uK,MAAM8iB,UAEtB1xL,KAAK8oF,MACL9oF,KAAK8oF,KAAK57E,KAAKixB,EAAMC,EAAIq0I,EAASqkC,kBAI1CsiB,aAAc,SAASz0N,GACnB,OAAO3E,KAAK4uK,MAAMwqD,aAAaz0N,IAGnC+8E,QAAS,SAAS/8E,GAGd,OAFA3E,KAAKswP,SAAS3rP,EAAEw5B,KAAMx5B,EAAEy5B,IAEjBp+B,KAAK4uK,MAAMltF,QAAQ/8E,IAG9B00N,WAAY,SAAS10N,GAUjB,OATI3E,KAAK8oF,MACL9oF,KAAK8oF,KAAK37E,OAGdnN,KAAKuwP,gBACLvwP,KAAK+vP,aACL/vP,KAAKi2B,SACLj2B,KAAKgwP,eAEEhwP,KAAK4uK,MAAMyqD,WAAW10N,IAGjC+qP,SAAU,WACN,IAAIj9E,EAAWzyK,KAAK4uK,MAAM8iB,UAE1B,GAAIjf,EACA,OAAOA,EAAS2pC,kBAAgC,YAIxDh2K,OAAQ,SAASjI,EAAMC,GACnB,IAAIgI,EAASpmC,KAAKkH,QAAQk/B,OAa1B,OAXIjI,GAAQC,IACRgI,EAAOjI,KAAOn+B,KAAKud,UAAU4gB,GAC7BiI,EAAOhI,GAAKp+B,KAAKud,UAAU6gB,GAE3Bp+B,KAAK+vP,aACL/vP,KAAKi2B,SACLj2B,KAAKgwP,eAELhwP,KAAK+lC,UAAUvW,IAAI2O,EAAMC,IAGtB,CACHD,KAAMiI,EAAOjI,KACbC,GAAIgI,EAAOhI,OAqIvB,SAASwxN,KAhITP,EAAU35M,MAAQ,SAASxuC,EAASutN,GAIhC,QAHgB,IAAZvtN,IAAsBA,EAAU,SACf,IAAjButN,IAA2BA,EAAe,KAE1CvtN,EAAQ2pP,OAAZ,CAGA3pP,EAAQ2pP,QAAS,EAEjB,IAAIC,EAActoP,EAAW,GAAIisN,EAAa3yM,UAAW5a,EAAQ4a,WAC7DyvL,EAAQrqM,EAAQqqM,MAAQ,GAAGl0L,OAAOnW,EAAQqqM,OAC1CD,EAAc9oM,EAAW,GAAIsoP,EAAYnjK,KAAM,CAAEvrF,KAAM8sP,IAEtD4B,EAAYxkP,UACbglM,EAAYhlM,SAAU,EACtBglM,EAAY3kM,OAAS,IAGU,QAA/BzF,EAAQ4a,UAAUhV,SAClBykM,EAAM5vM,KAAK2vM,GAEXC,EAAMpnM,QAAQmnM,GAGlBC,EAAMjwM,SAAQ,SAAUqsF,GAAQ,OAAOA,EAAKvrF,KAAOurF,EAAKvrF,MAAQgtP,KAEhEC,EAAU0B,WAAW7pP,EAAS4pP,GAC9BzB,EAAU2B,aAAa9pP,EAAS4pP,EAAar8B,KAGjD46B,EAAU0B,WAAa,SAAS7pP,EAAS4pP,GACrC,IAAIhiN,EAASgiN,EAAYhiN,QAAU,GAC/BkwK,EAAe93M,EAAQwmL,aAAe,GAAGrwK,OAAOnW,EAAQwmL,cACxDujE,EAAY/pP,EAAQ4zK,UAAY,GAAGz9J,OAAOnW,EAAQ4zK,WACxCkkC,EAAa3hM,OAAO4zO,GAC1B3vP,SAAQ,SAAU0jC,GAAQ,OAAOA,EAAK2oD,KAAO3oD,EAAK2oD,MAAQyhK,KAElE,IACI8B,EAA6C,IADvBpnO,EAAQgmL,mBAAmBhhK,EAAQkiJ,EAAiB4G,uBACxCpwL,OAElCQ,EAAOQ,EAAW,CAClB9C,KAAM,OACNioF,KAAMuhK,EACNlxE,iBAAkBkzE,EAClBj6E,UAAWi6E,EACXC,WAAW,EACXphF,WAAY,CAAEzjK,SAAS,GACvB6vJ,QAAS,CAAE7vJ,SAAS,GACpBojK,OAAQ,CAAEh9H,KAAM,GAChBq+B,SAAU+/K,EAAYM,iBACtB/xE,kBAAmB,CACf/oK,QAAS,CAAE,GACX6F,MAAO,CAAE,EAAG,GACZhI,KAAM,CAAE,EAAG,GACXkkK,MAAO,GACP9jK,OAAQ,CAAE,GACV6jK,MAAO,CAAE,MAGbi5E,EAAOP,EAAYpjE,aAEvBsxB,EAAar9M,KACT6G,EAAW,GAAIR,EAAM,CACjBs3K,cAAe,KAChB+xE,EAAM,CACLjvP,KAAM+sP,EACNpxM,MAAO,KACP47H,SAAU,MACVE,aAAc,OACdnK,OAAQ,CAAEpjK,SAAS,GACnByjK,WAAY,CAAEzjK,SAAS,KACvB9D,EAAW,GAAIR,EAAMqpP,EAAM,CAC3BjvP,KAAM+sP,oBACN7vE,cAAe,GACfzF,aAAc,OACdnK,OAAQ,CAAE5iK,SAAU,IACpB0lK,UAAW,GACX6M,kBAAmB,CACf/oK,QAAS,IAEb4+L,UAAU,IACV1sM,EAAW,GAAIR,EAAMqpP,EAAM,CAC3BjvP,KAAM+sP,mBACN7vE,cAAe,IACfvP,WAAY,CACR/iK,MAAO,IAEXwlK,UAAW,GACXz0H,MAAO,KACP2xH,OAAQ,CAAEpjK,SAAS,EAAOsnC,QAAQ,GAClCshK,UAAU,KAIlB+7C,EAAUtvP,KAAK6G,EAAW,CACtBpG,KAAM+sP,EACNxhK,KAAMuhK,EACN57E,eAAgB,CACZhnK,SAAS,GAEbA,SAAS,GACVwkP,EAAYh2E,aAGnBu0E,EAAU2B,aAAe,SAAS9pP,EAAS4pP,EAAar8B,GAMpD,IALA,IAAI3lL,EAAS5nC,EAAQ4nC,OAAS5nC,EAAQ4nC,QAAU,GAC5CwiN,EAAkB,GAAGj0O,OAAOyzO,EAAYhiN,QAAU,IAClDqhJ,EAAeskC,EAAatkC,aAC5BvvL,EAAWkwP,EAAYllE,eAElBhiL,EAAM,EAAGA,EAAM0nP,EAAgB9pP,OAAQoC,IAC5CklC,EAAOntC,KACH6G,EAAW,CACP4mH,MAAO+gE,EAAavmL,EAAMumL,EAAa3oL,QACvCw2M,cAAe8yC,EAAYS,UAC3B/+C,iBAAiB,EACjBr2C,QAAS,CACL7vJ,SAAS,IAEd1L,EAAU0wP,EAAgB1nP,GAAM,CAC/Bo7B,KAAMmqN,EACNzhE,aAAcyhE,EACdp+K,SAAU+/K,EAAYM,qBAYtC,IAEII,EAAah9B,EAAMzxN,OAAO,CAC1B2hL,cAAe,SAASx9K,EAASutN,GAC7B,IAAIznN,EAAQ8c,EAAQ6iE,YAAY3sF,KAAK6L,SAASmB,OAASgkL,EAAiBryB,cACpEovB,EAAQ0mC,EAERg9B,EAAgB,CAChB7lE,eAAgB,CACZoyB,cAAe92M,EAAQqqP,WAE3B9jE,aAAc,CACVC,aAAc,CACVtrL,KAAM,UACNkxK,eAAgB,CACZhnK,SAAS,GAEbojK,OAAQ,CACJh9H,KAAM,GAEVq9H,WAAY,CACRzjK,SAAS,GAEbgzK,cAAej8K,KAAKkN,MAAMvD,EAvBpB,OA4Bd+gL,IACAA,EAAQvlL,EAAW,GAAIulL,EAAO0jE,IAGlCpC,EAAU35M,MAAMxuC,EAAS6mL,GAEzBymC,EAAMzsN,GAAG28K,cAAcn6K,KAAKvK,KAAMkH,EAAS6mL,IAG/ConC,iBAAkB,SAAStpN,GACvBie,EAAQvF,SAAS1Y,EAAS,yBAG9B0lB,WAAY,SAASrqB,GACjBlH,KAAK0xP,mBACLl9B,EAAMzsN,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,IAGnCq4N,oBAAqB,WACjB,IAAI5gN,EAAc3e,KAAKkH,QAAQyX,YAE/B3e,KAAKkH,QAAQyX,aAAc,EAC3B3e,KAAK2xP,cACL3xP,KAAKkH,QAAQyX,YAAcA,GAG/BoT,QAAS,WACL/xB,KAAKu/N,uBAGTtK,QAAS,WACL,IAAInzM,EAAY9hB,KAAK8hB,WAEhB9hB,KAAK4xP,UAAY9vO,GAAaA,EAAU5a,QAAQ2qP,cACjD/vO,EAAUkuO,eAEVhwP,KAAK2xP,eAIbC,OAAQ,WACJ,IAAI1qP,EAAUlH,KAAKkH,QACf4nC,EAAS,GAAGzxB,OAAOnW,EAAQ4nC,OAAQ5nC,EAAQ4a,UAAUgtB,QACrDksJ,EAAclxK,EAAQoU,KAAK4Q,GAAQ,SAAS7pC,GAAK,OAAOA,GAAKA,EAAEqH,WAAY9E,OAC3EonC,EAAQ5uC,KAAK8xP,eAAiB92D,EAGlC,OAFAh7L,KAAK8xP,aAAe92D,EAEbpsJ,GAGX+iN,YAAa,WACT,IAAI7vO,EAAY9hB,KAAK8hB,UAEhBA,IACDA,EAAY9hB,KAAK8hB,UAAY,IAAIutO,EAAUrvP,MAC3CA,KAAKoK,QAAQ,mBAAoB,CAAE0X,UAAWA,KAGlDA,EAAUytO,QACVztO,EAAU6wM,WAEV6B,EAAMzsN,GAAGktN,QAAQ1qN,KAAKvK,MAEtB8hB,EAAU2tO,iBAGdp0B,oBAAqB,SAASj6B,GAC1B,IACIzzG,EADW3tF,KAAK0xL,UACAkmB,YAAYxW,GAE5BzzG,GAAQA,EAAKzmF,QAAQ9E,OAAS8sP,EAC9BlvP,KAAKmjN,oBAELqR,EAAMzsN,GAAGszN,oBAAoB9wN,KAAKvK,KAAMohM,IAIhDqyB,eAAgB,WACZe,EAAMzsN,GAAG0rN,eAAelpN,KAAKvK,MAC7BA,KAAK+xP,2BAGTA,wBAAyB,WAIrB,IAHA,IACI53E,EADAviC,EAAc,GAAGv6H,OAAOrd,KAAKkH,QAAQwmL,cAGhCulB,EAAS,EAAGA,EAASr7D,EAAYpwI,OAAQyrM,IAAU,CACxD,IAAIjuK,EAAO4yG,EAAYq7D,GACnBjuK,EAAK5iC,OAAS+sP,EACdh1E,EAAan1I,EAAKm1I,WACXA,GAAcn1I,EAAK2oD,OAASuhK,IACnClqN,EAAKm1I,WAAaA,KAK9Bu3E,iBAAkB,WACV1xP,KAAK8hB,YACL9hB,KAAK8hB,UAAU9f,UACfhC,KAAK8hB,UAAY,OAIzB9f,QAAS,WACLhC,KAAK0xP,mBACLl9B,EAAMzsN,GAAG/F,QAAQuI,KAAKvK,OAG1Bi6N,mBAAoB,SAASt1N,GACzB,IAAIy8L,EAASphM,KAAKsgN,kBAAkB37M,GAChCgpF,EAAO3tF,KAAK0xL,UAAUkmB,YAAYxW,GAEtC,OAAOozB,EAAMzsN,GAAGkyN,mBAAmB1vN,KAAKvK,KAAM2E,IAAOgpF,GAAQA,EAAKzmF,QAAQ9E,OAAS8sP,GAGvFx3B,sBAAuB,WACd13N,KAAK63N,mBACN73N,KAAK6L,QAAQY,MAAMs0E,YAAc,OAEjC/gF,KAAK63N,kBAAmB,MAKpC/tM,EAAQu2I,kBAAkBmxF,EAAY,CAClCD,UAAW,OACX9jE,aAAc,CACVC,aAAc,CACVhoL,KAAM,OACNi0K,SAAU,MACV1C,WAAW,GAEf6D,UAAW,CACPyH,aAAa,EACb7S,OAAQ,CACJh/J,OAAQ,OAIpBoR,UAAW,CACPskB,OAAQ,GACRwlJ,eAAgB,CACZE,QAAS,CACLx/K,SAAS,GAEb6vJ,QAAS,CACL7vJ,SAAS,GAEbi6J,UAAW,CACPj6J,SAAS,GAEbohK,KAAM,CACF1gK,MAAO,IAGf87E,KAAM,GACNx8E,SAAS,GAEb6vJ,QAAS,CACL7vJ,SAAS,GAEbshL,OAAQ,CACJthL,SAAS,KAIjB3L,MAAM6H,WAAW7H,MAAMmpB,QAAS,CAC5B00I,UAAWA,EACX6wF,UAAWA,EACXb,cAAeA,EACfgD,WAAYA,IA72BhB,GAk3BA,SAAU7uP,GAEN,IAAIhC,EAAQG,OAAOH,MACfmpB,EAAUnpB,EAAMmpB,QAChBi7M,EAAwBj7M,EAAQi7M,sBAChCvQ,EAAQ1qM,EAAQH,GAAG6qM,MACnBw9B,EAAkBloO,EAAQ0nO,WAC1BhzF,EAAY10I,EAAQ00I,UACpB2wF,EAAiB3wF,EAAU2wF,eAC3BD,EAAiB1wF,EAAU0wF,eAC3B1mP,EAAa7H,EAAM6H,WACnBwsH,EAAUlrG,EAAQkrG,QAElBl4E,EAAS,SAETm1M,EAAwBltB,EAAsBhiO,OAAO,CACrDi9J,WAAY,CACRkyF,gBAAiB,qBACjBC,iBAAkB,yBAItBX,EAAah9B,EAAMzxN,OAAO,CAE1BmE,QAAS,CACL9E,KAAM,aACNmvP,UAAW,OACX9jE,aAAc,CACVC,aAAc,CACVhoL,KAAM,OACNi0K,SAAU,MACV1C,WAAW,GAEf6D,UAAW,CACPyH,aAAa,EACb7S,OAAQ,CACJh/J,OAAQ,OAIpBoR,UAAW,CACPskB,OAAQ,GACRwlJ,eAAgB,CACZE,QAAS,CACLx/K,SAAS,GAEb6vJ,QAAS,CACL7vJ,SAAS,EACTuD,SAAU,SAAUof,GAChB,IAAI63I,EAAW73I,EAAI63I,SAEnB,OAAOnmK,EAAMuQ,SAAS41J,EAAU,OAGxC4G,KAAM,CACF1gK,MAAO,IAGf87E,KAAM,GACNx8E,SAAS,GAEb6vJ,QAAS,CACL7vJ,SAAS,GAEbshL,OAAQ,CACJthL,SAAS,GAEbq8N,yBAAyB,GAG7BrC,aAAc,SAASp/N,EAASutN,GAC5Bz0N,KAAKoyP,sBAAsBlrP,GAC3BlH,KAAKs8J,UAAY,IAAI01F,EAAgBhyP,KAAK6L,QAAQ,GAAI3E,EAASutN,EAAc,CACzEngG,SAAU,IAAI29H,EAAsBjyP,MACpCsK,OAAQtK,KACRu9I,IAAKv9I,KAAKumO,YAIlB6rB,sBAAuB,SAASlrP,GAC5B,IAAImrP,EAAmBnrP,EAAQ4a,WAAa,GACxCve,EAAU5C,EAAM4C,QAChB+uP,EAAU/uP,EAAQkb,MAClB8zO,EAAYhvP,EAAQye,QAAQqB,QAEhC7a,EAAW6pP,EAAkB,CACzBjB,kBAAmBiB,EAAiBvhO,WACpC+gO,cAAeQ,EAAiBvhO,WAChCu/N,UAAWiC,IAAYC,KAI/BptB,gBAAiB,SAAS/hD,GACtB,IAAIl8K,EAAUk8K,GAAe,GACzBtyJ,EAAa5pB,EAAQ4pB,WACrB0hO,EAAqB1hO,GAAcA,EAAW0qC,gBAC9Ck0L,EAAW,GAAGryO,OAAOnW,EAAQwmL,cAAc,GAE3CtnJ,GADcl/B,EAAQ4a,WAAa,IACdskB,OACrBqsN,EAAYrsN,GAAUA,EAAOjI,MAAQiI,EAAOhI,GAEhD,GAAIo0N,GAAsBC,EAAW,CACjC,IAAIx8N,EAAS,GAAG5Y,OAAOyT,EAAWmF,QAAU,IAExCkI,EAAOx9B,EAAM4c,UAAU6oB,EAAOjI,MAC9BC,EAAKz9B,EAAM4c,UAAU6oB,EAAOhI,IAC5Bs0N,EAAY,IAAI5oO,EAAQk2J,iBAAiBx3K,EAAW,CACpDmxK,SAAU,OACX+1E,EAAU,CACTv1E,WAAY,CAACh8I,EAAMC,KACnBz9B,GAEJmwB,EAAWmF,OAAS08N,EAAYD,EAAU9+L,QAAQz9C,IAAKioB,GAAI/gB,OAAO4Y,GAGtEu+L,EAAMzsN,GAAGo9N,gBAAgB56N,KAAKvK,KAAMojL,IAGxCwvE,oBAAqB,SAASjuP,GAC1B3E,KAAKs8J,UAAY33J,EAAE2F,OACnBtK,KAAKkH,QAAUvC,EAAE2F,OAAOpD,QACxBlH,KAAK6yP,WAAa7yP,KAAK8hB,UAAYnd,EAAEmd,UACrC9hB,KAAK8yP,4BAGTA,yBAA0B,WACtB,IAAIT,EAAmBryP,KAAKkH,QAAQ4a,UAChCivD,EAAWshL,EAAiBthL,SAC5BgiL,EAAYV,EAAiBvhO,WAE7BiiO,IACA/yP,KAAKgzP,6BAA+BhzP,KAAKgzP,8BAAgChzP,KAAKizP,wBAAwBzpP,KAAKxJ,MAC3GA,KAAKkzP,qBAAuBvyP,EAAMkN,KAAKE,WAClCi5C,OAAO+rM,GACPvpP,KAAKszC,EAAQ98C,KAAKgzP,8BAElBh+H,EAAQjkD,KACVA,EAAW/wE,KAAKkH,QAAQ6pE,UAGvBA,GACA/wE,KAAKkzP,qBAAqB/tL,UAKtCguL,qBAAsB,SAASrkN,EAAQjhC,GACnC,IAAI8tL,EAAU0C,EACVo6B,EAAe3pL,EAAOtnC,OAE1B,IAAKm0L,EAAW,EAAGA,EAAW88B,EAAc98B,KACxC0C,EAAgBvvJ,EAAO6sJ,IAEL32J,MAAQmqN,GAAkBnvP,KAAKi/N,YAAY5gC,KACzDA,EAAcxwL,KAAOA,IAKjColP,wBAAyB,WACrB,IAGIhgD,EAGA/E,EACAklD,EAPAxkF,EAAQ5uK,KACR+mB,EAAW6nJ,EAAMtS,UACjB0iD,EAAepwC,EAAM1nK,QAAQwmL,aAE7B2lE,EAAar0C,EAAax3M,OAC1BqG,EAAO+gK,EAAMskF,qBAAqBx7N,OAStC,IALA13B,KAAKmzP,qBAAqBvkF,EAAM1nK,QAAQ4nC,OAAQjhC,GAC5C+gK,EAAM22D,eACNvlO,KAAKmzP,qBAAqBvkF,EAAM22D,cAAe13N,GAG9ColM,EAAS,EAAGA,EAASogD,EAAYpgD,KAClC/E,EAAc8Q,EAAa/L,IAEXtlH,MAAQuhK,IAChBhhD,EAAY9rM,MAAQ+sP,GACpBvgF,EAAMs5D,kBAAkBh6B,EAAargM,EAAMolM,GAC3CmgD,EAAiBllD,EAAY/zB,YAE7B+zB,EAAY/zB,WAAai5E,GAKrC,GAAIrsO,EAAS+uM,OAAQ,CACjB,IAAIh0M,EAAY9hB,KAAK8hB,UACrBA,EAAU6xL,SACV7xL,EAAU6wM,aAEL/jD,EAAM1nK,QAAQ4pB,YAAe89I,EAAM1nK,QAAQ4pB,YAAc89I,EAAMr/F,aAChEztD,EAAUkuO,iBAKtB3qB,gBAAiB,WACb7Q,EAAMzsN,GAAGs9N,gBAAgB96N,KAAKvK,MAC1BA,KAAKs8J,WACLt8J,KAAKs8J,UAAUy1F,2BAIvBrsB,eAAgB,WACZlR,EAAMzsN,GAAG29N,eAAen7N,KAAKvK,MAE7BA,KAAKuvE,YAAa,GAGtBh+C,WAAY,SAASrqB,GACjBlH,KAAKszP,6BACLtzP,KAAKoyP,sBAAsBlrP,GAC3BlH,KAAKs8J,UAAUo1F,mBACfl9B,EAAMzsN,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,IAGnCqsP,mBAAoB,SAAS5uP,GACzB3E,KAAK8wB,WAAWmF,OAAO08N,EAAYhuP,EAAEw5B,KAAMx5B,EAAEy5B,MAGjD+hI,iBAAkB,SAAS/rJ,GACvB,GAAI0V,EAAQuL,QAAQ,kBAAmBjhB,GAAQ,CAC3C,IAAI0c,EAAa9wB,KAAK8wB,WAEtB,OADyBA,GAAcA,EAAW5pB,QAAQs0D,iBAC7Bx7D,KAAKkH,QAAQ4a,UAAUgP,WAGxD,OAAO0jM,EAAMzsN,GAAGo4J,iBAAiB51J,KAAKvK,KAAMoU,IAGhDk/O,2BAA4B,WACxB,IAAIE,EAAsBxzP,KAAKkzP,qBAC3BM,IACAA,EAAoBvpP,OAAO6yC,EAAQ98C,KAAKgzP,qCACjChzP,KAAKkzP,uBAIpBlxP,QAAS,WACLwyN,EAAMzsN,GAAG/F,QAAQuI,KAAKvK,MACtBA,KAAKszP,gCAMb,SAASX,EAAYx0N,EAAMC,GACvB,MAAO,CAAC,CACJnZ,MAAO,OAAQ+9B,SAAU,MAAOt6C,MAAOy1B,GACxC,CACClZ,MAAO,OAAQ+9B,SAAU,KAAMt6C,MAAO01B,IAN9CtU,EAAQH,GAAGqN,OAAOw6N,GAtPtB,CAgQG1wP,OAAOH,MAAM+G,QASF/G,OASd,WAGAG,OAAOH,MAAMmpB,QAAUhpB,OAAOH,MAAMmpB,SAAW,GAC/C,IAAIA,EAAUnpB,MAAMmpB,QAChB00I,EAAY10I,EAAQ00I,UACpBg2D,EAAQ1qM,EAAQ0qM,MAChB7nI,EAAc7iE,EAAQ6iE,YACtBnkF,EAAashB,EAAQthB,WAIrBirP,EAAkB3pO,EAAQu9L,cAActkN,OAAO,CAC/CwkN,YAAa,SAASnmB,EAAQjsB,GAC1B,IACI/iI,EADOpyC,KAAKyyK,SAASib,aACLxmL,QAAQkrC,SACxB68F,EAAQ78F,EAAW,CACnBE,WAAY,OACZF,SAAU,UACV,CACAE,WAAY,SACZF,SAAU,UAWd,MAAO,CACHioF,MAPAjoF,EACQ,IAAItoB,EAAQkwG,MAAMh6H,KAAKyyK,SAASv5H,IAAIikC,GAAIg4F,EAAK53F,SAASp5E,GAEtD,IAAI2lB,EAAQkwG,MAAMm7C,EAAK53F,SAASn4E,GAnBnC,GAwBL6pI,MAAOA,IAIfu4E,eAAgB,SAASntF,EAAO86C,GAC5B,OAAOn1K,KAAKunN,YAAY,GAAIpyC,MAMhCu+E,EAAe,CAAEl1F,EAAUq3B,IAAKr3B,EAAUw3B,QAE9C,SAAS7oL,EAAKgoC,GAEV,IADA,IAAI8d,EAAQ,GACHrpD,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IAAO,CAC5C,IAAI85B,EAAQyR,EAASvrC,GACrBqpD,EAAMrpD,GAAO85B,EAAMj3B,MAAMI,QACzB62B,EAAMj3B,MAAMI,QAAU,OAG1B,OAAOomD,EAGX,SAAS/lD,EAAKioC,EAAU8d,GACpB,IAAK,IAAIrpD,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IACrCurC,EAASvrC,GAAK6C,MAAMI,QAAUomD,EAAMrpD,GAI5C,SAAS+pP,EAAWjrP,GAChB,OAAOohB,EAAQgrC,SAASpsD,GAAS,CAAEA,GAAUA,EAGjD,IAAIkrP,EAAYp/B,EAAMzxN,OAAO,CACzBoyN,iBAAkB,SAAStpN,GACvBie,EAAQvF,SAAS1Y,EAAS,gBAG9B6oN,aAAc,SAAS7oN,GACnB2oN,EAAMzsN,GAAG2sN,aAAanqN,KAAKvK,KAAM6L,GAEjC7L,KAAK6zP,cAAgBxwP,KAAKkN,MAAMo8E,EAAY9gF,GAASmB,QAGzD+kB,QAAS,WACL,IAAIlmB,EAAU7L,KAAK6L,QACfonD,EAAQ9lD,EAAKtB,EAAQ43B,YAEzBzjC,KAAK6zP,cAAgBxwP,KAAKkN,MAAMo8E,EAAY9gF,GAASmB,OAErDE,EAAKrB,EAAQ43B,WAAYwvB,GAEzBuhK,EAAMzsN,GAAGgqB,QAAQxnB,KAAKvK,OAG1Bi5N,cAAe,WACX,IAAIrI,EAAe5wN,KAAKkH,QACpB4sP,EAAQ9zP,KAAKs2N,eACby9B,EAAe5mP,EAAK2mP,EAAMrwN,YAE1B/wB,EAAQtD,SAAS0O,cAAc,QACnCpL,EAAMsL,UAAY,SAElB81O,EAAM51O,YAAYxL,GAElB,IAAIxL,EAAUsB,EAAW,CACrBwE,MAAOhN,KAAKg0P,WACZrnP,OAAQggF,EAAYmnK,GAAOnnP,OAC3BgS,YAAaiyM,EAAajyM,aAC3BiyM,EAAa1gC,UAAW,CACvB+jE,QAAQ,EACRhlH,OAAO,IAgBX,OAbAtiD,EAAYmnK,EAAO,CACf9mP,MAAO9F,EAAQ8F,MACfL,OAAQzF,EAAQyF,SAGpBmnP,EAAMz1O,YAAY3L,GAElBxF,EAAK4mP,EAAMrwN,WAAYswN,GAEnB/zP,KAAK2gF,SACL3gF,KAAK2gF,QAAQp3D,SAGVriB,GAGXovN,aAAc,WACV,IAAKt2N,KAAK8zP,MAAO,CACb,IAAIA,EAAQ9zP,KAAK8zP,MAAQ1kP,SAAS0O,cAAc,QAChD9d,KAAK6L,QAAQqS,YAAY41O,GAE7B,OAAO9zP,KAAK8zP,OAGhB96B,gBAAiB,SAASE,GACtB,IAAIzmD,EAAW+hD,EAAMzsN,GAAGixN,gBAAgBzuN,KAAKvK,KAAMk5N,GAGnD,OAFAl5N,KAAKg0P,WAAah0P,KAAK6zP,eAAiB7zP,KAAKk0P,gBAAgBzhF,GAEtDA,GAGXyhF,gBAAiB,SAASzhF,GAOtB,IANA,IAAIvrK,EAAUlH,KAAKkH,QACfyxC,EAAS7uB,EAAQy1I,WAAWr4J,EAAQgpL,UAAUv3I,QAC9C81J,EAASh8B,EAASg8B,OAClBqlD,EAAQ9zP,KAAKs2N,eACb1vK,EAAQ,EAEHr/C,EAAI,EAAGA,EAAIknM,EAAOjnM,OAAQD,IAAK,CACpC,IAAI4sP,EAAe1lD,EAAOlnM,GACtBw3M,GAAeo1C,EAAajtP,QAAQ4nC,QAAU,IAAI,GACtD,GAAKiwK,EAAL,CAIA,GAAIA,EAAYr5M,OAAS84J,EAAUq3B,IAC/B,OAhHO,IAmHX,GAAIkpB,EAAYr5M,OAAS84J,EAAUw3B,OAC/B,OAnHU,IAsHd,GAAI+oB,EAAYr5M,OAAS84J,EAAUk4B,IAC/B,OAAO/pG,EAAYmnK,GAAOnnP,OAG9B,IAAI+gL,EAAeymE,EAAazmE,aAChC,GAAIA,EAAc,CACd,IAAIoe,EAAcpe,EAAaxR,oBACzBi4E,EAAajtP,QAAQk1L,WAAatyK,EAAQuL,QAAQ0pL,EAAYr5M,KAAM,CAAE84J,EAAU03B,OAAQ13B,EAAUg5B,kBAAqB28D,EAAa74D,cAAc9zL,OAAS,GAEjKo/C,EAAQvjD,KAAKuV,IAAIguC,EAAOklJ,KAIhC,IAAIr8L,EAAOm3C,EAAQ1/C,EAAQktP,WAK3B,OAJI3kP,EAAO,IACPA,GAAQkpC,EAAO9sB,KAAO8sB,EAAO7sB,OAG1Brc,GAGX2oN,qBAAsB,SAASlxN,GAC3B,OAAO,IAAIusP,EAAgBzzP,KAAK0xL,UAAWxqL,MAInD0sP,EAAUS,iBAAmB,SAASjxE,GAClC,IAAIl8K,EAAUysP,EAAWvwE,GA6BzB,OA1BIl8K,EADA4iB,EAAQ7mB,QAAQiE,GACN,CAAE0kL,eAAgB,CAAE/9K,KAAM3G,IAE1BsB,EAAW,GAAItB,IAGhB4nC,SACT5nC,EAAQ4nC,OAAS,CAAE,CAAEjhC,KAAM8lP,EAAWzsP,EAAQ2G,SAGlDrF,EAAWtB,EAAS,CAChB0kL,eAAgB,CACZlmL,KAAMwB,EAAQxB,SAIlBokB,EAAQuL,QAAQnuB,EAAQ4nC,OAAO,GAAGppC,KAAMguP,IACxC5pO,EAAQuL,QAAQnuB,EAAQ0kL,eAAelmL,KAAMguP,MAC7CxsP,EAAUsB,EAAW,GAAI,CACrBklL,aAAc,CACV0C,UAAW,CACP9jL,SAAS,KAGlBpF,IAGAA,GAGX4iB,EAAQu2I,kBAAkBuzF,EAAW,CACjC1jE,UAAW,CACPv3I,OAAQ,GAEZ80I,aAAc,CACVnhL,SAAS,EACTgnK,eAAgB,CACZhnK,SAAS,GAEbwuK,UAAW,CACPyH,aAAa,IAGrBqJ,eAAgB,CACZlmL,KAAM,OACNmmL,KAAM,CACFne,KAAM,CACF1gK,MAAO,KAGfi/K,IAAK,CACD/5C,OAAO,GAEX6D,QAAS,EACT/oI,MAAO,GACPk6J,QAAS,CACLjkB,SAAU,MAEdsjB,UAAW,CACPj6J,SAAS,GAEbm7J,OAAQ,CACJz6J,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,IAGjB6vJ,QAAS,CACL7vJ,SAAS,EACT2vJ,QAAQ,GAEZyxB,aAAc,CACV0C,UAAW,CACP9jL,SAAS,EACT6vJ,QAAS,CACL7vJ,SAAS,KAIrBshL,OAAQ,CACJthL,SAAS,GAEbqS,aAAa,EAEby1O,WAAY,EAEZ7iD,MAAO,CAAE,CAAEz3J,MAAM,MAGrBn5C,MAAM6H,WAAW7H,MAAMmpB,QAAS,CAC5B8pO,UAAWA,IA3Rf,GAgSA,SAAUjxP,GAEV,IAAImnB,EAAUnpB,MAAMmpB,QAChB0qM,EAAQ1qM,EAAQH,GAAG6qM,MACnB8/B,EAAiBxqO,EAAQ8pO,UACzB7uB,EAAwBj7M,EAAQi7M,sBAEhChiO,EAASJ,EAAEI,OAEX6wP,EAAYp/B,EAAMzxN,OAAO,CAEzBoF,KAAM,SAAS0D,EAASu3K,GACpB,IAAIl8K,EAAUk8K,EACVl8K,aAAmBvG,MAAMkN,KAAKD,kBAC9B1G,EAAU,CAAE0kL,eAAgB,CAAE/9K,KAAM3G,KAGxCstN,EAAMzsN,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAASyoP,EAAeD,iBAAiBntP,KAGtEo/N,aAAc,SAASp/N,EAASutN,GAC5Bz0N,KAAKs8J,UAAY,IAAIg4F,EAAet0P,KAAK6L,QAAQ,GAAI3E,EAASutN,EAAc,CACxEngG,SAAU,IAAIywG,EAAsB/kO,MACpCsK,OAAQtK,KACRu9I,IAAKv9I,KAAKumO,YAIlB1P,eAAgB,WACZ,OAAO,IAAI09B,EAAiBv0P,KAAK6L,QAAS9I,EAAO,GAAI/C,KAAKkH,QAAQi1J,QAAS,CACvE5e,IAAKv9I,KAAKumO,aAIlBr/N,QAAS,CACL9E,KAAM,YACN8tL,UAAW,CACPv3I,OAAQ,GAEZ80I,aAAc,CACVnhL,SAAS,EACTgnK,eAAgB,CACZhnK,SAAS,GAEbwuK,UAAW,CACPyH,aAAa,IAGrBqJ,eAAgB,CACZlmL,KAAM,OACNmmL,KAAM,CACFne,KAAM,CACF1gK,MAAO,KAGfi/K,IAAK,CACD/5C,OAAO,GAEX6D,QAAS,EACT/oI,MAAO,GACPk6J,QAAS,CACLjkB,SAAU,MAEdsjB,UAAW,CACPj6J,SAAS,GAEbm7J,OAAQ,CACJz6J,MAAO,GAEX8+K,QAAS,CACLr8K,KAAM,EACNnD,SAAS,IAGjB6vJ,QAAS,CACL7vJ,SAAS,EACT2vJ,QAAQ,GAEZyxB,aAAc,CACV0C,UAAW,CACP9jL,SAAS,EACT6vJ,QAAS,CACL7vJ,SAAS,KAIrBshL,OAAQ,CACJthL,SAAS,GAEbqS,aAAa,EAEby1O,WAAY,EAEZ7iD,MAAO,CAAC,CACJz3J,MAAM,OAKlBhwB,EAAQH,GAAGqN,OAAO48N,GAElB,IAAIW,EAAmBzqO,EAAQ86F,QAAQ7hH,OAAO,CAC1CmE,QAAS,CACLoqF,UAAW,CACP5qE,SAAU,IAIlBqjN,aAAc,WACN/pO,KAAK6L,SACL7L,KAAK6L,QAAQsB,OAAO4pB,YAKhCjN,EAAQyqO,iBAAmBA,EAnH3B,CAqHGzzP,OAAOH,MAAM+G,QASF/G,OAEd,WAEI,IAAIA,EAAQG,OAAOH,MACf6H,EAAa7H,EAAM6H,WAMvB,IAAIoqC,EAAMxkC,KAAKwkC,IACVA,IACDA,EAAM,WACF,OAAO,IAAIxkC,MAAOnF,YAqH1BT,EAAW7H,EAAO,CACdglH,KAAM,CACF/yE,IAAKA,EACL4hN,UA1GR,SAAmBngK,GACf,IAAI99E,EAAS,GAEb,GAAI89E,EAGA,IAFA,IAAIrkF,EAAQrP,EAAMssB,UAAUonE,GAAKzpF,MAAM,KAE9BrD,EAAI,EAAGA,EAAIyI,EAAMxI,OAAQD,IAC9BgP,EAAO5U,KAAK,SAAWqO,EAAMzI,IAIrC,OAAOgP,EAAO1L,KAAK,MAgGf4pP,WAnHR,SAAoBhlP,GAKhB,MAJoB,iBAATA,IACPA,GAAQ,MAGLA,GA+GHilP,IAjIR,SAAahsP,GACT,OAAOA,EAAQA,GAiIXisP,cAlER,SAAuBtkI,GACnBA,EAAIA,EAAE/3G,cAWN,IAVA,IAAI5M,EAAS,CACTnE,EAAG,EACHkK,EAAG,EACHrM,EAAG,GACHsrH,EAAG,GACHhsH,EAAG,IACHF,EAAG,IACHQ,EAAG,KAEH0D,EAAQ,EAAGi3C,EAAO,EACbp4C,EAAI,EAAGA,EAAI8oH,EAAE7oH,SAAUD,EAAG,CAC/B,IAAIkK,EAAI/F,EAAO2kH,EAAEvlH,OAAOvD,IACxB,IAAKkK,EACD,OAAO,KAEX/I,GAAS+I,EACLA,EAAIkuC,IACJj3C,GAAS,EAAIi3C,GAEjBA,EAAOluC,EAEX,OAAO/I,GA4CHosH,cAhGR,SAAuBhE,GAkBnB,IAjBA,IAAI54G,EAAW,CACX,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,OAAW,GAAO,OAAW,IAAO,OAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,IAAO,KAEPY,EAAS,CAAE,IACA,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACzC,GAAM,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACzC,EAAM,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GACpDi8G,EAAQ,GACLjE,EAAI,GACHA,EAAIh4G,EAAO,GACXA,EAAOjD,SAEPk/G,GAAS78G,EAASY,EAAO,IACzBg4G,GAAKh4G,EAAO,IAGpB,OAAOi8G,GAuEH6/H,QA1CR,SAAiBznM,GACb,IAAIxvB,EAAQl9B,OAAOumD,OAAO,MAC1B,OAAO,WAIH,IAHA,IAAI5/C,EAAcC,UAEdsoB,EAAK,GACApoB,EAAIF,UAAUG,SAAUD,GAAK,GAClCooB,GAAM,IAAMvoB,EAAYG,GAE5B,OAAOooB,KAAMgO,EAAQA,EAAMhO,GAAOgO,EAAMhO,GAAMw9B,EAAE/kD,MAAMpI,KAAMqH,aAkC5DwtP,gBA9BR,SAAyBp9O,GACrB,OAAOq9O,EAAkB/nP,KAAK0K,IA8B1Bs9O,SA3BR,SAAkB5nM,EAAGngC,GACjB,IACI,OAAOmgC,EAAE5iD,KAAKyiB,GAAK,SAAStkB,GACxB,MAAM,IAAIssP,EAAOtsP,MAEvB,MAAMygJ,GACJ,GAAIA,aAAc6rG,EACd,OAAO7rG,EAAGzgJ,MAEd,MAAMygJ,EAEV,SAAS6rG,EAAOtsP,GACZ1I,KAAK0I,MAAQA,OAmBrB,IAAIosP,EAAoB,IAAI7mP,OAAO,s2JA/IvC,GAmJA,SAAUtL,EAAGC,GAET,IAAIQ,EAAOC,KACP6T,EAAM9T,EAAK8T,IACXm7I,EAAOjvJ,EAAKivJ,KACZ5+G,EAAQrwC,EAAKqwC,MACb8kF,EAAMn1H,EAAKm1H,IACX3/G,EAAMxV,EAAKwV,IACXzC,EAAM/S,EAAK+S,IACXqiH,EAAMp1H,EAAKo1H,IACXhK,EAAMprH,EAAKorH,IAEX7tH,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAEdkiB,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WAEnBm9G,EAAOhlH,EAAMopB,QAAQ47F,KACrBqP,EAAUrP,EAAKqP,QACfQ,EAAM7P,EAAK6P,IACXuB,EAAMpR,EAAKoR,IACXhhH,EAAQ4vG,EAAK5vG,MACbmhH,EAAiBvR,EAAKuR,eAEtBw9H,EAAM/zP,EAAMglH,KAAK+uI,IAGjBO,EAAWrtP,EAAM7E,OAAO,CACxBoF,KAAM,SAAS+sP,EAAKC,GACS,IAArB9tP,UAAUG,QACVxH,KAAKk1P,IAAMA,EAAI,GACfl1P,KAAKm1P,IAAMD,EAAI,KAEfl1P,KAAKk1P,IAAMA,EACXl1P,KAAKm1P,IAAMA,IAInBC,oBAAqB,IACrBC,qBAAsB,MACtBC,mBAAoB,EACpBC,OAAQ,gBAER5hM,QAAS,WACL,MAAO,CAAC3zD,KAAKk1P,IAAKl1P,KAAKm1P,MAG3BrkM,OAAQ,SAAS0kM,GACb,OAAOA,GAAOA,EAAIN,MAAQl1P,KAAKk1P,KAAOM,EAAIL,MAAQn1P,KAAKm1P,KAG3DhuP,MAAO,WACH,OAAO,IAAI8tP,EAASj1P,KAAKk1P,IAAKl1P,KAAKm1P,MAGvCp/O,MAAO,SAASC,GAGZ,OAFAhW,KAAKm1P,IAAMp/O,EAAM/V,KAAKm1P,IAAKn/O,GAC3BhW,KAAKk1P,IAAMn/O,EAAM/V,KAAKk1P,IAAKl/O,GACpBhW,MAGXgsB,KAAM,WAGF,OAFAhsB,KAAKm1P,IAAMn1P,KAAKm1P,IAAM,IACtBn1P,KAAKk1P,IAAMl1P,KAAKk1P,IAAM,GACfl1P,MAGXw6H,WAAY,SAAS1iE,EAAM29L,GACvB,OAAOz1P,KAAK01P,cAAc59L,EAAM29L,GAAOj4K,UAG3CpwE,YAAa,SAASowE,EAAUm4K,EAASF,GACrCE,EAAU5+H,EAAI4+H,GACdF,EAAQA,GAAS3rO,EAAQxP,IAAIs7O,OAAOC,MAEpC,IAAIC,EAAU/+H,EAAI/2H,KAAKk1P,KACnBa,EAAUh/H,EAAI/2H,KAAKm1P,KACnBa,EAAOx4K,EAAW78E,EAAMmpB,QAAQxP,IAAIs7O,OAAOC,MAAM3wP,EAEjDgwP,EAAM9xP,EAAK0wI,KAAKtb,EAAIs9H,GAAWv9H,EAAIy9H,GACnBz9H,EAAIu9H,GAAWt9H,EAAIw9H,GAAQz9H,EAAIo9H,IAE/CR,EAAMY,EAAUtiN,EAAM+kF,EAAIm9H,GAAWn9H,EAAIw9H,GAAQz9H,EAAIu9H,GAC/Bv9H,EAAIy9H,GAAQx9H,EAAIs9H,GAAWt9H,EAAI08H,IAE1D,OAAO,IAAID,EAASz/H,EAAI0/H,GAAM1/H,EAAI2/H,KAGrCO,cAAe,SAAS59L,EAAM29L,GAI1B,GAHA39L,EAAOm9L,EAASjuM,OAAO8Q,GACvB29L,EAAQA,GAAS3rO,EAAQxP,IAAIs7O,OAAOC,OAE/B/9L,GAAQ93D,KAAKmH,QAAQ4O,MAAM,GAAG+6C,OAAOgH,EAAK3wD,QAAQ4O,MAAM,IACzD,MAAO,CACHynE,SAAU,EACVy4K,YAAa,EACbC,UAAW,GAmCnB,IA5BA,IAeIC,EAKAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EA1BAxxP,EAAIuwP,EAAMvwP,EACVigB,EAAIswO,EAAMtwO,EACVgoC,EAAIsoM,EAAMtoM,EAEV5oD,EAAIwyH,EAAIj/D,EAAKq9L,IAAMn1P,KAAKm1P,KAExBwB,EAAKtkG,GAAM,EAAIllG,GAAKqhE,EAAIuI,EAAI/2H,KAAKk1P,OACjC0B,EAAQp+H,EAAIm+H,GACZE,EAAQt+H,EAAIo+H,GAEZG,EAAKzkG,GAAM,EAAIllG,GAAKqhE,EAAIuI,EAAIj/D,EAAKo9L,OACjC6B,EAAQv+H,EAAIs+H,GACZE,EAAQz+H,EAAIu+H,GAEZG,EAAS1yP,EAGTgD,EAAIvH,KAAKo1P,oBACT8B,GAAY,GAURA,GAAa3vP,KAAM,GAAG,CAC1B6uP,EAAY59H,EAAIy+H,GAChBZ,EAAY99H,EAAI0+H,GAChBX,EAAOlzP,EAAKq6E,KACRi3K,EAAIsC,EAAQZ,GAAa1B,EAAImC,EAAQE,EAAQH,EAAQI,EAAQX,IAIjEK,EAAQjjN,EAAM6iN,EADdE,EAAOI,EAAQG,EAAQF,EAAQG,EAAQX,GAGvC,IAAIc,EAAON,EAAQG,EAAQZ,EAAYE,EAEvCG,EAAS,EACK,KAFdF,EAAQ,EAAI7B,EAAIyC,MAGZV,EAASD,EAAO,EAAII,EAAQG,EAAQR,GAGxCJ,EAAac,EACb,IAAI5c,EAAIltL,EAAI,GAAKopM,GAAS,EAAIppM,GAAK,EAAI,EAAIopM,IAC3CU,EAAS1yP,GAAK,EAAI81O,GAAKltL,EAAIgqM,GACvBT,EAAQrc,EAAIic,GAAQG,EAASpc,EAAImc,GAAa,EAAI9B,EAAI+B,GAAZ,KAG9CS,EAAYhgP,EAAI+/O,EAASd,IAAen2P,KAAKq1P,qBAGjD,IAAI+B,EAAKb,GAAS7B,EAAIxvP,GAAKwvP,EAAIvvO,IAAMuvO,EAAIvvO,GACrCi1N,EAAI,EAAIgd,EAAK,OAAS,KAAOA,GAAaA,GAAM,IAAM,IAAMA,GAAxB,MACpCld,EAAIkd,EAAK,MAAQ,IAAMA,GAAaA,GAAM,GAAK,GAAKA,GAAtB,MAC9BC,EAASnd,EAAIoc,GAAQG,EAASvc,EAAI,GAClCsc,GAAa,EAAI9B,EAAI+B,GAAZ,GAAuBvc,EAAI,EAAIuc,GAAe,EAAI/B,EAAI4B,GAAZ,IAA2B,EAAI5B,EAAI+B,GAAZ,KAG1ER,EAAcxiN,EAAMujN,EAAQZ,EAAWS,EAAQE,EAAQH,EAAQI,EAAQX,GACvEH,EAAYziN,EAAMojN,EAAQT,GAAYQ,EAAQI,EAAQH,EAAQE,EAAQV,GAE1E,MAAO,CACH74K,SAAUznE,EAAMoP,EAAIi1N,GAAKsc,EAAQW,GAASr3P,KAAKs1P,oBAC/CW,YAAazgI,EAAIygI,GACjBC,UAAW1gI,EAAI0gI,OAM3BjB,EAASltP,GAAGmJ,SAAW,WACnB,OAAOvQ,EAAM+P,OAAO1Q,KAAKu1P,OAAQv1P,KAAKk1P,IAAKl1P,KAAKm1P,MAGpDF,EAASqC,WAAa,SAASC,GAC3B,OAAO,IAAItC,EAASsC,EAAG,GAAIA,EAAG,KAGlCtC,EAASuC,WAAa,SAASD,GAC3B,OAAO,IAAItC,EAASsC,EAAG,GAAIA,EAAG,KAGlCtC,EAASjuM,OAAS,SAAS9hD,EAAGigB,GAC1B,GAAI6vG,EAAQ9vH,GACR,OAAIA,aAAa+vP,EACN/vP,EAAEiC,QACmB,IAArBE,UAAUG,QAA6B,IAAbtC,EAAEsC,OAC5BytP,EAASuC,WAAWtyP,GAEpB,IAAI+vP,EAAS/vP,EAAGigB,IAKnC,IAAIsyO,EAAS7vP,EAAM7E,OAAO,CACtBoF,KAAM,SAASuvP,EAAIC,GACfD,EAAKzC,EAASjuM,OAAO0wM,GACrBC,EAAK1C,EAASjuM,OAAO2wM,GAEjBD,EAAGvC,IAAM,IAAMwC,EAAGxC,IAAM,KACxBuC,EAAGxC,IAAM,GAAKyC,EAAGzC,IAAM,IACvBl1P,KAAK23P,GAAKD,EACV13P,KAAK03P,GAAKC,IAEV33P,KAAK23P,GAAKA,EACV33P,KAAK03P,GAAKA,IAIlBviO,SAAU,SAASqgO,GACf,IAAIkC,EAAK13P,KAAK03P,GACVC,EAAK33P,KAAK23P,GACVxC,EAAMj+H,EAAes+H,EAAIL,IAAKK,EAAI,IAClCN,EAAMh+H,EAAes+H,EAAIN,IAAKM,EAAI,IAEtC,OAAOA,GACAL,EAAM,KAAOuC,EAAGvC,IAAM,KACtBA,EAAM,KAAOwC,EAAGxC,IAAM,KACtBD,EAAM,IAAMyC,EAAGzC,IAAM,IACrBA,EAAM,IAAMwC,EAAGxC,IAAM,IAGhC33K,OAAQ,WACJ,IAAIm6K,EAAK13P,KAAK03P,GACVC,EAAK33P,KAAK23P,GAEVxC,EAAMuC,EAAGvC,KAAOwC,EAAGxC,IAAMuC,EAAGvC,KAAO,EACnCD,EAAMwC,EAAGxC,KAAOyC,EAAGzC,IAAMwC,EAAGxC,KAAO,EACvC,OAAO,IAAID,EAASC,EAAKC,IAG7ByC,YAAa,SAASC,GAElB,IADA,IAAIthP,GAAS,EACJhP,EAAI,EAAGA,EAAIswP,EAAKrwP,OAAQD,IAC7BgP,EAASA,GAAUvW,KAAKm1B,SAAS0iO,EAAKtwP,IAG1C,OAAOgP,GAGXuhP,QAAS,SAAStC,GACd,IAAIkC,EAAK13P,KAAK03P,GACVC,EAAK33P,KAAK23P,GACVxC,EAAMj+H,EAAes+H,EAAIL,IAAKK,EAAI,IAClCN,EAAMh+H,EAAes+H,EAAIN,IAAKM,EAAI,IAEtCkC,EAAGvC,IAAMh/O,EAAIuhP,EAAGvC,IAAKA,GACrBuC,EAAGxC,IAAMt8O,EAAI8+O,EAAGxC,IAAKA,GAErByC,EAAGxC,IAAMv8O,EAAI++O,EAAGxC,IAAKA,GACrBwC,EAAGzC,IAAM/+O,EAAIwhP,EAAGzC,IAAKA,IAGzB6C,WAAY,SAASF,GACjB,IAAK,IAAItwP,EAAI,EAAGA,EAAIswP,EAAKrwP,OAAQD,IAC7BvH,KAAK83P,QAAQD,EAAKtwP,KAI1BywP,MAAO,WACH,IAAIN,EAAK13P,KAAK03P,GACVC,EAAK33P,KAAK23P,GAEd,MAAO,CAAED,GAAI13P,KAAK03P,GAAIzmM,GAAI,IAAIgkM,EAASyC,EAAGxC,IAAKyC,EAAGxC,KAC1CwC,GAAI33P,KAAK23P,GAAIM,GAAI,IAAIhD,EAAS0C,EAAGzC,IAAKwC,EAAGvC,OAGrDxhM,QAAS,WACL,IAAI+jM,EAAK13P,KAAK03P,GACVC,EAAK33P,KAAK23P,GAEd,MAAO,CAACD,EAAI,IAAIzC,EAASyC,EAAGxC,IAAKyC,EAAGxC,KAC5BwC,EAAI,IAAI1C,EAAS0C,EAAGzC,IAAKwC,EAAGvC,OAGxC5yF,SAAU,SAAS21F,GACf,OAAOl4P,KAAK43P,YAAYM,EAAOvkM,YACxBukM,EAAON,YAAY53P,KAAK2zD,cAIvC8jM,EAAOU,MAAQ,IAAIV,EAAO,CAAC,IAAK,KAAM,EAAE,GAAI,MAE5CA,EAAOzwM,OAAS,SAAS9hD,EAAGigB,GACxB,OAAIjgB,aAAauyP,EACNvyP,EACAA,GAAKigB,EACL,IAAIsyO,EAAOvyP,EAAGigB,GACdjgB,GAAkB,IAAbA,EAAEsC,SAAiB2d,EACxB,IAAIsyO,EAAO,CAACvyP,EAAE,GAAIA,EAAE,IAAK,CAACA,EAAE,GAAIA,EAAE,UADtC,GAMXsD,EAAWshB,EAAS,CAChBxP,IAAK,CACDm9O,OAAQA,EACRxC,SAAUA,KAhTtB,CAoTGn0P,OAAOH,MAAM+G,QAEhB,WACI,IAAI/G,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClB7gB,EAAWlP,EAAMkP,SAEjB81G,EAAOhlH,EAAMopB,QAAQ47F,KACrBuR,EAAiBvR,EAAKuR,eACtBlC,EAAUrP,EAAKqP,QAEfojI,EAAc1nO,EAAO3tB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpBwpB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GACnClH,KAAKuI,aAAarB,GAClBlH,KAAKo0B,MAAQ,GACbp0B,KAAK6L,QAAQ0Y,SAAS,2BAG1Brd,QAAS,CACL9E,KAAM,cACNg2H,UAAW,gBACX4qG,aAAc,SAAU/zM,GAGpB,OAFWA,EAAI2R,OAMvB3K,OAAQ,SAASiiO,EAAQ7nN,GACrBrwC,KAAKq4P,QAAUH,EACfl4P,KAAKywP,MAAQpgN,EACbrwC,KAAKiiP,WAGTh1O,IAAK,SAAS+hC,GACNgmF,EAAQhmF,KACY,iBAATA,IACPA,EAAO,CAAEpO,KAAMoO,IAGnBhvC,KAAKo0B,MAAMzyB,KAAKqtC,GAChBhvC,KAAKiiP,YAIblrN,OAAQ,SAAS6J,GAEb,IADA,IAAIrqB,EAAS,GACJhP,EAAI,EAAGA,EAAIvH,KAAKo0B,MAAM5sB,OAAQD,IAAK,CACxC,IAAIynC,EAAOhvC,KAAKo0B,MAAM7sB,GAClBynC,EAAKpO,OAASA,GACdrqB,EAAO5U,KAAKqtC,GAIpBhvC,KAAKo0B,MAAQ7d,EAEbvW,KAAKiiP,WAGThsL,MAAO,WACHj2D,KAAKo0B,MAAQ,GACbp0B,KAAK6L,QAAQ0gD,SAGjB01L,QAAS,WAIL,IAHA,IAAI1rO,EAAS,GACTysN,EAAenzN,EAAS7P,KAAKkH,QAAQ87N,cAEhCz7N,EAAI,EAAGA,EAAIvH,KAAKo0B,MAAM5sB,OAAQD,IAAK,CACxC,IAAIynC,EAAOhvC,KAAKo0B,MAAM7sB,GAClBq5B,EAAO5gC,KAAKs4P,UAAUtpN,GACb,KAATpO,GACArqB,EAAO5U,KAAKqhO,EAAa,CACrBpiM,KAAMA,KAKdrqB,EAAO/O,OAAS,EAChBxH,KAAK6L,QAAQ0gD,QACRxS,OAAOxjC,EAAO1L,KAAK7K,KAAKkH,QAAQkxH,YAChClrH,OAELlN,KAAK6L,QAAQsB,QAIrBmrP,UAAW,SAAStpN,GAChB,IAAIpO,EAAO,GACP23N,EAAcv4P,KAAKw4P,aAAaxpN,EAAKypN,QAASzpN,EAAK0pN,SACnDC,EAAS34P,KAAK44P,QAAQ5pN,EAAKkpN,QAM/B,OAJIK,GAAeI,IACf/3N,GAAQoO,EAAKpO,MAGVA,GAGX43N,aAAc,SAASriP,EAAKyC,GAOxB,OALAzC,EAAM+gH,EAAe/gH,GAAM7D,OAAOgjH,WAClC18G,EAAMs+G,EAAet+G,EAAKtG,OAAOgjH,WAExBt1H,KAAKywP,MAAQt6O,GAAOnW,KAAKywP,MAAQ73O,GAK9CggP,QAAS,SAAS/sE,GACd,IAAIt1K,GAAS,EAMb,OAJIs1K,IACAt1K,EAASs1K,EAAK12J,SAASn1B,KAAKq4P,UAGzB9hP,KAIf5V,EAAMmpB,QAAQH,GAAGqN,OAAOohO,GAvH5B,CAwHGt3P,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBxG,EAAOvpB,EAAMupB,KAKjB,SAAS2uO,EAAOx5N,GACb,MAAO,qGAAwGA,EAAM,sBAA0BA,EAAM,KAC7I1+B,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAO,aAAej4D,EAAM+3D,UAAW,kBAC3D,YAGP,IAAI0hK,EAAUD,EAAO,MAAQA,EAAO,SAAWA,EAAO,QAAUA,EAAO,QAEnExJ,EAAY3+N,EAAO3tB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS3E,GACpBwpB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GACnClH,KAAKuI,aAAarB,GAElBlH,KAAK6L,QAAQ0Y,SAAS,wBACTw1B,OAAO++M,GACP7vO,GAAG,uBAAc,YAAajpB,KAAK+hF,OAAOv4E,KAAKxJ,OAE5D,IAAIi5H,EAAgBj5H,KAAK6L,QAAQM,SAASE,QAAQ,IAAM1L,EAAMmiB,KAAK,QAAU,KAC7E9iB,KAAK+4P,SAAW9/H,EAAczxH,OAAS,EAAIyxH,EAAgBj5H,KAAK6L,QAChE7L,KAAKmxB,UAAUnxB,KAAK+4P,UAEpB/4P,KAAKkjH,SAAWljH,KAAKkjH,SAAS15G,KAAKxJ,MACnCA,KAAK+4P,SAAS9vO,GAAG,UAAWjpB,KAAKkjH,WAGrCh8G,QAAS,CACL9E,KAAM,YACN42P,QAAS,GAGb3uP,OAAQ,CACJ,OAGJs1E,QAAS,WACL3/E,KAAK+4P,SAAS9/N,IAAI,UAAWj5B,KAAKkjH,WAGtC+1I,KAAM,SAAS7zP,EAAGjB,GACd,IAAI60P,EAAUh5P,KAAKkH,QAAQ8xP,QAC3Bh5P,KAAKoK,QAAQ,MAAO,CAChBhF,EAAGA,EAAI4zP,EACP70P,EAAGA,EAAI60P,KAIfj3K,OAAQ,SAASp9E,GACb,IAAIS,EAAI,EACJjB,EAAI,EACJ00P,EAASl2P,EAAEgC,EAAEg5E,eAEbk7K,EAAOtsP,GAAG,mBACVpI,EAAI,EACG00P,EAAOtsP,GAAG,qBACjBpI,GAAK,EACE00P,EAAOtsP,GAAG,sBACjBnH,EAAI,EACGyzP,EAAOtsP,GAAG,uBACjBnH,GAAK,GAGTpF,KAAKi5P,KAAK7zP,EAAGjB,GACbQ,EAAEwE,kBAGN+5G,SAAU,SAASv+G,GACf,OAAQA,EAAEg9E,OACN,KAAKz3D,EAAKQ,GACN1qB,KAAKi5P,KAAK,EAAG,GACbt0P,EAAEwE,iBACF,MAEJ,KAAK+gB,EAAKU,KACN5qB,KAAKi5P,KAAK,GAAI,GACdt0P,EAAEwE,iBACF,MAEJ,KAAK+gB,EAAKS,MACN3qB,KAAKi5P,KAAK,EAAG,GACbt0P,EAAEwE,iBACF,MAEJ,KAAK+gB,EAAKO,KACNzqB,KAAKi5P,MAAM,EAAG,GACdt0P,EAAEwE,qBAOlBxI,EAAMmpB,QAAQH,GAAGqN,OAAOq4N,GAnG5B,CAqGGvuP,OAAOH,MAAM+G,QAEhB,SAAU/E,GACN,IAAIhC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBxG,EAAOvpB,EAAMupB,KAGjB,SAAS2uO,EAAOx5N,EAAKi4D,GAClB,MAAQ,4GAA+Gj4D,EAAM,iBAAqBA,EAAM,sBAA0BA,EAAM,KAAS1+B,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAMA,EAAMF,UAAW,kBAAsB,YAGjQ,IACI0hK,EAAUD,EAAO,KAAM,QAAUA,EAAO,MAAO,SAQ/CK,EAAcxoO,EAAO3tB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpBwpB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GACnClH,KAAKuI,aAAarB,GAElBlH,KAAK6L,QAAQ0Y,SAAS,6DACTw1B,OAAO++M,GACP7vO,GAAG,yBAAc,YAAajpB,KAAK+hF,OAAOv4E,KAAKxJ,OAE5D,IAAIi5H,EAAgBj5H,KAAK6L,QAAQM,SAASE,QAAQ,IAAM1L,EAAMmiB,KAAK,QAAU,KAC7E9iB,KAAK+4P,SAAW9/H,EAAczxH,OAAS,EAAIyxH,EAAgBj5H,KAAK6L,QAEhE7L,KAAKmxB,UAAUnxB,KAAK+4P,UAEpB/4P,KAAKkjH,SAAWljH,KAAKkjH,SAAS15G,KAAKxJ,MACnCA,KAAK+4P,SAAS9vO,GAAG,UAAWjpB,KAAKkjH,WAGrCh8G,QAAS,CACL9E,KAAM,cACN+2P,SAAU,GAGd9uP,OAAQ,CACJ,UAGJy0D,QAAS,SAASz/B,GACd,IAAI85N,EAAWn5P,KAAKkH,QAAQiyP,SAC5Bn5P,KAAKoK,QAAQ,SAAU,CACnBw6B,MAAOvF,EAAM85N,KAIrBp3K,OAAQ,SAASp9E,GACb,IACI06B,EAAM,EADG18B,EAAEgC,EAAEg5E,eAGNpxE,GAAG,iBACV8yB,GAAO,GAGXr/B,KAAK8+D,QAAQz/B,GACb16B,EAAEwE,kBAGN+5G,SAAU,SAASv+G,GACf,OAAQA,EAAEg9E,OACN,KAAKz3D,EAAKmB,YACV,KAvDD,IAwDC,KAtDE,GAuDErrB,KAAK8+D,QAAQ,GACb,MAEJ,KAAK50C,EAAKoB,aACV,KA5DA,IA6DA,KA3DG,IA4DCtrB,KAAK8+D,SAAS,OAQ9Bn+D,EAAMmpB,QAAQH,GAAGqN,OAAOkiO,GApF5B,CAsFGp4P,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIQ,EAAOC,KACPgvJ,EAAOjvJ,EAAKivJ,KACZ+mG,EAAMh2P,EAAKg2P,IACX1vN,EAAMtmC,EAAKsmC,IACX8uF,EAAMp1H,EAAKo1H,IACX/nG,EAAMrtB,EAAKqtB,IACX+9F,EAAMprH,EAAKorH,IAEX7tH,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAEdkiB,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WAEnBqM,EAAIlU,EAAMi/H,SACV5F,EAAQnlH,EAAEmlH,MAGVi7H,EADMnrO,EAAQxP,IACC26O,SAEftvI,EAAOhlH,EAAMopB,QAAQ47F,KACrBoR,EAAMpR,EAAKoR,IACXvB,EAAM7P,EAAK6P,IACXw/C,EAAQrvD,EAAK+Q,WAGbtB,EAAKhyH,EAAKgyH,GACV8I,EAAW9I,EAAK,EAChBikI,EAAWjkI,EAAK,EAChBD,EAAaC,EAAK,IAGlBygI,EAAQ,CACR3wP,EAAG,QACHigB,EAAG,kBACHgoC,EAAG,qBACHxoD,EAAG,oBAIH20P,EAAW1xP,EAAM7E,OAAO,CACxBoF,KAAM,SAASjB,GACXlH,KAAKuI,aAAarB,IAGtBqyP,QAAS,IACTC,QAAS,cACTC,mBAAoB,GACpBC,oBAAqB,MAErBxyP,QAAS,CACLyyP,gBAAiB,EACjBlE,MAAOI,GAGXl4M,QAAS,SAAS63M,EAAKoE,GACnB,IAAIC,EAAO75P,KACPkH,EAAU2yP,EAAK3yP,QAEfmpH,EADQnpH,EAAQuuP,MACNvwP,EACV40P,EAAO5yP,EAAQyyP,gBACfzE,EAAMlgF,EAAMwgF,EAAIN,KAAM2E,EAAKL,QAASK,EAAKL,SACzCrE,EAAMyE,EAAQ5kF,EAAMwgF,EAAIL,KAAM0E,EAAKN,QAASM,EAAKN,SAAW/D,EAAIL,IAChE/vP,EAAI2xH,EAAIo+H,EAAM2E,GAAQzpI,EACtBlsH,EAAI01P,EAAKE,YAAY7E,GAEzB,OAAO,IAAIl7H,EAAM50H,EAAGjB,IAGxB41P,YAAa,SAAS7E,GAClB,IAAIO,EAAQz1P,KAAKkH,QAAQuuP,MACrBuE,EAAMvE,EAAM9wP,EACZ0rH,EAAIolI,EAAMvwP,EACVf,EAAI4yH,EAAIm+H,GACR+E,EAAKzrI,EAAI6qI,EAAWl1P,EAAI,GACxB+1P,EAAMF,EAAMxhI,EAAIr0H,GAChB4sH,EAAIrnF,GAAK,EAAIwwN,IAAQ,EAAIA,GAAMF,EAAM,GAIzC,OAAO3pI,EAAI5/F,EAAIwpO,EAAKlpI,IAGxBopI,QAAS,SAAS9/H,EAAOu/H,GACrB,IAAIC,EAAO75P,KACPkH,EAAU2yP,EAAK3yP,QAEfmpH,EADQnpH,EAAQuuP,MACNvwP,EACV40P,EAAO5yP,EAAQyyP,gBACfxE,EAAM96H,EAAMj1H,GAAK+vH,EAAa9E,GAAKypI,EACnC5E,EAAMlgF,EAAM6kF,EAAKO,UAAU//H,EAAMl2H,IAAK01P,EAAKL,QAASK,EAAKL,SAM7D,OAJII,IACAzE,EAAMngF,EAAMmgF,GAAM0E,EAAKN,QAASM,EAAKN,UAGlC,IAAItE,EAASC,EAAKC,IAG7BiF,UAAW,SAASj2P,GAChB,IAOIoD,EAPAsyP,EAAO75P,KACPy1P,EAAQoE,EAAK3yP,QAAQuuP,MACrBplI,EAAIolI,EAAMvwP,EACV80P,EAAMvE,EAAM9wP,EACZ01P,EAAOL,EAAM,EACbC,EAAKb,GAAKj1P,EAAIksH,GACdiqI,EAAMp8H,EAAW,EAAIm0B,EAAK4nG,GAG9B,IAAK1yP,EAAI,EAAGA,GAAKsyP,EAAKJ,mBAAoBlyP,IAAK,CAC3C,IAAI2yP,EAAMF,EAAMxhI,EAAI8hI,GAChBvpI,EAAIrnF,GAAK,EAAIwwN,IAAQ,EAAIA,GAAMG,GAC/BE,EAAOr8H,EAAW,EAAIm0B,EAAK4nG,EAAKlpI,GAAKupI,EAIzC,GAFAA,GAAOC,EAEHn3P,EAAK8T,IAAIqjP,IAASV,EAAKH,oBACvB,MAIR,OAAOlkI,EAAI8kI,MAOfE,EAAoBlB,EAASv2P,OAAO,CACpCy2P,QAAS,cAETO,YAAa,SAAS7E,GAClB,IAAI7kI,EAAIrwH,KAAKkH,QAAQuuP,MAAMvwP,EACvBf,EAAI4yH,EAAIm+H,GACR+E,EAAKzrI,EAAI6qI,EAAWl1P,EAAI,GAE5B,OAAOksH,EAAI5/F,EAAIwpO,IAGnBG,UAAW,SAASj2P,GAChB,IAAIksH,EAAIrwH,KAAKkH,QAAQuuP,MAAMvwP,EACvB+0P,EAAKb,GAAKj1P,EAAIksH,GAElB,OAAOmF,EAAI0I,EAAY,EAAIm0B,EAAK4nG,OAIpCQ,EAAkB7yP,EAAM7E,OAAO,CAC/B46C,QAAS,SAAS63M,GACd,OAAO,IAAIx7H,EAAMw7H,EAAIL,IAAKK,EAAIN,MAGlCiF,QAAS,SAAS9/H,GACd,OAAO,IAAI46H,EAAS56H,EAAMl2H,EAAGk2H,EAAMj1H,MAKvCs1P,EAAW9yP,EAAM7E,OAAO,CACxBoF,KAAM,WACF,IACI0xP,EADM75P,KACK26P,MAAQ,IAAIH,EAEvB91P,EAAI1E,KAAK0E,EAAI,EAAI0wH,EAAKykI,EAAK3yP,QAAQuuP,MAAMvwP,EAG7ClF,KAAK46P,IAAM/lP,EAAE0+B,YAAYvD,UAAU,GAAK,IAAKL,MAAM,EAAIjrC,GAAI,EAAIA,GAG/D1E,KAAK66P,KAAOhmP,EAAE0+B,YAAY5D,MAAMjrC,GAAIA,GAAGsrC,WAAW,IAAM,KAI5DmqK,QAAS,SAASq7C,EAAK7lN,EAAOiqN,GAG1B,OAFY55P,KAAK26P,MAAMh9M,QAAQ63M,EAAKoE,GAG/BrmN,UAAUvzC,KAAK46P,KACfjrN,MAAMA,GAAS,IAGxBmrN,WAAY,SAASzgI,EAAO1qF,EAAOiqN,GAM/B,OALAv/H,EAAQA,EACHlzH,QACAwoC,MAAM,GAAKA,GAAS,IACpB4D,UAAUvzC,KAAK66P,MAEb76P,KAAK26P,MAAMR,QAAQ9/H,EAAOu/H,MAkCzCpxP,EAAWshB,EAAS,CAChBxP,IAAK,CACDygP,IAAK,CACDC,SAjCGpzP,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAK26P,MAAQ,IAAIrB,GAGrBn/C,QAAS,SAASq7C,GACd,OAAOx1P,KAAK26P,MAAMh9M,QAAQ63M,IAG9BsF,WAAY,SAASzgI,GACjB,OAAOr6H,KAAK26P,MAAMR,QAAQ9/H,MAwBtBqgI,SAAUA,EACVO,SApBGrzP,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAK26P,MAAQ,IAAIF,GAGrBtgD,QAAS,SAASq7C,GACd,OAAOx1P,KAAK26P,MAAMh9M,QAAQ63M,IAG9BsF,WAAY,SAASzgI,GACjB,OAAOr6H,KAAK26P,MAAMR,QAAQ9/H,OAY1Bu7H,OAAQ,CACJC,MAAOA,GAEXqF,YAAa,CACTT,gBAAiBA,EACjBnB,SAAUA,EACVkB,kBAAmBA,MA5OnC,CAiPG15P,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MAEdkiB,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WAEnBivP,EAAS3tO,EAAQxP,IAAIm9O,OAGrBziI,EADOr0H,EAAMopB,QAAQ47F,KACNqP,QAoGnBxsH,EAAWshB,EAAS,CAChBxP,IAAK,CACD6gP,OAAQ,CACJC,MApGAxzP,EAAM7E,OAAO,CACrBoF,KAAM,SAASmS,EAAKpT,GAChBlH,KAAKuI,aAAarB,GAClBlH,KAAKsa,IAAMA,EAEXta,KAAK6L,QAAUlJ,EAAE,+BACbiK,IAAI,CACDgtC,OAAU55C,KAAKkH,QAAQ0yC,OACvBhjB,QAAW52B,KAAKkH,QAAQ0vB,UAE3BuW,SAAS7yB,EAAI8yE,eAEjBptF,KAAKq7P,aAAer7P,KAAKq7P,aAAa7xP,KAAKxJ,MAC3CA,KAAKksE,OAASlsE,KAAKksE,OAAO1iE,KAAKxJ,MAC/BA,KAAK+xB,QAAU/xB,KAAK+xB,QAAQvoB,KAAKxJ,MACjCA,KAAKs7P,QAAUt7P,KAAKs7P,QAAQ9xP,KAAKxJ,MACjCA,KAAKu7P,YAELv7P,KAAKw7P,sBAGTx5P,QAAS,WACLhC,KAAKy7P,eAGTvuP,KAAM,WACFlN,KAAKy1C,QACLz1C,KAAKu7P,YACLv7P,KAAK07P,cAAa,IAGtBvuP,KAAM,WACFnN,KAAKy7P,cACLz7P,KAAK27P,gBAAe,IAGxBlmN,MAAO,WACHz1C,KAAKq7P,eACLr7P,KAAKksE,UAGTA,OAAQ,WACJlsE,KAAK07P,gBAGTL,aAAc14P,EAAEQ,KAEhB4uB,QAASpvB,EAAEQ,KAEXm4P,QAAS,WACLt7P,KAAK07P,gBAGTA,aAAc,WACV,IAAIx0P,EAAUlH,KAAKkH,QAEfmpC,EAAOrwC,KAAKsa,IAAI+1B,OAChBurN,GAAgB5mI,EAAQ9tH,EAAQuxP,UAAYpoN,GAAQnpC,EAAQuxP,QAC5DoD,GAAgB7mI,EAAQ9tH,EAAQwxP,UAAYroN,GAAQnpC,EAAQwxP,QAE5DR,EAAST,EAAOzwM,OAAO9/C,EAAQgxP,QAC/B4D,GAAU5D,GAAUA,EAAO31F,SAASviK,KAAKsa,IAAI49O,UAEjDl4P,KAAK27P,eAAeC,GAAgBC,GAAgBC,IAGxDH,eAAgB,SAASrvP,GACrBtM,KAAK6L,QAAQe,IAAI,UAAWN,EAAU,GAAK,SAG/CivP,UAAW,WACP,IAAIjhP,EAAMta,KAAKsa,IACfta,KAAKy7P,cACLnhP,EAAI9Q,KAAK,cAAexJ,KAAKq7P,cAC7B/gP,EAAI9Q,KAAK,QAASxJ,KAAKksE,QACvB5xD,EAAI9Q,KAAK,SAAUxJ,KAAK+xB,SACxBzX,EAAI9Q,KAAK,SAAUxJ,KAAKs7P,UAG5BG,YAAa,WACT,IAAInhP,EAAMta,KAAKsa,IACfA,EAAIrQ,OAAO,cAAejK,KAAKq7P,cAC/B/gP,EAAIrQ,OAAO,QAASjK,KAAKksE,QACzB5xD,EAAIrQ,OAAO,SAAUjK,KAAK+xB,SAC1BzX,EAAIrQ,OAAO,SAAUjK,KAAKs7P,UAG9BE,mBAAoB,WAChB,IAAI14O,EAAO9iB,KAAKsa,IAAIyhP,YAEhBj5O,GACAA,EAAK7V,IAAIjN,KAAKkH,QAAQ60P,oBAzGtC,CAuHGj7P,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACdmG,EAAapN,EAAMkN,KAAKE,WAExB+b,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WAEnBqM,EAAIlU,EAAMi/H,SAEVp7H,EAAI7D,EAAMopB,QACVykH,EAAQhqI,EAAEgqI,MAEVrsG,EAAO39B,EAAEmhH,KAAKxjF,KACd6yF,EAAUxwH,EAAEmhH,KAAKqP,QAEjB16G,EAAMwP,EAAQxP,IACd26O,EAAW36O,EAAI26O,SACfmG,EAAQ9gP,EAAI6gP,OAAOC,MAGnBY,EAAaZ,EAAMr4P,OAAO,CAC1BoF,KAAM,SAASmS,EAAKpT,GAEhBlH,KAAKi5P,KAAOj5P,KAAKi5P,KAAKzvP,KAAKxJ,MAE3Bo7P,EAAMrzP,GAAGI,KAAKoC,KAAKvK,KAAMsa,EAAKpT,GAE9BlH,KAAK2gF,QAAUn8E,EAAEywI,QAAQjuF,OAAOhnD,KAAK6L,QAAS,CAC1CmB,MAAOsN,EAAI8yE,cAAcpgF,QACzBL,OAAQ2N,EAAI8yE,cAAczgF,WAG9B3M,KAAKi8P,YAELj8P,KAAKq8C,QAAU,IAAI17C,EAAMgpB,GAAGg9D,QAAQ3mF,KAAK2gF,QAAQ90E,SACjD7L,KAAKk8P,SAAW,GAEhBl8P,KAAK+hF,OAAS/hF,KAAKo1I,SAAS,cAC5Bp1I,KAAK2gF,QAAQn3E,KAAK,QAASxJ,KAAK+hF,QAEhC/hF,KAAK+kH,YAAc/kH,KAAKo1I,SAAS,mBACjCp1I,KAAK2gF,QAAQn3E,KAAK,aAAcxJ,KAAK+kH,aAErC/kH,KAAKglH,YAAchlH,KAAKo1I,SAAS,mBACjCp1I,KAAK2gF,QAAQn3E,KAAK,aAAcxJ,KAAKglH,aAErChlH,KAAKmlO,mBAGTj+N,QAAS,CACL6pE,UAAU,GAGd/uE,QAAS,WACLo5P,EAAMrzP,GAAG/F,QAAQuI,KAAKvK,MAEtBA,KAAK2gF,QAAQ3+E,UACbhC,KAAK8wB,WAAW7mB,OAAO,SAAUjK,KAAKm8P,cAG1C32B,cAAe,SAAS10M,GAChB9wB,KAAK8wB,YACL9wB,KAAK8wB,WAAW7mB,OAAO,SAAUjK,KAAKm8P,aAG1Cn8P,KAAK8wB,WAAanwB,EAAMkN,KAAKE,WAAWi5C,OAAOl2B,GAC/C9wB,KAAK8wB,WAAWtnB,KAAK,SAAUxJ,KAAKm8P,aAEhCn8P,KAAKkH,QAAQ6pE,UACb/wE,KAAK8wB,WAAWq0C,SAIxB+G,OAAQ,WACJkvL,EAAMrzP,GAAGmkE,OAAO3hE,KAAKvK,MACrBA,KAAKo8P,oBAEDp8P,KAAKq5D,OACLr5D,KAAKq8P,MAAMr8P,KAAKq5D,QAIxB4iM,UAAW,WACPj8P,KAAK09I,MAAQ,IAAIlP,EACjBxuI,KAAK2gF,QAAQ60D,KAAKx1I,KAAK09I,QAG3B29G,aAAc,WACVr7P,KAAK2gF,QAAQ1qB,QACbj2D,KAAKi8P,aAGTlqO,QAAS,WACL/xB,KAAK2gF,QAAQlxE,KAAKzP,KAAKsa,IAAI7K,SAG/B01N,gBAAiB,WACb,IAAI4tB,EAAY/yP,KAAKkH,QAAQ4pB,WAC7B9wB,KAAKm8P,YAAcn8P,KAAKm8P,YAAY3yP,KAAKxJ,MACzCA,KAAK8wB,WAAa/iB,EACbi5C,OAAO+rM,GACPvpP,KAAK,SAAUxJ,KAAKm8P,aAErBpJ,GAAa/yP,KAAKkH,QAAQ6pE,UAC1B/wE,KAAK8wB,WAAWq0C,SAIxBg3L,YAAa,SAASx3P,GAClB3E,KAAKq5D,MAAQ10D,EAAE2F,OAAOotB,OACtB13B,KAAKq8P,MAAMr8P,KAAKq5D,QAGpBgjM,MAAO,SAASxuP,GACZ7N,KAAKs8P,gBAEAt8P,KAAKu8P,UACNv8P,KAAKu8P,QAAU,IAAIC,EAAcx8P,KAAKsa,IAAKta,KAAKkH,QAAQuF,MAAOzM,OAInE,IADA,IAAIs2B,EAAY,IAAIk4G,EACXjnI,EAAI,EAAGA,EAAIsG,EAAKrG,OAAQD,IAAK,CAClC,IAAI04I,EAAQjgJ,KAAKu8P,QAAQvnO,MAAMnnB,EAAKtG,IAChC04I,GACA3pH,EAAUyjB,OAAOkmG,GAIzBjgJ,KAAK09I,MAAMznF,QACXj2D,KAAK09I,MAAM3jG,OAAOzjB,IAGtBmmO,aAAc,SAASx8G,GACnB,IAAIy8G,GAAY,EAKhB,GAJIz8G,aAAiBz7I,EAAE45H,SACnBs+H,EAAY1nI,EAAQh1H,KAAK28P,cAAc18G,MAGtCy8G,EAAW,CACZ,IAAIvlO,EAAO,CAAEylO,MAAO58P,KAAMigJ,MAAOA,GACjCy8G,EAAY18P,KAAKsa,IAAIlQ,QAAQ,eAAgB+sB,GAGjD,OAAOulO,GAGXG,eAAgB,SAASl4P,GACrBA,EAAEi4P,MAAQ58P,KACVA,KAAKsa,IAAIlQ,QAAQ,sBAAuBzF,IAG5Cg4P,cAAe,SAAS18G,GACpB,IAAI33F,EAAStoD,KAAKsa,IAAIwxK,QAAQtiL,KAAK,CAC/B+Y,SAAU09H,EAAM19H,UACjB09H,EAAM5rH,UAMT,OAJIi0B,GACAtoD,KAAKk8P,SAASv6P,KAAK2mD,GAGhBA,GAGXg0M,cAAe,WACX,IAAK,IAAI/0P,EAAI,EAAGA,EAAIvH,KAAKk8P,SAAS10P,OAAQD,IACtCvH,KAAKsa,IAAIwxK,QAAQ/0J,OAAO/2B,KAAKk8P,SAAS30P,IAE1CvH,KAAKk8P,SAAW,IAGpBjD,KAAM,WACGj5P,KAAK88P,WACN98P,KAAK88P,UAAW,EAChB98P,KAAK2gF,QAAQg1D,oBAIrB2lH,QAAS,SAAS32P,GACdy2P,EAAMrzP,GAAGuzP,QAAQ/wP,KAAKvK,KAAM2E,GAC5B3E,KAAKo8P,oBACLp8P,KAAK2gF,QAAQk1D,iBACb71I,KAAK88P,UAAW,GAGpBV,kBAAmB,WACf,IAAI9hP,EAAMta,KAAKsa,IACXo9O,EAAKp9O,EAAIyiP,eAAeziP,EAAI49O,SAASR,IAErC13P,KAAK2gF,QAAQ3wC,YACbhwC,KAAK2gF,QAAQ3wC,UAAU0nN,GACvB13P,KAAKq8C,QAAQD,OAAO,CAAEh3C,EAAGsyP,EAAGtyP,EAAGjB,EAAGuzP,EAAGvzP,MAI7CixI,SAAU,SAASh2H,GACf,IAAIw9O,EAAQ58P,KACZ,OAAO,SAAS2E,GACZ,GAAIA,EAAEkH,QAAS,CACX,IAAIsrB,EAAO,CACPylO,MAAOA,EACP38G,MAAOt7I,EAAEkH,QACT8c,cAAehkB,EAAEgkB,eAGrBi0O,EAAMtiP,IAAIlQ,QAAQgV,EAAO+X,MAKrCokO,UAAW,WACPH,EAAMrzP,GAAGwzP,UAAUhxP,KAAKvK,MAExBA,KAAKsa,IAAI9Q,KAAK,MAAOxJ,KAAKi5P,OAG9BwC,YAAa,WACTL,EAAMrzP,GAAG0zP,YAAYlxP,KAAKvK,MAE1BA,KAAKsa,IAAIrQ,OAAO,MAAOjK,KAAKi5P,SAIhCuD,EAAgB50P,EAAM7E,OAAO,CAC7BoF,KAAM,SAAS60P,EAASC,EAAc3oI,GAClCt0H,KAAKs0H,SAAWA,EAChBt0H,KAAKg9P,QAAUA,EACfh9P,KAAKyM,MAAQwwP,GAGjBjoO,MAAO,SAASga,GACZ,IAAIyO,EAAO,IAAI+wF,EACX0uH,GAAS,EAcb,MAZkB,YAAdluN,EAAKtpC,MACLw3P,GAAS,EACTl9P,KAAKm9P,gBAAgB1/M,EAAMzO,EAAK4wF,SAAU5wF,GAC1ChvC,KAAKo9P,gBAAgB3/M,EAAMzO,IAE3BhvC,KAAKm9P,gBAAgB1/M,EAAMzO,EAAMA,GAGjCkuN,GAAUz/M,EAAKtI,SAAS3tC,OAAS,IACjCi2C,EAAOA,EAAKtI,SAAS,IAGlBsI,GAGX4/M,cAAe,SAASp9G,GACpB,IAAIy8G,GAAY,EAMhB,OAJI18P,KAAKs0H,UAAYt0H,KAAKs0H,SAASmoI,eAC/BC,EAAY18P,KAAKs0H,SAASmoI,aAAax8G,IAGpCy8G,GAGXU,gBAAiB,SAASlpM,EAAO7/B,GACzBr0B,KAAKs0H,UAAYt0H,KAAKs0H,SAASuoI,gBAC/B78P,KAAKs0H,SAASuoI,eAAe,CACzB3oM,MAAOA,EACP7/B,SAAUA,EACVplB,WAAYolB,EAASplB,cAKjCkuP,gBAAiB,SAAS7mO,EAAWspG,EAAUvrG,GAC3C,IACI9sB,EACA6nC,EAFAgyJ,EAASxhE,EAASz5C,YAItB,OAAQy5C,EAASl6H,MACb,IAAK,aACD0pC,EAAOpvC,KAAKs9P,aAAahnO,EAAW,CAAC8qK,GAAS/sK,GAC9Cr0B,KAAKu9P,aAAanuN,GAClB,MAEJ,IAAK,kBACD,IAAK7nC,EAAI,EAAGA,EAAI65L,EAAO55L,OAAQD,IAC3B6nC,EAAOpvC,KAAKs9P,aAAahnO,EAAW,CAAC8qK,EAAO75L,IAAK8sB,GACjDr0B,KAAKu9P,aAAanuN,GAEtB,MAEJ,IAAK,UACDpvC,KAAKs9P,aAAahnO,EAAW8qK,EAAQ/sK,GACrC,MAEJ,IAAK,eACD,IAAK9sB,EAAI,EAAGA,EAAI65L,EAAO55L,OAAQD,IAC3BvH,KAAKs9P,aAAahnO,EAAW8qK,EAAO75L,GAAI8sB,GAE5C,MAEJ,IAAK,QACDr0B,KAAKw9P,WAAWlnO,EAAW8qK,EAAQ/sK,GACnC,MAEJ,IAAK,aACD,IAAK9sB,EAAI,EAAGA,EAAI65L,EAAO55L,OAAQD,IAC3BvH,KAAKw9P,WAAWlnO,EAAW8qK,EAAO75L,GAAI8sB,KAMtDkpO,aAAc,SAASnuN,GACnB,IAAI87F,EAAW97F,EAAK87F,UAChBA,EAAS1jI,OAAS,IAAM0jI,EAAS,GAAG/5C,SAASrgC,OAAO3uB,EAAK+oG,GAAU/5C,aACnE/hD,EAAKloC,QAAQ+rB,KAAO,OAI5BwqO,WAAY,SAASnnO,EAAW2pH,GAK5B,OAJKjgJ,KAAKq9P,cAAcp9G,IACpB3pH,EAAUyjB,OAAOkmG,GAGdA,GAGXq9G,aAAc,SAAShnO,EAAWonO,EAAOrpO,GACrC,IAAI4rH,EAAQjgJ,KAAK29P,cAAcD,GAG/B,OAFAz9G,EAAM5rH,SAAWA,EAEVr0B,KAAKy9P,WAAWnnO,EAAW2pH,IAGtC09G,cAAe,SAASD,GAIpB,IAHA,IACItuN,EAAO,IADAsuN,EAAMl2P,OAAS,EAAIhD,EAAE2oI,UAAY3oI,EAAE8nI,MAC1BtsI,KAAKyM,OAEhBlF,EAAI,EAAGA,EAAIm2P,EAAMl2P,OAAQD,IAC9B,IAAK,IAAIojC,EAAI,EAAGA,EAAI+yN,EAAMn2P,GAAGC,OAAQmjC,IAAK,CACtC,IAAI0vF,EAAQr6H,KAAKg9P,QAAQD,eACrB9H,EAASqC,WAAWoG,EAAMn2P,GAAGojC,KAGvB,IAANA,EACAyE,EAAKgN,OAAOi+E,EAAMj1H,EAAGi1H,EAAMl2H,GAE3BirC,EAAKw7F,OAAOvQ,EAAMj1H,EAAGi1H,EAAMl2H,GAKvC,OAAOirC,GAGXouN,WAAY,SAASlnO,EAAW8qK,EAAQ/sK,GACpC,IAAI9R,EAAW0yO,EAASqC,WAAWl2D,GAC/B/mE,EAAQr6H,KAAKg9P,QAAQD,eAAex6O,GAEpCuuI,EAAS,IAAIj8I,EAAEupH,OAAO/D,EAAO,IAC7B4lB,EAAQ,IAAIz7I,EAAE45H,OAAO0yB,EAAQ9wJ,KAAKyM,OAItC,OAHAwzI,EAAM5rH,SAAWA,EACjB4rH,EAAM19H,SAAWA,EAEVviB,KAAKy9P,WAAWnnO,EAAW2pH,MAK1Cz3I,EAAW7H,EAAMkN,KAAM,CACnB44C,QAAS,CACLm3M,QAAS,CACLl4P,KAAM,OACNmI,KAAM,SAASA,GACX,MAAkB,sBAAdA,EAAKnI,KACEmI,EAAKgwP,SAGE,uBAAdhwP,EAAKnI,KACEmI,EAAKiwP,WAGTjwP,KAInBg5C,WAAY,CACR+2M,QAAS,CACL94M,KAAM,CACFC,SAAU,YAM1Bv8C,EAAWshB,EAAS,CAChBxP,IAAK,CACD6gP,OAAQ,CACJl7G,MAAO+7G,EACPA,WAAYA,GAEhBQ,cAAeA,KA/Y3B,CAmZG17P,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACfmuB,EAASnuB,EAAMmuB,OAEfhF,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WAEnBqM,EAAIlU,EAAMi/H,SACVp7H,EAAI7D,EAAMopB,QAGVirG,EADOxwH,EAAEmhH,KACMqP,QAEf16G,EAAMwP,EAAQxP,IACd26O,EAAW36O,EAAI26O,SAIf8I,EAHazjP,EAAI6gP,OAAOa,WAGCj5P,OAAO,CAChCmE,QAAS,CACL6pE,UAAU,EACVitL,cAAe,WACfhtL,WAAY,QACZi7H,QAAS,EACTh6D,QAAS,IACTtiG,MAAO,OACP77B,OAAQ,UAGZuoP,MAAO,SAASxuP,GAGZ,GAFA7N,KAAK2gF,QAAQ1qB,QAEO,IAAhBpoD,EAAKrG,OAAT,CAIA,IAAIy2P,EAAMj+P,KAAKkH,QACX68K,EAAWj1J,EAAOmvO,EAAIjtL,aAE1BnjE,EAAOA,EAAKjH,MAAM,IACbse,MAAK,SAAShgB,EAAGigB,GAClB,OAAO4+J,EAAS5+J,GAAK4+J,EAAS7+K,MAKlC,IAFA,IACIyqC,EADAuuN,EAAYl+P,KAAKm+P,aAEZ52P,EAAI,EAAGA,EAAIsG,EAAKrG,OAAQD,IAAK,CAClC,IAAI8sB,EAAWxmB,EAAKtG,GAChBgb,EAAWuM,EAAOmvO,EAAID,cAAXlvO,CAA0BuF,GACrC3rB,EAAQomB,EAAOmvO,EAAIjtL,WAAXliD,CAAuBuF,GAEnC,GAAI2gG,EAAQzyG,IAAayyG,EAAQtsH,GAAQ,CAChCinC,IACDA,EAAQ,IAAIuuN,EAAU,CAAC,EAAGx1P,GAAQ,CAACu1P,EAAIhyD,QAASgyD,EAAIhsH,WAGxD1vH,EAAW0yO,EAASjuM,OAAOzkC,GAC3B,IAAIg7D,EAASv9E,KAAKsa,IAAIyiP,eAAex6O,GACjC9S,EAAOkgC,EAAMr1B,IAAI5R,GAEjBoL,EAAS9T,KAAKo+P,cAAc,CAC5B7gL,OAAQA,EACR9tE,KAAMA,EACNhD,MAAOwxP,EAAIxxP,MACX4nB,SAAUA,EACV9R,SAAUA,IAGdzO,EAAOugB,SAAWA,EAClBvgB,EAAOyO,SAAWA,EAClBzO,EAAOpL,MAAQA,EAEf1I,KAAKq+P,YAAYvqP,OAK7BqqP,WAAY,WACR,IAAIxuN,EAAQ3vC,KAAKkH,QAAQyoC,MAEzB,OAAIhvC,EAAMuI,WAAWymC,GACVA,EAGJ7lB,EAAQxP,IAAIgkP,OAAO3uN,IAG9ByuN,cAAe,SAASjnO,GACpB,IAAIrjB,EAAS9T,KAAKkH,QAAQ4M,OAK1B,OAJKnT,EAAMuI,WAAW4K,KAClBA,EAASgW,EAAQxP,IAAIikP,QAAQzqP,IAG1BA,EAAOqjB,IAGlBknO,YAAa,SAASp+G,GAClB,IAAI9oH,EAAO,CAAEylO,MAAO58P,KAAMigJ,MAAOA,GACjBjgJ,KAAKsa,IAAIlQ,QAAQ,eAAgB+sB,IAE7Cn3B,KAAK2gF,QAAQ60D,KAAKyK,MAK1Bu+G,EAAY79P,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,SAASs2P,EAAQ7qM,GACnB5zD,KAAK0+P,QAAUD,EACfz+P,KAAKgyE,OAASpe,EAEd,IAAI+qM,EAAct7P,KAAKo6E,KAAKghL,EAAO,IAAMp7P,KAAKo6E,KAAKghL,EAAO,IACtDG,EAAchrM,EAAM,GAAKA,EAAM,GACnC5zD,KAAK6+P,OAASD,EAAcD,GAGhCrkP,IAAK,SAAS5R,GACV,IAAIo2P,GAAOz7P,KAAKo6E,KAAK/0E,GAASrF,KAAKo6E,KAAKz9E,KAAK0+P,QAAQ,KAAO1+P,KAAK6+P,OACjE,OAAO7+P,KAAKgyE,OAAO,GAAK8sL,KA0BhCt2P,EAAWshB,EAAS,CAChBxP,IAAK,CACD6gP,OAAQ,CACJhvE,OAAQ4xE,EACRA,YAAaA,GAEjBO,OAAQ,CACJ7gL,KAAM+gL,GAEVD,QA/BM,CACVztG,OAAQ,SAAS35H,GACb,IAAI4nO,EAAM,IAAIlqP,EAAEupH,OAAOjnG,EAAKomD,OAAQpmD,EAAK1nB,KAAO,GAChD,OAAO,IAAIjL,EAAE45H,OAAO2gI,EAAK5nO,EAAK1qB,QAGlCskJ,OAAQ,SAAS55H,GACb,IAAIiY,EAAO,IAAI5qC,EAAE8nI,KAAKn1G,EAAK1qB,OACvBi0L,EAAWvpK,EAAK1nB,KAAO,EACvB8tE,EAASpmD,EAAKomD,OAQlB,OANAnuC,EAAKgN,OAAOmhC,EAAOn4E,EAAIs7L,EAAUnjH,EAAOp5E,EAAIu8L,GACvC91D,OAAOrtD,EAAOn4E,EAAIs7L,EAAUnjH,EAAOp5E,EAAIu8L,GACvC91D,OAAOrtD,EAAOn4E,EAAIs7L,EAAUnjH,EAAOp5E,EAAIu8L,GACvC91D,OAAOrtD,EAAOn4E,EAAIs7L,EAAUnjH,EAAOp5E,EAAIu8L,GACvCp7I,QAEElW,OA3InB,CA6JGtuC,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIQ,EAAOC,KAEP1C,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACdiI,EAAWlP,EAAMkP,SAEjBia,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WAGnBwxH,EADIr5H,EAAMi/H,SACA5F,MAEVohI,EAAQtxO,EAAQxP,IAAI6gP,OAAOC,MAE3Bz1I,EAAOhlH,EAAMglH,KACb8uI,EAAa9uI,EAAK8uI,WAElBuK,EAAcr+P,EAAMopB,QAAQ47F,KAC5B5vG,EAAQipP,EAAYjpP,MACpBi/J,EAAQgqF,EAAYtoI,WAGpBuoI,EAAY7D,EAAMr4P,OAAO,CACzBoF,KAAM,SAASmS,EAAKpT,GAChBk0P,EAAMrzP,GAAGI,KAAKoC,KAAKvK,KAAMsa,EAAKpT,GAES,iBAA5BlH,KAAKkH,QAAQg4P,aACpBl/P,KAAKkH,QAAQg4P,WAAal/P,KAAKkH,QAAQg4P,WAAWt0P,MAAM,KAG5D,IAAIu0P,EAAWn/P,KAAKo/P,YACpBp/P,KAAKw5D,MAAQ,IAAI2lM,EAASn/P,KAAK6L,QAAS7L,KAAKkH,UAGjDlF,QAAS,WACLo5P,EAAMrzP,GAAG/F,QAAQuI,KAAKvK,MAEtBA,KAAKw5D,MAAMx3D,UACXhC,KAAKw5D,MAAQ,MAGjB6hM,aAAc,WACV,IAAI/gP,EAAMta,KAAKsa,IACXs+B,EAASt+B,EAAI+kP,gBAAgB/kP,EAAI49O,SAASR,IAAI3hP,QAClD/V,KAAKw5D,MAAM8lM,WAAW1mN,IAG1BszB,OAAQ,SAASvnE,GACb,IAAI46P,EAGAA,EADA56P,EACYA,EAAE46P,UAEF,GAGhBnE,EAAMrzP,GAAGmkE,OAAO3hE,KAAKvK,MACrBA,KAAKw/P,cACLx/P,KAAKw5D,MAAM/jB,MAAM8pN,IAGrBH,UAAW,WACP,OAAOK,GAGXlE,UAAW,WACPH,EAAMrzP,GAAGwzP,UAAUhxP,KAAKvK,MAEnBW,EAAM4C,QAAQkf,WACVziB,KAAKi5P,OACNj5P,KAAKi5P,KAAOt4P,EAAMukC,SACdllC,KAAKiiP,QAAQz4O,KAAKxJ,MAClB,MAIRA,KAAKsa,IAAI9Q,KAAK,MAAOxJ,KAAKi5P,QAIlCwC,YAAa,WACTL,EAAMrzP,GAAG0zP,YAAYlxP,KAAKvK,MAEtBA,KAAKi5P,MACLj5P,KAAKsa,IAAIrQ,OAAO,MAAOjK,KAAKi5P,OAIpCuG,YAAa,WACT,IAAI9nO,EAAO13B,KAAKw5D,MACZl/C,EAAMta,KAAKsa,IACX49O,EAAS59O,EAAI49O,SACbwH,EAAgB,CACZhI,GAAIp9O,EAAI+kP,gBAAgBnH,EAAOR,IAAI3hP,QACnC4hP,GAAIr9O,EAAI+kP,gBAAgBnH,EAAOP,IAAI5hP,SAG3C2hB,EAAK6lD,OAAOjjE,EAAI+kP,gBAAgB/kP,EAAIijE,WACpC7lD,EAAKwgO,OAAOwH,GACZhoO,EAAK2Y,KAAK/1B,EAAI+1B,SAGlBte,QAAS,WACL/xB,KAAKiiP,WAGTqZ,QAAS,SAAS32P,GACdy2P,EAAMrzP,GAAGuzP,QAAQ/wP,KAAKvK,KAAM2E,GAC5B3E,KAAKiiP,WAGTA,QAAS,WACLjiP,KAAKw/P,cACLx/P,KAAKw5D,MAAM5pD,YAIf6vP,EAAW73P,EAAM7E,OAAO,CACxBoF,KAAM,SAAS0D,EAAS3E,GACpBlH,KAAK6L,QAAUA,EACf7L,KAAKuI,aAAarB,GAElBlH,KAAK2/P,KAAO,IAAIC,GAGpB14P,QAAS,CACL24P,SAAU,IACVX,WAAY,CAAC,IAAK,IAAK,KACvBY,YAAa,WAAc,MAAO,KAGtCviL,OAAQ,SAASA,GACbv9E,KAAK+/P,QAAUxiL,GAGnB26K,OAAQ,SAASA,GACbl4P,KAAKq4P,QAAUH,GAGnBoH,WAAY,SAAS1mN,GACjB54C,KAAKggQ,YAAcpnN,GAGvBvI,KAAM,SAASA,GACXrwC,KAAKywP,MAAQpgN,GAGjB4vN,iBAAkB,SAAS5lI,GACvB,OAAO,IAAIL,EACP52H,EAAKmN,MAAM8pH,EAAMj1H,EAAIpF,KAAKkH,QAAQ24P,UAClCz8P,EAAKmN,MAAM8pH,EAAMl2H,EAAInE,KAAKkH,QAAQ24P,YAI1CK,UAAW,WACP,IAAIzwP,EAAOzP,KAAKyP,OACZ0wP,EAAiBngQ,KAAKigQ,iBAAiBjgQ,KAAKq4P,QAAQX,IACpDA,EAAK13P,KAAKq4P,QAAQX,GAClBr9H,EAAQr6H,KAAKogQ,aAAaD,GAAgBnwN,WAAW0nN,EAAGtyP,GAAIsyP,EAAGvzP,GAEnE,MAAO,CACHiB,EAAGhC,EAAK6iE,MAAM7iE,EAAK8T,IAAImjH,EAAMj1H,GAAKqK,EAAKzC,OAAShN,KAAKkH,QAAQ24P,UAC7D17P,EAAGf,EAAK6iE,MAAM7iE,EAAK8T,IAAImjH,EAAMl2H,GAAKsL,EAAK9C,QAAU3M,KAAKkH,QAAQ24P,YAItEpwP,KAAM,WACF,IAAIioP,EAAK13P,KAAKq4P,QAAQX,GAElB74N,EADK7+B,KAAKq4P,QAAQV,GACRxwP,QAAQ6oC,WAAW0nN,EAAGtyP,GAAIsyP,EAAGvzP,GAE3C,MAAO,CACH6I,MAAO6xB,EAAKz5B,EACZuH,OAAQkyB,EAAK16B,IAIrBi8P,aAAc,SAASrnP,GACnB,IAAI3T,EAAI2T,EAAM3T,EAAGjB,EAAI4U,EAAM5U,EAE3B,OAAO,IAAI61H,EACP50H,EAAIpF,KAAKkH,QAAQ24P,SACjB17P,EAAInE,KAAKkH,QAAQ24P,WAIzBQ,cAAe,WACX,IAAInB,EAAal/P,KAAKkH,QAAQg4P,WAE9B,OAAOA,EAAWl/P,KAAKsgQ,iBAAmBpB,EAAW13P,SAGzDxF,QAAS,WACLhC,KAAK6L,QAAQ0gD,QACbvsD,KAAK2/P,KAAKpzM,SAGd9W,MAAO,SAAS8pN,GACZv/P,KAAKugQ,WAAahB,EAClBv/P,KAAK2/P,KAAKlqN,QACVz1C,KAAKsgQ,eAAiB,EACtBtgQ,KAAK4P,UAGTA,OAAQ,WACJ,IAEI4wP,EAAMp7P,EAAGjB,EAFTsL,EAAOzP,KAAKkgQ,YACZC,EAAiBngQ,KAAKigQ,iBAAiBjgQ,KAAKq4P,QAAQX,IAGxD,IAAKtyP,EAAI,EAAGA,EAAIqK,EAAKrK,EAAGA,IACpB,IAAKjB,EAAI,EAAGA,EAAIsL,EAAKtL,EAAGA,KACpBq8P,EAAOxgQ,KAAKygQ,WAAW,CACnBr7P,EAAG+6P,EAAe/6P,EAAIA,EACtBjB,EAAGg8P,EAAeh8P,EAAIA,KAGhBmI,SACNk0P,EAAKtzP,QAMrBuzP,WAAY,SAASC,GACjB,IAAIx5P,EAAUlH,KAAK2gQ,YAAYD,GAC3BF,EAAOxgQ,KAAK2/P,KAAKpwO,IAAIvvB,KAAK+/P,QAAS74P,GAKvC,OAJqC,IAAjCs5P,EAAK30P,QAAQM,SAAS3E,QACtBxH,KAAK6L,QAAQkuC,OAAOymN,EAAK30P,SAGtB20P,GAGXG,YAAa,SAASD,GAClB,IAAI3nP,EAAQ/Y,KAAK4gQ,UAAUF,GACvBrmI,EAAQr6H,KAAKogQ,aAAaM,GAC1B9nN,EAAS54C,KAAKggQ,YACdjjP,EAASs9G,EAAMlzH,QAAQ6oC,WAAW4I,EAAOxzC,GAAIwzC,EAAOz0C,GAExD,MAAO,CACH4U,MAAOA,EACP2nP,aAAcA,EACdrmI,MAAOA,EACPt9G,OAAQ8jP,EAAW9jP,GACnBszB,KAAMrwC,KAAKywP,MACXhhP,KAAMzP,KAAKkH,QAAQ24P,SACnBiB,UAAW9gQ,KAAKqgQ,gBAChBP,YAAa9/P,KAAKkH,QAAQ44P,YAC1BiB,iBAAkB/gQ,KAAKkH,QAAQ65P,iBAC/BxB,UAAWv/P,KAAKugQ,aAIxBK,UAAW,SAAS7nP,GAChB,IAAIssC,EAAWjiD,EAAKsmC,IAAI,EAAG1pC,KAAKywP,OAChC,MAAO,CACHrrP,EAAGpF,KAAKghQ,UAAUjoP,EAAM3T,EAAGigD,GAC3BlhD,EAAG6wK,EAAMj8J,EAAM5U,EAAG,EAAGkhD,EAAW,KAIxC27M,UAAW,SAASt4P,EAAO28C,GACvB,IAAI6+H,EAAa9gL,EAAK8T,IAAIxO,GAAS28C,EAOnC,OALI38C,EADAA,GAAS,EACDw7K,EAEA7+H,GAA0B,IAAd6+H,EAAkB7+H,EAAW6+H,MAOzD+8E,EAAYr5P,EAAM7E,OAAO,CACzBoF,KAAM,SAASwnB,EAAIzoB,GACflH,KAAK2vB,GAAKA,EACV3vB,KAAKsM,SAAU,EAEftM,KAAKuI,aAAarB,GAClBlH,KAAK8d,gBACL9d,KAAKkN,QAGThG,QAAS,CACL44P,YAAa,WAAc,MAAO,IAClCiB,iBAAkB,WAAc,MAAO,KAG3CjjP,cAAe,WACX9d,KAAK6L,QAAUlJ,EAAE,aAAe3C,KAAKkH,QAAQq4P,UAAY,QACxC3yP,IAAI,CAAEE,SAAU,WAAYD,QAAS,QAASG,MAAOhN,KAAKkH,QAAQuI,KAAM9C,OAAQ3M,KAAKkH,QAAQuI,OAC7FwZ,GAAG,QAAS,SAAUtkB,GACf3E,KAAKkhQ,WACLv8P,EAAE2C,OAAOud,aAAa,MAAO7kB,KAAKkhQ,YAElCv8P,EAAE2C,OAAO0gC,gBAAgB,QAE9Bx+B,KAAKxJ,QAG5BkN,KAAM,WACF,IAAIrB,EAAU7L,KAAK6L,QAAQ,GAC3BA,EAAQY,MAAM2X,IAAMqwO,EAAWz0P,KAAKkH,QAAQ6V,OAAO5Y,GACnD0H,EAAQY,MAAMof,KAAO4oO,EAAWz0P,KAAKkH,QAAQ6V,OAAO3X,GAEpD,IAAIipB,EAAMruB,KAAKquB,MACXA,GACAxiB,EAAQgZ,aAAa,MAAOwJ,GAGhCxiB,EAAQY,MAAMwgF,WAAa,UAC3BjtF,KAAKsM,SAAU,GAGnBa,KAAM,WACFnN,KAAK6L,QAAQ,GAAGY,MAAMwgF,WAAa,SACnCjtF,KAAKsM,SAAU,GAGnB+hB,IAAK,WAGD,OAFgBxe,EAAS7P,KAAKkH,QAAQ44P,YAE/BqB,CAAUnhQ,KAAKohQ,eAG1BF,SAAU,WAGN,OAFgBrxP,EAAS7P,KAAKkH,QAAQ65P,iBAE/BI,CAAUnhQ,KAAKohQ,eAG1BA,WAAY,WACR,IAAIl6P,EAAUlH,KAAKkH,QACnB,MAAO,CACHmpC,KAAMnpC,EAAQmpC,KACdywN,UAAW55P,EAAQ45P,UACnBx7P,EAAG4B,EAAQmpC,KACXjrC,EAAG8B,EAAQ6R,MAAM3T,EACjBjB,EAAG+C,EAAQ6R,MAAM5U,EACjBc,EAAGiC,EAAQ45P,UACXO,QAASn6P,EAAQm6P,QACjBj9P,EAAG8C,EAAQm6P,QACX/tP,QAASpM,EAAQoM,QACjB5O,EAAGwC,EAAQoM,UAInBtR,QAAS,WACDhC,KAAK6L,UACL7L,KAAK6L,QAAQkrB,SACb/2B,KAAK6L,QAAU,SAKvB+zP,EAAWh4P,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAKg0I,OAAS,IAGlB9sI,QAAS,CACL+qI,QAAS,KAGb1iH,IAAK,SAASguD,EAAQr2E,GAKlB,OAJIlH,KAAKg0I,OAAOxsI,QAAUxH,KAAKkH,QAAQ+qI,SACnCjyI,KAAK6kI,QAAQtnD,GAGVv9E,KAAKshQ,QAAQp6P,IAGxBqlD,MAAO,WAEH,IADA,IAAIn4B,EAAQp0B,KAAKg0I,OACRzsI,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9B6sB,EAAM7sB,GAAGvF,UAGbhC,KAAKg0I,OAAS,IAGlBv+F,MAAO,WAEH,IADA,IAAIrhB,EAAQp0B,KAAKg0I,OACRzsI,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9B6sB,EAAM7sB,GAAG4F,QAIjBm0P,QAAS,SAASp6P,GAad,IAZA,IACIs5P,EADApsO,EAAQp0B,KAAKg0I,OAKbrkH,EAAKg2F,EAAKmN,QACV5rH,EAAQmzH,MAAMnpH,WACdhK,EAAQ6V,OAAO7L,WACfhK,EAAQmpC,KACRnpC,EAAQ44P,aAGHv4P,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9B,GAAI6sB,EAAM7sB,GAAGooB,KAAOA,EAAI,CACpB6wO,EAAOpsO,EAAM7sB,GACb,MAWR,OAPIi5P,EACAA,EAAKtzP,QAELszP,EAAO,IAAIS,EAAUtxO,EAAIzoB,GACzBlH,KAAKg0I,OAAOryI,KAAK6+P,IAGdA,GAGX37H,QAAS,SAAStnD,GAKd,IAJA,IAAInpD,EAAQp0B,KAAKg0I,OACbutH,GAAW,EACXxoP,GAAS,EAEJxR,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAI08J,EAAO7vI,EAAM7sB,GAAGL,QAAQmzH,MAAMG,WAAWj9C,GACzC0mF,EAAOs9F,IAAYntO,EAAM7sB,GAAG+E,UAC5ByM,EAAQxR,EACRg6P,EAAUt9F,IAIH,IAAXlrJ,IACAqb,EAAMrb,GAAO/W,UACboyB,EAAM5pB,OAAOuO,EAAO,OAMhC,SAAS8nP,EAAWxmI,GAChB,OAAO,IAAIL,EAAMjkH,EAAMskH,EAAMj1H,GAAI2Q,EAAMskH,EAAMl2H,IAIjDqE,EAAWshB,EAAS,CAChBxP,IAAK,CACD6gP,OAAQ,CACJqF,KAAMvB,EACNA,UAAWA,EAEXgC,UAAWA,EACXrB,SAAUA,EACVH,SAAUA,MAtc1B,CA2cG3+P,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MAEfmpB,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WACnBwsH,EAAUr0H,EAAMopB,QAAQ47F,KAAKqP,QAE7ByiI,EAAS3tO,EAAQxP,IAAIm9O,OACrBxC,EAAWnrO,EAAQxP,IAAI26O,SACvBgK,EAAYn1O,EAAQxP,IAAI6gP,OAAO8D,UAC/BQ,EAAW31O,EAAQxP,IAAI6gP,OAAOsE,SAG9B+B,EAAYvC,EAAUl8P,OAAO,CAC7BoF,KAAM,SAASmS,EAAKpT,GAChBlH,KAAKkH,QAAQmyI,QACTr5I,KAAKyhQ,UACL,oDAEJxC,EAAUl3P,GAAGI,KAAKoC,KAAKvK,KAAMsa,EAAKpT,GAElClH,KAAK0hQ,YAAc1hQ,KAAK0hQ,YAAYl4P,KAAKxJ,MACzCA,KAAK2hQ,kBAGTz6P,QAAS,CACL06P,WAAY,QAGhBD,eAAgB,WACZ,IAAIz6P,EAAUlH,KAAKkH,QAEnB,IAAKA,EAAQqK,IACT,MAAM,IAAId,MAAM,wCAGpB9N,EAAEmlD,KAAK,CACHz5B,IAAKnnB,EAAQmyI,QAAUnyI,EAAQ06P,WAC/B/zP,KAAM,CACF0lF,OAAQ,OACRukK,QAAS,mBACTvmP,IAAKrK,EAAQqK,IACbswP,UAAW7hQ,KAAKyhQ,WAEpB/7P,KAAM,MACNq/C,SAAU,QACV+B,MAAO,QACPiB,QAAS/nD,KAAK0hQ,eAItBD,QAAS,SAAS55P,GAEd,MAAkC,WADlCA,EAAQA,GAAS/G,OAAOyhB,SAASC,UACpB/f,QAAQ,IAAK,IAAkB,QAAU,QAG1Di/P,YAAa,SAAS7zP,GAClB,GAAIA,GAAQA,EAAKi0P,aAAat6P,OAAQ,CAClC,IAAIu6P,EAAW/hQ,KAAK+hQ,SAAWl0P,EAAKi0P,aAAa,GAAGE,UAAU,GAE9Dx5P,EAAWxI,KAAKw5D,MAAMtyD,QAAS,CAC3B44P,YAAa,SAAU7wO,GACnB,IAAI6xO,EAAY7xO,EAAI6xO,UAChBO,EAAUpyO,EAAIoyO,QACd/tP,EAAU2b,EAAI3b,QAElB,OAAOyuP,EAASjU,SACfrrP,QAAQ,cAAeq+P,GACvBr+P,QAAQ,YAAa4+P,GACrB5+P,QAAQ,YAAa6Q,IAE1B4rP,WAAY6C,EAASE,qBAGzB,IAAI/6P,EAAUlH,KAAKkH,QACd8tH,EAAQ9tH,EAAQuxP,WACjBvxP,EAAQuxP,QAAUsJ,EAASG,SAE1BltI,EAAQ9tH,EAAQwxP,WACjBxxP,EAAQwxP,QAAUqJ,EAASI,SAG/BniQ,KAAKoiQ,kBAE+B,SAAhCpiQ,KAAK6L,QAAQe,IAAI,YACjB5M,KAAKksE,WAKjBkzL,UAAW,WACP,OAAOiD,GAGXD,gBAAiB,WACb,IAAIt/O,EAAO9iB,KAAKsa,IAAIyhP,YACpB,GAAIj5O,EAAM,CACN,IAAIsR,EAAQp0B,KAAK+hQ,SAASO,iBAC1B,GAAIluO,EACA,IAAK,IAAI7sB,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAE9B,IADA,IAAIynC,EAAO5a,EAAM7sB,GACRpD,EAAI,EAAGA,EAAI6qC,EAAKuzN,cAAc/6P,OAAQrD,IAAK,CAChD,IAAI0nL,EAAO78I,EAAKuzN,cAAcp+P,GAC9B2e,EAAK7V,IAAI,CACL2zB,KAAMoO,EAAK+sN,YACXtD,QAAS5sE,EAAKq2E,QACdxJ,QAAS7sE,EAAKs2E,QACdjK,OAAQ,IAAIT,EACR,IAAIxC,EAASppE,EAAKjwD,KAAK,GAAIiwD,EAAKjwD,KAAK,IACrC,IAAIq5H,EAASppE,EAAKjwD,KAAK,GAAIiwD,EAAKjwD,KAAK,UASjEgmI,WAAY,SAASl5P,GACjB,IAAIA,EAKA,OAAO1I,KAAKkH,QAAQ06P,WAJpB5hQ,KAAKkH,QAAQ06P,WAAal5P,EAC1B1I,KAAKsa,IAAIyhP,YAAY9lM,QACrBj2D,KAAK2hQ,oBAObU,EAAW5C,EAAS18P,OAAO,CAC3BmE,QAAS,CACLoM,QAAS,SAGbqtP,YAAa,SAASD,GAClB,IAAIx5P,EAAUu4P,EAAS13P,GAAG44P,YAAYp2P,KAAKvK,KAAM0gQ,GAKjD,OAHAx5P,EAAQoM,QAAUtT,KAAKkH,QAAQoM,QAC/BpM,EAAQm6P,QAAUrhQ,KAAKwiQ,YAAYxiQ,KAAK4gQ,UAAUF,IAE3Cx5P,GAGXs7P,YAAa,SAASzpP,GAClB,IACI0pP,EAAO/rO,EAAMnvB,EADbm7P,EAAU,GAGd,IAAKn7P,EAAIvH,KAAKywP,MAAOlpP,EAAI,EAAGA,IACxBk7P,EAAQ,EACR/rO,EAAO,GAAMnvB,EAAI,EAEQ,IAApBwR,EAAM3T,EAAIsxB,IACX+rO,IAGqB,IAApB1pP,EAAM5U,EAAIuyB,KACX+rO,GAAS,GAGbC,GAAWD,EAGf,OAAOC,KAKfl6P,EAAWshB,EAAS,CAChBxP,IAAK,CACD6gP,OAAQ,CACJwH,KAAMnB,EACNA,UAAWA,EACXa,SAAUA,MA7K1B,CAkLGvhQ,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIkmJ,EAAM15I,SACNhM,EAAOC,KACPsS,EAAUhT,EAAE0yB,QAEZ10B,EAAQG,OAAOH,MACfiH,EAAQjH,EAAMiH,MACdmG,EAAapN,EAAMkN,KAAKE,WACxB62G,EAAUjkH,EAAMgpB,GAAGi7F,QAEnB96F,EAAUnpB,EAAMmpB,QAChBthB,EAAa7H,EAAM6H,WAEnB8R,EAAMwP,EAAQxP,IACd26O,EAAW36O,EAAI26O,SACfmG,EAAQ9gP,EAAI6gP,OAAOC,MAGnBwH,EAAcxH,EAAMr4P,OAAO,CAC3BoF,KAAM,SAASmS,EAAKpT,GAChBk0P,EAAMrzP,GAAGI,KAAKoC,KAAKvK,KAAMsa,EAAKpT,GAE9BlH,KAAK6iQ,aAAe7iQ,KAAK6iQ,aAAar5P,KAAKxJ,MAC3CA,KAAK6L,QAAQod,GAAG,QAAS,YAAajpB,KAAK6iQ,cAE3C7iQ,KAAKo0B,MAAQ,GACbp0B,KAAKmlO,mBAGTnjO,QAAS,WACLo5P,EAAMrzP,GAAG/F,QAAQuI,KAAKvK,MAEtBA,KAAK6L,QAAQotB,IAAI,QAAS,YAAaj5B,KAAK6iQ,cAE5C7iQ,KAAK8wB,WAAW7mB,OAAO,SAAUjK,KAAKm8P,aACtCn8P,KAAKi2D,SAGT/uD,QAAS,CACL0yC,OAAQ,IACRm3B,UAAU,EACVjgD,WAAY,GACZktO,cAAe,WACf8E,WAAY,SAGhB71P,IAAK,SAAS0lI,GACV,IAAIzvI,MAAMD,QAAQ0vI,GAKd,OAAO3yI,KAAK+iQ,QAAQpwH,GAJpB,IAAK,IAAIprI,EAAI,EAAGA,EAAIorI,EAAInrI,OAAQD,IAC5BvH,KAAK+iQ,QAAQpwH,EAAIprI,KAO7BwvB,OAAQ,SAASuxB,GACbA,EAAOtmD,UAEP,IAAI+W,EAAQpD,EAAQ2yC,EAAQtoD,KAAKo0B,OAC7Brb,GAAS,GACT/Y,KAAKo0B,MAAM5pB,OAAOuO,EAAO,IAIjCk9C,MAAO,WACH,IAAK,IAAI1uD,EAAI,EAAGA,EAAIvH,KAAKo0B,MAAM5sB,OAAQD,IACnCvH,KAAKo0B,MAAM7sB,GAAGvF,UAGlBhC,KAAKo0B,MAAQ,IAGjB2yB,OAAQ,SAASuB,GACb,IAAIktM,EAAMltM,EAAO/lC,WACjB,GAAIizO,EAAK,CACLltM,EAAOklJ,OAAOxtM,KAAKsa,IAAIyiP,eAAevH,IAEtC,IAAIr+N,EAAO,CAAEmxB,OAAQA,EAAQs0M,MAAO58P,MACpCA,KAAKsa,IAAIlQ,QAAQ,iBAAkB+sB,KAI3C+0C,OAAQ,WACJkvL,EAAMrzP,GAAGmkE,OAAO3hE,KAAKvK,MAErB,IADA,IAAIo0B,EAAQp0B,KAAKo0B,MACR7sB,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9BvH,KAAK+mD,OAAO3yB,EAAM7sB,KAI1BiC,KAAM,SAAStC,EAASmtB,GACpB,IAAIi0B,EAAShuC,EAAI0oP,OAAOh8M,OAAO9/C,EAASlH,KAAKkH,SAC7CohD,EAAOj0B,SAAWA,EAElB,IAAI8C,EAAO,CAAEmxB,OAAQA,EAAQs0M,MAAO58P,MAEpC,IADgBA,KAAKsa,IAAIlQ,QAAQ,gBAAiB+sB,GAG9C,OADAn3B,KAAKiN,IAAIq7C,GACFA,GAIfk9K,cAAe,SAAS10M,GAChB9wB,KAAK8wB,YACL9wB,KAAK8wB,WAAW7mB,OAAO,SAAUjK,KAAKm8P,aAG1Cn8P,KAAK8wB,WAAanwB,EAAMkN,KAAKE,WAAWi5C,OAAOl2B,GAC/C9wB,KAAK8wB,WAAWtnB,KAAK,SAAUxJ,KAAKm8P,aAEhCn8P,KAAKkH,QAAQ6pE,UACb/wE,KAAK8wB,WAAWq0C,SAIxB49L,QAAS,SAASpwH,GACd,IAAIrqF,EAAS06M,EAAOh8M,OAAO2rF,EAAK3yI,KAAKkH,SAGrC,OAFAohD,EAAO26M,MAAMjjQ,MAENsoD,GAGX68K,gBAAiB,WACb,IAAI4tB,EAAY/yP,KAAKkH,QAAQ4pB,WAC7B9wB,KAAKm8P,YAAcn8P,KAAKm8P,YAAY3yP,KAAKxJ,MACzCA,KAAK8wB,WAAa/iB,EACbi5C,OAAO+rM,GACPvpP,KAAK,SAAUxJ,KAAKm8P,aAErBpJ,GAAa/yP,KAAKkH,QAAQ6pE,UAC1B/wE,KAAK8wB,WAAWq0C,SAIxBg3L,YAAa,SAASx3P,GAClB3E,KAAKq8P,MAAM13P,EAAE2F,OAAOotB,SAGxB2kO,MAAO,SAASxuP,GACZ7N,KAAKq5D,MAAQxrD,EACb7N,KAAKi2D,QAIL,IAFA,IAAIitM,EAAcviQ,EAAMmuB,OAAO9uB,KAAKkH,QAAQ82P,eACxCmF,EAAWxiQ,EAAMmuB,OAAO9uB,KAAKkH,QAAQ47P,YAChCv7P,EAAI,EAAGA,EAAIsG,EAAKrG,OAAQD,IAAK,CAClC,IAAI8sB,EAAWxmB,EAAKtG,GACpBvH,KAAKwJ,KAAK,CACN+Y,SAAU2gP,EAAY7uO,GACtB0pB,MAAOolN,EAAS9uO,IACjBA,KAIXwuO,aAAc,SAASl+P,GACnB,IAAIwyB,EAAO,CAAEmxB,OAAQ3lD,EAAEgC,EAAE2C,QAAQuG,KAAK,eAAgB+uP,MAAO58P,MAC7DA,KAAKsa,IAAIlQ,QAAQ,cAAe+sB,MAIpC6rO,EAASp7P,EAAM7E,OAAO,CACtBoF,KAAM,SAASjB,GACXlH,KAAKkH,QAAUA,GAAW,IAG9B+7P,MAAO,SAAS92P,GACZnM,KAAK48P,MAAQzwP,EAAO2/K,SAAW3/K,EAC/BnM,KAAK48P,MAAMxoO,MAAMzyB,KAAK3B,MACtBA,KAAK48P,MAAM71M,OAAO/mD,OAGtBuiB,SAAU,SAAS7Z,GACf,OAAIA,GACA1I,KAAKkH,QAAQqb,SAAW0yO,EAASjuM,OAAOt+C,GAAOirD,UAE3C3zD,KAAK48P,OACL58P,KAAK48P,MAAM71M,OAAO/mD,MAGfA,MAEAi1P,EAASjuM,OAAOhnD,KAAKkH,QAAQqb,WAI5CirL,OAAQ,SAASnzE,GACbr6H,KAAK4P,SACL5P,KAAK6L,QAAQe,IAAI,CACbif,KAAMzoB,EAAK2S,MAAMskH,EAAMj1H,GACvBgf,IAAKhhB,EAAK2S,MAAMskH,EAAMl2H,KAGtBnE,KAAKm8J,SAAWn8J,KAAKm8J,QAAQjpE,OAE7BlzF,KAAKm8J,QAAQjpE,MAAMR,aAI3BvlF,KAAM,WACEnN,KAAK6L,UACL7L,KAAK6L,QAAQkrB,SACb/2B,KAAK6L,QAAU,MAGf7L,KAAKm8J,UACLn8J,KAAKm8J,QAAQn6J,UACbhC,KAAKm8J,QAAU,OAIvBn6J,QAAS,WACLhC,KAAK48P,MAAQ,KACb58P,KAAKmN,QAGTyC,OAAQ,WACJ,IAAK5P,KAAK6L,QAAS,CACf,IAAI3E,EAAUlH,KAAKkH,QACf01P,EAAQ58P,KAAK48P,MAEjB58P,KAAK6L,QAAUlJ,EAAEmmJ,EAAIhrI,cAAc,SAC9BgF,KAAK,QAAS5b,EAAQ62C,OACtBj7B,KAAK5b,EAAQ2iD,YAAc,IAC3Bh8C,KAAK,cAAe7N,MACpB4M,IAAI,SAAU1F,EAAQ0yC,QAEvB1yC,EAAQ+4I,MACc,cAAlB/4I,EAAQ+4I,MACRt/I,EAAMgpB,GAAG2tE,KAAKt3F,KAAK6L,QAAS,CAAEyrF,KAAM,oBAAqBF,UAAW,WAAY3nF,KAAM,YAC7D,QAAlBvI,EAAQ+4I,MACft/I,EAAMgpB,GAAG2tE,KAAKt3F,KAAK6L,QAAS,CAAEyrF,KAAM,aAAcF,UAAW,WAAY3nF,KAAM,YAE/EzP,KAAK6L,QAAQ0Y,SAAS,8BAAgC5jB,EAAMssB,UAAU/lB,EAAQ+4I,QAGlFt/I,EAAMgpB,GAAG2tE,KAAKt3F,KAAK6L,QAAS,CAAEyrF,KAAM,aAAcF,UAAW,WAAY3nF,KAAM,YAG/EmtP,GACAA,EAAM/wP,QAAQkuC,OAAO/5C,KAAK6L,SAG9B7L,KAAKojQ,kBAIbA,cAAe,WACX,IAAI96M,EAAStoD,KACT+9C,EAAQuK,EAAOphD,QAAQ62C,MACvB72C,EAAUohD,EAAOphD,QAAQi1J,SAAW,GAExC,GAAIj1J,GAAW09G,EAAS,CACpB,IAAI/0G,EAAW3I,EAAQ2I,SACvB,GAAIA,EAAU,CACV,IAAIwzP,EAAkB1iQ,EAAMkP,SAASA,GACrC3I,EAAQq/C,QAAU,SAAS5hD,GAGvB,OAFAA,EAAE4d,SAAW+lC,EAAO/lC,WACpB5d,EAAE2jD,OAASA,EACJ+6M,EAAgB1+P,KAI3Bo5C,GAAS72C,EAAQq/C,SAAWr/C,EAAQo8P,cACpCtjQ,KAAKm8J,QAAU,IAAIv3C,EAAQ5kH,KAAK6L,QAAS3E,GACzClH,KAAKm8J,QAAQ7zG,OAAStoD,UAMtCgjQ,EAAOh8M,OAAS,SAAS2rF,EAAK/xI,GAC1B,OAAI+xI,aAAeqwH,EACRrwH,EAGJ,IAAIqwH,EAAOx6P,EAAW,GAAI5H,EAAU+xI,KAI/CnqI,EAAWshB,EAAS,CAChBxP,IAAK,CACD6gP,OAAQ,CACJ7yM,OAAQs6M,EACRA,YAAaA,GAEjBI,OAAQA,KA9RpB,CAkSGliQ,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIkmJ,EAAM15I,SACNhM,EAAOC,KACP8S,EAAM/S,EAAK+S,IACXuzB,EAAMtmC,EAAKsmC,IAEX/oC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBloB,EAAa7H,EAAM6H,WAEnBshB,EAAUnpB,EAAMmpB,QAChBH,EAAKG,EAAQH,GAEb9U,EAAIlU,EAAMi/H,SACV5F,EAAQnlH,EAAEmlH,MAEV1/G,EAAMwP,EAAQxP,IACdm9O,EAASn9O,EAAIm9O,OACbxC,EAAW36O,EAAI26O,SACfyF,EAAWpgP,EAAIygP,IAAIL,SAGnBlG,EADO7zP,EAAMglH,KACI6uI,UAEjBwK,EAAcr+P,EAAMopB,QAAQ47F,KAE5BqP,EAAUgqI,EAAYhqI,QACtBggD,EAAQgqF,EAAYtoI,WACpBQ,EAAiB8nI,EAAY9nI,eAW7BqsI,EAAM7yO,EAAO3tB,OAAO,CACpBoF,KAAM,SAAS0D,EAAS3E,GACpBvG,EAAMqB,QAAQ6J,GACd6kB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,GAE1B7L,KAAKuI,aAAarB,GAClBlH,KAAKwJ,KAAKxJ,KAAKqK,OAAQnD,GAEvBlH,KAAK+6P,IAAM,IAAIL,EAEf16P,KAAK6L,QACA0Y,SAnBI,KAmBkBvkB,KAAKkH,QAAQ9E,KAAKkW,eACxC1L,IAAI,WAAY,YAChB2/C,QACAxS,OAAO+uG,EAAIhrI,cAAc,QAE9B9d,KAAKggQ,YAAchgQ,KAAKwjQ,aACxBxjQ,KAAKyjQ,gBACLzjQ,KAAK0jQ,eACL1jQ,KAAK2jQ,gBACL3jQ,KAAK4jQ,cACL5jQ,KAAKksE,SAELlsE,KAAK4lN,YAAc5lN,KAAK4lN,YAAYp8M,KAAKxJ,MACzCA,KAAK6L,QAAQod,GA7BJ,4BA6BmBjpB,KAAK4lN,cAGrC1+M,QAAS,CACL9E,KAAM,MACNyhQ,SAAU,CACN9H,aAAa,EACbj6O,UAAW,CACPk3O,QAAS,KAEb3oN,MAAM,GAEV8qN,OAAQ,GACR2I,cAAe,CACX7jH,MAAO,CACHxzI,MAAO,CACHwmB,KAAM,CACFm8F,MAAO,QAEXyO,OAAQ,CACJzO,MAAO,OACPpiH,MAAO,MAInBm/K,OAAQ,CACJ1/K,MAAO,CACHwmB,KAAM,CACFm8F,MAAO,OACPx4F,QAAS,IAEbinG,OAAQ,CACJzO,MAAO,OACPpiH,MAAO,MAInBs7C,OAAQ,CACJ23F,MAAO,YACPkc,QAAS,CACLrvJ,SAAU,SAItBywE,OAAQ,CAAC,EAAG,GACZltC,KAAM,EACN47J,QAAS,IACTwsD,QAAS,EACTC,QAAS,GACT5sE,QAAS,GACTi4E,eAAgB,CACZ9jH,MAAO,YACPkc,QAAS,CACLrvJ,SAAU,QAGlBk3P,YAAY,EACZ/5O,SAAU,CACNs1O,UAAW,aAInBl1P,OAAQ,CACJ,cACA,QACA,iBACA,cACA,gBACA,MACA,SACA,QACA,aACA,eACA,sBACA,kBACA,kBACA,UACA,aAGJrI,QAAS,WACLhC,KAAKikQ,SAASjiQ,UAEVhC,KAAK8hB,WACL9hB,KAAK8hB,UAAU9f,UAGfhC,KAAK+7P,aACL/7P,KAAK+7P,YAAY/5P,UAGjBhC,KAAKkkQ,aACLlkQ,KAAKkkQ,YAAYliQ,UAGrBhC,KAAK8rL,QAAQ9pL,UAEb,IAAK,IAAIuF,EAAI,EAAGA,EAAIvH,KAAKm7P,OAAO3zP,OAAQD,IACpCvH,KAAKm7P,OAAO5zP,GAAGvF,UAGnB0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,OAG3BqwC,KAAM,SAASq6B,GACX,IAAIxjE,EAAUlH,KAAKkH,QAEnB,OAAI8tH,EAAQtqD,IACRA,EAAQtnE,EAAK2S,MAAMi/J,EAAMtqG,EAAOxjE,EAAQuxP,QAASvxP,EAAQwxP,UACrDxxP,EAAQmpC,OAASq6B,IACjBxjE,EAAQmpC,KAAOq6B,EACf1qE,KAAKksE,UAGFlsE,MAEAkH,EAAQmpC,MAIvBktC,OAAQ,SAASA,GACb,OAAIA,GACAv9E,KAAKkH,QAAQq2E,OAAS03K,EAASjuM,OAAOu2B,GAAQ5pB,UAC9C3zD,KAAKksE,SAEElsE,MAEAi1P,EAASjuM,OAAOhnD,KAAKkH,QAAQq2E,SAI5C26K,OAAQ,SAASA,GACb,OAAIA,GACAl4P,KAAKmkQ,WAAWjM,GACTl4P,MAEAA,KAAKokQ,cAIpB7yO,WAAY,SAASrqB,GACjBwpB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,GAChClH,KAAKksE,UAGTmzL,gBAAiB,SAAS98O,EAAU8tB,GAChC,IAAIupN,GAAS55P,KAAKkH,QAAQ88P,WAE1B,OADAzhP,EAAW0yO,EAASjuM,OAAOzkC,GACpBviB,KAAK+6P,IAAI5gD,QAAQ53L,EAAUviB,KAAKqkQ,WAAWh0N,GAAOupN,IAG7D0K,gBAAiB,SAASjqI,EAAOhqF,GAC7B,IAAIupN,GAAS55P,KAAKkH,QAAQ88P,WAE1B,OADA3pI,EAAQL,EAAMhzE,OAAOqzE,GACdr6H,KAAK+6P,IAAID,WAAWzgI,EAAOr6H,KAAKqkQ,WAAWh0N,GAAOupN,IAG7DmD,eAAgB,SAASx6O,GACrBA,EAAW0yO,EAASjuM,OAAOzkC,GAC3B,IAAIq2B,EAAS54C,KAAKq/P,gBAAgBr/P,KAAKggQ,aAGvC,OAFYhgQ,KAAKq/P,gBAAgB98O,GAEpB63G,cAAcxhF,EAAOjJ,OAAO,KAG7C40N,eAAgB,SAASlqI,EAAOhqF,GAC5B,IAAIuI,EAAS54C,KAAKq/P,gBAAgBr/P,KAAKwjQ,aAAcnzN,GAGrD,OADAgqF,GADAA,EAAQL,EAAMhzE,OAAOqzE,IACPlzH,QAAQizH,cAAcxhF,GAC7B54C,KAAKskQ,gBAAgBjqI,EAAOhqF,IAGvCm0N,YAAa,SAAS7/P,GAClB,IAAI01H,EACAj1H,EACAjB,EACA4Y,EAAS/c,KAAK6L,QAAQkR,SAE1B,GAAIpY,EAAES,GAAKT,EAAER,EAAG,CACZ,IAAI8gB,EAAQ,WACZ7f,EAAIT,EAAES,EAAE6f,GAASlI,EAAO8O,KACxB1nB,EAAIQ,EAAER,EAAE8gB,GAASlI,EAAOqH,IACxBi2G,EAAQ,IAAIxlH,EAAEmlH,MAAM50H,EAAGjB,OACpB,CACH,IAAIib,EAAQza,EAAEgkB,eAAiBhkB,EAC/BS,EAAI8xH,EAAe93G,EAAM4iE,MAAO5iE,EAAM0J,SAAW/L,EAAO8O,KACxD1nB,EAAI+yH,EAAe93G,EAAM6iE,MAAO7iE,EAAM2J,SAAWhM,EAAOqH,IACxDi2G,EAAQ,IAAIxlH,EAAEmlH,MAAM50H,EAAGjB,GAG3B,OAAOk2H,GAGXoqI,YAAa,SAAS9/P,GAClB,IAAIg0I,EAAS34I,KAAKwkQ,YAAY7/P,GAC9B,OAAO3E,KAAK+8P,eAAe/8P,KAAKukQ,eAAe5rH,KAGnD+rH,aAAc,SAAS//P,GACnB,OAAO3E,KAAKq/P,gBAAgBr/P,KAAK2kQ,gBAAgBhgQ,KAGrDggQ,gBAAiB,SAAShgQ,GACtB,IAAIg0I,EAAS34I,KAAKwkQ,YAAY7/P,GAC9B,OAAO3E,KAAKukQ,eAAe5rH,IAG/B5sE,SAAU,WACN,IAAIlgE,EAAU7L,KAAK6L,QACf8jC,EAAQ3vC,KAAKqkQ,aACbr3P,EAAQnB,EAAQmB,QAKpB,OAHKhN,KAAKkH,QAAQ88P,aACdh3P,EAAQmJ,EAAIw5B,EAAO3iC,IAEhB,CACHA,MAAOA,EACPL,OAAQwJ,EAAIw5B,EAAO9jC,EAAQc,YAInCwoI,aAAc,WAEV,OADAn1I,KAAKksE,UACE,GAGX04L,WAAY,SAAShsN,EAAQvI,GACzB,IACImrF,EADA/rH,EAAOzP,KAAK+rE,WAUhB,OAPAnzB,EAAS54C,KAAK6kQ,QAAU5P,EAASjuM,OAAOpO,IACxC4iF,EAAUx7H,KAAKq/P,gBAAgBzmN,EAAQvI,IAC/BjrC,GAAKqK,EAAKzC,MAAQ,EAC1BwuH,EAAQr3H,GAAKsL,EAAK9C,OAAS,EAE3B3M,KAAKkH,QAAQq2E,OAASv9E,KAAKskQ,gBAAgB9oI,EAASnrF,GAAMsjB,UAEnD3zD,MAGXwjQ,WAAY,SAAS1uH,GACjB,IACItZ,EADA/rH,EAAOzP,KAAK+rE,WAWhB,OARI+oE,GAAe90I,KAAK6kQ,WACpBrpI,EAAUx7H,KAAKq/P,gBAAgBr/P,KAAKu9E,WAC5Bn4E,GAAKqK,EAAKzC,MAAQ,EAC1BwuH,EAAQr3H,GAAKsL,EAAK9C,OAAS,EAE3B3M,KAAK6kQ,QAAU7kQ,KAAKskQ,gBAAgB9oI,IAGjCx7H,KAAK6kQ,SAGhBV,WAAY,SAASjM,GACjB,IAAI9tM,EAAMqtM,EAAOzwM,OAAOkxM,GACpBP,EAAKvtM,EAAIutM,GAAGxwP,QACZnH,KAAKkH,QAAQ88P,YAAcrM,EAAGxC,IAAM,GAAK+C,EAAOR,GAAGvC,IAAM,IACzDwC,EAAGxC,IAAM,KAAO,IAAMwC,EAAGxC,MAG7B+C,EAAS,IAAIT,EAAOrtM,EAAIstM,GAAIC,GAC5B33P,KAAKu9E,OAAO26K,EAAO36K,UAInB,IAFA,IAAIvwE,EAAQhN,KAAK6L,QAAQmB,QACrBL,EAAS3M,KAAK6L,QAAQc,SACjB0jC,EAAOrwC,KAAKkH,QAAQwxP,QAASroN,GAAQrwC,KAAKkH,QAAQuxP,QAASpoN,IAAQ,CACxE,IAAImrF,EAAUx7H,KAAKq/P,gBAAgBnH,EAAOR,GAAIrnN,GAC1CorF,EAAcz7H,KAAKq/P,gBAAgBnH,EAAOP,GAAItnN,GAE9Cy0N,EAAa1hQ,EAAK8T,IAAIukH,EAAYr2H,EAAIo2H,EAAQp2H,GAC9C2/P,EAAc3hQ,EAAK8T,IAAIukH,EAAYt3H,EAAIq3H,EAAQr3H,GAEnD,GAAI2gQ,GAAc93P,GAAS+3P,GAAep4P,EACtC,MAIR3M,KAAKqwC,KAAKA,IAGd+zN,WAAY,WACR,IAAI1M,EAAK13P,KAAKwjQ,aACV/nI,EAAcz7H,KAAKq/P,gBAAgB3H,GACnCjoP,EAAOzP,KAAK+rE,WAEhB0vD,EAAYr2H,GAAKqK,EAAKzC,MACtByuH,EAAYt3H,GAAKsL,EAAK9C,OAEtB,IAAIgrP,EAAK33P,KAAKskQ,gBAAgB7oI,GAC9B,OAAO,IAAIg8H,EAAOC,EAAIC,IAG1BqN,YAAa,SAASC,EAAOv6L,GACzB1qE,KAAK4kQ,WAAW5kQ,KAAKskQ,gBAAgBW,EAAOv6L,GAAQA,GACpD1qE,KAAKqwC,KAAKq6B,IAGdi5L,cAAe,WACX,IAAIE,EAAW7jQ,KAAKkH,QAAQ28P,SAExBl6O,EAAGyuO,aAAeyL,EAAS9H,aAC3B/7P,KAAKklQ,mBAAmBrB,EAAS9H,aAGhCp7P,EAAM4C,QAAQkf,WACXkH,EAAG0lO,WAAawU,EAAS/hP,WACzB9hB,KAAKmlQ,iBAAiBtB,EAAS/hP,WAG/B6H,EAAGuvO,aAAe2K,EAASxzN,MAC3BrwC,KAAKolQ,mBAAmBvB,EAASxzN,QAK7Cg1N,sBAAuB,SAASn+P,EAASo+P,GACrC,IAAIjxK,EAAMntF,EAAQ4F,UAAYw4P,EAC1BC,EAAc,IAAM/Q,EAAUngK,GAAK5xF,QAAQ,IAAK,KAChDupB,EAAOrpB,EAAE,kBAAoB4iQ,EAAavlQ,KAAK6L,SAOnD,OANoB,IAAhBmgB,EAAKxkB,SACLwkB,EAAOrpB,EAAE,SACD4hB,SAAS,kBAAoBiwO,EAAUngK,IACvClnD,SAASntC,KAAK6L,UAGnBlJ,EAAE,SAASwqC,SAASnhB,IAG/Bk5O,mBAAoB,SAASh+P,GACzB,IAAI2E,EAAU7L,KAAKqlQ,sBAAsBn+P,EAAS,eAClDlH,KAAK+7P,YAAc,IAAIpyO,EAAGyuO,YAAYvsP,EAAS3E,IAGnDi+P,iBAAkB,SAASj+P,GACvB,IAAI2E,EAAU7L,KAAKqlQ,sBAAsBn+P,EAAS,WAC9C4a,EAAY9hB,KAAK8hB,UAAY,IAAI6H,EAAG0lO,UAAUxjP,EAAS3E,GAE3DlH,KAAKwlQ,cAAgBxlQ,KAAKwlQ,cAAch8P,KAAKxJ,MAC7C8hB,EAAUtY,KAAK,MAAOxJ,KAAKwlQ,eAE3BxlQ,KAAKylQ,iBAAmBzlQ,KAAKylQ,iBAAiBj8P,KAAKxJ,MACnD8hB,EAAUtY,KAAK,SAAUxJ,KAAKylQ,mBAGlCD,cAAe,SAAS7gQ,GACpB,IAAI2V,EAAMta,KACNikQ,EAAW3pP,EAAI2pP,SAEf7+P,EAAI6+P,EAASr3O,WAAajoB,EAAES,EAC5BjB,EAAI8/P,EAASttO,UAAYhyB,EAAER,EAE3BuhQ,EAAS1lQ,KAAK2lQ,aACdh5P,EAAS3M,KAAK6L,QAAQc,SACtBK,EAAQhN,KAAK6L,QAAQmB,QAGzB5H,EAAI4vK,EAAM5vK,EAAGsgQ,EAAOtgQ,EAAE+Q,IAAKuvP,EAAOtgQ,EAAEwT,IAAM5L,GAC1C7I,EAAI6wK,EAAM7wK,EAAGuhQ,EAAOvhQ,EAAEgS,IAAKuvP,EAAOvhQ,EAAEyU,IAAMjM,GAE1C2N,EAAI2pP,SAASt6P,IAAI,UAAU,SAAShF,GAAK2V,EAAIsrP,WAAWjhQ,MACxD2V,EAAI2pP,SAASn2K,UAAU1oF,GAAIjB,IAG/BshQ,iBAAkB,WACdzlQ,KAAKu9E,OAAOv9E,KAAKkH,QAAQq2E,SAG7B6nL,mBAAoB,SAASl+P,GACzB,IAAI2E,EAAU7L,KAAKqlQ,sBAAsBn+P,EAAS,WAC9Cg9P,EAAclkQ,KAAKkkQ,YAAc,IAAIv6O,EAAGuvO,YAAYrtP,EAAS3E,GAEjElH,KAAK6lQ,mBAAqB7lQ,KAAK6lQ,mBAAmBr8P,KAAKxJ,MACvDkkQ,EAAY16P,KAAK,SAAUxJ,KAAK6lQ,qBAGpCA,mBAAoB,SAASlhQ,GACpB3E,KAAKoK,QAAQ,YAAa,CAAEue,cAAehkB,MAC5C3E,KAAKqwC,KAAKrwC,KAAKqwC,OAAS1rC,EAAEigC,OAC1B5kC,KAAKoK,QAAQ,UAAW,CAAEue,cAAehkB,MAIjD8+P,cAAe,WACX,IAAIt3K,EAAWxrF,EAAM4C,QAAQkf,SA/Zf,IADP,GAiaH80M,GAAqC,IAA1Bv3N,KAAKkH,QAAQqwN,SACxB0sC,EAAWjkQ,KAAKikQ,SAAW,IAAItjQ,EAAMkpB,OAAOF,GAAG+O,SAC/C14B,KAAK6L,QAAQspC,SAAS,GAAI,CACtBg3C,SAAUA,EACVD,mBAlaU,EAmaV77C,KAAMknL,EACNxpI,qBAAqB,EACrBlP,kBAAkB,IAG1BolL,EAASz6P,KAAK,SAAUxJ,KAAK8lQ,QAAQt8P,KAAKxJ,OAC1CikQ,EAASz6P,KAAK,YAAaxJ,KAAK4lQ,WAAWp8P,KAAKxJ,OAChDikQ,EAAS3lL,WAAW90E,KAAK,eAAgBxJ,KAAK+lQ,YAAYv8P,KAAKxJ,OAC/DikQ,EAAS3lL,WAAW90E,KAAK,aAAcxJ,KAAKgvF,OAAOxlF,KAAKxJ,OACxDikQ,EAAS3lL,WAAW90E,KAAK,YAAaxJ,KAAKgmQ,WAAWx8P,KAAKxJ,OAC3DikQ,EAAS3lL,WAAW90E,KAAK,MAAOxJ,KAAKq/E,KAAK71E,KAAKxJ,OAE/CA,KAAKotF,cAAgB62K,EAAS72K,eAGlCw2K,YAAa,WAIT,IAHA,IAAI9oH,EAAO96I,KAAKkH,QAAQi0P,OACpBA,EAASn7P,KAAKm7P,OAAS,GAElB5zP,EAAI,EAAGA,EAAIuzI,EAAKtzI,OAAQD,IAAK,CAClC,IAAIL,EAAU4zI,EAAKvzI,GACf7B,EAAOwB,EAAQxB,MAAQ,QACvB9E,EAAWZ,KAAKkH,QAAQ48P,cAAcp+P,GACtCiqD,EAAO7lC,EAAQxP,IAAI6gP,OAAOz1P,GAE9By1P,EAAOx5P,KAAK,IAAIguD,EAAK3vD,KAAMwI,EAAW,GAAI5H,EAAUsG,OAI5Dw8P,aAAc,WACV1jQ,KAAK8rL,QAAU,IAAIxxK,EAAI6gP,OAAOyH,YAAY5iQ,KAAMA,KAAKkH,QAAQ68P,gBAC7D/jQ,KAAK8rL,QAAQ7+K,IAAIjN,KAAKkH,QAAQ4kL,UAGlCg6E,QAAS,SAASnhQ,GACd,IAAIi0C,EAAS54C,KAAKq/P,gBAAgBr/P,KAAKggQ,aAAajqP,QAChDsmC,EAAU13C,EAAE2F,OAAO+xC,QAEnBt/B,EAAS,IAAIlI,EAAEmlH,MAAM39E,EAAQj3C,EAAGi3C,EAAQl4C,GAAGwrC,OAAO,GAAGA,MAAM,EAAI0M,EAAQ1M,OAC3EiJ,EAAOxzC,GAAK2X,EAAO3X,EACnBwzC,EAAOz0C,GAAK4Y,EAAO5Y,EAEnBnE,KAAKimQ,cAAgBlpP,EAErB/c,KAAK4kQ,WAAW5kQ,KAAKskQ,gBAAgB1rN,IACrC54C,KAAKoK,QAAQ,MAAO,CAChBue,cAAehkB,EACfi0C,OAAQ54C,KAAKwjQ,aACbjmL,OAAQv9E,KAAKu9E,YAIrBqoL,WAAY,SAASjhQ,GACZ3E,KAAKimQ,eAAkBjmQ,KAAKkmQ,iBAIjClmQ,KAAKimQ,cAAgB,KACrBjmQ,KAAKmmQ,UAAY,IAAI/3P,KAErBpO,KAAKoK,QAAQ,SAAU,CACnBue,cAAehkB,EACfi0C,OAAQ54C,KAAKwjQ,aACbjmL,OAAQv9E,KAAKu9E,aAIrB2oL,aAAc,WACV,OAAO,IAAI93P,MAAUpO,KAAKmmQ,WAAa,GAAK,IAGhDJ,YAAa,SAASphQ,GAClB,GAAI3E,KAAKoK,QAAQ,YAAa,CAAEue,cAAehkB,IAAM,CACjD,IAAI8Z,EAAQ9Z,EAAE+jB,QAAQ,GAClBjK,GACAA,EAAM+b,WAKlBw0D,OAAQ,SAASrqF,GACb,IAAIgrC,EAAQ3vC,KAAKikQ,SAAS5nN,QAAQ1M,MAC9BU,EAAOrwC,KAAKomQ,aAAaz2N,GACzB02N,EAAgB,IAAIxxP,EAAEmlH,MAAMr1H,EAAE44E,OAAOn4E,EAAGT,EAAE44E,OAAOp5E,GACjDmiQ,EAAiBtmQ,KAAKukQ,eAAe8B,EAAeh2N,GAEpD8pF,EADcn6H,KAAKq/P,gBAAgBiH,EAAgBj2N,GACzBL,WAAWq2N,EAAcjhQ,GAAIihQ,EAAcliQ,GAEzEnE,KAAKglQ,YAAY7qI,EAAa9pF,GAC9BrwC,KAAKoK,QAAQ,UAAW,CAAEue,cAAehkB,KAG7CyhQ,aAAc,SAAS9/K,GACnB,IACIigL,EADQvmQ,KAAKqkQ,aAAe/9K,EACZtmF,KAAKkH,QAAQ+kM,QAC7B57J,EAAOjtC,EAAKqtB,IAAI81O,GAASnjQ,EAAKqtB,IAAI,GAEtC,OAAOrtB,EAAK2S,MAAMs6B,IAGtB67B,OAAQ,WACAlsE,KAAK+7P,aACL/7P,KAAK+7P,YAAY9lO,OAAOj2B,KAAKu9E,SAAUv9E,KAAKqwC,QAGhDrwC,KAAKggQ,YAAchgQ,KAAKwjQ,YAAW,GACnCxjQ,KAAKwmQ,iBACLxmQ,KAAKoK,QAAQ,eACbpK,KAAKoK,QAAQ,QAAS,CAClBm1P,UAAWv/P,KAAKkH,QAAQ+iB,SAASs1O,aAIzCiH,eAAgB,WACZ,IAAIvC,EAAWjkQ,KAAKikQ,SAChB7+P,EAAI6+P,EAASjyO,WAAW5sB,EACxBjB,EAAI8/P,EAASjyO,WAAW7tB,EACxBwrC,EAAQ3vC,KAAKqkQ,aACb3M,EAAK13P,KAAKk4P,SAASR,GACnBl8H,EAAUx7H,KAAKq/P,gBAAgB3H,GAAI3hP,QAEvCkuP,EAAS5nN,QAAQtmC,OAAQ,EACzBkuP,EAASxuN,QACTwuN,EAAS3lL,WAAW9jD,SAEpB,IAAI6V,EAAOrwC,KAAKqwC,OAChB4zN,EAASjyO,WAAWqzD,eAAiB37C,EAAI,EAAG1pC,KAAKkH,QAAQuxP,QAAUpoN,GACnE4zN,EAASjyO,WAAWszD,SAAW57C,EAAI,EAAG1pC,KAAKkH,QAAQwxP,QAAUroN,GAE7D,IAAIo2N,EAAU,CAAEtwP,KAAMqlH,EAAQp2H,EAAGwT,IAAK+2B,EAAQ6rF,EAAQp2H,GAClDshQ,EAAU,CAAEvwP,KAAMqlH,EAAQr3H,EAAGyU,IAAK+2B,EAAQ6rF,EAAQr3H,GAOtD,GALInE,KAAKkH,QAAQ88P,aACbyC,EAAQ7tP,IAAM,GAAK+2B,EACnB82N,EAAQtwP,KAAOswP,EAAQ7tP,MAGG,IAA1B5Y,KAAKkH,QAAQ4nK,SAAoB,CACjC,IAAI/iG,EAAW/rE,KAAK+rE,WACpB06L,EAAQtwP,IAAMuwP,EAAQvwP,IAAM,EAC5BswP,EAAQ7tP,IAAMmzD,EAAS/+D,MACvB05P,EAAQ9tP,IAAMmzD,EAASp/D,OAG3BvH,EAAEq/E,cACFtgF,EAAEsgF,cACFr/E,EAAEw/E,YAAY6hL,EAAQtwP,IAAKswP,EAAQ7tP,KACnCzU,EAAEygF,YAAY8hL,EAAQvwP,IAAKuwP,EAAQ9tP,KAEnC5Y,KAAK2lQ,aAAe,CAAEvgQ,EAAGqhQ,EAAStiQ,EAAGuiQ,IAGzCC,cAAe,WACX,IAAI7rH,EAAO96I,KAAKkH,QAAQi0P,OACpBA,EAASn7P,KAAKm7P,OAAS,GACVn7P,KAAK4mQ,WAEXr6M,QAEX,IAAK,IAAIhlD,EAAI,EAAGA,EAAIuzI,EAAKtzI,OAAQD,IAAK,CAClC,IAAIL,EAAU4zI,EAAKvzI,GACf7B,EAAOwB,EAAQxB,MAAQ,QACvB9E,EAAWZ,KAAKkH,QAAQ48P,cAAcp+P,GACtCiqD,EAAO7lC,EAAQxP,IAAI6gP,OAAOz1P,GAE9By1P,EAAOx5P,KAAK,IAAIguD,EAAK3vD,KAAMwI,EAAW,GAAI5H,EAAUsG,OAI5Dm9P,WAAY,SAASh0N,GAEjB,OADAA,EAAO6mF,EAAe7mF,EAAMrwC,KAAKkH,QAAQmpC,MAClCrwC,KAAKkH,QAAQ+kM,QAAUviK,EAAI,EAAG2G,IAGzCgvC,KAAM,SAAS16E,GACX,GAAK3E,KAAKkmQ,eAAV,CAIA,IAAIvtH,EAAS34I,KAAKwkQ,YAAY7/P,GAC9B3E,KAAKoK,QAAQ,QAAS,CAClBue,cAAehkB,EACf4d,SAAUviB,KAAKukQ,eAAe5rH,OAItCqtH,WAAY,SAASrhQ,GAEjB,IAAyB,IADX3E,KAAKkH,QACPqwN,WACHv3N,KAAKoK,QAAQ,YAAa,CAAEue,cAAehkB,IAAM,CAClD,IAAIkiQ,EAAS7mQ,KAAKqwC,OAhmBV,EAimBJsoG,EAAS34I,KAAKwkQ,YAAY7/P,GAC1B4d,EAAWviB,KAAKukQ,eAAe5rH,GAE/B//F,EADW54C,KAAKq/P,gBAAgB98O,EAAUskP,GACxB72N,WAAW2oG,EAAOvzI,GAAIuzI,EAAOx0I,GACnDnE,KAAKglQ,YAAYpsN,EAAQiuN,GACzB7mQ,KAAKoK,QAAQ,UAAW,CAAEue,cAAehkB,MAKrDihN,YAAa,SAASjhN,GAClBA,EAAEwE,iBACF,IAAIy7B,EAAQ9a,EAAQ6gK,QAAQhmL,GAAK,GAAK,EAAI,EACtCuC,EAAUlH,KAAKkH,QACf4/P,EAAW9mQ,KAAKqwC,OAChBw2N,EAAS7xF,EAAM8xF,EAAWliO,EAAO19B,EAAQuxP,QAASvxP,EAAQwxP,SAE9D,IAAyB,IAArBxxP,EAAQqwN,UAAsBsvC,IAAWC,IACpC9mQ,KAAKoK,QAAQ,YAAa,CAAEue,cAAehkB,IAAM,CAClD,IAAIg0I,EAAS34I,KAAKwkQ,YAAY7/P,GAC1B4d,EAAWviB,KAAKukQ,eAAe5rH,GAE/B//F,EADW54C,KAAKq/P,gBAAgB98O,EAAUskP,GACxB72N,WAAW2oG,EAAOvzI,GAAIuzI,EAAOx0I,GACnDnE,KAAKglQ,YAAYpsN,EAAQiuN,GAEzB7mQ,KAAKoK,QAAQ,UAAW,CAAEue,cAAehkB,QAOzDmlB,EAAQH,GAAGqN,OAAOusO,GAtqBtB,CAwqBGziQ,OAAOH,MAAM+G,QAUE/G,OAElB,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+uL,EAAU/uL,EAAMmpB,QAAQ4lK,QAAU,GAClClnL,EAAa7H,EAAM6H,WACnBvF,EAAUC,MAAMD,QAIhB8jQ,EAAQ,GAGZv+P,EAAWu+P,EAAO,CACdC,WAAY,SAAS9+G,GACjB,OAAO7kJ,KAAK6T,IAAIgxI,GARV,MAUV++G,UAAW,SAASj6O,GAChB,YAAsB,IAARA,GAGlBk6O,YAAa,SAASl6O,GAClB,OAAO,MAAQA,GAKnBmyI,SAAU,SAASnyI,GACf,OAAOA,IAAQvsB,OAAOusB,IAK1Bi0I,IAAK,SAASj0I,EAAKzb,GACf,OAAO9Q,OAAOiO,eAAenE,KAAKyiB,EAAKzb,IAK3C3I,SAAU,SAASokB,GACf,MAA8C,mBAAvCvsB,OAAO4H,UAAU6I,SAAS3G,KAAKyiB,IAE1Cm6O,UAAW,SAASn6O,GAChB,MAA8C,oBAAvCvsB,OAAO4H,UAAU6I,SAAS3G,KAAKyiB,IAE1Co6O,OAAQ,SAASp6O,EAAKtnB,GAClB,OAAOjF,OAAO4H,UAAU6I,SAAS3G,KAAKyiB,IAAQ,WAAatnB,EAAO,KAKtEovD,SAAU,SAAS9nC,GACf,OAAQlkB,MAAMC,WAAWikB,KAASnb,SAASmb,IAK/C2zJ,QAAS,SAAS3zJ,GACd,GAAY,OAARA,EACA,OAAO,EAEX,GAAI/pB,EAAQ+pB,IAAQ+5O,EAAMn+P,SAASokB,GAC/B,OAAsB,IAAfA,EAAIxlB,OAEf,IAAK,IAAI+J,KAAOyb,EACZ,GAAI+5O,EAAM9lG,IAAIj0I,EAAKzb,GACf,OAAO,EAGf,OAAO,GAEX81P,aAAc,SAASj6P,EAAaE,GAChC,GAAKy5P,EAAM5nG,SAAS7xJ,GAIpB,IAAK,IAAIlL,KAAQkL,EACbF,EAAYhL,GAAQkL,EAAOlL,IASnCklQ,UAAW,SAAuB73P,EAAM/G,GAEpC,IADA,IAAI8R,EAAQ,GACHjT,EAAI,EAAGA,EAAIkI,IAAQlI,EACxBiT,EAAMjT,GAAKmB,EAEf,OAAO8R,GAEX+sP,gBAAiB,SAASlmI,GAEtB,IADA,IAAImmI,EAAM,GACDjgQ,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAAK,CACpC,IAAIwpH,EAAIsQ,EAAO95H,GACfigQ,EAAI7lQ,KAAKovH,EAAE3rH,EAAI,IAAM2rH,EAAE5sH,GAE3B,OAAOqjQ,EAAI38P,KAAK,MAEpB48P,kBAAmB,SAASxiQ,GACxB,IAAIwM,EAAIxM,EAAE2F,MAAM,KAAMy2H,EAAS,GAC/B,GAAI5vH,EAAEjK,OAAS,GAAM,EACjB,KAAM,0BAEV,IAAK,IAAID,EAAI,EAAGA,EAAIkK,EAAEjK,OAAQD,GAAK,EAC/B85H,EAAO1/H,KAAK,IAAI+tL,EAAQ11D,MACpB/gH,SAASxH,EAAElK,GAAI,IACf0R,SAASxH,EAAElK,EAAI,GAAI,MAG3B,OAAO85H,GAQXqmI,cAAe,SAAS/rP,EAAOijK,GAC3B,OAAO3lK,SAAS5V,KAAKkN,MAAMlN,KAAKqsB,SAAWkvJ,GAASjjK,EAAO,KAK/DgsP,IAAK,SAAS96O,EAAI0rC,GAEd,GADAA,EAAK1rC,GACDA,EAAG4W,WACH,IAAK,IAAIl8B,EAAI,EAAGA,EAAIslB,EAAG4W,WAAWj8B,OAAQD,IAAK,CAC3C,IAAIynC,EAAOniB,EAAG4W,WAAWl8B,GACzBvH,KAAK2nQ,IAAI34N,EAAMupB,KAO3BqvM,eAAgB,SAAS5iQ,GACrB,OAAU,OAANA,GAAsB,IAARA,EAAER,EACT,EAEmB,IAAvBnB,KAAKowC,MAAMzuC,EAAEmgB,EAAGngB,EAAER,GAAWnB,KAAK+xH,IAM7CyyI,iBAAkB,SAAS7iQ,GAGvB,MAAO,CAFE3B,KAAKo6E,KAAKz4E,EAAEE,EAAIF,EAAEE,EAAIF,EAAEN,EAAIM,EAAEN,GAC9BrB,KAAKo6E,KAAKz4E,EAAEmgB,EAAIngB,EAAEmgB,EAAIngB,EAAER,EAAIQ,EAAER,OAuE/CuiQ,EAAMvwP,KAAO,SAAS/K,GAClB,OAAOA,EAASA,EAAS,GAAK,EAAI,EAAI,GAG1Cs7P,EAAMe,UAAY,SAASvqL,EAAQ5xE,GAC/B,OAAiC,IAlBrC,SAAoB2J,EAAO3J,GACvB,GAAI2J,GAAS3J,EACT,OAAO,EAEX,IAAIo8P,EAAWp8P,EAAIvG,EAAIkQ,EAAMlQ,EACzB4iQ,EAAW1yP,EAAMnR,EAAIwH,EAAIxH,EACzBkuJ,EAAOhvJ,KAAKgvJ,KAAK01G,EAAWC,GAChC,OAAIA,GAAY,EACLD,EAAW,EAAI11G,EAAQ,EAAIhvJ,KAAK+xH,GAAMi9B,EAE1CA,EAAOhvJ,KAAK+xH,GAQZ6yI,CAAW1qL,EAAQ5xE,GAAatI,KAAK+xH,IAKhD2xI,EAAMzlQ,QAAU,SAASkpC,EAAKzH,EAAUmlO,GACpC,IAAK,IAAI3gQ,EAAI,EAAGA,EAAIijC,EAAIhjC,OAAQD,IAC5Bw7B,EAASx4B,KAAK29P,EAAS19N,EAAIjjC,GAAIA,EAAGijC,IAI1Cu8N,EAAM7zD,IAAM,SAAS1oK,EAAKo/I,GACtB,IAAK,IAAIriL,EAAI,EAAGA,EAAIijC,EAAIhjC,SAAUD,EAC9B,GAAIqiL,EAAUp/I,EAAIjjC,IACd,OAAOijC,EAAIjjC,GAGnB,OAAO,MAGXw/P,EAAMhwO,OAAS,SAASyT,EAAK29N,GAEzB,IADA,IAAI9kG,GACwC,KAApCA,EAAK0jG,EAAMpxP,QAAQ60B,EAAK29N,KAC5B39N,EAAIhgC,OAAO64J,EAAI,GAEnB,OAAO74H,GAGXu8N,EAAM5xO,SAAW,SAASqV,EAAKxd,GAC3B,OAAoC,IAA7B+5O,EAAMpxP,QAAQ60B,EAAKxd,IAG9B+5O,EAAMpxP,QAAU,SAAS60B,EAAK29N,GAC1B,OAAOxlQ,EAAE0yB,QAAQ8yO,EAAM39N,IAG3Bu8N,EAAMqB,KAAO,SAAS78L,EAAMxoC,EAAU0R,EAAK5Y,GAGvC,IAFA,IAAIygB,EAAUj1C,UAAUG,OAAS,EAExBD,EAAI,EAAGA,EAAIgkE,EAAK/jE,OAAQD,IAAK,CAClC,IAAImB,EAAQ6iE,EAAKhkE,GACZ+0C,EAKD7H,EAAM1R,EAASx4B,KAAKsxB,EAAS4Y,EAAK/rC,EAAOnB,EAAGgkE,IAJ5C92B,EAAM/rC,EACN4zC,GAAU,GAOlB,IAAKA,EACD,KAAM,8CAGV,OAAO7H,GAGXsyN,EAAMhxO,KAAO,SAASyU,EAAKzH,EAAUlH,GACjC,IAAItlB,EAQJ,OAPAwwP,EAAM7zD,IAAI1oK,GAAK,SAAS9hC,EAAOqQ,EAAOwyD,GAClC,QAAIxoC,EAASx4B,KAAKsxB,EAASnzB,EAAOqQ,EAAOwyD,KACrCh1D,EAAS7N,GACF,MAIR6N,GAGXwwP,EAAM78P,MAAQ,SAASsgC,EAAK69N,EAAYxsO,GACpC,OAAmB,IAAf2O,EAAIhjC,OACG,KAEPu/P,EAAMG,YAAYmB,GACX79N,EAAI,GAGRu8N,EAAMhxO,KAAKyU,EAAK69N,EAAYxsO,IAMvCkrO,EAAMnqM,OAAS,SAASpyB,EAAK3+B,EAASiB,GAElC,OADA09B,EAAIhgC,OAAOsC,EAAU,EAAGjB,GACjB2+B,GAGXu8N,EAAMh3L,IAAM,SAASvlC,EAAKzH,EAAUlH,GAIhC,IAHA,IACInzB,EADA6N,GAAS,EAGJhP,EAAI,EAAGA,EAAIijC,EAAIhjC,SACpBkB,EAAQ8hC,EAAIjjC,GACZgP,EAASA,GAAUwsB,EAASx4B,KAAKsxB,EAASnzB,EAAOnB,EAAGijC,IAFxBjjC,KAShC,OAAOgP,GAGXwwP,EAAM9wM,MAAQ,SAASzrB,GACnBA,EAAIhgC,OAAO,EAAGggC,EAAIhjC,SAStBu/P,EAAMuB,OAAS,SAASpjQ,EAAGigB,EAAGojP,GAC1B,GAAIxB,EAAMG,YAAYhiQ,GAClB,KAAM,gCAEV,GAAI6hQ,EAAMG,YAAY/hP,GAClB,KAAM,iCAEV,GAAIjgB,EAAEsC,QAAU2d,EAAE3d,OACd,KAAM,0CAGV,IAAcD,EAAVwoE,EAAM,GAEV,IAAKxoE,EAAI,EAAGA,EAAIrC,EAAEsC,OAAQD,IACtBwoE,EAAIpuE,KAAK,CAAEyD,EAAKF,EAAEqC,GAAIpD,EAAKghB,EAAE5d,KAgBjC,IAdIw/P,EAAMG,YAAYqB,GAClBx4L,EAAI7qD,MAAK,SAASlgB,EAAG8rH,GACjB,OAAO9rH,EAAEI,EAAI0rH,EAAE1rH,KAInB2qE,EAAI7qD,MAAK,SAASlgB,EAAG8rH,GACjB,OAAOy3I,EAASvjQ,EAAEI,EAAG0rH,EAAE1rH,MAI/B2hQ,EAAM9wM,MAAM/wD,GACZ6hQ,EAAM9wM,MAAM9wC,GAEP5d,EAAI,EAAGA,EAAIwoE,EAAIvoE,OAAQD,IACxBrC,EAAEvD,KAAKouE,EAAIxoE,GAAGnC,GACd+f,EAAExjB,KAAKouE,EAAIxoE,GAAGpD,IAItB4iQ,EAAMnxB,SAAW,SAASprM,EAAKopB,GAC3BppB,EAAI7oC,KAAKyG,MAAMoiC,EAAKopB,IAGxB,IAAI40M,EACW,SAASn0K,GAChB,OAAUhxF,KAAKk1H,IAAIlkC,EAAMhxF,KAAK+xH,IAAM,EAAK,IAS7CqzI,EAAS9nQ,EAAMiH,MAAM7E,OAAO,CAC5BoF,KAAM,WACFnI,KAAK0oQ,SAAW,GAChB1oQ,KAAKsH,OAAS,EACdtH,KAAK87C,KAAO,EACZ97C,KAAK8gI,SAAW,GAChB9gI,KAAK0mB,SAAW,IAChB1mB,KAAK2oQ,SAAW,KAChB3oQ,KAAK0J,SAAW,GAChB,IAAIk/P,EAAQ5oQ,KACZA,KAAKmyC,WAAaq2N,EAClBxoQ,KAAK6oQ,cAAgB,WACjBD,EAAME,iBAGdC,WAAY,SAAS7jQ,GACjBlF,KAAK0oQ,SAAS/mQ,KAAKuD,IAEvB8jQ,WAAY,SAASl/P,GACjB9J,KAAK0J,SAAS/H,KAAKmI,IAEvBm/P,cAAe,SAASn/P,GACpB9J,KAAK0J,SAAW/G,EAAEu7B,KAAKl+B,KAAK0J,UAAU,SAAS9E,GAC3C,OAAOA,IAAMkF,MAGrBM,QAAS,WACL,IAAIw+P,EAAQ5oQ,KACRA,KAAK0J,UACLq9P,EAAMzlQ,QAAQtB,KAAK0J,UAAU,SAAS9E,GAClC,OAAOA,EAAE2F,KAAsB,OAAjBq+P,EAAMM,OAAkBN,EAAMM,OAASN,OAIjEO,OAAQ,aAERC,OAAQ,SAAShrO,GACbp+B,KAAKqpQ,WAAWrpQ,KAAK87C,KAAM1d,IAE/BirO,WAAY,SAASlrO,EAAMC,GACvBp+B,KAAKsH,OAASjE,KAAKuV,IAAI,EAAGvV,KAAK8S,IAAI,EAAGioB,IACtCp+B,KAAK87C,KAAOz4C,KAAKuV,IAAI,EAAGvV,KAAK8S,IAAI,EAAGgoB,IACpCn+B,KAAK2oQ,UAAW,IAAIv6P,MAAOnF,UACtBjJ,KAAKspQ,aACNtpQ,KAAKspQ,WAAaxoQ,OAAO+9C,YAAY7+C,KAAK6oQ,cAAe7oQ,KAAK8gI,YAGtEl5G,KAAM,WACE5nB,KAAKspQ,aACLxoQ,OAAOg+C,cAAc9+C,KAAKspQ,YAC1BtpQ,KAAKspQ,WAAa,KAGlBtpQ,KAAKoK,YAIb0sC,KAAM,SAAS8B,GACkB,IAAzB54C,KAAK0oQ,SAASlhQ,SAGH,OAAXoxC,IACA54C,KAAKkpQ,OAAStwN,GAElB54C,KAAKupQ,YACLvpQ,KAAKqpQ,WAAW,EAAG,KAEvBvzP,QAAS,WACL9V,KAAKqpQ,WAAW,EAAG,IAEvBE,UAAW,WACP,GAA6B,IAAzBvpQ,KAAK0oQ,SAASlhQ,OAGlB,IAAK,IAAID,EAAI,EAAGA,EAAIvH,KAAK0oQ,SAASlhQ,OAAQD,IACtCvH,KAAK0oQ,SAASnhQ,GAAGgiQ,aAGzBC,UAAW,WAGP,IAFA,IAAI9gQ,EAAQ1I,KAAKmyC,WAAWnyC,KAAK87C,MAExBv0C,EAAI,EAAGA,EAAIvH,KAAK0oQ,SAASlhQ,OAAQD,IACtCvH,KAAK0oQ,SAASnhQ,GAAGw/C,OAAOr+C,IAGhCogQ,aAAc,WACV,IAAIl2N,GAAM,IAAIxkC,MAAOnF,UACjBizC,EAAatJ,EAAM5yC,KAAK2oQ,SAC5B3oQ,KAAK2oQ,SAAW/1N,EAChB,IAAI62N,EAAYvtN,EAAal8C,KAAK0mB,UAAa1mB,KAAK87C,KAAO97C,KAAKsH,OAAS,GAAK,GAC1EjE,KAAK6T,IAAIuyP,IAAapmQ,KAAK6T,IAAIlX,KAAK87C,KAAO97C,KAAKsH,QAChDtH,KAAK87C,KAAO97C,KAAKsH,OAEjBtH,KAAK87C,MAAQ2tN,EAGjB,IACIzpQ,KAAKwpQ,YACP,QACExpQ,KAAKmpQ,OAAO5+P,KAAKvK,MACbA,KAAKsH,QAAUtH,KAAK87C,MACpB97C,KAAK4nB,WAMrBjnB,EAAM6H,WAAWknL,EAAS,CACtBvnL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAAS6jL,EAAQ/lK,KAGhCo9O,MAAOA,EACP2C,MArVJ,SAAep0P,EAAOsS,EAAM8qB,GACxB,QAAoB,IAATp9B,QAAuC,IAARsS,EACtC,MAAO,GAEX,GAAI8qB,GAAQq0N,EAAMvwP,KAAKoR,EAAOtS,IAAUyxP,EAAMvwP,KAAKk8B,GAC/C,KAAM,kEAKV,GAFAp9B,EAAQA,GAAS,IACjBsS,EAAOA,GAAQtS,GACHA,IAHZo9B,EAAOA,GAAQ,IAGeijH,IAC1B,KAAM,0BAEV,IAAwBhrH,EAApBipB,EAAQ,GAAIrsD,GAAK,EAUjBzC,EARJ,SAA2BM,GAEvB,IADA,IAAIN,EAAI,EACDM,EAAIN,EAAI,GACXA,GAAK,GAET,OAAOA,EAGH6kQ,CAAkBtmQ,KAAK6T,IAAIw7B,IAOnC,GAJAA,GAAQ5tC,GAFRwQ,GAASxQ,IACT8iB,GAAQ9iB,IAEY4tC,EAAO,IACvBA,GAAQA,GAERA,EAAO,EACP,MAAQ/H,EAAIr1B,EAAQo9B,IAASnrC,IAAMqgB,GAC/BgsC,EAAMjyD,KAAKgpC,EAAI7lC,QAInB,MAAQ6lC,EAAIr1B,EAAQo9B,IAASnrC,IAAMqgB,GAC/BgsC,EAAMjyD,KAAKgpC,EAAI7lC,GAGvB,OAAO8uD,GA8SP60M,OAAQA,IAvfhB,CAyfG3nQ,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACf+uL,EAAU/uL,EAAMmpB,QAAQ4lK,QACxB9nL,EAAQjH,EAAMiH,MACdY,EAAa7H,EAAM6H,WACnBshB,EAAUnpB,EAAMmpB,QAChBi9O,EAAQr3E,EAAQq3E,MAChB/sI,EAAQlwG,EAAQ2gK,QAChBvhL,EAAavI,EAAMuI,WACnBisB,EAAW4xO,EAAM5xO,SACjB7a,EAAM3X,EAAE2X,IAMZ9R,EAAWwxH,EAAMjyH,GAAI,CACjB6hQ,KAAM,SAAS74I,GACX,OAAO,IAAIiJ,EAAMh6H,KAAKoF,EAAI2rH,EAAE3rH,EAAGpF,KAAKmE,EAAI4sH,EAAE5sH,IAE9C0lQ,MAAO,SAAS94I,GACZ,OAAO,IAAIiJ,EAAMh6H,KAAKoF,EAAI2rH,EAAE3rH,EAAGpF,KAAKmE,EAAI4sH,EAAE5sH,IAE9C4Y,OAAQ,SAASrU,GACb,OAAO,IAAIsxH,EAAMh6H,KAAKoF,EAAIsD,EAAO1I,KAAKmE,EAAIuE,IAE9CohQ,MAAO,SAAS7kQ,GACZ,OAAO,IAAI+0H,EAAMh6H,KAAKoF,EAAIH,EAAGjF,KAAKmE,EAAIc,IAE1Cg5C,UAAW,WACP,OAAsB,IAAlBj+C,KAAKwH,SACE,IAAIwyH,EAERh6H,KAAK8pQ,MAAM,EAAI9pQ,KAAKwH,WAE/BA,OAAQ,WACJ,OAAOnE,KAAKo6E,KAAKz9E,KAAKoF,EAAIpF,KAAKoF,EAAIpF,KAAKmE,EAAInE,KAAKmE,IAErD+M,SAAU,WACN,MAAO,IAAMlR,KAAKoF,EAAI,IAAMpF,KAAKmE,EAAI,KAEzC4lQ,cAAe,WACX,OAAQ/pQ,KAAKoF,EAAIpF,KAAKoF,EAAIpF,KAAKmE,EAAInE,KAAKmE,GAE5C6lQ,SAAU,SAAkBj5I,EAAG3sH,GAC3B,OAAO,IAAI41H,EAAM51H,EAAEgB,EAAI2rH,EAAE3rH,EAAGhB,EAAED,EAAI4sH,EAAE5sH,GAAG2lQ,MAAM,IAAKF,KAAK74I,IAE3Dk5I,QAAS,SAASC,GACd,IAAIC,EAAS,EACTD,IACAC,EAAS,IAAM9mQ,KAAK+xH,IAExB,IAAIlwH,EAAI7B,KAAKowC,MAAMpwC,KAAK6T,IAAIlX,KAAKmE,GAAId,KAAK6T,IAAIlX,KAAKoF,IAC/CglQ,EAAS/mQ,KAAK+xH,GAAK,EACnB/kG,EAAMrwB,KAAKwH,SACf,GAAe,IAAXxH,KAAKoF,EAAS,CAGd,GAAe,IAAXpF,KAAKmE,EACL,OAAO,IAAIkmQ,EAAM,EAAG,GAExB,GAAIrqQ,KAAKmE,EAAI,EACT,OAAO,IAAIkmQ,EAAMh6O,EAAK85O,EAASC,GAEnC,GAAIpqQ,KAAKmE,EAAI,EACT,OAAO,IAAIkmQ,EAAMh6O,EAAc,EAAT85O,EAAaC,QAGtC,GAAIpqQ,KAAKoF,EAAI,EAAG,CACjB,GAAe,IAAXpF,KAAKmE,EACL,OAAO,IAAIkmQ,EAAMh6O,EAAK,GAE1B,GAAIrwB,KAAKmE,EAAI,EACT,OAAO,IAAIkmQ,EAAMh6O,EAAK85O,EAASjlQ,GAEnC,GAAIlF,KAAKmE,EAAI,EACT,OAAO,IAAIkmQ,EAAMh6O,EAAK85O,GAAU,EAAIC,EAASllQ,QAGhD,CACD,GAAe,IAAXlF,KAAKmE,EACL,OAAO,IAAIkmQ,EAAMh6O,EAAK,EAAI+5O,GAE9B,GAAIpqQ,KAAKmE,EAAI,EACT,OAAO,IAAIkmQ,EAAMh6O,EAAK85O,GAAU,EAAIC,EAASllQ,IAEjD,GAAIlF,KAAKmE,EAAI,EACT,OAAO,IAAIkmQ,EAAMh6O,EAAK85O,GAAU,EAAIC,EAASllQ,MAIzDolQ,SAAU,SAASnsO,EAAMC,GACrB,GAAID,EAAK/4B,EAAIg5B,EAAGh5B,EAAG,CACf,IAAIg1C,EAAOhc,EACXA,EAAKD,EACLA,EAAOic,EAEX,IACiEmwN,EAAIC,EADjEhoG,EAAK,IAAItnC,EAAK/8F,EAAK/4B,EAAG+4B,EAAKh6B,GAAGsmQ,QApFxB,KAqFN/nG,EAAK,IAAIxnC,EAAK98F,EAAGh5B,EAAGg5B,EAAGj6B,GAAGsmQ,QArFpB,KAsFV,QAAIjoG,EAAGhmC,MAAMkmC,GAAIvtI,SAASn1B,QAClBm+B,EAAK/4B,IAAMg5B,EAAGh5B,GAAK+4B,EAAKh6B,IAAMi6B,EAAGj6B,IAG5Bg6B,EAAKh6B,EAAIi6B,EAAGj6B,GACjBomQ,EAAK/nG,EAAGp9J,GAAOs9J,EAAGt9J,EAAIo9J,EAAGp9J,IAAMpF,KAAKmE,GAAKq+J,EAAGr+J,EAAIq+J,EAAG71J,UAAc+1J,EAAGv+J,EAAIu+J,EAAG/1J,QAAW61J,EAAGr+J,EAAIq+J,EAAG71J,SAChG69P,EAAMhoG,EAAGp9J,EAAIo9J,EAAGx1J,OAAa01J,EAAGt9J,EAAIs9J,EAAG11J,OAAUw1J,EAAGp9J,EAAIo9J,EAAGx1J,SAAWhN,KAAKmE,EAAIq+J,EAAGr+J,IAAOu+J,EAAGv+J,EAAIq+J,EAAGr+J,KAGnGomQ,EAAK/nG,EAAGp9J,GAAOs9J,EAAGt9J,EAAIo9J,EAAGp9J,IAAMpF,KAAKmE,EAAIq+J,EAAGr+J,IAAOu+J,EAAGv+J,EAAIq+J,EAAGr+J,GAC5DqmQ,EAAMhoG,EAAGp9J,EAAIo9J,EAAGx1J,OAAa01J,EAAGt9J,EAAIs9J,EAAG11J,OAAUw1J,EAAGp9J,EAAIo9J,EAAGx1J,SAAWhN,KAAKmE,GAAKq+J,EAAGr+J,EAAIq+J,EAAG71J,UAAc+1J,EAAGv+J,EAAIu+J,EAAG/1J,QAAW61J,EAAGr+J,EAAIq+J,EAAG71J,UAEnI3M,KAAKoF,EAAImlQ,GAAMvqQ,KAAKoF,EAAIolQ,OAM5ChiQ,EAAWwxH,EAAO,CACdhlG,MAAO,SAASpmB,GACZ,IACI87P,EADU97P,EAAIhI,MAAM,EAAGgI,EAAIpH,OAAS,GACvBoD,MAAM,KACnBxF,EAAI6T,SAASyxP,EAAG,GAAI,IACpBvmQ,EAAI8U,SAASyxP,EAAG,GAAI,IACxB,IAAK5hQ,MAAM1D,KAAO0D,MAAM3E,GACpB,OAAO,IAAI61H,EAAM50H,EAAGjB,MAUhC,IAAIwmQ,EAAc/iQ,EAAM7E,OACpB,CACIoF,KAAM,SAAS4oH,EAAGllG,EAAMC,GACpB9rB,KAAKq6H,MAAQtJ,EACb/wH,KAAK6rB,KAAOA,EACZ7rB,KAAK8rB,MAAQA,KAQrBovG,EAAOtzH,EAAM7E,OAAO,CACpBoF,KAAM,SAAS/C,EAAGjB,EAAG6I,EAAOL,GACxB3M,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,EACdnE,KAAKgN,MAAQA,GAAS,EACtBhN,KAAK2M,OAASA,GAAU,GAE5BwoB,SAAU,SAASklG,GACf,OAASA,EAAMj1H,GAAKpF,KAAKoF,GAAOi1H,EAAMj1H,GAAMpF,KAAKoF,EAAIpF,KAAKgN,OAAYqtH,EAAMl2H,GAAKnE,KAAKmE,GAAOk2H,EAAMl2H,GAAMnE,KAAKmE,EAAInE,KAAK2M,QAE3H89P,QAAS,SAASptL,EAAIC,GASlB,OAvKZ,YA+JgBA,IACAA,EAAKD,GAGTr9E,KAAKoF,GAAKi4E,EACVr9E,KAAKmE,GAAKm5E,EACVt9E,KAAKgN,OAAS,EAAIqwE,EAAK,EACvBr9E,KAAK2M,QAAU,EAAI2wE,EAAK,EACjBt9E,MAEX+c,OAAQ,SAASsgE,EAAIC,GACjB,IAAIl4E,EAAIi4E,EAAIl5E,EAAIm5E,EAOhB,OANID,aAAc28C,IACd50H,EAAIi4E,EAAGj4E,EACPjB,EAAIk5E,EAAGl5E,GAEXnE,KAAKoF,GAAKA,EACVpF,KAAKmE,GAAKA,EACHnE,MAEXw8H,MAAO,SAASnM,GACZ,IAAIpzC,EAAK55E,KAAK8S,IAAInW,KAAKoF,EAAGirH,EAAEjrH,GACxB83E,EAAK75E,KAAK8S,IAAInW,KAAKmE,EAAGksH,EAAElsH,GACxBg5E,EAAK95E,KAAKuV,IAAK5Y,KAAKoF,EAAIpF,KAAKgN,MAASqjH,EAAEjrH,EAAIirH,EAAErjH,OAC9CowE,EAAK/5E,KAAKuV,IAAK5Y,KAAKmE,EAAInE,KAAK2M,OAAU0jH,EAAElsH,EAAIksH,EAAE1jH,QACnD,OAAO,IAAIuuH,EAAKj+C,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,IAE1CK,OAAQ,WACJ,OAAO,IAAIy8C,EAAMh6H,KAAKoF,EAAIpF,KAAKgN,MAAQ,EAAGhN,KAAKmE,EAAInE,KAAK2M,OAAS,IAErEyX,IAAK,WACD,OAAO,IAAI41G,EAAMh6H,KAAKoF,EAAIpF,KAAKgN,MAAQ,EAAGhN,KAAKmE,IAEnD2nB,MAAO,WACH,OAAO,IAAIkuG,EAAMh6H,KAAKoF,EAAIpF,KAAKgN,MAAOhN,KAAKmE,EAAInE,KAAK2M,OAAS,IAEjEof,OAAQ,WACJ,OAAO,IAAIiuG,EAAMh6H,KAAKoF,EAAIpF,KAAKgN,MAAQ,EAAGhN,KAAKmE,EAAInE,KAAK2M,SAE5Dkf,KAAM,WACF,OAAO,IAAImuG,EAAMh6H,KAAKoF,EAAGpF,KAAKmE,EAAInE,KAAK2M,OAAS,IAEpD6uH,QAAS,WACL,OAAO,IAAIxB,EAAMh6H,KAAKoF,EAAGpF,KAAKmE,IAElCu3H,SAAU,WACN,OAAO,IAAI1B,EAAMh6H,KAAKoF,EAAIpF,KAAKgN,MAAOhN,KAAKmE,IAE/Cw3H,WAAY,WACR,OAAO,IAAI3B,EAAMh6H,KAAKoF,EAAGpF,KAAKmE,EAAInE,KAAK2M,SAE3C8uH,YAAa,WACT,OAAO,IAAIzB,EAAMh6H,KAAKoF,EAAIpF,KAAKgN,MAAOhN,KAAKmE,EAAInE,KAAK2M,SAExDxF,MAAO,WACH,OAAO,IAAI+zH,EAAKl7H,KAAKoF,EAAGpF,KAAKmE,EAAGnE,KAAKgN,MAAOhN,KAAK2M,SAErDg0K,QAAS,WACL,OAAQ3gL,KAAKgN,QAAUhN,KAAK2M,QAEhCmkD,OAAQ,SAASu6B,GACb,OAAOrrF,KAAKoF,IAAMimF,EAAKjmF,GAAKpF,KAAKmE,IAAMknF,EAAKlnF,GAAKnE,KAAKgN,QAAUq+E,EAAKr+E,OAAShN,KAAK2M,SAAW0+E,EAAK1+E,QAEvGi+P,cAAe,SAAStyI,GACpB,IAAIjtC,EAAOrrF,KAAKmH,QACZk6H,EAASrhI,KAAK+oI,cAAczQ,GAC5BuD,EAAKwF,EAAO,GACZvF,EAAKuF,EAAO,GACZtF,EAAKsF,EAAO,GACZrF,EAAKqF,EAAO,GAOhB,OALAh2C,EAAKjmF,EAAI/B,KAAK8S,IAAI4lH,EAAG32H,EAAGy2H,EAAGz2H,EAAG02H,EAAG12H,EAAG42H,EAAG52H,GACvCimF,EAAKlnF,EAAId,KAAK8S,IAAI4lH,EAAG53H,EAAG03H,EAAG13H,EAAG23H,EAAG33H,EAAG63H,EAAG73H,GACvCknF,EAAKr+E,MAAQ3J,KAAKuV,IAAImjH,EAAG32H,EAAGy2H,EAAGz2H,EAAG02H,EAAG12H,EAAG42H,EAAG52H,GAAKimF,EAAKjmF,EACrDimF,EAAK1+E,OAAStJ,KAAKuV,IAAImjH,EAAG53H,EAAG03H,EAAG13H,EAAG23H,EAAG33H,EAAG63H,EAAG73H,GAAKknF,EAAKlnF,EAE/CknF,GAEX09C,cAAe,SAASzQ,GACpB,IAAIjtC,EAAOrrF,KACP0E,EAAI2mF,EAAK9N,SACTw+C,EAAK1wC,EAAKowC,cAAc1qF,OAAOrsC,EAAG,IAAM4zH,GAK5C,MAAO,CAJEjtC,EAAKmwC,UAAUzqF,OAAOrsC,EAAG,IAAM4zH,GAC/BjtC,EAAKqwC,WAAW3qF,OAAOrsC,EAAG,IAAM4zH,GAGzByD,EAFP1wC,EAAKswC,aAAa5qF,OAAOrsC,EAAG,IAAM4zH,KAI/CpnH,SAAU,SAASmvN,GAGf,OAFAA,EAAYA,GAAa,IAElBrgO,KAAKoF,EAAIi7N,EAAYrgO,KAAKmE,EAAIk8N,EAAYrgO,KAAKgN,MAAQqzN,EAAYrgO,KAAK2M,QAEnFgjC,MAAO,SAAS8oF,EAAQC,EAAQmyI,EAAYC,EAAexyI,GACvD,IAAIuD,EAAK77H,KAAKw7H,UACVuvI,EAAa/qQ,KAAKu9E,SACtBs+C,EAAG9qF,OAAOg6N,EAAY,IAAMzyI,GAAOvnF,OAAO+5N,EAAexyI,GAEzD,IAAI1zF,EAAQimO,EAAWhB,MAAMhuI,GACzBmvI,EAAS,IAAIhxI,EAAMp1F,EAAMx/B,EAAIqzH,EAAQ7zF,EAAMzgC,EAAIu0H,GAC/C5rH,EAAW83B,EAAMilO,MAAMmB,IAC3BnvI,EAAKA,EAAG+tI,KAAK98P,IACVikC,OAAO+5N,EAAe,IAAMxyI,GAAOvnF,OAAOg6N,EAAYzyI,GAEzDt4H,KAAKoF,EAAIy2H,EAAGz2H,EACZpF,KAAKmE,EAAI03H,EAAG13H,EAEZnE,KAAKgN,OAASyrH,EACdz4H,KAAK2M,QAAU+rH,GAGnBroF,KAAM,SAASA,GAKX,OAJArwC,KAAKoF,GAAKirC,EACVrwC,KAAKmE,GAAKksC,EACVrwC,KAAKgN,OAASqjC,EACdrwC,KAAK2M,QAAU0jC,EACRrwC,MAGXuiK,SAAU,SAASl3E,GACf,IAAIowC,EAAcz7H,KAAKy7H,cACnBwvI,EAAkB5/K,EAAKowC,cAG3B,QAFiBA,EAAYr2H,EAAIimF,EAAKjmF,GAAKq2H,EAAYt3H,EAAIknF,EAAKlnF,GAC5D8mQ,EAAgB7lQ,EAAIpF,KAAKoF,GAAK6lQ,EAAgB9mQ,EAAInE,KAAKmE,MAK/D82H,EAAOrzH,EAAM7E,OAAO,CACpBoF,KAAM,SAAS6E,EAAOL,GAClB3M,KAAKgN,MAAQA,EACbhN,KAAK2M,OAASA,KA6BtB,SAASu+P,EAAcC,EAAQC,EAAMC,EAAQC,EAAMC,GAC/C,IAAIC,GAAgBJ,EAAKhmQ,EAAI+lQ,EAAO/lQ,IAAMkmQ,EAAKnnQ,EAAIknQ,EAAOlnQ,IAAQinQ,EAAKjnQ,EAAIgnQ,EAAOhnQ,IAAMmnQ,EAAKlmQ,EAAIimQ,EAAOjmQ,GACxG,GANgB8iJ,EAMDsjH,IALRnoQ,KAAK6T,IAAIgxI,GA7SN,MAkTV,CANJ,IAAoBA,EAaZ73B,IAFS86I,EAAOhnQ,EAAIknQ,EAAOlnQ,IAAMmnQ,EAAKlmQ,EAAIimQ,EAAOjmQ,IAAQ+lQ,EAAO/lQ,EAAIimQ,EAAOjmQ,IAAMkmQ,EAAKnnQ,EAAIknQ,EAAOlnQ,IAEtFqnQ,EACXvmQ,IAFSkmQ,EAAOhnQ,EAAIknQ,EAAOlnQ,IAAMinQ,EAAKhmQ,EAAI+lQ,EAAO/lQ,IAAQ+lQ,EAAO/lQ,EAAIimQ,EAAOjmQ,IAAMgmQ,EAAKjnQ,EAAIgnQ,EAAOhnQ,IAEtFqnQ,EAEf,IAAID,KAAcl7I,EAAI,GAAKA,EAAI,GAAKprH,EAAI,GAAKA,EAAI,GAQjD,OAAO,IAAI+0H,EAAMmxI,EAAO/lQ,EAAKirH,GAAK+6I,EAAKhmQ,EAAI+lQ,EAAO/lQ,GAAK+lQ,EAAOhnQ,EAAKksH,GAAK+6I,EAAKjnQ,EAAIgnQ,EAAOhnQ,KA7C5F82H,EAAK5yH,UAAUojQ,MAAQ,IAAIxwI,EAAK,EAAG,GAEnCC,EAAK2nC,OAAS,SAASx3E,GAKnB,OAJMA,aAAgB6vC,IAClB7vC,EAAO,IAAI6vC,EAAK7vC,EAAKjmF,EAAGimF,EAAKlnF,EAAGknF,EAAKr+E,MAAOq+E,EAAK1+E,SAG9C0+E,GAGX6vC,EAAK3uE,MAAQ,WACT,OAAO,IAAI2uE,EAAK,EAAG,EAAG,EAAG,IAG7BA,EAAKe,WAAa,SAASlL,EAAG3sH,GAC1B,GAAI0E,MAAMioH,EAAE3rH,IAAM0D,MAAMioH,EAAE5sH,IAAM2E,MAAM1E,EAAEgB,IAAM0D,MAAM1E,EAAED,GAClD,KAAM,uBAEV,OAAO,IAAI+2H,EAAK73H,KAAK8S,IAAI46G,EAAE3rH,EAAGhB,EAAEgB,GAAI/B,KAAK8S,IAAI46G,EAAE5sH,EAAGC,EAAED,GAAId,KAAK6T,IAAI65G,EAAE3rH,EAAIhB,EAAEgB,GAAI/B,KAAK6T,IAAI65G,EAAE5sH,EAAIC,EAAED,KA8BlG,IAAIunQ,EAAY,CACZzjE,MAAO,SAASkjE,EAAQC,EAAMC,EAAQC,GAClC,OAAOJ,EAAcC,EAAQC,EAAMC,EAAQC,IAE/CpgI,SAAU,SAASigI,EAAQC,EAAMC,EAAQC,GACrC,OAAOJ,EAAcC,EAAQC,EAAMC,EAAQC,GAAM,IAErDK,aAAc,SAAStgL,EAAM/1E,EAAO3J,GAChC,OAAO+/P,EAAUxgI,SAAS51H,EAAO3J,EAAK0/E,EAAKmwC,UAAWnwC,EAAKqwC,aACvDgwI,EAAUxgI,SAAS51H,EAAO3J,EAAK0/E,EAAKqwC,WAAYrwC,EAAKowC,gBACrDiwI,EAAUxgI,SAAS51H,EAAO3J,EAAK0/E,EAAKswC,aAActwC,EAAKowC,gBACvDiwI,EAAUxgI,SAAS51H,EAAO3J,EAAK0/E,EAAKmwC,UAAWnwC,EAAKswC,eAE5DiwI,MAAO,SAASlvI,EAAOC,EAAOrE,GAC1B,IAAIuD,EAAKc,EAAMnB,UACXM,EAAKa,EAAMjB,WACXM,EAAKW,EAAMhB,aACXI,EAAKY,EAAMlB,cACXl+C,EAASo/C,EAAMp/C,SACf+6C,IACAuD,EAAKA,EAAG9qF,OAAOwsC,EAAQ+6C,GACvBwD,EAAKA,EAAG/qF,OAAOwsC,EAAQ+6C,GACvB0D,EAAKA,EAAGjrF,OAAOwsC,EAAQ+6C,GACvByD,EAAKA,EAAGhrF,OAAOwsC,EAAQ+6C,IAG3B,IAAImE,EAAYC,EAAMvnG,SAAS0mG,IAC3Ba,EAAMvnG,SAAS2mG,IACfY,EAAMvnG,SAAS6mG,IACfU,EAAMvnG,SAAS4mG,IACf2vI,EAAUC,aAAajvI,EAAOb,EAAIC,IAClC4vI,EAAUC,aAAajvI,EAAOb,EAAIG,IAClC0vI,EAAUC,aAAajvI,EAAOZ,EAAIC,IAClC2vI,EAAUC,aAAajvI,EAAOV,EAAID,GAEtC,IAAKU,EAAW,CAMZ,GALAZ,EAAKa,EAAMlB,UACXM,EAAKY,EAAMhB,WACXM,EAAKU,EAAMf,aACXI,EAAKW,EAAMjB,cAEPnD,EAAO,CACP,IAAIuzI,EAAe,IAAMvzI,EACzBuD,EAAKA,EAAG9qF,OAAOwsC,EAAQsuL,GACvB/vI,EAAKA,EAAG/qF,OAAOwsC,EAAQsuL,GACvB7vI,EAAKA,EAAGjrF,OAAOwsC,EAAQsuL,GACvB9vI,EAAKA,EAAGhrF,OAAOwsC,EAAQsuL,GAG3BpvI,EAAYE,EAAMxnG,SAAS0mG,IACvBc,EAAMxnG,SAAS2mG,IACfa,EAAMxnG,SAAS6mG,IACfW,EAAMxnG,SAAS4mG,GAGvB,OAAOU,IAOXqvI,EAAYlkQ,EAAM7E,OAAO,CACzBoF,KAAM,SAASmuB,GACXt2B,KAAKs2B,UAAY4kG,EAAK2nC,OAAOvsI,IAGjC24G,MAAO,SAAS1oF,EAASkrF,GAGrB,IAFA,IAAIs6H,EAAct6H,EAAUn5H,cAAc1N,MAAM,KAEvCrD,EAAI,EAAGA,EAAIwkQ,EAAYvkQ,OAAQD,IACpCg/C,EAAUvmD,KAAKgsQ,aAAazlN,EAASwlN,EAAYxkQ,IAGrD,OAAOg/C,GAEXylN,aAAc,SAASzlN,EAASkrF,GAC5B,OAAIvoI,EAAWlJ,KAAKyxI,IACTzxI,KAAKyxI,GAAWlrF,GAGhBA,GAIf16B,KAAM,SAAS06B,GACX,OAAOvmD,KAAKo0F,OAAO7tC,EAASvmD,KAAKisQ,QAErC1uL,OAAQ,SAASh3B,GACb,OAAOvmD,KAAKo0F,OAAO7tC,EAASvmD,KAAK+/P,UAErCj0O,MAAO,SAASy6B,GACZ,OAAOvmD,KAAKo0F,OAAO7tC,EAASvmD,KAAKksQ,SAErCC,QAAS,SAAS5lN,GACd,OAAOvmD,KAAKo0F,OAAO7tC,EAASvmD,KAAKosQ,WAErChoP,IAAK,SAASmiC,GACV,OAAOvmD,KAAKo0F,OAAO7tC,EAASvmD,KAAKqsQ,OAErCnpG,OAAQ,SAAS38G,GACb,OAAOvmD,KAAKo0F,OAAO7tC,EAASvmD,KAAKssQ,UAErCvgP,OAAQ,SAASw6B,GACb,OAAOvmD,KAAKo0F,OAAO7tC,EAASvmD,KAAKusQ,UAGrCN,MAAO,SAAS31O,EAAWiwB,GACvBA,EAAQnhD,EAAIkxB,EAAUlxB,GAE1B26P,QAAS,SAASzpO,EAAWiwB,GACzBA,EAAQnhD,GAAMkxB,EAAUtpB,MAAQu5C,EAAQv5C,OAAS,GAAM,GAE3Dk/P,OAAQ,SAAS51O,EAAWiwB,GACxBA,EAAQnhD,EAAIkxB,EAAUtpB,MAAQu5C,EAAQv5C,OAE1Cq/P,KAAM,SAAS/1O,EAAWiwB,GACtBA,EAAQpiD,EAAImyB,EAAUnyB,GAE1BmoQ,QAAS,SAASh2O,EAAWiwB,GACzBA,EAAQpiD,GAAMmyB,EAAU3pB,OAAS45C,EAAQ55C,QAAU,GAAM,GAE7D4/P,QAAS,SAASj2O,EAAWiwB,GACzBA,EAAQpiD,EAAImyB,EAAU3pB,OAAS45C,EAAQ55C,QAE3Cy/P,SAAU,SAAS91O,EAAWiwB,GAC1BA,EAAQnhD,EAAI,EACZmhD,EAAQpiD,EAAI,EACZoiD,EAAQ55C,OAAS2pB,EAAU3pB,OAC3B45C,EAAQv5C,MAAQspB,EAAUtpB,OAE9BonF,OAAQ,SAAS7tC,EAASimN,GAItB,OAHAjmN,EAAU20E,EAAK2nC,OAAOt8G,GACtBimN,EAAUxsQ,KAAKs2B,UAAWiwB,GAEnBA,KAIX8jN,EAAQziQ,EAAM7E,OAAO,CACrBoF,KAAM,SAASkoH,EAAGnrH,GACdlF,KAAKqwH,EAAIA,EACTrwH,KAAKs4H,MAAQpzH,KAOjB6yH,EAASnwH,EAAM7E,OAAO,CACtBoF,KAAM,SAASjD,EAAGigB,EAAGzgB,EAAGF,EAAGG,EAAGwoD,GAC1BntD,KAAKkF,EAAIA,GAAK,EACdlF,KAAKmlB,EAAIA,GAAK,EACdnlB,KAAK0E,EAAIA,GAAK,EACd1E,KAAKwE,EAAIA,GAAK,EACdxE,KAAK2E,EAAIA,GAAK,EACd3E,KAAKmtD,EAAIA,GAAK,GAElBy8M,KAAM,SAAS5kQ,GACXhF,KAAKkF,GAAKF,EAAEE,EACZlF,KAAKmlB,GAAKngB,EAAEmgB,EACZnlB,KAAK0E,GAAKM,EAAEN,EACZ1E,KAAKwE,GAAKQ,EAAER,EACZxE,KAAK2E,GAAKK,EAAEL,EACZ3E,KAAKmtD,GAAKnoD,EAAEmoD,GAEhB08M,MAAO,SAAS7kQ,GACZhF,KAAKkF,GAAKF,EAAEE,EACZlF,KAAKmlB,GAAKngB,EAAEmgB,EACZnlB,KAAK0E,GAAKM,EAAEN,EACZ1E,KAAKwE,GAAKQ,EAAER,EACZxE,KAAK2E,GAAKK,EAAEL,EACZ3E,KAAKmtD,GAAKnoD,EAAEmoD,GAEhB28M,MAAO,SAAS9kQ,GACZ,OAAO,IAAI+yH,EACP/3H,KAAKkF,EAAIF,EAAEE,EAAIlF,KAAK0E,EAAIM,EAAEmgB,EAC1BnlB,KAAKmlB,EAAIngB,EAAEE,EAAIlF,KAAKwE,EAAIQ,EAAEmgB,EAC1BnlB,KAAKkF,EAAIF,EAAEN,EAAI1E,KAAK0E,EAAIM,EAAER,EAC1BxE,KAAKmlB,EAAIngB,EAAEN,EAAI1E,KAAKwE,EAAIQ,EAAER,EAC1BxE,KAAKkF,EAAIF,EAAEL,EAAI3E,KAAK0E,EAAIM,EAAEmoD,EAAIntD,KAAK2E,EACnC3E,KAAKmlB,EAAIngB,EAAEL,EAAI3E,KAAKwE,EAAIQ,EAAEmoD,EAAIntD,KAAKmtD,IAG3C/kD,MAAO,SAAS2oH,GACZ,OAAO,IAAIiJ,EAAMh6H,KAAKkF,EAAI6rH,EAAE3rH,EAAIpF,KAAK0E,EAAIqsH,EAAE5sH,EAAInE,KAAK2E,EAAG3E,KAAKmlB,EAAI4rG,EAAE3rH,EAAIpF,KAAKwE,EAAIusH,EAAE5sH,EAAInE,KAAKmtD,IAE9Fs/M,UAAW,SAASp8I,GAChB,OAAO6K,EAAKe,WAAWj8H,KAAKoI,MAAMioH,EAAEmL,WAAYx7H,KAAKoI,MAAMioH,EAAEoL,iBAEjEvqH,SAAU,WACN,MAAO,UAAYlR,KAAKkF,EAAI,IAAMlF,KAAKmlB,EAAI,IAAMnlB,KAAK0E,EAAI,IAAM1E,KAAKwE,EAAI,IAAMxE,KAAK2E,EAAI,IAAM3E,KAAKmtD,EAAI,OAI/G3kD,EAAWuvH,EAAQ,CACf20I,cAAe,SAASC,GACpB,IAAI3nQ,EAAI,IAAI+yH,EAOZ,OANA/yH,EAAEE,EAAIynQ,EAAGznQ,EACTF,EAAEmgB,EAAIwnP,EAAGxnP,EACTngB,EAAEN,EAAIioQ,EAAGjoQ,EACTM,EAAER,EAAImoQ,EAAGnoQ,EACTQ,EAAEL,EAAIgoQ,EAAGhoQ,EACTK,EAAEmoD,EAAIw/M,EAAGx/M,EACFnoD,GAEX4nQ,iBAAkB,SAASn7P,GACvB,IAAIzM,EAAI,IAAI+yH,EAOZ,OANA/yH,EAAEE,EAAIuM,EAAEvM,EACRF,EAAEmgB,EAAI1T,EAAE0T,EACRngB,EAAEN,EAAI+M,EAAE/M,EACRM,EAAER,EAAIiN,EAAEjN,EACRQ,EAAEL,EAAI8M,EAAE9M,EACRK,EAAEmoD,EAAI17C,EAAE07C,EACDnoD,GAEX6nQ,SAAU,SAASp7P,GACf,GAAiB,IAAbA,EAAEjK,OACF,KAAM,iDAEV,IAAIxC,EAAI,IAAI+yH,EAOZ,OANA/yH,EAAEE,EAAIuM,EAAE,GACRzM,EAAEmgB,EAAI1T,EAAE,GACRzM,EAAEN,EAAI+M,EAAE,GACRzM,EAAER,EAAIiN,EAAE,GACRzM,EAAEL,EAAI8M,EAAE,GACRzM,EAAEmoD,EAAI17C,EAAE,GACDzM,GAEX8nQ,YAAa,SAAS1nQ,EAAGjB,GACrB,IAAIa,EAAI,IAAI+yH,EAOZ,OANA/yH,EAAEE,EAAI,EACNF,EAAEmgB,EAAI,EACNngB,EAAEN,EAAI,EACNM,EAAER,EAAI,EACNQ,EAAEL,EAAIS,EACNJ,EAAEmoD,EAAIhpD,EACCa,GAEXqzH,KAAM,WACF,OAAO,IAAIN,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,IAErCp+E,SAAU,SAAS2+E,EAAOlzH,EAAGjB,GACzB,IAAIa,EAAI,IAAI+yH,EAOZ,OANA/yH,EAAEE,EAAI7B,KAAKk1H,IAAID,EAAQj1H,KAAK+xH,GAAK,KACjCpwH,EAAEmgB,EAAI9hB,KAAKm1H,IAAIF,EAAQj1H,KAAK+xH,GAAK,KACjCpwH,EAAEN,GAAKM,EAAEmgB,EACTngB,EAAER,EAAIQ,EAAEE,EACRF,EAAEL,EAAKS,EAAIA,EAAIJ,EAAEE,EAAIf,EAAIa,EAAEmgB,GAAM,EACjCngB,EAAEmoD,EAAKhpD,EAAIA,EAAIa,EAAEE,EAAIE,EAAIJ,EAAEmgB,GAAM,EAC1BngB,GAEX+nQ,QAAS,SAASt0I,EAAQC,GACtB,IAAI1zH,EAAI,IAAI+yH,EAOZ,OANA/yH,EAAEE,EAAIuzH,EACNzzH,EAAEmgB,EAAI,EACNngB,EAAEN,EAAI,EACNM,EAAER,EAAIk0H,EACN1zH,EAAEL,EAAI,EACNK,EAAEmoD,EAAI,EACCnoD,GAEXgwB,MAAO,SAASvjB,GACZ,IAAIzB,EAAOg9P,EACX,GAAIv7P,EAAG,CAGH,GAAoC,YAFpCA,EAAIA,EAAE+xB,QAEA58B,MAAM,EAAG,GAAG0R,cAA4B,CAG1C,GAAqB,KADrBtI,GADAg9P,EAAOv7P,EAAE7K,MAAM,EAAG6K,EAAEjK,OAAS,GAAGg8B,QACnB54B,MAAM,MACTpD,OACN,OAAOuwH,EAAO80I,SAASvyP,EAAItK,GAAO,SAAS+gH,GACvC,OAAOhoH,WAAWgoH,OAI1B,GAAqB,KADrB/gH,EAAQg9P,EAAKpiQ,MAAM,MACTpD,OACN,OAAOuwH,EAAO80I,SAASvyP,EAAItK,GAAO,SAAS+gH,GACvC,OAAOhoH,WAAWgoH,OAQ9B,GAHsB,MAAlBt/G,EAAE7K,MAAM,EAAG,IAAwC,MAA1B6K,EAAE7K,MAAM6K,EAAEjK,OAAS,KAC5CiK,EAAIA,EAAE+J,OAAO,EAAG/J,EAAEjK,OAAS,IAE3BiK,EAAEkE,QAAQ,KAAO,GAEI,KADrB3F,EAAQyB,EAAE7G,MAAM,MACNpD,OACN,OAAOuwH,EAAO80I,SAASvyP,EAAItK,GAAO,SAAS+gH,GACvC,OAAOhoH,WAAWgoH,OAI9B,GAAIt/G,EAAEkE,QAAQ,KAAO,GAEI,KADrB3F,EAAQyB,EAAE7G,MAAM,MACNpD,OACN,OAAOuwH,EAAO80I,SAASvyP,EAAItK,GAAO,SAAS+gH,GACvC,OAAOhoH,WAAWgoH,OAKlC,OAAO/gH,KAOf,IAAIi9P,EAAerlQ,EAAM7E,OAAO,CAC5BoF,KAAM,SAASjD,EAAGigB,EAAGzgB,EAAGF,EAAGG,EAAGwoD,GAC1BntD,KAAKkF,EAAIA,GAAK,EACdlF,KAAKmlB,EAAIA,GAAK,EACdnlB,KAAK0E,EAAIA,GAAK,EACd1E,KAAKwE,EAAIA,GAAK,EACdxE,KAAK2E,EAAIA,GAAK,EACd3E,KAAKmtD,EAAIA,GAAK,GAElB+/M,WAAY,SAAoBloQ,GAC5B,IAAIyM,EAAI,IAAIw7P,EAOZ,OANAx7P,EAAEvM,EAAIF,EAAEE,EACRuM,EAAE0T,EAAIngB,EAAEmgB,EACR1T,EAAE/M,EAAIM,EAAEN,EACR+M,EAAEjN,EAAIQ,EAAER,EACRiN,EAAE9M,EAAIK,EAAEL,EACR8M,EAAE07C,EAAInoD,EAAEmoD,EACD17C,KAyBf,SAAS07P,EAAS3lQ,GACVu/P,EAAMG,YAAY1/P,KAClBA,EAAS,IAKb,IAFA,IAAI+O,EAAS,GACTqZ,EAAQ,iEACHroB,EAAIC,EAAQD,EAAI,IAAKA,EAC1BgP,GAAUqZ,EAAM9kB,OAAOzH,KAAK0S,MAAM1S,KAAKqsB,UAAYE,EAAMpoB,OAAS,KAEtE,OAAO+O,EAGX,IAAI62P,EAAW,CAQXC,uBAAwB,SAASt8I,EAAG7rH,EAAGigB,GACnC,SAAS8xI,EAAGq2G,EAAKC,GACb,OAAQD,EAAIloQ,EAAImoQ,EAAInoQ,IAAMkoQ,EAAIloQ,EAAImoQ,EAAInoQ,IAAMkoQ,EAAInpQ,EAAIopQ,EAAIppQ,IAAMmpQ,EAAInpQ,EAAIopQ,EAAIppQ,GAG9E,GAAIe,IAAMigB,EACN,OAAO8xI,EAAGlmC,EAAG7rH,GAGjB,IAAIsoQ,EAAKroP,EAAE/f,EAAIF,EAAEE,EACbqoQ,EAAKtoP,EAAEhhB,EAAIe,EAAEf,EACb82I,GAAOlqB,EAAE3rH,EAAIF,EAAEE,GAAKooQ,GAAMz8I,EAAE5sH,EAAIe,EAAEf,GAAKspQ,EAC3C,OAAIxyH,EAAM,EACCgc,EAAG/xJ,EAAG6rH,IAGjBkqB,GAAO91H,EAAE/f,EAAI2rH,EAAE3rH,GAAKooQ,GAAMroP,EAAEhhB,EAAI4sH,EAAE5sH,GAAKspQ,GAC7B,EACCx2G,EAAG9xI,EAAG4rG,IAGjBkqB,GAAO91H,EAAE/f,EAAI2rH,EAAE3rH,GAAKqoQ,GAAMtoP,EAAEhhB,EAAI4sH,EAAE5sH,GAAKqpQ,GAC1BvyH,GAAOuyH,EAAKA,EAAKC,EAAKA,IASvCC,eAAgB,SAAS38I,EAAG7rH,EAAGigB,GAC3B,OAAO9hB,KAAKo6E,KAAKz9E,KAAKqtQ,uBAAuBt8I,EAAG7rH,EAAGigB,KASvDwoP,mBAAoB,SAAS58I,EAAGsQ,GAC5B,IAAIusI,EAAUt7P,OAAOgjH,UACrB,GAAIyxI,EAAMG,YAAY7lI,IAA6B,IAAlBA,EAAO75H,OACpC,OAAO8K,OAAOgjH,UAElB,IAAK,IAAIrwH,EAAI,EAAGA,EAAIo8H,EAAO75H,OAAS,EAAGvC,IAAK,CACxC,IAAI88H,EAAKV,EAAOp8H,GACZw8H,EAAKJ,EAAOp8H,EAAI,GAEhBT,EAAIxE,KAAKqtQ,uBAAuBt8I,EAAGgR,EAAIN,GACvCj9H,EAAIopQ,IACJA,EAAUppQ,GAGlB,OAAOnB,KAAKo6E,KAAKmwL,KAYrBC,EAAYltQ,EAAMiH,MAAM7E,OAAO,CAC/BoF,KAAM,WACFnI,KAAK8tQ,SAAW,GAChB9tQ,KAAKwH,OAAS,GAMlByF,IAAK,SAASsE,EAAK7I,GAEf,IAAIskB,EAAMhtB,KAAK+tQ,iBAAiBx8P,GAIhC,OAHIw1P,EAAME,UAAUv+P,KAChBskB,EAAItkB,MAAQA,GAETskB,GAMXuC,IAAK,SAAShe,GACV,OAAIvR,KAAKguQ,cAAcz8P,GACZvR,KAAK+tQ,iBAAiBx8P,GAE1B,MAQXie,IAAK,SAASje,EAAK7I,GACf1I,KAAKiN,IAAIsE,EAAK7I,IAMlBulQ,YAAa,SAAS18P,GAClB,OAAOvR,KAAKguQ,cAAcz8P,IAO9BwlB,OAAQ,SAASxlB,GACb,GAAIvR,KAAKguQ,cAAcz8P,GAAM,CACzB,IAAI28P,EAASluQ,KAAKs7K,MAAM/pK,GAGxB,cAFOvR,KAAK8tQ,SAASI,GACrBluQ,KAAKwH,SACE+J,IAQfjQ,QAAS,SAASi3D,GAEd,IADA,IAAI41M,EAASnuQ,KAAKouQ,UACT7mQ,EAAI,EAAG8oB,EAAM89O,EAAO3mQ,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAC/C,IAAI+2C,EAAO6vN,EAAO5mQ,GACd8mQ,EAASruQ,KAAK8tQ,SAASxvN,GACvByoN,EAAMG,YAAYmH,IAGtB91M,EAAK81M,KAQblnQ,MAAO,WAGH,IAFA,IAAImnQ,EAAK,IAAIT,EACTM,EAASnuQ,KAAKouQ,UACT7mQ,EAAI,EAAG8oB,EAAM89O,EAAO3mQ,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAC/C,IAAI+2C,EAAO6vN,EAAO5mQ,GACd8mQ,EAASruQ,KAAK8tQ,SAASxvN,GACvByoN,EAAMG,YAAYmH,IAGtBC,EAAGrhQ,IAAIohQ,EAAO98P,IAAK88P,EAAO3lQ,OAE9B,OAAO4lQ,GAQXF,QAAS,WACL,IAAID,EAAS,GACb,IAAK,IAAI7vN,KAAQt+C,KAAK8tQ,SACd9tQ,KAAK8tQ,SAASp/P,eAAe4vC,IAC7B6vN,EAAOxsQ,KAAK28C,GAGpB,OAAO6vN,GAGXH,cAAe,SAASz8P,GACpB,IAAI28P,EAASluQ,KAAKs7K,MAAM/pK,GACxB,OAAOw1P,EAAME,UAAUjnQ,KAAK8tQ,SAASI,KAQzCH,iBAAkB,SAASx8P,GACvB,IAAI28P,EAASluQ,KAAKs7K,MAAM/pK,GACpB88P,EAASruQ,KAAK8tQ,SAASI,GAM3B,OALInH,EAAMG,YAAYmH,KAClBA,EAAS,CAAE98P,IAAKA,GAChBvR,KAAK8tQ,SAASI,GAAUG,EACxBruQ,KAAKwH,UAEF6mQ,GAMX/yF,MAAO,SAAS/pK,GACZ,GAAIw1P,EAAMjyM,SAASvjD,GACf,OAAOA,EAEX,GAAIw1P,EAAMn+P,SAAS2I,GACf,OAAOvR,KAAKuuQ,YAAYh9P,GAE5B,GAAIw1P,EAAM5nG,SAAS5tJ,GACf,OAAOvR,KAAKwuQ,cAAcj9P,GAE9B,KAAM,yBAMVg9P,YAAa,SAAStpQ,GAElB,IAAIsR,EAAS,EACb,GAAiB,IAAbtR,EAAEuC,OACF,OAAO+O,EAEX,IAAK,IAAIhP,EAAI,EAAGA,EAAItC,EAAEuC,OAAQD,IAAK,CAE/BgP,EAAoB,GAATA,EAAeA,EADjBtR,EAAEqM,WAAW/J,GAG1B,OAAOgP,GAMXi4P,cAAe,SAASj9P,GACpB,IAAIoe,EAAKpe,EAAIk9P,QAKb,OAJI1H,EAAMG,YAAYv3O,KAClBA,EAAKw9O,IACL57P,EAAIk9P,QAAU9+O,GAEXA,KAUX++O,EAAa/tQ,EAAM2I,WAAWvG,OAAO,CAKrCoF,KAAM,SAASwmQ,GAKX,GAHAhuQ,EAAM2I,WAAWvB,GAAGI,KAAKoC,KADdvK,MAEXA,KAAK4uQ,WAAa,IAAIf,EACtB7tQ,KAAKwH,OAAS,EACVu/P,EAAME,UAAU0H,GAChB,GAAIzrQ,MAAMD,QAAQ0rQ,GACd,IAAK,IAAIpnQ,EAAI,EAAGA,EAAIonQ,EAAWnnQ,OAAQD,IACnCvH,KAAKiN,IAAI0hQ,EAAWpnQ,SAGxBonQ,EAAWrtQ,SAAQ,SAASwD,EAAG2M,GAC3BzR,KAAKiN,IAAInI,EAAG2M,KACbzR,OASfiN,IAAK,SAASsE,EAAK7I,GACf,IAAI4pH,EAAQtyH,KAAK4uQ,WAAWr/O,IAAIhe,GAC3B+gH,IACDA,EAAQtyH,KAAK4uQ,WAAW3hQ,IAAIsE,GAC5BvR,KAAKwH,SACLxH,KAAKoK,QAAQ,YAEjBkoH,EAAM5pH,MAAQA,GAQlB8mB,IAAK,SAASje,EAAK7I,GACf1I,KAAKiN,IAAIsE,EAAK7I,IAMlB6mB,IAAK,SAAShe,GACV,IAAI+gH,EAAQtyH,KAAK4uQ,WAAWr/O,IAAIhe,GAChC,GAAI+gH,EACA,OAAOA,EAAM5pH,MAEjB,MAAM,IAAI+H,MAAM,mBAAqBc,IAMzC08P,YAAa,SAAS18P,GAClB,OAAOvR,KAAK4uQ,WAAWX,YAAY18P,IAMvCwlB,OAAQ,SAASxlB,GACb,GAAIvR,KAAKiuQ,YAAY18P,GAGjB,OAFAvR,KAAKoK,QAAQ,WACbpK,KAAKwH,SACExH,KAAK4uQ,WAAW73O,OAAOxlB,IAOtCjQ,QAAS,SAASi3D,EAAM2vM,GACpBloQ,KAAK4uQ,WAAWttQ,SAAQ,SAASgxH,GAC7B/5D,EAAKhuD,KAAK29P,EAAS51I,EAAM/gH,IAAK+gH,EAAM5pH,WAO5CmmQ,aAAc,SAASt2M,EAAM2vM,GACzBloQ,KAAK4uQ,WAAWttQ,SAAQ,SAASgxH,GAC7B/5D,EAAKhuD,KAAK29P,EAAS51I,EAAM5pH,WAOjComQ,WAAY,SAASv2M,EAAM2vM,GACvBloQ,KAAK4uQ,WAAWttQ,SAAQ,SAASgxH,GAC7B/5D,EAAKhuD,KAAK29P,EAAS51I,EAAM/gH,SAOjC2Y,KAAM,WACF,IAAIA,EAAO,GAIX,OAHAlqB,KAAK8uQ,YAAW,SAASv9P,GACrB2Y,EAAKvoB,KAAK4P,MAEP2Y,KAMX6kP,EAAQpuQ,EAAMiH,MAAM7E,OAAO,CAE3BoF,KAAM,WACFnI,KAAKwyH,MAAQ,KACbxyH,KAAKuyH,MAAQ,KACbvyH,KAAKwH,OAAS,GAMlBwnQ,QAAS,SAAStmQ,GACd,IAAI4pH,EAAQ,CAAE5pH,MAAOA,EAAO28D,KAAM,MAC7BrlE,KAAKuyH,OAKNvyH,KAAKwyH,MAAMntD,KAAOitD,EAClBtyH,KAAKwyH,MAAQxyH,KAAKwyH,MAAMntD,OALxBrlE,KAAKuyH,MAAQD,EACbtyH,KAAKwyH,MAAQxyH,KAAKuyH,OAMtBvyH,KAAKwH,UAMT4f,QAAS,WACL,GAAIpnB,KAAKwH,OAAS,EACd,MAAM,IAAIiJ,MAAM,uBAEpB,IAAI/H,EAAQ1I,KAAKuyH,MAAM7pH,MAGvB,OAFA1I,KAAKuyH,MAAQvyH,KAAKuyH,MAAMltD,KACxBrlE,KAAKwH,SACEkB,GAGXysB,SAAU,SAAS6Z,GAEf,IADA,IAAIv7B,EAAUzT,KAAKuyH,MACZ9+G,GAAS,CACZ,GAAIA,EAAQ/K,QAAUsmC,EAClB,OAAO,EAEXv7B,EAAUA,EAAQ4xD,KAEtB,OAAO,KAUX+7F,EAAMzgK,EAAM2I,WAAWvG,OAAO,CAC9BoF,KAAM,SAAS45P,GAEXphQ,EAAM2I,WAAWvB,GAAGI,KAAKoC,KADdvK,MAEXA,KAAK4uQ,WAAa,IAAIf,EACtB7tQ,KAAKwH,OAAS,EACVu/P,EAAME,UAAUlF,KACZA,aAAoB8L,EACpB9L,EAASzgQ,SAAQ,SAASkD,GACtBxE,KAAKiN,IAAIzI,MAGRu9P,aAAoB2M,GACzB3M,EAASzgQ,SAAQ,SAASwD,EAAG2M,GACzBzR,KAAKiN,IAAI,CAAEsE,IAAKzM,EAAG4D,MAAO+I,MAC3BzR,QAKfm1B,SAAU,SAAS6Z,GACf,OAAOhvC,KAAK4uQ,WAAWX,YAAYj/N,IAGvC/hC,IAAK,SAAS+hC,GACEhvC,KAAK4uQ,WAAWr/O,IAAIyf,KAE5BhvC,KAAK4uQ,WAAW3hQ,IAAI+hC,EAAMA,GAC1BhvC,KAAKwH,SACLxH,KAAKoK,QAAQ,aAIrBmlB,IAAK,SAASyf,GACV,OAAIhvC,KAAKm1B,SAAS6Z,GACPhvC,KAAK4uQ,WAAWr/O,IAAIyf,GAAMtmC,MAG1B,MASf41C,KAAM,SAAStP,GACX,OAAOhvC,KAAK4uQ,WAAWtzF,MAAMtsI,IAOjCjY,OAAQ,SAASiY,GACThvC,KAAKm1B,SAAS6Z,KACdhvC,KAAK4uQ,WAAW73O,OAAOiY,GACvBhvC,KAAKwH,SACLxH,KAAKoK,QAAQ,aAOrB9I,QAAS,SAASi3D,EAAM18B,GACpB77B,KAAK4uQ,WAAWttQ,SAAQ,SAAS2tQ,GAC7B12M,EAAK02M,EAAGvmQ,SACTmzB,IAEP83B,QAAS,WACL,IAAI08D,EAAI,GAIR,OAHArwH,KAAKsB,SAAQ,SAASkD,GAClB6rH,EAAE1uH,KAAK6C,MAEJ6rH,KASXrmD,EAAOrpE,EAAMiH,MAAM7E,OAAO,CAE1BoF,KAAM,SAASwnB,EAAIswH,GA+Bf,GAzBAjgJ,KAAKkvQ,MAAQ,GAMblvQ,KAAKmvQ,SAAW,GAMhBnvQ,KAAKovQ,SAAW,GAKhBpvQ,KAAKqvQ,OAAS,EAEVtI,EAAME,UAAUt3O,GAChB3vB,KAAK2vB,GAAKA,EAGV3vB,KAAK2vB,GAAKw9O,IAEVpG,EAAME,UAAUhnH,GAAQ,CACxBjgJ,KAAKsvQ,gBAAkBrvH,EAEvB,IAAI96H,EAAI86H,EAAMylH,SACd1lQ,KAAKgN,MAAQmY,EAAEnY,MACfhN,KAAK2M,OAASwY,EAAExY,OAChB3M,KAAKoF,EAAI+f,EAAE/f,EACXpF,KAAKmE,EAAIghB,EAAEhhB,OAGXnE,KAAKsvQ,gBAAkB,KAM3BtvQ,KAAK6N,KAAO,KACZ7N,KAAK0F,KAAO,OACZ1F,KAAKuvQ,UAAY,SAAWvvQ,KAAK2vB,GAAK,IAKtC3vB,KAAKwvQ,WAAY,GAMrBC,WAAY,WACR,OAAO1I,EAAMpmF,QAAQ3gL,KAAKkvQ,QAO9BxJ,OAAQ,SAASr1I,GACb,IAAK02I,EAAME,UAAU52I,GACjB,OAAO,IAAIq/D,EAAQx0D,KAAKl7H,KAAKoF,EAAGpF,KAAKmE,EAAGnE,KAAKgN,MAAOhN,KAAK2M,QAG7D3M,KAAKoF,EAAIirH,EAAEjrH,EACXpF,KAAKmE,EAAIksH,EAAElsH,EACXnE,KAAKgN,MAAQqjH,EAAErjH,MACfhN,KAAK2M,OAAS0jH,EAAE1jH,QAOpB+iQ,WAAY,SAASxsO,GACjB,IAAIj7B,EAAOjI,KACX,OAAO+mQ,EAAM7zD,IAAIjrM,EAAKinQ,OAAO,SAAS9uC,GAClC,OAAOA,EAAKuvC,cAAc1nQ,KAAUi7B,MAQ5C0sO,YAAa,WACT,GAA6B,IAAzB5vQ,KAAKmvQ,SAAS3nQ,OACd,MAAO,GAGX,IADA,IAAI2tC,EAAW,GACN5tC,EAAI,EAAG8oB,EAAMrwB,KAAKmvQ,SAAS3nQ,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACtD,IAAI64N,EAAOpgO,KAAKmvQ,SAAS5nQ,GACzB4tC,EAASxzC,KAAKy+N,EAAKuvC,cAAc3vQ,OAErC,OAAOm1C,GAOX06N,WAAY,WACR,GAA6B,IAAzB7vQ,KAAKovQ,SAAS5nQ,OACd,MAAO,GAGX,IADA,IAAI6wB,EAAU,GACL9wB,EAAI,EAAG8oB,EAAMrwB,KAAKovQ,SAAS5nQ,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACtD,IAAI64N,EAAOpgO,KAAKovQ,SAAS7nQ,GACzB8wB,EAAQ12B,KAAKy+N,EAAKuvC,cAAc3vQ,OAEpC,OAAOq4B,GAOXlxB,MAAO,WACH,IAAIF,EAAO,IAAI+iE,EAef,OAdI+8L,EAAME,UAAUjnQ,KAAKqvQ,UACrBpoQ,EAAKooQ,OAASrvQ,KAAKqvQ,QAEnBtI,EAAME,UAAUjnQ,KAAK8vQ,WACrB7oQ,EAAK6oQ,QAAU9vQ,KAAK8vQ,SAEpB/I,EAAME,UAAUjnQ,KAAK49L,SACrB32L,EAAK22L,MAAQ59L,KAAK49L,OAEtB32L,EAAKqoQ,gBAAkBtvQ,KAAKsvQ,gBAC5BroQ,EAAK7B,EAAIpF,KAAKoF,EACd6B,EAAK9C,EAAInE,KAAKmE,EACd8C,EAAK+F,MAAQhN,KAAKgN,MAClB/F,EAAK0F,OAAS3M,KAAK2M,OACZ1F,GAMX8oQ,WAAY,SAAS7sO,GACjB,OAAiC,OAA1BljC,KAAK0vQ,WAAWxsO,IAO3B8sO,WAAY,SAAS5vC,GACbA,EAAK9yN,SAAWtN,OAChB+mQ,EAAMhwO,OAAO/2B,KAAKkvQ,MAAO9uC,GACzB2mC,EAAMhwO,OAAO/2B,KAAKmvQ,SAAU/uC,GAC5BA,EAAK9yN,OAAS,MAGd8yN,EAAK94N,SAAWtH,OAChB+mQ,EAAMhwO,OAAO/2B,KAAKkvQ,MAAO9uC,GACzB2mC,EAAMhwO,OAAO/2B,KAAKovQ,SAAUhvC,GAC5BA,EAAK94N,OAAS,OAOtB2oQ,UAAW,SAAS/sO,GAChB,OAAO6jO,EAAM7zD,IAAIlzM,KAAKmvQ,UAAU,SAAS/uC,GACrC,OAAOA,EAAK94N,SAAW47B,MAO/BgtO,OAAQ,WACJ,OAAOlwQ,KAAKkvQ,MAAM1nQ,QAMtB2oQ,aAAc,SAAS/vC,GACnB,OAAOjrM,EAASn1B,KAAKkvQ,MAAO9uC,IAMhCgwC,aAAc,SAASltO,GACnB,OAAO6jO,EAAMh3L,IAAI/vE,KAAKkvQ,OAAO,SAAS9uC,GAClC,OAAOA,EAAKuvC,cAAc3vQ,QAAUkjC,IACrCljC,OAMPqwQ,aAAc,WACV,IAAIC,EAAY,GAOhB,OANAvJ,EAAMzlQ,QAAQtB,KAAKovQ,UAAU,SAASzqQ,GAClC2rQ,EAAU3uQ,KAAKgD,EAAEgrQ,cAAc3vQ,SAChCA,MACH+mQ,EAAMzlQ,QAAQtB,KAAKmvQ,UAAU,SAASxqQ,GAClC2rQ,EAAU3uQ,KAAKgD,EAAEgrQ,cAAc3vQ,SAChCA,MACIswQ,KAOXC,EAAO5vQ,EAAMiH,MAAM7E,OAAO,CAE1BoF,KAAM,SAASmF,EAAQhG,EAAQqoB,EAAI6gP,GAC/B,GAAIzJ,EAAMG,YAAY55P,GAClB,KAAM,yCAEV,GAAIy5P,EAAMG,YAAY5/P,GAClB,KAAM,yCAEV,IAAImpQ,EAAaC,EAEbD,EADA1J,EAAMn+P,SAAS0E,GACD,IAAI08D,EAAK18D,GAGTA,EAGdojQ,EADA3J,EAAMn+P,SAAStB,GACD,IAAI0iE,EAAK1iE,GAGTA,EAGlBtH,KAAKsN,OAASmjQ,EACdzwQ,KAAKsH,OAASopQ,EACd1wQ,KAAKsN,OAAO4hQ,MAAMvtQ,KAAK3B,MACvBA,KAAKsH,OAAO4nQ,MAAMvtQ,KAAK3B,MACvBA,KAAKsN,OAAO6hQ,SAASxtQ,KAAK3B,MAC1BA,KAAKsH,OAAO8nQ,SAASztQ,KAAK3B,MACtB+mQ,EAAME,UAAUt3O,GAChB3vB,KAAK2vB,GAAKA,EAGV3vB,KAAK2vB,GAAKw9O,IAEVpG,EAAME,UAAUuJ,GAChBxwQ,KAAK2wQ,qBAAuBH,EAG5BxwQ,KAAK2wQ,qBAAuB,KAEhC3wQ,KAAK0F,KAAO,OACZ1F,KAAKuvQ,UAAY,SAAWvvQ,KAAKsN,OAAOqiB,GAAK,KAAO3vB,KAAKsH,OAAOqoB,GAAK,KAMzEggP,cAAe,SAASzsO,GACpB,GAAIljC,KAAKsN,SAAW41B,GAAQljC,KAAKsH,SAAW47B,EACxC,KAAM,iDAEV,OAAOljC,KAAKsN,SAAW41B,EAAOljC,KAAKsH,OAAStH,KAAKsN,QAMrDsjQ,cAAe,SAASxwC,GACpB,OAAIpgO,KAAKsN,SAAW8yN,EAAK9yN,QAAUtN,KAAKsN,SAAW8yN,EAAK94N,OAC7CtH,KAAKsN,OAEZtN,KAAKsH,SAAW84N,EAAK9yN,QAAUtN,KAAKsH,SAAW84N,EAAK94N,OAC7CtH,KAAKsH,OAET,MAMXupQ,WAAY,SAASC,EAAIC,GACrB,OAAO/wQ,KAAKsN,SAAWwjQ,GAAM9wQ,KAAKsH,SAAWypQ,GAAM/wQ,KAAKsN,SAAWyjQ,GAAM/wQ,KAAKsH,SAAWwpQ,GAM7FE,SAAU,WACN,MAAO,CAAChxQ,KAAKsN,OAAQtN,KAAKsH,SAM9B6oQ,aAAc,SAASjtO,GACnB,OAAOljC,KAAKsN,SAAW41B,GAAQljC,KAAKsH,SAAW47B,GAOnD6sO,WAAY,SAAS3vC,GACjB,OAAOjrM,EAASn1B,KAAKsN,OAAO4hQ,MAAO9uC,IAASjrM,EAASn1B,KAAKsH,OAAO4nQ,MAAO9uC,IAM5E6wC,aAAc,SAAS/tO,GACnB6jO,EAAMhwO,OAAO/2B,KAAKsN,OAAO4hQ,MAAOlvQ,MAChC+mQ,EAAMhwO,OAAO/2B,KAAKsN,OAAO6hQ,SAAUnvQ,MAEnCkjC,EAAKgsO,MAAMvtQ,KAAK3B,MAChBkjC,EAAKisO,SAASxtQ,KAAK3B,MAEnBA,KAAKsN,OAAS41B,GAOlBguO,aAAc,SAAShuO,GACnB6jO,EAAMhwO,OAAO/2B,KAAKsH,OAAO4nQ,MAAOlvQ,MAChC+mQ,EAAMhwO,OAAO/2B,KAAKsH,OAAO8nQ,SAAUpvQ,MAEnCkjC,EAAKgsO,MAAMvtQ,KAAK3B,MAChBkjC,EAAKksO,SAASztQ,KAAK3B,MAEnBA,KAAKsH,OAAS47B,GAMlBiuO,aAAc,SAAS1/P,EAAGwoO,GAClBj6O,KAAKsN,SAAWmE,EAChBzR,KAAKixQ,aAAah3B,GAEbj6O,KAAKsH,SAAWmK,GACrBzR,KAAKkxQ,aAAaj3B,IAO1BnkO,QAAS,WACL,IAAIs7P,EAAYpxQ,KAAKsN,OACjB+jQ,EAAYrxQ,KAAKsH,OASrB,OAPAtH,KAAKsN,OAAS+jQ,EACdtK,EAAMhwO,OAAOq6O,EAAUjC,SAAUnvQ,MACjCA,KAAKsN,OAAO6hQ,SAASxtQ,KAAK3B,MAE1BA,KAAKsH,OAAS8pQ,EACdrK,EAAMhwO,OAAOs6O,EAAUjC,SAAUpvQ,MACjCA,KAAKsH,OAAO8nQ,SAASztQ,KAAK3B,MACnBA,MAMXsxQ,SAAU,SAAShqQ,GACf,GAAItH,KAAKsN,SAAWhG,GAAUtH,KAAKsH,SAAWA,EAC1C,KAAM,iDAENtH,KAAKsH,SAAWA,GAChBtH,KAAK8V,WAOby7P,kBAAmB,WACf,IAAIlhJ,EAAIrwH,KAAKmH,QAGb,OAFAkpH,EAAEv6G,UACFu6G,EAAEmhJ,UAAW,EACNnhJ,GAMXlpH,MAAO,WAEH,OADY,IAAIopQ,EAAKvwQ,KAAKsN,OAAQtN,KAAKsH,WAW3CmqQ,EAAQ9wQ,EAAMiH,MAAM7E,OAAO,CAC3BoF,KAAM,SAASupQ,GAKX1xQ,KAAKkvQ,MAAQ,GAKblvQ,KAAK+rD,MAAQ,GAEb/rD,KAAK2xQ,SAAW,IAAIjD,EAKpB1uQ,KAAK0vL,QAAU,KAOf1vL,KAAK09I,MAAQ,KACTqpH,EAAME,UAAUyK,GACZ3K,EAAMn+P,SAAS8oQ,GACf1xQ,KAAK2vB,GAAK+hP,GAGV1xQ,KAAK0vL,QAAUgiF,EACf1xQ,KAAK2vB,GAAK+hP,EAAY/hP,IAI1B3vB,KAAK2vB,GAAKw9O,IAOdntQ,KAAK0lQ,OAAS,IAAIxqI,EAElBl7H,KAAK4xQ,yBAA0B,EAC/B5xQ,KAAK0F,KAAO,SAOhBmsQ,mBAAoB,SAASC,GAIzB,GAHI/K,EAAMG,YAAY4K,KAClBA,GAAe,IAEf9xQ,KAAK4xQ,yBAA4BE,EAArC,CAGA,IAAK,IAAIvqQ,EAAI,EAAG8oB,EAAMrwB,KAAK+rD,MAAMvkD,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACnD,IAAI27B,EAAOljC,KAAK+rD,MAAMxkD,GACtB27B,EAAKiS,SAAWn1C,KAAK4vQ,YAAY1sO,GACjCA,EAAK7K,QAAUr4B,KAAK6vQ,WAAW3sO,GAEnCljC,KAAK4xQ,yBAA0B,IAWnCG,aAAc,SAASC,EAAWj1P,EAAQk1P,GACtC,IAAKD,EACD,KAAM,4BAENjL,EAAMG,YAAYnqP,KAClBA,EAAS,GAGb/c,KAAK6xQ,qBACD9K,EAAMG,YAAY+K,KAClBA,EAAU,IAAIvD,EACd3H,EAAMzlQ,QAAQtB,KAAK+rD,OAAO,SAAS+kE,GAC/BmhJ,EAAQhlQ,IAAI6jH,GAAG,OAGvBmhJ,EAAQziP,IAAIwiP,GAAW,GACvBA,EAAUtnM,MAAQ3tD,EAElB,IADA,IAAIo4B,EAAW68N,EAAU78N,SAChB5tC,EAAI,EAAG8oB,EAAM8kB,EAAS3tC,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACjD,IAAIm8B,EAAQyR,EAAS5tC,GAChBm8B,IAASuuO,EAAQ1iP,IAAImU,IAG1B1jC,KAAK+xQ,aAAaruO,EAAO3mB,EAAS,EAAGk1P,KAU7Cx0N,KAAM,SAAS/0C,GACX,GAAIq+P,EAAMG,YAAYx+P,GAAQ,CAC1B,GAAK1I,KAAK09I,MAWN,OAAO19I,KAAK09I,MATZ,IAAI9/E,EAAQmpM,EAAM78P,MAAMlK,KAAK+rD,OAAO,SAAS+kE,GACzC,OAA6B,IAAtBA,EAAEs+I,SAAS5nQ,UAEtB,OAAIo2D,GAGGmpM,EAAM78P,MAAMlK,KAAK+rD,OAO5B/rD,KAAK09I,MAAQh1I,GAUrBwpQ,uBAAwB,WACpBlyQ,KAAKmyQ,eAAiB,EACtBnyQ,KAAKoyQ,iBAGL,IAFA,IAAIC,EAActL,EAAMO,UAAUtnQ,KAAK+rD,MAAMvkD,QAAS,GAE7CiK,EAAI,EAAGA,EAAIzR,KAAK+rD,MAAMvkD,OAAQiK,KACX,IAApB4gQ,EAAY5gQ,KACZzR,KAAKsyQ,uBAAuBD,EAAa5gQ,GACzCzR,KAAKmyQ,kBAIb,IAAqB5qQ,EAAjBgrQ,EAAa,GACjB,IAAKhrQ,EAAI,EAAGA,EAAIvH,KAAKmyQ,iBAAkB5qQ,EACnCgrQ,EAAWhrQ,GAAK,IAAIkqQ,EAExB,IAAKlqQ,EAAI,EAAGA,EAAI8qQ,EAAY7qQ,SAAUD,EAAG,CACzBgrQ,EAAWF,EAAY9qQ,IAC7BirQ,oBAAoBxyQ,KAAK+rD,MAAMxkD,IAMzC,OAHAgrQ,EAAWrtP,MAAK,SAAShgB,EAAGigB,GACxB,OAAOA,EAAE4mC,MAAMvkD,OAAStC,EAAE6mD,MAAMvkD,UAE7B+qQ,GAGXD,uBAAwB,SAASG,EAAQC,GACrCD,EAAOC,GAAa1yQ,KAAKmyQ,eACzB,IAAIjvO,EAAOljC,KAAK+rD,MAAM2mN,GACtB3L,EAAMzlQ,QAAQ4hC,EAAKgsO,OACf,SAAS9uC,GACL,IACIuyC,EADOvyC,EAAKuvC,cAAczsO,GACZnqB,OACM,IAApB05P,EAAOE,IACP3yQ,KAAKsyQ,uBAAuBG,EAAQE,KAEzC3yQ,OAOX4yQ,WAAY,WACR,GAAI5yQ,KAAK2gL,UAEL,OADA3gL,KAAK0lQ,OAAS,IAAIxqI,EACXl7H,KAAK0lQ,OAGhB,IADA,IAAIvgP,EAAI,KACC5d,EAAI,EAAG8oB,EAAMrwB,KAAK+rD,MAAMvkD,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACnD,IAAI27B,EAAOljC,KAAK+rD,MAAMxkD,GAKlB4d,EAJCA,EAIGA,EAAEq3G,MAAMt5F,EAAKwiO,UAHbxiO,EAAKwiO,SAOjB,OADA1lQ,KAAK0lQ,OAASvgP,EACPnlB,KAAK0lQ,QAWhBmN,gBAAiB,SAASp1N,GACtB,IAC4BnwC,EAAQhG,EADhC4iD,EAAO,IAAIunN,EACXn3P,EAAM,IAAIo0P,EACdxkN,EAAKzM,KAAOA,EAAKt2C,QACjB+iD,EAAKzM,KAAKitB,MAAQ,EAClBxgB,EAAKzM,KAAK9tB,GAAK8tB,EAAK9tB,GACpBrV,EAAIrN,IAAIwwC,EAAMyM,EAAKzM,MACnBA,EAAKitB,MAAQ,EAEb,IAAIunM,EAAU,GACVnmO,EAAY,GAChBoe,EAAK4oN,SAAS5oN,EAAKzM,MACnBw0N,EAAQtwQ,KAAK87C,GACb3R,EAAUnqC,KAAK87C,GAGf,IADA,IAAIs1N,EAAa,EACVjnO,EAAUtkC,OAAS,GAEtB,IADA,IAAI69D,EAAOv5B,EAAUzc,MACZ2jP,EAAK,EAAGA,EAAK3tM,EAAK6pM,MAAM1nQ,OAAQwrQ,IAAM,CAC3C,IACIC,EADO5tM,EAAK6pM,MAAM8D,GACRrD,cAActqM,GAC5B,IAAIlwC,EAAS88O,EAASgB,GAAtB,CAIAA,EAAGvoM,MAAQrF,EAAKqF,MAAQ,EACpBqoM,EAAaE,EAAGvoM,MAAQ,IACxBqoM,EAAaE,EAAGvoM,MAAQ,GAEvBv1C,EAAS2W,EAAWmnO,IACrBnnO,EAAUnqC,KAAKsxQ,GAEd99O,EAAS88O,EAASgB,IACnBhB,EAAQtwQ,KAAKsxQ,GAEb34P,EAAI2zP,YAAY5oM,GAChB/3D,EAASgN,EAAIiV,IAAI81C,KAGjB/3D,EAAS+3D,EAAKl+D,SACPujE,MAAQrF,EAAKqF,MACpBp9D,EAAOqiB,GAAK01C,EAAK11C,GACjBrV,EAAIrN,IAAIo4D,EAAM/3D,IAEdgN,EAAI2zP,YAAYgF,GAChB3rQ,EAASgT,EAAIiV,IAAI0jP,KAGjB3rQ,EAAS2rQ,EAAG9rQ,SACLujE,MAAQuoM,EAAGvoM,MAClBpjE,EAAOqoB,GAAKsjP,EAAGtjP,GACfrV,EAAIrN,IAAIgmQ,EAAI3rQ,IAEhB,IAAI4rQ,EAAU,IAAI3C,EAAKjjQ,EAAQhG,GAC/B4iD,EAAKipN,QAAQD,IAMrB,IADA,IAAIE,EAAa,GACR7rQ,EAAI,EAAGA,EAAIwrQ,EAAYxrQ,IAC5B6rQ,EAAWzxQ,KAAK,IASpB,OANAolQ,EAAMzlQ,QAAQ4oD,EAAK6B,OAAO,SAAS7oB,GAC/BkwO,EAAWlwO,EAAKwnC,OAAO/oE,KAAKuhC,MAGhCgnB,EAAKkpN,WAAaA,EAClBlpN,EAAK2nN,qBACE3nN,GASXmpN,eAAgB,SAASC,EAAeC,GAOpC,GANIxM,EAAMG,YAAYoM,KAClBA,EAAgB,IAEhBvM,EAAMG,YAAYqM,KAClBA,EAAoB,GAEE,IAAtBvzQ,KAAK+rD,MAAMvkD,OACX,OAAO,KAEX,GAA0B,IAAtBxH,KAAK+rD,MAAMvkD,OACX,OAAO2tB,EAASm+O,EAAetzQ,KAAK+rD,MAAM,IAAM,KAAO/rD,KAAK+rD,MAAM,GAEtE,IAAI4zM,EAAOh9P,EAAEu7B,KAAKl+B,KAAK+rD,OAAO,SAAS7oB,GACnC,OAAQ/N,EAASm+O,EAAepwO,IAASA,EAAKgtO,UAAYqD,KAE9D,OAAIxM,EAAMpmF,QAAQg/E,GACP,KAEJA,EAAKoH,EAAMW,cAAc,EAAG/H,EAAKn4P,UAM5Cm5K,QAAS,WACL,OAAOomF,EAAMpmF,QAAQ3gL,KAAK+rD,QAM9BynN,UAAW,WACP,OAAOzM,EAAMh3L,IAAI/vE,KAAKkvQ,OAAO,SAAS9uC,GAClC,OAAOjrM,EAASn1B,KAAK+rD,MAAOq0K,EAAK9yN,SAAW6nB,EAASn1B,KAAK+rD,MAAOq0K,EAAK94N,UACvEtH,OAOP6vQ,WAAY,SAAS/+I,GACjB,IAAK9wH,KAAKyzQ,QAAQ3iJ,GACd,KAAM,4CAEV,OAAOA,EAAE++I,cAObD,YAAa,SAAS9+I,GAClB,IAAK9wH,KAAKyzQ,QAAQ3iJ,GACd,KAAM,4CAEV,OAAOA,EAAE8+I,eAMbuD,QAAS,SAASO,EAAcpsQ,EAAQs2L,GAEpC,GAAImpE,EAAMG,YAAYwM,GAClB,KAAM,yCAEV,GAAI3M,EAAMG,YAAY5/P,GAAS,CAE3B,GAAIy/P,EAAME,UAAUyM,EAAahuQ,OAA+B,SAAtBguQ,EAAahuQ,KAEnD,YADA1F,KAAK2zQ,gBAAgBD,GAIrB,KAAM,yCAId,IAAIE,EAAc5zQ,KAAK6zQ,QAAQH,GAC3B3M,EAAMG,YAAY0M,KAClBA,EAAc5zQ,KAAK8zQ,QAAQJ,IAE/B,IAAIK,EAAc/zQ,KAAK6zQ,QAAQvsQ,GAC3By/P,EAAMG,YAAY6M,KAClBA,EAAc/zQ,KAAK8zQ,QAAQxsQ,IAG/B,IAAI4rQ,EAAU,IAAI3C,EAAKqD,EAAaG,GAapC,OAXIhN,EAAME,UAAUrpE,KAChBs1E,EAAQt1E,MAAQA,GAQpB59L,KAAKkvQ,MAAMvtQ,KAAKuxQ,GAETA,GAMXc,eAAgB,WACZ,KAAOh0Q,KAAKkvQ,MAAM1nQ,OAAS,GAAG,CAC1B,IAAI44N,EAAOpgO,KAAKkvQ,MAAM,GACtBlvQ,KAAKgwQ,WAAW5vC,KAOxBuzC,gBAAiB,SAASvzC,GAEtB,IAAIpgO,KAAKi0Q,QAAQ7zC,GAAjB,CAIA,GADApgO,KAAKkvQ,MAAMvtQ,KAAKy+N,GACZpgO,KAAKyzQ,QAAQrzC,EAAK9yN,OAAOqiB,IAAK,CAE9B,IAAI1qB,EAAIjF,KAAK6zQ,QAAQzzC,EAAK9yN,OAAOqiB,IACjCywM,EAAK6wC,aAAahsQ,QAGlBjF,KAAK8zQ,QAAQ1zC,EAAK9yN,QAGtB,GAAItN,KAAKyzQ,QAAQrzC,EAAK94N,OAAOqoB,IAAK,CAC9B,IAAIxqB,EAAInF,KAAK6zQ,QAAQzzC,EAAK94N,OAAOqoB,IACjCywM,EAAK8wC,aAAa/rQ,QAGlBnF,KAAK8zQ,QAAQ1zC,EAAK94N,UAsB1B2sQ,QAAS,SAASC,GACd,GAAInN,EAAMn+P,SAASsrQ,GACf,OAAOnN,EAAM7zD,IAAIlzM,KAAKkvQ,OAAO,SAAS9uC,GAClC,OAAOA,EAAKzwM,KAAOukP,KAG3B,GAAsB,SAAlBA,EAASxuQ,KACT,OAAOyvB,EAASn1B,KAAKkvQ,MAAOgF,GAEhC,KAAM,yDAKVL,QAAS,SAASM,GACd,IAAIxkP,EAAKwkP,EAASxkP,IAAMwkP,EACxB,GAAIn0Q,KAAK2xQ,SAAS1D,YAAYt+O,GAC1B,OAAO3vB,KAAK2xQ,SAASpiP,IAAII,IAOjC8jP,QAAS,SAASU,GACd,IAAIxkP,EAAKwkP,EAASxkP,IAAMwkP,EACxB,OAAOn0Q,KAAK2xQ,SAAS1D,YAAYt+O,IAGrCmjP,SAAU,SAAS5vO,GACfljC,KAAK+rD,MAAMpqD,KAAKuhC,GAChBljC,KAAK2xQ,SAAS1kQ,IAAIi2B,EAAKvT,GAAIuT,IAG/BkxO,YAAa,SAASlxO,GAClB6jO,EAAMhwO,OAAO/2B,KAAK+rD,MAAO7oB,GACzBljC,KAAK2xQ,SAAS56O,OAAOmM,EAAKvT,KAO9B0kP,WAAY,SAASF,GACjB,IAAIrjJ,EAAIqjJ,EAKR,GAJIpN,EAAMn+P,SAASurQ,KACfrjJ,EAAI9wH,KAAK6zQ,QAAQM,KAGjBpN,EAAME,UAAUn2I,GAUhB,KAAM,gEATN,IAAIo+I,EAAQp+I,EAAEo+I,MACdp+I,EAAEo+I,MAAQ,GACV,IAAK,IAAI3nQ,EAAI,EAAG8oB,EAAM6+O,EAAM1nQ,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAC9C,IAAI64N,EAAO8uC,EAAM3nQ,GACjBvH,KAAKgwQ,WAAW5vC,GAEpBpgO,KAAKo0Q,YAAYtjJ,IAUzBwjJ,aAAc,SAASC,EAAIC,GACvB,OAAOzN,EAAM7zD,IAAIlzM,KAAKkvQ,OAAO,SAAS9uC,GAClC,OAAOA,EAAK9yN,QAAUinQ,GAAMn0C,EAAK94N,QAAUktQ,GAAMp0C,EAAK9yN,QAAUknQ,GAAMp0C,EAAK94N,QAAUitQ,MAO7FvE,WAAY,SAAS5vC,GAKjB2mC,EAAMhwO,OAAO/2B,KAAKkvQ,MAAO9uC,GAEzB2mC,EAAMhwO,OAAOqpM,EAAK9yN,OAAO6hQ,SAAU/uC,GACnC2mC,EAAMhwO,OAAOqpM,EAAK9yN,OAAO4hQ,MAAO9uC,GAChC2mC,EAAMhwO,OAAOqpM,EAAK94N,OAAO8nQ,SAAUhvC,GACnC2mC,EAAMhwO,OAAOqpM,EAAK94N,OAAO4nQ,MAAO9uC,IAQpC0zC,QAAS,SAASK,EAAUM,EAAY72E,GAEpC,IAAI82E,EAAU,KAEd,IAAK3N,EAAME,UAAUkN,GACjB,KAAM,iDAGV,GAAIpN,EAAMn+P,SAASurQ,GAAW,CAC1B,GAAIn0Q,KAAKyzQ,QAAQU,GACb,OAAOn0Q,KAAK6zQ,QAAQM,GAExBO,EAAU,IAAI1qM,EAAKmqM,OAElB,CACD,GAAIn0Q,KAAKyzQ,QAAQU,GACb,OAAOn0Q,KAAK6zQ,QAAQM,GAGxBO,EAAUP,EAWd,OARIpN,EAAME,UAAUwN,IAChBC,EAAQhP,OAAO+O,GAGf1N,EAAME,UAAUrpE,KAChB82E,EAAQ92E,MAAQA,GAEpB59L,KAAK8yQ,SAAS4B,GACPA,GAMXlC,oBAAqB,SAAStvO,GACrBljC,KAAKyzQ,QAAQvwO,IACdljC,KAAK8yQ,SAAS5vO,GAGlB,IAAIyxO,EAAWzxO,EAAKisO,SACpBjsO,EAAKisO,SAAW,GAChBpI,EAAMzlQ,QAAQqzQ,GAAU,SAASv0C,GAC7BpgO,KAAK2zQ,gBAAgBvzC,KACtBpgO,OAMPoyQ,eAAgB,WACZ,IAAI7qQ,EACJ,IAAKA,EAAI,EAAGA,EAAIvH,KAAK+rD,MAAMvkD,SAAUD,EACjCvH,KAAK+rD,MAAMxkD,GAAGwR,MAAQxR,EAG1B,IAAKA,EAAI,EAAGA,EAAIvH,KAAKkvQ,MAAM1nQ,SAAUD,EACjCvH,KAAKkvQ,MAAM3nQ,GAAGwR,MAAQxR,GAO9BJ,MAAO,SAASytQ,GACZ,IAAI3tQ,EAAO,IAAIwqQ,EACXljO,EAAOw4N,EAAME,UAAU2N,KAAgC,IAAhBA,EACvCrmO,IACAtnC,EAAK4tQ,QAAU,IAAInG,EACnBznQ,EAAK6tQ,QAAU,IAAIpG,GAGvB,IAAIp0P,EAAM,IAAIo0P,EAoBd,OAnBA3H,EAAMzlQ,QAAQtB,KAAK+rD,OAAO,SAASgpN,GAC/B,IAAIC,EAAQD,EAAU5tQ,QACtBmT,EAAIkV,IAAIulP,EAAWC,GACnB/tQ,EAAK6rQ,SAASkC,GAEVzmO,GACAtnC,EAAK4tQ,QAAQrlP,IAAIwlP,EAAOD,MAIhChO,EAAMzlQ,QAAQtB,KAAKkvQ,OAAO,SAAS+F,GAC/B,GAAI36P,EAAI2zP,YAAYgH,EAAa3nQ,SAAWgN,EAAI2zP,YAAYgH,EAAa3tQ,QAAS,CAC9E,IAAI4tQ,EAAWjuQ,EAAKksQ,QAAQ74P,EAAIiV,IAAI0lP,EAAa3nQ,QAASgN,EAAIiV,IAAI0lP,EAAa3tQ,SAC3EinC,GACAtnC,EAAK6tQ,QAAQtlP,IAAI0lP,EAAUD,OAKhChuQ,GAQXkuQ,UAAW,SAASC,GAChB,OAAO3D,EAAM1K,MAAMoO,UAAUn1Q,KAAMo1Q,IAQvCC,oBAAqB,SAASrD,EAAWhlO,GACrC,GAAI+5N,EAAMG,YAAY8K,GAClB,KAAM,sCAEV,GAAIjL,EAAMG,YAAYl6N,GAClB,KAAM,gCAEV,IAAKhtC,KAAKyzQ,QAAQzB,GACd,KAAM,iDAEV,IAAIsD,EAAYt1Q,KAAK6zQ,QAAQ7B,GAE7BhyQ,KAAKu1Q,aAAaD,EAAWtoO,EADf,KAIlBuoO,aAAc,SAASryO,EAAM8J,EAAQilO,GAEjCjlO,EAAO9J,GACP+uO,EAAQtwQ,KAAKuhC,GAEb,IADA,IAAIiS,EAAWjS,EAAK0sO,cACXroQ,EAAI,EAAG8oB,EAAM8kB,EAAS3tC,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACjD,IAAIm8B,EAAQyR,EAAS5tC,GACjB4tB,EAAS88O,EAASvuO,IAGtB1jC,KAAKu1Q,aAAa7xO,EAAOsJ,EAAQilO,KASzCuD,sBAAuB,SAASxD,EAAWhlO,GAEvC,GAAI+5N,EAAMG,YAAY8K,GAClB,KAAM,sCAEV,GAAIjL,EAAMG,YAAYl6N,GAClB,KAAM,gCAGV,IAAKhtC,KAAKyzQ,QAAQzB,GACd,KAAM,iDAEV,IAAIsD,EAAYt1Q,KAAK6zQ,QAAQ7B,GACzBhrP,EAAQ,IAAI+nP,EACZkD,EAAU,GAGd,IAFAjrP,EAAMgoP,QAAQsG,GAEPtuP,EAAMxf,OAAS,GAAG,CACrB,IAAI07B,EAAOlc,EAAMI,UACjB4lB,EAAO9J,GACP+uO,EAAQtwQ,KAAKuhC,GAEb,IADA,IAAIiS,EAAWjS,EAAK0sO,cACXroQ,EAAI,EAAG8oB,EAAM8kB,EAAS3tC,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACjD,IAAIm8B,EAAQyR,EAAS5tC,GACjB4tB,EAAS88O,EAASvuO,IAAUvO,EAASnO,EAAO0c,IAGhD1c,EAAMgoP,QAAQtrO,MAiB1B+xO,6BAA8B,SAASC,EAAoBxyO,EAAMk4I,EAASu6F,EAAUC,EAAW1jI,EAAOn5H,GAClGqiK,EAAQnuK,IAAIi2B,EAAMnqB,GAClB48P,EAAS1oQ,IAAIi2B,EAAMnqB,GACnBA,IAEAm5H,EAAMvwI,KAAKuhC,GAGX,IADA,IAAmCmiC,EAA/BlwB,EAAWjS,EAAK0sO,cACXroQ,EAAI,EAAG8oB,EAAM8kB,EAAS3tC,OAAQD,EAAI8oB,EAAK9oB,IAC5C89D,EAAOlwB,EAAS5tC,GACX6zK,EAAQ6yF,YAAY5oM,GAIhBlwC,EAAS+8G,EAAO7sE,IACrBswM,EAAS1oQ,IAAIi2B,EAAM7/B,KAAK8S,IAAIw/P,EAASpmP,IAAI2T,GAAOk4I,EAAQ7rJ,IAAI81C,MAJ5DrlE,KAAKy1Q,6BAA6BC,EAAoBrwM,EAAM+1G,EAASu6F,EAAUC,EAAW1jI,EAAOn5H,GACjG48P,EAAS1oQ,IAAIi2B,EAAM7/B,KAAK8S,IAAIw/P,EAASpmP,IAAI2T,GAAOyyO,EAASpmP,IAAI81C,MAOrE,GAAIswM,EAASpmP,IAAI2T,KAAUk4I,EAAQ7rJ,IAAI2T,GAAO,CAC1C,IAAI2yO,EAAY,GAChB,GACIxwM,EAAO6sE,EAAM7iH,MACbwmP,EAAUl0Q,KAAK0jE,SAEZA,IAASniC,KACXwyO,GAAuBG,EAAUruQ,OAAS,IAC3CouQ,EAAUj0Q,KAAKk0Q,KAW3BC,WAAY,SAASJ,GACb3O,EAAMG,YAAYwO,KAClBA,GAAqB,GAMzB,IAJA,IAAIt6F,EAAU,IAAIszF,EACdiH,EAAW,IAAIjH,EACfkH,EAAY,GACZ1jI,EAAQ,GACH3qI,EAAI,EAAG8oB,EAAMrwB,KAAK+rD,MAAMvkD,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACnD,IAAI27B,EAAOljC,KAAK+rD,MAAMxkD,GAClB6zK,EAAQ6yF,YAAY/qO,IAGxBljC,KAAKy1Q,6BAA6BC,EAAoBxyO,EAAMk4I,EAASu6F,EAAUC,EAAW1jI,EAAO,GAErG,OAAO0jI,GAOXG,UAAW,WACP,OAAOhP,EAAMpmF,QAAQ3gL,KAAK81Q,eAO9BE,WAAY,SAAS/lJ,GACjB,IAAIgmJ,EAAahmJ,EAAMklJ,YACnBe,EAAYl2Q,KAAKm1Q,YACrB,OAAOpO,EAAMh3L,IAAIkmM,GAAY,SAAShxQ,GAClC,OAAOkwB,EAAS+gP,EAAWjxQ,OAQnCkxQ,YAAa,WAET,GAAIn2Q,KAAK2gL,WAAa3gL,KAAK+rD,MAAMvkD,QAAU,GAAKxH,KAAKkvQ,MAAM1nQ,QAAU,EACjE,MAAO,GAGX,GAAyB,GAArBxH,KAAK+rD,MAAMvkD,OAAa,CACxB,IAAI+O,EAAS,GACb,GAAIvW,KAAKkvQ,MAAM1nQ,OAAS,EAGpB,IAFA,IACI4uQ,EADUp2Q,KAAKkvQ,MAAM,GACH5hQ,OACb/F,EAAI,EAAG8oB,EAAMrwB,KAAKkvQ,MAAM1nQ,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACnD,IAAI64N,EAAOpgO,KAAKkvQ,MAAM3nQ,GACtB,GAAI64N,EAAK9yN,QAAU8oQ,EAAnB,CAGA,IAAIC,EAAMj2C,EAAKtqN,UACfS,EAAO5U,KAAK00Q,IAGpB,OAAO9/P,EAGX,IAAItP,EAAOjH,KAAKmH,OAAM,GAClBqzO,EAAIx6O,KAAK+rD,MAAMvkD,OAEf8uQ,EAAmB,IAAI5H,EAQvB6H,EAAgB,SAASrzO,GACzB,OAA6B,IAAzBA,EAAKisO,SAAS3nQ,OACN,EAAIgzO,EAEkB,IAAzBt3M,EAAKksO,SAAS5nQ,OACXgzO,EAAI,EAGLt3M,EAAKisO,SAAS3nQ,OAAS07B,EAAKksO,SAAS5nQ,QAShDgvQ,EAAwB,SAAStzO,EAAMozO,GACvC,IAAIG,EAAYF,EAAcrzO,GACzBozO,EAAiBrI,YAAYwI,IAC9BH,EAAiB9mP,IAAIinP,EAAW,IAEpCH,EAAiB/mP,IAAIknP,GAAW90Q,KAAKuhC,IAGzC6jO,EAAMzlQ,QAAQ2F,EAAK8kD,OAAO,SAASt6C,GAC/B+kQ,EAAsB/kQ,EAAG6kQ,MAM7B,IAHA,IAAII,EAAc,GACdC,EAAc,GAEX1vQ,EAAK8kD,MAAMvkD,OAAS,GAAG,CAC1B,IAAI8F,EAAQhG,EAAQmvQ,EACpB,GAAIH,EAAiBrI,YAAY,EAAIzzB,GAEjC,IADA,IAAI5vJ,EAAU0rL,EAAiB/mP,IAAI,EAAIirN,GAChC5vJ,EAAQpjF,OAAS,GAAG,CACvBF,EAASsjF,EAAQv7D,MACjB,IAAK,IAAI4pI,EAAK,EAAGA,EAAK3xJ,EAAO4nQ,MAAM1nQ,OAAQyxJ,IAAM,CAC7C,IAAI29G,EAAatvQ,EAAO4nQ,MAAMj2G,GAC9B3rJ,EAASspQ,EAAWjH,cAAcroQ,GAClCmvQ,EAAYF,EAAcjpQ,GAC1By5P,EAAMhwO,OAAOu/O,EAAiB/mP,IAAIknP,GAAYnpQ,GAC9CA,EAAO0iQ,WAAW4G,GAClBJ,EAAsBlpQ,EAAQgpQ,GAElCrvQ,EAAKmtQ,YAAY9sQ,GACjBqvQ,EAAYxsQ,QAAQ7C,GAK5B,GAAIgvQ,EAAiBrI,YAAYzzB,EAAI,GAEjC,IADA,IAAIq8B,EAAUP,EAAiB/mP,IAAIirN,EAAI,GAChCq8B,EAAQrvQ,OAAS,GAAG,CACvB8F,EAASupQ,EAAQxnP,MACjB,IAAK,IAAIynP,EAAK,EAAGA,EAAKxpQ,EAAO4hQ,MAAM1nQ,OAAQsvQ,IAAM,CAC7C,IAAIC,EAAazpQ,EAAO4hQ,MAAM4H,GAC9BxvQ,EAASyvQ,EAAWpH,cAAcriQ,GAClCmpQ,EAAYF,EAAcjvQ,GAC1By/P,EAAMhwO,OAAOu/O,EAAiB/mP,IAAIknP,GAAYnvQ,GAC9CA,EAAO0oQ,WAAW+G,GAClBP,EAAsBlvQ,EAAQgvQ,GAElCI,EAAY/0Q,KAAK2L,GACjBrG,EAAKmtQ,YAAY9mQ,GAIzB,GAAIrG,EAAK8kD,MAAMvkD,OAAS,EACpB,IAAK,IAAI1C,EAAI01O,EAAI,EAAG11O,EAAI,EAAI01O,EAAG11O,IAC3B,GAAIwxQ,EAAiBrI,YAAYnpQ,IAC7BwxQ,EAAiB/mP,IAAIzqB,GAAG0C,OAAS,EAAG,CAGpC,IAFA,IACIiK,EADU6kQ,EAAiB/mP,IAAIzqB,GACnBuqB,MACP0iI,EAAK,EAAGA,EAAKtgJ,EAAEy9P,MAAM1nQ,OAAQuqJ,IAAM,CACxC,IAAIilH,EAAMvlQ,EAAEy9P,MAAMn9G,GACdh9I,EAAIiiQ,EAAIrH,cAAcl+P,GAC1BglQ,EAAYF,EAAcxhQ,GAC1BgyP,EAAMhwO,OAAOu/O,EAAiB/mP,IAAIknP,GAAY1hQ,GAC9CA,EAAEi7P,WAAWgH,GACbR,EAAsBzhQ,EAAGuhQ,GAE7BI,EAAY/0Q,KAAK8P,GACjBxK,EAAKmtQ,YAAY3iQ,GACjB,OAMhBilQ,EAAcA,EAAYr5P,OAAOs5P,GAGjC,IADA,IAAIM,EAAc,IAAIvI,EACbwI,EAAK,EAAGA,EAAKl3Q,KAAK+rD,MAAMvkD,OAAQ0vQ,IACrCD,EAAYznP,IAAIvoB,EAAK4tQ,QAAQtlP,IAAImnP,EAAYQ,IAAMA,GAGvD,IAAIC,EAAgB,GAOpB,OANApQ,EAAMzlQ,QAAQtB,KAAKkvQ,OAAO,SAAS9uC,GAC3B62C,EAAY1nP,IAAI6wM,EAAK9yN,QAAU2pQ,EAAY1nP,IAAI6wM,EAAK94N,UACpD84N,EAAKtqN,UACLqhQ,EAAcx1Q,KAAKy+N,OAGpB+2C,KAOf1F,EAAM2F,WAAa,CAMfC,WAAY,WACR,OAAO5F,EAAM1K,MAAM/xO,MAAM,CAAE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAQvFsiP,QAAS,WACL,OAAO7F,EAAM1K,MAAM/xO,MAAM,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAChH,SAAU,SAAU,QAAS,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAAS,SAAU,SAAU,WAQvIuiP,WAAY,WACR,OAAO9F,EAAM1K,MAAM/xO,MAAM,CAAE,OAAQ,OAAQ,UAS/CwiP,WAAY,SAASC,GAIjB,OAHI1Q,EAAMG,YAAYuQ,KAClBA,EAAS,GAENhG,EAAM1K,MAAM2Q,mBAAmBD,EAAQ,IASlDE,OAAQ,SAASnwQ,GAIb,OAHIu/P,EAAMG,YAAY1/P,KAClBA,EAAS,IAENiqQ,EAAM1K,MAAM2Q,mBAAmBlwQ,EAAQ,IAalDowQ,KAAM,SAASH,EAAQI,GACnB,OAAOpG,EAAM1K,MAAM2Q,mBAAmBD,EAAQI,IAclDC,OAAQ,SAASL,EAAQI,EAAeE,GACpC,OAAOtG,EAAM1K,MAAMiR,qBAAqBP,EAAQI,EAAeE,IAQnEE,SAAU,WACN,OAAOxG,EAAM1K,MAAM/xO,MACf,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,UAYjFkjP,KAAM,SAASpnJ,EAAG9rH,GACd,IAAI6P,EAAI,IAAI66K,EAAQ+hF,MACpB,GAAI3gJ,GAAK,GAAK9rH,GAAK,EACf,OAAO6P,EAGX,IAAK,IAAItN,EAAI,EAAGA,EAAIupH,EAAI,EAAGvpH,IAEvB,IADA,IAAIixC,EAAW,KACN7N,EAAI,EAAGA,EAAI3lC,EAAI,EAAG2lC,IAAK,CAE5B,IAAIzH,EAAO,IAAI8mC,EAAKziE,EAAE2J,WAAa,IAAMy5B,EAAEz5B,YAK3C,GAJA2D,EAAEi/P,QAAQ5wO,GACNsV,GACA3jC,EAAEs+P,QAAQ36N,EAAUtV,GAEpB37B,EAAI,EAAG,CACP,IAAIskB,EAAOhX,EAAEg/P,SAAStsQ,EAAI,GAAG2J,WAAa,IAAMy5B,EAAEz5B,YAClD2D,EAAEs+P,QAAQtnP,EAAMqX,GAEpBsV,EAAWtV,EAGnB,OAAOruB,IAQf48P,EAAM1K,MAAQ,CAMV/xO,MAAO,SAASmjP,GAGZ,IADA,IAAIC,EAAcC,EAAQ,IAAI3oF,EAAQ+hF,MAASzhQ,EAAQmoQ,EAAYvxQ,QAC1DW,EAAI,EAAG8oB,EAAMrgB,EAAMxI,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAC9C,IAAImD,EAAOsF,EAAMzI,GACjB,GAAIw/P,EAAMn+P,SAAS8B,GACnB,CACI,GAAIA,EAAKiL,QAAQ,MAAQ,EACrB,KAAM,0CAEV,IAAIo7G,EAAIrmH,EAAKE,MAAM,MACnB,GAAgB,GAAZmmH,EAAEvpH,OACF,KAAM,0CAEV4wQ,EAAe,IAAI7H,EAAKx/I,EAAE,GAAIA,EAAE,IAChCsnJ,EAAMlF,QAAQiF,GAElB,GAAIrR,EAAM5nG,SAASz0J,GAAO,CACtB,IAAK0tQ,EACD,KAAM,8CAEVz3Q,EAAM6H,WAAW4vQ,EAAc1tQ,IAGvC,OAAO2tQ,GAOXlD,UAAW,SAASkD,EAAOjD,GACvB,GAAIrO,EAAMG,YAAYmR,GAClB,KAAM,sDAENtR,EAAMG,YAAYkO,KAClBA,GAAS,GAGb,IADA,IAAIkD,EAAM,GACD/wQ,EAAI,EAAG8oB,EAAMgoP,EAAMnJ,MAAM1nQ,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACpD,IAAI64N,EAAOi4C,EAAMnJ,MAAM3nQ,GACvB+wQ,EAAI32Q,KAAKy+N,EAAK9yN,OAAOqiB,GAAK,KAAOywM,EAAK94N,OAAOqoB,IACzCylP,GACAkD,EAAI32Q,KAAK,CAAEguB,GAAIywM,EAAKzwM,KAG5B,OAAO2oP,GAYXC,UAAW,SAASC,EAAcznJ,EAAGphG,EAAIs/J,GAqBrC,OApBI83E,EAAMG,YAAYn2I,KAClBA,EAAI,IAAI2+D,EAAQ11D,MAAM,EAAG,IAGzB+sI,EAAMG,YAAYv3O,KAClBA,EAAKw9O,KAGTl+E,EAAgBtuL,EAAM6H,WAAW,CAC7BwE,MAAO,GACPL,OAAQ,GACRgjB,GAAIA,EACJhE,OAAQ,GACRsH,KAAM,UACNplB,KAAM,SACN4qQ,UAAU,EACVrzQ,EAAG2rH,EAAE3rH,EACLjB,EAAG4sH,EAAE5sH,GACN8qL,GAEIupF,EAAaE,SAASzpF,IAWjC0pF,eAAgB,SAASjpF,EAASvxJ,EAAMC,EAAIl3B,GACxC,OAAOwoL,EAAQkpF,QAAQz6O,EAAMC,EAAIl3B,IAQrC2xQ,uBAAwB,SAASnpF,EAAS2oF,EAAOS,EAAUC,GAEvD,GAAIhS,EAAMG,YAAYx3E,GAClB,KAAM,oCAEV,GAAIq3E,EAAMG,YAAYmR,GAClB,KAAM,kCAENtR,EAAMG,YAAY4R,KAClBA,GAAW,GAEX/R,EAAMG,YAAY6R,KAClBA,GAAa,GAMjB,IAHA,IAEc71O,EAAM+8G,EAFhBjzI,EAAQ0iL,EAAQ7jL,QAAQsY,aAAe,IACvCxX,EAAS+iL,EAAQ7jL,QAAQqY,cAAgB,IACzC5J,EAAM,GACD/S,EAAI,EAAG8oB,EAAMgoP,EAAMtsN,MAAMvkD,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAEpD,IAAIwpH,GADJ7tF,EAAOm1O,EAAMtsN,MAAMxkD,IACNuF,SACTi6P,EAAMG,YAAYn2I,KAEdA,EADAg2I,EAAME,UAAU/jO,EAAK99B,IAAM2hQ,EAAME,UAAU/jO,EAAK/+B,GAC5C,IAAI61H,EAAM92F,EAAK99B,EAAG89B,EAAK/+B,GAGvB,IAAI61H,EAAM+sI,EAAMW,cAAc,GAAI16P,EAAQ,IAAK+5P,EAAMW,cAAc,GAAI/6P,EAAS,MAG5F,IAAIsxP,EAAM,GAEM,MAAZ/6N,EAAKvT,IAUAopP,GACLp4Q,EAAM6H,WAAWy1P,EAAK,CAClBjxP,MAAuB,IAAhB3J,KAAKqsB,SAAiB,GAC7B/iB,OAAwB,GAAhBtJ,KAAKqsB,SAAgB,GAC7B7hB,KAAM,YACNolB,KAAM,CACFm8F,MAAO,aAQnB,IAAIs2I,GAHJzlH,EAAQjgJ,KAAKu4Q,UAAU7oF,EAAS3+D,EAAG7tF,EAAKvT,GAAIsuO,IAGzByH,SACfqB,EAAME,UAAUvB,KAChBxiO,EAAK99B,EAAIsgQ,EAAOtgQ,EAChB89B,EAAK/+B,EAAIuhQ,EAAOvhQ,EAChB++B,EAAKl2B,MAAQ04P,EAAO14P,MACpBk2B,EAAKv2B,OAAS+4P,EAAO/4P,QAEzB2N,EAAI4oB,EAAKvT,IAAMswH,EAEnB,IAAK,IAAI+4H,EAAM,EAAGA,EAAMX,EAAMnJ,MAAM1nQ,OAAQwxQ,IAAO,CAC/C,IAAI54C,EAAOi4C,EAAMnJ,MAAM8J,GACnBC,EAAc3+P,EAAI8lN,EAAK9yN,OAAOqiB,IAClC,IAAIo3O,EAAMG,YAAY+R,GAAtB,CAGA,IAAIC,EAAc5+P,EAAI8lN,EAAK94N,OAAOqoB,IAC9Bo3O,EAAMG,YAAYgS,IAGtBl5Q,KAAK24Q,eAAejpF,EAASupF,EAAaC,EAAa,CAAEvpP,GAAIywM,EAAKzwM,MAGtE,GAAImpP,EAAU,CACF,IAAIppF,EAAQypF,aAAazpF,GAC/B0pF,YAAYf,EAAO,CAAEgB,aAAa,IACpC,IAAK,IAAIC,EAAM,EAAGA,EAAMjB,EAAMtsN,MAAMvkD,OAAQ8xQ,KAExCr5H,EAAQ3lI,GADR4oB,EAAOm1O,EAAMtsN,MAAMutN,IACF3pP,KACX+1O,OAAO,IAAIxqI,EAAKh4F,EAAK99B,EAAG89B,EAAK/+B,EAAG++B,EAAKl2B,MAAOk2B,EAAKv2B,WAcnE+qQ,mBAAoB,SAASD,EAAQI,GAC7B9Q,EAAMG,YAAYuQ,KAClBA,EAAS,GAET1Q,EAAMG,YAAY2Q,KAClBA,EAAgB,GAGpB,IAA2D0B,EAAvD1kQ,EAAI,IAAI66K,EAAQ+hF,MAAS+H,GAAW,EAAGC,EAAY,GACvD,GAAIhC,GAAU,GAAKI,GAAiB,EAChC,OAAOhjQ,EAEX,IAAI4oC,EAAO,IAAIusB,KAAQwvM,GAAStoQ,YAChC2D,EAAEi/P,QAAQr2N,GACV5oC,EAAE4oC,KAAOA,EACTg8N,EAAU93Q,KAAK87C,GACf,IAAK,IAAIl2C,EAAI,EAAGA,EAAIkwQ,EAAQlwQ,IAAK,CAC7BgyQ,EAAO,GACP,IAAK,IAAI5uO,EAAI,EAAGA,EAAI8uO,EAAUjyQ,OAAQmjC,IAElC,IADA,IAAIx+B,EAASstQ,EAAU9uO,GACd7lC,EAAI,EAAGA,EAAI+yQ,EAAe/yQ,IAAK,CACpC,IAAIkqC,EAAO,IAAIg7B,KAAQwvM,GAAStoQ,YAChC2D,EAAEs+P,QAAQhnQ,EAAQ6iC,GAClBuqO,EAAK53Q,KAAKqtC,GAGlByqO,EAAYF,EAEhB,OAAO1kQ,GAaXmjQ,qBAAsB,SAASP,EAAQI,EAAe6B,GAC9C3S,EAAMG,YAAYuQ,KAClBA,EAAS,GAET1Q,EAAMG,YAAY2Q,KAClBA,EAAgB,GAEhB9Q,EAAMG,YAAYwS,KAClBA,EAAY,GAEhB,IAA2DH,EAAvD1kQ,EAAI,IAAI66K,EAAQ+hF,MAAS+H,GAAW,EAAGC,EAAY,GACvD,GAAIhC,GAAU,GAAKI,GAAiB,GAAK6B,GAAa,EAClD,OAAO7kQ,EAGX,IAAK,IAAI1P,EAAI,EAAGA,EAAIu0Q,EAAWv0Q,IAAK,CAChC,IAAIs4C,EAAO,IAAIusB,KAAQwvM,GAAStoQ,YAChC2D,EAAEi/P,QAAQr2N,GACVg8N,EAAY,CAACh8N,GACb,IAAK,IAAIl2C,EAAI,EAAGA,EAAIkwQ,EAAQlwQ,IAAK,CAC7BgyQ,EAAO,GACP,IAAK,IAAI5uO,EAAI,EAAGA,EAAI8uO,EAAUjyQ,OAAQmjC,IAElC,IADA,IAAIx+B,EAASstQ,EAAU9uO,GACd7lC,EAAI,EAAGA,EAAI+yQ,EAAe/yQ,IAAK,CACpC,IAAIkqC,EAAO,IAAIg7B,KAAQwvM,GAAStoQ,YAChC2D,EAAEs+P,QAAQhnQ,EAAQ6iC,GAClBuqO,EAAK53Q,KAAKqtC,GAGlByqO,EAAYF,GAGpB,OAAO1kQ,GAUX8kQ,2BAA4B,SAASC,EAAWC,EAAcC,GAWtD/S,EAAMG,YAAY0S,KAClBA,EAAY,IAEZ7S,EAAMG,YAAY2S,KAClBA,EAAe,GAEf9S,EAAMG,YAAY4S,KAClBA,GAAS,GAGb,IAAIjlQ,EAAI,IAAI66K,EAAQ+hF,MAAS+H,GAAW,EACxC,GAAII,GAAa,EACb,OAAO/kQ,EAGX,IAAI4oC,EAAO,IAAIusB,KAAQwvM,GAAStoQ,YAEhC,GADA2D,EAAEi/P,QAAQr2N,GACQ,IAAdm8N,EACA,OAAO/kQ,EAEX,GAAI+kQ,EAAY,EAAG,CAEf,IAAK,IAAIryQ,EAAI,EAAGA,EAAIqyQ,EAAWryQ,IAAK,CAChC,IAAIwyQ,EAAWllQ,EAAEw+P,eAAe,GAAIwG,GACpC,IAAKE,EAED,MAEJ,IAAIrF,EAAU7/P,EAAEi/P,QAAQvsQ,EAAE2J,YAC1B2D,EAAEs+P,QAAQ4G,EAAUrF,GAExB,IAAKoF,GAAUF,EAAY,EAEvB,IADA,IAAII,EAAkBjT,EAAMW,cAAc,EAAGkS,GACpC7nH,EAAK,EAAGA,EAAKioH,EAAiBjoH,IAAM,CACzC,IAAIwiH,EAAK1/P,EAAEw+P,eAAe,GAAIwG,GAC1BrF,EAAK3/P,EAAEw+P,eAAe,GAAIwG,GAC1BtF,GAAMC,IAAO3/P,EAAEy/P,aAAaC,EAAIC,IAChC3/P,EAAEs+P,QAAQoB,EAAIC,GAI1B,OAAO3/P,IAYfolQ,cAAe,SAASvqF,EAASwqF,EAAYL,EAAcC,EAAQf,GAC/D,IAAIlkQ,EAAIlU,EAAMmpB,QAAQ4lK,QAAQ+hF,MAAM1K,MAAM4S,2BAA2BO,EAAYL,EAAcC,GAC/FrI,EAAM1K,MAAM8R,uBAAuBnpF,EAAS76K,GAAG,EAAOkkQ,KAI9Dp4Q,EAAM6H,WAAWknL,EAAS,CACtBvnL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAAS6jL,EAAQ/lK,KAGhCqwG,MAAOA,EACP0xI,UAAWA,EACX0B,SAAUA,EACVlyI,KAAMA,EACND,KAAMA,EACN6wI,UAAWA,EACX/zI,OAAQA,EACRk1I,aAAcA,EACdkN,eAl2EJ,SAAwB3uF,EAAMyI,GAC1B,IAAI7uL,EAAGjB,EAAGksH,EACV,GAGIA,GAFAjrH,EAAoB,EAAhB/B,KAAKqsB,SAAe,GAEhBtqB,GADRjB,EAAoB,EAAhBd,KAAKqsB,SAAe,GACRvrB,SAEZksH,GAAKA,EAAI,GACjB,OAAOm7D,EAAOyI,EAAY7uL,EAAI/B,KAAKo6E,MAAM,EAAIp6E,KAAKotB,IAAI4/F,GAAKA,IA21E3D88I,SAAUA,EACVuB,WAAYA,EACZb,UAAWA,EACXkB,MAAOA,EACP3tG,IAAKA,EACLp3F,KAAMA,EACNumM,KAAMA,EACNkB,MAAOA,EACP9G,YAAaA,IAlhGrB,CAohGG7pQ,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAET,IAAIjC,EAAQG,OAAOH,MACf+uL,EAAU/uL,EAAMmpB,QAAQ4lK,QACxB9nL,EAAQjH,EAAMiH,MACdY,EAAa7H,EAAM6H,WACnBwxH,EAAQ01D,EAAQ11D,MAChBkB,EAAOw0D,EAAQx0D,KACfnD,EAAS23D,EAAQ33D,OACjBgvI,EAAQr3E,EAAQq3E,MAChBjyM,EAAWiyM,EAAMjyM,SACjBlsD,EAAWm+P,EAAMn+P,SACjBqkQ,EAAev9E,EAAQu9E,aAEvBp4P,EAAIlU,EAAMi/H,SACVp7H,EAAI7D,EAAMopB,QAEVirG,EAAUxwH,EAAEmhH,KAAKqP,QAEjB3/F,EAAU1yB,EAAE0yB,QAGZ41J,EAAc,cACdmvF,EAAU,CACNC,KAAM,OACNC,WAAY,aACZC,aAAc,eACdC,SAAU,YAGdx+L,EAAQ,QACRnxD,EAAM,MACNumB,EAAQ,QACRC,EAAS,SAMb,SAASopO,EAAmBvzQ,EAAS0nB,GAIjC,IAHA,IAEIlmB,EAAOuc,EAFP+pN,EAAiBhvO,KAAKkH,QACtBk4D,GAAa,EAER73D,EAAI,EAAGA,EAAIqnB,EAAOpnB,OAAQD,IAE/BmB,EAAQxB,EADR+d,EAAQ2J,EAAOrnB,IAEXutD,EAASpsD,IAAUsmO,EAAe/pN,KAAWvc,IAC7CsmO,EAAe/pN,GAASvc,EACxB02D,GAAa,GAIrB,OAAOA,EAfXswH,EAAQ0qF,QAAUA,EAkBlB,IAAIM,EAAQ9yQ,EAAM7E,OAAO,CACrBoF,KAAM,SAAS/C,EAAGjB,GACdnE,KAAKoF,EAAIA,EACTpF,KAAKmE,EAAIA,GAEb41H,SAAU,WACN,OAAOhC,EAAOg1I,QAAQ/sQ,KAAKoF,EAAGpF,KAAKmE,IAEvC+M,SAAU,WACN,OAAOvQ,EAAM+P,OAAO,iBAAkB1Q,KAAKoF,EAAGpF,KAAKmE,IAEvD+zH,OAAQ,WACJ,OAAO,IAAIwiJ,EAAM,EAAI16Q,KAAKoF,EAAG,EAAIpF,KAAKmE,MAI1Cw2Q,EAAc/yQ,EAAM7E,OAAO,CAC3BoF,KAAM,SAAS/C,EAAGjB,GACdnE,KAAKoF,EAAIA,EACTpF,KAAKmE,EAAIA,GAEby2Q,eAAgB,WACZ,OAAO,IAAI3N,EAAa,EAAG,EAAG,EAAG,EAAGjtQ,KAAKoF,EAAGpF,KAAKmE,IAErD41H,SAAU,WACN,OAAOhC,EAAO+0I,YAAY9sQ,KAAKoF,EAAGpF,KAAKmE,IAE3C+M,SAAU,WACN,OAAOvQ,EAAM+P,OAAO,qBAAsB1Q,KAAKoF,EAAGpF,KAAKmE,IAE3DylQ,KAAM,SAAShlO,GACX5kC,KAAKoF,GAAKw/B,EAAMx/B,EAChBpF,KAAKmE,GAAKygC,EAAMzgC,GAEpB2lQ,MAAO,SAASK,GACZnqQ,KAAKoF,GAAK+kQ,EACVnqQ,KAAKmE,GAAKgmQ,GAEd3iQ,OAAQ,WACJ,OAAOnE,KAAKo6E,KAAKz9E,KAAKoF,EAAIpF,KAAKoF,EAAIpF,KAAKmE,EAAInE,KAAKmE,IAErD85C,UAAW,WACa,IAAhBj+C,KAAK66Q,QAGT76Q,KAAK8pQ,MAAM,EAAI9pQ,KAAKwH,WAExB0wH,OAAQ,WACJ,OAAO,IAAIyiJ,GAAa36Q,KAAKoF,GAAIpF,KAAKmE,MAI1C22Q,EAAWlzQ,EAAM7E,OAAO,CACxBoF,KAAM,SAASmwH,EAAOlzH,EAAGjB,GACrBnE,KAAKoF,EAAIA,GAAK,EACdpF,KAAKmE,EAAIA,GAAK,EACdnE,KAAKs4H,MAAQA,GAEjBpnH,SAAU,WACN,OAAIlR,KAAKoF,GAAKpF,KAAKmE,EACRxD,EAAM+P,OAAO,sBAAuB1Q,KAAKs4H,MAAOt4H,KAAKoF,EAAGpF,KAAKmE,GAE7DxD,EAAM+P,OAAO,cAAe1Q,KAAKs4H,QAGhDyB,SAAU,WACN,OAAOhC,EAAOp+E,SAAS35C,KAAKs4H,MAAOt4H,KAAKoF,EAAGpF,KAAKmE,IAEpDo5E,OAAQ,WACJ,OAAO,IAAIy8C,EAAMh6H,KAAKoF,EAAGpF,KAAKmE,IAElC+zH,OAAQ,WACJ,OAAO,IAAI4iJ,EAlGK,IAkGwB96Q,KAAKs4H,MAAOt4H,KAAKoF,EAAGpF,KAAKmE,MAIzE22Q,EAAS5nQ,KAAO,IAAI4nQ,EAAS,GAE7BA,EAAS9zN,OAAS,SAASrN,GACvB,OAAO,IAAImhO,EAASnhO,EAAS2+E,MAAO3+E,EAASv0C,EAAGu0C,EAASx1C,IAG7D22Q,EAAS9lP,MAAQ,SAASpmB,GACtB,IAAIkK,EAASlK,EAAIhI,MAAM,EAAGgI,EAAIpH,OAAS,GAAGoD,MAAM,KAC5C0tH,EAAQx/G,EAAO,GACf1T,EAAI0T,EAAO,GACX3U,EAAI2U,EAAO,GAEf,OADe,IAAIgiQ,EAASxiJ,EAAOlzH,EAAGjB,IAI1C,IAAI42Q,EAAqBnzQ,EAAM7E,OAAO,CAClCoF,KAAM,SAAS/C,EAAGjB,EAAGs0H,EAAQC,EAAQJ,EAAO/6C,GACxCv9E,KAAKgwC,UAAY,IAAI2qO,EAAYv1Q,EAAGjB,GAChCs0H,IAAW71H,GAAe81H,IAAW91H,IACrC5C,KAAK2vC,MAAQ,IAAI+qO,EAAMjiJ,EAAQC,IAE/BJ,IAAU11H,IACV5C,KAAK+wC,OAASwsC,EAAS,IAAIu9L,EAASxiJ,EAAO/6C,EAAOn4E,EAAGm4E,EAAOp5E,GAAK,IAAI22Q,EAASxiJ,KAGtFpnH,SAAU,WACN,IAAIA,EAAW,SAASqiC,GACpB,OAAOA,EAAYA,EAAUriC,WAAa,IAG9C,OAAOA,EAASlR,KAAKgwC,WACjB9+B,EAASlR,KAAK+wC,QACd7/B,EAASlR,KAAK2vC,QAGtB//B,OAAQ,SAASsuI,GACbA,EAAO88H,WAAah7Q,KACpBk+I,EAAO+8H,oBAGXlhJ,SAAU,WACN,IAAI/0H,EAAI+yH,EAAOM,OAWf,OATIr4H,KAAKgwC,YACLhrC,EAAIA,EAAE8kQ,MAAM9pQ,KAAKgwC,UAAU+pF,aAE3B/5H,KAAK+wC,SACL/rC,EAAIA,EAAE8kQ,MAAM9pQ,KAAK+wC,OAAOgpF,aAExB/5H,KAAK2vC,QACL3qC,EAAIA,EAAE8kQ,MAAM9pQ,KAAK2vC,MAAMoqF,aAEpB/0H,GAEXkzH,OAAQ,WACJ,IAAInnF,EAAS/wC,KAAK+wC,OAAS/wC,KAAK+wC,OAAOmnF,SAAWt1H,EAC9Cs4Q,EAAenqO,EAASA,EAAOgpF,WAAahC,EAAOM,OACnD1oF,EAAQ3vC,KAAK2vC,MAAQ3vC,KAAK2vC,MAAMuoF,SAAWt1H,EAC3Cu4Q,EAAcxrO,EAAQA,EAAMoqF,WAAahC,EAAOM,OAEhD+iJ,EAAiB,IAAIphJ,GAAOh6H,KAAKgwC,UAAU5qC,GAAIpF,KAAKgwC,UAAU7rC,GAClEi3Q,EAAiBF,EAAapR,MAAMqR,GAAa/yQ,MAAMgzQ,GACvD,IAAIprO,EAAY,IAAI2qO,EAAYS,EAAeh2Q,EAAGg2Q,EAAej3Q,GAE7DovC,EAAY,IAAIwnO,EAKpB,OAJAxnO,EAAUvD,UAAYA,EACtBuD,EAAUxC,OAASA,EACnBwC,EAAU5D,MAAQA,EAEX4D,KAIX8nO,EAAoB,CACpBC,UAAW,WACP,IAAIp0Q,EAAUlH,KAAKkH,QACfq0Q,EAAcv7Q,KAAKw7Q,aACnBC,EAAez7Q,KAAK07Q,cACpBjjJ,EAASvxH,EAAQ8F,MAAQuuQ,EACzB7iJ,EAASxxH,EAAQyF,OAAS8uQ,EAEzB3mN,EAAS2jE,KACVA,EAAS,GAER3jE,EAAS4jE,KACVA,EAAS,GAGb14H,KAAKg7Q,WAAWrrO,MAAQ,IAAI+qO,EAAMjiJ,EAAQC,IAG9CijJ,cAAe,WACX,IAAIz0Q,EAAUlH,KAAKkH,QACf9B,EAAI8B,EAAQ9B,GAAK,EACjBjB,EAAI+C,EAAQ/C,GAAK,EACrBnE,KAAKg7Q,WAAWhrO,UAAY,IAAI2qO,EAAYv1Q,EAAGjB,IAGnDy3Q,UAAW,WACP,IAAI10Q,EAAUlH,KAAKkH,QACfqsC,GAAY,GACS,IAArBrsC,EAAQ20Q,WAAuB7mJ,EAAQ9tH,EAAQ8F,QAAUgoH,EAAQ9tH,EAAQyF,WACzE3M,KAAK08J,UAAS,GACd18J,KAAKs7Q,YACL/nO,GAAY,IAGZyhF,EAAQ9tH,EAAQ9B,IAAM4vH,EAAQ9tH,EAAQ/C,MACtCnE,KAAK27Q,gBACLpoO,GAAY,GAGZA,GACAvzC,KAAKi7Q,oBAIba,YAAa,SAAS50Q,GAClB,IAAI6/C,GAAS,EAiBb,OAf8B,IAA1B/mD,KAAKkH,QAAQ20Q,UAAsB77Q,KAAK+7Q,oBAAoB70Q,EAAS,CAACkqC,EAAOC,MAC7E0V,GAAS,EACT/mD,KAAK08J,UAAS,GACd18J,KAAKs7Q,aAGLt7Q,KAAK+7Q,oBAAoB70Q,EAAS,CA/NtC,IACA,QA+NI6/C,GAAS,EACT/mD,KAAK27Q,iBAGL50N,GACA/mD,KAAKi7Q,mBAGFl0N,IAIX5/B,EAAUvf,EAAM7E,OAAO,CACvBoF,KAAM,SAASjB,GACX,IAAI2E,EAAU7L,KACd6L,EAAQ3E,QAAUsB,EAAW,GAAIqD,EAAQ3E,QAASA,GAClD2E,EAAQ8jB,GAAK9jB,EAAQ3E,QAAQyoB,GAC7B9jB,EAAQmwQ,YAAc9gJ,EAAK3uE,QAC3B1gD,EAAQmvQ,WAAa,IAAID,GAG7BzuQ,QAAS,SAAS5D,GACd,OAAO1I,KAAKi8Q,mBAAmB3vQ,QAAQ5D,IAG3CirM,OAAQ,SAASzsM,GACTA,GAAWA,EAAQyoB,KAClB3vB,KAAK2vB,GAAKzoB,EAAQyoB,KAI3B7iB,SAAU,SAAS1H,EAAGjB,GAClB,IAAI+C,EAAUlH,KAAKkH,QACnB,IAAK8tH,EAAQ5vH,GACV,OAAO,IAAI40H,EAAM9yH,EAAQ9B,EAAG8B,EAAQ/C,GAGnC6wH,EAAQ7wH,IACR+C,EAAQ9B,EAAIA,EACZ8B,EAAQ/C,EAAIA,GACLiB,aAAa40H,IACpB9yH,EAAQ9B,EAAIA,EAAEA,EACd8B,EAAQ/C,EAAIiB,EAAEjB,GAGlBnE,KAAKg7Q,WAAWhrO,UAAY,IAAI2qO,EAAYzzQ,EAAQ9B,EAAG8B,EAAQ/C,GAC/DnE,KAAKi7Q,oBAGTlqO,OAAQ,SAASunF,EAAO/6C,GAKpB,OAJIy3C,EAAQsD,KACRt4H,KAAKg7Q,WAAWjqO,OAAS,IAAI+pO,EAASxiJ,EAAO/6C,EAAOn4E,EAAGm4E,EAAOp5E,GAC9DnE,KAAKi7Q,oBAEFj7Q,KAAKg7Q,WAAWjqO,QAAU+pO,EAAS5nQ,MAG9C+oQ,iBAAkB,WACd,OAAOj8Q,KAAKk7N,gBAGhB+/C,iBAAkB,WACd,IAAIhjJ,EAASj4H,KAAKg7Q,WAAWjhJ,WAC7B/5H,KAAKi8Q,mBAAmB1oO,UAAU,IAAI1+B,EAAEkjH,OAAOE,EAAO/yH,EAAG+yH,EAAO9yG,EAAG8yG,EAAOvzH,EAAGuzH,EAAOzzH,EAAGyzH,EAAOtzH,EAAGszH,EAAO9qE,KAG5G+uN,OAAQ,aAERH,oBAAqBtB,EAErB/9G,SAAU,SAAS/qI,GACf,IAAI05D,EACJ,IAAKrrF,KAAKm8Q,WAAaxqP,EAAO,CAC1B,IAAIunB,EAAMl5C,KAAKo8Q,gBAAkB,IAAIvnQ,EAAEqmH,KACnCmH,EAAanpF,EAAIsiF,UACrBnwC,EAAO,IAAI6vC,EAAKmH,EAAWj9H,EAAGi9H,EAAWl+H,EAAG+0C,EAAIlsC,QAASksC,EAAIvsC,UAC7D3M,KAAKg8Q,YAAc3wL,EACnBrrF,KAAKw7Q,aAAenwL,EAAKr+E,MACzBhN,KAAK07Q,cAAgBrwL,EAAK1+E,OAC1B3M,KAAKm8Q,WAAY,OAEjB9wL,EAAOrrF,KAAKg8Q,YAEhB,OAAO3wL,GAGX+wL,aAAc,WACV,OAAOp8Q,KAAKk7N,eAAer7F,aAI/Bw8I,EAAal1P,EAAQpkB,OAAO,CAC5BoF,KAAM,SAASjB,GACXigB,EAAQpf,GAAGI,KAAKoC,KAAKvK,KAAMkH,IAE3BA,EAAUlH,KAAKkH,SACP+rB,KAAOqpP,EAAwBp1Q,EAAQ+rB,MAC/C/rB,EAAQ22H,OAASy+I,EAAwBp1Q,EAAQ22H,SAGrD32H,QAAS,CACL22H,OAAQ,CACJzO,MAAO,OACPpiH,MAAO,GAEXimB,KAAM,CACFm8F,MAAO67D,IAIfh4J,KAAM,SAASm8F,EAAOx4F,GAClB52B,KAAKu8Q,MAAM,CACPntJ,MAAOotJ,EAASptJ,GAChBx4F,QAASA,KAIjBinG,OAAQ,SAASzO,EAAOpiH,EAAO4pB,GAC3B52B,KAAKy8Q,QAAQ,CACTrtJ,MAAOotJ,EAASptJ,GAChBpiH,MAAOA,EACP4pB,QAASA,KAIjB+8K,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CACT,IAAI22H,EAAS32H,EAAQ22H,OACjB5qG,EAAO/rB,EAAQ+rB,KACf4qG,GACA79H,KAAKy8Q,QAAQH,EAAwBz+I,IAErC5qG,GACAjzB,KAAKu8Q,MAAMD,EAAwBrpP,IAGvC9L,EAAQpf,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,KAIrCg1Q,OAAQ,SAAShvQ,GACb,IAAIguN,EAAiBl7N,KAAKk7N,eACtBh0N,EAAUlH,KAAKkH,QACfgoL,EAAQhoL,EAAQgoL,MAEpB,GAAIA,GAASA,EAAMj8J,KAAM,CACrB,IAAIA,EAAO/lB,EAAOovQ,EAAwBptF,EAAMj8J,MAAQ/rB,EAAQ+rB,KAChEioM,EAAejoM,KAAKA,EAAKm8F,MAAOn8F,EAAK2D,WAI7C6lP,QAAS,SAASC,GACd,IAAIx1Q,EAAUlH,KAAKkH,QACnBsB,EAAWtB,EAAS,CAChB22H,OAAQ6+I,IAKZ,IAAI7+I,EAAS,MAFb6+I,EAAgBx1Q,EAAQ22H,QAGN7wH,MAAQ,IACtB6wH,EAAS,CACLzO,MAAOstJ,EAActtJ,MACrBpiH,MAAO0vQ,EAAc1vQ,MACrB4pB,QAAS8lP,EAAc9lP,QACvBolH,SAAU0gI,EAAc1gI,WAIhCh8I,KAAKk7N,eAAeh0N,QAAQsoB,IAAI,SAAUquG,IAG9C0+I,MAAO,SAASI,GACZ,IAAIz1Q,EAAUlH,KAAKkH,QACnBsB,EAAWtB,EAAS,CAChB+rB,KAAM0pP,GAAe,KAEzB,IAAI1pP,EAAO/rB,EAAQ+rB,KAEnB,GAAIA,EAAKgwH,SAAU,CACf,IAAIA,EAAWhwH,EAAKgwH,SAChB25H,EAAmC,WAAlB35H,EAASv9I,KAAoBlB,EAAE6uI,eAAiB7uI,EAAE4uI,eACvEpzI,KAAKk7N,eAAejoM,KAAK,IAAI2pP,EAAc35H,SAE3CjjJ,KAAKk7N,eAAejoM,KAAKA,EAAKm8F,MAAOn8F,EAAK2D,YAKlDimP,EAAYR,EAAWt5Q,OAAO,CAC9BoF,KAAM,SAASjB,GACXA,EAAUlH,KAAK88Q,WAAW51Q,GAC1Bm1Q,EAAWt0Q,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAE9BlH,KAAK+8Q,QACL/8Q,KAAKg9Q,YACLh9Q,KAAK47Q,aAGT10Q,QAAS,CACLupJ,SAAU,GACVG,WAAY,aACZ/yB,OAAQ,CACJ7wH,MAAO,GAEXimB,KAAM,CACFm8F,MAAO,SAEXysJ,UAAU,GAGdmB,UAAW,WACP,IAAI91Q,EAAUlH,KAAKkH,QAEnBlH,KAAKk7N,eAAiB,IAAI12N,EAAE0pI,KAAKlZ,EAAQ9tH,EAAQ05B,MAAQ15B,EAAQ05B,KAAO,GAAI,IAAI/rB,EAAEmlH,MAAS,CACvFjjC,KAAM7vF,EAAQ6vF,OAGlB/2F,KAAKu8Q,QACLv8Q,KAAKy8Q,WAGTK,WAAY,SAAS51Q,GAQjB,OAPIA,GAAWA,EAAQkoH,QACnBloH,EAAUsB,EAAW,GAAItB,EAAS,CAC9B+rB,KAAM,CACFm8F,MAAOloH,EAAQkoH,UAIpBloH,GAGX61Q,MAAO,WACH,IAAI71Q,EAAUlH,KAAKkH,QACnB,GAAIA,EAAQ0pJ,YAAc57B,EAAQ9tH,EAAQupJ,UAAW,CACjD,IAAIwsH,EAAc,GAEd/1Q,EAAQg2Q,WACRD,EAAYt7Q,KAAKuF,EAAQg2Q,WAGzBh2Q,EAAQi2Q,YACRF,EAAYt7Q,KAAKuF,EAAQi2Q,YAG7BF,EAAYt7Q,KAAKuF,EAAQupJ,UAAY37F,EAAS5tD,EAAQupJ,UAAY,KAAO,KACzEwsH,EAAYt7Q,KAAKuF,EAAQ0pJ,YAEzB1pJ,EAAQ6vF,KAAOkmL,EAAYpyQ,KAAK,iBAEzB3D,EAAQ6vF,MAIvBxwC,QAAS,SAAS3lB,GACd,OAAO5gC,KAAKk7N,eAAe30K,QAAQ3lB,IAGvC+yK,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CACT,IAAIk2Q,GAAc,EACdhyG,EAAcprK,KAAKkH,QAEvBA,EAAUlH,KAAK88Q,WAAW51Q,GAE1Bm1Q,EAAWt0Q,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,IAE5BA,EAAQ0pJ,YAAc57B,EAAQ9tH,EAAQupJ,WAAavpJ,EAAQg2Q,WAAah2Q,EAAQi2Q,cAChF30Q,EAAW4iK,EAAa,CACpBxa,WAAY1pJ,EAAQ0pJ,WACpBH,SAAUvpJ,EAAQupJ,SAClBysH,UAAWh2Q,EAAQg2Q,UACnBC,WAAYj2Q,EAAQi2Q,aAExBn9Q,KAAK+8Q,QACL/8Q,KAAKk7N,eAAeh0N,QAAQsoB,IAAI,OAAQ47I,EAAYr0E,MACpDqmL,GAAc,GAGdl2Q,EAAQ05B,OACR5gC,KAAKumD,QAAQr/C,EAAQ05B,MACrBw8O,GAAc,IAGbp9Q,KAAK87Q,YAAY50Q,IAAYk2Q,GAC9Bp9Q,KAAK47Q,gBAMrBpzQ,EAAWq0Q,EAAU90Q,GAAIszQ,GAEzB,IAAIgC,EAAYhB,EAAWt5Q,OAAO,CAC9BoF,KAAM,SAASjB,GACXm1Q,EAAWt0Q,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC9BlH,KAAKs9Q,YACLt9Q,KAAKu9Q,gBAGTA,aAAc,WACV,IAAIr2Q,EAAUlH,KAAKkH,QACf9B,EAAI8B,EAAQ9B,EACZjB,EAAI+C,EAAQ/C,GACZ6wH,EAAQ5vH,IAAM4vH,EAAQ7wH,KACtBnE,KAAK8M,SAAS1H,GAAK,EAAGjB,GAAK,IAInCwvM,OAAQ,SAASzsM,GACTA,IACAm1Q,EAAWt0Q,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,GAC5BlH,KAAK+7Q,oBAAoB70Q,EAAS,CAACkqC,EAAOC,KAC1CrxC,KAAKw9Q,YAELx9Q,KAAK+7Q,oBAAoB70Q,EAAS,CA5hB1C,IACA,OA4hBQlH,KAAKu9Q,iBAKjBD,UAAW,WACP,IAAIp2Q,EAAUlH,KAAKkH,QACnBlH,KAAKk7N,eAAiB,IAAI12N,EAAE8nI,KAAK,CAC7BzO,OAAQ32H,EAAQ22H,OAChB+O,QAAQ,IAGZ5sI,KAAKu8Q,QACLv8Q,KAAKw9Q,aAGTA,UAAW,WACP,IAAItiD,EAAiBl7N,KAAKk7N,eACtBuiD,EAAcC,EAAqB19Q,KAAKkH,SACxC8F,EAAQywQ,EAAYzwQ,MACpBL,EAAS8wQ,EAAY9wQ,OAEzBuuN,EAAehwF,SAAS/2G,SAAS,CAC7BquK,EAAc,EAAG,GACjBA,EAAcx1L,EAAO,GACrBw1L,EAAcx1L,EAAOL,GACrB61L,EAAc,EAAG71L,QAKzBgxQ,EAAatB,EAAWt5Q,OAAO,CAC/BoF,KAAM,SAASjB,GACZm1Q,EAAWt0Q,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC9B,IAAIiqF,EAASnxF,KAAKkH,QAAQiqF,OAC1BnxF,KAAKmxF,OAAS,IAAIt8E,EAAEmlH,MAAM7oC,EAAO/rF,EAAG+rF,EAAOhtF,GAC3CnE,KAAK8d,iBAGR5W,QAAS,CACN22H,OAAQ,CACHzO,MAAO67D,EACPj+K,MAAO,GAEZimB,KAAM,CACDm8F,MAAO,UAIfwuJ,iBAAkB,SAASvjJ,EAAOjrF,GAC9B,IAAImE,EAAYnE,EAAKmE,YAIrB,OAHI8mF,GAAS9mF,IACT8mF,EAAQA,EAAME,cAAchnF,IAEzB8mF,GAGXs5E,OAAQ,SAASzsM,GACTA,IACIA,EAAQ4F,WACR9M,KAAKkH,QAAQ4F,SAAW5F,EAAQ4F,UAGpCuvQ,EAAWt0Q,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,OAKxC22Q,EAAeF,EAAW56Q,OAAO,CACjCmE,QAAS,CACLykB,OAAQ,EACRwlE,OAAQ,CACJ/rF,EAAG,EACHjB,EAAG,IAIX2Z,cAAe,WACX,IAAI5W,EAAUlH,KAAKkH,QACnBlH,KAAKk7N,eAAiB,IAAI12N,EAAE45H,OAAO,IAAIvpH,EAAEupH,OAAOp+H,KAAKmxF,OAAQjqF,EAAQykB,QAAS,CAC1EsH,KAAM/rB,EAAQ+rB,KACd4qG,OAAQ32H,EAAQ22H,UAIxBigJ,eAAgB,SAAS1uO,GACrB,IAGI2uO,EACA1jJ,EAHAvtH,EADU9M,KAAKkH,QACI4F,SACnBo+H,EAAW97F,EAAK87F,UAKhB6yI,EADAjxQ,GAAYkvE,EACIkvD,EAAS,GAETA,EAASA,EAAS1jI,OAAS,MAG3C6yH,EAAQr6H,KAAK49Q,iBAAiBG,EAAc5sL,SAAU/hD,GACtDpvC,KAAKk7N,eAAe3nL,UAAU1+B,EAAE0+B,YAAYvD,UAAUqqF,EAAMj1H,EAAGi1H,EAAMl2H,QAK7E65Q,EAAcL,EAAW56Q,OAAO,CAChCmE,QAAS,CACLkoC,KAAM,8BACN+hD,OAAQ,CACJ/rF,EAAG,GACHjB,EAAG,IAIX2Z,cAAe,WACX,IAAI5W,EAAUlH,KAAKkH,QACnBlH,KAAKk7N,eAAiB12N,EAAE8nI,KAAKt3G,MAAM9tB,EAAQkoC,KAAM,CAC7Cnc,KAAM/rB,EAAQ+rB,KACd4qG,OAAQ32H,EAAQ22H,UAIxBigJ,eAAgB,SAAS1uO,GACrB,IAqvBW2yF,EAAIN,EACf4xG,EACAC,EAvvBIjyG,EAASrhI,KAAKi+Q,YAAY7uO,GAC1B95B,EAAQ+rH,EAAO/rH,MACf3J,EAAM01H,EAAO11H,IACb4nC,EAAY1+B,EAAE0+B,YAKlB,GAJIj+B,GACAi+B,EAAUxC,QAgvBHgxF,EAhvBoBzsH,EAivB/B+9N,GADe5xG,EAhvBuB91H,GAivB3BvG,EAAI28H,EAAG38H,EAClBkuO,EAAQ7xG,EAAGt9H,EAAI49H,EAAG59H,EACVK,EAAEmhH,KAAK6P,IAAInyH,KAAKowC,MAAM6/L,EAAOD,KAnvBO1nO,GAGxCA,EAAK,CACL,IAAIwlF,EAASnxF,KAAKmxF,OACdnhD,EAAYrkC,EAAIxE,QAAQ6oC,WAAWmhD,EAAO/rF,GAAI+rF,EAAOhtF,GACzDovC,EAAUvD,UAAUA,EAAU5qC,EAAG4qC,EAAU7rC,GAE/CnE,KAAKk7N,eAAe3nL,UAAUA,IAGlC0qO,YAAa,SAAS7uO,GAClB,IAEIizF,EAAYX,EAAUq8I,EAFtB72Q,EAAUlH,KAAKkH,QACfgkI,EAAW97F,EAAK87F,SAEpB,GAAIhkI,EAAQ4F,UAAYkvE,GAEpB,GADA+hM,EAAgB7yI,EAAS,GACN,CACfxJ,EAAWq8I,EAAc5sL,SACzBkxC,EAAa07I,EAAc12I,aAC3B,IAAIoqF,EAAcvmF,EAAS,IACtB7I,GAAcovF,IACfpvF,EAAaovF,EAAYtgI,gBAKjC,GADA4sL,EAAgB7yI,EAASA,EAAS1jI,OAAS,GACxB,CACfk6H,EAAWq8I,EAAc5sL,SACzBkxC,EAAa07I,EAAc32I,YAC3B,IAAIm8D,EAAcr4D,EAASA,EAAS1jI,OAAS,IACxC66H,GAAckhE,IACflhE,EAAakhE,EAAYpyG,UAIrC,GAAIuwC,EACA,MAAO,CACHpsH,MAAOtV,KAAK49Q,iBAAiBv7I,EAAYjzF,GACzCzjC,IAAK3L,KAAK49Q,iBAAiBl8I,EAAUtyF,OAMjD8uO,EAAkB,CAClBC,SAAU,SAASrxQ,GACf,IAAIsiC,EAAOpvC,KAAKk7N,eAQhB,GAPI9rL,aAAgB5qC,EAAE2oI,YAEd/9F,EADAtiC,GAAYkvE,EACL5sC,EAAKqe,MAAM,GAEXre,EAAKqe,MAAMre,EAAKqe,MAAMjmD,OAAS,IAG1C4nC,GAAQA,EAAK87F,SAAS1jI,OACtB,OAAO4nC,GAIfgvO,wBAAyB,SAASl3Q,GAC9B,IAAIm3Q,EAAWn3Q,EAAQm3Q,SACnBC,EAASp3Q,EAAQo3Q,OAEjB11Q,EAASy1Q,KACTn3Q,EAAQm3Q,SAAW,CACf34Q,KAAM24Q,IAIVz1Q,EAAS01Q,KACTp3Q,EAAQo3Q,OAAS,CACb54Q,KAAM44Q,KAKlBC,cAAe,SAASzxQ,GACpB,IAAIw7C,EAAStoD,KAAKk8P,SAASpvP,GACvBw7C,IACAtoD,KAAKi8Q,mBAAmBllP,OAAOuxB,EAAO4yK,uBAC/Bl7N,KAAKk8P,SAASpvP,KAI7B0xQ,eAAgB,WACZ,IAAIt3Q,EAAUlH,KAAKkH,QACnBlH,KAAKo+Q,wBAAwBl3Q,GAE7BlH,KAAKk8P,SAAW,GAChBl8P,KAAKk8P,SAAc,MAAIl8P,KAAK28P,cAAcz1P,EAAQm3Q,SAAUriM,GAC5Dh8E,KAAKk8P,SAAY,IAAIl8P,KAAK28P,cAAcz1P,EAAQo3Q,OAAQzzP,IAG5D8xO,cAAe,SAASz1P,EAAS4F,GAC7B,IAEI2xQ,EAAYn2N,EAFZ5iD,GAAQwB,GAAW,IAAIxB,KACvB0pC,EAAOpvC,KAAKm+Q,SAASrxQ,GAEzB,GAAKsiC,EAYL,OAPI1pC,GAAQ00Q,EAAQG,aAChBkE,EAAaZ,EACNn4Q,GAAQ00Q,EAAQE,YAAc50Q,GAAQ00Q,EAAQI,SACrDiE,EAAaT,EAEbh+Q,KAAKu+Q,cAAczxQ,GAEnB2xQ,IACAn2N,EAAS,IAAIm2N,EAAWj2Q,EAAW,GAAItB,EAAS,CAC5C4F,SAAUA,MAEPgxQ,eAAe1uO,GACtBpvC,KAAKi8Q,mBAAmBliO,OAAOuO,EAAO4yK,gBAE/B5yK,QAPX,EAXItoD,KAAKu+Q,cAAczxQ,IAsB3B4xQ,gBAAiB,SAAS5xQ,GACtB,IAAIw7C,EAAStoD,KAAKk8P,SAASpvP,GAE3B,GAAIw7C,EAAQ,CACR,IAAIlZ,EAAOpvC,KAAKm+Q,SAASrxQ,GACrBsiC,EACAkZ,EAAOw1N,eAAe1uO,GAEtBpvC,KAAKu+Q,cAAczxQ,KAK/B6xQ,QAAS,CACLrpQ,MAAO,WACP3J,IAAK,UAGTizQ,cAAe,SAASC,EAAY/xQ,EAAU5F,GAC1ClH,KAAKo+Q,wBAAwBl3Q,GAE7B,IAAI43Q,EAAc9+Q,KAAKkH,QACnB+sO,EAAMj0O,KAAK2+Q,QAAQ7xQ,GACnBiyQ,GAAeD,EAAY7qC,IAAQ,IAAIvuO,KACvCs5Q,EAAa93Q,EAAQ+sO,GACrBtsL,GAAU,EAcd,OAbIq3N,GACAF,EAAY7qC,GAAOzrO,EAAW,GAAIs2Q,EAAY7qC,GAAM+qC,GAChDA,EAAWt5Q,MAAQq5Q,GAAeC,EAAWt5Q,MAC7C1F,KAAKu+Q,cAAczxQ,GACnB9M,KAAKk8P,SAASpvP,GAAY9M,KAAK28P,cAAcmiB,EAAY7qC,GAAMnnO,GAC/D66C,GAAU,GACH3nD,KAAKk8P,SAASpvP,IACtB9M,KAAKk8P,SAASpvP,GAAU6mM,OAAOqrE,IAE3BH,IAAe7+Q,KAAKk8P,SAASpvP,IAAagyQ,EAAY7qC,KAC7Dj0O,KAAKk8P,SAASpvP,GAAY9M,KAAK28P,cAAcmiB,EAAY7qC,GAAMnnO,GAC/D66C,GAAU,GAEPA,GAGXs3N,eAAgB,SAASJ,EAAY33Q,IAC5BlH,KAAK4+Q,cAAcC,EAAY7iM,EAAO90E,IAAY23Q,GACnD7+Q,KAAK0+Q,gBAAgB1iM,IAEpBh8E,KAAK4+Q,cAAcC,EAAYh0P,EAAK3jB,IAAY23Q,GACjD7+Q,KAAK0+Q,gBAAgB7zP,KAK7ByhH,EAAO+vI,EAAWt5Q,OAAO,CACzBoF,KAAM,SAASjB,GACXm1Q,EAAWt0Q,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC9BlH,KAAKs2B,UAAY,IAAI9xB,EAAEgqI,MACvBxuI,KAAKk/Q,kBACLl/Q,KAAK47Q,aAGT10Q,QAAS,CACL20Q,UAAU,GAGdI,iBAAkB,WACd,OAAOj8Q,KAAKs2B,WAGhBzoB,KAAM,SAASnF,GACX,IAAIxB,EAAUlH,KAAKkH,QACnB,IAAIwB,EAQA,OAAOxB,EAAQ2G,KAPX3G,EAAQ2G,MAAQnF,IACjBxB,EAAQ2G,KAAOnF,EACf1I,KAAKm/Q,SAASz2Q,GACd1I,KAAK47Q,YACL57Q,KAAKi/Q,gBAAe,EAAM,MAOrCtrE,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CACTm1Q,EAAWt0Q,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,GAEhC,IAAI43Q,EAAc9+Q,KAAKkH,QACnB2G,EAAO3G,EAAQ2G,KAEfmnH,EAAQnnH,IAASixQ,EAAYjxQ,MAAQA,GACrCixQ,EAAYjxQ,KAAOA,EACnB7N,KAAKm/Q,SAAStxQ,GACT7N,KAAK87Q,YAAY50Q,IAClBlH,KAAK47Q,YAET57Q,KAAKi/Q,gBAAe,EAAM/3Q,KAE1BlH,KAAK87Q,YAAY50Q,GACjBlH,KAAKi/Q,gBAAe,EAAO/3Q,MAKvCg4Q,gBAAiB,WACb,IAAIh4Q,EAAUlH,KAAKkH,QAEnBlH,KAAKk7N,eAAiB12N,EAAE8nI,KAAKt3G,MAAM9tB,EAAQ2G,MAAQ,GAAI,CACnDgwH,OAAQ32H,EAAQ22H,SAGpB79H,KAAKu8Q,QACLv8Q,KAAKs2B,UAAUyjB,OAAO/5C,KAAKk7N,gBAC3Bl7N,KAAKw+Q,kBAGTW,SAAU,SAAStxQ,GACf,IAAIqtN,EAAiBl7N,KAAKk7N,eACtB9jB,EAAY5yM,EAAE8nI,KAAKt3G,MAAMnnB,GAAQ,IACjC4/C,EAAQ2pJ,EAAU3pJ,MAAM7mD,MAAM,GAClCwwM,EAAU3pJ,MAAMt5B,SAAS,IACzB+mM,EAAeztK,MAAMt5B,SAASs5B,MAItCjlD,EAAW8jI,EAAKvkI,GAAIszQ,GACpB7yQ,EAAW8jI,EAAKvkI,GAAIm2Q,GAEpB,IAAIkB,EAAO/C,EAAWt5Q,OAAO,CACzBoF,KAAM,SAASjB,GACXm1Q,EAAWt0Q,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC9BlH,KAAKs2B,UAAY,IAAI9xB,EAAEgqI,MACvBxuI,KAAKs9Q,YACLt9Q,KAAKw+Q,kBAGTvC,iBAAkB,WACd,OAAOj8Q,KAAKs2B,WAGhBq9K,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CAET,IAAIi3B,GADJj3B,EAAUA,GAAW,IACFi3B,KACfC,EAAKl3B,EAAQk3B,GACbD,IACAn+B,KAAKkH,QAAQi3B,KAAOA,GAGpBC,IACAp+B,KAAKkH,QAAQk3B,GAAKA,GAGlBD,GAAQC,GACRp+B,KAAKw9Q,YACLx9Q,KAAKi/Q,gBAAe,EAAM/3Q,IAE1BlH,KAAKi/Q,gBAAe,EAAO/3Q,GAG/Bm1Q,EAAWt0Q,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,KAIxCo2Q,UAAW,WACP,IAAIp2Q,EAAUlH,KAAKkH,QACfg0N,EAAiBl7N,KAAKk7N,eAAiB,IAAI12N,EAAE8nI,KAAK,CAClDzO,OAAQ32H,EAAQ22H,SAGpB79H,KAAKu8Q,QACLv8Q,KAAKw9Q,YACLx9Q,KAAKs2B,UAAUyjB,OAAOmhL,IAG1BsiD,UAAW,WACP,IAAIt2Q,EAAUlH,KAAKkH,QACfg0N,EAAiBl7N,KAAKk7N,eACtB/8L,EAAOj3B,EAAQi3B,MAAQ,IAAI67F,EAC3B57F,EAAKl3B,EAAQk3B,IAAM,IAAI47F,EAE3BkhG,EAAehwF,SAAS/2G,SAAS,CAC7BquK,EAAcrkK,EAAK/4B,EAAG+4B,EAAKh6B,GAC3Bq+L,EAAcpkK,EAAGh5B,EAAGg5B,EAAGj6B,QAKnCqE,EAAW42Q,EAAKr3Q,GAAIm2Q,GAEpB,IAAImB,EAAWhD,EAAWt5Q,OAAO,CAC7BoF,KAAM,SAASjB,GACXm1Q,EAAWt0Q,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC9BlH,KAAKs2B,UAAY,IAAI9xB,EAAEgqI,MACvBxuI,KAAKs9Q,YACLt9Q,KAAKw+Q,kBAGTvC,iBAAkB,WACd,OAAOj8Q,KAAKs2B,WAGhB+qG,OAAQ,SAASA,GACb,IAAIn6H,EAAUlH,KAAKkH,QACnB,IAAIm6H,EAIA,OAAOn6H,EAAQm6H,OAHfn6H,EAAQm6H,OAASA,EACjBrhI,KAAKs/Q,eAMb3rE,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CACT,IAAIm6H,EAASn6H,EAAQm6H,OACrBg7I,EAAWt0Q,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,GAE5Bm6H,GAAUrhI,KAAKu/Q,cAAcl+I,IAC7BrhI,KAAKqhI,OAAOA,GACZrhI,KAAKi/Q,gBAAe,EAAM/3Q,IAE1BlH,KAAKi/Q,gBAAe,EAAO/3Q,KAKvCo2Q,UAAW,WACP,IAAIp2Q,EAAUlH,KAAKkH,QACnBlH,KAAKk7N,eAAiB,IAAI12N,EAAE8nI,KAAK,CAC7BzO,OAAQ32H,EAAQ22H,SAGpB79H,KAAKu8Q,QACLv8Q,KAAKs2B,UAAUyjB,OAAO/5C,KAAKk7N,gBAEvBh0N,EAAQm6H,QACRrhI,KAAKs/Q,eAIbC,cAAe,SAASl+I,GACpB,IAAIm+I,EAAgBx/Q,KAAKkH,QAAQm6H,OAC7Bo+I,EAASD,EAAch4Q,SAAW65H,EAAO75H,OAC7C,IAAKi4Q,EACD,IAAK,IAAIl4Q,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAC/B,GAAIi4Q,EAAcj4Q,GAAGnC,IAAMi8H,EAAO95H,GAAGnC,GAAKo6Q,EAAcj4Q,GAAGpD,IAAMk9H,EAAO95H,GAAGpD,EAAG,CAC1Es7Q,GAAS,EACT,MAKZ,OAAOA,GAGXH,YAAa,WAMT,IALA,IAIIjlJ,EAJA6gG,EAAiBl7N,KAAKk7N,eAEtB75F,EADUrhI,KAAKkH,QACEm6H,OACjB6J,EAAW,GAEN3jI,EAAI,EAAGA,EAAI85H,EAAO75H,OAAQD,IAC/B8yH,EAAQgH,EAAO95H,GACf2jI,EAASvpI,KAAK6gM,EAAcnoE,EAAMj1H,EAAGi1H,EAAMl2H,IAG/C+2N,EAAehwF,SAAS/2G,SAAS+2G,IAGrChkI,QAAS,CACLm6H,OAAQ,MAIhB74H,EAAW62Q,EAASt3Q,GAAIm2Q,GAExB,IAAI9vI,EAAQjnH,EAAQpkB,OAAO,CACvBoF,KAAM,SAASjB,GACXigB,EAAQpf,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAE3BlH,KAAK0/Q,cAGT/rE,OAAQ,SAASzsM,GACTA,IACIA,EAAQoG,QACRtN,KAAKk7N,eAAen0N,IAAIG,EAAQoG,QAGhCtN,KAAK+7Q,oBAAoB70Q,EAAS,CAACkqC,EAAOC,EArjClD,IACA,OAqjCQrxC,KAAKk7N,eAAe7vI,KAAKrrF,KAAKquI,SAGlClnH,EAAQpf,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,KAIrCw4Q,WAAY,WACR,IAAIx4Q,EAAUlH,KAAKkH,QACfmkF,EAAOrrF,KAAKquI,QAEhBruI,KAAKk7N,eAAiB,IAAI12N,EAAE4pI,MAAMlnI,EAAQoG,OAAQ+9E,EAAM,KAG5DgjD,MAAO,WACH,IAAIovI,EAAcC,EAAqB19Q,KAAKkH,SACxC0xC,EAAS,IAAI/jC,EAAEmlH,MAAMyjJ,EAAYr4Q,EAAGq4Q,EAAYt5Q,GAChDsL,EAAO,IAAIoF,EAAEomH,KAAKwiJ,EAAYzwQ,MAAOywQ,EAAY9wQ,QAErD,OAAO,IAAIkI,EAAEqmH,KAAKtiF,EAAQnpC,MAI9B++H,EAAQrnH,EAAQpkB,OAAO,CACvBoF,KAAM,SAASjB,GACXlH,KAAKm1C,SAAW,GAChBhuB,EAAQpf,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC3BlH,KAAKk7N,eAAiB,IAAI12N,EAAEgqI,MAC5BxuI,KAAK47Q,aAGT10Q,QAAS,CACL20Q,UAAU,GAGd9hO,OAAQ,SAASmkG,GACbl+I,KAAKk7N,eAAenhL,OAAOmkG,EAAO+9H,oBAClCj8Q,KAAKm1C,SAASxzC,KAAKu8I,GACnBl+I,KAAK2/Q,iBAAkB,GAG3B5oP,OAAQ,SAASmnH,GACTl+I,KAAK6kI,QAAQqZ,KACbl+I,KAAK2/Q,iBAAkB,IAI/B96I,QAAS,SAASqZ,GACd,IAAInlI,EAAQsc,EAAQ6oH,EAAQl+I,KAAKm1C,UACjC,GAAIp8B,GAAS,EAGT,OAFA/Y,KAAKk7N,eAAetsF,SAAS71H,GAC7B/Y,KAAKm1C,SAAS3qC,OAAOuO,EAAO,IACrB,GAIfk9C,MAAO,WACHj2D,KAAKk7N,eAAejlK,QACpBj2D,KAAKm1C,SAAW,GAChBn1C,KAAK2/Q,iBAAkB,GAG3BC,QAAS,SAASz5G,GAGd,IAFA,IAAIjoB,EAEK32I,EAAI,EAAGA,EAAI4+J,EAAQ3+J,OAAQD,IAChC22I,EAASioB,EAAQ5+J,GACbvH,KAAK6kI,QAAQqZ,IACbl+I,KAAK+5C,OAAOmkG,IAKxB2hI,OAAQ,SAAS15G,GACbnmK,KAAK8/Q,iBAAiB35G,EAAS,IAGnC45G,QAAS,SAAS55G,EAASiV,GACvBp7K,KAAK8/Q,iBAAiB35G,EAASiV,IAGnC0kG,iBAAkB,SAAS35G,EAASiV,GAChC,IAII7zK,EAAGwR,EAAOgnQ,EAAS7kD,EAAgBh9E,EAJnChqF,EAAQl0D,KAAKk7N,eACb8kD,EAAkB9rN,EAAM/e,SAASvuC,MAAM,GACvCuuC,EAAWn1C,KAAKm1C,SAChB8qO,EAAgBnrN,EAASsmH,GAG7B,IAAK7zK,EAAI,EAAGA,EAAI4+J,EAAQ3+J,OAAQD,IAE5B2zN,GADAh9E,EAASioB,EAAQ5+J,IACO00Q,oBAExBljQ,EAAQsc,EAAQ6oH,EAAQ/oG,KACX,IACT6qO,EAAgBx1Q,OAAOuO,EAAO,GAC9Bo8B,EAAS3qC,OAAOuO,EAAO,GAEvBgnQ,EAAUE,EAAgB7kG,EAAUA,EAAQ7zK,GAE5Cy4Q,EAAgBx1Q,OAAOu1Q,EAAS,EAAG7kD,GACnC/lL,EAAS3qC,OAAOu1Q,EAAS,EAAG7hI,IAGpChqF,EAAM+B,QACN/B,EAAMna,OAAO3xC,MAAM8rD,EAAO8rN,IAG9BrsE,OAAQ,SAASzsM,GACTA,IACIlH,KAAK2/Q,iBACL3/Q,KAAK2/Q,iBAAkB,EAClB3/Q,KAAK87Q,YAAY50Q,IAClBlH,KAAK47Q,aAGT57Q,KAAK87Q,YAAY50Q,GAGrBigB,EAAQpf,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,KAIrCk1Q,aAAc,WAIV,IAHA,IACIlwI,EACAgS,EAAQgiI,EAFR/qO,EAAWn1C,KAAKm1C,SAGX5tC,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,KACjC22I,EAAS/oG,EAAS5tC,IACP+E,YAAuC,IAA1B4xI,EAAOiiI,iBAC3BD,EAAmBhiI,EAAO+9H,mBAAmB1+I,YAAY,SAGjD2O,EADAA,EACcr3H,EAAEqmH,KAAKsB,MAAM0P,EAAag0I,GAE1BA,GAM9B,OAAOh0I,KAIf1jI,EAAWgmI,EAAMzmI,GAAIszQ,GAErB,IAAI3iM,EAAS81D,EAAMzrI,OAAO,CACtBoF,KAAM,SAASkjF,EAAMnkF,GACjBlH,KAAKm1C,SAAW,GAChBhuB,EAAQpf,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC3BlH,KAAKk7N,eAAiB,IAAI12N,EAAEk0E,OAAO0nM,EAAc/0L,GAAOnkF,GACxDlH,KAAK47Q,aAGTvwL,KAAM,SAASA,GACX,GAAIA,EACArrF,KAAKk7N,eAAe7vI,KAAK+0L,EAAc/0L,QACpC,CACH,IAAIg1L,EAAcrgR,KAAKk7N,eAAe7vI,OACtC,GAAIg1L,EACA,OAAO,IAAInlJ,EAAKmlJ,EAAYznO,OAAOxzC,EAAGi7Q,EAAYznO,OAAOz0C,EAAGk8Q,EAAY5wQ,KAAKzC,MAAOqzQ,EAAY5wQ,KAAK9C,UAKjHyjI,OAAQ,WACJpwI,KAAKk7N,eAAe9qF,UAGxBujE,OAAQ,SAASzsM,GACbvG,EAAM6H,WAAWxI,KAAKk7N,eAAeh0N,QAASA,GAC9CsnI,EAAMzmI,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,MAI/Bk3H,EAASi+I,EAAWt5Q,OAAO,CAC3BoF,KAAM,SAASjB,GACXm1Q,EAAWt0Q,GAAGI,KAAKoC,KAAKvK,KAAMkH,GAC9BlH,KAAKsgR,cACLtgR,KAAK47Q,aAGTjoE,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CACT,IAAIq5Q,EAAgBvgR,KAAKkH,QAErBA,EAAQq2E,SACR/0E,EAAW+3Q,EAAe,CACtBhjM,OAAQr2E,EAAQq2E,SAEpBv9E,KAAK+/P,QAAQxlO,KAAKgmP,EAAchjM,OAAOn4E,EAAGm7Q,EAAchjM,OAAOp5E,IAG/DnE,KAAK+7Q,oBAAoB70Q,EAAS,CAAC,YACnClH,KAAKwgR,QAAQliJ,UAAUiiJ,EAAc50P,QAGzC3rB,KAAK87Q,YAAY50Q,GAEjBm1Q,EAAWt0Q,GAAG4rM,OAAOppM,KAAKvK,KAAMkH,KAIxCo5Q,YAAa,WACT,IAAIp5Q,EAAUlH,KAAKkH,QACf8F,EAAQ9F,EAAQ8F,MAChBL,EAASzF,EAAQyF,OACjBgf,EAASzkB,EAAQykB,OAChBqpG,EAAQrpG,KACJqpG,EAAQhoH,KACTA,EAAQL,GAEPqoH,EAAQroH,KACTA,EAASK,GAEb9F,EAAQykB,OAASA,EAAStoB,KAAK8S,IAAInJ,EAAOL,GAAU,GAGxD,IAAI4wE,EAASr2E,EAAQq2E,QAAU,CAAEn4E,EAAGumB,EAAQxnB,EAAGwnB,GAC/C3rB,KAAK+/P,QAAU,IAAIlrP,EAAEmlH,MAAMz8C,EAAOn4E,EAAGm4E,EAAOp5E,GAC5CnE,KAAKwgR,QAAU,IAAI3rQ,EAAEupH,OAAOp+H,KAAK+/P,QAASp0O,GAC1C3rB,KAAKk7N,eAAiB,IAAI12N,EAAE45H,OAAOp+H,KAAKwgR,QAAS,CAC7C3iJ,OAAQ32H,EAAQ22H,SAGpB79H,KAAKu8Q,WAGb/zQ,EAAW41H,EAAOr2H,GAAIszQ,GAEtB,IAAIoF,EAAS74Q,EAAM7E,OAAO,CACtBoF,KAAM,SAAS0D,EAAS3E,GACpBA,EAAUA,GAAW,GACrBlH,KAAK6L,QAAUA,EACf7L,KAAK2gF,QAAUn8E,EAAEywI,QAAQjuF,OAAOn7C,EAAS3E,GACrCvG,EAAMuI,WAAWlJ,KAAK2gF,QAAQ3wC,aAC9BhwC,KAAKgwC,UAAYhwC,KAAK0gR,YAG1B1gR,KAAKk7N,eAAiB,IAAI12N,EAAEgqI,MAC5BxuI,KAAK2gR,SAAW,IAAIzlJ,EAAK,EAAG,EAAGh0H,EAAQ8F,MAAO9F,EAAQyF,QACtD3M,KAAKyP,KAAKzP,KAAK2gR,WAGnBjb,OAAQ,WACJ,IAAIxsN,EAAMl5C,KAAKk7N,eAAe39F,cAC9B,OAAO,IAAIrC,EAAK,EAAG,EAAGhiF,EAAIlsC,QAASksC,EAAIvsC,WAG3C8C,KAAM,SAASA,GACX,IAAImoF,EAAU53F,KAAK2gR,SAMnB,OALI3rJ,EAAQvlH,KACRmoF,EAAQ5qF,MAAQyC,EAAKzC,MACrB4qF,EAAQjrF,OAAS8C,EAAK9C,OACtB3M,KAAK2gF,QAAQ1uD,QAAQxiB,IAElB,CACHzC,MAAO4qF,EAAQ5qF,MACfL,OAAQirF,EAAQjrF,SAIxB+zQ,WAAY,SAASt7Q,EAAGjB,GACpB,IAAIyzF,EAAU53F,KAAK2gR,SAMnB,OALI3rJ,EAAQ5vH,IAAM4vH,EAAQ7wH,KACtByzF,EAAQxyF,EAAIA,EACZwyF,EAAQzzF,EAAIA,EACZnE,KAAK2gF,QAAQ3wC,UAAU,CAAE5qC,EAAGA,EAAGjB,EAAGA,KAE/B,CACHiB,EAAGwyF,EAAQxyF,EACXjB,EAAGyzF,EAAQzzF,IAInBqxI,KAAM,WACFx1I,KAAK2gF,QAAQ60D,KAAKx1I,KAAKk7N,iBAG3BnhL,OAAQ,SAASmkG,GAEb,OADAl+I,KAAKk7N,eAAenhL,OAAOmkG,EAAO+9H,oBAC3Bj8Q,MAGX+2B,OAAQ,SAASmnH,GACbl+I,KAAKk7N,eAAenkM,OAAOmnH,EAAO+9H,qBAGtC5qM,aAAc,aAIdpb,MAAO,WACHj2D,KAAKk7N,eAAejlK,SAGxBj0D,QAAS,SAAS4+Q,GACd5gR,KAAK2gF,QAAQ3+E,UACT4+Q,GACAj+Q,EAAE3C,KAAK6L,SAASkrB,YAO5B,SAAS2mP,EAAqBx2Q,GAC1B,MAAO,CACH9B,EAAG8B,EAAQ9B,GAAK,EAChBjB,EAAG+C,EAAQ/C,GAAK,EAChB6I,MAAO9F,EAAQ8F,OAAS,EACxBL,OAAQzF,EAAQyF,QAAU,GAIlC,SAAS2vQ,EAAwBp1Q,GAC7B,GAAIA,EAAS,CACT,IAAI25Q,EAAiB35Q,EAWrB,OATI0B,EAASi4Q,KACTA,EAAiB,CACbzxJ,MAAOyxJ,IAIXA,EAAezxJ,QACfyxJ,EAAezxJ,MAAQotJ,EAASqE,EAAezxJ,QAE5CyxJ,GAIf,SAASrE,EAAS9zQ,GAOd,OALIA,GAASuiL,EACD,IAAIzmL,EAAE0sH,MAAMxoH,GAAOgnH,QAEnBhnH,EAYhB,SAAS85L,EAAcp9L,EAAGjB,GACtB,OAAO,IAAIK,EAAE2iI,QAAQ,IAAItyH,EAAEmlH,MAAM50H,EAAGjB,IAGxC,SAASi8Q,EAAc/0L,GACnB,GAAIA,EACA,OAAO,IAAIx2E,EAAEqmH,KAAK,CAAC7vC,EAAKjmF,EAAGimF,EAAKlnF,GAAI,CAACknF,EAAKr+E,MAAOq+E,EAAK1+E,SAK9DhM,EAAM6H,WAAWknL,EAAS,CACtBvnL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAAS6jL,EAAQ/lK,KAEhC8wP,mBAAoBA,EACpBtzP,QAASA,EACTuzP,MAAOA,EACPC,YAAaA,EACbG,SAAUA,EACV18I,OAAQA,EACRoQ,MAAOA,EACP6uI,UAAWA,EACXoD,OAAQA,EACRn0I,KAAMA,EACN5zD,OAAQA,EACR0mM,KAAMA,EACNzB,WAAYA,EACZK,YAAaA,EACbH,aAAcA,EACdwB,SAAUA,EACVtE,mBAAoBA,EACpB8B,UAAWA,EACXzuI,MAAOA,EACPiuI,WAAYA,IAv9CpB,CAy9CGv7Q,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GAEL,IAAIjC,EAAQG,OAAOH,MAEf+uL,EADU/uL,EAAMmpB,QACE4lK,QAClB9nL,EAAQjH,EAAMiH,MACd4mI,EAAQkhD,EAAQlhD,MAChBtT,EAAOw0D,EAAQx0D,KACfmiJ,EAAY3tF,EAAQ2tF,UACpBtW,EAAQr3E,EAAQq3E,MAChBG,EAAcH,EAAMG,YACpBltI,EAAQ01D,EAAQ11D,MAChBoE,EAASsxD,EAAQtxD,OACjBqqI,EAAS/4E,EAAQ+4E,OACjBjgQ,EAAa7H,EAAM6H,WACnBm+E,EAAUhmF,EAAMgpB,GAAGg9D,QACnBg/B,EAAOhlH,EAAMopB,QAAQ47F,KACrBqP,EAAUrP,EAAKqP,QACf3/F,EAAU1yB,EAAE0yB,QAGZyrP,EAAU,CACNj9J,MAAO,UACPk9J,KAAM,UACNC,MAAO,UACP/zQ,IAAK,UACLstB,KAAM,OACN6L,OAAQ,UACR66O,MAAO,WACPC,KAAM,WACNC,KAAM,WACNC,MAAO,WACPC,UAAW,aACXC,UAAW,cAEfC,EAAoB,GACpBpwO,EAAO,OACP8+C,EAAM,MACNtlE,EAAQ,QACRF,EAAO,OACPylE,EAAS,SAGTsoG,EAAa,YACbr1G,EAAO,OACPo1G,EAAW,UAEXipF,EAAmB,mBAYnBv2F,EAAc,cAEdw2F,EAAU,UAEVC,EAAS,SACTC,EAAe,CACX,KAHK,SAIL,EAAKD,GAGbhyF,EAAQoxF,QAAUA,EAElB,IAAIc,EAAkBjhR,EAAMiH,MAAM7E,OAAO,CACrCoF,KAAM,SAAS05Q,GACX7hR,KAAK6hR,YAAcA,EACnB7hR,KAAK0vL,QAAUmyF,EAAYnyF,SAE/B65E,UAAW,WACPvpQ,KAAK8hR,MAAQ,GACb9hR,KAAK+hR,IAAM,GACX/hR,KAAKgiR,SAAW,GAUhBhiR,KAAK6hR,YAAYhN,QAAQvzQ,SATzB,SAAgBquB,EAAI+1O,GAChB,IAAIzlH,EAAQjgJ,KAAK0vL,QAAQuyF,aAAatyP,GAClCswH,IACAjgJ,KAAKgiR,SAASrgR,KAAKs+I,GACnBjgJ,KAAK8hR,MAAMngR,KAAKs+I,EAAMylH,SAASlqI,WAC/Bx7H,KAAK+hR,IAAIpgR,KAAK+jQ,EAAOlqI,cAIYx7H,OAE7C+mD,OAAQ,SAASjL,GACb,KAAI97C,KAAKgiR,SAASx6Q,QAAU,GAG5B,IAAK,IAAID,EAAI,EAAGA,EAAIvH,KAAKgiR,SAASx6Q,OAAQD,IAEtCvH,KAAKgiR,SAASz6Q,GAAGuF,SACb,IAAIktH,EAAMh6H,KAAK8hR,MAAMv6Q,GAAGnC,GAAKpF,KAAK+hR,IAAIx6Q,GAAGnC,EAAIpF,KAAK8hR,MAAMv6Q,GAAGnC,GAAK02C,EAAM97C,KAAK8hR,MAAMv6Q,GAAGpD,GAAKnE,KAAK+hR,IAAIx6Q,GAAGpD,EAAInE,KAAK8hR,MAAMv6Q,GAAGpD,GAAK23C,OAMxIomO,EAAiBt6Q,EAAM7E,OAAO,CAC9BoF,KAAM,SAASg6Q,EAAcC,EAAYt7P,GACjCogP,EAAYpgP,GACZ9mB,KAAK8mB,SAAU,EAGf9mB,KAAK8mB,QAAUA,EAEnB9mB,KAAKqiR,cAAgBF,EACrBniR,KAAKsiR,YAAcF,EACnBpiR,KAAK+9C,MAAQ,kBAEjBwkO,KAAM,WACFviR,KAAKwiR,SAASxiR,KAAKqiR,gBAEvBI,KAAM,WACFziR,KAAKwiR,SAASxiR,KAAKsiR,cAEvBE,SAAU,SAASvvN,GACf,IAAIy8H,EAAUz8H,EAAMy8H,QACpB,GAAI1vL,KAAK8mB,QAAS,CACdmsC,EAAM6hN,QAAQxzQ,SACV,SAASquB,EAAI0xG,GACT,IAAIqhJ,EAAOhzF,EAAQuyF,aAAatyP,GAChC+yP,EAAKp2Q,SAAQ,GACTo2Q,GACAA,EAAKrhJ,OAAOA,MAIxB,IAAIshJ,EAAS,IAAIla,EACjBka,EAAO5Z,WAAW,IAAI6Y,EAAgB3uN,IACtC0vN,EAAO3Z,YAAW,WACd/1M,EAAM6hN,QAAQxzQ,SACV,SAASquB,GACM+/J,EAAQuyF,aAAatyP,GAC3BrjB,SAAQ,SAIzBq2Q,EAAO7rO,YAGPmc,EAAM4hN,QAAQvzQ,SAAQ,SAASquB,EAAI+1O,GAC/B,IAAIzlH,EAAQyvC,EAAQuyF,aAAatyP,GAC7BswH,GACAA,EAAMnzI,SAAS44P,EAAOlqI,cAG9BvoE,EAAM6hN,QAAQxzQ,SACV,SAASquB,EAAI0xG,GACT,IAAIqhJ,EAAOhzF,EAAQuyF,aAAatyP,GAC5B+yP,GACAA,EAAKrhJ,OAAOA,SAQhCuhJ,EAAgBh7Q,EAAM7E,OAAO,CAC7BoF,KAAM,SAASkwH,GACXr4H,KAAKy/K,MAAQ,GACbz/K,KAAK+9C,MAAQ,iBACTs6E,IAASz1H,GACT5C,KAAKy/K,MAAM99K,KAAK02H,IAGxBprH,IAAK,SAAS41Q,GACV7iR,KAAKy/K,MAAM99K,KAAKkhR,IAEpBN,KAAM,WACF,IAAK,IAAIh7Q,EAAI,EAAGA,EAAIvH,KAAKy/K,MAAMj4K,OAAQD,IACnCvH,KAAKy/K,MAAMl4K,GAAGg7Q,QAGtBE,KAAM,WACF,IAAK,IAAIl7Q,EAAI,EAAGA,EAAIvH,KAAKy/K,MAAMj4K,OAAQD,IACnCvH,KAAKy/K,MAAMl4K,GAAGk7Q,UAKtBK,EAAqBl7Q,EAAM7E,OAAO,CAClCoF,KAAM,SAAS6mC,EAAM+zO,EAAYC,GAC7BhjR,KAAKgvC,KAAOA,EACZhvC,KAAKijR,YAAcF,EACnB/iR,KAAKkjR,YAAcF,EACfhuJ,EAAQ+tJ,KACR/iR,KAAKmjR,YAAcn0O,EAAK1hC,UAGxB0nH,EAAQguJ,KACRhjR,KAAKojR,YAAcp0O,EAAK1nC,UAE5BtH,KAAK+9C,MAAQ,sBAEjBwkO,KAAM,WACEviR,KAAKmjR,cAAgBvgR,GACrB5C,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKmjR,YAAa,UAG7CnjR,KAAKojR,cAAgBxgR,GACrB5C,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKojR,YAAa,UAGjDpjR,KAAKgvC,KAAKs0O,eAEdb,KAAM,WACEziR,KAAKijR,cAAgBrgR,GACrB5C,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKijR,YAAa,UAG7CjjR,KAAKkjR,cAAgBtgR,GACrB5C,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKkjR,YAAa,UAGjDljR,KAAKgvC,KAAKs0O,iBAIdC,EAAyB37Q,EAAM7E,OAAO,CACtCoF,KAAM,SAAS6mC,EAAMw0O,EAAYC,GAC7BzjR,KAAKgvC,KAAOA,EACZhvC,KAAKmjR,YAAcK,EACnBxjR,KAAKojR,YAAcK,EACnBzjR,KAAKijR,YAAcj0O,EAAK1hC,SACxBtN,KAAKkjR,YAAcl0O,EAAK1nC,SACxBtH,KAAK+9C,MAAQ,sBAEjBwkO,KAAM,WACFviR,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKmjR,YAAa,UAC7CnjR,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKojR,YAAa,UAC7CpjR,KAAKgvC,KAAKs0O,eAEdb,KAAM,WACFziR,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKijR,YAAa,UAC7CjjR,KAAKgvC,KAAKq0O,iBAAiBrjR,KAAKkjR,YAAa,UAC7CljR,KAAKgvC,KAAKs0O,iBAIdI,EAAuB97Q,EAAM7E,OAAO,CACpCoF,KAAM,SAASqoQ,GACXxwQ,KAAKwwQ,WAAaA,EAClBxwQ,KAAK0vL,QAAU8gF,EAAW9gF,QAC1B1vL,KAAK2jR,gBAAkBnT,EAAWmT,gBAClC3jR,KAAK+9C,MAAQ,qBAEjBwkO,KAAM,WACFviR,KAAK0vL,QAAQipF,eAAe34Q,KAAKwwQ,YAAY,IAEjDiS,KAAM,WACFziR,KAAK0vL,QAAQ34J,OAAO/2B,KAAKwwQ,YAAY,MAIzCoT,EAAkBh8Q,EAAM7E,OAAO,CAC/BoF,KAAM,SAAS83I,GACXjgJ,KAAKigJ,MAAQA,EACbjgJ,KAAK0vL,QAAUzvC,EAAMyvC,QACrB1vL,KAAK+9C,MAAQ,YAEjBwkO,KAAM,WACFviR,KAAK0vL,QAAQ6oF,UAAUv4Q,KAAKigJ,OAAO,GACnCjgJ,KAAKigJ,MAAM75G,QAAO,IAEtBq8O,KAAM,WACFziR,KAAKigJ,MAAM75G,QAAO,GAClBpmC,KAAK0vL,QAAQ34J,OAAO/2B,KAAKigJ,OAAO,MAOpC4jI,EAAgBj8Q,EAAM7E,OAAO,CAC7BoF,KAAM,SAAS63I,EAAQ8jI,EAAYC,GAC/B/jR,KAAKggJ,OAASA,EACdhgJ,KAAK8jR,WAAaA,EAClB9jR,KAAK+9C,MAAQ,iBACb/9C,KAAKgkR,WAAa,GAClBhkR,KAAK+jR,QAAUA,EACf,IAAK,IAAIx8Q,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CACzC,IAAI04I,EAAQjgJ,KAAKggJ,OAAOz4I,GACxBvH,KAAKgkR,WAAWriR,KAAKs+I,EAAMylH,YAGnC6c,KAAM,WACF,IAAK,IAAIh7Q,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CACzC,IAAI04I,EAAQjgJ,KAAKggJ,OAAOz4I,GACxB04I,EAAMylH,OAAO1lQ,KAAK8jR,WAAWv8Q,IACzB04I,EAAMvxI,eAAe,WACrBuxI,EAAMqkE,OAAOrkE,EAAOjgJ,KAAKgkR,WAAWz8Q,GAAIvH,KAAK8jR,WAAWv8Q,IAE5D04I,EAAMqjI,cAENtjR,KAAK+jR,UACL/jR,KAAK+jR,QAAQE,gBACbjkR,KAAK+jR,QAAQnmQ,YAGrB6kQ,KAAM,WACF,IAAK,IAAIl7Q,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CACzC,IAAI04I,EAAQjgJ,KAAKggJ,OAAOz4I,GACxB04I,EAAMylH,OAAO1lQ,KAAKgkR,WAAWz8Q,IAEzB04I,EAAMvxI,eAAe,WACrBuxI,EAAMqkE,OAAOrkE,EAAOjgJ,KAAK8jR,WAAWv8Q,GAAIvH,KAAKgkR,WAAWz8Q,IAE5D04I,EAAMqjI,cAGNtjR,KAAK+jR,UACL/jR,KAAK+jR,QAAQE,gBACbjkR,KAAK+jR,QAAQnmQ,cAKrBsmQ,EAAoBt8Q,EAAM7E,OAAO,CACjCoF,KAAM,SAASqoQ,EAAY9gF,GACvB1vL,KAAKwwQ,WAAaA,EAClBxwQ,KAAK0vL,QAAUA,EACf1vL,KAAK+9C,MAAQ,kBAGjBwkO,KAAM,WACFviR,KAAK0vL,QAAQ34J,OAAO/2B,KAAKwwQ,YAAY,IAGzCiS,KAAM,WACFziR,KAAK0vL,QAAQipF,eAAe34Q,KAAKwwQ,YAAY,MAIjD2T,EAAev8Q,EAAM7E,OAAO,CAC5BoF,KAAM,SAAS83I,EAAOyvC,GAClB1vL,KAAKigJ,MAAQA,EACbjgJ,KAAK0vL,QAAUA,EACf1vL,KAAK+9C,MAAQ,aAGjBwkO,KAAM,WACFviR,KAAK0vL,QAAQ00F,WACbpkR,KAAK0vL,QAAQ34J,OAAO/2B,KAAKigJ,OAAO,IAGpCwiI,KAAM,WACFziR,KAAK0vL,QAAQ6oF,UAAUv4Q,KAAKigJ,OAAO,MAIvCokI,EAAcz8Q,EAAM7E,OAAO,CAC3BoF,KAAM,SAASm8Q,EAAiBC,EAAe70F,GAC3C1vL,KAAKs8C,QAAUgoO,EACftkR,KAAKwkR,SAAWD,EAChBvkR,KAAK0vL,QAAUA,EACf1vL,KAAK+9C,MAAQ,YAEjBwkO,KAAM,WACFviR,KAAK0vL,QAAQ/S,IAAI38K,KAAKs8C,UAE1BmmO,KAAM,WACFziR,KAAK0vL,QAAQ/S,IAAI38K,KAAKwkR,aAI1BC,EAAa78Q,EAAM7E,OAAO,CAC1BoF,KAAM,SAAS47Q,EAAS/jI,EAAQ0kI,GAC5B1kR,KAAKggJ,OAASA,EACdhgJ,KAAK0kR,YAAcA,EACnB1kR,KAAK+9C,MAAQ,WACb/9C,KAAK2kR,YAAc,GACnB3kR,KAAK4kR,UAAYb,EAAQc,OACzB7kR,KAAK+jR,QAAUA,EACf/jR,KAAKu9E,OAASwmM,EAAQe,aAAavnM,SACnC,IAAK,IAAIh2E,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CACzC,IAAI04I,EAAQjgJ,KAAKggJ,OAAOz4I,GACxBvH,KAAK2kR,YAAYhjR,KAAKs+I,EAAMlvG,SAASunF,SAG7CiqJ,KAAM,WACF,IAAIh7Q,EAAG04I,EACP,IAAK14I,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,KAChC04I,EAAQjgJ,KAAKggJ,OAAOz4I,IACdwpC,OAAO/wC,KAAK0kR,YAAYn9Q,GAAIvH,KAAKu9E,QAAQ,GAC3C0iE,EAAMvxI,eAAe,WACrBuxI,EAAMqkE,OAAOrkE,GAEjBA,EAAMqjI,cAENtjR,KAAK+jR,UACL/jR,KAAK+jR,QAAQgB,cACb/kR,KAAK+jR,QAAQnmQ,YAGrB6kQ,KAAM,WACF,IAAIl7Q,EAAG04I,EACP,IAAK14I,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,KAChC04I,EAAQjgJ,KAAKggJ,OAAOz4I,IACdwpC,OAAO/wC,KAAK2kR,YAAYp9Q,GAAIvH,KAAKu9E,QAAQ,GAC3C0iE,EAAMvxI,eAAe,WACrBuxI,EAAMqkE,OAAOrkE,GAEjBA,EAAMqjI,cAENtjR,KAAK+jR,UACL/jR,KAAK+jR,QAAQgB,cACb/kR,KAAK+jR,QAAQnmQ,cAKrBonQ,EAAcp9Q,EAAM7E,OAAO,CAC3BoF,KAAM,SAASunL,EAASt7J,EAAO6wP,GAC3BjlR,KAAK0vL,QAAUA,EACf1vL,KAAKo7K,QAAU6pG,EACfjlR,KAAKo0B,MAAQA,EACbp0B,KAAK+9C,MAAQ,eAEjBwkO,KAAM,WACFviR,KAAK0vL,QAAQw1F,SAASllR,KAAKo0B,MAAOp0B,KAAKo7K,UAE3CqnG,KAAM,WACFziR,KAAK0vL,QAAQkwF,QAAQ5/Q,KAAKo0B,OAAO,MAIrC+wP,EAAav9Q,EAAM7E,OAAO,CAC1BoF,KAAM,SAASunL,EAASt7J,EAAO6wP,GAC3BjlR,KAAK0vL,QAAUA,EACf1vL,KAAKo7K,QAAU6pG,EACfjlR,KAAKo0B,MAAQA,EACbp0B,KAAK+9C,MAAQ,eAEjBwkO,KAAM,WACFviR,KAAK0vL,QAAQw1F,SAASllR,KAAKo0B,MAAOp0B,KAAKo7K,UAE3CqnG,KAAM,WACFziR,KAAK0vL,QAAQmwF,OAAO7/Q,KAAKo0B,OAAO,MAOpCgxP,EAAkBzkR,EAAM2I,WAAWvG,OAAO,CAC1CoF,KAAM,SAASjB,GACXvG,EAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,KAAMkH,GACpClH,KAAKwJ,KAAKxJ,KAAKqK,OAAQnD,GACvBlH,KAAKkyI,MAAQ,GACblyI,KAAK+Y,MAAQ,EACb/Y,KAAKqlR,SAAW,KAGpBh7Q,OAAQ,CAAC,SAAU,UAMnBi7Q,MAAO,WACHtlR,KAAKwtD,UAAY,IAAIo1N,GAMzBpoP,OAAQ,WACJx6B,KAAKwtD,UAAY5qD,GAMrB2iR,OAAQ,SAASC,GACTxlR,KAAKwtD,UAAUiyH,MAAMj4K,OAAS,GAC9BxH,KAAKylR,SAASzlR,KAAKwtD,UAAWg4N,GAElCxlR,KAAKwtD,UAAY5qD,GAOrB8iR,iBAAkB,SAAS7C,GACnB7iR,KAAKwtD,UACLxtD,KAAKwtD,UAAUvgD,IAAI41Q,GAEnB7iR,KAAKiN,IAAI41Q,IASjB51Q,IAAK,SAAS41Q,EAAU2C,GACpBxlR,KAAKylR,SAAS5C,EAAU2C,IAQ5Bn2P,IAAK,WACGrvB,KAAK+Y,MAAQ,IACb/Y,KAAKkyI,MAAM7iH,MACXrvB,KAAK+Y,UAIb+B,MAAO,WACH,OAAO9a,KAAKkyI,MAAM1qI,QAMtB+6Q,KAAM,WACEviR,KAAK+Y,MAAQ,IACb/Y,KAAK+Y,QACL/Y,KAAKkyI,MAAMlyI,KAAK+Y,OAAOwpQ,OACvBviR,KAAKoK,QAAQ,YAOrBq4Q,KAAM,WACEziR,KAAKkyI,MAAM1qI,OAAS,GAAKxH,KAAK+Y,MAAQ/Y,KAAKkyI,MAAM1qI,SACjDxH,KAAKkyI,MAAMlyI,KAAK+Y,OAAO0pQ,OACvBziR,KAAK+Y,QACL/Y,KAAKoK,QAAQ,YAIrBq7Q,SAAU,SAASj4N,EAAWg4N,GAE1BxlR,KAAKkyI,MAAM1nI,OAAOxK,KAAK+Y,MAAO/Y,KAAKkyI,MAAM1qI,OAASxH,KAAK+Y,OACvD/Y,KAAKkyI,MAAMvwI,KAAK6rD,IACA,IAAZg4N,EACAxlR,KAAKyiR,OAELziR,KAAK+Y,QAGL/Y,KAAKkyI,MAAM1qI,OAASxH,KAAKqlR,WACzBrlR,KAAKkyI,MAAM1nI,OAAO,EAAGxK,KAAKkyI,MAAM1qI,OAASxH,KAAKqlR,UAC9CrlR,KAAK+Y,MAAQ/Y,KAAKqlR,WAO1BpvN,MAAO,WACHj2D,KAAKkyI,MAAQ,GACblyI,KAAK+Y,MAAQ,KAMjB4sQ,EAAY/9Q,EAAM7E,OAAO,CACzBoF,KAAM,SAASy9Q,GACX5lR,KAAK4lR,YAAcA,GAEvBtwQ,MAAO,aAEPilB,KAAM,aAEN5uB,IAAK,aAELk6Q,YAAa,WACT,OAAO,GAEXC,UAAW,WACP,OAAOhF,EAAQj9J,SAInBkiK,EAAeJ,EAAU5iR,OAAO,CAChCoF,KAAM,SAASy9Q,GACX,IAAII,EAAOhmR,KACPmsF,EAAWxrF,EAAM4C,QAAQkf,SA1hBf,IADP,GA4hBPkjQ,EAAU59Q,GAAGI,KAAKoC,KAAKy7Q,EAAMJ,GAE7B,IAAIl2F,EAAUs2F,EAAKJ,YAAYl2F,QAC3BnwC,EAASmwC,EAAQnwC,OAEjB0kH,EAAWv0E,EAAQu0E,SAAW+hB,EAAK/hB,SAAWthQ,EAAE+sL,EAAQu2F,YAAYttP,oBAAoB,CACxFwzD,SAAUA,EACVD,mBAjiBc,EAkiBd6B,qBAAqB,EACrB19C,MAAM,EACNq+M,OAAQs3B,EAAKpkM,MAAMp4E,KAAKw8Q,KACzBn4Q,KAAK,uBAEJ0xI,EAAOvvG,YACPg2O,EAAKE,cAAgB,IAAIv/L,EAAQ44D,EAAO1zI,UAG5C,IAAIs6Q,EAAgB,SAASzgM,EAAWvvE,EAAKyC,GACzC8sE,EAAUjB,cACViB,EAAUd,YAAYzuE,IAjjBjB,IAijBoCyC,GAhjBpC,MAmjBTutQ,EAAcliB,EAASjyO,WAAW5sB,GAClC+gR,EAAcliB,EAASjyO,WAAW7tB,GAClC8/P,EAAS58O,WAGbw+P,YAAa,SAAS90J,EAAG9/G,GACrB,IAAI20Q,EAAc5lR,KAAK4lR,YACnB1+Q,EAAU0+Q,EAAYl2F,QAAQxoL,QAAQ4nK,SACtC5nJ,EAAUjW,EAAKu9E,QAUnB,OARIwmC,EAAQ9tH,EAAQqK,OAIZ2V,EAHChgB,EAAQqK,KAAsB,QAAfrK,EAAQqK,IAGdN,EAAK/J,EAAQqK,IAAM,OAFnB60Q,GAAOn1Q,KAAU+jH,EAAQ4wJ,EAAYS,eAMpC,IAAZn/Q,GAAqBggB,IAAY8tG,EAAQ4wJ,EAAYU,kBAAoBtxJ,EAAQ4wJ,EAAYW,oBAGxGjxQ,MAAO,WACHtV,KAAKikQ,SAAS18O,UAElBgT,KAAM,aAENqnD,MAAO,SAASzqD,GACZ,IACIu4J,EADO1vL,KACQ4lR,YAAYl2F,QAC3BnwC,EAASmwC,EAAQnwC,OACjBinI,EAAY,IAAIxsJ,EAAM7iG,EAAKvK,WAAYuK,EAAKR,WAE5C4oH,EAAOvvG,WACP0/I,EAAQ+2F,UAAUD,EAAU1c,OAAO,IAN5B9pQ,KAOFkmR,cAAc9pO,OAAOoqO,GAC1BjnI,EAAOvvG,UAAUw2O,EAAUphR,EAAGohR,EAAUriR,IAExCqiR,EAAYA,EAAU5c,KAAKl6E,EAAQupE,KAAK6Q,OAAO,IAGnDp6E,EAAQtlL,QAtlBN,MAslBmB,CAAEuyK,IAAK6pG,KAEhC76Q,IAAK,WACD3L,KAAKikQ,SAAS58O,WAElBy+P,UAAW,WACP,OAAOhF,EAAQvmP,QAQnBmsP,EAAc9+Q,EAAM7E,OAAO,CAC3BoF,KAAM,SAASy9Q,GACX5lR,KAAK4lR,YAAcA,GAEvBC,YAAa,WACT,OAAO,GAEXvwQ,MAAO,SAASy7G,EAAG9/G,GACf,IAAI20Q,EAAc5lR,KAAK4lR,YACnBl2F,EAAUk2F,EAAYl2F,QACtB22F,EAAcT,EAAYS,YAE1BA,IACAT,EAAYe,aAAaN,EAAap1Q,GAClCo1Q,EAAYtC,UACZ/jR,KAAK+jR,QAAUsC,EAAYtC,QAC3B/jR,KAAKg7B,OAASh7B,KAAK+jR,QAAQ6C,SAAS71J,KAIvC/wH,KAAKg7B,SACNh7B,KAAKg7B,OAAS00J,EAAQm3F,iBAAiBD,SAAS71J,GAC5C/wH,KAAKg7B,SACLh7B,KAAK+jR,QAAUr0F,EAAQm3F,mBAI3B7mR,KAAK+jR,UACA/jR,KAAK+jR,QAAQ+C,aAAa9mR,KAAKg7B,SAAY00J,EAAQtlL,QAAQouL,EAAY,CAAEx4C,OAAQhgJ,KAAK+jR,QAAQ/jI,OAAQ+mI,YAAa,MAGpHnB,EAAYvjJ,WAAatR,EACzB60J,EAAYj6Q,IAAIolH,IAHhB/wH,KAAK+jR,QAAQzuQ,MAAMy7G,KAQ/Bx2F,KAAM,SAASw2F,GACP/wH,KAAK+jR,UACL/jR,KAAK+jR,QAAQxpP,KAAKv6B,KAAKg7B,OAAQ+1F,GAC3B/wH,KAAK+jR,QAAQ+C,aAAa9mR,KAAKg7B,SAC/Bh7B,KAAK4lR,YAAYl2F,QAAQtlL,QAAQ+4E,EAAM,CAAE68D,OAAQhgJ,KAAK+jR,QAAQ/jI,OAAQ+mI,YAAa,OAK/Fp7Q,IAAK,WACD,IAEI0sH,EAFAq3D,EAAU1vL,KAAK4lR,YAAYl2F,QAC3Bq0F,EAAU/jR,KAAK+jR,QAGfA,IACKA,EAAQ+C,aAAa9mR,KAAKg7B,SAAY00J,EAAQtlL,QAAQmuL,EAAU,CAAEv4C,OAAQ+jI,EAAQ/jI,OAAQ+mI,YAAa,KAMxGhD,EAAQvpP,UALR69F,EAAO0rJ,EAAQn8P,SAEX8nK,EAAQs3F,gBAAgB/5Q,IAAIorH,GAAM,IAO9Cr4H,KAAK+jR,QAAUnhR,EACf5C,KAAKg7B,OAASp4B,GAElBkjR,UAAW,SAAS/0J,GAChB,OAAO/wH,KAAK4lR,YAAYS,YAAcrmR,KAAK4lR,YAAYS,YAAYhkI,WAAWtxB,GAAK+vJ,EAAQj9J,SAI/FojK,EAAgBr/Q,EAAM7E,OAAO,CAC7BoF,KAAM,SAASy9Q,GACX5lR,KAAK4lR,YAAcA,GAEvBC,YAAa,SAAS90J,EAAG9/G,GACrB,IAAI20Q,EAAc5lR,KAAK4lR,YACnBx2F,EAAaw2F,EAAYl2F,QAAQxoL,QAAQkoL,WACzCloK,EAAUkoK,IAAsC,IAAxBA,EAAWl5I,SAUvC,OARIhvB,IAEIA,EADAkoK,EAAW79K,KAAyB,QAAlB69K,EAAW79K,IACnBN,EAAKm+K,EAAW79K,IAAM,OAEtB60Q,GAAOn1Q,IAIlBiW,IAAY8tG,EAAQ4wJ,EAAYS,eAAiBrxJ,EAAQ4wJ,EAAYU,iBAEhFhxQ,MAAO,SAASy7G,GACZ,IAAI2+D,EAAU1vL,KAAK4lR,YAAYl2F,QAC/BA,EAAQ00F,WACR10F,EAAQjqK,SAASnQ,MAAMy7G,IAE3Bx2F,KAAM,SAASw2F,GACG/wH,KAAK4lR,YAAYl2F,QACvBjqK,SAAS8U,KAAKw2F,IAE1BplH,IAAK,SAASolH,EAAG9/G,GACb,IAAIy+K,EAAU1vL,KAAK4lR,YAAYl2F,QAAS22F,EAAcrmR,KAAK4lR,YAAYS,YACnEh7L,EAAOqkG,EAAQjqK,SAASigP,SACtB2gB,GAAgBA,EAAYa,YAAgBj2Q,EAAKu9E,SACnDkhG,EAAQ00F,WAEP/4L,EAAKs1F,WACN+O,EAAQy3F,WAAW97L,GAEvBqkG,EAAQjqK,SAAS9Z,OAErBm6Q,UAAW,WACP,OAAOhF,EAAQj9J,SAInBujK,EAAiBx/Q,EAAM7E,OAAO,CAC9BoF,KAAM,SAASy9Q,GACX5lR,KAAK4lR,YAAcA,EACnB5lR,KAAK0F,KAAO,kBAEhBmgR,YAAa,WACT,OAAO7lR,KAAK4lR,YAAYW,mBAE5BjxQ,MAAO,SAASy7G,EAAG9/G,GACf,IAAI20Q,EAAc5lR,KAAK4lR,YACnBl2F,EAAUk2F,EAAYl2F,QACtB23F,EAAYzB,EAAYW,kBACxB/V,EAAa9gF,EAAQ43F,kBAAkB,GAAID,EAAUE,GAAIx2J,GAEzDy2J,GAAQhX,KAAgB9gF,EAAQtlL,QAAQouL,EAAY,CAAEx4C,OAAQ,GAAI+mI,YAAa,CAACvW,GAAaiX,iBAAkB/F,KAAahyF,EAAQipF,eAAenI,IACnJoV,EAAY8B,wBAAwBlX,EAAY6W,EAAUE,GAAGtnI,OAAO,GACpE2lI,EAAY+B,eACZ/B,EAAYe,aAAaf,EAAYgC,iBAAkB32Q,GACtC,aAAbA,EAAKvL,OACLgqL,EAAQm4F,mBAAqBR,EAAUnpI,UAG3CsyH,EAAWljQ,OAAO,MAClBs4Q,EAAYj6Q,IAAIolH,KAIxBx2F,KAAM,SAASw2F,GACX,IAAI60J,EAAc5lR,KAAK4lR,YACnBpV,EAAaoV,EAAYgC,iBAI7B,OAFApX,EAAWlpQ,OAAOypH,GAClB60J,EAAYl2F,QAAQtlL,QAAQ+4E,EAAM,CAAE68D,OAAQ,GAAI+mI,YAAa,CAACvW,GAAaiX,iBAAkB/F,KACtF,GAGX/1Q,IAAK,SAASolH,GACV,IAKIzpH,EALAs+Q,EAAc5lR,KAAK4lR,YACnBphR,EAAIohR,EAAYl2F,QAChB8gF,EAAaoV,EAAYgC,iBACzBvB,EAAcT,EAAYS,YAC1BgB,EAAYzB,EAAYW,kBAExBuB,EAAoBtjR,EAAEqjR,mBAErBrX,IAKDlpQ,EADA+/Q,GAAaA,EAAUE,IAAM/W,EAAWuX,gBAC/BV,EAAUE,GACZlB,GAAeA,aAAuB32F,EAAQs4F,MAC5C3B,EAAY4B,aAAa92O,IAASk1O,EAAY4B,aAAal3J,GAE3DA,EAGby/I,EAAWlpQ,OAAOA,GAEb9C,EAAE4F,QAAQmuL,EAAU,CAAEv4C,OAAQ,GAAI+mI,YAAa,CAACvW,GAAaiX,iBAAkB/F,KAIhFl9Q,EAAEuyB,OAAOy5O,GAAY,GACrBhsQ,EAAEwiR,gBAAgB33P,QAJlBmhP,EAAW8S,cACX9+Q,EAAE0jR,0BAKNtC,EAAY8B,0BAERI,IACAtjR,EAAE2jR,mBAAmBjqI,OAAOnnH,OAAO+wP,GACnCtjR,EAAEqjR,mBAAqB,QAI/B/B,UAAW,WACP,OAAOhF,EAAQj9J,SAInBukK,EAAqBxgR,EAAM7E,OAAO,CAClCoF,KAAM,SAASy9Q,GACX5lR,KAAK4lR,YAAcA,EACnB5lR,KAAK0F,KAAO,kBAGhBmgR,YAAa,SAAS90J,EAAG9/G,GACrB,IAAI20Q,EAAc5lR,KAAK4lR,YAEnBx2F,EADUw2F,EAAYl2F,QACDxoL,QAAQkoL,WAC7BpgJ,EAAO42O,EAAYS,YACnBgC,GAA0B,IAAfj5F,GACApgJ,GAAQA,EAAKI,QAAUJ,EAAKk4O,YAAcj2Q,EAAKu9E,SAM9D,OAJI65L,IACAroR,KAAKunR,GAAKv4O,GAGPq5O,GAGX/yQ,MAAO,SAASy7G,EAAG9/G,GACf,IAAI20Q,EAAc5lR,KAAK4lR,YACnBpV,EAAaxwQ,KAAKunR,GAEtB3B,EAAYe,aAAanW,EAAYv/P,GAErC,IAEI+pB,EAAQ54B,EAFR2hR,EAAUvT,EAAWuT,QAGrBA,IACA/oP,EAAS+oP,EAAQ6C,SAAS71J,GAC1B3uH,EAAOu/Q,EAAa3mP,IAGpBwsP,GAAQhX,IAAeuT,IAAY6B,EAAYl2F,QAAQtlL,QAAQouL,EAAY,CAAEx4C,OAAQ,GAAI+mI,YAAa,CAACvW,GAAaiX,iBAAkBrlR,KACtIpC,KAAKg7B,OAASA,EACdh7B,KAAKsoR,WAAalmR,EAClB2hR,EAAQzuQ,MAAMy7G,KAEd60J,EAAYvjJ,WAAatR,EACzB60J,EAAYj6Q,IAAIolH,KAIxBx2F,KAAM,SAASw2F,GACX,IAAIgzJ,EAAU/jR,KAAKunR,GAAGxD,QACtB,GAAIyD,GAAQxnR,KAAKunR,KAAOxD,EAIpB,OAHAA,EAAQxpP,KAAKv6B,KAAKg7B,OAAQ+1F,GAC1B/wH,KAAK4lR,YAAYl2F,QAAQtlL,QAAQ+4E,EAAM,CAAE68D,OAAQ,GAAI+mI,YAAa,CAAC/mR,KAAKunR,IAAKE,iBAAkBznR,KAAKsoR,cAE7F,GAIf38Q,IAAK,SAASolH,GACV,IAAIy/I,EAAaxwQ,KAAKunR,GAClBxD,EAAUvT,EAAWuT,QAErBr0F,EADc1vL,KAAK4lR,YACGl2F,QAE1B,GAAIq0F,GACIyD,GAAQhX,GAAa,CACrB,IAAIn4I,EAAO0rJ,EAAQn8P,KAAKmpG,GACnB2+D,EAAQtlL,QAAQmuL,EAAU,CAAEv4C,OAAQ,GAAI+mI,YAAa,CAACvW,GAAaiX,iBAAkBznR,KAAKsoR,aAK3FjwJ,EAAKkqJ,QAJL7yF,EAAQs3F,gBAAgB/5Q,IAAIorH,GAAM,GAClCm4I,EAAW8S,cACX5zF,EAAQw4F,4BAQxBpC,UAAW,WACP,OAAOhF,EAAQvmP,QAIvB,SAASguP,GAAQh3Q,EAAK3C,GAClB,OAAOA,EAAI0C,WAAW,IAAMC,GAAO3C,EAAIG,cAAcuC,WAAW,IAAMC,EAO1E,IAAIi3Q,GAAc5gR,EAAM7E,OAAO,CAC3BoF,KAAM,SAASunL,GACX1vL,KAAK0vL,QAAUA,EACf1vL,KAAKsvL,MAAQ,CACT,IAAIy2F,EAAa/lR,MACjB,IAAIooR,EAAmBpoR,MACvB,IAAIonR,EAAepnR,MACnB,IAAIinR,EAAcjnR,MAClB,IAAI0mR,EAAY1mR,OAGpBA,KAAKyoR,WAAa7lR,GAGtB0S,MAAO,SAASy7G,EAAG9/G,GAYf,OAXAA,EAAOzI,EAAW,GAAIyI,GAClBjR,KAAKyoR,YACLzoR,KAAKyoR,WAAW98Q,IAAIolH,EAAG9/G,GAE3BjR,KAAK0oR,mBAAmB33J,GACxB/wH,KAAK2oR,cAAc53J,EAAG9/G,GACtBjR,KAAKyoR,WAAWnzQ,MAAMy7G,EAAG9/G,GACzBjR,KAAK4oR,cAAc73J,GACnB/wH,KAAK0vL,QAAQ9pJ,QACb5lC,KAAK0vL,QAAQnwC,OAAO5+D,QAAQg1D,kBAC5B31I,KAAKqiI,WAAatR,GACX,GAGXx2F,KAAM,SAASw2F,EAAG9/G,GACdA,EAAOzI,EAAW,GAAIyI,GACtB,IAAI43Q,GAAgB,EAQpB,OAPI7oR,KAAKyoR,aACLI,EAAgB7oR,KAAKyoR,WAAWluP,KAAKw2F,EAAG9/G,IAExC43Q,GACA7oR,KAAK0oR,mBAAmB33J,GAE5B/wH,KAAK4oR,cAAc73J,IACZ,GAGXplH,IAAK,SAASolH,EAAG9/G,GAQb,OAPAA,EAAOzI,EAAW,GAAIyI,GAClBjR,KAAKyoR,YACLzoR,KAAKyoR,WAAW98Q,IAAIolH,EAAG9/G,GAE3BjR,KAAK0vL,QAAQnwC,OAAO5+D,QAAQk1D,iBAC5B71I,KAAKyoR,WAAa7lR,EAClB5C,KAAK4oR,cAAc73J,IACZ,GAGX+3J,QAAS,SAASv3Q,EAAKN,GACnB,IAAIy+K,EAAU1vL,KAAK0vL,QAEnB,KADAz+K,EAAOzI,EAAW,CAAEgmF,SAAS,EAAOu6L,SAAS,EAAO5nE,QAAQ,GAASlwM,IAC3Du9E,UAAWv9E,EAAK83Q,SAAa93Q,EAAKkwM,OA8BrC,IAAY,KAAR5vM,GAAsB,IAARA,EAAW,CAChC,IAAIy3Q,EAAWhpR,KAAK0vL,QAAQu5F,eAAev5F,EAAQtpJ,UAOnD,OANI4iP,EAASxhR,SACTxH,KAAK0vL,QAAQ34J,OAAOiyP,GAAU,GAC9BhpR,KAAK0vL,QAAQw5F,eACblpR,KAAK0vL,QAAQy5F,oBAGV,EACJ,GAAY,KAAR53Q,EAIP,OAHAvR,KAAKopR,wBACL15F,EAAQ00F,WACR10F,EAAQy5F,mBACD,MA3CyC,CAChD,GAAIZ,GAAQh3Q,EAAK,KAGb,OAFAm+K,EAAQ25F,YACR35F,EAAQy5F,mBACD,EACJ,GAAIZ,GAAQh3Q,EAAK,KAGpB,OAFAm+K,EAAQ6yF,OACR7yF,EAAQy5F,mBACD,EACJ,GAAIZ,GAAQh3Q,EAAK,KAGpB,OAFAm+K,EAAQ+yF,OACR/yF,EAAQy5F,mBACD,EACAZ,GAAQh3Q,EAAK,MACpBm+K,EAAQzoL,OACRyoL,EAAQy5F,mBACDZ,GAAQh3Q,EAAK,MACpBm+K,EAAQ/rK,MACR+rK,EAAQy5F,mBACDZ,GAAQh3Q,EAAK,MACpBm+K,EAAQ9rK,QACR8rK,EAAQy5F,mBACDZ,GAAQh3Q,EAAK,MACpBm+K,EAAQ40B,SACR50B,EAAQy5F,mBACDZ,GAAQh3Q,EAAK,OACpBm+K,EAAQy5F,kBACRz5F,EAAQzoL,OACRyoL,EAAQ9rK,WAmBpB0lQ,MAAO,SAASv4J,EAAG9/G,GACf,IAAIy+K,EAAU1vL,KAAK0vL,QACf9qJ,EAAQ3zB,EAAK2zB,MACbt/B,EAAIoqL,EAAQr/I,OACZnpC,EAAUwoL,EAAQxoL,QAClBqiR,EAAWriR,EAAQqiR,SACnBC,EAAc,CAAEnvJ,MAAOtJ,EAAG9/G,KAAMA,EAAMo/B,KAAM/qC,GAEhD,IAAIoqL,EAAQtlL,QAp/BH,YAo/BuBo/Q,GAgBhC,OAZI5kP,EAAQ,EACRt/B,GAAKikR,EAELjkR,GAAKikR,EAGTjkR,EAAI3E,EAAMmpB,QAAQ/T,MAAM1S,KAAKuV,IAAI1R,EAAQg7P,QAAS7+P,KAAK8S,IAAIjP,EAAQi7P,QAAS78P,IAAK,GACjFkkR,EAAYn5O,KAAO/qC,EAEnBoqL,EAAQr/I,KAAK/qC,EAAGkkR,GAChB95F,EAAQtlL,QAjgCD,UAigCmBo/Q,IAEnB,GAEXC,QAAS,SAASzD,EAAMjtQ,GACpBitQ,EAAKJ,YAAc5lR,KACnBA,KAAKsvL,MAAMv2K,GAASitQ,GAGxBW,aAAc,SAAS33O,EAAM/9B,GACzB,IAAIy+K,EAAU1vL,KAAK0vL,QACfN,EAAaM,EAAQxoL,QAAQkoL,WACjC,GAAIA,IAAepgJ,EAAKk4O,aAA0C,IAA5Bl4O,EAAK9nC,QAAQkoL,WAAsB,CACrE,IAAIs6F,EAAiBz4Q,EAAKu9E,UAAmC,IAAxB4gG,EAAWl5I,SAChDw5I,EAAQtpJ,OAAO4I,EAAM,CAAE06O,eAAgBA,MAI/CN,sBAAuB,WACfppR,KAAK2pR,gBACL3pR,KAAK0vL,QAAQ34J,OAAO/2B,KAAK2pR,eACzB3pR,KAAK2pR,cAAgB/mR,IAG7B+lR,cAAe,SAAS53J,EAAG9/G,GACvB,IAAK,IAAI1J,EAAI,EAAGA,EAAIvH,KAAKsvL,MAAM9nL,OAAQD,IAAK,CACxC,IAAIy+Q,EAAOhmR,KAAKsvL,MAAM/nL,GACtB,GAAIy+Q,EAAKH,YAAY90J,EAAG9/G,GAAO,CAC3BjR,KAAKyoR,WAAazC,EAClB,SAIZ4C,cAAe,SAAS73J,GACpB,IAAIllH,EAAU7L,KAAK0vL,QAAQ7jL,QACvB8sI,EAAS34I,KAAKyoR,WAAazoR,KAAKyoR,WAAW3C,UAAU/0J,GAAM/wH,KAAKsmR,eAAiBtmR,KAAKsmR,eAAejkI,WAAWtxB,GAAM/wH,KAAKqmR,YAAcrmR,KAAKqmR,YAAYhkI,WAAWtxB,GAAK+vJ,EAAQj9J,MAEtLh4G,EAAQe,IAAI,CAAE+rI,OAAQA,KAE1B+uI,wBAAyB,SAASlX,EAAYoZ,EAAen7N,GACzDzuD,KAAK4nR,iBAAmBpX,EACxBxwQ,KAAK4pR,cAAgBA,EAEjB5pR,KAAK2pR,cADLl7N,EACqBzuD,KAAK4nR,iBAELhlR,GAG7B8lR,mBAAoB,SAAS33J,GACzB,IAAI84J,EAAM7pR,KAAK4mR,SAAS71J,GACpB2+D,EAAU1vL,KAAK0vL,QAEfm6F,GAAO7pR,KAAKqmR,aAAiBrmR,KAAK4pR,eAAiBC,GAAO7pR,KAAK4pR,gBAC3D5pR,KAAKqmR,cACL32F,EAAQtlL,QAzjCN,aAyjC2B,CAAE4kC,KAAMhvC,KAAKqmR,cAC1CrmR,KAAKqmR,YAAYnK,QAAO,IAGxB2N,GAAOA,EAAI3iR,QAAQqgB,QACnBmoK,EAAQtlL,QA/jCN,aA+jC2B,CAAE4kC,KAAM66O,IAErC7pR,KAAKqmR,YAAcwD,EACnB7pR,KAAKqmR,YAAYnK,QAAO,IAExBl8Q,KAAKqmR,YAAczjR,IAI/B+kR,aAAc,WACN3nR,KAAKqmR,cACLrmR,KAAKqmR,YAAYnK,QAAO,GACxBl8Q,KAAKqmR,YAAczjR,IAG3BgkR,SAAU,SAASvsJ,GACf,IAAIwvJ,EAAuB76O,EAAMznC,EAAxB/C,EAAIxE,KAAK0vL,QAOlB,GAJI1vL,KAAKumR,oBACLvmR,KAAKumR,kBAAkBrK,QAAO,GAC9Bl8Q,KAAKumR,kBAAoB3jR,GAEzB4B,EAAE2jR,mBAAmBt5B,WACrBg7B,EAAMrlR,EAAE2jR,mBAAmBvB,SAASvsJ,IAEhC,OAAOwvJ,EAKf,GADAA,EAAM7pR,KAAK0vL,QAAQm3F,iBAAiBD,SAASvsJ,GACpC,CAEL,GADAr6H,KAAKsmR,eAAiB9hR,EAAEqiR,iBACV,IAAVgD,EAAIzkR,GAAqB,IAAVykR,EAAI1lR,EACnB,OAEJ0lR,EAAMjnR,OAEN5C,KAAKsmR,eAAiB1jR,EAG1B,IAAK5C,KAAKyoR,YAAuC,mBAAzBzoR,KAAKyoR,WAAW/iR,KAA2B,CAC/D,IAAIokR,EAAsB,GAE1B,IAAKviR,EAAI,EAAGA,EAAI/C,EAAEulR,eAAeviR,OAAQD,KACrCynC,EAAOxqC,EAAEulR,eAAexiR,cACJmoL,EAAQs6F,YACxBF,EAAoBnoR,KAAKqtC,GAGjC66O,EAAM7pR,KAAKiqR,cAAcH,EAAqBzvJ,GAGlD,OAAOwvJ,GAAO7pR,KAAKkqR,iBAAiB7vJ,IAGxC6vJ,iBAAkB,SAAS7vJ,GACvB,IAGIwvJ,EAHAn6F,EAAU1vL,KAAK0vL,QACfy6F,EAAWnqR,KAAKiqR,cAAcv6F,EAAQ1vC,OAAQ3lB,GAC9C+vJ,EAAgBpqR,KAAKiqR,cAAcv6F,EAAQq3F,YAAa1sJ,GAG5D,KAAMr6H,KAAKyoR,YAAsC,kBAAxBzoR,KAAKyoR,WAAW/iR,OAA6BykR,GAAYC,IA2oC1F,SAAgCnqI,EAAO5lB,GAEnC,IADA,IAAIgtJ,EAAWv6Q,EAAUu+E,EAChBzhF,EAAM,EAAGA,EAAMq2I,EAAMuwC,WAAWhpL,OAAQoC,IAK7C,GAHAkD,GADAu6Q,EAAYpnI,EAAMuwC,WAAW5mL,IACRkD,YACrBu+E,EAAO,IAAI6vC,EAAKpuH,EAAS1H,EAAG0H,EAAS3I,IAChCsmQ,QAAQ8W,EAAmBA,GAC5Bl2L,EAAKl2D,SAASklG,GACd,OAAOgtJ,EAnpCyFgD,CAAuBF,EAAU9vJ,GAAQ,CACzI,IAAIiwJ,EAAY56F,EAAQ46F,UAGxBT,EAFex0P,EAAQ80P,EAASjsI,OAAQosI,EAAUn1O,UAC9B9f,EAAQ+0P,EAAclsI,OAAQosI,EAAUn1O,UAC3Bg1O,EAAWC,EAEhD,OAAOP,GAAOM,GAAYC,GAG9BH,cAAe,SAASzvQ,EAAO6/G,GAC3B,IAAI9yH,EAASsiR,EACb,IAAKtiR,EAAIiT,EAAMhT,OAAS,EAAGD,GAAK,EAAGA,IAG/B,GADAsiR,EADOrvQ,EAAMjT,GACFq/Q,SAASvsJ,GAEhB,OAAOwvJ,KAWnBU,GAAuB5pR,EAAMiH,MAAM7E,OAAO,CAC1CoF,KAAM,eAeNqiR,GAAyBD,GAAqBxnR,OAAO,CACrDoF,KAAM,SAASqoQ,GAEX+Z,GAAqBxiR,GAAGI,KAAKoC,KADlBvK,MAEXA,KAAKwwQ,WAAaA,GAKtBia,QAAS,SAAS15J,GAEd,QADU/wH,KAAK0qR,YAAYjgB,QAAQ8W,GAC1BpsP,SAAS47F,IAGX2+D,EAAQ09E,SAASO,mBAAmB58I,EAAG/wH,KAAKwwQ,WAAW5tE,aAAe2+E,GAOjFmJ,UAAW,WASP,IARA,IAAIrpJ,EAASrhI,KAAKwwQ,WAAW5tE,YACzB39L,EAAIo8H,EAAO,GACX18H,EAAI08H,EAAOA,EAAO75H,OAAS,GAC3BskB,EAAQzoB,KAAKuV,IAAI3T,EAAEG,EAAGT,EAAES,GACxBymB,EAAOxoB,KAAK8S,IAAIlR,EAAEG,EAAGT,EAAES,GACvBgf,EAAM/gB,KAAK8S,IAAIlR,EAAEd,EAAGQ,EAAER,GACtB4nB,EAAS1oB,KAAKuV,IAAI3T,EAAEd,EAAGQ,EAAER,GAEpBoD,EAAI,EAAGA,EAAI85H,EAAO75H,OAAS,IAAKD,EACrCukB,EAAQzoB,KAAKuV,IAAIkT,EAAOu1G,EAAO95H,GAAGnC,GAClCymB,EAAOxoB,KAAK8S,IAAI0V,EAAMw1G,EAAO95H,GAAGnC,GAChCgf,EAAM/gB,KAAK8S,IAAIiO,EAAKi9G,EAAO95H,GAAGpD,GAC9B4nB,EAAS1oB,KAAKuV,IAAImT,EAAQs1G,EAAO95H,GAAGpD,GAGxC,OAAO,IAAI+2H,EAAKrvG,EAAMzH,EAAK0H,EAAQD,EAAME,EAAS3H,MAStDumQ,GAAiBH,GAAuBznR,OAAO,CAC/CoF,KAAM,SAASqoQ,GAEXga,GAAuBziR,GAAGI,KAAKoC,KADpBvK,MAEXA,KAAKwwQ,WAAaA,GAEtBhwN,MAAO,eAKPoqO,GAAkBJ,GAAuBznR,OAAO,CAChD8nR,yBAA0B,EAE1B1iR,KAAM,SAASqoQ,GAEXga,GAAuBziR,GAAGI,KAAKoC,KADpBvK,MAEXA,KAAKwwQ,WAAaA,GAGtBsa,YAAa,SAASx1Q,EAAO3J,EAAKo8Q,EAAiBpE,GAQ/C,OALIoE,GAAmBpE,EACV3jR,KAAK+qR,iBAAiBz1Q,EAAO3J,EAAKo8Q,EAAiBpE,GAEnD3jR,KAAKgrR,gBAAgB11Q,EAAO3J,EAAKo8Q,IAKlDvnO,MAAO,WACH,IAAIunO,EAAkB/nR,KAAKwwQ,WAAWya,yBAClCtH,EAAkB3jR,KAAKwwQ,WAAW0a,yBAClC51Q,EAAQtV,KAAKwwQ,WAAW2a,cACxBx/Q,EAAM3L,KAAKwwQ,WAAW4a,cACtB/pJ,EAASrhI,KAAK8qR,YAAYx1Q,EAAO3J,EAAKo8Q,EAAiBpE,GAC3D3jR,KAAKwwQ,WAAWnvI,OAAOA,IAG3BgqJ,gBAAiB,CAAC,CACdjpR,KAAM,MACN4iC,KAAM,IACNsmP,YAAa,UACbC,cAAe,GAChB,CACCnpR,KAAM,OACN4iC,KAAM,IACNsmP,YAAa,UACbC,cAAe,GAChB,CACCnpR,KAAM,SACN4iC,KAAM,IACNsmP,YAAa,cACbC,eAAgB,GACjB,CACCnpR,KAAM,QACN4iC,KAAM,IACNsmP,YAAa,cACbC,eAAgB,IAGpBC,eAAgB,SAASnE,EAAW+D,GAahC,IAZA,IAQIK,EACAC,EACA1mP,EACAymH,EAXA3+I,EAAWu6Q,EAAUv6Q,WACrB6+Q,EAActE,EAAUpnI,MAAMylH,OAAO+b,GACrC/b,EAAS,CACTlqI,QAASmwJ,EAAYnwJ,UACrBC,YAAakwJ,EAAYlwJ,eAEzBmwJ,EAAQ5rR,KAAKqrR,gBACbl1Q,EAAMwvG,EAAK0P,QAKNzrH,EAAM,EAAGA,EAAMgiR,EAAMpkR,OAAQoC,IAElCo7B,GADAymH,EAAOmgI,EAAMhiR,IACDo7B,MACZymP,EAAepoR,KAAK0S,MAAM1S,KAAK6T,IAAIpK,EAASk4B,GAAQ0gO,EAAOj6G,EAAK6/H,aAAatmP,MAC1D7uB,GACfA,EAAMs1Q,EACNC,EAAUjgI,GACHggI,IAAiBt1Q,IACvBrJ,EAASk4B,GAAQomP,EAAYpmP,IAASymH,EAAK8/H,eAAiBz+Q,EAAS4+Q,EAAQ1mP,MAAQomP,EAAYM,EAAQ1mP,OAAS0mP,EAAQH,gBAC3HG,EAAUjgI,GAGlB,OAAOigI,EAAQtpR,MAGnBypR,kBAAmB,SAASxE,GACxB,IAAI3hB,EAAS2hB,EAAUpnI,MAAMylH,OAAO+b,GACpC,OAAOp+Q,KAAK8S,IAAIuvP,EAAO14P,MAAO04P,EAAO/4P,QAAU3M,KAAK6qR,0BAGxDE,iBAAkB,SAASz1Q,EAAO3J,EAAKo8Q,EAAiBpE,GACpD,IAMImI,EAAQC,EANRC,EAAsBhsR,KAAKwrR,eAAezD,EAAiBp8Q,GAC3DsgR,EAAsBjsR,KAAKwrR,eAAe7H,EAAiBruQ,GAC3D42Q,EAASvgR,EAAIvG,EAAIkQ,EAAMlQ,EACvBy/B,EAASl5B,EAAIxH,EAAImR,EAAMnR,EACvBgoR,EAAmBnsR,KAAK6rR,kBAAkB9D,GAC1CxxQ,EAAS,GAkCb,OA/BIy1Q,IAAwB/7L,GAAO+7L,GAAuB97L,EAClD+7L,GAAuBh8L,GAAOg8L,GAAuB/7L,EACjD87L,GAAuBC,GAEnBF,EADAC,GAAuB/7L,EACd5sF,KAAK8S,IAAIb,EAAMnR,EAAGwH,EAAIxH,GAAKgoR,EAE3B9oR,KAAKuV,IAAItD,EAAMnR,EAAGwH,EAAIxH,GAAKgoR,EAExC51Q,EAAS,CAAC,IAAIyjH,EAAM1kH,EAAMlQ,EAAG2mR,GAAS,IAAI/xJ,EAAMruH,EAAIvG,EAAG2mR,KAEvDx1Q,EAAS,CAAC,IAAIyjH,EAAM1kH,EAAMlQ,EAAGkQ,EAAMnR,EAAI0gC,EAAS,GAAI,IAAIm1F,EAAMruH,EAAIvG,EAAGkQ,EAAMnR,EAAI0gC,EAAS,IAG5FtuB,EAAS,CAAC,IAAIyjH,EAAM1kH,EAAMlQ,EAAGuG,EAAIxH,IAGjC8nR,GAAuBxhQ,GAAQwhQ,GAAuBthQ,EAClDqhQ,GAAuBC,GAEnBH,EADAE,GAAuBvhQ,EACdpnB,KAAK8S,IAAIb,EAAMlQ,EAAGuG,EAAIvG,GAAK+mR,EAE3B9oR,KAAKuV,IAAItD,EAAMlQ,EAAGuG,EAAIvG,GAAK+mR,EAExC51Q,EAAS,CAAC,IAAIyjH,EAAM8xJ,EAAQx2Q,EAAMnR,GAAI,IAAI61H,EAAM8xJ,EAAQngR,EAAIxH,KAE5DoS,EAAS,CAAC,IAAIyjH,EAAM1kH,EAAMlQ,EAAI8mR,EAAS,EAAG52Q,EAAMnR,GAAI,IAAI61H,EAAM1kH,EAAMlQ,EAAI8mR,EAAS,EAAG52Q,EAAMnR,EAAI0gC,IAGlGtuB,EAAS,CAAC,IAAIyjH,EAAMruH,EAAIvG,EAAGkQ,EAAMnR,IAGlCoS,GAGXy0Q,gBAAiB,SAAS11Q,EAAO3J,EAAKo8Q,GAWlC,IAVA,IAMIqE,EACAC,EAPAL,EAAsBjE,EAAkB/nR,KAAKwrR,eAAezD,EAAiBp8Q,GAAO,KACpF2gR,EAAyBtsR,KAAKusR,iBAAiBj3Q,EAAO3J,EAAKqgR,GAC3D3qJ,EAAS,CAAC/rH,EAAOA,EAAO3J,EAAKA,GAC7BugR,EAASvgR,EAAIvG,EAAIkQ,EAAMlQ,EACvBy/B,EAASl5B,EAAIxH,EAAImR,EAAMnR,EACvBqD,EAAS65H,EAAO75H,OAKXoC,EAAM,EAAGA,EAAMpC,EAAS,IAAKoC,EAC9B0iR,EACI1iR,EAAM,GAAM,GACZwiR,EAASF,GAAU1kR,EAAS,GAC5B6kR,EAAS,IAGTD,EAAS,EACTC,EAASxnP,IAAWr9B,EAAS,GAAK,IAIlCoC,EAAM,GAAM,GACZwiR,EAAS,EACTC,EAASxnP,GAAUr9B,EAAS,KAG5B4kR,EAASF,IAAW1kR,EAAS,GAAK,GAClC6kR,EAAS,GAGjBhrJ,EAAOz3H,GAAO,IAAIowH,EAAMqH,EAAOz3H,EAAM,GAAGxE,EAAIgnR,EAAQ/qJ,EAAOz3H,EAAM,GAAGzF,EAAIkoR,GAU5E,OAPAziR,IAEIy3H,EAAO75H,EAAS,GADf8kR,GAA2B1iR,EAAM,GAAM,IAAS0iR,GAA2B1iR,EAAM,GAAM,EACnE,IAAIowH,EAAMqH,EAAO75H,EAAS,GAAGpC,EAAGi8H,EAAO75H,EAAS,GAAGrD,GAEnD,IAAI61H,EAAMqH,EAAO75H,EAAS,GAAGpC,EAAGi8H,EAAO75H,EAAS,GAAGrD,GAGrE,CAACk9H,EAAO,GAAIA,EAAO,KAG9BkrJ,iBAAkB,SAASj3Q,EAAO3J,EAAK6gR,GAQnC,OANmB,OAAfA,IAAwBA,IAAe7hQ,GAAS6hQ,IAAe/hQ,IAGlDpnB,KAAK6T,IAAI5B,EAAMlQ,EAAIuG,EAAIvG,GAAK/B,KAAK6T,IAAI5B,EAAMnR,EAAIwH,EAAIxH,MASxEsoR,GAAc7kR,EAAM7E,OAAO,CAC3BoF,KAAM,SAASunL,EAASxoL,GACpB,IAAIe,EAAOjI,KACXiI,EAAKynL,QAAUA,EACfznL,EAAKf,QAAUsB,EAAW,GAAIP,EAAKf,QAASA,GAC5Ce,EAAKi2I,OAAS,IAAI1P,EAClBvmI,EAAKynL,QAAQg9F,UAAU/qR,KAAKsG,IAEhC2V,QAAS,eAKT+uQ,GAAwBF,GAAY1pR,OAAO,CAC3CoF,KAAM,SAASqoQ,EAAYtpQ,GACvB,IAAiBwoL,EAAbznL,EAAOjI,KACXiI,EAAKuoQ,WAAaA,EAClB9gF,EAAUznL,EAAKuoQ,WAAW9gF,QAC1BznL,EAAK2kR,IAAMl9F,EAAQk2F,YACnB6G,GAAY1kR,GAAGI,KAAKoC,KAAKtC,EAAMynL,EAASxoL,GACxC,IAAI2lR,EAAK5kR,EAAKuoQ,WAAW2a,cACrB2B,EAAK7kR,EAAKuoQ,WAAW4a,cACzBnjR,EAAK8kR,SAAW,IAAI3uJ,EAAO51H,EAAWP,EAAKf,QAAQioL,QAAS,CAAE5xG,OAAQsvM,KACtE5kR,EAAK+kR,SAAW,IAAI5uJ,EAAO51H,EAAWP,EAAKf,QAAQioL,QAAS,CAAE5xG,OAAQuvM,KACtE7kR,EAAKi2I,OAAOnkG,OAAO9xC,EAAK8kR,UACxB9kR,EAAKi2I,OAAOnkG,OAAO9xC,EAAK+kR,WAG5B9lR,QAAS,CACLioL,QAAS,IAGb9sC,WAAY,WACR,OAAOy+H,EAAQvmP,MAGnBjlB,MAAO,SAASy7G,GAKZ,OAJA/wH,KAAKg7B,OAASh7B,KAAK4mR,SAAS71J,GAC5B/wH,KAAKqiI,WAAatR,EAClB/wH,KAAKitR,eAAiBjtR,KAAKwwQ,WAAWljQ,SACtCtN,KAAKktR,eAAiBltR,KAAKwwQ,WAAWlpQ,SAC9BtH,KAAKg7B,QACT,KAAM,EACEh7B,KAAKwwQ,WAAWmT,iBAChB3jR,KAAK4sR,IAAIlF,wBAAwB1nR,KAAKwwQ,WAAYxwQ,KAAKwwQ,WAAWmT,gBAAgB1jI,OAEtF,MACJ,KAAK,EACGjgJ,KAAKwwQ,WAAWuX,iBAChB/nR,KAAK4sR,IAAIlF,wBAAwB1nR,KAAKwwQ,WAAYxwQ,KAAKwwQ,WAAWuX,gBAAgB9nI,SAMlG1lH,KAAM,SAASS,EAAQ+1F,GACnB,OAAQ/1F,GACJ,KAAM,EACFh7B,KAAKwwQ,WAAWljQ,OAAOyjH,GACvB,MACJ,KAAK,EACD/wH,KAAKwwQ,WAAWlpQ,OAAOypH,GACvB,MACJ,QACI,IAAInsF,EAAQmsF,EAAE84I,MAAM7pQ,KAAKqiI,YACzBriI,KAAKqiI,WAAatR,EACb/wH,KAAKwwQ,WAAWuX,iBACjB/nR,KAAKwwQ,WAAWljQ,OAAOtN,KAAKwwQ,WAAW2a,cAAcvhB,KAAKhlO,IAEzD5kC,KAAKwwQ,WAAWmT,iBACjB3jR,KAAKwwQ,WAAWlpQ,OAAOtH,KAAKwwQ,WAAW4a,cAAcxhB,KAAKhlO,IAKtE,OADA5kC,KAAK4d,WACE,GAGXgK,KAAM,SAASmpG,GACX,IAA0DzpH,EAAtD2yP,EAAKj6P,KAAK0vL,QAAQk2F,YAAa52O,EAAOirN,EAAGosB,YAiB7C,OAfI/+Q,EADA2yP,EAAGssB,kBACMtsB,EAAGssB,kBAAkBgB,GACvBv4O,GAAQA,aAAgB0gJ,EAAQs4F,MAC9Bh5O,EAAKi5O,aAAa92O,IAASnC,EAAKi5O,aAAal3J,GAE7CA,GAGQ,IAAjB/wH,KAAKg7B,OACLh7B,KAAKwwQ,WAAWljQ,OAAOhG,GACA,IAAhBtH,KAAKg7B,QACZh7B,KAAKwwQ,WAAWlpQ,OAAOA,GAG3BtH,KAAKg7B,OAASp4B,EACd5C,KAAK4sR,IAAIlF,0BACF,IAAInE,EAAuBvjR,KAAKwwQ,WAAYxwQ,KAAKitR,eAAgBjtR,KAAKktR,iBAGjFtG,SAAU,SAASvsJ,GACf,IAAI8wJ,EAAcnrR,KAAKwwQ,WAAW2a,cAC9BC,EAAcprR,KAAKwwQ,WAAW4a,cAC9B9qJ,EAAUtgI,KAAKkH,QAAQioL,QAAQniL,MAAQ,EAAIu0Q,EAC3ChhJ,EAAUvgI,KAAKkH,QAAQioL,QAAQxiL,OAAS,EAAI40Q,EAC5C4L,EAAsBhC,EAAY3wJ,WAAWH,GAC7C+yJ,EAAsBhC,EAAY5wJ,WAAWH,GAC7CgzJ,EAAe,IAAInyJ,EAAKiwJ,EAAY/lR,EAAG+lR,EAAYhnR,GAAGsmQ,QAAQnqI,EAASC,GAASprG,SAASklG,GACzFizJ,EAAe,IAAIpyJ,EAAKkwJ,EAAYhmR,EAAGgmR,EAAYjnR,GAAGsmQ,QAAQnqI,EAASC,GAASprG,SAASklG,GACzFr/F,EAAS,EAQb,OANIqyP,KAAkBC,GAAgBH,EAAsBC,GACxDpyP,GAAU,EACHsyP,KAAkBD,GAAgBD,EAAsBD,KAC/DnyP,EAAS,GAGNA,GAGXpd,QAAS,WACL5d,KAAK+sR,SAASp5E,OAAO,CAAEp2H,OAAQv9E,KAAK0vL,QAAQ69F,aAAavtR,KAAKwwQ,WAAW2a,iBACzEnrR,KAAKgtR,SAASr5E,OAAO,CAAEp2H,OAAQv9E,KAAK0vL,QAAQ69F,aAAavtR,KAAKwwQ,WAAW4a,oBAI7EoC,GAAoBf,GAAY1pR,OAAO,CACvCoF,KAAM,SAASunL,EAASxoL,GACpB,IAAIe,EAAOjI,KACXysR,GAAY1kR,GAAGI,KAAKoC,KAAKtC,EAAMynL,EAASxoL,GACxCe,EAAKwlR,gBAAkB,SAAS9oR,GACxBA,EAAEqqC,MAAQ/mC,EAAKg4I,OACfh4I,EAAK2V,YAKjB1Q,KAAM,SAAS+yI,GACX,IAAiB5vH,EAAK9oB,EAAGmmR,EAArBzlR,EAAOjI,KAOX,IANAiI,EAAK4mP,UAAW,EAChB5mP,EAAKg4I,MAAQA,EACbh4I,EAAKynL,QAAQlmL,KAAKg4Q,EAAkBv5Q,EAAKwlR,iBACzCp9P,EAAM4vH,EAAMuwC,WAAWhpL,OACvBS,EAAKuoL,WAAa,GAClBvoL,EAAK0lR,eACApmR,EAAI,EAAGA,EAAI8oB,EAAK9oB,IACjBmmR,EAAM,IAAIE,GAAgB3tI,EAAMuwC,WAAWjpL,IAC3CU,EAAKuoL,WAAW7uL,KAAK+rR,GACrBzlR,EAAKi2I,OAAOnkG,OAAO2zO,EAAIxvI,QAE3Bj2I,EAAKi2I,OAAO5xI,SAAQ,GACpBrE,EAAK2V,WAGT+vQ,aAAc,WACV,IAAI1lR,EAAOjI,KACPiI,EAAKynL,QAAQm4F,mBACb5/Q,EAAK4lR,yBAEL5lR,EAAKi2I,OAAOjoF,SAIpB43N,uBAAwB,WAKpB,IAJA,IAAI5lR,EAAOjI,KACP8tR,EAAiB7lR,EAAKi2I,OAAO/oG,SAC7BkwH,EAAgByoH,EAAetmR,OAC/BuR,EAAQsc,EAAQptB,EAAKynL,QAAQm4F,mBAAoBiG,GAC5CvmR,EAAI89J,EAAgB,EAAG99J,GAAK,EAAGA,IAChCA,GAAKwR,GAGT9Q,EAAKi2I,OAAOnnH,OAAO+2P,EAAevmR,KAI1CvF,QAAS,WACL,IAAIiG,EAAOjI,KACXiI,EAAKynL,QAAQzlL,OAAOu3Q,EAAkBv5Q,EAAKwlR,iBAC3CxlR,EAAKg4I,MAAQr9I,EACbqF,EAAK4mP,SAAWjsP,EAChBqF,EAAKi2I,OAAO5xI,SAAQ,IAGxBs6Q,SAAU,SAAS71J,GACf,IAAI28J,EAAKnmR,EACT,IAAKA,EAAI,EAAGA,EAAIvH,KAAKwwL,WAAWhpL,OAAQD,IAEpC,IADAmmR,EAAM1tR,KAAKwwL,WAAWjpL,IACdq/Q,SAAS71J,GAAI,CACjB28J,EAAIxR,QAAO,GACXl8Q,KAAK0vL,QAAQk2F,YAAYW,kBAAoBmH,EAC7C,QAKZ9vQ,QAAS,WACL,GAAI5d,KAAKigJ,MAAO,CACZ,IAAIylH,EAAS1lQ,KAAKigJ,MAAMylH,SACpBA,EAAS1lQ,KAAK0vL,QAAQ69F,aAAa7nB,GACvC1lQ,KAAKk+I,OAAOpxI,SAAS44P,EAAOlqI,WAC5B74H,EAAEK,KAAKhD,KAAKwwL,YAAY,WACpBxwL,KAAK4d,iBA8BrB,IAAImwQ,GAAkBtB,GAAY1pR,OAAO,CACrCoF,KAAM,SAASunL,EAASxoL,GACpB,IAAIe,EAAOjI,KACXysR,GAAY1kR,GAAGI,KAAKoC,KAAKtC,EAAMynL,EAASxoL,GACxCe,EAAK+lR,eAAgB,EACrB/lR,EAAKqS,IAAM,GACXrS,EAAK+3I,OAAS,GAEd/3I,EAAKgmR,iBACLhmR,EAAKimR,iBACLjmR,EAAK0rM,SACL1rM,EAAKynL,QAAQlmL,KAAK,UAAU,SAAS7E,GACjCsD,EAAK88Q,YAAYpgR,EAAE8sE,aAGvBxpE,EAAKwlR,gBAAkB,WACdxlR,EAAKkmR,kBACNlmR,EAAKg8Q,gBACLh8Q,EAAK2V,YAIb3V,EAAKmmR,gBAAkB,WACO,GAAtBnmR,EAAK+3I,OAAOx4I,SACZS,EAAK48Q,OAAS58Q,EAAK+3I,OAAO,GAAGjvG,SAASunF,OAE1CrwH,EAAKwlR,mBAGTxlR,EAAKynL,QAAQlmL,KAAKg4Q,EAAkBv5Q,EAAKwlR,iBAAiBjkR,KAlqDjD,aAkqDkEvB,EAAKmmR,iBAChFnmR,EAAKg8Q,gBACLh8Q,EAAK2V,WAGT1W,QAAS,CACLioL,QAAS,CACLl8J,KAAM,CACFm8F,MAAO,QAEXyO,OAAQ,CACJzO,MAAO,WAEXziH,OAAQ,EACRK,MAAO,EACPkiL,MAAO,CACHj8J,KAAM,CACFm8F,MAAO,WAEXyO,OAAQ,CACJzO,MAAO,aAInBggE,WAAY,CACRvxD,OAAQ,CACJzO,MAAO,UACPpiH,MAAO,EACPgvI,SAAU,QAEd/oH,KAAM,CACFm8F,MAAO67D,IAGfluK,OAAQ,IAGZkxQ,eAAgB,WACZ,IAAIhmR,EAAOjI,KAEPovL,EADUnnL,EAAKynL,QACMxoL,QAAQkoL,WAC7BloL,EAAUsB,EAAW,GAAIP,EAAKf,QAAQkoL,WAAYA,GACtDnnL,EAAKojF,KAAO,IAAIgyL,EAAUn2Q,GAC1Be,EAAKi2I,OAAOnkG,OAAO9xC,EAAKojF,OAG5BgjM,WAAY,WACR,OAAOruR,KAAKkH,QAAQqnD,WAA6C,IAAjCvuD,KAAKkH,QAAQqnD,SAAShlC,QAG1D+kQ,eAAgB,WACZ,OAAQtuR,KAAKkH,QAAQqnD,SAAShlC,QAAU,IAAI4lK,SAAWnvL,KAAKkH,QAAQioL,SAGxE++F,eAAgB,WACZ,IAAI/+F,EAASngJ,EAAM7qC,EAAGiB,EAEtB,GAAIpF,KAAKquR,aAEL,IADAl/F,EAAUnvL,KAAKsuR,iBACVlpR,GAAK,EAAGA,GAAK,EAAGA,IACjB,IAAKjB,GAAK,EAAGA,GAAK,EAAGA,IACN,IAANiB,GAAmB,IAANjB,KACd6qC,EAAO,IAAIquO,EAAUluF,IAChB+rC,eAAeghD,OAASl8Q,KAAKk8Q,OAAO1yQ,KAAKxJ,MAC9CA,KAAKsa,IAAI3Y,KAAK,CAAEyD,EAAGA,EAAGjB,EAAGA,EAAG+5I,OAAQlvG,IACpChvC,KAAKk+I,OAAOnkG,OAAO/K,KAOvC02N,OAAQ,SAASh9P,GACb,IAAIA,EAIA,OAAO1I,KAAKuuR,QAHZvuR,KAAK8kR,aAAep8Q,EAAMvB,QAC1BnH,KAAKuuR,QAAUvuR,KAAK0vL,QAAQ69F,aAAa7kR,GAAO+hQ,QAAQzqQ,KAAKkH,QAAQ6V,OAAQ/c,KAAKkH,QAAQ6V,SAMlG6pQ,SAAU,SAAS71J,GACf,IACIxpH,EAAGsiR,EAAK2E,EAA8CxzP,EADtD8xP,EAAK9sR,KAAK0vL,QAAQ69F,aAAax8J,GACT09J,EAAezuR,KAAKsa,IAAI9S,OAMlD,GAJIxH,KAAK6kR,SACLiI,EAAKA,EAAG3lR,QAAQ4pC,OAAO/wC,KAAKuuR,QAAQhxM,SAAUv9E,KAAK6kR,SAGnD7kR,KAAKquR,aACL,IAAK9mR,EAAI,EAAGA,EAAIknR,EAAclnR,IAK1B,GAJAyzB,EAASh7B,KAAKsa,IAAI/S,GAClBsiR,EAAM,IAAI7vJ,EAAMh/F,EAAO51B,EAAG41B,EAAO72B,IACjCqqR,EAAexuR,KAAK0uR,iBAAiB7E,IACxB9sQ,OAAO/c,KAAKuuR,QAAQnpR,EAAGpF,KAAKuuR,QAAQpqR,GAC7CqqR,EAAar5P,SAAS23P,GACtB,OAAOjD,EAKnB,GAAI7pR,KAAKuuR,QAAQp5P,SAAS23P,GACtB,OAAO,IAAI9yJ,EAAM,EAAG,IAI5B00J,iBAAkB,SAAS39J,GACvB,GAAI/wH,KAAKquR,aAAc,CACnB,IAAIl/F,EAAUnvL,KAAKsuR,iBACfr0C,EAAI9qD,EAAQniL,MACZpI,EAAIuqL,EAAQxiL,OACZ0jH,EAAI,IAAI6K,EAAK,EAAG,EAAG++G,EAAGr1O,GAgB1B,OAdImsH,EAAE3rH,EAAI,EACNirH,EAAEjrH,GAAM60O,EAAI,EACG,IAARlpH,EAAE3rH,EACTirH,EAAEjrH,EAAI/B,KAAKkN,MAAMvQ,KAAKuuR,QAAQvhR,MAAQ,GAAKitO,EAAI,EACxClpH,EAAE3rH,EAAI,IACbirH,EAAEjrH,EAAIpF,KAAKuuR,QAAQvhR,MAAQ,EAAMitO,EAAI,GACnClpH,EAAE5sH,EAAI,EACRksH,EAAElsH,GAAMS,EAAI,EACG,IAARmsH,EAAE5sH,EACTksH,EAAElsH,EAAId,KAAKkN,MAAMvQ,KAAKuuR,QAAQ5hR,OAAS,GAAK/H,EAAI,EACzCmsH,EAAE5sH,EAAI,IACbksH,EAAElsH,EAAInE,KAAKuuR,QAAQ5hR,OAAS,EAAM/H,EAAI,GAGnCyrH,IAIfgyB,WAAY,SAAShoB,GACjB,IAAIwvJ,EAAM7pR,KAAK4mR,SAASvsJ,GACxB,GAAIwvJ,GAAQA,EAAIzkR,IAAM,GAAOykR,EAAIzkR,GAAK,GAAOykR,EAAI1lR,IAAM,GAAO0lR,EAAI1lR,GAAK,GAAMnE,KAAKquR,aAAc,CAC5F,IAAI/1J,EAAQt4H,KAAK6kR,OAOjB,GANIvsJ,IACAA,EAAQ,IAAMA,EACduxJ,EAAI94O,OAAO,IAAIipF,EAAM,EAAG,GAAI1B,GAC5BuxJ,EAAM,IAAI7vJ,EAAM32H,KAAK0S,MAAM8zQ,EAAIzkR,GAAI/B,KAAK0S,MAAM8zQ,EAAI1lR,MAGxC,GAAV0lR,EAAIzkR,IAAqB,GAAVykR,EAAI1lR,EACnB,MAAO,YAEX,GAAa,GAAT0lR,EAAIzkR,GAAmB,GAATykR,EAAI1lR,EAClB,MAAO,YAEX,IAAc,GAAV0lR,EAAIzkR,GAAoB,GAATykR,EAAI1lR,EACnB,MAAO,YAEX,GAAa,GAAT0lR,EAAIzkR,IAAoB,GAAVykR,EAAI1lR,EAClB,MAAO,YAEX,GAAc,IAAV0lR,EAAIzkR,IAAqB,GAAVykR,EAAI1lR,EACnB,MAAO,WAEX,GAAc,IAAV0lR,EAAIzkR,GAAoB,GAATykR,EAAI1lR,EACnB,MAAO,WAEX,GAAa,GAAT0lR,EAAIzkR,GAAoB,IAAVykR,EAAI1lR,EAClB,MAAO,WAEX,IAAc,GAAV0lR,EAAIzkR,GAAqB,IAAVykR,EAAI1lR,EACnB,MAAO,WAGf,OAAOnE,KAAKguR,cAAgBlN,EAAQvmP,KAAOumP,EAAQ16O,QAGvD2+O,YAAa,WACT,IAAiBx9Q,EAAGynC,EAAhB/mC,EAAOjI,KACPo0B,EAAQnsB,EAAKynL,QAAQtpJ,SAGzB,IADAn+B,EAAK+3I,OAAS,GACTz4I,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,KAC1BynC,EAAO5a,EAAM7sB,cACOmoL,EAAQs4F,QACxB//Q,EAAK+3I,OAAOr+I,KAAKqtC,GACjBA,EAAK2/O,gBAAkB,IAAI30J,GAInC/xH,EAAK48Q,OAA+B,GAAtB58Q,EAAK+3I,OAAOx4I,OAAcS,EAAK+3I,OAAO,GAAGjvG,SAASunF,MAAQ,EACxErwH,EAAK2mR,YAAc3mR,EAAK48Q,OACxB58Q,EAAK4mR,WACL5mR,EAAK6mR,aACL7mR,EAAKg8Q,gBACLh8Q,EAAK2V,UACL3V,EAAK0rM,UAGTk7E,SAAU,WACN,IAAiBtnR,EAAG04I,EAAhBh4I,EAAOjI,KAEX,IADAiI,EAAK8mR,eAAiB,GACjBxnR,EAAI,EAAGA,EAAIU,EAAK+3I,OAAOx4I,OAAQD,IAChC04I,EAAQh4I,EAAK+3I,OAAOz4I,GACpBU,EAAK8mR,eAAeptR,KAAKs+I,EAAMlvG,SAASunF,QAIhDw2J,WAAY,WACR,IAAiBvnR,EAAG04I,EAAhBh4I,EAAOjI,KAEX,IADAiI,EAAK+mR,cAAgB,GAChBznR,EAAI,EAAGA,EAAIU,EAAK+3I,OAAOx4I,OAAQD,IAChC04I,EAAQh4I,EAAK+3I,OAAOz4I,GACpBU,EAAK+mR,cAAcrtR,KAAKs+I,EAAMylH,WAItCwW,OAAQ,SAASxzQ,EAAOmD,GACpB,GAAI7L,KAAKquR,aAAc,CACnB,IAAIY,EAAgBjvR,KAAKsuR,iBACrBp/F,EAAQ+/F,EAAc//F,MACtBrxD,EAASoxJ,EAAcpxJ,OACvB5qG,EAAOg8P,EAAch8P,KAErBvqB,GAASq+P,EAAME,UAAU/3E,EAAMrxD,UAC/BA,EAASr1H,EAAW,GAAIq1H,EAAQqxD,EAAMrxD,SAGtCn1H,GAASq+P,EAAME,UAAU/3E,EAAMj8J,QAC/BA,EAAOi8J,EAAMj8J,MAEjBpnB,EAAQgyH,OAAOA,EAAOzO,MAAOyO,EAAO7wH,MAAO6wH,EAAOjnG,SAClD/qB,EAAQonB,KAAKA,EAAKm8F,MAAOn8F,EAAK2D,WAItCthB,MAAO,SAASy7G,GACZ/wH,KAAKkvR,IAAMn+J,EACX/wH,KAAKmvR,IAAMp+J,EACX/wH,KAAKovR,IAAMr+J,EACX/wH,KAAKguR,eAAgB,EACrBhuR,KAAKmuR,iBAAkB,EACvBnuR,KAAKqvR,YAAc,GACnB,IAAK,IAAI9nR,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CACzC,IAAI04I,EAAQjgJ,KAAKggJ,OAAOz4I,GACxBvH,KAAKqvR,YAAY1tR,KAAKs+I,EAAMylH,YAIpC/xD,OAAQ,WACJ,IAAIpsM,EACA+nR,EAAiBtvR,KAAKquR,aAE1B,IAAK9mR,EAAI,EAAGA,EAAIvH,KAAKsa,IAAI9S,OAAQD,IACpBvH,KAAKsa,IAAI/S,GACX22I,OAAO5xI,QAAQgjR,IAI9Bh3J,MAAO,SAAS5vH,GAKZ,OAJIssH,EAAQtsH,KACR1I,KAAK6kR,OAASn8Q,GAGX1I,KAAK6kR,QAGhB9zO,OAAQ,WACJ,IAAIwsC,EAASv9E,KAAK8kR,aAAavnM,SAC3B4jD,EAAenhI,KAAKs4H,QACxBt4H,KAAKmuR,iBAAkB,EACvB,IAAK,IAAI5mR,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CACzC,IAAI04I,EAAQjgJ,KAAKggJ,OAAOz4I,GACxB45H,GAAgBA,EAAenhI,KAAK+uR,eAAexnR,GAAKvH,KAAK4uR,aAAe,IAC5E3uI,EAAMlvG,OAAOowF,EAAc5jD,GAE/Bv9E,KAAK4d,WAGT2c,KAAM,SAASS,EAAQ+1F,GACnB,IAAInsF,EAAO2qP,EAGP7pB,EAAQnoL,EAAQ0iE,EAChB14I,EAAG+wH,EAAOk3J,EACGC,EACbh3J,EAAQC,EALRg3J,EAAM,IAAI11J,EACV21J,EAAM,IAAI31J,EAGV41J,EAAU,EAGd,IAAkB,IAAd50P,EAAO72B,IAA0B,IAAd62B,EAAO51B,EAAU,CAGpC,IAFAm4E,EAASv9E,KAAK8kR,aAAavnM,SAC3Bv9E,KAAK6kR,OAAS7kR,KAAK6vR,eAAe9oB,EAAMe,UAAUvqL,EAAQwzC,IACrDxpH,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAChC04I,EAAQjgJ,KAAKggJ,OAAOz4I,GACpB+wH,GAASt4H,KAAK6kR,OAAS7kR,KAAK+uR,eAAexnR,GAAKvH,KAAK4uR,aAAe,IACpE3uI,EAAMlvG,OAAOunF,EAAO/6C,GAChB0iE,EAAMvxI,eAAe,WACrBuxI,EAAMqkE,OAAOrkE,GAEjBjgJ,KAAK8vR,WAAY,EAErB9vR,KAAK4d,cACF,CACH,GAAI5d,KAAK+vR,aAAc,CACnB,IAAIC,EAAMhwR,KAAKiwR,kBAAkBl/J,EAAE84I,MAAM7pQ,KAAKovR,MAE9C,GAAc,IAAVY,EAAI5qR,GAAqB,IAAV4qR,EAAI7rR,EAEnB,YADAnE,KAAKmvR,IAAMp+J,GAGfnsF,EAAQorP,EACRhwR,KAAKovR,IAAM,IAAIp1J,EAAMh6H,KAAKovR,IAAIhqR,EAAI4qR,EAAI5qR,EAAGpF,KAAKovR,IAAIjrR,EAAI6rR,EAAI7rR,QAE1DygC,EAAQmsF,EAAE84I,MAAM7pQ,KAAKmvR,KA4BzB,IAzBInvR,KAAK8mR,aAAa9rP,IAClB20P,EAAMD,EAAM9qP,EACZ2qP,GAAW,IAEPvvR,KAAK6kR,QACLjgP,EAAMmM,OAAO,IAAIipF,EAAM,EAAG,GAAIh6H,KAAK6kR,SAEtB,GAAb7pP,EAAO51B,EACPsqR,EAAItqR,EAAIw/B,EAAMx/B,EACK,GAAZ41B,EAAO51B,IACduqR,EAAIvqR,EAAIw/B,EAAMx/B,IAED,GAAb41B,EAAO72B,EACPurR,EAAIvrR,EAAIygC,EAAMzgC,EACK,GAAZ62B,EAAO72B,IACdwrR,EAAIxrR,EAAIygC,EAAMzgC,IAIjBorR,IACDE,EA5XhB,SAA2B5F,EAAKnkB,GAC5B,IAAInvP,EAoBJ,OAlBc,GAAVszQ,EAAIzkR,IAAqB,GAAVykR,EAAI1lR,EACnBoS,EAASmvP,EAAOjqI,cACA,GAATouJ,EAAIzkR,GAAmB,GAATykR,EAAI1lR,EACzBoS,EAASmvP,EAAOlqI,WACC,GAAVquJ,EAAIzkR,GAAoB,GAATykR,EAAI1lR,EAC1BoS,EAASmvP,EAAOhqI,WACA,GAATmuJ,EAAIzkR,IAAoB,GAAVykR,EAAI1lR,EACzBoS,EAASmvP,EAAO/pI,aACC,IAAVkuJ,EAAIzkR,IAAqB,GAAVykR,EAAI1lR,EAC1BoS,EAASmvP,EAAO35O,SACC,IAAV89P,EAAIzkR,GAAoB,GAATykR,EAAI1lR,EAC1BoS,EAASmvP,EAAOthP,MACA,GAATylQ,EAAIzkR,GAAoB,IAAVykR,EAAI1lR,EACzBoS,EAASmvP,EAAO75O,QACC,GAAVg+P,EAAIzkR,GAAqB,IAAVykR,EAAI1lR,IAC1BoS,EAASmvP,EAAO55O,SAGbvV,EAuWmB25Q,CAAkBl1P,EAAQh7B,KAAK8kR,cAC7CrsJ,GAAUz4H,KAAK8kR,aAAa93Q,MAAQ43B,EAAMx/B,EAAI41B,EAAO51B,GAAKpF,KAAK8kR,aAAa93Q,MAC5E0rH,GAAU14H,KAAK8kR,aAAan4Q,OAASi4B,EAAMzgC,EAAI62B,EAAO72B,GAAKnE,KAAK8kR,aAAan4Q,QAG5EpF,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CAGrC,GADAm+P,GADAzlH,EAAQjgJ,KAAKggJ,OAAOz4I,IACLm+P,SACX6pB,EAAU,CACV,IAAK/H,GAAQvnI,GACT,SAEJuvI,EAAYxvR,KAAKmwR,gBAAgBzqB,EAAQgqB,EAAKC,EAAKJ,OAChD,EACHC,EAAY9pB,EAAOv+P,SACTwoC,MAAM8oF,EAAQC,EAAQ+2J,EAAazvR,KAAK8kR,aAAavnM,SAAU0iE,EAAMlvG,SAASunF,OACxF,IAAI83J,EAAYZ,EAAUjyM,SAC1B6yM,EAAUr/O,OAAO20N,EAAOnoL,UAAWv9E,KAAK6kR,QACxC2K,EAAY,IAAIt0J,EAAKk1J,EAAUhrR,EAAIoqR,EAAUxiR,MAAQ,EAAGojR,EAAUjsR,EAAIqrR,EAAU7iR,OAAS,EAAG6iR,EAAUxiR,MAAOwiR,EAAU7iR,QAE3H,GAAI6iR,EAAUxiR,OAASizI,EAAM/4I,QAAQokN,UAAYkkE,EAAU7iR,QAAUszI,EAAM/4I,QAAQwyO,UAAW,CAC1F,IAAI22C,EAAY3qB,EAChBzlH,EAAMylH,OAAO8pB,GACTvvI,EAAMvxI,eAAe,WACrBuxI,EAAMqkE,OAAOrkE,EAAOowI,EAAWb,GAE/Ba,EAAUrjR,QAAUwiR,EAAUxiR,OAASqjR,EAAU1jR,SAAW6iR,EAAU7iR,QACtEszI,EAAMlvG,OAAOkvG,EAAMlvG,SAASunF,OAEhCs3J,GAAW,GAIfA,IACIA,GAAWroR,GACXioR,EAAYxvR,KAAKmwR,gBAAgBnwR,KAAK8kR,aAAc4K,EAAKC,EAAKJ,GAC9DvvR,KAAK0lQ,OAAO8pB,IAEZxvR,KAAKikR,gBAETjkR,KAAK4d,WAGT5d,KAAK8uR,aAGT9uR,KAAKmvR,IAAMp+J,GAGf+1J,aAAc,SAAS9rP,GACnB,OAAoB,IAAbA,EAAO51B,GAAwB,IAAb41B,EAAO72B,GAGpCq2B,OAAQ,WAGJ,IAFA,IAAIwlH,EAAShgJ,KAAKggJ,OACdq8F,EAASr8O,KAAKqvR,YACTzlR,EAAM,EAAGA,EAAMo2I,EAAOx4I,OAAQoC,IACnCo2I,EAAOp2I,GAAK87P,OAAOrpB,EAAOzyO,IAE9B5J,KAAKikR,gBACLjkR,KAAK4d,UACL5d,KAAKguR,cAAgBprR,EACrB5C,KAAKmuR,gBAAkBvrR,EACvB5C,KAAK8vR,UAAYltR,GAGrB0tR,0BAA2B,SAAS5qB,GAChC,OAAI1lQ,KAAK0vL,QAAQ6gG,MACNvwR,KAAK0vL,QAAQ6gG,MAAMC,yBAAyB9qB,GAEhDA,GAGX+qB,sBAAuB,SAAS/qB,GAC5B,OAAI1lQ,KAAK0vL,QAAQ6gG,MACNvwR,KAAK0vL,QAAQ6gG,MAAMG,qBAAqBhrB,GAE5CA,GAGXmqB,eAAgB,SAAS3qR,GACrB,IAAIyrR,EAAO3wR,KAAK4wR,cACZC,EAAYxtR,KAAKuV,IAAI+3Q,EAAKr4J,OA/jEb,GAOJ,GAyjEb,OAAOq4J,EAAOttR,KAAKkN,MAAOrL,EAAI,IAAO2rR,GAAaA,EAAa3rR,EAAI,KAGvE+qR,kBAAmB,SAASzrR,GACxB,GAAIA,aAAakrL,EAAQ11D,MACrB,OAAO,IAAI01D,EAAQ11D,MAAMh6H,KAAKiwR,kBAAkBzrR,EAAEY,GAAIpF,KAAKiwR,kBAAkBzrR,EAAEL,IAE/E,IAAIwsR,EAAO3wR,KAAK4wR,eAAiB,GAC7BE,EAAWztR,KAAKuV,IAAI+3Q,EAAKlhR,MAzkEjB,GAOJ,GAmkER,OAAOkhR,EAAOttR,KAAKkN,MAAM/L,EAAIssR,GAAYA,EAAWtsR,GAI5DosR,YAAa,WAGT,QAFe5wR,KAAK0vL,QAAQxoL,QAAQqnD,UACX,IAAIypK,MAAQ,IAAI24D,MAAQ,IAIrDZ,WAAY,WACR,IAAIxhO,EAAWvuD,KAAK0vL,QAAQxoL,QAAQqnD,SAChCypK,GAAQzpK,GAAY,IAAIypK,KACxB24D,GAAQ34D,GAAQ,IAAI24D,KACxB,OAAoB,IAAbpiO,IAA+B,IAATypK,IAA2B,IAAT24D,GAGnDR,gBAAiB,SAASzqB,EAAQgqB,EAAKC,EAAKJ,GACxC,IAGIa,EAHAv0J,EAAK6pI,EAAOlqI,UAAUouI,KAAK8lB,GAC3B3zJ,EAAK2pI,EAAOjqI,cAAcmuI,KAAK+lB,GAC/BH,EAAYt0J,EAAKe,WAAWJ,EAAIE,GAOpC,OALKwzJ,KACDa,EAAYZ,EAAUjyM,UACZxsC,OAAO20N,EAAOnoL,UAAWv9E,KAAK6kR,QACxC2K,EAAY,IAAIt0J,EAAKk1J,EAAUhrR,EAAIoqR,EAAUxiR,MAAQ,EAAGojR,EAAUjsR,EAAIqrR,EAAU7iR,OAAS,EAAG6iR,EAAUxiR,MAAOwiR,EAAU7iR,SAEpH6iR,GAGX5nQ,KAAM,WACF,IAAIywG,EAAM9wH,EAAG04I,EACb,GAAIjgJ,KAAKmvR,KAAOnvR,KAAKkvR,IACjB,GAAIlvR,KAAK8vR,UACLz3J,EAAO,IAAIosJ,EAAWzkR,KAAMA,KAAKggJ,OAAQhgJ,KAAK+uR,gBAC9C/uR,KAAK8vR,WAAY,OACd,GAAI9vR,KAAK+wR,cAAe,CAC3B,GAAI/wR,KAAK0vL,QAAQ6gG,MACb,IAAKhpR,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,IAAK,CAErC,IAAIm+P,GADJzlH,EAAQjgJ,KAAKggJ,OAAOz4I,IACDm+P,SACnBA,EAAS1lQ,KAAKywR,sBAAsBzwR,KAAKswR,0BAA0B5qB,IACnEzlH,EAAMylH,OAAOA,GACb1lQ,KAAKikR,gBACLjkR,KAAK4d,UAGb,IAAKrW,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,KAChC04I,EAAQjgJ,KAAKggJ,OAAOz4I,IACd+7Q,cAEVjrJ,EAAO,IAAIwrJ,EAAc7jR,KAAKggJ,OAAQhgJ,KAAKqvR,YAAarvR,MACxDA,KAAK0vL,QAAQshG,oBAOrB,OAHAhxR,KAAKguR,cAAgBprR,EACrB5C,KAAKmuR,gBAAkBvrR,EACvB5C,KAAK8vR,UAAYltR,EACVy1H,GAGX04J,YAAa,WAGT,IAFA,IAAI/wI,EAAShgJ,KAAKggJ,OACdq8F,EAASr8O,KAAKqvR,YACTzlR,EAAM,EAAGA,EAAMo2I,EAAOx4I,OAAQoC,IACnC,IAAKo2I,EAAOp2I,GAAK87P,SAAS50M,OAAOurL,EAAOzyO,IACpC,OAAO,EAGf,OAAO,GAGXq6Q,cAAe,WACX,IAAIve,EAA+B,GAAtB1lQ,KAAKggJ,OAAOx4I,OACrBxH,KAAKggJ,OAAO,GAAG0lH,SAASv+P,QACxBnH,KAAK0vL,QAAQxjD,YAAYlsI,KAAKggJ,QAAQ,GAE1ChgJ,KAAK0lQ,OAAOA,IAGhB9nP,QAAS,WACL,IAAiBuH,EAAGugP,EAAhBz9P,EAAOjI,KACX,GAAIA,KAAKggJ,OAAOx4I,OAAS,EAAG,CACxBk+P,EAAS1lQ,KAAK0lQ,SACd1lQ,KAAKk+I,OAAO5xI,SAAQ,GACpBtM,KAAKk+I,OAAOpxI,SAAS44P,EAAOlqI,WAC5B74H,EAAEK,KAAKhD,KAAKsa,KAAK,WACb6K,EAAIld,EAAKymR,iBAAiB,IAAI10J,EAAMh6H,KAAKoF,EAAGpF,KAAKmE,IACjDnE,KAAKk+I,OAAOpxI,SAASqY,EAAEq2G,cAE3Bx7H,KAAKk+I,OAAOpxI,SAAS44P,EAAOlqI,WAE5B,IAAIj+C,EAAS,IAAIy8C,EAAM0rI,EAAO14P,MAAQ,EAAG04P,EAAO/4P,OAAS,GAGzD,GAFA3M,KAAKk+I,OAAOntG,OAAO/wC,KAAK6kR,OAAQtnM,GAChCv9E,KAAKqrF,KAAKsoH,OAAO,CAAE3mM,MAAO04P,EAAO14P,MAAOL,OAAQ+4P,EAAO/4P,SACnD3M,KAAKixR,cAAe,CACpB,IAAI1gG,EAAQvwL,KAAKkH,QAAQqnD,SAASxd,OAAOw/I,MACzCvwL,KAAKkxR,qBAAuB,IAAIh2J,EAAKwqI,EAAOnoL,SAASn4E,EAAGsgQ,EAAOvhQ,EAAIosL,EAAMpsL,EAAG,EAAG,GAAGsmQ,QAAQl6E,EAAMvjL,OAChGhN,KAAKixR,cAAct9E,OAAO,CAAEvuM,EAAGsgQ,EAAO14P,MAAQ,EAAIujL,EAAMvjL,MAAQ,UAGpEhN,KAAKk+I,OAAO5xI,SAAQ,MAK5B6kR,GAAWvpR,EAAM7E,OAAO,CACxBoF,KAAM,SAASunL,GACX,IAAIN,EAAaM,EAAQxoL,QAAQkoL,WACjCpvL,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASkoL,GAE5CpvL,KAAKk+I,OAAS,IAAIm/H,EAAUr9Q,KAAKkH,SACjClH,KAAK0vL,QAAUA,GAEnBxoL,QAAS,CACL22H,OAAQ,CACJzO,MAAO,UACPpiH,MAAO,EACPgvI,SAAU,QAEd/oH,KAAM,CACFm8F,MAAO67D,IAGf31K,MAAO,SAASy7G,GACZ/wH,KAAKkvR,IAAMlvR,KAAKoxR,IAAMrgK,EACtB/wH,KAAK4d,UACL5d,KAAK0vL,QAAQ2hG,OAAOrxR,MAAM,IAE9B2L,IAAK,WACD3L,KAAKkvR,IAAMlvR,KAAKoxR,IAAMxuR,EACtB5C,KAAK0vL,QAAQ2hG,OAAOrxR,MAAM,IAE9B0lQ,OAAQ,SAASh9P,GAIb,OAHIA,IACA1I,KAAKuuR,QAAU7lR,GAEZ1I,KAAKuuR,SAEhBh0P,KAAM,SAASw2F,GACX/wH,KAAKoxR,IAAMrgK,EACX/wH,KAAK4d,WAETA,QAAS,WACL,GAAI5d,KAAKkvR,IAAK,CACV,IAAIoC,EAAep2J,EAAKe,WAAWj8H,KAAK0vL,QAAQ69F,aAAavtR,KAAKkvR,KAAMlvR,KAAK0vL,QAAQ69F,aAAavtR,KAAKoxR,MACvGpxR,KAAK0lQ,OAAOxqI,EAAKe,WAAWj8H,KAAKkvR,IAAKlvR,KAAKoxR,MAC3CpxR,KAAKk+I,OAAOpxI,SAASwkR,EAAa91J,WAClCx7H,KAAKk+I,OAAOy1D,OAAO,CAAEhnM,OAAQ2kR,EAAa3kR,OAAS,EAAGK,MAAOskR,EAAatkR,MAAQ,QAK1F4gR,GAAkBhmR,EAAM7E,OAAO,CAC/BoF,KAAM,SAASk/Q,GACXrnR,KAAKkH,QAAUsB,EAAW,GAAI6+Q,EAAUngR,SACxClH,KAAKunR,GAAKF,EACVrnR,KAAKk+I,OAAS,IAAI9f,EAAOp+H,KAAKkH,SAC9BlH,KAAK4d,WAETs+P,OAAQ,SAASxzQ,GACb,IAAIxB,EAAUlH,KAAKkH,QACfgoL,EAAQhoL,EAAQgoL,MAChBrxD,EAAS32H,EAAQ22H,OACjB5qG,EAAO/rB,EAAQ+rB,KAEfvqB,GAASq+P,EAAME,UAAU/3E,EAAMrxD,UAC/BA,EAASr1H,EAAW,GAAIq1H,EAAQqxD,EAAMrxD,SAGtCn1H,GAASq+P,EAAME,UAAU/3E,EAAMj8J,QAC/BA,EAAOi8J,EAAMj8J,MAGjBjzB,KAAKk+I,OAAOy1D,OAAO,CACf91E,OAAQA,EACR5qG,KAAMA,KAGdrV,QAAS,WACL,IAAImzG,EAAI/wH,KAAKunR,GAAGtnI,MAAMyvC,QAAQ6hG,YAAYvxR,KAAKunR,GAAGz6Q,YAC9Cs6M,EAAWr2F,EAAE84I,MAAM7pQ,KAAKunR,GAAGtnI,MAAMylH,OAAO,eAAelqI,WACvD9yH,EAAQ,IAAIwyH,EAAKnK,EAAE3rH,EAAG2rH,EAAE5sH,EAAG,EAAG,GAClCuE,EAAM+hQ,QAAQzqQ,KAAKkH,QAAQ8F,MAAQ,EAAGhN,KAAKkH,QAAQyF,OAAS,GAC5D3M,KAAKwxR,cAAgB9oR,EACrB1I,KAAKk+I,OAAOy1D,OAAO,CAAEp2H,OAAQ,IAAIy8C,EAAMotF,EAAShiN,EAAGgiN,EAASjjN,MAEhEyiR,SAAU,SAAS71J,GACf,IAAI+7J,EAAK9sR,KAAKunR,GAAGtnI,MAAMyvC,QAAQ6hG,YAAYxgK,GAC3C,OAAO/wH,KAAKwxR,cAAcr8P,SAAS23P,MAI3C,SAAStF,GAAQ37Q,GACb,IAAI0iD,EAAW1iD,EAAQ3E,QAAQqnD,SAC/B,OAAOA,IAA8B,IAAlBA,EAASypK,KAgBhC,SAASouD,GAAOn1Q,GACZ,OAAwB,IAAjBA,EAAKu9E,UAAqC,IAAhBv9E,EAAKkwM,SAAsC,IAAlBlwM,EAAKm2B,SAGnE5+B,EAAWknL,EAAS,CAChBkzF,cAAeA,EACfiB,cAAeA,EACfQ,YAAaA,EACbF,aAAcA,EACdD,kBAAmBA,EACnBN,gBAAiBA,EACjBF,qBAAsBA,EACtBiJ,sBAAuBA,GACvBvF,eAAgBA,EAChBwG,gBAAiBA,GACjBxI,gBAAiBA,EACjB2I,gBAAiBA,GACjBoD,SAAUA,GACV3I,YAAaA,GACbgF,kBAAmBA,GACnBtL,eAAgBA,EAChBY,mBAAoBA,EACpBkC,YAAaA,EACbG,WAAYA,EACZoF,qBAAsBA,GACtBI,eAAgBA,GAChBC,gBAAiBA,GACjB3D,cAAeA,EACflB,aAAcA,EACdW,YAAaA,EACb0B,mBAAoBA,EACpB3D,WAAYA,IAt2ExB,CAw2EG3jR,OAAOH,MAAM+G,QAEhB,SAAU/E,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+uL,EAAU/uL,EAAMmpB,QAAQ4lK,QACxB+hF,EAAQ/hF,EAAQ+hF,MAChBznM,EAAO0lH,EAAQ1lH,KACfumM,EAAO7gF,EAAQ6gF,KACf/nQ,EAAa7H,EAAM6H,WACnByyH,EAAOy0D,EAAQz0D,KACfC,EAAOw0D,EAAQx0D,KACfwzI,EAAah/E,EAAQg/E,WACrBttG,EAAMsuB,EAAQtuB,IACdqwH,EAAY/hG,EAAQ+hF,MACpB1K,EAAQr3E,EAAQq3E,MAChB/sI,EAAQ01D,EAAQ11D,MAChB03J,EAAU,KACVv8J,EAAa9xH,KAAK+xH,GAAK,IACvBjgG,EAAW4xO,EAAM5xO,SACjB+I,EAAOv7B,EAAEu7B,KAMTyzP,EAAahxR,EAAMiH,MAAM7E,OAAO,CAChCqpK,eAAgB,CACZ1mK,KAAM,OACNksR,QAAS,OACT/qJ,MAAO,KACP//G,SAAS,EAKTuyP,aAAa,EAIbltL,SAAU,GAIV0lM,aAAc,GAIdC,WAAY,IAKZC,qBAAsB,GAItBC,mBAAoB,GAMpBC,4BAA6B,GAI7BC,2BAA4B,GAI5BC,6BAA8B,GAK9Bx+M,KAAM,CAIF3mE,MAAO,KAIPu5E,QAAS,GAITC,QAAS,GAIT4rM,kBAAmB,GAInBC,kBAAmB,IAOvBC,gBAAiB,GAIjBC,kBAAmB,EAInBC,iBAAkB,EAIlBC,eAAgB,IAIhBC,iBAAkB,IAIlBC,2BAA4B,IAI5BC,iCAAiC,EAIjCC,kBAAkB,EAClBC,yBAAyB,EACzBC,iBAAiB,EACjBC,oBAAoB,GAExB7qR,KAAM,aAQN8qR,qBAAsB,SAAS1gB,GAC3B,IAAKA,EACD,KAAM,0BAIVxL,EAAMzlQ,QAAQixQ,GAAY,SAAS7tQ,GAC/BA,EAAEkuQ,gBAINL,EAAWrtP,MAAK,SAAShgB,EAAGigB,GACxB,OAAOA,EAAEugP,OAAO14P,MAAQ9H,EAAEwgQ,OAAO14P,SAerC,IAZA,IAQIzF,EARA2rR,EAAWlzR,KAAKkH,QAAQysE,KAAK3mE,MAC7Bu5E,EAAUvmF,KAAKkH,QAAQysE,KAAKy+M,kBAC5B5rM,EAAUxmF,KAAKkH,QAAQysE,KAAK0+M,kBAC5B1lR,EAAS,EACTwmR,EAASnzR,KAAKkH,QAAQysE,KAAK4S,QAE3BnhF,EAAI+tR,EACJhvR,EAFSnE,KAAKkH,QAAQysE,KAAK6S,QAI3B4sM,EAAgB,GAChBC,EAAgB,GAEb9gB,EAAW/qQ,OAAS,GAAG,CACtBpC,GAAK8tR,IAEL9tR,EAAI+tR,EACJhvR,GAAKwI,EAAS65E,EAEd75E,EAAS,GAEb,IAAIkpQ,EAAYtD,EAAWljP,MAE3B,IADArvB,KAAKszR,aAAazd,EAAW,IAAI77I,EAAM50H,EAAGjB,IACrCoD,EAAI,EAAGA,EAAIsuQ,EAAU9pN,MAAMvkD,OAAQD,IACpC8rR,EAAc1xR,KAAKk0Q,EAAU9pN,MAAMxkD,IAEvC,IAAKA,EAAI,EAAGA,EAAIsuQ,EAAU3G,MAAM1nQ,OAAQD,IACpC6rR,EAAczxR,KAAKk0Q,EAAU3G,MAAM3nQ,IAEvC,IAAIgsR,EAAe1d,EAAUnQ,OACzB8tB,EAAgBD,EAAa5mR,QAC7B6mR,GAAiB,GAAK1qR,MAAM0qR,MAC5BA,EAAgB,GAEpB,IAAIC,EAAeF,EAAavmR,OAC5BymR,GAAgB,GAAK3qR,MAAM2qR,MAC3BA,EAAe,GAGfD,GAAiB7mR,IACjBA,EAAS6mR,GAEbpuR,GAAKquR,EAAeltM,EAGxB,MAAO,CACHx6B,MAAOsnO,EACPnkB,MAAOkkB,IAIfE,aAAc,SAASzd,EAAW9kJ,GAC9B,IAAIxpH,EAAGojC,EACH+6N,EAASmQ,EAAUnQ,OACnBguB,EAAS3iK,EAAE3rH,EAAIsgQ,EAAOtgQ,EACtBuuR,EAAS5iK,EAAE5sH,EAAIuhQ,EAAOvhQ,EAE1B,IAAKoD,EAAI,EAAGA,EAAIsuQ,EAAU9pN,MAAMvkD,OAAQD,IAAK,CACzC,IAAI27B,EAAO2yO,EAAU9pN,MAAMxkD,GACvBqsR,EAAa1wP,EAAKwiO,SACG,IAArBkuB,EAAW5mR,OAAqC,IAAtB4mR,EAAWjnR,QAAiC,IAAjBinR,EAAWxuR,GAA4B,IAAjBwuR,EAAWzvR,IACtFyvR,EAAa,IAAI14J,EAAK,EAAG,EAAG,EAAG,IAEnC04J,EAAWxuR,GAAKsuR,EAChBE,EAAWzvR,GAAKwvR,EAChBzwP,EAAKwiO,OAAOkuB,GAEhB,IAAKrsR,EAAI,EAAGA,EAAIsuQ,EAAU3G,MAAM1nQ,OAAQD,IAAK,CACzC,IAAI64N,EAAOy1C,EAAU3G,MAAM3nQ,GAC3B,GAAI64N,EAAK/+F,OAAQ,CACb,IAAIwyJ,EAAY,GACZxyJ,EAAS++F,EAAK/+F,OAClB,IAAK12F,EAAI,EAAGA,EAAI02F,EAAO75H,OAAQmjC,IAAK,CAChC,IAAI4iH,EAAKlsB,EAAO12F,GAChB4iH,EAAGnoJ,GAAKsuR,EACRnmI,EAAGppJ,GAAKwvR,EACRE,EAAUlyR,KAAK4rJ,GAEnB6yE,EAAK/+F,OAASwyJ,GAItB,OADA7zR,KAAK8zR,yBAA2BpuB,EAAO14P,MAAQhN,KAAKkH,QAAQysE,KAAK4S,QAC1D,IAAIyzC,EAAM05J,EAAQC,IAG7BI,gBAAiB,SAAS7sR,GAItBlH,KAAKkH,QAAUvG,EAAM6H,WAAW,GAAIxI,KAAKosK,gBACrC26F,EAAMG,YAAYhgQ,KAItBlH,KAAKkH,QAAUvG,EAAM6H,WAAWxI,KAAKkH,QAASA,GAAW,QAwB7D8sR,EAA4BrzR,EAAMiH,MAAM7E,OAAO,CAC/CoF,KAAM,SAASunL,GAMX1vL,KAAK60Q,QAAU,IAAInG,EAMnB1uQ,KAAKi0R,SAAW,IAAIvlB,EAMpB1uQ,KAAK+rD,MAAQ,GAMb/rD,KAAKg4P,MAAQ,GAIbh4P,KAAKk0R,QAAU,IAAIxlB,EAMnB1uQ,KAAKm0R,WAAa,GAMlBn0R,KAAKo0R,WAAa,GAMlBp0R,KAAKq0R,mBAAqB,GAM1Br0R,KAAKs0R,cAAgB,GAMrBt0R,KAAKu0R,SAAW,IAAI7lB,EAOpB1uQ,KAAKw0R,UAAY,IAAI/iB,EAOrBzxQ,KAAKy0R,WAAa,KAElBz0R,KAAK0vL,QAAUA,GAanBxyK,QAAS,SAAShW,GAEd,GAAI6/P,EAAMG,YAAYlnQ,KAAK0vL,SACvB,KAAM,yBA6BV,OA1BA1vL,KAAKkH,QAAUvG,EAAM6H,WAAW,CACxBuqR,iBAAiB,EACjBF,kBAAkB,EAClBC,yBAAyB,GAE7B5rR,GAAW,IAGflH,KAAKi2D,QAELj2D,KAAK00R,qBAGL10R,KAAK20R,0BAGL30R,KAAKm0R,WAAa,IAAIzlB,EAAW1uQ,KAAK+rD,OACtC/rD,KAAKo0R,WAAa,IAAI1lB,EAAW1uQ,KAAKg4P,OAEtCh4P,KAAKy0R,WAAa,IAAIhjB,EACtBzxQ,KAAKm0R,WAAW7yR,SAAQ,SAASwvH,GAC7B9wH,KAAKy0R,WAAW3gB,QAAQhjJ,KACzB9wH,MACHA,KAAKo0R,WAAW9yR,SAAQ,SAASovH,GAC7B1wH,KAAKy0R,WAAW9gB,gBAAgBjjJ,KACjC1wH,MACIA,KAAKy0R,YAQhBG,cAAe,SAASpkB,GACpB,OAAOxwQ,KAAKk0R,QAAQ3kQ,IAAIihP,EAAW7gP,KAQvCklQ,SAAU,SAAS50I,GACf,OAAOjgJ,KAAK60Q,QAAQtlP,IAAI0wH,EAAMtwH,KAQlCmlQ,QAAS,SAAS5vR,EAAGigB,GACjB,OAAO4hP,EAAM78P,MAAMhF,EAAEgqQ,OAAO,SAAS9uC,GACjC,OAAOA,EAAKuvC,cAAczqQ,KAAOigB,MAOzC8wC,MAAO,WACHj2D,KAAKy0R,WAAa,KAClBz0R,KAAKw0R,WAAcx0R,KAAKkH,QAAQ2rR,kBAAoB7yR,KAAKkH,QAAQ4rR,wBAA2B,IAAIrB,EAAc,KAC9GzxR,KAAKu0R,UAAav0R,KAAKkH,QAAQ2rR,kBAAoB7yR,KAAKkH,QAAQ4rR,wBAA2B,IAAIpkB,EAAe,KAC9G1uQ,KAAK60Q,QAAU,IAAInG,EACnB1uQ,KAAKi0R,SAAW,IAAIvlB,EACpB1uQ,KAAK+rD,MAAQ,GACb/rD,KAAKg4P,MAAQ,GACbh4P,KAAKk0R,QAAU,IAAIxlB,EACnB1uQ,KAAKq0R,mBAAqB,GAC1Br0R,KAAKs0R,cAAgB,GACrBt0R,KAAKm0R,WAAa,GAClBn0R,KAAKo0R,WAAa,IAQtBW,WAAY,SAASC,GACjB,IAAIzpN,EAAO,GACPtmE,EAAI+vR,EAAe1+P,UACvB,IAAKrxB,EACD,OAAOsmE,EAGX,IADAA,EAAK5pE,KAAKsD,GACHA,EAAEgwR,iBACLhwR,EAAIA,EAAEgwR,gBACN1pN,EAAK5pE,KAAKsD,GAGd,OADAsmE,EAAKz1D,UACEy1D,GAGX2pN,2BAA4B,SAASj1I,GAEjC,OAAIA,EAAMk1I,cAAgBn1R,KAAKo1R,iBAAiBn1I,GACrCA,EAEHA,EAAMg1I,gBAAyBj1R,KAAKk1R,2BAA2Bj1I,EAAMg1I,iBAA7C,MAEpCI,sBAAuB,SAASnwR,EAAGigB,GAC/B,SAAIjgB,EAAEiwR,cAAen1R,KAAKs1R,eAAepwR,EAAGigB,KAGrCA,EAAEgwQ,aAAen1R,KAAKs1R,eAAenwQ,EAAGjgB,IAUnDowR,eAAgB,SAASC,EAAOrwR,GAC5B,IAAKqwR,EAAMJ,YACP,KAAM,yBAEV,GAAII,IAAUrwR,EACV,OAAO,EAEX,GAAIiwB,EAASogQ,EAAMpgP,SAAUjwC,GACzB,OAAO,EAGX,IADA,IAAIyzE,EAAa,GACRpxE,EAAI,EAAG8oB,EAAMklQ,EAAMpgP,SAAS3tC,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACvD,IAAI7C,EAAI6wR,EAAMpgP,SAAS5tC,GACnB7C,EAAEywR,aAAen1R,KAAKs1R,eAAe5wR,EAAGQ,IACxCyzE,EAAWh3E,KAAK+C,GAIxB,OAAOi0E,EAAWnxE,OAAS,GAE/BguR,gBAAiB,SAASv1I,GACtB,OAAIjgJ,KAAKkH,QAAQ6rR,kBACT9yI,EAAMw1I,cAAez1R,KAAK01R,WAAWz1I,QAGpCA,EAAMw1I,aAAez1R,KAAK01R,WAAWz1I,IAMnCA,EAAMw1I,cAAgBz1R,KAAK21R,OAAO11I,IAUjD21I,cAAe,SAAS31I,GACpB,OAAOA,EAAMw1I,cAAgBz1R,KAAK01R,WAAWz1I,KAAWjgJ,KAAK21R,OAAO11I,IAGxE41I,oBAAqB,SAAS3wR,EAAGigB,GAC7B,IAAKjgB,EACD,KAAM,gCAEV,IAAKigB,EACD,KAAM,gCAGV,IAAKnlB,KAAKw0R,UACN,KAAM,0BAEV,IAAIsB,EAAK91R,KAAK+0R,WAAW7vR,GACrB82H,EAAKh8H,KAAK+0R,WAAW5vQ,GACrBy4C,EAAQ,KACZ,GAAImpM,EAAMpmF,QAAQm1G,IAAO/uB,EAAMpmF,QAAQ3kD,GACnC,OAAOh8H,KAAKw0R,UAAU/2O,KAAK5vC,KAK/B,IAHA,IAAIkoR,EAAKD,EAAG,GACRE,EAAKh6J,EAAG,GACRz0H,EAAI,EACDwuR,IAAOC,IACVp4N,EAAQk4N,EAAGvuR,OACXA,GACSuuR,EAAGtuR,QAAUD,GAAKy0H,EAAGx0H,UAG9BuuR,EAAKD,EAAGvuR,GACRyuR,EAAKh6J,EAAGz0H,GAEZ,OAAKq2D,EAIM1/B,EAAKl+B,KAAKw0R,UAAUzoO,OAAO,SAAS+kE,GACvC,OAAOA,EAAEjjH,KAAKyoB,YAAcsnC,KAJzB59D,KAAKw0R,UAAU/2O,KAAK5vC,MAcnC8nR,OAAQ,SAAS3mP,GACb,OAAQA,EAAKimP,iBAUjBS,WAAY,SAASz1I,GAEjB,QAAKA,EAAM3zI,YAGH2zI,EAAMg1I,gBAAoCj1R,KAAK01R,WAAWz1I,EAAMg1I,iBAAxCh1I,EAAM3zI,YAG1C2pR,aAAc,SAASh2I,GAEnB,SAAIA,EAAMk1I,cAAel1I,EAAMw1I,cAGxBx1I,EAAMg1I,iBAAmBj1R,KAAKi2R,aAAah2I,EAAMg1I,kBAO5DP,mBAAoB,WAEhB,IAAI10R,KAAKkH,QAAQ2rR,iBAkBb,KAAM,oDAjBN,IAAK,IAAItrR,EAAI,EAAG8oB,EAAMrwB,KAAK0vL,QAAQ1vC,OAAOx4I,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAC5D,IAAI04I,EAAQjgJ,KAAK0vL,QAAQ1vC,OAAOz4I,GAGhC,GAAKvH,KAAKkH,QAAQ6rR,kBAAoB/yR,KAAK01R,WAAWz1I,IAAWA,EAAMk1I,YACnEn1R,KAAKs0R,cAAc3yR,KAAKs+I,OAD5B,CAIA,IAAI/8G,EAAO,IAAI8mC,EAAKi2E,EAAMtwH,GAAIswH,GAC9B/8G,EAAKssO,WAAY,EAGjBxvQ,KAAK60Q,QAAQ5nQ,IAAIgzI,EAAMtwH,GAAIuT,GAC3BljC,KAAK+rD,MAAMpqD,KAAKuhC,MAY5ByxP,wBAAyB,WACrB,GAAwC,IAApC30R,KAAK0vL,QAAQq3F,YAAYv/Q,OAG7B,IAAK,IAAID,EAAI,EAAG8oB,EAAMrwB,KAAK0vL,QAAQq3F,YAAYv/Q,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACjE,IAAIm7Q,EAAO1iR,KAAK0vL,QAAQq3F,YAAYx/Q,GAEpC,GAAIvH,KAAKw1R,gBAAgB9S,GACrB1iR,KAAKq0R,mBAAmB1yR,KAAK+gR,OADjC,CAKA,IAAIp1Q,EAAUo1Q,EAAKqF,gBAAyBrF,EAAKqF,gBAAgB9nI,MAA5B,KACjCi2I,EAAQxT,EAAKiB,gBAAyBjB,EAAKiB,gBAAgB1jI,MAA5B,KAGnC,GAAK3yI,GAAW4oR,EAKhB,IAAI/gQ,EAASn1B,KAAKs0R,cAAehnR,IAAYtN,KAAKi0R,SAAShmB,YAAY3gQ,GAIvE,IAAI6nB,EAASn1B,KAAKs0R,cAAe4B,IAAUl2R,KAAKi0R,SAAShmB,YAAYioB,GAArE,CAMIl2R,KAAKi0R,SAAShmB,YAAY3gQ,KAC1BA,EAAStN,KAAKi0R,SAAS3mR,IAEvBtN,KAAKi0R,SAAShmB,YAAYioB,KAC1BA,EAAOl2R,KAAKi0R,SAASiC,IAGzB,IAAIC,EAAan2R,KAAK60R,SAASvnR,GAC3B8oR,EAAWp2R,KAAK60R,SAASqB,GAC7B,GAAKC,IAAeC,GAAap2R,KAAKq2R,oBAAoBF,EAAYC,GAClEp2R,KAAKq0R,mBAAmB1yR,KAAK+gR,OADjC,CAKA,GAAmB,OAAfyT,GAAoC,OAAbC,EACvB,KAAM,oCAEV,IAAIp2R,KAAKkH,QAAQ2rR,iBAYb,KAAM,oDAVN,GAAIsD,EAAW3mB,WAAa4mB,EAAS5mB,UACjCxvQ,KAAKq0R,mBAAmB1yR,KAAK+gR,OADjC,CAIA,IAAI4T,EAAU,IAAI/lB,EAAK4lB,EAAYC,EAAU1T,EAAK/yP,GAAI+yP,GAEtD1iR,KAAKk0R,QAAQjnR,IAAIy1Q,EAAK/yP,GAAI2mQ,GAC1Bt2R,KAAKg4P,MAAMr2P,KAAK20R,UA/BhBt2R,KAAKq0R,mBAAmB1yR,KAAK+gR,QAJ7B1iR,KAAKq0R,mBAAmB1yR,KAAK+gR,QAL7B1iR,KAAKq0R,mBAAmB1yR,KAAK+gR,MAgDzC2T,oBAAqB,SAASvlK,EAAG9rH,GAC7B,OAAO+hQ,EAAM7zD,IAAIlzM,KAAKg4P,OAAO,SAAStnI,GAClC,OAAOA,EAAEpjH,SAAWwjH,GAAKJ,EAAEppH,SAAWtC,GAAK0rH,EAAEpjH,SAAWtI,GAAK0rH,EAAEppH,SAAWwpH,QA0ClFqoJ,EAAewY,EAAW5uR,OAAO,CACjCoF,KAAM,SAASunL,GAGX,GADAiiG,EAAW5pR,GAAGI,KAAKoC,KADRvK,MAEP+mQ,EAAMG,YAAYx3E,GAClB,KAAM,4BAEV1vL,KAAK0vL,QAAUA,GAGnB40B,OAAQ,SAASp9M,GAEblH,KAAK+zR,gBAAgB7sR,GAErB,IACImxQ,EADU,IAAI2b,EAA0Bh0R,KAAK0vL,SAC7BxyK,QAAQhW,GAC5B,IAAImxQ,EAAM13F,UAAV,CAIA,IAAI4xF,EAAa8F,EAAMnG,yBACvB,IAAInL,EAAMpmF,QAAQ4xF,GAAlB,CAGA,IAAK,IAAIhrQ,EAAI,EAAGA,EAAIgrQ,EAAW/qQ,OAAQD,IAAK,CACxC,IAAIsuQ,EAAYtD,EAAWhrQ,GAC3BvH,KAAKo5Q,YAAYvD,EAAW3uQ,GAEhC,IAAIqvR,EAAev2R,KAAKizR,qBAAqB1gB,GAC7C,OAAO,IAAI7iF,EAAQ8mG,YAAYx2R,KAAK0vL,QAAS6mG,MAGjDnd,YAAa,SAASf,EAAOnxQ,GAErB6/P,EAAME,UAAU//P,IAChBlH,KAAK+zR,gBAAgB7sR,GAEzBlH,KAAKq4Q,MAAQA,EAEb,IAAIoe,EAAiD,EAA5Bz2R,KAAKkH,QAAQ2qR,aACtC7xR,KAAK02R,YAAcD,EAEnB,IAAIE,EAAc32R,KAAK42R,kBACvB52R,KAAKgN,MAAQ2pR,EAAY3pR,MACzBhN,KAAK2M,OAASgqR,EAAYhqR,OAE1B,IAAK,IAAI+lC,EAAO,EAAGA,EAAO1yC,KAAKkH,QAAQ4qR,WAAYp/O,IAC/C1yC,KAAK62R,YAAcnkP,GAAkC,EAA1B1yC,KAAKkH,QAAQ4qR,WAAiB,EACzD9xR,KAAK87C,OAEL97C,KAAK02R,YAAc12R,KAAK62R,YACpBJ,EAAqB,GACrBA,GAAsB,EAAI/jP,GAAQ,EAAI1yC,KAAKkH,QAAQ4qR,cAO/Dh2O,KAAM,WACF,IAAIv0C,EAEJ,IAAKA,EAAI,EAAGA,EAAIvH,KAAKq4Q,MAAMtsN,MAAMvkD,OAAQD,IACrCvH,KAAK82R,WAAW92R,KAAKq4Q,MAAMtsN,MAAMxkD,IAIrC,IAAKA,EAAI,EAAGA,EAAIvH,KAAKq4Q,MAAMnJ,MAAM1nQ,OAAQD,IACrCvH,KAAK+2R,YAAY/2R,KAAKq4Q,MAAMnJ,MAAM3nQ,IAGtC,IAAKA,EAAI,EAAGA,EAAIvH,KAAKq4Q,MAAMtsN,MAAMvkD,OAAQD,IAAK,CAC1C,IAAI27B,EAAOljC,KAAKq4Q,MAAMtsN,MAAMxkD,GACxBwV,EAAS1Z,KAAKo6E,KAAKv6C,EAAKm6C,GAAKn6C,EAAKm6C,GAAKn6C,EAAKo6C,GAAKp6C,EAAKo6C,IAC1D,GAAe,IAAXvgE,EACA,OAEJmmB,EAAK99B,GAAK/B,KAAK8S,IAAI4G,EAAQ/c,KAAK02R,aAAexzP,EAAKm6C,GAAKtgE,EACzDmmB,EAAK/+B,GAAKd,KAAK8S,IAAI4G,EAAQ/c,KAAK02R,aAAexzP,EAAKo6C,GAAKvgE,EACrD/c,KAAKkH,QAAQmyQ,cACbn2O,EAAK99B,EAAI/B,KAAK8S,IAAInW,KAAKgN,MAAO3J,KAAKuV,IAAIsqB,EAAKl2B,MAAQ,EAAGk2B,EAAK99B,IAC5D89B,EAAK/+B,EAAId,KAAK8S,IAAInW,KAAK2M,OAAQtJ,KAAKuV,IAAIsqB,EAAKv2B,OAAS,EAAGu2B,EAAK/+B,OAU1E6yR,OAAQ,SAAS9zP,GAEb,IAAI+zP,EAAM5zR,KAAKqsB,SAAW1vB,KAAKkH,QAAQ2qR,aAAe,EAClDhhK,EAAwB,EAAhBxtH,KAAKqsB,SAAersB,KAAK+xH,GACrClyF,EAAK99B,GAAK6xR,EAAM5zR,KAAKk1H,IAAI1H,GACzB3tF,EAAK/+B,GAAK8yR,EAAM5zR,KAAKm1H,IAAI3H,IAY7BqmK,oBAAqB,SAAS1yR,EAAGssH,EAAG9rH,GAChC,IAAI2sB,EACJ,GAAK3xB,KAAK62R,YAGL,CACD,IAAInD,EAAS5iK,EAAE1rH,EAAIJ,EAAEI,EACjBuuR,EAAS7iK,EAAE3sH,EAAIa,EAAEb,EAEjBgzR,EAAKrmK,EAAE9jH,MAAQ,EACfoqR,EAAKtmK,EAAEnkH,OAAS,EAChB0qR,EAAKryR,EAAEgI,MAAQ,EACfsqR,EAAKtyR,EAAE2H,OAAS,EAEpBglB,EAAStuB,KAAKqmC,IAAIgqP,EAAQ,GAAKrwR,KAAKqmC,IAAIytP,EAAKE,EAAKr3R,KAAKkH,QAAQ2qR,aAAc,GAAOxuR,KAAKqmC,IAAIiqP,EAAQ,GAAKtwR,KAAKqmC,IAAI0tP,EAAKE,EAAKt3R,KAAKkH,QAAQ2qR,aAAc,QAXxJlgQ,EAAQtuB,KAAKqmC,IAAIllC,EAAG,GAAKnB,KAAKqmC,IAAI1pC,KAAKkH,QAAQ2qR,aAAc,GAajE,OAAe,EAARlgQ,EAAY,GAWvB4lQ,aAAc,SAAS/yR,EAAGssH,EAAG9rH,GACzB,OAAO,EAAIhF,KAAKk3R,oBAAoB1yR,EAAGssH,EAAG9rH,IAG9C8xR,WAAY,SAAShmK,GACjBA,EAAEzzC,GAAK,EACPyzC,EAAExzC,GAAK,EACPypL,EAAMzlQ,QAAQtB,KAAKq4Q,MAAMtsN,OAAO,SAAS/mD,GACrC,GAAIA,IAAM8rH,EAAV,CAGA,KAAOA,EAAE1rH,IAAMJ,EAAEI,GAAK0rH,EAAE3sH,IAAMa,EAAEb,GAC5BnE,KAAKg3R,OAAOhyR,GAEhB,IAAIwoQ,EAAK18I,EAAE1rH,EAAIJ,EAAEI,EACbqoQ,EAAK38I,EAAE3sH,EAAIa,EAAEb,EACbq5E,EAAWn6E,KAAKo6E,KAAK+vL,EAAKA,EAAKC,EAAKA,GACpCp9I,EAAwC,EAApCrwH,KAAKu3R,aAAa/5M,EAAUszC,EAAG9rH,GACvC8rH,EAAEzzC,IAAOmwL,EAAKhwL,EAAY6yC,EAC1BS,EAAExzC,IAAOmwL,EAAKjwL,EAAY6yC,KAC3BrwH,OAEP+2R,YAAa,SAAS32D,GAClB,IAAIj7N,EAAIi7N,EAAK94N,OACTrC,EAAIm7N,EAAK9yN,OACb,GAAIrI,IAAME,EAAV,CAIA,KAAOF,EAAEG,IAAMD,EAAEC,GAAKH,EAAEd,IAAMgB,EAAEhB,GAC5BnE,KAAKg3R,OAAO7xR,GAGhB,IAAIqoQ,EAAKvoQ,EAAEG,EAAID,EAAEC,EACbqoQ,EAAKxoQ,EAAEd,EAAIgB,EAAEhB,EACbq5E,EAAWn6E,KAAKo6E,KAAK+vL,EAAKA,EAAKC,EAAKA,GAEpCvoQ,EAA+C,EAA3ClF,KAAKk3R,oBAAoB15M,EAAUv4E,EAAGE,GAC1Ck4E,EAAMmwL,EAAKhwL,EAAYt4E,EACvBo4E,EAAMmwL,EAAKjwL,EAAYt4E,EAC3BC,EAAEk4E,IAAMA,EACRl4E,EAAEm4E,IAAMA,EACRr4E,EAAEo4E,IAAMA,EACRp4E,EAAEq4E,IAAMA,IAQZs5M,gBAAiB,WAEb,IAAInnR,EAAM+qO,EAAIx6O,KAAKq4Q,MAAMtsN,MAAMvkD,OAC/B,GAAU,IAANgzO,EACA,OAAO/qO,EAUX,IACI+nR,GATJ/nR,EAAOs3P,EAAMqB,KAAKpoQ,KAAKq4Q,MAAMtsN,OAAO,SAAS9mD,EAAGi+B,GAC5C,IAAI2oJ,EAAO3oJ,EAAKl2B,MAAQk2B,EAAKv2B,OAC7B,OAAIk/K,EAAO,EACP5mL,GAAK5B,KAAKo6E,KAAKouG,GAGZ,IACR,EAAG7rL,OACUw6O,EACMn3O,KAAK4iE,KAAK5iE,KAAKo6E,KAAK+8J,IAG1C,MAAO,CAAExtO,MAhBmF,GAchFwqR,EAAan0R,KAAKo6E,KAd4C,MAgBtC9wE,OAhBwD,GAe/E6qR,EAAan0R,KAAKo6E,KAf2C,UAqB9Eg6M,EAAsB92R,EAAMiH,MAAM7E,OAAO,CAEzCoF,KAAM,SAASjB,GACXlH,KAAKu9E,OAAS,KACdv9E,KAAKkH,QAAUA,GAEnBo9M,OAAQ,SAASozE,EAAWj6O,GAExB,GADAz9C,KAAKq4Q,MAAQqf,EACR13R,KAAKq4Q,MAAMtsN,OAAqC,IAA5B/rD,KAAKq4Q,MAAMtsN,MAAMvkD,OAA1C,CAIA,IAAK2tB,EAASn1B,KAAKq4Q,MAAMtsN,MAAOtO,GAC5B,KAAM,sCAGVz9C,KAAKu9E,OAAS9/B,EACdz9C,KAAKq4Q,MAAMxG,qBAkBX7xQ,KAAK23R,iBAMTC,WAAY,SAAS/rQ,GACjB7rB,KAAK63R,qBAAqB73R,KAAKu9E,OAAQ,QAAQ,GAC/Cv9E,KAAK83R,kBAAkB93R,KAAKu9E,OAAQ,WAAW,GAC/C,IAAkBp5E,EAAGoD,EAAG27B,EAApBt+B,EAAI,EAAGq1O,EAAI,EACf,IAAK1yO,EAAI,EAAGA,EAAIskB,EAAKrkB,OAAQD,IAAK,EAC9B27B,EAAOrX,EAAKtkB,IACPwwR,cAAgB,OACrB,IAAI9yR,EAAIjF,KAAKukF,QAAQrhD,EAAM+3F,EAAKwwI,OAChCxxB,EAAI52O,KAAKuV,IAAIqhO,EAAGh1O,EAAE+yR,OAClBpzR,GAAKK,EAAE0H,OAAS3M,KAAKkH,QAAQ8qR,mBAGjCptR,GAAK5E,KAAKkH,QAAQ8qR,mBAClB,IAAI5sR,EAAIpF,KAAKu9E,OAAOn4E,EAAIpF,KAAKkH,QAAQ6qR,qBAErC,IADA5tR,EAAInE,KAAKu9E,OAAOp5E,GAAMnE,KAAKu9E,OAAO5wE,OAAS/H,GAAK,EAC3C2C,EAAI,EAAGA,EAAIskB,EAAKrkB,OAAQD,IAAK,CAC9B27B,EAAOrX,EAAKtkB,GACZ,IAAIwpH,EAAI,IAAIiJ,EAAM50H,EAAI89B,EAAK+3F,KAAKjuH,MAAO7I,GAEvCnE,KAAKi4R,QAAQ/0P,EAAM6tF,GACnB5sH,GAAK++B,EAAK+3F,KAAKtuH,OAAS3M,KAAKkH,QAAQ8qR,qBAI7CkG,YAAa,SAASpsQ,GAClB9rB,KAAK63R,qBAAqB73R,KAAKu9E,OAAQ,SAAS,GAChDv9E,KAAK83R,kBAAkB93R,KAAKu9E,OAAQ,WAAW,GAC/C,IAAkBp5E,EAAGoD,EAAG27B,EAApBt+B,EAAI,EAAGq1O,EAAI,EACf,IAAK1yO,EAAI,EAAGA,EAAIukB,EAAMtkB,OAAQD,IAAK,EAC/B27B,EAAOpX,EAAMvkB,IACRwwR,cAAgB,QACrB,IAAI9yR,EAAIjF,KAAKukF,QAAQrhD,EAAM+3F,EAAKwwI,OAChCxxB,EAAI52O,KAAKuV,IAAIqhO,EAAGh1O,EAAE+yR,OAClBpzR,GAAKK,EAAE0H,OAAS3M,KAAKkH,QAAQ8qR,mBAGjCptR,GAAK5E,KAAKkH,QAAQ8qR,mBAClB,IAAI5sR,EAAIpF,KAAKu9E,OAAOn4E,EAAIpF,KAAKkH,QAAQ6qR,qBAAuB/xR,KAAKu9E,OAAOvwE,MAExE,IADA7I,EAAInE,KAAKu9E,OAAOp5E,GAAMnE,KAAKu9E,OAAO5wE,OAAS/H,GAAK,EAC3C2C,EAAI,EAAGA,EAAIukB,EAAMtkB,OAAQD,IAAK,CAC/B27B,EAAOpX,EAAMvkB,GACb,IAAIwpH,EAAI,IAAIiJ,EAAM50H,EAAGjB,GACrBnE,KAAKi4R,QAAQ/0P,EAAM6tF,GACnB5sH,GAAK++B,EAAK+3F,KAAKtuH,OAAS3M,KAAKkH,QAAQ8qR,qBAI7CmG,SAAU,SAAS1qQ,GACfztB,KAAK63R,qBAAqB73R,KAAKu9E,OAAQ,MAAM,GAC7Cv9E,KAAK83R,kBAAkB93R,KAAKu9E,OAAQ,WAAW,GAC/C,IAAWp5E,EAAG++B,EAAM37B,EAAhB0yO,EAAI,EACR,IAAK1yO,EAAI,EAAGA,EAAIkmB,EAAGjmB,OAAQD,IAAK,EAC5B27B,EAAOzV,EAAGlmB,IACLwwR,cAAgB,KAErB99C,GADQj6O,KAAKukF,QAAQrhD,EAAM+3F,EAAKwwI,OACzBz+P,MAAQhN,KAAKkH,QAAQ6qR,qBAGhC93C,GAAKj6O,KAAKkH,QAAQ6qR,qBAClB,IAAI3sR,EAAIpF,KAAKu9E,OAAOn4E,EAAKpF,KAAKu9E,OAAOvwE,MAAQ,EAAMitO,EAAI,EAGvD,IAAK1yO,EAAI,EAAGA,EAAIkmB,EAAGjmB,OAAQD,IAAK,CAC5B27B,EAAOzV,EAAGlmB,GACVpD,EAAInE,KAAKu9E,OAAOp5E,EAAInE,KAAKkH,QAAQ8qR,mBAAqB9uP,EAAK+3F,KAAKtuH,OAChE,IAAIokH,EAAI,IAAIiJ,EAAM50H,EAAGjB,GACrBnE,KAAKi4R,QAAQ/0P,EAAM6tF,GACnB3rH,GAAK89B,EAAK+3F,KAAKjuH,MAAQhN,KAAKkH,QAAQ6qR,uBAI5CqG,WAAY,SAAS5qQ,GACjB,IAAI0V,EAAM37B,EACVvH,KAAK63R,qBAAqB73R,KAAKu9E,OAAQ,QAAQ,GAC/Cv9E,KAAK83R,kBAAkB93R,KAAKu9E,OAAQ,WAAW,GAC/C,IAAWp5E,EAAP81O,EAAI,EACR,IAAK1yO,EAAI,EAAGA,EAAIimB,EAAKhmB,OAAQD,IAAK,EAC9B27B,EAAO1V,EAAKjmB,IACP8wR,cAAgB,OAErBp+C,GADQj6O,KAAKukF,QAAQrhD,EAAM+3F,EAAKwwI,OACzBz+P,MAAQhN,KAAKkH,QAAQ6qR,qBAGhC93C,GAAKj6O,KAAKkH,QAAQ6qR,qBAClB,IAAI3sR,EAAIpF,KAAKu9E,OAAOn4E,EAAKpF,KAAKu9E,OAAOvwE,MAAQ,EAAMitO,EAAI,EAEvD,IADA91O,EAAInE,KAAKu9E,OAAOp5E,EAAInE,KAAKkH,QAAQ8qR,mBAAqBhyR,KAAKu9E,OAAO5wE,OAC7DpF,EAAI,EAAGA,EAAIimB,EAAKhmB,OAAQD,IAAK,CAC9B27B,EAAO1V,EAAKjmB,GACZ,IAAIwpH,EAAI,IAAIiJ,EAAM50H,EAAGjB,GACrBnE,KAAKi4R,QAAQ/0P,EAAM6tF,GACnB3rH,GAAK89B,EAAK+3F,KAAKjuH,MAAQhN,KAAKkH,QAAQ6qR,uBAI5CuG,iBAAkB,WAEdt4R,KAAK63R,qBAAqB73R,KAAKu9E,OAAQ,UAAU,GACjDv9E,KAAK83R,kBAAkB93R,KAAKu9E,OAAQ,WAAW,GAC/Cv9E,KAAKu4R,aAAe,KACpB,IAAI/3J,EAAaxgI,KAAKkH,QAAQsrR,iBAAmBr9J,EAC7CsL,EAAWzgI,KAAKkH,QAAQurR,eAAiBt9J,EAC7C,GAAIsL,GAAYD,EACZ,KAAM,uDAGVxgI,KAAKw4R,SAAW,EAChBx4R,KAAK44C,OAAS,IAAIohF,EAAMh6H,KAAKu9E,OAAOn4E,EAAGpF,KAAKu9E,OAAOp5E,GACnDnE,KAAKy4R,sBAAsBz4R,KAAKu9E,OAAQ,GAGpCv9E,KAAKw4R,SAAW,GAChBx4R,KAAK04R,aAAa14R,KAAKu9E,OAAQv9E,KAAKkH,QAAQyrR,2BAA4BnyJ,EAAYC,GAIxFzgI,KAAKu9E,OAAOo7M,MAAQl4J,EAAWD,GAGnCo4J,YAAa,SAASprQ,EAAMqrQ,GACpB9xB,EAAMG,YAAY2xB,KAClBA,EAAiB,GAGrB74R,KAAK63R,qBAAqB73R,KAAKu9E,OAAQ,QAAQ,GAC/Cv9E,KAAK83R,kBAAkB93R,KAAKu9E,OAAQ,WAAW,GAC/Cv9E,KAAK83R,kBAAkB93R,KAAKu9E,OAAQ,cAAc,EAAOs7M,GACzD,IAAW10R,EAAG++B,EAAM37B,EAAhB0yO,EAAI,EACR,IAAK1yO,EAAI,EAAGA,EAAIimB,EAAKhmB,OAAQD,IAAK,EAC9B27B,EAAO1V,EAAKjmB,IAGPwwR,cAAgB,OAErB99C,GADQj6O,KAAKukF,QAAQrhD,EAAM+3F,EAAKwwI,OACzBz+P,MAAQhN,KAAKkH,QAAQ6qR,qBAGhC93C,GAAKj6O,KAAKkH,QAAQ6qR,qBAGlB93C,GAAKzsN,EAAKA,EAAKhmB,OAAS,GAAGwF,MAC3BitO,GAAKzsN,EAAKA,EAAKhmB,OAAS,GAAG8nQ,gBAAgB5J,SAAS14P,MAEpD,IAAI5H,EAAIpF,KAAKu9E,OAAOn4E,EAAKpF,KAAKu9E,OAAOvwE,MAAQ,EAAMitO,EAAI,EAEvD,IADA91O,EAAInE,KAAKu9E,OAAOp5E,EAAInE,KAAKkH,QAAQ8qR,mBAAqBhyR,KAAKu9E,OAAO5wE,OAC7DpF,EAAI,EAAGA,EAAIimB,EAAKhmB,OAAQD,IAAK,CAC9B27B,EAAO1V,EAAKjmB,GAEZ,IAAIwpH,EAAI,IAAIiJ,EAAM50H,EAAGjB,GACrBnE,KAAKi4R,QAAQ/0P,EAAM6tF,GACnB3rH,GAAK89B,EAAK+3F,KAAKjuH,MAAQhN,KAAKkH,QAAQ6qR,uBAY5C0G,sBAAuB,SAAS3nK,EAAGtsH,GAC3BA,EAAIxE,KAAKw4R,WACTx4R,KAAKw4R,SAAWh0R,GAGpB,IAAIs0R,EAAK,EAAuBC,EAAiB,IAANv0R,EAAU,EAAInB,KAAKo6E,KAAK,KAAqBj5E,EAExF,GAAIssH,EAAE37E,SAAS3tC,OAAS,EAAG,CAEvB,IAAK,IAAID,EAAI,EAAG8oB,EAAMygG,EAAE37E,SAAS3tC,OAAQD,EAAI8oB,EAAK9oB,IAAK,CACnD,IAAIm8B,EAAQotF,EAAE37E,SAAS5tC,GACvBuxR,GAAM94R,KAAKy4R,sBAAsB/0P,EAAOl/B,EAAI,GAEhDs0R,EAAKz1R,KAAKuV,IAAImgR,EAAUD,QAGxBA,EAAKC,EAIT,OADAjoK,EAAEkoK,YAAcF,EACTA,GAEXG,aAAc,SAASnoK,GACnB,IAAmBvpH,EAAf2xR,EAAY,EAGhB,GAAIpoK,EAAEz4F,QAAQ7wB,OAAS,EACnB,KAAM,8BAEV,IAAIupH,EAAID,EAAEz4F,QAAQ,GAClB,GAAI04F,EAAG,CACH,IAAI28B,EAAK,IAAI1zB,EAAMjJ,EAAE3rH,EAAG2rH,EAAE5sH,GACtBg1R,EAAK,IAAIn/J,EAAMlJ,EAAE1rH,EAAG0rH,EAAE3sH,GAC1B+0R,EAAYl5R,KAAKo5R,eAAe/1R,KAAKowC,MAAMi6G,EAAGvpJ,EAAIg1R,EAAGh1R,EAAGupJ,EAAGtoJ,EAAI+zR,EAAG/zR,IAGtE,IAAI0V,EAAQg2G,EAAE37E,SAAS3tC,OACvB,GAAc,IAAVsT,EACA,OAAO,KAGX,IAAIw9G,EAAQ,GACR1uH,EAAM,GAEV,IAAKrC,EAAI,EAAGA,EAAIuT,IAASvT,EAAG,CACxB,IAAI7C,EAAIosH,EAAE37E,SAAS5tC,GACfmpH,EAAI,IAAIsJ,EAAMt1H,EAAEU,EAAGV,EAAEP,GACzByF,EAAIrC,GAAKA,EACT+wH,EAAM/wH,GAAKvH,KAAKo5R,gBAAgBF,EAAY71R,KAAKowC,MAAMi9E,EAAEvsH,EAAIusH,EAAEvsH,EAAGusH,EAAEtrH,EAAIsrH,EAAEtrH,IAG9E2hQ,EAAMuB,OAAOhwI,EAAO1uH,GACpB,IAAIyvR,EAAM,GACNlkP,EAAW27E,EAAE37E,SACjB,IAAK5tC,EAAI,EAAGA,EAAIuT,IAASvT,EACrB8xR,EAAI13R,KAAKwzC,EAASvrC,EAAIrC,KAG1B,OAAO8xR,GAGXD,eAAgB,SAAS9gK,GACrB,KAAOA,EAAkB,EAAVj1H,KAAK+xH,IAChBkD,GAAS,EAAIj1H,KAAK+xH,GAEtB,KAAOkD,EAAQ,GACXA,GAAmB,EAAVj1H,KAAK+xH,GAElB,OAAOkD,GAEXogK,aAAc,SAASx1P,EAAMvX,EAAQ60G,EAAYC,GAM7C,IALA,IAAI64J,EAAa74J,EAAWD,EACxB+4J,EAAiBD,EAAa,EAC9BE,EAAet2P,EAAK81P,YACpBxhR,EAAW,EACXwN,EAAShlB,KAAKi5R,aAAa/1P,GACtB37B,EAAI,EAAG8oB,EAAMrL,EAAOxd,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAC/C,IAAIuwI,EAAY9yH,EAAOzd,GACnBgjI,EAAKuN,EACL2hJ,EAAqBlvJ,EAAGyuJ,YAAcQ,EACtC1hJ,EAAU3iG,SAAS3tC,OAAS,GAC5BxH,KAAK04R,aAAa5gJ,EACdnsH,EAAS3rB,KAAKkH,QAAQwrR,iBACtBlyJ,EAAchpH,EAAW8hR,EACzB94J,GAAehpH,EAAWiiR,GAAsBH,GAGxDt5R,KAAK05R,iBAAiB5hJ,EAAWnsH,EAAQ60G,EAAchpH,EAAW8hR,EAAeG,EAAqBF,GACtGhvJ,EAAGjS,MAAQmhK,EAAqBH,EAChC9hR,GAAYiiR,IAGpBC,iBAAkB,SAASx2P,EAAMvX,EAAQ2sG,GACrCp1F,EAAK99B,EAAIpF,KAAK44C,OAAOxzC,EAAKumB,EAAStoB,KAAKk1H,IAAID,GAC5Cp1F,EAAK/+B,EAAInE,KAAK44C,OAAOz0C,EAAKwnB,EAAStoB,KAAKm1H,IAAIF,GAC5Cp1F,EAAKy2P,kBAAoB,IAAIz+J,EAAKh4F,EAAK99B,EAAG89B,EAAK/+B,EAAG++B,EAAKl2B,MAAOk2B,EAAKv2B,SASvEkrR,qBAAsB,SAAS30P,EAAM+Q,EAAW2lP,GAC5C,IAAIC,EAAgB32P,EAAKm1P,cACzBr4R,KAAKq4Q,MAAMhD,oBAAoBnyO,GAAM,SAAS4tF,GAC1CA,EAAEunK,cAAgBpkP,KAEjB2lP,IACD12P,EAAKm1P,cAAgBwB,IAW7B/B,kBAAmB,SAAS50P,EAAMohL,EAAQs1E,EAAcf,GAChD9xB,EAAMG,YAAY2xB,KAClBA,EAAiB,GAErB,IAAIiB,EAAa52P,EAAK62P,eAClBlB,EAAiB,GAEjB74R,KAAKq4Q,MAAMtG,aAAa7uO,GAGxBljC,KAAKq4Q,MAAMhD,oBACPnyO,GAAM,SAASj+B,GACPA,EAAEylE,OAASmuN,EAAiB,IAC5B5zR,EAAE80R,eAAiBz1E,QAM/BtkN,KAAKq4Q,MAAMhD,oBAAoBnyO,GAAM,SAASj+B,GAC1CA,EAAE80R,eAAiBz1E,KAIlBs1E,IACD12P,EAAK62P,eAAiBD,KAWlCv1M,QAAS,SAASrhD,EAAM82P,GACpB,IAAkB/0R,EAAdg1O,EAAI,EAAGr1O,EAAI,EACX2R,EAAS,IAAI0kH,EAAK,EAAG,GACzB,IAAK/3F,EACD,KAAM,GAEV,IAAI/d,EAAI+d,EAAKosO,gBAAgB5J,SACzBu0B,EAAa90Q,EAAEnY,MACfktR,EAAc/0Q,EAAExY,OACpB,GAA4B,IAAxBu2B,EAAK7K,QAAQ7wB,OACb,KAAM,+BAGV,IAAI2E,EAAS+2B,EAAK7K,QAAQ,GAK1B,GAJ2B,cAAvB6K,EAAKm1P,gBACLn1P,EAAKm1P,cAAgBlsR,EAAOksR,eAG5BtxB,EAAMpmF,QAAQz9I,EAAKiS,UACnB5+B,EAAS,IAAI0kH,EACT53H,KAAK6T,IAAI+iR,GAAcvI,EAAU,GAAKuI,EACtC52R,KAAK6T,IAAIgjR,GAAexI,EAAU,GAAKwI,QAE1C,GAA6B,IAAzBh3P,EAAKiS,SAAS3tC,OAAc,CACjC,OAAQ07B,EAAKm1P,eACT,IAAK,SACDpzR,EAAIjF,KAAKukF,QAAQrhD,EAAKiS,SAAS,GAAI6kP,GACnC//C,EAAIggD,EAAcj6R,KAAKkH,QAAQwrR,iBAAmBrvR,KAAKk1H,IAAIr1F,EAAKi3P,eAAkBl1R,EAAE+H,MACpFpI,EAAIs1R,EAAc72R,KAAK6T,IAAIlX,KAAKkH,QAAQwrR,iBAAmBrvR,KAAKm1H,IAAIt1F,EAAKi3P,gBAAkBl1R,EAAE0H,OAC7F,MACJ,IAAK,OACL,IAAK,QACD,OAAQu2B,EAAK62P,gBAET,IAAK,uBAGL,IAAK,0BACD,MAEJ,IAAK,aAED9/C,EAAIggD,GADJh1R,EAAIjF,KAAKukF,QAAQrhD,EAAKiS,SAAS,GAAI6kP,IAChBhtR,MAAQhN,KAAKkH,QAAQgrR,2BACxCttR,EAAIs1R,EAAcl6R,KAAKkH,QAAQ+qR,4BAA8BhtR,EAAE0H,OAC/D,MAEJ,IAAK,UACD1H,EAAIjF,KAAKukF,QAAQrhD,EAAKiS,SAAS,GAAI6kP,GACnC//C,EAAIggD,EAAaj6R,KAAKkH,QAAQ6qR,qBAAuB9sR,EAAE+H,MACvDpI,EAAIvB,KAAKuV,IAAIshR,EAAaj1R,EAAE0H,QAC5B,MAEJ,QACI,KAAM,0DAEd,MACJ,IAAK,KACL,IAAK,OACD,OAAQu2B,EAAK62P,gBAET,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aACD90R,EAAIjF,KAAKukF,QAAQrhD,EAAKiS,SAAS,GAAI6kP,GACnC//C,EAAI52O,KAAKuV,IAAIqhR,EAAYh1R,EAAE+H,MAAQhN,KAAKkH,QAAQgrR,4BAChDttR,EAAIs1R,EAAcl6R,KAAKkH,QAAQ+qR,4BAA8BhtR,EAAE0H,OAC/D,MAEJ,IAAK,UACD1H,EAAIjF,KAAKukF,QAAQrhD,EAAKiS,SAAS,GAAI6kP,GACnCp1R,EAAIs1R,EAAcl6R,KAAKkH,QAAQ8qR,mBAAqB/sR,EAAE0H,OACtDstO,EAAI52O,KAAKuV,IAAIqhR,EAAYh1R,EAAE+H,OAC3B,MAEJ,QACI,KAAM,wDAEd,MACJ,QACI,KAAM,mDAGduJ,EAAS,IAAI0kH,EAAKg/G,EAAGr1O,OAEpB,CACD,IAAI2C,EAAGuwI,EACP,OAAQ50G,EAAKm1P,eACT,IAAK,OACL,IAAK,QACD,OAAQn1P,EAAK62P,gBAET,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aAGD,IAFA9/C,EAAIggD,EACJr1R,EAAIs1R,EAAcl6R,KAAKkH,QAAQ+qR,4BAC1B1qR,EAAI,EAAGA,EAAI27B,EAAKiS,SAAS3tC,OAAQD,IAClCuwI,EAAY50G,EAAKiS,SAAS5tC,GAC1BtC,EAAIjF,KAAKukF,QAAQuzD,EAAWkiJ,GAC5B//C,EAAI52O,KAAKuV,IAAIqhO,EAAGh1O,EAAE+H,MAAQhN,KAAKkH,QAAQgrR,4BACvCttR,GAAKK,EAAE0H,OAAS3M,KAAKkH,QAAQirR,6BAGjCvtR,GAAK5E,KAAKkH,QAAQirR,6BAClB,MAEJ,IAAK,UAGD,IAFAl4C,EAAIggD,EACJr1R,EAAI,EACC2C,EAAI,EAAGA,EAAI27B,EAAKiS,SAAS3tC,OAAQD,IAClCuwI,EAAY50G,EAAKiS,SAAS5tC,GAC1BtC,EAAIjF,KAAKukF,QAAQuzD,EAAWkiJ,GAC5B//C,EAAI52O,KAAKuV,IAAIqhO,EAAGggD,EAAaj6R,KAAKkH,QAAQ6qR,qBAAuB9sR,EAAE+H,OACnEpI,GAAKK,EAAE0H,OAAS3M,KAAKkH,QAAQ8qR,mBAEjCptR,GAAK5E,KAAKkH,QAAQ8qR,mBAClB,MAEJ,QACI,KAAM,yDAGd,MACJ,IAAK,KACL,IAAK,OAED,OAAQ9uP,EAAK62P,gBAET,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aAGD,IAFA9/C,EAAIggD,EACJr1R,EAAIs1R,EAAcl6R,KAAKkH,QAAQ+qR,4BAC1B1qR,EAAI,EAAGA,EAAI27B,EAAKiS,SAAS3tC,OAAQD,IAClCuwI,EAAY50G,EAAKiS,SAAS5tC,GAC1BtC,EAAIjF,KAAKukF,QAAQuzD,EAAWkiJ,GAC5B//C,EAAI52O,KAAKuV,IAAIqhO,EAAGh1O,EAAE+H,MAAQhN,KAAKkH,QAAQgrR,4BACvCttR,GAAKK,EAAE0H,OAAS3M,KAAKkH,QAAQirR,6BAGjCvtR,GAAK5E,KAAKkH,QAAQirR,6BAClB,MAEJ,IAAK,UAGD,IAFAl4C,EAAI,EACJr1O,EAAI,EACC2C,EAAI,EAAGA,EAAI27B,EAAKiS,SAAS3tC,OAAQD,IAClCuwI,EAAY50G,EAAKiS,SAAS5tC,GAE1B0yO,IADAh1O,EAAIjF,KAAKukF,QAAQuzD,EAAWkiJ,IACrBhtR,MAAQhN,KAAKkH,QAAQ6qR,qBAC5BntR,EAAIvB,KAAKuV,IAAIhU,EAAGK,EAAE0H,OAAS3M,KAAKkH,QAAQ8qR,mBAAqBkI,GAGjEjgD,GAAKj6O,KAAKkH,QAAQ6qR,qBAClB,MAEJ,QACI,KAAM,wDAGd,MACJ,QACI,KAAM,mDAGdx7Q,EAAS,IAAI0kH,EAAKg/G,EAAGr1O,GAKzB,OAFAs+B,EAAKk3P,YAAc/2R,KAAKo6E,KAAMw8J,EAAIA,EAAI,EAAMr1O,EAAIA,EAAI,GACpDs+B,EAAK+3F,KAAO1kH,EACLA,GAEX0hR,QAAS,SAASnnK,EAAGC,GACjB,IAAIxpH,EAAG8yR,EAAWn3P,EAAMo3P,EAShBl1R,EAAGjB,EACHo2R,EAV+Bp1Q,EAAI2rG,EAAEw+I,gBAAgB5J,SACzDu0B,EAAa90Q,EAAEnY,MACfktR,EAAc/0Q,EAAExY,OACpB,GAAIo6P,EAAMpmF,QAAQ7vD,EAAE37E,UAChB27E,EAAE1rH,EAAI2rH,EAAE3rH,EACR0rH,EAAE3sH,EAAI4sH,EAAE5sH,EACR2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKnK,EAAE3rH,EAAG2rH,EAAE5sH,EAAG81R,EAAYC,QAKrD,OAAQppK,EAAEunK,eACN,IAAK,OACD,OAAQvnK,EAAEipK,gBACN,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aAMD,IALAQ,EAAexpK,EACfD,EAAE1rH,EAAIm1R,EAAan1R,EACnB0rH,EAAE3sH,EAAIo2R,EAAap2R,EACnB2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKpK,EAAE1rH,EAAG0rH,EAAE3sH,EAAG2sH,EAAE9jH,MAAO8jH,EAAEnkH,QACpDxI,EAAI4sH,EAAE5sH,EAAI+1R,EAAcl6R,KAAKkH,QAAQ+qR,4BAChC1qR,EAAI,EAAGA,EAAI27B,EAAKiS,SAAS3tC,OAAQD,IAClC27B,EAAOA,EAAKiS,SAAS5tC,GACrBnC,EAAIm1R,EAAan1R,EAAI89B,EAAKosO,gBAAgBtiQ,MAAQhN,KAAKkH,QAAQgrR,2BAC/DmI,EAAK,IAAIrgK,EAAM50H,EAAGjB,GAClBnE,KAAKi4R,QAAQ/0P,EAAMm3P,GACnBl2R,GAAK++B,EAAK+3F,KAAKtuH,OAAS3M,KAAKkH,QAAQirR,6BAEzC,MAEJ,IAAK,UAOD,IANAoI,EAAe,IAAIvgK,EAAMjJ,EAAE3rH,EAAI0rH,EAAEmK,KAAKjuH,MAAQitR,EAAYlpK,EAAE5sH,GAAM2sH,EAAEmK,KAAKtuH,OAASutR,GAAe,GACjGppK,EAAE1rH,EAAIm1R,EAAan1R,EACnB0rH,EAAE3sH,EAAIo2R,EAAap2R,EACnB2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKpK,EAAE1rH,EAAG0rH,EAAE3sH,EAAG2sH,EAAE9jH,MAAO8jH,EAAEnkH,QACpDvH,EAAIm1R,EAAan1R,EAAIpF,KAAKkH,QAAQ6qR,qBAClC5tR,EAAI4sH,EAAE5sH,EACDoD,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAC/B27B,EAAO4tF,EAAE37E,SAAS5tC,GAClB8yR,EAAK,IAAIrgK,EAAM50H,EAAI89B,EAAK+3F,KAAKjuH,MAAO7I,GACpCnE,KAAKi4R,QAAQ/0P,EAAMm3P,GACnBl2R,GAAK++B,EAAK+3F,KAAKtuH,OAAS3M,KAAKkH,QAAQ8qR,mBAEzC,MAEJ,QACI,KAAM,4BAGd,MACJ,IAAK,QACD,OAAQlhK,EAAEipK,gBACN,IAAK,uBACL,IAAK,0BACD,MAEJ,IAAK,aASD,IARAQ,EAAexpK,EACfD,EAAE1rH,EAAIm1R,EAAan1R,EACnB0rH,EAAE3sH,EAAIo2R,EAAap2R,EACnB2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKpK,EAAE1rH,EAAG0rH,EAAE3sH,EAAG2sH,EAAE9jH,MAAO8jH,EAAEnkH,QACpDvH,EAAI2rH,EAAE3rH,EAAI60R,EAAaj6R,KAAKkH,QAAQgrR,2BAGpC/tR,EAAI4sH,EAAE5sH,EAAI+1R,EAAcl6R,KAAKkH,QAAQ+qR,4BAChC1qR,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAC/B27B,EAAO4tF,EAAE37E,SAAS5tC,GAClB8yR,EAAK,IAAIrgK,EAAM50H,EAAGjB,GAClBnE,KAAKi4R,QAAQ/0P,EAAMm3P,GACnBl2R,GAAK++B,EAAK+3F,KAAKtuH,OAAS3M,KAAKkH,QAAQirR,6BAGzC,MAEJ,IAAK,UAOD,IANAoI,EAAe,IAAIvgK,EAAMjJ,EAAE3rH,EAAG2rH,EAAE5sH,GAAM2sH,EAAEmK,KAAKtuH,OAASutR,GAAe,GACrEppK,EAAE1rH,EAAIm1R,EAAan1R,EACnB0rH,EAAE3sH,EAAIo2R,EAAap2R,EACnB2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKpK,EAAE1rH,EAAG0rH,EAAE3sH,EAAG2sH,EAAE9jH,MAAO8jH,EAAEnkH,QACpDvH,EAAI2rH,EAAE3rH,EAAI60R,EAAaj6R,KAAKkH,QAAQ6qR,qBACpC5tR,EAAI4sH,EAAE5sH,EACDoD,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAC/B27B,EAAO4tF,EAAE37E,SAAS5tC,GAClB8yR,EAAK,IAAIrgK,EAAM50H,EAAGjB,GAClBnE,KAAKi4R,QAAQ/0P,EAAMm3P,GACnBl2R,GAAK++B,EAAK+3F,KAAKtuH,OAAS3M,KAAKkH,QAAQ8qR,mBAEzC,MAEJ,QACI,KAAM,4BAGd,MACJ,IAAK,KAKD,GAJAuI,EAAe,IAAIvgK,EAAMjJ,EAAE3rH,GAAM0rH,EAAEmK,KAAKjuH,MAAQitR,GAAc,EAAIlpK,EAAE5sH,EAAI2sH,EAAEmK,KAAKtuH,OAASutR,GACxFppK,EAAE1rH,EAAIm1R,EAAan1R,EACnB0rH,EAAE3sH,EAAIo2R,EAAap2R,EACnB2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKpK,EAAE1rH,EAAG0rH,EAAE3sH,EAAG2sH,EAAE9jH,MAAO8jH,EAAEnkH,QAChDtJ,KAAK6T,IAAIqjR,EAAan1R,EAAI2rH,EAAE3rH,GAAKssR,EAAS,CAG1C,IAFA4I,EAAgB,EAEX/yR,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAE/B+yR,GADQxpK,EAAE37E,SAAS5tC,GACI0zH,KAAKjuH,MAAQhN,KAAKkH,QAAQ6qR,qBAErDuI,GAAiBt6R,KAAKkH,QAAQ6qR,qBAC9B3sR,EAAI2rH,EAAE3rH,GAAM60R,EAAaK,GAAiB,OAG1Cl1R,EAAI2rH,EAAE3rH,EAGV,IAAKmC,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAC/B27B,EAAO4tF,EAAE37E,SAAS5tC,GAClBpD,EAAIo2R,EAAap2R,EAAInE,KAAKkH,QAAQ8qR,mBAAqB9uP,EAAK+3F,KAAKtuH,OACjE0tR,EAAK,IAAIrgK,EAAM50H,EAAGjB,GAClBnE,KAAKi4R,QAAQ/0P,EAAMm3P,GACnBj1R,GAAK89B,EAAK+3F,KAAKjuH,MAAQhN,KAAKkH,QAAQ6qR,qBAExC,MAEJ,IAAK,OAED,OAAQjhK,EAAEipK,gBACN,IAAK,uBACL,IAAK,0BACD,MACJ,IAAK,aAOD,IANAQ,EAAexpK,EACfD,EAAE1rH,EAAIm1R,EAAan1R,EACnB0rH,EAAE3sH,EAAIo2R,EAAap2R,EACnB2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKpK,EAAE1rH,EAAG0rH,EAAE3sH,EAAG2sH,EAAE9jH,MAAO8jH,EAAEnkH,QACpDvH,EAAI2rH,EAAE3rH,EAAIpF,KAAKkH,QAAQgrR,2BACvB/tR,EAAI4sH,EAAE5sH,EAAI+1R,EAAcl6R,KAAKkH,QAAQ+qR,4BAChC1qR,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAC/B27B,EAAO4tF,EAAE37E,SAAS5tC,GAClB8yR,EAAK,IAAIrgK,EAAM50H,EAAGjB,GAClBnE,KAAKi4R,QAAQ/0P,EAAMm3P,GACnBl2R,GAAK++B,EAAK+3F,KAAKtuH,OAAS3M,KAAKkH,QAAQirR,6BAEzC,MAEJ,IAAK,UAKD,GAJAoI,EAAe,IAAIvgK,EAAMjJ,EAAE3rH,GAAM0rH,EAAEmK,KAAKjuH,MAAQitR,GAAc,EAAIlpK,EAAE5sH,GACpE2sH,EAAE1rH,EAAIm1R,EAAan1R,EACnB0rH,EAAE3sH,EAAIo2R,EAAap2R,EACnB2sH,EAAE6oK,kBAAoB,IAAIz+J,EAAKpK,EAAE1rH,EAAG0rH,EAAE3sH,EAAG2sH,EAAE9jH,MAAO8jH,EAAEnkH,QAChDtJ,KAAK6T,IAAIqjR,EAAan1R,EAAI2rH,EAAE3rH,GAAKssR,EAAS,CAG1C,IAFA4I,EAAgB,EAEX/yR,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAE/B+yR,GADQxpK,EAAE37E,SAAS5tC,GACI0zH,KAAKjuH,MAAQhN,KAAKkH,QAAQ6qR,qBAGrDuI,GAAiBt6R,KAAKkH,QAAQ6qR,qBAC9B3sR,EAAI2rH,EAAE3rH,GAAM60R,EAAaK,GAAiB,OAG1Cl1R,EAAI2rH,EAAE3rH,EAGV,IAAKmC,EAAI,EAAGA,EAAIupH,EAAE37E,SAAS3tC,OAAQD,IAC/B27B,EAAO4tF,EAAE37E,SAAS5tC,GAClBpD,EAAIo2R,EAAap2R,EAAInE,KAAKkH,QAAQ8qR,mBAAqBkI,EACvDG,EAAK,IAAIrgK,EAAM50H,EAAGjB,GAClBnE,KAAKi4R,QAAQ/0P,EAAMm3P,GACnBj1R,GAAK89B,EAAK+3F,KAAKjuH,MAAQhN,KAAKkH,QAAQ6qR,qBAExC,MAEJ,QACI,KAAM,4BAEd,MAEJ,IAAK,OACD,MAEJ,QACI,KAAM,8BAItB4F,aAAc,WACV,GAAK33R,KAAKu9E,SAINwpL,EAAMpmF,QAAQ3gL,KAAKu9E,OAAOpoC,UAA9B,CAIA,IAIIgB,EAAQqkP,EAAMC,EAAQC,EAJtBh1R,EAAO1F,KAAKkH,QAAQ0qR,QACpB7qB,EAAMG,YAAYxhQ,KAClBA,EAAO,QAGX,IAAIyvC,EAAWn1C,KAAKu9E,OAAOpoC,SAC3B,OAAQzvC,EAAK4S,eACT,IAAK,SACL,IAAK,aACDtY,KAAKs4R,mBACL,MAEJ,IAAK,oBACL,IAAK,UACDniP,EAASn2C,KAAKu9E,OAAOpoC,SAEe,IAAhCn1C,KAAKu9E,OAAOpoC,SAAS3tC,OACrBxH,KAAKk4R,YAAY/hP,IAIjBukP,EAAYvlP,EAAS3tC,OAAS,EAC9BgzR,EAAOt8P,EAAKl+B,KAAKu9E,OAAOpoC,UAAU,SAAS27E,GACvC,OAAOi2I,EAAMpxP,QAAQw/B,EAAU27E,GAAK4pK,KAExCD,EAASv8P,EAAKl+B,KAAKu9E,OAAOpoC,UAAU,SAAS27E,GACzC,OAAOi2I,EAAMpxP,QAAQw/B,EAAU27E,IAAM4pK,KAGzC16R,KAAK43R,WAAW4C,GAChBx6R,KAAKk4R,YAAYuC,IAErB,MAEJ,IAAK,kBACDtkP,EAASn2C,KAAKu9E,OAAOpoC,SAEe,IAAhCn1C,KAAKu9E,OAAOpoC,SAAS3tC,OACrBxH,KAAKo4R,WAAWjiP,IAIhBukP,EAAYvlP,EAAS3tC,OAAS,EAC9BgzR,EAAOt8P,EAAKl+B,KAAKu9E,OAAOpoC,UAAU,SAAS27E,GACvC,OAAOi2I,EAAMpxP,QAAQw/B,EAAU27E,GAAK4pK,KAExCD,EAASv8P,EAAKl+B,KAAKu9E,OAAOpoC,UAAU,SAAS27E,GACzC,OAAOi2I,EAAMpxP,QAAQw/B,EAAU27E,IAAM4pK,KAEzC16R,KAAKm4R,SAASqC,GACdx6R,KAAKo4R,WAAWqC,IAEpB,MAEJ,IAAK,QACDz6R,KAAKk4R,YAAYl4R,KAAKu9E,OAAOpoC,UAC7B,MAEJ,IAAK,OACDn1C,KAAK43R,WAAW53R,KAAKu9E,OAAOpoC,UAC5B,MAEJ,IAAK,KACL,IAAK,SACDn1C,KAAKm4R,SAASn4R,KAAKu9E,OAAOpoC,UAC1B,MAEJ,IAAK,OACL,IAAK,MACDn1C,KAAKo4R,WAAWp4R,KAAKu9E,OAAOpoC,UAC5B,MAEJ,IAAK,UACL,IAAK,cACD,GAAIn1C,KAAKkH,QAAQyzR,sBAAwB,EACrC,KAAM,mDAEV36R,KAAK44R,YAAY54R,KAAKu9E,OAAOpoC,SAAUn1C,KAAKkH,QAAQyzR,4BAchEC,EAAajJ,EAAW5uR,OAAO,CAC/BoF,KAAM,SAASunL,GAGX,GADAiiG,EAAW5pR,GAAGI,KAAKoC,KADRvK,MAEP+mQ,EAAMG,YAAYx3E,GAClB,KAAM,wBAEV1vL,KAAK0vL,QAAUA,GAMnB40B,OAAQ,SAASp9M,GAEblH,KAAK+zR,gBAAgB7sR,GAGrB,IAAI83C,EAAU,IAAIg1O,EAA0Bh0R,KAAK0vL,SAMjD1vL,KAAKq4Q,MAAQr5N,EAAQ9hC,UAErB,IAAIq5Q,EAAev2R,KAAK66R,mBAIxB,OAAO,IAAInrG,EAAQ8mG,YAAYx2R,KAAK0vL,QAAS6mG,IAGjDsE,iBAAkB,WACd,IAAI76R,KAAKq4Q,MAAM13F,UAAf,CAKA,IAAI4xF,EAAavyQ,KAAKq4Q,MAAMnG,yBAC5B,IAAInL,EAAMpmF,QAAQ4xF,GAAlB,CAOA,IAHA,IAAIjuD,EAAS,IAAImzE,EAAoBz3R,KAAKkH,SACtC6wQ,EAAQ,GAEHxwQ,EAAI,EAAGA,EAAIgrQ,EAAW/qQ,OAAQD,IAAK,CACxC,IAAIsuQ,EAAYtD,EAAWhrQ,GAEvBmwR,EAAY13R,KAAK86R,QAAQjlB,GAC7B,IAAK6hB,EACD,KAAM,oDAEV,IAAIj6O,EAAOi6O,EAAUj6O,KACjByM,EAAOwtO,EAAUxtO,KACrBo6J,EAAOA,OAAOp6J,EAAMzM,GAEpBs6N,EAAMp2Q,KAAKuoD,GAGf,OAAOlqD,KAAKizR,qBAAqBlb,MAUrC+iB,QAAS,SAASziB,GACd,IAAI56N,EAAO,KACX,GAAIz9C,KAAKkH,QAAQ2/H,OAAS7mI,KAAKkH,QAAQ2/H,MAAMr/H,OAAS,EAClD,IAAK,IAAID,EAAI,EAAG8oB,EAAMgoP,EAAMtsN,MAAMvkD,OAAQD,EAAI8oB,EAAK9oB,IAE/C,IADA,IAAI27B,EAAOm1O,EAAMtsN,MAAMxkD,GACdojC,EAAI,EAAGA,EAAI3qC,KAAKkH,QAAQ2/H,MAAMr/H,OAAQmjC,IAAK,CAEhD,GADqB3qC,KAAKkH,QAAQ2/H,MAAMl8F,KACjBzH,EAAKosO,gBAAiB,CACzC7xN,EAAOva,EACP,OAKhB,IAAKua,KAEDA,EAAO46N,EAAM56N,QAGT,KAAM,sCAGd,OAAOz9C,KAAK+6R,eAAe1iB,EAAO56N,IAGtCs9O,eAAgB,SAAS1iB,EAAO56N,GAE5B,IAAIyM,EAAOmuN,EAAMxF,gBAAgBp1N,GACjC,OAAIspN,EAAMG,YAAYh9M,IAASA,EAAKy2H,UACzB,KAEJ,CACHz2H,KAAMA,EACNzM,KAAMyM,EAAKzM,SAUnBu9O,EAAgBrJ,EAAW5uR,OAAO,CAClCoF,KAAM,SAASunL,GAGX,GADAiiG,EAAW5pR,GAAGI,KAAKoC,KADRvK,MAEP+mQ,EAAMG,YAAYx3E,GAClB,KAAM,4BAEV1vL,KAAK0vL,QAAUA,GAGnB40B,OAAQ,SAASp9M,GAEblH,KAAK+zR,gBAAgB7sR,GAErB,IACImxQ,EADU,IAAI2b,EAA0Bh0R,KAAK0vL,SAC7BxyK,QAAQhW,GAC5B,IAAImxQ,EAAM13F,UAAV,CAIA,IAAI4xF,EAAa8F,EAAMnG,yBACvB,IAAInL,EAAMpmF,QAAQ4xF,GAAlB,CAGA,IAAK,IAAIhrQ,EAAI,EAAGA,EAAIgrQ,EAAW/qQ,OAAQD,IAAK,CACxC,IAAIsuQ,EAAYtD,EAAWhrQ,GAC3BvH,KAAKo5Q,YAAYvD,EAAW3uQ,GAEhC,IAAIqvR,EAAev2R,KAAKizR,qBAAqB1gB,GAC7C,OAAO,IAAI7iF,EAAQ8mG,YAAYx2R,KAAK0vL,QAAS6mG,MAQjD0E,uBAAwB,WACpB,IAAK,IAAIn2R,EAAI,EAAGA,EAAI9E,KAAKq4Q,MAAMtsN,MAAMvkD,OAAQ1C,IAAK,CAC9C,IAAIo+B,EAAOljC,KAAKq4Q,MAAMtsN,MAAMjnD,GAC5Bo+B,EAAK05N,OAAS,EACd15N,EAAKg4P,oBAAsB,EAC3Bh4P,EAAKi4P,kBAAoB,EAEzBj4P,EAAKssO,WAAY,EAEjBtsO,EAAKk4P,YAAc,EACnBl4P,EAAKm4P,YAAc,EAEnBn4P,EAAKo4P,iBAAmB,EACxBp4P,EAAKq4P,mBAAqB,EAE1Br4P,EAAKs4P,aAAe,IAG5BC,SAAU,SAASpjB,GACf,IAAkB9wQ,EAAGmpH,EAAG0vG,EAKpBs7D,EAAar2N,EAAM/9D,EALnBmM,EAAU,GAGVkoR,EAAW,IAAIjtB,EACfktB,EAAa,EAUjB,IAPA70B,EAAMzlQ,QAAQ+2Q,EAAMtsN,OAAO,SAAS7oB,GACH,IAAzBA,EAAKksO,SAAS5nQ,SACdm0R,EAASnsQ,IAAI0T,EAAM,GACnBzvB,EAAQ9R,KAAKuhC,OAIdzvB,EAAQjM,OAAS,GAEpB,IADA69D,EAAO5xD,EAAQoC,QACVtO,EAAI,EAAGA,EAAI89D,EAAK8pM,SAAS3nQ,OAAQD,IAElCD,GADA84N,EAAO/6J,EAAK8pM,SAAS5nQ,IACPD,OAGVo0R,EADAC,EAAS1tB,YAAY3mQ,GACPjE,KAAKuV,IAAI+iR,EAASpsQ,IAAI81C,GAAQ,EAAGs2N,EAASpsQ,IAAIjoB,IAE9Cq0R,EAASpsQ,IAAI81C,GAAQ,EAEvCs2N,EAASnsQ,IAAIloB,EAAQo0R,GACjBA,EAAcE,IACdA,EAAaF,GAGZvmQ,EAAS1hB,EAASnM,IACnBmM,EAAQ9R,KAAK2F,GAKzB,IA2BIs1P,EA3BAi/B,EAAcF,EAASzxQ,OAE3B2xQ,EAAY32Q,MAAK,SAASqlP,EAAIuxB,GAC1B,IAAIC,EAAUJ,EAASpsQ,IAAIg7O,GACvByxB,EAAUL,EAASpsQ,IAAIusQ,GAC3B,OAAO/0B,EAAMvwP,KAAKwlR,EAAUD,MAGhC,IAAK,IAAIjrK,EAAI,EAAGA,EAAI+qK,EAAYr0R,SAAUspH,EAAG,CACzC,IAAI5tF,EAAO24P,EAAY/qK,GACnBmrK,EAAW3pR,OAAOgjH,UAEtB,GAA6B,IAAzBpyF,EAAKisO,SAAS3nQ,OAAlB,CAIA,IAAKkpH,EAAI,EAAGA,EAAIxtF,EAAKisO,SAAS3nQ,SAAUkpH,EACpC0vG,EAAOl9L,EAAKisO,SAASz+I,GACrBurK,EAAW54R,KAAK8S,IAAI8lR,EAAUN,EAASpsQ,IAAI6wM,EAAK94N,SAGhD20R,EAAW,GACXN,EAASnsQ,IAAI0T,EAAM+4P,EAAW,IAMtC,IAFAj8R,KAAKm7P,OAAS,GAET5zP,EAAI,EAAGA,EAAIq0R,EAAa,EAAGr0R,KAC5Bq1P,EAAQ,IACFs/B,QAAU,GAChBl8R,KAAKm7P,OAAOx5P,KAAKi7P,GASrB,IANA++B,EAASr6R,SAAQ,SAAS4hC,EAAM05N,GAC5B15N,EAAK05N,MAAQA,EACb58P,KAAKm7P,OAAOyB,GAAOj7P,KAAKuhC,KACzBljC,MAGE0wH,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,OAAQkpH,IAEhC,IADAksI,EAAQ58P,KAAKm7P,OAAOzqI,GACfnpH,EAAI,EAAGA,EAAIq1P,EAAMp1P,OAAQD,IAC1Bq1P,EAAMr1P,GAAGi0R,aAAej0R,GAOpC6xQ,YAAa,SAASf,EAAOnxQ,GACzB,GAAI6/P,EAAMG,YAAYmR,GAClB,KAAM,0DAENtR,EAAME,UAAU//P,IAChBlH,KAAK+zR,gBAAgB7sR,GAEzBlH,KAAKq4Q,MAAQA,EAGbA,EAAMjG,iBAGN,IAAI+E,EAAgBkB,EAAMlC,cAG1Bn2Q,KAAKi7R,yBAELj7R,KAAKy7R,SAASpjB,EAAOnxQ,GAErBlH,KAAKm8R,WAELn8R,KAAKo8R,qBAELp8R,KAAKq8R,aAELr8R,KAAKs8R,eAELt8R,KAAKu8R,oBAELv8R,KAAKw8R,aAGLz1B,EAAMzlQ,QAAQ61Q,GAAe,SAASxyQ,GAC9BA,EAAE08H,QACF18H,EAAE08H,OAAOvrH,cAKrB2mR,WAAY,SAASz3R,EAAG8rH,EAAG4rK,GACvB,IAAIhsK,EAAI1rH,EAAE43P,MACNr1P,EAAIvC,EAAE23R,WACV38R,KAAK48R,aAAalsK,GAAGnpH,GAAKm1R,GAG9BG,WAAY,SAAS73R,EAAG8rH,GAQpB,IAPA,IAAImzC,EAAO,EACP64H,EAAK93R,EAAE23R,WACPI,EAAKjsK,EAAE6rK,WACPjsK,EAAI1rH,EAAE43P,MACNzmP,EAAM9S,KAAK8S,IAAI2mR,EAAIC,GACnBnkR,EAAMvV,KAAKuV,IAAIkkR,EAAIC,GAEdj4R,EAAIqR,EAAKrR,EAAI8T,IAAO9T,EACzBm/J,GAAQjkK,KAAK48R,aAAalsK,GAAG5rH,GAEjC,OAAOm/J,GAGX+4H,iBAAkB,SAASC,GAEvB,IADA,IAAgCnsK,EAAG5tF,EAA/Bg6P,EAAU,IAAIxuB,EACThqQ,EAAI,EAAGA,EAAI1E,KAAKm7P,OAAO3zP,SAAU9C,EAAG,CACzC,IAAIy4R,EAAaF,EAAYv4R,GAC7B,GAAKy4R,EAAL,CAIA,IAAKrsK,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAC/B5tF,EAAOi6P,EAAWrsK,GACbosK,EAAQjvB,YAAY/qO,IACrBljC,KAAKo9R,UAAUl6P,EAAMg6P,EAASx4R,GAKtC,IAAIF,EAAI8N,OAAO+qR,kBACf,IAAKvsK,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAAK,CACpC5tF,EAAOi6P,EAAWrsK,GAClB,IAAIwsK,EAAet9R,KAAKs9R,aAAap6P,GACjCo6P,GAAgBt9R,KAAKu9R,cAAchuQ,IAAI+tQ,KAAkB54R,IACzDF,EAAInB,KAAK8S,IAAI3R,EAAG04R,EAAQ3tQ,IAAI+tQ,GAAgBJ,EAAQ3tQ,IAAI2T,GAAQljC,KAAK68R,WAAW35P,EAAMo6P,KAG9F,GAAI94R,IAAM8N,OAAO+qR,kBAAmB,CAChC,IAAI1oR,EAAI,GACR,IAAKm8G,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAAK,CACpC5tF,EAAOi6P,EAAWrsK,GAClB,IAAIw/I,EAAY,GAChBvJ,EAAMnxB,SAAS06B,EAAWtwQ,KAAKw9R,QAAQjuQ,IAAI2T,IAC3C6jO,EAAMnxB,SAAS06B,EAAWtwQ,KAAKy9R,UAAUluQ,IAAI2T,IAE7C,IAAK,IAAIv+B,EAAI,EAAGA,EAAI2rQ,EAAU9oQ,OAAQ7C,IAAK,CACvC,IAAI+4R,EAAWptB,EAAU3rQ,GACrB3E,KAAKu9R,cAAchuQ,IAAImuQ,GAAYh5R,GACnCiQ,EAAEhT,KAAKu7R,EAAQ3tQ,IAAImuQ,GAAYR,EAAQ3tQ,IAAI2T,KAIvDvuB,EAAEuQ,OAEE1gB,EADa,IAAbmQ,EAAEnN,OACE,EAECmN,EAAEnN,OAAS,GAAM,EAClBmN,EAAE3U,KAAK29R,OAAOhpR,EAAEnN,OAAQ,KAGvBmN,EAAE3U,KAAK29R,OAAOhpR,EAAEnN,OAAQ,GAAK,GAAKmN,EAAE3U,KAAK29R,OAAOhpR,EAAEnN,OAAQ,KAAO,EAG9E,IAAKspH,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAC/B5tF,EAAOi6P,EAAWrsK,GAClBosK,EAAQ1tQ,IAAI0T,EAAMg6P,EAAQ3tQ,IAAI2T,GAAQ1+B,IAG9C,OAAO04R,GAGXU,iBAAkB,SAASC,GAEvB,IADA,IAAiC/sK,EAAG5tF,EAAhC46P,EAAW,IAAIpvB,EACVhqQ,EAAI,EAAGA,EAAI1E,KAAKm7P,OAAO3zP,SAAU9C,EAAG,CACzC,IAAIy4R,EAAaU,EAAan5R,GAC9B,GAAKy4R,EAAL,CAIA,IAAKrsK,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAC/B5tF,EAAOi6P,EAAWrsK,GACbgtK,EAAS7vB,YAAY/qO,IACtBljC,KAAK+9R,WAAW76P,EAAM46P,EAAUp5R,GAKxC,IAAIF,EAAI8N,OAAO0rR,kBACf,IAAKltK,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAAK,CACpC5tF,EAAOi6P,EAAWrsK,GAClB,IAAImtK,EAAcj+R,KAAKi+R,YAAY/6P,GAC/B+6P,GAAej+R,KAAKk+R,eAAe3uQ,IAAI0uQ,KAAiBv5R,IACxDF,EAAInB,KAAKuV,IAAIpU,EAAGs5R,EAASvuQ,IAAI0uQ,GAAeH,EAASvuQ,IAAI2T,GAAQljC,KAAK68R,WAAWoB,EAAa/6P,KAGtG,GAAI1+B,IAAM8N,OAAO0rR,kBAAmB,CAChC,IAAIrpR,EAAI,GACR,IAAKm8G,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAAK,CACpC5tF,EAAOi6P,EAAWrsK,GAClB,IAAIw/I,EAAY,GAChBvJ,EAAMnxB,SAAS06B,EAAWtwQ,KAAKw9R,QAAQjuQ,IAAI2T,IAC3C6jO,EAAMnxB,SAAS06B,EAAWtwQ,KAAKy9R,UAAUluQ,IAAI2T,IAE7C,IAAK,IAAIv+B,EAAI,EAAGA,EAAI2rQ,EAAU9oQ,OAAQ7C,IAAK,CACvC,IAAI+4R,EAAWptB,EAAU3rQ,GACrB3E,KAAKk+R,eAAe3uQ,IAAImuQ,GAAYh5R,GACpCiQ,EAAEhT,KAAKm8R,EAASvuQ,IAAI2T,GAAQ46P,EAASvuQ,IAAImuQ,KAIrD/oR,EAAEuQ,OAEE1gB,EADa,IAAbmQ,EAAEnN,OACE,EAECmN,EAAEnN,OAAS,GAAM,EAClBmN,EAAE3U,KAAK29R,OAAOhpR,EAAEnN,OAAQ,KAGvBmN,EAAE3U,KAAK29R,OAAOhpR,EAAEnN,OAAQ,GAAK,GAAKmN,EAAE3U,KAAK29R,OAAOhpR,EAAEnN,OAAQ,KAAO,EAG9E,IAAKspH,EAAI,EAAGA,EAAIqsK,EAAW31R,OAAQspH,IAC/B5tF,EAAOi6P,EAAWrsK,GAClBgtK,EAAStuQ,IAAI0T,EAAM46P,EAASvuQ,IAAI2T,GAAQ1+B,IAGhD,OAAOs5R,GAGXK,aAAc,WACV,IAAIC,EAAW,CAAE11R,MAAO,MACpB6N,EAASvW,KAAKq+R,eAAeD,EAAU,GAE3C,OADAp+R,KAAKu9R,cAAgBa,EAAS11R,MACvB6N,GAGX+nR,cAAe,WACX,IAAIC,EAAY,CAAE71R,MAAO,MACrB6N,EAASvW,KAAKq+R,eAAeE,GAAY,GAE7C,OADAv+R,KAAKk+R,eAAiBK,EAAU71R,MACzB6N,GAGX8nR,eAAgB,SAASG,EAAUh6R,GAI/B,IAHA,IAAIi6R,EAAc,EACdC,EAAOF,EAAS91R,MAAQ,IAAIgmQ,EAEvBh+I,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,SAAUkpH,EAAG,CACzC+tK,EAAc/tK,EAGd,IADA,IAAIksI,EAAQ58P,KAAKm7P,OAAOzqI,GACfI,EAAU,IAANtsH,EAAU,EAAIo4P,EAAMp1P,OAAS,EAAGspH,GAAK,GAAKA,EAAI8rI,EAAMp1P,OAAQspH,GAAKtsH,EAAG,CAC7E,IAAI0+B,EAAO05N,EAAM9rI,GACjB,GAAK4tK,EAAKzwB,YAAY/qO,GAWlBu7P,EAAcC,EAAKnvQ,IAAI2T,QATvB,GADAw7P,EAAKlvQ,IAAI0T,EAAMu7P,GACXv7P,EAAKssO,UAEL,IADA,IAAImvB,EAAS3+R,KAAK4+R,aAAa17P,GACtBg0O,EAAK,EAAGA,EAAKynB,EAAOn3R,OAAQ0vQ,IAAM,CACvC,IAAI2nB,EAAQF,EAAOznB,GACnBwnB,EAAKlvQ,IAAIqvQ,EAAOJ,KAWpC,IADA,IAAIK,EAAQ,GACHv3R,EAAI,EAAGA,EAAIvH,KAAKm7P,OAAO3zP,OAAQD,IACpCu3R,EAAMn9R,KAAK,MASf,OAPA+8R,EAAKp9R,SAAQ,SAAS4hC,EAAM67P,GACE,OAAtBD,EAAMC,KACND,EAAMC,GAAc,IAExBD,EAAMC,GAAYp9R,KAAKuhC,MAGpB47P,GAEXE,kBAAmB,WACf,MAA8C,OAAvCh/R,KAAKkH,QAAQ0qR,QAAQt5Q,eAAiE,SAAvCtY,KAAKkH,QAAQ0qR,QAAQt5Q,eAAmE,aAAvCtY,KAAKkH,QAAQ0qR,QAAQt5Q,eAGhI2mR,oBAAqB,WACjB,MAA8C,UAAvCj/R,KAAKkH,QAAQ0qR,QAAQt5Q,eAAoE,SAAvCtY,KAAKkH,QAAQ0qR,QAAQt5Q,eAAmE,eAAvCtY,KAAKkH,QAAQ0qR,QAAQt5Q,eAEnI4mR,oBAAqB,WAEjB,MAA8C,UAAvCl/R,KAAKkH,QAAQ0qR,QAAQt5Q,eAAoE,SAAvCtY,KAAKkH,QAAQ0qR,QAAQt5Q,eAElFikR,kBAAmB,WACf,IAAIh1R,EAAGmpH,EAAGxtF,EAAM05N,EAAO9rI,EAAGmpH,EAE1B,IAAKvpH,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,SAAUkpH,GAClCksI,EAAQ58P,KAAKm7P,OAAOzqI,IACdxrG,KAAKllB,KAAKm/R,uBAIpB,IADAn/R,KAAK48R,aAAe,GACflsK,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,SAAUkpH,EAGlC,IAFAksI,EAAQ58P,KAAKm7P,OAAOzqI,GACpB1wH,KAAK48R,aAAalsK,GAAK,GAClBI,EAAI,EAAGA,EAAI8rI,EAAMp1P,SAAUspH,GAC5B5tF,EAAO05N,EAAM9rI,IACR6rK,WAAa7rK,EAClB9wH,KAAK48R,aAAalsK,GAAGI,GAAK9wH,KAAKkH,QAAQ2qR,aACnC/gK,EAAI8rI,EAAMp1P,OAAS,IACfxH,KAAKg/R,oBACLh/R,KAAK48R,aAAalsK,GAAGI,KAAO5tF,EAAKl2B,MAAQ4vP,EAAM9rI,EAAI,GAAG9jH,OAAS,EAG/DhN,KAAK48R,aAAalsK,GAAGI,KAAO5tF,EAAKv2B,OAASiwP,EAAM9rI,EAAI,GAAGnkH,QAAU,GAkCjF,IA5BA3M,KAAKy9R,UAAY,IAAI/uB,EACrB1uQ,KAAKw9R,QAAU,IAAI9uB,EACnB3H,EAAMzlQ,QAAQtB,KAAKq4Q,MAAMtsN,OAAO,SAAS7oB,GACrCljC,KAAKy9R,UAAUjuQ,IAAI0T,EAAM,IACzBljC,KAAKw9R,QAAQhuQ,IAAI0T,EAAM,MACxBljC,MACH+mQ,EAAMzlQ,QAAQtB,KAAKq4Q,MAAMnJ,OAAO,SAAS9uC,GACrC,IAAIxnL,EAASwnL,EAAK9yN,OACdwqD,EAAOsoK,EAAK94N,OACZkmB,EAAO,KAAMC,EAAK,KAClBmrB,EAAOgkN,MAAQ9kM,EAAK8kM,OACpBpvO,EAAO4yM,EAAK9yN,OACZmgB,EAAK2yM,EAAK94N,SAGVmmB,EAAK2yM,EAAK9yN,OACVkgB,EAAO4yM,EAAK94N,QAEhBtH,KAAKy9R,UAAUluQ,IAAI9B,GAAI9rB,KAAK6rB,GAC5BxtB,KAAKw9R,QAAQjuQ,IAAI/B,GAAM7rB,KAAK8rB,KAC7BztB,MACHA,KAAKy9R,UAAU5uB,cAAa,SAAStjM,GACjCA,EAAKrmD,KAAKllB,KAAKm/R,yBAChBn/R,MACHA,KAAKw9R,QAAQ3uB,cAAa,SAAStjM,GAC/BA,EAAKrmD,KAAKllB,KAAKm/R,yBAChBn/R,MAEE0wH,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,OAAS,IAAKkpH,EAEtC,IADAksI,EAAQ58P,KAAKm7P,OAAOzqI,GACfupH,EAAI,EAAGA,EAAI2iB,EAAMp1P,OAAS,EAAGyyO,IAAK,CACnC,IAAImlD,EAAcxiC,EAAM3iB,GACxB,GAAKmlD,EAAY5vB,UAAjB,CAIA,IAAI6vB,EAAWr/R,KAAKy9R,UAAUluQ,IAAI6vQ,GAAa,GAC/C,GAAKC,EAAS7vB,UAId,IAAK1+I,EAAImpH,EAAI,EAAGnpH,EAAI8rI,EAAMp1P,SAAUspH,EAEhC,IADA5tF,EAAO05N,EAAM9rI,IACH0+I,UAAV,CAIA,IAAI8vB,EAAWt/R,KAAKy9R,UAAUluQ,IAAI2T,GAAM,GACxC,GAAKo8P,EAAS9vB,WAIV6vB,EAAS7D,aAAe8D,EAAS9D,aAAc,CAC/C,IAAInnM,EAAMgrM,EAAS7D,aACnB6D,EAAS7D,aAAe8D,EAAS9D,aACjC8D,EAAS9D,aAAennM,EACxB,IAAIyoM,EAAKuC,EAAS1C,WACdI,EAAKuC,EAAS3C,WAClB38R,KAAKm7P,OAAOzqI,EAAI,GAAGosK,GAAMwC,EACzBt/R,KAAKm7P,OAAOzqI,EAAI,GAAGqsK,GAAMsC,EACzBA,EAAS1C,WAAaI,EACtBuC,EAAS3C,WAAaG,KAOtC,IAAIG,EAAcj9R,KAAKm+R,eACnBN,EAAe79R,KAAKs+R,gBAGpBpB,EAAUl9R,KAAKg9R,iBAAiBC,GAChCa,EAAW99R,KAAK49R,iBAAiBC,GACjCz4R,EAAI,IAAIspQ,EACZ3H,EAAMzlQ,QAAQtB,KAAKq4Q,MAAMtsN,OAAO,SAAS7oB,GACrC99B,EAAEoqB,IAAI0T,GAAOg6P,EAAQ3tQ,IAAI2T,GAAQ46P,EAASvuQ,IAAI2T,IAAS,MAI3D,IAAIqhB,EAAQ,IAAImqN,EACZ6wB,EAAS,IAAI7wB,EACjB,IAAKh+I,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,SAAUkpH,EAAG,CACrCksI,EAAQ58P,KAAKm7P,OAAOzqI,GACpB,IAAI8uK,GAAiB,EACrB,IAAK1uK,EAAI,EAAGA,EAAI8rI,EAAMp1P,SAAUspH,EAC5B5tF,EAAO05N,EAAM9rI,GACbvsE,EAAM/0B,IAAI0T,EAAM,GAChBq8P,EAAO/vQ,IAAI0T,GAAM,GACbA,EAAKssO,aACkB,IAAnBgwB,GAGKA,IAAkB1uK,EAAI,IAIbA,EACdvsE,EAAM/0B,IAAIotO,EAAM4iC,GAAgB,GAC5Bp6R,EAAEmqB,IAAI2T,GAAQ99B,EAAEmqB,IAAIqtO,EAAM4iC,MAAoBx/R,KAAK68R,WAAWjgC,EAAM4iC,GAAgBt8P,GACpFq8P,EAAO/vQ,IAAIotO,EAAM4iC,IAAgB,GAGjCD,EAAO/vQ,IAAIotO,EAAM4iC,IAAgB,IAZrCA,EAAgB1uK,GAoBhCi2I,EAAMzlQ,QADW,CAAC,GAAI,IACI,SAASkD,GAE/B,IADA,IACSksH,EADS,IAANlsH,EAAU,EAAIxE,KAAKm7P,OAAO3zP,OAAS,EAC3BkpH,GAAK,GAAKA,EAAI1wH,KAAKm7P,OAAO3zP,OAAQkpH,GAAKlsH,EAAG,CAC1D,IAAIo4P,EAAQ58P,KAAKm7P,OAAOzqI,GACpB+uK,EAAoBz/R,KAAK0/R,kBAAkB9iC,GAC3C+iC,EAAe,KACfC,EAAW,KACf,IAA2B,IAAvBH,EAGA,IAFAE,EAAe/iC,EAAM6iC,GACrBG,EAAW,GACNr4R,EAAI,EAAGA,EAAIk4R,EAAmBl4R,IAC/Bq4R,EAASj+R,KAAKi7P,EAAMr1P,SAIxBo4R,EAAe,KACfC,EAAWhjC,EAEf,GAAIgjC,EAASp4R,OAAS,EAAG,CAErB,IADAxH,KAAK6/R,WAAWz6R,EAAG,KAAMu6R,EAAcn7R,EAAGo7R,GACrCr4R,EAAI,EAAGA,EAAIq4R,EAASp4R,OAAS,IAAKD,EACnCvH,KAAKy8R,WAAWmD,EAASr4R,GAAIq4R,EAASr4R,EAAI,GAAInC,EAAEmqB,IAAIqwQ,EAASr4R,EAAI,IAAMnC,EAAEmqB,IAAIqwQ,EAASr4R,KAEtFo4R,GACA3/R,KAAKy8R,WAAWmD,EAASA,EAASp4R,OAAS,GAAIm4R,EAAcv6R,EAAEmqB,IAAIowQ,GAAgBv6R,EAAEmqB,IAAIqwQ,EAASA,EAASp4R,OAAS,KAI5H,KAAOm4R,GAAc,CACjB,IAAIG,EAAa9/R,KAAK+/R,gBAAgBnjC,EAAO+iC,GAC7C,GAAKG,GAcA,GAAIv7O,EAAMh1B,IAAIowQ,KAAkBn7R,EAAG,CACpCi7R,EAAoBE,EAAahD,WACjC,IAAIqD,EAAkBF,EAAWnD,WAEjC,IADAiD,EAAW,GACNr4R,EAAIk4R,EAAoB,EAAGl4R,EAAIy4R,EAAiBz4R,IACjDq4R,EAASj+R,KAAKi7P,EAAMr1P,IAEpBq4R,EAASp4R,OAAS,GAClBxH,KAAK6/R,WAAWz6R,EAAGu6R,EAAcG,EAAYt7R,EAAGo7R,GAEpDL,EAAO/vQ,IAAImwQ,GAAc,QAxBZ,CAGb,IAFAF,EAAoBE,EAAahD,WACjCiD,EAAW,GACNr4R,EAAIk4R,EAAoB,EAAGl4R,EAAIq1P,EAAMp1P,OAAQD,IAC9Cq4R,EAASj+R,KAAKi7P,EAAMr1P,IAExB,GAAIq4R,EAASp4R,OAAS,EAAG,CAErB,IADAxH,KAAK6/R,WAAWz6R,EAAGu6R,EAAc,KAAMn7R,EAAGo7R,GACrCr4R,EAAI,EAAGA,EAAIq4R,EAASp4R,OAAS,IAAKD,EACnCvH,KAAKy8R,WAAWmD,EAASr4R,GAAIq4R,EAASr4R,EAAI,GAAInC,EAAEmqB,IAAIqwQ,EAASr4R,EAAI,IAAMnC,EAAEmqB,IAAIqwQ,EAASr4R,KAE1FvH,KAAKy8R,WAAWkD,EAAcC,EAAS,GAAIx6R,EAAEmqB,IAAIqwQ,EAAS,IAAMx6R,EAAEmqB,IAAIowQ,KAe9EA,EAAeG,EAEnB9/R,KAAKigS,iBAAiBvvK,EAAGlsH,EAAG+/C,EAAOg7O,MAExCv/R,MAGH,IACsC8E,EAAGw5I,EADrC4hJ,EAAiBlgS,KAAKk/R,sBAAwB,EAAIl/R,KAAKm7P,OAAO3zP,OAAS,EASvE24R,EAAiBngS,KAAKk/R,sBAAwB,GAAM,EAAGniR,EAAS,EAKpE,SAASqjR,EAAcxjC,EAAOt+G,GAE1B,IADA,IAAI3xI,EAAS2F,OAAO0rJ,UACXltC,EAAI,EAAGA,EAAI8rI,EAAMp1P,SAAUspH,EAAG,CACnC,IAAI5tF,EAAO05N,EAAM9rI,GAEbnkH,EADA2xI,EAAI0gJ,oBACK37R,KAAKuV,IAAIjM,EAAQu2B,EAAKv2B,QAGtBtJ,KAAKuV,IAAIjM,EAAQu2B,EAAKl2B,OAGvC,OAAOL,EAGX,IAAKpF,EAAI24R,EA3B6Bp7R,EA2BUyC,GA3BP+2I,EA2BUt+I,MA1BvCk/R,sBACGp6R,EAAIw5I,EAAI68G,OAAO3zP,OAGf1C,GAAK,EAsBsCyC,GAAK44R,EAAgB,CAE3E,IAAIxzR,EAASyzR,EADbxjC,EAAQ58P,KAAKm7P,OAAO5zP,GACcvH,MAElC,IAAK8wH,EAAI,EAAGA,EAAI8rI,EAAMp1P,SAAUspH,EAC5B5tF,EAAO05N,EAAM9rI,GACT9wH,KAAKg/R,qBACL97P,EAAK99B,EAAIA,EAAEmqB,IAAI2T,GACfA,EAAK/+B,EAAI4Y,EAASpQ,EAAS,IAG3Bu2B,EAAK99B,EAAI2X,EAASpQ,EAAS,EAC3Bu2B,EAAK/+B,EAAIiB,EAAEmqB,IAAI2T,IAIvBnmB,GAAU/c,KAAKkH,QAAQorR,gBAAkB3lR,IAIjDszR,iBAAkB,SAASvvK,EAAGlsH,EAAG+/C,EAAOg7O,GACpC,KAAI7uK,EAAIlsH,EAAI,GAAKksH,EAAIlsH,GAAKxE,KAAKm7P,OAAO3zP,QAMtC,IAFA,IAAI64R,EAAa,KAAMC,EAAmB,KACtC1jC,EAAQ58P,KAAKm7P,OAAOzqI,EAAIlsH,GACnBssH,EAAI,EAAGA,EAAI8rI,EAAMp1P,SAAUspH,EAAG,CACnC,IAAIyvK,EAAa3jC,EAAM9rI,GACvB,GAAIyvK,EAAW/wB,UAAW,CACtB,IAAIgxB,EAAmBxgS,KAAKygS,mBAAmBF,EAAY7vK,GAC3D,GAAI8vK,EAAiBhxB,UAAW,CAC5B,GAAI6wB,EAAY,CAKZ,IAJA,IAAItvK,EAAIwuK,EAAOhwQ,IAAI+wQ,GACfI,EAAS1gS,KAAKm7P,OAAOzqI,GACrBosK,EAAKwD,EAAiB3D,WACtBI,EAAKyD,EAAiB7D,WACjBp1R,EAAIu1R,EAAK,EAAGv1R,EAAIw1R,IAAMx1R,EACvBm5R,EAAOn5R,GAAGioQ,YACVz+I,EAAIA,GAAKwuK,EAAOhwQ,IAAImxQ,EAAOn5R,KAGnC,GAAIwpH,EAAG,CACHxsE,EAAM/0B,IAAI6wQ,EAAY77R,GAGtB,IAFA,IAAIm8R,EAAKN,EAAW1D,WAChBiE,EAAKL,EAAW5D,WACXhyP,EAAIg2P,EAAK,EAAGh2P,EAAIi2P,IAAMj2P,EACvBiyN,EAAMjyN,GAAG6kO,WACTjrN,EAAM/0B,IAAIotO,EAAMjyN,GAAInmC,IAKpC67R,EAAaE,EACbD,EAAmBE,MAMnCC,mBAAoB,SAASv9P,EAAMwtF,GAC/B,IAAIgtK,EAAW19R,KAAKw9R,QAAQjuQ,IAAI2T,GAAM,GACtC,OAAIw6P,EAAS9gC,QAAUlsI,IAGvBgtK,EAAW19R,KAAKy9R,UAAUluQ,IAAI2T,GAAM,IACvB05N,QAAUlsI,EAHZgtK,EAMJ,MAGXmC,WAAY,SAASz6R,EAAGu6R,EAAcG,EAAYzgQ,EAAKugQ,GAKnD,GAJwB,IAApBA,EAASp4R,QACTxH,KAAK6gS,gBAAgBz7R,EAAGu6R,EAAcG,EAAYzgQ,EAAKugQ,EAAS,IAGhEA,EAASp4R,OAAS,EAAG,CACrB,IAAI6oH,EAAIuvK,EAASp4R,OAAQrC,EAAInF,KAAK29R,OAAOttK,EAAG,GAC5CrwH,KAAK6/R,WAAWz6R,EAAGu6R,EAAcG,EAAYzgQ,EAAKugQ,EAASh5R,MAAM,EAAGzB,IACpEnF,KAAK6/R,WAAWz6R,EAAGu6R,EAAcG,EAAYzgQ,EAAKugQ,EAASh5R,MAAMzB,IACjEnF,KAAK8gS,iBAAiB17R,EAAGu6R,EAAcG,EAAYzgQ,EAAKugQ,KAIhEiB,gBAAiB,SAASz7R,EAAGu6R,EAAcG,EAAYzgQ,EAAK6D,GACxD,IAAIotO,GAAqB,IAATjxO,EAAar/B,KAAKy9R,UAAUluQ,IAAI2T,GAAQljC,KAAKw9R,QAAQjuQ,IAAI2T,GAErE4tF,EAAIw/I,EAAU9oQ,OACR,IAANspH,IACIA,EAAI,GAAM,EACV1rH,EAAEoqB,IAAI0T,EAAM99B,EAAEmqB,IAAI+gP,EAAUtwQ,KAAK29R,OAAO7sK,EAAG,MAG3C1rH,EAAEoqB,IAAI0T,GAAO99B,EAAEmqB,IAAI+gP,EAAUtwQ,KAAK29R,OAAO7sK,EAAG,GAAK,IAAM1rH,EAAEmqB,IAAI+gP,EAAUtwQ,KAAK29R,OAAO7sK,EAAG,MAAQ,GAG9F6uK,GACAv6R,EAAEoqB,IAAI0T,EAAM7/B,KAAKuV,IAAIxT,EAAEmqB,IAAI2T,GAAO99B,EAAEmqB,IAAIowQ,GAAgB3/R,KAAK68R,WAAW8C,EAAcz8P,KAEtF48P,GACA16R,EAAEoqB,IAAI0T,EAAM7/B,KAAK8S,IAAI/Q,EAAEmqB,IAAI2T,GAAO99B,EAAEmqB,IAAIuwQ,GAAc9/R,KAAK68R,WAAW35P,EAAM48P,OAKxFgB,iBAAkB,SAAS17R,EAAGu6R,EAAcG,EAAYzgQ,EAAKugQ,GACzD,IAGmBr4R,EAAG7C,EAAGosH,EAAGw/I,EAAWotB,EAAUqD,EAH7C1wK,EAAIuvK,EAASp4R,OAAQrC,EAAInF,KAAK29R,OAAOttK,EAAG,GAGxC2wK,EAAW,GACf,IAAKz5R,EAAI,EAAGA,EAAIpC,IAAKoC,EAAG,CAGpB,IAFA7C,EAAI,EACJ4rQ,GAAqB,IAATjxO,EAAar/B,KAAKy9R,UAAUluQ,IAAIqwQ,EAASr4R,IAAMvH,KAAKw9R,QAAQjuQ,IAAIqwQ,EAASr4R,IAChFupH,EAAI,EAAGA,EAAIw/I,EAAU9oQ,SAAUspH,EAChC4sK,EAAWptB,EAAUx/I,GACjB1rH,EAAEmqB,IAAImuQ,IAAat4R,EAAEmqB,IAAIqwQ,EAASr4R,IAClC7C,KAGAA,IACAs8R,EAASr/R,KAAK,CAAEmD,EAAGM,EAAEmqB,IAAImuQ,GAAY19R,KAAK68R,WAAW+C,EAASr4R,GAAIq4R,EAASz6R,EAAI,IAAKsM,EAAG,KAG/FuvR,EAASr/R,KAAK,CAAEmD,EAAGM,EAAEmqB,IAAIqwQ,EAASr4R,IAAMvH,KAAK68R,WAAW+C,EAASr4R,GAAIq4R,EAASz6R,EAAI,IAAKsM,EAAG/M,IAE1Fi7R,GACAqB,EAASr/R,KAAK,CAAEmD,EAAGM,EAAEmqB,IAAIowQ,GAAgB3/R,KAAK68R,WAAW8C,EAAcC,EAASz6R,EAAI,IAAKsM,EAAGa,OAAOgjH,YAEvG0rK,EAAS97Q,KAAKllB,KAAKihS,6BAGnB,IAAIC,EAAY,GAChB,IAAK35R,EAAIpC,EAAGoC,EAAI8oH,IAAK9oH,EAAG,CAGpB,IAFA7C,EAAI,EACJ4rQ,GAAqB,IAATjxO,EAAar/B,KAAKy9R,UAAUluQ,IAAIqwQ,EAASr4R,IAAMvH,KAAKw9R,QAAQjuQ,IAAIqwQ,EAASr4R,IAChFupH,EAAI,EAAGA,EAAIw/I,EAAU9oQ,SAAUspH,EAChC4sK,EAAWptB,EAAUx/I,GACjB1rH,EAAEmqB,IAAImuQ,IAAat4R,EAAEmqB,IAAIqwQ,EAASr4R,IAClC7C,KAGAA,IACAw8R,EAAUv/R,KAAK,CAAEmD,EAAGM,EAAEmqB,IAAImuQ,GAAY19R,KAAK68R,WAAW+C,EAASr4R,GAAIq4R,EAASz6R,IAAKsM,EAAG,KAG5FyvR,EAAUv/R,KAAK,CAAEmD,EAAGM,EAAEmqB,IAAIqwQ,EAASr4R,IAAMvH,KAAK68R,WAAW+C,EAASr4R,GAAIq4R,EAASz6R,IAAKsM,EAAG/M,IAEvFo7R,GACAoB,EAAUv/R,KAAK,CAAEmD,EAAGM,EAAEmqB,IAAIuwQ,GAAc9/R,KAAK68R,WAAWiD,EAAYF,EAASz6R,IAAKsM,EAAGa,OAAOgjH,YAEhG4rK,EAAUh8Q,KAAKllB,KAAKmhS,4BAIpB,IAFA,IAAIC,EAAU,EAAGC,EAAW,EACxBr8R,EAAIhF,KAAK68R,WAAW+C,EAASz6R,EAAI,GAAIy6R,EAASz6R,IAC3CC,EAAEmqB,IAAIqwQ,EAASz6R,IAAMC,EAAEmqB,IAAIqwQ,EAASz6R,EAAI,IAAMH,GACjD,GAAIo8R,EAAUC,EAAU,CACpB,GAAwB,IAApBL,EAASx5R,OAAc,CACvBpC,EAAEoqB,IAAIowQ,EAASz6R,EAAI,GAAIC,EAAEmqB,IAAIqwQ,EAASz6R,IAAMH,GAC5C,MAIAo8R,IADAL,EAAOC,EAASnrR,SACSpE,EACzBrM,EAAEoqB,IAAIowQ,EAASz6R,EAAI,GAAI47R,EAAKj8R,GAC5BM,EAAEoqB,IAAIowQ,EAASz6R,EAAI,GAAI9B,KAAKuV,IAAIxT,EAAEmqB,IAAIqwQ,EAASz6R,EAAI,IAAKC,EAAEmqB,IAAIqwQ,EAASz6R,IAAMH,QAGhF,CACD,GAAyB,IAArBk8R,EAAU15R,OAAc,CACxBpC,EAAEoqB,IAAIowQ,EAASz6R,GAAIC,EAAEmqB,IAAIqwQ,EAASz6R,EAAI,IAAMH,GAC5C,MAIAq8R,IADAN,EAAOG,EAAUrrR,SACUpE,EAC3BrM,EAAEoqB,IAAIowQ,EAASz6R,GAAI47R,EAAKj8R,GACxBM,EAAEoqB,IAAIowQ,EAASz6R,GAAI9B,KAAK8S,IAAI/Q,EAAEmqB,IAAIqwQ,EAASz6R,IAAKC,EAAEmqB,IAAIqwQ,EAASz6R,EAAI,IAAMH,IAIrF,IAAKuC,EAAIpC,EAAI,EAAGoC,GAAK,EAAGA,IACpBnC,EAAEoqB,IAAIowQ,EAASr4R,GAAIlE,KAAK8S,IAAI/Q,EAAEmqB,IAAIqwQ,EAASr4R,IAAKnC,EAAEmqB,IAAIqwQ,EAASz6R,EAAI,IAAMnF,KAAK68R,WAAW+C,EAASr4R,GAAIq4R,EAASz6R,EAAI,MAEvH,IAAKoC,EAAIpC,EAAI,EAAGoC,EAAI8oH,EAAG9oH,IACnBnC,EAAEoqB,IAAIowQ,EAASr4R,GAAIlE,KAAKuV,IAAIxT,EAAEmqB,IAAIqwQ,EAASr4R,IAAKnC,EAAEmqB,IAAIqwQ,EAASz6R,IAAMnF,KAAK68R,WAAW+C,EAASr4R,GAAIq4R,EAASz6R,OAInHi4R,UAAW,SAASl6P,EAAMg6P,EAASoE,GAC/B,IAAIjtM,EAAM/hF,OAAO0rR,kBACjBj3B,EAAMzlQ,QAAQtB,KAAKuhS,cAAcr+P,IAAO,SAASzxB,GAC7C,IAAIwsR,EAAcj+R,KAAKi+R,YAAYxsR,GAC/BwsR,GAAej+R,KAAKu9R,cAAchuQ,IAAI0uQ,KAAiBj+R,KAAKu9R,cAAchuQ,IAAI9d,KACzEyrR,EAAQjvB,YAAYgwB,IACrBj+R,KAAKo9R,UAAUa,EAAaf,EAASoE,GAEzCjtM,EAAMhxF,KAAKuV,IAAIy7E,EAAK6oM,EAAQ3tQ,IAAI0uQ,GAAej+R,KAAK68R,WAAWoB,EAAaxsR,OAEjFzR,MACCq0F,IAAQ/hF,OAAO0rR,oBACf3pM,EAAM,GAEV0yK,EAAMzlQ,QAAQtB,KAAKuhS,cAAcr+P,IAAO,SAASzxB,GAC7CyrR,EAAQ1tQ,IAAI/d,EAAG4iF,OAIvB0pM,WAAY,SAAS76P,EAAM46P,EAAU0D,GACjC,IAAIntM,EAAM/hF,OAAO+qR,kBACjBt2B,EAAMzlQ,QAAQtB,KAAKuhS,cAAcr+P,IAAO,SAASzxB,GAC7C,IAAI6rR,EAAet9R,KAAKs9R,aAAa7rR,GACjC6rR,GAAgBt9R,KAAKk+R,eAAe3uQ,IAAI+tQ,KAAkBt9R,KAAKk+R,eAAe3uQ,IAAI9d,KAC7EqsR,EAAS7vB,YAAYqvB,IACtBt9R,KAAK+9R,WAAWT,EAAcQ,EAAU0D,GAE5CntM,EAAMhxF,KAAK8S,IAAIk+E,EAAKypM,EAASvuQ,IAAI+tQ,GAAgBt9R,KAAK68R,WAAWprR,EAAG6rR,OAEzEt9R,MACCq0F,IAAQ/hF,OAAO+qR,oBACfhpM,EAAM,GAEV0yK,EAAMzlQ,QAAQtB,KAAKuhS,cAAcr+P,IAAO,SAASzxB,GAC7CqsR,EAAStuQ,IAAI/d,EAAG4iF,OAIxB4pM,YAAa,SAAS/6P,GAClB,IAAI05N,EAAQ58P,KAAKm7P,OAAOj4N,EAAK05N,OACzB+/B,EAAaz5P,EAAKy5P,WACtB,OAAsB,IAAfA,EAAmB,KAAO//B,EAAM+/B,EAAa,IAGxDW,aAAc,SAASp6P,GACnB,IAAI05N,EAAQ58P,KAAKm7P,OAAOj4N,EAAK05N,OACzB+/B,EAAaz5P,EAAKy5P,WACtB,OAAOA,IAAe//B,EAAMp1P,OAAS,EAAI,KAAOo1P,EAAM+/B,EAAa,IAIvE4E,cAAe,SAASr+P,GACpB,OAAOA,EAAKssO,UAAYxvQ,KAAK4+R,aAAa17P,GAAQ,CAACA,IAGvDo5P,aAAc,WACV,IAAI/0R,EAAGmpH,EAAGsiJ,EAAIpW,EAAO15N,EAErB,IAAKwtF,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,OAAQkpH,IAGhC,IAFAksI,EAAQ58P,KAAKm7P,OAAOzqI,GAEfsiJ,EAAK,EAAGA,EAAKpW,EAAMp1P,OAAQwrQ,KAC5B9vO,EAAO05N,EAAMoW,IACRsoB,iBAAmBp4P,EAAKi4P,kBAC7Bj4P,EAAKq4P,mBAAqBr4P,EAAKg4P,oBAQvC,IADA,IACSuG,EAAK,EAAGA,EADS,EACiBA,IAAM,CAC7C,IAAKl6R,EAAIvH,KAAKm7P,OAAO3zP,OAAS,EAAGD,GAAK,EAAGA,IACrCvH,KAAK0hS,aAAY,EAAOn6R,GAG5B,IAAKA,EAAI,EAAGA,EAAIvH,KAAKm7P,OAAO3zP,OAAS,EAAGD,IACpCvH,KAAK0hS,aAAY,EAAMn6R,GAK/B,IAAIo6R,EAAUrvR,OAAOgjH,UACrB,IAAK5E,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,OAAQkpH,IAGhC,IAFAksI,EAAQ58P,KAAKm7P,OAAOzqI,GAEfsiJ,EAAK,EAAGA,EAAKpW,EAAMp1P,OAAQwrQ,IAC5B9vO,EAAO05N,EAAMoW,GACb2uB,EAAUt+R,KAAK8S,IAAIwrR,EAASz+P,EAAKs4P,cAIzC,GAAImG,EAAU,EACV,IAAKjxK,EAAI,EAAGA,EAAI1wH,KAAKm7P,OAAO3zP,OAAQkpH,IAGhC,IAFAksI,EAAQ58P,KAAKm7P,OAAOzqI,GAEfsiJ,EAAK,EAAGA,EAAKpW,EAAMp1P,OAAQwrQ,KAC5B9vO,EAAO05N,EAAMoW,IACRwoB,aAAet4P,EAAKs4P,aAAemG,GAYxDD,YAAa,SAASl0Q,EAAMovO,GACxB,IAAIglC,EACAC,EAGAA,EADAr0Q,EACaxtB,KAAKm7P,OAAOymC,EAAchlC,EAAQ,GAGlC58P,KAAKm7P,OAAOymC,EAAchlC,EAAQ,GAKnD,IADA,IAAI53O,EAAS,GACJ8rG,EAAI,EAAGA,EAAI+wK,EAAWr6R,OAAQspH,IACnC9rG,EAAOrjB,KAAKkgS,EAAW/wK,IAE3B9rG,EAAOE,MAAK,SAASqvP,EAAIC,GACrB,IAAIstB,GAAcvtB,EAAG+mB,iBAAmB/mB,EAAGgnB,oBAAsB,EAC7DwG,GAAcvtB,EAAG8mB,iBAAmB9mB,EAAG+mB,oBAAsB,EAEjE,OAAIl4R,KAAK6T,IAAI4qR,EAAaC,GAAc,KAC7B,EAEPD,EAAaC,EACN,GAEH,KAIZh7B,EAAMzlQ,QAAQ0jB,GAAQ,SAASke,GAC3B,IAAI8+P,EAAc9+P,EAAKs4P,aACnByG,EAAiBjiS,KAAKkiS,eAAeh/P,GACrCi/P,GAAgBj/P,EAAKo4P,iBAAmBp4P,EAAKq4P,oBAAsB,EAEvE,KAAIl4R,KAAK6T,IAAI8qR,EAAcC,GAAkB,MAKzC5+R,KAAK6T,IAAI8qR,EAAcC,GAAkB,OAK7C,GAAID,EAAcC,EAGd,KAAOD,EAAcC,GACZjiS,KAAKoiS,UAAUl/P,EAAM2+P,EAAYM,IAItCH,EAAc9+P,EAAKs4P,kBAMvB,KAAOwG,EAAcC,GACZjiS,KAAKqiS,SAASn/P,EAAM2+P,EAAYM,IAIrCH,EAAc9+P,EAAKs4P,eAG5Bx7R,MAIC4hS,EAAc,GACd5hS,KAAKsiS,aAAaV,EAAc,GAEhCA,EAAc5hS,KAAKm7P,OAAO3zP,OAAS,GACnCxH,KAAKuiS,WAAWX,EAAc,IAUtCQ,UAAW,SAASl/P,EAAM05N,EAAO4lC,GAC7B,IAAIzpR,EAAQguP,EAAMpxP,QAAQinP,EAAO15N,GACjC,GAAInqB,IAAU6jP,EAAMp1P,OAAS,EAGzB,OADA07B,EAAKs4P,aAAet4P,EAAKs4P,aAAe,IACjC,EAGX,IAAIiH,EAAY7lC,EAAM7jP,EAAQ,GAC1B2pR,GAAqBD,EAAUnH,iBAAmBmH,EAAUlH,oBAAsB,EAGtF,OAAIkH,EAAUjH,aAAet4P,EAAKs4P,aAAe,GAC7Ct4P,EAAKs4P,aAAet4P,EAAKs4P,aAAe,IACjC,KAIPkH,EAAoBF,GACpBn/R,KAAK6T,IAAIwrR,EAAoBF,GAAY,UAKzCxiS,KAAKoiS,UAAUK,EAAW7lC,EAAO4lC,KACjCt/P,EAAKs4P,aAAet4P,EAAKs4P,aAAe,IACjC,KAYf6G,SAAU,SAASn/P,EAAM05N,EAAO4lC,GAC5B,IAAIzpR,EAAQguP,EAAMpxP,QAAQinP,EAAO15N,GACjC,GAAc,IAAVnqB,EAGA,OADAmqB,EAAKs4P,aAAet4P,EAAKs4P,aAAe,IACjC,EAGX,IAAImH,EAAW/lC,EAAM7jP,EAAQ,GACzB6pR,GAAoBD,EAASrH,iBAAmBqH,EAASpH,oBAAsB,EAGnF,OAAIoH,EAASnH,aAAet4P,EAAKs4P,aAAe,GAC5Ct4P,EAAKs4P,aAAet4P,EAAKs4P,aAAe,IACjC,KAIPoH,EAAmBJ,GACnBn/R,KAAK6T,IAAI0rR,EAAmBJ,GAAY,UAKxCxiS,KAAKqiS,SAASM,EAAU/lC,EAAO4lC,KAC/Bt/P,EAAKs4P,aAAet4P,EAAKs4P,aAAe,IACjC,KAMfqH,eAAgB,SAAS3/P,EAAMk9L,GAC3BpgO,KAAK8iS,cAActzQ,IAAI0T,EAAMk9L,GACxBpgO,KAAK+iS,cAAc90B,YAAY7tC,IAChCpgO,KAAK+iS,cAAcvzQ,IAAI4wM,EAAM,IAEjCpgO,KAAK+iS,cAAcxzQ,IAAI6wM,GAAMz+N,KAAKuhC,IAGtC07P,aAAc,SAAS17P,GACnB,OAAOljC,KAAK+iS,cAAcxzQ,IAAIvvB,KAAK8iS,cAAcvzQ,IAAI2T,KAMzDi5P,SAAU,WACNn8R,KAAK+iS,cAAgB,IAAIr0B,EACzB1uQ,KAAK8iS,cAAgB,IAAIp0B,EAEzB,IAAI9R,EAAOvoK,EAAKqgL,EAASxxO,EAAMmtF,EAAG6iJ,EAAS3rQ,EAAGmpH,EAAGw+I,EAAQlvQ,KAAKq4Q,MAAMnJ,MAAMtoQ,MAAM,GAC5Eu0P,EAASn7P,KAAKm7P,OAEd6nC,EAAuB,SAASC,EAASC,EAAW9iE,GACpD+6B,EAAO8nC,GAAS/G,QAAQgH,GAAa/nC,EAAO8nC,GAAS/G,QAAQgH,IAAc,GAC3E/nC,EAAO8nC,GAAS/G,QAAQgH,GAAWvhS,KAAKy+N,IAG5C,IAAK1vG,EAAI,EAAGA,EAAIw+I,EAAM1nQ,OAAQkpH,IAAK,CAC/B,IAAI0vG,EAAO8uC,EAAMx+I,GACbvlE,EAAIi1K,EAAK9yN,OACT9I,EAAI47N,EAAK94N,OAET67R,EAASh4O,EAAEyxM,MACXwmC,EAAS5+R,EAAEo4P,MACXymC,EAAOl4O,EAAEqwO,aACT8H,EAAO9+R,EAAEg3R,aAET9oP,GAAQ4wP,EAAOD,GAAQhgS,KAAK6T,IAAIksR,EAASD,GAEzCpyK,EAAI5lE,EACR,GAAIg4O,EAASC,EAAS,EAAG,CACrB,IAAK77R,EAAI47R,EAAS,EAAG57R,EAAI67R,EAAQ77R,IAAK,CAmClC,KAlCAmtQ,EAAU,IAAI1qM,GACN5kE,EAAI+lD,EAAE/lD,EACdsvQ,EAAQvwQ,EAAIgnD,EAAEhnD,EACduwQ,EAAQ1nQ,MAAQm+C,EAAEn+C,MAAQ,IAC1B0nQ,EAAQ/nQ,OAASw+C,EAAEx+C,OAAS,KAG5B0nF,GAAO9sF,EAAI67R,GAAU1wP,EAAO2wP,IAD5BzmC,EAAQzB,EAAO5zP,IAECC,SACZ6sF,EAAMuoK,EAAMp1P,QAIZ67R,GAAQloC,EAAOgoC,GAAQ37R,OAAS,GAChC87R,GAAQnoC,EAAOioC,GAAQ57R,OAAS,EAChC6sF,EAAMuoK,EAAMp1P,OAIE,IAAT67R,GAAuB,IAATC,IACnBjvM,EAAM,GAGVqgL,EAAQ9X,MAAQr1P,EAChBmtQ,EAAQ0mB,YAAc,EACtB1mB,EAAQ2mB,YAAc,EACtB3mB,EAAQymB,kBAAoB,EAC5BzmB,EAAQwmB,oBAAsB,EAC9BxmB,EAAQ8mB,aAAennM,EACvBqgL,EAAQlF,WAAY,EAEpBzI,EAAMnqM,OAAOggM,EAAO8X,EAASrgL,GAGxBg8B,EAAIh8B,EAAM,EAAGg8B,EAAIusI,EAAMp1P,OAAQ6oH,KAChCntF,EAAO05N,EAAMvsI,IACRmrK,aAAet4P,EAAKs4P,aAAe,GAG5CtoB,EAAU,IAAI3C,EAAKx/I,EAAG2jJ,IACd6uB,iBAAmB,EAE3BP,EAAqBz7R,EAAI,EAAGA,EAAG2rQ,GAE/BniJ,EAAI2jJ,EAGJ10Q,KAAKq4Q,MAAMvF,SAAS4B,GACpB10Q,KAAKq4Q,MAAMlF,QAAQD,GAEnBwB,EAAQ37P,MAAQ/Y,KAAKq4Q,MAAMtsN,MAAMvkD,OAAS,EAC1CxH,KAAK6iS,eAAenuB,EAASt0C,GAIjC4iE,EAAqBI,EAAS,EAAGA,EAAQlwB,GACzC9yC,EAAK6wC,aAAalgJ,GAClBqvG,EAAKmjE,iBAAmBJ,EAASC,EAAS,OACvC,GAAID,EAASC,GAAU,EAAG,CAC7B,IAAK77R,EAAI47R,EAAS,EAAG57R,EAAI67R,EAAQ77R,IAAK,CAoClC,KAnCAmtQ,EAAU,IAAI1qM,GACN5kE,EAAI+lD,EAAE/lD,EACdsvQ,EAAQvwQ,EAAIgnD,EAAEhnD,EACduwQ,EAAQ1nQ,MAAQm+C,EAAEn+C,MAAQ,IAC1B0nQ,EAAQ/nQ,OAASw+C,EAAEx+C,OAAS,KAG5B0nF,GAAO9sF,EAAI47R,GAAUzwP,EAAO2wP,IAD5BzmC,EAAQzB,EAAO5zP,IAECC,SACZ6sF,EAAMuoK,EAAMp1P,QAIZ67R,GAAQloC,EAAOgoC,GAAQ37R,OAAS,GAChC87R,GAAQnoC,EAAOioC,GAAQ57R,OAAS,EAChC6sF,EAAMuoK,EAAMp1P,OAIE,IAAT67R,GAAuB,IAATC,IACnBjvM,EAAM,GAGVqgL,EAAQ9X,MAAQr1P,EAChBmtQ,EAAQ0mB,YAAc,EACtB1mB,EAAQ2mB,YAAc,EACtB3mB,EAAQymB,kBAAoB,EAC5BzmB,EAAQwmB,oBAAsB,EAC9BxmB,EAAQ8mB,aAAennM,EACvBqgL,EAAQlF,WAAY,EAEpBn7K,GAAOA,EACP0yK,EAAMnqM,OAAOggM,EAAO8X,EAASrgL,GAGxBg8B,EAAIh8B,EAAM,EAAGg8B,EAAIusI,EAAMp1P,OAAQ6oH,KAChCntF,EAAO05N,EAAMvsI,IACRmrK,aAAet4P,EAAKs4P,aAAe,GAG5CtoB,EAAU,IAAI3C,EAAKx/I,EAAG2jJ,IACd6uB,iBAAmB,EAC3BP,EAAqBz7R,EAAI,EAAGA,EAAG2rQ,GAE/BniJ,EAAI2jJ,EAGJ10Q,KAAKq4Q,MAAMvF,SAAS4B,GACpB10Q,KAAKq4Q,MAAMlF,QAAQD,GAEnBwB,EAAQ37P,MAAQ/Y,KAAKq4Q,MAAMtsN,MAAMvkD,OAAS,EAC1CxH,KAAK6iS,eAAenuB,EAASt0C,GAEjC4iE,EAAqBI,EAAS,EAAGA,EAAQhjE,GAGzCA,EAAK6wC,aAAalgJ,GAClBqvG,EAAKmjE,iBAAmBH,EAASD,EAAS,OAE1CH,EAAqBG,EAAQC,EAAQhjE,KASjDo8D,WAAY,WAER,IADA,IAAIgH,GAAQ,EACLA,GAAO,CACVA,GAAQ,EAER,IAAK,IAAI9yK,EAAI,EAAGA,EAAI1wH,KAAKq4Q,MAAMnJ,MAAM1nQ,OAAQkpH,IAAK,CAC9C,IAAI0vG,EAAOpgO,KAAKq4Q,MAAMnJ,MAAMx+I,GAC5B,GAAK0vG,EAAKmjE,iBAAV,CAIA,IAAIliK,EAAS,GAGbA,EAAOl3H,QAAQ,CAAE/E,EAAGg7N,EAAK94N,OAAOlC,EAAGjB,EAAGi8N,EAAK94N,OAAOnD,IAClDk9H,EAAOl3H,QAAQ,CAAE/E,EAAGg7N,EAAK9yN,OAAOlI,EAAGjB,EAAGi8N,EAAK9yN,OAAOnJ,IAKlD,IAFA,IAAIi2C,EAAOgmL,EACPmjE,EAAmBnjE,EAAKmjE,iBACnB/+R,EAAI,EAAGA,EAAI++R,EAAkB/+R,IAAK,CACvC,IACIi/R,EADOrpP,EAAK9sC,OACI8hQ,SAAS,GAE7B/tI,EAAOl3H,QAAQ,CAAE/E,EAAGq+R,EAASn2R,OAAOlI,EAAGjB,EAAGs/R,EAASn2R,OAAOnJ,IAE1Di2C,EAAOqpP,EAIXrjE,EAAK6wC,aAAa72N,EAAK9sC,QAGvB8yN,EAAKmjE,iBAAmB,EAGpBliK,EAAO75H,OAAS,GAEhB65H,EAAO72H,OAAO,EAAG,GACjB62H,EAAO72H,OAAO62H,EAAO75H,OAAS,GAC9B44N,EAAK/+F,OAASA,GAGd++F,EAAK/+F,OAAS,GAMlBmiK,GAAQ,EACR,UAQZpH,mBAAoB,WAKhB,IAJA,IAAgB70R,EAAZm8R,GAAS,EAETC,EAAO,EAEM,IAAVD,KACCC,IAJY,IAGA,CAOhB,IAFAD,EAAQ,EAEHn8R,EAAIvH,KAAKm7P,OAAO3zP,OAAS,EAAGD,GAAK,EAAGA,IACrCm8R,GAAS1jS,KAAK4jS,wBAAuB,EAAOr8R,GAGhD,IAAKA,EAAI,EAAGA,EAAIvH,KAAKm7P,OAAO3zP,OAAS,EAAGD,IACpCm8R,GAAS1jS,KAAK4jS,wBAAuB,EAAMr8R,KAKvDg7R,WAAY,SAAS3lC,GACjB,GAAc,IAAVA,EAAJ,CAIA,IAAqCr1P,EAAGmpH,EAAG0vG,EAAvCyhE,EAAa7hS,KAAKm7P,OAAOyB,GACzBqmC,EAAU,IAAI7hI,EACdhnH,EAAOp6C,KAAKm7P,OAAOyB,EAAQ,GAC/B,IAAKr1P,EAAI,EAAGA,EAAI6yC,EAAK5yC,OAAQD,IACzB07R,EAAQh2R,IAAImtC,EAAK7yC,IAGrB,IAAKA,EAAI,EAAGA,EAAIs6R,EAAWr6R,OAAQD,IAAK,CACpC,IAAI27B,EAAO2+P,EAAWt6R,GAGlBstD,EAAM,EACNjO,EAAQ,EAEZ,IAAK8pE,EAAI,EAAGA,EAAIxtF,EAAKksO,SAAS5nQ,OAAQkpH,IAClC0vG,EAAOl9L,EAAKksO,SAAS1+I,GACjBuyK,EAAQ9tQ,SAASirM,EAAK9yN,UACtBs5C,IACAiO,GAAOurK,EAAK9yN,OAAOkuR,cAI3B,IAAK9qK,EAAI,EAAGA,EAAIxtF,EAAKisO,SAAS3nQ,OAAQkpH,IAClC0vG,EAAOl9L,EAAKisO,SAASz+I,GACjBuyK,EAAQ9tQ,SAASirM,EAAK94N,UACtBs/C,IACAiO,GAAOurK,EAAK94N,OAAOk0R,cAIvB50O,EAAQ,GACR1jB,EAAKk4P,YAAcvmO,EAAMjO,EACzB1jB,EAAKi4P,kBAAoBv0O,IAGzB1jB,EAAKk4P,YAAc7zR,EACnB27B,EAAKi4P,kBAAoB,MAKrCmH,aAAc,SAAS1lC,GACnB,GAAIA,IAAU58P,KAAKm7P,OAAO3zP,OAAS,EAAnC,CAIA,IAAqCD,EAAImpH,EAAG0vG,EAAxCyhE,EAAa7hS,KAAKm7P,OAAOyB,GACzBsmC,EAAY,IAAI9hI,EAChBhnH,EAAOp6C,KAAKm7P,OAAOyB,EAAQ,GAC/B,IAAKr1P,EAAI,EAAGA,EAAI6yC,EAAK5yC,OAAQD,IACzB27R,EAAUj2R,IAAImtC,EAAK7yC,IAGvB,IAAKA,EAAI,EAAGA,EAAIs6R,EAAWr6R,OAAQD,IAAK,CACpC,IAAI27B,EAAO2+P,EAAWt6R,GAGlBstD,EAAM,EACNjO,EAAQ,EAEZ,IAAK8pE,EAAI,EAAGA,EAAIxtF,EAAKksO,SAAS5nQ,OAAQkpH,IAClC0vG,EAAOl9L,EAAKksO,SAAS1+I,GACjBwyK,EAAU/tQ,SAASirM,EAAK9yN,UACxBs5C,IACAiO,GAAOurK,EAAK9yN,OAAOkuR,cAI3B,IAAK9qK,EAAI,EAAGA,EAAIxtF,EAAKisO,SAAS3nQ,OAAQkpH,IAClC0vG,EAAOl9L,EAAKisO,SAASz+I,GACjBwyK,EAAU/tQ,SAASirM,EAAK94N,UACxBs/C,IACAiO,GAAOurK,EAAK94N,OAAOk0R,cAIvB50O,EAAQ,GACR1jB,EAAKm4P,YAAcxmO,EAAMjO,EACzB1jB,EAAKg4P,oBAAsBt0O,IAG3B1jB,EAAKm4P,YAAc9zR,EACnB27B,EAAKg4P,oBAAsB,MAavC0I,uBAAwB,SAASp2Q,EAAMovO,GACnC,IAAIglC,EACAC,EAUAgC,GAPAhC,EADAr0Q,EACaxtB,KAAKm7P,OAAOymC,EAAchlC,EAAQ,GAGlC58P,KAAKm7P,OAAOymC,EAAchlC,EAAQ,IAIxBh2P,MAAM,GAG7B4mB,EACAxtB,KAAKuiS,WAAWX,GAGhB5hS,KAAKsiS,aAAaV,GAGtB,IAAI35R,EAAOjI,KAEX6hS,EAAW38Q,MAAK,SAASqvP,EAAIC,GACzB,IAAIsvB,EAAe77R,EAAKi6R,eAAe3tB,GACnCwvB,EAAe97R,EAAKi6R,eAAe1tB,GACvC,GAAInxQ,KAAK6T,IAAI4sR,EAAeC,GAAgB,KAExC,OAAIxvB,EAAGrE,WAAasE,EAAGtE,SACZjoQ,EAAK+7R,eAAezvB,EAAIC,GAE1BD,EAAGrE,SAAWsE,EAAGtE,SACf,GAEH,EAEZ,IAAI+zB,EAA+C,KAA/BF,EAAeD,GACnC,OAAIG,EAAe,GACP,EAEHA,EAAe,EACb,EAEJh8R,EAAK+7R,eAAezvB,EAAIC,MAInC,IAAIjtQ,EAAGm8R,EAAQ,EACf,IAAKn8R,EAAI,EAAGA,EAAIs6R,EAAWr6R,OAAQD,IAC3Bs6R,EAAWt6R,KAAOs8R,EAAUt8R,IAC5Bm8R,IAIR,GAAIA,EAAQ,EAAG,CAEX,IAAIQ,EAAQ,EACZ,IAAK38R,EAAI,EAAGA,EAAIs6R,EAAWr6R,OAAQD,IAAK,CACzBs6R,EAAWt6R,GACjBi0R,aAAe0I,KAI5B,OAAOR,GAQXrH,WAAY,WAIR,IAHA,IAAI8H,EAAgBnkS,KAAKkH,QAAQqrR,kBAC7BoR,EAAO,IAGHA,IAASQ,IAOb,IAHA,IAAIC,EAAaT,EAAO,GAAK,EACzBU,EAAcV,EAAO,GAAM,EAEtBjzK,EAAK0zK,EAAY,EAAIpkS,KAAKm7P,OAAO3zP,OAAS,EAC9C48R,EAAY1zK,GAAK1wH,KAAKm7P,OAAO3zP,OAAS,EAAIkpH,GAAK,EAAGA,GAAM0zK,EAAY,GAAK,EAAI,CAS9E,IARA,IAAIxnC,EAAQ58P,KAAKm7P,OAAOzqI,GACpB4zK,GAAa,EAIbC,GAAgB,EAChBC,EAAe,EAEV1zK,EAAI,EAAGA,EAAI8rI,EAAMp1P,OAAS,EAAGspH,IAAK,CAEvC,IAAIrjG,EAAK,EACLD,EAAO,EACPi3Q,EAAc,EAsBlB,GApBIF,GACU,IAAN7zK,IACAjjG,EAAKztB,KAAK0kS,mCAAmCh0K,EAAI,EAAGA,IAEpDA,IAAM1wH,KAAKm7P,OAAO3zP,OAAS,IAC3BgmB,EAAOxtB,KAAK0kS,mCAAmCh0K,EAAGA,EAAI,IAEtD0zK,EACA32Q,GAAM,EAGND,GAAQ,EAGZi3Q,EAAch3Q,EAAKD,GAGnBi3Q,EAAcD,EAGE,IAAhBC,EAAJ,CAKA,IAAIE,EAAQ/nC,EAAM9rI,GACd8zK,EAAQhoC,EAAM9rI,EAAI,GAElB+zK,EAAeF,EAAMnJ,aACrBsJ,EAAeF,EAAMpJ,aACzB5+B,EAAM9rI,GAAK8zK,EACXhoC,EAAM9rI,EAAI,GAAK6zK,EACfA,EAAMnJ,aAAesJ,EACrBF,EAAMpJ,aAAeqJ,EAGrBp3Q,EAAK,EACK,IAANijG,IACAjjG,EAAKztB,KAAK0kS,mCAAmCh0K,EAAI,EAAGA,IAExDljG,EAAO,EACHkjG,IAAM1wH,KAAKm7P,OAAO3zP,OAAS,IAC3BgmB,EAAOxtB,KAAK0kS,mCAAmCh0K,EAAGA,EAAI,IAEtD0zK,EACA32Q,GAAM,EAGND,GAAQ,EAEZ,IAAIu3Q,EAAat3Q,EAAKD,GAGlB62Q,EACSU,GAAcN,EAGdM,EAAaN,IAItBE,EAAQ/nC,EAAM9rI,GACd8zK,EAAQhoC,EAAM9rI,EAAI,GAElB+zK,EAAeF,EAAMnJ,aACrBsJ,EAAeF,EAAMpJ,aACrB5+B,EAAM9rI,GAAK8zK,EACXhoC,EAAM9rI,EAAI,GAAK6zK,EACfA,EAAMnJ,aAAesJ,EACrBF,EAAMpJ,aAAeqJ,EAIrBL,EAAeC,EACfF,GAAgB,IAGhBD,GAAa,EACbC,GAAgB,IAIpBD,IACI5zK,IAAM1wH,KAAKm7P,OAAO3zP,OAAS,GAC3BxH,KAAKuiS,WAAW7xK,EAAI,GAEd,IAANA,GACA1wH,KAAKsiS,aAAa5xK,EAAI,MAa1Cg0K,mCAAoC,SAASM,EAAQC,GACjD,IACIC,EAAOC,EAAOC,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EADtCv2B,EAAQlvQ,KAAKm7P,OAAO6pC,GAAQ9I,QAAQ+I,GAEpCS,EAAY,EACZl+R,EAAS0nQ,EAAM1nQ,OAEnB,IAAKg+R,EAAK,EAAGA,EAAKh+R,EAAQg+R,IAEtB,IADAN,EAAQh2B,EAAMs2B,GACTC,EAAKD,EAAK,EAAGC,EAAKj+R,EAAQi+R,IAAM,CAEjCN,EAAQj2B,EAAMu2B,GAEVP,EAAM59R,OAAOs1P,QAAUqoC,GACvBG,EAAMF,EAAM53R,OACZ+3R,EAAMH,EAAM59R,SAGZ89R,EAAMF,EAAM59R,OACZ+9R,EAAMH,EAAM53R,QAGZ63R,EAAM79R,OAAOs1P,QAAUqoC,GACvBK,EAAMH,EAAM73R,OACZi4R,EAAMJ,EAAM79R,SAGZg+R,EAAMH,EAAM79R,OACZi+R,EAAMJ,EAAM73R,QAGhB,IAAIq4R,EAAQP,EAAI5J,aACZoK,EAAQP,EAAI7J,cAIXmK,EAHOL,EAAI9J,eAGOoK,EAFXL,EAAI/J,cAEwB,GACpCkK,IAKZ,OAAOA,GAGXxD,eAAgB,SAASh/P,GACrB,IAAIi4P,EAAoBj4P,EAAKi4P,kBACzBD,EAAsBh4P,EAAKg4P,oBAC3BE,EAAcl4P,EAAKk4P,YACnBC,EAAcn4P,EAAKm4P,YAEvB,OAAIF,EAAoB,GAAKD,EAAsB,GACvCE,EAAcC,GAAe,EAErCF,EAAoB,EACbC,EAEPF,EAAsB,EACfG,EAGJ,GAGX8D,sBAAuB,SAAS/5R,EAAGjB,GAC/B,OAAIiB,EAAEo2R,aAAer3R,EAAEq3R,cACX,EAERp2R,EAAEo2R,aAAer3R,EAAEq3R,aACZ,EAEJ,GAGX2F,2BAA4B,SAAS/7R,EAAGjB,GACpC,OAAOiB,EAAEN,EAAIX,EAAEW,GAAK,EAAIM,EAAEN,EAAIX,EAAEW,EAAI,EAAI,GAG5Cm8R,4BAA6B,SAAS77R,EAAGjB,GACrC,OAAOiB,EAAEN,EAAIX,EAAEW,EAAI,EAAIM,EAAEN,EAAIX,EAAEW,GAAK,EAAI,GAG5C46R,kBAAmB,SAAS9iC,GACxB,IAAK,IAAIl4P,EAAI,EAAGA,EAAIk4P,EAAMp1P,OAAQ9C,IAC9B,GAAIk4P,EAAMl4P,GAAG8qQ,UACT,OAAO9qQ,EAGf,OAAQ,GAGZs/R,eAAgB,SAASz5B,EAAIuxB,GACzB,IAAIgB,EAAKvyB,EAAGxxP,MACRgkR,EAAKjB,EAAG/iR,MAEZ,OAAI+jR,EAAKC,EACE,EAGPD,EAAKC,GACG,EAGL,GAGXY,OAAQ,SAASkI,EAAWC,GACxB,OAAQD,EAAYA,EAAYC,GAAeA,GAGnD/F,gBAAiB,SAASnjC,EAAO15N,GAE7B,IADA,IACS37B,EADO27B,EAAKy5P,WACI,EAAGp1R,EAAIq1P,EAAMp1P,SAAUD,EAC5C,GAAIq1P,EAAMr1P,GAAGioQ,UACT,OAAO5S,EAAMr1P,GAGrB,OAAO,QASXivR,EAAc71R,EAAMiH,MAAM7E,OAAO,CACjCoF,KAAM,SAASunL,EAASq2G,GACpB,GAAIh/B,EAAMG,YAAYx3E,GAClB,KAAM,mBAEV1vL,KAAK0vL,QAAUA,EACf1vL,KAAK60Q,QAAU,IAAInG,EACnB1uQ,KAAK80Q,QAAU,IAAIpG,EACnB1uQ,KAAKshF,QAAQykN,GAA8Br2G,IAW/CpuG,QAAS,SAAS0kN,GACd,IAAI9iQ,EACA6oB,EACAk0F,EACA14I,EACAm7Q,EACAtiD,EACA8uC,EAEJ,GAAI82B,aAAiCt2G,EAAQ+hF,MAAO,CAEhD,IAAKlqQ,EAAI,EAAGA,EAAIy+R,EAAsBj6O,MAAMvkD,OAAQD,IAEhD04I,GADA/8G,EAAO8iQ,EAAsBj6O,MAAMxkD,IACtB+nQ,gBAEbtvQ,KAAK60Q,QAAQrlP,IAAIywH,EAAM/B,OAAOvuH,GAAI,IAAIurG,EAAKh4F,EAAK99B,EAAG89B,EAAK/+B,EAAG++B,EAAKl2B,MAAOk2B,EAAKv2B,SAEhF,IAAKpF,EAAI,EAAGA,EAAIy+R,EAAsB92B,MAAM1nQ,OAAQD,IAEhDm7Q,GADAtiD,EAAO4lE,EAAsB92B,MAAM3nQ,IACvBopQ,qBACZ3wQ,KAAK80Q,QAAQtlP,IAAIkzP,EAAKxkI,OAAOvuH,GAAIywM,EAAK/+F,eAGzC,GAAI2kK,aAAiC9iS,MAEtC,IADA6oD,EAAQi6O,EACHz+R,EAAI,EAAGA,EAAIwkD,EAAMvkD,OAAQD,KAE1B04I,GADA/8G,EAAO6oB,EAAMxkD,IACA+nQ,kBAETtvQ,KAAK60Q,QAAQrlP,IAAIywH,EAAM/B,OAAOvuH,GAAI,IAAIurG,EAAKh4F,EAAK99B,EAAG89B,EAAK/+B,EAAG++B,EAAKl2B,MAAOk2B,EAAKv2B,cAInF,GAAIq5R,EAAsBt3R,eAAe,UAAYs3R,EAAsBt3R,eAAe,SAAU,CAGrG,IAFAq9C,EAAQi6O,EAAsBj6O,MAC9BmjN,EAAQ82B,EAAsB92B,MACzB3nQ,EAAI,EAAGA,EAAIwkD,EAAMvkD,OAAQD,KAE1B04I,GADA/8G,EAAO6oB,EAAMxkD,IACA+nQ,kBAETtvQ,KAAK60Q,QAAQrlP,IAAIywH,EAAM/B,OAAOvuH,GAAI,IAAIurG,EAAKh4F,EAAK99B,EAAG89B,EAAK/+B,EAAG++B,EAAKl2B,MAAOk2B,EAAKv2B,SAGpF,IAAKpF,EAAI,EAAGA,EAAI2nQ,EAAM1nQ,OAAQD,KAE1Bm7Q,GADAtiD,EAAO8uC,EAAM3nQ,IACDopQ,uBAER3wQ,KAAK80Q,QAAQtlP,IAAIkzP,EAAKxkI,OAAOvuH,GAAIywM,EAAK/+F,YAI7C,CACD,IAAI2e,EAAShgJ,KAAK0vL,QAAQ1vC,OACtB+mI,EAAc/mR,KAAK0vL,QAAQq3F,YAC/B,IAAKx/Q,EAAI,EAAGA,EAAIy4I,EAAOx4I,OAAQD,IAC3B04I,EAAQD,EAAOz4I,GACfvH,KAAK60Q,QAAQrlP,IAAIywH,EAAM/B,OAAOvuH,GAAIswH,EAAMylH,UAE5C,IAAKn+P,EAAI,EAAGA,EAAIw/Q,EAAYv/Q,OAAQD,IAChCm7Q,EAAOqE,EAAYx/Q,GACnBvH,KAAK80Q,QAAQtlP,IAAIkzP,EAAKxkI,OAAOvuH,GAAI+yP,EAAKrhJ,cAMtD74H,EAAWknL,EAAS,CAChBvnL,KAAM,SAAS0D,GACXlL,EAAMwH,KAAK0D,EAAS6jL,EAAQ/lK,KAEhCwvP,aAAcA,EACdyhB,WAAYA,EACZqL,aAAcjS,EACdgH,cAAeA,EACfrJ,WAAYA,EACZ6E,YAAaA,IA7oHrB,CA+oHG11R,OAAOH,MAAM+G,SAWhB,SAAU/E,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfu1F,EAAWv1F,EAAMmP,KAAKomF,SAGtBgwM,EAAc,gBAYdC,EAAajwM,EAASnzF,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KACXk2F,EAASnuF,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACrCe,EAAKmE,QAAUnE,EAAK4D,QAAQ0Y,SAjBtB,aAmBDtc,EAAK4D,QAAQiX,KAAK,SAAW7a,EAAKf,QAAQxB,MAC3CuC,EAAK4D,QAAQiX,KAAK,OAAQ7a,EAAKf,QAAQxB,MAG3CuC,EAAKmuF,cACLnuF,EAAKm+R,cACLn+R,EAAKo+R,gBAETn/R,QAAS,CACL9E,KAAM,aACNsD,KAAM,SACN4xF,KAAM,GACNF,UAAW,GACXkvM,eAAgB,GAChBx4C,SAAU,GACVr+O,KAAM,SACNkJ,QAAS,SACTqa,SAAU,QACVY,WAAY,OACZuiE,eAAgB,CAAE,OAAQ,UAAW,WAAY,eAErDiwM,YAAa,WACT,IAOIhnH,EAAM35C,EAAKk7C,EAPX14K,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACfowF,EAAOpwF,EAAQowF,KACfF,EAAYlwF,EAAQkwF,UACpBkvM,EAAiBp/R,EAAQo/R,eACzBx4C,EAAW5mP,EAAQ4mP,UAGnBw4C,GAAkBx4C,GAAYx2J,GAAQF,KACtCupF,GAAU,EAEV90K,EAAQosE,WAAWhiD,QAAO,WACtB,QAAStzB,EAAE3C,MAAMosB,SAAS,aAAgBzpB,EAAE3C,MAAMosB,SAAS,WAAczpB,EAAE3C,MAAMosB,SAAS,eAAkBzpB,EAAE3C,MAAMosB,SAAS,eAC9HppB,MAAK,SAAS4G,EAAKijB,IACC,GAAfA,EAAG6I,UAAgC,GAAf7I,EAAG6I,UAAiB/0B,EAAM6iC,KAAK3W,EAAG8W,WAAWn8B,OAAS,KAC1Em5K,GAAU,OAKlBA,GACA14K,EAAK4D,QAAQ0Y,SAAS,iBAGtBupO,IACAroH,EAAM55H,EAAQspC,SAAS,eAAejrC,SAC7B,KACLu7H,EAAM9iI,EAAE,sCAAsCm0B,UAAUjrB,IAE5D45H,EAAI3iH,KAAK,MAAOgrO,GAChBroH,EAAIlhH,SAAS2hR,IACN5uM,GAAQF,IACfgoF,EAAOvzK,EAAQspC,SAAS,gCAAgCjrC,SAC9C,GAGNvJ,EAAMgpB,GAAG2tE,KAAK8nF,EAAM,CAAE9nF,KAAMA,EAAMF,UAAWA,IAF7CgoF,EAAOz8K,EAAEhC,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAMA,EAAMF,UAAWA,KAActgE,UAAUjrB,GAK5EuzK,EAAK76J,SAAS2hR,IACPI,KACPlnH,EAAOvzK,EAAQspC,SAAS,iBAAiBjrC,SAC/B,KACNk1K,EAAOz8K,EAAE,kCAAkCm0B,UAAUjrB,IAEzDuzK,EAAK76J,SAAS+hR,EAAiB,IAAMJ,KAG7CG,aAAc,WACIrmS,KAAK6L,QAEXosE,WAAWhiD,QAAO,WACtB,QAAStzB,EAAE3C,MAAMosB,SAAS85Q,IAAiBvjS,EAAE3C,MAAMosB,SAAS,aAAgBzpB,EAAE3C,MAAMosB,SAAS,WAAczpB,EAAE3C,MAAMosB,SAAS,eAC7HppB,MAAK,SAAS4G,EAAKijB,GAClB,GAAmB,GAAfA,EAAG6I,UAAgC,GAAf7I,EAAG6I,UAAiB/0B,EAAM6iC,KAAK3W,EAAG8W,WAAWn8B,OAAS,EAAG,CAC7E,GAAoB,IAAhBqlB,EAAG6I,SAAgB,CACnB,IAAI6wQ,EAAUn3R,SAAS0O,cAAc,QAErC+O,EAAGjH,WAAWyrD,aAAak1N,EAAS15Q,GACpC05Q,EAAQroR,YAAY2O,GACpBA,EAAK05Q,EAGT15Q,EAAGkrI,UAAU9qJ,IAvGX,wBA6GlBtK,EAAEI,OAAOpC,EAAMmP,KAAM,CACjB02R,aA5Ge,SAAS36R,EAAS3E,GAMjC,OALIG,UAAU,KAAOzE,GAAeD,EAAEgF,cAAcN,UAAU,OAC1DH,EAAU2E,EACVA,EAAUlJ,EAAE,sBAGT,IAAKwjS,EAAWt6R,EAAS3E,GAAU4I,QAuG1Cq2R,WAAYA,IAGhBxlS,EAAM+xB,cAAcyY,eAAe,aAAc,aAEjDxqC,EAAM+xB,cAAcgY,eAAe,aAAc,CAAC,CAC9Cvb,KAAM,WACNrW,OAAQnY,EAAM+xB,cAAc+X,eAAeptB,OAAO,CAAC,UACpD,CACC8R,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aA/HnE,CAkIGvc,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBmgE,EAAK,mBACLlnE,EAAKhpB,EAAMgpB,GACXO,EAAOvpB,EAAMupB,KACb4jD,EAASntE,EAAMitB,WACf7qB,EAASJ,EAAEI,OAEXk9N,EAAM,IACNvxB,EAAK,KACL+3F,EAAO,OAEPC,EAAgB,aAGhBC,EAAgB,gBAGhBv1Q,EAAW,WAEX0uM,EAAQ,QACR8mE,EAAa,YACbh3M,EAAO,WACPC,EAAQ,YACRmwI,EAAU,UACV6mE,EAAQ,QAERC,EAAa,CACTt5Q,KAAQ,CACJorB,OAAQ,cACR9rC,SAAU,YAEd2gB,GAAM,CACFmrB,OAAQ,WACR9rC,SAAU,gBAIlBi6R,EACO,eADPA,EAEM,+BAFNA,EAGU,qBAHVA,EAIU,cAJVA,EAKU,mBALVA,EAMM,qBANNA,EAOQ,WAPRA,EAQO,UAIPC,EAAW,CACXpmQ,KAAM,KACN02D,KAAM,KACNjpE,IAAK,KACLw7B,WAAY,KACZ3iC,SAAS,EACTw5M,QAAQ,EACR/wM,GAAI,KACJm+N,SAAU,KACVw4C,eAAgB,MAGhBW,EAAiB,SAAUh4Q,GAC3B,IAAI6+N,EAAW7+N,EAAI6+N,SAEnB,OAAcA,EAAY,0BAA+B,EAAqB,UAAehgL,EAAOggL,GAAa,OAAW,IAE5Ho5C,EAAkB,SAAUj4Q,GAC5B,IAAIq3Q,EAAiBr3Q,EAAIq3Q,eAEzB,OAAcA,EAAkB,gBAAmB,EAAsB,IAAOx4N,EAAOw4N,GAAmB,YAAgB,IAE1Ha,EAAgB,SAAUl4Q,GAC1B,IAAIqoE,EAAOroE,EAAIqoE,KAEf,MAAQ,IAAMA,EAAO32F,EAAMgpB,GAAG2tE,KAAKxpB,EAAOwpB,IAAS,KAEnD8vM,EAAgB,SAAUn4Q,GAC1B,IAAI2R,EAAO3R,EAAI2R,KAEf,OAAcA,EAAQ,gBAAmB,EAAwB,KAASktC,EAAOltC,GAAS,UAAa,IAGvGymQ,EAAgB,SAAUp4Q,GAC1B,IAAI6+N,EAAW7+N,EAAI6+N,SACfw4C,EAAiBr3Q,EAAIq3Q,eACrBhvM,EAAOroE,EAAIqoE,KACX12D,EAAO3R,EAAI2R,KAEf,MAAO,gBAAmB,EAAoB,KACQqmQ,EAAe,CAAEn5C,SAAUA,IAC3Bo5C,EAAgB,CAAEZ,eAAgBA,IAClCa,EAAc,CAAE7vM,KAAMA,IACtB8vM,EAAc,CAAExmQ,KAAMA,IAChC,WAG5C0mQ,EAAgB,SAAUr4Q,GAC1B,IAAIZ,EAAMY,EAAIZ,IACVy/N,EAAW7+N,EAAI6+N,SACfw4C,EAAiBr3Q,EAAIq3Q,eACrBhvM,EAAOroE,EAAIqoE,KACX12D,EAAO3R,EAAI2R,KACXipB,EAAa56B,EAAI46B,WAErB,MAAO,YAAgBikB,EAAOz/C,GAAQ,MAASw7B,EAAWviD,OAAU,WAAeuiD,EAAiB,OAAI,IAAQ,IAAM,WAAc,EAAoB,KACtGo9O,EAAe,CAAEn5C,SAAUA,IAC3Bo5C,EAAgB,CAAEZ,eAAgBA,IAClCa,EAAc,CAAE7vM,KAAMA,IACtB8vM,EAAc,CAAExmQ,KAAMA,IAChC,QAG5C,SAAS2mQ,EAAqB17R,EAASwzB,GACnC,IAAImoQ,EAAanoQ,IAAQonQ,EAAO9jS,EAAEoF,GAAGs9D,KAAO1iE,EAAEoF,GAAG43C,KAC7C7wB,EAASuQ,IAAQonQ,EAAO9jS,EAAEoF,GAAGmC,MAAQvH,EAAEoF,GAAGo6B,KAC1CslQ,EAAYD,EAAWj9R,KAAKsB,GAC5BksB,EAAY,kBAMhB,OAJK0vQ,EAAUjgS,SACXigS,EAAY34Q,EAAOvkB,KAAKsB,EAAQM,SAAS4pB,KAAKkqM,EAAM8mE,KAGpDU,EAAUl7R,GAAGwrB,KAAe0vQ,EAAUjgS,OAC/BigS,EAGPA,EAAU1xQ,KAAKgC,GAAWvwB,OACnBsnB,EAAOvkB,KAAKk9R,EAAU1xQ,KAAKgC,IAG/BwvQ,EAAqBE,EAAWpoQ,GAG3C,IAAIqoQ,EAAah3Q,EAAO3tB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAGX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAK0/R,WAAazgS,EAAQygS,WAC1B1/R,EAAK2/R,eAAiB,GAEtB3/R,EAAK4/R,cAEL5/R,EAAKs9G,aAELt9G,EAAKitN,gBAELjtN,EAAKypB,iBAAiBzpB,EAAKsjE,OAG/BrkE,QAAS,CACL9E,KAAM,aACN6xC,UAAW,OACXpoC,QAAS,KACTuoB,MAAO,GACP3kB,KAAM,UAGVpF,OAAQ,CACJu8R,EACAh3M,EACAC,GAGJg4M,YAAa,WACT,IAAI5/R,EAAOjI,KACPo0B,EAAQnsB,EAAKf,QAAQktB,MACrB8+D,EAAQjrF,EAAK4D,QAAQ0Y,SAASwiR,GAC9Bp3Q,EAAK1nB,EAAK0/R,WAAW7kR,KAAK4rL,IAAO/tM,EAAM8uB,OACvC87C,EAAO5oE,EAAE,yBAAwC4hB,SAASwiR,GAE9D9+R,EAAKsjE,KAAOA,EAAKp+B,SAAS+lD,GAE1BjrF,EAAKsjE,KAAKzoD,KAAK4rL,EAAI/+K,EAAK,eAExByE,EAAM9yB,QAAQ2G,EAAK6/R,gBAAgBt+R,KAAKvB,KAG5C6/R,gBAAiB,SAAS94P,GACtB,IAEIrf,EAAIo4Q,EAFJ9/R,EAAOjI,KACPgoS,EAAeh5P,EAAK6a,WAAa7a,EAAK6a,WAAWl6B,GAAK,KAO1DA,GAJAqf,EAAOjsC,EAAO,GAAIikS,EAAUh4P,EAAM,CAC9B9nB,QAAS8nB,EAAKznB,QAAUynB,EAAK9nB,WAGvByI,IAAMq4Q,GAAgBrnS,EAAM8uB,OACtCs4Q,EAAWplS,EAAE,WAAcgtB,EAAd,4BAAmEo3Q,EAAsB,KAAQ9+R,EAAKggS,kBAAkBj5P,GAAQ,SAEzIA,EAAK1lB,QACLrhB,EAAK2/R,eAAej4Q,GAAMqf,EAAK1lB,OAG/B0lB,EAAK6a,oBACE7a,EAAK6a,WAAWviD,OAEnB0nC,EAAK6a,WAAWq+O,QAChBH,EAASxjR,SAASyqB,EAAK6a,WAAWq+O,cAC3Bl5P,EAAK6a,WAAWq+O,OAG3BH,EAASjlR,KAAKksB,EAAK6a,aAGnB7a,EAAKnhC,MAAQlN,EAAMuI,WAAW8lC,EAAKnhC,OACnCk6R,EAASl6R,KAAKmhC,EAAKnhC,KAAKmhC,IAG5B/mC,EAAKsjE,KAAKxxB,OAAOguP,GAEjB9/R,EAAKsf,OAAOynB,EAAK9nB,QAAS6gR,GAC1B9/R,EAAKkgS,MAAMn5P,EAAK0xL,OAAQqnE,IAG5BE,kBAAmB,SAASj5P,GACxB,IACI9nC,EADOlH,KACQkH,QAEnB,OAAIA,EAAQ87N,aACDriO,EAAMkP,SAAS3I,EAAQ87N,aAAvBriO,CAAqCquC,GAG5CA,EAAK3gB,IACE1tB,EAAMkP,SAASy3R,EAAf3mS,CAA8BquC,GAE9BruC,EAAMkP,SAASw3R,EAAf1mS,CAA8BquC,IAI7Cu2E,WAAY,WACR,IAAIt9G,EAAOjI,KACPkH,EAAUe,EAAKf,QACf+sC,EAAY/sC,EAAQ+sC,WAAa,OAErChsC,EAAKmgS,OAAS,IAAIz+Q,EAAGmnE,MAAM7oF,EAAK4D,QAAS9I,EAAO,GAAImE,EAAQgsF,MAAO,CAC/D/B,OAAQlpF,EAAK0/R,WACbrpR,MAAOrW,EAAKs+N,OACZ30I,aAAc1qF,EAAQ0qF,aACtBG,kBAAkB,EAClBT,UAAWpqF,EAAQoqF,UACnBC,KAAMtpF,EAAKogS,kBAAkB7+R,KAAKvB,GAClCq9C,MAAOr9C,EAAKqgS,mBAAmB9+R,KAAKvB,GACpCu9G,SAAUv9G,EAAKsgS,oBAAoB/+R,KAAKvB,IACzC6+R,EAAW7yP,MAGlBo0P,kBAAmB,SAAShnS,GACbrB,KAEmBoK,QAAQwlF,GAGlCvuF,EAAG8H,iBALInJ,KASNurE,KAAKx1C,KAAKkqM,EAAM8mE,GAAqBjkR,KAAKsO,EAAU,IAG7Dk3Q,mBAAoB,SAASjnS,GACdrB,KACmBoK,QAAQylF,IAGlCxuF,EAAG8H,iBAJInJ,KAONurE,KAAKx1C,KAAKkqM,EAAM8mE,GAAqBjkR,KAAKsO,GAAW,IAG9Dm3Q,oBAAqB,WACNvoS,KAENurE,KAAKx1C,KAAK,mBAAmB7rB,QAAQE,QAAQy8R,IAGtD2B,iBAAkB,SAASx7R,GACZhN,KAEN6L,QAAQ0Y,SAAS,mBAFXvkB,KAIN6L,QAAQe,IAAI,CACb,YAAaI,KAIrBkoN,cAAe,WACX,IAAIjtN,EAAOjI,KAEXiI,EAAKsjE,KACAtiD,GAAG62M,EAAQjvI,EAAIovI,EAAM8mE,EAAqB9+R,EAAK85E,OAAOv4E,KAAKvB,IAC3DghB,GAAG+2M,EAAUnvI,EAAIovI,EAAM8mE,EAAqB9+R,EAAKwgS,gBAAgBj/R,KAAKvB,IAE3EA,EAAK0/R,WACA1+Q,GAAG+2M,EAAUnvI,EAAI5oF,EAAKi7G,SAAS15G,KAAKvB,KAG7Ci7G,SAAU,SAAS7hH,GAGf,IAAIsB,EAAEtB,EAAGiG,QAAQiF,GAAG0zN,iBAAwBt9N,EAAEtB,EAAGiG,QAAQ+wB,QAAQ4nM,eAAqBz4N,OAItF,OAAInG,EAAG8/M,QAAU9/M,EAAG8lC,UAAYjd,EAAKU,MAN1B5qB,KAOFooS,OAAO72M,YACZlwF,EAAG8H,uBAFP,GAOJs/R,gBAAiB,SAASpnS,GACtB,IAAI4G,EAAOjI,KACPi5J,EAAKt2J,EAAEtB,EAAGiG,QAEdjG,EAAG8H,iBAEC9H,EAAG8lC,UAAYjd,EAAKM,KAAOnpB,EAAG8lC,UAAYjd,EAAKI,KAAQjpB,EAAG8/M,QAAU9/M,EAAG8lC,UAAYjd,EAAKQ,IACxFziB,EAAKmgS,OAAO9iP,QACZr9C,EAAK0/R,WAAWv9R,QAAQy8R,IACjBxlS,EAAG8lC,UAAYjd,EAAKU,KAC3B28Q,EAAqBtuI,EAAIwtI,GAAMr8R,QAAQy8R,GAChCxlS,EAAG8lC,UAAYjd,EAAKQ,GAC3B68Q,EAAqBtuI,EA5TtB,QA4TgC7uJ,QAAQy8R,GAC/B5tI,EAAG1sJ,GAAG0zN,gBAAyB5+N,EAAG8lC,UAAYjd,EAAKa,UAAY1pB,EAAG8lC,UAAYjd,EAAKK,MAEpFlpB,EAAG8lC,UAAYjd,EAAKY,KAC3B7iB,EAAKsjE,KAAKx1C,KAAK,mBACVE,OAAOgqM,EAAM8mE,GACb78R,QAAQE,QAAQy8R,GACdxlS,EAAG8lC,UAAYjd,EAAKW,KAC3B5iB,EAAKsjE,KAAKx1C,KAAK,mBACVE,OAAOgqM,EAAM8mE,GACb5kQ,OAAO/3B,QAAQy8R,GARpB5tI,EAAG7uJ,QAAQ01N,IAYnB/9I,OAAQ,SAAS1gF,GACb,IAAI4G,EAAOjI,KACPsH,EAAS3E,EAAEtB,EAAGiG,QAAQ+E,QAAQ4zN,EAAM8mE,GACpCp3Q,EAAKroB,EAAOwb,KAAK4rL,GAEjBzmM,EAAK2/R,eAAej4Q,IACpB1nB,EAAK2/R,eAAej4Q,GAAItuB,GAG5B4G,EAAKmC,QAAQw8R,EAAY,CAAEj3Q,GAAIA,EAAIroB,OAAQA,EAAQ5B,KAAM,aAAcijB,cAAetnB,KAG1F8mB,OAAQ,WACJnoB,KAAKooS,OAAOjgR,UAGhBZ,OAAQ,SAASA,EAAQ6M,IAMjBA,EAHCA,GAAUA,EAAM5sB,OAFVxH,KAKMurE,KAAKx1C,KAAK3B,GALhBp0B,KAGMo0B,SAKXpM,YAAY0+Q,GAAgBn/Q,GAE9BA,EACA6M,EAAM9C,WAAWq1Q,GAEjBvyQ,EAAMtR,KAAK6jR,GAAgBp/Q,IAKnC4gR,MAAO,SAASznE,EAAQtsM,IAMhBA,EAHCA,GAAUA,EAAM5sB,OAFVxH,KAKMurE,KAAKx1C,KAAK3B,GALhBp0B,KAGMo0B,SAKXpM,YApXD,WAoXqB04M,IAG9BvzN,KAAM,SAASinB,GACXp0B,KAAKmoS,OAAM,EAAM/zQ,IAGrBlnB,KAAM,SAASknB,GACXp0B,KAAKmoS,OAAM,EAAO/zQ,IAGtBkxB,MAAO,WACHtlD,KAAKooS,OAAO9iP,SAGhBlxB,MAAO,WACH,OAAOp0B,KAAKurE,KAAKp2B,SAAS8qL,EAAM8mE,IAGpC2B,aAAc,WACV,IAAIzgS,EAAOjI,KAEPiI,EAAKmgS,SACLngS,EAAKmgS,OAAOpmS,UACZiG,EAAKmgS,OAAS,KAEdngS,EAAKsjE,KAAKtyC,IAAI43D,GACd5oF,EAAKsjE,KAAKx0C,SACV9uB,EAAKsjE,KAAO,OAIpBvpE,QAAS,WACL,IAAIiG,EAAOjI,YAEJiI,EAAK2/R,eAEZ3/R,EAAKygS,eACLzgS,EAAK0/R,WAAW1uQ,IAAI43D,GACpBngE,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,MAI/BtH,EAAM+xB,cAAcyY,eAAe,aAAc,iBAEjDxhB,EAAGqN,OAAO0wQ,GA/ad,CAibG5mS,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBmgE,EAAK,oBACLlnE,EAAKhpB,EAAMgpB,GACX5mB,EAASJ,EAAEI,OACX+M,EAAOnP,EAAMmP,KACb/D,EAAapL,EAAMqL,YACnBke,EAAOvpB,EAAMupB,KAGbwkL,EAAK,KAGLi4F,EAAgB,gBAEhBlgS,EAAa,aACbkiS,EAAgB,gBAEhBC,EAAW,WACXlC,EAAgB,aAChBmC,EAAa,UAEb/oE,EAAQ,QAERlwI,EAAO,OACPC,EAAQ,QAERg3M,EAAQ,QAGRE,EACQ,gCAGR+B,EAAcp4Q,EAAO3tB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEXkH,EAAQggB,SAA8B,IAApBhgB,EAAQggB,UAAsBvkB,EAAEkJ,GAASsjB,KAAKy5Q,GAChEl4Q,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAKkwE,WACLlwE,EAAK8gS,iBACL9gS,EAAK+gS,cAEL/gS,EAAKghS,QAAQhhS,EAAKf,QAAQggB,SAE1Bjf,EAAKihS,QAELjhS,EAAKitN,gBAELv0N,EAAM6zB,OAAOvsB,GAEbA,EAAKypB,oBAGTxqB,QAAS,CACL9E,KAAM,cACN8kB,SAAS,EACTkN,MAAO,GACPzb,QAAS,SACTlJ,KAAM,SACNujB,SAAU,QACVY,WAAY,OACZ0jE,KAAM,KACNpE,MAAO,KACPi2M,UAAW,iBACXl/Q,SAAU,CACNm/Q,YAAa,gBAIrB/+R,OAAQ,CACJy1N,EACAlwI,EACAC,GAGJ1X,SAAU,WACN,IAAIlwE,EAAOjI,KAEPqpS,GADKphS,EAAK4D,QAAQiX,KAAK4rL,IAAO/tM,EAAM8uB,QACnB,WAErBxnB,EAAKmE,QAAUnE,EAAK4D,QACfmgB,KAAK,YAAeq9Q,EAAY,YAAgBtC,EAAoB,YACpE56R,OAAO,mBAEZlE,EAAKqhS,YAAc3mS,EAAE,0FAAgGwqC,SAASllC,EAAKmE,UAGvIslB,iBAAkB,WACH1xB,KAENoM,QAAQmY,SAFFvkB,KAEgBupS,0BAG/B/3Q,iBAAkB,WACHxxB,KAENoM,QAAQ+f,YAFFnsB,KAEmBupS,0BAGlCA,sBAAuB,WACnB,IACIh3Q,EADOvyB,KACWyyB,UAAUvrB,QAAQ9E,KAOxC,OANmBzB,EAAM+xB,cAAcG,cAAc,CAC7CC,OAAQP,EACRQ,SAAU,UACVrqB,MALG1I,KAKSkH,QAAQyR,WAMhCowR,eAAgB,WACD/oS,KAENwpS,cAFMxpS,KAGNypS,gBAGTD,YAAa,WACT,IAAIvhS,EAAOjI,KACPkH,EAAUnE,EAAO,GAAIkF,EAAKf,QAAS,CAC/BxB,KAAMuC,EAAK4D,QAAQiX,KAAK,SAAW,kBAGpC5b,EAAQoiB,MAEfxZ,EAAK02R,aAAav+R,EAAK4D,QAAS3E,IAGpCuiS,aAAc,WACV,IAAIxhS,EAAOjI,KACPkH,EAAUnE,EAAO,GAAIkF,EAAKf,QAAS,CAC/BxB,KAAM,SACN4xF,KAAMrvF,EAAKf,QAAQiiS,mBAGpBjiS,EAAQ05B,YACR15B,EAAQ4mP,gBACR5mP,EAAQoiB,aACRpiB,EAAQkwF,UAEftnF,EAAK02R,aAAav+R,EAAKqhS,YAAapiS,IAGxCgiS,MAAO,WACH,IAAIjhS,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf69R,EAAOzhS,EAAKyhS,KAEhB79R,EAAQiX,KA5II,gBA4IgB4mR,EAAO,OAAS,MAC5C79R,EAAQiX,KAAK6lR,GAAee,GAAe,MAC3C79R,EAAQiX,KA5II,gBA4IgB4mR,EAAOA,EAAKn+N,KAAKzoD,KAAK4rL,GAAM,MAEnD7iM,EAAQiX,KAAKrc,IACdoF,EAAQiX,KAAKrc,EAAYoF,EAAQ+0B,OAAS,IAAM34B,EAAKf,QAAQ+iB,SAASm/Q,cAI9EJ,YAAa,WACT,IAAI/gS,EAAOjI,KACPkH,EAAUnE,EAAO,GAAIkF,EAAKf,SAC1BwiS,EAAO/mS,EAAE,sBAENuE,EAAQoiB,aACRpiB,EAAQ9E,KAEV8E,EAAQktB,MAAM5sB,SAInBS,EAAKyhS,KAAOA,EAAKv8P,SAASllC,EAAKmE,SAASu9R,gBAAgB5mS,EAAO,CAC3D4kS,WAAY1/R,EAAK4D,QACjB+lF,aAAc3pF,EAAKqhS,YACnBM,SAAU3hS,EAAK4hS,gBAAgBrgS,KAAKvB,GACpC6hS,UAAW7hS,EAAK8hS,iBAAiBvgS,KAAKvB,GACtC+hS,UAAW/hS,EAAK85E,OAAOv4E,KAAKvB,IAC7Bf,IAAU2G,KAAK,qBAGtBg8R,gBAAiB,SAASxoS,GACtB,IAAI4G,EAAOjI,KACPiqS,EAAgBl+R,EAAW9D,EAAKmE,SAEXnE,EAAKmC,QAAQwlF,EAAM,CAAEtoF,OAAQW,EAAK4D,UAEvDxK,EAAG8H,kBAIP9H,EAAGiJ,OAAOk+R,iBAAiByB,GAC3BhiS,EAAK4D,QAAQiX,KAAK6lR,GAAe,KAGrCoB,iBAAkB,SAAS1oS,GACvB,IAAI4G,EAAOjI,KACciI,EAAKmC,QAAQylF,EAAO,CAAEvoF,OAAQW,EAAK4D,UAGxDxK,EAAG8H,kBAIPlB,EAAK4D,QAAQiX,KAAK6lR,GAAe,GACjC1gS,EAAK4D,QAAQzB,QAAQy8R,KAGzB3xE,cAAe,WACX,IAAIjtN,EAAOjI,KAEXiI,EAAK4D,QAAQod,GAAG62M,EAAQjvI,EAAI5oF,EAAK85E,OAAOv4E,KAAKvB,IAC7CA,EAAK4D,QAAQod,GA9LP,UA8LoB4nE,EAAI5oF,EAAKi7G,SAAS15G,KAAKvB,IACjDA,EAAK4D,QAAQod,GAAG49Q,EAAQh2M,EAAI5oF,EAAK2tF,OAAOpsF,KAAKvB,IAC7CA,EAAK4D,QAAQod,GA3LV,OA2LoB4nE,EAAI5oF,EAAKg9G,MAAMz7G,KAAKvB,KAG/C2tF,OAAQ,WACJ51F,KAAKoM,QAAQmY,SAASskR,IAG1B5jL,MAAO,WACHjlH,KAAKoM,QAAQ+f,YAAY08Q,IAG7B9mN,OAAQ,SAAS1gF,GACb,IACIiG,EAAS3E,EAAEtB,EAAGiG,QAAQ+E,QAAQ,aAC9BsjB,EAAKroB,EAAOwb,KAAK4rL,GACjB/lL,EAAgBtnB,EAEJ,eAAZA,EAAGqE,OACHiqB,EAAKtuB,EAAGsuB,GACRroB,EAASjG,EAAGiG,OACZqhB,EAAgBtnB,EAAGsnB,eARZ3oB,KAWN0pS,KAAKpkP,QAXCtlD,KAaNoK,QAAQ01N,EAAO,CAAEnwM,GAAIA,EAAIroB,OAAQA,EAAQqhB,cAAeA,KAGjEu6F,SAAU,SAAS7hH,IACJrB,KAEF6L,QAAQU,GAAG0zN,gBAAyB5+N,EAAG8lC,UAAYjd,EAAKK,OAASlpB,EAAG8lC,UAAYjd,EAAKa,UAC1F1pB,EAAG8H,kBAIXy8B,MAAO,WACQ5lC,KACN6L,QAAQzB,QAAQy8R,IAGzBoC,QAAS,SAAS1hR,EAAQ2iR,GACtBlqS,KAAK6L,QAAQoB,IAAIjN,KAAKspS,aACjBthR,YAAY0+Q,GAAgBn/Q,GAE7BA,EACAvnB,KAAK6L,QAAQylB,WAAWq1Q,GAExB3mS,KAAK6L,QAAQiX,KAAK6jR,GAAgBp/Q,GAGjC2iR,GACDlqS,KAAK6L,QAAQiX,KAAK8lR,GAAWrhR,GAGjCvnB,KAAKspS,YAAYxmR,KAAK8lR,GAAWrhR,IAGrCA,OAAQ,SAASA,EAAQwgR,EAAUmC,GAC/B,IAAIjiS,EAAOjI,KAnRvB,YAqRgBunB,IACAA,GAAS,GAGTwgR,GAAYA,EAASvgS,OACrBS,EAAKyhS,KAAKniR,OAAOA,EAAQwgR,IAI7B9/R,EAAKf,QAAQggB,QAAUK,EAEvBtf,EAAKghS,QAAQ1hR,EAAQ2iR,GACrBjiS,EAAKyhS,KAAKniR,OAAOA,KAGrBpa,KAAM,SAAS46R,GAGPA,GAAYA,EAASvgS,QAFdxH,KAGF0pS,KAAKv8R,KAAK46R,IAIvB76R,KAAM,SAAS66R,GAGPA,GAAYA,EAASvgS,QAFdxH,KAGF0pS,KAAKx8R,KAAK66R,IAIvBx2M,KAAM,WACFvxF,KAAK0pS,KAAKtB,OAAO72M,QAGrBjsC,MAAO,WACHtlD,KAAK0pS,KAAKtB,OAAO9iP,SAGrBlxB,MAAO,WACH,OAAOp0B,KAAK0pS,KAAKt1Q,SAGrB7C,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,IAE5BA,EAAQgsF,OAAShsF,EAAQktB,OAASltB,EAAQuI,QAC1CxH,EAAKyhS,KAAK1nS,UACViG,EAAK+gS,eAGT/gS,EAAK8gS,iBAEL9gS,EAAKihS,SAGTlnS,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAKyhS,KAAK1nS,UAEViG,EAAK4D,QAAQotB,IAAI43D,GAEjBngE,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,MAI/BtH,EAAM+xB,cAAcyY,eAAe,cAAe,kBAElDxqC,EAAM+xB,cAAcgY,eAAe,cAAe,CAAC,CAC/Cvb,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAG/DsM,EAAGqN,OAAO8xQ,GAjWd,CAmWGhoS,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBmgE,EAAK,uBACLlnE,EAAKhpB,EAAMgpB,GACXO,EAAOvpB,EAAMupB,KACbnnB,EAASJ,EAAEI,OACX+M,EAAOnP,EAAMmP,KACb/D,EAAapL,EAAMqL,YAMnB26R,EAAgB,gBAEhBlgS,EAAa,aACbkiS,EAAgB,gBAEhBC,EAAW,WACXlC,EAAgB,aAEhB5mE,EAAQ,QAERlwI,EAAO,OACPC,EAAQ,QAERg3M,EAAQ,QAERE,EACY,gBADZA,EAEgB,oBAGhBoD,EAAiBz5Q,EAAO3tB,OAAO,CAC/BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEXkH,EAAQggB,SAA8B,IAApBhgB,EAAQggB,UAAsBvkB,EAAEkJ,GAASsjB,KAAKy5Q,GAChEl4Q,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAKmE,QAAUnE,EAAK4D,QAEpB5D,EAAKuhS,cACLvhS,EAAK+gS,cAEL/gS,EAAKghS,QAAQhhS,EAAKf,QAAQggB,SAE1Bjf,EAAKihS,QAELjhS,EAAKitN,gBAELv0N,EAAM6zB,OAAOvsB,GAEbA,EAAKypB,oBAGTxqB,QAAS,CACL9E,KAAM,iBACN6xC,UAAW,OACX/sB,SAAS,EACTkN,MAAO,GACPzb,QAAS,SACTlJ,KAAM,SACNujB,SAAU,QACVY,WAAY,OACZ0jE,KAAM,KACNpE,MAAO,KACPjpE,SAAU,CACNm/Q,YAAa,mBAIrB/+R,OAAQ,CACJy1N,EACAlwI,EACAC,GAGJ25M,YAAa,WACT,IAAIvhS,EAAOjI,KACPkH,EAAUnE,EAAO,GAAIkF,EAAKf,QAAS,CAC/BxB,KAAMuC,EAAK4D,QAAQiX,KAAK,SAAW,kBAGpC5b,EAAQoiB,MAEfrhB,EAAK4D,QAAQ0Y,SAASwiR,GAAuBxiR,SAASwiR,GAEtDj3R,EAAK02R,aAAav+R,EAAK4D,QAAS3E,IAGpCgiS,MAAO,WACH,IAAIjhS,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf69R,EAAOzhS,EAAKyhS,KAEhB79R,EAAQiX,KApFI,gBAoFgB4mR,EAAO,OAAS,MAC5C79R,EAAQiX,KAAK6lR,GAAee,GAAe,MAC3C79R,EAAQiX,KApFI,gBAoFgB4mR,EAAOA,EAAKn+N,KAAKzoD,KAxF5C,MAwFuD,MAEnDjX,EAAQiX,KAAKrc,IACdoF,EAAQiX,KAAKrc,EAAYoF,EAAQ+0B,OAAS,IAAM34B,EAAKf,QAAQ+iB,SAASm/Q,cAI9EJ,YAAa,WACT,IAAI/gS,EAAOjI,KACPkH,EAAUnE,EAAO,GAAIkF,EAAKf,SAC1BwiS,EAAO/mS,EAAE,sBAENuE,EAAQoiB,aACRpiB,EAAQ9E,KAEV8E,EAAQktB,MAAM5sB,SAInBS,EAAKyhS,KAAOA,EAAKv8P,SAAS/9B,SAAS6O,MAAM0rR,gBAAgB5mS,EAAO,CAC5D4kS,WAAY1/R,EAAK4D,QACjB+lF,aAAc3pF,EAAK4D,QACnB+9R,SAAU3hS,EAAK4hS,gBAAgBrgS,KAAKvB,GACpC6hS,UAAW7hS,EAAK8hS,iBAAiBvgS,KAAKvB,GACtC+hS,UAAW/hS,EAAK85E,OAAOv4E,KAAKvB,IAC7Bf,IAAU2G,KAAK,qBAGtBg8R,gBAAiB,SAASxoS,GACtB,IAAI4G,EAAOjI,KACPiqS,EAAgBl+R,EAAW9D,EAAK4D,SAEX5D,EAAKmC,QAAQwlF,EAAM,CAAEtoF,OAAQW,EAAK4D,UAEvDxK,EAAG8H,kBAIP9H,EAAGiJ,OAAOk+R,iBAAiByB,GAC3BhiS,EAAK4D,QAAQiX,KAAK6lR,GAAe,KAGrCoB,iBAAkB,SAAS1oS,GACvB,IAAI4G,EAAOjI,KACciI,EAAKmC,QAAQylF,EAAO,CAAEvoF,OAAQW,EAAK4D,UAGxDxK,EAAG8H,kBAIPlB,EAAK4D,QAAQiX,KAAK6lR,GAAe,GACjC1gS,EAAK4D,QAAQzB,QAAQy8R,KAGzB3xE,cAAe,WACX,IAAIjtN,EAAOjI,KAEXiI,EAAK4D,QAAQod,GAtIP,UAsIoB4nE,EAAI5oF,EAAKi7G,SAAS15G,KAAKvB,KAGrD85E,OAAQ,SAAS1gF,GACb,IACIsuB,EAAKtuB,EAAGsuB,GACRroB,EAASjG,EAAGiG,OACZqhB,EAAgBtnB,EAAGsnB,cAHZ3oB,KAKN0pS,KAAKpkP,QALCtlD,KAONoK,QAAQ01N,EAAO,CAAEnwM,GAAIA,EAAIroB,OAAQA,EAAQqhB,cAAeA,KAGjEu6F,SAAU,SAAS7hH,IACJrB,KAEF6L,QAAQU,GAAG0zN,gBAAyB5+N,EAAG8lC,UAAYjd,EAAKK,OAASlpB,EAAG8lC,UAAYjd,EAAKa,UAC1F1pB,EAAG8H,kBAIXy8B,MAAO,WACQ5lC,KACN6L,QAAQzB,QAAQy8R,IAGzBoC,QAAS,SAAS1hR,EAAQ2iR,GACtBlqS,KAAK6L,QACAmc,YAAY0+Q,GAAgBn/Q,GAE7BA,EACAvnB,KAAK6L,QAAQylB,WAAWq1Q,GAExB3mS,KAAK6L,QAAQiX,KAAK6jR,GAAgBp/Q,GAGjC2iR,GACDlqS,KAAK6L,QAAQiX,KAAK8lR,GAAWrhR,IAIrCA,OAAQ,SAASA,EAAQwgR,EAAUmC,GAC/B,IAAIjiS,EAAOjI,KAxMvB,YA0MgBunB,IACAA,GAAS,GAGTwgR,GAAYA,EAASvgS,OACrBS,EAAKyhS,KAAKniR,OAAOA,EAAQwgR,IAI7B9/R,EAAKf,QAAQggB,QAAUK,EAEvBtf,EAAKghS,QAAQ1hR,EAAQ2iR,GACrBjiS,EAAKyhS,KAAKniR,OAAOA,KAGrBpa,KAAM,SAAS46R,GAGPA,GAAYA,EAASvgS,QAFdxH,KAGF0pS,KAAKv8R,KAAK46R,IAIvB76R,KAAM,SAAS66R,GAGPA,GAAYA,EAASvgS,QAFdxH,KAGF0pS,KAAKx8R,KAAK66R,IAIvBx2M,KAAM,WACFvxF,KAAK0pS,KAAKtB,OAAO72M,QAGrBjsC,MAAO,WACHtlD,KAAK0pS,KAAKtB,OAAO9iP,SAGrBlxB,MAAO,WACH,OAAOp0B,KAAK0pS,KAAKt1Q,SAGrB7C,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,IAE5BA,EAAQgsF,OAAShsF,EAAQktB,OAASltB,EAAQuI,QAC1CxH,EAAKyhS,KAAK1nS,UACViG,EAAK+gS,eAGT/gS,EAAKuhS,cAELvhS,EAAKihS,SAGTlnS,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAKyhS,KAAK1nS,UAEViG,EAAK4D,QAAQotB,IAAI43D,GAEjBngE,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,MAI/B0hB,EAAGqN,OAAOmzQ,GA/Qd,CAiRGrpS,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClB/G,EAAKhpB,EAAMgpB,GAGXygR,EAAe,SAAUn7Q,GACzB,IAAIqoE,EAAOroE,EAAIqoE,KAEf,OAAO32F,EAAMgpB,GAAG2tE,KAAK30F,EAAE,sCAAuC,CAAE20F,KAAMA,KAEtE+yM,EAAkB,SAAUp7Q,GAG5B,MAAQ,yCAFGA,EAAIqoE,KAE2C,WAG1DgzM,EAAQ55Q,EAAO3tB,OAAO,CACtBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAKsiS,WAELtiS,EAAKuiS,cAEL7pS,EAAM6zB,OAAOvsB,IAGjBjG,QAAS,WAGL0uB,EAAO3oB,GAAG/F,QAAQuI,KAFPvK,OAKfkH,QAAS,CACL9E,KAAM,QACNqoS,cAAc,EACd58R,KAAM,GACNmlB,SAAU,QACVskE,KAAM,GACN1+E,IAAK+8I,IACL7oJ,SAAU,SACVmiI,MAAO,GACPt2H,QAAS,SACT+xR,UAAW,CACPtqS,MAAS,KACTC,OAAU,KACVC,MAAS,KACTqqS,KAAQ,QAEZC,MAAO,CACHxqS,MAAS,KACTC,OAAU,KACVC,MAAS,MAEbmP,KAAM,SACNI,SAAU,KACV+wB,KAAM,GACNhN,WAAY,YACZtnB,SAAS,EACTu+R,YAAa,IAGjBN,SAAU,WACN,IAAItiS,EAAOjI,KACP4gC,EAAO34B,EAAKf,QAAQ05B,KACpB/wB,EAAW5H,EAAKf,QAAQ2I,SACxBhC,EAAO5F,EAAKf,QAAQ2G,KACpBypF,EAAOrvF,EAAKf,QAAQowF,KAQxB,GAAiB,OAAbznF,EAKA,OAJA5H,EAAK6iS,MAAQlqQ,EACb34B,EAAK01I,UAAYh9I,EAAMkP,SAASA,GAAUrG,KAAKvB,QAC/CA,EAAK4D,QAAQiE,KAAM7H,EAAK01I,UAAU9vI,IAKzB,KAATypF,EAMS,KAAT12D,EAMJ34B,EAAK24B,KAAK34B,EAAK4D,QAAQiE,QALnB7H,EAAK24B,KAAKA,GANV34B,EAAKqvF,KAAKA,IAclBkzM,YAAa,WACT,IAAIviS,EAAOjI,KACXiI,EAAK8iS,YAAc9iS,EAAKf,QAAQ0sB,WAChC3rB,EAAK+iS,OAAS/iS,EAAKf,QAAQ+4I,MAC3Bh4I,EAAKgjS,OAAShjS,EAAKf,QAAQ0jS,MAC3B3iS,EAAK6pB,MAAQ7pB,EAAKf,QAAQuI,KAC1BxH,EAAKijS,UAAYjjS,EAAKf,QAAQ8rB,SAC9B/qB,EAAKkjS,SAAWljS,EAAKf,QAAQyR,QAC7B1Q,EAAKmjS,WAAanjS,EAAKf,QAAQwjS,UAC/BziS,EAAKojS,cAAgBpjS,EAAKf,QAAQujS,aAClCxiS,EAAKmsF,OAASnsF,EAAKf,QAAQ+nI,MAC3BhnI,EAAKyqF,UAAYzqF,EAAKf,QAAQ4F,SAC9B7E,EAAK4mP,SAAW5mP,EAAKf,QAAQoF,QAE7BrE,EAAKqjS,qBAGTA,kBAAmB,WACf,IAAIrjS,EAAOjI,KACPu2E,EAAa,CAAC,WACdg1N,EAAiBtjS,EAAKf,QAAQ2jS,YAC9Bj3Q,EAAa3rB,EAAK8iS,YAClB9qJ,EAAQh4I,EAAK+iS,OACbJ,EAAQ3iS,EAAKgjS,OACbx7R,EAAOxH,EAAK6pB,MACZ05Q,EAAWZ,EAAMn7R,KAAU7M,EAAc6M,EAAOm7R,EAAMn7R,GACtDujB,EAAW/qB,EAAKijS,UAChBvyR,EAAU1Q,EAAKkjS,SACfT,EAAYziS,EAAKmjS,WACjBK,EAAcf,EAAU/xR,KAAa/V,EAAc+V,EAAU+xR,EAAU/xR,GACvE8xR,EAAexiS,EAAKojS,cACpBp8J,EAAQhnI,EAAKmsF,OACbtnF,EAAW7E,EAAKyqF,UAChBpmF,EAAUrE,EAAK4mP,SAGnB5mP,EAAK4D,QAAQsgB,aAAY,SAASpT,EAAO2T,GACL,IAA5BA,EAAU/W,QAAQ,QAAsD,IAAvC41R,EAAe51R,QAAQ+W,IACxDzkB,EAAK4D,QAAQsgB,YAAYO,MAKT,iBAAbsG,GAAsC,KAAbA,GAChCujD,EAAW50E,KAAK,WAAaqxB,GAIP,iBAAfY,GAA0C,KAAfA,GAClC2iD,EAAW50E,KAAK,WAAaqxB,EAAW,IAAMY,GAI9B,iBAATnkB,GAA8B,KAATA,GAC5B8mE,EAAW50E,KAAK,WAAa6pS,GAIV,iBAAZ7yR,GAAoC,KAAZA,GAC/B49D,EAAW50E,KAAK,aAAe8pS,GAId,iBAAVxrJ,GAAgC,KAAVA,GAC7B1pE,EAAW50E,KAAK,WAAas+I,GAIL,kBAAjBwqJ,IAA+C,IAAjBA,GACrCl0N,EAAW50E,KAAK,yBAII,iBAAbmL,GAAsC,KAAbA,GAChCypE,EAAW50E,KAAK,WAAamL,GAIT,iBAAbA,GAAsC,KAAbA,GAAgC,WAAbA,GAA0C,iBAAVmiI,GAAiD,GAA3BA,EAAMrkI,MAAM,KAAKpD,QAC1H+uE,EAAW50E,KAAK,KAAOstI,EAAMxsI,QAAQ,IAAK,OAI9B,IAAZ6J,GACAiqE,EAAW50E,KArLV,YAyLLsG,EAAK4D,QAAQ0Y,SAASgyD,EAAW1rE,KAAK,OAG1C0mB,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KAEXiI,EAAK4D,QAAQsgB,aAAY,SAASpT,EAAO2T,GACjCA,EAAU/W,QAAQ,OAAS,GAC3B1N,EAAK4D,QAAQsgB,YAAYO,MAIjCgE,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAEhCe,EAAKsiS,WAELtiS,EAAKuiS,eAGT5pQ,KAAM,SAASA,GACX,IAAI34B,EAAOjI,KACP4Y,EAAM3Q,EAAKf,QAAQ0R,IAGvB,GAAyB,IAArBvR,UAAUG,QAAgBo5B,IAASh+B,EACnC,OAAOqF,EAAK6iS,MAGhB7iS,EAAK6iS,MAAQlqQ,GAGA,IAATA,IAA0B,IAATA,GAA2B,OAATA,EAOnB,iBAATA,EAOS,iBAATA,EAWS,iBAATA,GAAqB,aAAcA,GAC1C34B,EAAK4D,QAAQiE,KAAK8wB,EAAK1vB,YAXnB0vB,EAAOhoB,EACP3Q,EAAK4D,QAAQiE,KAAK8I,EAAM,KAExB3Q,EAAK4D,QAAQiE,KAAK8wB,GAVtB34B,EAAK4D,QAAQiE,KAAK8wB,GAPlB34B,EAAK4D,QAAQiE,KAAK,KAgC1BwnF,KAAM,SAASA,GACX,IACIo0M,EADAzjS,EAAOjI,KAIX,OAAyB,IAArBqH,UAAUG,QAAgB8vF,IAAS10F,EAC5BqF,EAAK05G,OAGhB15G,EAAK05G,MAAQrqB,EAGgB,IAAzBA,EAAK3hF,QAAQ,SACb+1R,EAAuB/qS,EAAMkP,SAASw6R,QACtCpiS,EAAK4D,QAAQiE,KAAK47R,EAAqB,CAAEp0M,KAAMA,OAMnDo0M,EAAuB/qS,EAAMkP,SAASu6R,QACtCniS,EAAK4D,QAAQiE,KAAK47R,EAAqB,CAAEp0M,KAAMA,QAGnD1jE,WAAY,SAASw7F,GACjB,IAAInnH,EAAOjI,KAGX,GAAyB,IAArBqH,UAAUG,QAAgB4nH,IAAUxsH,EACpC,OAAOqF,EAAK8iS,YAGhB9iS,EAAK8iS,YAAc37K,EACnBnnH,EAAKqjS,qBAGT3yR,QAAS,SAASA,GACd,IAAI1Q,EAAOjI,KAGX,GAAyB,IAArBqH,UAAUG,QAAgBmR,IAAY/V,EACtC,OAAOqF,EAAKkjS,SAGhBljS,EAAKkjS,SAAWxyR,EAChB1Q,EAAKqjS,qBAGTn+R,KAAM,WACSnN,KACN6uP,UAAW,EADL7uP,KAGNsrS,qBAGTp+R,KAAM,WACSlN,KACN6uP,UAAW,EADL7uP,KAGNsrS,uBAIb3hR,EAAGqN,OAAOszQ,GA5Td,CA8TGxpS,OAAOH,MAAM+G,QACF/G,OAUV,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClB5gB,EAAOnP,EAAMmP,KACb6Z,EAAKhpB,EAAMgpB,GACXO,EAAOvpB,EAAMupB,KACb41M,EAAQ,QACR6rE,EAAYhrS,EAAM4C,QAAQ2lB,UAC1B0iR,EAAUjrS,EAAM4C,QAAQ4lB,QAExB0nE,EAAK,eACL+3M,EAAW,WAEXiD,EAAe,UACfC,EAAc,WASlBnrS,EAAMwuC,YAAY,SAPI,CAClBmoD,KAAM,GACNF,UAAW,GACXkvM,eAAgB,GAChBx4C,SAAU,GACVl6K,MAAO,OAIX,IAAIm4N,EAASr7Q,EAAO3tB,OAAO,CACvBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC2E,EAAU5D,EAAKmE,QAAUnE,EAAK4D,QAC9B3E,EAAUe,EAAKf,QAEf4I,EAAK02R,aAAa36R,EAASlJ,EAAEI,OAAO,GAAImE,IAExC2E,EAAQiX,KAAK,OAAQ,UAErB5b,EAAQqgB,OAASrgB,EAAQqgB,QAAUrgB,EAAQggB,UAAYrb,EAAQiX,KAAK8lR,GACpE3gS,EAAKsf,OAAOrgB,EAAQqgB,QAEhBrgB,EAAQqgB,QACRtf,EAAKkpB,YAGTlpB,EAAK+jS,SAELngS,EACKod,GAAG62M,EAAQjvI,EAAI5oF,EAAK85E,OAAOv4E,KAAKvB,IAChCghB,GAAG,QAAU4nE,EAAI5oF,EAAK2tF,OAAOpsF,KAAKvB,IAClCghB,GAAG,OAAS4nE,EAAI5oF,EAAKg9G,MAAMz7G,KAAKvB,IAChCghB,GAAG,UAAY4nE,EAAI5oF,EAAKi7G,SAAS15G,KAAKvB,IACtCghB,GAAG,QAAU4nE,EAAI5oF,EAAKgkS,cAAcziS,KAAKvB,IACzCghB,GAAG0iR,EAAY96M,EAAI5oF,EAAKikS,WAAW1iS,KAAKvB,IACxCghB,GAAG2iR,EAAU/6M,EAAV+6M,YAAgC/6M,EAAI5oF,EAAKgkS,cAAcziS,KAAKvB,IAEpEtH,EAAM6zB,OAAOvsB,IAGjBjG,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAKmE,QAAQ6sB,IAAI43D,GAEb5oF,EAAK2rE,OACL3rE,EAAK2rE,MAAM5xE,UAGf0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,IAG3BoC,OAAQ,CACJy1N,GAGJ54N,QAAS,CACL9E,KAAM,SACNmlB,QAAQ,EACRL,SAAS,EACTowE,KAAM,GACNF,UAAW,GACXkvM,eAAgB,GAChBx4C,SAAU,GACVl6K,MAAO,KACPnkE,KAAM,SACNwwI,MAAO,YACPtnI,QAAS,SACTqa,SAAU,QACVY,WAAY,QAGhBu4Q,gBAAiB,WACb,MAAqD,UAA9CnsS,KAAK6L,QAAQsjB,KAAK,WAAW7W,eAGxCypE,OAAQ,SAASp9E,GACT3E,KAAKkH,QAAQqgB,QACTvnB,KAAKoK,QAAQ01N,EAAO,CACpB1gN,MAAOza,EACPgrB,GAAI3vB,KAAK6L,QAAQiX,KAAK,MACtBxb,OAAQtH,KAAK6L,WAEblH,EAAEwE,kBAKdysF,OAAQ,WACA51F,KAAKkH,QAAQqgB,QACbvnB,KAAK6L,QAAQ0Y,SAASsnR,IAI9B5mL,MAAO,WACH,IAAIh9G,EAAOjI,KACXiI,EAAK4D,QAAQsgB,YAAY0/Q,GACzB9yQ,YAAW,WACP9wB,EAAK4D,QAAQsgB,YAAY2/Q,OAIjC5oL,SAAU,SAASv+G,GACf,IAAIsD,EAAOjI,KACP2E,EAAEwiC,SAAWjd,EAAKK,OAAS5lB,EAAEwiC,SAAWjd,EAAKa,WAC7C9iB,EAAKikS,aAEAjkS,EAAKkkS,oBACFxnS,EAAEwiC,SAAWjd,EAAKa,UAClBpmB,EAAEwE,iBAENlB,EAAK85E,OAAOp9E,MAKxBsnS,cAAe,WACXjsS,KAAK6L,QAAQsgB,YAAY2/Q,IAG7BI,WAAY,WACJlsS,KAAKkH,QAAQqgB,QACbvnB,KAAK6L,QAAQ0Y,SAASunR,IAI9BvkR,OAAQ,SAASA,GACb,IAAItf,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEf0b,IAAW3kB,IACX2kB,GAAS,GAGbA,IAAWA,EACXtf,EAAKf,QAAQqgB,OAASA,EACtB1b,EAAQmc,YA/II,cA+IwBT,GAC/BzE,KAAK,iBAAkByE,GACvBzE,KAAK8lR,GAAWrhR,GAEjBA,GACAtf,EAAKkpB,YAIT,IACItlB,EAAQzB,QAAQ,QAClB,MAAOgiS,MAGbJ,OAAQ,SAAS9kS,GACb,IAEImlS,EAFApkS,EAAOjI,KACPssS,EAAeplS,GAAWe,EAAKf,QAAQ0sE,MAGtB,OAAjB04N,GAAyBA,IAAiB1pS,IAI1C0pS,EAAahkS,cAAgB7H,SAC7B6rS,EAAe,CAAE1rQ,KAAM0rQ,IAGvBA,EAAax/R,WAAalK,GAAyC,KAA1B0pS,EAAax/R,WACtDw/R,EAAax/R,SAAW,OAEpBw/R,EAAar9J,QAAUrsI,GAAsC,KAAvB0pS,EAAar9J,QACnDq9J,EAAar9J,MAAQ,YAI7Bq9J,EAAazB,YAAc,CAAC,kBAE5B5iS,EAAK4D,QAAQ0Y,SAAS,qBAEtB8nR,EAAgB1pS,EAAE,YAAYwqC,SAASllC,EAAK4D,SAC5C5D,EAAK2rE,MAAQ,IAAIjqD,EAAG2gR,MAAM+B,EAAeC,QAIJ,IAAzCP,EAAOhkS,GAAG2G,eAAe,aACzBjO,OAAOkuC,eAAeo9P,EAAOhkS,GAAI,WAAY,CACzCwnB,IAAK,WACD,OAAO5uB,EAAMC,SAASi4P,UAKlCl4P,EAAM+xB,cAAcyY,eAAe,SAAU,aAE7CxqC,EAAM+xB,cAAcgY,eAAe,SAAU,CAAC,CAC1Cvb,KAAM,WACNrW,OAAQnY,EAAM+xB,cAAc+X,eAAeptB,OAAO,CAAC,UACpD,CACC8R,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAG/D1c,EAAMgpB,GAAGqN,OAAO+0Q,GAzNpB,CA2NGjrS,OAAOH,MAAM+G,QACN/G,OAUV,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACforS,EAASprS,EAAMgpB,GAAGoiR,OAClBjsE,EAAQ,QACRysE,EAAS,SAETC,EAAe,eACfC,EAAW,aAKXC,EAAeX,EAAOhpS,OAAO,CAC7BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX+rS,EAAOhkS,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC2E,EAAU5D,EAAKmE,QAAUnE,EAAK4D,QAC9B3E,EAAUe,EAAKf,QAEf2E,EAAQ0Y,SAbI,mBAeZtc,EAAK0kS,WAAiC,IAArBzlS,EAAQuqE,SACzBxpE,EAAKkgB,OAAOlgB,EAAK0kS,WAEbzlS,EAAQgtD,OACRroD,EAAQiX,KAlBH,aAkBoB5b,EAAQgtD,OAGrCvzD,EAAM6zB,OAAOvsB,IAGjBjG,QAAS,WACMhC,KAENoM,QAAQ6sB,IA/BZ,sBAgCD8yQ,EAAOhkS,GAAG/F,QAAQuI,KAHPvK,OAMfqK,OAAQ,CACJy1N,EACAysE,GAGJrlS,QAAS,CACL9E,KAAM,eACN8xD,MAAOtxD,EACP6uE,UAAU,GAGdtpD,OAAQ,SAASA,GACTA,IAAWvlB,IACXulB,GAAUnoB,KAAK2sS,WAGnB3sS,KAAK2sS,UAAYxkR,GAEF,IAAXA,GACAnoB,KAAK6L,QAAQiX,KAAK0pR,GAAc,GAChCxsS,KAAK6L,QAAQ0Y,SAASkoR,KACJ,IAAXtkR,IACPnoB,KAAK6L,QAAQiX,KAAK0pR,GAAc,GAChCxsS,KAAK6L,QAAQsgB,YAAYsgR,KAIjC1qN,OAAQ,SAASp9E,GACT3E,KAAKkH,QAAQqgB,SACTvnB,KAAKoK,QAAQ01N,EAAO,CACpB1gN,MAAOza,EACPgrB,GAAI3vB,KAAK6L,QAAQiX,KA7DxB,MA8DOxb,OAAQtH,KAAK6L,UAEblH,EAAEwE,kBAEFnJ,KAAKmoB,SAELnoB,KAAKoK,QAAQmiS,EAAQ,CACjBntR,MAAOza,EACP4sE,QAASvxE,KAAK2sS,UACdz4O,MAAOl0D,KAAKkH,QAAQgtD,MACpBvkC,GAAI3vB,KAAK6L,QAAQiX,KAxE5B,MAyEWxb,OAAQtH,KAAK6L,eAOjClL,EAAM+xB,cAAcyY,eAAe,eAAgB,aAEnDxqC,EAAM+xB,cAAcgY,eAAe,eAAgB,CAAC,CAChDvb,KAAM,WACNrW,OAAQnY,EAAM+xB,cAAc+X,eAAeptB,OAAO,CAAC,UACpD,CACC8R,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAG/D1c,EAAMgpB,GAAGqN,OAAO01Q,GApGpB,CAsGG5rS,OAAOH,MAAM+G,QACN/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GACX+G,EAAS/G,EAAG+G,OACZg8Q,EAAe/iR,EAAG+iR,aAClBX,EAASpiR,EAAGoiR,OACZ7hR,EAAOvpB,EAAMupB,KACb2mE,EAAK,oBAIL47M,EAAW,aACX7D,EAAW,aAEX7sN,EAAS,SAET4qN,EAAgB,gBAEhB1mE,EAAM,IACNxpF,EAAO,OACPm2J,EAAS,SACTC,EAAW,WAEXhG,EAAQ,QAERiG,EAAcp8Q,EAAO3tB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAKmE,QAAUnE,EAAK4D,QAEpB5D,EAAK8kS,gBAAkB,GAEvB9kS,EAAK+kS,SAAW/kS,EAAKglS,aAAahlS,EAAKf,QAAQktB,OAE/CnsB,EAAK4D,QACA0Y,SAAS2oR,2BACTpqR,KAAK,OAAQ,SAElB7a,EAAKghS,SAAU,EAEVhhS,EAAKf,QAAQqgB,QAAWtf,EAAKf,QAAQggB,UACtCjf,EAAKghS,SAAU,EACfhhS,EAAK4D,QACIiX,KAAK6jR,GAAe,GACpBpiR,SAASqkR,GAElB3gS,EAAK+kS,SAAS1rS,SAAQ,SAAU6jB,GAC5BA,EAAEoC,QAAO,OAIbtf,EAAKf,QAAQ6+B,YAAc0wG,GAC3BxuI,EAAKm+B,OAAOn+B,EAAKf,QAAQ6R,OAG7B9Q,EAAKitN,iBAGT7qN,OAAQ,CACJ0xE,GAGJ70E,QAAS,CACL9E,KAAM,cACN2jC,UAAW6mQ,EACX7zR,OAAQ,EACRwO,QAAQ,EACRL,SAAS,EACTimR,eAAe,EACf19R,KAAM,SACNkJ,QAAS,SACTqa,SAAU,QACVY,WAAY,QAGhBggD,MAAO,SAAS5kC,EAAMtmC,GAClB,IAIIkrE,EAAOw5N,EAHPvhS,EADO7L,KACQ6L,QACfgtP,EAAU/vP,MAAMkmC,GAA8BnjC,EAAQkqB,KAAKiZ,GAAMq+P,wBAA0BxhS,EAAQkqB,KAAKiZ,GAAMs+P,iBAFvGttS,KAEsBgtS,SAASh+P,GACtChE,EAAatiC,GAAmB,IAAVA,EAG1B,GAAKmwP,EAAL,CAMA,KAFAjlL,EAAQilL,EAAOjlL,QAED5oC,EAEV,OADA6tN,EAAOmzC,OAAO,CAAEprQ,KAAMjgC,EAAMitB,WAAWllB,KAChC/H,EAAMitB,WAAWllB,GAG5B,GAAIsiC,EACA4oC,EAAMhzC,KAAKjgC,EAAMitB,WAAWllB,SACzB,IAAc,IAAVA,EAKP,OAJAmwP,EAAOjlL,MAAQ,KACfw5N,EAAUx5N,EAAM/nE,QAChB+nE,EAAM5xE,eACNorS,EAAQ7gP,QAAQx1B,SAIpB,OAAO68C,EAAQA,EAAMhzC,OAAS,OAGlCntB,QAAS,WACL,OAAOzT,KAAK6L,QAAQkqB,KAAKkqM,EAAMwsE,IAGnCzqS,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAK4D,QAAQotB,IAAI43D,GAEjB5oF,EAAK4D,QAAQkqB,KAAKkqM,aAAej9N,MAAK,SAASuE,EAAGslB,GAC9C,IAAIgpP,EAAYlzQ,EAAEkqB,GAAIwgR,wBAA0B1qS,EAAEkqB,GAAIygR,iBAElDz3B,GACAA,EAAU7zQ,aAIlB0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,IAG3Bsf,OAAQ,SAASA,QACQ,IAAVA,IACPA,GAAS,GAGbvnB,KAAK6L,QACIiX,KAAK6jR,GAAgBp/Q,GACrBS,YAAY4gR,GAAWrhR,GAEhCvnB,KAAKgtS,SAAS1rS,SAAQ,SAAU6jB,GAC5B,IAAIs7M,EAAUt7M,EAAEtZ,QAAQugB,SA9HvB,YA8H2CjH,EAAEtZ,QAAQU,GAAG,UAEzD4Y,EAAEoC,OAAOA,GAELk5M,GACAt7M,EAAEtZ,QAAQylB,WAAW,YAAY/M,SAAS,WAAWna,QAAQ,YAIrEpK,KAAKipS,QAAUjpS,KAAKkH,QAAQqgB,OAASA,GAGzC6e,OAAQ,SAASvZ,GACb,IAAI5kB,EAAOjI,KAEP+Y,GAAS,EAET/Y,KAAKkH,QAAQ6+B,YAAc0wG,GA5J3C,YA4JmD5pH,IAA8B,IAARA,IAKzD9T,EADc,iBAAP8T,EACCA,EACDA,EAAG6I,UACV7I,EAAKlqB,EAAEkqB,IACI9T,QAEH8T,EAAG9T,QAGN9Q,EAAK+kS,SAASj0R,KAMnB9Q,EAAKf,QAAQ6+B,YAAc8mQ,EACvBhgR,EAAGrlB,OAAS,EACZqlB,EAAG7pB,MAAK,SAAUuE,EAAGsE,GACjB,IAAIjC,EAAMjH,EAAEkJ,GAASkN,QAErB9Q,EAAK+kS,SAASpjS,GAAKue,SACnBlgB,EAAKslS,aAAa3jS,OAGtB3B,EAAK+kS,SAASj0R,GAAOoP,SACrBlgB,EAAKslS,aAAax0R,IAGtB9Q,EAAKulS,cAAcz0R,MAI3B00R,WAAY,SAAS5gR,EAAI3lB,GACrB,GAAIlH,KAAKkH,QAAQ6+B,YAAc0wG,EAG3B,cAFOvvI,EAAQuqE,SAER,IAAIs6N,EAAOl/Q,EAAI3lB,GAEtB,IAAIwmS,EAAM,IAAIhB,EAAa7/Q,EAAI3lB,GAI/B,OAFAwmS,EAAIlkS,KAlLH,SAkLgBxJ,KAAK0hF,QAAQl4E,KAAKxJ,KAAM6sB,IAElC6gR,GAIfx4E,cAAe,WACNl1N,KAAKkH,QAAQimS,eACdntS,KAAK6L,QAAQod,GAjMX,UAiMwB4nE,EAAI7wF,KAAK2tS,SAASnkS,KAAKxJ,QAIzD2tS,SAAU,SAAShpS,GACf,IACIipS,EAAcjrS,EADP3C,KACc6L,SACrBgiS,EAAiBD,EAAY73Q,KAAKkqM,aAClC6tE,EAAiBF,EAAY73Q,KAAK,UAClC2qO,EAAemtC,EAAe90R,MAAM+0R,GACpCxvR,EAAQ3d,EAAM4C,QAAQ+a,MALfte,KAK0B6L,SAGhClH,EAAEwiC,UAAYjd,EAAKO,OAASnM,GAAW3Z,EAAEwiC,UAAYjd,EAAKS,OAASrM,IACrC,IAAjBoiP,EAAqBmtC,EAAe/1Q,GAAG+1Q,EAAermS,OAAS,GAAK7E,EAAEkrS,EAAentC,EAAe,KACtGt2P,QAAQy8R,GACpBliS,EAAEwE,mBACMxE,EAAEwiC,UAAYjd,EAAKO,MAAQnM,GAAW3Z,EAAEwiC,UAAYjd,EAAKS,QAAUrM,MAC7DoiP,EAAe,IAAMmtC,EAAermS,OAASqmS,EAAe/1Q,GAAG,GAAKn1B,EAAEkrS,EAAentC,EAAe,KACtGt2P,QAAQy8R,GACpBliS,EAAEwE,mBAIV8jS,aAAc,SAAS74Q,GACnB,IAAInsB,EAAOjI,KACPmqK,EAAeliK,EAAKf,QACpBiuC,EAAWltC,EAAK4D,QAAQspC,WACxB44P,EAAU,GA0Bd,OAxBI54P,EAAS3tC,OAAS,GAClB2tC,EAASnyC,MAAK,SAAS+V,GACnB,IAAI8T,EAAKlqB,EAAE3C,MACP6oC,EAAQhc,EAAGkJ,KAAK,OAAOxR,SAAS,WAChC2T,EAAWrL,EAAGtgB,GAAG,eAAiBsgB,EAAGT,SAASw8Q,GAC9C1hS,EAAU,CACN0sE,MAAOjzE,EAAMu4B,UAAUrM,EAAI,SAC3ByqE,KAAOzuD,EAAM,GAAmC,KAA9BloC,EAAMu4B,UAAUrM,EAAI,QACtCqL,SAAUA,EACVu5C,UAAWv5C,GAAWrL,EAAGtgB,GAAG0zN,EAAMwsE,GAClCh9R,KAAM06J,EAAa16J,KACnBkJ,QAASwxJ,EAAaxxJ,QACtBqa,SAAUm3I,EAAan3I,SACvBY,WAAYu2I,EAAav2I,YAGjCm6Q,EAAQpsS,KAAKsG,EAAKwlS,WAAW5gR,EAAI3lB,IAE7BA,EAAQuqE,UACRxpE,EAAK8kS,gBAAgBprS,KAAKoX,MAKjCqb,GAILA,EAAM9yB,SAAQ,SAAS0tC,EAAMj2B,GACzB,IAAI6nB,EAAOoO,EAAKpO,MAAwB,IAAjBoO,EAAKo0L,QAAoBp0L,EAAKpO,KAAOjgC,EAAMitB,WAAWohB,EAAKpO,MAAQ,GACtF/T,EAAKmiB,EAAK3gB,IAAM1rB,EAAE,WAAaqsC,EAAK3gB,IAAM,KAAO1rB,EAAE,YAEvDkqB,EAAG/c,KAAK8wB,GAEJoO,EAAK6a,YACLh9B,EAAG/J,KAAKksB,EAAK6a,YAGjB7a,EAAOrsC,EAAEI,OAAO,GAAIisC,EAAM,CACtBv/B,KAAM06J,EAAa16J,KACnBkJ,QAASwxJ,EAAaxxJ,QACtBqa,SAAUm3I,EAAan3I,SACvBY,WAAYu2I,EAAav2I,aAG7B/G,EAAGsgB,SAASllC,EAAK4D,SACjBkiS,EAAQpsS,KAAKsG,EAAKwlS,WAAW5gR,EAAImiB,IAE7BA,EAAKyiC,UACLxpE,EAAK8kS,gBAAgBprS,KAAKoX,MAI3Bg1R,GA5BIA,GA+BfP,cAAe,SAASz0R,GACpB/Y,KAAK+sS,gBAAkB,GACvB/sS,KAAKgtS,SAAS1rS,SAAQ,SAAU6jB,GAC5BA,EAAEgD,QAAO,MAGbnoB,KAAKgtS,SAASj0R,GAAOoP,QAAO,GAC5BnoB,KAAK+sS,gBAAgBprS,KAAKoX,IAG9B2oE,QAAS,SAASm3K,GACd,IAAI9yN,EAAY/lC,KAAKkH,QAAQ6+B,UACzBhtB,EAAQ8/O,EAAO9/O,QAEd/Y,KAAKipS,UAAWpwC,EAAOtsP,GAAG0zN,EAAM2oE,KAIjC7iQ,IAAc8mQ,EACd7sS,KAAKutS,aAAax0R,GACXgtB,IAAc6mQ,GACrB5sS,KAAKwtS,cAAcz0R,GAGvB/Y,KAAKoK,QAAQ2xE,EAAQ,CAAEq/F,QAASp7K,KAAK+sS,gBAAiBzlS,OAAQuxP,MAGlE00C,aAAc,SAASx0R,IAC0B,IAAzC/Y,KAAK+sS,gBAAgBp3R,QAAQoD,GAC7B/Y,KAAK+sS,gBAAgBprS,KAAKoX,GAE1B/Y,KAAK+sS,gBAAgBviS,OAAOxK,KAAK+sS,gBAAgBp3R,QAAQoD,GAAQ,MAK7E4Q,EAAGqN,OAAO81Q,GA1Ud,CA2UGhsS,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GACXvQ,EAAgBzY,EAAMwY,eACtBsF,EAAS9d,EAAM4C,QAAQkb,OAAS9d,EAAM4C,QAAQkf,SAC9Cxf,EAAUC,MAAMD,QAChB+K,EAAyBrN,EAAMkN,KAAKG,uBACpC29R,EAAY,YACZ7rE,EAAQ,QAGR/8N,EAASJ,EAAEI,OACXC,EAAOL,EAAEK,KACT8qE,EAASntE,EAAMitB,WACf/d,EAAWlP,EAAMkP,SACjBqa,EAAOvpB,EAAMupB,KACbwG,EAAS/G,EAAG+G,OACZs9Q,EAAsB,gBACtBn9M,EAAK,aAELjB,EAAO,OACPq+M,EAAO,SACPC,EAAO,qBACPC,EAAgB,UAChBC,EAAgB,4BAChBC,EAAO,SACPx+M,EAAQ,QACRy+M,EAAQ,QACRr6E,EAAQ,UACRs6E,EAAQ,UACRxyN,EAAS,SACTyyN,EAAS,SACTz+M,EAAW,WACXD,EAAa,aACb2+M,EAAc,aAAe59M,EAAK,iBAAmBA,EAAK,eAAiBA,EAC3ExqE,EAAW1lB,EAAM4C,QAAQ8iB,SACzBF,EAAaxlB,EAAM4C,QAAQ4iB,WAC3BuoR,EAAcvoR,GAAcE,EAC5By2B,EAAS,SACT8N,EAAQ,QACR+jP,EAAahuS,EAAM4C,QAAQkb,MAAQ,aAAe,GAClDmwR,EAAavoR,EAAW,cAAiBF,EAAa,gBAAkB,aACxE0oR,EAAaxoR,EAAW,aAAgBF,EAAa,eAAiB,aACtEozK,EAAa,iBAAmB1oG,EAAK,cAAgBA,EACrDi+M,EAASnuS,EAAM4C,QAAQgmB,OAASsnE,EAKhCk+M,EAAgB,QAChBC,EAAoB,cACpBr+M,EAAmBhuF,EAAEyM,SAASiK,iBAC9B41R,EAAa,aACbC,EAAa,UACbrD,EAAe,UACfnF,EAAgB,aAEhByI,EAAe,UAEfC,EAA6B,yBAC7BC,EAAkC,+BAClCC,EAAgB,wCAChBC,GAAmB,iDAEnBC,GAAe,UACfC,GAAyB,2BAEzBC,GAAoB,oCAEpBC,GAAuB,wBACvBC,GAAoB,CAAE,EAAK,EAAGnxR,MAAS,GAEvComN,GAAY,YACZ8jE,GAAgB,gBAChBkH,GAAO,OAEP/gO,GAAW,CACPluC,KAAM,gBACNvS,IAAK,eACLi4Q,eAAgB,0BAChBx4C,SAAU,oBACVgiD,UAAW,qBACXvpP,QAAS,oBAGbwpP,GAAY,CACRC,gBAAiB,SAAS97O,EAAOllB,GAC7B,IAAIz4B,EAAS,qBACTwC,EAAQi2B,EAAKj2B,MA8BjB,OA5BIi2B,EAAKopF,YACL7hH,GAAU,iBAGO,IAAjBy4B,EAAK9nB,UACL3Q,GAAU,eAGV29C,EAAM+7O,YAAwB,IAAVl3R,IACpBxC,GAAU,YAGVwC,GAASm7C,EAAM1sD,OAAS,IACxB+O,GAAU,WAGVy4B,EAAK3qB,WACL9N,GAAU,IAAMy4B,EAAK3qB,UAGrB2qB,EAAKlsB,MAAQksB,EAAKlsB,KAAKpU,eAAe,WACtC6H,GAAU,IAAMy4B,EAAKlsB,KAAY,OAGjCksB,EAAKyiC,WACLl7D,GAAU,eAGPA,GAGX25R,kBAAmB,SAASlhQ,GACxB,IAAIz4B,EAAS,GACTszC,EAAa7a,EAAKlsB,MAAQ,GAE9B,IAAK,IAAIA,KAAQ+mC,EACTA,EAAWn7C,eAAeoU,IAAkB,UAATA,IACnCvM,GAAUuM,EAAO,KAAQ+mC,EAAW/mC,GAAQ,MAIpD,OAAOvM,GAGX45R,mBAAoB,SAASC,GACzB,IAAI75R,EAAS,GACTszC,EAAaumP,GAAiBA,EAAcx+R,OAASw+R,EAAcx+R,SAAW,GAQlF,IAAK,IAAIkR,KANJ+mC,EAAkB,MAGnBA,EAAkB,OAAK,IAAM0kP,EAF7B1kP,EAAkB,MAAI0kP,EAKT1kP,EACTA,EAAWn7C,eAAeoU,KAC1BvM,GAAUuM,EAAO,KAAQ+mC,EAAW/mC,GAAQ,MAIpD,OAAOvM,GAGX85R,qBAAsB,SAASrhQ,GAC3B,IAAIz4B,EAAS,GACTszC,EAAa7a,EAAKshQ,aAAe,GACjCC,EAAiB,iDAQrB,IAAK,IAAIztR,KANJ+mC,EAAkB,MAGnBA,EAAkB,OAAK,IAAM0mP,EAF7B1mP,EAAkB,MAAI0mP,EAKT1mP,EACTA,EAAWn7C,eAAeoU,KAC1BvM,GAAUuM,EAAO,KAAQ+mC,EAAW/mC,GAAQ,MAIpD,OAAOvM,GAGXi6R,UAAW,WACP,OAAOtC,GAGXuC,gBAAiB,SAASv8O,GACtB,OAA0B,IAAnBA,EAAMw8O,SAAsB/vS,EAAMmiB,KAAK,iBAAoB,UAAe,IAGrF6tR,cAAe,WACX,MAAO,wCAGXC,qBAAsB,WAClB,MAAO,gBAGXrqP,QAAS,SAASvX,GACd,OAAOA,EAAKuX,QAAUvX,EAAKuX,QAAU,WA4BjD,SAASpxB,GAAShpB,EAAQu3B,GACtB,IACI,OAAO/gC,EAAEwyB,SAAShpB,EAAQu3B,GAC5B,MAAO/+B,GACL,OAAO,GAIf,SAASksS,GAAkB7hQ,IACvBA,EAAOrsC,EAAEqsC,IACWlsB,KAAKniB,EAAMmiB,KAAK,gBAMpCksB,EAAKzqB,SAAS,sBACT4wB,SAxNC,OAyND5wB,SAASgqR,GAEdv/P,EACKmG,SAAS,KACT5wB,SAAS2pR,GACT/4P,SA9NC,OA+ND5wB,SAASgqR,GAEdv/P,EACK/Y,OAAO,oBAEZ+Y,EACK/Y,OAAO,gBACP9J,YAAY,eACZ5H,SAAS,oBACTgoC,QACAxS,OAAO,UAEZ/K,EACK/Y,OAAO,gBACP1R,SAASmiR,GACTv3Q,KAAK,YAAY,GACjBrM,KAAK,iBAAiB,GAEtBksB,EAAK/Y,OAAO,UAAUzuB,QACvBwnC,EAAKlsB,KAAK+sR,GAAM,YAGf7gQ,EAAKmG,SAASg5P,GAAe3mS,QAC9BwnC,EAAKipC,WACAhiD,QAAO,WAAa,QAASj2B,KAAKi4B,SAAS9nB,MAAM69R,IAA4C,IAAlBhuS,KAAK01B,WAAmB/0B,EAAM6iC,KAAKxjC,KAAK2jC,eACnH2nB,QAAQ,gBAAkB4iP,EAAO,aACjCj4Q,QAAO,SAASrsB,EAAKknS,GAAO,OAAwB,IAAjBA,EAAIp7Q,YACvC1J,KAAK,0CAGd+kR,GAAY/hQ,GACZgiQ,GAAgBhiQ,IAGpB,SAAS+hQ,GAAY/hQ,IACjBA,EAAOrsC,EAAEqsC,IACJjZ,KAAK,iJAAiJ5pB,SAAS4qB,SAEpKiY,EAAK/Y,OAAO,uBACPkf,SAAS,iHACTnyC,MAAK,WACF,IAAIgsC,EAAOrsC,EAAE3C,MAEbgvC,EAAK+K,OAAQ,wDAA2Dp5C,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAM25M,GAAiBjiQ,GAAOooD,UAAW,6BAAiC,cAI9K,SAAS65M,GAAiBjiQ,GACtB,IACI7iC,EAAS6iC,EAAK7iC,SAASA,SACvBmS,EAAQ3d,EAAM4C,QAAQ+a,MAAMnS,GAYhC,OAVIA,EAAOigB,SAAS6hR,EAAO,eACP,iBAEZ3vR,EACgB,iBAGA,kBAM5B,SAAS0yR,GAAgBhiQ,IACrBA,EAAOrsC,EAAEqsC,IAEJ/Y,OAAO,8BAA8B9J,YAAY8nM,GACtDjlL,EAAK/Y,OAAO,4BAA4B9J,YAAYkiR,GACpDr/P,EAAK/Y,OAAO,gBAAgB1R,SAAS0vM,GACrCjlL,EAAK/Y,OAAO,eAAe1R,SAAS8pR,GAGxC,SAAS6C,GAAmB74Q,GACxB,GAAIA,GAAWA,EAAQ7wB,OACnB,IAAK,IAAIuR,KAASsf,EAAS,CACvB,IAAI84Q,EAAW94Q,EAAQP,GAAG/e,GACtBo4R,EAASp7Q,KAAK,MAAMvuB,OACpB2pS,EAASruR,KAAK,iBAAiB,GAE/BquR,EAAS7/Q,WAAW,kBAMpC,SAAS8/Q,GAAiBl9O,GACtB,IAAKA,EAAM9nC,SAAS6hR,GAChB,OAAO/5O,EAAM1sB,aAAa,IAAMymQ,EAAM,MAI9C,SAASoD,GAA4BxlS,EAAS3E,GAC1C,IAAIoqS,EAkBR,SAAmCpqS,GAC/B,IAAIoqS,EAAgBpqS,EAAQk/B,OACxBl9B,EAAavI,EAAMuI,WAEvB,GAAIooS,GAAiBpoS,EAAWooS,GAC5B,OAAOA,EAEX,OAAO,KAzBaC,CAA0BrqS,GAC1CoqS,GAWR,SAAqBzlS,EAASylS,GAC1B3uS,EAAEkJ,GAASspC,SAAS,WAAWtnC,KAAK,CAChCyjS,cAAeA,IAZfE,CAAY3lS,EAASylS,GAGrBpqS,EAAQktB,OACRzxB,EAAEkJ,GAASspC,SAAS,MAAMA,SAAS,MAAMnyC,MAAK,SAASuE,GACnD8pS,GAA4BrxS,KAAMkH,EAAQktB,MAAM7sB,OAqB5D,SAASkqS,GAAoB9hR,GACzB,OAAOA,EAAK,wBAA0BA,EAAK,KAAO,uBAEtD,SAAS+hR,GAAmB/hR,GACxB,IAAIlK,EAAWkK,EAAK,gBAAkBA,EAAK,KAAO,eAClD,MAAO,KAAOlK,EAAW,OAASA,EAEtC,SAASksR,GAAeC,EAAcC,GAClC,IAAIC,EAAmBF,EAAa77Q,KAAK07Q,MACrCl7R,EAAS,GAeb,OAdAu7R,EAAiB9uS,MAAK,SAASuE,EAAGwqS,GAI9B,IAFA,IAAIC,GADJD,EAASpvS,EAAEovS,IACUlkS,KAAKmhS,GACtB97M,EAAQ0+M,EACLI,IACH9+M,EAAQ2+M,EAAgB97Q,KAAK27Q,GAAmBM,GAAW,aACjDxqS,QACN+O,EAAO5U,KAAKuxF,GAGhB8+M,GADAD,EAAS7+M,EAAMn9D,KAAK07Q,OACH5jS,KAAKmhS,MAIvBz4R,EAGX,SAAS07R,GAAgBC,EAAcL,GACnC,IAAIG,EAAUE,EAAarkS,KAAKkhS,GAChC,OAAOiD,EAAUH,EAAgB97Q,KAAK07Q,GAAoBO,IAAYrvS,EAAE,IAG5E,SAASwvS,GAAUnjQ,EAAM6iQ,GACrB,IAAIG,EAAUhjQ,EAAKnhC,KAAKmhS,GACxB,OAAOgD,EAAUH,EAAgB18P,SAASi6P,GAA4Br5Q,KAAK27Q,GAAmBM,IAAYrvS,EAAE,IA0ChH,SAASyvS,GAAc3+R,EAAS4+R,GAG5B,IAFA,IAAI3jD,EAAS,EACTviP,EAASsH,EAAQmS,WACdzZ,IAAWrD,MAAMqD,EAAOkmS,KAC3B3jD,GAAUviP,EAAOkmS,GACjBlmS,EAASA,EAAOyZ,WAEpB,OAAO8oO,EAGX,SAAS4jD,GAAe3tS,GACpB,OAAO+pS,GAAe/pS,EAAEgkB,eAAiBhkB,EAAEgkB,cAAc6nN,eAAeo/D,GAQ5E,SAAS2C,GAAyBC,GAC9BA,EAAGv6N,WAAWhiD,QAAO,WAAa,MAAwB,MAAjBj2B,KAAKi4B,YAAqBlB,SAGvE,IAAI07Q,GAAO9xS,EAAMgpB,GAAGmK,gBAAgB/wB,OAAO,CACvCoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC2E,EAAU5D,EAAKmE,QAAUnE,EAAK4D,QAC9B3E,EAAUe,EAAKf,QACfe,EAAKyqS,aACLzqS,EAAK0qS,aACL1qS,EAAK4jE,cAEL5jE,EAAK2qS,iBACL3qS,EAAK4qS,cAEL5qS,EAAK6qS,YAAY5rS,GAEjBe,EAAK8qS,eAAiB,IAEtB9qS,EAAKkpB,YAELlpB,EAAK+qS,cAAc9rS,GAEnBe,EAAKgrS,4BAED/rS,EAAQgsS,cACRjrS,EAAKkrS,SAAU,GAGnBtnS,EAAQiX,KAAK+sR,GAAM,WAEfhkS,EAAQ,GAAG8jB,GACX1nB,EAAKmrS,QAAUzyS,EAAM+P,OAAO,gBAAiB7E,EAAQ,GAAG8jB,IAExD1nB,EAAKmrS,QAAUzyS,EAAM+P,OAAO,gBAAiB/P,EAAM8uB,QAGvD9uB,EAAM6zB,OAAOvsB,IAGjBoC,OAAQ,CACJulF,EACAC,EACAE,EACAD,EACA/T,EACA8oJ,IAGJ39N,QAAS,CACL9E,KAAM,OACNkvF,UAAW,CACPC,KAAM,CACF7qE,SAAU,KAEd4+B,MAAO,CACH5+B,SAAU,MAGlB8oH,YAAa,aACbv7F,UAAW,UACXi/P,aAAa,EACbG,cAAc,EACdC,WAAY,IACZrtB,YAAY,EACZstB,eAAgB3wS,GAGpB4wS,UAAW,WACP,IAAIvrS,EAAOjI,KAEPiI,EAAK6oB,aACL7oB,EAAK4oB,QAAQ,WAAW,WACpB,MAAO,CACHsD,SAAUlsB,EAAK4D,QAAQspC,eAG/BltC,EAAK4D,QAAQ0gD,QAEbtkD,EAAK8xC,OAAO9xC,EAAK6oB,WAAW4G,OAAQzvB,EAAK4D,SACzC5D,EAAK4oB,QAAQ,WAAW,WACpB,MAAO,CACHsD,SAAUlsB,EAAK4D,QAAQspC,iBAMvC89P,0BAA2B,WACvB,IAAIhrS,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACf2qS,EAAkB5pS,EAAKwrS,mBAE3BxrS,EAAKyrS,kBAAoBzrS,EAAK0rS,oBAAoBnqS,KAAKvB,IAEtD4pS,GAAmBhmS,GAASod,GAAGwlR,EAAae,GAAcvnS,EAAK2rS,cAAcpqS,KAAKvB,IAC3EghB,GAAG62M,EAAQjvI,EAjfJ,sBAif0B,GACjC5nE,GAAG62M,EAAQjvI,EAAI2+M,GAAcvnS,EAAK85E,OAAOv4E,KAAKvB,IAC9CghB,GAAGwlR,EAAc,IAAM9C,EAAY96M,EAAI,aAAc5oF,EAAK4rS,cAAcrqS,KAAKvB,IAC7EghB,GAAG2lR,EAAa/9M,EAAI4+M,GAAwBxnS,EAAK88G,YAAYv7G,KAAKvB,IAClEghB,GAAG4lR,EAAah+M,EAAI4+M,GAAwBxnS,EAAK+8G,YAAYx7G,KAAKvB,IAClEghB,GAAG0iR,EAAY96M,EAAI4+M,GAAwBxnS,EAAKypF,WAAWloF,KAAKvB,IAChEghB,GAAG0lR,EAAa99M,EAAK,IAAM+9M,EAAa/9M,EAAK,IAAMg+M,EAAah+M,EAAK,IAClE86M,EAAY96M,EAAK,IAAMivI,EAAQjvI,EArf/B,qCAqfiD5oF,EAAK6rS,aAAatqS,KAAKvB,IAEnF4D,EAAQod,GAAG,UAAY4nE,EAAI5oF,EAAKi7G,SAAS15G,KAAKvB,IACtCghB,GAAG,QAAU4nE,EAAI5oF,EAAK2tF,OAAOpsF,KAAKvB,IAClCghB,GAAG,QAAU4nE,EAAI,aAAc5oF,EAAK2tF,OAAOpsF,KAAKvB,IAChDghB,GAAG,OAAS4nE,EAAI5oF,EAAK8rS,iBAAiBvqS,KAAKvB,IAC3CghB,GAAG,OAAS4nE,EAAI,aAAc5oF,EAAKyrS,mBAEvC7B,GACAA,EACK5oR,GAAG4lR,EAAah+M,EAAIy+M,EAAernS,EAAK+rS,iBAAiBxqS,KAAKvB,IAC9DghB,GAAG2lR,EAAa/9M,EAAIy+M,EAAernS,EAAKgsS,iBAAiBzqS,KAAKvB,IAGnEf,EAAQgsS,cACRjrS,EAAKisS,sBAAwBjsS,EAAKksS,eAAe3qS,KAAKvB,GACtDtF,EAAEyM,UAAU6Z,GAAG,QAAShhB,EAAKisS,yBAIrCE,0BAA2B,WACvB,IAAInsS,EAAOjI,KACP6xS,EAAkB5pS,EAAKwrS,mBAEvB5B,GACAA,EAAgB54Q,IAAI43D,GAGxB5oF,EAAK4D,QAAQotB,IAAI43D,GAEb5oF,EAAKisS,uBACLvxS,EAAEyM,UAAU6pB,IAAI,QAAShxB,EAAKisS,wBAItClB,cAAe,SAAS9rS,GACpB,IAEImtS,EAAaC,EAFbrsS,EAAOjI,KACPu0S,EAAsC,cAAvBrtS,EAAQsoI,YAG3B,GAAItoI,EAAQ++Q,WAAY,CACpBh+Q,EAAKusS,cAAgB,GACrBvsS,EAAKwsS,eAAiBxsS,EAAK4D,QAAQmgB,KAAK,uCAAyC9kB,EAAQsoI,YAAc,YAAYrjI,SAC/GooS,GACAhC,GAAyBtqS,EAAK4D,SAGlCwoS,EAAc1xS,EAAEsF,EAAKysS,UAAUC,aAAa,CAAE1gQ,UAAWsgQ,EAAe,OAAS,QACjFD,EAAa3xS,EAAEsF,EAAKysS,UAAUC,aAAa,CAAE1gQ,UAAWsgQ,EAAe,QAAU,UACjFF,EAAYpnS,IAAIqnS,GAAYnnQ,SAASllC,EAAKwsS,gBAE1CxsS,EAAK2sS,eAAe3sS,EAAK4D,QAASwoS,EAAaC,EAAYC,GAE3D,IAAIM,EAAe5sS,EAAK4D,QAAQE,aAC5B+oS,EAAkB7sS,EAAK4D,QAAQ,GAAGY,MAAMO,MAC5C8nS,EAAsC,SAApBA,EAA6B,GAAKA,EAEhDP,GACA5xS,EAAE7B,QAAQmoB,GAAG6lR,GAAQ,WACjB/1Q,YAAW,WACP9wB,EAAK8sS,yBAAyBF,EAAcC,GAC5C7sS,EAAK+sS,qBAAqB/sS,EAAK4D,QAASwoS,EAAaC,EAAYC,KAClE,QAIXtsS,EAAK8sS,yBAAyBF,EAAcC,GAC5C7sS,EAAK+sS,qBAAqB/sS,EAAK4D,QAASwoS,EAAaC,EAAYC,KAIzEd,iBAAkB,WACd,OAAOzzS,KAAKy0S,gBAAkBz0S,KAAKi1S,gBAGvCF,yBAA0B,SAASF,EAAcC,GAC7C,IAAI7sS,EAAOjI,KACPk1S,EAAkBjtS,EAAKwsS,eAAe7nS,IAAI,SAE9C3E,EAAKwsS,eAAe7nS,IAAI,CAAEI,MAAO,KACjC,IAAImoS,EAAeltS,EAAKwsS,eAAe1oS,aACvC9D,EAAKwsS,eAAe7nS,IAAI,CAAEI,MAAOkoS,IAEjC,IAAIE,EAAYntS,EAAK4D,QAAQE,aACzBspS,EAAUptS,EAAK4D,QAAQ,GAAGsS,YAAclW,EAAK4D,QAAQ,GAAGsY,YAE5D,GAAIixR,GAAaD,GAAgBA,EAAe,EAAG,CAC/C,IAAInoS,EAAQ8nS,EAAkBzxS,KAAK8S,IAAI0+R,EAAcM,GAAgBA,EACrEltS,EAAK4D,QAAQmB,MAAMA,EAAQqoS,GAC3BptS,EAAKwsS,eAAeznS,MAAMA,KAIlCsoS,gBAAiB,SAASpuS,GACtB,IAAIe,EAAOjI,MACakH,EAAQ++Q,aAAeh+Q,EAAKf,QAAQ++Q,aAAiB/+Q,EAAQ++Q,YAAch+Q,EAAKf,QAAQ++Q,YAC3G/+Q,EAAQ++Q,YAAch+Q,EAAKf,QAAQ++Q,YAAc/+Q,EAAQ++Q,WAAWzoM,UAAYv1E,EAAKf,QAAQ++Q,WAAWzoM,UACzGt2E,EAAQsoI,aAAevnI,EAAKf,QAAQsoI,eAGpCvnI,EAAKmsS,4BACLnsS,EAAKstS,mBACLttS,EAAK+qS,cAAc9rS,GACnBe,EAAKgrS,8BAIbsC,iBAAkB,WACd,IAAIttS,EAAOjI,KACP6xS,EAAkB5pS,EAAKwrS,mBACvB5B,IACAA,EAAgB54Q,IAAI43D,GACpBghN,EAAgB97Q,KAAK45Q,IAAsB12Q,IAAI43D,GAAI95D,SACnD86Q,EAAgB18P,SAASi6P,GAA4BpsS,MAAK,SAASuE,EAAGiuS,GAClE,IAAIhD,EAAK7vS,EAAE6yS,GAAcz/Q,KAAK,gDAC9By8Q,EAAGv5Q,IAAIsgK,GACP,IAAIk8G,EAAgBxD,GAAgBO,EAAIX,GACpC4D,EAAcjuS,QACdiuS,EAAc17P,OAAOy7P,MAI7B3D,EAAgB97Q,KAAK07Q,MAAuBngR,WAAW,oBACvDugR,EAAgB97Q,KAAK27Q,MAAsBpgR,WAAW,cACtDrpB,EAAK4D,QAAQotB,IAAIsgK,GACjB52L,EAAE7B,QAAQm4B,IAAI61Q,GACd+C,EAAgB55N,WAAWilL,SAE3Bj1P,EAAKwsS,eAAiBxsS,EAAKgtS,eAAiBhtS,EAAKusS,cAAgB5xS,IAIzEgyS,eAAgB,SAASxnN,EAAeinN,EAAaC,EAAYC,GAC7D,IAAItsS,EAAOjI,KACPimR,EAAah+Q,EAAKf,QAAQ++Q,WAC1BzoM,EAAWv1E,EAAKY,UAAUo9Q,EAAWzoM,UAAYyoM,EAAWzoM,SAprBtD,GAqrBNk4N,EAAqBl4N,EAAW,EAChCm4N,EAAW,KAAOn4N,EAClB7/B,EAAU,KAAO6/B,EACjBo4N,EAAiB,KAAkB,EAAXp4N,EACxBq4N,EAAgB,KAAkB,EAAXr4N,EACvBs4N,GAAY,EACZC,GAAc,EAEdrnD,EAAS,SAAShmP,GAClB,IAAIstS,EAAczB,EAAe,CAAE3nR,WAAclkB,GAAU,CAAEiuB,UAAajuB,GAC1E0kF,EAAc+mD,SAASrtH,QAAQkvR,EAAa,OAAQ,UAAU,WACtDF,GACApnD,EAAOhmP,MAGfT,EAAK+sS,qBAAqB5nN,EAAeinN,EAAaC,EAAYC,IAGlE0B,EAAoB,SAAStxS,GACxBmxS,GAAcC,IACfrnD,EAAO/pP,EAAEkJ,KAAKomC,WACd6hQ,GAAY,IAIhBI,EAAmB,SAASvxS,GAC5B,IAAIqxS,EAAczB,EAAe,CAAE3nR,WAAcjoB,EAAEkJ,KAAKomC,WAAc,CAAEtd,UAAahyB,EAAEkJ,KAAKomC,WAC5F8hQ,EApRZ,SAAiBpxS,GACb,IAAItD,EAAKsD,EAAEgkB,cACX,OAAOlK,GAAS,SAAS1R,KAAK1L,EAAGqE,MAAQ,IAkRnB4sP,CAAQ3tP,IAAM2tS,GAAe3tS,GAC3CyoF,EAAcxlE,OAAOd,QAAQkvR,EAAa,OAAQ,UAAU,WACnDD,GAGA9tS,EAAK+sS,qBAAqB5nN,EAAeinN,EAAaC,EAAYC,GAClEuB,GAAY,GAHbnzS,EAAEgC,EAAEg5E,eAAevzE,QAAQwkS,MAMnCkH,GAAY,EAEZnxS,EAAEs1B,kBACFt1B,EAAEwE,kBAGNkrS,EAAYprR,GAAG2lR,EAAa/9M,EAAI,CAAE58C,UAAW0hQ,GAAYM,GACpDhtR,GAAGtoB,EAAM25B,SAAS9M,KAAOqjE,EAAI,CAAE58C,UAAW2hQ,GAAkBM,GAEjE5B,EAAWrrR,GAAG2lR,EAAa/9M,EAAI,CAAE58C,UAAW0J,GAAWs4P,GAClDhtR,GAAGtoB,EAAM25B,SAAS9M,KAAOqjE,EAAI,CAAE58C,UAAW4hQ,GAAiBK,GAEhE7B,EAAYpnS,IAAIqnS,GACXrrR,GAAG4lR,EAAah+M,GAAI,WACjBzD,EAAcxlE,OACdkuR,GAAY,EACZ7tS,EAAK+sS,qBAAqB5nN,EAAeinN,EAAaC,EAAYC,MAG1EnnN,EAAcnkE,GAAGswK,GAAY,SAAS50L,GAClC,IAAKA,EAAE6pF,UAAY7pF,EAAEyiC,WAAaziC,EAAEw8M,OAAQ,CACxC,IAAIr8K,EA/UpB,SAAyBngC,GACrB,IAAIigC,EAAQ,EAWZ,OATIjgC,EAAEmgC,aAEFF,GADAA,GAASjgC,EAAEmgC,WAAa,KACR,EAAIzhC,KAAK4iE,KAAKrhC,GAASvhC,KAAKkN,MAAMq0B,IAGlDjgC,EAAEogC,SACFH,EAAQvhC,KAAK0S,MAAMpR,EAAEogC,OAAS,IAG3BH,EAmUsB+kJ,CAAgBhlL,EAAEgkB,eAE/BjgB,GAASo8B,EAAa,EAAI,KAAO,MADnBzhC,KAAK6T,IAAI4tB,GAAc4wQ,EAErCM,EAAczB,EAAe,CAAE3nR,WAAclkB,GAAU,CAAEiuB,UAAajuB,GAE1ET,EAAKkuS,kBAAkB/oN,GAEvBA,EAAc+mD,SAASrtH,QAAQkvR,EAAa,OAAQ,UAAU,WAC1D/tS,EAAK+sS,qBAAqB5nN,EAAeinN,EAAaC,EAAYC,MAEtE5vS,EAAEwE,sBAKdN,UAAW,SAASioH,GAChB,OAAQhoH,MAAMC,WAAW+nH,KAAOj/G,SAASi/G,IAG7CkkL,qBAAsB,SAAS5nN,EAAeinN,EAAaC,EAAYhiQ,GACnE,IAAI8jQ,EAAgB9jQ,EAAa3xC,EAAMisB,WAAWwgE,GAAiBA,EAAcz2D,YAC7E6tD,EAAalyC,EAhuBP,cACC,eAguBPv1B,EAASu1B,EA/tBH,cACC,eAguBX+hQ,EAAYlsR,OAAyB,IAAlBiuR,GACnB9B,EAAWnsR,OAAOiuR,EAAgBhpN,EAAc,GAAG5I,GAAc4I,EAAc,GAAGrwE,GAAU,IAGhGwU,WAAY,SAASrqB,GACjB,IAAIoqF,EAAYtxF,KAAKkH,QAAQoqF,UAE7BtxF,KAAK8yS,YAAY5rS,GAEjBA,EAAQoqF,UAAYvuF,GAAO,EAAMuuF,EAAWpqF,EAAQoqF,WAEhD,eAAgBpqF,GAChBlH,KAAK6rE,YAAY3kE,GAGrBlH,KAAK4yS,iBACL5yS,KAAK6yS,cACL7yS,KAAKs1S,gBAAgBpuS,GAErBwpB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,IAGpClF,QAAS,WACL,IAAIiG,EAAOjI,KAEX0wB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKmsS,4BAELnsS,EAAKstS,mBAEL50S,EAAMqB,QAAQiG,EAAK4D,UAGvB0b,OAAQ,SAAS1b,EAAS0b,GAGtB,OAFAvnB,KAAKq2S,gBAAgBxqS,GAAoB,IAAX0b,GAEvBvnB,MAGXqnB,QAAS,SAASxb,GAGd,OAFA7L,KAAKq2S,gBAAgBxqS,GAAS,GAEvB7L,MAGXs2S,eAAgB,SAAS7O,GACrBA,EAAYA,GAAaznS,KAAK6L,QAC9B,IAAImjC,EAAOhvC,KAAK6L,QAAQkqB,KAAK0xQ,GACzBoK,EAAkB7xS,KAAKyzS,mBAE3B,OAAIzkQ,EAAKxnC,QAAUigS,IAAcznS,KAAK6L,QAC3BmjC,EACA6iQ,EACAA,EAAgB97Q,KAAK0xQ,GAErB9kS,KAIfo3C,OAAQ,SAAS/K,EAAMunQ,GACnBA,EAAgBv2S,KAAKs2S,eAAeC,GAEpC,IAAI91J,EAAWzgJ,KAAK0hJ,QAAQ1yG,EAAMunQ,EAAeA,EAAc/uS,OAASxH,KAAKw2S,mBAAmBD,GAAephQ,WAAWrd,GAAG,GAAK,MAYlI,OAVA90B,EAAKy9I,EAASrsH,OAAO,SAAS7sB,GAC1Bk5I,EAASvsF,MAAMna,OAAO/5C,MACtB+wS,GAAY/wS,MACZqxS,GAA4BrxS,KAAMgvC,EAAKznC,IAAMynC,MAGjD+hQ,GAAYwF,GACZvF,GAAgBvwJ,EAASvsF,MAAMn+B,KAAK,qBAAqB9oB,IAAIwzI,EAASrsH,QACtE88Q,GAAmBE,GAAiB3wJ,EAASvsF,QAEtCl0D,MAGXqxE,aAAc,SAASriC,EAAMunQ,GACzBA,EAAgBv2S,KAAKs2S,eAAeC,GAEpC,IAAI91J,EAAWzgJ,KAAK0hJ,QAAQ1yG,EAAMunQ,EAAeA,EAAcpqS,UAW/D,OATAnJ,EAAKy9I,EAASrsH,OAAO,SAAS7sB,GAC1BgvS,EAAcE,OAAOz2S,MACrB+wS,GAAY/wS,MACZgxS,GAAgBhxS,MAChBqxS,GAA4BrxS,KAAMgvC,EAAKznC,IAAMynC,MAGjDgiQ,GAAgBuF,GAETv2S,MAGX02S,YAAa,SAAS1nQ,EAAMunQ,GACxBA,EAAgBv2S,KAAKs2S,eAAeC,GAEpC,IAAI91J,EAAWzgJ,KAAK0hJ,QAAQ1yG,EAAMunQ,EAAeA,EAAcpqS,UAW/D,OATAnJ,EAAKy9I,EAASrsH,OAAO,SAAS7sB,GAC1BgvS,EAAcp9N,MAAMn5E,MACpB+wS,GAAY/wS,MACZgxS,GAAgBhxS,MAChBqxS,GAA4BrxS,KAAMgvC,EAAKznC,IAAMynC,MAGjDgiQ,GAAgBuF,GAETv2S,MAGX0hJ,QAAS,SAAS1yG,EAAMunQ,EAAepqS,GACnC,IACIioB,EAAOoV,EADPvhC,EAAOjI,KAGNu2S,GAAkBA,EAAc/uS,SACjC2E,EAASlE,EAAK4D,SAGlB,IAAI8qS,EAAQh0S,EAAEgF,cAAcqnC,IAASA,aAAgBruC,EAAMkN,KAAKw9C,iBAC5DurP,EAAY,CACR3G,WAAY9jS,EAAOigB,SAAS6hR,GAC5B37P,WAAYnmC,EAAOigB,SAAS6hR,EAAO,eACnCyC,UAAU,EACVlpS,OAAQ2E,EAAOgpC,WAAW3tC,QAwClC,OArCI+uS,IAAkBpqS,EAAO3E,SACzB2E,EAASxJ,EAAEsF,EAAK4uS,YAAY,CAAE3iP,MAAO0iP,EAAW1vS,QAASe,EAAKf,WAAY0F,IAAI,UAAW,QAAQugC,SAASopQ,GAC1G51S,EAAM2qC,+BAA+Bn/B,EAAQ,CAAC,aAG9CwqS,GAAS1zS,EAAQ+rC,IAASA,aAAgBruC,EAAMkN,KAAKD,gBACrDwmB,EAAQzxB,EAAEA,EAAE2X,IAAIq8R,EAAQ,CAAE3nQ,GAASA,GAAM,SAAStmC,EAAOkB,GAC7C,GAAqB,iBAAVlB,EACP,OAAO/F,EAAE+F,GAAO6mB,MAEhB,IAAIunR,EAAcn0S,EAAEsF,EAAK8uS,WAAW,CAChC7iP,MAAO0iP,EACP5nQ,KAAMjsC,EAAO2F,EAAO,CAAEqQ,MAAOnP,OAIjC,OADAjJ,EAAM2qC,+BAA+BwrQ,EAAa,CAAC,YAC5CA,EAAYvnR,WAUnCia,GALIpV,EADe,iBAAR4a,GAAsC,KAAlBA,EAAKlkC,OAAO,GAC/B7C,EAAK4D,QAAQkqB,KAAKiZ,GAElBrsC,EAAEqsC,IAGCjZ,KAAK,QACHxR,SAAS,gCACTzB,KAAK+sR,GAAM,SAE5Bz7Q,EAAQA,EAAM6B,OAAO,OAEfhpB,IAAIu8B,EAAOzT,KAAK,SAAS/yB,MAAK,WAChC6tS,GAAkB7wS,UAInB,CAAEo0B,MAAOA,EAAO8/B,MAAO/nD,IAGlC4qB,OAAQ,SAASlrB,GAGb,IACIM,GAHJN,EAAU7L,KAAKs2S,eAAezqS,IAGT27B,aADVxnC,KAC4B6L,QAAS0jS,IAC5Cr7O,EAAQroD,EAAQM,OAAO,mBAI3B,GAFAN,EAAQkrB,SAEJm9B,IAAUA,EAAM/e,SAASo6P,IAAkB/nS,OAAQ,CACnD,IAAIwvS,EAAc5F,GAAiBl9O,GAE/B59B,EAAY49B,EAAM/nD,OAAOijS,GAEzB94Q,EAAU9uB,OACV8uB,EAAUS,SAEVm9B,EAAMn9B,SAGVm6Q,GAAmB8F,GAUvB,OAPI7qS,EAAO3E,SAGPupS,GAFA5kS,EAASA,EAAO2rB,GAAG,IAGnBk5Q,GAAgB7kS,IAxBTnM,MA8Bfi3S,eAAgB,SAASprS,EAASwoB,GAC9B,IAAIpsB,EAAOjI,KACPq0B,EAASo2C,UACTxiE,EAAKspF,KAAK1lF,GACV5D,EAAK6jD,UAAW,GAEhBz3B,EAAS1qB,IAAImzC,GAAQ,WACjBjxC,EAAQkqB,KAAKq4Q,GAAejiR,YAAY,eACpClkB,EAAK6jD,WACL7jD,EAAKspF,KAAK1lF,GACV5D,EAAK6jD,UAAW,OAMhCylC,KAAM,SAAS1lF,GACX,IAAI5D,EAAOjI,KACPkH,EAAUe,EAAKf,QACforC,EAAoC,cAAvBprC,EAAQsoI,YACrBv7F,EAAY/sC,EAAQ+sC,UACpB31B,EAAQ3d,EAAM4C,QAAQ+a,MAAMrW,EAAKmE,SACjCylS,EAAkB5pS,EAAKwrS,mBAC3B5nS,GAAWgmS,GAAmB5pS,EAAK4D,SAASkqB,KAAKlqB,GAEjD,IAAIwoB,EAAWpsB,EAAK6oB,YAAc7oB,EAAK6oB,WAAWwrC,SAASzwD,EAAQgC,KAAKlN,EAAM6qB,GAAK,QAEnF,GAAI6I,GAAYA,EAAS41C,cAAgB51C,EAASo2C,WAAaxiE,EAAK6jD,SAKhE,OAJA7jD,EAAK6jD,UAAW,EAChBjgD,EAAQkqB,KAAKq4Q,GAAe7pR,SAAS,eACrC8P,EAASu2C,YACT3iE,EAAKgvS,eAAeprS,EAASwoB,GAI7B,yBAAyBtnB,KAAKknC,KAE1BA,EADA31B,EACYg0B,GAAc2B,EAAY,SAASxxC,QAAQ,UAAW,UAAY,OAElE6vC,GAAc2B,EAAY,UAAUxxC,QAAQ,UAAW,UAAY,SAIvF,IAAIy0S,EAAgB,mGAChBC,EAAa,WACDx0S,EAAE3C,MAAM6N,KAAKohS,IAGrBhnS,EAAKq9C,MAAM3iD,EAAE3C,MAAMqM,QAAQ,cAAc,IAuIjD,OAnIAR,EAAQsoF,WACAp+D,KAAKmhR,GACLl0S,KAAKm0S,GAETtF,GACAhmS,EAAQkqB,KAAKmhR,GAAel0S,KAAKm0S,GAGjClvS,EAAKf,QAAQgsS,cACbjrS,EAAKkrS,SAAU,GAGnBtnS,EAAQ7I,MAAK,WACT,IAAIi2J,EAAKt2J,EAAE3C,MAEXm6B,aAAa8+H,EAAGprJ,KAAKygS,IACrBn0Q,aAAalyB,EAAKmvS,eAClBnvS,EAAKmvS,cAAgBr+Q,YAAW,WAC5B,IACIm6D,EACAmkN,EAFAx5R,EAAMo7I,EAAGljI,KAAK,4FAA4FE,OAAO,WAAW/rB,QAQhI,IAJK2T,EAAI,IAAMg0R,IACXwF,EAAgBpvS,EAAKqvS,UAAUr+I,GAC/Bp7I,EAAMw5R,GAAiBA,EAAcxrS,UAErCgS,EAAItR,GAAG,aAIPsR,EAAI,KAA0D,IAApD5V,EAAKsvS,cAAc,CAAEvoQ,KAAMiqH,EAAG,GAAIvzJ,KAAMkqF,IAAmB,CAErE,IAAK/xE,EAAIkY,KAAK,iBAAiB,IAAMlY,EAAIs3B,SAAS,iBAAiBA,SAAS,WAAW3tC,OAAS,EAAG,CAC/F,IAAIgwS,EAAe70S,EAAE7B,QAAQ6L,SAErBkR,EAAIjR,IAAI,CAAE6qS,UAAWD,GAAgB72S,EAAMuL,aAAa2R,GAAOA,EAAIlR,UAAYhM,EAAM8qB,WAAW5N,GAAKkO,OAAQY,SAAU,cAK/H9O,EAAIjR,IAAI,CAAE6qS,UAAW,GAAI9qR,SAAU,YAGvCssI,EAAGprJ,KAAK2gS,EAAQv1I,EAAGrsJ,IAAI4hS,IACvB,IAAIkJ,EAAazvS,EAAK8qS,iBACtB95I,EAAGrsJ,IAAI4hS,EAAQkJ,GAEXzvS,EAAKf,QAAQ++Q,YACbhtH,EAAG9sJ,SAASgoF,SAASw7M,IAAsB/iS,IAAI,CAAEgtC,SAAU89P,IAG/DxkN,EAAQr1E,EAAIhQ,KAAKohS,GACjB,IAAIxxP,EAAOw7G,EAAG9sJ,SAASigB,SAAS6hR,GAC5B0J,EAAmBl6P,GAAQnL,EAC3B/kB,EA53BxB,SAAwB0mB,EAAWwJ,EAAMn/B,GACrC21B,EAAYA,EAAUrpC,MAAM,MAAM6yC,EAAO,IAAMxJ,EAC/C,IAAIs/C,EAAS,CAAE36C,OAAQ,CAAC,SAAWt6B,EAAQ,QAAU,QAAUxR,SAAU,CAAC,MAAQwR,EAAQ,QAAU,SAcpG,MAbiB,aAAavR,KAAKknC,IAG/Bs/C,EAAO36C,OAAS,CAAE,MAAO3E,GACzBs/C,EAAOzmF,SAAS,GAAKnM,EAAM4sB,WAAW0mB,GAAWn+B,UAEjDy9E,EAAO36C,OAAO,GAAK3E,EACnBs/C,EAAOzmF,SAAS,GAAKnM,EAAM4sB,WAAW0mB,GAAWn+B,SAGrDy9E,EAAO36C,OAAS26C,EAAO36C,OAAO/tC,KAAK,KACnC0oF,EAAOzmF,SAAWymF,EAAOzmF,SAASjC,KAAK,KAEhC0oF,EA42B0BqkN,CAAe3jQ,EAAWwJ,EAAMn/B,GAC7CkI,EAAUtf,EAAQoqF,UAAUC,KAAK/qE,QACjCwsE,EAAcxsE,IAAY5jB,EAAc4jB,EAAU,WAn4B1E,SAA4BytB,EAAWwJ,GAEnC,OADAxJ,EAAYA,EAAUrpC,MAAM,MAAM6yC,EAAO,IAAMxJ,GAC9BxxC,QAAQ,MAAO,MAAMA,QAAQ,SAAU,QAi4B2Bo1S,CAAmB5jQ,EAAWwJ,GAE5Fy1C,IAoDDA,EAAQr1E,EAAIhQ,KAAKohS,IACX/nS,QAAQ0xC,OAASrrB,EAAWqrB,OAClCs6C,EAAMhsF,QAAQ4F,SAAWygB,EAAWzgB,SACpComF,EAAMhsF,QAAQoqF,UAAUC,KAAK/qE,QAAUwsE,IAtDvCE,EAAQr1E,EAAIi6R,WAAW,CACnBtyL,SAAU,WAAav9G,EAAKsvS,cAAc,CAAEvoQ,KAAMhvC,KAAKoM,QAAQD,SAAUzG,KAAMqqF,KAC/EgoN,WAAY,SAASpzS,GACjBsD,EAAKmqF,UAAW,EAChBztF,EAAE2F,OAAOuB,QACJqmB,WAAW,mBACXtlB,IAAI,CAAEgqB,QAAS,KACpB3uB,EAAKsvS,cAAc,CAAEvoQ,KAAMhvC,KAAKoM,QAAQD,SAAUzG,KAAMoqF,KAE5Dl3C,OAAQrrB,EAAWqrB,OACnB9rC,SAAUygB,EAAWzgB,SACrBmkF,UAAW/pF,EAAQqsS,iBAAmB3wS,EAAcsE,EAAQqsS,eAAkBoE,EAAmB,MAAQ,WACzGxmN,OAAQ8nE,EACR9rH,SAAU0kQ,GAAmB54I,EAC7B3nE,UAAW,CACPC,KAAMxuF,GAAO,EAAM,CAAEyjB,QAASwsE,GAAe9rF,EAAQoqF,UAAUC,MAC/DjsC,MAAOp+C,EAAQoqF,UAAUhsC,OAE7BisC,KAAMtpF,EAAK+vS,WAAWxuS,KAAKvB,GAC3Bq9C,MAAO,SAAS3gD,GACZsD,EAAKmqF,SAAWztF,EAAE2F,OAAOuB,QACzB,IAAIotJ,EAAKt0J,EAAE2F,OAAO8B,QAAQD,SAE1B,GAAI0lS,EAAiB,CACjB,IAAIG,EAAUrtS,EAAE2F,OAAOuB,QAAQgC,KAAKkhS,GAChCiD,IACA/4I,GAAM44I,GAAmB5pS,EAAK4D,SAASkqB,KAAK07Q,GAAoBO,KAEpErtS,EAAE2F,OAAO8B,QAAQ+oC,SAASw6P,IAAsBxiS,OAG/ClF,EAAKsvS,cAAc,CAAEvoQ,KAAMiqH,EAAG,GAAIvzJ,KAAMmqF,IAazClrF,EAAEwE,kBAZF8vJ,EAAGrsJ,IAAI4hS,EAAQv1I,EAAGprJ,KAAK2gS,IACvBv1I,EAAG/mI,WAAWs8Q,GAEVvmS,EAAKf,QAAQ++Q,YACbhtH,EAAG9sJ,SAASgoF,SAASw7M,IAAsB/iS,IAAI,CAAEgtC,OAAQ,MAGzDn7B,GAASiwR,GAAe/tS,EAAM4C,QAAQwf,wBACtCk2I,EAAG9sI,YAAY+iR,GACfjnS,EAAK8rS,wBAMlBlmS,KAAKohS,GAERpxR,EAAIxR,QAAQ+iS,GAA4B99Q,WAAWu+Q,KAOvDhyR,EAAIyT,WAAW,eACf2nI,EAAGn2I,KAAK6lR,IAAe,GAEvB1gS,EAAKgwS,wBAAwB/kN,EAAO+lE,GAEpC/lE,EAAM9B,UAAW,EACjB8B,EAAM3B,OAENtpF,EAAKiwS,oBAAoBhlN,MAG9BjrF,EAAKf,QAAQosS,YAEhBr6I,EAAGprJ,KAAKygS,EAAOrmS,EAAKmvS,kBAGjBnvS,GAGXgwS,wBAAyB,SAAS/kN,EAAOilN,GAEtC,GADYn4S,KACHkH,QAAQ++Q,aADLjmR,KAEFo4S,kBAAkBllN,IAClBilN,EAAYr1R,KAAK,qBAAqB,CACvC,IAAIu1R,GAAU,IAAIjqS,MAAOnF,UACzBkvS,EAAYr1R,KAAK,mBAAoBu1R,GACrCnlN,EAAMrnF,QAAQiX,KAAK,aAAcu1R,KAK7CD,kBAAmB,SAASllN,GACnBA,EAAMrnF,QAAQM,SAASI,GAAG8iS,KAC3Bn8M,EAAM9mF,QAAUzL,EAAMqrB,KAAKknE,EAAMrnF,QAASqnF,EAAMhsF,QAAQ4E,UACnDc,IAAI,CACD+f,SAAU,SACV9f,QAAS,QACTC,SAAU,eAK1BorS,oBAAqB,SAAShlN,EAAOqhN,EAAc+D,GACpCt4S,KAEFkH,QAAQ++Q,YAAc/yL,EAAMrnF,QAAQ,GAAGoY,aAAeivE,EAAMrnF,QAAQ,GAAG0oB,cAFrEv0B,KAGFu4S,wBAAwBrlN,EAAOqhN,EAAc+D,IAI1DC,wBAAyB,SAASrlN,EAAOqhN,EAAc+D,GACnD,IAAIrwS,EAAOjI,KACPw4S,EAAgBtlN,EAAM9mF,QAAQ+oC,SAASw6P,IACvCr+M,EAAYrpF,EAAKf,QAAQoqF,UACzBlsD,GAAYksD,GAAaA,EAAUC,MAAQD,EAAUC,KAAK7qE,UAAa,GA7qCvE,GA8qCJqS,YAAW,WACP,IAAKy/Q,EAAchxS,OAAQ,CACvB,IAAI6sS,EAAc1xS,EAAEsF,EAAKysS,UAAUC,aAAa,CAAE1gQ,UAAWsgQ,EAAe,OAAS,QACjFD,EAAa3xS,EAAEsF,EAAKysS,UAAUC,aAAa,CAAE1gQ,UAAWsgQ,EAAe,QAAU,UAErFiE,EAAgBnE,EAAYpnS,IAAIqnS,GAAYnnQ,SAAS+lD,EAAM9mF,SAE3DnE,EAAK2sS,eAAe1hN,EAAMrnF,QAASwoS,EAAaC,EAAYC,GACvD+D,GACDE,EAAcvvR,GAAG2lR,EAAa/9M,GAAI,WAC9B,IAAIghN,EAAkB5pS,EAAKwrS,mBAC3B9wS,EAAEgvS,GAAez+M,EAAMrnF,QAASgmS,IAAkB7uS,MAAK,SAASuE,EAAGwpH,GAC/D,IAAIonL,EAActG,EAAgB97Q,KAAK07Q,GAAoB1gL,EAAEljH,KAAKkhS,KAClE9mS,EAAKq9C,MAAM6yP,SAGlBlvR,GAAG4lR,EAAah+M,GAAI,WACjB93D,YAAW,WACHp2B,EAAEizB,cAAc3tB,EAAKusS,gBACrBvsS,EAAKwwS,mBAAmBvlN,EAAMrnF,WAjsClD,OAusCA5D,EAAK+sS,qBAAqB9hN,EAAMrnF,QAAS2sS,EAActuS,QAASsuS,EAAcr2Q,OAAQoyQ,KACvFnvQ,IAGP4yQ,WAAY,SAASrzS,GACZ3E,KAAK04S,eACN/zS,EAAE2F,OAAOuB,QAAQspC,SAAS,YAAoBhpB,YAAY0/Q,GAE1D7rS,KAAKkH,QAAQ++Q,YACbjmR,KAAK24S,gBAAgBh0S,EAAE2F,SAI/BquS,gBAAiB,SAASzlN,EAAO98C,GAC7B,IAAI87P,EAAeh/M,EAAMrnF,QACrB+sS,EAAS1G,EAAajlS,IAAIilS,EAAa/lS,OAAOkjS,IAElDuJ,EAAOjsS,OAAQulS,EAAa9lR,SAAS6hR,IAASjuS,KAAK64S,gBAAmB,IAEtE,IAAIt2R,EAAW2wE,EAAML,UAAUz8C,GAC3BohQ,EAAe70S,EAAE7B,QAAQ6L,SACzBmsS,EAAmBv2R,EAAS5V,OAC5BosS,EAAiB3iQ,EAAU,EAAI/yC,KAAKuV,IAAI2J,EAAS6B,IAAK,GACtDuS,EAAYyf,EAAU,EAAIg8P,GAAcpyS,KAAKyzS,mBAAmB,GAAI,aACpEuF,EAAkBl4S,OAAO8e,YAAc43R,EACvCC,EAAYD,EAAe72S,EAAM8qB,WAAWymR,GAAcnmR,OAASitR,EAGvE,KAFavB,EAAY9gR,EAAYmiR,EAAmBC,GAE3C,CACT,IAAIpsS,EAAStJ,KAAK8S,IAAIshS,EAAWA,EAAYsB,EAAiBpiR,GAC9DiiR,EAAOhsS,IAAI,CAAE+f,SAAU,SAAUhgB,OAAQA,EAAS,SAI1D24C,MAAO,SAASlxB,EAAO6kR,GACnB,IAAIhxS,EAAOjI,KACP6xS,EAAkB5pS,EAAKwrS,mBACvB5nS,EAAWgmS,GAAmB5pS,EAAK4D,SAEvCuoB,EAAQvoB,EAAQkqB,KAAK3B,IAEV5sB,SACP4sB,EAAQvoB,EAAQkqB,KAAK,aAkDzB,OA9BA3B,EAAMpxB,MAAK,WACP,IAAIi2J,EAAKt2J,EAAE3C,MAEXi5J,EAAGn2I,KAAK6lR,IAAe,IAElBsQ,GAAkBhxS,EAAKixS,YAAYjgJ,KACpChxJ,EAAKkrS,SAAU,GAGnBh5Q,aAAa8+H,EAAGprJ,KAAKygS,IAErBr1I,EAAGprJ,KAAKygS,EAAOv1Q,YAAW,WACtB,IA7B6B64Q,EAC7Br7R,EAYA8hS,EAgBInlN,EAAQjrF,EAAKqvS,UAAUr+I,GAC3B,GAAI/lE,IAjBJmlN,EAiBiCp/I,EAjBhBprJ,KAAKmhS,IACjB6C,IAAoBwG,IAAYpwS,EAAKusS,cAAc6D,EAAQnnS,aAgBxBjJ,EAAKkxS,aAAc,CACvD,IAAKlxS,EAAKkxS,cA/BevH,EA+BsB1+M,EAAMrnF,QA9BzD0K,GAAS,EACT5T,EAAEizB,cAAc3tB,EAAKusS,gBAGzB7xS,EAAEgvS,GAAeC,EAAcC,IAAkB7uS,MAAK,SAASuE,EAAG2rF,GAE9D,QADA38E,IAAWtO,EAAKusS,cAActhN,EAAMrlF,KAAKkhS,GAAe79R,gBAHjDqF,GA6BC,OAGJ28E,EAAM5tC,QACN4tC,EAAMrnF,QAAQiX,KAAK,eAAe,GAE9B+uR,GACI5pS,EAAKkxS,aAAe/kR,EAAM+N,OAAO51B,GAAG0sJ,EAAG,YAChChxJ,EAAKkxS,eAIzBlxS,EAAKf,QAAQosS,gBAGbrrS,GAGXqvS,UAAW,SAASr+I,GAChB,IACI/lE,EAAQ+lE,EAAGljI,KAAK,2EAA2E7rB,QAAQ2D,KAAKohS,GACxG4C,EAFO7xS,KAEgByzS,mBAE3B,IAAKvgN,GAAS2+M,EAAiB,CAC3B,IAAIwG,EAAUp/I,EAAGprJ,KAAKmhS,GACtB,GAAIqJ,EAEAnlN,EADmB2+M,EAAgB97Q,KAAK27Q,GAAmB2G,IACtCxqS,KAAKohS,GAGlC,OAAO/7M,GAGXmjN,gBAAiB,SAASjiR,EAAO7M,GAC7BvnB,KAAK6L,QAAQkqB,KAAK3B,GAAOpxB,MAAK,WAC1BL,EAAE3C,MACGgoB,YAAY0+Q,GAAgBn/Q,GAC5BzE,KAAK,iBAAkByE,OAIpCusR,aAAc,SAASnvS,GACnB,IAAI2C,EAAS3E,EAAEhC,EAAM8nB,YAAY9jB,IAAMA,EAAE2C,QAAQ+E,QAAQkjS,IACrDvtE,EAAUr9N,EAAEe,MAAQkpS,IAA6C,IAA/BjD,EAAUh2R,QAAQhR,EAAEe,MAE1D4B,EAAO6sF,WAAWhoE,YAAY+iR,GAEzB5nS,EAAO+wB,QAAQ,iBAAuB7wB,QACvCF,EAAO0gB,YAAYknR,EAAYltE,GAAqB,aAAVr9N,EAAEe,MAAiC,eAAVf,EAAEe,MAAyBf,EAAEe,MAAQipS,GAG5G3uS,KAAK+zS,oBAGTF,cAAe,WACN7zS,KAAKkH,QAAQmsS,eACdrzS,KAAKo5S,mBAAoB,IAIjCzF,oBAAqB,SAAShvS,GAC1B,IAAIsD,EAAOjI,KACPq5S,EAAY12S,EAAEgC,EAAIA,EAAEg5E,cAAgB39E,KAAKs5S,cACzChyS,EAASW,EAAKsxS,gBAAgBF,GAAW,GAExCr5S,KAAKo5S,mBACNrgR,YAAW,WACF3pB,SAASoqS,aAAgBrkR,GAAS7tB,EAAQ3G,EAAMwY,oBAAqBxU,GAAMwwB,GAAS7tB,EAAQ3C,EAAEg5E,iBAC/F11E,EAAKq9C,MAAMh+C,KAEhB,GAGPtH,KAAKo5S,mBAAoB,GAG7BrF,iBAAkB,WACd,IAAI0F,EAAez5S,KAAKs5S,aAEpBG,GAAgBA,EAAartR,SAASy/Q,KACtC4N,EAAattR,YAAY0/Q,GACzB7rS,KAAK05S,cAAgB,OAI7B7G,YAAa,WACT,IAAI5qS,EAAOjI,KAEXiI,EAAK4D,QAAQkqB,KAAK,WACbE,QAAO,WACJ,OAAQtzB,EAAE3C,MAAMmM,SAASigB,SAAS,mBAErCJ,KAAK,4CACL7f,OAAO,OACP2W,KAAK,cAAe7a,EAAK4D,QAAQU,GAAG,aACpCY,OAELlF,EAAK4D,QAAQkqB,KAAK,MAAM/yB,MAAK,WACzB,IAAIkxD,EAAQvxD,EAAE3C,MACV2vB,EAAKhvB,EAAM8uB,OACfykC,EAAMpxC,KAAK,KAAM6M,GACZtjB,QAAQ,MACRyW,KAAK,gBAAiB6M,OAInCijR,eAAgB,WACZ,IAEIx+Q,EAFAvoB,EAAU7L,KAAK6L,QAInBA,EAAQsgB,YAAY,qCACpBtgB,EAAQ0Y,SAAS,gCAAkC0pR,GAAM1pR,SAAS0pR,EAAO,IAAMjuS,KAAKkH,QAAQsoI,aAE3D,aAA7BxvI,KAAKkH,QAAQsoI,YACb3jI,EAAQiX,KAAK,mBAAoB,YAEjCjX,EAAQiX,KAAK,mBAAoB,cAGrCjX,EAAQkqB,KAAK,WACLE,QAAO,WACJ,OAAQt1B,EAAM4C,QAAQ6hB,gBAAgB7a,KAAKvK,KAdvB,0BAgBvBukB,SAAS,wCACTzB,KAAK+sR,GAAM,QACX1jS,OAAO,MACP2W,KAAK,gBAAiB,QACtBnX,MACAoqB,KAAK,YACLxR,SAAS,aACTzB,KAAK,WAAY,MAEzBjX,EAAQkqB,KAAK,qBAAqBjT,KAAK6lR,IAAe,GAEtDv0Q,EAAQvoB,EAAQkqB,KAAK,2BAErBlqB,EAAQsgB,YAAY,eAEpBiI,EAAMpxB,MAAK,WACP6tS,GAAkB7wS,UAI1B+kH,YAAa,SAASpgH,GAClB,IAAIsD,EAAOjI,KACP6L,EAAUlJ,EAAEgC,EAAEg5E,eACd1T,EAAchiE,EAAK0xS,iBAAiB9tS,GACpCmmS,EAAUnmS,EAAQgC,KAAKmhS,IAAsBnjS,EAAQM,SAAS0B,KAAKkhS,GACnE6K,EAAetH,GAAe3tS,GAC9Bk1S,GAAkB,EAElB7H,IACA/pS,EAAKusS,cAAcxC,EAAQ9gS,aAAc,GAGzCjJ,EAAKmqF,WACLynN,IAAoB5xS,EAAKmqF,SAASr8D,KAAKlqB,GAASrE,QAGhDqyS,GAAoBl1S,EAAEm1S,gBAAkBjuS,EAAQwsB,QAAQ82Q,GAAc,IAAMxqS,EAAEm1S,gBAAkBjuS,EAAQwsB,QAAQ,4CAA4C,KAIhKpwB,EAAKywS,eAAgB,EAEhBzwS,EAAKf,QAAQgsS,YAAY6G,eAAiB9xS,EAAKixS,YAAYrtS,EAAQQ,QAAQkjS,MAC3EtnS,EAAKf,QAAQgsS,YAAY8G,eAAiB/xS,EAAKixS,YAAYrtS,EAAQQ,QAAQkjS,UAI9C,IAA7BtnS,EAAKf,QAAQgsS,cAC8B,IAA3CjrS,EAAKf,QAAQgsS,YAAY6G,eAA2B9xS,EAAKixS,YAAYrtS,EAAQQ,QAAQkjS,OAC3C,IAA1CtnS,EAAKf,QAAQgsS,YAAY8G,eAA2B/xS,EAAKixS,YAAYrtS,EAAQQ,QAAQkjS,MAAuBtnS,EAAKkrS,UAAa10R,GAC7Hm7R,GAAgB3xS,EAAKixS,YAAYrtS,EAAQQ,QAAQkjS,OAE9Cp6Q,GAASxwB,EAAEg5E,cAAeh5E,EAAEw2B,gBAAkB8uC,GAC/ChiE,EAAKspF,KAAK1lF,KAIe,IAA7B5D,EAAKf,QAAQgsS,aAAwBjrS,EAAKkrS,SAAW10R,IACrD5S,EAAQsoF,WAAWnxF,MAAK,SAASgrB,EAAGo4I,GAChCn+J,EAAKq9C,MAAM8gH,GAAS,SAKhC10E,WAAY,SAAS/sF,GACjB,IAAIsD,EAAOjI,KACP6L,EAAUlJ,EAAEgC,EAAEg5E,gBAEd11E,EAAKf,QAAQgsS,YAAY8G,eAAiB/xS,EAAKixS,YAAYrtS,IAAY4S,IACvE5S,EAAQsoF,WAAWnxF,MAAK,SAASgrB,EAAGo4I,GAChCn+J,EAAKq9C,MAAM8gH,GAAS,OAKhCphD,YAAa,SAASrgH,GAClB,IAAIsD,EAAOjI,KACP6L,EAAUlJ,EAAEgC,EAAEg5E,eACdw6N,EAActsS,EAAQgC,KAAKmhS,GAC3B/kO,EAAep+D,EAAQspC,SAASi6P,GAA4B5nS,QAAUqE,EAAQspC,SA96CtE,iBA86C8F3tC,QAAW2wS,EACjHt1N,EAAUlgF,EAAE7B,QAMhB,GAJIq3S,UACOlwS,EAAKusS,cAAc2D,EAAYjnS,aAGtCrF,EAAQ27B,aAAa4nQ,EAA4B,2CAA2C,GAKhG,OAAkC,IAA7BnnS,EAAKf,QAAQgsS,cAA2BjrS,EAAKf,QAAQgsS,YAAY6G,gBAAiB9xS,EAAKixS,YAAYrtS,MAClG5D,EAAKf,QAAQgsS,YAAY8G,cAAiB/xS,EAAKixS,YAAYrtS,KAAe4S,GAAU6zR,GAAe3tS,IACpGwwB,GAASxwB,EAAEg5E,cAAeh5E,EAAEw2B,eAAiBx2B,EAAE2C,UAAW2iE,GAC1D90C,GAASxwB,EAAEg5E,cAAeh9E,EAAMwY,wBAO/BxY,EAAM4C,QAAQye,QAAQoB,OAASze,EAAEs1S,YAAct1S,EAAEw2B,gBAAkBm3Q,GAAe3tS,IACpFA,EAAEmkB,QAAU,GAAKnkB,EAAEokB,QAAU,GAC7BpkB,EAAEokB,QAAU85D,EAAQl2E,UACpBhI,EAAEmkB,QAAU+5D,EAAQ71E,UACpB/E,EAAKq9C,MAAMz5C,KAVP5D,EAAKq9C,MAAMz5C,GAAS,QACpB5D,EAAK6jD,UAAW,IATpBnnD,EAAEu1S,4BAsBVjG,iBAAkB,SAAStvS,GACvB,IACIutS,EAAevvS,EAAEgC,EAAEg5E,eAEvB,IAAIu0N,EAAa/lS,SAASI,GAAG8iS,GAA7B,CAKA,IAAI2C,GADJE,EAAeA,EAAa/8P,SAAS,OACVtnC,KAAKkhS,GAE5BiD,IAVOhyS,KAWFw0S,cAAcxC,EAAQ9gS,aAAc,KAIjD8iS,iBAAkB,SAASrvS,GACvB,IACIutS,EAAevvS,EAAEgC,EAAEg5E,gBAElB20N,GAAe3tS,IAAMutS,EAAa3lS,GAAG6iS,IAH/BpvS,KAIFm6S,aAAajI,EAAa/8P,SAAS,QAIhDglQ,aAAc,SAASC,GACnB,IAAInyS,EAAOjI,KACP6xS,EAAkB5pS,EAAKwrS,mBACvBzB,EAAUoI,EAAUvsS,KAAKkhS,GAE7B,GAAIiD,EAAS,QACF/pS,EAAKusS,cAAcxC,EAAQ9gS,YAClC,IAAImpS,EAAcxI,EAAgB97Q,KAAK07Q,GAAoBO,IAE3Dj5Q,YAAW,WACP,GAAI9wB,EAAKf,QAAQgsS,YACbjrS,EAAKkuS,kBAAkBiE,QAEvB,GAAIz3S,EAAEizB,cAAc3tB,EAAKusS,eAAgB,CACrC,IAAI8F,EAAaryS,EAAKsyS,YAAYH,GAClCnyS,EAAKwwS,mBAAmB6B,QAExBryS,EAAKq9C,MAAM+0P,GAAa,KAGjC,KAIXlE,kBAAmB,SAAS1iS,GACxB,IAAIxL,EAAOjI,KACP6xS,EAAkB5pS,EAAKwrS,mBAC3B9wS,EAAEgvS,GAAel+R,EAASo+R,IAAkB7uS,MAAK,WAC7C,IAAIm1S,EAActG,EAAgB97Q,KAAK07Q,GAAoBzxS,KAAK6N,KAAKkhS,KACrE9mS,EAAKq9C,MAAM6yP,GAAa,OAIhCoC,YAAa,SAAS9mS,GAClB,IACImlS,EAASjH,GAAel+R,EADNzT,KAAKyzS,oBAE3B,OAAOmF,EAAOA,EAAOpxS,OAAS,IAAMiM,GAGxCglS,mBAAoB,SAAShlS,GACzB,IAAIxL,EAAOjI,KACP6xS,EAAkB5pS,EAAKwrS,mBACvBzB,EAAUv+R,EAAQ5F,KAAKkhS,GACvBoJ,EAActG,EAAgB97Q,KAAK07Q,GAAoBO,IAG3D,IAFAA,EAAUmG,EAAYhsS,SAAS0B,KAAKkhS,GACpC9mS,EAAKq9C,MAAM6yP,GAAa,GACjBnG,IAAY/pS,EAAKusS,cAAcxC,KAC9BmG,EAAYhsS,SAASI,GAAG4iS,IAG5BgJ,EAActG,EAAgB97Q,KAAK07Q,GAAoBO,IACvD/pS,EAAKq9C,MAAM6yP,GAAa,GACxBnG,EAAUmG,EAAYhsS,SAAS0B,KAAKkhS,IAI5ChtN,OAAQ,SAASp9E,GACb,IAAiB61S,EASaC,EAAYC,EAOtCC,EAhBA1yS,EAAOjI,KACPkH,EAAUe,EAAKf,QACfI,EAAS3E,EAAEhC,EAAM8nB,YAAY9jB,IAC7BulF,EAAgB5iF,EAAO,GACvB2wB,EAAW3wB,EAAO,GAAKA,EAAO,GAAG2wB,SAASlpB,cAAgB,GAC1D6rS,EAAwB,SAAZ3iR,GAAmC,UAAZA,GAAoC,UAAZA,GAAoC,SAAZA,EACnFmoM,EAAO94N,EAAO+E,QAAQ8hS,GACtBtiS,EAAUvE,EAAO+E,QAAQkjS,IACzBuH,EAAcjrS,EAAQ,GACtBssB,EAAOioM,EAAKt9M,KAAK,QACjB+3R,EAAavzS,EAAOwb,KAAK,QACzBg4R,EAAan4S,EAAE,kBAAkBmgB,KAAK,QACtCi4R,IAAY5iR,GAAQA,IAAS2iR,EAC7BE,EAAcD,KAAY5iR,EAAKhoB,MAAM,MACrC8qS,IAAkBJ,GAAcA,IAAeC,EAC/CjJ,EAAkB5pS,EAAKwrS,mBAG3B,IAAIvpN,GAAmBA,EAActkE,YAAekxR,EAApD,CAQA,IAJIn0S,EAAE2E,GAAQ+E,QAAQ,QAAQ+f,SAAS,8BACnCpsB,KAAKk7S,oBAAsBpE,GAGxB5sN,GAAiBA,EAActkE,YAAckxR,GAChD5sN,EAAgBA,EAActkE,WAGlC,IAAIjjB,EAAEunF,GAAe39E,GAljDN,qDAsjDf,GAAIV,EAAQugB,SAASs6Q,GACjB/hS,EAAEwE,qBADN,CAYA,GAPKxE,EAAEw2S,UAAWlzS,EAAKmzS,eAAe9zS,EAAQwvS,IAAiB8D,GAC3Dj2S,EAAEwE,iBAGNxE,EAAEw2S,SAAU,EAEZV,EAAa5uS,EAAQspC,SAASm6P,GAC1BuC,EAAiB,CACjB,IAAIwJ,EAAexvS,EAAQgC,KAAKmhS,GAC5BqM,IACAZ,EAAa5I,EAAgB97Q,KAAK27Q,GAAmB2J,KAM7D,GAHAX,EAAoBD,EAAWluS,GAAG,YAClCouS,EAAyBzzS,EAAQgsS,aAAewH,GAAqBzyS,EAAKixS,YAAYrtS,GAElF3E,EAAQmsS,gBAAkB0H,GAAUC,MAAkBP,EAAWjzS,QAAUmzS,GAAyB,CACpG9uS,EAAQsgB,YAAY+iR,GAAYtiS,IAAI,UACpC3E,EAAKyxS,cAAgBzxS,EAAKsxS,gBAAgB1tS,GAC1C,IAAImjC,EAAO/mC,EAAKqzS,cAAcl7E,EAAMn4N,EAAK4D,QAAS0jS,IAOlD,OANAtnS,EAAKkxS,cAAgBtH,EACrB5pS,EAAKq9C,MAAMtW,GACX/mC,EAAKkrS,SAAU,QACuB,GAAlC,cAAcx9R,QAAQhR,EAAEe,OACxBf,EAAEwE,kBAKN4xS,GAAUp2S,EAAE42S,UACZn7E,EAAK,GAAG92M,SAGLrhB,EAAKixS,YAAYrtS,KAAoC,IAAxB3E,EAAQgsS,aAA2BhsS,EAAQgsS,YAAY8G,cAAkBr5S,EAAM4C,QAAQkb,OAAW6zR,GAAe3tS,IAAMsD,EAAKixS,YAAYrtS,EAAQQ,QAAQkjS,QAIvLwL,GAAWH,GAAaK,GACzBt2S,EAAEwE,iBAGNlB,EAAKkrS,SAAU,EACfqH,EAAaC,EAAWluS,GAAG,YAAcsjF,EAAQD,GAC5C1oF,EAAQmsS,cAAgBmH,GAAc3qN,IAG3C5nF,EAAKuyS,GAAY3uS,OAGrByvS,cAAe,SAASz/Q,EAASzX,EAAKqB,GAClC,IAAIosR,EAAkB7xS,KAAKyzS,mBAC3B,GAAK5B,EAEE,CACH,IAAIx5Q,EApyChB,SAA6B5kB,EAASo+R,GAClC,IAAIx5Q,EAAU,GACVw3O,EAAa,SAAS7gO,GACtB,KAAOA,EAAKppB,aAAeisR,EAAgBtlS,GAAGyiC,EAAKppB,aAC/CyS,EAAQ12B,KAAKqtC,EAAKppB,YAClBopB,EAAOA,EAAKppB,YAGhB+sB,EAAOl/B,EAAQ,IAAMA,EACzBo8P,EAAWl9N,GAEX,IADA,IAAIxQ,EAAO9J,EAAQA,EAAQ7wB,OAAS,GAC7B7E,EAAEw/B,GAAM51B,GAAG6iS,KAEdz8P,EAAOs/P,GADYtvS,EAAEw/B,GAAMgT,SAAS,MACC08P,GAAiB,KAItDx5Q,EAAQ12B,KAAKgxC,GACbk9N,EAAWl9N,GACXxQ,EAAO9J,EAAQA,EAAQ7wB,OAAS,GAEpC,OAAO6wB,EA+wCemjR,CAAoB3/Q,EAASg2Q,GACvCt7R,EAAS,GAUb,OATA5T,EAAE01B,GAASr1B,MAAK,WACZ,IAAImJ,EAASxJ,EAAE3C,MACf,GAAImM,EAAOI,GAAG6X,GACV,OAAO,EAEPjY,EAAOI,GAAGkZ,IACVlP,EAAO5U,KAAK3B,SAGb2C,EAAE4T,GAbT,OAAOslB,EAAQ2L,aAAapjB,EAAKqB,IAiBzC21R,eAAgB,SAAS9zS,EAAQwvS,GAG7B,IACI2E,EADAnK,GAFJhqS,EAASA,EAAOiF,GAAG,WAAajF,EAASA,EAAO+E,QAAQ,YAE7BwB,KAAK,iBAG5ByjS,IACAmK,EAAsBz7S,KAAK07S,cAAcp0S,GACzCgqS,EAAc/mS,KAAKvK,KAAMy7S,IAG7B,IAAIE,EAA+BF,GAAuBA,EAAoBpyS,qBAC1EuyS,EAA2B57S,KAAKu3S,cAAc,CAAEvoQ,KAAM8nQ,EAAapxS,KAAMq2E,IAC7E,OAAO4/N,GAAgCC,GAG3CF,cAAe,SAASp0S,GAYpB,MAXgB,CACZgD,OAAQtK,KACRsH,OAAQA,EACR8B,mBAAmB,EACnBD,eAAgB,WACZnJ,KAAKoJ,mBAAoB,GAE7BC,mBAAoB,WAChB,OAAOrJ,KAAKoJ,qBAMxB+qS,eAAgB,SAASxvS,GACrB,IAAIsD,EAAOjI,KACPsH,EAAS3E,EAAEgC,EAAE2C,QAAQ+E,QAAQ,QAAQ+f,SAAS,4BAA8BnkB,EAAKizS,oBAAsBv2S,EAAE2C,OAEzG6tB,IAAUltB,EAAKwrS,oBAAsBxrS,EAAK4D,SAAS,GAAIvE,GACvDW,EAAKizS,oBAAsBt4S,EAI/BqF,EAAKkrS,SAAU,GAGnBv9M,OAAQ,SAASjxF,GACb,IAAIsD,EAAOjI,KACPsH,EAAS3C,EAAE2C,OACX+xS,EAAYpxS,EAAKqxS,aACjB3mG,EAASv5L,IAEb,GAAI9R,GAAUW,EAAKmE,QAAQ,KAAOzJ,EAAE2E,GAAQiF,GAAG,mBAI3C,OAHA5H,EAAEs1B,kBACFt3B,EAAE2E,GAAQ+E,QAAQ,cAAcA,QAAQ,iBAAiBA,QAAQ,WAAWkY,SAASsnR,QACrF5jS,EAAKmE,QAAQhC,QAAQ,SAIrBuoM,IAAWhuM,EAAEg5E,gBACT07N,EAAU7xS,OACVS,EAAK4zS,WAAW,GAAIxC,GACZpxS,EAAKyxS,eACbzxS,EAAK4zS,WAAW,GAAI5zS,EAAKmE,QAAQ+oC,WAAWjrC,WAKxDg5G,SAAU,SAASv+G,GACf,IAGI2C,EACAw0S,EACA7xO,EALAhiE,EAAOjI,KACPuR,EAAM5M,EAAEwiC,QACRkyQ,EAAYpxS,EAAKyxS,cAIjBp7R,EAAQ3d,EAAM4C,QAAQ+a,MAAMrW,EAAKmE,SAErC,GAAIzH,EAAE2C,QAAU3C,EAAEg5E,eAAiBpsE,GAAO2Y,EAAKM,IAA/C,CAYA,GARK6uR,IACDA,EAAYpxS,EAAKyxS,cAAgBzxS,EAAKqxS,cAG1CwC,EAAoB7zS,EAAK8zS,uBAAuB1C,GAChDpvO,EAAchiE,EAAK0xS,iBAAiBN,GACpCpxS,EAAKywS,eAAgB,EAEjBnnS,GAAO2Y,EAAKS,MACZrjB,EAASW,EAAKqW,EAAQ,YAAc,cAAc+6R,EAAWyC,EAAmB7xO,QAC7E,GAAI14D,GAAO2Y,EAAKO,KACnBnjB,EAASW,EAAKqW,EAAQ,aAAe,aAAa+6R,EAAWyC,EAAmB7xO,QAC7E,GAAI14D,GAAO2Y,EAAKU,KACnBtjB,EAASW,EAAK+zS,UAAU3C,EAAWyC,EAAmB7xO,QACnD,GAAI14D,GAAO2Y,EAAKQ,GACnBpjB,EAASW,EAAKg0S,QAAQ5C,EAAWyC,EAAmB7xO,QACjD,GAAI14D,GAAO2Y,EAAKY,KACnB7iB,EAAK4zS,WAAWxC,EAAWA,EAAUltS,SAASgpC,SAAS,YAAYjrC,SACnEvF,EAAEwE,sBACC,GAAIoI,GAAO2Y,EAAKW,IACnB5iB,EAAK4zS,WAAWxC,EAAWA,EAAUltS,SAASgpC,SAAS,YAAYhT,QACnEx9B,EAAEwE,sBACC,GAAIoI,GAAO2Y,EAAKM,IACnBljB,EAASW,EAAKi0S,SAAS7C,EAAWyC,QAC/B,GAAIvqS,GAAO2Y,EAAKK,OAAShZ,GAAO2Y,EAAKa,UACxCzjB,EAAS+xS,EAAUlkQ,SAAS,YACjB3tC,OAAS,IAChBS,EAAK85E,OAAO,CAAEz6E,OAAQA,EAAO,GAAI6B,eAAgB,aAAeoyS,UAAU,IACtEtxO,IAAgBovO,EAAUjtR,SAASs6Q,IACnCz+R,EAAKspF,KAAK8nN,GACVpxS,EAAK4zS,WAAWxC,EAAWpxS,EAAKuuS,mBAAmB6C,GAAWlkQ,WAAWpf,KAAK,MAAM7rB,UAC7EmvS,EAAU9sS,GAAG,OAAoC,qBAA3B8sS,EAAUv2R,KAAK,QAC5Cu2R,EAAUtjR,KAAK,eAAejT,KAAK,WAAW,GAE9C7a,EAAKk0S,iBAAiB9C,EAAWpxS,EAAKsxS,gBAAgBF,UAG3D,GAAI9nS,GAAO2Y,EAAKI,IAInB,OAHAhjB,EAASW,EAAKsxS,gBAAgBF,GAC9BpxS,EAAK4zS,WAAWxC,EAAW/xS,QAC3BW,EAAK0rS,sBAILrsS,GAAUA,EAAO,KACjB3C,EAAEwE,iBACFxE,EAAEs1B,qBAIVq/Q,WAAY,WACR,OAAOt5S,KAAKoM,QAAQ2pB,KAAK,mCAAmCE,OAAO,aAGvE8lR,uBAAwB,SAAS/sQ,GAC7B,IAAIotQ,EAAiBp8S,KAAKoM,QAAQggB,SAAS,mBAE3C,OAAK4iB,EAAKxnC,QAGHwnC,EAAK7iC,SAASigB,SAAS,iBAFnBgwR,GAKfzC,iBAAkB,SAAS3qQ,GACvB,SAAKA,GAASA,EAAKxnC,QAAWwnC,EAAK,GAAGtZ,YAG/BsZ,EAAKmG,SAAS,2DAA2D3tC,OAAS,KAClFwnC,EAAKnhC,KAAKmhS,MAAwBhvS,KAAKyzS,mBAAmBt+P,SAASu8P,GAAmB1iQ,EAAKnhC,KAAKmhS,OAG3G6M,WAAY,SAAS7sQ,EAAMqtQ,GACvB,IAAIp0S,EAAOjI,KACP2vB,EAAK1nB,EAAKmrS,QAEVpkQ,EAAKxnC,QAAU60S,EAAS70S,QACxBwnC,EAAK7iB,YAAY0/Q,GAGjBwQ,EAAS70S,SACL60S,EAAS,GAAG1sR,KACZA,EAAK0sR,EAAS,GAAG1sR,IAGrB0sR,EAAS93R,SAASsnR,GAClB5jS,EAAKyxS,cAAgB2C,EAEjB1sR,IACA1nB,EAAK4D,QAAQylB,WAAW,yBACxB3uB,EAAE,IAAMgtB,GAAI2B,WAAW,MACvB+qR,EAASv5R,KAAK,KAAM6M,GACpB1nB,EAAK4D,QAAQiX,KAAK,wBAAyB6M,IAE/C1nB,EAAKq0S,cAAcD,KAI3BF,iBAAkB,SAASntQ,EAAMqtQ,GAC7Br8S,KAAK67S,WAAW7sQ,EAAMqtQ,IAG1B9C,gBAAiB,SAASvqQ,GACtB,OAAIhvC,KAAKk5S,YAAYlqQ,GACVA,EAEAhvC,KAAKs7S,cAActsQ,EAAMmgQ,EAAc,aAAahtQ,QAInE+2Q,YAAa,SAASlqQ,GAClB,OAAOA,EAAK7iC,SAASigB,SAAS6hR,IAGlCsO,WAAY,SAASvtQ,EAAM8sQ,EAAmB7xO,GAC1C,IACIoyO,EACAG,EACA3K,EAHA5pS,EAAOjI,KAKX,GAAK87S,GAME,GAAI7xO,IAAgBj7B,EAAK5iB,SAASs6Q,GACrCz+R,EAAKspF,KAAKviD,GACVqtQ,EAAWp0S,EAAKuuS,mBAAmBxnQ,GAAMmG,WAAWpf,KAAK,MAAM7rB,aAC5D,GAAgC,cAA5BjC,EAAKf,QAAQsoI,YAA6B,CAGjD,GAFAgtK,EAAav0S,EAAKsxS,gBAAgBvqQ,GAClC6iQ,EAAkB5pS,EAAKwrS,mBACF,CACjB,IAAI2G,EAAYjI,GAAUqK,EAAY3K,GACtC5pS,EAAKkuS,kBAAkBiE,GAE3BnyS,EAAKq9C,MAAMk3P,GACXH,EAAWG,EAAWC,QAAQjN,GAAeE,IAAmB53Q,GAAG,SAhBnEukR,EAAWrtQ,EAAKytQ,QAAQjN,GAAeE,IAAmB53Q,GAAG,IAC/CtwB,SACV60S,EAAWrtQ,EAAKyyL,QAAQ+tE,GAAeE,IAAmBvtQ,QAE9Dl6B,EAAKq9C,MAAMtW,GAsBf,OAPIqtQ,IAAaA,EAAS70S,OACtB60S,EAAWp0S,EAAKmE,QAAQ+oC,SAAS,WAAWjrC,QACpCmyS,IACRA,EAAW,IAGfp0S,EAAK4zS,WAAW7sQ,EAAMqtQ,GACfA,GAGXK,UAAW,SAAS1tQ,EAAM8sQ,GACtB,IACIO,EACAxK,EAFA5pS,EAAOjI,KA2BX,OAvBK87S,GAODO,EAAWrtQ,EAAK7iC,SAASE,QAAQ,WACjCwlS,EAAkB5pS,EAAKwrS,oBAClB4I,EAAS70S,QAAUqqS,IACpBwK,EAAWpK,GAAgBjjQ,EAAK7iC,SAAU0lS,IAE9C5pS,EAAKq9C,MAAM+2P,GACPp0S,EAAKixS,YAAYmD,IAAyC,cAA5Bp0S,EAAKf,QAAQsoI,cAC3C6sK,EAAWA,EAAS56E,QAAQ+tE,GAAeE,IAAmB53Q,GAAG,OAbrEukR,EAAWrtQ,EAAKyyL,QAAQ+tE,GAAeE,IAAmB53Q,GAAG,IAC/CtwB,SACV60S,EAAWrtQ,EAAKytQ,QAAQjN,GAAeE,IAAmBvtQ,QAE9Dl6B,EAAKq9C,MAAMtW,IAaVqtQ,EAAS70S,SACV60S,EAAWp0S,EAAKmE,QAAQ+oC,SAAS,WAAWhT,QAGhDl6B,EAAK4zS,WAAW7sQ,EAAMqtQ,GACfA,GAGXL,UAAW,SAAShtQ,EAAM8sQ,EAAmB7xO,GACzC,IACIoyO,EADAp0S,EAAOjI,KAGX,GAAK87S,EAQDO,EAAWrtQ,EAAKytQ,QAAQjN,GAAeE,IAAmB53Q,GAAG,OARzC,CACpB,IAAKmyC,GAAej7B,EAAK5iB,SAASs6Q,GAC9B,OAEAz+R,EAAKspF,KAAKviD,GACVqtQ,EAAWp0S,EAAKuuS,mBAAmBxnQ,GAAMmG,WAAWpf,KAAK,MAAM7rB,QAavE,OAPKmyS,EAAS70S,QAAUwnC,EAAKxnC,OACzB60S,EAAWrtQ,EAAK7iC,SAASgpC,SAAS,YAAYjrC,QACtC8kC,EAAKxnC,SACb60S,EAAWp0S,EAAKmE,QAAQ+oC,SAAS,WAAWjrC,SAGhDjC,EAAK4zS,WAAW7sQ,EAAMqtQ,GACfA,GAGXJ,QAAS,SAASjtQ,EAAM8sQ,GACpB,IACIO,EAEJ,GAAKP,EAaL,QAVIO,EAAWrtQ,EAAKyyL,QAAQ+tE,GAAeE,IAAmB53Q,GAAG,IAGnDtwB,QAAUwnC,EAAKxnC,OACzB60S,EAAWrtQ,EAAK7iC,SAASgpC,SAAS,YAAYhT,OACtC6M,EAAKxnC,SACb60S,EAZOr8S,KAYSoM,QAAQ+oC,SAAS,WAAWhT,QAZrCniC,KAeN67S,WAAW7sQ,EAAMqtQ,GACfA,GAGXC,cAAe,SAASttQ,GACpB,IAAI/mC,EAAOjI,KACX,GAAIiI,EAAKf,QAAQ++Q,YAAcj3O,GAAQA,EAAKxnC,OAAQ,CAChD,IAUIm1S,EAVAnK,EAAKxjQ,EAAK7iC,SACVooS,IAAe/B,EAAGpmR,SAAS6hR,IAAoC,cAA5BhmS,EAAKf,QAAQsoI,YAChDotK,EAAYrI,EAAe,aAAe,YAC1C3iR,EAAU2iR,EAAe5zS,EAAMqL,YAAcrL,EAAMuL,aACnD2wS,EAAsBrK,EAAGoK,KACzBE,EAAWlrR,EAAQod,GACnB+tQ,EAAa/tQ,EAAK,GAAGulQ,EAAe,aAAe,aACnDyI,EAASprR,EAAQ4gR,GACjBgG,EAAgBhG,EAAGr+M,SAASw7M,IAC5BsN,EAAmBzE,EAAchxS,OAASoqB,EAAQ4mR,EAActuS,SAAW,EAS/E,GANI2yS,EAAsBG,EAASD,EAAaD,EAAWG,EACvDN,EAAeI,EAAaD,EAAWE,EAASC,EACzCJ,EAAsBE,EAAaE,IAC1CN,EAAeI,EAAaE,IAG3Bn0S,MAAM6zS,GAAe,CACtB,IAAI7G,EAAY,GAChBA,EAAU8G,GAAaD,EACvBnK,EAAGr+J,SAASrtH,QAAQgvR,EAAW,OAAQ,UAAU,WAC7C7tS,EAAK+sS,qBAAqBxC,EAAIgG,EAActuS,QAASsuS,EAAcr2Q,OAAQoyQ,SAM3F2H,SAAU,SAASltQ,EAAM8sQ,GACrB,IACIO,EAAUhE,EADVpwS,EAAOjI,KAGX,OAAK87S,GAKuB,KAFxBO,EAAWrtQ,EAAK7iC,SAASE,QAAQ,YAEpB7E,SACT6wS,EAAUrpQ,EAAK3iC,QAAQ,iBAAiBwB,KAAK,SAC7CwuS,EAAWp0S,EAAKmE,QAAQ2pB,KAAK,6BAA+BsiR,EAAU,OAG1EpwS,EAAKq9C,MAAM+2P,GACXp0S,EAAK4zS,WAAW7sQ,EAAMqtQ,GAGnBA,GAbIrtQ,GAgBfwnQ,mBAAoB,SAASxnQ,GACzB,IAAIkjQ,EAAeljQ,EAAKjZ,KAAK,iBACzB3pB,EAAUpM,KAAKyzS,mBAInB,OAHKvB,EAAa1qS,QAAU4E,IACxB8lS,EAAeC,GAAUnjQ,EAAM5iC,IAE5B8lS,GAGXqF,cAAe,SAAS5yS,GAGpB,OAFW3E,KAECoK,QAAQzF,EAAEe,KAAM,CAAEA,KAAMf,EAAEe,KAAMspC,KAAMrqC,EAAEqqC,QAGxD4kQ,cAAe,SAASjvS,GACpB,IAAIsD,EAAOjI,KACPgvC,EAAOrsC,EAAEhC,EAAM8nB,YAAY9jB,IAAI0H,QAAQkjS,IAEvCvgQ,EAAK5iB,SAASs6Q,IAIlB3tQ,YAAW,WACP9wB,EAAK4zS,WAAW,GAAI7sQ,GAChBA,EAAKmG,SAAS,cAAc,IAC5BnG,EAAK7iC,SAASE,QAAQ,WAAW8f,YAAY0/Q,KAElD,MAGPiH,YAAa,SAAS5rS,GACdA,GAAY,cAAeA,IAAaA,EAAQoqF,YAChDpqF,EAAQoqF,UAAY,CAAEC,KAAM,CAAE/qE,QAAS,IAAM8+B,MAAO,CAAEn4C,MAAM,EAAMqZ,QAAS,OAGnFqlD,YAAa,SAAS3kE,GAClB,IAAIe,EAAOjI,KACP8wB,EAAa5pB,EAAUA,EAAQ4pB,WAAa7oB,EAAKf,QAAQ4pB,WAExDA,IAILA,EAAa7tB,EAAQ6tB,GAAc,CAAEjjB,KAAMijB,GAAeA,EAE1D7oB,EAAKi1S,oBAEApsR,EAAWlC,SACZkC,EAAWlC,OAAS,CAChB,CAAE3J,MAAO,OACT,CAAEA,MAAO,QACT,CAAEA,MAAO,OACT,CAAEA,MAAO,YACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,YACT,CAAEA,MAAO,aACT,CAAEA,MAAO,QACT,CAAEA,MAAO,eACT,CAAEA,MAAO,WACT,CAAEA,MAAO,WACT,CAAEA,MAAO,SACT,CAAEA,MAAO,YAIjBhd,EAAK6oB,WAAa9iB,EAAuBg5C,OAAOl2B,GAEhD7oB,EAAKk1S,kBAELl1S,EAAK6oB,WAAWq0C,UAGpBg4O,gBAAiB,WACbn9S,KAAKytR,gBAAkBztR,KAAK4d,QAAQpU,KAAKxJ,MACzCA,KAAKo9S,cAAgBp9S,KAAKq9S,OAAO7zS,KAAKxJ,MAEtCA,KAAK8wB,WAAWtnB,KAAKszC,EAAQ98C,KAAKytR,iBAClCztR,KAAK8wB,WAAWtnB,KAAKohD,EAAO5qD,KAAKo9S,gBAGrCF,kBAAmB,WACf,IAAIpsR,EAAa9wB,KAAK8wB,WAElBA,IACAA,EAAW7mB,OAAO6yC,EAAQ98C,KAAKytR,iBAC/B38P,EAAW7mB,OAAO2gD,EAAO5qD,KAAKo9S,iBAItCC,OAAQ,aAIRC,UAAW,SAASjwP,GAEhB,OADqBrtD,KAAKyzS,oBAAsBzzS,KAAK6L,SAC/BkqB,KAAK,IAAMp1B,EAAMmiB,KAAK,OAAS,IAAMuqC,EAAM,MAGrEzvC,QAAS,SAASvc,GACd,IAAI4G,EAAOjI,KACPkjC,EAAO7hC,EAAG6hC,KACV8J,EAAS3rC,EAAG2rC,OACZisF,EAAgB/1F,EAAOj7B,EAAKq1S,UAAUp6Q,EAAKmqB,KAAOplD,EAAK4D,QACvD0xS,EAAgBl8S,EAAG+yB,MACnBrb,EAAQ1X,EAAG0X,MACXykS,EAAcv1S,EAAKw1S,YAAYj0S,KAAKvB,GACpCy1S,EAAcz1S,EAAK01S,YAAYn0S,KAAKvB,GAE1B,OAAV+kC,EACA/kC,EAAK21S,aAAaL,EAAexkS,EAAOkgH,GACvB,UAAVjsF,EACPuwQ,EAAcj8S,QAAQo8S,GACL,cAAV1wQ,EACPuwQ,EAAcj8S,QAAQk8S,GACJ,eAAXxwQ,EACP/kC,EAAK8xC,OAAO14C,EAAG+yB,MAAO6kG,GAEtBj5H,KAAKwzS,YAGTxzS,KAAKoK,QAAQy6N,GAAW,CAAE71L,KAAMiqF,EAAe5kG,SAAU6O,KAG7D06Q,aAAc,SAASxpR,EAAOrb,EAAO5M,GACjC,IACIoqS,EAAgBpqS,EAAO4pB,KAAKy5Q,IAAc13Q,GAAG/e,GAE7Cw9R,EAAc/uS,OAHPxH,KAIFqxE,aAAaj9C,EAAOmiR,GAJlBv2S,KAMF+5C,OAAO3lB,EAAOjoB,IAI3BwxS,YAAa,SAAS3uQ,GAClB,IACInjC,EADO7L,KACQs9S,UAAUtuQ,EAAKqe,KADvBrtD,KAEN+2B,OAAOlrB,IAGhB4xS,YAAa,SAASzuQ,GAClB,IAAI/mC,EAAOjI,KACP6L,EAAU5D,EAAKq1S,UAAUtuQ,EAAKqe,KAC9BwwP,EAAchyS,EAAQw5D,OACtBz/C,EAAaopB,EAAKppB,aAEtB3d,EAAK8uB,OAAOlrB,GAERgyS,EAAYr2S,OACZS,EAAKopE,aAAariC,EAAM6uQ,GAExB51S,EAAK8xC,OAAO/K,EAAMppB,GAAc3d,EAAKq1S,UAAU13R,EAAWynC,OAIlEqlP,WAAY,WACR,IAEInrS,EAAG0d,EAAOwmD,EADVvkE,EADOlH,KACQkH,QAEf2E,EAHO7L,KAGQ6L,QAEnB,IAAKtE,KAAKunE,GACN7pD,EAAQ/d,EAAQ4nE,GAASvnE,IACzBkkE,EAAY5/D,EAAQiX,KAAKniB,EAAMmiB,KAAKvb,EAAI,YAEnC0d,GAASwmD,IACVxmD,EAAQwmD,GAGPxmD,IACDA,EAAQ1d,GAGPtE,EAAQgiB,KACTA,EAAQ,CAACA,IAGb/d,EAAQ4nE,GAASvnE,IAAM0d,GAI/B64R,eAAgB,SAASzvP,GACrB,IAAI0vP,EAAgB/9S,KAAKkH,QAAQ4nE,GAASzgB,KAAe,GACrDvzC,EAAQijS,EAAcv2S,OAE1B,OAAc,IAAVsT,EACO,SAAUk0B,GAAQ,OAAOA,EAAKqf,IAE9B,SAAUrf,GACb,IAAIyoO,EAAS90Q,EAAE2X,IAAIyjS,EAAep9S,EAAMmuB,QACxC,OAAIkgB,EAAK07B,MACE+sM,EAAOp0Q,KAAK8S,IAAI64B,EAAK07B,QAAS5vD,EAAQ,IAAIk0B,GAE1CyoO,EAAO38P,EAAQ,GAAGk0B,KAMzC2jQ,WAAY,WACR,IAAIxhL,EAAWnxH,KAEXiI,EAAOjI,KACPkH,EAAUe,EAAKf,QACf82S,EAAgB/1S,EAAK61S,eAAet0S,KAAKvB,GAEzCf,EAAQ2I,UA/qEP,iBA+qE0B3I,EAAQ2I,SACnC3I,EAAQ2I,SAAWA,EAAS3I,EAAQ2I,UAC5B3I,EAAQ2I,WAChB3I,EAAQ2I,SAAWA,GAAS,SAAUhC,GAClC,IAAI+yB,EAAOo9Q,EAAc,OAAdA,CAAsBnwS,EAAKmhC,MAKtC,YAJkC,IAArBnhC,EAAKmhC,KAAKo0L,UAAgD,IAAtBv1N,EAAKmhC,KAAKo0L,UACvDxiM,EAAOktC,EAAOltC,IAGV,kCAAoCA,EAAO,cAI3D34B,EAAKysS,UAAY,CACbnuP,QAAS12C,GAAS,SAAUhC,GACxB,IAAImhC,EAAOnhC,EAAKmhC,KACZivQ,EAAcD,EAAc,UAAdA,CAAyBhvQ,GAE3C,MAAQ,QADgBnhC,EAAKwiS,qBAAqBrhQ,EAAKp9B,OAASo9B,EAAKp9B,SAAWo9B,GAC1C,mBAAqBivQ,GAAe,IAAM,YAEpF/pP,MAAOrkD,GAAS,SAAUhC,GAAQ,MAAO,eAAkBA,EAAK+iS,qBAAqB/iS,EAAKqmD,OAAU,KAAQrmD,EAAK4iS,gBAAgB5iS,EAAKqmD,OAA7F,eACpBrmD,EAAK8iS,cAAc9iS,EAAKqmD,OAAU,SAAYrmD,EAAY,QAAI,iBACzEA,EAAKqwS,YAAYrwS,GAFc,iBAMzCswS,YAAatuS,GAAS,SAAUhC,GAC5B,IAAImhC,EAAOnhC,EAAKmhC,KACZ3gB,EAAM2vR,EAAc,MAAdA,CAAqBhvQ,GAC3B8+M,EAAWkwD,EAAc,WAAdA,CAA0BhvQ,GACrCohQ,EAAgB4N,EAAc,YAAdA,CAA2BhvQ,GAC3C6kH,EAAMxlI,EAAM,IAAM,OAEtB,MAAO,IAAMwlI,EAAM,WAAck8I,GAAUS,UAAUxhQ,GAAS,MAAQ3gB,EAAO,SAAWA,EAAM,IAAO,IAAM,MACtGy/N,EAAY,QAAWiiD,GAAUI,mBAAmBC,GAAkB,iBAAmBtiD,EAAW,OAAU,IAC/G38H,EAASujL,UAAU0J,OAAOpvQ,GAC1BmiF,EAASjqH,QAAQ2I,SAAShC,GAC1BA,EAAKg2G,MAAMh2G,GACX,KAAOgmJ,EAAM,OAErB7kH,KAAMn/B,GAAS,SAAUhC,GACrB,IAAImhC,EAAOnhC,EAAKmhC,KACZ06P,EAAO77R,EAAK67R,KACZx1O,EAAQrmD,EAAKqmD,MACbmP,EAAWx1D,EAAKw1D,SAChB46O,EAAcD,EAAc,UAAdA,CAAyBhvQ,GACvCqpQ,EAAU13S,EAAM8uB,OACpB,MAAO,cAAiBsgR,GAAUC,gBAAgB97O,EAAOllB,GAAS,MAASA,EAAKi7B,aAAej7B,EAAK5a,MAAS,kBAAoBikR,EAAU,IAAM,IAAM,IAAOtI,GAAUG,kBAAkBlhQ,EAAKp9B,OAASo9B,EAAKp9B,SAAWo9B,GAAS,sBAAwBA,EAAK5a,MAAQ,uBAAyB,MACpQ,IAAjB4a,EAAK9nB,QAAoB,uBAAyB,IACxDvmB,EAAMmiB,KAAK,OAAS,KAAQksB,EAAQ,IAAI,MACvCA,EAAK5a,OAAS4a,EAAK5a,MAAM5sB,OAAS,EAC9BwnC,EAAK0hQ,SACF,wBACE,yBACJ,IACN,KACO1hQ,EAAKopF,WAAcppF,EAAKuX,QAAiD,GAAvC4qE,EAASujL,UAAUyJ,YAAYtwS,KACtEmhC,EAAKi7B,aAAej7B,EAAK5a,MACtB,GAAMivC,EAAS,CAAEjvC,MAAO4a,EAAK5a,MAAOs1Q,KAAMA,EAAMx1O,MAAO,CAAEw8O,SAAU1hQ,EAAK0hQ,UAAY2H,QAASA,IAC3FrpQ,EAAKuX,SAAWvX,EAAKs0N,YAAc26C,EACrC,GAAMpwS,EAAKwvI,cAAcxvI,GACxB,IAEN,WAER8mS,aAAc9kS,GAAS,SAAUof,GACzB,IAAIglB,EAAYhlB,EAAIglB,UAEpB,MAAO,iIAAmIA,EAAY,uBACtJtzC,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAO,aAAerjD,EAAYmjD,UAAW,kBACjE,aAGJysB,MAAOh0G,GAAS,SAAUof,GACPA,EAAI+f,KAAf,IACIklB,EAAQjlC,EAAIilC,MAEhB,MAAQ,wDAA2DvzD,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAMpjC,EAAM5hB,WAAa,iBAAmB,kBAAmB8kD,UAAW,6BAAiC,aAEtMgnN,OAAQvuS,GAAS,SAAUhC,GACvB,IAAIy4R,EAAiB0X,EAAc,iBAAdA,CAAgCnwS,GACrD,OAAIy4R,EACQ,yBAA2BA,EAAiB,YAEjD,MAEX/5O,MAAO18C,GAAS,WAAc,MAAO,QAI7CknS,WAAY,SAAS7vS,GACjB,IAAIe,EAAOjI,KACXkH,EAAUnE,EAAO,CAAE2mS,KAAMzhS,EAAMisD,MAAO,IAAMhtD,GAE5C,IAAIqlD,EAAQtkD,EAAKysS,UAAUnoP,MACvBvd,EAAO9nC,EAAQ8nC,KAEnB,OAAO/mC,EAAKysS,UAAU1lQ,KAAKjsC,EAAOmE,EAAS,CACvCkxH,UAAWppF,EAAKopF,UAAYnwH,EAAKysS,UAAUt8K,UAAY7rE,EACvD6xP,OAAQn2S,EAAKysS,UAAU0J,OACvBD,YAAal2S,EAAKysS,UAAUyJ,YAC5B9gK,cAAep1I,EAAKo1I,cACpBx5B,MAAO70E,EAAK5a,OAAS4a,EAAKuX,SAAWvX,EAAK/mC,EAAKf,QAAQm3S,iBAAiB,IAAMp2S,EAAKysS,UAAU7wL,MAAQt3D,EACrG8W,SAAUp7D,EAAK4uS,YAAYrtS,KAAKvB,IACjC8nS,MAGP8G,YAAa,SAAS3vS,GAIlB,OAHWlH,KACU00S,WAAaxtS,EAAQwiS,KAAKgL,WAE9BxgP,MAAMnxD,EAAO,CAC1Bm7S,YAAa,SAASh3S,GAOlB,IANA,IAAI4I,EAAO,GACPvI,EAAI,EACJ6sB,EAAQltB,EAAQktB,MAChB/D,EAAM+D,EAAQA,EAAM5sB,OAAS,EAC7B0sD,EAAQnxD,EAAO,CAAEyE,OAAQ6oB,GAAOnpB,EAAQgtD,OAErC3sD,EAAI8oB,EAAK9oB,IACZuI,GAAQ5I,EAAQwiS,KAAKqN,WAAWh0S,EAAOmE,EAAS,CAC5CgtD,MAAOA,EACPllB,KAAMjsC,EAAO,CAAEgW,MAAOxR,GAAK6sB,EAAM7sB,OAIzC,OAAOuI,IAEZ5I,EAAS6oS,MAGhB1yJ,cAAe,SAASn2I,GACpB,OAAOA,EAAQwiS,KAAKgL,UAAUnuP,QAAQxjD,EAAOmE,EAAS6oS,QAI1DuO,GAAc7L,GAAK1vS,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEXyyS,GAAK1qS,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEjCe,EAAK4D,QAAQiX,KAAK+sR,GAAM,QAExB5nS,EAAKs2S,QAAU59S,EAAM8uB,OAAOzkB,UAAU,EAAG,GAEzC/C,EAAKX,OAAS3E,EAAEsF,EAAKf,QAAQI,QAE7BW,EAAKmgS,SACLngS,EAAKu2S,SAGTxL,cAAe,SAAS9rS,GACpB,IAAIe,EAAOjI,KACPkH,EAAQ++Q,aAAeh+Q,EAAKwrS,qBAC5BxrS,EAAKusS,cAAgB,GAErBvsS,EAAKgtS,gBAAkBhtS,EAAK4D,QAAQM,SAASI,GAAG8iS,GAAmCpnS,EAAK4D,QAAQ4yS,OAAOrP,GAA8BnnS,EAAK4D,SACrImgB,KAAK,gCAAkC9kB,EAAQsoI,YAAc,YAAYrjI,SAE9C,cAA5BlE,EAAKf,QAAQsoI,aACb+iK,GAAyBtqS,EAAK4D,SAG9B3E,EAAQimC,WACRjmC,EAAQimC,SAAWxqC,EAAEuE,EAAQimC,UAC7BjmC,EAAQimC,SAAS4M,OAAO9xC,EAAKgtS,iBAGjChtS,EAAK4wS,eAAiB5wS,EAAK4D,QAAQ,GAAGY,MAAME,OAC5C1E,EAAK4rP,cAAgB5rP,EAAK4D,QAAQ,GAAGY,MAAMO,QAInD9F,QAAS,CACL9E,KAAM,cACN6zB,OAAQ,KACRgtF,OAAQ,cACRusB,YAAa,WACbkvK,eAAe,EACf3sN,kBAAkB,EAClBzqF,OAAQ,OACRsxC,OAAQh2C,EACRkK,SAAUlK,GAGdyH,OAAQ,CACJulF,EACAC,EACAE,EACAD,EACA/T,GAGJxqD,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KAEXyyS,GAAK1qS,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAE9Be,EAAKX,OAAO2xB,IAAIhxB,EAAKg7G,OAASpyB,EAAK5oF,EAAKs2S,QAASt2S,EAAK02S,YAElD12S,EAAKq2E,YACLr2E,EAAKq2E,WAAWt8E,UAGpBiG,EAAKX,OAAS3E,EAAEsF,EAAKf,QAAQI,QACzBJ,EAAQsoI,aAAevnI,EAAKirF,MAAM9mF,QAAQ,IAC1CnE,EAAKirF,MAAMrnF,QAAQqxP,SAGvBj1P,EAAKu2S,QAEL/L,GAAK1qS,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,IAGlClF,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAKX,OAAO2xB,IAAIhxB,EAAKf,QAAQ+7G,OAASpyB,EAAK5oF,EAAKs2S,SAChD5tN,EAAiB13D,IAAIt4B,EAAM4C,QAAQ2lB,UAAY2nE,EAAK5oF,EAAKs2S,QAASt2S,EAAK22S,aAEnE32S,EAAKq2E,YACLr2E,EAAKq2E,WAAWt8E,UAGpBywS,GAAK1qS,GAAG/F,QAAQuI,KAAKtC,GAEjBA,EAAKirF,OACLjrF,EAAKirF,MAAMlxF,WAInBuvF,KAAM,SAASnsF,EAAGjB,GACd,IAAI8D,EAAOjI,KAIX,GAFAoF,EAAIzC,EAAEyC,GAAG,GAEL+vB,GAASltB,EAAK4D,QAAQ,GAAIlJ,EAAEyC,GAAG,KAAO6C,EAAK0xS,iBAAiBh3S,EAAEyC,IAC9DqtS,GAAK1qS,GAAGwpF,KAAKhnF,KAAKtC,EAAM7C,QAExB,IAA+D,IAA3D6C,EAAKsvS,cAAc,CAAEvoQ,KAAM/mC,EAAK4D,QAASnG,KAAMkqF,IAAmB,CAWlE,GAVI3nF,EAAKirF,MAAM5mF,WAAarE,EAAKf,QAAQ+uB,SACrChuB,EAAKirF,MAAM5tC,OAAM,GACjBr9C,EAAKirF,MAAMrnF,QAAQ4b,WAAU,IAG5Bxf,EAAK42S,0BACN52S,EAAK42S,wBAA0B52S,EAAK62S,WAAWt1S,KAAKvB,IAExDA,EAAKuB,KAAKumF,EAAU9nF,EAAK42S,yBAErB16S,IAAMvB,EAAa,CACnB,IAAIivS,EAAkB5pS,EAAKwrS,mBAC3B,GAAI5B,EAAiB,CACjB,IAAI90R,EAAS80R,EAAgB90R,SAC7B3X,GAAK2X,EAAO8O,KACZ1nB,GAAK4Y,EAAOqH,IAEhBnc,EAAKirF,MAAM9mF,QAAQe,OACnBlF,EAAK82S,yBAAyB35S,EAAGjB,GACjC8D,EAAKirF,MAAM3B,KAAKnsF,EAAGjB,QAEnB8D,EAAKirF,MAAMhsF,QAAQiqF,OAAU/rF,GAAQ6C,EAAKirF,MAAM/B,QAAWlpF,EAAKX,OAChEW,EAAKirF,MAAMrnF,QAAQ4b,WAAU,GAC7Bxf,EAAK82S,2BACL92S,EAAKirF,MAAM3B,OAGfZ,EAAiB13D,IAAIhxB,EAAKirF,MAAMhC,UAAWjpF,EAAKirF,MAAMzB,iBACtDd,EACK1nE,GAAGtoB,EAAM4C,QAAQ2lB,UAAY2nE,EAAK5oF,EAAKs2S,QAASt2S,EAAK22S,aAIlE,OAAO32S,GAGX62S,WAAY,WACR,IAAI72S,EAAOjI,KAEXiI,EAAKgC,OAAO8lF,EAAU9nF,EAAK42S,yBAC3B52S,EAAK4D,QAAQzB,QAAQ,UAGzB20S,yBAA0B,SAAS35S,EAAGjB,GAClC,IAAI8D,EAAOjI,KACPkzF,EAAQjrF,EAAKirF,MACbqhN,EAA2C,cAA5BtsS,EAAKf,QAAQsoI,YAE5BvnI,EAAKf,QAAQ++Q,aACbh+Q,EAAKmwS,kBAAkBllN,GAEvBA,EAAMrnF,QAAQM,SAASS,IAAI,CACvBE,SAAU,GACVH,OAAQ,KAGZumF,EAAMrnF,QAAQe,IAAI,CACdqgF,WAAY,SACZpgF,QAAS,GACTC,SAAU,KAGVynS,EACAtsS,EAAK+2S,eAAe9rN,EAAOpqF,MAAM1D,GAAKxC,EAAc,CAAEwzC,SAAS,EAAMhxC,EAAGA,EAAGjB,EAAGA,IAE9E8D,EAAK0wS,gBAAgBzlN,EAAOpqF,MAAM1D,GAAKxC,EAAc,CAAEwzC,SAAS,EAAMhxC,EAAGA,EAAGjB,EAAGA,IAGnF+uF,EAAMrnF,QAAQe,IAAI,CACdqgF,WAAY,GACZpgF,QAAS,OACTC,SAAU,aAGd7E,EAAKswS,wBAAwBrlN,EAAOqhN,GAAc,GAClDrhN,EAAMrnF,QAAQsoF,SAASw7M,IAAsBxiS,SAIrD6xS,eAAgB,SAAS9rN,EAAO98C,GAC5B,IAAI87P,EAAeh/M,EAAMrnF,QACrB+sS,EAAS1G,EAAajlS,IAAIilS,EAAa/lS,OAAOkjS,IAElDuJ,EAAO5rS,MAAMhN,KAAK6zP,eAAiB,IAEnC,IAAItxO,EAAW2wE,EAAML,UAAUz8C,GAC3B6oQ,EAAct8S,EAAE7B,QAAQkM,QACxBkyS,EAAkB38R,EAASvV,MAC3BmyS,EAAkB97S,KAAKuV,IAAI2J,EAASsJ,KAAM,GAC1Ce,EAAawpB,EAAU,EAAIg8P,GAAcpyS,KAAKyzS,mBAAmB,GAAI,cACrE/nR,EAAS/qB,EAAM8qB,WAAWymR,GAC1Bhf,EAAW+rB,EAAcvzR,EAAOG,KAAOH,EAAOI,MACrConQ,EAAWtmQ,EAAasyR,EAAkBC,GAGnDvG,EAAOhsS,IAAI,CAAE+f,SAAU,SAAU3f,MAAQkmR,EAAWisB,EAAkBvyR,EAAc,QAI5F04B,MAAO,WACH,IAAIr9C,EAAOjI,KAEPm1B,GAASltB,EAAK4D,QAAQ,GAAIlJ,EAAE0E,UAAU,IAAI,KAAOY,EAAK0xS,iBAAiBtyS,UAAU,IACjForS,GAAK1qS,GAAGu9C,MAAM/6C,KAAKtC,EAAMZ,UAAU,IAE/BY,EAAKirF,MAAM5mF,YACqD,IAA5DrE,EAAKsvS,cAAc,CAAEvoQ,KAAM/mC,EAAK4D,QAASnG,KAAMmqF,MAC/C5nF,EAAK8rS,mBACL9rS,EAAK4D,QAAQkqB,KAAK,IAAM9tB,EAAKmrS,SAAS9hR,WAAW,MACjDrpB,EAAKirF,MAAM5tC,QACXqrC,EAAiB13D,IAAIt4B,EAAM4C,QAAQ2lB,UAAY2nE,EAAK5oF,EAAKs2S,QAASt2S,EAAK22S,aACvE32S,EAAKgC,OAAO8xE,EAAQ9zE,EAAKm3S,oBACzBn3S,EAAKirF,MAAMhsF,QAAQiqF,OAAOvrD,UAM1C41H,aAAc,SAAS72J,GACnB,IAAYoY,EAAR1b,EAAKsD,EACLsD,EAAOjI,KACPkH,EAAUe,EAAKf,QACfI,EAAS3G,EAAM4C,QAAQkf,SAAW9f,EAAEtB,EAAGiG,QAAU3E,EAAEtB,EAAGs8E,eAEtDh5E,EAAEya,SACF/d,EAAKsD,EAAEya,OACJ4iE,MAAQr9E,EAAES,EAAEmd,SACflhB,EAAG4gF,MAAQt9E,EAAER,EAAEoe,UAGf4S,GAASltB,EAAK4D,QAAQ,GAAIlH,EAAEw2B,eAAiBx2B,EAAE2C,UAInDW,EAAKo3S,aAAeh+S,EAEpBA,EAAG8H,iBACH9H,EAAG64S,2BAEHjyS,EAAK4D,QAAQkqB,KAAK,YAAoB5J,YAAY0/Q,IAE7C3kS,EAAQ+uB,QAAU3uB,EAAOiF,GAAGrF,EAAQ+uB,UAAa/uB,EAAQ+uB,UACtD/uB,EAAQw3S,eACRz2S,EAAKirF,MAAMhsF,QAAQiqF,OAAS9vF,EAAGs8E,cAC/B11E,EAAKspF,KAAKlwF,EAAGs8E,iBAEb11E,EAAKirF,MAAMhsF,QAAQiqF,OAAS9vF,EAAGs8E,cAE3B11E,EAAKq3S,cACLviS,EAAS9U,EAAKX,OAAOyV,SACrB9U,EAAKspF,KAAKlwF,EAAG2gF,MAAQjlE,EAAO8O,KAAMxqB,EAAG4gF,MAAQllE,EAAOqH,MAEpDnc,EAAKspF,KAAKlwF,EAAG2gF,MAAO3gF,EAAG4gF,WAMvCs9N,cAAe,SAAS56S,GACpB,IAAIsD,EAAOjI,KACPsH,EAAS3E,EAAEgC,EAAEw2B,eAAiBx2B,EAAE2C,QAChCk4S,EAAal4S,EAAO+E,QAAQpE,EAAKX,OAAOme,UAAU,IAAMxd,EAAKX,OAAO,GACpE0nC,EAAO1nC,EAAO+E,QAAQmjS,IACtBr6P,EAAWltC,EAAK0xS,iBAAiB3qQ,GACjC6iQ,EAAkB5pS,EAAKwrS,mBACvBgM,EAActqR,GAASltB,EAAK4D,QAAQ,GAAIvE,EAAO,KAAQuqS,GAAmB18Q,GAAS08Q,EAAgB,GAAIvqS,EAAO,IAElHW,EAAKo3S,aAAe16S,EAEpB,IAAI+6S,EAA0B,IAAZ/6S,EAAEg9E,MAEhB15E,EAAKirF,MAAM5mF,YAAeozS,GAAeF,IAAgBA,KAAiBv3S,EAAKf,QAAQmsS,eAAiBl+P,GAAYsqQ,IAAiBA,KACjIA,GACAz/S,KAAKiK,OAAO8xE,EAAQ/7E,KAAKo/S,oBACzBn3S,EAAKuB,KAAKuyE,EAAQ9zE,EAAKm3S,qBAEvBn3S,EAAKq9C,UAKjBk5P,MAAO,WACH,IAAIv2S,EAAOjI,KACPkH,EAAUe,EAAKf,QACfI,EAASW,EAAKX,OAElBW,EAAK03S,cAAgB,KACrB13S,EAAK02S,WAAa12S,EAAKuzJ,aAAahyJ,KAAKvB,GACzCA,EAAK22S,YAAc32S,EAAKs3S,cAAc/1S,KAAKvB,GAC3CA,EAAKm3S,mBAAqBn3S,EAAKq9C,MAAM97C,KAAKvB,GAEtCX,EAAO,KACH3G,EAAM4C,QAAQkf,UAA8B,eAAlBvb,EAAQ+7G,SAClCh7G,EAAKq2E,WAAa,IAAI39E,EAAM++E,WAAWp4E,EAAQ,CAC3C2uB,OAAQ/uB,EAAQ+uB,OAChBsqD,gBAAgB,IAGpBt4E,EAAK03S,cAAgB,WAAa,OAAO,GAEzC13S,EAAKq2E,WAAW90E,KAAK,OAAQvB,EAAK02S,aAGlCz3S,EAAQ+uB,OACR3uB,EAAO2hB,GAAG/hB,EAAQ+7G,OAASpyB,EAAK5oF,EAAKs2S,QAASr3S,EAAQ+uB,OAAQhuB,EAAK03S,eAAiB13S,EAAK02S,YAEzFr3S,EAAO2hB,GAAG/hB,EAAQ+7G,OAASpyB,EAAK5oF,EAAKs2S,QAASt2S,EAAK03S,eAAiB13S,EAAK02S,YAG7Er3S,EAAO2hB,GAAG,WAAW,SAAUtkB,GACvBA,EAAEwiC,UAAYxmC,EAAMupB,KAAKiB,KAAOxmB,EAAEyiC,WAClCziC,EAAEwE,iBACFlB,EAAKspF,KAAK5sF,EAAE2C,cAM5BiwS,cAAe,SAAS5yS,GACpB,IAAIsD,EAAOjI,KACPmxF,EAASxuF,EAAEsF,EAAKirF,MAAMhsF,QAAQiqF,QAAQ,GACtCv4C,EAAS3wC,EAAKo3S,aAIlB,OAFAp3S,EAAKo3S,aAAez8S,EAEbqF,EAAKmC,QAAQzF,EAAEe,KAAM3C,EAAO,CAAE2C,KAAMf,EAAEe,KAAMspC,KAAMrqC,EAAEqqC,MAAQhvC,KAAK6L,QAAQ,GAAIvE,OAAQ6pF,GAAUv4C,EAAS,CAAEx5B,MAAOw5B,GAAW,MAGvIwvP,OAAQ,WACJ,IAAIngS,EAAOjI,KACP6xS,EAAkB5pS,EAAKwrS,mBACvBmM,EAAqB33S,EAAK4D,QAAQ0Y,SAAS,kBAE/Ctc,EAAK43S,cAAgB53S,EAAKsvS,cAAc/tS,KAAKvB,GAE7CA,EAAKirF,MAAQvwF,EAAE,eACEo3C,OAAO6lQ,GACP9H,WAAW,CACRl/P,OAAQ3wC,EAAKf,QAAQ0xC,OACrB9rC,SAAU7E,EAAKf,QAAQ4F,SACvBhB,SAAuC,eAA7B7D,EAAKf,QAAQsoI,YACvBr+C,OAAQlpF,EAAKX,QAAU,OACvByqF,iBAAkB9pF,EAAKf,QAAQ6qF,iBAC/Bd,UAAWhpF,EAAKf,QAAQqsS,gBAAkB,MAC1CjiN,UAAWrpF,EAAKf,QAAQoqF,UACxBk0B,SAAUv9G,EAAK43S,cACf9H,WAAY9vS,EAAK43S,cACjB1yQ,SAAU0kQ,GAAmB5pS,EAAKf,QAAQimC,SAC1CmY,MAAQusP,EAA2B,SAASltS,GACxChC,EAAEgvS,GAAehtS,EAAE2F,OAAOuB,QAASgmS,IAAkB7uS,MAAK,SAASuE,EAAGwpH,GAClE,IAAI79B,EAAQ69B,EAAEljH,KAAKohS,GACf/7M,GACAA,EAAM5tC,OAAM,OAJE3iD,EAAEQ,OAQ7B0K,KAAKohS,GAExBhnS,EAAKq3S,aAAenqR,GAASltB,EAAKX,OAAO,GAAIW,EAAKirF,MAAMrnF,QAAQ,KAGpEswS,iBAAkB,SAASntQ,EAAMqtQ,GAC7Br8S,KAAK67S,WAAW7sQ,EAAMqtQ,GACtBr8S,KAAKslD,SAGTswC,OAAQ,SAASjxF,GACb,IAAI00S,EAAYr5S,KAAK05S,cAAgB15S,KAAKs5S,cAAgB,GAE1D7G,GAAK1qS,GAAG6tF,OAAOrrF,KAAKvK,KAAM2E,GAEtByU,MAAoBzU,EAAEg5E,eACtB39E,KAAK67S,WAAWxC,EAAWr5S,KAAKoM,QAAQ+oC,WAAWlf,OAAO,YAAY6pR,IAAI,gBAAgB51S,YAKtGyf,EAAGqN,OAAOy7Q,IACV9oR,EAAGqN,OAAOsnR,IA7vFd,CA+vFGx9S,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MAEf+vB,EADK/vB,EAAMgpB,GACC+G,OACZxnB,EAAavI,EAAMuI,WACnBghB,EAAOvpB,EAAMupB,KACbne,EAAapL,EAAMqL,YACnBwf,EAAK,gBACLu0R,EAAU,UAGVC,EAAgB,kBAChBC,EAAe,iBACfC,EAAe,iBACfC,EAAc,gBAGdC,EAAe,WAIfC,EAAiB,aAEjBC,EAAe,WACfC,EAAe,iBACfC,EAAc,gBACdC,EAAY,cACZC,EAAY,cACZC,EAAY,cACZC,EAAkB,4BAClBC,EAAgB,iBAChBC,EAAe,iBACfC,EAAmB,qBACnBC,EAAe,iBAGfC,EAAS,UAITC,EAAmB,gBAGnBC,EAAe,eACf16S,EAAa,aAEbq2C,EAAS,SACTgjL,EAAQ,QACRysE,EAAS,SACT38M,EAAO,OACPC,EAAQ,QACRg3M,EAAQ,QAGR7mE,EAAU,UAEVohF,EAAS,SAETvR,EAAO,OACPwR,EAAY,YACZ5vQ,EAAW,WACXrgB,EAAW,WACXkwR,EAAQ,QACRvlO,EAAS,SACTzqC,EAAS,SACTiwQ,EAAQ,QACRC,EAAW,WAEXC,EAAqB,cACrBC,EAAuB,gBACvBC,EAAuB,yBAEvBC,EAAkB,kBAElBC,EAAgB,eAChBC,EAAiB,gBACjBC,EAAiB,QACjBC,GAAgB,OAChBC,GAAkB,SAElBC,GAAiBvhT,EAAMmiB,KAAK,OAE5Bq/R,GAAU,GACVxhE,GAAO,IACP5tO,GAAQ,IACRktN,GAAM,IAENvxB,GAAK,KACL0zG,GAAM,MAGNC,GAAqB,sBACrBC,GAAiB,mBACjBC,GAAkB,oBAClBC,GAAiB,mBAEjB7hT,EAAM8hT,QAAU,GAEpB,IAAIC,GAAe,CACf7pD,OAAQ,SACR8pD,YAAa,cACbC,eAAgB,iBAChBhV,YAAa,cACbiV,YAAa,SACbtxN,KAAM,UAGNuxN,GAAwB,CACxB/W,OAAQ,mBACRW,aAAc,0BACd5D,YAAa,yBACbqB,eAAgB,wBAChB2C,YAAa,yBACbiW,YAAa,yBACbC,OAAQ,oBAGRC,GAAkB,CAAE,SAAU,cAAe,iBAAkB,cAAe,SAAU,eAExFC,GAAwB,wGAAiHviT,EAAMgpB,GAAG2tE,KAAK,kBAAqB,mBAO5K6rN,GAAUzyR,EAAO3tB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS3E,GACpBwpB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GAEnCA,EAAUlH,KAAKkH,QAEflH,KAAKumO,OAAS5lO,EAAM4C,QAAQ+a,MAAMzS,GAClC7L,KAAKqtD,IAAM1sD,EAAM8uB,QAEjB5jB,EAAU7L,KAAKoM,QAAUpM,KAAK6L,SACtBiX,KAAKo/R,GAAgBliT,KAAKqtD,KAClCxhD,EAAQ0Y,SAhID,aAiIP1Y,EAAQiX,KAAK+sR,EAAMkQ,GAEf74S,EAAQk8S,WACRpjT,KAAKquR,aAGLnnR,EAAQooL,OAASpoL,EAAQooL,MAAM9nL,OAAS,IACxCN,EAAQktB,MAAQp0B,KAAKqjT,uBAGrBn8S,EAAQktB,OAASltB,EAAQktB,MAAM5sB,QAC/BxH,KAAKg0I,SAGTh0I,KAAKk1N,gBACLl1N,KAAKsjT,YACLtjT,KAAK0xB,mBAEDxqB,EAAQk8S,YACRpjT,KAAKujT,QAAQvjT,KAAK6L,QAAQ4T,cAC1Bzf,KAAKwjT,eAAer2Q,SAASntC,KAAKoM,SAClCpM,KAAKyjT,yBAGT9iT,EAAM6zB,OAAOx0B,OAGjBqK,OAAQ,CACJy1N,EACAysE,EACA38M,EACAC,EACAgyN,EACAC,EACAhlQ,GAGJ51C,QAAS,CACL9E,KAAM,UACNgyB,MAAO,GACPgvR,WAAW,EACXM,eAAe,EACfj0S,KAAM,UAGVzN,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKf,QAAQk8S,YACbziT,EAAMq4B,aAAa/wB,EAAK84N,gBACxB94N,EAAK07S,aAAa3hT,WAGtBiG,EAAK4D,QAAQkqB,KAAKkqM,mBAAoBj9N,MAAK,SAAUuE,EAAGslB,GACpD,IACIqmE,EAAOsiN,EAAcoO,EADrB/qD,EAASl2P,EAAEkqB,GAAIygR,iBAGfz0C,IACA+qD,EAAU/qD,EAAO+qD,QAEjBpO,GADAtiN,EAAQ2lK,EAAO3lK,OACM9mF,QAErBw3S,EAAQ5hT,UACRkxF,EAAMlxF,UACNwzS,EAAaz+Q,aAIrBp2B,EAAMqB,QAAQiG,EAAK4D,QAAQspC,YAE3BzkB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,IAG3BgF,IAAK,SAAS/F,GACVlH,KAAK4kI,KAAK19H,GAENlH,KAAKkH,QAAQk8S,WACbpjT,KAAKupB,QAAO,IAIpBhC,OAAQ,SAASkgR,EAAWlgR,GACxB,IAI2Bk5M,EAASr0N,EAJhCnE,EAAOjI,KACPqtD,EAAMrtD,KAAK6jT,QAAQpc,GACnBz4P,EAAOhvC,KAAK8jT,SAASrc,EAAWp6O,GAChCwoN,EAAY7mO,EAAK6mO,eAGA,IAAVtuP,IACPA,GAAS,GAGTynB,EAAK6mO,WAELp1C,GADAr0N,EAAUypQ,EAAUzpQ,SACFggB,SAAS60R,IAAW70S,EAAQG,GAAG,UACjDspQ,EAAUtuP,OAAOA,GACjBnb,EAAQ2pB,KAAK,cAAczE,WAAW,YACtCllB,EAAQklB,WAAW,YAEfmvM,GACAr0N,EAAQmY,SAAS08R,GAAQ72S,QAAQy8R,IAE9B73P,EAAK+0Q,iBAAiBv8S,OAAS,GACxB7G,EAAMy1B,eAAe4Y,EAAK+0Q,iBAAiB13S,QAAQ4zN,kBACrD14M,OAAOA,EAAQynB,EAAK+0Q,kBAGhC/jT,KAAK2jT,eACL3jT,KAAK2jT,aAAap8R,OAAOynB,EAAK+4P,SAAUxgR,GAE7BvnB,KAAK2jT,aAAa93S,QACxBkqB,KAAK,mBAAqBs3B,EAAM,KAE5BrqD,MAAK,SAAUuE,EAAGslB,GACvB5kB,EAAK07S,aAAap8R,OAAO5kB,EAAEkqB,GAAKtF,QAK5Cy8R,qBAAsB,SAAS98N,GAC3B,OAAOlnF,KAAK6L,QAAQkqB,KAAKkqM,gCAAwC/4I,EAAY,MAAMjxD,OAAOgqM,gBAG9F9yN,KAAM,SAASs6R,GACX,IAGItzQ,EAAuC8vR,EAHvCh8S,EAAOjI,KACPqtD,EAAMrtD,KAAK6jT,QAAQpc,GACnBz4P,EAAO/mC,EAAK67S,SAASrc,EAAWp6O,GAG/Bre,KAIL7a,EAAW6a,EAAKk1Q,WAAWj3S,IAAI+hC,EAAKm1Q,WAAWl3S,IAAI+hC,EAAK+0Q,kBAAkB92S,IAAI+hC,EAAK+4P,WAE1ExjR,SAAS+7R,GAClBnsR,EAAS5P,SAASg8R,GAEdvgT,KAAK2jT,cACM3jT,KAAK2jT,aAAa93S,QACxBkqB,KAAK,mBAAqBs3B,EAAM,KAE5BrqD,MAAK,SAAUuE,EAAGslB,GACvBlqB,EAAEkqB,GAAItI,SAASg8R,GACf59S,EAAEkqB,GAAItI,SAAS+7R,OAIvB2D,EAAgBj1Q,EAAKm1Q,UAAUh4S,SAASE,QAAQ4zN,GAAMggF,IACpBpyS,KAAK20S,MAGsB,IAArDyB,EAAc9uQ,SAAS,mBAAmB3tC,OAC1CS,EAAKkF,KAAK82S,GAEVh8S,EAAKm8S,qBAAqBH,IAI9B9vR,EAAS4B,KAAK,gBAAgBC,QAAQ,gBAAgBxuB,OAAS,GAC/DxH,KAAKqkT,eAAep8S,EAAKq8S,eAAep6S,SAGxClK,KAAKkH,QAAQk8S,WACbpjT,KAAKupB,QAAO,KAIpBwN,OAAQ,SAAS0wQ,GACb,IAGImG,EAHA3lS,EAAOjI,KACPqtD,EAAMrtD,KAAK6jT,QAAQpc,GACnBz4P,EAAOhvC,KAAK8jT,SAASrc,EAAWp6O,GAG/Bre,IAIDA,EAAK6mO,aACL+3B,EAAc5+P,EAAKm1Q,UAAU93S,QAAQ,8BACrB7E,OAAS,GAA0C,IAArCwnC,EAAKm1Q,UAAUhwN,WAAW3sF,QACpDomS,EAAY//R,KAAK20S,IAAgBxgT,UACjC4rS,EAAY72Q,SAEZiY,EAAKm1Q,UAAYxhT,EAAEw/S,KAEnBnzQ,EAAK6mO,UAAU7zQ,WAInBgtC,EAAKk1Q,WAAW18S,OAAS,EACzBwnC,EAAKk1Q,WAAWntR,SACTiY,EAAKm1Q,UAAU38S,OAAS,GAC/BwnC,EAAKm1Q,UAAUptR,SAGfiY,EAAK+0Q,iBAAiBv8S,OAAS,GAC/BwnC,EAAK+0Q,iBAAiBhtR,SAGtB/2B,KAAK2jT,eACL3jT,KAAK2jT,aAAa5sR,OAAOiY,EAAK+4P,UAEnB/nS,KAAK2jT,aAAa93S,QACxBkqB,KAAK,mBAAqBs3B,EAAM,KAE5BrqD,MAAK,SAAUuE,EAAGslB,GACvB5kB,EAAK07S,aAAa5sR,OAAOp0B,EAAEkqB,QAI/B7sB,KAAKkH,QAAQk8S,WACbpjT,KAAKupB,QAAO,KAIpBrc,KAAM,SAASu6R,GACX,IAGItzQ,EAAuC8vR,EAFvC52P,EAAMrtD,KAAK6jT,QAAQpc,GACnBz4P,EAAOhvC,KAAK8jT,SAASrc,EAAWp6O,GAG/Bre,KAIL7a,EAAW6a,EAAKk1Q,WAAWj3S,IAAI+hC,EAAKm1Q,WAAWl3S,IAAI+hC,EAAK+0Q,mBAC/C53R,YAAYo0R,GACrBpsR,EAAShI,YAAYm0R,GAErBtxQ,EAAK+4P,SAAS57Q,YAAYo0R,GAEtBvgT,KAAK2jT,cACM3jT,KAAK2jT,aAAa93S,QACxBkqB,KAAK,mBAAqBs3B,EAAM,KAE5BrqD,MAAK,SAAUuE,EAAGslB,GACvBlqB,EAAEkqB,GAAIV,YAAYo0R,OAI1B0D,EAAgBj1Q,EAAKm1Q,UAAUh4S,SAASE,QAAQ4zN,GAAMggF,IACpBpyS,KAAK20S,MAG/ByB,EAAc73R,SAAS,aAAe63R,EAAc9uQ,SAAS,mBAAmB3tC,OAAS,EA5BtFxH,KA6BEkN,KAAK+2S,GA7BPjkT,KA+BEokT,qBAAqBH,IAI9BjkT,KAAKkH,QAAQk8S,WACbpjT,KAAKupB,QAAO,KAIpBpB,OAAQ,SAASs/Q,EAAWl2N,GACxB,IAGIsnL,EAAQ0rD,EAAarwP,EAHrBllB,EAAOhvC,KAAK8jT,SAASrc,GACrB57R,EAAUmjC,EAAKm1Q,UACfpc,EAAW/4P,EAAK+4P,SAGhBx2N,IAAY3uE,IACZ2uE,GAAU,GAGdsnL,EAAShtP,EAAQgC,KAAK00S,KAEjBvzQ,EAAK6mO,WAA8D,IAAjDkyB,EAAShyQ,KAAKkqM,GAAM8gF,GAAkBv5S,UAI7D0sD,EAAQroD,EAAQgC,KAAK0zS,GAEjBvyQ,EAAK6mO,aACL0uC,EAAc14S,EAAQQ,QAAQ4zN,GAAMggF,GAAcpyS,KAAK20S,MAG/C32S,EAAQugB,SAASi0R,KAAoB9uO,GACrCgzO,EAAYhX,aAAa1hS,EAAQkN,SAIzC8/O,EAAO1wO,OAAOopD,GAEVA,GACevxE,KAAK6L,QAAQkqB,KAAK,eAAiBm+B,EAAQ,KAE7ClxD,MAAK,SAAUuE,EAAGslB,GACvBA,IAAOhhB,EAAQ,IACflJ,EAAEkqB,GAAIhf,KAAK00S,IAAiBp6R,QAAO,OAM/C4/Q,IACAA,EACKjlR,KAAKq+R,EAAc5vO,GACnBx7C,KAAKkqM,GAAM8gF,GACX/4R,YAAYq4R,EAAgB9uO,GAE7BA,GAAWvxE,KAAK2jT,cACD3jT,KAAK2jT,aAAa93S,QAAQkqB,KAAK,eAAiBm+B,EAAQ,KAE1DlxD,MAAK,SAAUuE,EAAGslB,GACvBA,IAAOk7Q,EAAS,IAChBplS,EAAEkqB,GACG/J,KAAKq+R,GAAc,GACnBprR,KAAKkqM,GAAM8gF,GACX50R,YAAYk0R,SAOrCmE,YAAa,SAASC,GAClB,IAAIx8S,EAAOjI,KACPsvL,EAAQrnL,EAAK4D,QAAQkqB,KAAK2rR,GAC1B3pR,EAAY9vB,EAAK4D,QAAQkqB,KAAK6rR,GAAiB9B,IAAIoB,GAEvD5xH,EAAMtsL,MAAK,SAAS+V,EAAO+3R,GACvB,IAAI9qB,EAAOrjR,EAAEmuS,GACTh+Q,EAAS,KACT4xR,EAAY1+B,EAAKn4Q,KAAK0+R,GACtBoY,EAAWF,GAAcA,EAAWC,GAEpC1+B,EAAKz5Q,GAAGk1S,KACR3uR,EAASnyB,EAAMy1B,eAAe4vP,IAG9BlzP,GAAUA,EAAOvL,OACjBuL,EAAOvL,OAAOo9R,IAAY,GAE1B18S,EAAKsf,OAAOy+P,EAAM2+B,MAI1B18S,EAAK4D,QAAQkqB,KAAK2rR,2BAAqCpwR,WAAW,YAElErpB,EAAK4D,QAAQkqB,KAAK6rR,GAAiB9B,IAAIoB,GAAkBp+R,KAAK,YAAa,GAC3EiV,EAAUjV,KAAKsO,EAAU,IAG7BwzG,KAAM,SAAS19H,GACX,IAII2E,EAJAw7D,EAAYrnE,KAAK4kT,gBAAgB19S,GACjC2I,EAAWw3D,EAAUx3D,SACrBg1S,EAAmBx9O,EAAUw9O,iBAC7Bn/S,EAAOg9S,GAAar7O,EAAU3hE,MAG9BmK,GAAYg1S,EACZh5S,EAAU7L,KAAK8kT,aAAaz9O,GACrB1mE,EAAMgpB,GAAG09C,EAAUwuM,WAC1BhqQ,EAAU7L,KAAK+kT,iBAAiB19O,GACzB3hE,EACPmG,EAAU7L,KAAKglT,gBAAgBt/S,EAAM2hE,GAC9BA,EAAU3hE,OAAS07S,EAC1BphT,KAAKilT,aACE59O,EAAU3hE,OAAS27S,GAC1BrhT,KAAKklT,cAAc79O,GAGnBx7D,IACI7L,KAAKwjT,eACL33S,EAAQwlE,aAAarxE,KAAKwjT,gBAE1B33S,EAAQshC,SAASntC,KAAK6L,SAG1BA,EAAQkqB,KAAK,cAAczE,WAAW,YAElCzlB,EAAQU,GAAG,eACXV,EAAQylB,WAAW,YAGvBtxB,KAAK6wB,QAAQ,WAAW,WACpB,MAAO,CAAEsD,SAAUtoB,EAAQ0jB,YAKvC41R,eAAgB,SAASj+S,EAAS2E,GAC9B,IAAIg+C,EAAa3iD,EAAQ2iD,WACrB9hC,EAAUo6R,GAETt4P,IACDA,EAAa,IAGb3iD,EAAQw5N,SACR34M,EAAUu4R,YAAuBC,GAGjCr5S,EAAQ+nI,QACRlnH,EAAUA,EAAU,YAAc7gB,EAAQ+nI,OAG1CplF,IACIA,EAAWq+O,QACXngR,EAAUA,EAAUhV,GAAQ82C,EAAWq+O,aAChCr+O,EAAWq+O,OAGtBr8R,EAAQiX,KAAK+mC,IAGjBh+C,EAAQ0Y,SAASwD,GACjBlc,EAAQiX,KAAKo/R,GAAgBh7S,EAAQmmD,KAEjCnmD,EAAQyoB,IACR9jB,EAAQiX,KAAK4rL,GAAIxnM,EAAQyoB,IAEzBzoB,EAAQylB,WAAao1R,GACrBl2S,EAAQiX,KAAK,gBAAiBi/R,IAItCgD,iBAAkB,SAAS79S,GACvB,IACI4rB,EAAQvc,EAAQwR,EADhBlc,EAAUlJ,EAAEuE,EAAQ2E,SAAW,WAmCnC,OAhCI3E,EAAQk+S,mBACRplT,KAAKqlT,aAAan+S,EAAQk+S,kBAAkB1/S,KAAM/C,EAAEI,OAAO,GAAImE,EAASA,EAAQk+S,oBAGhFl+S,EAAQ2iD,aACR9hC,EAAU7gB,EAAQ2iD,WAAWq+O,aACtBhhS,EAAQ2iD,WAAkB,MACjCh+C,EAAQiX,KAAK5b,EAAQ2iD,mBACd3iD,EAAQ2iD,WAAWpjD,IAGzBS,EAAQo+S,mBACTp+S,EAAQo+S,iBAAmB,IAG/Bp+S,EAAQo+S,iBAAiB71S,KAAOzP,KAAKkH,QAAQuI,KAE7CqjB,EAAS,IAAInyB,EAAMgpB,GAAGziB,EAAQ2uQ,WAAWhqQ,EAAS3E,EAAQo+S,kBAEtDrC,GAAgBttS,QAAQzO,EAAQ2uQ,YAAc,GAC9C/iP,EAAO1mB,QAAQmY,SAASu8R,EAAe,IAAMgC,GAAsB57S,EAAQ2uQ,YAC3Et/P,EAASuc,EAAO1mB,SAEhBmK,GAAUuc,EAAO1mB,SAAW0mB,EAAOjnB,SAASmgB,KAhd/B,6DAgdwD7f,SAGrEjF,EAAQ2iD,aACR3iD,EAAQ2iD,WAAWq+O,MAAQngR,GAG/B/nB,KAAKmlT,eAAej+S,EAASqP,GAEtBA,GAGXyuS,gBAAiB,SAASnvC,EAAW3uQ,GACjC,IAAI2E,EAASy3C,EAgBb,OAdIp8C,EAAQylB,WAAas1R,KACrBp2S,EAAU7L,KAAKulT,gBAAgB1vC,EAAWlzQ,EAAEI,QAAO,EAAM,GAAImE,KAG7DlH,KAAK2jT,cAAgBz8S,EAAQylB,WAAao1R,IACtC76S,EAAQk+S,0BACR9hQ,EAAK3gD,EAAEI,QAAO,EAAM,GAAImE,EAASA,EAAQk+S,oBAC/B,gBACVplT,KAAKqlT,aAAa,SAAU/hQ,IAE5BtjD,KAAKqlT,aAAaxvC,EAAWlzQ,EAAEI,QAAO,EAAM,GAAImE,KAIjD2E,GAGXw5S,aAAc,SAASxvC,EAAW3uQ,GAC9B,IAIIs+S,EAJAr0L,EAAWnxH,KAEXiI,EAAOjI,KACPyxE,EAAWvqE,EAAQuqE,SAkFvB,cA/EOvqE,EAAQuqE,SAEXvqE,EAAQyoB,KACRzoB,EAAQyoB,GAAKzoB,EAAQyoB,GAAKgxN,GAAOlvM,GAEjCvqC,EAAQy7N,WAAao9E,WACd74S,EAAQ4mP,gBACR5mP,EAAQowF,MAGfpwF,EAAQ07N,WAAam9E,GAChB74S,EAAQ2iD,aACT3iD,EAAQ2iD,WAAa,IAGzB3iD,EAAQ2iD,WAAWpjD,GAAcS,EAAQ05B,KAEzC15B,EAAQ05B,KAAOuhR,IACRj7S,EAAQ05B,OAASh+B,GAAesE,EAAQ05B,OAASuhR,KACxDj7S,EAAQ05B,KA1iBT,SA2iBC15B,EAAQk8N,SAAU,GAGtBn7N,EAAK07S,aAAa5pQ,OAAO7yC,GACzBs+S,EAAWv9S,EAAK07S,aAAa93S,QAAQkqB,KAAKkqM,GAAM0gF,GAAWx+Q,OAEvDj7B,EAAQowF,MACRkuN,EAASzvR,KAAKkqM,GAAMygF,GAAWvzN,QAAQxsF,EAAMgpB,GAAG2tE,KAAKpwF,EAAQowF,OAG/C,iBAAdu+K,GAA+C,WAAdA,IAAgD,IAAtB3uQ,EAAQu+S,WACnED,EAASzvR,KAAKkqM,GAAMygF,GAAWn8R,SAASw8R,GAEpCtvO,GACA+zO,EAASzvR,KAAKkqM,GAAMygF,GAAWn8R,SAAS87R,GAGxCn5S,EAAQgtD,OACRsxP,EAAS1iS,KAAK,aAAc5b,EAAQgtD,QAEjChtD,EAAQw+S,YACfx+S,EAAQw+S,YAAYpkT,SAAQ,SAAUiG,GAClCA,EAAEolB,SAAWzlB,EAAQylB,SACrB1kB,EAAKo9S,aAAa,KAAM99S,MAErBL,EAAQ6mS,UACfyX,EAASzuR,SACTyuR,EAAW,KAEXt+S,EAAQ6mS,QAAQzsS,SAAQ,SAAUiG,GAC9B,IAAIsiD,EAAatiD,EAAEsiD,WACnBtiD,EAAEolB,SAAWzlB,EAAQylB,SACrBplB,EAAEsiD,WAAalnD,EAAEI,OAAO8mD,EAAY3iD,EAAQ2iD,YAE5C5hD,EAAKo9S,aAAa,SAAU99S,OAIlB,mBAAdsuQ,IACA2vC,EAASjhS,SArpBA,cAspBTihS,EAAS1iS,KAloBD,iBAkoBqB,IAG7B0iS,IACAv9S,EAAKk9S,eAAej+S,EAASs+S,GAEzBt+S,EAAQylB,WAAaq1R,IACrBwD,EAASjhS,SAAS+7R,IAGlBp5S,EAAQoiB,OAASpiB,EAAQihB,SACzBlgB,EAAK07S,aAAan6S,KAAKuyE,GAAQ,SAAUp3E,GACjCA,EAAEqqC,OAASw2Q,EAAS,IACpBr0L,EAASw0L,kBAAkBhhT,EAAGuC,EAAQoiB,MAAOpiB,EAAQihB,YAM9Dq9R,GAGXI,gBAAiB,SAAS1+S,GACtB,IAGIgsF,EAAO0wN,EAHP37S,EAAOjI,KACP6lT,EAAgBljT,EAAEugT,IAClBrtC,EAAY3uQ,EAAQ4+S,eAqBxB,OAlBAD,EAAc/iS,KAAKrc,EAAYS,EAAQ05B,MAEvCsyD,EAAQvwF,EAAE,UAAUwqC,SAASxqC,EAAE,WAAWm1S,WAAW,CACjD3mN,OAAQ00N,IACTh4S,KAAK,cAERg4S,EAAc58R,GAAG62M,kBAAqB,SAAUn7N,GAC5CuuF,EAAM/qE,SACNxjB,EAAEwE,qBAGNy6S,EAAU,IAAI/tC,EAAU3iL,EAAMrnF,UAEtBrC,KAAKtC,EAAQ6+S,WAAW,SAAUphT,GACtCsD,EAAKmC,QAAQ0yC,EAAQ,CAAEx1C,OAAQu+S,EAAen9S,MAAO/D,EAAE+D,OAAS/D,IAChEuuF,EAAM5tC,WAGH,CAAEugQ,cAAeA,EAAejC,QAASA,EAAS1wN,MAAOA,IAGpEgyN,cAAe,SAASh+S,GACpB,IAAIkxH,EAAYz1H,EAnmBL,sCAomBPqjT,EAAoBrjT,EArmBJ,4EAumBpBy1H,EAAU7zG,SAjtBD,eAktBT6zG,EAAUt1G,KAAK+sR,EAAMwR,GAEjBrhT,KAAKwjT,eACLprL,EAAU/mD,aAAarxE,KAAKwjT,gBAE5BprL,EAAUjrF,SAASntC,KAAK6L,SAG5B7L,KAAKmlT,eAAej+S,EAASkxH,GAEzBlxH,EAAQyoB,KACRzoB,EAAQyoB,GAAKzoB,EAAQyoB,GAAKgxN,GAAOlvM,GAGrCzxC,KAAKmlT,eAAej+S,EAAS8+S,GAEzBhmT,KAAK2jT,cACL3jT,KAAK2jT,aAAa93S,QAAQkuC,OAAOisQ,IAIzCf,WAAY,WACR,IAAIgB,EAAStjT,EA5nBL,qBA6nBRsjT,EAAO1hS,SAAS67R,GAEZpgT,KAAKwjT,eACLyC,EAAO50O,aAAarxE,KAAKwjT,gBAEzByC,EAAO94Q,SAASntC,KAAK6L,UAI7Bi5S,aAAc,SAAS59S,GACnB,IAEI2E,EAAS25S,EAFT31S,EAAW3I,EAAQ2I,SACnBg1S,EAAmB39S,EAAQ29S,iBACRqB,EAAmBvjT,EAAEw/S,IAuC5C,OArCI0C,GAAoB7kT,KAAK2jT,cAAgBz8S,EAAQylB,WAAao1R,IAC9D8C,EAAmB37S,EAAW27S,GAAoBA,EAAiB39S,GAAS,GAAK29S,EACjF7kT,KAAK2jT,aAAa5pQ,OAAO,IACzByrQ,EAAWxlT,KAAK2jT,aAAa93S,QACxBkqB,KAAKkqM,GAAM0gF,GACXx+Q,OACApM,KAAKkqM,GAAMygF,GACX5wS,KAAK+0S,GACL14S,UAGL0D,GAAY3I,EAAQylB,WAAas1R,KACjCpyS,EAAW3G,EAAW2G,GAAYA,EAAS3I,GAAW2I,GACtDhE,EAAUlJ,EA5pBC,iEA6pBHmN,KAAKD,GAET21S,GACAA,EAASjhS,SAAS+7R,IAItBz0S,IACAq6S,EAAmBr6S,EAAQkqB,KAAKurR,gBAChCthT,KAAKmlT,eAAej+S,EAAS2E,IAG7B25S,IACAU,EAAiBj5S,IAAIu4S,EAASzvR,KAAKurR,iBACnCthT,KAAKmlT,eAAej+S,EAASs+S,KAG5BxlT,KAAKkH,QAAQw8S,eAAiBwC,EAAiB1+S,OAAS,IACzDqE,EAAQiX,KAAKsO,EAAU,GACvBvlB,EAAQ0Y,SAASu8R,GACjBoF,EAAiBpjS,KAAKsO,GAAW,IAG9BvlB,GAGX05S,gBAAiB,SAAS1vC,EAAW3uQ,GACjC,IAEI4rB,EAAQjnB,EAASs6S,EAFjBN,EAAgBljT,EAAE,YAClByjT,GAAa,EA8FjB,OA3FwB,IAApBl/S,EAAQm/S,UACRn/S,EAAQ0sB,WA5vBN,WA8vBF1sB,EAAQmnB,MACRw3R,EAAgBljT,EAAE,YAAcuE,EAAQmnB,IAAM,OAE9CnnB,EAAQy7N,WAAalxL,WACdvqC,EAAQ4mP,gBACR5mP,EAAQowF,MAEfpwF,EAAQ07N,WAAanxL,EACrBo0Q,EAAcjlR,KAAK15B,EAAQ05B,MAE3BilR,EAAc/iS,KAAKrc,EAAYS,EAAQ05B,MAGtB,gBAAjB15B,EAAQxB,KAERmgT,GADAM,EAAWnmT,KAAK4lT,gBAAgB1+S,IACP2+S,cACJ,WAAdhwC,IAAgD,IAAtB3uQ,EAAQu+S,UACzC5vC,EAAY,eACL3uQ,EAAQw+S,aACfx+S,EAAQktB,MAAQltB,EAAQw+S,mBACjBx+S,EAAQw+S,YAEXx+S,EAAQ2iD,YAAc3iD,EAAQ2iD,WAAWq+O,OACzC2d,EAActhS,SAASrd,EAAQ2iD,WAAWq+O,OAG9C2d,EAAc/iS,KAAK0+R,EAAUt6S,EAAQmmD,YAC9BnmD,EAAQmmD,KACRnmD,EAAQ6mS,UACf8X,EAAgBljT,EAAE,iBAClByjT,GAAa,EACbl/S,EAAQktB,MAAQltB,EAAQ6mS,eACjB7mS,EAAQ6mS,QAEf7mS,EAAQimS,eAAgB,EAExBjmS,EAAQktB,MAAM9yB,SAAQ,SAAUiG,GACxBA,EAAEo7N,WAAalxL,WACRlqC,EAAEumP,gBACFvmP,EAAE+vF,MAGT/vF,EAAEq7N,WAAanxL,IACVlqC,EAAEsiD,aACHtiD,EAAEsiD,WAAa,IAGnBtiD,EAAEsiD,WAAWpjD,GAAcc,EAAEq5B,YAEtBr5B,EAAEq5B,UAKjB15B,EAAQyoB,KACRk2R,EAAc/iS,KAAK4rL,GAAIxnM,EAAQyoB,WACxBzoB,EAAQyoB,IAGnBzoB,EAAQuI,KAAOzP,KAAKkH,QAAQuI,MAG5B5D,GADAinB,EAAS,IAAInyB,EAAMgpB,GAAGksP,GAAWlzQ,EAAEkjT,GAAgB3+S,IAClCkF,SAAW0mB,EAAOjnB,SAC3B0Y,SAASu+R,GAAsBjtC,IACvC71Q,KAAKmlT,eAAej+S,EAAS2E,GAEzB3E,EAAQmnB,KACRw3R,EAAcv0R,WAAWu+Q,GAGzBuW,GACAv6S,EAAQkqB,KAAKkqM,aAAe17M,SAASu8R,GACrC9gT,KAAKokT,qBAAqBv4S,IAE1BinB,EAAOjnB,QAAQ0Y,SAASu8R,GAGP,gBAAjB55S,EAAQxB,MAA2C,SAAjBwB,EAAQxB,KAC1C1F,KAAKsmT,oBAAoBxzR,GACD,SAAjB5rB,EAAQxB,MACfmgT,EAActhS,SAr3BN,mBAs3BRvkB,KAAKumT,WAAWV,EAAe3+S,EAAQs/S,YACvC36S,EAAUg6S,EAAc15S,WAExB2mB,EAAO8wR,QAAUuC,EAASvC,QAC1B9wR,EAAOogE,MAAQizN,EAASjzN,OAGrBrnF,GAGXqpN,cAAe,WACX,IAAIjtN,EAAOjI,KAEXiI,EAAK4D,QAAQod,GAAG+2M,EAAUx0M,EAAIvjB,EAAKi7G,SAAS15G,KAAKvB,IAC5CghB,GAl2BC,UAk2BYuC,EAAIvjB,EAAKw+S,SAASj9S,KAAKvB,IACpCghB,GAl2BE,WAk2BYuC,EAAIvjB,EAAKy+S,UAAUl9S,KAAKvB,KAG/Cq+S,oBAAqB,SAASxzR,GAC1B,IAAI7qB,EAAOjI,KAEX8yB,EAAOtpB,KAAKs2N,EAAO73N,EAAK0+S,SAASn9S,KAAKvB,IACtC6qB,EAAOtpB,KAAK+iS,EAAQtkS,EAAK2+S,UAAUp9S,KAAKvB,IACxC6qB,EAAOtpB,KAAKuyE,EAAQ9zE,EAAK4+S,UAAUr9S,KAAKvB,IACxC6qB,EAAOtpB,KAAKomF,EAAM3nF,EAAK6+S,QAAQt9S,KAAKvB,IACpC6qB,EAAOtpB,KAAKqmF,EAAO5nF,EAAK8+S,SAASv9S,KAAKvB,IAEtC6qB,EAAO1mB,QAAQ2pB,KAAKkqM,aAAej9N,MAAK,SAAUuE,EAAGslB,GACjD,IAAI65H,EAAM/jJ,EAAEkqB,GAER65H,EAAI74I,KAAK,gBACT64I,EAAI74I,KAAK,eAAerE,KAAKs2N,GAAO,SAAUn7N,GAC1CsD,EAAKmC,QAAQ01N,EAAO,CAAEnwM,GAAIhrB,EAAEgrB,GAAIroB,OAAQ3C,EAAE2C,OAAQqhB,cAAehkB,EAAEgkB,eAAiBhkB,EAAEya,eAMtG4nS,eAAgB,WACZ,IAAIn2S,EAAMoI,SAASjZ,KAAK6L,QAAQe,IAAI,OAAQ,KAAO,EAC/Cq6S,EAAgBp2S,EAMpB,OAJA7Q,KAAK6L,QAAQspC,SAAS,2BAA4CnyC,MAAK,WACnEikT,GAAiBl7S,EAAWpJ,EAAE3C,OAAO,GAAS6Q,KAG3CxN,KAAK4iE,KAAKghP,IAGrB5D,oBAAqB,WACjB,IAAIlyL,EAAWnxH,KAEXkH,EAAUlH,KAAKkH,QACfktB,EAAQltB,EAAQooL,MAAM43H,SAAQ,SAAUlhC,GAAQ,OAAO70J,EAASg2L,SAASnhC,EAAM9+Q,EAAQkgT,eAAgBlgT,EAAQmgT,iBAInH,OAFArnT,KAAKkH,QAAQktB,MAAQA,EAEdA,GAGXqyR,SAAU,SAAS9hT,GACf,IACIk0P,EADSl2P,EAAEgC,EAAE2C,QACG+E,QAAQ4zN,aAExB44B,EAAOrxP,OAAS,IAChBxH,KAAKqkT,eAAexrD,GACpBA,EAAOt0O,SAAS08R,KAIxByF,UAAW,SAAS/hT,GAChB3E,KAAKoM,QAAQ2pB,KAAKkqM,qBAA8B9zM,YAAY80R,IAGhEqD,aAAc,WACV,OAAOtkT,KAAKoM,QAAQ2pB,KAAKkqM,GAAM6gF,GAC1B7qR,OAAO,YACPA,QAAO,SAAU1uB,EAAGslB,GACjB,OAAIA,EAAGpgB,MAAMwgF,aAAe37C,MAQxCwyQ,SAAU,SAASrc,EAAW6f,GAC1B,IAEIC,EAAapD,EAFb92P,EAAMi6P,GAAYtnT,KAAK6jT,QAAQpc,GAC/B+f,EAAgB7kT,EAAEg/S,GAGtB,OAAKt0P,GASLk6P,EAAc,aAAel6P,EAAM,IAG5B,CACH82P,UAHJA,EAAYnkT,KAAK6L,QAAQkqB,KAAKwxR,GAI1BrD,WAAYC,EAAU93S,QAAQ4zN,oBAAoCigF,GAClErqC,UAAWl1Q,EAAMy1B,eAAe+tR,GAChCpc,SAAU/nS,KAAK2jT,aAAe3jT,KAAK2jT,aAAa93S,QAAQkqB,KAAKwxR,GAAe5kT,EAAEw/S,IAC9E4B,iBAAkByD,EAAczxR,KAAKwxR,KAhB9B,CACHpD,UAAWnkT,KAAK6L,QAAQkqB,KAAK0xQ,GAC7Byc,WAAYvhT,EAAEw/S,IACdpa,SAAU/nS,KAAK2jT,aAAe3jT,KAAK2jT,aAAa93S,QAAQkqB,KAAK0xQ,GAAa9kS,EAAEw/S,IAC5E4B,iBAAkBphT,EAAEw/S,MAgBhCsF,gBAAiB,SAASz4Q,EAAMiF,GAC5B,IAAI7f,EAAQp0B,KAAKskT,eACbnsP,GAAmC,IAAvB/jC,EAAMrb,MAAMi2B,GAAe5a,EAAMrb,MAAMi2B,EAAKiqF,eAAiB7kG,EAAMrb,MAAMi2B,GACrF04Q,EAAgBtzR,EAAM+jC,EAAYlkB,GAUtC,OARKyzQ,IAEGA,GADe,IAAfzzQ,EACgB7f,EAAM+N,OAEN/N,EAAMlqB,SAIvBw9S,GAGX7D,QAAS,SAASpc,GACd,IAAI57R,EAeJ,OAZAA,EAAU7L,KAAK6L,QAAQkqB,KAAK0xQ,IAGfjgS,SACTqE,EAAUlJ,EAAEg/S,GAAsB5rR,KAAK0xQ,KAItC57R,EAAQrE,QAAUxH,KAAK2jT,eACxB93S,EAAU7L,KAAK2jT,aAAa93S,QAAQkqB,KAAK0xQ,IAGxC57R,EAAQrE,OAGFqE,EAAQgC,KAAKu0S,KAAQv2S,EAAQQ,QAAQ4zN,GAAM6gF,GAAcjzS,KAAKu0S,IAF9D,MAMfgC,qBAAsB,SAASv3R,GAC3B,IACI86R,EADA5Z,EAAUlhR,EAAGsoB,WAGjB44P,EAAQ5hR,YAAYs0R,GAAWt0R,YAAYq0R,IAC3CmH,EAAc5Z,EAAQ93Q,OAAO,sBACjB/rB,QAAQqa,SAASi8R,GAC7BmH,EAAYxlR,OAAO5d,SAASk8R,IAGhCmH,UAAW,SAAS54Q,GAChB,IAAI/mC,EAAOjI,KAGXgvC,EAAKzqB,SAAS+7R,GAEVr4S,EAAK07S,eACD30Q,EAAK5iB,SAAS8zR,IAAiBlxQ,EAAK5iB,SAAS+zR,KACzCnxQ,EAAK5iB,SAAS8zR,IACdlxQ,EAAOA,EAAKmG,WAAWrd,GAAG,IACZjqB,KAAKy0S,IAEVtzQ,EAAKnhC,KAAKw0S,KAGhB3Y,KAAKn+N,KAAKp2B,WAAWnyC,MAAK,SAAUuE,EAAGslB,GAC1C5kB,EAAK4/S,cAAcllT,EAAEkqB,OAGzB5kB,EAAK4/S,cAAc74Q,IACZA,EAAK5iB,SAAS6zR,GACrBjxQ,EAAKmG,WAAWnyC,MAAK,SAAUuE,EAAGslB,GAC9B5kB,EAAK4/S,cAAcllT,EAAEkqB,OAGzB5kB,EAAK4/S,cAAc74Q,KAK/B84Q,cAAe,SAAS94Q,GACpBhvC,KAAK2jT,aAAa93S,QACbkqB,KAAK,iBAAmBiZ,EAAKnhC,KAAKu0S,IAAO,MACzC79R,SAAS+7R,IAGlBtsK,OAAQ,WAGJ,IAFA,IAAI9sI,EAAUlH,KAAKkH,QAEVK,EAAI,EAAGA,EAAIL,EAAQktB,MAAM5sB,OAAQD,IACtCvH,KAAK4kI,KAAK19H,EAAQktB,MAAM7sB,KAIhC27G,SAAU,SAASv+G,GACf,IAAI2C,EAAS3E,EAAEgC,EAAE2C,QACb6/B,EAAUxiC,EAAEwiC,QACZ4gR,EAAezgT,EAAO+E,QAAQ4zN,mBAC9B+nF,EAAmB1gT,EAAOiF,GAAG0zN,GAAM2gF,GAEvC,IAAK5gT,KAAKkH,QAAQw8S,gBAAkBp8S,EAAOiF,GAAG,oBAAsB46B,IAAYjd,EAAKM,KAAOu9R,EAAavgT,OAAS,EAG9G,OAFA7C,EAAEs1B,uBACFj6B,KAAKioT,uBAAuBF,GAI3BzgT,EAAO8kB,SAAS00R,MAIhB9gT,KAAKkH,QAAQw8S,eAAiBv8Q,IAAYjd,EAAKK,OAASjjB,EAAO8kB,SAASy0R,GACzE7gT,KAAKkoT,qBAAqB5gT,GACnB0gT,IAAqBrjT,EAAEw8M,QAAUh6K,IAAYjd,EAAKU,MAAQuc,IAAYjd,EAAKK,OAAS4c,IAAYjd,EAAKa,UAC5G/qB,KAAKmoT,iBAAiBxjT,EAAGwiC,GAClBA,IAAYjd,EAAKY,KACxB9qB,KAAKooT,eAAe9gT,EAAQ3C,GACrBwiC,IAAYjd,EAAKW,IACxB7qB,KAAKqoT,cAAc/gT,EAAQ3C,GACnB3E,KAAKkH,QAAQw8S,eAAkBv8Q,IAAYjd,EAAKS,OAASwc,IAAYjd,EAAKO,MAClFzqB,KAAKsoT,cAAcnhR,EAASxiC,KAIpCujT,qBAAsB,SAAS5gT,GAC3B,IAAIihT,EAAiBjhT,EAAOyuB,KAAK6rR,2CAAuEZ,GAEpGuH,EAAe/gT,OAAS,IACxBF,EAAOwb,KAAKsO,GAAW,GAEvBm3R,EAAezlS,KAAKsO,EAAU,GAC9Bm3R,EAAer+S,QAAQE,QAAQy8R,KAIvCohB,uBAAwB,SAASF,GAC7B,IAEI3xR,EAFAoyR,EAAcT,EAAahyR,KAAK0rR,GAChC8G,EAAiBR,EAAahyR,KAAK6rR,2CAAuEZ,GAG9G,GAAIwH,EAAYhhT,OAAS,IACrB4uB,EAAiBz1B,EAAMy1B,eAAeoyR,IAElB,CAChB,GAAIpyR,EAAeutR,cAAgBvtR,EAAeutR,aAAar3S,UAC3D,OAEAy7S,EAAajlS,KAAKsO,EAAU,GAC5B22R,EAAa39S,QAAQy8R,GACrBkhB,EAAahyR,KAAK6rR,GAAiB9+R,KAAKsO,GAAW,GAK3Dm3R,EAAe/gT,OAAS,IACxBugT,EAAajlS,KAAKsO,EAAU,GAC5B22R,EAAa39S,QAAQy8R,GACrB0hB,EAAezlS,KAAKsO,GAAW,KAIvCg3R,eAAgB,SAAS9gT,EAAQ3C,GAC7B,IAAIyvB,EAAQp0B,KAAKskT,eAEbh9S,EAAOiF,GAAG0zN,GAAM+gF,IAAiB15S,EAAOiF,GAAG+0S,KAI/CthT,KAAKqkT,eAAejwR,EAAMlqB,SAC1BkqB,EAAMlqB,QAAQE,QAAQy8R,GACtBliS,EAAEwE,mBAGNk/S,cAAe,SAAS/gT,EAAQ3C,GAC5B,IACIw9B,EADA/N,EAAQp0B,KAAKskT,eAGbh9S,EAAOiF,GAAG0zN,GAAM+gF,IAAiB15S,EAAOiF,GAAG+0S,KAM1B,KAFrBn/Q,EAAO/N,EAAM+N,QAEJn1B,UACLm1B,EAAO/N,EAAM0D,GAAG1D,EAAM5sB,OAAS,IAGnCxH,KAAKqkT,eAAeliR,GACpBA,EAAK/3B,QAAQy8R,GACbliS,EAAEwE,mBAGNm/S,cAAe,SAASnhR,EAASxiC,GAC7B,IACI0gE,EADApxB,EAAYj0C,KAAKumO,QAAU,EAAI,EAG/Bp/L,IAAYjd,EAAKO,OACjBwpB,IAAa,GAGjBoxB,EAAO1iE,EAAE3C,KAAKynT,gBAAgB9iT,EAAE2C,OAAQ2sC,IACxCj0C,KAAKqkT,eAAeh/O,GACpBA,EAAKj7D,QAAQy8R,GAEbliS,EAAEwE,kBAGNg/S,iBAAkB,SAASxjT,EAAGwiC,GACtBA,IAAYjd,EAAKa,UACjBpmB,EAAEwE,iBAGNnJ,KAAK2jT,aAAapyN,QAGtBk3N,eAAgB,SAASC,EAAaz+R,GAClC,MAAO,CACH,aAAcA,EAASy+R,EAAYtmT,MAAQsmT,EAAYn7S,UACvDwwC,MAAS9zB,EAASy+R,EAAYtmT,MAAQsmT,EAAYn7S,UAClD,eAAgBm7S,EAAYhjQ,QAC5B,eAAgBgjQ,EAAYxhT,QAC5B,cAAewhT,EAAYC,OAC3B,gBAAiBD,EAAYn7S,SAC7B,aAAcm7S,EAAYhgT,MAC1B,cAAeggT,EAAYE,kBAInCC,cAAe,SAAShzC,EAAW5rP,GAC/B,IAII/iB,EAJAe,EAAOjI,KACPslT,EAAmBzvC,EAAUyvC,iBAC7BwD,EAAoBxD,EAAiBr7R,SACrC4/B,EAAalnD,EAAEI,OAAO,GAAIkF,EAAKwgT,eAAe5yC,EAAW5rP,GAAW4rP,EAAUhsN,YA8ClF,OA3CIgsN,EAAUuvC,oBACVl+S,EAAU2uQ,EAAU3uQ,SAAW,GAE3B2uQ,EAAUyvC,iBAAiBx0R,aAC3B5pB,EAAQA,QAAU2uQ,EAAUyvC,iBAAiBx0R,YAE7C+kP,EAAUyvC,iBAAiB58S,QAC3BxB,EAAQ+mD,QAAU4nN,EAAUyvC,iBAAiB58S,OAG7CjI,OAAOypB,KAAKhjB,GAASM,OAAS,IAC9BquQ,EAAUuvC,kBAAkBl+S,QAAU5D,KAAKkP,UAAUtL,IAGzD2uQ,EAAUuvC,kBAAoBn9S,EAAKk/S,SAAStxC,EAAUuvC,kBAAmBn7R,IAGzE6+R,GACAroT,OAAOypB,KAAK4+R,GAAmBxnT,SAAQ,SAAUiQ,GAC7CskQ,EAAUyvC,iBAAiBr7R,SAAS1Y,GAAO0Y,EAAS6+R,EAAkBv3S,KAASu3S,EAAkBv3S,MAIzG9Q,OAAOypB,KAAKo7R,GAAkBhkT,SAAQ,SAAUiQ,GAChC,cAARA,IACAskQ,EAAUyvC,iBAAiBA,EAAiB/zS,IAAQ,SAAUlQ,GAC1D4G,EAAKmC,QAAQ0yC,EAAQ,CAAEx1C,OAAQjG,EAAGiG,QAAUjG,EAAGiJ,OAAOuB,eAK9Dy5S,EAAiBx0R,YAAcw0R,EAAiBx0R,WAAWtpB,SAC3DquQ,EAAUyvC,iBAAiBx0R,WAAaw0R,EAAiBx0R,WAAWxW,KAAI,SAAU/S,GAK9E,OAJIA,EAAEnF,MAAQ6nB,EAAS1iB,EAAEnF,QACrBmF,EAAEq5B,KAAO3W,EAAS1iB,EAAEnF,OAGjBmF,MAIfsuQ,EAAUhsN,WAAaA,EAEhBgsN,GAGXsxC,SAAU,SAASnhC,EAAM/7P,EAAUo9R,GAC/B,IAEmBqB,EAAa7+P,EAF5B5hD,EAAOjI,KAIX,OAHckD,MAAMD,QAAQ+iR,GAIjB,CACHtgR,KAAM,cACNqoS,QAAS/nB,EAAK1rQ,KAAI,SAAUnV,GAAK,OAAO8C,EAAKk/S,SAAShiT,EAAG8kB,EAAUo9R,QAK3ErhC,EADgBrjR,EAAEgF,cAAcq+Q,IAAsC,IAA7BvlR,OAAOypB,KAAK87P,GAAMx+Q,QAAgBw+Q,EAAK5jR,KACzD4jR,EAAK5jR,KAAO4jR,EACnC0iC,EAAc/lT,EAAEgF,cAAcq+Q,GAAQA,EAAOrjR,EAAEI,OAAO,GAAIskT,EAAarhC,IAEvEn8N,EAAalnD,EAAEI,OAAO,GAAIkF,EAAKwgT,eAAeC,EAAaz+R,GAAWy+R,EAAY7+P,YAElFlpD,EAAM6H,WAAWkgT,EAAa,CAC1B9nR,KAAM3W,EAASy+R,EAAYtmT,MAAQsmT,EAAYn7S,UAC/Cs8C,WAAYA,IAGS,cAArB6+P,EAAYhjT,KACRgjT,EAAYt0R,MACLs0R,EAAYt0R,MAAM9Z,KAAI,SAAUnV,GAAK,OAAO8C,EAAK4gT,cAAc1jT,EAAG8kB,MAElEhiB,EAAK4gT,cAAcH,EAAaz+R,IAEf,gBAArBy+R,EAAYhjT,aACZgjT,EAAY7+P,WAAWpjD,GAC9BiiT,EAAY3a,QAAU2a,EAAY3a,QAAQzzR,KAAI,SAAUnV,GAAK,OAAO8C,EAAKk/S,SAAShiT,EAAG8kB,EAAUo9R,OACnE,gBAArBqB,EAAYhjT,aACZgjT,EAAY7+P,WAAWpjD,GAC9BiiT,EAAYhD,YAAcgD,EAAYhD,YAAYwB,SAAQ,SAAU/hT,GAAK,OAAO8C,EAAKk/S,SAAShiT,EAAG8kB,EAAUo9R,OAC/E,gBAArBqB,EAAYhjT,MAA0BgjT,EAAYtD,oBACzDsD,EAAYtD,kBAAoBn9S,EAAKk/S,SAASuB,EAAYtD,kBAAmBn7R,WAG1Ey+R,EAAYtmT,KAEZsmT,KAGXK,gBAAiB,SAASpkT,GACtB,IAIIqkT,EAAcC,EAJdj6Q,EAAOrsC,EAAEgC,EAAEqqC,MACXrf,EAAKqf,EAAKlsB,KAAK4rL,IACf+2G,EAAYz2Q,EAAKjZ,KAAKkqM,GAAM8gF,GAC5B75N,EAAYl4C,EAAKnhC,KAAK0zS,GAGtB5xR,GAAMA,EAAGha,QAAQgrO,cAAoB,IACrChxN,EAAKA,EAAGltB,QAAQk+O,YAAiBwhE,KAGjCsD,EAAUj+S,QACN0/E,GACAlnF,KAAK2jT,aAAa93S,QAAQkqB,KAAK,eAAiBmxD,EAAY,KAAKlkF,MAAK,SAAUuE,EAAGslB,GAC/E,IAAIpZ,EAAU9Q,EAAEkqB,GAEhBpZ,EAAQqP,KAAKq+R,GAAc,GAC3B1tS,EAAQsiB,KAAKkqM,GAAM8gF,GAAkB50R,YAAYk0R,MAIzD2I,IAAe9hO,IAAoBu+N,EAAUr5R,SAASi0R,GAEtDoF,EAAUz9R,YAAYq4R,EAAgB2I,GACtCh6Q,EAAKlsB,KAAKq+R,EAAc6H,IAExBC,EAAOjpT,KAAK6L,QAAQkqB,KAAK,aAAeiZ,EAAKnhC,KAAKu0S,IAAO,MAEhD56S,SACDyhT,EAAK58S,QAAQ4zN,GAAMggF,GAAcz4S,OACzByhT,EAAK58S,QAAQ4zN,GAAMggF,GAAcpyS,KAAK20S,IACxCp8Q,OAAO6iR,IAET/hO,GACAlnF,KAAK6L,QAAQkqB,KAAK,eAAiBmxD,EAAY,KAAKlkF,MAAK,SAAUuE,EAAGslB,GAClElqB,EAAEkqB,GAAIhf,KAAK00S,IAAiBp6R,QAAO,MAI3C8gS,EAAKp7S,KAAK00S,IAAiBp6R,QAAO,KAI1CnoB,KAAKoK,QAAQmiS,EAAQ,CACjB58Q,GAAIqf,EAAKlsB,KAAK4rL,IACdpnM,OAAQ0nC,EACRuiC,QAASy3O,KAGbhpT,KAAKoK,QAAQ01N,EAAO,CAChBnwM,GAAIA,EACJroB,OAAQ0nC,KAKpB23Q,SAAU,SAAShiT,GACf,IAAIkoB,EAAKloB,EAAE2C,OACPm+S,EAAY54R,EAAGT,SAAS4zR,GACxB9rP,EAAQrnC,EAAGhf,KAAK0zS,GAEfkE,GACDzlT,KAAKoK,QAAQ01N,EAAO,CAAEnwM,GAAIhrB,EAAEgrB,GAAIroB,OAAQ3C,EAAE2C,OAAQqhB,cAAehkB,EAAEgkB,eAAiBhkB,EAAEya,QAGtFqmS,GAAavxP,GAASl0D,KAAK6L,QAAQkqB,KAAK,eAAiBm+B,EAAQ,KAAK1sD,OAAS,GAC3EqlB,EAAGT,SAASi0R,IACZ17S,EAAEwE,kBAKd49S,SAAU,SAASpiT,GACX3E,KAAKoK,QAAQylF,EAAO,CAAE/8D,OAAQnuB,EAAE2F,UAChC3F,EAAEwE,kBAIVw8S,kBAAmB,SAAShhT,EAAG2kB,EAAOnB,GAClC,IAAIgpG,EAAWnxH,KAEXgvC,EAAOrsC,EAAEgC,EAAEqqC,MACXy2Q,EAAYz2Q,EAAKjZ,KAAKkqM,GAAM8gF,GAAkBv5S,OAAS,EACvDmoB,EAAKqf,EAAKlsB,KAAK4rL,IAEf/+K,GAAMA,EAAGha,QAAQgrO,cAAoB,IACrChxN,EAAKA,EAAGltB,QAAQk+O,YAAiBwhE,KAGjC74R,GACAA,EAAM9f,KAAKxJ,KAAXspB,CAAiB,CACblK,MAAOza,EAAEya,MACTuQ,GAAIA,EACJroB,OAAQ0nC,IAIZy2Q,GAAat9R,GACb4Q,YAAW,WACP5Q,EAAO3e,KAAK2nH,EAAZhpG,CAAsB,CAClB/I,MAAOza,EAAEya,MACTuQ,GAAIA,EACJroB,OAAQ0nC,EACRuiC,QAASviC,EAAKjZ,KAAKkqM,eAAsBz4N,OAAS,QAMlEs/S,QAAS,SAASniT,GACV3E,KAAKoK,QAAQwlF,EAAM,CAAE98D,OAAQnuB,EAAE2F,UAC/B3F,EAAEwE,kBAIV09S,UAAW,SAASliT,GAChB,IAAIukT,EAASlpT,KAAK2jT,aAAe3jT,KAAK2jT,aAAa93S,QAAUlJ,EAAEw/S,IAE/Dx9S,EAAE2F,OAAOuB,QAAQspC,WAAWnyC,MAAK,SAAUuE,EAAGslB,GAC1C,IAAIpZ,EAAU9Q,EAAEkqB,GACZwgC,EAAM55C,EAAQ5F,KAAKu0S,IACnB3wO,EAAWh+D,EAAQ2Y,SAASi0R,GAEhC6I,EACKnzR,KAAK,aAAes3B,EAAM,KAC1BvqC,KAAKq+R,EAAc1vO,GACnB17C,KAAKkqM,GAAM8gF,GACX/4R,YAAYq4R,EAAgB5uO,MAGrCzxE,KAAKoK,QAAQmiS,EAAQ,CACjB58Q,GAAIhrB,EAAE2C,OAAOwb,KAAK4rL,IAClBpnM,OAAQ3C,EAAE2C,OACViqE,QAAS5sE,EAAE2C,OAAO8kB,SAASi0R,MAInCuG,UAAW,SAASjiT,GAChB,IAGIwkT,EAHAlhT,EAAOjI,KACP6sB,EAAKloB,EAAE2C,OACP4sD,EAAQrnC,EAAGhf,KAAK0zS,GAIhBt5S,EAAK07S,eACLwF,EAAelhT,EAAK07S,aAAa93S,QAAQkqB,KAAK,aAAelJ,EAAG/J,KAAK0+R,GAAY,KACjEv5S,EAAK07S,aAAa93S,QAAQkqB,KAAK,eAAiBm+B,EAAQ,KAE1DpxC,KAAKq+R,GAAc,GAAOprR,KAAKkqM,GAAM8gF,GAAkB50R,YAAYk0R,GACjF8I,EAAarmS,KAAKq+R,GAAc,GAAMprR,KAAKkqM,GAAM8gF,GAAkBx8R,SAAS87R,IAG5EnsP,GACAjsD,EAAK4D,QAAQkqB,KAAK,eAAiBm+B,EAAQ,KAAKlxD,MAAK,SAAUuE,EAAGynC,GAC1DA,IAASniB,EAAG,IACZlqB,EAAEqsC,GAAMnhC,KAAK00S,IAAiBp6R,QAAO,MAKjDnoB,KAAKoK,QAAQmiS,EAAQ,CAAE58Q,GAAIhrB,EAAEgrB,GAAIroB,OAAQ3C,EAAE2C,OAAQiqE,QAAS5sE,EAAE4sE,QAAS5oD,cAAehkB,EAAEgkB,eAAiBhkB,EAAEya,SAG/GgqS,cAAe,SAAuBh1R,EAAOi1R,GAGzC,IAFA,IAAgB51S,EAEPlM,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,KAC9BkM,EAAU2gB,EAAM7sB,IACKsiD,aAGjBz1B,EAAM7sB,GAAGsiD,WAAa,IAG1Bz1B,EAAM7sB,GAAGsiD,WAAW23P,GAAY7gT,EAAM8uB,OACtC2E,EAAM7sB,GAAGsiD,WAv6CA,kBAu6C6Bw/P,EAElC51S,EAAQkc,KACRyE,EAAM7sB,GAAGsiD,WAAa,GAAIz1B,EAAM7sB,GAAGooB,IAGnClc,EAAQitN,SACHtsM,EAAM7sB,GAAGsiD,WAAWq+O,QACrB9zQ,EAAM7sB,GAAGsiD,WAAWq+O,MAAQia,IAGhC/tR,EAAM7sB,GAAGsiD,WAAWq+O,OAAUn1R,aAA+BwtS,GAIrE,OAAOnsR,GAGXwwR,gBAAiB,SAAS19S,GACtB,IAGIggF,EAHAr3E,EAAW3I,EAAQ2I,SACnBg1S,EAAmB39S,EAAQ29S,iBAC3Bx3P,EAAM1sD,EAAM8uB,OAoChB,OAjCA9sB,EAAEI,OAAOmE,EAAS,CACdmmD,IAAKA,EACLi8P,QAAStpT,KAAKqtD,MAGdnmD,EAAQw+S,YACRx+S,EAAQw+S,YAAc1lT,KAAKopT,cAAcliT,EAAQw+S,YAAar4P,GACvDnmD,EAAQ6mS,SAAW7mS,EAAQ6mS,QAAQvmS,SAC1CN,EAAQ6mS,QAAU/tS,KAAKopT,cAAcliT,EAAQ6mS,QAAS1gP,GAElDnmD,EAAQ6mS,QAAQ1hP,OAAM,SAAUlnC,GAAK,OAAOA,EAAEsgS,cAC9Cv+N,EAAYhgF,EAAQ6mS,QAAQ,GAAG75O,QAEZhtD,EAAQ6mS,QAAQ1hP,OAAM,SAAUlnC,GAAK,OAAOA,EAAE+uC,QAAUgzB,KACvEhgF,EAAQ6+B,UA3+Cf,SA6+CO7+B,EAAQ6+B,UA5+Cb,WA++CC7+B,EAAQ6+B,UA9+Cb,QAk/CEl2B,IAAag1S,GAAqB39S,EAAQxB,OAAS07S,EACpDl6S,EAAQylB,SAAWo1R,EACX76S,EAAQylB,WAChBzlB,EAAQylB,SAAWq1R,IAGnB96S,EAAQqgB,SAAW3kB,IACnBsE,EAAQggB,QAAUhgB,EAAQqgB,QAGvBrgB,GAGXqiT,gBAAiB,WACb,IAAIthT,EAAOjI,KAEPwpT,EADQvhT,EAAKs+N,OACiB,OAAS,QAE3Ct+N,EAAKu7S,eAAiB7gT,EAAE,gFACxBsF,EAAK4D,QAAQkuC,OAAO9xC,EAAKu7S,gBACzBv7S,EAAKu7S,eAAeiG,YAAY,CAC5BnyN,KAAM,gBACNtkE,SAAU,OACVvjB,KAAMxH,EAAKf,QAAQuI,OAGlBxH,EAAKf,QAAQw8S,eACdz7S,EAAKu7S,eAAe1gS,KAAKsO,GAAW,GAGxCnpB,EAAK07S,aAAe,IAAIhjT,EAAMgpB,GAAG20R,YAAY37S,EAAE,QAAS,CACpD8M,KAAMxH,EAAKf,QAAQuI,KACnBwzG,OAAQ,YACRrqE,OAAQ,UAAY4wQ,EACpB18S,SAAU,OAAS08S,EACnB9K,eAAe,EACfp3S,OAAQW,EAAKu7S,eACbjyN,KAAM,SAAS5sF,GACPsD,EAAKmC,QAAQy3S,IACbl9S,EAAEwE,kBAGVm8C,MAAO,SAAS3gD,GACRsD,EAAKmC,QAAQ03S,GACbn9S,EAAEwE,kBAEFlB,EAAKo8S,eAAep8S,EAAKu7S,gBACzBv7S,EAAKu7S,eAAep5S,QAAQy8R,OAKxC5+R,EAAK07S,aAAa93S,QAAQiX,KAAKo/R,GAAgBliT,KAAKqtD,KAEpDt0B,YAAW,WACP9wB,EAAK07S,aAAan6S,KAAKuyE,EAAQ9zE,EAAK8gT,gBAAgBv/S,KAAKvB,QAIjEs+S,WAAY,SAAS16S,EAAS26S,GAC1B,IACIkD,EACAjlS,EAFAxc,EAAOjI,KAIX6L,EAAQQ,QAAQ,yBAAyB0pB,KAAK,SAASgB,SACvD2yR,EAAgB79S,EAAQmgB,KAAK,6CAA6C7f,SAE1EsY,EAAQ9hB,EAAE,iDAAmD6jT,EAAa,OACrE1jS,KAAK,eAAe,GACpBnZ,IAAI,UAAU,SAAUhF,GACrBsD,EAAKmC,QAAQ0yC,EAAQ,CACjBx1C,OAAQuE,EACRnD,MAAO/D,EAAE2C,OAAOqiT,MAAM,KAG1B1hT,EAAKs+S,WAAW16S,EAAS26S,MAE5Br5Q,SAASu8Q,GAEd79S,EAAQotB,IAAI+mM,GAAS/2M,GAAG+2M,GAAS,SAAUr7N,GACnCA,EAAEwiC,UAAYxmC,EAAMupB,KAAKK,OACzB9F,EAAMra,QAAQ01N,OAK1BukF,eAAgB,SAASuF,IACc,IAA/B5pT,KAAKkH,QAAQw8S,gBACb1jT,KAAKoM,QAAQ2pB,KAAK6rR,GAAiB9+R,KAAKsO,GAAW,GACnDw4R,EAAQ9mS,KAAKsO,EAAU,KAI/Bi9P,WAAY,WACR,IAAIpmR,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEnB5D,EAAKshT,kBACL19S,EAAQ0Y,SAvmDQ,uBAymDhBtc,EAAK84N,eAAiBpgO,EAAMm4B,UAAS,WACjC7wB,EAAKshB,aAIbwI,QAAS,SAASptB,GACd,IAAIklT,EAAiBllT,EAAEqI,MACnBZ,EAAUpM,KAAK6L,QACfi+S,EAAmB19S,EAAQ2pB,KAAK,6BAA6B9oB,IAAIb,EAAQ2pB,KAAK,iCAE7E/1B,KAAKkH,QAAQk8S,YAIlBpjT,KAAK2jT,aAAar+P,QAEdwkQ,EAAiBtiT,OAAS,GAC1BsiT,EAAiB9mT,MAAK,SAAUuE,EAAGslB,GAC/BlsB,EAAMy1B,eAAezzB,EAAEkqB,IAAKy4B,WAIpCtlD,KAAKujT,QAAQsG,GACb7pT,KAAKosQ,SAASy9C,GACd7pT,KAAKyjT,0BAGTF,QAAS,SAASsG,GACd,IAAIE,EACAC,EACA5wS,EAEJ,GAAIywS,EAAiB7pT,KAAKgnT,iBAGtB,IAAK,IAAIz/S,GAFTyiT,EAAkBhqT,KAAK6L,QAAQspC,SAAS,0CAA4CyrQ,EAAkB,MAEzEp5S,OAAS,EAAGD,GAAK,IAC1CwiT,EAAiBC,EAAgBlyR,GAAGvwB,KAEhCsiT,EAAiB7pT,KAAKgnT,mBAHmBz/S,KAMzC6R,EAAgB2wS,EAAeh0R,KAAK,iBAAmBg0R,EAAex9S,GAAG,gBAAkBw9S,EAAiBpnT,EAAEw/S,KAE5F36S,OAAS,IACvB4R,EAAc0J,KAAKsO,GAAW,GAC9BpxB,KAAK6L,QAAQspC,SAAS8qL,GAAM2gF,GAAiB99R,KAAKsO,EAAU,IAGhEpxB,KAAK4nT,UAAUmC,IAM/BpmF,UAAW,SAAS30L,EAAM66Q,GACtB,IAAI5hT,EAAOjI,KACP6Q,EAAMoI,SAASjZ,KAAK6L,QAAQe,IAAI,OAAQ,KAAO,EAGnDoiC,EAAK7iB,YAAYm0R,GACjB,IAAI2J,EAAiBl+S,EAAWijC,GAAM,GAAQn+B,EAG9C,OAFAm+B,EAAKzqB,SAAS+7R,MAEVtxQ,EAAKxnC,UAAWwnC,EAAK5iB,SAASg0R,IAAiByJ,EAAiB7pT,KAAKgnT,iBAAmBiD,MACxFj7Q,EAAK7iB,YAAYm0R,IAEkB,IAA/BtgT,KAAKkH,QAAQw8S,cACb10Q,EAAKjZ,KAAK6rR,GAAiB9+R,KAAKsO,GAAW,GAEvC4d,EAAKziC,GAAG,kBACRyiC,EAAK1d,WAAWF,GAIpBpxB,KAAK2jT,eACD30Q,EAAK5iB,SAAS8zR,IAAiBlxQ,EAAK5iB,SAAS+zR,KACzCnxQ,EAAK5iB,SAAS8zR,IACdlxQ,EAAOA,EAAKmG,WAAWrd,GAAG,IACZjqB,KAAKy0S,IAEVtzQ,EAAKnhC,KAAKw0S,KAGhB3Y,KAAKn+N,KAAKp2B,WAAWnyC,MAAK,SAAUuE,EAAGslB,GAC1C5kB,EAAK6/S,cAAcnlT,EAAEkqB,OAGzB5kB,EAAK6/S,cAAc94Q,IACZA,EAAK5iB,SAAS6zR,GACrBjxQ,EAAKmG,WAAWnyC,MAAK,SAAUuE,EAAGslB,GAC9B5kB,EAAK6/S,cAAcnlT,EAAEkqB,OAGzB5kB,EAAK6/S,cAAc94Q,KAIpB,IAMf64Q,cAAe,SAAS74Q,GACpB,IAAI+4P,EAAW/nS,KAAK2jT,aAAa93S,QAAQkqB,KAAK,iBAAmBiZ,EAAKnhC,KAAKu0S,IAAO,MAE7Era,EAAS37Q,SAASm0R,IACnBxY,EAAS57Q,YAAYm0R,IAI7Bl0C,SAAU,SAASy9C,GACf,IACIE,EACAG,EAFA1G,EAAiBxjT,KAAK6L,QAAQspC,SAAS8qL,GAAM2gF,GAIjD,GAAIiJ,EAAiB7pT,KAAKgnT,iBAAkB,CACxCkD,EAAiBlqT,KAAK6L,QAAQspC,SAAS8qL,kCAEvC,IAAK,IAAI14N,EAAI,EAAGA,EAAI2iT,EAAe1iT,SAC/BuiT,EAAiBG,EAAepyR,GAAGvwB,KAE/BsiT,EAAiB7pT,KAAKgnT,mBAAqBhnT,KAAK2jO,UAAUomF,EAAgBF,IAHvCtiT,OAS1CvH,KAAKkH,QAAQw8S,eAAiBF,EAAej3S,GAAG,kBACjDi3S,EAAe1gS,KAAKsO,GAAW,GAC/BpxB,KAAKqkT,eAAerkT,KAAKskT,eAAep6S,WAIhDo5S,UAAW,WACP,IAAIzV,EAAiB7tS,KAAKoM,QAAQ2pB,KAAK6rR,wCACnCuI,EAAiBtc,EAAe3jS,SAED,IAA/BlK,KAAKkH,QAAQw8S,eACb7V,EAAe/qR,KAAKsO,GAAW,GAC/B+4R,EAAernS,KAAKsO,EAAU,IAE9BpxB,KAAKoM,QAAQ2pB,KAAK,kCAAkCzE,WAAWF,IAIvEqyR,sBAAuB,WAGEzjT,KAAK2jT,aAAa93S,QAAQspC,SAAS,6BAA+C3tC,OAAS,EAG5GxH,KAAKwjT,eAAe52S,IAAI,CACpBqgF,WAAY,UACZjgF,MAAOm1S,KAGXniT,KAAKwjT,eAAe52S,IAAI,CACpBqgF,WAAY37C,EACZtkC,MAAO,WAMvBrM,EAAM8hT,QAAU,CACZ2H,KAAMzpT,EAAMiH,MACZyiT,eAAgB1pT,EAAMiH,MACtB0iT,aAAc3pT,EAAMiH,MACpB2iT,cAAe5pT,EAAMiH,MACrB4iT,kBAAmB,WAAc,OAAO,OAG5C7pT,EAAM+xB,cAAcyY,eAAe,UAAW,cAE9CxqC,EAAMgpB,GAAGqN,OAAOmsR,IA5yDpB,CA6yDGriT,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GACX+G,EAAS/G,EAAG+G,OACZosB,EAAS,SACT8rP,EAAW,WACXz6N,EAAU,UAEVs8O,EAAkB/5R,EAAO3tB,OAAO,CAChCoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAKkwE,WAELlwE,EAAKyiT,gBAELziT,EAAKitN,gBAELv0N,EAAM6zB,OAAOvsB,EAAMtH,EAAMgpB,KAG7Btf,OAAQ,CACJyyC,GAGJ51C,QAAS,CACL9E,KAAM,mBAGVyuF,GAAI,wBACJ85N,aAAchoT,EAAEQ,KAEhB4uE,MAAO,SAASR,GACZ,IAAItpE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAAQ,GAE3B,GAtCZ,YAsCgB0lE,EACA,OAAO1lE,EAAQ0lE,QAGf1lE,EAAQ0lE,UAAYA,IACpBtpE,EAAKf,QAAQqqE,QAAU1lE,EAAQ0lE,QAAUA,GAGzCA,EACAtpE,EAAK4D,QAAQiX,KAAKqrD,EAASA,GAE3BlmE,EAAK4D,QAAQsjB,KAAKg/C,GAAS,IAInCnsE,QAAS,WACL0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAKoM,QAAQ6sB,IAAIj5B,KAAK6wF,KAG1BtpE,OAAQ,SAASA,GACb,IAAI1b,EAAU7L,KAAK6L,aAEE,IAAV0b,IACPA,GAAS,GAGbvnB,KAAKkH,QAAQggB,QAAUK,EAEnBA,EACA1b,EAAQsjB,KAAKy5Q,GAAU,GAEvB/8R,EAAQiX,KAAK8lR,EAAUA,IAI/BzgR,OAAQ,WACOnoB,KAEN+xE,OAFM/xE,KAEM6L,QAAQ,GAAG0lE,UAGhC2jJ,cAAe,WACXl1N,KAAK6L,QAAQod,GAAG6zB,EAAS98C,KAAK6wF,GAAI7wF,KAAK8+D,QAAQt1D,KAAKxJ,QAGxD8+D,QAAS,WACL,IAAIyS,EAAUvxE,KAAK6L,QAAQ,GAAG0lE,QAE9BvxE,KAAKoK,QAAQ0yC,EAAQ,CAAEy0B,QAASA,KAGpCm5O,cAAe,WACX,IAAIziT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAAQ,GACvB3E,EAAUe,EAAKf,QAEK,OAApBA,EAAQqqE,UACRrqE,EAAQqqE,QAAU1lE,EAAQ0lE,SAG9BtpE,EAAK8pE,MAAM7qE,EAAQqqE,SAEnBrqE,EAAQggB,QAAUhgB,EAAQggB,UAAYjf,EAAK4D,QAAQiX,KAAK8lR,GACxD3gS,EAAKsf,OAAOrgB,EAAQggB,UAGxBixD,SAAU,WACN,IAAIlwE,EAAOjI,KACPkH,EAAUe,EAAKf,SAInB0jT,EAHkB3iT,EAAK0iT,cAGX1iT,EAAK4D,QAASlJ,EAAEI,OAAO,GAAImE,IACvCe,EAAK4D,QAAQsgB,YAAY,0BAEzBlkB,EAAKmE,QAAUnE,EAAK4D,WAI5B8d,EAAGqN,OAAOyzR,GAtHd,CAuHG3pT,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfu1F,EAAWv1F,EAAMmP,KAAKomF,SAoBtB20N,EAAY30N,EAASnzF,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KACXk2F,EAASnuF,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACrCe,EAAKkwE,WACLlwE,EAAKmuF,eAETlvF,QAAS,CACL2sB,MAAO,KACPi3R,cAAe,QACf33R,QAAS,KACTiwM,SAAS,GAEbjrJ,SAAU,WACN,IAAIlwE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAAQ,GACvB3E,EAAUe,EAAKf,QACfyoF,EAAY9jF,EAAQ8jB,GAExB1nB,EAAKmE,QAAUnE,EAAK4D,QACf0Y,SAASrd,EAAQ6jT,YACjB57R,KAAK,OAAQjoB,EAAQxB,OAErBiqF,GAAezoF,EAAQ2sB,QACxBhoB,EAAQ8jB,GAAKggE,EAAYhvF,EAAM8uB,QAG7BvoB,EAAQ2sB,QACV5rB,EAAK+iT,QAAUroT,EAAE,eAAiBgtF,EAAY,YAAczoF,EAAQ+jT,WAAa,MAE7E/jT,EAAQk8N,QACRn7N,EAAK+iT,QAAQpqR,KAAK15B,EAAQ2sB,OAE1B5rB,EAAK+iT,QAAQl7S,KAAK5I,EAAQ2sB,OAG1B3sB,EAAQisB,SACRlrB,EAAK+iT,QAAQloS,KAAK,KAAM5b,EAAQisB,SAGhCjsB,EAAQm5C,UACRp4C,EAAK+iT,QAAQjxQ,OAAO,gBAAkB7yC,EAAQgkT,cAAgB,KAAOhkT,EAAQikT,aAAe,WAGhGljT,EAAK4D,QAAQ3E,EAAQ4jT,eAAe7iT,EAAK+iT,WAGjDl7S,KAAM,WACF,IAAI7H,EAAOjI,KACPm5E,EAAuC,UAA/BlxE,EAAKf,QAAQ4jT,cACrBM,EAAcl1N,EAASnuF,GAAG+H,KAAKvF,KAAKtC,GAExC,OAAKA,EAAK+iT,QAIN7xO,EACOiyO,EAAcnjT,EAAK+iT,QAAQ,GAAG10N,UAGlCruF,EAAK+iT,QAAQ,GAAG10N,UAAY80N,EAPxBA,KAWfC,EAAeR,EAAU9nT,OAAO,CAChCoF,KAAM,SAAS0D,EAAS3E,GAEpB2jT,EAAU9iT,GAAGI,KAAKoC,KADPvK,KACkB6L,EAAS3E,GAD3BlH,KAENo2F,eAETlvF,QAAS,CACL9E,KAAM,eACN2oT,WAAY,aACZE,WAAY,mBACZC,cAAe,mBACfC,aAAc,aACdzlT,KAAM,WACNiT,QAAS,SACTlJ,KAAM,SACN0mF,eAAgB,CAAE,OAAQ,cAI9Bm1N,EAAkBT,EAAU9nT,OAAO,CACnCoF,KAAM,SAAS0D,EAAS3E,GAEpB2jT,EAAU9iT,GAAGI,KAAKoC,KADPvK,KACkB6L,EAAS3E,GAD3BlH,KAENo2F,eAETlvF,QAAS,CACL9E,KAAM,kBACN2oT,WAAY,UACZE,WAAY,gBACZC,cAAe,mBACfC,aAAc,aACdzlT,KAAM,QACN+J,KAAM,SACN0mF,eAAgB,CAAE,WAI1BxzF,EAAEI,OAAOpC,EAAMmP,KAAM,CACjBy7S,eAxHiB,SAAS1/S,EAAS3E,GAMnC,OALIG,UAAU,KAAOzE,GAAeD,EAAEgF,cAAcN,UAAU,OAC1DH,EAAU2E,EACVA,EAAUlJ,EAAE,cAGT,IAAK0oT,EAAax/S,EAAS3E,GAAU4I,QAmH5C07S,kBAhHoB,SAAS3/S,EAAS3E,GAMtC,OALIG,UAAU,KAAOzE,GAAeD,EAAEgF,cAAcN,UAAU,OAC1DH,EAAU2E,EACVA,EAAUlJ,EAAE,cAGT,IAAK2oT,EAAgBz/S,EAAS3E,GAAU4I,QA2G/C+6S,UAAWA,EACXQ,aAAcA,EACdC,gBAAiBA,IAGrB3qT,EAAM+xB,cAAcyY,eAAe,eAAgB,eAEnDxqC,EAAM+xB,cAAcgY,eAAe,eAAgB,CAAC,CAChDvb,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAG/D1c,EAAM+xB,cAAcyY,eAAe,kBAAmB,YA1I1D,CA4IGrqC,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GAGX8hS,EAFkB9hS,EAAG8gS,gBAEM1nT,OAAO,CAClCmE,QAAS,CACL9E,KAAM,WACNmvE,QAAS,KACTrqD,SAAS,EACTk8M,SAAS,EACTvvM,MAAO,KACPlb,QAAS,SACTlJ,KAAM,UAGVk7S,aAAchqT,EAAMmP,KAAKy7S,eACzB16N,GAAI,iBAGJnoF,MAAO,SAASA,GAKZ,MAJqB,iBAAVA,IACPA,EAAmB,SAAVA,GAGN1I,KAAK+xE,MAAM3pE,MAAMpI,KAAM,CAAC0I,OAIvC/H,EAAM+xB,cAAcyY,eAAe,WAAY,eAE/CxqC,EAAM+xB,cAAcgY,eAAe,WAAY,CAAC,CAC5Cvb,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAG/DsM,EAAGqN,OAAOy0R,GApCd,CAqCG3qT,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClB/G,EAAKhpB,EAAMgpB,GACXknE,EAAK,sBAEL99E,EAAQ,UACR24S,EAAU,UACVC,EAAgB,aAChBC,EAAe,aACfC,EAAgB,aAEhBC,EAAgBp7R,EAAO3tB,OAAO,CAC9BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACnCA,EAAUvE,EAAEI,QAAO,EAAM,GAAImE,GAE7Be,EAAK6qB,OAAS7qB,EAAKf,QAAQ4rB,OAC3B7qB,EAAK8jT,cAAgB9jT,EAAK6qB,OAAO1mB,QAAQ,GAEzCnE,EAAK2V,UACL3V,EAAK44N,UAAU,CACXnwJ,SAAUzoE,EAAKf,QAAQ4rB,OAAO5rB,QAAQwpE,WAAa9tE,GAAcqF,EAAKf,QAAQ4rB,OAAO5rB,QAAQwpE,SAC7FrpD,QAASpf,EAAKf,QAAQ4rB,OAAO5rB,QAAQqgB,SAAW3kB,IAAgBqF,EAAKf,QAAQ4rB,OAAO5rB,QAAc,SAGlGe,EAAK8jT,cAAct/S,MAAMO,QACzB/E,EAAK4D,QAAQe,IAAI,QAAS3E,EAAK8jT,cAAct/S,MAAMO,OACnD/E,EAAK8jT,cAAct/S,MAAMO,MAAQ,QAGrC/E,EAAK4D,QAAQ0Y,SA5BQ,8BA8BrB5jB,EAAM6zB,OAAOvsB,IAGjBf,QAAS,CACL9E,KAAM,gBACN0wB,OAAQ,KACRk5R,kBAAkB,EAClBC,WAAY,SAAUh9R,GAGlB,OAFcA,EAAIpjB,QAEFqjB,QAIxBwhD,SAAU,SAASA,GACf1wE,KAAK6gO,UAAU,CACXnwJ,SAAUA,IAAa9tE,GAAqB8tE,EAC5CrpD,SAAS,KAIjBE,OAAQ,SAASA,GACbvnB,KAAK6gO,UAAU,CACXnwJ,UAAU,EACVrpD,UAAWE,EAASA,IAAW3kB,GAAqB2kB,MAI5D3J,QAAS,WACL,IAAI3V,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAEnBA,EACKsgB,YAAYpZ,GACZoZ,YAAYu/R,GAEbzjT,EAAKf,QAAQ+kT,WAAW,CAAEpgT,QAAS5D,EAAKf,QAAQ4rB,OAAOjnB,QAAS4oJ,SAAUxsJ,EAAK4D,WAC/EA,EAAQ0Y,SAASxR,IAGjB3D,SAASgK,gBAAkBnR,EAAKf,QAAQ4rB,OAAOjnB,QAAQ,IACnD5D,EAAKf,QAAQ4rB,OAAOrO,OAASrV,SAASgK,gBAAkBnR,EAAKf,QAAQ4rB,OAAOrO,MAAM,KAEtF5Y,EAAQ0Y,SAASmnS,IAIzB1pT,QAAS,WACMhC,KAEN6L,QAAQotB,IAAI43D,GACjBngE,EAAO3oB,GAAG/F,QAAQuI,KAHPvK,OAMf6gO,UAAW,SAAS35N,GAChB,IAAIe,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwb,EAAUngB,EAAQmgB,QAClBqpD,EAAWxpE,EAAQwpE,SAEvB7kE,EAAQotB,IAAI43D,GAEPngB,GAAarpD,EAQdxb,EACKmc,YAAY2jS,EAAetkS,GAC3BW,YAAY/f,EAAKf,QAAQ8kT,iBAAmBH,EAAgBD,EAAcl7O,IAT/E7kE,EACKsgB,YAAYw/R,GACZx/R,YAAYlkB,EAAKf,QAAQ8kT,iBAAmBH,EAAgBD,GAEjE//S,EAAQod,GAAG,UAAY4nE,EAAI5oF,EAAK2V,QAAQpU,KAAKvB,IAC7C4D,EAAQod,GAAG,WAAa4nE,EAAI5oF,EAAK2V,QAAQpU,KAAKvB,QAQ1D0hB,EAAGqN,OAAO80R,GA/Gd,CAgHGhrT,OAAOH,MAAM+G,QACF/G,MAAd,IAWIurT,EAAUprT,OAAOH,MACjBwrT,EAAMD,EAAQxkT,OAEdgpB,EADKw7R,EAAQviS,GACD+G,OACZ07R,EAAeF,EAAQhjT,WAIvBmjT,EAAQ37R,EAAO3tB,OAAO,CACtBmE,QAAS,CACL9E,KAAM,QACN0wB,OAAQ,MAGZ3qB,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX6L,EAAUA,GAAWsgT,EAAI,mBAEzBz7R,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACnCA,EAAUilT,EAAIppT,QAAO,EAAM,GAAImE,GAE/Be,EAAK6qB,OAAS5rB,EAAQ4rB,OAElB5rB,EAAQutJ,UACRxsJ,EAAKqkT,iBAGTrkT,EAAKskT,UAGTvqT,QAAS,WACDhC,KAAKiyE,eACLjyE,KAAKiyE,cAAcjwE,UAEvB0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,OAG3BwsT,gBAAiB,WACb,IAAIvkT,EAAOjI,KAEPiI,EAAKgqE,gBACLhqE,EAAKgqE,cAAcjwE,UACnBiG,EAAK6qB,OAAO1mB,QAAQ8wP,OAAOj1P,EAAKwkT,2BAIxCl7R,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACP0sT,GAAiB,GAEG,iBAAd,GAA2BP,EAAIxkT,cAAcT,KAAiC,IAArBA,EAAQutJ,YACvEi4J,GAAiB,GAGrBxlT,EAAUilT,EAAIxkT,cAAcT,GAAWA,EAAU,CAAEq/C,QAASr/C,GAE5DwpB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAE5BwlT,GAAkBzkT,EAAKgqE,eACvBhqE,EAAKukT,kBACLvkT,EAAKgqE,cAAcjwE,iBACZiG,EAAKgqE,gBACgB,IAArB/qE,EAAQutJ,UAAsBxsJ,EAAKgqE,gBAC1ChqE,EAAK4D,QAAQkrB,SACb9uB,EAAKqkT,kBAGTrkT,EAAKskT,SAEDtkT,EAAKgqE,eACLhqE,EAAKgqE,cAAcr0D,WAI3B2uS,OAAQ,WACJ,IAAItkT,EAAOjI,KACP6L,EAAU5D,EAAK6qB,OAAOjnB,QACtB3E,EAAUe,EAAKf,QACfyoB,EAAK9jB,EAAQiX,KAAK,MAClBk9K,EAAY94L,EAAQq/C,QAEpB6lQ,EAAapsH,KACbA,EAAYA,EAAUz1L,KAAKtC,IAG1B+3L,IACDA,EAAY,IAGXrwK,IACDA,EAAKzoB,EAAQ9E,KAAO,IAAM8pT,EAAQz8R,OAClC5jB,EAAQiX,KAAK,KAAM6M,IAGvB1nB,EAAK4D,QAAQ0Y,SAzFF,yBA0FNzB,KAAK,MAAO6M,GACZiR,KAAKo/J,GACL3uH,aAAappE,EAAKf,QAAQylT,WAAa1kT,EAAK6qB,OAAO1mB,UAG5DkgT,eAAgB,WACZ,IAAIrkT,EAAOjI,KACPkH,EAAUilT,EAAIppT,OAAO,GAAIkF,EAAKf,gBAG3BA,EAAQ9E,MAEJ8E,EAAQutJ,WAAY,KAG3BxsJ,EAAKwkT,wBAA0BxkT,EAAK6qB,OAAO1mB,QAAQ4f,KAAK,iBAAiB7f,SACzElE,EAAKgqE,cAAgB,IAAIi6O,EAAQviS,GAAGmiS,cAAc7jT,EAAKwkT,wBAAyBN,EAAIppT,OAAO,GAAImE,QAK3GglT,EAAQviS,GAAGqN,OAAOq1R,IAUlB,SAAU1pT,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfmtE,EAASntE,EAAMitB,WACf8C,EAAS/vB,EAAMgpB,GAAG+G,OAClB/G,EAAKhpB,EAAMgpB,GACX6B,EAAK,oBAELslE,EAAQnnE,EAAGmnE,MACX5mE,EAAOvpB,EAAMupB,KACbhhB,EAAavI,EAAMuI,WACnBisF,EAAarE,EAAMqE,WACnBxE,EAAmBhuF,EAAEyM,SAASiK,iBAE9Bu2E,EAAO,OACPC,EAAQ,QACRE,EAAW,WACXD,EAAa,aACb88N,EAAY,uCAKZC,EAAsB,uBACtBC,EAA0B,2BAC1BC,EAA6B,4BAA8BpB,EAAgB,8DAAgEA,EAAgB,IAC3JA,EAAgB,aAChBhlB,EAAgB,gBAEhBr1P,EAAS,WACT07Q,EAAuBrsT,EAAM8uB,OAC7B1sB,EAASJ,EAAEI,OACX8M,EAAWlP,EAAMkP,SAGjBo9S,EAAW,qCACXC,EAAkB,SAAUhmT,GAAW,MAAO,uDACzCA,EAAQ62C,MACL,6DACmBivQ,EADnB,4DAE2C9lT,EAAa,MAAI,UACnDA,EAAQymL,SAAY,sDAA0DzmL,EAAQymL,UAAY,IAAM,SAAY,IACzH,UACCzmL,EAAQimT,YACT,sCACIxsT,EAAMmP,KAAK02R,aAAc,WAAc7lS,EAAMmiB,KAAK,gCAAmC,aAAe,CAAEw0E,KAAM,IAAKtkE,SAAU,OAAQvjB,KAAM,UAC7I,SACE,IACN,SACF,IACN,UACA43R,EAAgB,SAAUp4Q,GACV,IAAIiJ,EAAWjJ,EAAIiJ,SACfo/D,EAAOroE,EAAIqoE,KACX12D,EAAO3R,EAAI2R,KACXwsR,EAAcn+R,EAAIm+R,YAEtB,MAAO,+DAAsEl1R,EAAWyzR,EAAgB,IAAjG,yCAEFr0N,EAAQ,6BAAiCA,EAAO,UAAa,IAF3D,gFAIgDxpB,EAAOltC,GAAS,WACzDwsR,EAAc,gDAAkDt/O,EAAOs/O,GAAe,UAAY,IALzG,yBAWvBC,EAAc,CACdzsR,KAAM,GACNwsR,YAAa,GACbh2N,UAAW,GACXk2N,SAAU,EACVC,UAAW,GACXjkS,MAAO3mB,EAAEQ,KACT+wD,MAAO,MACPh8B,UAAU,GAGVs1R,EAAsB,CACtB5sR,KAAM,GACN02D,KAAM,GACNF,UAAW,GACX9tE,MAAO3mB,EAAEQ,KACT+0B,UAAU,GAqCd,IAAIu1R,EAAc/8R,EAAO3tB,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KACXkH,EAAUA,GAAW,GAErBwpB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAE/BA,EAAQimC,UACRllC,EAAK4D,QAAQshC,SAASjmC,EAAQimC,UAGlCllC,EAAKylT,UAAYxmT,EAAQktB,OAASltB,EAAQktB,MAAM5sB,OAChDS,EAAK0lT,kBAAoBzmT,EAAQ0mT,eAAiB1mT,EAAQ0mT,cAAcpmT,OACxES,EAAK4lT,YACL5lT,EAAK6lT,oBACL7lT,EAAKkwE,WACLlwE,EAAKmgS,SACLngS,EAAKmwE,iBACLnwE,EAAKowE,gBACLpwE,EAAKqwE,gBACLrwE,EAAK8lT,aAEL9lT,EAAK+lT,YAAc,IAAI74N,EAAWltF,EAAKmE,SAEvCnE,EAAKipF,UAAYvwF,EAAM66B,cApIf,OAoIwC76B,EAAM8uB,QACtDxnB,EAAKgmT,WAAattT,EAAM66B,cAjHpB,QAiHyC76B,EAAM8uB,QACnDxnB,EAAKwpF,gBAAkBxpF,EAAKypF,WAAWloF,KAAKvB,GAC5CA,EAAKimT,YAAcjmT,EAAK85E,OAAOv4E,KAAKvB,GACpCA,EAAKmE,QAAQ6c,GAnHP,UAmHoBuC,EAAIvjB,EAAMA,EAAKi7G,SAAS15G,KAAKvB,KAG3DoC,OAAQ,CACJulF,EACAC,EACAE,EACAD,GAGJ5oF,QAAS,CACL9E,KAAM,cACN27C,MAAO,GACP3pB,MAAO,GACP8+D,MAAO,KACPi7N,YAAY,EACZC,eAAgB,KAChBC,eAAgB,KAChBhrD,gBAAiB,KACjBuqD,cAAe,GACfT,aAAa,EACbmB,UAAU,EACVC,iBAAiB,GAGrBV,UAAW,WACP,IAAI5lT,EAAOjI,KAENiI,EAAKylT,YAIVzlT,EAAKf,QAAQktB,MAAQnsB,EAAKf,QAAQktB,MAAM9Z,IAAIk0S,KAGhDV,kBAAmB,WACf,IAAI7lT,EAAOjI,KAENiI,EAAK0lT,oBAIV1lT,EAAKf,QAAQ0mT,cAAgB3lT,EAAKf,QAAQ0mT,cAActzS,IAAIm0S,KAGhEt2O,SAAU,WACN,IAEI/rE,EAFAnE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QAGf6iT,EAA2C,GAA3BzmT,EAAKf,QAAQinT,WAAqBrB,EAA0BD,EAEhFhhT,EAAQ0Y,SAASoqS,iBAAqBD,GAAiBzmT,EAAKf,QAAQonT,SAAW,0BAA8B,sBAC7GrmT,EAAKmE,QAAUA,EAAUP,EAAQmgB,KAAK,wDAAqE7f,SAC3GC,EAAQ+gF,QAAQxqF,EAAE,eAAe4hB,SAvL3B,eA0LVwpS,WAAY,WACR,IAAI9lT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf+iT,EAAqB3mT,EAAKmE,QAAQ2pB,KAAK,wBAAwBjT,KAAK,MAExEjX,EAAQiX,KAAK,CACTgN,KAAM,SACN,cAAc,EACd,kBAAmB7nB,EAAKf,QAAQ62C,MAAQ6wQ,EAAqB,QAIrExmB,OAAQ,WACJ,IAAIngS,EAAOjI,KACPkH,EAAUe,EAAKf,QAEf2nT,IAAkB3nT,EAAQonT,UAC1B,CACI/8N,KAAM,CACF/qE,QAAS,aACT2rB,YAAY,EACZzrB,SAAU,MAItBxf,EAAQqqF,KAAO,KACfrqF,EAAQo+C,MAAQ,KAChBp+C,EAAQs+G,SAAW,KACnBt+G,EAAQ6wS,WAAa,KAErB9vS,EAAKirF,MAAQ,IAAIpC,EAAM7oF,EAAK4D,QAAS9I,EAAOmE,EAAQgsF,MAChDhsF,EACA,CACI9E,KAAM,QACNkc,MAAO3d,EAAM4C,QAAQ+a,MAAMpX,EAAQiqF,QACnCe,mBAAmB,EACnB/kD,SAAUllC,EAAKmE,QACf4lF,OAAO,EACPV,UAAWu9N,EACX/hT,SAAU,aACVqkF,OAAQjqF,EAAQiqF,QAAUlpF,EAAKmE,WAGnClF,EAAQqnT,iBACRtmT,EAAKirF,MAAM1pF,KAAKumF,EAAU9nF,EAAK6mT,aAAatlT,KAAKvB,IAGrDA,EAAKirF,MAAM1pF,KAAKumF,GAAU,SAAU1uF,GAChC4G,EAAKmC,QAAQ2lF,EAAU1uF,MAG3B4G,EAAKirF,MAAM1pF,KAAKsmF,GAAY,SAAUzuF,GAClC4G,EAAKmE,QAAQmY,SAAS+sB,GACtBq/C,EAAiB13D,IAAIhxB,EAAKipF,UAAWjpF,EAAKwpF,iBAC1Cd,EAAiB13D,IAAIhxB,EAAKgmT,WAAYhmT,EAAKimT,aAC3CjmT,EAAKmC,QAAQ0lF,EAAYzuF,MAG7B4G,EAAKirF,MAAM1pF,KAAKomF,GAAM,SAAUvuF,GAC5B4G,EAAKmC,QAAQwlF,EAAMvuF,MAGvB4G,EAAKirF,MAAM1pF,KAAKqmF,GAAO,SAAUxuF,GAC7B,IAAI0tT,EAAqB9mT,EAAK+mT,oBAC9B/mT,EAAK+mT,qBAAsB,EAC3B/mT,EAAKmC,QAAQylF,EAAO9sF,EAAO,GAAI1B,EAAI,CAC/B8rT,YAAa4B,SAKzB12O,cAAe,WACX,IACInxE,EADOlH,KACQkH,SAEdA,EAAQ62C,OAAU72C,EAAQmnT,iBAHpBruT,KAON6L,QAAQshF,QAAQt9E,EAAS3I,EAAQmnT,gBAAkBnB,EAAnCr9S,CAAoD3I,KAG7E8sI,OAAQ,WACJ,IAAI/rI,EAAOjI,KAEX,GAAKiI,EAAKylT,UAAV,CAIA,IAAIuB,EAAehnT,EAAKf,QAAQktB,MAAMuvB,QAAO,SAAUurQ,EAAcC,GACjE,IAAIj7P,EAAQi7P,EAAmB,OAAK,MAGpC,OAFAD,EAAah7P,GAASg7P,EAAah7P,IAAU,GAC7Cg7P,EAAah7P,GAAOvyD,KAAKwtT,GAClBD,IACR,IAAI3rD,KAEH6rD,EAAWH,EAAkB,IAC7BI,EAAcJ,EAAqB,OAEvChnT,EAAKqnT,aAAaF,GAEdA,GAAYA,EAAS5nT,QAAU6nT,GAAeA,EAAY7nT,QAC1DS,EAAKsiS,SAASxwP,OAjPV,uBAoPR9xC,EAAKqnT,aAAaD,KAGtBj3O,eAAgB,WACZ,IAAInwE,EAAOjI,KACPkH,EAAUe,EAAKf,QACnBe,EAAK4D,QAAQuuE,UAAUz3E,EAAE,8CACzB,IAAI4sT,EAAmBtnT,EAAKsiS,SAAWtiS,EAAK4D,QAAQkqB,KAAK,0BAEzD,GAAI9tB,EAAKylT,UAGL,OAFA6B,EAAiBhjQ,aACjBtkD,EAAK+rI,UAIL9sI,EAAQm8P,iBAAmBn8P,EAAQsoT,sBACnCD,EAAiBhrS,SAAS,sBAE1Brd,EAAQm8P,iBACRksD,EAAiBz/S,KAAKD,EAAS3I,EAAQm8P,gBAAjBxzP,CAAkC3I,KAIhEooT,aAAc,SAASl7R,GACnB,IACIxqB,EACAolC,EACAg0L,EACA8zE,EAGAx/M,EAxPQzpF,EACZ0I,EACAk5S,EAoPIF,EALOvvT,KAKiBuqS,SACxB3mF,EAAiBjhN,EAAE,8CAGvB,GAAKyxB,GAAUA,EAAM5sB,OAOrB,IAHA+nT,EAAiBx1Q,OAAO6pK,GACxBof,EAAenzN,EAASw3R,GAEnBz9R,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAC9BolC,EAAO5a,EAAMxqB,GAjQjB2M,SACAk5S,WAAe,GAiQXn4N,GAnQQzpF,EAmQUmhC,GA/PhBooD,WAAcvpF,EAAKypF,MAI7B/gF,EAAS5T,EAAEhC,EAAMmP,KAAKgoF,WAAW,CAAER,KAAMzpF,EAAKypF,KAAMF,UAAWvpF,EAAKupF,UAAY,8BAE5EvpF,EAAK0/S,WAAaN,EAASlgT,KAAKc,EAAK0/S,WACrCkC,EAAargM,MAAQvhH,EAAK0/S,UACnB1/S,EAAK0/S,WACZh3S,EAAOgO,SAAS,UAAY1W,EAAK0/S,WAGjC1/S,EAAKy/S,WACLmC,EAAah/J,SAAW5iJ,EAAKy/S,UAG7B7sT,OAAOypB,KAAKulS,GAAcjoT,QAC1B+O,EAAO3J,IAAI6iT,GAGRl5S,GAnBI,GA+PHugS,EAAcn0S,EAAEqgO,EAAajgO,EAAO,GAAIisC,EAAM,CAAEsoD,KAAMA,GAAQA,EAAKnoE,KAAK,iBACxEy0L,EAAe7pK,OAAO+8P,GAElB9nQ,EAAK1lB,OACLwtR,EAAYjpS,KAAK,SAAUmhC,EAAK1lB,QAK5ComS,qBAAsB,WAOlB,IANA,IAIIC,EAFA/B,EAFO5tT,KACQkH,QACS0mT,cACxBgC,EAHO5vT,KAGiB6vT,QAGnBtoT,EAAI,EAAGA,EAAIqmT,EAAcpmT,OAAQD,IAAK,CAC3C,IAAIylC,EAAS4gR,EAAcrmT,GACvBggB,GAA6B,IAApBylB,EAAO9U,SACpBy3R,EAAsBhtT,EAAEhC,EAAMmP,KAAK02R,aAAc,0CAA4Cx5P,EAAOpM,MAAQ,IAAM,YAAcj+B,EAAEI,OAAO,CAAE0M,KAAM,SAAWu9B,KAC5J4iR,EAAiB71Q,OAAO41Q,GACxBA,EAAoB3nS,YAAY2jS,GAAgBpkS,GAChDooS,EAAoB7sS,KA5VjB,YA4ViCyE,GAEhCA,EACAooS,EAAoBr+R,WAAWq1Q,GAE/BgpB,EAAoB7sS,KAAK6jR,GAAgBp/Q,GAGzCylB,EAAO1jB,OACPqmS,EAAoB9hT,KAAK,SAAUm/B,EAAO1jB,SAKtDgvD,cAAe,WACX,IAEIs3O,EAFA3nT,EAAOjI,KACPkH,EAAUe,EAAKf,QAGnB,GAAKe,EAAK0lT,mBAAsBzmT,EAAQknT,eAAxC,CAOA,IAHAwB,EAAmB3nT,EAAK4nT,QAAUltT,EAAE,6CACnB+zS,YAAYzuS,EAAKsiS,UAE9BtiS,EAAK0lT,kBAGL,OAFAiC,EAAiBrrS,SAAS,2DAC1Btc,EAAKynT,uBAILxoT,EAAQknT,gBACRnmT,EAAK4nT,QAAQ91Q,OAAOlqC,EAAS3I,EAAQknT,eAAjBv+S,CAAiC3I,MAI7DlF,QAAS,WACL,IAAIiG,EAAOjI,KACXiI,EAAKq9C,QACL50B,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GACvBA,EAAKsiS,SAAW,KAChBtiS,EAAK4nT,QAAU,KACf5nT,EAAK6nT,QAAU,KACf7nT,EAAK4D,QAAQotB,IAAIzN,GACjBvjB,EAAKmE,QAAQ6sB,IAAIzN,GACjBvjB,EAAKirF,MAAMlxF,WAGfuvF,KAAM,SAASrqF,GACX,IAAIe,EAAOjI,KAEXiI,EAAK8nT,UAAY7oT,GAAWA,EAAQ6oT,UAEpC9nT,EAAKmE,QAAQ+f,YAAYmlB,GACzBrpC,EAAK+nT,eAAiB/nT,EAAK+nT,gBAAkB/nT,EAAK4D,QAAQI,cAEtDhE,EAAKf,QAAQonT,UACbrmT,EAAKmE,QAAQY,MAAM,QAGvB/E,EAAKirF,MAAM3B,KAAK,OAAQ,GACxBtpF,EAAKirF,MAAM9mF,QAAQ2pB,KAAK,iCAAiCnpB,IAAI,CAAEmf,OAAQ,EAAG/e,MAAO,SAEjF2jF,EAAiB13D,IAAIhxB,EAAKipF,UAAWjpF,EAAKwpF,iBACrCxoE,GAAGhhB,EAAKipF,UAAWjpF,EAAKwpF,iBAE7Bd,EAAiB13D,IAAIhxB,EAAKgmT,WAAYhmT,EAAKimT,aACtCjlS,GAAGhhB,EAAKgmT,WAAYhmT,EAAKimT,aAE9BjmT,EAAK+lT,YAAY54N,QAGrB9oF,QAAS,WACL,OAAOtM,KAAKkzF,MAAM5mF,WAGtB6b,OAAQ,WACHnoB,KAAKsM,UAA0BtM,KAAKslD,QAAnBtlD,KAAKuxF,QAG3B48N,WAAY,SAAS8B,GACjB,IAAIhoT,EAAOjI,KAEXiI,EAAK4D,QAAQmc,YAAY8kS,GAA0C,IAAjBmD,GAClDhoT,EAAK4D,QAAQmc,YAAY6kS,GAAsC,IAAjBoD,GAC9ChoT,EAAK4D,QAAQQ,QAAQ,gCAAgCO,IAAI,CAAED,OAAQsjT,EAAe,OAAS,UAG/F3qQ,MAAO,WACQtlD,KAENkzF,MAAM5tC,SAGfx4C,SAAUnK,EAAEQ,KAEZ+sT,4BAA6B,WACzB,IAEIC,EAFOnwT,KACkB6L,QAAQkqB,KAAK62R,GACI1iT,QAE1CimT,EAAsB3oT,QACtB2oT,EAAsB/lT,QAAQ,UAItCgmT,2BAA4B,WACxB,IAEIC,EAFOrwT,KACkB6L,QAAQkqB,KAAK62R,GACGzqR,OAEzCkuR,EAAqB7oT,QACrB6oT,EAAqBjmT,QAAQ,UAIrC0kT,aAAc,WACV,IAAI7mT,EAAOjI,KACX,GAAIiI,EAAKylT,UAAW,CAChB,IAAIlqP,EAAYv7D,EAAKsiS,SAASx0Q,KAAK,uBAAuB,GACtDytC,GACAA,EAAU59B,aAGd39B,EAAKioT,+BAIbI,oBAAqB,SAAShpT,GAC1B,OAAO3E,EAAE2E,GAAQ+E,QAAQ0gT,GAA4BvlT,OAAS,GAGlE+oT,eAAgB,SAAS5rT,GACrB,IACIqoC,EAASrqC,EAAEgC,EAAE2C,QAAQ+E,QAAQ0gT,GAA4Bl/S,KAAK,UAC9D3E,EAAW8jC,IACXA,EAAOroC,GAGNA,EAAE0E,sBANIrJ,KAOFslD,SAIb49D,SAAU,SAASv+G,GACf,IAAIsD,EAAOjI,KACPkqB,EAAOvpB,EAAMupB,KACbid,EAAUxiC,EAAEwiC,QACZ7/B,EAAS3E,EAAEgC,EAAE2C,QAEjB,GAAI6/B,GAAWjd,EAAKM,IAChB7lB,EAAEs1B,kBACFhyB,EAAKq9C,aACF,GAAIr9C,EAAKqoT,oBAAoBhpT,IAAWkpT,EAAmB7rT,GAC9DsD,EAAKsoT,eAAe5rT,QACjB,GAAIA,EAAEwiC,UAAYxmC,EAAMupB,KAAKI,IAAK,CACrC,IAAImmS,EAAgBzwT,KAAKoM,QAAQ2pB,KAAK62R,GAClCzC,EAAiBsG,EAAcvmT,QAC/BwmT,EAAgBD,EAActuR,OAC9Bx9B,EAAEyiC,SACEh4B,SAASgK,gBAAkB+wS,EAAe,KAC1CuG,EAActmT,QAAQ,SACtBzF,EAAEwE,kBAGFiG,SAASgK,gBAAkBs3S,EAAc,KACzCvG,EAAe//S,QAAQ,SACvBzF,EAAEwE,oBAMlB44E,OAAQ,SAASp9E,GACb,IACI2C,EAAS3G,EAAM8nB,YAAY9jB,GADpB3E,KAGFswT,oBAAoBhpT,IAHlBtH,KAIFuwT,eAAe5rT,IAI5B+sF,WAAY,SAAS/sF,GACjB,IAAIsD,EAAOjI,KACPs2B,EAAYruB,EAAK4D,QAAQ,GACzBvE,EAAS3G,EAAM8nB,YAAY9jB,GAE3BsD,EAAK8nT,WAAa9nT,EAAK8nT,UAAUxjT,GAAG5J,EAAE2E,OA7dlD,SAAkBgvB,EAAWhvB,GACzB,SAAKgvB,IAAchvB,KAGZgvB,IAAchvB,GAAU3E,EAAEwyB,SAASmB,EAAWhvB,IA6d5C6tB,CAASmB,EAAWhvB,IAAW3E,EAAE2E,GAAQ+E,QAAS,IAAO1L,EAAMmiB,KAAK,gCAAmC,IAAMngB,EAAE2zB,GAAWP,KAAK,2BAA2BvuB,OAAS,KACpKS,EAAK+mT,qBAAsB,EAC3B/mT,EAAKq9C,YAKjB,SAASkrQ,EAAmB7rT,GACxB,OAAOA,EAAEwiC,SAAWjd,EAAKK,OAAS5lB,EAAEwiC,SAAWjd,EAAKa,SAGxD,SAASyjS,EAAmBx/Q,GACxB,OAAOjsC,EAAO,GAAIsqT,EAAar+Q,GAGnC,SAASy/Q,EAA2BkC,GAChC,OAAO5tT,EAAO,GAAIyqT,EAAqBmD,GAG3ChnS,EAAGqN,OAAOy2R,GA1kBd,CA4kBG3sT,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GACX1d,EAActL,EAAMuL,aACpB0kT,EAAuB,kBACvBlgS,EAAS/G,EAAG+G,OACZxG,EAAOvpB,EAAMupB,KACb3mB,EAAU5C,EAAM4C,QAChBqqB,EAAajtB,EAAMitB,WACnBxU,EAAgBzY,EAAMwY,eACtBpN,EAAapL,EAAMqL,YACnB4B,EAAkBjN,EAAMkN,KAAKD,gBAC7B8gM,EAAK,KACL5xJ,EAAS,SACT4uQ,EAAU,UACVmF,EAAQ,UACRC,EAAY,aACZC,EAAU,mCAKVC,EAAU,YAEVC,EAAqB,8BAErBC,EAAe,eAEfthO,EAAO,OACPC,EAAQ,QACRshO,EAAU,UACVp1O,EAAS,SACT+jJ,EAAQ,QAER8uE,EAAa,aACb7+M,EAAW,WACXD,EAAa,aACbshO,EAAe,cACfC,EAAa,YACbC,EAAuB,qBACvB7kB,EAAW,WACX5hP,EAAe,eACfE,EAAa,aAEb87O,EAAQ,QAER9jS,EAASJ,EAAEI,OACXE,EAAUC,MAAMD,QAChB+e,EAAUze,EAAQye,QAClBuvS,EAAc,WACdngR,EAAQ,QACRy9I,EAAO,OAEP2iI,EAAOxvS,EAAQoB,KACfquS,EAAa,KACbC,EAAmB,CACfC,SAAY,CAAE,eAAgB,uBAC9BC,aAAgB,CAAE,WAAY,uBAC9BC,oBAAuB,CAAE,WAAY,iBAazCrrT,EAAkB,kBAClBC,EAAa,aACbqrT,EAAwB,wBAIxBnpB,EAAgB,gBAChB9oE,EAAc,cACdkyF,EAAY,YAEZC,EAAgB,gBAChBC,EAAgB,qBAEhBC,GAAOvxT,EAAMgpB,GAAGmK,gBAAgB/wB,OAAO,CACvCoF,KAAM,SAAS0D,EAAS3E,GACpB,IACIyoB,EADA1nB,EAAOjI,KAGX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACnC2E,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QAEfe,EAAKkqT,UAAYtmT,EAAQU,GAAGwvE,GAExB9zE,EAAKkqT,WAAalqT,EAAK4D,QAAQ,GAAGrE,SAC7BN,EAAQ4pB,aACT5pB,EAAQqrE,cAAgBrrE,EAAQqrE,eAAiBs8G,EACjD3nL,EAAQupE,eAAiBvpE,EAAQupE,gBA9CrC,UAkDyB,SAAzBvpE,EAAQkrT,eACRnqT,EAAKoqT,SAAW1xT,EAAMJ,WAAW,SACjC0H,EAAKqqT,UAAY3xT,EAAMJ,WAAW,UAClC0H,EAAKsqT,SAAW5xT,EAAMJ,WAAW,UAGrC0H,EAAKuqT,UAAY7xT,EAAM+xB,cAAcG,cAAc,CAC/CC,OAAQ,OACRC,SAAU,OACVrqB,MAAOxB,EAAQuI,OAGnBxH,EAAKwqT,gBAELxqT,EAAKuqS,GAAK7vS,EAvDN,2BAuDemgB,KAAK,CACpB+yE,UAAW,EACX,eAAe,IAGnB5tF,EAAKsjE,KAAO5oE,EA3DN,yBA4DD4hB,SAAStc,EAAKuqT,WACdz4Q,OAAO9xC,EAAKuqS,KAEjB7iR,EAAK9jB,EAAQiX,KAAK4rL,MAGd/+K,EAAKhvB,EAAM8uB,QAGfxnB,EAAKsjE,KAAKzoD,KAAK4rL,EAAI/+K,EA9DT,SA+DV1nB,EAAKuqS,GAAG1vR,KAAK4rL,EAAI/+K,EA9DJ,YAgETzoB,EAAQwrT,SAAWxrT,EAAQwrT,QAAQlrT,SACnCS,EAAKsjE,KAAKp/C,YArHX,UAqH6B5H,SAnHvB,gBAoHLtc,EAAKsjE,KAAKp/C,YAAYlkB,EAAKuqT,WAAWjuS,SAnHnC,cAqHHtc,EAAKuqS,GAAGrmR,YAAY6kS,GAASzsS,SAvH7B,WAyHAtc,EAAK0qT,kBAGT1qT,EAAK6nT,UACL7nT,EAAK2qT,UACL3qT,EAAK4nT,UACL5nT,EAAKyqS,aACLzqS,EAAK4qT,cAGT3rT,QAAS,CACLyqE,gBAAgB,EAChBy8O,eAAgB,GAChBC,eAAgB,GAChByE,gBAAgB,EAChBrjT,KAAM,SACNwa,SAAU,CACN8oS,OAAU,iBACV98P,MAAS,SAEbm8P,aAAc,QAGlB7gS,WAAY,SAASrqB,GACjBwpB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,GAE5BA,GAAWA,EAAQqgB,SAAW3kB,IAC9BsE,EAAQggB,QAAUhgB,EAAQqgB,QAG1BrgB,EAAQwrT,SAAWxrT,EAAQwrT,QAAQlrT,QACnCxH,KAAK2yT,iBAGT3yT,KAAK8vT,UACL9vT,KAAK4yT,UACL5yT,KAAK6vT,UAEL7vT,KAAKgzT,gBACLhzT,KAAKizT,gBAED/rT,EAAQ2sB,OAAS7zB,KAAKkzT,YACtBlzT,KAAK6zB,MAAMtC,WAAWrqB,EAAQ2sB,QACL,IAAlB3sB,EAAQ2sB,OACf7zB,KAAK6zB,MAAM24R,kBACXxsT,KAAKkzT,YAAYn8R,gBACV/2B,KAAKkzT,aACLhsT,EAAQ2sB,OACf7zB,KAAKusT,UAIb3mR,MAAO,WACH5lC,KAAKmzT,SAAS/oT,QAAQy8R,IAG1Bn2N,SAAU,SAASA,GACf1wE,KAAK6gO,UAAU,CACXnwJ,SAAUA,IAAa9tE,GAAqB8tE,EAC5CrpD,SAAS,IAGTrnB,KAAK6zB,OAAS7zB,KAAK6zB,MAAMo+C,eACzBjyE,KAAK6zB,MAAMo+C,cAAcvB,SAASA,IAAa9tE,GAAqB8tE,IAI5EnpD,OAAQ,SAASA,GACbvnB,KAAK6gO,UAAU,CACXnwJ,UAAU,EACVrpD,UAAWE,EAASA,IAAW3kB,GAAqB2kB,KAGpDvnB,KAAK6zB,OAAS7zB,KAAK6zB,MAAMo+C,eACzBjyE,KAAK6zB,MAAMo+C,cAAc1qD,OAAOA,EAASA,IAAW3kB,GAAqB2kB,IAIjFglS,OAAQ,WACJ,IAAItkT,EAAOjI,KACPkH,EAAUe,EAAKf,QACfupK,EAAe9tK,EAAEgF,cAAcT,EAAQ2sB,OAAS3sB,EAAQ2sB,MAAQ,CAChE0yB,QAASr/C,EAAQ2sB,OAGrB5rB,EAAK4rB,MAAQ,IAAIlzB,EAAMgpB,GAAG0iS,MAAM,KAAM1pT,EAAEI,OAAO,GAAI0tK,EAAc,CAC7D39I,OAAQ7qB,EACRgkT,WAAYhkT,EAAKmrT,YAAY5pT,KAAKvB,MAGtCA,EAAKirT,YAAcjrT,EAAK4rB,MAAMhoB,SAGlCunT,YAAa,WACT,OAAIpzT,KAAK0yE,YACU1yE,KAAK0I,WAAY1I,KAAK4gC,MAAO5gC,KAAK4gC,UAC5B5gC,KAAKkzF,MAAM5mF,WAMxC+mT,sBAAuB,WACnB,IAAIprT,EAAOjI,KAEPiI,EAAK4rB,OAAS5rB,EAAK4rB,MAAMo+C,eACzBhqE,EAAK4rB,MAAMo+C,cAAcr0D,WAIjCkyS,QAAS,WACL,IAAIvkP,EAAOvrE,KACPgmD,EAASrjD,EAAE4oE,EAAKvlB,QAChBn2C,EAAW07D,EAAKrkE,QAAQmnT,eAM5B,GAJAruT,KAAKszT,gBAAgBttQ,EAAQ,WAC7BrlD,EAAMqB,QAAQgkD,GACdA,EAAOjvB,SAEFlnB,EAAL,CAKA,IAAIw+S,EAAqC,mBAAbx+S,EAA0BlP,EAAMkP,SAASA,GAAYA,EACjFm2C,EAASrjD,EAAE0rT,EAAe,KAE1B9iP,EAAKvlB,OAASA,EAAO,GAAKA,EAAS,KAE/BulB,EAAKA,KAAKp/D,OAAO3E,OAAS,GAC1B+jE,EAAKA,KAAKkrO,OAAOzwP,GAGrBhmD,KAAKszT,gBAAgB/nP,EAAKvlB,OAAQ,gBAb9BulB,EAAKvlB,OAAS,MAgBtBysQ,cAAe,WACXzyT,KAAKuzT,eAAiB,qIAEd5yT,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAM,SAAUF,UAAW,iBAF7B,gBAMlBp3F,KAAKwzT,qBACLxzT,KAAKyzT,YAAc9wT,EAAE,+CAChBmgB,KAAK,CACF4B,YAAa1kB,KAAK6L,QAAQiX,KAAK,eAC/Bi7B,MAAO/9C,KAAKkH,QAAQwsT,aAAe1zT,KAAK6L,QAAQiX,KAAK,SACrDgN,KAAM,YACN,aAAc9vB,KAAKkH,QAAQwsT,YAC3B,gBAAiB,UACjB,oBAAqB,WAKrCf,eAAgB,WACZ,IACIgB,EADApoP,EAAOvrE,KAEP4zT,EAAgBjxT,EAAE4oE,EAAKqoP,eAE3B5zT,KAAKszT,gBAAgBM,EAAe,WACpCjzT,EAAMqB,QAAQ4xT,GACdA,EAAc78R,SAMd,IAJA,IAAIivB,EAAS,2GACT6tQ,EAAW,aACX3hI,EAAM,2BAEDtoL,EAAM,EAAGA,EAAM5J,KAAKkH,QAAQwrT,QAAQlrT,OAAQoC,IAAO,CACxD,IAAIkqT,EAAgB9zT,KAAKkH,QAAQwrT,QAAQ9oT,GACrCm0C,EAAQ+1Q,EAAc/1Q,OAAS+1Q,EAAc7uS,OAAS,GAEtDpV,EAAWikT,EAAczF,gBADb,WAAc,OAAOtwQ,GAEjCg2Q,EAA4C,mBAAblkT,EAA0BlP,EAAMkP,SAASA,GAAYA,EACpF4jR,EAAeqgC,EAAc9mT,MAC7BgnT,EAAkB/6S,SAASw6Q,EAAc,IACzCwgC,EAAa,GAEbxgC,IAAiB3qR,MAAMkrT,KACvBC,GAAetzT,EAAMmiB,KAAK,eAAkB,KAAQkxS,GAAmBpD,EAAqB7jT,KAAK0mR,GAAgB,IAAM,MAAQ,KAGnIogC,GAAY,QAAUI,EAAa,KAEnC/hI,GAAO,0BACPA,GAAO6hI,EAAsBD,GAC7B5hI,GAAO,QAKXlsI,GAFA6tQ,GAAY,cAGZ7tQ,GAAU,gCACVA,GAHAksI,GAAO,QAMPyhI,EAAUhxT,EAFVqjD,GAAU,gCAGVrlD,EAAM2qC,+BAA+BqoR,EAAS,CAAC,UAE/CpoP,EAAKqoP,cAAgBA,EAAgBD,EACrCpoP,EAAKA,KAAK4hB,QAAQymO,GAElB5zT,KAAKszT,gBAAgB/nP,EAAKqoP,cAAe,YAG7ChB,QAAS,WACL,IAAIrnP,EAAOvrE,KACP+yT,EAASpwT,EAAE4oE,EAAKwnP,QAChBljT,GAA2C,IAAhC07D,EAAKrkE,QAAQ4rT,eAA0B,WAAc,OAAOllS,EAAW29C,EAAKrkE,QAAQ+iB,SAAS8oS,SAAaxnP,EAAKrkE,QAAQ4rT,eAEtIvnP,EAAK16C,QAAQ,WAAW,WAAa,MAAO,CAAEsD,SAAU4+R,MACxDpyT,EAAMqB,QAAQ+wT,GACdA,EAAOh8R,SAEFlnB,GAKL07D,EAAKwnP,OAASpwT,EAzSL,iCAySmBwK,OAAOggC,SAASo+B,EAAKA,MACjDA,EAAKunP,eAAqC,mBAAbjjT,EAA0BlP,EAAMkP,SAASA,GAAYA,GAL9E07D,EAAKwnP,OAAS,MAQtBlD,QAAS,WACL,IAAItkP,EAAOvrE,KACPy4E,EAAS91E,EAAE4oE,EAAKkN,QAChB5oE,EAAW07D,EAAKrkE,QAAQknT,eACxB8F,EAAWl0T,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OA/S9C,qEADD,oCAkTbxH,KAAKszT,gBAAgB76O,EAAQ,WAC7B93E,EAAMqB,QAAQy2E,GACdA,EAAO1hD,SAEFlnB,GAKL07D,EAAKkN,OAAS91E,EAAEuxT,GAAU/mR,SAASo+B,EAAKA,MACxCA,EAAK6iP,eAAqC,mBAAbv+S,EAA0BlP,EAAMkP,SAASA,GAAYA,GAL9E07D,EAAKkN,OAAS,MAQtB07O,aAAc,SAASjtT,GACnB,IAAIe,EAAOjI,KACP2zB,EAAiB1rB,EAAKf,QACtBwuD,EAAU/hC,EAAe+hC,QACzB0+P,EAAoB,CAAEj2Q,OAAQl2C,EAAKosT,YAAY7qT,KAAKvB,IACpDqsT,EAAmBrsT,EAAKssT,WAAW/qT,KAAKvB,GACxCusT,EAAavsT,EAAKkrT,SAClB9/R,EAAUprB,EAAK4D,QAAQiX,KAAK,MAC5BwQ,EAAW3wB,EAAE,cAAiBsF,EAAK4D,QAAQiX,KAAK,MAAQ,MACxD2xS,EAAaD,EAAW1xS,KAAKtc,GAuCjC,OArCKiuT,GAAcnhS,EAAS9rB,SACxBitT,EAAanhS,EAASxQ,KAAK,OAAS7a,EAAKwrB,iBAAiBH,EAAUD,GAAW1yB,EAAM8uB,SAGzFimC,EAA6B,iBAAZA,EAAuBA,EAAU,IAElDxuD,EAAUvE,EAAEI,OAAO,CACfguE,UAAU,EACVq+G,YAAY,EACZt+J,WAAY7oB,EAAK6oB,WACjBxH,MAAOrhB,EAAK85E,OAAOv4E,KAAKvB,GACxBu9G,SAAUv9G,EAAKysT,cAAclrT,KAAKvB,GAClCyqT,QAAS/+R,EAAe++R,QACxB3a,WAAY9vS,EAAK0sT,gBAAgBnrT,KAAKvB,GACtCqnE,YAAa,WACTrnE,EAAKmC,QAAQgnT,IAEjB5hP,UAAW8kP,EACX3nT,OAAQgnB,EAAehnB,OACvB8jE,eAAgB98C,EAAe88C,eAC/B8B,cAAe5+C,EAAe4+C,cAC9BqiP,cAAejhS,EAAeihS,cAC9BC,mBAAoBlhS,EAAekhS,mBACnChlT,SAAU8jB,EAAe9jB,SACzB0jB,UAAWihS,EAAW1xS,KAAKrc,GAC3B+sB,eAAgBihS,EAChBK,SAAU7sT,EAAKuqT,WAChBtrT,EAASwuD,EAAS0+P,IAERvkT,WACT3I,EAAQ2I,SAAW,SAAUhC,GAAQ,OAAO+f,EAAWjtB,EAAMmuB,OAAO5nB,EAAQqrE,cAArB5xE,CAAoCkN,MAG3F8lB,EAAe2mD,WACfpzE,EAAQozE,SAAW3mD,EAAe2mD,UAG/BpzE,GAGX6tT,UAAW,SAASC,GAChB,IAAI/sT,EAAOjI,KACPi1T,EAAkBD,GAAQA,EAAKC,gBAC/BC,EAAcjtT,EAAKksT,aAAa,CAChCgB,mBAAoBltT,EAAKosT,YAAY7qT,KAAKvB,KAGzCA,EAAKf,QAAQwuD,SAGdztD,EAAKyqE,SAAW,IAAI/xE,EAAMgpB,GAAGyrS,YAAYntT,EAAKuqS,GAAI/xS,OAAOC,OAAOw0T,EAAa,CACzEvoT,OAAQ1E,EAAKotT,kBAAoB,IAAMptT,EAAKf,QAAQyF,UAExD1E,EAAKsjE,KAAKhnD,SAAS,mBALnBtc,EAAKyqE,SAAW,IAAI/xE,EAAMgpB,GAAG2rS,WAAWrtT,EAAKuqS,GAAI0iB,GAQrDjtT,EAAKyqE,SAASlpE,KAAK,YAAavB,EAAKssT,WAAW/qT,KAAKvB,IAEhDgtT,GACDhtT,EAAKstT,iBAIbA,cAAe,SAAS7sT,IACpBA,EAAQA,GAAS1I,KAAKkH,QAAQwB,SAEhB9F,GACV5C,KAAK0yE,SAAShqE,MAAMA,GACf8jC,KAAKxsC,KAAKw1T,sBAAsBhsT,KAAKxJ,QAIlDw1T,sBAAuB7yT,EAAEQ,KAEzBsyT,eAAgB,SAAS9wT,GAChB3E,KAAKyzT,aAAezzT,KAAKyzT,YAAY,KAAO9uT,EAAE2C,QAC/C3C,EAAEwE,kBAIVqqT,iBAAkB,WACd,IAAIv9R,EAASj2B,KAAKkH,QAAQ+uB,OAC1B,OAAOA,GAAqB,SAAXA,GAGrBy/R,WAAY,WACG11T,KAEFu5H,QAFEv5H,KAGFu5H,OAAOh1G,SAASgtS,IAI7BoE,WAAY,WACJ31T,KAAKu5H,QACLv5H,KAAKu5H,OAAOptG,YAAYolS,IAIhCqE,YAAa,WACT51T,KAAK61T,aACL71T,KAAK81T,UAAU,IACf91T,KAAK0yE,SAAShqE,MAAM,IAEhB1I,KAAKmyT,YACLnyT,KAAK+1T,cAAgBnzT,GAGrB5C,KAAKwzT,qBAAuBxzT,KAAKkH,QAAQ8uT,mBACzCh2T,KAAK+5D,QAAQ,CAAE3iB,KAAM,GAAIm6C,MAAM,IAE3BvxF,KAAKkH,QAAQ+uT,gBACbj2T,KAAK0yE,SAAS9sC,MAAM,IAG5B5lC,KAAK8+D,WAGT+2P,WAAY,WACR71T,KAAK4gC,KAAK,KAGds1R,aAAc,WACLl2T,KAAKkH,QAAQwuD,SACd11D,KAAK0yE,SAASC,OAAM,GAGxB3yE,KAAKm2T,iBAGTA,cAAe,SAASlgS,EAAQtE,GAC5B,IAAI1pB,EAAOjI,KACPkH,EAAUe,EAAKf,QACfkvT,EAAyBlvT,EAAQmvT,cAAgBpgS,GAAUA,EAAOyrB,OAASzrB,EAAOwtB,SAAWxtB,EAAOwtB,QAAQj8C,OAC5GspB,EAAa7oB,EAAK6oB,WAClBvC,EAAaxrB,EAAO,GAAI+tB,EAAWmF,UAAY,IAC/CqgS,EAAoBrgS,GAAW1H,EAAWk1B,SAAWl1B,EAAWk1B,QAAQj8C,SAAWyuB,EAEnFsgS,EAAUC,GAAsBjoS,EAAYrnB,EAAQqrE,eAIxD,GAFAvyE,KAAKy2T,wBAAwBloS,IAExB0H,GAAUsgS,IAAYtuT,EAAKmC,QAAQ,YAAa,CAAE6rB,OAAQA,IAC3D,OAAOtzB,EAAEqpC,WAAW4zB,SAAS34C,UAGjC,IAAIyvS,EAAgB,CAChBjzQ,QAAS,GACT/B,MAAO,OAGP00Q,EACAM,EAAcjzQ,QAAQ9hD,KAAKs0B,GAE3Bj2B,KAAK22T,sBAAsBD,EAAezgS,GAG1C2gS,GAAkBroS,KACdmoS,EAAch1Q,QAAUnzB,EAAWmzB,MACnCg1Q,EAAcjzQ,QAAUizQ,EAAcjzQ,QAAQpmC,OAAOkR,EAAWk1B,SAEhEizQ,EAAcjzQ,QAAQ9hD,KAAK4sB,IAI/BtmB,EAAK4uT,YACL72T,KAAK0yE,SAASokP,YAAYJ,GAG9B,IAAIK,EAAkBh0T,EAAO,GAAI,CAC7BmhD,KAAMoyQ,EAAoB,EAAIxlS,EAAWozB,OACzCD,SAAUqyQ,EAAoBxlS,EAAW5pB,QAAQ+8C,SAAWnzB,EAAWmzB,WACvE/+B,KAAM4L,EAAW5L,OACjB+Q,OAAQnF,EAAWmF,SACnBi+B,MAAOpjC,EAAWojC,QAClBd,UAAWtiC,EAAWsiC,aACvB,CAAEn9B,OAAQygS,IAEb,OAAO5lS,EAAWa,EAAQ,OAAS,SAASb,EAAWsxC,YAAY20P,KAGvEJ,sBAAuB,SAASD,EAAezgS,GACvC2gS,GAAkB3gS,IAA4B,KAAjBA,EAAOvtB,OACpCguT,EAAcjzQ,QAAQ9hD,KAAKs0B,IAInCwgS,wBAAyB,SAASloS,GAC9B,GAAKA,EAAWk1B,QAAhB,CAMA,IAFA,IAAIuzQ,EAEKzvT,EAAI,EAAGA,EAAIgnB,EAAWk1B,QAAQj8C,OAAQD,IACvC,eAAgBgnB,EAAWk1B,QAAQl8C,KACnCyvT,EAAkBzvT,GAIrBuB,MAAMkuT,IACPzoS,EAAWk1B,QAAQj5C,OAAOwsT,EAAiB,KAInD1D,gBAAiB,SAASznT,EAASmhC,GAC1BnhC,GAIL7L,KAAK6wB,QAAQmc,GAAQ,WACjB,MAAO,CAAE7Y,SAAUtoB,OAI3BonT,cAAe,WACX,IAAI1nP,EAAOvrE,KACP+yT,EAASxnP,EAAKwnP,OAEbA,IAIL/yT,KAAKszT,gBAAgBP,EAAQ,WAC7BA,EAAOjjT,KAAKy7D,EAAKunP,eAAe,CAAE/rS,SAAUwkD,KAC5CvrE,KAAKszT,gBAAgBP,EAAQ,aAGjCkE,cAAe,SAAS/pT,GACpBvK,EAAE3C,KAAK+yT,QAAQ5qS,OAAOjb,IAG1BgqT,cAAe,SAAShqT,GACFlN,KAAK0yE,SAASnsB,QAAQ5G,KAAKsxQ,GACjC9oS,OAAOjb,IAGvB8lT,cAAe,WACX,IAAIznP,EAAOvrE,KACPy4E,EAASlN,EAAKkN,OAASz4E,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAAS+jE,EAAKkN,OAAOtjC,WAAWjrC,QAAUqhE,EAAKkN,OAAS,KAE3HA,IAILz4E,KAAKszT,gBAAgB76O,EAAQ,WAC7BA,EAAO3oE,KAAKy7D,EAAK6iP,eAAe,CAAErnS,SAAUwkD,KAC5CvrE,KAAKszT,gBAAgB76O,EAAQ,aAGjC0+O,cAAe,WACX,OAAOn3T,KAAKkH,QAAQ4rT,gBAAkB9yT,KAAK8wB,WAAWkD,WAAWxsB,QAGrEqrT,WAAY,WACR,IAAI5qT,EAAOjI,KACP0I,EAAQT,EAAKf,QAAQwB,MAEX,OAAVA,EACAT,EAAK4D,QAAQqjB,IAAIxmB,IAEjBA,EAAQT,EAAK6tT,YACb7tT,EAAKf,QAAQwB,MAAQA,GAGzBT,EAAKmvT,KAAO1uT,GAGhB2uT,YAAa,WACT,IAEIpyS,EAFAhd,EAAOjI,KACP8oD,EAAQ7gD,EAAK6oB,WAAWoqC,OAAOpS,MAG/BA,GAASA,EAAMl6B,SACf3J,EAAQ6jC,EAAMl6B,OAAO3mB,EAAKf,QAAQqrE,iBAErBttD,EAAMvf,MAAuB,WAAfuf,EAAMvf,OAC7BuC,EAAKf,QAAQu5C,YAAa,IAKtCm1C,OAAQ,SAAS6xM,GACb,OAAOznS,KAAK0yE,SAAS9sC,MAAM6hQ,IAG/B1tO,QAAS,SAAS7yD,GACd,IAKIqnB,EALAtmB,EAAOjI,KACPs3T,EAAgBrvT,EAAKf,QACrBkwC,EAAOlwC,EAAQkwC,KACfi/Q,EAAeiB,EAAcjB,aAC7BpxS,EAAQqyS,EAAc/kP,cAG1B,GAAI8jP,GAAgBA,EAAa7uT,OAAQ,CACrC+mB,EAAa,CACTmzB,MAAO,KACP+B,QAAS,GACT8zQ,YAAY,GAEhB,IAAK,IAAIhwT,EAAI,EAAGA,EAAI8uT,EAAa7uT,OAAQD,IACrCvH,KAAK22T,sBAAsBpoS,EAAYtmB,EAAKuvT,iBAAiBpgR,EAAMi/Q,EAAa9uT,UAGpFgnB,EAAatmB,EAAKuvT,iBAAiBpgR,EAAMnyB,GAG7Chd,EAAKwvT,MAAQvwT,EAAQqqF,KACrBtpF,EAAKkuT,cAAc5nS,IAGvBipS,iBAAkB,SAAS9uT,EAAOuc,GAC9B,IACIqyS,EADOt3T,KACckH,QACrBu5C,EAAa62Q,EAAc72Q,WAC3BwC,EAHOjjD,KAGuB8wB,WAAW5pB,QAAQ+7C,uBAErD,MAAO,CACHv6C,MAAO+3C,EAAcwC,EAAyBv6C,EAAMy6C,kBAAkBF,GAA0Bv6C,EAAM4P,cAAiB5P,EACvHuc,MAAOA,EACP+9B,SAAUs0Q,EAAcrhS,OACxBwqB,WAAYA,IAIpBi3Q,aAAc,WACV,IAAInsP,EAAOvrE,KACP8wK,EAAavlG,EAAKrkE,QAAQ+iB,SAASgsC,MAElCsV,EAAKguD,SACNhuD,EAAKguD,OAAS52H,EAAG,wDAA+DmuK,EAAa,KAASnwK,EAAMgpB,GAAG2tE,KAAK,KAAQ,WAAYx0E,KAAK,CACzIgN,KAAQ,SACR+lE,UAAa,KAIhBtqB,EAAKrkE,QAAQywT,aACdpsP,EAAKguD,OAAOxiG,SAEhB/2B,KAAK01T,cAGT35R,OAAQ,SAASqb,GACb,IAAIlwC,EAAUlH,KAAKkH,QAEnBkwC,EAAuB,iBAATA,EAAoBA,EAAOp3C,KAAK43T,cAE9Cz9R,aAAan6B,KAAK63T,kBAEZ3wT,EAAQ8uT,mBAAqB5+Q,EAAK5vC,QAAW4vC,EAAK5vC,QAAUN,EAAQvB,aACtE3F,KAAKomN,OAAS,SACVpmN,KAAK0yE,WACL1yE,KAAK0yE,SAASolP,cAAgBn3T,EAAM6iC,KAAK4T,GAAM5vC,QAG9CxH,KAAKwzT,mBAGNxzT,KAAK+5D,QAAQ,CAAE3iB,KAAMA,EAAMm6C,MAAM,IAFjCvxF,KAAK+3T,cAAc3gR,KAO/B3jC,QAAS,SAASg0R,GACd,OAAOznS,KAAK41F,OAAO6xM,IAGvBrzQ,MAAO,WACH,OAAOp0B,KAAKwyS,GAAG,GAAGr9P,UAGtBnzC,QAAS,WACL,IAAIiG,EAAOjI,KACPwrB,EAAKvjB,EAAKujB,GAEdkF,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKi1S,qBAEDj1S,EAAKoqT,UAAYpqT,EAAKqqT,WAAarqT,EAAKsqT,YACxCtqT,EAAKoqT,SAASrwT,UACdiG,EAAKqqT,UAAUtwT,UACfiG,EAAKsqT,SAASvwT,WAGlBiG,EAAKyqE,SAAS1wE,UACdiG,EAAKsjE,KAAKtyC,IAAIzN,GAEdvjB,EAAKirF,MAAMlxF,UAEPiG,EAAK+vT,OACL/vT,EAAK+vT,MAAM/+R,IAAI,QAAShxB,EAAKgwT,eAG7BhwT,EAAK4rB,OACL5rB,EAAK4rB,MAAM7xB,WAInBqyB,SAAU,SAAStb,GACf,IAAI9Q,EAAOjI,KAEX,GAAI+Y,IAAUnW,EACV,OAAOqF,EAAKyqE,SAASwlP,oBAAoB,GAG7C,GAAqB,iBAAVn/S,EAAoB,CAC3B,GAAI9Q,EAAKf,QAAQwuD,QACb,OAAOztD,EAAK6oB,WAAWwrC,SAAS35D,EAAEoW,GAAOlL,KAAK,QAGlDkL,EAAQpW,EAAEsF,EAAKmsB,SAASrb,MAAMA,GAGlC,OAAO9Q,EAAK6oB,WAAWkD,WAAWjb,IAGtC27S,cAAe,WACX,IAAIjhT,EAAUzT,KAAK0yE,SAAS9sC,QACxBnyB,GAAWzT,KAAKkzF,MAAM5mF,WACtBtM,KAAKmzT,SAASlmT,IAAIjN,KAAKyzT,aAAa3wS,KAAKgvS,EAAuBr+S,EAAQqP,KAAK,QAIrF6xS,gBAAiB,WACb30T,KAAKmzT,SAASlmT,IAAIjN,KAAKyzT,aAAaniS,WAAWwgS,IAGnDpf,WAAY,WACR,IAAIzqS,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACf4nB,EAASnuB,EAAMmuB,OACf28C,EAAY5/D,EAAQiX,KAAKniB,EAAMmiB,KAAK,eACpCkuD,EAAanlE,EAAQiX,KAAKniB,EAAMmiB,KAAK,iBAEpC5b,EAAQqrE,eAAiB9G,IAC1BvkE,EAAQqrE,cAAgB9G,IAGvBvkE,EAAQupE,gBAAkBO,IAC3B9pE,EAAQupE,eAAiBO,GAG7B/oE,EAAK6iS,MAAQh8Q,EAAO5nB,EAAQqrE,eAC5BtqE,EAAKq+M,OAASx3L,EAAO5nB,EAAQupE,iBAGjCy4N,MAAO,SAASv5Q,GACZ,IAGIwoS,EAHAlwT,EAAOjI,KACPkH,EAAUe,EAAKf,QACf2E,EAAU5D,EAAKkrT,SAGfjsT,EAAQkxT,UAAYx1T,IAGZu1T,EAFe,SAAnBjxT,EAAQ+uB,QACgB,IAApB/uB,EAAQkxT,QACO,SAEA,QAGK,IAApBlxT,EAAQkxT,QACO,OAEA,OAIvBvsT,EAAQiX,KArxBI,oBAqxBoBq1S,IAGpCxoS,EAAKA,EAAKA,EAAK,IAAM1nB,EAAKuqS,GAAG,GAAG7iR,GAAK1nB,EAAKuqS,GAAG,GAAG7iR,GAEhD9jB,EAAQiX,KAAK,CACT,gBAAiB6M,IAGjB1nB,EAAKwrT,aAAexrT,EAAKwrT,YAAYjsT,OAAS,GAC9CS,EAAKwrT,YAAY3wS,KA9xBT,gBA8xB6B6M,GAGzC1nB,EAAKuqS,GAAG1vR,KAhyBA,YAgyBiB7a,EAAKurT,mBAA6B,SAAR,OAEnDvrT,EAAKirB,WAAWjrB,EAAKkrT,WAGzBluM,MAAO,WACH,IAAIh9G,EAAOjI,KAEXiI,EAAK62D,UACL72D,EAAKq9C,QACLr9C,EAAKowT,gBAAiB,GAG1BC,gBAAiB,SAAS5vT,GACtB,OAAOA,IAAU6vT,GAAUv4T,KAAKo3T,YAAa1uT,IAGjDo2D,QAAS,WACL,IAII10D,EAJAnC,EAAOjI,KACP+Y,EAAQ9Q,EAAKupE,cACbM,EAAc7pE,EAAKf,QAAQwB,MAC3BA,EAAQT,EAAKS,QAGbT,EAAKkqT,YAAclqT,EAAKyqE,SAASC,SAAWb,IAC5CppE,EAAQopE,GAGR7pE,EAAKqwT,gBAAgB5vT,IAEdT,EAAKuwT,sBAAwB51T,GAAeqF,EAAKuwT,sBAAwBD,GAAUtwT,EAAKmvT,YAAanvT,EAAKuwT,sBAAwBvwT,EAAKowT,eAD9IjuT,GAAU,EAGH2O,IAAUnW,GAAemW,IAAU9Q,EAAKwwT,WAAcxwT,EAAKyqE,SAASgmP,eAC3EtuT,GAAU,GAGVA,IAEkB,OAAdnC,EAAKmvT,MAA+B,KAAdnvT,EAAKmvT,MAAyB,KAAV1uT,EAC1CT,EAAKuwT,oBAAsBvwT,EAAKmvT,KAAO1uT,EAEnCT,EAAKosB,WACLpsB,EAAKuwT,oBAAsBvwT,EAAKmvT,KAAOnvT,EAAKf,QAAQupE,eAAiBxoE,EAAKosB,WAAWpsB,EAAKf,QAAQupE,gBAAkBxoE,EAAKosB,WAEzHpsB,EAAKuwT,oBAAsBvwT,EAAKmvT,KAAO,KAG/CnvT,EAAKwwT,UAAY1/S,EAEZ9Q,EAAK0wT,SAEN1wT,EAAK4D,QAAQzB,QAAQ0yC,GAGzB70C,EAAKmC,QAAQ0yC,IAGjB70C,EAAK2wT,QAAS,GAGlBv/P,MAAO,WACH,OAAOr5D,KAAK8wB,WAAW4G,QAG3BuxQ,QAAS,WACL,IAAIhhS,EAAOjI,KACPkH,EAAUe,EAAKf,QACfgxB,EAAWjwB,EAAK4D,QAAQU,GAAG,cAE3BrF,EAAQqgB,SAAW3kB,IACnBsE,EAAQggB,QAAUhgB,EAAQqgB,SAGzBrgB,EAAQggB,SAAWgR,EACpBjwB,EAAKsf,QAAO,GAEZtf,EAAKyoE,SAASzoE,EAAK4D,QAAQU,GAAG,gBAItCssT,WAAY,SAASxkS,GACjB,IAAI3rB,EAAQ1I,KAAKsmN,OAAOjyL,GAMxB,OAJI3rB,IAAU9F,IACV8F,EAAQ1I,KAAK8qS,MAAMz2Q,IAGhB3rB,GAGXowT,cAAe,WACX,IAAIvkS,EAAe,EASnB,OARev0B,KAAK0yE,SAASnsB,QAAQp6C,SAASs1N,QAAQ,YAE7Cz+N,MAAK,WACV,IAAI6I,EAAUlJ,EAAE3C,MAEhBu0B,GAAgBtoB,EAAYJ,GAAS,MAGlC0oB,GAGXwkS,QAAS,SAASvxT,GACd,IAKeoxS,EALX3wS,EAAOjI,KACPurE,EAAOtjE,EAAKsjE,KACZ5+D,EAAS1E,EAAKf,QAAQyF,OACtBL,EAAUrE,EAAKirF,MAAM5mF,UACrB0sT,EAASh5T,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAG1D,GAAIA,GAAUS,EAAKf,QAAQ4rT,eAAgB,CAIvC,GAFAla,EAASrtO,EAAKp/D,SAASc,IAAIs+D,EAAKl/D,QAAQ,0BAA0BY,IAAIs+D,EAAKl/D,QAAQ,kCAAkCa,QAEhHq+D,EAAKp/D,SAASI,GAAG,YAElB,YADAqsS,EAAOzrS,OAIXR,EAAS1E,EAAKyqE,SAASnsB,QAAQ,GAAGtiC,aAAetX,EAASA,EAAS,OAEnEisS,EAAOjsS,OAAOA,GAEC,SAAXA,IAGAA,GAFY1E,EAAK6wT,gBAIbE,IACArsT,EAASA,GAAUV,EAAYtJ,EAAEsF,EAAKwwE,UAAY,IAAMxsE,EAAYtJ,EAAEsF,EAAK2rT,iBAAmB,KAIlGoF,EACA/wT,EAAKyqE,SAASnsB,QAAQt6C,YAAYU,GAElC1E,EAAKyqE,SAASnsB,QAAQp6C,SAASF,YAAYU,GAG1CL,GACDi/D,EAAKp/D,SAASgB,OAItB,OAAOR,GAGXmiT,aAAc,SAASnqT,GACnB,IAAI8O,EAEJzT,KAAKi5T,mBAEDj5T,KAAKoK,QAAQwlF,GACbjrF,EAAEwE,kBAEFnJ,KAAKmzT,SAASrwS,KAAK6lR,GAAe,GAClC3oS,KAAKwyS,GAAG1vR,KAAK+8M,GAAa,IAE1BpsN,EAAUzT,KAAK0yE,SAAS9sC,UAEpB5lC,KAAKmzT,SAASlmT,IAAIjN,KAAKyzT,aAAa3wS,KAAKgvS,EAAuBr+S,EAAQqP,KAAK,SAKzFm2S,iBAAkB,WACd,IAII/pT,EAAe+6R,EAJfhiS,EAAOjI,KACPurE,EAAOtjE,EAAKsjE,KAAKp/D,SACjBa,EAAQu+D,EAAK,GAAG9+D,MAAMO,MACtBZ,EAAUnE,EAAKmE,QAGnB,MAAMm/D,EAAK19D,KAAKujC,IAAUpkC,GAAU/E,EAAKotT,mBAyBzC,OArBAnmT,EAAgBpO,OAAOwO,iBAAmBxO,OAAOwO,iBAAiBlD,EAAQ,GAAI,MAAQ,EACtF69R,EAAgBlhS,WAAWmG,GAAiBA,EAAclC,QAAUjB,EAAWK,GAE3E8C,GAAiB8S,EAAQoB,OACzB6mR,GAAiBlhS,WAAWmG,EAAc2oH,aAAe9uH,WAAWmG,EAAcyhJ,cAAgB5nJ,WAAWmG,EAAcs2M,iBAAmBz8M,WAAWmG,EAAcu2M,mBAIvKz4M,EAD2B,eAA3Bu+D,EAAK3+D,IAAI,cACDq9R,GAAiBl+R,EAAWw/D,GAAQA,EAAKv+D,SAEzCi9R,EAGZ1+N,EAAK3+D,IAAI,CACLgkJ,WAAYxkJ,EAAQQ,IAAI,eACxBI,MAAO/E,EAAKf,QAAQgyT,UAAY,OAASlsT,EACzCs+M,SAAUt+M,EACV+mJ,WAAY9rJ,EAAKf,QAAQgyT,UAAY,SAAW,WAEnDrrT,KAAKujC,EAAOpkC,IAEN,GAGXuyS,cAAe,SAAS56S,GAChBA,EAAEwoT,aACFntT,KAAKm5T,wBAILn5T,KAAKoK,QAAQylF,GACblrF,EAAEwE,kBAEFnJ,KAAKmzT,SAASrwS,KAAK6lR,GAAe,GAClC3oS,KAAKwyS,GAAG1vR,KAAK+8M,GAAa,GAC1B7/N,KAAKmzT,SAASlmT,IAAIjN,KAAKyzT,aAAaniS,WAAWwgS,KAIvDsH,WAAY,WACR,IAAI1mP,EAAW1yE,KAAK0yE,SAChB2mP,GAAiB3mP,EAAS9sC,QAC1B7sB,EAAQopB,GAAKuwC,EAAStsC,UAEtBrtB,IAAUnW,GAAe5C,KAAKkH,QAAQ+uT,gBAAkBoD,IACxDtgT,EAAQ,GAGRA,IAAUnW,EACV8vE,EAAS9sC,MAAM7sB,GACRsgT,GACP3mP,EAAS4mP,cAAc,IAI/BC,uBAAwB,SAAS5sT,GAC7B,IAAIssJ,EAAKj5J,KAAKwyS,GAAGr9P,SAAS,YAAYjrC,QAClCsvT,EAAcx5T,KAAK0yE,SAASnsB,QAAQ5G,KAAKsxQ,GACzCl7K,EAAU,EACV9hG,EAAY,QAEZulR,EAAY,IAAuC,SAAjCA,EAAY,GAAG/sT,MAAMI,UACxB,SAAXF,IACAopI,EAAUp1I,EAAM4C,QAAQoa,aAGxB3d,KAAK6L,QAAQwsB,QAAQ,UAAU7wB,SAC/BysC,EAAY,QAGhB8hG,GAAWhtI,WAAWkwJ,EAAGrsJ,IAAI,UAAYqnC,EAAY,UAAW,IAAMlrC,WAAWkwJ,EAAG9jH,SA1kC9E,4BA0kCoGvoC,IAAI,WAAaqnC,GAAY,IACvIulR,EAAY5sT,IAAI,WAAaqnC,EAAW8hG,KAIhD0jL,sBAAuB,SAAS9nS,GAC5B,IAAIhlB,EAAS3M,KAAK+4T,QAAQ/4T,KAAK8wB,WAAWkD,WAAWxsB,QAAUmqB,GAC/D3xB,KAAKu5T,uBAAuB5sT,GAC5B3M,KAAK05T,+BAA+B/sT,IAGxC+sT,+BAAgC,SAAS/sT,GACrC,GAAI3M,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAAQ,CACrD,IACI8W,EAAQ/a,EAAQ+a,MADTte,KACoBoM,SAC3BuR,EAAYhd,EAAM4C,QAAQoa,YAFnB3d,KAIN4zT,cAAchnT,IAAK0R,EAAQ,eAAiB,gBAA6B,SAAX3R,EAAoBgR,EAAY,KAI3Gg8S,eAAgB,WACZ,IAAIjnP,EAAW1yE,KAAK0yE,SAChBknP,EAAgBlnP,EAAS7mE,QAAQc,SAAW+lE,EAASnsB,QAAQ55C,SAE7D3M,KAAKkH,QAAQgyT,WACbxmP,EAASnsB,QAAQ35C,IAAI,CACjB+oM,UAAW,SACXG,UAAW8jH,EAAgB,SAAW,UAKlDvE,gBAAiB,WACb,MAAqC,SAA9Br1T,KAAKkH,QAAQkrT,eAA4BpyT,KAAKsyT,UAAUzxT,eAAeW,SACnExB,KAAKuyT,SAAS1xT,eAAeW,UAG5Cq4T,aAAc,SAASloS,GACf3xB,KAAKkH,QAAQwuD,SACN11D,KAAKq1T,oBAIXr1T,KAAKkzF,MAAMrnF,QAAQU,GAAG,YAWvBvM,KAAKy5T,sBAAsB9nS,IAV3B3xB,KAAKkzF,MAAMvpF,IAAI,OAAQ,SAAUgoB,GAC7B,OAAO,SAAUhtB,GACRA,EAAE0E,sBACHrJ,KAAKy5T,sBAAsB9nS,IAEhCnoB,KAAKxJ,OACTuK,KAAKvK,KAAM2xB,IAEd3xB,KAAKkzF,MAAMvpF,IAAIomF,EAAU/vF,KAAK25T,eAAenwT,KAAKxJ,UAM1DooS,OAAQ,WACJ,IAAI78N,EAAOvrE,KAEXurE,EAAKA,KAAKv/C,KAAK,SAEmB,SAA9Bu/C,EAAKrkE,QAAQkrT,cACb7mP,EAAK8mP,SAASzwT,QAAQ2pE,EAAKuuP,aAAatwT,KAAK+hE,IAC7CA,EAAK+mP,UAAU1wT,QAAQ2pE,EAAKwuP,mBAAmBvwT,KAAK+hE,IACpDA,EAAKgnP,SACA3wT,SAAQ,WACA2pE,EAAK2nB,OACN3nB,EAAKwuP,qBAGTxuP,EAAK2nB,MAAMi7N,YAAW,OAG9B5iP,EAAKuuP,gBAIbA,aAAc,WACV,IAAI3oM,EAAWnxH,KAEXurE,EAAOvrE,KAEPurE,EAAK2nB,QACL3nB,EAAKyuP,mBAAqBzuP,EAAKkoP,YAAcloP,EAAKkoP,YAAYvkS,MAAQ,KACtEq8C,EAAK2nB,MAAMlxF,UACXupE,EAAK0uP,sBACL1uP,EAAK2uP,uBAGT3uP,EAAK2nB,MAAQ,IAAIvpE,EAAGmnE,MAAMvlB,EAAKA,KAAKp/D,SAASoY,SAAS,oBAAqBxhB,EAAO,GAAIwoE,EAAKrkE,QAAQgsF,MAAO,CACtG/B,OAAQ5lB,EAAKn/D,QACbmlF,KAAMhmB,EAAKujP,aAAatlT,KAAK+hE,GAC7BjmB,MAAOimB,EAAKg0O,cAAc/1S,KAAK+hE,GAC/B+lB,UAAW/lB,EAAKrkE,QAAQoqF,UACxBhzE,MAAO/a,EAAQ+a,MAAMitD,EAAKn/D,SAC1BN,SAAUy/D,EAAKrkE,QAAQgyT,UACvB1zM,SAAU,WACN2L,EAASkiM,yBAEbtb,WAAY,WACR5mL,EAASkiM,4BAIjB9nP,EAAK4uP,iBAAmB5uP,EAAKioP,oBAAsBjoP,EAAKrkE,QAAQkzT,YAAc,WAC1E7uP,EAAKknP,gBACLlnP,EAAKA,KACAp/D,SACAghF,QAAQxqF,EAAE4oE,EAAKgoP,iBACfx9R,KAAK,gBACLgkB,OAAOwxB,EAAKkoP,aACjBloP,EAAKhkD,UACL5kB,EAAEQ,KAENooE,EAAK8uP,oBAGTC,qBAAsB33T,EAAEQ,KACxBg2T,sBAAuBx2T,EAAEQ,KAEzB42T,mBAAoB,WAChB,IAAI5oM,EAAWnxH,KAEXurE,EAAOvrE,KAEPurE,EAAK2nB,QACL3nB,EAAKyuP,mBAAqBzuP,EAAKkoP,YAAcloP,EAAKkoP,YAAYvkS,MAAQ,KACtEq8C,EAAK2nB,MAAMlxF,UACXupE,EAAK0uP,sBACL1uP,EAAK2uP,sBACL3uP,EAAKA,KAAKp/D,SAASS,IAAI,CACnBI,MAAO,GACPL,OAAQ,GACR2+M,SAAU,MAIlB//I,EAAK2nB,MAAQ,IAAIvpE,EAAG8jS,YAAYliP,EAAKA,KAAKp/D,SAAU,CAChDkiT,eAAgB,SAAUnnT,GAAW,MAAO,0IAG3BqkE,EAAKrkE,QAAQ2sB,MAAS,8BAAmC03C,EAAKrkE,QAAa,MAAI,SAAY,KAC3FqkE,EAAKrkE,QAAQwd,YAAe,sDAA0D6mD,EAAKrkE,QAAQwd,aAAe,IAAM,SAAY,IACzI,UACCxd,EAAQimT,YACT,sCACIxsT,EAAMmP,KAAK02R,aAAc,yBAA8B7lS,EAAMmiB,KAAK,gCAAmC,aAAe,CAAEw0E,KAAM,IAAKtkE,SAAU,OAAQvjB,KAAM,UAC7J,SACE,IACN,UACH0hH,EAASqiM,mBAAsB,kEAAuEjoP,EAAmB,eAAI,SAAY,IAC9I,UACAgmB,KAAMhmB,EAAKujP,aAAatlT,KAAK+hE,GAC7BjmB,MAAOimB,EAAKg0O,cAAc/1S,KAAK+hE,GAC/BgjP,iBAAiB,EACjBD,UAAU,EACVnhR,SAAWo+B,EAAKrkE,QAAQgsF,OAAS3nB,EAAKrkE,QAAQgsF,MAAM/lD,UAAa/9B,SAAS6O,KAC1EkvS,aAAa,EACbgB,WAAY5iP,EAAKgnP,SAAS1xT,eAAeW,QACzCgkH,SAAU,WACN2L,EAASkiM,yBAEbtb,WAAY,WACR5mL,EAASkiM,yBAEbngO,MAAOnwF,EAAO,GAAIwoE,EAAKrkE,QAAQgsF,MAAO,CAClCpnF,SAAUy/D,EAAKrkE,QAAQgyT,cAI/B3tP,EAAK4uP,iBAAmBn6T,KAAKwzT,mBAAqB,WAC9CjoP,EAAKknP,gBACLlnP,EAAK2nB,MAAMrnF,QACNkqB,KAAK,gBACLgkB,OAAOwxB,EAAKkoP,aACjBloP,EAAKhkD,UACL5kB,EAAEQ,KAGNooE,EAAK8uP,mBACL9uP,EAAK+uP,wBAGTL,oBAAqB,WACbj6T,KAAKyzT,cACLzzT,KAAKyzT,YACAx6R,IAAIj5B,KAAKwrB,IACTnf,QAAQ,kBACR0qB,SAEL/2B,KAAKyzT,YAAc,OAI3ByG,oBAAqB,WACjBl6T,KAAK0yE,SAAS1sB,OAAOjvB,UAGzBsjS,iBAAkB,WACd,IACIE,EADAhvP,EAAOvrE,KAGXurE,EAAK4uP,mBAED5uP,EAAKkoP,aAAeloP,EAAKyuP,oBACzBzuP,EAAKkoP,YAAYvkS,IAAIq8C,EAAKyuP,oBAG9BzuP,EAAK2nB,MAAMrnF,QAAQshF,QAAQ5hB,EAAKvlB,QAC3B/8B,GAnvCG,YAmvCYjpB,KAAKwrB,GAAIxrB,KAAKy1T,eAAejsT,KAAKxJ,OAElDurE,EAAKmH,WACL6nP,EAAgBhvP,EAAKmH,SAAShqE,QAE1B6iE,EAAKmH,SAAS8nP,QACdjvP,EAAKmH,SAAS8nP,SAIdjvP,EAAKkvP,SAAWlvP,EAAKrkE,QAAQwuD,SAC7B6V,EAAKkvP,QAAQluQ,QAGjBgf,EAAKmH,SAAS1wE,UACdupE,EAAKwpP,UAAU,CAAEE,iBAAiB,IAClC1pP,EAAKmH,SAAShqE,MAAM6xT,KAI5BzmB,aAAc,SAASnvS,GACnBhC,EAAEgC,EAAEg5E,eAAe31D,YAAY6oS,EAAOlsT,EAAEe,OAASkpS,IAGrD8rB,QAAS,SAASnpO,EAAMopO,GACpB,IAAI1yT,EAAOjI,KACP46T,EAAer3T,EAAQkf,WAAalf,EAAQkb,OAASlb,EAAQs3T,YAAct3T,EAAQ8iB,UAEvFkrE,EAAOA,IAAS3uF,EAAc2uF,GAAQtpF,EAAKirF,MAAM5mF,UAE5CquT,GAAiBC,GAAgB3yT,EAAKkrT,SAAS,KAAO/5S,MACvDnR,EAAK6yT,UAAW,EAChB7yT,EAAKkrT,SAAS/oT,QAAQy8R,GACtB5+R,EAAK6yT,UAAW,GAGpB7yT,EAAKspF,EAAO3B,EAAOC,MAGvBkrO,gBAAiB,WACb,IAAI9yT,EAAOjI,KAENiI,EAAK+yT,mBAAqB/yT,EAAKS,UAAY6vT,GAAUtwT,EAAKgzT,sBAAuBhzT,EAAKS,WACvFT,EAAKgzT,eAAiBhzT,EAAKS,QAC3BT,EAAK+yT,mBAAoB,EACzB/yT,EAAKmC,QAAQ+mT,EAAS,CAAE+J,cAAejzT,EAAKowT,mBAIpD8C,eAAgB,WACRn7T,KAAKw4T,sBAAwBx4T,KAAK0I,SAClC1I,KAAKoK,QAAQ0yC,IAIrBogQ,kBAAmB,WACf,IAAIj1S,EAAOjI,KAEXiI,EAAK6oB,WAAW7mB,OAAO4gD,EAAc5iD,EAAKmzT,sBAC1BnxT,OAAO8gD,EAAY9iD,EAAKozT,oBACxBpxT,OAAO,QAAShC,EAAKm1S,gBAGzCke,mBAAoB,SAASp0T,EAASwB,GAElC,KADgBxB,EAAQwB,iBAAiBxF,MAAQgE,EAAQwB,MAAMlB,OAASN,EAAQwB,SAAWA,aAAiBxF,MAAQwF,EAAMlB,OAASkB,KACnHxB,EAAQwuD,SAAkD,mBAAhCxuD,EAAQwuD,QAAQ6lQ,YACtD,MAAM,IAAI9qT,MAAM,uKAK5B,SAAS8nT,GAAU7vT,EAAOhD,GActB,OAbIgD,IAAU9F,GAAyB,KAAV8F,GAA0B,OAAVA,IAC5B,YAAThD,GACqB,kBAAVgD,IACPA,EAA2C,SAAnCA,EAAMwI,WAAWoH,eAE7B5P,EAAQ6J,QAAQ7J,IACA,WAAThD,EACPgD,EAAQ4J,OAAO5J,GACC,WAAThD,IACPgD,EAAQA,EAAMwI,aAIfxI,EAGX3F,EAAOmvT,GAAM,CACT78R,QAAS,SAAS6N,EAAMtd,GACpB,IAAIhc,EAAKpC,EAAQ2sF,EAAWvuE,EAAWuvB,SAEvC,IAAKjS,GAAQA,EAAKtd,aAAeA,EAC7B,OAAQ,EAGZ,IAAKhc,EAAM,EAAGpC,EAAS2sF,EAAS3sF,OAAQoC,EAAMpC,EAAQoC,IAClD,GAAIs5B,IAASixD,EAASvqF,GAClB,OAAOA,EAIf,OAAQ,GAEZ2uT,UAAWA,KAGf53T,EAAMgpB,GAAGuoS,KAAOA,GAEhBvoS,EAAGymD,OAAS8hP,GAAKnvT,OAAO,CACpBoF,KAAM,SAAS0D,EAAS3E,GACpBgrT,GAAKnqT,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GACjClH,KAAKw7T,SAAWx7T,KAAK6L,QAAQqjB,OAGjCs2M,cAAe,SAAS10M,GACpB,IACI3kB,EADAlE,EAAOjI,KAGXiI,EAAKf,QAAQ4pB,WAAaA,EAE1B7oB,EAAK4jE,cAED5jE,EAAKyqE,SAASC,UACd1qE,EAAKwzT,cAAgB,KACrBxzT,EAAKyqE,SAASyvE,SAAW,MAG7Bl6I,EAAKyqE,SAAS8yJ,cAAcv9N,EAAK6oB,YAE7B7oB,EAAKf,QAAQ6pE,UACb9oE,EAAK6oB,WAAWq0C,SAGpBh5D,EAASlE,EAAKyzT,kBAGVzzT,EAAK0zT,eAAexvT,IAI5Bm5C,MAAO,WACHtlD,KAAKkzF,MAAM5tC,SAGflf,OAAQ,SAASqhQ,GACb,IAAIx/R,EAAOjI,KAEX,OAAIynS,IAAc7kS,EACPqF,EAAKupE,cAELvpE,EAAKy5E,QAAQ+lN,GAAWj7P,MAAK,WAChCvkC,EAAK2zT,cAAgB3zT,EAAKmvT,KAAOnvT,EAAK6tT,YACtC7tT,EAAKwwT,UAAYxwT,EAAKupE,cAEtBvpE,EAAKorT,4BAKjByC,UAAW,SAASptT,EAAOkB,GACvB,OAAO5J,KAAKA,KAAKmyT,UAAY,kBAAoB,kBAAkBzpT,EAAOkB,IAG9EiyT,eAAgB,SAASnzT,GACrB,IAAImD,EAAU7L,KAAK6L,QAAQ,GAE3B,GAAInD,IAAU9F,EACV,OAAOiJ,EAAQnD,MAED,OAAVA,IACAA,EAAQ,IAEZmD,EAAQnD,MAAQA,GAIxBozT,gBAAiB,SAASpzT,EAAOkB,GAC7B,IAAIiC,EAAU7L,KAAK6L,QAAQ,GAG3B,GAAInD,IAAU9F,EACV,OAAOqxJ,GAAkBpoJ,GAASnD,OAAS,GAG/CurJ,GAAkBpoJ,GAAS4lE,UAAW,EAElC7nE,IAAQhH,IACRgH,GAAO,GAGW,OAAVlB,GAA4B,KAAVA,IAEN,GAARkB,EACZ5J,KAAK+7T,QAAQrzT,GAETA,EACAmD,EAAQnD,MAAQA,EAEhBmD,EAAQ2lE,cAAgB5nE,GAKpCoyT,kBAAmB,WACf,OAAO,GAGXD,QAAS,SAASrzT,GACd,IAAIT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfowT,EAASh0T,EAAK8tT,cAEbkG,IACDA,EAASt5T,EAAE,aACXsF,EAAK8tT,cAAgBkG,EAErBpwT,EAAQkuC,OAAOkiR,IAGnBA,EAAOr7R,KAAKl4B,GACZuzT,EAAO,GAAGxqP,UAAW,GAGzByqP,UAAW,WACP,IAAIj0T,EAAOjI,KACXm6B,aAAalyB,EAAKk0T,OAClBl0T,EAAKm0T,WAAWjwS,YAAY4kS,GAC5B9oT,EAAKkrT,SAASrwS,KAAKivS,GAAW,GAC9B9pT,EAAKk0T,MAAQ,KACbl0T,EAAK0tT,cAGT0G,UAAW,SAAS13T,GAChB,IAAIsD,EAAOjI,KAEP2E,EAAE0E,uBAINpB,EAAKq0T,UAAW,EAEZr0T,EAAKk0T,QAITl0T,EAAKk0T,MAAQpjS,YAAW,WAChB9wB,EAAKm0T,aACLn0T,EAAKkrT,SAASrwS,KAAKivS,GAAW,GAC9B9pT,EAAKm0T,WAAW73S,SAASwsS,GACzB9oT,EAAKytT,gBAEV,QAGP6G,YAAa,WACTv8T,KAAKs8T,UAAW,EAChBt8T,KAAKk8T,aAGTrwP,YAAa,WACT,IAIIjiE,EAJA3B,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACf4pB,EAAa5pB,EAAQ4pB,YAAc,GAGvCA,EAAa5tB,MAAMD,QAAQ6tB,GAAc,CAAEjjB,KAAMijB,GAAeA,EAE5D7oB,EAAKkqT,aACLvoT,EAAMiC,EAAQ,GAAG2lE,gBACN,IACPtqE,EAAQ6R,MAAQnP,GAGpBknB,EAAWsV,OAASv6B,EACpBilB,EAAWlC,OAAS,CAAC,CAAE3J,MAAO/d,EAAQqrE,eACjB,CAAEttD,MAAO/d,EAAQupE,kBAGtCxoE,EAAK6oB,WACL7oB,EAAKi1S,qBAELj1S,EAAKmzT,qBAAuBnzT,EAAKo0T,UAAU7yT,KAAKvB,GAChDA,EAAKozT,mBAAqBpzT,EAAKs0T,YAAY/yT,KAAKvB,GAChDA,EAAKm1S,cAAgBn1S,EAAKi0T,UAAU1yT,KAAKvB,IAG7CA,EAAK6oB,WAAanwB,EAAMkN,KAAKE,WAAWi5C,OAAOl2B,GACvBtnB,KAAKqhD,EAAc5iD,EAAKmzT,sBACxB5xT,KAAKuhD,EAAY9iD,EAAKozT,oBACtB7xT,KAAK,QAASvB,EAAKm1S,gBAG/Cof,WAAY,WACRx8T,KAAK0yE,SAAS+pP,cAGlBC,UAAW,WACP18T,KAAK0yE,SAASiqP,aAGlBC,UAAW,WACP,OAAO58T,KAAK0yE,SAASmqP,aAGzBC,UAAW,WACP,OAAO98T,KAAK0yE,SAASqqP,aAGzBC,uBAAwB,SAASv1B,GAC7B,IAII1uR,EAJA9Q,EAAOjI,KACP0yE,EAAWzqE,EAAKyqE,SAChBuqP,EAA+B,iBAAdx1B,EACjBy1B,EAAiBj1T,EAAKk1T,aAAel1T,EAAKk1T,YAAY31T,OAS1D,OALIuR,EADAkkT,EACQC,IAAmBz1B,EAAYA,EAE/B/0N,EAAS0qP,gBAAgB31B,GAG9B/0N,EAAS2qP,gBAAgBtkT,IAGpCukT,8BAA+B,SAAS71B,GACpC,IAGI81B,EAAsB91B,EAM1B,OATWznS,KACem9T,aADfn9T,KACmCm9T,YAAY31T,QACvB,iBAAdigS,GAIjB81B,IAGGA,GAGX37O,MAAO,SAASj9E,GACZ,IAKI0vB,EACAwsD,EACAptE,EACA+pT,EACAC,EATAx1T,EAAOjI,KACP0yE,EAAWzqE,EAAKyqE,SAChBnhE,EAAM5M,EAAEwiC,QACR3Z,EAAOjc,IAAQ2Y,EAAKU,KACpB4kP,EAAYvnQ,EAAKf,QAAQwuD,QAO7B,GAAInkD,IAAQ2Y,EAAKQ,IAAM8C,EAAM,CACzB,GAAI7oB,EAAEw8M,OACFl5M,EAAKkgB,OAAOqF,OACT,CACH,IAAKklD,EAASC,UAAY1qE,EAAKuqS,GAAG,GAAGzoP,WAajC,OAZK9hD,EAAKy1T,SACNz1T,EAAK6oB,WAAWnnB,IAAImzC,GAAQ,WACxB70C,EAAKy1T,QAAS,EACdz1T,EAAK25E,MAAMj9E,MAGfsD,EAAKy1T,QAAS,EACdz1T,EAAKkuT,iBAGTxxT,EAAEwE,kBAEK,EAGXsK,EAAUxL,EAAK2tF,SAEV3tF,EAAKy1T,QAAYjqT,IAAWA,EAAQ2Y,SAAS0kS,KAC1CtjS,GACAgwS,EAAYv1T,EAAK20T,aAEZptD,GAAaguD,GAAa,IAAQv1T,EAAK2tF,WAAa4nO,IACrDv1T,EAAKy0T,cAGTc,EAAYv1T,EAAK60T,aAEZttD,GAAaguD,GAAa9qP,EAAS5hD,WAAW81B,QAAU,IAAQ3+C,EAAK2tF,WAAa4nO,IACnFv1T,EAAKu0T,eAKjBiB,EAAkBx1T,EAAKq1T,8BAA8Br1T,EAAK01T,KAAK11T,EAAK2tF,WAAa4nO,GAAa,GAE9Fv1T,EAAKy5E,QAAQ+7O,GAAiB,GAAMjxR,MAAK,WACrC,IAAIA,EAAO,WACFvkC,EAAKirF,MAAM5mF,WACZrE,EAAKg9G,QAGmB,OAAxBh9G,EAAKgzT,eACLhzT,EAAKgzT,eAAiBhzT,EAAKS,QAE3BT,EAAKgzT,eAAiBhzT,EAAKosB,WAAapsB,EAAKosB,WAAWpsB,EAAKf,QAAQupE,iBAAmBxoE,EAAKosB,WAAa,MAI9GpsB,EAAKmC,QAAQ2xE,EAAQ,CAAE1nD,SAAUpsB,EAAK+0T,uBAAuBS,GAAkBzuR,KAAM/mC,EAAK2tF,WAC1F3tF,EAAKy5E,QAAQjuE,GAAS+4B,KAAKA,GAE3BA,OAKZ7nC,EAAEwE,iBACF03E,GAAU,OACP,GAAItvE,IAAQ2Y,EAAKK,OAAShZ,IAAQ2Y,EAAKI,IAAK,CAC3CriB,EAAKirF,MAAM5mF,WACX3H,EAAEwE,iBAGNsK,EAAUxL,EAAK2tF,SACfvhE,EAAWpsB,EAAKosB,WAEXpsB,EAAKirF,MAAM5mF,WAAe+nB,GAAYpsB,EAAK24B,SAAW34B,EAAK6iS,MAAMz2Q,KAClE5gB,EAAU,MAGd,IACIsyB,EADA63R,EAAe31T,EAAKwrT,aAAexrT,EAAKwrT,YAAY,KAAOr6S,IAG/D,GAAI3F,EAAS,CAET,IAAIoqT,GAAgB,EAMpB,IAPAxpS,EAAWq+C,EAAS2qP,gBAAgB3qP,EAAS0qP,gBAAgB3pT,OAIzDoqT,EAAgB51T,EAAKq+M,OAAOjyL,KAAc69R,GAAKqG,UAAUtwT,EAAKS,eAAgBT,EAAKq+M,OAAOjyL,KAG1FwpS,GAAiB51T,EAAKmC,QAAQ2xE,EAAQ,CAAE1nD,SAAUA,EAAU2a,KAAMv7B,IAClE,OAGJsyB,EAAY99B,EAAKy5E,QAAQjuE,QAClBxL,EAAKwc,SACRxc,EAAK+zT,qBAAuB/zT,EAAKkqT,YACjClqT,EAAK6tT,UAAU7tT,EAAKwc,MAAMyK,OAE9BjnB,EAAKyqE,SAAShqE,MAAMT,EAAKwc,MAAMyK,QAG/BjnB,EAAK61T,eACL71T,EAAK61T,cAAc71T,EAAKmE,SAGxBwxT,GAAgBrsT,IAAQ2Y,EAAKI,IAC7BriB,EAAKmE,QAAQ2xT,WAETh4R,GAAuC,mBAAnBA,EAAUyG,KAC9BzG,EAAUyG,MAAK,WACXvkC,EAAKg9G,WAGTh9G,EAAKg9G,QAIbh9G,EAAKq9C,QACLu7B,GAAU,OACP,GAAItvE,IAAQ2Y,EAAKM,IAChBviB,EAAKirF,MAAM5mF,WACX3H,EAAEwE,iBAENlB,EAAKq9C,QACLu7B,GAAU,OACP,GAAI54E,EAAKirF,MAAM5mF,YAAciF,IAAQ2Y,EAAKe,UAAY1Z,IAAQ2Y,EAAKc,QAAS,CAC/ErmB,EAAEwE,iBAEF,IAAI8qC,EAAY1iC,IAAQ2Y,EAAKe,SAAW,GAAK,EAC7CynD,EAASsrP,WAAW/pR,EAAYy+B,EAAShzD,gBAEzCmhE,GAAU,EAGd,OAAOA,GAGXo9O,WAAY,WACR,IAAIh2T,EAAOjI,KACP8jN,IAAa77M,EAAK6oB,WAAW4G,OAAOlwB,OAEpCS,EAAKq0T,UAAYr0T,EAAKf,QAAQurE,aAI7BxqE,EAAKyqE,SAASC,SAAY1qE,EAAKy1T,QAAW55G,IAC3C77M,EAAKy1T,QAAS,EACdz1T,EAAK6oB,WAAWq0C,QAAQ34B,MAAK,WACzBvkC,EAAKy1T,QAAS,OAK1BzpL,SAAU,SAASpmI,EAAMsvT,EAAaz0T,GAClC,IAKIosB,EACAT,EACA6pS,EACAC,EARAl2T,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfuyT,EAAcvyT,EAAQ,GACtBrE,EAASqG,EAAKrG,OACdN,EAAU,GAKV0C,EAAM,EAMV,IAJIuzT,IACAj2T,EAAUi2T,GAGPvzT,EAAMpC,EAAQoC,IACjBkrB,EAAS,UACTT,EAAWxmB,EAAKjE,GAChBs0T,EAAWj2T,EAAK6iS,MAAMz2Q,IACtB8pS,EAAYl2T,EAAKq+M,OAAOjyL,MAENzxB,KAGkB,KAFhCu7T,GAAa,IAECxoT,QAAQ,OAClBwoT,EAAYA,EAAU17T,QAAQgvT,EAAY,WAG9C38R,GAAU,WAAaqpS,EAAY,KAGvCrpS,GAAU,IAENopS,IAAat7T,IACbkyB,GAAUlH,EAAWswS,IAIzBh3T,GADA4tB,GAAU,YAIdjpB,EAAQiE,KAAK5I,GAETwB,IAAU9F,IACVw7T,EAAY11T,MAAQA,EAChB01T,EAAY11T,QAAUA,IACtB01T,EAAY5sP,eAAiB,KAIF,IAA/B4sP,EAAY5sP,gBACZ18C,EAASm/H,GAAkBmqK,KAGvBtpS,EAAOjQ,aAAa4nR,EAAUA,IAK1CvgO,OAAQ,WACJ,IAAIjkE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwyT,EAASxyT,EAAQiX,KAAK,QACtBkkB,EAAOq3R,EAAS17T,EAAE,IAAM07T,GAAUxyT,EAAQQ,QAAQ,QAElD26B,EAAK,KACL/+B,EAAKgwT,cAAgB,WACjBl/R,YAAW,WACP9wB,EAAKS,MAAMT,EAAKuzT,cAIxBvzT,EAAK+vT,MAAQhxR,EAAK/d,GAAG,QAAShhB,EAAKgwT,iBAI3CyD,cAAe,WACX,IAAIt5T,EAAOpC,KAAKkH,QAAQ9E,KAExB,GAAKpC,KAAKkH,QAAQurE,YAAlB,CAIA,IAAIwmD,EAAgBt2H,EAAE,IAAM3C,KAAKkH,QAAQurE,aACrCtmE,EAAS8sH,EAAcprH,KAAK,QAAUzL,GAE1C,IAAK+J,EACD,IAAK,IAAI5E,EAAI,EAAGA,EAAImqT,EAAiBtvT,GAAMoF,UACvC2E,EAAS8sH,EAAcprH,KAAK,QAAU6jT,EAAiBtvT,GAAMmF,KADdA,GAAK,GAS5D,OAAO4E,IAGXmyT,SAAU,WACN,IAGInyT,EAHAlE,EAAOjI,KACPkH,EAAUe,EAAKf,QAInB,GAHcA,EAAQurE,YAGT,CAGT,KAFAtmE,EAASlE,EAAKyzT,iBAGV,OAGJzzT,EAAKs2T,qBAAuBt2T,EAAKu2T,gBAAgBh1T,KAAKvB,GACtDA,EAAKw2T,uBAAyB,GAE9Bv3T,EAAQ6pE,UAAW,EAEnB5kE,EAAO3C,KAAK,OAAO,WACfvB,EAAK0B,IAAI,OAAO,SAAShF,GACrBsD,EAAKy2T,eAAiB/5T,EAAE+D,OAAST,EAAK6tT,kBAI9C3pT,EAAOjC,MAAMinT,EAASlpT,EAAKs2T,sBAGvBpyT,EAAOumE,SAASC,SAChB1qE,EAAK02T,wBACL12T,EAAK0zT,eAAexvT,KAEpBA,EAAOxC,IAAI0nT,GAAY,WACnBppT,EAAK02T,wBACDxyT,EAAO+mF,MAAM5mF,WACbH,EAAOgnT,SAAS/oT,QAAQy8R,MAI3B16R,EAAOzD,SACRT,EAAKsf,QAAO,MAM5Bo3S,sBAAuB,WACnB,IAAI12T,EAAOjI,KACPmM,EAASlE,EAAKyzT,gBACdqC,EAAWvM,GAAQrlT,aAAkBwd,EAAGioS,aAr5DzC,OAEI,WAq5DPzlT,EAAOgnT,SAASlmT,IAAId,EAAOsnT,aAAaxqS,GAAG49Q,GAAO,WAC9C16R,EAAOlC,OAAOknT,EAASlpT,EAAKs2T,sBAC5BpyT,EAAOlC,OAAO6yC,EAAQ70C,EAAKs2T,sBAC3BpyT,EAAOjC,MAAM4yC,EAAQ70C,EAAKs2T,yBAG9BpyT,EAAOgnT,SAASlmT,IAAId,EAAOsnT,aAAaxqS,GAAG80S,GAAU,WACjD5xT,EAAOlC,OAAO6yC,EAAQ70C,EAAKs2T,sBAC3BpyT,EAAOlC,OAAOknT,EAASlpT,EAAKs2T,sBAC5BpyT,EAAOjC,MAAMinT,EAASlpT,EAAKs2T,0BAInCC,gBAAiB,SAAS75T,GACtB,IAAIwH,EAASnM,KAAK07T,gBACdkD,EAAqB5+T,KAAK0I,QAE9B1I,KAAKq4T,eAAiB1zT,EAAEu2T,eAAiB/uT,EAAOksT,eAE5Cr4T,KAAK0yE,SAASC,SACd3yE,KAAK6+T,gBAAgB1yT,GAAQ,GAGjCnM,KAAK27T,eAAexvT,EAAQyyT,IAGhCE,eAAgB,SAAS3yT,GACrB,IAAIlE,EAAOjI,KACP0I,EAAQT,EAAK6tT,aAAe7tT,EAAKy2T,eAEhCz2T,EAAKw2T,uBAAuBj3T,SAC7BS,EAAKy2T,eAAiB,MAGtBz2T,EAAKowT,eACLpwT,EAAK42T,gBAAgB1yT,GAAQ,GACtBzD,GACHA,IAAU6vT,GAAUtwT,EAAKyqE,SAAShqE,QAAQ,UAAWA,IACrDT,EAAKS,MAAMA,GAGVT,EAAK6oB,WAAW4G,OAAO,KAA8B,IAAxBzvB,EAAKupE,eACnCvpE,EAAK42T,gBAAgB1yT,GAAQ,IAE1BlE,EAAK6oB,WAAWkD,WAAWxsB,QAClCS,EAAKm+B,OAAOn+B,EAAKf,QAAQ6R,OAG7B9Q,EAAKsf,SACLtf,EAAK8yT,kBACL9yT,EAAKkzT,iBACLlzT,EAAKowT,gBAAiB,GAG1BsD,eAAgB,SAASxvT,EAAQyyT,GAC7B,IAAI32T,EAAOjI,KACPq0B,EAAWloB,EAAOkoB,WAClB0qS,EAAc1qS,EAAWA,EAASpsB,EAAKf,QAAQ83T,yBAA2B7yT,EAAOm6M,OAAOjyL,GAAY,KACpG28C,EAAa/oE,EAAKf,QAAQ+3T,kBAAoB9yT,EAAOjF,QAAQupE,eAYjE,IARItkE,EAAOjF,QAAQg4T,sBACC,OAAhBH,GACE92T,EAAKf,QAAQ83T,wBAA0B/2T,EAAKf,QAAQ83T,yBAA2B7yT,EAAOjF,QAAQupE,iBAC5FsuP,EAAc5yT,EAAOzD,SAG7BT,EAAKuwT,oBAAsBoG,IAAuBh8T,EAAcg8T,EAAqB32T,EAAKS,QAEtFq2T,GAA+B,IAAhBA,EAAmB,CAElCvI,GADcvuT,EAAK6oB,WAAWmF,UAAY,GACP+6C,GAEnC,IAAIlnE,EAAU,WACV,IAAIq1T,EAAiBl3T,EAAKw2T,uBAAuB5oT,QAC7CspT,GACAl3T,EAAKgC,OAAO,YAAak1T,IAG7BA,EAAiBl3T,EAAKw2T,uBAAuB,KAEzCx2T,EAAKiC,MAAM,YAAai1T,GAG5Bl3T,EAAK62T,eAAe3yT,IAGxBlE,EAAKw2T,uBAAuB98T,KAAKmI,GAEU,IAAvC7B,EAAKw2T,uBAAuBj3T,QAC5BS,EAAKiC,MAAM,YAAaJ,GAG5B7B,EAAK4uT,YAAa,EAClB5uT,EAAKkuT,cAAc,CACflxS,MAAO+rD,EACPhuB,SAAU,KACVt6C,MAAOq2T,IAEX92T,EAAK4uT,YAAa,OAElB5uT,EAAKsf,QAAO,GACZtf,EAAK42T,gBAAgB1yT,GACrBlE,EAAK8yT,kBACL9yT,EAAKkzT,iBACLlzT,EAAKowT,gBAAiB,EAG1BpwT,EAAKorT,2BAIb,IAAI+L,GAAiB,cAEjB9J,GAAa30T,EAAMgpB,GAAGmK,gBAAgB/wB,OAAO,CAC7CoF,KAAM,SAAS0D,EAAS3E,GAsBpB,GArBAwpB,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GAEnClH,KAAK6L,QAAQiX,KAAK,OAAQ,WACbmG,GAAG62M,mBAAwB,KAAM9/N,KAAK+hF,OAAOv4E,KAAKxJ,OAClDipB,GAAG2lR,wBAA6B,MAAM,WAAajsS,EAAE3C,MAAMukB,SAASssS,MACpE5nS,GAAG4lR,wBAA6B,MAAM,WAAalsS,EAAE3C,MAAMmsB,YAAY0kS,MAEhF3pT,GAAWA,EAAQqsB,UACnBvzB,KAAK6L,QAAQiX,KAAKrc,EAAYS,EAAQqsB,WAC/BrsB,GAAWA,EAAQssB,gBAC1BxzB,KAAK6L,QAAQiX,KAAKtc,EAAiBU,EAAQssB,gBAG3CjwB,EAAQkb,OACRze,KAAKq/T,iBAGuB,aAA5Br/T,KAAKkH,QAAQkoL,YACbpvL,KAAK6L,QAAQiX,KAz/DE,wBAy/DyB,GAGxC9iB,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAAQ,CACrD,IAAI0yJ,EAAQl6J,KAAK6L,QAAQM,SAAS4pB,KAAK,kBACnCm8J,EAAMvvL,EAAE,iEAC6B3C,KAAKkH,QAAQwrT,QAAQlrT,OADlD,gBAIZ0yJ,EAAMngH,OAAOm4I,GAEblyL,KAAKgmD,OAASksI,EAAIn8J,KAAK,eAEvB/1B,KAAKumD,QAAUvmD,KAAK6L,QAAQmgB,KAAK,uEAAuE7f,SAExGnM,KAAK6L,QAAQ0Y,SAjkER,qBAmkELvkB,KAAKumD,QAAUvmD,KAAK6L,QAAQmgB,KAAK,wEAAwE7f,SACzGnM,KAAKgmD,OAAShmD,KAAKumD,QAAQkwP,OAAO9zS,EAAE,kDAAkDwK,QAAQwyC,OAC9F3/C,KAAK6L,QAAQ0Y,SAASysS,GAG1BhxT,KAAK2yE,OAAM,GAEX3yE,KAAKs/T,UAAY3+T,EAAM8uB,OAEvBzvB,KAAKu/T,iBAAmB,GAExBv/T,KAAKw5D,MAAQ,GACbx5D,KAAKw/T,WAAa,GAClBx/T,KAAKghK,QAAU,GAEf,IAAIt4J,EAAQ1I,KAAKkH,QAAQwB,MAErBA,IACA1I,KAAKghK,QAAU99J,MAAMD,QAAQyF,GAASA,EAAM9B,MAAM,GAAK,CAAC8B,IAG5D1I,KAAKy/T,UACLz/T,KAAK2yS,aAEL3yS,KAAKwlO,cAAcxlO,KAAKkH,QAAQ4pB,YAEhC9wB,KAAK0/T,wBAGTx4T,QAAS,CACL9E,KAAM,aACNquE,eAAgB,KAChBkB,gBAAgB,EAChBy9G,YAAY,EACZv/K,SAAU,KACV+kT,cAAe,KACfC,mBAAoB,KACpBthS,UAAW,KACXC,eAAgB,MAGpBnpB,OAAQ,CACLy1N,EACChjL,EACDizC,EACAD,EACAshO,EACAC,EACAC,GAGH9rF,cAAe,SAASl4N,GACpB,IAEI5E,EAFAT,EAAOjI,KACP8wB,EAAaxjB,GAAU,GAG3BwjB,EAAa5tB,MAAMD,QAAQ6tB,GAAc,CAAEjjB,KAAMijB,GAAeA,EAChEA,EAAanwB,EAAMkN,KAAKE,WAAWi5C,OAAOl2B,GAEtC7oB,EAAK6oB,YACL7oB,EAAK6oB,WAAW7mB,OAAO6yC,EAAQ70C,EAAKwlR,iBAEpC/kR,EAAQT,EAAKS,QAEbT,EAAKS,MAAM,IACXT,EAAK0qE,OAAM,GAEX1qE,EAAKS,MAAMA,IAEXT,EAAKwlR,gBAAkBxlR,EAAK2V,QAAQpU,KAAKvB,GAG7CA,EAAK6uT,YAAYhmS,EAAWmF,UAE5BhuB,EAAK6oB,WAAaA,EAAWtnB,KAAKszC,EAAQ70C,EAAKwlR,iBAC/CxlR,EAAK03T,gBAGTN,eAAgB,WACZ,IAEIO,EAAQC,EAFR53T,EAAOjI,KACPwvS,EAAexvS,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OA/oEhD,eA+oE6E0pT,EAEzF4O,EAAc,SAAS1gT,GACnB,OAAQA,EAAMuJ,eAAiBvJ,GAAOwJ,eAAe,GAAGq5D,OAGhEh6E,EAAK4D,QAAQod,GAAG,yBAA+B,SAAStkB,GACpDi7T,EAASE,EAAYn7T,MAGzBsD,EAAK4D,QAAQod,GAAG,uBAA6B,SAAStkB,GAC9CA,EAAE0E,uBAINw2T,EAAOC,EAAYn7T,GAEftB,KAAK6T,IAAI2oT,EAAOD,GAAU,KAC1B33T,EAAK83T,iBAAkB,EACvB93T,EAAK+3T,cAAcr9T,EAAEgC,EAAE2C,QAAQ+E,QAAQmjS,GAAcjgR,IAAI,UAKrEk1B,KAAM,WACF,OAAOzkD,KAAK8wB,WAAW2zB,QAG3BlzB,WAAY,SAASrqB,GACjBwpB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,GAEhClH,KAAKy/T,UACLz/T,KAAK2yS,aACL3yS,KAAKiiP,UAEDjiP,KAAK6zB,OAAS3sB,EAAQ2sB,MACtB7zB,KAAK6zB,MAAMtC,WAAWrqB,EAAQ2sB,OACvB7zB,KAAK6zB,QAA2B,IAAlB3sB,EAAQ2sB,QAC7B7zB,KAAK6zB,MAAM24R,kBACXxsT,KAAKkzT,YAAYn8R,gBACV/2B,KAAKkzT,cAIpBlxT,QAAS,WACLhC,KAAK6L,QAAQotB,IAAImmS,IAEbp/T,KAAKytR,iBACLztR,KAAK8wB,WAAW7mB,OAAO6yC,EAAQ98C,KAAKytR,iBAGxCtzP,aAAan6B,KAAKigU,WAElBvvS,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,OAG3Bq9T,gBAAiB,SAAStkT,GACtB,OAAO/Y,KAAK8wB,WAAWkD,WAAWjb,IAGtC2G,aAAc,WACV,OAAO1f,KAAKumD,QAAQ,GAAGriC,cAG3Bo1S,cAAe,SAASvgT,GACpB,IAAIi2B,EAAOhvC,KAAK6L,QAAQ,GAAGspC,SAASp8B,GAEhCi2B,GACAhvC,KAAK0uP,OAAO1/M,IAIpBgvR,WAAY,SAASt1T,GACjB1I,KAAKumD,QAAQ5vB,UAAU32B,KAAKumD,QAAQ5vB,YAAcjuB,IAGtDgmP,OAAQ,SAAS1/M,GACb,GAAKA,EAAL,CAIIA,EAAK,KACLA,EAAOA,EAAK,IAGhB,IAAIuX,EAAUvmD,KAAKumD,QAAQ,GACvB25Q,EAAgBlxR,EAAK0kF,UACrBysM,EAAmBnxR,EAAKza,aACxB6rS,EAAmB75Q,EAAQ5vB,UAC3B0pS,EAAsB95Q,EAAQriC,aAC9Bo8S,EAAiBJ,EAAgBC,EAE7BC,EAAmBF,EACnBE,EAAmBF,EACZI,EAAkBF,EAAmBC,IAC5CD,EAAoBE,EAAiBD,GAGzC95Q,EAAQ5vB,UAAYypS,IAG5BlI,kBAAmB,SAASnkS,GACxB,GAAIA,IAAcnxB,EACd,OAAO5C,KAAKw/T,WAAW54T,QAG3B5G,KAAKw/T,WAAazrS,EAClB/zB,KAAKghK,QAAUhhK,KAAKugU,WAAWxsS,IAGnCwsS,WAAY,SAASxsS,GACjB,IAAIjF,EAAS9uB,KAAKwgU,aAElB,OAAO79T,EAAE2X,IAAIyZ,GAAW,SAASM,GAC7B,OAAOvF,EAAOuF,OAItBwoS,UAAW,WACP,IAAIppT,EAAUzT,KAAK4lC,QAKfnyB,EAHCA,EAGSA,EAAQ4xD,OAFR,EAKdrlE,KAAK4lC,MAAMnyB,IAGfspT,UAAW,WACP,IAAItpT,EAAUzT,KAAK4lC,QAKfnyB,EAHCA,EAGSA,EAAQksC,OAFR3/C,KAAK6L,QAAQ,GAAGspC,SAAS3tC,OAAS,EAKhDxH,KAAK4lC,MAAMnyB,IAGfgpT,WAAY,WACRz8T,KAAK4lC,MAAM5lC,KAAK6L,QAAQ,GAAGspC,SAAS,KAGxCwnR,UAAW,WACP38T,KAAK4lC,MAAMzD,GAAKniC,KAAK6L,QAAQ,GAAGspC,YAGpCvP,MAAO,SAAS6hQ,GACZ,IAEIg5B,EAFAx4T,EAAOjI,KACP2vB,EAAK1nB,EAAKq3T,UAGd,GAAI73B,IAAc7kS,EACd,OAAOqF,EAAKk6I,SAGhBslJ,EAAYtlQ,GAAKl6B,EAAK01T,KAAKl2B,IAC3BA,EAAY9kS,EAAE3C,KAAK6L,QAAQ,GAAGspC,SAASsyP,IAEnCx/R,EAAKk6I,WACLl6I,EAAKk6I,SACAh2H,YAAYu/R,GACZp6R,WAAWo9K,GAEhBzmM,EAAKmC,QAAQ0lF,KAGjB2wO,IAAiBh5B,EAAU,MAGvBA,EAAUljR,SAASmnS,GACnBzjT,EAAKymP,OAAO+4C,GAEZA,EAAU3kR,KAAK,KAAM6M,IAGzB1nB,EAAKk6I,SAAWs+K,EAAeh5B,EAAY,KAC3Cx/R,EAAKmC,QAAQ2lF,IAGjB2wO,WAAY,WACR,OAAO1gU,KAAK4lC,QAAU5lC,KAAK4lC,QAAQ7sB,QAAUnW,GAGjD+9T,WAAY,SAASA,GACjB3gU,KAAK4gU,YAAcD,GAGvBv6R,OAAQ,SAASg1I,GACb,IAOIm7I,EACAhgT,EARAtO,EAAOjI,KACPovL,EAAannL,EAAKf,QAAQkoL,WAC1ByxI,EAAiC,aAAfzxI,IAA4C,IAAfA,EAC/C29G,EAAkB9kS,EAAKs3T,iBACvBuB,EAAoB,CAAC9gU,KAAK6L,QAAQkqB,KAAK,eAAehd,SAEtDgoT,EAAQ,GAIZ,GAAI3lJ,IAAYx4K,EACZ,OAAOmqS,EAAgBnmS,QAKJ,KAFvBw0K,EAAUnzK,EAAK01T,KAAKviJ,IAER5zK,SAAgC,IAAhB4zK,EAAQ,KAChCA,EAAU,IAGd,IAAIrvI,EAAWppC,EAAEqpC,WAAW2J,UACxBqrR,EAAW/4T,EAAKywT,aAEpB,OAAIsI,IAAaH,GAAmB54T,EAAKg5T,kBAAkB7lJ,GAChDrvI,EAGP80R,IAAoBG,IAC2B,IAA/Cr+T,EAAE0yB,QAAQ8M,GAAKi5I,GAAU2xH,KAA4E,IAAjDpqS,EAAE0yB,QAAQ8M,GAAKi5I,GAAU0lJ,IAEzE74T,EAAKu3T,WAAWh4T,QAAUS,EAAKuxD,MAAMhyD,SACrCS,EAAKu3T,WAAa,CAACv3T,EAAKuxD,MAAMuzO,EAAgB,IAAI/9P,OAG/CjD,IAKXwqR,GAFAhgT,EAAStO,EAAKi5T,UAAU9lJ,IAEPm7I,SACjBn7I,EAAU7kK,EAAO6kK,SAEL5zK,SACJq5T,IACAzlJ,EAAU,CAACj5I,GAAKi5I,KAGpB2lJ,EAAQ94T,EAAKy5E,QAAQ05F,KAGrB2lJ,EAAMv5T,QAAU+uT,EAAQ/uT,UACxBS,EAAKk5T,eAAiB,KACtBl5T,EAAKmC,QAAQ0yC,EAAQ,CACjBikR,MAAOA,EACPxK,QAASA,KAIVxqR,IAGX6iG,SAAU,SAAS9hI,GAKf,OAJA9M,KAAKu/T,iBAAiB/0T,OAAOsC,EAAU,GACvC9M,KAAKghK,QAAQx2J,OAAOsC,EAAU,GAC9B9M,KAAKmhU,eAAiB,KAEf,CACHr0T,SAAUA,EACVunB,SAAUr0B,KAAKw/T,WAAWh1T,OAAOsC,EAAU,GAAG,KAItDssM,SAAU,SAAS1wM,GACfA,EAAQxF,MAAMD,QAAQyF,IAAUA,aAAiBkF,EAAkBlF,EAAM9B,MAAM,GAAK,CAAC8B,GAErF1I,KAAKghK,QAAUt4J,EAEf1I,KAAKmhU,eAAiB,MAG1Bz4T,MAAO,SAASA,GACZ,IAEI0yK,EAFAnzK,EAAOjI,KACP+rC,EAAW9jC,EAAKm5T,eAGpB,OAAI14T,IAAU9F,EACHqF,EAAK+4J,QAAQp6J,SAGxBqB,EAAKmxM,SAAS1wM,GAETqjC,GAAiC,aAArBA,EAASknB,UACtBhrD,EAAKm5T,eAAiBr1R,EAAWppC,EAAEqpC,YAGnC/jC,EAAK0qE,UACLyoG,EAAUnzK,EAAKo5T,cAAcp5T,EAAK+4J,SAEF,aAA5B/4J,EAAKf,QAAQkoL,YACbnnL,EAAKm+B,QAAQ,GAGjBn+B,EAAKm+B,OAAOg1I,GAEZrvI,EAAS4J,WAGb1tC,EAAK24T,aAAc,EAEZ70R,IAGX3X,MAAO,WACH,OAAOp0B,KAAK6L,QAAQspC,SAAS+7Q,IAGjCnvO,OAAQ,SAASp9E,GACT3E,KAAK+/T,gBAEL//T,KAAK+/T,iBAAkB,EAItBp7T,EAAE0E,sBACHrJ,KAAKggU,cAAcr7T,EAAEg5E,gBAI7B+hP,qBAAsB,WAUlB1/T,KAAKshU,UATe,WAChB,IAAIr5T,EAAOjI,KACXm6B,aAAalyB,EAAKg4T,WAElBh4T,EAAKg4T,UAAYlnS,YAAW,WACxB9wB,EAAKs5T,kBACN,KAGwB/3T,KAAKxJ,OAGxCggU,cAAe,SAAShxR,GACfhvC,KAAKoK,QAAQ01N,EAAO,CAAE9wL,KAAMrsC,EAAEqsC,MAC/BhvC,KAAKomC,OAAO4I,IAIpBwyR,WAAY,SAAS97T,EAAMoT,GACvB,IAEIk7C,EAFA/rD,EAAOjI,KACP4J,EAAM,EAEN63T,EAAa,GAEjB,IAAKx5T,EAAKk5T,gBAAkBl5T,EAAKy5T,aAAeh8T,EAAM,CAGlD,IAFAuC,EAAKy5T,WAAah8T,EAEXkE,EAAMkP,EAAOtR,OAAQoC,IACxB63T,EAAW9/T,KAAK42T,GAAUz/S,EAAOlP,GAAMlE,IAG3CsuD,EAAW,SAAUvgD,EAASqF,GAC1B,IAAK,IAAIlP,EAAM,EAAGA,EAAM63T,EAAWj6T,OAAQoC,IACvC,GAAI6J,IAAYqF,EAAOlP,GACnB,OAAOA,EAGf,OAAQ,GAGZ3B,EAAKk5T,eAAiB,SAAS1tT,GAC3B,OAAOugD,EAASvgD,EAASguT,IAIjC,OAAOx5T,EAAKk5T,gBAGhBQ,kBAAmB,SAASttS,EAAUvb,GAClC,IAAIpQ,EAAQ1I,KAAKwgU,aAAansS,GAI9B,OAFgBr0B,KAAKwhU,kBAAkB94T,EAAOoQ,EAEvC8oT,CAAUl5T,IAGrB+2T,QAAS,WACLz/T,KAAKwgU,aAAe7/T,EAAMmuB,OAAO9uB,KAAKkH,QAAQupE,iBAGlDywP,UAAW,SAAS9lJ,GAChB,IAQIzwI,EAEA5xB,EAAOy4D,EAVPvpE,EAAOjI,KACPm1C,EAAWltC,EAAK4D,QAAQ,GAAGspC,SAC3Bi6I,EAAannL,EAAKf,QAAQkoL,WAC1B29G,EAAkB9kS,EAAKs3T,iBACvBxrS,EAAY9rB,EAAKu3T,WACjB1mT,EAAS7Q,EAAK+4J,QACdu1J,EAAU,GACVhvT,EAAI,EAQR,GAFA6zK,EAAUA,EAAQx0K,SAEC,IAAfwoL,GAAwBhU,EAAQ5zK,QAa7B,GAAmB,aAAf4nL,EACP,KAAO7nL,EAAI6zK,EAAQ5zK,OAAQD,IAGvB,GAFAwR,EAAQqiK,EAAQ7zK,GAEX5E,EAAEwyC,EAASp8B,IAAQqT,SAAS0kS,GAIjC,IAAKnmR,EAAI,EAAGA,EAAIoiQ,EAAgBvlS,OAAQmjC,IAGpC,IAFA6mC,EAAgBu7N,EAAgBpiQ,MAEV5xB,EAAO,CACzBpW,EAAEwyC,EAASq8B,IAAgBrlD,YAAY2kS,GAAWhuS,KAAKkvS,GAAe,GACtE,IAAI39R,EAAWr0B,KAAKw5D,MAAMzgD,GAAOi2B,KAC7BliC,EAAW9M,KAAK2hU,kBAAkBttS,EAAUr0B,KAAKghK,SAErDu1J,EAAQ50T,KAAK,CACTmL,SAAUA,EACVunB,SAAUA,IAGdN,EAAUvpB,OAAOmgC,EAAG,GACpBoiQ,EAAgBviS,OAAOmgC,EAAG,GAC1BywI,EAAQ5wK,OAAOjD,EAAG,GAClBuR,EAAOtO,OAAOmgC,EAAG,GAEC,EAClBpjC,GAAK,EACLojC,GAAK,EACL,WA1C4B,CACxC,KAAOpjC,EAAIwlS,EAAgBvlS,OAAQD,IAC/B5E,EAAEwyC,EAAS43P,EAAgBxlS,KAAK4kB,YAAY2kS,GAAWhuS,KAAKkvS,GAAe,GAE3EuE,EAAQ50T,KAAK,CACTmL,SAAUvF,EACV8sB,SAAUN,EAAUxsB,KAI5BU,EAAK+4J,QAAU,GACf/4J,EAAKu3T,WAAa,GAClBv3T,EAAKs3T,iBAAmB,GAoC5B,MAAO,CACHnkJ,QAASA,EACTm7I,QAASA,IAIjB0K,kBAAmB,SAAS7lJ,GAMxB,IALA,IACI/mJ,EAAUtb,EAAOjM,EADjBqoC,EAAWn1C,KAAK6L,QAAQ,GAAGspC,SAE3BohR,EAAU,GACV3sT,EAAM,EAEHA,EAAMwxK,EAAQ5zK,OAAQoC,IACzBmP,EAAQqiK,EAAQxxK,GAEhByqB,EAAWr0B,KAAKw5D,MAAMzgD,GAAOi2B,MAC7BliC,EAAW9M,KAAK2hU,kBAAkBttS,EAAUr0B,KAAKghK,WAEjC,IACZu1J,EAAQ50T,KAAK3B,KAAK4uI,SAAS9hI,IAC3BnK,EAAEwyC,EAASp8B,IAAQoT,YAAY2kS,IAIvC,QAAIyF,EAAQ/uT,SACRxH,KAAKoK,QAAQ0yC,EAAQ,CACjBikR,MAAO,GACPxK,QAASA,KAGN,IAMf70O,QAAS,SAAS05F,GACd,IAGI/mJ,EAAUtb,EAHV9Q,EAAOjI,KACPm1C,EAAWltC,EAAK4D,QAAQ,GAAGspC,SAC3BtnC,EAAO5F,EAAKuxD,MAEZunQ,EAAQ,GACRn3T,EAAM,EAMV,KAJuB,IAAnBu4B,GAAKi5I,IACLnzK,EAAK29B,MAAMw1I,GAGRxxK,EAAMwxK,EAAQ5zK,OAAQoC,IAEzByqB,EAAWxmB,EADXkL,EAAQqiK,EAAQxxK,KAGD,IAAXmP,GAAiBsb,IAIrBA,EAAWA,EAAS2a,KAEpB/mC,EAAKs3T,iBAAiB59T,KAAKoX,GAC3B9Q,EAAKu3T,WAAW79T,KAAK0yB,GACrBpsB,EAAK+4J,QAAQr/J,KAAKsG,EAAKu4T,aAAansS,IAEpC1xB,EAAEwyC,EAASp8B,IAAQwL,SAASusS,GAAWhuS,KAAKkvS,GAAe,GAE3D+O,EAAMp/T,KAAK,CACP0yB,SAAUA,KAIlB,OAAO0sS,GAGX3D,gBAAiB,SAASvxT,GACtB,OAAOlJ,EAAEkJ,GAASgC,KAAK,iBAG3B8vT,KAAM,SAASl2B,GAQX,MAPyB,iBAAdA,EACPA,EAAY,CAACA,GACLxkS,EAAQwkS,KAEhBA,EAAY,EADZA,EAAYznS,KAAKo9T,gBAAgB31B,MACN7kS,EAAc6kS,GAAa,IAGnDA,GAGXkL,WAAY,WACR,IAAI9iS,EACA3I,EAAUlH,KAAKkH,QACfwtS,EAAY,CACZ7kS,SAAU3I,EAAQ2I,SAClB+kT,cAAe1tT,EAAQ0tT,cACvBC,mBAAoB3tT,EAAQ2tT,oBAYhC,IAAK,IAAItjT,KATLrK,EAAQwrT,SACRxrT,EAAQwrT,QAAQpxT,SAAQ,SAAU+qL,EAAQ9kL,GACtC,IAAIs6T,EAAex1I,EAAOpnK,MAAQonK,EAAOpnK,MAAM/T,WAAa29K,EAG5D6lH,EAAU,SAAWntS,GAAK8kL,EAAOx8K,UAFd,SAAUhC,GAAQ,OAAO+f,EAAWjtB,EAAMmuB,OAAO+yS,EAAblhU,CAA2BkN,QAM1E6mS,GACZ7kS,EAAW6kS,EAAUnjS,KACe,mBAAb1B,IACnB6kS,EAAUnjS,GAAO5Q,EAAMkP,SAASA,IAIxC7P,KAAK00S,UAAYA,GAGrBotB,kBAAmB,SAAS1mJ,GAIxB,IAHA,IAAI2mJ,EAAa,GACbn4T,EAAM,EAEHA,EAAMwxK,EAAQ5zK,OAAQoC,IACrBwxK,EAAQxxK,KAAShH,GACjBm/T,EAAWpgU,KAAKy5K,EAAQxxK,IAIhC,OAAOm4T,GAGXV,cAAe,SAASvoT,EAAQsiK,GAC5B,IAEIriK,EAFAlL,EAAO7N,KAAKw5D,MACZ5vD,EAAM,EAKV,GAFAwxK,EAAUA,EAAUA,EAAQx0K,QAAU,IAEjCkS,EAAOtR,OACR,MAAO,GAGX,KAAOoC,EAAMiE,EAAKrG,OAAQoC,KAGP,KAFfmP,EAAQ/Y,KAAK2hU,kBAAkB9zT,EAAKjE,GAAKolC,KAAMl2B,MAG3CsiK,EAAQriK,GAASnP,GAIzB,OAAO5J,KAAK8hU,kBAAkB1mJ,IAGlC4mJ,kBAAmB,WASf,IARA,IAAIn2T,EAAU7L,KAAK6L,QAAQ,GAEvB8qB,EADU32B,KAAKumD,QAAQ,GACH5vB,UACpBsrS,EAAat/T,EAAEkJ,EAAQspC,SAAS,IAAIxoC,SACpCwrD,EAAY90D,KAAKkN,MAAMomB,EAAYsrS,IAAe,EAClDjzR,EAAOnjC,EAAQspC,SAASgjB,IAActsD,EAAQq2T,UAC9CvkR,EAAU3O,EAAK0kF,UAAY/8F,EAExBqY,GACH,GAAI2O,EAAS,CACT,GAAK3O,EAAK0kF,UAAYuuM,EAActrS,IAAcqY,EAAKgb,YACnD,MAGJhb,EAAOA,EAAKgb,gBACT,CACH,GAAIhb,EAAK0kF,WAAa/8F,IAAcqY,EAAKmzR,gBACrC,MAGJnzR,EAAOA,EAAKmzR,gBAIpB,OAAOniU,KAAKw5D,MAAM72D,EAAEqsC,GAAMnhC,KAAK,kBAGnC8xT,aAAc,WACN3/T,KAAKoiU,aAAepiU,KAAK00S,UAAUmgB,oBAC/B70T,KAAKgmD,OAAO35C,QAAQ4lT,GAAezqT,OACnCxH,KAAKgmD,OAAO35C,QAAQ4lT,GAAe/kT,OAEnClN,KAAKgmD,OAAO94C,OAGhBlN,KAAKumD,QAAQmoM,OAAO1uP,KAAKshU,aAErBthU,KAAKgmD,OAAO35C,QAAQ4lT,GAAezqT,OACnCxH,KAAKgmD,OAAO35C,QAAQ4lT,GAAe9kT,OAEnCnN,KAAKgmD,OAAO74C,OAGhBnN,KAAKumD,QAAQttB,IAAI,SAAUj5B,KAAKshU,aAIxCC,cAAe,WACX,IAAI1xT,EAAW7P,KAAK00S,UAAUmgB,mBAC9B,GAAKhlT,EAAL,CAIA,IAAIwyT,EAAcriU,KAAKgiU,oBAEnBK,GAAeA,EAAYnuQ,MAAMhjD,WAAW1J,QAC5CxH,KAAKgmD,OAAOl2C,KAAKD,EAASwyT,EAAYnuQ,UAI9CouQ,YAAa,SAASzmS,GAClB,IAAImT,EAAO,qDAEP3a,EAAWwH,EAAQmT,KACnBuzR,EAAiC,IAAlB1mS,EAAQ9iB,MACvB04D,EAAW51C,EAAQ41C,SACnB2wP,EAAYpiU,KAAKoiU,YACjBI,EAAaxiU,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAC1Di7T,EAAS5mS,EAAQ9iB,MAAQ,GAAM,EAAI,mBAAqB,GAuC5D,OApCIi2B,GADAwzR,EACS,qBAAuBC,EAExB,qBAGRF,GAAgB1mS,EAAQ67B,WACxB1oB,GAAQ,YAGRnT,EAAQ6mS,mBAAqBF,IAC7BxzR,GAAQ,WAGRyiC,IACAziC,GAAQ,eAGZA,GAAQ,qBAAuByiC,EAAW,OAAS,SAAW,wBAA0B51C,EAAQ9iB,MAAQ,KACpGypT,EACAxzR,GAAQhvC,KAAK2iU,eAAetuS,IAE5B2a,GAAQ,kCACRA,GAAQhvC,KAAK00S,UAAU7kS,SAASwkB,GAChC2a,GAAQ,WAGRuzR,GAAgB1mS,EAAQ67B,SAEpB1oB,GADAwzR,EACQ,mDAAqDxiU,KAAK00S,UAAUkgB,cAAc/4R,EAAQq4B,OAAS,iBAEnG,wCAA0Cl0D,KAAK00S,UAAUkgB,cAAc/4R,EAAQq4B,OAAS,SAE7FkuQ,GAAaI,IACpBxzR,GAAQ,sDAGLA,EAAO,SAGlB2zR,eAAgB,SAAStuS,GAGrB,IAFA,IAAI2a,EAAO,GAEFznC,EAAI,EAAGA,EAAIvH,KAAKkH,QAAQwrT,QAAQlrT,OAAQD,IAAK,CAClD,IAAIksR,EAAezzR,KAAKkH,QAAQwrT,QAAQnrT,GAAGyF,MACvCgnT,EAAkB/6S,SAASw6Q,EAAc,IACzCwgC,EAAa,GAEbxgC,IAAiB3qR,MAAMkrT,KACvBC,GAAetzT,EAAMmiB,KAAK,eAAkB,KAAQkxS,GAAmBpD,EAAqB7jT,KAAK0mR,GAAgB,IAAM,MAAQ,KAGnIzkP,GAAQ,4BAA8BilR,EAAa,IACnDjlR,GAAQhvC,KAAK00S,UAAU,SAAWntS,GAAG8sB,GACrC2a,GAAQ,UAGZ,OAAOA,GAGXizM,QAAS,WACL,IACI2gF,EAGA/mS,EAKAq4B,EAAOwD,EAAU/sB,EATjB76B,EAAO,GAEPvI,EAAI,EACJqC,EAAM,EAENi5T,EAAc,GACdnrS,EAAO13B,KAAK8wB,WAAW4G,OACvB5e,EAAS9Y,KAAK0I,QAGd05T,EAAYpiU,KAAKoiU,YAErB,GAAIA,EACA,IAAK76T,EAAI,EAAGA,EAAImwB,EAAKlwB,OAAQD,IAIzB,IAHA2sD,EAAQx8B,EAAKnwB,GACbmwD,GAAW,EAEN/sB,EAAI,EAAGA,EAAIupB,EAAM9/B,MAAM5sB,OAAQmjC,IAChC9O,EAAU,CACN41C,SAAUzxE,KAAK2sS,UAAUz4O,EAAM9/B,MAAMuW,GAAI7xB,GACzCk2B,KAAMklB,EAAM9/B,MAAMuW,GAClBupB,MAAOA,EAAMxrD,MACbgvD,SAAUA,EACVgrQ,kBAAmB/3R,IAAMupB,EAAM9/B,MAAM5sB,OAAS,EAC9CuR,MAAOnP,GACXi5T,EAAYj5T,GAAOiyB,EACnBjyB,GAAO,EAEPkG,GAAQ9P,KAAKsiU,YAAYzmS,GACzB67B,GAAW,OAInB,IAAKnwD,EAAI,EAAGA,EAAImwB,EAAKlwB,OAAQD,IACzBs0B,EAAU,CAAE41C,SAAUzxE,KAAK2sS,UAAUj1Q,EAAKnwB,GAAIuR,GAASk2B,KAAMtX,EAAKnwB,GAAIwR,MAAOxR,GAE7Es7T,EAAYt7T,GAAKs0B,EAEjB/rB,GAAQ9P,KAAKsiU,YAAYzmS,GAIjC77B,KAAKw5D,MAAQqpQ,EAEbD,EAAmBjgU,EAAEmN,GACrBnP,EAAM2qC,+BAA+Bs3R,EAAkB,CAAC,QAAS,qBAEjE5iU,KAAK6L,QAAQ0gD,QAAQxS,OAAO6oR,GAExBR,GAAaS,EAAYr7T,QACzBxH,KAAKuhU,iBAIb50B,UAAW,SAASt4Q,EAAUvb,GAE1B,QADc9Y,KAAK04T,cAA4C,aAA5B14T,KAAKkH,QAAQkoL,cACe,IAA9CpvL,KAAK2hU,kBAAkBttS,EAAUvb,IAGtDg+S,YAAa,SAAS7gS,GAClBj2B,KAAK8iU,cAAgB//T,EAAO,GAAIkzB,IAGpCyiS,WAAY,WAKR,OAJK14T,KAAK8iU,eACN9iU,KAAK82T,YAAY92T,KAAK8wB,WAAWmF,WAG7Bt1B,EAAMkN,KAAKmiD,MAAMsD,eAAetzD,KAAK8wB,WAAWmF,SAAUj2B,KAAK8iU,gBAG3EllT,QAAS,SAASjZ,GACd,IAII4R,EAJAtO,EAAOjI,KACPgtC,EAASroC,GAAKA,EAAEqoC,OAChB+1R,EAAmB96T,EAAKf,QAAQ67T,iBAChCC,EAA0B,eAAXh2R,EAGnB/kC,EAAKmC,QAAQgnT,GACbnpT,EAAKgsB,cAAc,WAEnBhsB,EAAK03T,eAEL13T,EAAKg6O,UAELh6O,EAAK0qE,OAAM,GAEPqwP,GAA2B,WAAXh2R,GAChBz2B,EAqDZ,SAAyBk7D,EAAUwxP,GAC/B,IAEI5uS,EACAupC,EACAr2D,EAAGojC,EAJH83B,EAAcwgQ,EAAaz7T,OAC3B07T,EAAiBzxP,EAASjqE,OAK1BooR,EAAU,GACVuzC,EAAY,GAEhB,GAAID,EACA,IAAK37T,EAAI,EAAGA,EAAI27T,EAAgB37T,IAAK,CAIjC,IAHA8sB,EAAWo9C,EAASlqE,GACpBq2D,GAAQ,EAEHjzB,EAAI,EAAGA,EAAI83B,EAAa93B,IACzB,GAAItW,IAAa4uS,EAAat4R,GAAI,CAC9BizB,GAAQ,EACRgyN,EAAQjuR,KAAK,CAAEoX,MAAOxR,EAAGynC,KAAM3a,IAC/B,MAIHupC,GACDulQ,EAAUxhU,KAAK0yB,GAK3B,MAAO,CACHu7P,QAASA,EACTuzC,UAAWA,GApFEC,CAAgBn7T,EAAKu3T,WAAY76T,EAAEyvB,QAEjCw7P,QAAQpoR,SACXw7T,EACA/6T,EAAKmC,QAAQknT,EAAsB,CAC/Bl9R,MAAO7d,EAAOq5Q,UAGlB3nR,EAAKS,MAAMT,EAAKs4T,WAAWhqT,EAAO4sT,aAGnCl7T,EAAKywT,cAAgBzwT,EAAK24T,aAAe34T,EAAK6vT,cACrD7vT,EAAK29B,MAAM,GACP39B,EAAK24T,cACL34T,EAAK24T,aAAc,EACnB34T,EAAKs3T,iBAAmBt3T,EAAKo5T,cAAcp5T,EAAK+4J,QAAS/4J,EAAKs3T,oBAE1DwD,GAAsB/1R,GAAqB,QAAXA,GACxC/kC,EAAKS,MAAMT,EAAK+4J,SAGhB/4J,EAAKm5T,gBACLn5T,EAAKm5T,eAAezrR,UAGxB1tC,EAAKgsB,cAAc,WACnBhsB,EAAKmC,QAAQinT,IAGjB1+O,MAAO,SAASA,GACZ,GAAIA,IAAU/vE,EACV,OAAO5C,KAAKqjU,OAGhBrjU,KAAKqjU,OAAS1wP,GAGlByvP,UAAW,WACP,OAAQpiU,KAAK8wB,WAAWojC,SAAW,IAAI1sD,UAM/C,SAAS26B,GAAKopC,GACV,OAAOA,EAAKA,EAAK/jE,OAAS,GAG9B,SAASysJ,GAAkB7tH,GACvB,IAAIrtB,EAAQqtB,EAAOorC,cACnB,OAAOz4D,GAAS,EAAIqtB,EAAOl/B,QAAQ6R,GAAS,GAsChD,SAAS69S,GAAkBroS,GACvB,SAAKA,GAAc5rB,EAAEizB,cAAcrH,OAI/BA,EAAWk1B,UAAYl1B,EAAWk1B,QAAQj8C,QAOlD,SAASgvT,GAAsBjoS,EAAYtJ,GACvC,IAAIw+B,EACAma,GAAQ,EAmBZ,OAjBIrvC,EAAWk1B,UACXA,EAAU9gD,EAAEu7B,KAAK3P,EAAWk1B,SAAS,SAASxtB,GAE1C,OADA2nC,EAAQ44P,GAAsBvgS,EAAQhR,GAClCgR,EAAOwtB,QACAxtB,EAAOwtB,QAAQj8C,OAEfyuB,EAAOhR,OAASA,KAI1B24C,GAASrvC,EAAWk1B,QAAQj8C,SAAWi8C,EAAQj8C,SAChDo2D,GAAQ,GAGZrvC,EAAWk1B,QAAUA,GAGlBma,EA/EXj0C,EAAGqN,OAAOs+R,IAkFV30T,EAAM+xB,cAAcyY,eAAe,OAAQ,WArlG/C,CAulGGrqC,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GACXmkD,EAASntE,EAAMitB,WACf8C,EAAS/G,EAAG+G,OACZoD,EAAkBnK,EAAGmK,gBACrB88R,EAAuB,kBAIvB0S,EAAY,cACZC,EAAa,cAEbC,EAAY,0BAIZ/2B,EAAW,aACXif,EAAU,UACVmF,EAAQ,UACR/zQ,EAAS,SACTgjL,EAAQ,QACR2jG,EAAY,YACZC,EAAa,aAEb3zO,EAAW,WACXD,EAAa,aAEbmiO,EAAgB,qBAEhB0R,EAAkB,eAEtB,SAASC,EAASppT,GACd,OAAOA,EAAMA,EAAMhT,OAAS,GAGhC,SAASmsD,EAAQjrD,GACb,OAAOA,aAAiBxF,MAAQwF,EAAQ,CAACA,GAG7C,SAASm7T,EAAYxvS,GACjB,MAA2B,iBAAbA,GAA6C,iBAAbA,GAA6C,kBAAbA,EAOlF,SAASnW,EAAY/R,EAAQugB,EAAWyD,GACpC,IAAItkB,EAAUuD,SAAS0O,cAAcqS,GAAW,OAMhD,OALIzD,IACA7gB,EAAQ6gB,UAAYA,GAExBvgB,EAAO+R,YAAYrS,GAEZA,EA0FX,SAAS+D,EAAO/D,EAASgC,EAAM6mS,GAC3B,IAAI1xE,EAAe0xE,EAAU7kS,SACzB2yT,EAAaxiU,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAC1Di7T,EAAS50T,EAAKkL,MAAQ,GAAM,EAAI,kBAAoB,GAoBxD,GAlBAlN,EAAUlJ,EAAEkJ,GAEPgC,EAAKmhC,OACNg0L,EAAe0xE,EAAUovB,qBAGV,IAAfj2T,EAAKkL,OAAe/Y,KAAKgmD,QAAUn4C,EAAKqmD,OACxCl0D,KAAKgmD,OAAOl2C,KAAK4kS,EAAUmgB,mBAAmBhnT,EAAKqmD,QAGvDl0D,KAAK6wB,QAAQ,WAAW,WACpB,MAAO,CAAEsD,SAAU,CAAEtoB,OAGzBA,EACKiX,KAAK,WAAYjV,EAAKmhC,KAAOnhC,EAAKmhC,KAAKqe,IAAM,IAC7CvqC,KAAK,oBAAqBjV,EAAKkL,OAEhCypT,GAAc30T,EAAKmhC,KAAM,CACrByzR,EAAOj7T,OAAS,EAChBqE,EAAQ0Y,SAASk+S,GAEjB52T,EAAQsgB,YAAY,mBAGxB,IAAI43S,EAAkBphU,EAoC9B,SAAuBuE,EAASmtB,EAAUqgR,GAGtC,IAFA,IAAI1lQ,EAAO,GAEFznC,EAAI,EAAGA,EAAIL,EAAQwrT,QAAQlrT,OAAQD,IAAK,CAC7C,IAAIksR,EAAevsR,EAAQwrT,QAAQnrT,GAAGyF,MAClCgnT,EAAkB/6S,SAASw6Q,EAAc,IACzCwgC,EAAa,GAEjB,GAAIxgC,EAAc,CACd,IAAIuwC,EAAkBhQ,GAAmBpD,EAAqB7jT,KAAK0mR,GAAgB,IAAM,MACzFwgC,EAActzT,EAAMmiB,KAAK,eAAkB,KAAQkhT,EAAa,KAASrjU,EAAMmiB,KAAK,mBAAsB,KAAQkhT,EAAa,IAGnIh1R,GAAQ,4BAA8BilR,EAAa,IACnDjlR,GAAQ0lQ,EAAU,SAAWntS,GAAG8sB,GAChC2a,GAAQ,UAGZ,OAAOA,EAtDqBi1R,CAAcjkU,KAAKkH,QAAS2G,EAAKmhC,KAAM0lQ,IAC/D/zS,EAAM2qC,+BAA+By4R,EAAiB,CAAC,QAAS,cAChEl4T,EAAQ0gD,QAAQxS,OAAOgqR,QAEvBl4T,EAAQkqB,KAAK,IAAMytS,GAAWzsS,SAC9BlrB,EAAQkqB,KAAK,qBAAqBjmB,KAAKkzN,EAAan1N,EAAKmhC,MAAQ,KAGrEnjC,EAAQmc,YAAY0jS,EAAS79S,EAAK4F,SAClC5H,EAAQmc,YAAYykR,EAAU5+R,EAAK4jE,UACnC5lE,EAAQmc,YAAY,UAAWna,EAAK6pD,UACpC7rD,EAAQmc,YAAY,SAAUna,EAAK60T,mBACnC72T,EAAQmc,YAAY,kBAAmBna,EAAKmhC,MAEzB,IAAfnhC,EAAKkL,OAAelL,EAAK6pD,SACrB8qQ,EACA7/T,EAAE,mDAAqD+xS,EAAUkgB,cAAc/mT,EAAKqmD,OAAS,kBACxF/mB,SAASthC,GAEdlJ,EAAE,cAAgB6gU,EAAY,WACzBr2R,SAASthC,GACTiE,KAAK4kS,EAAUkgB,cAAc/mT,EAAKqmD,QAEpCrmD,EAAKqmD,OAASsuQ,GACrB32T,EAAQkuC,OAAOp3C,EAAE,uDAGjBkL,EAAKuW,MAAQxhB,GAvFrB,SAAkBiJ,EAAS1H,GACvB0H,EAAQY,MAAMy3T,gBAAkB,cAAgB//T,EAAI,MACpD0H,EAAQY,MAAM8mC,UAAY,cAAgBpvC,EAAI,MAsF1C2I,CAASjB,EAAQ,GAAIgC,EAAKuW,KAG9BpkB,KAAK6wB,QAAQ,WAAW,WACpB,MAAO,CAAEsD,SAAU,CAAEtoB,GAAWgC,KAAM,CAAE,CAAEwmB,SAAUxmB,EAAKmhC,KAAMklB,MAAOrmD,EAAKqmD,MAAOwD,SAAU7pD,EAAK6pD,eA4DzG,SAASysQ,EAAgBl9S,GACrB,OAAOA,GAA+B,aAApBA,EAAQgsC,QAG9B,IAAImiQ,EAActhS,EAAgB/wB,OAAO,CACrCoF,KAAM,SAAS0D,EAAS3E,GACpB,IAvNsB4tT,EAUtBpkK,EATA0zK,EAsNIn8T,EAAOjI,KACPqkU,EAAiBn9T,EAAQwrT,SAAWxrT,EAAQwrT,QAAQlrT,OA1Q5C,gCADD,mCA6QXS,EAAK0qE,OAAM,GACX1qE,EAAKq8T,WAAY,EAEjB5zS,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAE9Be,EAAKf,QAAQ+6T,aACdh6T,EAAKf,QAAQ+6T,YAhOKnN,EAgO6B5tT,EAAQ4tT,UA/N3DsP,EAAWzhU,EAAE,sBAAwBmyT,EAAxB,kLAWRloT,IAAI,CACTE,SAAU,WACV+e,KAAM,YACNohE,WAAY,WAEhBm3O,EAASj3R,SAAS/9B,SAAS6O,MAC3ByyI,EAAa3nJ,WAAWpI,EAAMqO,kBAAkBo1T,EAASruS,KAAK,gBAAgB,GAAI,CAAC,WAAWppB,QAC9Fy3T,EAASrtS,SAEF25H,IA8MHxpJ,EAAUe,EAAKf,QAEfe,EAAK4D,QAAQiX,KAAK,OAAQ,WAE1B,IAAIy1D,EAAkB,IAAM8rP,EAAez5T,MAAM,KAAKC,KAAK,KACvDuB,EAAUnE,EAAK4D,QAAQQ,QAAQksE,GAInC,GAFAtwE,EAAKs+C,QAAUt+C,EAAKmE,QAAUA,EAAQ5E,OAAS4E,EAAUnE,EAAK4D,QAAQmgB,KAAK,iCAAmCq4S,EAAiB,YAAYl4T,SAEvIlE,EAAKf,QAAQwrT,SAAWzqT,EAAKf,QAAQwrT,QAAQlrT,OAAQ,CACrD,IAAI0yJ,EAAQjyJ,EAAK4D,QAAQQ,QAAQ,iBAAiB0pB,KAAK,kBACnDm8J,EAAMvvL,EAAE,iEAC6BsF,EAAKf,QAAQwrT,QAAQlrT,OADlD,gBAIZ0yJ,EAAMngH,OAAOm4I,GAEbjqL,EAAK+9C,OAASksI,EAAIn8J,KAAK,eACvB9tB,EAAK4D,QAAQ0Y,SAASggT,qCAEtBt8T,EAAK+9C,OAAS/9C,EAAKs+C,QAAQkwP,OAAO,kDAAsC92P,OACxE13C,EAAK4D,QAAQ0Y,SApSX,aAuSFrd,EAAQqsB,UACRvzB,KAAK6L,QAAQiX,KAAK,aAAc5b,EAAQqsB,WACjCrsB,EAAQssB,gBACfxzB,KAAK6L,QAAQiX,KAAK,kBAAmB5b,EAAQssB,gBAGjDvrB,EAAK4D,QAAQod,GAAG,yBAAgC,2BAA2B,WAAatmB,EAAE3C,MAAMukB,SAASssS,MAC5F5nS,GAAG,yBAAgC,MAAM,WAAatmB,EAAE3C,MAAMmsB,YAAY0kS,MAEvF5oT,EAAK+4J,QAAUrtG,EAAQ1rD,EAAKf,QAAQwB,OACpCT,EAAKu8T,mBAAqB,GAC1Bv8T,EAAKw8T,iBAAmB,GACxBx8T,EAAKy8T,YAAc,GACnBz8T,EAAK08T,cAAgB,GACrB18T,EAAKq3T,UAAY3+T,EAAM8uB,OAEvBxnB,EAAK0qS,aAEL1qS,EAAKu9N,cAAct+N,EAAQ4pB,YAE3B7oB,EAAKs+C,QAAQt9B,GAAG,qBAA4BtoB,EAAMukC,UAAS,WACvDj9B,EAAKglS,eACLhlS,EAAK28T,sBACN19T,EAAQi+B,QAEXl9B,EAAK48T,eAGT39T,QAAS,CACL9E,KAAM,cACN2uE,UAAU,EACV5rC,MAAO,IACPx4B,OAAQ,KACRm4T,YAAa,EACbrmP,UAAW,GACXwjP,WAAY,KACZ8C,eAAgB,EAChBr/T,KAAM,OACN0pL,YAAY,EACZ1mL,MAAO,GACP+nE,eAAgB,KAChB5gE,SAAU,SAAUhC,GAAQ,OAAOigE,EAAOjgE,IAC1Ci2T,oBAAqB,WAAc,MAAO,cAC1ClP,cAAe,SAAU/mT,GAAQ,OAAOigE,EAAOjgE,IAC/CgnT,mBAAoB,SAAUhnT,GAAQ,OAAOigE,EAAOjgE,IACpDm3T,WAAY,QACZzJ,YAAa,KACbhoS,UAAW,KACXC,eAAgB,MAGpBnpB,OAAQ,CACJyyC,EACAgjL,EACA2jG,EACAC,EACA3zO,EACAD,GAGJv+D,WAAY,SAASrqB,GACjB,IAAI27N,EAAY7iO,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAAS+7T,EAAaD,EAEnF5yS,EAAO3oB,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,GAE5BlH,KAAKilU,eAA4C,IAA5BjlU,KAAKkH,QAAQkoL,WAClCpvL,KAAK6L,QAAQotB,IAAI6mM,EAAO,IAAM+C,EAAW7iO,KAAKilU,eACtCjlU,KAAKilU,cAAgBjlU,KAAKkH,QAAQkoL,YAC1CpvL,KAAK6kU,cAGT7kU,KAAK2yS,aACL3yS,KAAK4d,WAGTwW,MAAO,WACH,OAAOzxB,EAAE3C,KAAKg0I,SAGlBhyI,QAAS,WACLhC,KAAKoM,QAAQ6sB,IAAI0qS,GACjB3jU,KAAK8wB,WAAW7mB,OAAO6yC,EAAQ98C,KAAKytR,iBACpC/8P,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,OAG3BwlO,cAAe,SAASl4N,GACpB,IAEI5E,EAFAT,EAAOjI,KACP8wB,EAAaxjB,GAAU,GAG3BwjB,EAAa5tB,MAAMD,QAAQ6tB,GAAc,CAAEjjB,KAAMijB,GAAeA,EAChEA,EAAanwB,EAAMkN,KAAKE,WAAWi5C,OAAOl2B,GAEtC7oB,EAAK6oB,YACL7oB,EAAK6oB,WAAW7mB,OAAO6yC,EAAQ70C,EAAKwlR,iBAEpCxlR,EAAKuyT,SACLvyT,EAAK0qE,OAAM,GAEX1qE,EAAKi9T,gBAAiB,EACtBx8T,EAAQT,EAAKS,QAEbT,EAAKS,MAAM,IACXT,EAAKk9T,MAAK,WACNl9T,EAAKS,MAAMA,OAGfT,EAAKwlR,gBAAkBxlR,EAAK2V,QAAQpU,KAAKvB,GAG7CA,EAAK6oB,WAAaA,EAAWtnB,KAAKszC,EAAQ70C,EAAKwlR,iBAE/CxlR,EAAK6uT,YAAYhmS,EAAWmF,UAEK,IAA7BnF,EAAW4G,OAAOlwB,OAClBS,EAAK2V,UACE3V,EAAKf,QAAQ6pE,UACpBjgD,EAAWq0C,SAInB1gB,KAAM,WACF,OAAOzkD,KAAK8wB,WAAW+wC,qBAG3B+iQ,kBAAmB,WACf,IAAI38T,EAAOjI,KACPykD,EAAOx8C,EAAKw8C,OAEZx8C,EAAK0qE,UAAY1qE,EAAKm9T,iBAAmBn9T,EAAKu4D,QAAU/b,IACxDx8C,EAAKu4D,MAAQ/b,EACbx8C,EAAKmC,QAAQq5T,KAIrBlD,WAAY,SAASxsS,GACjB,IAAIjF,EAAS9uB,KAAKwgU,aAElB,OAAO79T,EAAE2X,IAAIyZ,GAAW,SAASM,GAC7B,OAAOvF,EAAOuF,OAItBgxS,wBAAyB,WACrB,IAAK,IAAI99T,EAAI,EAAGA,EAAIvH,KAAKwkU,mBAAmBh9T,OAAQD,IAAK,CACrD,IAAIynC,EAAOhvC,KAAKslU,sBAAsBtlU,KAAKwkU,mBAAmBj9T,IAC1DynC,EAAKxnC,QACLwnC,EAAKzqB,SAASkoR,KAK1B7uR,QAAS,SAASjZ,GACd,IAII4R,EAJAtO,EAAOjI,KACPgtC,EAASroC,GAAKA,EAAEqoC,OAChBg2R,EAA0B,eAAXh2R,EACfg0R,EAAWhhU,KAAK04T,aAGhBzwT,EAAKs9T,QAETt9T,EAAKi9T,gBAAiB,EAEjBj9T,EAAKq8T,WAqBFr8T,EAAKglS,cACLhlS,EAAKglS,cAAa,GAGtBhlS,EAAK28T,sBAxBD5D,GACA/4T,EAAK29B,MAAM,GAGf39B,EAAKu9T,cACAx4R,IAAU/kC,EAAK+4J,QAAQx5J,QAAWw5T,GACjC/4T,EAAKf,QAAQ67T,kBAAqB96T,EAAK6vT,cASzC7vT,EAAK0qE,OAAM,GACX1qE,EAAKo9T,0BACLp9T,EAAK28T,sBAVL38T,EAAKm9T,iBAAkB,EAEvBn9T,EAAK0qE,OAAM,GACX1qE,EAAKS,MAAMT,EAAK+4J,SAAS,GAAMx0H,MAAK,WAChCvkC,EAAKm9T,iBAAkB,EACvBn9T,EAAK28T,0BAeb5B,GAA2B,WAAXh2R,KAChBz2B,EA7QZ,SAAyBk7D,EAAUwxP,GAC/B,IAEI5uS,EACAupC,EACAr2D,EAAGojC,EAJH83B,EAAcwgQ,EAAaz7T,OAC3B07T,EAAiBzxP,EAASjqE,OAK1BooR,EAAU,GACVuzC,EAAY,GAEhB,GAAID,EACA,IAAK37T,EAAI,EAAGA,EAAI27T,EAAgB37T,IAAK,CAIjC,IAHA8sB,EAAWo9C,EAASlqE,GACpBq2D,GAAQ,EAEHjzB,EAAI,EAAGA,EAAI83B,EAAa93B,IACzB,GAAItW,IAAa4uS,EAAat4R,GAAI,CAC9BizB,GAAQ,EACRgyN,EAAQjuR,KAAK,CAAEoX,MAAOxR,EAAGynC,KAAM3a,IAC/B,MAIHupC,GACDulQ,EAAUxhU,KAAK0yB,GAK3B,MAAO,CACHu7P,QAASA,EACTuzC,UAAWA,GA8OEC,CAAgBn7T,EAAKu8T,mBAAoB7/T,EAAEyvB,QACzCw7P,QAAQpoR,SACXw7T,EACA/6T,EAAKmC,QAAQ,qBAAsB,CAC/BgqB,MAAO7d,EAAOq5Q,UAGlB3nR,EAAKS,MAAMT,EAAKs4T,WAAWhqT,EAAO4sT,aAK9Cl7T,EAAKq8T,WAAY,IAGrB11L,SAAU,SAAS9hI,GACf,IAAIpE,EAAQ1I,KAAKghK,QAAQx2J,OAAOsC,EAAU,GAAG,GAE7C,MAAO,CACHA,SAAUA,EACVunB,SAAUr0B,KAAKylU,wBAAwB/8T,KAI/C+8T,wBAAyB,SAAS/8T,GAC9B,IAAIT,EAAOjI,KACP8zL,EAAc7rL,EAAKu4T,aAEvB,IAAK,IAAI52T,KAAO3B,EAAKu8T,mBACjB,GAAI1wI,EAAY7rL,EAAKu8T,mBAAmB56T,MAAUlB,EAE9C,OADAT,EAAKw8T,iBAAiBj6T,OAAOZ,EAAK,GAC3B3B,EAAKu8T,mBAAmBh6T,OAAOZ,EAAK,GAAG,IAK1DwvM,SAAU,SAAS1wM,GACf1I,KAAKghK,QAAUrtG,EAAQjrD,IAG3BA,MAAO,SAASA,EAAOg9T,GACnB,IAAIz9T,EAAOjI,KAEX,OAAI0I,IAAU9F,EACHqF,EAAK+4J,QAAQp6J,SAGV,OAAV8B,IACAA,EAAQ,IAGZA,EAAQirD,EAAQjrD,GAEXT,EAAKm5T,gBAAkD,aAAhCn5T,EAAKm5T,eAAenuQ,UAC5ChrD,EAAKm5T,eAAiBz+T,EAAEqpC,cAGkB,aAA5B/jC,EAAKf,QAAQkoL,YAA6BnnL,EAAKm+B,SAAS5+B,QAAUkB,EAAMlB,SAEtEkB,EAAMlB,QACtBS,EAAKm+B,QAAQ,GAGjBn+B,EAAK+4J,QAAUt4J,GAEVT,EAAK0qE,UAAY1qE,EAAKs9T,QAAUt9T,EAAKi9T,gBAAmBQ,IACzDz9T,EAAK09T,iBAAiBj9T,GAGnBT,EAAKm5T,iBAGhBwE,kBAAmB,SAASl9T,GACxB,GAAI1I,KAAK6lU,sBACL7lU,KAAK6lU,qBAAqBr+T,SAAWkB,EAAMlB,OAAQ,CAC/C,IAAI4rE,EAAWpzE,KAAK6lU,qBAAqBj/T,QAE7C,OADI5G,KAAK6lU,qBAAuB,KACzBzyP,EAGX,OAAO1qE,GAGXi9T,iBAAkB,SAASj9T,GASvB,IARA,IAIIsmC,EAJA/mC,EAAOjI,KACP8lU,EAAW79T,EAAK89T,UAChBjyI,EAAc7rL,EAAKu4T,aACnBwE,EAAa/8T,EAAKf,QAAQ89T,WAE1BgB,EAAe,GAGVz+T,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAC9B,IAAK,IAAIqC,EAAM,EAAGA,EAAMk8T,EAASt+T,OAAQoC,KACrColC,EAAO82R,EAASl8T,GAAKolC,QAET60R,EAAY70R,GAAQtmC,EAAMnB,KAAOynC,EAAOtmC,EAAMnB,KAAOusL,EAAY9kJ,KAGrEg3R,EAAarkU,KAAKmkU,EAASl8T,GAAKmP,OAMhD,GAAIitT,EAAax+T,SAAWkB,EAAMlB,OAG9B,OAFAS,EAAK+4J,QAAU,QACf/4J,EAAKm+B,OAAO4/R,GAKwB,mBAA7B/9T,EAAKf,QAAQq0T,YACpBtzT,EAAKf,QAAQq0T,YAAY,CACrB7yT,MAAoC,aAA5B1I,KAAKkH,QAAQkoL,WAA6B1mL,EAAQA,EAAM,GAChEq/C,QAAS,SAASC,GACK,UAAfg9Q,EACA/8T,EAAKg+T,gBAAgBj+Q,GACC,aAAfg9Q,GACP/8T,EAAKi+T,mBAAmBl+Q,MAK9B//C,EAAKS,QAAQ,IAGfT,EAAKm9T,iBAAkB,EACvBn9T,EAAK28T,qBAHJ38T,EAAKm+B,OAAO,EAAE,KAQ3B6/R,gBAAiB,SAASthQ,GAOtB,IALIA,EADAA,IAAY/hE,IAA4B,IAAb+hE,GAA8B,OAAZA,EACnC,GAEAhR,EAAQgR,IAGTn9D,OAEN,CACH,IAAI+uT,EAAUv2T,KAAKkhU,UAAU,IAAI3K,QAC7BA,EAAQ/uT,QACRxH,KAAKm7T,eAAe5E,EAAS,SAJjC5xP,EAAU,EAAE,GAQhB3kE,KAAKomC,OAAOu+B,IAGhBuhQ,mBAAoB,SAASnyS,GACzB,IAAIwiS,EAASwK,EAQb,IALIhtS,EADAA,IAAcnxB,GAA6B,OAAdmxB,EACjB,GAEA4/B,EAAQ5/B,IAGTvsB,OAER,CACH+uT,EAAU5zT,EAAE2X,IAAIta,KAAKwkU,oBAAoB,SAASx1R,EAAMj2B,GACpD,MAAO,CAAEA,MAAOA,EAAOsb,SAAU2a,MAGrC+xR,EAAQp+T,EAAE2X,IAAIyZ,GAAW,SAASib,EAAMj2B,GACpC,MAAO,CAAEA,MAAOA,EAAOsb,SAAU2a,MAGrChvC,KAAKwkU,mBAAqBzwS,EAE1B/zB,KAAKykU,iBAAmB,GAExB,IAAK,IAAIl9T,EAAI,EAAGA,EAAIvH,KAAKwkU,mBAAmBh9T,OAAQD,IAAK,CACrD,IAAIynC,EAAOhvC,KAAKslU,sBAAsBtlU,KAAKwkU,mBAAmBj9T,IAC9DvH,KAAKykU,iBAAiB9iU,KAAK3B,KAAKmmU,aAAan3R,GAAM,IACnDA,EAAKzqB,SAASkoR,GAGlBzsS,KAAKm7T,eAAe5E,EAASwK,GAEzB/gU,KAAKohU,gBACLphU,KAAKohU,eAAezrR,eAvBxB31C,KAAKomC,OAAO,EAAE,KA4BtBggS,cAAe,SAASrtT,GACpB,IAAI+X,EAAa9wB,KAAK8wB,WAClB6zB,EAAO3kD,KAAKu0D,UACZkE,EAASz4D,KAAK0kU,YACdnuT,EAAS5T,EAAEqpC,WACX8uG,EAAO,GAEPhlB,EAAMzyH,KAAKkN,MAAMwI,EAAQ4rC,GAAQA,EACjCwlI,EAAO9mL,KAAK4iE,KAAKltD,EAAQ4rC,GAAQA,EAEjCi0G,EAAQuxB,IAASr0D,EAAM,CAAEq0D,GAAS,CAAEr0D,EAAKq0D,GAyB7C,OAvBAxnL,EAAEK,KAAK41J,GAAO,SAAS5qI,EAAGy2B,GACtB,IAEI1Y,EAFApgC,EAAM84C,EAAOE,EACb0hR,EAAgB5tQ,EAAOhU,GAGtB4hR,GAAkBA,EAAc16T,MAAQA,EAQzCogC,EAAWs6R,EAAct6R,UAPzBA,EAAWppC,EAAEqpC,WACbysB,EAAOhU,GAAQ,CAAE94C,IAAKA,EAAKogC,SAAUA,GAErCjb,EAAWy3C,kBAAkB9jB,EAAME,GAAM,WACrC5Y,EAAS4J,cAMjBmlG,EAAKn5I,KAAKoqC,MAGdppC,EAAE+7D,KAAKt2D,MAAMzF,EAAGm4I,GAAMtuG,MAAK,WACvBj2B,EAAOo/B,aAGJp/B,GAGXuwD,SAAU,SAASnC,GACf,IAAI18D,EAAOjI,KACP2kD,EAAO3kD,KAAKu0D,UACZ+xQ,GAAer+T,EAAK08T,cAAcn9T,OAkBtC,OAhBK28T,EAAgBl8T,EAAKs+T,mBACtBt+T,EAAKs+T,gBAAkB5jU,EAAEqpC,WACzB/jC,EAAK08T,cAAgB,IAGzBhiU,EAAEK,KAAK2hE,GAAS,SAAS32C,EAAGjV,GACxB9Q,EAAK08T,cAAchjU,KAAKsG,EAAKm+T,cAAcn+T,EAAKu+T,SAASztT,EAAO4rC,QAGhE2hR,GACA3jU,EAAE+7D,KAAKt2D,MAAMzF,EAAGsF,EAAK08T,eAAen4R,MAAK,WACrCvkC,EAAK08T,cAAgB,GACrB18T,EAAKs+T,gBAAgB5wR,aAItB1tC,EAAKs+T,iBAGhBE,cAAe,SAAS/uS,EAAM3e,GAC1B,IAAIm7C,EAGJ,GAA0B,UAAtBl0D,KAAKkH,QAAQxB,KACb,IAAK,IAAI6B,EAAI,EAAGA,EAAImwB,EAAKlwB,OAAQD,IAAK,CAElC,MADA2sD,EAAQx8B,EAAKnwB,GAAG6sB,OACN5sB,QAAUuR,GAGhB,OAAOm7C,EAAMn7C,GAFbA,GAAgBm7C,EAAM1sD,OAQlC,OAAOkwB,EAAK3e,IAGhB2tT,UAAW,SAASjiR,EAAME,GACtB,OAAO3kD,KAAK8wB,WAAWq1C,WAAW1hB,EAAMphD,KAAK8S,IAAIsuC,EAAOE,EAAM3kD,KAAK8wB,WAAW81B,WAGlFy2Q,gBAAiB,SAAStkT,GACtB,IAAI9Q,EAAOjI,KACP2kD,EAAO18C,EAAKssD,UACZ9P,EAAOx8C,EAAKu+T,SAASztT,EAAO4rC,GAC5BjtB,EAAO13B,KAAK0mU,UAAUjiR,EAAME,GAGhC,OAAK18C,EAAKy+T,UAAUjiR,EAAME,GAAMn9C,QAIN,UAAtBS,EAAKf,QAAQxB,OACb/E,EAAMgpB,GAAG0M,SAAS1zB,EAAEsF,EAAKmE,UAAU,GACnCnE,EAAKk9T,MAAK,WACNl9T,EAAK6oB,WAAW8iC,MAAMnP,EAAME,GAAM,WAC9BhkD,EAAMgpB,GAAG0M,SAAS1zB,EAAEsF,EAAKmE,UAAU,MAEvCsrB,EAAOzvB,EAAK6oB,WAAW4G,WAIxBzvB,EAAKw+T,cAAc/uS,EAAM,CAAC3e,EAAQ0rC,KAb9B,MAgBfyzQ,kBAAmB,WACf,OAAOl4T,KAAKwkU,mBAAmB59T,SAGnCo3T,WAAY,SAASt1T,GACjB1I,KAAKumD,QAAQ5vB,UAAU32B,KAAKumD,QAAQ5vB,YAAcjuB,IAGtDolF,SAAU,SAAS3pF,GACfnE,KAAKumD,QAAQ5vB,UAAUxyB,IAG3Bm1T,cAAe,SAASvgT,GACpB/Y,KAAK8tF,SAAS/0E,EAAQ/Y,KAAKkH,QAAQ+6T,aAGvCr8R,MAAO,SAAS6hQ,GACZ,IAAI57R,EACAkN,EACAlL,EACA4F,EACAwuT,EAAajiU,KAAKkH,QAAQ+6T,WAC1BtyS,EAAK3vB,KAAKs/T,UACVqH,GAAe,EAEnB,GAAIl/B,IAAc7kS,EAEd,OADA6Q,EAAUzT,KAAK6L,QAAQkqB,KAAK,aACbvuB,OAASiM,EAAU,KAGtC,GAAyB,mBAAdg0R,EAA0B,CACjC55R,EAAO7N,KAAK8wB,WAAWkD,WACvB,IAAK,IAAIpqB,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IACjC,GAAI69R,EAAU55R,EAAKjE,IAAO,CACtB69R,EAAY79R,EACZ,OAiBZ,GAZI69R,aAAqBvkS,QACrBukS,EAAYm8B,EAASn8B,IAGrB3+R,MAAM2+R,IACN57R,EAAUlJ,EAAE8kS,GACZ1uR,EAAQE,SAAStW,EAAEkJ,GAASiX,KAAK,qBAAsB,MAEvD/J,EAAQ0uR,EACR57R,EAAU7L,KAAK4mU,mBAAmB7tT,KAGvB,IAAXA,EAGA,OAFA/Y,KAAK6L,QAAQkqB,KAAK,YAAe5J,YAAYu/R,QAC7C1rT,KAAK6mU,cAAgBjkU,GAIzB,GAAIiJ,EAAQrE,OAAQ,CACZqE,EAAQugB,SAASs/R,KACjBib,GAAe,GAEf3mU,KAAK6mU,gBAAkBjkU,KACvB6Q,EAAUzT,KAAK4mU,mBAAmB5mU,KAAK6mU,gBAElC16S,YAAYu/R,GACZp6R,WAAW,MAEZq1S,GACA3mU,KAAKoK,QAAQ0lF,IAIrB9vF,KAAK6mU,cAAgB9tT,EAErBlN,EACK0Y,SAASmnS,GACT5oS,KAAK,KAAM6M,GAEhB,IAAI7iB,EAAW9M,KAAK8mU,oBAAoB/tT,GAEvB,QAAbjM,EACA9M,KAAK8tF,SAAS/0E,EAAQkpT,GACF,WAAbn1T,EACP9M,KAAK8tF,SAAU/0E,EAAQkpT,EAAaA,EAAcjiU,KAAK+mU,eACnC,cAAbj6T,GACP9M,KAAK8tF,SAAS/0E,EAAQkpT,GAGtB0E,GACA3mU,KAAKoK,QAAQ2lF,QAGjB/vF,KAAK6mU,cAAgB9tT,EACrB/Y,KAAKo0B,QAAQjI,YAAYu/R,GACzB1rT,KAAKs5T,cAAcvgT,IAI3B2nT,WAAY,WACR,OAAO1gU,KAAK6mU,eAGhBpK,WAAY,WACRz8T,KAAK8tF,SAAS,GACd9tF,KAAK4lC,MAAM,IAGf+2R,UAAW,WACP,IAAItrT,EAAYrR,KAAK8wB,WAAW81B,QAChC5mD,KAAK8tF,SAAS9tF,KAAKgnU,gBAAgBzyS,cACnCv0B,KAAK4lC,MAAMv0B,EAAY,IAG3B0rT,UAAW,WACP,IACItpT,EADAsF,EAAQ/Y,KAAK6mU,cAGjB,OAAK/9T,MAAMiQ,IAAUA,EAAQ,GACzBA,GAAS,EACT/Y,KAAK4lC,MAAM7sB,IAEXtF,EAAUzT,KAAK4lC,UACAnyB,EAAQ2Y,SAAS,oBAC5BrT,GAAS,EACT/Y,KAAK4lC,MAAM7sB,IAGRA,IAEPA,EAAQ/Y,KAAK8wB,WAAW81B,QAAU,EAClC5mD,KAAK4lC,MAAM7sB,GACJA,IAIf8jT,UAAW,WACP,IAEIppT,EAFAsF,EAAQ/Y,KAAK6mU,cACbx1T,EAAYrR,KAAK8wB,WAAW81B,QAAU,EAG1C,OAAK99C,MAAMiQ,IAAUA,EAAQ1H,GACzB0H,GAAS,EACT/Y,KAAK4lC,MAAM7sB,IAEXtF,EAAUzT,KAAK4lC,UACAnyB,EAAQ2Y,SAAS,oBAC5BrT,GAAS,EACT/Y,KAAK4lC,MAAM7sB,IAGRA,IAEPA,EAAQ,EACR/Y,KAAK4lC,MAAM7sB,GACJA,IAIfoiT,eAAgB,SAAS5E,EAASwK,GAE9BA,EAAQA,GAAS,KADjBxK,EAAUA,GAAW,IAGT/uT,QAAUu5T,EAAMv5T,SACvBxH,KAAKoK,QAAQ0yC,EAAQ,CAClBy5Q,QAASA,EACTwK,MAAOA,KAKnB36R,OAAQ,SAASqhQ,GACb,IACIrsH,EACA6pG,EAIAgiD,EACAl7R,EACAx1B,EARAtO,EAAOjI,KAGP6gU,EAA8C,aAA5B54T,EAAKf,QAAQkoL,WAC/B83I,EAAkB/C,EAAgBl8T,EAAKs+T,iBACvCvF,EAAWhhU,KAAK04T,aAIhBnC,EAAU,GAEd,GAAI9uB,IAAc7kS,EACd,OAAOqF,EAAKw8T,iBAAiB79T,QAWjC,GARKqB,EAAKk/T,iBAAoD,aAAjCl/T,EAAKk/T,gBAAgBl0Q,UAC9ChrD,EAAKk/T,gBAAkBxkU,EAAEqpC,YAG7BovI,EAAUnzK,EAAKk+T,aAAa1+B,GAC5Bw/B,EAAoBpG,IAAoBG,GAAY4C,EAASxoJ,KAAawoJ,EAAS5jU,KAAKykU,mBACxFlO,EAAUtuT,EAAKm/T,uBAAuBhsJ,IAE1B5zK,SAAW4zK,EAAQ5zK,QAAUy/T,EAOrC,OANAh/T,EAAKkzT,eAAe5E,GAEhBtuT,EAAKm5T,gBACLn5T,EAAKm5T,eAAezrR,UAAU1uB,UAG3Bhf,EAAKk/T,gBAAgBxxR,UAAU1uB,UAGnB,IAAnBm0J,EAAQ5zK,SAAgC,IAAhB4zK,EAAQ,KAChCA,EAAU,IAGd6pG,EAAiB7pG,EACjB7kK,EAAStO,EAAKi5T,UAAU9lJ,GACxBm7I,EAAUhgT,EAAOggT,QACjBn7I,EAAU7kK,EAAO6kK,QAEbylJ,IACAqG,GAAkB,EACd9rJ,EAAQ5zK,SACR4zK,EAAU,CAACwoJ,EAASxoJ,MAI5B,IAAI5uI,EAAO,WACP,IAAIu0R,EAAQ94T,EAAKy5E,QAAQ05F,IAErB6pG,EAAez9Q,SAAW4zK,EAAQ5zK,QAAUq5T,IAC5C54T,EAAK29B,MAAMw1I,GAGfnzK,EAAKkzT,eAAe5E,EAASwK,GAEzB94T,EAAKm5T,gBACLn5T,EAAKm5T,eAAezrR,UAGxB1tC,EAAKk/T,gBAAgBxxR,WAazB,OAVA5J,EAAW9jC,EAAK6+D,SAASs0G,GAEpB8rJ,IACGn7R,EACAA,EAASS,KAAKA,GAEdA,KAIDvkC,EAAKk/T,gBAAgBlgT,WAGhC0rD,MAAO,SAASA,GACZ,GAAIA,IAAU/vE,EACV,OAAO5C,KAAKqnU,aAGhBrnU,KAAKqnU,aAAe10P,GAGxBwyP,KAAM,SAASn8S,GACXhpB,KAAKulU,OAAQ,EACbv8S,IACAhpB,KAAKulU,OAAQ,GAGjBzO,YAAa,SAAS7gS,GAClBj2B,KAAK8iU,cAAgBngU,EAAEI,OAAO,GAAIkzB,IAGtCyiS,WAAY,WAKR,OAJK14T,KAAK8iU,eACN9iU,KAAK82T,YAAY92T,KAAK8wB,WAAWmF,WAG7Bt1B,EAAMkN,KAAKmiD,MAAMsD,eAAetzD,KAAK8wB,WAAWmF,SAAUj2B,KAAK8iU,gBAG3EnC,WAAYh+T,EAAEQ,KAEdyjU,mBAAoB,SAAS7tT,GACzB,OAAO/Y,KAAKo0B,QAAQ6B,QAAO,SAASrsB,EAAKiC,GACrC,OAAOkN,IAAUE,SAAStW,EAAEkJ,GAASiX,KAAK,qBAAsB,QAIxEwiT,sBAAuB,SAASjxS,GAK5B,IAJA,IAEIxoB,EAFAi6T,EAAW9lU,KAAK+lU,UACpBjyI,EAAc9zL,KAAKwgU,aAGVj5T,EAAI,EAAGA,EAAIu+T,EAASt+T,OAAQD,IAEjC,GADQu+T,EAASv+T,GAAGynC,MAAQ60R,EAAYiC,EAASv+T,GAAGynC,MAAQ82R,EAASv+T,GAAGynC,OAAS3a,EAAWyxS,EAASv+T,GAAGynC,MAAQ3a,GAAYy/J,EAAYgyI,EAASv+T,GAAGynC,OAAS8kJ,EAAYz/J,GAC9J,CACPxoB,EAAUi6T,EAASv+T,GACnB,MAIR,OAAOsE,EAAU7L,KAAK4mU,mBAAmB/6T,EAAQkN,OAASpW,KAG9D63T,OAAQ,WACJx6T,KAAKuW,OAAS3T,EACd5C,KAAKsnU,eAAiB1kU,EACtB5C,KAAKwgE,MAAQ59D,EACbD,EAAE3C,KAAKgnU,iBAAiBjwS,SACxB/2B,KAAKgnU,gBAAkBpkU,EACvB5C,KAAK6L,QAAQ0gD,SAGjBwsQ,QAAS,WACL,IAAIwO,IAAYvnU,KAAK8wB,WAAW4G,OAAOlwB,OACnCmF,EAAS3M,KAAKkH,QAAQyF,OACtBs1T,EAAajiU,KAAKkH,QAAQ+6T,WAC1Br7Q,EAAQ5mD,KAAK8wB,WAAW81B,QAQ5B,OANK2gR,EAEM56T,EAASs1T,EAAar7Q,IAC7Bj6C,EAASi6C,EAAQq7Q,GAFjBt1T,EAAS,EAKNA,GAGX66T,gBAAiB,WACb,IAAI76T,EAAS3M,KAAK+4T,UAElB/4T,KAAKumD,QAAQ55C,OAAOA,GACpB3M,KAAK+mU,cAAgBp6T,GAGzB+S,aAAc,WACV,OAAO1f,KAAK+mU,eAGhBD,oBAAqB,SAAS/tT,GAC1B,IAAI4d,EAAY32B,KAAKumD,QAAQ5vB,YACzBjX,EAAe1f,KAAK+mU,cACpB9E,EAAajiU,KAAKkH,QAAQ+6T,WAC1BwF,EAAY1uT,EAAQkpT,EACpByF,EAAeD,EAAYxF,EAC3B0F,EAAYhxS,EAAYjX,EAa5B,OAVI+nT,IAAe9wS,EAAYsrS,GAAgByF,EAAe/wS,GAAa8wS,EAAY9wS,EACxE,MACJ8wS,IAAcE,GAAcF,EAAYE,GAAaA,EAAYD,EAC7D,SACHD,GAAa9wS,GAAe8wS,GAAa9wS,GAAajX,EAAeuiT,GAClE,WAEA,aAMnBtvB,WAAY,WACR,IAAIzrS,EAAUlH,KAAKkH,QACfwtS,EAAY,CACZ7kS,SAAU3I,EAAQ2I,SAClBi0T,oBAAqB58T,EAAQ48T,oBAC7BlP,cAAe1tT,EAAQ0tT,cACvBC,mBAAoB3tT,EAAQ2tT,oBAYhC,IAAK,IAAItjT,KATLrK,EAAQwrT,SACRxrT,EAAQwrT,QAAQpxT,SAAQ,SAAU+qL,EAAQ9kL,GACtC,IAAIs6T,EAAex1I,EAAOpnK,MAAQonK,EAAOpnK,MAAM/T,WAAa,OAG5DwjS,EAAU,SAAWntS,GAAK8kL,EAAOx8K,UAFd,SAAUhC,GAAQ,OAAOigE,EAAOntE,EAAMmuB,OAAO+yS,EAAblhU,CAA2BkN,QAMtE6mS,EACkB,mBAAnBA,EAAUnjS,KACjBmjS,EAAUnjS,GAAO5Q,EAAMkP,SAAS6kS,EAAUnjS,IAAQ,KAI1DvR,KAAK00S,UAAYA,GAGrBkzB,eAAgB,SAAS/7T,EAASiP,GAM9B,IALA,IACIk0B,EAAMpO,EADNxM,EAAQ,GAER6tS,EAAajiU,KAAKkH,QAAQ+6T,WAAa,KACvCp/F,EAAY7iO,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAAS+7T,EAAaD,EAE5ExoT,KAAU,IACb8lB,EAAOxxB,SAAS0O,cAAc,SACzB4O,UAAY,oBAEjBsiB,EAAO5/B,SAAS0O,cAAc,OACzB+3E,UAAY,EACjB7mD,EAAKtiB,UAAYm2M,EACjB7zL,EAAKnqB,aAAa,OAAQ,UAC1BmqB,EAAKviC,MAAME,OAASs1T,EACpBjzR,EAAKviC,MAAMitO,UAAYuoF,EACvBjzR,EAAK9wB,YAAY0iB,GAEjB/0B,EAAQqS,YAAY8wB,GAEpB5a,EAAMzyB,KAAKqtC,GAGf,OAAO5a,GAGXyzS,mBAAoB,WAChB,IAAIpvQ,EAASz4D,KAAK8wB,WAAWyoC,QACzBxtB,EAAWppC,EAAEqpC,WACjBD,EAAS4J,UAET31C,KAAK0kU,YAAc,GACnB,IAAK,IAAIn9T,EAAI,EAAGA,EAAIkxD,EAAOjxD,OAAQD,IAC/BvH,KAAK0kU,YAAYjsQ,EAAOlxD,GAAG+N,OAAS,CAAE3J,IAAK8sD,EAAOlxD,GAAGoE,IAAKogC,SAAUA,IAI5Ey5R,YAAa,WACT,IA1pCc9lT,EAAcolT,EAAa7C,EAgE/B6F,EANMj8T,EAASmd,EAgmCrB/gB,EAAOjI,KACPumD,EAAUt+C,EAAKs+C,QAAQh3B,IAAI,GAC3BroB,EAAUe,EAAKf,QACf4pB,EAAa7oB,EAAK6oB,WAElB7oB,EAAK0qE,SACL1qE,EAAKuyT,SAGTvyT,EAAK4/T,qBACL5/T,EAAK8/T,oBACL9/T,EAAKu/T,kBACLv/T,EAAKssD,WAtqCS70C,EAsqCgBzX,EAAK8+T,cAtqCPjC,EAsqCsB59T,EAAQ49T,YAtqCjB7C,EAsqC8B/6T,EAAQ+6T,WArqC5E5+T,KAAK4iE,KAAKvmD,EAAeolT,EAAc7C,IAuqCtCh6T,EAAKssD,UAAYzjC,EAAW81B,UAC5B3+C,EAAKssD,UAAYzjC,EAAW81B,SAGhC3+C,EAAK+rI,OAAS/rI,EAAK2/T,eAAe3/T,EAAK4D,QAAQ,GAAI5D,EAAKssD,WAExDtsD,EAAK+/T,WAAW9gU,EAAQ+6T,WAAanxS,EAAW81B,SAChD3+C,EAAKf,QAAQxB,MAAQorB,EAAWojC,SAAW,IAAI1sD,OAAS,QAAU,OAExC,SAAtBS,EAAKf,QAAQxB,KACTuC,EAAK+9C,OAAO35C,QAAQ4lT,GAAezqT,OACnCS,EAAK+9C,OAAO35C,QAAQ4lT,GAAe9kT,OAEnClF,EAAK+9C,OAAO74C,OAGZlF,EAAK+9C,OAAO35C,QAAQ4lT,GAAezqT,OACnCS,EAAK+9C,OAAO35C,QAAQ4lT,GAAe/kT,OAEnCjF,EAAK+9C,OAAO94C,OAIpBjF,EAAK6mB,OAAS7mB,EAAKw3T,SAAQ,WACvBx3T,EAAKglS,cAAa,MAGtBhlS,EAAKq5T,UAAY,SAAS3qS,EAAWhF,GACjC,IAAIs2S,EAAUhgU,EAAKigU,WAAWjgU,EAAK6mB,QACnC,OAAO7mB,EAAK03T,aAAahpS,EAAWsxS,EAAQtxS,EAAWhF,KAG3D1pB,EAAKglS,aAAehlS,EAAKkgU,cA9oCTt8T,EA+oCG06C,EA/oCMv9B,EA+oCG/gB,EAAKq5T,UA9oC9B,SAAS3vS,GACZ,OAAO3I,EAASnd,EAAQ8qB,UAAWhF,MAIzBm2S,EA0oCG7/T,EAAKmgU,aAAangU,EAAK+rI,OAAQpkI,EAAOpG,KAAKvB,IAzoCrD,SAASsjE,EAAM55C,GAElB,OADAm2S,EAAQv8P,EAAKn3C,MAAOm3C,EAAKxyD,MAAO4Y,GACzB45C,KA0oCPtjE,EAAKglS,eACLhlS,EAAKsxT,uBAAuBtxT,EAAK8+T,eACjC9+T,EAAKyxT,kCAGTsO,WAAY,SAASr7T,GACjB,IAAI6mR,EACAwzC,EAAkBhnU,KAAKgnU,gBAQ3B,GANKA,EAGDxzC,EAAgBwzC,EAAgBzyS,aAFhCyyS,EAAkBhnU,KAAKgnU,gBAAkB9oT,EAAYle,KAAKumD,QAAQ,GAvvCxD,sBA4vCV55C,IAAW6mR,EAGX,IAFAwzC,EAAgBhpT,UAAY,GAErBrR,EAAS,GAAG,CACf,IAAI07T,EAAYhlU,KAAK8S,IAAIxJ,EAAQ,MACjCuR,EAAY8oT,GAAiBv6T,MAAME,OAAS07T,EAAY,KACxD17T,GAAU07T,IAKtB5I,QAAS,WACL,IAAI6I,EAAqB,KACrBx3S,EAAa9wB,KAAK8wB,WAClBy3S,EAAiBz3S,EAAW2zB,OAC5B/+C,EAAO1F,KAAKkH,QAAQxB,KACpBu+C,EAAWjkD,KAAKu0D,UAChBiB,EAAa,GAQjB,OANI1kC,EAAWmzB,WAAaA,GACxBjkD,KAAKmlU,MAAK,WACNr0S,EAAWmzB,SAASA,MAIrB,SAASlrC,EAAOyvT,GACnB,IAAIvgU,EAAOjI,KACX,GAAK8wB,EAAWo1C,QAAQsiQ,EAAYvkR,GAuB7B,CAQH,IAAI1tC,EACJ,GARIgyT,IAAmBC,GACnBxoU,KAAKmlU,MAAK,WACNr0S,EAAW8iC,MAAM40Q,EAAYvkR,GAC7BskR,EAAiBC,KAKZ,UAAT9iU,EAAkB,CAClB,IAAK8vD,EAAWgzQ,GAGZ,IAFA,IAAIC,EAAYjzQ,EAAWgzQ,GAAc,GACrCh/R,EAAS1Y,EAAW4G,OACfnwB,EAAI,EAAG8oB,EAAMmZ,EAAOhiC,OAAQD,EAAI8oB,EAAK9oB,IAE1C,IADA,IAAI2sD,EAAQ1qB,EAAOjiC,GACVojC,EAAI,EAAG+9R,EAAcx0Q,EAAM9/B,MAAM5sB,OAAQmjC,EAAI+9R,EAAa/9R,IAC/D89R,EAAU9mU,KAAK,CAAEqtC,KAAMklB,EAAM9/B,MAAMuW,GAAIupB,MAAOA,EAAMxrD,QAKhE6N,EAASi/C,EAAWgzQ,GAAYzvT,EAAQyvT,QAExCjyT,EAASua,EAAW4G,OAAO3e,EAAQyvT,GAGvC,OAAOjyT,EA3BP,OArBI+xT,IAAuBE,IACvBF,EAAqBE,EACrBD,EAAiBC,EAEbvgU,EAAK0gU,iBACL1gU,EAAK0gU,gBAAgB/oQ,SAGzB33D,EAAK0gU,gBAAkB1gU,EAAKm+T,cAAcoC,GAC1CvgU,EAAK0gU,gBAAgBhqQ,MAAK,WACtB,IAAIiqQ,EAAiB3gU,EAAK4gU,iBAAiB5gU,EAAKs+C,QAAQ,GAAG5vB,WAE3D1uB,EAAK0gU,gBAAkB,KAEnBH,GAAcI,GAAkBA,GAAmBJ,EAAavkR,IAChEh8C,EAAKq8T,WAAY,EACjBxzS,EAAW8iC,MAAM40Q,EAAYvkR,QAKlC,OAgCnB07Q,aAAc,SAAShpS,EAAW40C,GAC9B,IAAIrX,EAAQl0D,KAAK8oU,oBACb7G,EAAajiU,KAAKkH,QAAQ+6T,WAC1B8G,EAA4B1lU,KAAKkN,OAAOomB,EAAY40C,EAAKnnD,KAAO69S,GAChE+G,EAAuBz9P,EAAKn3C,MAAM20S,GAEtC,GAAIC,GAAwBA,EAAqBh6R,KAAM,CACnD,IAAIi6R,EAAoBD,EAAqB90Q,MAE7C,GAAI+0Q,IAAsB/0Q,EAAO,CAC7B,IAAIg1Q,EAAiBD,GAAqB,GAC1CjpU,KAAKgmD,OAAOl2C,KAAK9P,KAAK00S,UAAUmgB,mBAAmBqU,IACnDlpU,KAAK8oU,oBAAsBG,GAInC,OAAO19P,GAGX49P,YAAa,SAASn6R,EAAMj2B,EAAOrQ,GAC/B,IAAI0gU,EAAWppU,KAAKkH,QAAQxB,KACxBu8T,EAAajiU,KAAKkH,QAAQ+6T,WAC1BvhE,EAAe1gQ,KAAK6mU,cACpBp1P,GAAW,EACXh+D,GAAU,EACVikD,GAAW,EACXxD,EAAQ,KAER4/H,EAAc9zL,KAAKwgU,aAYvB,GAViB,UAAb4I,IACIp6R,IACA0oB,EAAqB,IAAV3+C,IAAuC,IAAvB/Y,KAAKqpU,eAA2BrpU,KAAKqpU,gBAAkBr6R,EAAKklB,MACvFl0D,KAAKqpU,cAAgBr6R,EAAKklB,OAG9BA,EAAQllB,EAAOA,EAAKklB,MAAQ,KAC5BllB,EAAOA,EAAOA,EAAKA,KAAO,MAGE,aAA5BhvC,KAAKkH,QAAQ89T,YAA6BhlU,KAAKwkU,mBAAmBh9T,QAAUwnC,GAC5E,IAAK,IAAIznC,EAAI,EAAGA,EAAIvH,KAAKwkU,mBAAmBh9T,OAAQD,IAEhD,GADQusL,EAAY9zL,KAAKwkU,mBAAmBj9T,MAAQusL,EAAY9kJ,GACrD,CACPyiC,GAAW,EACX,YAGL,IAAKzxE,KAAK04T,cAAgBhwT,EAAMlB,QAAUwnC,EAC7C,IAAK,IAAIrE,EAAI,EAAGA,EAAIjiC,EAAMlB,OAAQmjC,IAE9B,GADQk5R,EAAY70R,GAAQtmC,EAAMiiC,KAAOqE,EAAOtmC,EAAMiiC,KAAOmpJ,EAAY9kJ,GAC9D,CACPtmC,EAAM8B,OAAOmgC,EAAI,GACjB8mC,GAAW,EACX,MASZ,OAJIivL,IAAiB3nP,IACjBtF,GAAU,GAGP,CACHu7B,KAAMA,GAAc,KACpBklB,MAAOA,EACPwD,SAAUA,EACV+Z,SAAUA,EACVh+D,QAASA,EACTsF,MAAOA,EACPqL,IAAKrL,EAAQkpT,IAIrBjwP,OAAQ,SAASj5D,GACb,IAGIi2B,EAHAulB,EAAYv0D,KAAKu0D,UACjB7rD,EAAQ1I,KAAKghK,QAAQp6J,QACrBwtB,EAAQ,GAGZp0B,KAAKw5D,MAAQ,GACbx5D,KAAKqpU,eAAgB,EAErB,IAAK,IAAI9hU,EAAIwR,EAAOvR,EAASuR,EAAQw7C,EAAWhtD,EAAIC,EAAQD,IACxDynC,EAAOhvC,KAAKmpU,YAAYnpU,KAAK8uB,OAAOvnB,EAAGwR,GAAQxR,EAAGmB,GAC9C0rB,EAAMA,EAAM5sB,OAAS,KACrB4sB,EAAMA,EAAM5sB,OAAS,GAAGk7T,kBAAoB1zR,EAAK0oB,UAErDtjC,EAAMzyB,KAAKqtC,GACXhvC,KAAKw5D,MAAMxqB,EAAKj2B,OAASi2B,EAI7B,OADAhvC,KAAK+lU,UAAY3xS,EACVA,GAGXk1S,wBAAyB,SAAS3yS,EAAW4yS,GACzC,IAAIn1S,EAAQp0B,KAAKgyE,OAAOhyE,KAAKwpU,WAAW7yS,EAAW4yS,IACnD,MAAO,CACHxwT,MAAOqb,EAAM5sB,OAAS4sB,EAAM,GAAGrb,MAAQ,EACvCqL,IAAKgQ,EAAM5sB,OAAS4sB,EAAM,GAAGhQ,IAAM,EACnCgQ,MAAOA,IAIf8zS,WAAY,WACR,IAAIxoT,EAAe1f,KAAK+mU,cAGpB0C,EA72CZ,SAAuBviU,EAASwY,GAC5B,IAAIgqT,GAAiBxiU,EAAQ49T,YAAc,EAAI59T,EAAQu3E,WAAa/+D,EAChEiqT,EAAcziU,EAAQu3E,UAAY/+D,EAEtC,OAAO,SAAS6rD,EAAM50C,EAAW4yS,GAC7B,OAAI5yS,EAAY4yS,EACL5yS,EAAY40C,EAAKnnD,IAAMslT,EAEV,IAAbn+P,EAAKnnD,KAAauS,EAAY40C,EAAKnnD,IAAMulT,GAq2CjCC,CAFL5pU,KAAKkH,QAEuBwY,GAE1C,OAAO,SAAUhX,EAAOipB,GACpB,IAAIpb,EAASvW,KAAKuW,OACdgzT,EAAgBvpU,KAAKsnU,eASzB,OAPI31S,GAAUpb,GAAWkzT,EAAalzT,EAAQ7N,EAAO6gU,KACjDhzT,EAASvW,KAAKspU,wBAAwB5gU,EAAO6gU,IAGjDvpU,KAAKsnU,eAAiB5+T,EACtB1I,KAAKuW,OAASA,EAEPA,GACR/M,KAAKxJ,OAGZmoU,aAAc,SAASr5S,EAAQ9F,GAC3B,IAAIvV,EAEJ,OAAO,SAASke,GACZ,IAAIk4S,EAAS/6S,EAAO6C,GAEhBk4S,IAAWp2T,IACXA,EAAUo2T,EACV7gT,EAAS6gT,EAAQl4S,MAK7By2S,aAAc,SAAS78P,EAAMu8P,GACzB,IA72CM9+S,EAAU0rR,EA62CZzsS,EAAOjI,KACPwH,EAAS+jE,EAAK/jE,OACdsiU,GAAiBn0K,IAGrB,OAFAmyK,GAh3CM9+S,EAg3CS8+S,EAh3CCpzB,EAg3CQ10S,KAAK00S,UA/2C1B,SAAS7kH,EAAMC,GAClB,IAAK,IAAIvoL,EAAI,EAAG8oB,EAAMw/J,EAAKroL,OAAQD,EAAI8oB,EAAK9oB,IACxCyhB,EAAS6mK,EAAKtoL,GAAIuoL,EAAKvoL,GAAImtS,GACvB5kH,EAAKvoL,GAAGynC,MACRhvC,KAAKoK,QAAQs5T,EAAY,CAAE10R,KAAMrsC,EAAEktL,EAAKtoL,IAAKsG,KAAMiiL,EAAKvoL,GAAGynC,KAAMxjB,GAAI7qB,EAAMgpB,OA22C3CngB,KAAKxJ,MAEtC,SAAS+pU,EAAOhtT,EAAQ4U,GAC3B,IACIiiC,EAAOo2Q,EADPnrS,EAAO9hB,EAAS+sT,EAGhBn4S,GAAStuB,KAAK6T,IAAI2nB,IAASr3B,GAC3BosD,EAAQ2X,EACRy+P,EAASD,IAETn2Q,EA/2ChB,SAAiBx/B,EAAOyK,GACpB,IAAI+0B,EAUJ,OARI/0B,EAAO,GACP+0B,EAAQx/B,EAAM5pB,OAAO,EAAGq0B,GACxBzK,EAAMzyB,KAAKyG,MAAMgsB,EAAOw/B,KAExBA,EAAQx/B,EAAM5pB,OAAOq0B,GAAOA,GAC5BzK,EAAMjqB,QAAQ/B,MAAMgsB,EAAOw/B,IAGxBA,EAo2Caq2Q,CAAQ1+P,EAAM1sC,GACtBmrS,EAASnrS,EAAO,EAAIkrS,EAAMnjU,OAAOi4B,GAAQkrS,EAAMnjU,MAAM,GAAIi4B,IAG7DipS,EAAQl0Q,EAAOo2Q,EAAQ/hU,EAAK0qE,SAE5Bm3P,EAAgB/sT,IAIxBmtT,aAAc,WACV,IA36CaxqT,EAAcolT,EAAaqF,EA26CpCjjU,EAAUlH,KAAKkH,QAEnB,OA76CawY,EA66CM1f,KAAK+mU,cA76CGjC,EA66CY59T,EAAQ49T,YA76CPqF,EA66CoBjjU,EAAQ69T,eA56CjE,CACHv3S,KAAM9N,EAAeyqT,EACrB18S,GAAI/N,GAAgBolT,EAAc,EAAIqF,KA66C1CtB,iBAAkB,SAAS/7T,GACvB,IAAIynD,EAAYv0D,KAAKu0D,UACjB0tQ,EAAajiU,KAAKkH,QAAQ+6T,WAC1Br7Q,EAAQ5mD,KAAK8wB,WAAW81B,QAE5B,OAAOvjD,KAAK8S,IAAI9S,KAAKuV,IAAIguC,EAAQ2N,EAAW,GAAIlxD,KAAKuV,IAAI,EAAGvV,KAAKkN,MAAMzD,EAAWm1T,MAGtFuH,WAAY,SAAS7yS,EAAW4yS,GAC5B,IACIz8T,EADAs9T,EAAUpqU,KAAKkqU,eAKnB,OAFAp9T,EAAW6pB,GAAcA,EAAY4yS,EAAiBa,EAAQ58S,KAAO48S,EAAQ38S,IAEtEztB,KAAK6oU,iBAAiB/7T,IAGjC+3T,YAAa,WACT,IAAIhiG,EAAY7iO,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAAS+7T,EAAaD,EAE/EtjU,KAAKkH,QAAQkoL,aACbpvL,KAAKilU,aAAejlU,KAAKs5N,cAAc9vN,KAAKxJ,MAC5CA,KAAK6L,QAAQod,GAAG62M,oBAAyB,IAAM+C,EAAW7iO,KAAKilU,gBAIvE7H,gBAAiB,SAASvxT,GACtB,OAAMA,aAAmBnE,OAIlBuR,SAASpN,EAAQiX,KAAK,qBAAsB,IAHxClgB,GAMfujU,aAAc,SAAS1+B,GACnB,IAAiB55R,EAAb0I,EAAS,GAEb,GAAyB,mBAAdkxR,EAA0B,CACjC55R,EAAO7N,KAAK8wB,WAAWkD,WACvB,IAAK,IAAIpqB,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IACjC,GAAI69R,EAAU55R,EAAKjE,IAAO,CACtB2M,EAAO5U,KAAKiI,GACZ,OAKa,iBAAd69R,GACPlxR,EAAO5U,KAAK8lS,GAGhB,IAAIj3I,EAAexwJ,KAAKo9T,gBAAgB31B,GASxC,OARK3+R,MAAM0nJ,IACPj6I,EAAO5U,KAAK6uJ,GAGZi3I,aAAqBvkS,QACrBqT,EAASkxR,GAGNlxR,GAGX2qT,UAAW,SAAS9lJ,GAChB,IACI5pG,EACAn9C,EAOA2a,EATAunR,EAAU,GAGV8T,EAAkBrqU,KAAKykU,iBACvBvM,EAAoBl4T,KAAKwkU,mBACzB13T,EAAW,EACXsiL,EAAapvL,KAAKkH,QAAQkoL,WAC1Bk7I,EAAwB,EACxBx2I,EAAc9zL,KAAKwgU,aAEnBjqT,EAAS,KAIb,GAFA6kK,EAAUA,EAAQx0K,SAEC,IAAfwoL,GAAwBhU,EAAQ5zK,QAkB7B,GAAmB,aAAf4nL,EACP,IAAK,IAAI7nL,EAAI,EAAGA,EAAI6zK,EAAQ5zK,OAAQD,IAAK,CAKrC,GAJAgP,EAAS,KACTzJ,EAAWnK,EAAE0yB,QAAQ+lJ,EAAQ7zK,GAAI8iU,GACjCh2S,EAAWr0B,KAAKq9T,gBAAgBjiJ,EAAQ7zK,KAEtB,IAAduF,GAAmBunB,EACnB,IAAK,IAAIsW,EAAI,EAAGA,EAAIutR,EAAkB1wT,OAAQmjC,KAClCk5R,EAAYxvS,GAAY6jS,EAAkBvtR,KAAOtW,EAAWy/J,EAAYokI,EAAkBvtR,MAAQmpJ,EAAYz/J,MAElH2a,EAAOhvC,KAAK4mU,mBAAmBxrJ,EAAQ7zK,IACvCgP,EAASvW,KAAKuqU,oBAAoBv7R,EAAMrE,EAAGywI,EAAQ7zK,GAAI+iU,SAI/D94P,EAAgB64P,EAAgBv9T,MAEVlK,IAClBosC,EAAOhvC,KAAK4mU,mBAAmBp1P,GAC/Bj7D,EAASvW,KAAKuqU,oBAAoBv7R,EAAMliC,EAAU0kE,EAAe84P,IAIrE/zT,IACA6kK,EAAQ5wK,OAAOjD,EAAG,GAClBgvT,EAAQ50T,KAAK4U,GAEb+zT,IACA/iU,UA9CgC,CACxC,IAAK,IAAIqC,EAAM,EAAGA,EAAMygU,EAAgB7iU,OAAQoC,IACxCygU,EAAgBzgU,KAAShH,EACzB5C,KAAK4mU,mBAAmByD,EAAgBzgU,IAAMuiB,YAAYsgR,GACnDyrB,EAAkBtuT,IACzB5J,KAAKslU,sBAAsBpN,EAAkBtuT,IAAMuiB,YAAYsgR,GAGnE8pB,EAAQ50T,KAAK,CACToX,MAAOsxT,EAAgBzgU,GACvBkD,SAAUlD,EACVyqB,SAAU6jS,EAAkBtuT,KAIpC5J,KAAKghK,QAAU,GACfhhK,KAAKwkU,mBAAqB,GAC1BxkU,KAAKykU,iBAAmB,GAkC5B,MAAO,CACHrpJ,QAASA,EACTm7I,QAASA,IAIjBgU,oBAAqB,SAASv7R,EAAMliC,EAAU0kE,EAAe84P,GAGzD,GAAKt7R,EAAK5iB,SAASqgR,GASnB,OALAz9P,EAAK7iB,YAAYsgR,GACjBzsS,KAAKghK,QAAQx2J,OAAOsC,EAAU,GAC9B9M,KAAKykU,iBAAiBj6T,OAAOsC,EAAU,GAGhC,CACHiM,MAAOy4D,EACP1kE,SAAUA,EAAWw9T,EACrBj2S,SALOr0B,KAAKwkU,mBAAmBh6T,OAAOsC,EAAU,GAAG,KAS3Ds6T,uBAAwB,SAAShsJ,GAC7B,IACI1yK,EAAOqQ,EAAOjM,EAId69B,EALAwK,EAAWn1C,KAAK6L,QAAQ,GAAGspC,SAE3Br8B,EAAS9Y,KAAKghK,QACdu1J,EAAU,GACV3sT,EAAM,EAGV,GAAgC,aAA5B5J,KAAKkH,QAAQkoL,aAA8BpvL,KAAK04T,aAChD,MAAO,GAGX,IAAoB,IAAhBt9I,EAAQ,GAWR,OAVAz4K,EAAEwyC,GAAUhpB,YAAYsgR,GACxB8pB,EAAU5zT,EAAE2X,IAAIta,KAAKwkU,mBAAmB59T,MAAM,IAAI,SAASytB,EAAUzqB,GAClE,MAAO,CACJyqB,SAAUA,EACVvnB,SAAUlD,MAGhB5J,KAAKykU,iBAAmB,GACxBzkU,KAAKwkU,mBAAqB,GAC1BxkU,KAAKghK,QAAU,GACRu1J,EAGX,KAAO3sT,EAAMwxK,EAAQ5zK,OAAQoC,IAAO,CAOhC,IANAkD,GAAY,EACZiM,EAAQqiK,EAAQxxK,GACZ5J,KAAKq9T,gBAAgBtkT,KACrBrQ,EAAQ1I,KAAKwgU,aAAaxgU,KAAKq9T,gBAAgBtkT,KAG9C4xB,EAAI,EAAGA,EAAI7xB,EAAOtR,OAAQmjC,IAC3B,GAAIjiC,GAASoQ,EAAO6xB,GAAI,CACpB79B,EAAW69B,EACX,MAIJ79B,GAAY,IACZypT,EAAQ50T,KAAK3B,KAAK4uI,SAAS9hI,IAC3BnK,EAAEwyC,EAASp8B,IAAQoT,YAAYsgR,IAIvC,OAAO8pB,GAGXiQ,SAAU,SAASztT,EAAO4rC,GAGtB,QAFW5rC,EAAQ4rC,EAAO,EAAIthD,KAAKkN,MAAMwI,EAAQ4rC,GAAQ,GAE1C,GAAKA,GAGxB+8B,QAAS,SAAS/c,GACd,IAGItwC,EAAUm2S,EAHVviU,EAAOjI,KACP6gU,EAA8C,aAA5B7gU,KAAKkH,QAAQkoL,WAC/Bt+J,EAAa9wB,KAAK8wB,WAElB6zB,EAAO3kD,KAAKu0D,UACZu/H,EAAc9zL,KAAKwgU,aACnBO,EAAQ,GAkCZ,OAhCIF,IACA54T,EAAKw8T,iBAAmB,GACxBx8T,EAAKu8T,mBAAqB,GAC1Bv8T,EAAK+4J,QAAU,IAGnBwpK,EAAU15S,EAAW2zB,OAErB9hD,EAAEK,KAAK2hE,GAAS,SAAS32C,EAAGjV,GACxB,IAAI0rC,EAAOx8C,EAAKu+T,SAASztT,EAAO4rC,GAEhC18C,EAAKk9T,MAAK,WACNr0S,EAAW8iC,MAAMnP,EAAME,GAEvBtwB,EAAWpsB,EAAKw+T,cAAc31S,EAAW4G,OAAQ,CAAC3e,EAAQ0rC,IAC1Dx8C,EAAKw8T,iBAAiB9iU,KAAKoX,GAC3B9Q,EAAKu8T,mBAAmB7iU,KAAK0yB,GAC7BpsB,EAAK+4J,QAAQr/J,KAAKkiU,EAAYxvS,GAAYA,EAAWy/J,EAAYz/J,IAEjE0sS,EAAMp/T,KAAK,CACPoX,MAAOA,EACPsb,SAAUA,IAGdpsB,EAAK2+T,mBAAmB7tT,GAAOwL,SAASkoR,GAExC37Q,EAAW8iC,MAAM42Q,EAAS7lR,SAIlC18C,EAAK+4J,QAAU/4J,EAAK29T,kBAAkB39T,EAAK+4J,SAEpC+/J,GAGXznG,cAAe,SAAS30N,GACpB,IAAIqqC,EAAOrsC,EAAEgC,EAAEg5E,gBAEVh5E,EAAE0E,sBAAwB2lC,EAAKlsB,KAAK,aACrC9iB,KAAKoK,QAAQ01N,EAAO,CAAE9wL,KAAMA,KAIpC+4R,kBAAmB,WACf/nU,KAAKwgU,aAAe7/T,EAAMmuB,OAAO9uB,KAAKkH,QAAQupE,iBAGlD8oP,uBAAwB,SAAS5sT,GAC7B,IAAI62D,EAAYxjE,KAAKo0B,QAAQlqB,QACzBsvT,EAAcx5T,KAAKgmD,OACnB+vF,EAAU,EAEVyjL,EAAY,IAAuC,SAAjCA,EAAY,GAAG/sT,MAAMI,UACxB,SAAXF,IACAopI,EAAUp1I,EAAM4C,QAAQoa,aAG5Bo4H,GAAWhtI,WAAWy6D,EAAU52D,IAAI,sBAAuB,IAAM7D,WAAWy6D,EAAUruB,SAAS,YAAYvoC,IAAI,SAAU,IAEzH4sT,EAAY5sT,IAAI,gBAAiBmpI,KAIzC2jL,+BAAgC,WAC5B,GAAI15T,KAAKkH,QAAQwrT,SAAW1yT,KAAKkH,QAAQwrT,QAAQlrT,OAAQ,CACrD,IAAI8W,EAAQ3d,EAAM4C,QAAQ+a,MAAMte,KAAKoM,SACjCuR,EAAYhd,EAAM4C,QAAQoa,YAC1Bi2S,EAAgB5zT,KAAKumD,QAAQp6C,SAASA,SAAS4pB,KAAK,mBACpD6wB,EAAQ5mD,KAAK8wB,WAAW81B,QAE5BgtQ,EAAchnT,IAAK0R,EAAQ,eAAiB,gBAAkBsoC,EAAQjpC,EAAY,OAM9Fhd,EAAMgpB,GAAGyrS,YAAcA,EACvBz0T,EAAMgpB,GAAGqN,OAAOo+R,GAzyDpB,CA2yDGt0T,OAAOH,MAAM+G,QACF/G,OAqBd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfmtE,EAASntE,EAAMitB,WACfjE,EAAKhpB,EAAMgpB,GACX7Z,EAAOnP,EAAMmP,KACboiT,EAAOvoS,EAAGuoS,KACV9hP,EAASzmD,EAAGymD,OACZ7sE,EAAU5C,EAAM4C,QAChB6V,EAAgBzY,EAAMwY,eACtBkyC,EAAmB1qD,EAAMkN,KAAKw9C,iBAC9BnhC,EAAOvpB,EAAMupB,KACbsB,EAAK,qBACLi/S,EAAej/S,EAAK,aACpBo9Q,EAAW,WACX8hC,EAAW,WACX5tR,EAAS,SACT4uQ,EAAU,UACVC,EAAgB,aAChBhlB,EAAgB,gBAChBgkC,EAAgB,gBAEhBC,EAAc,aAAep/S,EAAK,cAAgBA,EAClD4F,EAAW,WACXy5S,EAAe,SACfC,EAAe,SAKflZ,EAAexhP,EAAOrtE,OAAQ,CAC9BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAEIi2T,EAAav8R,EAFb34B,EAAOjI,KACP+Y,EAAQ7R,GAAWA,EAAQ6R,MAG/B9Q,EAAKujB,GAAKA,EACVtkB,EAAUhE,MAAMD,QAAQiE,GAAW,CAAE4pB,WAAY5pB,GAAYA,EAE7DkpE,EAAOroE,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCA,EAAUe,EAAKf,QACf2E,EAAU5D,EAAK4D,QAAQod,GAAG,QAAUuC,EAAIvjB,EAAK2rS,cAAcpqS,KAAKvB,IAEhEA,EAAK8iU,mBAAqB9iU,EAAK+iU,YAAYxhU,KAAKvB,GAEhDA,EAAKk1T,YAAcx6T,IACnBsF,EAAKgjU,eAELhjU,EAAKijU,iBAELjjU,EAAKikE,SAELjkE,EAAKkjU,MAAQ,GACbljU,EAAKmjU,MAAQ,GAEbnjU,EAAKkwE,WAELlwE,EAAKkpB,YACLlpB,EAAKmE,QAAQyB,KAAKujB,EAAUnpB,EAAKmE,QAAQ0W,KAAKsO,IAE9CnpB,EAAKojU,QAELpjU,EAAKmgS,SAELngS,EAAKqjU,UAELrjU,EAAK4jE,cAEL5jE,EAAKovT,cAEDnwT,EAAQ2sB,OACR7zB,KAAKusT,SAGTtkT,EAAKihS,QAELjhS,EAAKghS,UAELhhS,EAAKwwT,UAAYxwT,EAAKupE,eAAiB,EAEnCz4D,IAAUnW,IACVsE,EAAQ6R,MAAQA,GAGpB9Q,EAAKwzT,cAAgBv0T,EAAQ6R,MAE7B9Q,EAAKqzT,mBAAmBrzT,EAAKf,SAC7Be,EAAK8sT,YACL9sT,EAAKyqE,SAAS/oE,IAAI,YAAa1B,EAAKsjU,4BAA4B/hU,KAAKvB,IAErEA,EAAKq2T,WAELr2T,EAAK0B,IAAI,OAAO,SAAShF,IAChBA,EAAE2F,OAAOooE,SAASC,SAAW1qE,EAAKi1T,kBACnCj1T,EAAKujU,cAAcvjU,EAAKwjU,uBAI5BvkU,EAAQ6pE,SACR9oE,EAAK6oB,WAAWq0C,SACe,IAAxBl9D,EAAKupE,iBACZ5wC,EAAO15B,EAAQ05B,MAAQ,OAEnBu8R,EAAcj2T,EAAQi2T,cAEe,IAAlBj2T,EAAQ6R,MACvB6nB,EAAOu8R,EACAl1T,EAAKkqT,YACZvxR,EAAO/0B,EAAQspC,SAAS,aAAavU,SAI7C34B,EAAKujU,cAAc5qS,IAGZj+B,EAAEsF,EAAK4D,SAASwsB,QAAQ,YAAY9rB,GAAG,cAG9CtE,EAAKsf,QAAO,GAGhBtf,EAAKyqE,SAASlpE,KAAK,SAAS,SAAS7E,GAAKA,EAAEwE,oBAE5CxI,EAAM6zB,OAAOvsB,GACbA,EAAKypB,oBAGTxqB,QAAS,CACL9E,KAAM,eACN8kB,SAAS,EACT6pD,UAAU,EACVh4D,MAAO,EACP6nB,KAAM,KACNl4B,MAAO,KACPy8B,MAAO,IACPx4B,OAAQ,IACR4lE,cAAe,GACf9B,eAAgB,GAChB0sP,YAAa,GACb1qP,YAAa,GACbwsP,iBAAkB,GAClBD,uBAAwB,GACxBv+Q,YAAY,EACZ6wC,UAAW,GACXr7D,OAAQ,OACRtwB,UAAW,EACXqwT,kBAAkB,EAClBtgQ,SAAS,EACT7lD,SAAU,KACV67T,cAAe,KACfC,oBAAqB,KACrB/W,cAAe,SAAU/mT,GAAQ,OAAOigE,EAAOjgE,IAC/CgnT,mBAAoB,SAAUhnT,GAAQ,OAAOigE,EAAOjgE,IACpDqrT,WAAW,EACXhmO,MAAO,KACPwgO,YAAa,KACbjkT,KAAM,SACNujB,SAAU,QACVra,QAAS,SACTkb,MAAO,KACPumS,aAAa,GAGjB/vT,OAAQ,CACJ,OACA,QACAyyC,EACA,SACA,YACA,cACA,YACA,UACA,MACA,gBAGJvrB,WAAY,SAASrqB,GACjBkpE,EAAOroE,GAAGwpB,WAAWhnB,KAAKvK,KAAMkH,GAEhClH,KAAK0yE,SAASnhD,WAAWvxB,KAAKm0T,aAAajtT,IAE3ClH,KAAKirU,eACLjrU,KAAKkrU,iBACLlrU,KAAK0yS,aACL1yS,KAAKi6T,sBACLj6T,KAAKm6T,mBACLn6T,KAAKipS,UACLjpS,KAAKkpS,SAEAlpS,KAAK0I,SAAW1I,KAAKk9T,kBACtBl9T,KAAKomC,OAAO,IAIpBpkC,QAAS,WACL,IAAIiG,EAAOjI,KAEXowE,EAAOroE,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKmE,QAAQ6sB,IAAIzN,GACjBvjB,EAAKmE,QAAQ6sB,IAAIwxS,GACjBxiU,EAAK4D,QAAQotB,IAAIzN,GAEjBvjB,EAAK2jU,OAAO3yS,MACZhxB,EAAK2jU,OAAS,KACd3jU,EAAKm0T,WAAa,KAElBn0T,EAAKk1T,YAAYlkS,MAEbhxB,EAAKwrT,aACLxrT,EAAKwrT,YAAYx6R,IAAIwxS,IAI7Bl5O,KAAM,WACF,IAAItpF,EAAOjI,KACP04T,IAAazwT,EAAK6oB,WAAWmF,UAAWhuB,EAAK6oB,WAAWmF,SAASwtB,QAAQj8C,OAAS,EAClFkrE,EAAW1yE,KAAK0yE,SAEhBzqE,EAAKirF,MAAM5mF,YAIVrE,EAAKyqE,SAASC,SAAW1qE,EAAKm+M,SAAW0kH,EAkBnC7iU,EAAKkvT,kBACZlvT,EAAK4jU,cAAe,EACpB5jU,EAAKirF,MAAMvpF,IAAI,WAAY1B,EAAK8iU,oBAGhC9iU,EAAKirF,MAAM9B,UAAW,EACtBnpF,EAAKmE,QAAQ0W,KAAK,wBAAyB4vD,EAAS4sP,WACpDr3T,EAAKirF,MAAM3B,OACXtpF,EAAK6jU,qBACL7jU,EAAKmxT,eA1BLnxT,EAAKwvT,OAAQ,EACbxvT,EAAKm+M,OAAS,SAEVn+M,EAAKwrT,cACLxrT,EAAKwrT,YAAYvkS,IAAI,IACrBjnB,EAAKkjU,MAAQ,IAGbljU,EAAKwrT,aAA0C,IAA3BxrT,EAAKf,QAAQvB,YAAoB+yT,GACrDzwT,EAAK2V,UACL3V,EAAKirF,MAAMvpF,IAAI,WAAY1B,EAAK8iU,oBAChC9iU,EAAKmE,QAAQ0W,KAAK,wBAAyB4vD,EAAS4sP,WACpDr3T,EAAKirF,MAAM3B,OACXtpF,EAAK6jU,sBAEL7jU,EAAKkuT,mBAejB7wQ,MAAO,WACHtlD,KAAKurU,8BACLvrU,KAAKkzF,MAAM5tC,SAGfimR,4BAA6B,WACzB,IAAIn/T,EAAUpM,KAAKoM,QACfinB,EAAUjnB,EAAQ2pB,KAAK,kBAAkBjT,KAAK,MAElD1W,EAAQ0W,KAAK,mBAAoBuQ,IAGrC23S,YAAa,WACJhrU,KAAKq1T,mBACNr1T,KAAK89T,cAAc99T,KAAKyzT,cAIhCqY,mBAAoB,WAChB,IAAIrY,EAAczzT,KAAKyzT,YACnBsY,EAAkB/rU,KAAK86T,SAE3B,GAAKrH,IAAezzT,KAAKq1T,kBAAzB,CAIA,IAAI2W,EAAgBhsU,KAAKyzT,YAAY,KAAOr6S,IACxCosB,EAAQ7kC,EAAM6kC,MAAMxlC,KAAKyzT,YAAY,IAAI,GAE7CzzT,KAAK86T,UAAW,EAEhBrH,EAAYlvS,SAAS,YACrBkvS,EAAYpnT,QAAQ,kBAAkBO,IAAI,QAAS5M,KAAKkzF,MAAMrnF,QAAQmB,SACtEymT,EAAYtnS,YAAY,YAEpB6/S,IACAvY,EAAYrpT,QAAQ,SACpBzJ,EAAM6kC,MAAMiuR,EAAY,GAAIjuR,IAGhCxlC,KAAK86T,SAAWiR,IAGpB5U,cAAe,WACX,OAAOn3T,KAAKk9T,kBAAoBl9T,KAAKyzT,aAAerjP,EAAOroE,GAAGovT,cAAc5sT,KAAKvK,OAGrFmoB,OAAQ,SAASA,GACbnoB,KAAK06T,QAAQvyS,GAAQ,IAGzB1U,QAAS,SAASg0R,GACd,IAAIh0R,EAEJ,GAAIg0R,IAAc7kS,EAGd,QAFA6Q,EAAUzT,KAAK0yE,SAAS9sC,UAEe,IAAvB5lC,KAAKwxE,eAAuBxxE,KAAKk9T,iBACtCl9T,KAAKm9T,YAGT1pT,EAGXzT,KAAK41F,OAAO6xM,IAGhBpzQ,SAAU,SAAStb,GACf,IAAI9Q,EAAOjI,KACPq0B,EAAW,KAEf,GAAc,OAAVtb,EAAkB,OAAOA,EAE7B,GAAIA,IAAUnW,EACVyxB,EAAWpsB,EAAKyqE,SAASwlP,oBAAoB,OAC1C,CACH,GAAqB,iBAAVn/S,EAAoB,CAC3B,GAAI9Q,EAAKf,QAAQwuD,QACb,OAAOztD,EAAK6oB,WAAWwrC,SAAS35D,EAAEoW,GAAOlL,KAAK,QAG9CkL,EADAA,EAAMqT,SAAS,uBACN,EAEDzpB,EAAEsF,EAAKmsB,SAASrb,MAAMA,QAE3B9Q,EAAKi1T,mBACZnkT,GAAS,GAGbsb,EAAWpsB,EAAK6oB,WAAWkD,WAAWjb,GAO1C,OAJKsb,IACDA,EAAWpsB,EAAKgkU,wBAGb53S,GAGXzW,QAAS,WACL5d,KAAK0yE,SAAS90D,WAGlBgjB,KAAM,SAASA,GACX,IACIsrS,EADAjkU,EAAOjI,KAEPygD,EAAax4C,EAAKf,QAAQu5C,WAI9B,IAFA7f,EAAgB,OAATA,EAAgB,GAAKA,KAEfh+B,EAsBT,OAAOqF,EAAKujU,gBArBQ,iBAAT5qS,GAKXsrS,EAAczrR,EAAa7f,EAAKtoB,cAAgBsoB,EAEhD34B,EAAKy5E,SAAQ,SAAS7zE,GAOlB,OANAA,EAAO5F,EAAK6iS,MAAMj9R,GAEd4yC,IACA5yC,GAAQA,EAAO,IAAIyK,eAGhBzK,IAASq+T,KACjB1/R,MAAK,WACJvkC,EAAKujU,cAAcvjU,EAAKosB,YAAcuM,GACtC34B,EAAKorT,4BAhBLprT,EAAKujU,cAAc5qS,IAwB/Bs1R,aAAc,WACVvzT,EAAE3C,KAAKyzT,aAAavkS,IAAI,IACxBkhD,EAAOroE,GAAGmuT,aAAa3rT,KAAKvK,OAGhC0I,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACP0yE,EAAWzqE,EAAKyqE,SAChB5hD,EAAa7oB,EAAK6oB,WAGtB,OAAIpoB,IAAU9F,GACV8F,EAAQT,EAAK6tT,aAAe7tT,EAAKyqE,SAAShqE,QAAQ,MACjC9F,GAAyB,OAAV8F,EAAiB,GAAKA,GAG1DT,EAAKqzT,mBAAmBrzT,EAAKf,QAASwB,IAElCA,GAAUT,EAAKi1T,mBACfj1T,EAAKwzT,cAAgB,MAGzBz7T,KAAKoK,QAAQ,MAAO,CAAE1B,MAAOA,IAEzBT,EAAKq0T,UAAYr0T,EAAKf,QAAQurE,aAAexqE,EAAKyqE,SAASC,SACvD1qE,EAAKkkU,cACLr7S,EAAW7mB,OAAO6yC,EAAQ70C,EAAKkkU,cAGnClkU,EAAKkkU,aApBK,WAAalkU,EAAKS,MAAMA,IAoBNc,KAAKvB,QAEjC6oB,EAAWnnB,IAAImzC,EAAQ70C,EAAKkkU,gBAI5BlkU,EAAKurT,oBAAsB9gP,EAASC,SAAWD,EAASgmP,aACxDzwT,EAAKiuT,eAELjuT,EAAKg2T,kBAGTvrP,EAAShqE,MAAMA,GAAO8jC,MAAK,WACvBvkC,EAAKmvT,KAAOnvT,EAAKuwT,oBAAsBvwT,EAAK6tT,YAC5C7tT,EAAKwwT,UAAYxwT,EAAKupE,cACtBvpE,EAAKorT,8BAIb6J,eAAgB,WACZ,OAAOl9T,KAAKm9T,eAAiBn9T,KAAKm9T,YAAY,IAGlD8N,aAAc,WACV,IAAIhjU,EAAOjI,KACPkH,EAAUe,EAAKf,QACfi2T,EAAcj2T,EAAQi2T,YACtBttT,EAAW3I,EAAQykU,oBAEvB,IAAKxO,EAGD,OAFAl1T,EAAKk1T,YAAYlkS,MAAMlC,cACvB9uB,EAAKk1T,YAAcx6T,KAIlBkN,IACDA,EAAW,SAAUhC,GAAQ,OACzBigE,EADwD,iBAAhBqvP,EACjCtvT,EACAlN,EAAMmuB,OAAO5nB,EAAQqrE,cAArB5xE,CAAoCkN,MAG3B,mBAAbgC,IACPA,EAAWlP,EAAMkP,SAASA,IAG9B5H,EAAK0jU,oBAAsB97T,EAEtB5H,EAAKi1T,mBACNj1T,EAAKk1T,YAAcx6T,EAAE,wDAAwDm0B,UAAU7uB,EAAKsjE,OAGhGtjE,EAAKk1T,YAAYrtT,KAAKD,EAASstT,IACdlkS,MACAhQ,GApcP,qDAocuBhhB,EAAK85E,OAAOv4E,KAAKvB,IACjCghB,GAAG2hT,EAAa3iU,EAAK6rS,cAEtC7rS,EAAK4oB,QAAQ,WAAW,WACpB,MAAO,CAAEsD,SAAUlsB,EAAKk1T,YAAatvT,KAAM,CAAC,CAAEwmB,SAAUpsB,EAAKgkU,8BAIrER,iBAAkB,WACd,IAAItO,EAAcn9T,KAAKkH,QAAQi2T,YAC/B,MAA+B,iBAAhBA,EAA4BA,EAAcn9T,KAAK8qS,MAAMqyB,IAGxE8O,qBAAsB,WAClB,IAAIhkU,EAAOjI,KACPm9T,EAAcl1T,EAAKf,QAAQi2T,YAE/B,OAAIl1T,EAAKi1T,iBACEv6T,EAAEgF,cAAcw1T,GAAe,IAAI9xQ,EAAiB8xQ,GAAel1T,EAAKmkU,gBAAgBnkU,EAAKwjU,mBAAoB,IAGrH7oU,GAGXypU,cAAe,SAASx+T,GACpB,IAAI5F,EAAOjI,KACX,GAAKiI,EAAKkqT,UAAV,CAIA,IAAIzpT,EAAQT,EAAKyqE,SAAShqE,QAAQ,GAC9By0T,EAAcl1T,EAAKgkU,uBACnBK,EAAmBnP,GAAel1T,EAAKq+M,OAAO62G,GAE9Cz0T,IAAU9F,GAAyB,OAAV8F,IACzBA,EAAQ,IAGRy0T,IACImP,IAAqB1pU,GAAoC,OAArB0pU,IACpCA,EAAmB,IAGvBnP,EAAc,kBAAoBmP,EAAmB,KAAOrkU,EAAK6iS,MAAMqyB,GAAe,aAG1Fl1T,EAAKgsI,SAASpmI,EAAMsvT,EAAaz0T,GAE7BA,IAAUwpT,EAAKqG,UAAUtwT,EAAK6tT,mBAAoBptT,KAClDT,EAAK8tT,cAAgB,KACrB9tT,EAAK8zT,QAAQrzT,MAIrB6rT,WAAY,WAER,IAKIlgS,EALApsB,EAAOjI,KACPusU,EAAetkU,EAAKwzT,cACpBuF,EAAW/4T,EAAKm+M,SAAWykH,EAE3Bh9T,EAAO5F,EAAK6oB,WAAWkD,WAG3B/rB,EAAKukU,cAAe,EAEpBvkU,EAAK+qT,gBACL/qT,EAAKgrT,gBACLhrT,EAAKgvT,eAAeppT,EAAKrG,QAEzBS,EAAK4xT,cAAa,GAElB5xT,EAAKirF,MAAMpmF,WAEX7E,EAAKokU,cAAcx+T,GAEdmzT,IACG/4T,EAAKwvT,OACLxvT,EAAKkgB,OAAOlgB,EAAKkvT,iBAGrBlvT,EAAKwvT,OAAQ,EAERxvT,EAAKy1T,SACF7vT,EAAKrG,SACAS,EAAKyqE,SAAShqE,QAAQlB,QAAU+kU,GAAgB,GAAsB,OAAjBA,GACtDtkU,EAAKm+B,OAAOmmS,GAGhBtkU,EAAKwzT,cAAgB,MACrBpnS,EAAWpsB,EAAKyqE,SAASwlP,oBAAoB,KAC7BjwT,EAAK24B,SAAW34B,EAAK6iS,MAAMz2Q,IACvCpsB,EAAKwkU,aAAap4S,IAEfpsB,EAAKujU,kBAAoBvjU,EAAKwjU,qBACrCxjU,EAAKyqE,SAAShqE,MAAM,IACpBT,EAAKwkU,aAAa,MAClBxkU,EAAKwwT,UAAYxwT,EAAKupE,iBAKlCvpE,EAAKi0T,YACLj0T,EAAKmC,QAAQ,cAGjBiqT,YAAa,WACTr0T,KAAKysU,aAAazsU,KAAK0yE,SAASwlP,oBAAoB,KAEhDl4T,KAAKwsU,cAAiBxsU,KAAKo3T,OAA4B,IAApBp3T,KAAKy4T,aACxCz4T,KAAKy4T,UAAYz4T,KAAKwxE,gBAI9Bk7P,aAAc,WACV1sU,KAAK2sU,WAGTC,qBAAsB,WAClB,IAAI3kU,EAAOjI,KACGiI,EAAKmE,QAEX6c,GAAG,UAAYwhT,EAAcxiU,EAAK4kU,gBAAgBrjU,KAAKvB,IACvDghB,GAAG,WAAawhT,EAAcxiU,EAAK6kU,iBAAiBtjU,KAAKvB,IAC7DA,EAAKwrT,aACLxrT,EAAKwrT,YAAYxqS,GAAG,UAAYwhT,EAAcxiU,EAAK4kU,gBAAgBrjU,KAAKvB,IACpEghB,GAAG,WAAawhT,EAAcxiU,EAAK6kU,iBAAiBtjU,KAAKvB,KAIrE2rS,cAAe,WACX5zS,KAAKoM,QAAQhC,QAAQ,UAGzByiU,gBAAiB,WACb7sU,KAAKoM,QAAQmY,SAASmnS,GACtB1rT,KAAK86T,UAAW,GAGpBgS,iBAAkB,WACd,IAAI7kU,EAAOjI,KACP+sU,EAAWjsU,OAAOjB,OAASiB,OAAOsjB,IAEjCnc,EAAK6yT,WACN3gS,aAAalyB,EAAK4vT,gBAEdt0T,EAAQkf,SAASvB,KAAO6rT,EACxB9kU,EAAK62D,UAEL72D,EAAKg9G,QAGTh9G,EAAKmE,QAAQ+f,YAAYu/R,GACzBzjT,EAAK6yT,UAAW,EAChB7yT,EAAKwvT,OAAQ,EACbxvT,EAAK4D,QAAQzB,QAAQ,UAI7B4iU,kBAAmB,WACfhtU,KAAK86T,WAAa96T,KAAKyzT,aAG3BpxF,cAAe,SAAS19N,GACpBA,EAAEwE,iBACFnJ,KAAKkzF,MAAMjpF,OAAO,WAAYjK,KAAK+qU,oBACnC/qU,KAAKmzT,SAAWnzT,KAAKoM,QACrBpM,KAAK86T,UAAW,EAChB96T,KAAK06T,WAGT75F,UAAW,SAAS35N,GAChB,IAAIe,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwb,EAAUngB,EAAQmgB,QAClBqpD,EAAWxpE,EAAQwpE,SACnBtkE,EAAUnE,EAAKmE,QAAQa,IAAIhF,EAAKwrT,aAAax6R,IAAIzN,GACjDyhT,EAAkBhlU,EAAKmE,QAAQ6sB,IAAI2xS,GAElCl6P,GAAarpD,EAuBPA,GACPjb,EAAQklB,WAAWF,GACnB67S,EAAgB1oT,SAASonS,IAEzBshB,EAAgB9gT,YAAYw/R,IA1B5B9/S,EAAQsjB,KAAKy5Q,GAAU,GAAOz5Q,KAAKu7S,GAAU,GAE7CuC,EACK9gT,YAAYw/R,GACZ1iS,GAAG2hT,EAAa3iU,EAAK6rS,cAE1B1nS,EACK0W,KAAKsO,EAAUhlB,EAAQyB,KAAKujB,IAC5BtO,KAAK6jR,GAAe,GACpB7jR,KAAK6nT,GAAe,GACpB1hT,GAAG,UAAYuC,EAAIvjB,EAAMA,EAAKi7G,SAAS15G,KAAKvB,IAC5CghB,GAAGtoB,EAAM4C,QAAQ2lB,UAAYsC,EAAIvjB,EAAK+kU,kBAAkBxjU,KAAKvB,IAC7DghB,GAAG,QAAUuC,EAAIvjB,EAAKykU,aAAaljU,KAAKvB,IAE7CA,EAAKmE,QAAQ6c,GAAG,QAAUuC,EAAIvjB,EAAKo6N,cAAc74N,KAAKvB,IAEjDA,EAAKwrT,YAGNrnT,EAAQ6c,GAAG,QAAUuC,EAAIvjB,EAAK0kU,QAAQnjU,KAAKvB,IAF3CmE,EAAQ6c,GAAG,WAAauC,EAAIvjB,EAAKilU,UAAU1jU,KAAKvB,KAYxD4D,EAAQiX,KAAK8lR,EAAUvhR,GACfvE,KAAK4nT,EAAUh6P,GAEvBtkE,EAAQ0W,KAAK6jR,EAAet/Q,GACnBvE,KAAK6nT,EAAej6P,IAGjCwyC,SAAU,SAASv+G,GACf,IAGIqnU,EACA7wB,EAJAlzS,EAAOjI,KACPuR,EAAM5M,EAAEwiC,QACRg6K,EAASx8M,EAAEw8M,OAIXgsH,EAAiBllU,EAAKirF,MAAM5mF,UAchC,GAZIrE,EAAKwrT,cACLuY,EAAgB/jU,EAAKwrT,YAAY,KAAOr6S,KAGxC7H,IAAQ2Y,EAAKO,MACblZ,EAAM2Y,EAAKQ,GACXywR,GAAU,GACH5pS,IAAQ2Y,EAAKS,QACpBpZ,EAAM2Y,EAAKU,KACXuwR,GAAU,IAGVA,IAAW6wB,EAgBf,GAZArnU,EAAEwiC,QAAU51B,GAEP4vM,GAAU5vM,IAAQ2Y,EAAKQ,IAAOnZ,IAAQ2Y,EAAKM,MAC5CviB,EAAK61T,cAAc71T,EAAKmE,SAGxBnE,EAAKm+M,SAAWykH,GAAgBt5T,IAAQ2Y,EAAKM,MAC7CviB,EAAKiuT,eACLjuT,EAAKwvT,OAAQ,EACbxvT,EAAKm+M,OAAS0kH,GAGdv5T,IAAQ2Y,EAAKK,OAAStiB,EAAK4vT,gBAAkB5vT,EAAKwrT,aAAe0Z,EACjExoU,EAAEwE,sBAWN,GAPIoI,IAAQ2Y,EAAKa,UAAaihT,IAC1B/jU,EAAKkgB,QAAQglT,GACbxoU,EAAEwE,oBAGNgyS,EAAUlzS,EAAK25E,MAAMj9E,IAErB,CAIA,IAAKwoU,IAAmBllU,EAAKwrT,YAAa,CACtC,IAAIhgT,EAAUxL,EAAK2tF,SAUnB,GARIrkF,IAAQ2Y,EAAKY,MACbqwR,GAAU,EACVlzS,EAAKu0T,cACEjrT,IAAQ2Y,EAAKW,MACpBswR,GAAU,EACVlzS,EAAKy0T,aAGLvhB,EAAS,CACT,GAAIlzS,EAAKmC,QAAQ,SAAU,CAAEiqB,SAAUpsB,EAAKmlU,oBAAoBnlU,EAAK2tF,UAAW5mD,KAAM/mC,EAAK2tF,WAEvF,YADA3tF,EAAK2tF,OAAOniF,GAIhBxL,EAAKy5E,QAAQz5E,EAAK2tF,UAAU,GAAMppD,MAAK,WAC9B2gS,GACDllU,EAAKg9G,WAGbtgH,EAAEwE,kBAILg4M,GAAWg6F,IAAWlzS,EAAKwrT,aAC5BxrT,EAAK0kU,YAIbU,WAAY,SAASzsS,EAAMwW,GACvB,IAAIqJ,EAAazgD,KAAKkH,QAAQu5C,WAE9B,OAAI7f,IAASh+B,GAAwB,OAATg+B,IAI5BA,GAAc,GAEV6f,IACA7f,EAAOA,EAAKtoB,eAGc,IAAvBsoB,EAAKjrB,QAAQyhC,KAGxBk2R,aAAc,SAASz/T,EAAM0/T,GACzB,IAAIC,EAAiBxtU,KAAKisU,uBAM1B,OAJIuB,IACA3/T,EAAO,CAAC2/T,GAAgBnwT,OAAOxP,IAG5BA,EAAKjH,MAAM2mU,GAAYlwT,OAAOxP,EAAKjH,MAAM,EAAG2mU,KAGvDE,YAAa,WACT,IAKIC,EACA9sS,EANA34B,EAAOjI,KACP6N,EAAO5F,EAAK6oB,WAAWkD,WACvB0wC,EAAa72D,EAAKrG,QAAUS,EAAKi1T,iBAAmB,EAAI,GACxDyQ,EA+mBZ,SAAuBv2R,EAAM4gM,GACzB,IAAK,IAAIpuO,EAAM,EAAGA,EAAMwtC,EAAK5vC,OAAQoC,IACjC,GAAIwtC,EAAKtsC,OAAOlB,KAASouO,EACrB,OAAO,EAGf,OAAO,EArnBY41F,CAAc3lU,EAAKmjU,MAAOnjU,EAAK4lU,OAC1C5mQ,EAAah/D,EAAKupE,cAKlBvK,GADgB,IAAhBA,EACa,EAGA6mQ,EADb7mQ,GAAc0mQ,EAAW,EAAI,EACWjpQ,GAG5C72D,EAAOA,EAAK+D,OAAS/D,EAAK+D,SAAW/D,EAAKjH,QAC1CiH,EAAO5F,EAAKqlU,aAAaz/T,EAAMo5D,GAE/B,IAAK,IAAIr9D,EAAM,EAAGA,EAAM86D,IACpB9jC,EAAO34B,EAAK6iS,MAAMj9R,EAAKjE,KAEnB+jU,IAAY1lU,EAAKolU,WAAWzsS,EAAM34B,EAAK4lU,UAEhC5lU,EAAKolU,WAAWzsS,EAAM34B,EAAKmjU,OALNxhU,KAUhCA,IAAQ86D,IACRgpQ,EAAiBzlU,EAAK2tF,SAEtB3tF,EAAKy5E,QAAQosP,EAAe7mQ,EAAar9D,EAAK86D,IAAal4B,MAAK,WAC5D,IAAIA,EAAO,WACFvkC,EAAKirF,MAAM5mF,WACZrE,EAAK62D,WAIT72D,EAAKmC,QAAQ,SAAU,CAAEiqB,SAAUpsB,EAAKmlU,oBAAoBnlU,EAAK2tF,UAAW5mD,KAAM/mC,EAAK2tF,WACvF3tF,EAAKy5E,QAAQgsP,GAAgBlhS,KAAKA,GAElCA,SAMhB0gS,UAAW,SAASvoU,GAChB,IAAIsD,EAAOjI,KAEX,GAAgB,IAAZ2E,EAAEg9E,OAAeh9E,EAAEwiC,UAAYxmC,EAAMupB,KAAKK,MAA9C,CAIA,IAAIytN,EAAYlmO,OAAOqc,aAAaxpB,EAAEopU,UAAYppU,EAAEwiC,SAEhDl/B,EAAKf,QAAQu5C,aACbu3L,EAAYA,EAAU1/N,eAGR,MAAd0/N,GACArzO,EAAEwE,iBAGNlB,EAAKmjU,OAASpzF,EACd/vO,EAAK4lU,MAAQ71F,EAEb/vO,EAAK0kU,YAGT30B,WAAY,SAASrzS,GACjB,IAAIuuF,EAAQlzF,KAAKkzF,MAEbvuF,EAAE0E,sBAAwBrJ,KAAKq1T,oBAInCniO,EAAM9mF,QAAUzL,EAAMqrB,KAAKknE,EAAMrnF,SAE7BqnF,EAAMrnF,QAAQQ,QAAQ,YAAY,KAClC6mF,EAAM9mF,QAAQmY,SAAS,sBACvBvkB,KAAKoM,QAAQmY,SAAS,gBAI9B6jR,OAAQ,WACJh4N,EAAOroE,GAAGqgS,OAAO79R,KAAKvK,MACtBA,KAAKkzF,MAAMvpF,IAAI,OAAQ3J,KAAKg4S,WAAWxuS,KAAKxJ,QAGhDq6T,iBAAkB,WACdjqP,EAAOroE,GAAGsyT,iBAAiB9vT,KAAKvK,MAChCA,KAAK4sU,wBAGTQ,oBAAqB,SAASvhU,GAC1B,OAAKA,GAAYA,EAAQ,GAIrBA,EAAQ,KAAO7L,KAAKm9T,YAAY,GACzBn9T,KAAKisU,uBAGTjsU,KAAK0yE,SAAS2qP,gBAAgBr9T,KAAK0yE,SAAS0qP,gBAAgBvxT,IAPxD,MAUfk2E,OAAQ,SAASp9E,GACb,IAAIsD,EAAOjI,KACPgvC,EAAOrqC,EAAEqqC,MAAQrsC,EAAEgC,EAAEg5E,eAEzBh5E,EAAEwE,iBAEElB,EAAKmC,QAAQ,SAAU,CAAEiqB,SAAUpsB,EAAKmlU,oBAAoBp+R,GAAOA,KAAMA,IACzE/mC,EAAKq9C,SAITr9C,EAAKowT,gBAAiB,EAEtBpwT,EAAKy5E,QAAQ1yC,GAAMxC,MAAK,WACpBvkC,EAAKg9G,QACLh9G,EAAK61T,cAAc71T,EAAKmE,cAIhC0xT,cAAe,SAASjyT,GACpB,IAAI8mM,EAASv5L,IACThN,EAAUpM,KAAKoM,QACfqnT,EAAczzT,KAAKyzT,YACnBua,EAAiBniU,IAAY4nT,EAAcrnT,EAAUqnT,EACrDmH,EAAer3T,EAAQkf,WAAalf,EAAQkb,OAASlb,EAAQs3T,YAAct3T,EAAQ8iB,UAEnFotS,GAAeA,EAAY,KAAO5nT,EAAQ,IAAM+uT,GAIhDnH,IAAgBua,EAAe,KAAOr7H,GAAU3yM,KAAK6rU,gBACrD7rU,KAAK6rU,cAAe,EACpB7rU,KAAK86T,UAAW,EAChB96T,KAAKmzT,SAAWtnT,EAAQzB,QAAQ,WAIxC2tT,cAAe,SAAS3gR,GACpB,GAAKA,EAAL,CAIA,IAAInvC,EAAOjI,KACMiI,EAAKf,QAAQu5C,aAG1BrJ,EAAOA,EAAK9+B,eAGhBrQ,EAAKy5E,SAAQ,SAASrtD,GAClB,OAAOpsB,EAAKolU,WAAWplU,EAAK6iS,MAAMz2Q,GAAW+iB,QAIrDwgR,YAAa,WACT,OAAO53T,KAAK4gC,QAGhB+rS,QAAS,WACL,IAAI1kU,EAAOjI,KACP8wB,EAAa7oB,EAAK6oB,WAItB,GAFAqJ,aAAalyB,EAAK4vT,gBAEd5vT,EAAKurT,mBACLvrT,EAAK4vT,eAAiB9+R,YAAW,WAC7B,IAAIrwB,EAAQT,EAAKwrT,YAAYvkS,MAEzBjnB,EAAKkjU,QAAUziU,IACfT,EAAKkjU,MAAQziU,EACbT,EAAK8zB,OAAOrzB,GACZT,EAAK6jU,sBAGT7jU,EAAK4vT,eAAiB,OACvB5vT,EAAKf,QAAQi+B,WACb,CAKH,GAJAl9B,EAAK4vT,eAAiB9+R,YAAW,WAC7B9wB,EAAKmjU,MAAQ,KACdnjU,EAAKf,QAAQi+B,QAEXl9B,EAAKyqE,SAASC,QAIf,YAHA7hD,EAAWq0C,QAAQ34B,MAAK,WACpBvkC,EAAKwlU,iBAKbxlU,EAAKwlU,gBAIb9P,KAAM,SAASl2B,GACX,IAAI55R,EAAM+vD,EAAOh0D,EACbV,EAAkC,mBAAdu+R,EACpBwmC,EAAmB/kU,EAA4BvG,IAAfA,EAAE8kS,GAYtC,GAVIznS,KAAKk9T,mBACoB,iBAAdz1B,EACHA,GAAa,IACbA,GAAa,GAEVwmC,EAAgB7hT,SAAS,wBAChCq7Q,GAAa,IAIjBv+R,EAAY,CAGZ,IAFA2E,EAAO7N,KAAK8wB,WAAWkD,WAElBpqB,EAAM,EAAGA,EAAMiE,EAAKrG,OAAQoC,IAC7B,GAAI69R,EAAU55R,EAAKjE,IAAO,CACtB69R,EAAY79R,EACZg0D,GAAQ,EACR,MAIHA,IACD6pO,GAAa,GAIrB,OAAOA,GAGX+0B,WAAY,WACJx8T,KAAKk9T,iBACLl9T,KAAK41F,OAAO51F,KAAKm9T,aAEjBn9T,KAAK0yE,SAAS+pP,cAItBC,UAAW,WACP18T,KAAKkuU,oBACLluU,KAAK0yE,SAASiqP,aAGlBC,UAAW,WACP,IAAI8D,EAUJ,OARI1gU,KAAKm9T,YAAY/wS,SAAS,YAC1BpsB,KAAKkuU,oBACLluU,KAAK0yE,SAAS+pP,aACdiE,EAAa,GAEbA,EAAa1gU,KAAK0yE,SAASmqP,YAGxB6D,GAGX5D,UAAW,WACP,IAAI4D,EAEJ,IAAI1gU,KAAKm9T,YAAY/wS,SAAS,WAU9B,OANAs0S,EAAa1gU,KAAK0yE,SAASqqP,YAEtB/8T,KAAK0yE,SAAS9sC,SAAY5lC,KAAKkH,QAAQwuD,SACxC11D,KAAK41F,OAAO51F,KAAKm9T,aAGduD,GAGXtH,WAAY,WACR,IAAIlyT,EAAUlH,KAAKkH,QACfwrE,EAAW1yE,KAAK0yE,SAChBy7P,EAAcz7P,EAAS9sC,QACvB7sB,EAAQ25D,EAAStsC,UAErBrtB,EAAQA,EAAMA,EAAMvR,OAAS,MAEf5E,GAAesE,EAAQ+uT,iBAAmBkY,IACpDp1T,EAAQ,GAGRA,IAAUnW,EACV8vE,EAAS9sC,MAAM7sB,IAEX7R,EAAQi2T,aAAiBj2T,EAAQwuD,SAA0C,aAA/BxuD,EAAQwuD,QAAQsvQ,WAK5DtyP,EAAS4mP,cAAc,IAJvBt5T,KAAK41F,OAAO51F,KAAKm9T,aACjBn9T,KAAK0hF,QAAQ1hF,KAAKm9T,aAClBn9T,KAAK0yE,SAASnsB,QAAQ5vB,UAAU,KAO5Cu3S,kBAAmB,SAASE,GACxBpuU,KAAKm9T,YAAYhxS,YAAY,WAAaiiT,GAAmB,KAAK98S,WAAW,OAGjFskE,OAAQ,SAAS6xM,GACb,IAAI/0N,EAAW1yE,KAAK0yE,SAChByqP,EAAcn9T,KAAKm9T,YAEvB,GAAI11B,IAAc7kS,EAOd,QANA6kS,EAAY/0N,EAAS9sC,UAEHu3R,EAAY/wS,SAAS,aACnCq7Q,EAAY01B,GAGT11B,EAGXznS,KAAKkuU,oBAELzmC,EAAYznS,KAAK29T,KAAKl2B,GAEtB/0N,EAAS9sC,MAAM6hQ,IAEI,IAAfA,IACA01B,EAAY54S,SAAS,WACTzB,KAAK,KAAM4vD,EAAS4sP,WAE5Bt/T,KAAKyzT,aACLzzT,KAAKyzT,YACAniS,WAAW,yBACXxO,KAAK,wBAAyB4vD,EAAS4sP,aAKxD59O,QAAS,SAAS+lN,EAAW4mC,GACzB,IAAIpmU,EAAOjI,KAIX,OAFAynS,EAAYx/R,EAAK01T,KAAKl2B,GAEfx/R,EAAKyqE,SAAStsC,OAAOqhQ,GAAWj7P,MAAK,WACnC6hS,GAAapmU,EAAKm+M,SAAWykH,IAC9B5iU,EAAKm+M,OAAS0kH,IAGC,IAAfrjC,GACAx/R,EAAKwkU,aAAa,UAK9BA,aAAc,SAASp4S,GACnB,IAAIpsB,EAAOjI,KACPm9T,EAAcl1T,EAAKf,QAAQi2T,YAC3BvzT,EAAM3B,EAAKyqE,SAAStsC,SAEpB19B,EAAQ,GACRk4B,EAAO,IAEXh3B,EAAMA,EAAIA,EAAIpC,OAAS,MACX5E,IACRgH,GAAO,GAGX5J,KAAKkuU,kBAAkB,eAEnB75S,GAAyB,IAAbA,GACZuM,EAAOvM,EACP3rB,EAAQT,EAAK4wT,WAAWxkS,GACpB8oS,IACAvzT,GAAO,IAEJuzT,IACPl1T,EAAK2tF,OAAO3tF,EAAKk1T,YAAY54S,SAAS,eAEtCqc,EAAO34B,EAAKwjU,mBAGR/iU,EADuB,iBAAhBy0T,EACC,GAEAl1T,EAAKq+M,OAAO62G,GAGxBvzT,EAAM,GAGV3B,EAAKupE,cAAgB5nE,EAEP,OAAVlB,IACAA,EAAQ,IAGZT,EAAKujU,cAAc5qS,GACnB34B,EAAK6tT,UAAUptT,EAAOkB,GAEtB3B,EAAK8yT,mBAGTuQ,QAAS,WACL,IACIp4O,EADOlzF,KACMkzF,MACbzwE,EAAWlf,EAAQkf,SACZywE,EAAMrnF,QAAQwsB,QAAQ,YAAYP,GAAG,GAEvCtwB,QAAUib,IACfywE,EAAMhsF,QAAQoqF,UAAUC,KAAK/qE,QAAW/D,EAASnC,SAAWmC,EAAShC,MAAS,SAAYgC,EAASvB,KAAOuB,EAASrC,GAAM,aAAe8yE,EAAMhsF,QAAQoqF,UAAUC,KAAK/qE,UAI7K6kT,MAAO,WACH,IAKIjsJ,EAAMkvJ,EALNrmU,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACfmiU,EAAW,0BACX5+S,EAAKhvB,EAAM8uB,OACXvoB,EAAUe,EAAKf,SAGnBk4K,EAAOhzK,EAAQ2pB,KAAKw4S,IAEV,KACND,EAAWx+T,EAAK02R,aAAa,yEAA0E,CACnGlvM,KAAM,iBACN7nF,KAAMvI,EAAQuI,KACdujB,SAAU9rB,EAAQ8rB,SAClBitH,MAAO,OACPtnI,QAAS,SAGbvM,EAAQ2tC,OAAO,aAAepqB,EAAf,6FAGVoqB,OAAOu0R,GACPv0R,OAAO9xC,EAAK4D,SAEjBuzK,EAAOhzK,EAAQ2pB,KAAKw4S,IAGxBtmU,EAAKm3K,KAAOA,EACZn3K,EAAK2jU,OAASx/T,EAAQ2pB,KAAK,mBAC3B9tB,EAAKm0T,WAAan0T,EAAK2jU,OAAO71S,KAAK,wBAGvCoiD,SAAU,WACN,IAGI/rE,EAHAnE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf2iU,EAAa3iU,EAAQ,IAGzBO,EAAUP,EAAQM,UAELI,GAAG,oBACZH,EAAUP,EAAQmgB,KAAK,YAAY7f,UAC3B,GAAGM,MAAMsR,QAAUywT,EAAW/hU,MAAMsR,QAC5C3R,EAAQ,GAAG2xC,MAAQywR,EAAWzwR,OAGlC91C,EAAKkrT,SAAWlrT,EAAKmE,QAAUA,EAC1BmY,SAAS,2BACTA,SAASiqT,EAAW9hT,WACpBP,YAAY,0BACZvf,IAAI,UAAW,IACfkW,KAAK,CACF2rT,UAAW5iU,EAAQiX,KAAK,aACxB4rT,aAAc,KACd5+S,KAAM,WACN,iBAAiB,IAGzBjkB,EAAQsB,OAAOmkB,WAAW,cAG9ButS,gBAAiB,SAAS1yT,GACtBnM,KAAKomC,OAAOj6B,EAAOzD,QAAU,GAAK,IAGtComT,aAAc,SAASnqT,GACnB3E,KAAKi5T,mBAEDj5T,KAAKoK,QApuCN,QAquCCzF,EAAEwE,kBAEFnJ,KAAKoM,QAAQ0W,KAAK,iBAAiB,GACnC9iB,KAAKwyS,GAAG1vR,KAAK,eAAe,KAIpCy8R,cAAe,SAAS56S,GAChB3E,KAAKoK,QA5uCL,SA6uCAzF,EAAEwE,kBAEFnJ,KAAKoM,QAAQ0W,KAAK,iBAAiB,GACnC9iB,KAAKwyS,GAAG1vR,KAAK,eAAe,KAIpCooT,eAAgB,WACZ,IAAIjjU,EAAOjI,KACP6P,EAAW5H,EAAKf,QAAQwkU,cAW5B,GALI77T,EAHCA,EAGUlP,EAAMkP,SAASA,GAFf,SAAUhC,GAAQ,OAAOigE,EAAO7lE,EAAK6iS,MAAMj9R,KAK1D5F,EAAKyjU,cAAgB77T,EAEjB5H,EAAKi1T,mBAAqBj1T,EAAKf,QAAQykU,oBACvC,IACI1jU,EAAKyjU,cAAczjU,EAAKgkU,wBAC1B,MAAOtnU,GACL,MAAM,IAAI8L,MAvwCK,sMA4wC3B+6T,cAAe,SAAS5qS,GACpB,IAAIvM,EAAW,KACXxkB,EAAW7P,KAAK0rU,cAChBiD,EAAkB3uU,KAAKyrU,mBACvBrsJ,EAAOp/K,KAAKo/K,KAEhB,GAAIx+I,IAASh+B,EACT,OAAOw8K,EAAKx+I,OAGZj+B,EAAEgF,cAAci5B,IAASA,aAAgByqB,EACzCh3B,EAAWuM,EACJ+tS,GAAmBA,IAAoB/tS,IAC9CvM,EAAWr0B,KAAKkH,QAAQi2T,aAGvB9oS,IACDA,EAAWr0B,KAAKosU,gBAAgBxrS,EAAM5gC,KAAK81T,cAG3C91T,KAAKk9T,mBACD7oS,IAAas6S,GAAmB3uU,KAAK8qS,MAAMz2Q,KAAcs6S,IACzD9+T,EAAW7P,KAAK2rU,oBAEwB,iBAA7B3rU,KAAKkH,QAAQi2T,aAA6Bn9T,KAAKkH,QAAQykU,sBAC9Dt3S,EAAWs6S,KAKvB,IAAIC,EAAc,WACd,MAAO,CACHz6S,SAAUirJ,EAAK7vJ,MACf1hB,KAAM,CAAE,CAAEwmB,SAAUA,MAI5Br0B,KAAK6wB,QAAQ,UAAW+9S,GAExB,IACIxvJ,EAAKtvK,KAAKD,EAASwkB,IACrB,MAAO1vB,GAELy6K,EAAKtvK,KAAK,IAGd9P,KAAK6wB,QAAQ,UAAW+9S,IAG5Bh8P,WAAY,SAASlqE,EAAOk4B,GACnBl4B,GAAUk4B,IACXA,EAAO5gC,KAAKyrU,oBAGhBzrU,KAAK81T,UAAUptT,GACf1I,KAAKwrU,cAAc5qS,GAEnB5gC,KAAKo3T,KAAOp3T,KAAK81T,YACjB91T,KAAKy4T,UAAYz4T,KAAKwxE,cAEtBxxE,KAAK0yE,SAAS0mI,SAAS1wM,GAEvB1I,KAAKy7T,cAAgB,KACrBz7T,KAAKwsU,cAAe,GAGxBJ,gBAAiB,SAASxrS,EAAMl4B,GAC5B,IAAI6pE,EAAgBvyE,KAAKkH,QAAQqrE,cAC7Bl+C,EAAW,GAUf,OARIk+C,GACA7xE,EAAO2zB,EAAUk+C,EAAc3nE,MAAM,KAAMg2B,GAC3ClgC,EAAO2zB,EAAUr0B,KAAKkH,QAAQupE,eAAe7lE,MAAM,KAAMlC,GACzD2rB,EAAW,IAAIg3B,EAAiBh3B,IAEhCA,EAAWuM,EAGRvM,KAIf,SAAS3zB,EAAOqmB,EAAU6H,EAAQlmB,GAK9B,IAJA,IAEIuc,EAFArb,EAAM,EACNyH,EAAYud,EAAOpnB,OAAS,EAGzBoC,EAAMyH,IAAazH,GACtBqb,EAAQ2J,EAAOhlB,MAEAmd,IACXA,EAAS9B,GAAS,IAGtB8B,EAAWA,EAAS9B,GAGxB8B,EAAS6H,EAAOvd,IAAc3I,EAGlC,SAASolU,EAAe/0T,EAAOvR,GAI3B,OAHIuR,GAASvR,IACTuR,GAASvR,GAENuR,EAYX4Q,EAAGqN,OAAO46R,GAEVjxT,EAAM+xB,cAAcyY,eAAe,eAAgB,aAEnDxqC,EAAM+xB,cAAcgY,eAAe,eAAgB,CAAC,CAChDvb,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aA/5CnE,CAi6CGvc,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBxZ,EAAM7T,KAAK6T,IACX23T,EAAe,gBACfpiC,EAAW,aACXl8M,EAAS,cACTu+O,EAAa,eACbhyR,EAAS,SAETiyR,EAAW,WACXC,EAAc,gBACdC,EAAmC,gJACnCC,EAAkCD,EAAiCE,WAAW,MAAO,WACrFC,EAA0BF,EAAgCtkU,MAAM,KAAK0P,KAAI,SAAUmL,GAAY,OAAOA,EAAW,QAAS5a,KAAK,KAC/HwkU,EAAgB,sDAAwDJ,EAAmC,IAAMC,EAAkC,IAAME,EAA0B,mHACnLhsT,EAAOziB,EAAM4C,QAAQye,QAAQoB,KAC7BksT,GAAyB,EACzBvsU,EAASJ,EAAEI,QAEX,SAAUJ,GAEFA,EAAE,2CACDsmB,GAAG,QAAS,MAAM,WACfqmT,GAAyB,KAE5Bv5S,KAAK,QACL3rB,QAAQ,SACRuB,MACAstB,MATT,CAWGt2B,GAEP,IAAI4sU,EAAa7+S,EAAO3tB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS3E,GACpB,IACIgvC,EACAs5R,EAFAvnU,EAAOjI,KAIX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAK05M,SAAWh/M,EAAE,oEAClBsF,EAAKwnU,YAAc,KACnBxnU,EAAK4D,QAAQ0Y,SAASuqT,GAEtB7mU,EAAKkzB,cAAgBlzB,EAAKf,QAAQi0B,cAElC+a,EAAWjuC,EAAKf,QAAQgvC,SACxBs5R,EAAevnU,EAAKf,QAAQsoU,aAE5BvnU,EAAKq2E,WAAa,IAAI39E,EAAM++E,WAAWz3E,EAAK4D,QAAS,CACjDxM,QAAQ,EACRkhF,gBAAgB,EAChBtqD,QAAUq5S,EAAkD,GAAzB,kBAA+BrnU,EAAKf,QAAQ+uB,OAC/E6vL,IAAK79M,EAAKo3E,KAAK71E,KAAKvB,GACpB84E,YAAa7qC,EAAW,OAAS,gBAGjCA,IACIs5R,GACAvnU,EAAKq2E,WACA90E,KAAK,QAASvB,EAAK23E,OAAOp2E,KAAKvB,IAC/BuB,KAAK,OAAQvB,EAAK25E,MAAMp4E,KAAKvB,IAC7BuB,KAAK,MAAOvB,EAAK65E,KAAKt4E,KAAKvB,IAEpCA,EAAKq2E,WACD90E,KAAK,SAAUvB,EAAKy5E,QAAQl4E,KAAKvB,MAI7CoC,OAAQ,CAACyyC,EAAQiyR,GAEjB7nU,QAAS,CACL9E,KAAM,aACN6zB,OAAQ,KACRy5S,eAAgBL,EAChBn5R,UAAU,EACVs5R,cAAc,EACdr0S,cAAex4B,EAAEQ,KACjBwsU,kBAAkB,EAClBC,eAAe,GAGnBC,WAAY,SAASvoU,GACjB,IACIsC,EADAuqB,EAAWn0B,KAAK6L,QACXrE,EAAS2sB,EAAS3sB,OAAQ+O,GAAS,EAI5C,IAFAjP,EAASA,EAAO,GAEXsC,EAAM,EAAGA,EAAMpC,EAAQoC,IACxB,GAAIuqB,EAASvqB,KAAStC,EAAQ,CAC1BiP,GAAS,EACT,MAIR,OAAOA,GAGX8oE,KAAM,SAAS16E,GACX,IAMI8sE,EANAnqE,EAAS3E,EAAEgC,EAAE2C,QACbW,EAAOjI,KACPwuF,EAAU7pF,EAAEya,MAAMovE,SAAW7pF,EAAEya,MAAM2pQ,QACrC7yO,EAAWjuC,EAAKf,QAAQgvC,SACxB9O,EAAW8O,GAAYvxC,EAAEya,MAAMgoB,SAC/B0oS,EAAgB7nU,EAAKf,QAAQ4oU,eAAiBrjC,EAE9CsjC,EAAYprU,EAAEya,MAAMuiE,MACpBquP,EAAarrU,EAAEya,MAAMy5O,QAGpB5wP,EAAK4nU,WAAWvoU,EAAO+E,QAAQ,IAAMyiU,KAAgBiB,GAA0B,GAAbA,GAAkBC,GAA4B,GAAdA,GAIlGhwU,KAAKiwU,gBAAgBtrU,EAAEya,MAAM9X,UAIlCmqE,EAAWnqE,EAAO8kB,SAAS0jT,GAE3BxoU,EAASA,EAAO2F,IAAIhF,EAAKkzB,cAAc7zB,IAElC4uC,EAUG9O,GACKn/B,EAAKioU,YAAeC,EAAgBloU,EAAKioU,WAAY5oU,KACtDW,EAAKmoU,YAAYnoU,EAAKooU,iBAAkB/oU,EAAQ3C,GAChDsD,EAAKqoU,QAAQxzR,EAAQn4C,IAEzBsD,EAAKioU,WAAa5oU,IAElBW,EAAKioU,WAAa,KACdz+P,GAAY+c,GACZvmF,EAAKsoU,UAAUjpU,GACfW,EAAKqoU,QAAQxzR,EAAQn4C,IACd6pF,GACPvmF,EAAKS,MAAMpB,EAAQ3C,GACnBsD,EAAKqoU,QAAQxzR,EAAQn4C,MACb8sE,GAAYxpE,EAAKS,QAAQlB,OAAS,KAC1CS,EAAKguD,QACLhuD,EAAKS,MAAMpB,EAAQ3C,GACnBsD,EAAKqoU,QAAQxzR,EAAQn4C,IAGzBsD,EAAKwnU,YAAcxnU,EAAKq6E,YAAch7E,GA7BtCmqE,GAAY+c,GACZvmF,EAAKsoU,UAAUjpU,GACfW,EAAKqoU,QAAQxzR,EAAQn4C,IACb8sE,IACRxpE,EAAKguD,QACLhuD,EAAKS,MAAMpB,EAAQ3C,GACnBsD,EAAKqoU,QAAQxzR,EAAQn4C,MA4BjCi7E,OAAQ,SAASj7E,GACb,IAII8mC,EAJAxjC,EAAOjI,KACPsH,EAAS3E,EAAEgC,EAAE2C,QACbwoU,EAAgB7nU,EAAKf,QAAQ4oU,eAAiBrjC,EAC9Ch7N,EAAWnqE,EAAO8kB,SAAS0jT,GAE3BthP,EAAU7pF,EAAEya,MAAMovE,SAAW7pF,EAAEya,MAAM2pQ,QAEpC/oR,KAAKiwU,gBAAgBtrU,EAAEya,MAAM9X,UAIlCW,EAAKq6E,YAAch7E,EAGdW,EAAK4nU,WAAWvoU,EAAO+E,QAAQ,IAAMyiU,KAKtC7mU,EAAKf,QAAQspU,YACbvoU,EAAK+rI,OAAS/rI,EAAK4D,QAAQkqB,KAAK9tB,EAAKf,QAAQ+uB,SAE7CwV,EAAiBnkC,EAAO+E,QAAQpE,EAAK4D,SACrC5D,EAAK+rI,OAASvoG,EAAe1V,KAAK9tB,EAAKf,QAAQ+uB,SAGnDtxB,EAAE2F,OAAOg3E,UAETr5E,EAAK05M,SACAx0K,SAAS/9B,SAAS6O,MAClBrR,IAAI,CACDif,KAAMlnB,EAAES,EAAEq/B,OAAS,EACnBrgB,IAAKzf,EAAER,EAAEsgC,OAAS,EAClBz3B,MAAO,EACPL,OAAQ,IAGX6hF,GACDvmF,EAAKguD,QAGT3uD,EAASA,EAAO2F,IAAIhF,EAAKkzB,cAAc7zB,IACnCmqE,IACAxpE,EAAKwoU,eAAenpU,GAAQ,GACxBknF,GACAlnF,EAAOid,SAASyqT,KA9BpB/mU,EAAKq2E,WAAW9jD,WAmCxBonD,MAAO,SAASj9E,GACZ,IACImI,EAAW,CACP+e,KAAMlnB,EAAES,EAAE44E,cAAgBr5E,EAAES,EAAEmd,SAAW5d,EAAES,EAAEmd,SAAW5d,EAAES,EAAE44E,cAC5D55D,IAAKzf,EAAER,EAAE65E,cAAgBr5E,EAAER,EAAEoe,SAAW5d,EAAER,EAAEoe,SAAW5d,EAAER,EAAE65E,cAC3DhxE,MAAOkK,EAAIvS,EAAES,EAAEg5E,cACfzxE,OAAQuK,EAAIvS,EAAER,EAAEi6E,eALbp+E,KAQN2hN,SAAS/0M,IAAIE,GARP9M,KAUN0wU,uBAAuB5jU,EAAWnI,EAAEya,MAAMovE,SAAW7pF,EAAEya,MAAM2pQ,SAElEpkR,EAAEwE,kBAGN24E,KAAM,SAASn9E,GACX,IAAIsD,EAAOjI,KACX2wU,EAAoBhwU,EAAMmiB,KAAK,kBAC/BuqC,EAAM1sD,EAAM8uB,OAEZxnB,EAAK05M,SAAS5qL,SAEd9uB,EAAKsoU,UAAUtoU,EAAK4D,QACfkqB,KAAK9tB,EAAKf,QAAQ+uB,OAAS,IAAM+4S,IACjC7iT,YAAY6iT,GAGjB,IAAI1nU,EAASW,EAAK4D,QAAQkqB,KAAK9tB,EAAKf,QAAQ+uB,OAAS,IAAMs6D,GAG3D,GAFAjpF,EAASA,EAAO2F,IAAIhF,EAAKkzB,cAAc7zB,IAEnCW,EAAKf,QAAQ0oU,cACb,IAAK,IAAIroU,EAAI,EAAGA,EAAIU,EAAK2oU,iBAAiBppU,OAAQD,IAC9C5E,EAAEsF,EAAK2oU,iBAAiBrpU,IAAIub,KAAK6tT,EAAmBtjR,GAIvDplD,EAAKioU,YAAeC,EAAgBloU,EAAKioU,WAAY5oU,KACtDW,EAAKS,MAAMpB,EAAQ3C,GACnBsD,EAAKqoU,QAAQxzR,EAAQn4C,IAEzBsD,EAAKioU,WAAa5oU,EAClBW,EAAKwnU,YAAcxnU,EAAKq6E,YACxBr6E,EAAK+rI,OAAS,MAGlB08L,uBAAwB,SAAS5jU,EAAU0hF,GACvC,IAAI5kF,EACApC,EAIA0zB,EACA21S,EAJAvpU,EAAStH,KAAKsiF,YAAY,GAC1BluD,EAAQp0B,KAAKg0I,OACb87L,EAAgB9vU,KAAKkH,QAAQ4oU,eAAiBrjC,EAMlD,IAFAzsS,KAAK4wU,iBAAmB,GAEnBhnU,EAAM,EAAGpC,EAAS4sB,EAAM5sB,OAAQoC,EAAMpC,EAAQoC,IAE/CsxB,GADA21S,EAAWz8S,EAAM0D,GAAGluB,IACDqD,IAAIjN,KAAKm7B,cAAc01S,IAEtC5/O,EAAU4/O,EAAU/jU,IAChB+jU,EAASzkT,SAAS0jT,GACdthP,GAAWlnF,IAAWupU,EAAS,IAC/B31S,EAAQ/O,YAAY2jT,GAAevrT,SAASyqT,GAExC6B,EAASzkT,SAASmkE,IAAYsgP,EAASzkT,SAAS4iT,IAAiBhvU,KAAK8wU,2BAA2B51S,EAASpuB,IAClHouB,EAAQ3W,SAASgsE,GAErBvwF,KAAK4wU,iBAAiBjvU,KAAKu5B,EAAQ,KAE/B21S,EAASzkT,SAASmkE,GAClBr1D,EAAQ/O,YAAYokE,GACb/B,GAAWqiP,EAASzkT,SAAS4iT,IACpC9zS,EAAQ/O,YAAY6iT,GAAazqT,SAASurT,IAM1DgB,2BAA4B,SAASjlU,EAASklU,GAC1C,IAAK/wU,KAAKkH,QAAQyoU,iBACd,OAAO,EAGX,IAEIqB,EAFAC,EAAiBjxU,KAAK4wU,iBACtBM,EAAWrlU,EAAQ,GAAGurH,wBAEtBnmC,GAAY,EAEZ16D,EADQ51B,EAAM4C,QAAQ+a,MAAMzS,GACR,QAAU,OAC9BslU,EAAW,GAEfJ,EAAYjlT,MAAQilT,EAAYllT,KAAOklT,EAAY/jU,MACnD+jU,EAAYhlT,OAASglT,EAAY3sT,IAAM2sT,EAAYpkU,OAEnD,IAAK,IAAIpF,EAAI,EAAGA,EAAI0pU,EAAezpU,OAAQD,IAEvC,GAAIg7J,EAAS2uK,EADbF,EAAoBC,EAAe1pU,GAAG6vH,yBACK,CAGvC,GAFA+5M,EAAS56S,GAA2B,SAAdA,EAAuBy6S,EAAkBllT,MAAQklT,EAAkBnlT,MACzFqlT,EAAWnuU,EAAO,GAAImuU,EAAUC,IACnBtlT,KAAOqlT,EAASplT,MACzB,OAAO,EAEXmlE,GAAasxE,EAAS2uK,EAAUH,GAGxC,OAAO9/O,GAGXvoF,MAAO,SAASwmB,GACZ,IAAIjnB,EAAOjI,KACPoxU,EAAgBnpU,EAAKwoU,eAAejnU,KAAKvB,GAE7C,IAAIinB,EAQJ,OAAOjnB,EAAK4D,QAAQkqB,KAAK9tB,EAAKf,QAAQ+uB,OAAS,KAAOhuB,EAAKf,QAAQ4oU,eAAiBrjC,IAPhFv9Q,EAAIlsB,MAAK,WACLouU,EAAcpxU,UAS1BqxU,eAAgB,WACZ,IACIV,EAAoBhwU,EAAMmiB,KAAK,kBAC/BxI,EAAM,GAaV,OAfWta,KAIN6L,QAAQkqB,KAAK,IAAM46S,EAAoB,KAAK3tU,MAAK,SAASgrB,EAAG2kB,GAC9D,IAAI2+R,EAAU3uU,EAAEgwC,GAAM7vB,KAAK6tT,GACvBY,EAAcj3T,EAAIg3T,GAEjBC,IACDA,EAAcj3T,EAAIg3T,GAAW,IAGjCC,EAAY5vU,KAAKgB,EAAEgwC,OAGhBr4B,GAGXk3T,oBAAqB,WACjB,IAAIvpU,EAAOjI,KACP2wU,EAAoBhwU,EAAMmiB,KAAK,kBAEnC,OAAO7a,EAAK4D,QAAQkqB,KAAK9tB,EAAKf,QAAQ+uB,OAAS,KAAOhuB,EAAKf,QAAQ4oU,eAAiBrjC,GAAY,SAAWkkC,EAAoB,MAAMh9Q,UAAUr5C,KAAI,SAASq4B,GACxJ,OAAOhwC,EAAEgwC,OAIjB09R,eAAgB,WACZ,IACI5+P,EADAxpE,EAAOjI,KAGX,OAAyB,OAArBiI,EAAKwnU,YACExnU,EAAKwnU,aAGhBh+P,EAAWxpE,EAAKS,SACAlB,OAAS,EACjBiqE,EAAS,GACTxpE,EAAK4D,QAAQkqB,KAAK9tB,EAAKf,QAAQ+uB,QAAQ,IAGnDw6S,eAAgB,SAAS5kU,EAAS4lU,GAC9B,IAAIZ,EAAWluU,EAAEkJ,GACbikU,EAAgB9vU,KAAKkH,QAAQ4oU,eAAiBrjC,EAC9CxsO,GAAewxQ,GAAiBzxU,KAAKswU,QAAQ,SAAU,CAAEzkU,QAASA,IAEtEglU,EAAS1kT,YAAYokE,GAChBtwB,IACA4wQ,EAAStsT,SAASurT,GAEf9vU,KAAKkH,QAAQwqU,MACbb,EAAS/tT,KAAK+rT,GAAc,KAKxCyB,QAAS,SAASluU,EAAM+0B,GAEpB,OADAA,EAAOA,GAAQ,GACRn3B,KAAKoK,QAAQhI,EAAM+0B,IAG9Bo5S,UAAW,SAAS1kU,GAChB,IAAI7L,KAAKoK,QAAQ2kU,EAAU,CAAEljU,QAASA,IAAtC,CAIA,IAAI8kU,EAAoBhwU,EAAMmiB,KAAK,kBAQnC,OANAjX,EAAQsgB,YAAYnsB,KAAKkH,QAAQ4oU,eAAiBrjC,GAAUn7Q,WAAWq/S,GAEnE3wU,KAAKkH,QAAQwqU,MACb7lU,EAAQiX,KAAK+rT,GAAc,GAGxBhjU,IAGX61E,QAAS,SAAS/8E,GACV3E,KAAKiwU,gBAAgBtrU,EAAEya,MAAM9X,WACxB8b,GAASA,IAASzgB,EAAEhC,EAAMwY,kBAAkB5M,GAAGvM,KAAKkH,QAAQwoU,kBAC7D/qU,EAAEwE,kBAKd8mU,gBAAiB,SAAS3oU,GACtB,OAAI3E,EAAE2E,GAAQiF,GAAGvM,KAAKkH,QAAQwoU,kBAC1B1vU,KAAKs+E,WAAW9jD,SAChBx6B,KAAKsiF,YAAc,MACZ,IAMfqvP,iBAAkB,WACd3xU,KAAKs+E,WAAW9jD,UAGpBy7B,MAAO,WACH,IAAI7hC,EAAQp0B,KAAK6L,QAAQkqB,KAAK/1B,KAAKkH,QAAQ+uB,OAAS,KAAOj2B,KAAKkH,QAAQ4oU,eAAiBrjC,IACzFzsS,KAAKuwU,UAAUn8S,IAGnBg8S,YAAa,SAAS96T,EAAO3J,GACzB,IACI/B,EACA2uC,EACAnkB,EAHAnsB,EAAOjI,KA4BX,IAvBAiI,EAAKguD,QAEDhuD,EAAK4D,QAAQrE,OAAS,IACtB4sB,EAAQnsB,EAAKf,QAAQ0qU,mBAGpBx9S,GAAUA,EAAM5sB,SACjB4sB,EAAQnsB,EAAK4D,QAAQkqB,KAAK9tB,EAAKf,QAAQ+uB,UAG3C3gB,EAAQ3S,EAAE0yB,QAAQ1yB,EAAE2S,GAAO,GAAI8e,KAC/BzoB,EAAMhJ,EAAE0yB,QAAQ1yB,EAAEgJ,GAAK,GAAIyoB,MAGvBmkB,EAAMjjC,EACNA,EAAQ3J,EACRA,EAAM4sC,GAGLtwC,EAAKf,QAAQspU,cACd7kU,GAAO1D,EAAK4D,QAAQrE,OAAS,GAG5BoC,EAAM0L,EAAO1L,GAAO+B,EAAK/B,IAC1B3B,EAAKwoU,eAAer8S,EAAMxqB,IAAM,IAIxC5H,QAAS,WACL,IAAIiG,EAAOjI,KAEX0wB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAK4D,QAAQotB,IArdZ,oBAudDhxB,EAAKq2E,WAAWt8E,UAEhBiG,EAAK05M,SAAW15M,EAAKwnU,YAAcxnU,EAAK4D,QAAU5D,EAAKq2E,WAAa,QAa5E,SAAS6xP,EAAgBtkU,EAASgmU,GAE9B,GAAIhmU,EAAQrE,SAAWqqU,EAAUrqU,OAC7B,OAAO,EAGX,IAAK,IAAID,EAAI,EAAGA,EAAIsE,EAAQrE,OAAQD,IAChC,GAAIsE,EAAQtE,KAAOsqU,EAAUtqU,GACzB,OAAO,EAIf,OAAO,EAGX,SAAS0pF,EAAUplF,EAASiB,GACxB,IAAKjB,EAAQU,GAAG,YACZ,OAAO,EAGX,IAAIulU,EAAkBnxU,EAAMusB,UAAUrhB,GAClCigB,EAAQhf,EAAS+e,KAAO/e,EAASE,MACjC+e,EAASjf,EAASsX,IAAMtX,EAASH,OAKrC,OAHAmlU,EAAgBhmT,MAAQgmT,EAAgBjmT,KAAOlrB,EAAMqL,YAAYH,GACjEimU,EAAgB/lT,OAAS+lT,EAAgB1tT,IAAMzjB,EAAMuL,aAAaL,KAEzDimU,EAAgBjmT,KAAOC,GAC5BgmT,EAAgBhmT,MAAQhf,EAAS+e,MACjCimT,EAAgB1tT,IAAM2H,GACtB+lT,EAAgB/lT,OAASjf,EAASsX,KAG1C,SAASm+I,EAASwvK,EAAWC,GACzB,QAASD,EAAUjmT,OAASkmT,EAAWnmT,MACnCkmT,EAAUlmT,MAAQmmT,EAAWlmT,OAC7BimT,EAAUhmT,QAAUimT,EAAW5tT,KAC/B2tT,EAAU3tT,KAAO4tT,EAAWjmT,QA9CpCwjT,EAAWt6S,aAAe,SAASm6J,GAC/B,IAAI6iJ,EAAiB7iJ,EAAWy1D,MAAQz1D,EACpC8iJ,EAA0C,iBAAnBD,GAA+BA,EAAe35T,cACzE,MAAO,CACH49B,SAAUg8R,GAAiBA,EAAcv8T,QAAQ,aAAe,EAChE0zD,KAAM6oQ,GAAiBA,EAAcv8T,QAAQ,SAAW,IA4ChEhV,EAAMgpB,GAAGqN,OAAOu4S,GAvhBpB,CAyhBGzuU,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf4C,EAAU5C,EAAM4C,QAChBomB,EAAKhpB,EAAMgpB,GACX+G,EAAS/G,EAAG+G,OACZxG,EAAOvpB,EAAMupB,KACb8K,EAAQr0B,EAAM4c,UACduwD,EAASntE,EAAMitB,WACflR,EAAY/b,EAAM0V,KAAKqG,UACvB2lB,EAAa1hC,EAAM0V,KAAKgsB,WACxBktS,EAAa5uU,EAAMgpB,GAAG4lT,WACtB4C,EAAgBxxU,EAAMuY,eACtBrJ,EAAWlP,EAAMkP,SACjB2D,EAAa7S,EAAM6S,WACnBmL,EAAche,EAAM4C,QAAQob,YAC5ByzT,EAAmBzzT,EAAcA,EAAY/R,IAAM,mBAAqB,GACxEylU,EAAexiU,GAAS,SAAUhC,GAAQ,MAAQ,cAAkBA,EAAa,SAAI,mEAA+EA,EAAO,GAAI,UAAcA,EAAe,WAAI,KAASA,EAAU,MAAI,eACvOykU,EAAoBziU,GAAS,WAAc,MAAO,0FAClD0iU,EAAyB1iU,GAAS,WAAc,MAAO,0EACvD2iU,EAAqB3iU,GAAS,SAAUhC,GAAQ,MAAQ,mCAAwCA,EAAe,WAAI,WACnH9B,EAAapL,EAAMqL,YACnBwf,EAAK,iBACLs0M,EAAQ,QAAUt0M,EAElBkjL,EAAK,KAGL+jI,EAAQ,UACR7uU,EAAQ,QACR8uU,EAAU,UACV51R,EAAS,SACT61R,EAAW,WACX3kQ,EAAQ,QAER46N,EAAW,aACX8iB,EAAU,UACVknB,EAAa,gBAGbC,EAAe,kBACfC,EAAoB,wDAEpBrmC,EAAW,aAEX5F,EAAQ,QAER+H,EAAarrS,EAAQkb,MAAQ,aAAe,aAC5Cs0T,EAAqBxvU,EAAQkb,MAAQ,aAAe+M,EAAK,aAAeA,EACxEqjR,EAAatrS,EAAQkb,MAAQ,WAAa+M,EAAK,aAAeA,EAAK,aAAeA,EAElF2T,EAAa,MACb6zS,EAAY,aACZC,EAAY,aACZtsC,EAAgB,gBAChBqrB,EAAgB,gBAChBvrT,EAAa,aACb1D,EAASJ,EAAEI,OACX46J,EAAOvvJ,KACPmqB,EAAQ,CACJ9yB,MAAO,EACPwW,KAAM,EACNi3T,OAAQ,EACRC,QAAS,GAEbC,EAAiB,gCAiBjBC,EAAW3iT,EAAO3tB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAiBwB,EAAbT,EAAOjI,MACXkH,EAAUA,GAAW,IACb8pB,cAAgB9pB,EAAQ8pB,eAAiB,UACjDN,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC2E,EAAU5D,EAAKmE,QAAUnE,EAAK4D,SAC9B3E,EAAUe,EAAKf,SAEPmnB,IAAM1tB,EAAMktB,SAAS3mB,EAAQmnB,KAErCpmB,EAAKf,QAAQosU,aAAeC,GAAgBtrU,EAAKf,QAAQosU,cAEzDrrU,EAAK0qS,aAEL1qS,EAAK48T,cAEL58T,EAAK6nT,UAEL7nT,EAAKurU,eAEDvrU,EAAKf,QAAQusU,UACbxrU,EAAK4nT,QAAQ5nT,EAAKwwE,SAElBxwE,EAAKyrU,OAASzrU,EAAK4D,QAAQkqB,KAAK,yBAChC9tB,EAAKyyT,WAGJ7uT,EACA0Y,SAAS,wBAA0Brd,EAAQs7B,WAAa,iBAAmB,KAC3EvZ,GAAG8pT,EAAqB,IAAMlkC,EAAYgkC,EAAcc,IACxD1qT,GA1FI,wBA0FW,kBAAmBhhB,EAAK25E,MAAMp4E,KAAKvB,IAClDghB,GAAG62M,EAAQ,YAAa+yG,GAAc,SAASluU,GAC5C,IAAIy7N,EAAOz7N,EAAEg5E,cAAc5zB,WACvBrhD,EAAQkrU,GAAaxzG,IAEM,GAA3BA,EAAKjoM,KAAKxiB,QAAQ,MAClBhR,EAAEwE,iBAGiB,SAAnBlB,EAAKuxD,MAAMp3D,MAAmB6F,EAAKf,QAAQosU,aAAa5qU,IAGrC,SAAnBT,EAAKuxD,MAAMp3D,MAAyC,UAAtB8E,EAAQkoL,YAClCnnL,EAAK85E,OAAOp/E,EAAEy9N,OAGzBn3M,GAAG,UAAYuC,EAAI,8BAA8B,WAC9CvjB,EAAK4rU,YAAuC,IAA5B5rU,EAAKf,QAAQ4sU,eAEhChxT,KAAK4rL,GAENzmM,EAAKgrE,wBAA0BhrE,EAAKf,QAAQs7B,YAC5C32B,EAAQod,GAAG62M,EA9FE,yBA8FyB,SAASn7N,GACvC,IAAIuF,EAAQvH,EAAEgC,EAAEg5E,eAAetxE,QAAQ,MAAM0pB,KAAK+8S,GAAmB5oU,QACjEi4B,EAAOl6B,EAAKmnL,WAAWqgJ,YAAc9sU,EAAEgC,EAAEg5E,eAAetxE,QAAQ,MAAM0pB,KAAK+8S,GAAmB3wS,OAClGl6B,EAAKmnL,WAAWghJ,YAAYlmU,EAAOi4B,GACnCl6B,EAAKmnL,WAAWhlL,QAAQ0yC,EAAQ,CAAE19B,MAAOza,IACzCsD,EAAKk6I,SAAWl6I,EAAKq+M,OAASstH,GAAazxS,EAAKpM,KAAK,MACrD9tB,EAAK8rU,YAAY9rU,EAAKk6I,aAIlClkG,GAAU/2C,GACVwB,EAAQssB,EAAM9tB,EAAQwB,MAAOxB,EAAQwJ,OAAQxJ,EAAQoM,SACrDrL,EAAK+rU,aAAe,GAEpB/rU,EAAK84J,OAASxoI,EAAMrxB,EAAQoO,OAE5BrN,EAAKk6I,SAAW,IAAIwb,GAAMs2K,GAAcvrU,EAAOxB,EAAQiP,IAAKjP,EAAQ0R,MAEpE3Q,EAAKisU,eAAiB,WAGlB,GAFAjsU,EAAKq5M,SAAU,EAEXr5M,EAAKksU,MAAM/nT,SAASw8Q,GAAW,CAC/B,IAAIwrC,EAAcnsU,EAAKuxD,MAAM66Q,aAAaC,MAC1CrsU,EAAKksU,MAAQlsU,EAAKssU,YAAYH,GAGlCnsU,EAAKksU,MAAM5vT,SAASmnS,IAGxBzjT,EAAKusU,kBAAoB,WACrBvsU,EAAKq5M,SAAU,EACXr5M,EAAKksU,OACLlsU,EAAKksU,MAAMhoT,YAAYu/R,IAI/BzjT,EAAKS,MAAMA,GAEPT,EAAKgrE,wBAA0B/rE,EAAQutU,YAAYjtU,OAAS,GAC5DS,EAAKwsU,YAAYvtU,EAAQutU,aAE7B9zU,EAAM6zB,OAAOvsB,IAGjBf,QAAS,CACL9E,KAAM,WACNsG,MAAO,KACPyN,IAAK,IAAIwnJ,EAAK,KAAM,EAAG,GACvB/kJ,IAAK,IAAI+kJ,EAAK,KAAM,GAAI,IACxBoc,MAAO,GACPu5J,aAAc,KACdjlT,IAAK,GACL/a,QAAS,GACTmlE,OAAQ,GACR/nE,OAAQ,GACRjL,MAAO,GACP+8B,YAAY,EACZ4sJ,WAAY,SACZqlJ,YAAa,GACbn/T,MAAO1R,EACP68J,MAAO78J,EACP6L,KAAM,SACN6hF,UAAW,CACPh/C,WAAY,CACR9rB,QAASisT,EACT38T,SAAS,EACT4Q,SAAU,IACV4xB,QAAS,GAEblG,SAAU,CACN5rB,QAAS,SACTE,SAAU,MAGlBuD,SAAU,CACNyqT,iBAAkB,GAClBt0S,MAAO,QACPu0S,WAAY,eACZC,YAAa,CACTnvU,MAAO,YACPwW,KAAM,cACNi3T,OAAQ,iBAGhBliT,cAAe,WAGnB3mB,OAAQ,CACJyyC,EACA61R,GAGJ5hT,eAAgB,CACZ8jT,QAAW,CACP7uR,OAAQ,CACJn2C,SArKc,SAAUof,GAChC,IAAI6lT,EAAa7lT,EAAI6lT,WACjBrlU,EAAOwf,EAAIxf,KACX6O,EAAQ2Q,EAAI3Q,MAEhB,MAAO,0EAAkFw2T,EAAa,6DAAoErlU,EAAO,iEAA1K,yBAA+Q9O,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAO,cAAgBh5E,EAAQ,QAAU,QAAU84E,UAAW,kBAAsB,sDAA4D09O,EAAa,iBAAsBn0U,EAAM8uB,OAAS,uDAA6DhgB,EAAO,uGAA8GqlU,EAAa,6DAAoErlU,EAAO,kEAA3uB,qBAA60B9O,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAO,cAAgBh5E,EAAQ,OAAS,SAAW84E,UAAW,kBAAsB,yBAkKp7Bq8O,WAAW,EACXsB,cAAe,YACf1Q,eAAgB,8BAEpB2Q,OAAU,CACNhvR,OAAQ,CACJn2C,SAtKa,SAAUof,GAC/B,IAAI6lT,EAAa7lT,EAAI6lT,WACjBrlU,EAAOwf,EAAIxf,KACXwa,EAAWgF,EAAIhF,SACf3L,EAAQ2Q,EAAI3Q,MAEhB,MAAO,iEAAqEw2T,EAAa,iBAAsBn0U,EAAM8uB,OAAS,sCAA0ChgB,EAAO,8PAAyQqlU,EAAa,KAAOx2T,EAAQ,OAAS,QAAU,wCAA2C7O,EAAO,uFAA2F9O,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAO,YAAch5E,EAAQ,QAAU,QAAU84E,UAAW,kBAAsB,sEAA0E09O,EAAa,iDAAsDrlU,EAAO,wGAA8G9O,EAAMitB,WAAW3D,EAASmW,OAAU,6EAAiF00S,EAAa,KAAOx2T,EAAQ,OAAS,QAAU,wCAA2C7O,EAAO,uFAA2F9O,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAO,YAAch5E,EAAQ,OAAS,SAAW84E,UAAW,kBAAsB,qEAkKv2Cq8O,WAAW,EACXsB,cAAe,YACf1Q,eAAgB,kDAIxB9yS,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KAEXi+C,GAAU/2C,GAEVA,EAAQosU,aAAeC,GAAgBrsU,EAAQosU,cAC/CrrU,EAAKgtU,qBAED/tU,EAAQ+iB,WACR/iB,EAAQ+iB,SAAWtnB,EAAEI,OAAO,IAAI,EAAMkF,EAAKf,QAAQ+iB,SAAU/iB,EAAQ+iB,WAGzEyG,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAEhCe,EAAK0qS,aAEL1qS,EAAK48T,cAEL58T,EAAKurU,eAEDvrU,EAAKf,QAAQusU,UACbxrU,EAAK4nT,QAAQ5nT,EAAKwwE,SAElBxwE,EAAK4D,QAAQkqB,KAAK,aAAa5oB,OAC/BlF,EAAKyyT,WAETzyT,EAAK84J,OAASxoI,EAAMtwB,EAAKf,QAAQoO,OAEjCrN,EAAK61C,WAED52C,EAAQs7B,YACRv6B,EAAK4D,QAAQ0Y,SAAS,kBAI9BviB,QAAS,WACL,IAAIiG,EAAOjI,KACXogC,EAAQn4B,EAAKyrU,OAEbzrU,EAAK4D,QAAQotB,IAAIzN,GACjBvjB,EAAKitU,OAAOj8S,IAAIzN,GAChBvjB,EAAc,WAAEgxB,IAAIzN,GACpBvjB,EAAc,WAAEgxB,IAAIzN,GACpBvjB,EAAKgtU,qBACLt0U,EAAMqB,QAAQiG,EAAKktU,QAEf/0S,GACAz/B,EAAMqB,QAAQo+B,EAAMnH,IAAIzN,IAG5BkF,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,IAG3BwL,QAAS,WACL,OAAOzT,KAAKmiJ,UAGhBzqH,KAAM,WACF,OAAO13B,KAAKw5D,OAGhB5zB,MAAO,SAASrnB,GACZA,EAAQA,GAASve,KAAKm1U,OACtBn1U,KAAKo1U,WAAW72T,GAChBA,EAAMnU,QAAQ,UAGlB+L,IAAK,SAASzN,GACV,OAAO1I,KAAKq1U,QAjSV,MAiSuB3sU,IAG7BkQ,IAAK,SAASlQ,GACV,OAAO1I,KAAKq1U,QAAQ,MAAO3sU,IAG/B4sU,eAAgB,WACZt1U,KAAKs/C,UAAU0zR,GAAY,IAG/BuC,iBAAkB,WACdv1U,KAAKs/C,UAAU2zR,EAAW,IAG9BuC,WAAY,WACR,IAAIvtU,EAAOjI,KACX+Y,EAAQ9Q,EAAK84J,OAET94J,EAAKitU,OAAO9oT,SAASw8Q,IAIzB3gS,EAAK61C,SAAS71C,EAAKk6I,WAAYppI,IAGnC08T,aAAc,SAAS/sU,GACnB,IAAIT,EAAOjI,KACX+Y,EAAQ9Q,EAAK84J,OACbN,EAAQx4J,EAAKf,QAAQu5J,MAEhB/3J,IAIDqQ,IAAUwf,EAAMkoI,GAQpBx4J,EAAK61C,SAASp1C,IAASqQ,GAPd28T,GAAYztU,EAAKq+M,OAAQr+M,EAAKk6I,WAAcuzL,GAAYztU,EAAKq+M,OAAQ59M,KACtET,EAAKS,MAAMA,GACXT,EAAKmC,QAAQ0yC,MAQzBgB,SAAU,SAASp1C,EAAOgvB,GACtBA,EAAO5uB,MAAM4uB,GAAQa,EAAMb,GAAQA,EAEnC,IAWI0G,EAAIu3S,EAAa5mR,EACjB72B,EAZAjwB,EAAOjI,KACPkH,EAAUe,EAAKf,QACfoM,EAAUpM,EAAQoM,QAClB6C,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACdmlC,EAAQ91C,EAAKitU,OACb/2S,EAAOl2B,EAAKktU,OACZ9hQ,EAAMprE,EAAK2tU,UACX/qS,EAAe5iC,EAAKk6I,SACpB0zL,EAASntU,IAAUA,GAASmiC,EAC5BuH,EAAW1a,IAAS90B,GAAe80B,IAASzvB,EAAK84J,OAGjD+0K,EAAc7tU,EAAK4D,QAAQspC,SAAS,oBAiCxC,GA/BKzsC,IACDA,EAAQmiC,GAGZ5iC,EAAKk6I,SAAWz5I,EAAQ,IAAIi1J,GAAMs2K,GAAcvrU,EAAOyN,EAAKyC,IAExD8e,IAAS90B,EACT80B,EAAOzvB,EAAK84J,OAEZ94J,EAAK84J,OAASrpI,EAGlBzvB,EAAKuxD,MAAQm8Q,EAAcvgU,EAASmjB,MAAMb,GAC1Cq3B,EAAU4mR,EAAY5mR,QAEtB72B,EAAWR,IAASa,EAAa,QACjCwlB,EAAM/1B,YAAY4gR,EAAU1wQ,GAAUpV,KAAK6jR,EAAezuQ,GAE1DA,EAAW62B,EAAQrmD,EAAOyN,GAAO,EACjClO,EAAc,WAAE+f,YAAY4gR,EAAU1wQ,GAAUpV,KAAK6jR,EAAezuQ,GAEpEA,EAAW62B,EAAQrmD,EAAOkQ,IAAQ,EAClC3Q,EAAc,WAAE+f,YAAY4gR,EAAU1wQ,GAAUpV,KAAK6jR,EAAezuQ,GAEhEiG,GAAQk1C,GAAOA,EAAIxlE,KAAK,eACxBwlE,EAAI5rD,WAAU,GAAM,GACpB0W,EAAK1W,WAAU,GAAM,IAGzBxf,EAAK2tU,UAAYz3S,GAEZA,GAAQl2B,EAAK8tU,YAAa,CAC3Bh4R,EAAMjuC,KAAK,+BAAiC6lU,EAAY53R,MAAMr1C,EAAOyN,EAAKyC,EAAKtF,GAAW,WAEtFrL,EAAKf,QAAQ+iB,SAAS2qT,aAAe3sU,EAAKuxD,MAAMp3D,OAASswU,EACzD30R,EAAMj7B,KAAK,QAASgrD,EAAO7lE,EAAKf,QAAQ+iB,SAAS0qT,WAAa1sU,EAAKf,QAAQ+iB,SAAS2qT,YAAY3sU,EAAKuxD,MAAMp3D,QAE3G27C,EAAMzsB,WAAW,SAGrBrpB,EAAKktU,OAAS/2S,EAAKz7B,EAAEgzU,EAAYpvR,QAAQxjD,EAAO,CAC5CoT,IAAKA,EACLyC,IAAKA,EACLvC,KAAM3N,EACN2lB,IAAKnnB,EAAQmnB,IACb0rJ,MAAO7yK,EAAQ6yK,MACfrpK,OAAQxJ,EAAQwJ,OAChBslU,YAAY,EACZ1iU,QAASA,EACTggU,aAAcpsU,EAAQosU,aACtB2C,oBAAqB/uU,EAAQs7B,WAC7BvY,SAAU/iB,EAAQ+iB,SAClBo6S,eAAgBp8T,EAAKf,QAAQm9T,gBAC9Bp8T,EAAK0tU,EAAYvzU,SAEpB6F,EAAKihS,QAELgtC,GAAwB93S,EAAIu3S,EAAYvzU,MACxC,IAAIK,EAAU07B,GAAQA,EAAKtwB,KAAK,WAAauwB,EAAGvwB,KAAK,SACrD5F,EAAKkuU,SAAS,CACVh4S,KAAMA,EACNC,GAAIA,EACJgU,SAAUA,EACVyjS,OAAQA,EACRpzU,QAASA,IAGbqzU,EAAY3pT,YAAY,yFACxB2pT,EAAYvxT,SAAS,cAAgBoxT,EAAYvzU,KAAO,QAExD6F,EAAKmC,QAAQuoU,GAEb1qU,EAAK2tF,OAAOltF,GAGZgvB,IAASa,EAAMrxB,EAAQu5J,QAAUx4J,EAAK+rU,aAAaxsU,OAAS,GAC5DS,EAAKmuU,gCAGuB,WAA5BnuU,EAAKf,QAAQkoL,YACT13J,IAASa,EAAMrxB,EAAQu5J,QAAUx4J,EAAKq+M,SAAWr+M,EAAKf,QAAQosU,aAAarrU,EAAKq+M,SAChFr+M,EAAKouU,YAAYpuU,EAAKq+M,QAI9Br+M,EAAK8rU,YAAYrrU,IAEZy1B,GAAQl2B,EAAKksU,OACdlsU,EAAKksU,MAAMhoT,YAAYu/R,GAG3BzjT,EAAK8tU,aAAc,GAGvBtB,YAAa,SAAS16J,GAClB,IACIu8J,EACAC,EAFAtuU,EAAOjI,KAIX,GAAI+5K,IAAUn3K,EACV,OAAOqF,EAAK+rU,aAGhBuC,EAAcx8J,EACTz/J,KAAI,SAASjE,GAAQ,OAAOA,EAAKpN,aACjCgtB,QAAO,SAAS5f,EAAMvJ,EAAU0N,GAC7B,OAAOA,EAAM7E,QAAQU,KAAUvJ,KAElCwN,KAAI,SAASojB,GAAQ,OAAO,IAAItvB,KAAKsvB,MAE1C44S,EAAqB3zU,EAAEu7B,KAAKq4S,GAAa,SAAS7tU,GAC9C,GAAIA,EACA,OAAQT,EAAKuuU,eAAe,IAAIpoU,KAAK1F,EAAM+T,SAAS,EAAG,EAAG,EAAG,OAAU/T,KAG/ET,EAAK+rU,aAAesC,EAAmB9uU,OAAS,EAAI8uU,EAA6C,IAAvBC,EAAY/uU,OAAe+uU,EAActuU,EAAK+rU,aACxH/rU,EAAKmuU,iCAGT1tU,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACPqzE,EAAMprE,EAAKuxD,MACX9hC,EAAOzvB,EAAKuxD,MAEhB,GAAI9wD,IAAU9F,EACV,OAAOqF,EAAKq+M,OAIhB,IADA59M,EAAQT,EAAKuuU,eAAe9tU,KACfT,EAAKgrE,uBAAwB,CACtC,IAAI58D,EAAO,IAAIjI,MAAM1F,GACrB2N,EAAKoG,SAAS,EAAG,EAAG,EAAG,GACvBxU,EAAK+rU,aAAe,CAAC39T,GACrBpO,EAAKmnL,WAAWqgJ,YAAc,KAE9Bp8P,GAAiB,OAAV3qE,GAAkBT,EAAKksU,MAC9BlsU,EAAKksU,MAAMhoT,YAAYsgR,IAEvBxkS,EAAK8tU,aAAertU,GAASgvB,GAA+C,IAAvCA,EAAKq3B,QAAQrmD,EAAOT,EAAKk6I,UAC9Dl6I,EAAK61C,SAASp1C,KAItB4V,MAAO,WACH,OAAO3d,EAAM4C,QAAQ+a,MAAMte,KAAKoM,UAGpC88R,MAAO,WACH,IAAI3qR,EAAQve,KAAKm1U,OAEjB52T,EAAMuE,KAAK,kBAAmB9iB,KAAKk1U,OAAOpyT,KAAK,OAEvB,UAApB9iB,KAAKw5D,MAAMp3D,MAAgD,aAA5BpC,KAAKkH,QAAQkoL,YAC5C7wK,EAAMuE,KAAK,uBAAwB,SAI3C0zT,eAAgB,SAAS9tU,GACrB,IAAIT,EAAOjI,KACPkH,EAAUe,EAAKf,QACfiP,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IAsBlB,OApBc,OAAVlQ,IACAT,EAAKk6I,SAAWs0L,GAAWxuU,EAAKk6I,SAASvrI,cAAe3O,EAAKk6I,SAASxrI,WAAY1O,EAAKk6I,SAAS1rI,YAKtF,QAFd/N,EAAQssB,EAAMtsB,EAAOxB,EAAQwJ,OAAQxJ,EAAQoM,YAKpCojU,GAFLhuU,EAAQ,IAAIi1J,GAAMj1J,GAEIyN,EAAKyC,KACvBlQ,EAAQ,OAIF,OAAVA,GAAmBT,EAAKf,QAAQosU,aAAa,IAAIllU,MAAM1F,IAEhDT,EAAKq+M,SAAW1jN,IACvBqF,EAAKq+M,OAAS,MAFdr+M,EAAKq+M,OAAS59M,EAKXT,EAAKq+M,QAGhB8vH,8BAA+B,WAC3B,IAAInuU,EAAOjI,KACN22U,EAAgB,GACrBh0U,EAAEK,KAAKiF,EAAK+rU,cAAc,SAASj7T,EAAOrQ,GACtCiuU,EAAch2U,EAAMyU,SAASmjB,MAAM,GAAG87S,aAAa3rU,IAAUA,KAEjET,EAAKmnL,WAAWn5H,QACf,IAAImT,EAAQnhE,EAAKktU,OACbp/S,KAAK88S,GACL58S,QAAO,SAASld,EAAOlN,GACpB,OAAO8qU,EAAch0U,EAAEkJ,EAAQk+C,YAAYjnC,KAAKniB,EAAMmiB,KAAKkrD,QAE/D5E,EAAM5hE,OAAS,GACfS,EAAKmnL,WAAWqhJ,eAAernQ,GAAO,IAI9C6J,qBAAsB,WAElB,MAAmC,aADxBjzE,KACCkH,QAAQkoL,YAGxBy1I,YAAa,WACT,IAAI58T,EAAOjI,KACX,GAAKiI,EAAKgrE,uBAAV,CAIA,IAAIm8G,EAAannL,EAAKf,QAAQkoL,WAC9BwnJ,EAAoBrH,EAAWt6S,aAAam6J,GAE5CnnL,EAAKmnL,WAAa,IAAImgJ,EAAWtnU,EAAKmE,QAAS,CAC3CslU,MAAM,EAENhC,eAAgB,wNAChBx5R,SAAU0gS,EAAkB1gS,SAC5BjgB,OAAQ,uBAAyB68S,EACjC30R,OAAQl2C,EAAK4+S,UAAUr9S,KAAKvB,GAC5BkzB,cAAelzB,EAAK4uU,iBAAiBrtU,KAAKvB,OAIlD4uU,iBAAkB,SAASvvU,GACvB,IAAIW,EAAOjI,KAEPiI,EAAKmnL,WAAWloL,QAAQgvC,UAAY5uC,EAAOiF,GAAGumU,KAC9C7qU,EAAKk6I,SAAWyxL,GAAatsU,EAAOyuB,KAAK,MACzC9tB,EAAK8rU,YAAY9rU,EAAKk6I,YAK9B0kK,UAAW,SAASliT,GAChB,IAAIsD,EAAOjI,KACP8tK,EAAYnpK,EACQ4qU,EAAWt6S,aAAahtB,EAAKf,QAAQkoL,YAEtCl5I,UAUnB43H,EAAU1uJ,MAAMovE,SAAWs/E,EAAU1uJ,MAAM2pQ,QACvCpmR,EAAEmrK,EAAU1uJ,MAAMu+D,eAAepxE,GAAGumU,GACpC7qU,EAAK6uU,iBAAiBn0U,EAAEmrK,EAAU1uJ,MAAMu+D,iBAGxC11E,EAAK8uU,iBAAiBjE,GAAmB9vU,MAAK,SAAS+V,EAAOlN,GAC1D,IAAInD,EAAQkrU,GAAajxU,EAAEkJ,GAASkqB,KAAK,MACzC9tB,EAAKi5T,UAAUx4T,MAEnBT,EAAK+uU,4BAGJlpK,EAAU1uJ,MAAMgoB,SACrBn/B,EAAKgvU,gBAAgBhvU,EAAKksU,OAErBxxU,EAAEmrK,EAAU1uJ,MAAMu+D,eAAepxE,GAAGsmU,GACzC5qU,EAAKS,MAAMkrU,GAAajxU,EAAEmrK,EAAU1uJ,MAAMu+D,eAAe5nD,KAAK,QAG9D9tB,EAAK+rU,aAAe,GACpB/rU,EAAK+uU,4BAER/uU,EAAKmC,QAAQ0yC,IA/BNn6C,EAAEmrK,EAAU1uJ,MAAMu+D,eAAepxE,GAAG,QAAU5J,EAAEmrK,EAAU1uJ,MAAMu+D,eAAevxD,SAAS,cACxFzpB,EAAEmrK,EAAU1uJ,MAAMu+D,eAAep5D,SAAS,cAG1Ctc,EAAK85E,OAAOp/E,EAAEmrK,EAAU1uJ,MAAMu+D,eAAe5nD,KAAK,OA8B9Dk/S,mBAAoB,WAChB,IAAIhtU,EAAOjI,KAEPiI,EAAKmnL,aACLnnL,EAAKmnL,WAAWptL,UAChBiG,EAAKmnL,WAAa,OAK1B0nJ,iBAAkB,SAASI,GACvB,IACI7gU,EAAOu9T,GAAasD,EAAYnhT,KAAK,MACjCmhT,EAAY9qT,SAAS,cAFlBpsB,KAGEg0U,aAAaryU,KAAK0U,GAHpBrW,KAMEkhU,UAAU7qT,IAK3B4gU,gBAAiB,SAASE,EAAYh7R,GAClC,IAGIi7R,EAHAnvU,EAAOjI,KACPq3U,EAAWl7R,GAAay3R,GAAa3rU,EAAKmnL,WAAW1mL,QAAQwB,QAAQ6rB,KAAK,MAC1E0iJ,EAASm7J,GAAauD,EAAWphT,KAAK,MAGtC9tB,EAAKmnL,WAAWqgJ,aAAexnU,EAAKq+M,OACpC+wH,EAAWpvU,EAAKmnL,WAAWqgJ,YAAcmE,GAAa3rU,EAAKmnL,WAAWqgJ,YAAY15S,KAAK,MAAQ,IAAI3nB,MAAMnG,EAAKq+M,QAE9Gr+M,EAAKmnL,WAAWqgJ,YAActzR,EAAYl0C,EAAKssU,YAAYtsU,EAAKuxD,MAAM66Q,aAAal4R,GAAY22R,GAAqB7qU,EAAKmnL,WAAW1mL,QAAQwB,QAGhJjC,EAAK+rU,aAAe,GACpBoD,EAAiBE,GAAoBD,EAAU5+J,GAC/C8+J,GAAetvU,EAAK+rU,aAAcoD,EAAgBC,EAAUpvU,EAAKf,QAAQosU,cAEzErrU,EAAKmuU,iCAGTW,iBAAkB,SAAStxT,GAEvB,OADWzlB,KACCm1U,OAAOp/S,KAAKtQ,IAG5BuxT,yBAA0B,WACtB,IAAI/uU,EAAOjI,KACXiI,EAAKmnL,WAAW1mL,QAAQ1F,MAAK,SAAS+V,EAAOi2B,GACzC,IAAI34B,EAAOu9T,GAAajxU,EAAEqsC,EAAK+a,aAC1B9hD,EAAKf,QAAQosU,aAAaj9T,IAC3BpO,EAAK+rU,aAAaryU,KAAK0U,OAKlC6qT,UAAW,SAAS7qT,GACjB,IACKmhU,EADMx3U,KACkBg0U,aAAa15T,IAAIhI,QAAQqD,SAASU,IACtC,GAArBmhU,GAFOx3U,KAGFg0U,aAAaxpU,OAAOgtU,EAAkB,IAInDC,YAAa,SAASphU,GAClB,IACIqhU,EAAkB9D,GADX5zU,KAC6B+2U,iBAAiBjE,GAAmB5oU,QAAQ6rB,KAAK,MAGzF,OAAQ1f,IAFau9T,GAFV5zU,KAE4B+2U,iBAAiBjE,GAAmB3wS,OAAOpM,KAAK,QAEnD1f,IAASqhU,GAGjDC,eAAgB,SAAS9sS,EAAc+sS,GACnC,IAGI7+T,EAHA9Q,EAAOjI,KACP63U,EAAa5vU,EAAKf,QAAQosU,aAI9B,MAAuB,SAAnBrrU,EAAKuxD,MAAMp3D,MACHy1U,EAAWhtS,IAEnB9xB,EAAQ9Q,EAAKmE,QAAQ2pB,KAAK,YAAehd,QAClC9Q,EAAKmE,QAAQ2pB,KAAK,iBAAiB+B,GAAG/e,EAAQ6+T,GACzCrrU,GAAGumU,KAAuB+E,EAAWhtS,KAIzD+2C,MAAO,SAASj9E,GACZ,IAUI+D,EAAOovU,EAAS1gT,EAAQgjB,EAVxBnyC,EAAOjI,KACPkH,EAAUe,EAAKf,QACfqK,EAAM5M,EAAEwiC,QACRzP,EAAOzvB,EAAKuxD,MACZzgD,EAAQ9Q,EAAK84J,OACb5qJ,EAAMlO,EAAKf,QAAQiP,IACnByC,EAAM3Q,EAAKf,QAAQ0R,IACnBiyB,EAAe,IAAI8yH,GAAM11J,EAAKk6I,UAC9B7jI,EAAQrW,EAAKqW,QACbu5T,EAAa5vU,EAAKf,QAAQosU,aAiC9B,GA9BI3uU,EAAE2C,SAAWW,EAAKktU,OAAO,KACzBltU,EAAKq5M,SAAU,GAGf/vM,GAAO2Y,EAAKS,QAAUrM,GAAS/M,GAAO2Y,EAAKO,MAAQnM,GACnD5V,EAAQ,EACRovU,GAAU,GACHvmU,GAAO2Y,EAAKO,OAASnM,GAAS/M,GAAO2Y,EAAKS,OAASrM,GAC1D5V,GAAS,EACTovU,GAAU,GACHvmU,GAAO2Y,EAAKQ,IACnBhiB,EAAkB,IAAVqQ,GAAe,GAAK,EAC5B++T,GAAU,GACHvmU,GAAO2Y,EAAKU,MACnBliB,EAAkB,IAAVqQ,EAAc,EAAI,EAC1B++T,GAAU,GACHvmU,GAAO2Y,EAAKa,UACnBriB,EAAQ,EACRovU,GAAU,GACHvmU,GAAO2Y,EAAKY,MAAQvZ,GAAO2Y,EAAKW,KAEvCuvB,EAAO1iB,EADPN,EAAS7lB,GAAO2Y,EAAKY,KAAO,QAAU,QAClB+f,IACpBA,EAAe,IAAI8yH,EAAKvjH,EAAKxjC,cAAewjC,EAAKzjC,WAAYyjC,EAAK3jC,UAAWo0B,EAAah0B,WAAYg0B,EAAa/zB,aAAc+zB,EAAa9zB,aAAc8zB,EAAa7zB,oBAC5J2F,YAAYy9B,EAAKxjC,eAC9BkhU,GAAU,GACK,KAARvmU,IACPtJ,EAAK8vU,YAAYpzU,GACjBmzU,GAAU,GAGVnzU,EAAE6pF,SAAW7pF,EAAEokR,SACf,GAAIx3Q,GAAO2Y,EAAKS,QAAUrM,GAAS/M,GAAO2Y,EAAKO,MAAQnM,EACnDrW,EAAKstU,mBACLuC,GAAU,OACP,GAAIvmU,GAAO2Y,EAAKO,OAASnM,GAAS/M,GAAO2Y,EAAKS,OAASrM,EAC1DrW,EAAKqtU,iBACLwC,GAAU,OACP,GAAIvmU,GAAO2Y,EAAKQ,GACnBziB,EAAKutU,aACLsC,GAAU,OACP,GAAIvmU,GAAO2Y,EAAKU,KACnB3iB,EAAK85E,OAAOp/E,EAAEsF,EAAKksU,MAAM,GAAGpqR,aAC5B+tR,GAAU,OAEP,IAAKvmU,GAAO2Y,EAAKK,OAAShZ,GAAO2Y,EAAKa,WAAa9iB,EAAKgrE,uBAAwB,CACnFhrE,EAAK+vU,yBAAyBrzU,GAE9B,IAAIszU,EAAcrE,GAAajxU,EAAEsF,EAAKksU,MAAM,IAAIp+S,KAAK,MACrD9tB,EAAK8rU,YAAYkE,SAGdtzU,EAAEyiC,UACL1+B,IAAU9F,GAAew0B,KACpBA,GACDM,EAAK4H,QAAQuL,EAAcniC,GAG1BguU,GAAU7rS,EAAc10B,EAAKyC,KAC9BiyB,EAAeopS,GAAcppS,EAAc3jC,EAAQiP,IAAKjP,EAAQ0R,MAGhEi/T,EAAWhtS,KACXA,EAAe5iC,EAAKiwU,iBAAiBrtS,EAAcniC,IAGvDyN,EAAMsgU,GAAWtgU,EAAIS,cAAeT,EAAIQ,WAAYR,EAAIM,WACpDxO,EAAKgrE,uBACLhrE,EAAKkwU,wBAAwBxzU,EAAGkmC,GAGhC5iC,EAAK2tF,OAAO/qD,KAIhBt5B,GAAO2Y,EAAKK,OAAShZ,GAAO2Y,EAAKa,UAChB,SAAb2M,EAAKt1B,MAAmB6F,EAAKgrE,wBAC7BhrE,EAAKS,MAAMkrU,GAAajxU,EAAEsF,EAAKksU,MAAMp+S,KAAK,QAC1C9tB,EAAKmnL,WAAWqgJ,YAAc9sU,EAAEsF,EAAKksU,MAAM,IAC3ClsU,EAAKmC,QAAQ0yC,IAGb70C,EAAK85E,OAAOp/E,EAAEsF,EAAKksU,MAAM,GAAGpqR,aAEhC+tR,GAAU,GACHvmU,GAAO2Y,EAAKc,QACnB8sT,GAAU,EACV7vU,EAAKqtU,kBACE/jU,GAAO2Y,EAAKe,WACnB6sT,GAAU,EACV7vU,EAAKstU,qBAGL7sU,GAAS0uB,KACJA,GACDM,EAAK4H,QAAQuL,EAAcniC,GAK1BguU,GAAU7rS,EAFf10B,EAAMsgU,GAAWtgU,EAAIS,cAAeT,EAAIQ,WAAYR,EAAIM,WAEtBmC,KAC9BiyB,EAAeopS,GAAcppS,EAAc3jC,EAAQiP,IAAKjP,EAAQ0R,MAG/D3Q,EAAK0vU,eAAe9sS,EAAcniC,KACnCmiC,EAAe5iC,EAAKiwU,iBAAiBrtS,EAAcniC,IAGnDT,EAAKgrE,uBACAhrE,EAAKwvU,YAAY5sS,IAIlB5iC,EAAKk6I,SAAWt3G,EAChB5iC,EAAK8rU,YAAYlpS,IAJjB5iC,EAAK61C,SAASjT,GAQlB5iC,EAAK2tF,OAAO/qD,KASxB,OAJIitS,GACAnzU,EAAEwE,iBAGClB,EAAKk6I,UAGhBg2L,wBAAyB,SAAS/4T,EAAOyrB,GACrC,IACIwsS,EACAD,EAFAnvU,EAAOjI,KAIX,IAAKiI,EAAKwvU,YAAY5sS,GAYlB,OAXA5iC,EAAK+rU,aAAe,GAGpBoD,EAAiBE,GADjBD,EAAWpvU,EAAKmnL,WAAWqgJ,YAAcmE,GAAa3rU,EAAKmnL,WAAWqgJ,YAAY15S,KAAK,MAAQ8U,EAChD,IAAIz8B,MAAMy8B,IAEzD0sS,GAAetvU,EAAK+rU,aAAcoD,EAAgBC,EAAUpvU,EAAKf,QAAQosU,cAEzErrU,EAAK61C,SAASjT,GACd5iC,EAAKk6I,SAAWt3G,EAChB5iC,EAAKmnL,WAAWqgJ,YAAcxnU,EAAKmnL,WAAWqgJ,aAAexnU,EAAKssU,YAAYtsU,EAAKuxD,MAAM66Q,aAAaxpS,GAAeioS,QACrH7qU,EAAKmC,QAAQ0yC,GAGjB70C,EAAKmnL,WAAWloL,QAAQ+uB,OAAShuB,EAAKmE,QAAQ2pB,KAAK,SAASvuB,OAAS,IAAMqjC,GAAgB5iC,EAAKk6I,SAAW,uBAAyB2wL,EAAoB,uBAAyBA,EACjL7qU,EAAK8rU,YAAYlpS,GACjB5iC,EAAKk6I,SAAWt3G,EAEhB5iC,EAAKgvU,gBAAgBhvU,EAAKssU,YAAYtsU,EAAKuxD,MAAM66Q,aAAaxpS,GAAeioS,GAAoBjoS,GAEjG5iC,EAAKmC,QAAQ0yC,GAEb70C,EAAKmnL,WAAWloL,QAAQ+uB,OAAS,uBAAyB68S,GAG9DkF,yBAA0B,SAAS54T,GAC/B,IAAInX,EAAOjI,KAEXof,EAAMu+D,cAAgB11E,EAAKksU,MAAM,GACjClsU,EAAKmnL,WAAWqgJ,YAAc9sU,EAAEsF,EAAKksU,MAAM,IAEvCxxU,EAAEsF,EAAKksU,MAAM,IAAI/nT,SAASqgR,GAC1BxkS,EAAKmnL,WAAWmhJ,UAAU5tU,EAAEsF,EAAKksU,MAAM,KAGvClsU,EAAKmnL,WAAW1mL,MAAM/F,EAAEsF,EAAKksU,MAAM,KAEvClsU,EAAKmnL,WAAWhlL,QAAQ0yC,EAAQ,CAAE19B,MAAOA,KAG7C84T,iBAAkB,SAASrtS,EAAcniC,GACrC,IAAIT,EAAOjI,KACXk4B,GAAW,EACXR,EAAOzvB,EAAKuxD,MACZrjD,EAAMlO,EAAKf,QAAQiP,IACnByC,EAAM3Q,EAAKf,QAAQ0R,IACnBi/T,EAAa5vU,EAAKf,QAAQosU,aAC1B8E,EAAkB,IAAIhqU,KAAKy8B,EAAa5hC,WAIxC,IAFAyuB,EAAK4H,QAAQ84S,GAAkB1vU,GAExBwvB,GAAU,CAGb,GAFAR,EAAK4H,QAAQuL,EAAcniC,IAEtBguU,GAAU7rS,EAAc10B,EAAKyC,GAAM,CACpCiyB,EAAeutS,EACf,MAEJlgT,EAAW2/S,EAAWhtS,GAE1B,OAAOA,GAGXsrS,SAAU,SAASjvU,GACf,IAAIe,EAAOjI,KACPm+B,EAAOj3B,EAAQi3B,KACfC,EAAKl3B,EAAQk3B,GACbu0K,EAAS1qM,EAAKq5M,QACdw0H,EAAc7tU,EAAK4D,QAAQspC,SAAS,oBAEnChX,EAGMA,EAAKhyB,SAAS0B,KAAK,cAC1BswB,EAAKlF,IAAIzN,GACT2S,EAAKhyB,SAASsb,WAAU,GAAM,GAAMsP,SACpCoH,EAAKpH,SAEL++S,EAAY/7R,OAAO3b,GACnBn2B,EAAK4rU,WAAWlhI,KACRx0K,EAAK5xB,GAAG,cAA0C,IAA3BtE,EAAKf,QAAQoqF,WAAuBpqF,EAAQzE,SAC3E27B,EAAGs4Q,YAAYv4Q,GACfA,EAAKlF,IAAIzN,GAAIuL,SAEb9uB,EAAK4rU,WAAWlhI,IAEhB1qM,EAAKf,EAAQkrC,SAAW,YAAc,eAAejU,EAAMC,EAAIl3B,EAAQ2uU,SAfvEC,EAAY/7R,OAAO3b,GACnBn2B,EAAKmtU,WAAWh3S,KAkBxBi6S,YAAa,SAASl6S,EAAMC,EAAIy3S,GAC5B,IAAI5tU,EAAOjI,KACP2yM,EAAS1qM,EAAKq5M,QACdhvK,EAAarqC,EAAKf,QAAQoqF,UAAUh/C,WACpC9rB,EAAU8rB,EAAW9rB,QACrB8xT,EAAYvsU,EAAWoyB,GACvBwa,EAAU5sC,EAAWoyB,GAAM,GAAQm6S,EAEnC9xT,IAAsC,GAA3BA,EAAQ7Q,QAAQ88T,KAC3Bt0S,EAAKlxB,IAAImxB,GAAIxxB,IAAI,CAAEI,MAAOsrU,IAE1Bn6S,EAAKnS,KAAK,UAEV/jB,EAAK4rU,WAAWlhI,EAAQx0K,GAExBA,EAAKhyB,SACJS,IAAI,CACDE,SAAU,WACVE,MAAoB,EAAZsrU,EAAkB,EAAI3/R,EAC9B9rC,QAAS,OACT,cAAegpU,EAAS,GAAMyC,EAAY3/R,IAG9Cva,EAAGy3S,EAAS,cAAgB,gBAAgB13S,GAE5Cp7B,EAAOuvC,EAAY,CACf9rB,QAASisT,EAAQ,KAAOoD,EAAS,QAp9BtC,QAq9BKlvT,SAAU,WACNwX,EAAKlF,IAAIzN,GAAIuL,SACb9uB,EAAK2tU,UAAY,KAEjBx3S,EAAG8+N,SAEHj1P,EAAK4rU,WAAWlhI,MAKxBx0K,EAAKhyB,SAASsb,WAAU,GAAM,GAAMI,aAAayqB,KAIzDimS,UAAW,SAASp6S,EAAMC,GACtB,IAIIirC,EAAMv8D,EAJN7E,EAAOjI,KACPoyC,EAAWnqC,EAAKf,QAAQoqF,UAAUl/C,SAClC5rB,EAAU4rB,EAAS5rB,QACnBmsL,EAAS1qM,EAAKq5M,QAGd96L,IAAuC,GAA5BA,EAAQ7Q,QAAQ,UAC3ByoB,EAAGizC,aAAalzC,GAEhBA,EAAKvxB,IAAI,CACLE,SAAU,WACVE,MAAOoxB,EAAGpxB,UAGVolU,IAGAtlU,GADAA,GADAu8D,EAAOphE,EAAKssU,YAAYtsU,EAAKuxD,MAAM66Q,aAAapsU,EAAKk6I,YACrCr1I,YACK+e,KAAO5S,SAASowD,EAAKr8D,QAAU,EAAG,IAA5C,OAAiEF,EAASsX,IAAMnL,SAASowD,EAAK18D,SAAW,EAAG,KAAM,KAC7HyxB,EAAGxxB,IAAIwlU,EAAkBtlU,IAG7BqxB,EAAK1W,WAAU,GAAM,GAAMI,aAAa,CACpCrB,QAAS,UACTE,SAAU,IACVC,SAAU,WACNwX,EAAKlF,IAAIzN,GAAIuL,SACb9uB,EAAK2tU,UAAY,KAEjB3tU,EAAK4rU,WAAWlhI,MAIxBv0K,EAAG3W,WAAU,GAAM,GAAMI,aAAauqB,KAI9CmiS,YAAa,SAAS7rU,EAAO+c,GACzB,OAAOzlB,KAAKm1U,OAAOp/S,KAAKtQ,GAAsB,0BAC7CwQ,QAAO,WACJ,OAAOtzB,EAAE3C,KAAK+pD,YAAYjnC,KAAKniB,EAAMmiB,KAAKkrD,MAAYtlE,MAI9D2tU,YAAa,SAAShgU,GAClB,IAAIpO,EAAOjI,KACPqpE,EAAOphE,EAAKuwU,cACZ9vU,EAAQT,EAAKuxD,MAAM66Q,aAAah+T,GAE5BgzD,GAAQA,EAAK,KACbA,EAAK,GAAGrhC,gBAAgBgqR,GACxB3oP,EAAKl9C,YAAYsgR,IAGrBpjO,EAAOphE,EAAKssU,YAAY7rU,EAAkC,YAA3BT,EAAKf,QAAQkoL,WAA2ByjJ,EAAe,0BAEtF5qU,EAAKuwU,cAAgBnvQ,EACrBA,EAAK9kD,SAASkoR,GACT3pR,KAAKkvS,GAAe,IAGjC+hB,YAAa,SAAS19T,GAClB,IAAIpO,EAAOjI,KACP2vB,EAAKhvB,EAAM8uB,OACX45C,EAAOphE,EAAKksU,MACZzrU,EAAQT,EAAKuxD,MAAM66Q,aAAah+T,GAE5BgzD,GAAQA,EAAK,KACbA,EAAKl9C,YAAYu/R,GACjBriP,EAAK,GAAGrhC,gBAAgBvhC,GACxB4iE,EAAK,GAAGrhC,gBAAgB0mK,IAG5BrlI,EAAOphE,EAAKssU,YAAY7rU,EAAkC,YAA3BT,EAAKf,QAAQkoL,WAA2ByjJ,EAAe,0BAEtF5qU,EAAKksU,MAAQ9qQ,EAEbA,EAAKvmD,KAAK4rL,EAAI/+K,GACTpL,SAASmnS,GAEVzjT,EAAKktU,OAAO,KACZltU,EAAKktU,OAAO,GAAGntS,gBAAgB,yBAC/B//B,EAAKktU,OAAOryT,KAAK,wBAAyB6M,KAItDylT,WAAY,SAAS72T,GACjBA,EACC0K,GAziCW49Q,sBAyiCO7mS,KAAKk0U,gBACvBjrT,GA5iCE,qBA4iCOjpB,KAAKw0U,oBAGnBzyP,OAAQ,SAASq+I,GACb,IAAIn4N,EAAOjI,KACXkH,EAAUe,EAAKf,QACf2jC,EAAe,IAAIz8B,MAAMnG,EAAKk6I,UAC9Bz5I,EAAQkrU,GAAaxzG,GAErB1jN,EAAUhU,EAAO,GAEM,SAAnBT,EAAKuxD,MAAMp3D,MAAmB6F,EAAKf,QAAQosU,aAAa5qU,KACxDA,EAAQT,EAAKq+M,QAGjBr+M,EAAKuxD,MAAMl6B,QAAQuL,EAAcniC,GAEjCT,EAAKwtU,aAAaxB,GAAcppS,EAAc3jC,EAAQiP,IAAKjP,EAAQ0R,OAGvEg9E,OAAQ,SAASltF,GACb,IAAIT,EAAOjI,KAGgC,IAFpCiI,EAAKuxD,MAEHzK,QAAQrmD,EAAOT,EAAKk6I,UACzBl6I,EAAK61C,SAASp1C,IAEdT,EAAKk6I,SAAWz5I,EAChBT,EAAK8rU,YAAYrrU,KAIzBmrU,WAAY,SAASlhI,EAAQp0L,GACrBo0L,GACA3yM,KAAK4lC,MAAMrnB,IAInBi1T,aAAc,WACV,IACI3nU,EADO7L,KACQ6L,QACfiqU,EAAcjqU,EAAQspC,SAAS,oBAE9B2gS,EAAY,KACbA,EAAcnzU,EAAE,mCAAmC+zS,YAAY7qS,EAAQkqB,KAAKq9S,MAIpFvjB,QAAS,SAAShgT,GACd,IAAI5H,EAAOjI,KACXogC,EAAQk0S,KACRzoU,EAAU5D,EAAK4D,QACf4sE,EAAS5sE,EAAQkqB,KAAK,aAEtB,IAAKlmB,EAGD,OAFA5H,EAAKyyT,SAAQ,QACbjiP,EAAOtrE,OAINsrE,EAAO,KACRA,EAAS91E,EAAE,oSAA4SwqC,SAASthC,IAGpU5D,EAAKyrU,OAASj7P,EAAOvrE,OAChB6oB,KAAK,0BACLjT,KAAK,QAASniB,EAAMuQ,SAASkvB,EAAO,IAAKn4B,EAAKf,QAAQoM,UAE3DmlE,EAAO1iD,KAAK,kBACPjmB,KAAKD,EAASuwB,IAEnBn4B,EAAKyyT,WAGT5K,QAAS,WACL,IAAI7nT,EAAOjI,KACX6L,EAAU5D,EAAK4D,QACfkpU,EAAgB9sU,EAAKf,QAAQ6tU,cAExBlpU,EAAQkqB,KAAKq9S,GAAgB,IAC9BvnU,EAAQiE,KAAKnP,EAAMkP,SAAS5H,EAAKf,QAAQ8+C,OAAOn2C,SAAnClP,CAA6CgC,EAAEI,QAAO,EAAK,GAAIkF,EAAKf,QAAS,CACtF4tU,WAAYn0U,EAAMmiB,KAAK,UACvBrT,KAAM9O,EAAM0qC,iBAAiB,YAAa,OAAQpjC,EAAKf,QAAQuI,MAC/D6O,MAAOrW,EAAKqW,YAIpBzS,EAAQkqB,KAAKg/S,GACR9rT,GAAG62M,EAAQ,YAAct0M,GAAI,WAAa,OAAO,KAEtDvjB,EAAKitU,OAASrpU,EAAQkqB,KAAK,IAAMp1B,EAAMmiB,KAAK,UAAY,cAAcmG,GAAG62M,EAAQ,YAAct0M,GAAI,WAC/FvjB,EAAKq5M,SAAsC,IAA5Br5M,EAAKf,QAAQ4sU,WAC5B7rU,EAAKutU,gBAETvtU,EAAc,WAAI4D,EAAQkqB,KAAK,IAAMp1B,EAAMmiB,KAAK,UAAY,YAAYmG,GAAG62M,EAAQ,YAAct0M,GAAI,WACjGvjB,EAAKq5M,SAAsC,IAA5Br5M,EAAKf,QAAQ4sU,WAC5B7rU,EAAKqtU,oBAETrtU,EAAc,WAAI4D,EAAQkqB,KAAK,IAAMp1B,EAAMmiB,KAAK,UAAY,YAAYmG,GAAG62M,EAAQ,YAAct0M,GAAI,WACjGvjB,EAAKq5M,SAAsC,IAA5Br5M,EAAKf,QAAQ4sU,WAC5B7rU,EAAKstU,sBAET1pU,EAAQkqB,KAAK,IAAMp1B,EAAMmiB,KAAK,UAAY,aAAamG,GAAG62M,EAAQ,YAAct0M,EAAIvjB,EAAK8vU,YAAYvuU,KAAKvB,KAI9Gq3C,UAAW,SAASukE,EAAOxxE,GACvB,IAAIpqC,EAAOjI,KACX+Y,EAAQ9Q,EAAK84J,OAAS,EACtBl2H,EAAe,IAAI8yH,GAAM11J,EAAKk6I,UAE1Bl6I,EAAKgrE,yBAELpoC,EAAe+oS,GADY3rU,EAAKktU,OAAOp/S,KAAK,+CAA+CkrI,IAAI,WAAW/2J,QACzD6rB,KAAK,MACtD9tB,EAAKk6I,SAAW,IAAI/zI,MAAMy8B,KAG9Bg5E,EAAQ57G,EAAK47G,IAEFz3F,SAASw8Q,KACZ7vR,EAAQ,EACR8xB,EAAaluB,YAAYkuB,EAAaj0B,cAAgB,IAAMy7B,GAE5Dj9B,EAASmjB,MAAMxf,GAAOumB,QAAQuL,EAAcwH,GAGhDpqC,EAAK61C,SAASjT,KAItBwqS,QAAS,SAASvgT,EAAQpsB,GACtB,IAGI+vU,EAHAxwU,EAAOjI,KACPkH,EAAUe,EAAKf,QACf2jC,EAAe5iC,EAAKq+M,QAAUr+M,EAAKk6I,SAGvC,GAAIz5I,IAAU9F,EACV,OAAOsE,EAAQ4tB,IAGnBpsB,EAAQssB,EAAMtsB,EAAOxB,EAAQwJ,OAAQxJ,EAAQoM,YAM7CpM,EAAQ4tB,GAAU,IAAI6oI,GAAMj1J,KAGxB+vU,EAntCF,QAktCE3jT,EACWpsB,EAAQmiC,EAERA,EAAeniC,IAsvBtC,SAAsBgwU,EAAQC,GAC1B,GAAID,EACA,OAAOA,EAAO9hU,gBAAkB+hU,EAAO/hU,eACnC8hU,EAAO/hU,aAAegiU,EAAOhiU,WAGrC,OAAO,EAzvBaiiU,CAAa/tS,EAAcniC,MACnC+vU,IACAxwU,EAAKq+M,OAAS,MAElBr+M,EAAK8tU,aAAc,GAGlB9tU,EAAK8tU,cACN9tU,EAAK8tU,eAAiB7uU,EAAQzB,MAAM8gD,UAAWr/C,EAAQzB,MAAM8mD,QAGjEtkD,EAAK61C,SAAS71C,EAAKq+M,QAEnBr+M,EAAKyyT,YAGTA,QAAS,SAASvyS,GACd,IAAIlgB,EAAOjI,KACPkH,EAAUe,EAAKf,QACf2xU,EAAkB5wU,EAAKf,QAAQosU,aAAagB,MAC5Cl0G,EAAOn4N,EAAKyrU,OACZoF,EAAa7wU,EAAK8wU,cAElB5wT,IAAWvlB,IACXulB,EAASuuT,GAAUpC,KAAYptU,EAAQiP,IAAKjP,EAAQ0R,MAGpDwnN,IACAA,EAAKnnM,IAAI6mM,GAEL33M,IAAW0wT,EACXz4G,EAAK77M,SAASu0T,GACb3sT,YAAYy8Q,GACZ3/Q,GAAG62M,EAAO73N,EAAK8vU,YAAYvuU,KAAKvB,IAEjCm4N,EAAKj0M,YAAY2sT,GAChBv0T,SAASqkR,GACT3/Q,GAAG62M,EAAOg4G,MAKvBiB,YAAa,WACT,MAtvCI,wBAyvCRhB,YAAa,SAASpzU,GAClB,IAAIsD,EAAOjI,KACXygK,EAAQloI,EAAMtwB,EAAKf,QAAQu5J,OAC3BvoI,EAAWjwB,EAAKf,QAAQosU,aACxBlzS,EAAQk0S,KAER3vU,EAAEwE,iBAEE+uB,EAASkI,KAIoC,IAA7Cn4B,EAAKuxD,MAAMzK,QAAQ9mD,EAAKk6I,SAAU/hH,IAAgBn4B,EAAK84J,QAAUN,IACjEx4J,EAAK8tU,aAAc,GAGnB9tU,EAAKgrE,yBACLhrE,EAAK+rU,aAAe,CAAC5zS,GACrBn4B,EAAKmnL,WAAWqgJ,YAAc,MAGlCxnU,EAAKq+M,OAASlmL,EACdn4B,EAAK61C,SAAS1d,EAAOqgI,GAErBx4J,EAAKmC,QAAQ0yC,KAGjB61P,WAAY,WACR,IAAI1qS,EAAOjI,KACPkH,EAAUe,EAAKf,QACfuxE,EAASvxE,EAAQuxE,OACjBhzE,EAAQyB,EAAQzB,MAChB8gD,EAAU9gD,EAAM8gD,QAChB/jB,EAAa/8B,EAAM+8B,WACnB+pB,EAAQ9mD,EAAM8mD,MACd6hQ,EAAiB,SAAUvgT,GAAQ,MAAQ,GAAMlN,EAAMuQ,SAASrD,EAAK,IAAI3G,EAAQoM,UAErFrL,EAAKxC,MAAQ,CACT8gD,QAAS,SAAU14C,GAAQ,MAAQ,cAAkBA,EAAa,SAAI,oDAA6DA,EAAc,UAAI,WAAgBA,EAAQ,IAAI,KAASlN,EAAMmiB,KAAKkrD,GAAU,KAASngE,EAAe,WAAI,YAAiBA,EAAU,MAAI,MAASmrU,GAAgBzyR,EAAS14C,IAASA,EAAKnF,OAAS,aACnU6jD,MAAO,SAAU1+C,GAAQ,MAAQ,wBAA4BmrU,GAAgBzsR,EAAO1+C,IAAS,UAAY,SACzG20B,WAAY,SAAU30B,GAAQ,MAAQ,sBAA0BmrU,GAAgBx2S,EAAY30B,IAASA,EAAK20B,YAAc,UAG5Hv6B,EAAKgU,KAAO,CACRsqC,QAAS12C,GAAS,SAAUhC,GAAQ,MAAQ,cAAkBA,EAAa,SAAI,mEAA+EA,EAAO,GAAI,UAAcA,EAAe,WAAI,iBAAsBA,EAAU,MAAI,KAASA,EAAU,MAAI,gBAGrQ4qE,IAAqB,IAAXA,IACV21O,EAAiB31O,GAGrBxwE,EAAKwwE,QAAoB,IAAXA,EAAmB5oE,EAASu+S,EAAgB,CAAEz+S,cAAc,IAAW,MAGzFspU,YAAa,SAASC,EAAc7iU,GAChC,IAIIuqB,EAJA34B,EAAOjI,KACPqpE,EAAOphE,EAAKksU,MACZgF,EAAYlxU,EAAKyvB,OAAOyhT,YACxB1lU,EAAU4C,GAAQpO,EAAKwL,UAa3B,OATImtB,EADc,UAAdu4S,EACOx4U,EAAMuQ,SAASuC,EAAS,QACV,SAAd0lU,EACAx4U,EAAMuQ,SAASuC,EAAS,KAExB41D,EAAKzoC,OAGhByoC,EAAKvmD,KAAK,aAAco2T,EAAa,CAAEzlU,QAASA,EAAS0lU,UAAWA,EAAWv4S,KAAMA,KAE9EyoC,EAAKvmD,KAAK,SAIzB6G,EAAGqN,OAAOq8S,GAEV,IAAIj+T,EAAW,CACXoqB,gBAAiB,SAASnpB,GACtB,OAAOogU,GACHpgU,EAAKO,cACLP,EAAKM,WACL,IAIRyiU,gBAAiB,SAAS/iU,EAAMgjU,GAG5B,IAAIpkU,GAFJokU,EAAeA,GAAgB14U,EAAM2S,UAAU8B,UAEnBH,SAC5BmkU,EAAkB,IAAIz7K,EAAKtnJ,EAAKO,cAAeP,EAAKM,WAAY,EAAGN,EAAKQ,WAAYR,EAAKS,aAAcT,EAAKU,aAAcV,EAAKW,mBAG/H,IAFAoiU,EAAgBz8T,YAAYtG,EAAKO,eAE1BwiU,EAAgB1iU,UAAYzB,GAC/BG,EAAS6qB,QAAQm5S,GAAiB,OAGtC,OAAOA,GAGXn5S,QAAS,SAAS5pB,EAAMqnB,GACpB,IAAI47S,EAAiBjjU,EAAKY,oBAC1BsiU,EAAa,IAAI57K,EAAKtnJ,EAAKpN,UAAYy0B,GACvC87S,EAAeD,EAAWtiU,oBAAsBqiU,EAEhDjjU,EAAK4pB,QAAQs5S,EAAWtwU,UAv1CZ,IAu1CwBuwU,IAExCjhT,MAAO,CAAC,CACJn2B,KAAMwB,EACNm6C,MAAO,SAAS1nC,EAAMF,EAAKyC,EAAKtF,GAC5B,OAAOmmU,GAAgBnmU,GAASiB,OAAOH,MAAMiC,EAAKM,YAAc,IAAMN,EAAKO,eAE/E2vC,QAAS,SAASr/C,GACd,IAAIe,EAAOjI,KACP4J,EAAM,EACNuM,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACdvC,EAAOnP,EAAQmP,KACf0jK,EAAQ7yK,EAAQ6yK,MAChBrpK,EAASxJ,EAAQwJ,OACjB4C,EAAUpM,EAAQoM,QAClBomU,EAAcxyU,EAAQmnB,IACtBsrT,EAAazyU,EAAQyyU,WACrB3D,EAAa9uU,EAAQ8uU,WACrBC,EAAsB/uU,EAAQ+uU,oBAC9B2D,EAASF,GAAe3/J,EAAM,GAC9B8/J,EAAkBJ,GAAgBnmU,GAClCwmU,EAAcD,EAAgB5kU,SAC9Bd,EAAO0lU,EAAgB1lU,KACvBC,EAAQ2lU,GAAW5lU,EAAKC,MAAO0lU,GAC/BE,EAAaD,GAAW5lU,EAAKG,WAAYwlU,GACzCxkU,EAAQF,EAASgkU,gBAAgB/iU,EAAMwjU,GACvCr6S,EAAkBv3B,EAAKiC,MAAMmM,GAC7B6rB,EAAiBj6B,EAAKk6B,KAAK9rB,GAC3Bg+T,EAAepsU,EAAKosU,aACpBj0S,EAAQk0S,KAERxkU,EAAO,0CADU5I,EAAQm9T,eAC2C,iCAAmCgQ,EAAa/+T,GAAS,KAYjI,IAVIqkU,IACA7pU,GAAQ,sDAAwD9P,KAAK+9C,MAAM1nC,EAAMF,EAAKyC,EAAKtF,GAAW,cAG1GxD,GAAQ,wEAEJmmU,IACAnmU,GAAQ,+CAAiDg+D,EAAO5mE,EAAQ+iB,SAASyqT,kBAAoB,SAGlG9qU,EAAM,EAAGA,IACZkG,GAAQ,qDAAuDsE,EAAMxK,GAAO,KAAOowU,EAAWpwU,GAAO,QAMzG,OAHA8S,EAAU0jB,EAAO,GACjBA,GAASA,EAEF1I,GAAK,CACR0xC,MAAO,GACP6wQ,OAAQ,EACRnqU,KAAMA,GAAQ,qFACdwF,MAAOmhU,GAAWnhU,EAAMsB,cAAetB,EAAMqB,WAAYrB,EAAMmB,WAC/Dw/T,oBAAqBA,EACrBzzS,WAAYt7B,EAAQs7B,WACpBrsB,IAAKsgU,GAAWtgU,EAAIS,cAAeT,EAAIQ,WAAYR,EAAIM,WACvDmC,IAAK69T,GAAW79T,EAAIhC,cAAegC,EAAIjC,WAAYiC,EAAInC,WACvDu/T,WAAYA,EACZzvR,QAASr/C,EAAQq/C,QACjBrkB,eAAgBA,EAChBqqB,MAAOrlD,EAAQqlD,MACfx9B,OAAQ9mB,EAAKq3B,QACbg0S,aAAcpsU,EAAQosU,aACtB4G,MAAO,SAAS7jU,EAAMzM,EAAK0pU,GACvB,IAAIjvT,EAAW,CAAE,iBACbnI,EAAM7F,EAAKK,SACXosN,EAAY,GACZz0M,EAAM,IAuBV,OArBIhY,EAAOmpB,GAAmBnpB,EAAO6rB,IACjC7d,EAAS1iB,KAAKixU,GAGdU,EAAaj9T,IACbgO,EAAS1iB,KAAKinS,IAGbvyR,IAAS+pB,GACV/b,EAAS1iB,KAAK,WAGN,IAARua,GAAqB,IAARA,GACbmI,EAAS1iB,KAAK,aAGdi4U,GAifxB,SAAiBvjU,EAAM0jK,GACnB,IAAK,IAAIxyK,EAAI,EAAGC,EAASuyK,EAAMvyK,OAAQD,EAAIC,EAAQD,IAC/C,GAAI8O,KAAU0jK,EAAMxyK,GAChB,OAAO,EAGf,OAAO,EAvfuB8tB,EAAShf,EAAM0jK,KACzB1rJ,EAAMqrT,EAAYj3U,QAAQ,MAAO9B,EAAMuQ,SAASmF,EAAM3F,EAAQ4C,IAC9DwvN,EAAY,kBAGT,CACHzsN,KAAMA,EACN0jK,MAAOA,EACPvuJ,GAAI7qB,EAAM6qB,GACVuyB,MAAOp9C,EAAMuQ,SAASmF,EAAM,IAAK/C,GACjC5K,MAAO2N,EAAKI,UACZ0jU,WAAY9F,EAAah+T,GACzBgO,SAAUA,EAASxZ,KAAK,KACxBi4N,UAAWA,EACXz0M,IAAKA,IAGb+rT,gBAAiB,SAAS/jU,GACtB,MAAO,CACHmsB,WAAYH,EAAWhsB,EAAM1V,EAAM2S,UAAU8B,SAASH,UACtDsrB,YAAalqB,OAK7BnM,MAAO,SAASmM,GACZ,OAAOjB,EAASoqB,gBAAgBnpB,IAEpC8rB,KAAM,SAAS9rB,GACX,IAAI8rB,EAAOs0S,GAAWpgU,EAAKO,cAAeP,EAAKM,WAAa,EAAG,GAC/DzM,EAAQkL,EAASoqB,gBAAgBnpB,GACjC+rB,EAAa/+B,KAAK6T,IAAIirB,EAAKlrB,oBAAsB/M,EAAM+M,qBAMvD,OAJImrB,GACAD,EAAK1lB,SAASvS,EAAM2M,WAAcurB,EAAa,IAG5CD,GAEX4sB,QAAS,SAASsrR,EAAOC,GACrB,IACAC,EAASF,EAAM1jU,WACf6jU,EAAQH,EAAMzjU,cACd6jU,EAASH,EAAM3jU,WACf+jU,EAAQJ,EAAM1jU,cAUd,OARI4jU,EAAQE,EACC,EACFF,EAAQE,GACL,EAEDH,GAAUE,EAAS,EAAIF,EAASE,EAAS,GAAK,GAK/Dn7S,QAAS,SAASjpB,EAAM3N,GACpB,IAAIyT,EAAQ9F,EAAKQ,WACbnO,aAAiBi1J,EACjBtnJ,EAAKsG,YAAYjU,EAAMkO,cAAelO,EAAMiO,WAAYjO,EAAM+N,WAE9DrB,EAAS6qB,QAAQ5pB,EAAM3N,EAAQy2B,GAEnCziB,EAAUrG,EAAM8F,IAEpBk4T,aAAc,SAASh+T,GACnB,OAAOA,EAAKO,cAAgB,IAAMP,EAAKM,WAAa,IAAMN,EAAKI,WAEnE0iU,UAAW,WACP,MAAO,SAGf,CACI/2U,KAAM,OACN27C,MAAO,SAAS1nC,GACZ,OAAOA,EAAKO,eAEhB2vC,QAAS,SAASr/C,GACd,IAAIyzU,EAAiBlB,GAAgBvyU,EAAQoM,SAASiB,OAClDF,EAAYsmU,EAAetmU,UAC3BumU,EAAYD,EAAevmU,MAC3BigU,EAAer0U,KAAKq0U,aACpBl+T,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACd9I,EAAO,GAWX,OATI5I,EAAQyyU,aACR7pU,GAAQ,kGACJA,GAAQ,qDACJA,GAAQ9P,KAAK+9C,MAAM72C,EAAQmP,MAC/BvG,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGb4nB,GAAK,CACRvhB,IAAKsgU,GAAWtgU,EAAIS,cAAeT,EAAIQ,WAAY,GACnDiC,IAAK69T,GAAW79T,EAAIhC,cAAegC,EAAIjC,WAAY,GACnDrB,MAAOmhU,GAAWvvU,EAAQmP,KAAKO,cAAe,EAAG,GACjD9G,KAAMA,EACNif,OAAQ/uB,KAAKs/B,QACbinB,QAASr/C,EAAQq/C,QACjB2zR,MAAO,SAAS7jU,GAGZ,MAAO,CACH3N,MAAO2L,EAAUgC,EAAKM,YACtBkd,MAAO+mT,EAAUvkU,EAAKM,YACtB6U,GAAI7qB,EAAM6qB,GACV2uT,WAAY9F,EAAah+T,GACzBgO,SAPW,CAAE,iBAOMxZ,KAAK,UAKxCX,MAAO,SAASmM,GACZ,OAAOogU,GAAWpgU,EAAKO,cAAe,EAAGP,EAAKI,YAElD0rB,KAAM,SAAS9rB,GACX,OAAOogU,GAAWpgU,EAAKO,cAAe,GAAIP,EAAKI,YAEnDs4C,QAAS,SAASsrR,EAAOC,GACrB,OAAOvrR,GAAQsrR,EAAOC,IAE1Bh7S,QAAS,SAASjpB,EAAM3N,GACpB,IAAIjD,EACJ0W,EAAQ9F,EAAKQ,WAETnO,aAAiBi1J,GACjBl4J,EAAQiD,EAAMiO,WAEdN,EAAKsG,YAAYjU,EAAMkO,cAAenR,EAAO4Q,EAAKI,WAE9ChR,IAAU4Q,EAAKM,YACfN,EAAKipB,QAAQ,KAGjB75B,EAAQ4Q,EAAKM,WAAajO,EAE1B2N,EAAKwkU,SAASp1U,GAEVA,EAAQ,KACRA,GAAS,IAGTA,EAAQ,GAAK4Q,EAAKM,YAAclR,GAChC4Q,EAAKipB,QAAQ,IAIrB5iB,EAAUrG,EAAM8F,IAEpBk4T,aAAc,SAASh+T,GACnB,OAAOA,EAAKO,cAAgB,IAAMP,EAAKM,WAAa,MAExDwiU,UAAW,WACP,MAAO,UAGf,CACI/2U,KAAM,SACN27C,MAAO,SAAS1nC,EAAMF,EAAKyC,GACvB,OAAOmlC,EAAM1nC,EAAMF,EAAKyC,EAAK,KAEjC2tC,QAAS,SAASr/C,GACd,IAAI+U,EAAO/U,EAAQmP,KAAKO,cACxBy9T,EAAer0U,KAAKq0U,aACpBvkU,EAAO,GAWP,OATI5I,EAAQyyU,aACR7pU,GAAQ,kGACJA,GAAQ,kCACJA,GAAQ9P,KAAK+9C,MAAM72C,EAAQmP,KAAMnP,EAAQiP,IAAKjP,EAAQ0R,KAC1D9I,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGb4nB,GAAK,CACRpiB,MAAOmhU,GAAWx6T,EAAOA,EAAO,GAAK,EAAG,EAAG,GAC3C9F,IAAKsgU,GAAWvvU,EAAQiP,IAAIS,cAAe,EAAG,GAC9CgC,IAAK69T,GAAWvvU,EAAQ0R,IAAIhC,cAAe,EAAG,GAC9Co/T,WAAY9uU,EAAQ8uU,WACpBlmU,KAAMA,EACNif,OAAQ/uB,KAAKs/B,QACb46S,MAAO,SAAS7jU,EAAMzM,GAClB,IAAIya,EAAW,CAAE,iBAMjB,OAJY,IAARza,GAAqB,KAARA,GACbya,EAAS1iB,KAAKixU,GAGX,CACHlqU,MAAO2N,EAAKO,cACZ4U,GAAI7qB,EAAM6qB,GACV2uT,WAAY9F,EAAah+T,GACzBgO,SAAUA,EAASxZ,KAAK,UAKxCX,MAAO,SAASmM,GACZ,IAAI4F,EAAO5F,EAAKO,cAChB,OAAO6/T,GAAWx6T,EAAOA,EAAO,GAAI5F,EAAKM,WAAYN,EAAKI,YAE9D0rB,KAAM,SAAS9rB,GACX,IAAI4F,EAAO5F,EAAKO,cAChB,OAAO6/T,GAAWx6T,EAAOA,EAAO,GAAK,EAAG5F,EAAKM,WAAYN,EAAKI,YAElEs4C,QAAS,SAASsrR,EAAOC,GACrB,OAAOvrR,GAAQsrR,EAAOC,EAAO,KAEjCh7S,QAAS,SAASjpB,EAAM3N,GACpB42B,GAAQjpB,EAAM3N,EAAO,IAEzB2rU,aAAc,SAASh+T,GACnB,OAAOA,EAAKO,cAAgB,QAEhCuiU,UAAW,WACP,MAAO,SAGf,CACI/2U,KAAMswU,EACN30R,MAAO,SAAS1nC,EAAMF,EAAKyC,GACvB,OAAOmlC,EAAM1nC,EAAMF,EAAKyC,EAAK,MAEjC2tC,QAAS,SAASr/C,GACd,IAAI+U,EAAO/U,EAAQmP,KAAKO,cACxBT,EAAMjP,EAAQiP,IAAIS,cAClBgC,EAAM1R,EAAQ0R,IAAIhC,cAClBy9T,EAAer0U,KAAKq0U,aACpByG,EAAU3kU,EACV4kU,EAAUniU,EACV9I,EAAO,GAkBP,OAfAirU,GAAoBA,EAAU,KAD9BD,GAAoBA,EAAU,IAGN,KACpBC,EAAUD,EAAU,GAGpB5zU,EAAQyyU,aACR7pU,GAAQ,kGACJA,GAAQ,qDACJA,GAAQ9P,KAAK+9C,MAAM72C,EAAQmP,KAAMnP,EAAQiP,IAAKjP,EAAQ0R,KAC1D9I,GAAQ,aACRA,GAAQ,mCACJA,GAAQ,yCAGb4nB,GAAK,CACRpiB,MAAOmhU,GAAWx6T,EAAOA,EAAO,IAAM,GAAI,EAAG,GAC7C9F,IAAKsgU,GAAWqE,EAAS,EAAG,GAC5BliU,IAAK69T,GAAWsE,EAAS,EAAG,GAC5B/E,WAAY9uU,EAAQ8uU,WACpBlmU,KAAMA,EACNif,OAAQ/uB,KAAKs/B,QACb46S,MAAO,SAAS7jU,EAAMzM,GAClB,IAAIya,EAAW,CAAE,iBACb/O,EAAQe,EAAKO,cACbjL,EAAM2J,EAAQ,EAclB,OAZY,IAAR1L,GAAqB,KAARA,GACbya,EAAS1iB,KAAKixU,GAGdt9T,EAAQa,IACRb,EAAQa,GAGRxK,EAAMiN,IACNjN,EAAMiN,GAGH,CACH4S,GAAI7qB,EAAM6qB,GACV9iB,MAAO4M,EAAQ,MAAQ3J,EACvBwuU,WAAY9F,EAAah+T,GACzBgO,SAAUA,EAASxZ,KAAK,UAKxCX,MAAO,SAASmM,GACZ,IAAI4F,EAAO5F,EAAKO,cAChB,OAAO6/T,GAAWx6T,EAAOA,EAAO,IAAK5F,EAAKM,WAAYN,EAAKI,YAE/D0rB,KAAM,SAAS9rB,GACX,IAAI4F,EAAO5F,EAAKO,cAChB,OAAO6/T,GAAWx6T,EAAOA,EAAO,IAAM,GAAI5F,EAAKM,WAAYN,EAAKI,YAEpEs4C,QAAS,SAASsrR,EAAOC,GACrB,OAAOvrR,GAAQsrR,EAAOC,EAAO,MAEjCh7S,QAAS,SAASjpB,EAAM3N,GACpB42B,GAAQjpB,EAAM3N,EAAO,KAEzB2rU,aAAc,SAASh+T,GACnB,IAAI4F,EAAO5F,EAAKO,cAChB,OAAQqF,EAAOA,EAAO,GAAM,QAEhCk9T,UAAW,WACP,MAAO,aAKnB,SAASp7R,EAAM1nC,EAAMF,EAAKyC,EAAKoiU,GAC3B,IAGIrvU,EAHA2J,EAAQe,EAAKO,cACbkkU,EAAU3kU,EAAIS,cACdmkU,EAAUniU,EAAIhC,cAalB,OATAjL,GADA2J,GAAgBA,EAAQ0lU,IACTA,EAAU,GAErB1lU,EAAQwlU,IACRxlU,EAAQwlU,GAERnvU,EAAMovU,IACNpvU,EAAMovU,GAGHzlU,EAAQ,IAAM3J,EAGzB,SAAS+rB,GAAKxwB,GACV,IACI2G,EADAjE,EAAM,EAENuM,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACdtD,EAAQpO,EAAQoO,MAChByZ,EAAS7nB,EAAQ6nB,OACjBmrT,EAAQhzU,EAAQgzU,MAChBE,EAAkBlzU,EAAQkzU,gBAC1B5yU,EAASN,EAAQkiE,OAAS,GAC1B6sQ,EAAsB/uU,EAAQ+uU,oBAC9BgF,EAAc/zU,EAAQ+yU,QAAU,EAChCjE,EAAa9uU,EAAQ8uU,WACrB9zS,EAAiBh7B,EAAQg7B,eACzBM,EAAat7B,EAAQs7B,YAAcgwS,EACnCjsR,EAAUr/C,EAAQq/C,SAAW8rR,EAC7B9lR,EAAQrlD,EAAQqlD,OAAS+lR,EACzB4I,EAAqBh0U,EAAQqrU,wBAA0BA,EACvDziU,EAAO5I,EAAQ4I,MAAQ,uKAO3B,IALImmU,IACAnmU,GAAQ0yB,EAAW43S,EAAgB9kU,KAIhC1L,EAAMpC,EAAQoC,IACbA,EAAM,GAAKA,EAAMqxU,GAAgB,IACjCnrU,GAAQ,6CACJmmU,IACAnmU,GAAoD0yB,EAA5CwzS,IAAgB1gU,IAAU4sB,EAA6Bk4S,EAAgB9kU,GAAqB,CAAEktB,WAAY,aAI1HltB,EAAQmhU,GAAWnhU,EAAMsB,cAAetB,EAAMqB,WAAYrB,EAAMmB,WAChEiG,EAAUpH,EAAO,GAIjBxF,IAAgD,KAFhDjC,EAAOqsU,EAAM5kU,EAAO1L,EAAK1C,EAAQosU,eAEnBjvT,SAAS1O,QAAQi9T,IAAuBoD,EAAyCU,GAAUphU,EAAOa,EAAKyC,GAAO2tC,EAAQ14C,GAAQ0+C,EAAM1+C,GAA9EqtU,EAAmBrtU,GAEvFkhB,EAAOzZ,EAAO,GAGlB,OAAOxF,EAAO,wBAGlB,SAASi/C,GAAQsrR,EAAOC,EAAOjoS,GAC3B,IAAImoS,EAAQH,EAAMzjU,cACdtB,EAAQglU,EAAM1jU,cACdjL,EAAM2J,EACNiB,EAAS,EAab,OAXI87B,IAEA1mC,GADA2J,GAAgBA,EAAQ+8B,GACV/8B,EAAQ+8B,EAAWA,EAAW,GAG5CmoS,EAAQ7uU,EACR4K,EAAS,EACFikU,EAAQllU,IACfiB,GAAU,GAGPA,EAGX,SAAS+9T,KACL,IAAIl0S,EAAQ,IAAIu9H,EAChB,OAAO,IAAIA,EAAKv9H,EAAMxpB,cAAewpB,EAAMzpB,WAAYypB,EAAM3pB,WAGjE,SAASw9T,GAAcvrU,EAAOyN,EAAKyC,GAC/B,IAAIwnB,EAAQk0S,KAWZ,OATI5rU,IACA03B,EAAQ,IAAIu9H,GAAMj1J,IAGlByN,EAAMiqB,EACNA,EAAQ,IAAIu9H,GAAMxnJ,GACXyC,EAAMwnB,IACbA,EAAQ,IAAIu9H,GAAM/kJ,IAEfwnB,EAGX,SAASs2S,GAAUrgU,EAAMF,EAAKyC,GAC1B,OAAQvC,IAASF,IAAQE,IAASuC,EAGtC,SAASmhU,GAAWv/T,EAAO5Q,GACvB,OAAO4Q,EAAM5T,MAAMgD,GAAKyT,OAAO7C,EAAM5T,MAAM,EAAGgD,IAGlD,SAAS01B,GAAQjpB,EAAM3N,EAAOyyU,GAC1BzyU,EAAQA,aAAiBi1J,EAAOj1J,EAAMkO,cAAgBP,EAAKO,cAAgBukU,EAAazyU,EACxF2N,EAAKsG,YAAYjU,GAGrB,SAAS4uU,GAAoBn7R,EAAWi/R,GACpC,IAAKA,GAAWj/R,EAAW,CACvB,IAAI/B,GAAQ+B,EACZ/mC,EAASmjB,MAAM,GAAG+G,QAAQ6c,EAAWi/R,GACrChmU,EAASmjB,MAAM,GAAG+G,QAAQ87S,EAAS,IAAIhtU,KAAKgsC,IAEhD,IAAIihS,EAAcjtU,KAAK4M,IAAImhC,EAAUvlC,cAAeulC,EAAUxlC,WAAYwlC,EAAU1lC,WAChF6kU,EAAaltU,KAAK4M,IAAIogU,EAAQxkU,cAAewkU,EAAQzkU,WAAYykU,EAAQ3kU,WAE7E,OAAOpT,KAAK4iE,OAAOq1Q,GAAcD,GAAe16U,EAAM0V,KAAK8oB,YAG/D,SAASo4S,GAAe/8T,EAAO+gU,EAAclE,EAAU/D,GACnD,IAAK,IAAI/rU,EAAI,EAAGA,GAAKg0U,EAAch0U,IAAK,CACpC,IAAI65B,EAAU,IAAIhzB,KAAKipU,EAASpuU,WAE3BqqU,EADLlyS,EAAU,IAAIhzB,KAAKgzB,EAAQ9B,QAAQ8B,EAAQ3qB,UAAYlP,MAEnDiT,EAAM7Y,KAAKy/B,IAKvB,SAASuyS,GAAYhvU,GACFhC,EAAE3C,MAAMosB,SAAS,eAG5BzpB,EAAE3C,MAAMgoB,YAp4DJ,UAo4DuB4mR,EAAWj5R,QAAQhR,EAAEe,OAAS,GAAKf,EAAEe,MAAQmhS,GAIhF,SAASixC,GAAQnzU,GACbA,EAAEwE,iBAIN,SAASstU,GAAWx6T,EAAMxW,EAAO4Q,GAC7B,IAAImlU,EAAa,IAAI79K,EAAK1hJ,EAAMxW,EAAO4Q,GAEvC,OADAmlU,EAAW7+T,YAAYV,EAAMxW,EAAO4Q,GAC7BmlU,EAGX,SAAS/B,GAAgBnmU,GACrB,OAAOE,EAAWF,GAASW,UAAUC,SAGzC,SAAS+pC,GAAU/2C,GACf,IAAIoO,EAAQijB,EAAMrxB,EAAQoO,OACtBmrJ,EAAQloI,EAAMrxB,EAAQu5J,OACtBntJ,EAAUE,EAAWtM,EAAQoM,SAEjCpM,EAAQwJ,OAASyhU,EAAcjrU,EAAQwJ,QAAU4C,EAAQW,UAAUC,SAASQ,SAASlQ,GAEjFsE,MAAMwM,KACNA,EAAQ,EACRpO,EAAQoO,MAAQ1R,IAGhB68J,IAAU79J,GAAe69J,EAAQnrJ,KACjCpO,EAAQu5J,MAAQ78J,GAGE,OAAlBsD,EAAQ6yK,QACR7yK,EAAQ6yK,MAAQ,IAIxB,SAASm8J,GAAwBrqU,EAAS8pU,GACtC9pU,EAAQ0Y,SAAS,KAAOoxT,GAgC5B,SAASpC,GAAgBz+S,GACrB,OAAIn0B,EAAMuI,WAAW4rB,GACVA,EAGP5xB,MAAMD,QAAQ6xB,GActB,SAA4BilJ,GACxB,IAAI/wJ,EACAyyT,EAAgB,GAChBtnU,EAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE5C4lK,EAAM,aAAcpc,GACpB89K,EAdR,SAA2B1hK,GAEvB,IADA,IAAIxjK,EAAS,GACJhP,EAAI,EAAGA,EAAIwyK,EAAMvyK,OAAQD,IAC9BgP,EAAO5U,KAAKo4K,EAAMxyK,GAAGkV,SAAS,EAAG,EAAG,EAAG,IAE3C,OAAOlG,EASamlU,CAAkB3hK,GAClC/wJ,EAAW,SAAU3S,GAAQ,SAAUA,GAAQolU,EAAc9lU,QAAQ,IAAKvH,KAAKiI,GAAOoG,SAAS,EAAG,EAAG,EAAG,KAAO,MAE/Gg/T,EAAgB1hK,EAAMz/J,KAAI,SAAU4B,GAChCA,EAAMA,EAAItV,MAAM,EAAE,GAAG0R,cACrB,IAAIS,EAAQ5E,EAAKwB,QAAQuG,GACzB,GAAInD,GAAS,EACT,OAAOA,KAIfiQ,EAAW,SAAU3S,GAAQ,SAAUA,GAAQolU,EAAc9lU,QAAQ,IAAKvH,KAAKiI,GAAOK,WAAa,KAGvG,OAAOsS,EAjCI2yT,CAAmB7mT,GAEvBnyB,EAAEQ,KAkCb,SAASuyU,GAAY5zG,EAAU1uJ,GAM5B,OALI0uJ,aAAoB1zN,MAAQglE,aAAoBhlE,OAChD0zN,EAAWA,EAAS74N,UACpBmqE,EAAWA,EAASnqE,WAGjB64N,IAAa1uJ,EAGvB,SAASwgQ,GAAaxzG,GAClB,IAAI13N,EAAQ/F,EAAEy9N,GAAMt9M,KAAKniB,EAAMmiB,KAAKkrD,IAAQpjE,MAAM,KAIlD,OAFAlC,EAAQ+tU,GAAW/tU,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAMjD,SAASswU,GAAgBxjK,EAAM3nK,GAC3B,OAAI2nK,EACI70K,EAAMuI,WAAWssK,GACVA,EAAK3nK,GAETgC,EAAS2lK,EAAT3lK,CAAehC,GAEnBjL,EAGXwS,EAASwmU,gBA1FT,SAAyBlD,EAAQC,GAC7B,QAAID,IACOA,EAAO9hU,gBAAkB+hU,EAAO/hU,eACnC8hU,EAAO/hU,aAAegiU,EAAOhiU,YAC7B+hU,EAAOjiU,YAAckiU,EAAOliU,YAuFxCrB,EAASsgU,YAAcA,GACvBtgU,EAAS6+T,cAAgBA,GACzB7+T,EAASshU,UAAYA,GACrBthU,EAAS8gU,wBAA0BA,GACnC9gU,EAAS6oC,UAAYA,GACrB7oC,EAASymU,UAAYtjT,EACrBnjB,EAAS8iB,SAAWq7S,GACpBn+T,EAASw+T,aAAeA,GACxBx+T,EAASk/T,SAAWA,GACpBl/T,EAASqhU,WAAaA,GAEtB91U,EAAMyU,SAAWA,EAhkErB,CAikEGtU,OAAOH,MAAM+G,QACF/G,MAAd,IAkBIm7U,EAAgB,SAASt3U,EAAG2gB,GAI9B,OAHA22T,EAAgBr7U,OAAOs7U,gBAClB,CAAEtpT,UAAW,cAAgBvvB,OAAS,SAAUsB,EAAG2gB,GAAK3gB,EAAEiuB,UAAYtN,IACvE,SAAU3gB,EAAG2gB,GAAK,IAAK,IAAI4rG,KAAK5rG,EAAS1kB,OAAO4H,UAAUqG,eAAenE,KAAK4a,EAAG4rG,KAAMvsH,EAAEusH,GAAK5rG,EAAE4rG,KAC7F+qN,EAAct3U,EAAG2gB,IAG1B,SAAS62T,EAAUx3U,EAAG2gB,GACpB,GAAiB,mBAANA,GAA0B,OAANA,EACzB,MAAM,IAAI82T,UAAU,uBAAyBnqU,OAAOqT,GAAK,iCAE/D,SAAS+2T,IAAOl8U,KAAKsI,YAAc9D,EADnCs3U,EAAct3U,EAAG2gB,GAEjB3gB,EAAE6D,UAAkB,OAAN8c,EAAa1kB,OAAOumD,OAAO7hC,IAAM+2T,EAAG7zU,UAAY8c,EAAE9c,UAAW,IAAI6zU,GA8H3Dz7U,OAAOumD,OA8GJvmD,OAAOumD,OAoChC,IA4OIm1R,EApMAC,EAAY,SAAU/lU,GAAQ,OAAOA,EAAO,IAAIjI,KAAKiI,EAAKpN,WAAa,MAKvEyT,EAAY,SAAUrG,EAAMgmU,GAC5B,IAAIz8S,EAAUw8S,EAAU/lU,GAIxB,OAHa,IAATgmU,GAAqC,KAAvBz8S,EAAQ/oB,YACtB+oB,EAAQnjB,SAASmjB,EAAQ/oB,WAAa,GAEnC+oB,GAgBPC,EAAU,SAAUxpB,EAAM0G,GAC1B,IAAI6iB,EAAUw8S,EAAU/lU,GAExB,OADAupB,EAAQN,QAAQM,EAAQnpB,UAAYsG,GAC7BL,EAAUkjB,EAASvpB,EAAKQ,aAqB/B4/T,EAAa,SAAUx6T,EAAMxW,EAAOyW,EAAKC,EAAO7F,EAAS8F,EAASC,QACpD,IAAVF,IAAoBA,EAAQ,QAChB,IAAZ7F,IAAsBA,EAAU,QACpB,IAAZ8F,IAAsBA,EAAU,QACf,IAAjBC,IAA2BA,EAAe,GAC9C,IAAIhG,EAAO,IAAIjI,KAAK6N,EAAMxW,EAAOyW,EAAKC,EAAO7F,EAAS8F,EAASC,GAI/D,OAHIJ,GAAQ,GAAKA,EAAO,KACpB5F,EAAKsG,YAAYtG,EAAKO,cAAgB,MAEnC8F,EAAUrG,EAAM8F,IAcvB+lB,EAAiB,SAAU7rB,GAC3B,IAAIupB,EAAU62S,EAAWpgU,EAAKO,cAAeP,EAAKM,WAAa,EAAG,EAAGN,EAAKQ,WAAYR,EAAKS,aAAcT,EAAKU,aAAcV,EAAKW,mBACjI,OAAO6oB,EAAQD,GAAU,IAmBzB08S,EAAY,SAAUjmU,EAAM0G,GAC5B,IAAI6iB,EAAUw8S,EAAU/lU,GAEpBkmU,GAnBY,IAkBJ38S,EAAQjpB,WAAaoG,GAlBjB,OAqBhB,OADA6iB,EAAQi7S,SAASj7S,EAAQjpB,WAAaoG,GAnB1B,SAAU1G,EAAMkmU,GAAiB,OAAQlmU,EAAKM,aAAe4lU,EAAgBr6S,EAAeo6S,EAAUjmU,GAAO,IAAMA,EAoBxH4nC,CAAUvhC,EAAUkjB,EAASvpB,EAAKQ,YAAa0lU,KAkG1D,SAAWJ,GAIPA,EAAUA,EAAmB,QAAI,GAAK,UAItCA,EAAUA,EAAoB,UAAK,GAAK,WAR5C,CASGA,IAAcA,EAAY,KAmB7B,IAWIK,GACJ,SAAWA,GAIPA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAa,QAAI,GAAK,UAI1BA,EAAIA,EAAe,UAAI,GAAK,YAI5BA,EAAIA,EAAc,SAAI,GAAK,WAI3BA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAc,SAAI,GAAK,WA5B/B,CA6BGA,IAAQA,EAAM,KAKjB,IAsKI/lU,EAAU,SAAUJ,GACpB,OAAOogU,EAAWpgU,EAAKO,cAAeP,EAAKM,WAAYN,EAAKI,UAAW,EAAG,EAAG,IAiB7EgmU,EAAU,SAAUh1C,EAAWi1C,GAC/B,OAAKj1C,IAAci1C,GAGZj1C,GAAai1C,GAAYj1C,EAAUx+R,YAAcyzU,EAASzzU,WAwGjE0zU,EAAY,CACZ3+S,MAAO,GACPuuI,OAAQ,GACRjuI,MAAO,IAGPo5I,EAAS,CAAEv7I,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAAIC,IAAK,IACzG06I,EAAO,CAAEz6I,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,EAAGC,IAAK,GAkB9DC,EAAa,SAAUrhB,EAAMshB,EAAMq/S,GACnC,IAGIvmU,EAHA5Q,EAAQ83B,EAAK,GACbtU,EAAKsU,EAAK,GACVG,EAAOH,EAAK,GAEZs/S,EAAyB,MAAZn/S,EAAK,GAtBN,KAsBoBk/S,EAA6B,EACjE,GAAK9zU,MAAMmgB,IAGN,GAA2B,IAAvBA,EAAGtT,QAAQ,QAAe,CAC/BU,EAAO,IAAIjI,KAAKA,KAAK4M,IAAIiB,EAAMy7J,EAAOjyK,GAAS,EAAG,EAAGi4B,EAAK,GAAK,GAAIA,EAAK,GAAIA,EAAK,IAAMm/S,GACvF,IAAIr/S,EAAYg6I,EAAKvuJ,EAAGzN,OAAO,EAAG,IAC9BiiB,EAASpnB,EAAKunB,YAClBvnB,EAAKwnB,WAAWxnB,EAAKnE,aAAesrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,SAElF,GAAIxU,EAAGtT,QAAQ,OAAS,EAAG,CAC5BU,EAAO,IAAIjI,KAAKA,KAAK4M,IAAIiB,EAAMy7J,EAAOjyK,GAAQwjB,EAAGzN,OAAO,GAAIkiB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAI,GAAKm/S,GACxFr/S,EAAYg6I,EAAKvuJ,EAAGzN,OAAO,EAAG,IAC9BiiB,EAASpnB,EAAKunB,YAClBvnB,EAAKwnB,WAAWxnB,EAAKnE,aAAesrB,EAAYC,GAAUD,EAAYC,EAAS,EAAI,UAZnFpnB,EAAO,IAAIjI,KAAKA,KAAK4M,IAAIiB,EAAMy7J,EAAOjyK,GAAQwjB,EAAIyU,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAAMm/S,GAcnF,OAAOxmU,GAGPymU,GAAmB,IAAK1uU,MAAQnF,UAgBhC60B,EAAW,SAAUi/S,EAAUh/S,EAAS6+S,QACxB,IAAZ7+S,IAAsBA,EAAU++S,QACjB,IAAfF,IAAyBA,EAAa,GAC1C,IAAI5+S,EAAQ2+S,EAAU3+S,MAAM++S,GAC5B,IAAK/+S,EAAO,CACR,IAAIN,EAAOq/S,EAASnyU,MAAM,KACtBmS,EAAS,EAIb,OAHI2gB,EAAKl2B,OAAS,IACduV,EAAmB,GAAV2gB,EAAK,GAAUprB,OAAOorB,EAAK,KAEjC,EAAE,IAAS,MAAO,IAAK,MAAO,EAAG,CAAC,EAAG,EAAG,GAAI3gB,EAAQ,KAE/D,IAAId,EAAO,IAAI7N,KAAK2vB,GAAS/rB,kBAC7BgsB,EAAQA,EAAM/H,QAAO,SAAU+mT,GAC3B,IAAI7+S,EAAO6+S,EAAY,GACnB5+S,EAAK4+S,EAAY,GACrB,OAAO7+S,GAAQliB,IAASmiB,GAAMniB,GAASkiB,IAASliB,GAAe,SAAPmiB,GAAyB,QAAPA,OAExEz8B,KAAKo8B,GACXC,EAAM9Y,MAAK,SAAUhgB,EAAGigB,GAOpB,MANiB,iBAANjgB,IACPA,EAAIoN,OAAOgrB,EAAWrhB,EAAM/W,EAAG03U,KAElB,iBAANz3T,IACPA,EAAI7S,OAAOgrB,EAAWrhB,EAAMkJ,EAAGy3T,KAE5B13U,EAAIigB,KAEf,IAAIoY,EAAOS,EAAMA,EAAMroB,QAAQooB,GAAW,IAAMC,EAAMA,EAAMx2B,OAAS,GACrE,OAAOsB,MAAMy0B,GAAQA,EAAO,MAI5B0/S,EAAa,yDAGbx5U,EAAe,eACfy5U,EAAU,SAAU1yS,GAAO,OAAOA,EAAImZ,QAAO,SAAUz+C,EAAGigB,GAAK,OAAOjgB,EAAEmY,OAAO8H,KAAO,KAEtFg4T,GAAgB,SAAU5sT,GAI1B,IAHA,IAAInpB,EAAcC,UAEdyR,EAAS,GACJ02B,EAAK,EAAGA,EAAKnoC,UAAUG,OAAQgoC,IACpC12B,EAAO02B,EAAK,GAAKpoC,EAAYooC,GAEjC,IAAI4tS,EAAgBF,EAAQpkU,GAC5B,OAAOyX,EAAQ9tB,QAAQgB,GAAc,SAAUuqB,EAAGjV,GAAS,OAAOqkU,EAAcnkU,SAASF,EAAO,SAmChG0lB,GAAW,SAAUxhB,EAAU8gB,GAE/B,QADgB,IAAZA,IAAsBA,GAAU,IAAI3vB,MAAOnF,WAC9B,YAAbgU,GAAuC,YAAbA,EAC1B,MAAO,CAAC,EAAG,IAAK,MAAO,MAI3B,IAFA,IAAIshB,EAvBW,SAAUthB,GACzB,IAAIqhB,EAAQq+S,EAAUr+S,MACtB,IAAKA,EACD,MAAM,IAAI7tB,MAAM0sU,GAAcF,EAAYhgU,IAE9C,IAAIshB,EAAYD,EAAMrhB,GAClB1G,EAA8B,iBAAdgoB,EAAyBD,EAAMC,GAAaA,EAChE,IAAKhoB,EACD,MAAM,IAAI9F,MAAM0sU,GAAcF,EAAYhgU,IAE9C,OAAO1G,EAaS8mU,CAAapgU,GACzBrT,EAAM20B,EAAU/2B,OAAS,EACtBoC,GAAO,EAAGA,IAAO,CACpB,IAAI40B,EAAQD,EAAU30B,GAAK,GAC3B,GAAI40B,GAAST,EAAUS,EACnB,MAGR,IAAIP,EAAOM,EAAU30B,EAAM,GAC3B,IAAKq0B,EACD,MAAM,IAAIxtB,MAAM0sU,GAAcF,EAAYhgU,IAE9C,OAAOghB,GASPI,GAAc,SAAUphB,EAAU5G,GAClC,IAAI0nB,EAAU1nB,EAAKpN,UACfg1B,EAAOQ,GAASxhB,EAAU8gB,GAC9B,MAAO,CACHR,KAAMO,EAASG,EAAK,GAAIF,EAASE,EAAK,IACtCA,KAAMA,IAmFVlhB,GAAS,SAAUE,EAAU5G,GAE7B,QADa,IAATA,IAAmBA,EAAO,IAAIjI,MACjB,YAAb6O,GAAuC,YAAbA,EAC1B,OAAO,EAEX,GAAiB,KAAbA,EACA,OAAO5G,EAAKY,oBAEhB,IAAIqmU,EAAKj/S,GAAYphB,EAAU5G,GAAOknB,EAAO+/S,EAAG//S,KAAMU,EAAOq/S,EAAGr/S,KAChE,OAAOl1B,WAAWw0B,EAAOU,EAAK,GAAKV,EAAK,GAAKU,EAAK,KAuFtD,IAAIs/S,GAAa,SAAUlnU,EAAMC,GAAW,OAAO,IAAIlI,KAAKiI,EAAKpN,UAluB3C,IAkuBuDqN,IACzE2iK,GAAW,SAAU5iK,EAAM8F,GAAS,OAAO,IAAI/N,KAAKiI,EAAKpN,UA/tB3C,KA+tBuDkT,IACrEqhU,GAAU,CACV,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE1CC,GAAY,CACZ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAK7EC,GAAY,SAAUx1L,EAAK73H,GAG3B,YAFY,IAARA,IAAkBA,EAAM,IACjB63H,EAAM,EAAI,IAAM,IACb,IAAIhlJ,MAAMmtB,GAAKhT,OAAO,CAACha,KAAK6T,IAAIgxI,KAAOr9I,KAAK,KAAKjE,OAAOypB,IAE1E,SAASstT,GAAkBtnU,EAAM4G,GAC7B,IAAI6sT,EAAgB/sT,GAAOE,EAAU5G,GACjCunU,EAAW3kK,GAAS5iK,GAAO,GAE/B,OAAOyzT,EADU/sT,GAAOE,EAAU2gU,GAGtC,SAASC,GAAqBC,EAAS7gU,GAEnC,IAAI8gU,EAAYJ,GAAkBG,EAAS7gU,GAAY,EAAI,EAC3D,OAAOg8J,GAAS6kK,EAASC,GAE7B,SAASC,GAAmBC,EAAUC,EAAcC,GAChD,GAAID,IAAiBC,EACjB,OAAOF,EAEX,IAAIt/S,EAAa5hB,GAAOmhU,EAAcD,GAClCr/S,EAAW7hB,GAAOohU,EAAYF,GAC9BG,EAAWz/S,EAAaC,EACxBy/S,EAAUd,GAAWU,EAAUG,GAC/BE,EAAYvhU,GAAOohU,EAAYE,GAEnC,OAAOd,GAAWU,EAAUG,GADdx/S,EAAW0/S,KA+CE,WAM3B,SAASC,EAAUT,EAAS7gU,GACxBjd,KAAKw+U,SAAWpC,EAAU0B,GAC1B99U,KAAKid,SAAWA,EAChB,IAAIwhU,EAAW1hU,GAAOE,EAAU6gU,GAChC99U,KAAK0+U,eAAiBD,EACtB,IAAIE,EAAYd,GAAqBC,EAAS7gU,GAC9Cjd,KAAK4+U,WAAaZ,GAAmBW,EAAW1hU,EAAU,WAE9Dxc,OAAOkuC,eAAe4vS,EAAUl2U,UAAW,kBAAmB,CAU1DknB,IAAK,WACD,OAAOvvB,KAAK4+U,YAEhBC,YAAY,EACZC,cAAc,IAElBr+U,OAAOkuC,eAAe4vS,EAAUl2U,UAAW,gBAAiB,CAUxDknB,IAAK,WACD,OAAOvvB,KAAKw+U,UAEhBK,YAAY,EACZC,cAAc,IA8BlBP,EAAUQ,cAAgB,SAAU1oU,EAAM4G,QACrB,IAAbA,IAAuBA,EAAW,IACtC,IAAI6gU,EAAUE,GAAmB3nU,EAAM,UAAW4G,GAC9C+hU,EAAYrB,GAAkBG,EAAS7gU,GACvC2/T,EAAa7/T,GAAOE,EAAU6gU,GAC9BmB,EAAc,EACdD,IAEAC,EAAcrC,EAAa,GAAK,EAAI,GAExC,IAAIsC,EAAUjmK,GAAS6kK,EAASmB,GAChC,OAAOV,EAAUY,YAAYD,EAASjiU,IAmC1CshU,EAAUY,YAAc,SAAUrB,EAAS7gU,GAEvC,YADiB,IAAbA,IAAuBA,EAAW,IAC/B,IAAIshU,EAAUT,EAAS7gU,IAyBlCshU,EAAUl2U,UAAU42B,YAAc,WAC9B,OAAOm9S,EAAUp8U,KAAK4+U,aAqB1BL,EAAUl2U,UAAU+2U,UAAY,WAC5B,OAAOhD,EAAUp8U,KAAKw+U,WAyB1BD,EAAUl2U,UAAU81U,WAAa,SAAUA,GACvC,GAAIn+U,KAAKid,WAAakhU,EAClB,OAAOn+U,KAAKmH,QAEhB,IAAIs3U,EAAW1hU,GAAO/c,KAAKid,SAAUjd,KAAKw+U,UACtCnoU,EAAOknU,GAAWv9U,KAAKw+U,SAAUC,GACrC,OAAOF,EAAUQ,cAAc1oU,EAAM8nU,IAOzCI,EAAUl2U,UAAUlB,MAAQ,WACxB,OAAOo3U,EAAUY,YAAYn/U,KAAKw+U,SAAUx+U,KAAKid,WAUrDshU,EAAUl2U,UAAUw3B,QAAU,SAAU1rB,GACpC,IAAIyrB,EAAU,IAAIxxB,KAAKpO,KAAKw+U,SAASv1U,WAErC,OADA22B,EAAQ/B,WAAW+B,EAAQ1tB,aAAeiC,GACnCoqU,EAAUY,YAAYv/S,EAAS5/B,KAAKid,WAY/CshU,EAAUl2U,UAAUg3U,QAAU,SAAUhjU,GACpC,IACIijU,EAASzB,GADC,IAAIzvU,KAAKpO,KAAKw+U,SAASv1U,WACMjJ,KAAKid,UAChDqiU,EAAOr/S,QAAQq/S,EAAOr2U,UAAYoT,GAClC,IAAIkjU,EAAY1B,GAAqByB,EAAQt/U,KAAKid,UAClD,OAAOshU,EAAUY,YAAYI,EAAWv/U,KAAKid,WASjDshU,EAAUl2U,UAAUm3U,UAAY,WAC5B,IAAInpU,EAAOrW,KAAKw+U,SACZhmK,EAAQpqK,KAAK4M,IAAI3E,EAAKrE,iBAAkBqE,EAAKpE,cAAeoE,EAAKnE,aAAc,EAAG,EAAG,GACzF,OAAOqsU,EAAUY,YAAY,IAAI/wU,KAAKoqK,GAAQx4K,KAAKid,WAKvDshU,EAAUl2U,UAAUY,QAAU,WAC1B,OAAOjJ,KAAK4+U,WAAW31U,WAK3Bs1U,EAAUl2U,UAAU4O,kBAAoB,WACpC,OAAOjX,KAAK0+U,gBAKhBH,EAAUl2U,UAAUuO,YAAc,WAC9B,OAAO5W,KAAKw+U,SAASxsU,kBAKzBusU,EAAUl2U,UAAUsO,SAAW,WAC3B,OAAO3W,KAAKw+U,SAASvsU,eAKzBssU,EAAUl2U,UAAUoO,QAAU,WAC1B,OAAOzW,KAAKw+U,SAAStsU,cAKzBqsU,EAAUl2U,UAAUqO,OAAS,WACzB,OAAO1W,KAAKw+U,SAAS5gT,aAKzB2gT,EAAUl2U,UAAUwO,SAAW,WAC3B,OAAO7W,KAAKw+U,SAASrsU,eAKzBosU,EAAUl2U,UAAUyO,WAAa,WAC7B,OAAO9W,KAAKw+U,SAASpsU,iBAKzBmsU,EAAUl2U,UAAU0O,WAAa,WAC7B,OAAO/W,KAAKw+U,SAASnsU,iBAKzBksU,EAAUl2U,UAAU2O,gBAAkB,WAClC,OAAOhX,KAAKw+U,SAASiB,sBAMzBlB,EAAUl2U,UAAU6J,WAAa,WAC7B,OAAOlS,KAAK4+U,WAAW1sU,cAK3BqsU,EAAUl2U,UAAUu1B,UAAY,WAC5B,OAAO59B,KAAK4+U,WAAWhhT,aAK3B2gT,EAAUl2U,UAAU2J,eAAiB,WACjC,OAAOhS,KAAK4+U,WAAW5sU,kBAK3BusU,EAAUl2U,UAAU8J,YAAc,WAC9B,OAAOnS,KAAK4+U,WAAWzsU,eAK3BosU,EAAUl2U,UAAUo3U,mBAAqB,WACrC,OAAOz/U,KAAK4+U,WAAWa,sBAK3BlB,EAAUl2U,UAAU+J,cAAgB,WAChC,OAAOpS,KAAK4+U,WAAWxsU,iBAK3BmsU,EAAUl2U,UAAU4J,YAAc,WAC9B,OAAOjS,KAAK4+U,WAAW3sU,eAG3BssU,EAAUl2U,UAAUgK,cAAgB,WAChC,OAAOrS,KAAK4+U,WAAWvsU,iBAG3BksU,EAAUl2U,UAAU43B,QAAU,SAAUvC,GACpC,MAAM,IAAIjtB,MAAM,4BAGpB8tU,EAAUl2U,UAAU8wK,gBAAkB,SAAUumK,GAC5C,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAUs3U,mBAAqB,SAAUD,GAC/C,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAU6wK,WAAa,SAAU0mK,EAAKF,GAC5C,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAUw3U,cAAgB,SAAUD,EAAKF,GAC/C,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAU0wK,WAAa,SAAU5iK,EAAKypU,EAAKF,GACjD,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAUy3U,cAAgB,SAAU3pU,EAAKypU,EAAKF,GACpD,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAUoU,SAAW,SAAUN,EAAOhG,EAAKypU,EAAKF,GACtD,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAU03U,YAAc,SAAU5jU,EAAOhG,EAAKypU,EAAKF,GACzD,MAAM,IAAIjvU,MAAM,4BAGpB8tU,EAAUl2U,UAAUi3B,QAAU,SAAUjpB,GACpC,MAAM,IAAI5F,MAAM,4BAGpB8tU,EAAUl2U,UAAUw1B,WAAa,SAAUxnB,GACvC,MAAM,IAAI5F,MAAM,4BAGpB8tU,EAAUl2U,UAAUwyU,SAAW,SAAUp1U,EAAO4Q,GAC5C,MAAM,IAAI5F,MAAM,4BAGpB8tU,EAAUl2U,UAAU23U,YAAc,SAAUv6U,EAAO4Q,GAC/C,MAAM,IAAI5F,MAAM,4BAGpB8tU,EAAUl2U,UAAUsU,YAAc,SAAUV,EAAMxW,EAAO4Q,GACrD,MAAM,IAAI5F,MAAM,4BAGpB8tU,EAAUl2U,UAAU43U,eAAiB,SAAUhkU,EAAMxW,EAAO4Q,GACxD,MAAM,IAAI5F,MAAM,4BAKpB8tU,EAAUl2U,UAAU63U,YAAc,WAC9B,OAAOlgV,KAAK4+U,WAAWsB,eAK3B3B,EAAUl2U,UAAUuJ,OAAS,WACzB,OAAO5R,KAAK4+U,WAAWhtU,UAK3B2sU,EAAUl2U,UAAU6I,SAAW,WAC3B,IA/fmB4sU,EA+ff3D,GA/fe2D,EA+fS99U,KAAKw+U,SA9f9BhB,GAAQM,EAAQlgT,aAAe,IAAM6/S,GAAUK,EAAQ7rU,gBA+ftDkuU,EAAangV,KAAKogV,eACtB,OAAOjG,EAAa,IAAMn6U,KAAKyW,UAAY,IAAMzW,KAAK4W,cAAgB,IAAMupU,GAGhF5B,EAAUl2U,UAAUgsU,aAAe,WAC/B,OAjhBah+T,EAihBMrW,KAAKw+U,SAhhBrB,IAAIpwU,KAAKiI,EAAKrE,iBAAkBqE,EAAKpE,cAAeoE,EAAKnE,aAAcmE,EAAKlE,cAAekE,EAAKjE,gBAAiBiE,EAAKhE,gBAAiBgE,EAAKopU,uBAghB7GpL,eAjhB1C,IAAqBh+T,GAohBjBkoU,EAAUl2U,UAAU+3U,aAAe,WAC/B,IAGI1iT,EAHQggT,GAAU19U,KAAK6W,YAGR,IAFL6mU,GAAU19U,KAAK8W,cAEM,IADrB4mU,GAAU19U,KAAK+W,cAEzB0nU,EA9eZ,SAAsBA,GAClB,IAAIjoU,EAAOioU,GAAY,EAAI,IAAM,IAC7B/1U,EAAQrF,KAAK6T,IAAIunU,GAGrB,MAAO,MAAQjoU,EAFHknU,GAAUr6U,KAAKkN,MAAM7H,EAAQ,KAC3Bg1U,GAAUh1U,EAAQ,IA0eb23U,CAAargV,KAAK0+U,gBAC7B4B,EA/qBO,SAAUrjU,EAAU5G,GAEnC,QADa,IAATA,IAAmBA,EAAO,IAAIjI,MACjB,YAAb6O,EACA,MAAO,MAEX,GAAiB,YAAbA,EACA,MAAO,MAEX,GAAiB,KAAbA,EACA,MAAO,GAEX,IAAIqgU,EAAKj/S,GAAYphB,EAAU5G,GAAO4nB,EAAOq/S,EAAGr/S,KAAMV,EAAO+/S,EAAG//S,KAC5Dv1B,EAAOi2B,EAAK,GAChB,OAAIj2B,EAAK2N,QAAQ,MAAQ,EACd3N,EAAK4C,MAAM,KAAK2yB,IAASA,EAAK,GAAK,EAAI,GAEzCv1B,EAAK2N,QAAQ,OAAS,EACpB3N,EAAKvF,QAAQ,KAAQ86B,GAAoB,MAAZA,EAAK,GAAmBA,EAAK,GAAV,IAEpDv1B,EA4pBUu4U,CAAavgV,KAAKid,SAAUjd,KAAKw+U,UAI9C,OAHI8B,IACAA,EAAS,KAAOA,EAAS,KAEtB5iT,EAAO,IAAM+gT,EAAW6B,GAEnC/B,EAAUl2U,UAAU+P,eAAiB,SAAUooU,EAASt5U,GACpD,OAAOlH,KAAK4+U,WAAWxmU,eAAeooU,EAASt5U,IAEnDq3U,EAAUl2U,UAAUo4U,mBAAqB,SAAUD,EAASt5U,GACxD,OAAOlH,KAAK4+U,WAAW6B,mBAAmBD,EAASt5U,IAEvDq3U,EAAUl2U,UAAUq4U,mBAAqB,SAAUF,EAASt5U,GACxD,OAAOlH,KAAK4+U,WAAW8B,mBAAmBF,EAASt5U,IAGvDq3U,EAAUl2U,UAAUs4U,YAAc,WAC9B,OAAO3gV,KAAKm+U,WAAW,WAAWjtU,YAEtCqtU,EAAUl2U,UAAUmkD,OAAOo0R,aAAe,SAAU93P,GAChD,MAAa,WAATA,GAA8B,YAATA,EACd9oF,KAAKkR,WAETlR,KAAK4+U,WAAW31U,WAG3Bs1U,EAAUl2U,UAAU0J,QAAU,WAC1B,OAAO/R,KAAKiJ,WAGhBs1U,EAAUl2U,UAAUw4U,WAAa,WAC7B,MAAM,IAAIpwU,MAAM,qBAGpB8tU,EAAUl2U,UAAUqI,OAAS,SAAUsd,GACnC,MAAM,IAAIvd,MAAM,qBAGpB8tU,EAAUl2U,UAAUy4U,UAAY,SAAU9yT,GACtC,MAAM,IAAIvd,MAAM,qBA1eM,GAA9B,IA0qB2B2mB,GAunDvB2pT,GAOAzD,GAxvDA0D,GACA,WACIhhV,KAAKu+P,QAAU,GACfv+P,KAAKihV,QAAU,IAKnBC,GACiB,IADjBA,GAEiB,GAFjBA,GAGmB,IAHnBA,GAIiB,KAGjBC,GACQ,SADRA,GAEW,YAFXA,GAUO,IAUPC,GAAU,SAAU55U,GAAU,OAAO,IAAItE,MAAMG,KAAKuV,IAAIpR,EAAQ,IAAIyrB,KAAK,KAAKpoB,KAAK,KAInFw2U,GAAY,SAAU34U,GAAS,OAAOA,EAAMjG,QAAQ,MAAO,KAwE3D6+U,GAAgB,SAAUhnU,EAAK5P,GAE/B,OADA4P,EAAI5P,EAAKgJ,QAAQ,IAAMhJ,EAAKhF,KACrB4U,GAiBP7R,GAAY,SAAUC,GAAS,OAAOA,SAQtCosD,GAAW,SAAUpsD,GAAS,OAAOD,GAAUC,IAA6B,iBAAZ,IAAyB4J,OAAOxJ,MAAMJ,IAItG64U,GAAa,SAAU74U,GAAS,OAAOuQ,SAASvQ,EAAO,KAIvDkxP,GAAQ,SAAUlxP,EAAOyN,EAAKyC,GAAO,OAAOvV,KAAK8S,IAAIyC,EAAKvV,KAAKuV,IAAIzC,EAAKzN,KAMxE3F,GAAS,WAIT,IAHA,IAAIqE,EAAcC,UAEd8vB,EAAO,GACFqY,EAAK,EAAGA,EAAKnoC,UAAUG,OAAQgoC,IACpCrY,EAAKqY,GAAMpoC,EAAYooC,GAE3B,OAAO/uC,OAAOC,OAAO0H,MAAM3H,OAAQ02B,IA0DnCqqT,IA/FuBpqT,GA+FD,cA/FkB,SAAU/gB,EAAM3N,GACxD,IAAIvB,EAAQi1U,EAAU/lU,GAEtB,OADAlP,EAAMiwB,IAAQ1uB,GACPvB,IA6GPs6U,GAAsB,SAAUprU,EAAM4F,EAAMxW,EAAOyW,EAAKmgU,EAAM/lU,EAAS8F,EAASC,GAChF,SAAIhG,GACAA,EAAKO,gBAAkBqF,GACvB5F,EAAKM,aAAelR,GACpB4Q,EAAKI,YAAcyF,GACnB7F,EAAKQ,aAAewlU,GACpBhmU,EAAKS,eAAiBR,GACtBD,EAAKU,eAAiBqF,GACtB/F,EAAKW,oBAAsBqF,IAQ/BqlU,GAAc,SAAUh5U,GAAS,OAAOD,GAAUC,IAAUA,EAAMO,SAAW6rD,GAASpsD,EAAMO,YAI5F04U,GAA8B,cAK9BC,GAA4B,WAC5B,SAASA,EAAWtE,GAChB,IAAIlvK,EAAckvK,EAAGlvK,YAAayzK,EAAoBvE,EAAGuE,kBAAmBnxU,EAAS4sU,EAAG5sU,OAAQoxU,EAAKxE,EAAGyE,UAAWA,OAAmB,IAAPD,GAAwBA,EAAIv6D,EAAK+1D,EAAGpoU,gBAAiBA,OAAyB,IAAPqyQ,EAAgB25D,GAA4B35D,EAAIy6D,EAAK1E,EAAG50U,MAAOA,OAAe,IAAPs5U,EAAgB,KAAOA,EAAIC,EAAK3E,EAAG4E,iBAAkBA,OAA0B,IAAPD,GAAuBA,EAkD5W,GAjDAjiV,KAAKic,MAAO,EACZjc,KAAKyF,OAAQ,EACbzF,KAAKqW,MAAO,EACZrW,KAAKmc,OAAQ,EACbnc,KAAKsW,SAAU,EACftW,KAAKoc,SAAU,EACfpc,KAAKqc,cAAe,EACpBrc,KAAK+F,WAAY,EACjB/F,KAAKmiV,YAAc,KACnBniV,KAAKoiV,eAAiB,GACtBpiV,KAAKqiV,WAAa,aAClBriV,KAAKu+P,QAAU,CACX95P,EAAK,IACLI,EAAK,IACLP,EAAK,IACLY,EAAK,IACLV,EAAK,IACLI,EAAK,IACLI,EAAK,IACLC,EAAK,IACLd,EAAK,IACLy2O,EAAK,KAET56O,KAAKsmN,OAAS7vM,EAAQ,IAAIrI,MAC1BpO,KAAK+hV,WAAY,EACjB/hV,KAAKsiV,sBAAwB,CACzBnmS,UAAW,KACXomS,iBAAkB,CACd99U,EAAK,CAAEiE,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjD39U,EAAK,CAAE6D,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjDl+U,EAAK,CAAEoE,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjDt9U,EAAK,CAAEwD,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjDh+U,EAAK,CAAEkE,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjD59U,EAAK,CAAE8D,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjDx9U,EAAK,CAAE0D,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjDv9U,EAAK,CAAEyD,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjDr+U,EAAK,CAAEuE,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,GACjD5nG,EAAK,CAAElyO,MAAO,KAAM2N,KAAM,KAAMmsU,gBAAiB,KAGzDxiV,KAAKuxB,WAAW,CACZ68I,YAAaA,EACbyzK,kBAAmBA,EACnBnxU,OAAQA,EACRqxU,UAAWA,EACX7sU,gBAAiBA,EACjBxM,MAAOA,EACPw5U,iBAAkBA,IAEjBx5U,EAQD1I,KAAKsmN,OAAS81H,EAAU1zU,OARhB,CACR1I,KAAKsmN,OAAS7vM,EAAQ,IAAIrI,MAE1B,IADA,IAAIq0U,EAAeziV,KAAK0iV,iBAAiB1iV,KAAK0I,MAAO1I,KAAK0Q,QAAQ6tP,QACzDh3P,EAAI,EAAGA,EAAIk7U,EAAaj7U,OAAQD,IACrCvH,KAAK2iV,YAAYF,EAAal7U,IAAI,IAm4C9C,OA53CA9G,OAAOkuC,eAAeizS,EAAWv5U,UAAW,QAAS,CACjDknB,IAAK,WACD,OAAOvvB,KAAKsmN,QAEhB92L,IAAK,SAAU9mB,KACPA,GAAWA,aAAiB0F,QAIhCpO,KAAKsmN,OAAS59M,EACd1I,KAAK4iV,qBAET/D,YAAY,EACZC,cAAc,IAElBr+U,OAAOkuC,eAAeizS,EAAWv5U,UAAW,WAAY,CACpDknB,IAAK,WAGD,IAFA,IAAIszT,EAAW3B,GACX4B,EAAWriV,OAAOypB,KAAKlqB,KAAKuuK,KAAKw0K,MAC5Bx7U,EAAI,EAAGA,EAAIu7U,EAASt7U,OAAQD,IAAK,CACtC,IAAIgK,EAAMuxU,EAASv7U,GACfmB,EAAQ1I,KAAKuuK,KAAKw0K,KAAKxxU,GAC3B,GAAI7I,EAAMtG,MAAQsG,EAAM0M,UAAY1M,EAAMs6U,SACtCt6U,EAAMtG,OAAS8+U,GAA2B,CAC1C2B,EAAWn6U,EAAMtG,KACjB,OAGR,OAAOygV,GAEXhE,YAAY,EACZC,cAAc,IAKlB8C,EAAWv5U,UAAUkpB,WAAa,SAAUrqB,GACxClH,KAAKuuK,KAAOrnK,EAAQknK,YACpBpuK,KAAK6hV,kBAAoB36U,EAAQ26U,mBAAqB,OACtD7hV,KAAK0Q,OAASxJ,EAAQwJ,OACtB1Q,KAAK+hV,UAAY76U,EAAQ66U,UACzB/hV,KAAKijV,WAAajjV,KAAKkjV,mBAAmBljV,KAAK6iV,UAC/C7iV,KAAKmjV,WAAanjV,KAAKojV,cAAcpjV,KAAK6iV,UAC1C7iV,KAAKkV,gBAAkBhO,EAAQgO,gBAC/BlV,KAAKkiV,iBAAmBh7U,EAAQg7U,kBAEpCN,EAAWv5U,UAAU+wM,SAAW,SAAU1wM,GACjCA,EAIK+zU,EAAQ/zU,EAAO1I,KAAKsmN,UAC1BtmN,KAAKsmN,OAAS81H,EAAU1zU,GACxB1I,KAAKqjV,gBAAe,KALpBrjV,KAAKsmN,OAAS7vM,EAAQ,IAAIrI,MAC1BpO,KAAKqjV,gBAAe,IAMxBrjV,KAAK4iV,oBAKThB,EAAWv5U,UAAU6rE,SAAW,WAC5B,IAAI00L,EAAQ5oQ,KAEZ,OAAOA,KAAKuuK,KAAK/sI,gBAAgBxhC,KAAK0Q,OAAQ1Q,KAAK6iV,UAAUl/R,QADlD,SAAUz+C,EAAG6rH,GAAK,OAAO7rH,GAAgB,YAAX6rH,EAAErrH,MAAiC,cAAXqrH,EAAErrH,MAAwBkjQ,EAAM06E,YAAYvyN,EAAEr9G,QAAQ,OAC7C,IAK9EkuU,EAAWv5U,UAAU07K,SAAW,WAC5B,IAAK,IAAIx8K,EAAI,EAAGA,EAAIvH,KAAKqiV,WAAW76U,OAAQD,IACxC,IAAKvH,KAAKsjV,YAAYtjV,KAAKqiV,WAAW96U,IAClC,OAAO,KAGf,OAAO60U,EAAUp8U,KAAK0I,QAK1Bk5U,EAAWv5U,UAAUk7U,iBAAmB,SAAU7yU,GAC9C,OAAO1Q,KAAKuuK,KAAKp3J,WAAWnX,KAAK+jL,WAAYrzK,EAAQ1Q,KAAK6iV,WAK9DjB,EAAWv5U,UAAUm7U,iBAAmB,SAAUC,QACzB,IAAjBA,IAA2BA,EAAe,IAC9C,IAAI/yU,EAAS+yU,GAAgBzjV,KAAK0Q,OAC9BkwB,EAAO5gC,KAAKuuK,KAAKp3J,WAAWnX,KAAK0I,MAAOgI,EAAQ1Q,KAAK6iV,UACrDnsT,EAAO12B,KAAK0iV,iBAAiB1iV,KAAK0I,MAAOgI,GAC7C,IAAK1Q,KAAKkiV,kBAAoBliV,KAAKsiV,sBAAsBnmS,UAAW,CAIhE,IAHA,IAAIunS,EAAuB,GACvBC,EAAgB3jV,KAAKuuK,KAAKp3J,WAAWnX,KAAK0I,MAAOgI,EAAQ1Q,KAAK6iV,UAC9De,EAAiB5jV,KAAK6jV,yBAAyBnzU,GAC1CnJ,EAAI,EAAGA,EAAIo8U,EAAcn8U,OAAQD,IAAK,CAC3C,IAAIuM,EAAS4iB,EAAK6nO,QAAQh3P,GAC1B,GAA6B,YAAzBmvB,EAAKuqT,QAAQ15U,GAAG7B,KAChBg+U,GAAwB9iT,EAAKr5B,QAE5B,GAAIvH,KAAK8jV,wBAAwBhwU,GAAS,CAC3C,IAAIiwU,EAAkB/jV,KAAKgkV,mBAAmBttT,EAAMnvB,GACpD,GAAe,MAAXuM,EAAgB,CAChB,IAAImwU,GAAgB1C,GAAWvhV,KAAK8jV,wBAAwBhwU,IAtK9D,GAsK0F5C,WACxF,GAAI6yU,EAAgBv8U,OA1KN,EA2KVk8U,GAAwBE,EAAe9vU,GAAQvM,QAG/C,GAAIvH,KAAK8jV,wBAAwBhwU,GAE7B4vU,GADwBtC,GAAQ2C,EAAgBv8U,OAASy8U,EAAaz8U,QAAUy8U,EAGhF18U,GAAKw8U,EAAgBv8U,OAAS,OAG9Bk8U,GAAwBE,EAAe9vU,GAAQvM,QAKvD,GAAIvH,KAAK8jV,wBAAwBhwU,GAAS,CAClCmwU,EAAejkV,KAAK8jV,wBAAwBhwU,GAAQ5C,WAExDwyU,GADwBtC,GAAQ2C,EAAgBv8U,OAASy8U,EAAaz8U,QAAUy8U,EAGhF18U,GAAKw8U,EAAgBv8U,OAAS,OAG9Bk8U,GAAwBE,EAAe9vU,GAAQvM,QAKvDm8U,GAAwB9iT,EAAKr5B,GAGrCq5B,EAAO8iT,EAGX,OADa1jV,KAAKw0C,MAAM5T,EAAMlK,IAMlCkrT,EAAWv5U,UAAUw7U,yBAA2B,SAAUJ,GACtD,IAAI76E,EAAQ5oQ,UACS,IAAjByjV,IAA2BA,EAAe,IAC9C,IAAI/yU,EAAS+yU,GAAgBzjV,KAAK0Q,OAC9BwzU,EAA0B,CAC1Bz/U,EAAK,GACLI,EAAK,GACLP,EAAK,GACLY,EAAK,GACLV,EAAK,GACLI,EAAK,GACLI,EAAK,GACLC,EAAK,GACLd,EAAK,GACLy2O,EAAK,IAST,OAPAn6O,OAAOypB,KAAKlqB,KAAKsiV,sBAAsBC,kBAAkBjhV,SAAQ,SAAUiQ,GACvE,IAAI8E,EAAOuyP,EAAMu7E,mBAAmB5yU,GAAK8E,KACzC,GAAIA,EAAM,CACN,IAAI+tU,EAAuBx7E,EAAMr6F,KAAKp3J,WAAWd,EAAM3F,EAAQk4P,EAAMi6E,UACrEqB,EAAwB3yU,GAAO6yU,MAGhCF,GAEXtC,EAAWv5U,UAAUg7U,eAAiB,SAAU36U,GAE5C,IADA,IAAI+5U,EAAeziV,KAAK0iV,iBAAiB1iV,KAAK0I,MAAO1I,KAAK0Q,QAAQ6tP,QACzDh3P,EAAI,EAAGA,EAAIk7U,EAAaj7U,OAAQD,IACrCvH,KAAK2iV,YAAYF,EAAal7U,GAAImB,IAM1Ck5U,EAAWv5U,UAAUi7U,YAAc,SAAUxvU,GACzC,OAAQA,GACJ,IAAK,IAAK,OAAO9T,KAAKic,KACtB,IAAK,IACL,IAAK,IAAK,OAAOjc,KAAKyF,MACtB,IAAK,IAAK,OAAOzF,KAAKqW,KACtB,IAAK,IAAK,OAAOrW,KAAKqW,MAAQrW,KAAKyF,OAASzF,KAAKic,KACjD,IAAK,IACL,IAAK,IAAK,OAAOjc,KAAKmc,MACtB,IAAK,IACL,IAAK,IAAK,OAAOnc,KAAK+F,UACtB,IAAK,IAAK,OAAO/F,KAAKsW,QACtB,IAAK,IAAK,OAAOtW,KAAKoc,QACtB,IAAK,IAAK,OAAOpc,KAAKqc,aACtB,QACI,OAAO,IAGnBulU,EAAWv5U,UAAUs6U,YAAc,SAAU7uU,EAAQpL,GACjD,OAAQoL,GACJ,IAAK,IAED9T,KAAKic,KAAOvT,GACE,IAAVA,GACA1I,KAAKsmN,OAAO3pM,YAAY,KAE5B,MACJ,IAAK,IAED3c,KAAKyF,MAAQiD,GACC,IAAVA,GACI1I,KAAKkiV,kBACLliV,KAAKsmN,OAAOu0H,SAAS,GAG7B,MACJ,IAAK,IACD76U,KAAKqW,KAAO3N,EACZ,MACJ,IAAK,IACL,IAAK,IACD1I,KAAKmc,MAAQzT,EACb,MACJ,IAAK,IACL,IAAK,IACD1I,KAAK+F,UAAY2C,EACjB,MACJ,IAAK,IACD1I,KAAKsW,QAAU5N,EACf,MACJ,IAAK,IACD1I,KAAKoc,QAAU1T,EACf,MACJ,IAAK,IACD1I,KAAKqc,aAAe3T,EAKxB1I,KAAK+jL,YACL/jL,KAAK4iV,oBAGbhB,EAAWv5U,UAAUg8U,WAAa,SAAUvwU,EAAQiJ,GAChD,GAAKtU,GAAUqL,IAAYrL,GAAUsU,IAAsB,IAAXA,EAAhD,CAGA,IAEIunU,EAFAlxQ,EAAWgpQ,EAAUp8U,KAAK0I,OAC1B67U,GAAe,EAEfC,EAAqB,MAAX1wU,EACV2wU,EAAmB,MAAX3wU,GAA6B,MAAXA,EAC1B4wU,EAAe1kV,KAAKsjV,YAAYxvU,GACpC,GAAK9T,KAAKkiV,mBAAqBuC,IAASD,EA8KpC,OAAQ1wU,GACJ,IAAK,IACDs/D,EAASz2D,YAAYy2D,EAASx8D,cAAgBmG,GAC9C,MACJ,IAAK,IACDq2D,EAAWkpQ,EAAUt8U,KAAK0I,MAAOqU,GACjC,MACJ,IAAK,IACL,IAAK,IACDq2D,EAAS9zC,QAAQ8zC,EAAS38D,UAAYsG,GACtC,MACJ,IAAK,IACL,IAAK,IACDq2D,EAAS32D,SAAS22D,EAASv8D,WAAakG,GACxCwnU,GAAe,EACf,MACJ,IAAK,IACDnxQ,EAAS2lG,WAAW3lG,EAASt8D,aAAeiG,GAC5CwnU,GAAe,EACf,MACJ,IAAK,IACDnxQ,EAAS8lG,WAAW9lG,EAASr8D,aAAegG,GAC5CwnU,GAAe,EACf,MACJ,IAAK,IACDnxQ,EAAS+lG,gBAAgB/lG,EAASp8D,kBAAoB+F,GACtD,MACJ,IAAK,IACDq2D,EAAS32D,SAAS22D,EAASv8D,WAAc,GAAKkG,GAC9CwnU,GAAe,MA3MuB,CAC9C,IAAIhC,EAAmBviV,KAAKsiV,sBAAsBC,kBAAoB,GAClEoC,EAAuB3kV,KAAK8jV,wBAAwBhwU,GACpDmI,EAAOsmU,EAAiBp+U,EAAEuE,OAAS0qE,EAASx8D,cAC5CnR,EAAQ88U,EAAiBj+U,EAAEoE,OAAS0qE,EAASz8D,WAC7CuF,EAAMqmU,EAAiB/9U,EAAEkE,OAAS65U,EAAiB99U,EAAEiE,OAAS0qE,EAAS38D,UACvE4lU,EAAOkG,EAAiB39U,EAAE8D,OAAS65U,EAAiB19U,EAAE6D,OAAS0qE,EAASv8D,WACxEP,EAAUisU,EAAiBv9U,EAAE0D,OAAS0qE,EAASt8D,aAC/CsF,EAAUmmU,EAAiBt9U,EAAEyD,OAAS0qE,EAASr8D,aAC/CsF,EAAekmU,EAAiB3nG,EAAElyO,OAAS0qE,EAASp8D,kBACxD,OAAQlD,GACJ,IAAK,IACDmI,GAAQc,EACR,MACJ,IAAK,IACDtX,GAASsX,EACT,MACJ,IAAK,IACL,IAAK,IACDb,GAAOa,EASf,GAAe,MAAXjJ,EAAgB,CAChB,IAAKrO,EAAQ,GAAKA,EAAQ,KAClBi/U,EAGA,OAFA1kV,KAAK2iV,YAAY7uU,GAAQ,QACzB9T,KAAK4kV,uBAAuB9wU,GAIpC,IAAK4wU,EAAc,CACf,GAAIj/U,EAAQ,EACRA,EAAQm0P,GAAan0P,EAAQ,GAAM,EAArB,GAAyB,EAAG,QAEzC,CACD,IAAIo/U,EAAap8U,GAAUk8U,GACvBl/U,GACEsX,EArWR,GAqWoC,GAClCtX,EAAQm0P,GAAMirF,EAAY,EAAG,IAEjCp/U,EAAQm0P,GAAMn0P,EAAO,EAAG,IAE5BA,EAAQm0P,GAAMn0P,EAAO,EAAG,SAEvB,GAAe,MAAXqO,EACL,GAAI4wU,GACA,GAAIxoU,GAAO,GAAKA,EAAM,GAGlB,OAFAlc,KAAK2iV,YAAY7uU,GAAQ,QACzB9T,KAAK4kV,uBAAuB9wU,QAI/B,IAAK4wU,EAAc,CACpB,GAAIj8U,GAAUk8U,KACNzoU,GAAO,GAAKA,EAAM,IAGlB,OAFAlc,KAAK2iV,YAAY7uU,GAAQ,QACzB9T,KAAK4kV,uBAAuB9wU,GAIpC,GAAIiJ,EAAS,EAAG,CACZ,IAAI+nU,EAAWr8U,GAAUk8U,GAAwBzoU,EAAW,GAAK7Y,KAAK6T,IAAI6F,EAAS,IAA5B,EACvDb,EAAM09O,GAAMkrF,EAAU,EAAG,QAExB,CACGA,EAAWr8U,GAAUk8U,GAAwBzoU,EAAMa,EAAS,GAChEb,EAAM09O,GAAMkrF,EAAU,EAAG,IAE7B5oU,EAAM09O,GAAM19O,EAAK,EAAG,IAG5B,IAAI6oU,EAAgBtO,EAAWx6T,EAAMxW,EAAOyW,EAAKmgU,EAAM/lU,EAAS8F,EAASC,GACrE2oU,EAAoBR,GAAWC,EAC/BzkV,KAAKilV,0BAA0B7xQ,EAAUt/D,EAAQ0wU,EAAU/+U,EAAQyW,GACnE,KACAgpU,EAAsBzD,GAAoBsD,EAAe9oU,EAAMxW,EAAOyW,EAAKmgU,EAAM/lU,EAAS8F,EAASC,GACnGrc,KAAK+jL,YAAc09J,GAAoBsD,EAAe9oU,EAAMxW,EAAOyW,EAAKmgU,EAAM/lU,EAAS8F,EAASC,IAChG+2D,EAAWgpQ,EAAU2I,GACrB/kV,KAAKmlV,2BAEAX,GAAWQ,EACZA,EAAkBruU,aAAelR,EAC7BzF,KAAKsjV,YAAY,KACb4B,GACA9xQ,EAAWgpQ,EAAU2I,GACrB/kV,KAAK4kV,uBAAuB9wU,KAG5BwwU,GAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOjD,EACP4Q,KAAM+lU,EAAU4I,GAChBxC,gBAAiBzlU,EACjBo/B,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,IAGxBoxU,GACLllV,KAAK4kV,uBAAuB9wU,GAC5Bs/D,EAAWgpQ,EAAU2I,GACjB/kV,KAAKsjV,YAAY,MAAQtjV,KAAKsjV,YAAY,OAE1CtjV,KAAK2iV,YAAY,KAAK,GACtB3iV,KAAK4kV,uBAAuB,QAIhC5kV,KAAK4kV,uBAAuB9wU,GAC5Bs/D,EAAWgpQ,EAAU4I,KAIzBV,GAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOjD,EACP4Q,KAAM+lU,EAAU4I,GAChBxC,gBAAiBzlU,EACjBo/B,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,IAGxB2wU,GAASO,IACVA,EAAkBvuU,YAAcyF,EAC5Blc,KAAKsjV,YAAY,KACb4B,GACA9xQ,EAAWgpQ,EAAU2I,GACrB/kV,KAAK4kV,uBAAuB9wU,KAG5BwwU,GAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOwT,EACP7F,KAAM+lU,EAAU4I,GAChBxC,gBAAiBzlU,EACjBo/B,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,IAGxBoxU,GACL9xQ,EAAWgpQ,EAAU2I,GACrB/kV,KAAK4kV,uBAAuB9wU,GACxB9T,KAAKsjV,YAAY,MAAQtjV,KAAKsjV,YAAY,OAE1CtjV,KAAK2iV,YAAY,KAAK,GACtB3iV,KAAK4kV,uBAAuB,QAIhC5kV,KAAK4kV,uBAAuB9wU,GAC5Bs/D,EAAWgpQ,EAAU4I,KAIzBV,GAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOwT,EACP7F,KAAM+lU,EAAUp8U,KAAK0I,OACrB85U,gBAAiBzlU,EACjBo/B,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,KAuCjC9T,KAAKqlV,2BACLjyQ,EAAWpzE,KAAKslV,iBAAiBlyQ,IAEjCmxQ,IAAiBvkV,KAAK+hV,YAAa3uQ,EAAS38D,UAAczW,KAAKsmN,OAAO7vM,WAMrE6tU,IACDtkV,KAAK2iV,YAAY7uU,GAAQ,GACzB9T,KAAKsmN,OAASlzI,EACVpzE,KAAK+jL,YACL/jL,KAAK4iV,sBAOjBhB,EAAWv5U,UAAUk9U,UAAY,SAAUjI,GAsBvC,IArBA,IAAIxpU,EAASwpU,EAAGxpU,OAAQ0xU,EAAclI,EAAGkI,YAAaC,EAAoBnI,EAAGmI,kBAAmBC,EAAoBpI,EAAGoI,kBAAmBC,EAAgBrI,EAAGsI,aAAcC,EAAavI,EAAGuI,WAAYC,EAAiBxI,EAAGwI,eACvNC,GAAiBL,EACjBM,EAAYhmV,KAAK0iV,iBAAiB1iV,KAAK0I,MAAO1I,KAAK0Q,QACnDu1U,EAAoBD,EAAU/E,QAC7BhrT,QAAO,SAAU7wB,GAAK,MAAkB,YAAXA,EAAEM,QAC/B4U,KAAI,SAAUlV,EAAG2T,GAClB,MAAO,CACHmtU,cAAentU,EACfrT,KAAMN,EAAEM,KACRgO,QAAStO,EAAEsO,QACX+E,QAAS,OAGb0tU,EAAgBH,EAAU/E,QACzB3mU,KAAI,SAAUlV,GACf,MAAO,CACHM,KAAMN,EAAEM,KACRgO,QAAStO,EAAEsO,QACXktB,KAAM,OAGLr5B,EAAI,EAAGA,EAAI0+U,EAAkBz+U,OAAQD,IAAK,CAE/C,IADA,IAAI6+U,EAAWH,EAAkB1+U,GACxBojC,EAAI,EAAGA,EAAIy7S,EAAS1yU,QAAQlM,OAAQmjC,IACrCs7S,EAAkB1+U,EAAIojC,KACtBs7S,EAAkB1+U,EAAIojC,GAAGlyB,QAAU2tU,EAAS1yU,QAAQi3B,IAG5DpjC,GAAK6+U,EAAS1yU,QAAQlM,OAAS,EAEnC,IAASD,EAAI,EAAGA,EAAI4+U,EAAc3+U,OAAQD,IAAK,CAE3C,IADI6+U,EAAWD,EAAc5+U,GACpBojC,EAAI,EAAGA,EAAIy7S,EAAS1yU,QAAQlM,OAAQmjC,IACrCw7S,EAAc5+U,EAAIojC,KAClBw7S,EAAc5+U,EAAIojC,GAAG/J,KAAOwlT,EAAS1yU,QAAQi3B,IAGrDpjC,GAAK6+U,EAAS1yU,QAAQlM,OAAS,EAEnC,IAGI6+U,EAAc,CACd39U,MAAO,KACP49U,cAAc,EACdC,UANkBR,GAA4B,MAAXjyU,GAAkBkyU,EAAU/E,QAC9DhrT,QAAO,SAAU7wB,GAAK,MAAkB,UAAXA,EAAEM,QAC/B4mD,MAAK,SAAUlnD,GAAK,OAAOA,EAAEsO,QAAQlM,OA3kBZ,KAglB1Bg/U,oBAAoB,GAExB,IAAKhB,EAAa,CACd,IAAIO,EAkBA,OAHA/lV,KAAKymV,mBACLzmV,KAAK2iV,YAAY7uU,GAAQ,GACzB9T,KAAK4kV,uBAAuB9wU,GACrB/Q,GAAOsjV,EAAa,CAAE39U,MAAO,KAAM49U,cAAc,IAjBxD,IAAS/+U,EAAI,EAAGA,EAAI0+U,EAAkBz+U,OAAQD,IAAK,CAC/C,IAAIkR,EAAUwtU,EAAkB1+U,GAAGkR,QAC/BiuU,EAA4Bf,EAAchlT,WAAWloB,GACrDkuU,EAA0BhB,EAAciB,SAASnuU,GACjDouU,EAAiClB,EAAchwU,QAAQ8C,EAAUA,IAAY,EACjF,GAAIiuU,GAA6BC,GAA2BE,EAIxD,OAHA7mV,KAAKymV,mBACLzmV,KAAK2iV,YAAY7uU,GAAQ,GACzB9T,KAAK4kV,uBAAuB9wU,GACrB/Q,GAAOsjV,EAAa,CAAE39U,MAAO,KAAM49U,cAAc,KAWxE,IAAIQ,EAAW9mV,KAAKuuK,KAAKp3J,WAAWnX,KAAK0I,MAAO1I,KAAK0Q,OAAQ1Q,KAAK6iV,UAC9DkE,EAAaf,EAAUznF,QACvByoF,GAAW,EACX/nU,EAAS,GACTxL,EAAU,GACVwwU,EAAe,GACfgD,EAAa,GACbC,EAAa,GACbC,EAAS,GACTC,EAAsB,GAC1B,IAAS7/U,EAAI,EAAGA,EAAI4+U,EAAc3+U,OAAQD,IACtC6/U,GAAuBjB,EAAc5+U,GAAGq5B,KAE5C,IAAIymT,EAAkBrnV,KAAK0Q,SAAWq2U,GACjC/mV,KAAK0Q,SAAW02U,GAChBpnV,KAAK0Q,SAAWo1U,GAChB9lV,KAAK0Q,OAAOlJ,SAAWs+U,EAAet+U,OACvC8/U,GAAsBD,EAAiBD,EAAsBtB,GAAgBnwU,QAAQ7B,GAErFyzU,GADoBF,EAAiBD,EAAsBtB,GAAgBptU,YAAY5E,GACpDwzU,EAAqB,EACxDE,EAAyB1B,EAAet+U,OAASm+U,EAAcn+U,OACnE,GAAIu+U,IAAmBA,IAAkB/lV,KAAKkiV,iBAAmB,CAC7D,IAAS36U,EAAI,EAAGA,EAAIu/U,EAASt/U,OAAQD,IAAK,CACtC,GAAIw/U,EAAWx/U,KAAOuM,EAElBL,GADezT,KAAKsjV,YAAYxvU,GACVgzU,EAASv/U,GAAK,IAChCigV,EAAyB,EACrBvD,EAAaz8U,OAASggV,EAAyBD,IAC/CtD,GAAgB0B,EAAcp+U,IAAM,IAIxC08U,GAAgB0B,EAAcp+U,IAAM,GAExCy/U,GAAW,OAELA,GAKNG,GAAUL,EAASv/U,GACnB2/U,GAAcJ,EAASv/U,KALvB0X,GAAU6nU,EAASv/U,GACnB0/U,GAAcH,EAASv/U,IAO/B,GAAI8/U,IACID,EAAoB5/U,OAASm+U,EAAcn+U,OAC3Cy8U,GAAgBuB,GAEVK,IAAcC,EAAet+U,OAASm+U,EAAcn+U,QAG1Dy8U,EAAaz8U,OAAS+/U,GACtB,OAAOxkV,GAAOsjV,EAAa,CAAE39U,MAAO,KAAM49U,cAAc,IAGhE,IAAKe,GAAmBA,IAAmBrnV,KAAKkiV,iBAAmB,CAC/DzuU,EAAU,GACVwwU,EAAe,GACfhlU,EAAS,GACTkoU,EAAS,GACTH,GAAW,EACX,IAASz/U,EAAI,EAAGA,EAAIu+U,EAAet+U,OAAQD,IAAK,CAC5C,GAAIu+U,EAAev+U,KAAOuM,EAEtBL,GADezT,KAAKsjV,YAAYxvU,GACVgzU,EAASv/U,IAAM,GAAK,IACtCigV,EAAyB,EACrBvD,EAAaz8U,OAASggV,EAAyBD,IAC/CtD,GAAgB0B,EAAcp+U,IAAM,IAIxC08U,GAAgB0B,EAAcp+U,IAAM,GAExCy/U,GAAW,OAELA,EAING,GAAUxB,EAAcp+U,EAAIigV,IAA2B,GAHvDvoU,GAAU0mU,EAAcp+U,IAAM,GAMlCu+U,EAAet+U,OAASm+U,EAAcn+U,SACtCy8U,GAAgBuB,IAI5B,IAAKO,EACD,GAAI/lV,KAAKkiV,iBAAkB,CACvBzuU,EAAU,GACVwwU,EAAe,GACfhlU,EAAS,GACTkoU,EAAS,GACTH,GAAW,EACX,IAASz/U,EAAI,EAAGA,EAAIu/U,EAASt/U,OAAQD,IAAK,CACtC,GAAIw/U,EAAWx/U,KAAOuM,EAElBL,GADezT,KAAKsjV,YAAYxvU,GACVgzU,EAASv/U,GAAK,IACpCy/U,GAAW,OAELA,EAING,GAAUL,EAASv/U,GAHnB0X,GAAU6nU,EAASv/U,SAQ3BkM,EAAUgyU,EAAoBxB,EAAexwU,EAGrD,IAAIg0U,EAAa,KACbhiV,EAAQzF,KAAK0nV,WAAWlC,GACxBmC,EAAY3nV,KAAK4nV,eAAepC,EAAa1xU,GAC7C+zU,EAAoC,MAAhBrC,EACpBrD,EAAcniV,KAAKmiV,aAAe,GAClC0F,GACqB,MAAjB5D,IACAA,EAAexwU,GAKC,IAHF8tU,GAAWkE,EACzBD,GACCO,EAAgB9B,EAAexwU,GAAW+xU,IACrBxlV,KAAK8nV,YAAY9B,EAAU/E,QAASntU,IAC1D9T,KAAK+nV,qBAAqBj0U,IAI9B9T,KAAKymV,mBAET,IAAIuB,EAAchoV,KAAKgoV,YAAYhC,EAAU/E,QAASntU,GAClDm0U,EAAeD,EAAcA,EAAYt0U,QAAU,KACnDguB,EAAgB1hC,KAAK0hC,cAAcumT,IAAiBA,EAAazgV,OACrE,GAAIu+U,GACIF,IAAe5B,EAEf,OADAjkV,KAAK2iV,YAAY7uU,GAAQ,GAClB/Q,GAAOsjV,EAAa,CAAE39U,MAAO,KAAM49U,cAAc,IAGhE,IAAI4B,EAAmBz0U,EAAQjM,OAAS,EACpC2gV,GAAW,EACXjlL,EAAS6iL,EAAgB9B,EAAexwU,EAC5C,IAASlM,EAAIlE,KAAKuV,IAAI,EAAGsvU,GAAmB3gV,GAAKkM,EAAQjM,QAChD2gV,EADwD5gV,IAAK,CAIlE27J,EAASuiL,EACLD,EACAO,EACI9B,EACCxwU,EAAQzI,UAAUzD,GAAKi+U,GAC5BO,GAAkB/lV,KAAKkiV,mBACvBiG,GAAW,EACXjlL,EAASm+K,GAAUn+K,GAEnBA,EAASk+K,GAAQ1/S,EAAgBwhI,EAAO17J,QAAU07J,GAEtD,IAAIklL,EAAenvU,SAASiqJ,EAAQ,IAChCmlL,EAAsBppU,EAASikJ,EAASikL,EAC5CM,EAAaznV,KAAKuuK,KAAKhxJ,UAAU8qU,EAAqBroV,KAAK0Q,OAAQ1Q,KAAK6iV,UACxE,IAAIyF,GAA+B,EAC/BvC,IAAkBrE,GAAY+F,IAQ1BznV,KAAKkiV,mBACLuF,EAAaznV,KAAKuuK,KAAKhxJ,UAAU0pU,EAAa/jL,EAASgkL,EAAYlnV,KAAK0Q,OAAQ1Q,KAAK6iV,UACrFyF,GAA+B,GAGvC,IAAIC,GAAyBz/U,MAAMmQ,SAASusU,EAAa,MAASO,GAAiBF,GAA8B,KAAhBL,EACjG,IAAKiC,IAAe3+U,MAAMs/U,IAAiBG,GAAyBvoV,KAAKkiV,iBAAkB,CACvF,GAzxBG,MAyxBCpuU,IAA4BrO,EAAO,CAEnC,IAAI+iV,EAAcJ,EAzxBhB,EA0xBEI,GAAe,GAAKA,EAAc,MAClCf,EAAarL,EAAUp8U,KAAK0I,QACjBmyU,SAAS2N,GAChBf,EAAW9wU,aAAe6xU,IAC1Bf,EAAavlT,EAAeo6S,EAAUmL,GAAa,MAIhD,MAAX3zU,IACA2zU,EAAahR,EAAWx9T,SAASiqJ,EAAQ,IAAKljK,KAAKyF,MAAQzF,KAAK0I,MAAMiO,WAAa,EAAG3W,KAAKqW,KAAOrW,KAAK0I,MAAM+N,UAAY,EAAGzW,KAAKmc,MAAQnc,KAAK0I,MAAMmO,WAAa,EAAG7W,KAAKsW,QAAUtW,KAAK0I,MAAMoO,aAAe,EAAG9W,KAAKoc,QAAUpc,KAAK0I,MAAMqO,aAAe,EAAG/W,KAAKqc,aAAerc,KAAK0I,MAAMsO,kBAAoB,IACzS+uU,GAAiBrE,GAAY+F,KAC7B1B,GAAiB0B,IAAgBznV,KAAKqW,MAAQoxU,EAAWhxU,YAAczW,KAAK0I,MAAM+N,YACpFgxU,EAAavlT,EAAeo6S,EAAUmL,GAAa,MAI/D,GAAK1B,GAAiBrE,GAAY+F,KAAkB1B,GAAiB0B,EAAa,CAG9E,IAAIgB,GAAczoV,KAAK0oV,KAAKxlL,EAAQ+kL,GAChCU,GAAmBL,EACnB,GAAKrB,EAAawB,GAAcvB,EAChC,GAAKjoU,EAASwpU,GAActB,EAC5ByB,GAAa5oV,KAAKuuK,KAAKhxJ,UAAUorU,GAAkB3oV,KAAK0Q,OAAQ1Q,KAAK6iV,UAErEgG,KADqB7oV,KAAKmiV,aAAe,IAAIruU,IAAW,GAChButU,GAAUn+K,GAAQ17J,QAAWk6B,EACrE4kT,GAA8B,OAAfsC,KACdzG,EAAYruU,GACTm0U,EAAazgV,QAAU07J,EAAO17J,OAC9BqhV,IA0BR,OAzBI7oV,KAAKqlV,2BACLoC,EAAaznV,KAAKslV,iBAAiBmC,IAEvCznV,KAAKsmN,OAASmhI,EACdznV,KAAK2iV,YAAY7uU,GAAQ,GACzB9T,KAAK4kV,uBAAuB9wU,GACvB9T,KAAKkiV,mBACS,MAAXpuU,EACI9T,KAAKsjV,YAAY,MAAQtjV,KAAKsjV,YAAY,OAE1CtjV,KAAK2iV,YAAY,KAAK,GACtB3iV,KAAK4kV,uBAAuB,MAGhB,MAAX9wU,GACD9T,KAAKsjV,YAAY,MAAQtjV,KAAKsjV,YAAY,OAE1CtjV,KAAK2iV,YAAY,KAAK,GACtB3iV,KAAK4kV,uBAAuB,MAG/B5kV,KAAKwmV,sBACNxmV,KAAKmlV,2BAGNpiV,GAAOsjV,EAAa,CAAE39U,MAAO1I,KAAK0I,MAAO49U,aAAcA,MAGtE,GAAI7gV,IACAgiV,EAAaznV,KAAKuuK,KAAKhxJ,UAAU0B,EAASxZ,EAAQ0hV,EAAQnnV,KAAK0Q,OAAQ1Q,KAAK6iV,WAIxE,OAFA7iV,KAAKsmN,OAASmhI,EACdznV,KAAK2iV,YAAY7uU,GAAQ,GAClB/Q,GAAOsjV,EAAa,CAAE39U,MAAO1I,KAAK0I,MAAO49U,cAAc,IAGtE,GAAIqB,IACAF,EAAaznV,KAAKuuK,KAAKhxJ,UAAU0B,EAAS0oU,EAAYR,EAAQnnV,KAAK0Q,SAG/D,OADA1Q,KAAKsmN,OAASmhI,EACP1kV,GAAOsjV,EAAa,CAAE39U,MAAO1I,KAAK0I,MAAO49U,cAAc,IAMtE,GAHIuB,GACA7nV,KAAK2iV,YAAY7uU,GAAQ,IAExB9T,KAAKkiV,iBAAkB,CACxB,IAAI4G,QAAgB,EAChBC,GAAchD,EAAgB9B,EAAe/gL,EAC7Cj0F,GAAcsyQ,GAAWwH,IAC7B,GAAIj0R,GAASma,IAAc,CACvB,GAAgB,MAAXn7D,IAAmBm7D,IAAe,GAAKA,GAAc,KAC1C,MAAXn7D,IAAmBm7D,GAAc,GAAKA,GAAc,IACrD,OAAOlsE,GAAOsjV,EAAa,CAAE39U,MAAO,KAAM49U,cAAc,IAE5DwC,GAA2B,MAAXh1U,EACZm7D,GAh3BE,EAi3BFA,GACJ,IAAIu1Q,GAAqB,MAAX1wU,EACV2wU,GAAmB,MAAX3wU,EACRs/D,GAAWgpQ,EAAUp8U,KAAKsmN,QAC1Bi8H,GAAmBviV,KAAKsiV,sBAAsBC,kBAAoB,GAClEtmU,GAAOsmU,GAAiBp+U,EAAEuE,OAAS0qE,GAASx8D,cAE5CoyU,GAAUxE,GAAUsE,GAAgBvG,GAAiBj+U,EAAEoE,OAAS0qE,GAASz8D,WAEzEuF,GAAMuoU,GAAQqE,GAAgBvG,GAAiB/9U,EAAEkE,OAAS65U,GAAiB99U,EAAEiE,OAAS0qE,GAAS38D,UAC/F4lU,GAAOkG,GAAiB39U,EAAE8D,OAAS65U,GAAiB19U,EAAE6D,OAAS0qE,GAASv8D,WACxEP,GAAUisU,GAAiBv9U,EAAE0D,OAAS0qE,GAASt8D,aAC/CsF,GAAUmmU,GAAiBt9U,EAAEyD,OAAS0qE,GAASr8D,aAC/CsF,GAAekmU,GAAiB3nG,EAAElyO,OAAS0qE,GAASp8D,kBACpD+tU,GAAgBtO,EAAWx6T,GAAM+sU,GAAS9sU,GAAKmgU,GAAM/lU,GAAS8F,GAASC,IACvE6oU,GAAsBzD,GAAoBsD,GAAe9oU,GAAM+sU,GAAS9sU,GAAKmgU,GAAM/lU,GAAS8F,GAASC,IACrG2oU,GAAoBR,IAAWC,GAC/BzkV,KAAKilV,0BAA0B7xQ,GAAUt/D,EAAQ0wU,GAAUwE,GAAU9sU,IACrE,KACAooU,IAAmB,EAmFvB,GAlFIE,IAAWQ,GACPA,GAAkBruU,aAAeqyU,GAC7BhpV,KAAKsjV,YAAY,KACb4B,IACA9xQ,GAAWgpQ,EAAU2I,IACrB/kV,KAAK4kV,uBAAuB9wU,KAG5BwwU,IAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOsgV,GACP3yU,KAAM+lU,EAAU4I,IAChB7oS,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,IAGxBoxU,IACLllV,KAAK4kV,uBAAuB9wU,GAC5Bs/D,GAAWgpQ,EAAU2I,IACjB/kV,KAAKsjV,YAAY,MAAQtjV,KAAKsjV,YAAY,OAE1CtjV,KAAK2iV,YAAY,KAAK,GACtB3iV,KAAK4kV,uBAAuB,QAIhC5kV,KAAK4kV,uBAAuB9wU,GAC5Bs/D,GAAWgpQ,EAAU4I,MAIzBV,IAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOsgV,GACP3yU,KAAM+lU,EAAU4I,IAChB7oS,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,IAGxB2wU,IAASO,KACVA,GAAkBvuU,YAAcyF,GAC5Blc,KAAKsjV,YAAY,KACb4B,IACA9xQ,GAAWgpQ,EAAU2I,IACrB/kV,KAAK4kV,uBAAuB9wU,KAG5BwwU,IAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOwT,GACP7F,KAAM+lU,EAAU4I,IAChB7oS,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,IAGxBoxU,IACL9xQ,GAAWgpQ,EAAU2I,IACrB/kV,KAAK4kV,uBAAuB9wU,GACxB9T,KAAKsjV,YAAY,MAAQtjV,KAAKsjV,YAAY,OAE1CtjV,KAAK2iV,YAAY,KAAK,GACtB3iV,KAAK4kV,uBAAuB,QAIhC5kV,KAAK4kV,uBAAuB9wU,GAC5Bs/D,GAAWgpQ,EAAU4I,MAIzBV,IAAmB,EACnBtkV,KAAKolV,mBAAmBtxU,EAAQ,CAC5BpL,MAAOwT,GACP7F,KAAM+lU,EAAUp8U,KAAK0I,OACrByzC,UAAWigS,EAAUp8U,KAAK0I,SAE9B1I,KAAK2iV,YAAY7uU,GAAQ,MAG5BwwU,GAAkB,CAEnB,GADAtkV,KAAK2iV,YAAY7uU,GAAQ,GACrBiyU,IAAkBrE,GAAY+F,GAAa,CAC3C,IAAIwB,GAAiBjpV,KAAKuuK,KAAKhxJ,UAAU0pU,EAAa/jL,EAASgkL,EAAYlnV,KAAK0Q,OAAQ1Q,KAAK6iV,UACzFnB,GAAYuH,MACZjpV,KAAKsmN,OAAS2iI,SAIlBjpV,KAAKsmN,OAASlzI,GAEdpzE,KAAK+jL,YACL/jL,KAAK4iV,mBAGT0D,IAAe,EAcnB,OAXQA,GAFO,MAAXxyU,EACIm7D,IAAe,GAAK85Q,GAAYvhV,QAAU,EAQ/B6/U,EACX0B,GAAYvhV,SAAW+/U,EACvBwB,GAAYvhV,OAAS+/U,EAEtBxkV,GAAOsjV,EAAa,CACvB39U,MAAO,KACP49U,aAAcA,GACdE,mBAAoBlC,MAIhC,OAAOvhV,GAAOsjV,EAAa,CAAE39U,MAAO,KAAM49U,cAAc,KAK5D1E,EAAWv5U,UAAU6gV,UAAY,SAAUp1U,GACvC,OAAO9T,KAAKuuK,KAAK/sI,gBAAgBxhC,KAAK0Q,OAAQ1Q,KAAK6iV,UAAUl/R,OAAO29R,GAAe,IAAIxtU,IAK3F8tU,EAAWv5U,UAAUo+U,iBAAmB,WACpC,IAAI0C,EAAsC,OAArBnpV,KAAKmiV,YAE1B,OADAniV,KAAKopV,eAAe,MACbD,GAEXvH,EAAWv5U,UAAU+gV,eAAiB,SAAUjH,GAC5CniV,KAAKmiV,YAAcA,GAKvBP,EAAWv5U,UAAUghV,eAAiB,WAClC,OAAOrpV,KAAKmiV,aAAe,IAK/BP,EAAWv5U,UAAUi9U,iBAAmB,SAAUjvU,GAC9C,IAAK5N,GAAU4N,GACX,OAAOA,EAEX,IAAIizU,EAhlCW,SAAUjzU,GAC7B,OAAK5N,GAAU4N,IAASvN,MAAMuN,EAAKpN,WACxB,EAEJqJ,OAAO+D,EACTO,cACA1F,WACAtK,OAAO,IAykCW2iV,CAAiBlzU,GAChCmzU,EAAcxpV,KAAKypV,yBAAyBH,GAEhD,OADqB9H,GAASnrU,EAAMmzU,EAAcF,IAGtD1H,EAAWv5U,UAAU0/U,qBAAuB,SAAUj0U,GAClD,IAAIquU,EAAcniV,KAAKmiV,aAAe,GACtCA,EAAYruU,IAAWquU,EAAYruU,IAAW,GAAK,EACnD9T,KAAKmiV,YAAcA,GAKvBP,EAAWv5U,UAAUy/U,YAAc,SAAU93U,EAAO8D,GAChD,IAAIJ,EAAU1T,KAAKgoV,YAAYh4U,EAAO8D,GACtC,MAAwB,UAAjBJ,EAAQhO,MAAoBgO,EAAQU,OAK/CwtU,EAAWv5U,UAAU2/U,YAAc,SAAUh4U,EAAO8D,GAChD,OAAO9D,EAAMimB,QAAO,SAAUvrB,GAAQ,OAAyC,IAAlCA,EAAKgJ,QAAQiC,QAAQ7B,MAAmB,IAKzF8tU,EAAWv5U,UAAUqgV,KAAO,SAAUhgV,EAAOgL,GACzC,IAAIg2U,EAAYhhV,EAAMjG,QAAQ,MAAO,IAAM,IAC3C,OAAO2+U,GAAQ1tU,EAAQlM,OAASkiV,EAAUliV,QAAUkiV,GAKxD9H,EAAWv5U,UAAUq/U,WAAa,SAAUiC,GAExC,GADA3pV,KAAKoiV,gBAAkBuH,EAAUrxU,cACF,IAA3BtY,KAAKijV,WAAWz7U,OAChB,MAAO,GAEX,KAAOxH,KAAKoiV,eAAe56U,OAAS,GAAG,CACnC,IAAK,IAAID,EAAI,EAAGA,EAAIvH,KAAKijV,WAAWz7U,OAAQD,IACxC,GAAsE,IAAlEvH,KAAKijV,WAAW17U,GAAG+Q,cAAc3C,QAAQ3V,KAAKoiV,gBAC9C,OAAOpiV,KAAKijV,WAAW17U,GAG/B,IAAIqiV,EAAa3wU,SAASjZ,KAAKoiV,eAAgB,IAE/C,GAAIwH,GAAc,GAAKA,GAAc,IAAMA,EAAW14U,aAAelR,KAAKoiV,eACtE,OAAOpiV,KAAKijV,WAAW2G,EAAa,GAExC5pV,KAAKoiV,eAAiBpiV,KAAKoiV,eAAep3U,UAAU,EAAGhL,KAAKoiV,eAAe56U,QAE/E,MAAO,IAKXo6U,EAAWv5U,UAAUu/U,eAAiB,SAAU+B,EAAW71U,GACvD,IAAI+1U,EAAaF,EAAUrxU,cAC3B,GAAe,MAAXxE,GAAkB9T,KAAKmjV,WAAY,CACnC,GAAInjV,KAAKmjV,WAAW2G,GAAGxxU,cAAcqoB,WAAWkpT,GAC5C,OAAO7pV,KAAKmjV,WAAW2G,GAEtB,GAAI9pV,KAAKmjV,WAAW4G,GAAGzxU,cAAcqoB,WAAWkpT,GACjD,OAAO7pV,KAAKmjV,WAAW4G,GAG/B,MAAO,IAKXnI,EAAWv5U,UAAU66U,mBAAqB,SAAUz0K,QACjC,IAAXA,IAAqBA,EAAS,MAElC,IADA,IAAIu7K,EAAkBhqV,KAAKuuK,KAAK/sI,gBAAgBxhC,KAAK0Q,OAAQ1Q,KAAK6iV,UACzDt7U,EAAI,EAAGA,EAAIyiV,EAAgBxiV,OAAQD,IACxC,GAAgC,UAA5ByiV,EAAgBziV,GAAG7B,MAAoBskV,EAAgBziV,GAAG6M,MAC1D,OAAOpU,KAAKuuK,KAAKtsI,gBAAgBwsI,EAAQu7K,EAAgBziV,GAAG6M,OAGpE,MAAO,IAKXwtU,EAAWv5U,UAAU+6U,cAAgB,SAAU30K,QAC5B,IAAXA,IAAqBA,EAAS,MAElC,IADA,IAAIu7K,EAAkBhqV,KAAKuuK,KAAK/sI,gBAAgBxhC,KAAK0Q,QAC5CnJ,EAAI,EAAGA,EAAIyiV,EAAgBxiV,OAAQD,IACxC,GAAgC,cAA5ByiV,EAAgBziV,GAAG7B,MAAwBskV,EAAgBziV,GAAG6M,MAC9D,OAAOpU,KAAKuuK,KAAKtsI,gBAAgBwsI,EAAQu7K,EAAgBziV,GAAG6M,OAGpE,OAAO,MAKXwtU,EAAWv5U,UAAUq5B,cAAgB,SAAUhuB,GAC3C,MAAmB,MAAfA,EAAQ,GACD,EAEPiuU,GAA4B50U,KAAK2G,GAC1B,EAEJ,GAKXkuU,EAAWv5U,UAAUq6U,iBAAmB,SAAUrsU,EAAM3F,GAIpD,IAHA,IAAIs5U,EAAkBhqV,KAAKuuK,KAAK/sI,gBAAgB9wB,EAAQ1Q,KAAK6iV,UACzD7yU,EAAQ,GACRixU,EAAU,GACL15U,EAAI,EAAGA,EAAIyiV,EAAgBxiV,OAAQD,IAExC,IADA,IAAI0iV,EAAajqV,KAAKuuK,KAAKp3J,WAAWd,EAAM,CAAE3C,QAASs2U,EAAgBziV,GAAGmM,SAAW1T,KAAK6iV,UAAUr7U,OAC7FyiV,EAAa,GAChBj6U,EAAMrO,KAAK3B,KAAKu+P,QAAQyrF,EAAgBziV,GAAGmM,QAAQ,KAAOwtU,IAC1DD,EAAQt/U,KAAKqoV,EAAgBziV,IAC7B0iV,IAGR,IAAIC,EAAc,IAAIlJ,GAGtB,OAFAkJ,EAAY3rF,QAAUvuP,EAAMnF,KAAK,IACjCq/U,EAAYjJ,QAAUA,EACfiJ,GAKXtI,EAAWv5U,UAAUmsC,MAAQ,SAAU5T,EAAMlK,GAQzC,IANA,IAAIyzT,EAAa,GACbC,EAAe,GACf15U,EAASgmB,EAAK6nO,QACd8rF,GAA0B,EAC1BC,EAA2B,EAC3B1G,EAAiB5jV,KAAK6jV,yBAAyBnzU,GAC1C65U,EAAoB75U,EAAOlJ,OAAS,EAAG+iV,GAAqB,EAAGA,IAAqB,CACzF,IAAIxG,EAAkB/jV,KAAKgkV,mBAAmBttT,EAAM6zT,GACpD,IAA4D,IAAxDvqV,KAAKqiV,WAAW1sU,QAAQjF,EAAO65U,KAA8BvqV,KAAKsjV,YAAY5yU,EAAO65U,IACjFvqV,KAAKkiV,iBACLiI,EAAavpT,EAAK2pT,GAAqBJ,EAGnCvpT,EAAKp5B,SAAWkJ,EAAOlJ,OACnB6iV,EACAF,EAAavpT,EAAK2pT,GAAqBJ,EAElCG,EAA2B,GAChCH,EAAavpT,EAAK2pT,GAAqBJ,IACvCG,GACgC,IAC5BD,GAA0B,IAI9BF,GAAcvpT,EAAK2pT,EAAoB3pT,EAAKp5B,OAASkJ,EAAOlJ,SAAW,IAAM2iV,EAIjFA,EAAavpT,EAAK2pT,GAAqBJ,EAG/CC,EAAe15U,EAAO65U,GAAqBH,MAE1C,CACD,IAAIt2U,EAASpD,EAAO65U,GAChBC,EAA4B,EAChC,GAAIxqV,KAAKkiV,mBAAsBliV,KAAKkiV,mBAAqBliV,KAAK8jV,wBAAwBhwU,GAAU,CAC5F,KAAOy2U,GAAqB,GAAKz2U,IAAWpD,EAAO65U,IAC/CA,IAEJA,IAEJ,GAAIvqV,KAAKmiV,aAAeniV,KAAKmiV,YAAYruU,GACrCq2U,EAAa,IAAMA,OAGnB,IAAKnqV,KAAKkiV,kBAAoBliV,KAAK8jV,wBAAwBhwU,GAAS,CAChE,IAAImwU,EAAejkV,KAAK8jV,wBAAwBhwU,GAAQ5C,WACxD,GAAe,MAAX4C,EAEA,GADAmwU,GAAgB1C,GAAWvhV,KAAK8jV,wBAAwBhwU,IAhtC9D,GAgtC0F5C,WAChF6yU,EAAgBv8U,OAptCV,EAqtCN2iV,EAAavG,EAAe9vU,GAAQy2U,GAAqBJ,OAGzDlG,GAAgB1C,GAAWvhV,KAAK8jV,wBAAwBhwU,IArtClE,GAqtC8F5C,WAEpFi5U,EADwB/I,GAAQ2C,EAAgBv8U,OAASy8U,EAAaz8U,QAAUy8U,EAC/CkG,EACjCK,EAA4BzG,EAAgBv8U,OAAS,EACrD8iV,EAA2BrG,EAAaz8U,OAASu8U,EAAgBv8U,YAKrE2iV,EADwB/I,GAAQ2C,EAAgBv8U,OAASy8U,EAAaz8U,QAAUy8U,EAC/CkG,EACjCK,EAA4BzG,EAAgBv8U,OAAS,EACrD8iV,EAA2BrG,EAAaz8U,OAASu8U,EAAgBv8U,YAIrE2iV,EAAanqV,KAAK+hC,cAAcrL,EAAKuqT,QAAQsJ,IAAsBJ,EAG3E,KAAOC,EAAa5iV,OAAS2iV,EAAW3iV,QACpC4iV,EAAe15U,EAAO65U,GAAqBH,EAEb,IAA9BI,IACAD,EAAqBA,EAAoBC,GAA8B5pT,EAAKp5B,OAASkJ,EAAOlJ,UAIxG,MAAO,CAAEo5B,KAAMupT,EAAYz5U,OAAQ05U,IAKvCxI,EAAWv5U,UAAU05B,cAAgB,SAAUr3B,GAC3C,IAAIm3U,EAAoB7hV,KAAK6hV,mBAAqB,OAClD,OAAIA,EAAkBn3U,EAAKhF,MAChBm8U,EAAkBn3U,EAAKhF,MAER,kBAAtBm8U,EACOn3U,EAAKgJ,QAET1T,KAAKuuK,KAAKxsI,cAActhC,OAAOC,OAAOgK,EAAM,CAAEk3B,SAAUigT,MAKnED,EAAWv5U,UAAUohV,yBAA2B,SAAUH,GACtD,OAAOA,EAAetpV,KAAKkV,gBAxwCP,KACD,KA8wCvB0sU,EAAWv5U,UAAUg9U,uBAAyB,WAC1C,OAAOrlV,KAAKuuK,KAAK/sI,gBAAgBxhC,KAAK0Q,QAAQ47C,MAAK,SAAU5hD,GAAQ,MAAwB,OAAjBA,EAAKgJ,YAErFkuU,EAAWv5U,UAAUu6U,iBAAmB,WACpC,IAAIh6E,EAAQ5oQ,KACZA,KAAKsiV,sBAAsBnmS,UAAY,KACvC17C,OAAOypB,KAAKlqB,KAAKsiV,sBAAsBC,kBAAkBjhV,SAAQ,SAAUiQ,GACvEq3P,EAAM6hF,qBAAqBl5U,OAGnCqwU,EAAWv5U,UAAUu8U,uBAAyB,SAAU9wU,GACpD,IAAI80P,EAAQ5oQ,KACZA,KAAKyqV,qBAAqB32U,GAC1B,IAAI42U,GAAyB,EAC7BjqV,OAAOypB,KAAKlqB,KAAKsiV,sBAAsBC,kBAAkBjhV,SAAQ,SAAUiQ,GACnEq3P,EAAM05E,sBAAsBC,iBAAiBhxU,IAC7C9I,GAAUmgQ,EAAM05E,sBAAsBC,iBAAiBhxU,GAAK7I,SAC5DgiV,GAAyB,MAG7BA,GACA1qV,KAAK4iV,oBAGbhB,EAAWv5U,UAAUoiV,qBAAuB,SAAU32U,GAC9C9T,KAAKsiV,sBAAsBC,iBAAiBzuU,KAC5C9T,KAAKsiV,sBAAsBC,iBAAiBzuU,GAAU,CAClDpL,MAAO,KACP2N,KAAM,KACNmsU,gBAAiB,KAO7BZ,EAAWv5U,UAAU87U,mBAAqB,SAAUrwU,GAEhD,OADsB9T,KAAKsiV,sBAAsBC,iBAAiBzuU,IACxC,IAK9B8tU,EAAWv5U,UAAUy7U,wBAA0B,SAAUhwU,GAErD,OADsB9T,KAAKsiV,sBAAsBC,iBAAiBzuU,IACvC,IAAIpL,OAEnCk5U,EAAWv5U,UAAU+8U,mBAAqB,SAAUtxU,EAAQwpU,GACxD,IAAIwE,EAAKxE,EAAG50U,MAAOA,OAAe,IAAPo5U,EAAgB,KAAOA,EAAIv6D,EAAK+1D,EAAGjnU,KAAMA,OAAc,IAAPkxQ,EAAgB,KAAOA,EAAIy6D,EAAK1E,EAAGkF,gBAAiBA,OAAyB,IAAPR,EAAgB,EAAIA,EAAIC,EAAK3E,EAAGnhS,UAAWA,OAAmB,IAAP8lS,EAAgB,KAAOA,EAC3NjiV,KAAKsiV,sBAAsBC,iBAAiBzuU,KAC5C9T,KAAKsiV,sBAAsBC,iBAAiBzuU,GAAQpL,MAAQA,EAC5D1I,KAAKsiV,sBAAsBC,iBAAiBzuU,GAAQuC,KAAOA,EAC3DrW,KAAKsiV,sBAAsBC,iBAAiBzuU,GAAQ0uU,gBAAkBA,EACtExiV,KAAKsiV,sBAAsBnmS,UAAYA,IAM/CylS,EAAWv5U,UAAUm+U,mBAAqB,WACtC,IAAI59E,EAAQ5oQ,KACRwmV,GAAqB,EAOzB,OANA/lV,OAAOypB,KAAKlqB,KAAKsiV,sBAAsBC,kBAAkBjhV,SAAQ,SAAUiQ,GACnEq3P,EAAM05E,sBAAsBC,iBAAiBhxU,IAC7C9I,GAAUmgQ,EAAM05E,sBAAsBC,iBAAiBhxU,GAAK7I,SAC5D89U,GAAqB,MAGtBA,GAKX5E,EAAWv5U,UAAUsiV,2BAA6B,SAAUt0U,EAAMvC,EAAQiJ,GACtE,IAAIq2D,EAAWgpQ,EAAU/lU,GACrBkuU,GAAe,EACnB,OAAQzwU,GACJ,IAAK,IACDs/D,EAASz2D,YAAYy2D,EAASx8D,cAAgBmG,GAC9C,MACJ,IAAK,IACDq2D,EAAWkpQ,EAAUt8U,KAAK0I,MAAOqU,GACjC,MACJ,IAAK,IACL,IAAK,IACDq2D,EAAS9zC,QAAQ8zC,EAAS38D,UAAYsG,GACtC,MACJ,IAAK,IACL,IAAK,IACDq2D,EAAS32D,SAAS22D,EAASv8D,WAAakG,GACxCwnU,GAAe,EACf,MACJ,IAAK,IACDnxQ,EAAS2lG,WAAW3lG,EAASt8D,aAAeiG,GAC5CwnU,GAAe,EACf,MACJ,IAAK,IACDnxQ,EAAS8lG,WAAW9lG,EAASr8D,aAAegG,GAC5CwnU,GAAe,EACf,MACJ,IAAK,IACDnxQ,EAAS+lG,gBAAgB/lG,EAASp8D,kBAAoB+F,GACtD,MACJ,IAAK,IACDq2D,EAAS32D,SAAS22D,EAASv8D,WAAc,GAAKkG,GAC9CwnU,GAAe,EAIvB,MAAO,CACHluU,KAAM+8D,EACNmxQ,aAAcA,IAMtB3C,EAAWv5U,UAAU48U,0BAA4B,SAAU5uU,EAAMvC,EAAQpL,GACrE,IAAI0qE,EAAWgpQ,EAAU/lU,GACzB,OAAQvC,GACJ,IAAK,IACDs/D,EAASz2D,YAAYjU,GACrB,MACJ,IAAK,IACD0qE,EAAWkpQ,EAAUjmU,EAAM3N,EAAQ2N,EAAKM,YACxC,MACJ,IAAK,IACL,IAAK,IACDy8D,EAAS9zC,QAAQ52B,GACjB,MACJ,IAAK,IACL,IAAK,IAYL,IAAK,IACD0qE,EAAS32D,SAAS/T,GAClB,MAXJ,IAAK,IACD0qE,EAAS2lG,WAAWrwK,GACpB,MACJ,IAAK,IACD0qE,EAAS8lG,WAAWxwK,GACpB,MACJ,IAAK,IACD0qE,EAAS+lG,gBAAgBzwK,GAOjC,OAAO0qE,GAEXwuQ,EAAWv5U,UAAU88U,wBAA0B,WAC3CnlV,KAAKqjV,gBAAe,IAKxBzB,EAAWv5U,UAAU27U,mBAAqB,SAAUttT,EAAMk0T,GAGtD,IAFA,IAAIC,EAAcn0T,EAAKuqT,QAAQ2J,GAC3B7G,EAAkB,GACb+G,EAAgBF,EAAWE,EAAgBp0T,EAAKuqT,QAAQz5U,OAAQsjV,IAAiB,CACtF,IAAIpgV,EAAOgsB,EAAKuqT,QAAQ6J,GACxB,GAAID,EAAYnlV,OAASgF,EAAKhF,MAAQmlV,EAAYn3U,UAAYhJ,EAAKgJ,QAI/D,MAHAqwU,EAAgBpiV,KAAK+I,GAM7B,IAASogV,EAAgBF,EAAY,EAAGE,GAAiB,EAAGA,IAAiB,CACrEpgV,EAAOgsB,EAAKuqT,QAAQ6J,GACxB,GAAID,EAAYnlV,OAASgF,EAAKhF,MAAQmlV,EAAYn3U,UAAYhJ,EAAKgJ,QAI/D,MAHAqwU,EAAgB55U,QAAQO,GAMhC,OAAOq5U,GAEJnC,EA37CoB,GA87C3BmJ,GACW,EADXA,GAEQ,GAFRA,GAGK,EAHLA,GAIO,GAJPA,GAMY,GANZA,GAOU,GAPVA,GAQa,GARbA,GASY,GATZA,GAWK,GAXLA,GAYM,GAKN3+K,GAAiB,CACjB/hK,OAAQ,IAERf,GAA4B,WAC5B,SAASA,EAAWpC,GAChBlH,KAAKkH,QAAUnE,GAAO,GAAIqpK,GAAgBllK,GAuB9C,OArBAoC,EAAWjB,UAAUrG,QAAU,aAK/BsH,EAAWjB,UAAU+B,QAAU,SAAUX,EAAW0tB,QACnC,IAATA,IAAmBA,EAAO,IAC9B,IAAI8wC,EAAY,CACZ+iR,kBAAkB,EAClB7hV,eAAgB,WACZ8+D,EAAU+iR,kBAAmB,IAGrC,MA7hDgD,mBA6hDjChrV,KAAKkH,QAAQmD,OAAOZ,KAC/BzJ,KAAKkH,QAAQmD,OAAOZ,GAAW1G,GAAOklE,EAAW9wC,EAAM,CACnD7sB,OAAQtK,QAELioE,EAAU+iR,mBAIlB1hV,EAzBoB,IA6B/B,SAAWy3U,GACPA,EAA+B,KAAI,OACnCA,EAAgC,MAAI,QACpCA,EAAoC,UAAI,YAH5C,CAIGA,KAA6BA,GAA2B,KAG3D,IACIvoJ,GAAa,YACb/0G,GAAO,OACPwnQ,GAAc,aACdC,GAAa,YACbC,GAAW,UACXrrH,GAAQ,QACRwhF,GAAQ,QACR8pC,GAAW,UACXvkD,GAAQ,QACR9mE,GAAO,OACPsrH,GAAQ,QACRC,GAAe,iBACfC,GAAc,aACdC,GAAe,cACfC,GAAY,WACZC,GAAW,UACXC,GAAY,WACZ7uS,GAAS,SACT8uS,GAA0B,CAC1Bl7U,OAAQ,IACRm7U,gBAAgB,EAChBnnU,YAAa,KACbq9T,WAAW,EACXtzK,OAAQ,KACRo4E,MAAO,CACHilG,YA1BmB,EA2BnBj3N,OA3BmB,EA4BnBk3N,OA5BmB,EA6BnB1P,KA7BmB,EA8BnBngU,IA9BmB,EA+BnBzW,MA/BmB,EAgCnBwW,KAhCmB,GAkCvB4lU,kBAAmB,KACnBx3U,QAASizU,GAAK,GACVA,GAAe,YAAI,KACnBA,GAAQ,MAAI,KACZA,GAAY,SAAI,KAChBA,GAAQ,MAAI,KACZA,GAAY,SAAI,KAChBA,GAAO,KAAI,KACXA,GAAW,QAAI,KACfA,GAAW,QAAI,KACfA,GAAc,WAAI,KAClBA,GAAS,OAAI,KACbA,IACJ0O,6BAA6B,EAC7BC,kCAAkC,EAClCC,kBAAkB,EAClBC,gBAAgB,EAChBC,iBAAiB,EACjBC,eAAgB,GAChBn3U,gBAAiBgsU,GACjBgB,kBAAkB,GAElBoK,GAA2B,SAAUC,GAErC,SAASD,EAAUzgV,EAAS3E,GACxB,IAAI0hQ,EAAQ2jF,EAAOhiV,KAAKvK,KAAMkH,IAAYlH,KAS1C,OARA4oQ,EAAM4yE,WAAa,KAGnB5yE,EAAM4jF,YAAc,GACpB5jF,EAAM6jF,cAAgB,GACtB7jF,EAAM8jF,gBAAkB3L,GAAyB4L,KACjD/jF,EAAMgkF,yBAA2B,CAAEt3U,MAAO,EAAG3J,IAAK,GAClDi9P,EAAMzgQ,KAAK0D,EAAS3E,GACb0hQ,EAikCX,OA5kCAozE,EAAUsQ,EAAWC,GAarB9rV,OAAOkuC,eAAe29S,EAAUjkV,UAAW,QAAS,CAChDknB,IAAK,WACD,OAAOvvB,KAAKw7U,YAAcx7U,KAAKw7U,WAAWz3J,YAE9C86J,YAAY,EACZC,cAAc,IAElBwN,EAAUjkV,UAAUF,KAAO,SAAU0D,EAAS3E,GAC1C,IAAI2xK,EAAY6oK,GAAY1hV,KAAKkH,QAAQwB,OAAS0zU,EAAUp8U,KAAKkH,QAAQwB,OAAS,IAAI0F,KAAKlH,EAAQwmM,gBAC9Fg0I,GAAY7oK,KACbA,EAAY,MAEhB74K,KAAK6L,QAAUA,EAEf7L,KAAKkH,QAAUnE,GAAO,GAAI6oV,GAAyB1kV,GACnDlH,KAAKuuK,KAAOvuK,KAAKkH,QAAQknK,YACzBpuK,KAAKw7U,WAAax7U,KAAK6sV,mBACvB7sV,KAAKw7U,WAAWpiI,SAASvgC,GACzB74K,KAAK8sV,mBACL9sV,KAAKm3H,aACLn3H,KAAKylV,mBAAoB,EACzBzlV,KAAK0sV,gBAAkB3L,GAAyB4L,KAChD3sV,KAAK+sV,eAETT,EAAUjkV,UAAUrG,QAAU,WAC1BhC,KAAK23H,eACL33H,KAAKw7U,WAAa,KAClB+Q,EAAOlkV,UAAUrG,QAAQuI,KAAKvK,OAElCssV,EAAUjkV,UAAU8uH,WAAa,WAC7Bn3H,KAAKgtV,mBAAqBhtV,KAAKgtV,mBAAmBxjV,KAAKxJ,MACvDA,KAAK6L,QAAQpK,iBAAiB+2L,GAAYx4L,KAAKgtV,oBAC/ChtV,KAAKitV,cAAgBjtV,KAAKitV,cAAczjV,KAAKxJ,MAC7CA,KAAK6L,QAAQpK,iBAAiBgiF,GAAMzjF,KAAKitV,eACzCjtV,KAAKktV,eAAiBltV,KAAKktV,eAAe1jV,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiBq+N,GAAO9/N,KAAKktV,gBAC1CltV,KAAKmtV,mBAAqBntV,KAAKmtV,mBAAmB3jV,KAAKxJ,MACvDA,KAAK6L,QAAQpK,iBAAiBypV,GAAYlrV,KAAKmtV,oBAC/CntV,KAAK6L,QAAQpK,iBAAiBwpV,GAAajrV,KAAKmtV,oBAChDntV,KAAKotV,iBAAmBptV,KAAKotV,iBAAiB5jV,KAAKxJ,MACnDA,KAAK6L,QAAQpK,iBAAiB0pV,GAAUnrV,KAAKotV,kBAC7CptV,KAAKqtV,eAAiBrtV,KAAKqtV,eAAe7jV,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiB6/S,GAAOthT,KAAKqtV,gBAC1CrtV,KAAKstV,iBAAmBttV,KAAKstV,iBAAiB9jV,KAAKxJ,MACnDA,KAAK6L,QAAQpK,iBAAiB2pV,GAAUprV,KAAKstV,kBAC7CttV,KAAKutV,eAAiBvtV,KAAKutV,eAAe/jV,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiBolS,GAAO7mS,KAAKutV,gBAC1CvtV,KAAKwtV,cAAgBxtV,KAAKwtV,cAAchkV,KAAKxJ,MAC7CA,KAAK6L,QAAQpK,iBAAiBs+N,GAAM//N,KAAKwtV,eACzCxtV,KAAKytV,gBAAkBztV,KAAKytV,gBAAgBjkV,KAAKxJ,MACjDA,KAAK6L,QAAQpK,iBAAiBq7C,GAAQ98C,KAAKytV,iBAC3CztV,KAAK0tV,eAAiB1tV,KAAK0tV,eAAelkV,KAAKxJ,MAC/CA,KAAK6L,QAAQpK,iBAAiB4pV,GAAOrrV,KAAK0tV,gBAC1C1tV,KAAK2tV,oBAAsB3tV,KAAK2tV,oBAAoBnkV,KAAKxJ,MACzDA,KAAK6L,QAAQpK,iBAAiB6pV,GAActrV,KAAK2tV,qBACjD3tV,KAAK6L,QAAQpK,iBAAiB8pV,GAAavrV,KAAK2tV,sBAEpDrB,EAAUjkV,UAAUsvH,aAAe,WAC/B33H,KAAK6L,QAAQ5J,oBAAoBu2L,GAAYx4L,KAAKgtV,oBAClDhtV,KAAK6L,QAAQ5J,oBAAoBwhF,GAAMzjF,KAAKitV,eAC5CjtV,KAAK6L,QAAQ5J,oBAAoBgpV,GAAajrV,KAAKmtV,oBACnDntV,KAAK6L,QAAQ5J,oBAAoBipV,GAAYlrV,KAAKmtV,oBAClDntV,KAAK6L,QAAQ5J,oBAAoBkpV,GAAUnrV,KAAKotV,kBAChDptV,KAAK6L,QAAQ5J,oBAAoB69N,GAAO9/N,KAAKktV,gBAC7CltV,KAAK6L,QAAQ5J,oBAAoBq/S,GAAOthT,KAAKqtV,gBAC7CrtV,KAAK6L,QAAQ5J,oBAAoBmpV,GAAUprV,KAAKstV,kBAChDttV,KAAK6L,QAAQ5J,oBAAoB4kS,GAAO7mS,KAAKutV,gBAC7CvtV,KAAK6L,QAAQ5J,oBAAoB89N,GAAM//N,KAAKwtV,eAC5CxtV,KAAK6L,QAAQ5J,oBAAoB66C,GAAQ98C,KAAKytV,iBAC9CztV,KAAK6L,QAAQ5J,oBAAoBopV,GAAOrrV,KAAK0tV,gBAC7C1tV,KAAK6L,QAAQ5J,oBAAoBqpV,GAActrV,KAAK2tV,qBACpD3tV,KAAK6L,QAAQ5J,oBAAoBspV,GAAavrV,KAAK2tV,sBAEvDrB,EAAUjkV,UAAUkpB,WAAa,SAAUrqB,EAAS0W,QAChC,IAAZA,IAAsBA,GAAU,GACpC5d,KAAKkH,QAAUnE,GAAO/C,KAAKkH,QAASA,GACpClH,KAAK4tV,uBACDhwU,IACA5d,KAAK23H,eACL33H,KAAKmI,KAAKnI,KAAK6L,QAAS7L,KAAKkH,WAMrColV,EAAUjkV,UAAUulV,qBAAuB,WACvC,GAAI5tV,KAAKw7U,WAAY,CACjB,IAAI9nT,EAAa1zB,KAAK6tV,uBACtB7tV,KAAKw7U,WAAWjqT,WAAWmC,KAMnC44T,EAAUjkV,UAAUylV,YAAc,WAC9B9tV,KAAK23H,eACL33H,KAAKmI,KAAKnI,KAAK6L,QAAS7L,KAAKkH,UAKjColV,EAAUjkV,UAAU09U,cAAgB,WAChC,OAAO/lV,KAAK0sV,kBAAoB3L,GAAyBgN,OAE7DzB,EAAUjkV,UAAUu9B,MAAQ,WACxB5lC,KAAK6L,QAAQ+5B,QACT5lC,KAAKkH,QAAQ8kV,6BACbhsV,KAAKguV,qBAAqB,IAMlC1B,EAAUjkV,UAAU2kV,mBAAqB,SAAUroV,GAC/CA,EAAEwE,kBAKNmjV,EAAUjkV,UAAU4kV,cAAgB,SAAUtoV,GAC1CA,EAAEwE,kBAKNmjV,EAAUjkV,UAAU8kV,mBAAqB,WACrCntV,KAAKiuV,kBAAmB,EACxBjuV,KAAKkuV,wBAA0BluV,KAAKqoR,UAKxCikE,EAAUjkV,UAAU+kV,iBAAmB,SAAUzoV,GAC7C3E,KAAKiuV,kBAAmB,EACxBtpV,EAAEwE,kBAKNmjV,EAAUjkV,UAAU6kV,eAAiB,SAAUvoV,GAC3C3E,KAAKiuV,kBAAmB,EACxBjuV,KAAKmuV,iCAAkC,EACvC,IAAIpoT,EAAY/lC,KAAK+lC,UAOrB,GANI/lC,KAAK+lV,iBAIL/lV,KAAK+sV,cAEQ,IAAbpoV,EAAEogC,aAKF,GAAI/kC,KAAKqoR,UAAYroR,KAAKkH,QAAQ8kV,4BAA6B,CAC3D,IAAIoC,EAAmBpuV,KAAK6L,QAAQ85B,iBAAmB3lC,KAAK6L,QAAQi6B,aAChEuoT,EAAqB5lV,GAAUzI,KAAKkH,QAAQwd,eAC3C1kB,KAAKw7U,WAAWtnQ,aAChBl0E,KAAKkuV,wBAGNn1U,GADsBq1U,GAAoBC,EACb,EAAIruV,KAAKwlC,QAAQ,GAClDxlC,KAAKguV,qBAAqBj1U,QAG1B/Y,KAAKsuV,aAAatuV,KAAKuuV,iBAAiBxoT,EAAUzwB,SAO9Dg3U,EAAUjkV,UAAUglV,eAAiB,SAAU1oV,GAE3C,GADA3E,KAAKwuV,aAAa,CAAEpvU,MAAOza,IACtB3E,KAAK6L,SAAY7L,KAAKw7U,WAA3B,CAGA,IAAI2S,EAAkCnuV,KAAKmuV,gCAC3C,GAAInuV,KAAKyuV,kBAQL,OAPIzuV,KAAKkH,QAAQilV,iBAGbnsV,KAAKylV,mBAAoB,GAE7BzlV,KAAK0uV,cAAc/pV,QACnB3E,KAAKyuV,mBAAoB,GAG7B,IAAIE,EAAe3uV,KAAK2uV,cAAgB,GACpCC,EAAiBD,EAAaxnT,UAAY4jT,IAAqB4D,EAAap9U,MAAQ4vU,GACpF0N,EAAcF,EAAaxnT,UAAY4jT,IAAkB4D,EAAap9U,MAAQ4vU,GAC9E2N,EAA0B9uV,KAAK0sV,iBAC/B1sV,KAAKkH,QAAQilV,gBACb2C,IAA4B/N,GAAyBgN,OACpDc,GAAgBD,IACjB5uV,KAAKylV,mBAAoB,GAEzBzlV,KAAKkH,QAAQilV,eACbnsV,KAAK0sV,gBAAkB3L,GAAyBgN,MAGhD/tV,KAAK0sV,gBAAkB3L,GAAyBn8H,UAEpD,IAAImqI,EAAW/uV,KAAK+lV,gBACpB,GAAIgJ,GAAY/uV,KAAK2uV,aAAap9U,MAAQ4vU,GAEtCnhV,KAAKgvV,qCAFT,CAKA,IAAIC,EAAuBjvV,KAAKw7U,YAAcx7U,KAAKw7U,WAAWz3J,WAC1DmrK,EAAelvV,KAAKw7U,WAAax7U,KAAKw7U,WAAW9yU,MAAQ,KACzD40U,EAAKt9U,KAAKw7U,WAAWgI,mBAAoBgJ,EAAclP,EAAG18S,KAAM6rT,EAAgBnP,EAAG5sU,OACvF1Q,KAAKysV,cAAgBA,EACrB,IAgBI5tT,EAz/DoB,SAAUy+S,GAKtC,IAAI6R,EAAU7R,EAAG6R,QAASC,EAAU9R,EAAG8R,QAASC,EAAgB/R,EAAG+R,cAAe1pT,EAAiB23S,EAAG33S,eAAgBogT,EAAgBzI,EAAGyI,cAAeuJ,EAAWhS,EAAGgS,SAClKC,EAAmBJ,EAAQxpT,EAAiBwpT,EAAQ3nV,OAAS4nV,EAAQ5nV,QACrEgoV,EAAiBL,EAAQnkV,UAAU,EAAG26B,EAAiBwpT,EAAQ3nV,OAAS4nV,EAAQ5nV,QAChFioV,EAAiBL,EAAQpkV,UAAU,EAAG26B,GACtC9G,EAAO,GAEX,GAAI2wT,IAAmBC,GAAkB9pT,EAAiB,EAEtD,OADA9G,EAAKl9B,KAAK,CAAC0tV,EAAc1pT,EAAiB,GAAI8pT,EAAe9pT,EAAiB,KACvE9G,EAEX,GAA+C,IAA3C2wT,EAAe75U,QAAQ85U,IAA0B1J,IAChDuJ,EAAS/9U,MAAQ4vU,IAAcmO,EAAS/9U,MAAQ4vU,KACL,IAA3CqO,EAAe75U,QAAQ85U,KAA0B1J,IACnB,IAA1B0J,EAAejoV,QACZ6nV,EAAcI,EAAejoV,OAAS,KAAO6nV,EAAcI,EAAejoV,SAAW,CAE7F,IAAIkoV,EAAgB,GAKf3J,GAA2C,IAA1B0J,EAAejoV,QACjCq3B,EAAKl9B,KAAK,CAAC0tV,EAAc,GAAII,EAAe,KAEhD,IAAK,IAAIloV,EAAIkoV,EAAejoV,OAAQD,EAAIioV,EAAehoV,OAAQD,IACvD8nV,EAAc9nV,KAAOmoV,GAAiBL,EAAc9nV,KAAO25U,KAC3DwO,EAAgBL,EAAc9nV,GAC9Bs3B,EAAKl9B,KAAK,CAAC+tV,EAAe,MAGlC,OAAO7wT,EAMX,GAAKknT,IAC2C,IAA3C0J,EAAe95U,QAAQ65U,IACpBH,EAAc1pT,EAAiB,KAAOu7S,MACxC6E,IAC8C,IAA3C0J,EAAe95U,QAAQ65U,IACpBH,EAAc1pT,EAAiB,KAAOu7S,IAA6B,CAC3E,IAAIptU,EAASu7U,EAAc,GAC3B,IAAS9nV,EAAIlE,KAAKuV,IAAI,EAAG42U,EAAehoV,OAAS,GAAID,EAAI8nV,EAAc7nV,OAAQD,IAC3E,GAAI8nV,EAAc9nV,KAAO25U,GAA2B,CAChDptU,EAASu7U,EAAc9nV,GACvB,MAGR,MAAO,CAAC,CAACuM,EAAQ27U,EAAe9pT,EAAiB,KAGrD,MAAmD,MAA9C8pT,EAAeA,EAAejoV,OAAS,IACvCioV,EAAeA,EAAejoV,OAAS,KAAO+nV,EACxC,CAAC,CAACF,EAAc1pT,EAAiB,GAAIu7S,KAGnC,CAAC,CAACmO,EAAc1pT,EAAiB,GAAI8pT,EAAe9pT,EAAiB,KA27DnEgqT,CAA0B,CACjCR,QAhBAJ,IACIH,GAAkBC,GAGbC,IAA4B/N,GAAyBgN,OAFhD/tV,KAAK4vV,qBAUTpD,EAKV4C,QAHUpvV,KAAK6vV,aAIfR,cAAervV,KAAKysV,cACpB9mT,eAAgB3lC,KAAK+lC,UAAUzwB,MAC/BywU,cAAegJ,EACfO,SAAUtvV,KAAK2uV,eAKnB,GAHI9vT,GAAQA,EAAKr3B,QAAUq3B,EAAK,IAAMA,EAAK,GAAG,KAAOqiT,KACjDlhV,KAAKmuV,iCAAkC,IAEvCY,GAAclwT,GAAwB,IAAhBA,EAAKr3B,OAA/B,CAIK,GAAIunV,GAA4B,IAAhBlwT,EAAKr3B,OAAc,CACpC,IAAKq3B,EAAK,KAAOA,EAAK,GAAG,GAErB,YADA7+B,KAAKgvV,iCAGJ,GAAID,GAAYlwT,EAAK,KACrBA,EAAK,GAAG,KAAOqiT,IAA6BriT,EAAK,GAAG,KAAOqiT,IAE5D,YADAlhV,KAAKgvV,iCAIb,IAAIc,EAAkC,IAAhBjxT,EAAKr3B,QAAgBq3B,EAAK,GAAG,KAAOqiT,GACtD6O,EAAoB,GACpBC,GAAa,EACbjiU,EAAQ,KACZ,IAAK+hU,EACD,IAAK,IAAIvoV,EAAI,EAAGA,EAAIs3B,EAAKr3B,OAAQD,IAAK,CAClC,IAAI0oV,EAAkBjwV,KAAKw7U,WAAW+J,UAAU,CAC5CzxU,OAAQ+qB,EAAKt3B,GAAG,GAChBi+U,YAAa3mT,EAAKt3B,GAAG,GACrBk+U,kBAAmBzlV,KAAKylV,kBACxBC,mBAAoB1lV,KAAK+lV,gBACzBH,aAAc5lV,KAAK6L,QAAQnD,MAC3Bm9U,WAAY+I,GAAkBC,EAC9B/I,eAAgB9lV,KAAKysV,gBAEzBsD,EAAkBpuV,KAAKsuV,GAClBA,EAAgBvnV,QACjBqlB,EAAQ,CAAEroB,KAAM,UAEpBsqV,EAAaC,EAAgB3J,aAGhCtmV,KAAKkH,QAAQklV,kBACd4D,GAAa,GAEjBhwV,KAAKylV,mBAAoB,EACzB,IAUIyK,EAVA7I,EAAiBrnV,KAAKkH,QAAQwJ,SAAW1Q,KAAKysV,eAE7ChkV,GAAUzI,KAAKkH,QAAQwJ,SAAW1Q,KAAKkH,QAAQwJ,OAAOlJ,OAAS,EAChE2oV,EAAkBJ,EAAkBA,EAAkBvoV,OAAS,GAC/D4oV,EAA4BD,IAAoB1nV,GAAU0nV,EAAgBznV,OAC1E2nV,EAAyBtB,IAAaH,GAAkBC,IAAgBuB,EACxE7J,IAAY4J,GAAkBA,EAAgB5J,UAC9C+J,EAAuBtwV,KAAKw7U,WAAWz3J,WACvCwsK,GAA+B9T,EAAQwS,EAAsBqB,GAC7DE,EAAexwV,KAAKw7U,WAAW9yU,MAE/B+nV,EAAmBzwV,KAAK+lC,UAC5B,GAAIgpT,EAAU,CACV,IAAI2B,EAAW7xT,GAAQA,EAAKr3B,OAAS,EAAIq3B,EAAK,GAAG,GAAK,KAClDsqT,EAAiBnpV,KAAKw7U,WAAW6N,iBAAiBqH,GAClD7xT,EAAKr3B,QAAUq3B,EAAK,GAAG,KAAOqiT,GAC1B8O,GACAhwV,KAAK2wV,2BACL3wV,KAAK4wV,kBAAkB,IAElBrK,GACL2J,EAAqBlwV,KAAKysV,cAAcgE,EAAiBn7U,SAErDtV,KAAK+sV,cACL/sV,KAAKsuV,aAAatuV,KAAK6wV,kBAAkBX,KAGzClwV,KAAKgvV,iCAGJqB,GACLrwV,KAAK+sV,cACDluT,EAAKr3B,QAAUq3B,EAAK,GAAG,KAAOqiT,IAC9BlhV,KAAKsuV,aAAatuV,KAAK6wV,kBAAkBhyT,EAAK,GAAG,MAGhDuxT,EACU,MAAXzrV,EAAEkJ,MAAgBs7U,IAIb1gV,GAAUwmV,KAA0BxmV,GAAU6nV,GACnDtwV,KAAKgvV,kCAECvmV,GAAUwmV,IAAyBxmV,GAAU6nV,GACnDtwV,KAAK2wV,2BAEAloV,GAAUwmV,IAAyBxmV,GAAU6nV,GAC9CC,EACAvwV,KAAK2wV,2BAGL3wV,KAAKgvV,iCAGHvmV,GAAUwmV,IAA0BxmV,GAAU6nV,GAG/CpB,IAAiBsB,GAItBxwV,KAAKgvV,iCANLhvV,KAAK2wV,4BASHP,GAGD/I,GACDrnV,KAAK2wV,4BAKR3wV,KAAKkH,QAAQklV,iBAAmBvtT,EAAK,GAAG,KAAOqiT,KAKhDlhV,KAAKsuV,aAAatuV,KAAK6wV,kBAAkBhyT,EAAK,GAAG,UAInDkwT,IACN/uV,KAAK+sV,cACDluT,EAAKr3B,QAAUq3B,EAAK,GAAG,KAAOqiT,IAC9BlhV,KAAKsuV,aAAatuV,KAAK6wV,kBAAkBhyT,EAAK,GAAG,KAEjD7+B,KAAKkH,QAAQklV,gBACT0D,GACA9vV,KAAKylV,mBAAoB,EACpB0I,GACDnuV,KAAK4wV,kBAAkB,GAE3B5wV,KAAKmuV,iCAAkC,GAElC6B,IACLhwV,KAAK4wV,kBAAkB,GACvB5wV,KAAKmuV,iCAAkC,GAIvCgC,GAAmBA,EAAgB7J,aAGnCtmV,KAAKylV,mBAAoB,EAEpBqK,IACL9vV,KAAKylV,mBAAoB,EACpB0I,GACDnuV,KAAK4wV,kBAAkB,GAE3B5wV,KAAKmuV,iCAAkC,GAG3CS,GAAkB5uV,KAAKkH,QAAQ+kV,kCAE/BjsV,KAAK4wV,mBAAmB,IAGhC5wV,KAAK8wV,sBAAsB,CACvBhvH,SAAUmtH,EACV7vU,MAAOza,IAEX3E,KAAK+wV,gBAAgB,CAAE3xU,MAAOza,EAAGopB,MAAOA,IACpCghU,GAIA/uV,KAAK8sV,wBAzKL9sV,KAAKgvV,oCA+Kb1C,EAAUjkV,UAAUklV,eAAiB,SAAU5oV,GACvC3E,KAAKgxV,aAAa,CAAE5xU,MAAOza,MAG/B3E,KAAKqoR,UAAW,EAChBroR,KAAK0sV,gBAAkB3L,GAAyB4L,KAChD3sV,KAAKmuV,iCAAkC,EACvCnuV,KAAKixV,sBACAjxV,KAAKiuV,kBACNjuV,KAAKwlC,MAAM,EAAGxlC,KAAK6vV,aAAaroV,QAEpCxH,KAAKiuV,kBAAmB,EACxBjuV,KAAKkxV,gBAAgB,CAAE9xU,MAAOza,MAKlC2nV,EAAUjkV,UAAUmlV,cAAgB,SAAU7oV,GAC1C3E,KAAKylV,mBAAoB,EACzBzlV,KAAKqoR,UAAW,EACZroR,KAAKmxV,YAAY,CAAE/xU,MAAOza,MAG9B3E,KAAK0sV,gBAAkB3L,GAAyB4L,KAChD3sV,KAAKmuV,iCAAkC,EACvCnuV,KAAKixV,sBACLjxV,KAAKoxV,eAAe,CAAEhyU,MAAOza,MAKjC2nV,EAAUjkV,UAAUolV,gBAAkB,SAAU9oV,GAC5C3E,KAAKqxV,cAAc,CAAEjyU,MAAOza,KAKhC2nV,EAAUjkV,UAAUilV,iBAAmB,SAAU3oV,GAC7C,IAAI3E,KAAKsxV,eAAe,CAAElyU,MAAOza,IAAjC,CAGA,IAAI24U,EAAKt9U,KAAK+lC,UAAWzwB,EAAQgoU,EAAGhoU,MAAO3J,EAAM2xU,EAAG3xU,IAIpD,GAHA3L,KAAK2uV,aAAehqV,EACpB3E,KAAK4vV,qBAAuB5vV,KAAK6L,QAAQnD,MACzC1I,KAAK4sV,yBAA2B,CAAEt3U,MAAOA,EAAO3J,IAAKA,GACjD3L,KAAKuxV,8BAA8B5sV,GAAI,CACvC,IAAI6sV,EAAW7sV,EAAEwiC,UAAY4jT,GAC7B,IAAIyG,EAkBA,OAFA7sV,EAAEwE,sBACFnJ,KAAK4wV,kBAAkB,GAhBvB,IAAI9O,EAAK9hV,KAAK+lC,UAAWJ,EAAiBm8S,EAAGxsU,MAAOwwB,EAAeg8S,EAAGn2U,IAOtE,GANIhH,EAAEyiC,UAAYoqT,EACdxxV,KAAK4wV,mBAAmB,GAGxB5wV,KAAK4wV,kBAAkB,GAEvBjrT,IAAmB3lC,KAAK+lC,UAAUzwB,OAASwwB,IAAiB9lC,KAAK+lC,UAAUp6B,IAG3E,YADAhH,EAAEwE,iBAWd,IAAI2K,EAAS9T,KAAKysV,cAAczsV,KAAK+lC,UAAUzwB,OAC3Co9B,EAAO1yC,KAAKyxV,kBAAkB39U,GAC9B49U,GAAuB,EAC3B,KAAI/sV,EAAEw8M,QAAUx8M,EAAE6pF,SAAW7pF,EAAEokR,SAAWpkR,EAAEwiC,UAAY4jT,IAAxD,CAGA,OAAQpmV,EAAEwiC,SACN,KAAK4jT,GACD/qV,KAAK4wV,mBAAmB,GACxBc,GAAuB,EACvB1xV,KAAKmuV,iCAAkC,EACvC,MACJ,KAAKpD,GACD/qV,KAAK2xV,uBAAuBj/S,EAAM5+B,EAAQsL,OAC1CsyU,GAAuB,EACvB1xV,KAAKmuV,iCAAkC,EACvC,MACJ,KAAKpD,GACD/qV,KAAK4wV,kBAAkB,GACvBc,GAAuB,EACvB1xV,KAAKmuV,iCAAkC,EACvC,MACJ,KAAKpD,GACD/qV,KAAK2xV,wBAAwBj/S,EAAM5+B,EAAQsL,OAC3CsyU,GAAuB,EACvB1xV,KAAKmuV,iCAAkC,EACvC,MACJ,KAAKpD,GAED,MACJ,KAAKA,GACD/qV,KAAKguV,qBAAqB,GAC1B0D,GAAuB,EACvB1xV,KAAKmuV,iCAAkC,EACvCnuV,KAAKylV,mBAAoB,EACzB,MACJ,KAAKsF,GACD/qV,KAAKguV,qBAAqBhuV,KAAK6vV,aAAaroV,QAC5CkqV,GAAuB,EACvB1xV,KAAKmuV,iCAAkC,EACvCnuV,KAAKylV,mBAAoB,EACzB,MACJ,QAEI,OAEJiM,GACA/sV,EAAEwE,oBAMVmjV,EAAUjkV,UAAUqlV,eAAiB,WACjC1tV,KAAKyuV,mBAAoB,GAK7BnC,EAAUjkV,UAAUslV,oBAAsB,SAAUhpV,GAChD,GAAK3E,KAAKkH,QAAQglV,mBAAoBlsV,KAAK4xV,kBAAkB,CAAExyU,MAAOza,KAGjE3E,KAAKqoR,SAAV,CAGA,IAAIjpQ,EAAQza,EACRya,EAAMgoB,SACNpnC,KAAK4wV,mBAAmBxxU,EAAM0lB,aAAe1lB,EAAM2lB,QAAU,GAAK,EAAI,GAGtE/kC,KAAK2xV,wBAAwBvyU,EAAM0lB,aAAe1lB,EAAM2lB,QAAU,EAAI,GAAK,GAE/E3lB,EAAM8qU,aAAc,EAChB9qU,EAAMjW,gBACNiW,EAAMjW,iBAENiW,EAAM6a,iBACN7a,EAAM6a,oBAGdqyT,EAAUjkV,UAAUqmV,cAAgB,SAAU/pV,GAC1C,IAAI+D,EAAQ1I,KAAKuuK,KAAKhxJ,UAAUvd,KAAK6vV,aAAc7vV,KAAK6xV,cAAgB7xV,KAAK0I,MACzED,GAAUC,IAAU1I,KAAKw7U,WAAW6J,2BACpC38U,EAAQ1I,KAAKw7U,WAAW8J,iBAAiB58U,IAE7C,IAAIopV,EAAqB9xV,KAAKw7U,YAAcx7U,KAAKw7U,WAAWz3J,WAC5D/jL,KAAK+xV,WAAWrpV,GAChB1I,KAAK8wV,sBAAsB,CACvBhvH,SAAUgwH,EACV1yU,MAAOza,KAGflE,OAAOkuC,eAAe29S,EAAUjkV,UAAW,eAAgB,CACvDknB,IAAK,WACD,OAAQvvB,KAAK6L,SAAW,IAAInD,OAAS,IAEzCm2U,YAAY,EACZC,cAAc,IAElBr+U,OAAOkuC,eAAe29S,EAAUjkV,UAAW,cAAe,CACtDknB,IAAK,WACD,OAAKvvB,KAAKkH,QAAQwJ,OAGiB,iBAAxB1Q,KAAKkH,QAAQwJ,OACb1Q,KAAKkH,QAAQwJ,OAGb1Q,KAAKkH,QAAQwJ,OAAOmhV,YANpB3Q,IASfrC,YAAY,EACZC,cAAc,IAElBr+U,OAAOkuC,eAAe29S,EAAUjkV,UAAW,gBAAiB,CACxDknB,IAAK,WACD,OAAKvvB,KAAKkH,QAAQwJ,OAGiB,iBAAxB1Q,KAAKkH,QAAQwJ,OACb1Q,KAAKkH,QAAQwJ,OAGb1Q,KAAKkH,QAAQwJ,OAAOshV,cANpB9Q,IASfrC,YAAY,EACZC,cAAc,IAElBr+U,OAAOkuC,eAAe29S,EAAUjkV,UAAW,YAAa,CACpDknB,IAAK,WACD,IAAI26T,EAAc,CAAE50U,MAAO,EAAG3J,IAAK,GAOnC,OANqB,OAAjB3L,KAAK6L,cAAoDiwI,IAAhC97I,KAAK6L,QAAQ85B,iBACtCukT,EAAc,CACV50U,MAAOtV,KAAK6L,QAAQ85B,eACpBh6B,IAAK3L,KAAK6L,QAAQi6B,eAGnBokT,GAEXrL,YAAY,EACZC,cAAc,IAElBwN,EAAUjkV,UAAUimV,aAAe,SAAUvoT,GACrC/lC,KAAK6L,SAAWuD,SAASgK,gBAAkBpZ,KAAK6L,UAChD7L,KAAK6L,QAAQg6B,kBAAkBE,EAAUzwB,MAAOywB,EAAUp6B,KACtDo6B,EAAUzwB,QAAUywB,EAAUp6B,MAC9B3L,KAAK0sV,gBAAkB3L,GAAyBn8H,aAO5D0nI,EAAUjkV,UAAUwoV,kBAAoB,SAAU/8U,GAG9C,IAFA,IAAIwB,GAAS,EACT3J,EAAM,EACDpE,EAAI,EAAGA,EAAIvH,KAAKysV,cAAcjlV,OAAQD,IACvCvH,KAAKysV,cAAcllV,KAAOuM,IAC1BnI,EAAMpE,EAAI,GACK,IAAX+N,IACAA,EAAQ/N,IAepB,OAXI+N,EAAQ,IACRA,EAAQ,GAEPtV,KAAKkH,QAAQg7U,kBAAoBliV,KAAKysV,cAAcjlV,SAAWxH,KAAKwsV,YAAYhlV,SAC7ExH,KAAKysV,cAAcjlV,OAASxH,KAAKwsV,YAAYhlV,OAC7CmE,GAAO3L,KAAKwsV,YAAYhlV,OAASxH,KAAKysV,cAAcjlV,OAGpDmE,EAAMtI,KAAKuV,IAAI,EAAGjN,GAAO3L,KAAKysV,cAAcjlV,OAASxH,KAAKwsV,YAAYhlV,UAGvE,CAAE8N,MAAOA,EAAO3J,IAAKA,IAKhC2gV,EAAUjkV,UAAUkmV,iBAAmB,SAAUx1U,GAE7C,IADA,IAAIgtB,EAAY,CAAEzwB,MAAOyD,EAAOpN,IAAKoN,GAC5BxR,EAAIwR,EAAO4xB,EAAI5xB,EAAQ,EAAGxR,EAAIvH,KAAKysV,cAAcjlV,QAAUmjC,GAAK,EAAGpjC,IAAKojC,IAAK,CAClF,GAAIpjC,EAAIvH,KAAKysV,cAAcjlV,QAAUxH,KAAKysV,cAAcllV,KAAO25U,GAA2B,CACtFn7S,EAAY/lC,KAAK6wV,kBAAkB7wV,KAAKysV,cAAcllV,IACtD,MAEJ,GAAIojC,GAAK,GAAK3qC,KAAKysV,cAAc9hT,KAAOu2S,GAA2B,CAC/Dn7S,EAAY/lC,KAAK6wV,kBAAkB7wV,KAAKysV,cAAc9hT,IACtD,OAGR,OAAO5E,GAEXumT,EAAUjkV,UAAUuoV,kBAAoB,SAAU7zU,GAC9C,IAAIgpB,EAAY/lC,KAAK+lC,UACrB,GAAI/lC,KAAK+lV,gBAAiB,CACtB,IAAIzwU,EAAQywB,EAAUzwB,MAClB28U,EAAgBjyV,KAAKysV,cAAcn3U,EAAQ,GAC3CxB,EAAS,GACTo+U,EAAkB,GACtB,GAAIn1U,EAAS,GACT,IAAK,IAAIxV,EAAI+N,EAAQyH,EAAQxV,GAAK,EAAGA,IAEjC,IADA2qV,EAAkBlyV,KAAKysV,cAAcllV,MACb25U,IACpBgR,IAAoBD,EAAe,CACnC38U,EAAQ/N,EACRuM,EAASo+U,EACT,YAKR,IAAS3qV,EAAI+N,EAAQyH,EAAQxV,EAAIvH,KAAKysV,cAAcjlV,OAAQD,IAExD,IADA2qV,EAAkBlyV,KAAKysV,cAAcllV,MACb25U,IACpBgR,IAAoBD,EAAe,CACnC38U,EAAQ/N,EACRuM,EAASo+U,EACT,MAIZ,GAAIp+U,EAIA,OAHA9T,KAAK+sV,cACL/sV,KAAKsuV,aAAatuV,KAAK6wV,kBAAkB/8U,SACzC9T,KAAK0sV,gBAAkB3L,GAAyBn8H,WAIxD5kN,KAAK0sV,gBAAkB3L,GAAyB4L,KAChD,IAAIrP,EAAKt9U,KAAK+lC,UAAWJ,EAAiB23S,EAAGhoU,MAAOwwB,EAAew3S,EAAG3xU,IACtE,GAAIg6B,EAAiBG,GACjB9lC,KAAKysV,cAAc9mT,KAAoB3lC,KAAKysV,cAAc3mT,EAAe,GAIzE,OAHA9lC,KAAKsuV,aAAatuV,KAAKuuV,iBAAiBxxU,EAAS,EAAI4oB,EAAiBG,EAAe,IACrF9lC,KAAKylV,mBAAoB,OACzBzlV,KAAK0sV,gBAAkB3L,GAAyB4L,MAKpD,IAFA,IAAIwF,EAAuBnyV,KAAKysV,cAAc9mT,GAC1CzgC,EAAIygC,EAAiB5oB,EAClB7X,EAAI,GAAKA,EAAIlF,KAAKysV,cAAcjlV,SAC/BxH,KAAKysV,cAAcvnV,KAAOitV,GAC1BnyV,KAAKysV,cAAcvnV,KAAOg8U,KAG9Bh8U,GAAK6X,EAET,GAAI/c,KAAKysV,cAAcvnV,KAAOg8U,GAA9B,CAKA,IADA,IAAI/7T,EAAIjgB,EACDigB,GAAK,GAAKA,EAAInlB,KAAKysV,cAAcjlV,QAChCxH,KAAKysV,cAActnU,KAAOnlB,KAAKysV,cAAcvnV,IAGjDigB,GAAKpI,EAEL7X,EAAIigB,IAAMA,EAAI,IAAMwgB,GAAkBzgC,EAAI,IAAM4gC,IAChD9lC,KAAKsuV,aAAa,CAAEh5U,MAAO6P,EAAI,EAAGxZ,IAAKzG,EAAI,IAC3ClF,KAAKylV,mBAAoB,GAEpBvgV,EAAIigB,IAAMjgB,IAAMygC,GAAkBxgB,IAAM2gB,KAC7C9lC,KAAKsuV,aAAa,CAAEh5U,MAAOpQ,EAAGyG,IAAKwZ,IACnCnlB,KAAKylV,mBAAoB,GAE7BzlV,KAAK0sV,gBAAkB3L,GAAyB4L,OAEpDL,EAAUjkV,UAAUspV,uBAAyB,SAAU50U,EAAQjJ,EAAQsL,GAGnE,QAFe,IAAXtL,IAAqBA,EAAS,SACpB,IAAVsL,IAAoBA,EAAQ,IAC3Bpf,KAAKw7U,WAAV,CAGA,IAp1E2B9vU,EAPOgF,EAClC6F,EA01EIurN,EAAW9hO,KAAK0I,MAChBgqC,EAh0Be,EAg0Be31B,EAC9ByoB,EAAQxlC,KAAKwlC,QAEjB,GAAe,OADf1xB,EAASA,GAAU9T,KAAKysV,cAAcjnT,EAAM,OACrBxlC,KAAKkH,QAAQ2/O,MAAMilG,YAAa,CACnD,IAAIsG,GAh2E0B1hV,EAg2EW1Q,KAAK6xV,aA/1ElDt7U,EAAS7F,GAAUA,EAAOP,MAAM,WACpBoG,EAAO,GAAG/O,OAAS,GAKJkE,EA01EG0mV,EAA1B1/S,EAz1EDrvC,KAAKqmC,IAAI,GAAI,EAAIh+B,GA21EpB1L,KAAKw7U,WAAW6I,WAAWvwU,EAAQ4+B,GACnC1yC,KAAK8wV,sBAAsB,CACvBhvH,SAAUA,EACV1iN,MAAOA,IAEXpf,KAAK+sV,cACL/sV,KAAKsuV,aAAatuV,KAAK6wV,kBAAkB/8U,MAK7Cw4U,EAAUjkV,UAAUyoV,sBAAwB,SAAU35T,GAElD,QADa,IAATA,IAAmBA,EAAO,CAAE2qM,SAAU,KAAM1iN,MAAO,MAClDq9T,EAAQz8U,KAAK0I,MAAOyuB,EAAK2qM,UAC1B,OAAO9hO,KAAKqyV,mBAAmBl7T,IAMvCm1T,EAAUjkV,UAAUgqV,mBAAqB,SAAUl7T,GAE/C,YADa,IAATA,IAAmBA,EAAO,CAAE2qM,SAAU,KAAM1iN,MAAO,KAChDpf,KAAKoK,QAAQohV,GAAczoV,GAAOo0B,EAAM,CAC3CzuB,MAAO1I,KAAK0I,UAMpB4jV,EAAUjkV,UAAUmmV,aAAe,SAAUr3T,GAEzC,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQk3S,GAAOv+S,GAAOo0B,EAAM,CACpCzuB,MAAO1I,KAAK0I,UAMpB4jV,EAAUjkV,UAAU0oV,gBAAkB,SAAU55T,GAE5C,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,GAAI2O,MAAO,OAC3C/tB,KAAKoK,QAAQqhV,GAAW1oV,GAAOo0B,EAAM,CACxCzuB,MAAO1I,KAAK0I,UAMpB4jV,EAAUjkV,UAAU2oV,aAAe,SAAU75T,GAEzC,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQy8R,GAAO9jS,GAAO,GAAIo0B,KAK1Cm1T,EAAUjkV,UAAU6oV,gBAAkB,SAAU/5T,GAE5C,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQuhV,GAAW5oV,GAAO,GAAIo0B,KAK9Cm1T,EAAUjkV,UAAU8oV,YAAc,SAAUh6T,GAExC,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQ21N,GAAMh9N,GAAO,GAAIo0B,KAKzCm1T,EAAUjkV,UAAU+oV,eAAiB,SAAUj6T,GAE3C,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQshV,GAAU3oV,GAAO,GAAIo0B,KAK7Cm1T,EAAUjkV,UAAUgpV,cAAgB,SAAUl6T,GAE1C,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQ0yC,GAAQ/5C,GAAOo0B,EAAM,CACrCzuB,MAAO1I,KAAK0I,UAMpB4jV,EAAUjkV,UAAUipV,eAAiB,SAAUn6T,GAE3C,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQghV,GAAUroV,GAAO,GAAIo0B,KAK7Cm1T,EAAUjkV,UAAUupV,kBAAoB,SAAUz6T,GAE9C,YADa,IAATA,IAAmBA,EAAO,CAAE/X,MAAO,KAChCpf,KAAKoK,QAAQmhV,GAAaxoV,GAAO,GAAIo0B,KAKhDm1T,EAAUjkV,UAAU0kV,YAAc,WAC9B/sV,KAAK8sV,mBACL9sV,KAAKixV,uBAKT3E,EAAUjkV,UAAUsoV,yBAA2B,WAC3C,IAAIrT,EAAKt9U,KAAK+lC,UAAWzwB,EAAQgoU,EAAGhoU,MAAO3J,EAAM2xU,EAAG3xU,IAChD2mV,EAAqBtyV,KAAK6vV,aAAaroV,OAC3CxH,KAAK+sV,cACL,IAAIwF,EAAkBvyV,KAAK6vV,aAAaroV,OAAS8qV,EACjDtyV,KAAKsuV,aAAa,CACdh5U,MAAOA,EAAQi9U,EACf5mV,IAAKA,EAAM4mV,KAMnBjG,EAAUjkV,UAAUykV,iBAAmB,WACnC,IAAIxP,EAAKt9U,KAAKw7U,WAAWgI,mBAAoBgJ,EAAclP,EAAG18S,KAAM6rT,EAAgBnP,EAAG5sU,OACvF1Q,KAAKysV,cAAgBA,EACrBzsV,KAAKwsV,YAAcA,GAKvBF,EAAUjkV,UAAUmqV,gBAAkB,SAAU9pV,GAC5C1I,KAAK6L,QAAQnD,MAAQA,GAKzB4jV,EAAUjkV,UAAUopV,kBAAoB,SAAU39U,GAE9C,OAAQA,GACJ,IAAK,IACD,OAAOxB,OAAOtS,KAAKkH,QAAQ2/O,MAAMilG,aACrC,IAAK,IACD,OAAOx5U,OAAOtS,KAAKkH,QAAQ2/O,MAAMhyH,QACrC,IAAK,IACD,OAAOviH,OAAOtS,KAAKkH,QAAQ2/O,MAAMklG,QAErC,IAAK,IAEL,IAAK,IACD,OAAOz5U,OAAOtS,KAAKkH,QAAQ2/O,MAAMw1F,MACrC,IAAK,IACD,OAAO/pU,OAAOtS,KAAKkH,QAAQ2/O,MAAMphP,OAErC,IAAK,IAGL,IAAK,IACD,OAAO6M,OAAOtS,KAAKkH,QAAQ2/O,MAAM3qO,KAErC,IAAK,IACD,OAAO5J,OAAOtS,KAAKkH,QAAQ2/O,MAAM5qO,MACrC,QACI,OAr+BW,IA4+BvBqwU,EAAUjkV,UAAU2mV,+BAAiC,WACjDhvV,KAAKyyV,8BACLzyV,KAAK0yV,mCAKTpG,EAAUjkV,UAAUoqV,4BAA8B,WAC9CzyV,KAAKwyV,gBAAgBxyV,KAAK4vV,sBAAwB,KAKtDtD,EAAUjkV,UAAUqqV,gCAAkC,WAClD,IAAIpV,EAAKt9U,KAAK4sV,yBAA0Bt3U,EAAQgoU,EAAGhoU,MAAO3J,EAAM2xU,EAAG3xU,IACnE3L,KAAKsuV,aAAa,CAAEh5U,MAAOA,GAAS,EAAG3J,IAAKA,GAAO,KAEvD2gV,EAAUjkV,UAAU0pV,WAAa,SAAUrpV,GACvC1I,KAAK2yV,YAAYjqV,GACjB1I,KAAKw7U,WAAax7U,KAAK4yV,cAAclqV,GACrC1I,KAAKixV,uBAET3E,EAAUjkV,UAAUsqV,YAAc,SAAUjqV,GACxC,GAAIA,IAAUg5U,GAAYh5U,GACtB,MAAM,IAAI+H,MAAM,4DAGxB67U,EAAUjkV,UAAU4oV,oBAAsB,WACtC,IAAI37U,EAAQtV,KAAKwlC,QAAQ,GACrB35B,EAAU7L,KAAK6L,QACf6E,EAAS1Q,KAAKqoR,SAAWroR,KAAK6xV,YAAc7xV,KAAKgyV,cACjD1U,EAAKt9U,KAAKw7U,WAAWgI,iBAAiB9yU,GAAS87U,EAAclP,EAAG18S,KAAM6rT,EAAgBnP,EAAG5sU,OAC7F1Q,KAAKysV,cAAgBA,EACrBzsV,KAAKwsV,YAAcA,EACnB,IAAIX,EAAiB7rV,KAAKkH,QAAQ2kV,gBAAkBpjV,GAAUzI,KAAKkH,QAAQwd,aACvEmuU,GAAmB7yV,KAAKqoR,UACxBwjE,IACC7rV,KAAKw7U,WAAWtnQ,WACjB23Q,GAAkBpjV,GAAUzI,KAAKkH,QAAQwd,eACzC7Y,EAAQ6Y,YAAc1kB,KAAKkH,QAAQwd,aAEvC,IAAIouU,EAAkBD,EAAkB,GAAKrG,EAC7CxsV,KAAK4vV,qBAAuB5vV,KAAK6vV,aACjC7vV,KAAKwyV,gBAAgBM,GACjB9yV,KAAKqoR,WAAaroR,KAAKkH,QAAQilV,gBAAkBnsV,KAAKkH,QAAQ8kV,6BAC9DhsV,KAAKguV,qBAAqB14U,IAMlCg3U,EAAUjkV,UAAUm9B,MAAQ,SAAUlwB,EAAO3J,QAC7B,IAARA,IAAkBA,EAAM2J,GAC5B,IAAIowB,OAAuBo2G,IAAVxmI,EACb40U,EAAc,CAAC50U,EAAOA,GACtBzJ,EAAU7L,KAAK6L,QACnB,IAAI65B,IAAe1lC,KAAKkH,QAAQgxB,WAAYl4B,KAAKkH,QAAQwpE,SAAzD,CAGA,SACmCorE,IAA3BjwI,EAAQ85B,iBACJD,IA5pF6Bt2B,UA6pFAA,SAASgK,gBAAkBvN,GACpDA,EAAQ+5B,QAEZ/5B,EAAQg6B,kBAAkBvwB,EAAO3J,IAErCu+U,EAAc,CAACr+U,EAAQ85B,eAAgB95B,EAAQi6B,eAGvD,MAAOnhC,GACHulV,EAAc,GAElB,OAAOA,IAEXoC,EAAUjkV,UAAU2lV,qBAAuB,SAAUj1U,GAEjD,IAAK,IAAIxR,EAAIwR,EAAO4xB,EAAI5xB,EAAQ,EAAGxR,EAAIvH,KAAKysV,cAAcjlV,QAAUmjC,GAAK,EAAGpjC,IAAKojC,IAAK,CAClF,GAAIpjC,EAAIvH,KAAKysV,cAAcjlV,QAAoC,MAA1BxH,KAAKysV,cAAcllV,GAEpD,YADAvH,KAAK+yV,kBAAkB/yV,KAAKysV,cAAcllV,IAG9C,GAAIojC,GAAK,GAA+B,MAA1B3qC,KAAKysV,cAAc9hT,GAE7B,YADA3qC,KAAK+yV,kBAAkB/yV,KAAKysV,cAAc9hT,MAKtD2hT,EAAUjkV,UAAU0qV,kBAAoB,SAAUj/U,GAG9C,IAFA,IAAIwxQ,GAAS,EACT35Q,EAAM,EACDpE,EAAI,EAAGA,EAAIvH,KAAKysV,cAAcjlV,OAAQD,IACvCvH,KAAKysV,cAAcllV,KAAOuM,IAC1BnI,EAAMpE,EAAI,GACK,IAAX+9Q,IACAA,EAAQ/9Q,IAIhB+9Q,EAAQ,IACRA,EAAQ,GAEZtlR,KAAKwlC,MAAM,EAAG,GACdxlC,KAAKwlC,MAAM8/O,EAAO35Q,IAKtB2gV,EAAUjkV,UAAUuqV,cAAgB,SAAUlqV,GAC1C,IAAIy5U,GAAgBniV,KAAKw7U,YAAc,IAAO,MAAM2G,YACpDniV,KAAKkH,QAAQwB,MAAQA,EACrB,IAAI8yU,EAAax7U,KAAK6sV,mBAEtB,OADArR,EAAW4N,eAAeppV,KAAKqoR,SAAW85D,EAAc,MACjD3G,GAMX8Q,EAAUjkV,UAAUwkV,iBAAmB,WACnC,IAAIzgL,EAAiBpsK,KAAK6tV,uBAE1B,OADiB,IAAIjM,GAAW7+U,GAAO,GAAIqpK,KAM/CkgL,EAAUjkV,UAAUwlV,qBAAuB,WAUvC,MATiB,CACbz/K,YAAapuK,KAAKkH,QAAQknK,YAC1ByzK,kBAAmB7hV,KAAKkH,QAAQ26U,kBAAoB7hV,KAAKkH,QAAQ26U,kBAAoB,gBACrFnxU,OAAQ1Q,KAAK6xV,YACb9P,UAAW/hV,KAAKkH,QAAQ66U,UACxB7sU,gBAAiBlV,KAAKkH,QAAQgO,gBAC9BgtU,iBAAkBliV,KAAKkH,QAAQg7U,iBAC/Bx5U,MAAO1I,KAAKkH,QAAQwB,QAQ5B4jV,EAAUjkV,UAAUkpV,8BAAgC,SAAUyB,GAC1D,IAAI3G,GAAkBrsV,KAAKkH,QAAQmlV,gBAAkB,IAChD/xU,KAAI,SAAUlV,GAAK,OAAOA,EAAE8L,WAAWoH,cAAckrB,UAC1D,OAAI6oT,EAAe12U,QAAQq9U,EAAU7rT,QAAQj2B,aAAe,GACxDm7U,EAAe12U,QAAQq9U,EAAU7rT,UAAY,GAC7CklT,EAAe12U,QAAQq9U,EAAUzhV,IAAI+G,cAAckrB,SAAW,GAK/D8oT,EA7kCmB,CA8kC5BhjV,IAYCxI,OAAOH,MAAM+G,OADZ/G,MAAMgpB,GAAGspU,gBAAkB3G,GAEjB3rV,OAUd,SAAUgC,EAAGC,GACT,IACIjC,EADSG,OACMH,MACfgpB,EAAKhpB,EAAMgpB,GACX+G,EAAS/G,EAAG+G,OACZuiU,EAAkBtpU,EAAGspU,gBACrBznU,EAAK,kBACLpY,EAAiB,GAAGlC,SACpBvJ,EAAgBhF,EAAEgF,cAGlB+jT,EAAU,UACVC,EAAgB,aAChBunC,EAAe,YAEftqD,EAAW,WACX8hC,EAAW,WACX5tR,EAAS,SAETmxH,EAActtK,EAAMiH,MAAM7E,OAAO,CACjCoF,KAAM,SAASjB,GACX,IAAIw3B,EAAOx3B,EAAQoM,QAAU3S,EAAM6S,WAAWtM,EAAQoM,SAAW3S,EAAM2S,UACvEtT,KAAKiqB,SAAW/iB,EAAQ+iB,SACxBjqB,KAAK+iV,KAAO,GACZ/iV,KAAK+iV,KAAKrkT,EAAKt8B,MAAQ,CACnBA,KAAMs8B,EAAKt8B,KACXgT,SAAUspB,EAAKtpB,UAAY,GAC3B4tU,QAAStkT,EAAKnrB,eAItBgK,UAAW,SAAS7U,EAAOgI,EAAQ4C,GAC/B,OAAO3S,EAAM4c,UAAU7U,EAAOgI,EAAQ4C,IAG1C6D,WAAY,SAASd,EAAM3F,EAAQ4C,GAC/B,OAAO3S,EAAMuQ,SAASmF,EAAM3F,EAAQ4C,IAGxCkuB,gBAAiB,SAAS9wB,GACtB,OAAO/P,EAAM0V,KAAKmrB,gBAAgB9wB,IAGtCuxB,gBAAiB,SAASwsI,EAAQvnK,GAC9B,OAAOvG,EAAM0V,KAAK4rB,gBAAgB/6B,IAGtC66B,cAAe,SAAS76B,GACpB,OAAOlH,KAAKiqB,SAAS/iB,EAAQxB,OAAS,MAI9C,SAASytV,IACL,IAAIC,EAAczyV,EAAM2S,UACpB4W,EAAO,GAKX,OAHAA,EAAKvoB,KAAKyxV,EAAYn/U,UAAUC,SAAS,MACzCgW,EAAKvoB,KAAKyxV,EAAYn/U,UAAUC,SAAS,MAElCgW,EAGX,SAASmpU,EAAiB//U,EAAS5C,GAC/B,OAAK4C,GAGa3S,EAAM6S,WAAWF,GAChBW,UAAUC,SAASQ,SAAShE,IAHpCA,EAMf,IAAI47U,EAAY57T,EAAO3tB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACnC2E,EAAU5D,EAAK4D,SAEf3E,EAAUe,EAAKf,SACPwJ,OAAS/P,EAAMuY,eAAehS,EAAQwJ,QAAU/P,EAAM6S,WAAWtM,EAAQoM,SAASW,UAAUC,SAASQ,SAASlQ,GACtH0C,EAAQiP,IAAMxV,EAAM4c,UAAU1R,EAAQiX,KAAK,SAAWniB,EAAM4c,UAAUrW,EAAQiP,KAC9EjP,EAAQ0R,IAAMjY,EAAM4c,UAAU1R,EAAQiX,KAAK,SAAWniB,EAAM4c,UAAUrW,EAAQ0R,KAE9E,IAAI06U,EAAgBznV,EAAQM,SAAS2W,KAAK,UAAY,GAClDywU,EAAcD,EAAa39U,QAAQ,WAAa,GAAK29U,EAAa39U,QAAQ,eAAiB,EAC3Fy9K,EAAenrL,EAAKf,QAAQwB,OAASmD,EAAQqjB,MAE7CqkU,EACAtrV,EAAKmE,QAAUnE,EAAK4D,QAAQM,UAE5BlE,EAAKmE,QAAUP,EAAQmgB,KAAK,6CAA6C7f,SACzElE,EAAKmE,QAAQmY,SAAS1Y,EAAQ,GAAG6gB,WAAWP,YAAY,2BAE5DlkB,EAAKmE,QAAQ,GAAGK,MAAMsR,QAAUlS,EAAQ,GAAGY,MAAMsR,QACjDlS,EAAQe,IAAI,CACRD,OAAQd,EAAQ,GAAGY,MAAME,SAI7B1E,EAAKurV,gBAAkB7wV,EAAEhC,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAM,qBAAsBF,UAAW,sCAAuCs/M,YAAY7qS,GAEnI5D,EAAK+vT,QAEL/vT,EAAKwrV,kBAAoB,IAAIR,EAAgBpnV,EAAQ,GAAI,CACrD6E,OAAQ2iV,EAAiBnsV,EAAQoM,QAASpM,EAAQwJ,QAClDwxU,iBAAkBh7U,EAAQg7U,iBAC1BmK,eAAgBnlV,EAAQmlV,eAAe7kV,OAASN,EAAQmlV,eAAiB8G,IACzEjH,iBAAkBhlV,EAAQglV,iBAC1Bh3U,gBAAiBhO,EAAQgO,gBACzB2xO,MAAO3/O,EAAQ2/O,MACfg7F,kBAAmB36U,EAAQ+iB,SAC3B5f,OAAQ,CACJqpV,SAAU,SAAS/uV,GACXA,EAAEopB,OACF9lB,EAAK0rV,sBAGbC,QAAS,SAASjvV,GACVA,EAAEya,MAAM+nB,SAAWxmC,EAAMupB,KAAKQ,IAAM/lB,EAAEya,MAAM+nB,SAAWxmC,EAAMupB,KAAKU,MAClEmO,YAAW,WACP9wB,EAAK4D,QAAQzB,QAAQ0yC,OAIjClxB,KAAM,SAASjnB,GACXsD,EAAK62D,UACLn6D,EAAEwE,mBAGVilK,YAAa,IAAIH,EAAY,CACzB36J,QAASpM,EAAQoM,QACjB2W,SAAUhiB,EAAKf,QAAQ+iB,WAE3BmiU,gBAAiBllV,EAAQklV,kBAG7BnkV,EAAK4rV,WAAa7zV,KAAK6L,QAAQqjB,MAC3BhoB,EAAQwB,OACRT,EAAKS,MAAMxB,EAAQwB,OAGvBT,EAAK4D,QACA0Y,SAAS,iBACTzB,KAAK,eAAgB,OACrBmG,GAAG,QAAUuC,GAAI,WACdvjB,EAAKmE,QAAQmY,SAASmnS,MAEzBziS,GAAG,WAAauC,GAAI,WACjBvjB,EAAKmE,QAAQ+f,YAAYu/R,MAGjC,IACI7/S,EAAQ,GAAGgZ,aAAa,OAAQ,QAClC,MAAOlgB,GACLkH,EAAQ,GAAGnG,KAAO,OAGPmG,EAAQU,GAAG,eAAiB5J,EAAEsF,EAAK4D,SAASwsB,QAAQ,YAAY9rB,GAAG,aAG9EtE,EAAKsf,QAAO,GAEZtf,EAAKyoE,SAAS7kE,EAAQU,GAAG,eAE7BtE,EAAKS,MAAM0qL,GACNmgK,GACDtrV,EAAKypB,mBAGLxqB,EAAQ2sB,OACR5rB,EAAKskT,SAGT5rT,EAAM6zB,OAAOvsB,IAGjBf,QAAS,CACL9E,KAAM,YACN8/U,kBAAkB,EAClBmK,eAAgB,GAChBD,iBAAiB,EACjBF,kBAAkB,EAClB54U,QAAS,GACT5K,MAAO,GACPgI,OAAQ,GACRyF,IAAK,IAAI/H,KAAK,KAAM,EAAG,GACvBwK,IAAK,IAAIxK,KAAK,KAAM,GAAI,IACxB6b,SAAU,CACNhO,KAAQ,OACRxW,MAAS,QACTyW,IAAO,MACPpW,QAAW,kBACXu2U,KAAQ,QACR0P,OAAU,UACVl3N,OAAU,UACVx4G,aAAgB,eAChBtW,UAAa,SAEjB0J,KAAM,SACNo3O,MAAO,CACH5qO,KAAM,EACNxW,MAAO,EACPyW,IAAK,EACLmgU,KAAM,EACN0P,OAAQ,EACRl3N,OAAQ,EACRi3N,YAAa,GAEjB94T,SAAU,QACVra,QAAS,SACTkb,MAAO,MAGXxpB,OAAQ,CACJyyC,GAGJ3mC,IAAK,SAASzN,GACV,GAAIA,IAAU9F,EAGV,OAAO5C,KAAKkH,QAAQiP,IAFpBnW,KAAKkH,QAAQiP,IAAMzN,GAM3BkQ,IAAK,SAASlQ,GACV,GAAIA,IAAU9F,EAGV,OAAO5C,KAAKkH,QAAQ0R,IAFpB5Y,KAAKkH,QAAQ0R,IAAMlQ,GAM3B6oB,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACX0wB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAChCe,EAAKwrV,kBAAkBzxV,UACvBiG,EAAKwrV,kBAAoB,KAEzBxrV,EAAKwrV,kBAAoB,IAAIR,EAAgBjzV,KAAK6L,QAAQ,GAAI,CAC1D6E,OAAQ2iV,EAAiBprV,EAAKf,QAAQoM,QAASrL,EAAKf,QAAQwJ,QAC5D27U,eAAgBpkV,EAAKf,QAAQmlV,eAAe7kV,OAASS,EAAKf,QAAQmlV,eAAiB8G,IACnFjR,iBAAkBj6U,EAAKf,QAAQg7U,iBAC/BgK,iBAAkBjkV,EAAKf,QAAQglV,iBAC/BrlG,MAAO5+O,EAAKf,QAAQ2/O,MACpB3xO,gBAAiBjN,EAAKf,QAAQgO,gBAC9B2sU,kBAAmB55U,EAAKf,QAAQ+iB,SAChC5f,OAAQ,CACJqpV,SAAU,SAAS/uV,GACXA,EAAEopB,OACF9lB,EAAK0rV,sBAGbC,QAAS,SAASjvV,GACVA,EAAEya,MAAM+nB,SAAWxmC,EAAMupB,KAAKQ,IAAM/lB,EAAEya,MAAM+nB,SAAWxmC,EAAMupB,KAAKU,MAClEmO,YAAW,WACP9wB,EAAK4D,QAAQzB,QAAQ0yC,OAIjClxB,KAAM,SAASjnB,GACXsD,EAAK62D,UACLn6D,EAAEwE,mBAGVilK,YAAa,IAAIH,EAAY,CACzB36J,QAASrL,EAAKf,QAAQoM,QACtB2W,SAAUhiB,EAAKf,QAAQ+iB,WAE3BmiU,gBAAiBnkV,EAAKf,QAAQklV,mBAItCpqV,QAAS,WACL,IAAIiG,EAAOjI,KACXiI,EAAK4D,QAAQotB,IAAIzN,GACjBvjB,EAAKwrV,kBAAkBzxV,UAEnBiG,EAAK6rV,cACL7rV,EAAK6rV,aAAa76T,IAAI,QAAShxB,EAAKgwT,eAGpChwT,EAAK4rB,OACL5rB,EAAK4rB,MAAM7xB,UAGXiG,EAAKurV,iBACLvrV,EAAKurV,gBAAgBz8T,SAGzBrG,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,IAG3BS,MAAO,SAASA,GACZ,GAAIA,IAAU9F,EACV,OAAO5C,KAAKyzV,kBAAkB/qV,MAGpB,OAAVA,IACAA,EAAQ,IAGuB,kBAA/B0K,EAAe7I,KAAK7B,KACpBA,EAAQ/H,EAAM4c,UAAU7U,EAAO1I,KAAKkH,QAAQwJ,OAAQ1Q,KAAKkH,QAAQoM,UAGjE5K,IAAUA,EAAMO,YAChBP,EAAQ,MAGZ1I,KAAKyzV,kBAAkB1B,WAAWrpV,GAE9B1I,KAAK6zB,OAAS7zB,KAAK6zB,MAAMo+C,eACzBjyE,KAAK6zB,MAAMo+C,cAAcr0D,WAIjCm2U,cAAe,WAEX,OAAO/zV,KAAK6zV,aAAe7zV,KAAK6L,QAAQqjB,OAG5CwhD,SAAU,SAASA,GACf1wE,KAAK6gO,UAAU,CACXnwJ,SAAUA,IAAa9tE,GAAqB8tE,EAC5CrpD,SAAS,IAGTrnB,KAAK6zB,OAAS7zB,KAAK6zB,MAAMo+C,eACzBjyE,KAAK6zB,MAAMo+C,cAAcvB,SAASA,IAAa9tE,GAAqB8tE,IAI5EnpD,OAAQ,SAASA,GACbvnB,KAAK6gO,UAAU,CACXnwJ,UAAU,EACVrpD,UAAWE,EAASA,IAAW3kB,GAAqB2kB,KAGpDvnB,KAAK6zB,OAAS7zB,KAAK6zB,MAAMo+C,eACzBjyE,KAAK6zB,MAAMo+C,cAAc1qD,OAAOA,EAASA,IAAW3kB,GAAqB2kB,IAIjFglS,OAAQ,WACJ,IAAIp7L,EAAWnxH,KAEXiI,EAAOjI,KACPkH,EAAUe,EAAKf,QACfupK,EAAe9oK,EAAcT,EAAQ2sB,OAAS3sB,EAAQ2sB,MAAQ,CAC9D0yB,QAASr/C,EAAQ2sB,OAGrB5rB,EAAK4rB,MAAQ,IAAIlzB,EAAMgpB,GAAG0iS,MAAM,KAAM1pT,EAAEI,OAAO,GAAI0tK,EAAc,CAC7D39I,OAAQ7qB,EACRgkT,WAAY,WACR,OAAKhkT,EAAKS,UAAYT,EAAK8rV,iBAAmB3kV,SAASgK,gBAAkBnR,EAAK4D,QAAQ,KAClFslH,EAAStlH,QAAQqjB,IAAI,KACd,OAOnBjnB,EAAKirT,YAAcjrT,EAAK4rB,MAAMhoB,SAGlCmoV,WAAY,WACR,IAAI/rV,EAAOjI,KACXiI,EAAK4D,QACAod,GAAG,QAAUuC,GAAI,WACdvjB,EAAKmE,QAAQmY,SAASmnS,MAEzBziS,GAAG,WAAauC,GAAI,WACjBvjB,EAAKmE,QAAQ+f,YAAYu/R,OAIrCuoC,aAAc,WACVj0V,KAAK6L,QACAotB,IAAI,QAAUzN,GACdyN,IAAI,WAAazN,IAG1Bq1M,UAAW,SAAS35N,GAChB,IAAIe,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwb,EAAUngB,EAAQmgB,QAClBqpD,EAAWxpE,EAAQwpE,SACnBtkE,EAAUnE,EAAKmE,QAEnBnE,EAAKgsV,eAEAvjR,GAAarpD,GASVA,IACAjb,EAAQmY,SAASonS,GACjB9/S,EAAQiX,KAAK8lR,EAAUvhR,GACnBxb,GAAWA,EAAQrE,QACnBqE,EAAQ,GAAGm8B,gBAAgB0iS,IAG/Bh6P,GACA7kE,EAAQiX,KAAK4nT,EAAUh6P,KAhB3BtkE,EAAQ+f,YAAYw/R,GAChB9/S,GAAWA,EAAQrE,SACnBqE,EAAQ,GAAGm8B,gBAAgB4gQ,GAC3B/8R,EAAQ,GAAGm8B,gBAAgB0iS,IAG/BziU,EAAK+rV,eAebl1R,QAAS,WACL,IAAI72D,EAAOjI,KACP8hO,EAAW75N,EAAK4lO,UAChBnlO,EAAQT,EAAKS,QAEbA,GAAST,EAAKkO,OAASzN,EAAQT,EAAKkO,QACpClO,EAAKS,MAAMT,EAAKkO,OAChBzN,EAAQT,EAAKS,SAEbA,GAAST,EAAK2Q,OAASlQ,EAAQT,EAAK2Q,QACpC3Q,EAAKS,MAAMT,EAAK2Q,OAChBlQ,EAAQT,EAAKS,UAGbo5N,GAAYp5N,GAASA,EAAMO,YAAc64N,EAAS74N,WAClD64N,IAAap5N,IACZo5N,GAAYp5N,KAEbT,EAAK4lO,UAAYnlO,EACjBT,EAAKmC,QAAQ0yC,GACb70C,EAAK4D,QAAQzB,QAAQ0yC,KAK7B62S,mBAAoB,WAChB,IAAI1rV,EAAOjI,KAEXiI,EAAKisV,mBACL/5T,aAAalyB,EAAKksV,sBAClBlsV,EAAKksV,qBAAuBp7T,WAAW9wB,EAAKmsV,oBAAoB5qV,KAAKvB,GAAO,MAGhFisV,iBAAkB,WACHl0V,KAENoM,QAAQmY,SAAS2uU,GAFXlzV,KAGNwzV,gBAAgBrnU,YAAY,aAGrCioU,oBAAqB,WACjB,IAAInsV,EAAOjI,KAEXiI,EAAKmE,QAAQ+f,YAAY+mU,GACzBjrV,EAAKurV,gBAAgBjvU,SAAS,YAC9Btc,EAAKksV,qBAAuB,MAIhCn8B,MAAO,WACH,IAAI/vT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwyT,EAASxyT,EAAQiX,KAAK,QACtBkkB,EAAOq3R,EAAS17T,EAAE,IAAM07T,GAAUxyT,EAAQQ,QAAQ,QAClD+mL,EAAevnL,EAAQ,GAAGnD,OAEzB0qL,GAAgBnrL,EAAKf,QAAQwB,QAC9B0qL,EAAenrL,EAAKf,QAAQwB,OAG5Bs+B,EAAK,KACL/+B,EAAKgwT,cAAgB,WACjBl/R,YAAW,WACP9wB,EAAKS,MAAM0qL,OAInBnrL,EAAK6rV,aAAe9sT,EAAK/d,GAAG,QAAShhB,EAAKgwT,iBAIlDo8B,OAAQ,SAAS1vV,GACbA,EAAEwE,oBAMVxI,EAAM+xB,cAAcyY,eAAe,YAAa,YAEhDxqC,EAAM+xB,cAAcgY,eAAe,YAAa,CAAC,CAC7Cvb,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAG/DsM,EAAGqN,OAAOs1T,GApfd,CAsfGxrV,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACnBgpB,EAAKhpB,EAAMgpB,GACX7Z,EAAOnP,EAAMmP,KACbvP,EAAaI,EAAMJ,WACnBmwB,EAAS/G,EAAG+G,OACZsE,EAAQr0B,EAAM4c,UACd2M,EAAOvpB,EAAMupB,KACb3mB,EAAU5C,EAAM4C,QAChBsM,EAAWlP,EAAMkP,SACjBuJ,EAAgBzY,EAAMwY,eACtBm7U,EAAM,UAEN9oU,EAAK,mBACLs0M,EAAQ,QAAUt0M,EAClBd,EAAKnnB,EAAQwf,qBAAuBpiB,EAAM66B,cAAc,KAAMhQ,EAAG5kB,MAAM,IAAMk5N,EAC7ElwI,EAAO,OACPC,EAAQ,QACR/yC,EAAS,SACT8rP,EAAW,WACX8hC,EAAW,WACXhf,EAAU,UACVjf,EAAW,aACXkf,EAAgB,aAGhBhgB,EAAY,YAAcngR,EAC1BmnT,EAAW,WACXjkI,EAAK,KAGL9qM,EAAQ,QACR+iS,EAAgB,gBAChBgkC,EAAgB,gBAChBhiC,EAAgB,gBAChB9oE,EAAc,cACdiyF,EAAwB,wBACxB18S,EAAWzU,EAAMyU,SACjBshU,EAAYthU,EAASshU,UACrBzC,EAAgB7+T,EAAS6+T,cACzB2H,EAAkBxmU,EAASwmU,gBAC3B74U,EAASJ,EAAEI,OACX46J,EAAOvvJ,KAEP,SAAS6vC,EAAU/2C,GACf,IAAIqtV,EAAertV,EAAQqtV,aACvB7jV,EAASxJ,EAAQwJ,OAErB0E,EAAS6oC,UAAU/2C,IAEnBqtV,EAAerxV,MAAMD,QAAQsxV,GAAgBA,EAAe,CAACA,IAE3C/sV,QACd+sV,EAAa5yV,KAAK,eAGmB,IAArCgB,EAAE0yB,QAAQ3kB,EAAQ6jV,IAClBA,EAAa/pV,OAAO,EAAG,EAAGtD,EAAQwJ,QAGtCxJ,EAAQqtV,aAAeA,EAG3B,SAASprV,EAAexE,GACpBA,EAAEwE,iBAGN,IAAIqrV,EAAW,SAASttV,GACpB,IAAiByoB,EAAb1nB,EAAOjI,KACPie,EAAO7O,SAAS6O,KAChBJ,EAAMlb,EAAE2xV,GAAKxxU,KAAK+8M,EAAa,QAClBt7M,SAAS,wBAE1Btc,EAAKf,QAAUA,EAAUA,GAAW,GACpCyoB,EAAKzoB,EAAQyoB,GAEb1nB,EAAKwsV,aAAel0V,EAAW,SAC/B0H,EAAKysV,eAAiBn0V,EAAW,SACL,QAAxB2G,EAAQkrT,cACRnqT,EAAKysV,eAAehzV,UAAS,WACrBuG,EAAKirF,OAASvyF,EAAMuI,WAAWjB,EAAKirF,MAAMi7N,aAC1ClmT,EAAKirF,MAAMi7N,WAAWlmT,EAAKysV,eAAe7zV,eAAeW,YAKhE0F,EAAQytV,UAgBT92U,EAAM3W,EAAQ0tV,SAfd/2U,EAAIsvB,SAASlvB,GACe,QAAxB/W,EAAQkrT,cAA2BnqT,EAAKwsV,aAAa5zV,eAAeW,QAWpEyG,EAAKirF,MAAQ,IAAIvpE,EAAGmnE,MAAMjzE,EAAK9a,EAAOmE,EAAQgsF,MAAOhsF,EAAS,CAAE9E,KAAM,QAASkc,MAAO3d,EAAM4C,QAAQ+a,MAAMpX,EAAQiqF,WAVlHlpF,EAAKirF,MAAQ,IAAIvpE,EAAG8jS,YAAY5vS,EAAK,CACjCywS,UAAU,EACVvwQ,MAAO,YACP4vI,SAAU,eACVw/H,aAAa,EACboB,iBAAiB,EACjBJ,WAAYlmT,EAAKysV,eAAe7zV,eAAeW,QAC/C0xF,MAAOnwF,EAAOmE,EAAQgsF,MAAOhsF,EAAS,CAAE9E,KAAM,QAASkc,MAAO3d,EAAM4C,QAAQ+a,MAAMpX,EAAQiqF,aAQlGxhE,IACAA,GAAM,YAEN9R,EAAIiF,KAAK4rL,EAAI/+K,GACb1nB,EAAK4sV,YAAcllU,GAEvB1nB,EAAK4V,IAAMA,EAEX5V,EAAKS,MAAMxB,EAAQwB,QAGvB8rV,EAASnsV,UAAY,CACjBysV,UAAW,WACP,IAGIj3U,EAHA5V,EAAOjI,KACPoV,EAAWnN,EAAKmN,SAChBlO,EAAUe,EAAKf,QAGnB,IAAKkO,EAAU,CACX,IAAI3F,EAA+B,QAAxBvI,EAAQkrT,cAA0BpyT,KAAKy0V,aAAa5zV,eAAeW,QAAUxB,KAAKkH,QAAQuI,KAAO,QAC5GoO,EAAMlb,EAAE2xV,GAAKxxU,KAAK4rL,EAAI/tM,EAAM8uB,QACf0d,SAASjmC,EAAQytV,UAAYztV,EAAQ0tV,QAAW3sV,EAAKirF,MAAMq3M,UAAYtiS,EAAKirF,MAAMrnF,SAClFod,GAAG0iR,EAAWxiS,GACd8f,GAAG62M,EAAO,kBAAmB73N,EAAK85E,OAAOv4E,KAAKvB,IAG3DA,EAAKmN,SAAWA,EAAW,IAAIuU,EAAG0pT,SAASx1T,EAAK,CAC5CmT,cAAe9pB,EAAQ8pB,cACvBvhB,KAAMA,EACNwa,SAAU/iB,EAAQ+iB,WAEtBhiB,EAAK+5O,YAAY96O,GAEjB2W,EAAI0G,SAAS5jB,EAAM0qC,iBAAiB,cAAe,OAAQ57B,IAE3D2F,EAAS0oC,SAAS71C,EAAKq+M,QAAUr+M,EAAKk6I,SAAUj7I,EAAQoO,OAExDrN,EAAKS,MAAMT,EAAKq+M,UAIxB07B,YAAa,SAAS96O,GAClBlH,KAAKoV,SAASmc,WAAW,CACrBuiT,YAAY,EACZ31R,OAAQj3C,EAAQi3C,OAChB7qC,QAASpM,EAAQoM,QACjBymK,MAAO7yK,EAAQ6yK,MACftZ,MAAOv5J,EAAQu5J,MACfhoF,OAAQvxE,EAAQuxE,OAChB/nE,OAAQxJ,EAAQwJ,OAChBkI,IAAK1R,EAAQ0R,IACbzC,IAAKjP,EAAQiP,IACb1Q,MAAOyB,EAAQzB,MACf+8B,WAAYt7B,EAAQs7B,WACpBltB,MAAOpO,EAAQoO,MACf2U,SAAU/iB,EAAQ+iB,SAClBqpT,aAAcpsU,EAAQosU,gBAI9B/hT,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACPqzE,EAAMprE,EAAKf,QACXosU,EAAepsU,EAAQosU,aAEvBA,IACApsU,EAAQosU,aAAel+T,EAAS8iB,SAASo7S,IAG7CrrU,EAAKf,QAAUnE,EAAOswE,EAAKnsE,EAAS,CAChCi3C,OAAQk1B,EAAIl1B,OACZmH,MAAO+tB,EAAI/tB,MACXisC,KAAMle,EAAIke,OAGVtpF,EAAKmN,UACLnN,EAAK+5O,YAAY/5O,EAAKf,UAI9BlF,QAAS,WACL,IAAIiG,EAAOjI,KACPA,KAAKkzF,OACLlzF,KAAKkzF,MAAMlxF,UAGXiG,EAAKwsV,eACLxsV,EAAKwsV,aAAazyV,UAClBiG,EAAKwsV,aAAe,MAGpBxsV,EAAKysV,iBACLzsV,EAAKysV,eAAe1yV,UACpBiG,EAAKysV,eAAiB,OAI9BnjQ,KAAM,WACF,IACIwjQ,EADA9sV,EAAOjI,KAGXiI,EAAK6sV,YAKLC,EAAe9sV,EAAKirF,MAAM9B,SAC1BnpF,EAAKirF,MAAM9B,UAAW,EAEtBnpF,EAAKirF,MAAM3B,OAEXx4D,YAAW,WACP9wB,EAAKirF,MAAM9B,SAAW2jQ,IACvB,IAGPzvS,MAAO,WACCtlD,KAAKkzF,OACLlzF,KAAKkzF,MAAM5tC,SAInBnvC,IAAK,SAASzN,GACV1I,KAAKq1U,QAtMP,MAsMoB3sU,IAGtBkQ,IAAK,SAASlQ,GACV1I,KAAKq1U,QAzMP,MAyMoB3sU,IAGtByf,OAAQ,WACOnoB,UAEDkzF,MAAM5mF,UAAYujF,EAAQD,MAGxCr1D,KAAM,SAAS51B,GACX,IAAIsD,EAAOjI,KACPuR,EAAM5M,EAAEwiC,QACR/xB,EAAWnN,EAAKmN,SAChB4/U,EAAkBrwV,EAAE6pF,SAAWj9E,GAAO2Y,EAAKU,MAAQrZ,GAAO2Y,EAAKK,MAC/D4wR,GAAU,EAEd,GAAIx2S,EAAEw8M,OACE5vM,GAAO2Y,EAAKU,MACZ3iB,EAAKspF,OACL5sF,EAAEwE,iBACFgyS,GAAU,GACH5pS,GAAO2Y,EAAKQ,KACnBziB,EAAKq9C,QACL3gD,EAAEwE,iBACFgyS,GAAU,QAGX,GAAIlzS,EAAKirF,OAASjrF,EAAKirF,MAAM5mF,UAAW,CAE3C,GAAIiF,GAAO2Y,EAAKM,KAAQwqU,GAAmB5/U,EAAS++T,MAAM/nT,SAASqgR,GAG/D,OAFAxkS,EAAKq9C,QACL3gD,EAAEwE,kBACK,EAGPoI,GAAO2Y,EAAKa,WACZ9iB,EAAKk6I,SAAW/sI,EAASwsE,MAAMj9E,IAGnCw2S,GAAU,EAGd,OAAOA,GAGX1nS,QAAS,SAAS4C,GACdrW,KAAKmiJ,SAAW9rI,EACZrW,KAAKoV,UACLpV,KAAKoV,SAASwgF,OAAOv/E,IAI7B3N,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KACPoV,EAAWnN,EAAKmN,SAChBlO,EAAUe,EAAKf,QACf+tV,EAAe/tV,EAAQosU,aAEvB2hB,GAAgBA,EAAavsV,KAC7BA,EAAQ,MAGZT,EAAKq+M,OAAS59M,EACdT,EAAKk6I,SAAW,IAAIwb,GAAMs2K,EAAcvrU,EAAOxB,EAAQiP,IAAKjP,EAAQ0R,MAEhExD,GACAA,EAAS1M,MAAMA,IAIvBq5E,OAAQ,SAASp9E,IAEwC,IAAjDA,EAAEg5E,cAAcjxD,UAAU/W,QAAQ82R,KAClCzsS,KAAKoV,SAAShL,QAAQ,UACtBpK,KAAKslD,UAIb+vR,QAAS,SAASvgT,EAAQpsB,GACtB,IACI0M,EADOpV,KACSoV,SADTpV,KAGNkH,QAAQ4tB,GAAUpsB,EAEnB0M,GACAA,EAAS0f,GAAQpsB,KAK7B8rV,EAASv2S,UAAYA,EAErBt9C,EAAM6zV,SAAWA,EAEjB,IAAIU,EAAaxkU,EAAO3tB,OAAO,CAC3BoF,KAAM,SAAS0D,EAAS3E,GACpB,IACIksL,EADAnrL,EAAOjI,KAIX0wB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACnC2E,EAAU5D,EAAK4D,SACf3E,EAAUe,EAAKf,SAEPosU,aAAe3yU,EAAMyU,SAAS8iB,SAAShxB,EAAQosU,cAEvDpsU,EAAQiP,IAAM6e,EAAMnpB,EAAQiX,KAAK,SAAWkS,EAAM9tB,EAAQiP,KAC1DjP,EAAQ0R,IAAMoc,EAAMnpB,EAAQiX,KAAK,SAAWkS,EAAM9tB,EAAQ0R,KAE1D3Q,EAAKf,QAAQwpE,SAAWxpE,EAAQwpE,WAAa9tE,EAAcsE,EAAQwpE,SAAWn+D,QAAQtK,EAAK4D,QAAQiX,KAAK,aACxG7a,EAAKf,QAAQqgB,OAASrgB,EAAQqgB,SAAW3kB,EAAcsE,EAAQqgB,QAAWhV,QAAQ1G,EAAQU,GAAG,eAAiB5J,EAAEkJ,GAASwsB,QAAQ,YAAY9rB,GAAG,cAEhJ0xC,EAAU/2C,GAEVe,EAAKktV,gBAAkBpyV,EAAO,GAAImE,GAElCe,EAAKkwE,WAELlwE,EAAKmtV,kBACLntV,EAAKotV,qBAAuBptV,EAAKmtV,gBAAgB5rV,KAAKvB,GAEtDA,EAAKwsV,aAAel0V,EAAW,SACE,QAA7B0H,EAAKf,QAAQkrT,cACbnqT,EAAKwsV,aAAa/yV,UAAS,WACvBuG,EAAKotV,uBACLptV,EAAKqtV,SAAS5sV,MAAMT,EAAKq+M,WAIjCr+M,EAAK05G,QAEL,IACI91G,EAAQ,GAAGgZ,aAAa,OAAQ,QAClC,MAAOlgB,GACLkH,EAAQ,GAAGnG,KAAO,OAGtBmG,EACK0Y,SAAS,iBACTzB,KAAK,CACFgN,KAAM,WACN,iBAAiB,EACjB,gBAAiB,OACjB,gBAAiB7nB,EAAKqtV,SAAST,YAC/B18B,aAAgB,QAExBlwT,EAAKikE,SACLjkE,EAAK01I,aAEO11I,EAAKf,QAAQqgB,OAErBtf,EAAKsf,QAAO,GAEZtf,EAAKyoE,SAAS7kE,EAAQU,GAAG,eAG7B6mL,EAAep+J,EAAM9tB,EAAQwB,OAAST,EAAK4D,QAAQqjB,MAAOhoB,EAAQqtV,aAAcrtV,EAAQoM,SAExFrL,EAAKstV,iBAAiBruV,GAEtBe,EAAKmvT,KAAOnvT,EAAKm5N,QAAQhuC,GAAgBnrL,EAAK4D,QAAQqjB,OACtDjnB,EAAKutV,SAAW3pV,EAAQqjB,MACxBjnB,EAAKypB,mBAEDxqB,EAAQ2sB,OACR5rB,EAAKskT,SAGT5rT,EAAM6zB,OAAOvsB,IAEjBoC,OAAQ,CACRulF,EACAC,EACA/yC,GACA51C,QAAS,CACL9E,KAAM,aACNsG,MAAO,KACP+vE,OAAQ,GACR/nE,OAAQ,GACR4C,QAAS,GACTihV,aAAc,GACdp+U,IAAK,IAAI/H,KAAK,KAAM,EAAG,GACvBwK,IAAK,IAAIxK,KAAK,KAAM,GAAI,IACxBkH,MAAO1R,EACP68J,MAAO78J,EACP0tF,UAAW,GACX7rF,MAAO,GACPs0K,MAAO,GACPu5J,aAAc,KACdmiB,aAAc,SAAUxmU,GAIpB,MAAQ,mBAHQA,EAAIkqT,UAGqB,OAF9BlqT,EAAI2R,MAInB80T,WAAW,EACXlzT,YAAY,EACZvY,SAAU,CACNyqT,iBAAkB,IAEtB1jT,cAAe,UACfohS,aAAc,OACd3iT,KAAM,SACNujB,SAAU,QACVra,QAAS,SACTkb,MAAO,MAGXuhU,gBAAiB,WACb,IAGAv3U,EAHI5V,EAAOjI,KACXkH,EAAUe,EAAKf,QACf2E,EAAU5D,EAAK4D,QAGX5D,EAAKqtV,WACLrtV,EAAKqtV,SAAStzV,UACdiG,EAAKqtV,SAAW,MAGpBrtV,EAAKqtV,SAAW,IAAId,EAASzxV,EAAO,GAAImE,EAAS,CAC7CyoB,GAAI9jB,EAAQiX,KAAK4rL,GACjBv9G,OAAQlpF,EAAKmE,QACb+xC,OAAQ,WAEJl2C,EAAK62D,QAAQ9+D,KAAK0I,SAClBT,EAAKq9C,SAETA,MAAO,SAAS3gD,GACRsD,EAAKmC,QAAQylF,GACblrF,EAAEwE,kBAEF0C,EAAQiX,KAAK6lR,GAAe,GAC5B9qR,EAAIiF,KAAK+8M,GAAa,GAEtB9mM,YAAW,WACPltB,EAAQylB,WAAW,8BAI/BigE,KAAM,SAAS5sF,GACX,IACI0R,EADAnP,EAAUe,EAAKf,QAGfe,EAAKmC,QAAQwlF,GACbjrF,EAAEwE,kBAEElB,EAAK4D,QAAQqjB,QAAUjnB,EAAKutV,WAC5Bn/U,EAAO2e,EAAMnpB,EAAQqjB,MAAOhoB,EAAQqtV,aAAcrtV,EAAQoM,SAE1DrL,EAAKqtV,SAASj/U,EAAO,UAAY,SAASA,IAG9CxK,EAAQiX,KAAK6lR,GAAe,GAC5B9qR,EAAIiF,KAAK+8M,GAAa,GAEtB53N,EAAK0tV,YAAYt/U,QAM7BwH,EAAM5V,EAAKqtV,SAASz3U,KAGxB0T,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACP0I,EAAQT,EAAKq+M,OAEjB51L,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,IAEhCA,EAAUe,EAAKf,SAEPiP,IAAM6e,EAAM9tB,EAAQiP,KAC5BjP,EAAQ0R,IAAMoc,EAAM9tB,EAAQ0R,KAE5BqlC,EAAU/2C,GAEVe,EAAK2tV,UAAU38T,IAAIzN,GACnBvjB,EAAK2tV,UAAU7+T,SAEf9uB,EAAKqtV,SAAS/jU,WAAWrqB,GACzBe,EAAK05G,QACL15G,EAAK44N,UAAU,CACXnwJ,SAAUxpE,EAAQwpE,WAAa9tE,EAAcqF,EAAKf,QAAQwpE,SAAWxpE,EAAQwpE,SAC7ErpD,UAAWngB,EAAQqgB,SAAW3kB,EAAcqF,EAAKf,QAAQqgB,OAASrgB,EAAQqgB,UAG9Etf,EAAKstV,iBAAiBruV,GAEjBe,EAAK4tV,YACN5tV,EAAK4D,QAAQqjB,IAAIvuB,EAAMuQ,SAASxI,EAAOxB,EAAQwJ,OAAQxJ,EAAQoM,UAG/D5K,GACAT,EAAK0tV,YAAYjtV,GAGjBxB,EAAQ2sB,OAAS5rB,EAAKirT,YACtBjrT,EAAK4rB,MAAMtC,WAAWrqB,EAAQ2sB,QACL,IAAlB3sB,EAAQ2sB,OACf5rB,EAAK4rB,MAAM24R,kBACXvkT,EAAKirT,YAAYn8R,gBACV9uB,EAAKirT,aACLhsT,EAAQ2sB,OACf5rB,EAAKskT,UAIb1rF,UAAW,SAAS35N,GAChB,IAAIe,EAAOjI,KACPs3F,EAAOrvF,EAAK2tV,UAAU38T,IAAIzN,GAC1B3f,EAAU5D,EAAK4D,QAAQotB,IAAIzN,GAC3Bpf,EAAUnE,EAAKmE,QAAQ6sB,IAAIzN,GAC3BklD,EAAWxpE,EAAQwpE,SACnBrpD,EAAUngB,EAAQmgB,QAEjBqpD,GAAarpD,GAmBdjb,EACKmY,SAAS8C,EAAUskS,EAAgB,IACnCx/R,YAAY9E,EAAU,GAAKskS,GAEhC9/S,EAAQiX,KAAK8lR,EAAUvhR,GACfvE,KAAK4nT,EAAUh6P,GACf5tD,KAAK6jR,EAAet/Q,GACpBvE,KAAK6nT,EAAej6P,KAzB5BtkE,EACK+f,YAAYw/R,GACZ1iS,GA7gBH,wDA6gBmBhhB,EAAK6rS,cACtBjoS,GAAWA,EAAQrE,SACnBqE,EAAQ,GAAGm8B,gBAAgB4gQ,GAC3B/8R,EAAQ,GAAGm8B,gBAAgB0iS,IAE/B7+T,EAAQiX,KAAK6jR,GAAe,GACpB7jR,KAAK6nT,GAAe,GACpB1hT,GAAG,UAAYuC,EAAIvjB,EAAKi7G,SAAS15G,KAAKvB,IACtCghB,GAAG,WAAauC,EAAIvjB,EAAKg9G,MAAMz7G,KAAKvB,IACpCghB,GAAG,QAAUuC,GAAI,WACdvjB,EAAKmE,QAAQmY,SAASmnS,MAGlCp0N,EAAKruE,GAAGyB,EAAIziB,EAAK85E,OAAOv4E,KAAKvB,IACxBghB,GAAG0iR,EAAWxiS,KAa1BunE,SAAU,SAASA,GACf1wE,KAAK6gO,UAAU,CACXnwJ,SAAUA,IAAa9tE,GAAqB8tE,EAC5CrpD,SAAS,IAETrnB,KAAK61V,YACL71V,KAAK61V,WAAWh1H,UAAU,CACtBnwJ,SAAUA,IAAa9tE,GAAqB8tE,EAC5CrpD,SAAS,IAIbrnB,KAAK6zB,OAAS7zB,KAAK6zB,MAAMo+C,eACzBjyE,KAAK6zB,MAAMo+C,cAAcvB,SAASA,IAAa9tE,GAAqB8tE,IAI5EnpD,OAAQ,SAASA,GACbvnB,KAAK6gO,UAAU,CACXnwJ,UAAU,EACVrpD,UAAWE,EAASA,IAAW3kB,GAAqB2kB,KAEpDvnB,KAAK61V,YACL71V,KAAK61V,WAAWh1H,UAAU,CACtBnwJ,UAAU,EACVrpD,UAAWE,EAASA,IAAW3kB,GAAqB2kB,KAIxDvnB,KAAK6zB,OAAS7zB,KAAK6zB,MAAMo+C,eACzBjyE,KAAK6zB,MAAMo+C,cAAc1qD,OAAOA,EAASA,IAAW3kB,GAAqB2kB,IAIjFglS,OAAQ,WACJ,IAAItkT,EAAOjI,KACPkH,EAAUe,EAAKf,QACfupK,EAAe9tK,EAAEgF,cAAcT,EAAQ2sB,OAAS3sB,EAAQ2sB,MAAQ,CAChE0yB,QAASr/C,EAAQ2sB,OAGjB5rB,EAAK4tV,aACLplL,EAAaw7I,WAAa,WAEtB,OAAKhkT,EAAKS,UAAYT,EAAK4tV,WAAW9B,iBAAmB3kV,SAASgK,gBAAkBnR,EAAK4D,QAAQ,KAC7F5D,EAAK4D,QAAQqjB,IAAI,KACV,KAOnBjnB,EAAK4rB,MAAQ,IAAIlzB,EAAMgpB,GAAG0iS,MAAM,KAAM1pT,EAAEI,OAAO,GAAI0tK,EAAc,CAC7D39I,OAAQ7qB,KAGZA,EAAKirT,YAAcjrT,EAAK4rB,MAAMhoB,SAGlC7J,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAK4rB,OACL5rB,EAAK4rB,MAAM7xB,UAGf0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEnBA,EAAKqtV,SAASlgV,UAAYnN,EAAK6tV,2BAC/B7tV,EAAKqtV,SAASlgV,SAASnL,OAAO0oU,EAAU1qU,EAAK6tV,0BAC7C7tV,EAAK6tV,yBAA2B,MAGpC7tV,EAAKqtV,SAAStzV,UAEdiG,EAAK4D,QAAQotB,IAAIzN,GACjBvjB,EAAK2tV,UAAU38T,IAAIzN,GAEfvjB,EAAK+vT,OACL/vT,EAAK+vT,MAAM/+R,IAAI,QAAShxB,EAAKgwT,eAG7BhwT,EAAKwsV,cACLxsV,EAAKwsV,aAAazyV,UAGtBiG,EAAKotV,qBAAuB,MAGhC9jQ,KAAM,WACFvxF,KAAKs1V,SAAS/jQ,OACdvxF,KAAK+1V,qBAGTzwS,MAAO,WACHtlD,KAAKs1V,SAAShwS,SAGlBnvC,IAAK,SAASzN,GACV,OAAO1I,KAAKq1U,QAxoBd,MAwoB2B3sU,IAG7BkQ,IAAK,SAASlQ,GACV,OAAO1I,KAAKq1U,QA3oBd,MA2oB2B3sU,IAG7BA,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KAEX,GAAI0I,IAAU9F,EACV,OAAOqF,EAAKq+M,OAGhBr+M,EAAKmvT,KAAOnvT,EAAKm5N,QAAQ14N,GAEP,OAAdT,EAAKmvT,OACDnvT,EAAK4tV,WACL5tV,EAAK4tV,WAAWntV,MAAMT,EAAKmvT,MAE3BnvT,EAAK4D,QAAQqjB,IAAI,KAIzBjnB,EAAKutV,SAAWvtV,EAAK4D,QAAQqjB,MAEzBjnB,EAAK4rB,OAAS5rB,EAAK4rB,MAAMo+C,eACzBhqE,EAAK4rB,MAAMo+C,cAAcr0D,WAIjCk2R,aAAc,SAASnvS,GACnBhC,EAAEgC,EAAEg5E,eAAe31D,YA7qBnB,UA6qBiD,eAAXrjB,EAAEe,OAG5Cu/G,MAAO,WACH,IAAIh9G,EAAOjI,KACP0I,EAAQT,EAAK4D,QAAQqjB,MAEzBjnB,EAAKq9C,QACD58C,IAAUT,EAAKutV,WACfvtV,EAAK62D,QAAQp2D,GACRA,GACDT,EAAKqtV,SAAS7hV,QAAQ9S,EAAMyU,SAASk/T,aAI7CrsU,EAAKmE,QAAQ+f,YAAYu/R,IAG7B3pO,OAAQ,SAASp9E,GACb,IAAIsD,EAAOjI,KAEXiI,EAAKqtV,SAASntU,SACdlgB,EAAK8tV,oBACL9tV,EAAK61T,cAAcn5T,EAAEe,OAGzBo4T,cAAe,SAASz9G,GACpB,IAAIx0M,EAAU7L,KAAK6L,QAEbtI,EAAQkb,SAAUlb,EAAQwf,uBAA0Bs9L,GAAa,IAAIlwM,MAAM,YAAetE,EAAQ,KAAOuN,KAC3GvN,EAAQzB,QAAQ,UAIxB00D,QAAS,SAASp2D,GACd,IAEAstV,EAFI/tV,EAAOjI,KACX8hO,EAAW75N,EAAK4D,QAAQqjB,MAGxBxmB,EAAQT,EAAKm5N,QAAQ14N,GAGrB,IAAIutV,GAFJD,GAAer1V,EAAMyU,SAASsgU,YAAYztU,EAAKmvT,KAAM1uT,MAElBT,EAAK0wT,QACpCu9B,EAAgBp0H,IAAa75N,EAAK4D,QAAQqjB,OAE1C+mU,GAAgBC,IAChBjuV,EAAK4D,QAAQzB,QAAQ0yC,GAGrBk5S,IACA/tV,EAAKmvT,KAAO1uT,EACZT,EAAKutV,SAAWvtV,EAAK4D,QAAQqjB,MAE7BjnB,EAAKmC,QAAQ0yC,IAGjB70C,EAAK0wT,SAAU,GAGnBz1M,SAAU,SAASv+G,GACf,IAAIsD,EAAOjI,KACPs1V,EAAWrtV,EAAKqtV,SAChB5sV,EAAQT,EAAK4D,QAAQqjB,MACrBisR,GAAU,EAETm6C,EAASpiQ,MAAM5mF,WAAa3H,EAAEwiC,SAAWjd,EAAKK,OAAS7hB,IAAUT,EAAKutV,UAGvEr6C,EAAUm6C,EAAS/6T,KAAK51B,GACxBsD,EAAK0tV,YAAYL,EAASnzM,UAErBg5J,EAEMlzS,EAAK4tV,YAAclxV,EAAEu1S,0BAC5Bv1S,EAAEu1S,2BAFFjyS,EAAK0wT,SAAU,GANnB1wT,EAAK62D,QAAQp2D,IAarBi5G,MAAO,WACH,IAGIrqB,EAHArvF,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,SAGnBowF,EAAOzrF,EAAQw5D,KAAK,0BAEV,KACNiyB,EAAO30F,EAAEmN,EAAK02R,aAAa,oGAAqG,CAC5HlvM,KAAM,WACN7nF,KAAMvI,EAAQuI,KACdujB,SAAU9rB,EAAQ8rB,SAClBitH,MAAO,OACPtnI,QAAS,UACT+9R,YAAY7qS,IAGpB5D,EAAK2tV,UAAYt+P,EAAKx0E,KAAK,CACvBgN,KAAQ,YAIhBqmU,sBAAuB,WACnB,IAAIluV,EAAOjI,KACX+4B,YAAW,WACP9wB,EAAK4D,QAAQiX,KAAKgvS,EAAuB7pT,EAAKqtV,SAASlgV,SAAS+/T,OAAOryT,KAAKgvS,QAIpFikC,kBAAmB,WACf,IAAI9tV,EAAOjI,KAENiI,EAAK6tV,2BACN7tV,EAAK6tV,yBAA2B7tV,EAAKkuV,sBAAsB3sV,KAAKvB,IAG9DA,EAAKqtV,SAASlgV,UAChBnN,EAAKqtV,SAASlgV,SAASnL,OAAO0oU,EAAU1qU,EAAK6tV,0BAA0BtsV,KAAKmpU,EAAU1qU,EAAK6tV,2BAInGzgB,QAAS,SAASvgT,EAAQpsB,GACtB,IACIxB,EADOlH,KACQkH,QAEnB,GAAIwB,IAAU9F,EACV,OAAOsE,EAAQ4tB,IAGnBpsB,EAAQssB,EAAMtsB,EAAOxB,EAAQqtV,aAAcrtV,EAAQoM,YAMnDpM,EAAQ4tB,GAAU,IAAI6oI,GAAMj1J,GAbjB1I,KAcNs1V,SAASxgU,GAAQpsB,KAG1B04N,QAAS,SAAS14N,GACd,IAOIglM,EAPAzlM,EAAOjI,KACPkH,EAAUe,EAAKf,QACfiP,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IACdnF,EAAUxL,EAAKq+M,OACfjwM,EAAO2e,EAAMtsB,EAAOxB,EAAQqtV,aAAcrtV,EAAQoM,SAClD8iV,EAAuB,OAAT//U,GAA6B,OAAZ5C,GAAsB4C,aAAgBjI,MAAQqF,aAAmBrF,KAUpG,OAPIlH,EAAQosU,aAAaj9T,KACrBA,EAAO,KACFpO,EAAKmvT,MAASnvT,EAAK4D,QAAQqjB,QAC5BxmB,EAAQ,QAIX2N,IAAU5C,GAAW2iV,IACtB1oJ,EAAiB/sM,EAAMuQ,SAASmF,EAAMnP,EAAQwJ,OAAQxJ,EAAQoM,YAEvC5K,GAAWT,EAAK4tV,aAAex/U,GAClDpO,EAAK4D,QAAQqjB,IAAa,OAAT7Y,EAAgB3N,EAAQglM,GAGtCr3L,IAGE,OAATA,GAAiBulU,EAAgBvlU,EAAMF,GACvCE,EAAO49T,EAAc59T,EAAMF,EAAKyC,GACxB89T,EAAUrgU,EAAMF,EAAKyC,KAC7BvC,EAAO,MAGXpO,EAAKq+M,OAASjwM,EACdpO,EAAKqtV,SAAS5sV,MAAM2N,GAChBpO,EAAK4tV,YAAcx/U,EACnBpO,EAAK4tV,WAAWntV,MAAM2N,GAAQ3N,GAE9BT,EAAK4D,QAAQqjB,IAAIvuB,EAAMuQ,SAASmF,GAAQ3N,EAAOxB,EAAQwJ,OAAQxJ,EAAQoM,UAE3ErL,EAAK0tV,YAAYt/U,GAEVA,IAGX8hE,SAAU,WACN,IAEI/rE,EADAP,EADO7L,KACQ6L,SAGnBO,EAAUP,EAAQwsB,QAAQ,kBAEb,KACTjsB,EAAUP,EAAQmgB,KAz3BvB,YAy3BkC7f,UAGjCC,EAAQ,GAAGK,MAAMsR,QAAUlS,EAAQ,GAAGY,MAAMsR,QAC5ClS,EAAQe,IAAI,CACRD,OAAQd,EAAQ,GAAGY,MAAME,SAZlB3M,KAeNoM,QAAUA,EAAQmY,SAAS,wBAC3BA,SAAS1Y,EAAQ,GAAG6gB,WAAWP,YAAY,2BAGpD+/C,OAAQ,WACJ,IAAIjkE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwyT,EAASxyT,EAAQiX,KAAK,QACtB5b,EAAUe,EAAKf,QACf+tV,EAAe/tV,EAAQosU,aACvBihB,EAAertV,EAAQqtV,aAAa/sV,OAASN,EAAQqtV,aAAe,KACpE8B,EAAepuV,EAAKktV,gBAAgBzsV,MACpCs+B,EAAOq3R,EAAS17T,EAAE,IAAM07T,GAAUxyT,EAAQQ,QAAQ,QAClD+mL,EAAevnL,EAAQ,GAAGgjD,aAE1BwnS,GAAiBpB,GAAgBA,EAAaoB,KAC9CA,EAAe,MAGbjjK,GAAiBzyL,EAAM4c,UAAU61K,EAAcmhK,EAAcrtV,EAAQoM,WAAa+iV,GACpFxqV,EAAQiX,KAAK,QAASniB,EAAMuQ,SAASmlV,EAAcnvV,EAAQwJ,OAAQxJ,EAAQoM,UAG3E0zB,EAAK,KACL/+B,EAAKgwT,cAAgB,WACjBhwT,EAAKS,MAAM2tV,GAAgBxqV,EAAQ,GAAGgjD,cACtC5mD,EAAK2Q,IAAI3Q,EAAKktV,gBAAgBv8U,KAC9B3Q,EAAKkO,IAAIlO,EAAKktV,gBAAgBh/U,MAGlClO,EAAK+vT,MAAQhxR,EAAK/d,GAAG,QAAShhB,EAAKgwT,iBAI3Ct6K,UAAW,WACP39I,KAAKs2V,cAAgBzmV,EAAS7P,KAAKkH,QAAQuuV,cAAcjsV,KAAKxJ,OAGlEu1V,iBAAkB,SAASruV,GACnBlH,KAAK61V,aACL71V,KAAK61V,WAAW7zV,UAChBhC,KAAK61V,WAAa,MAGlB3uV,EAAQwuV,YACR11V,KAAK61V,WAAa,IAAIlsU,EAAG2iU,UAAUtsV,KAAK6L,QAAS,CAC7CyH,QAASpM,EAAQoM,QACjB5C,OAAQxJ,EAAQwJ,OAChBjB,KAAMvI,EAAQuI,KACdujB,SAAU9rB,EAAQ8rB,SAClBra,QAASzR,EAAQyR,QACjBxC,IAAKjP,EAAQiP,IACbyC,IAAK1R,EAAQ0R,IACbqR,SAAU/iB,EAAQ+iB,SAASyrU,cAKvCC,YAAa,SAASt/U,GAClB,IAAIpO,EAAOjI,KACPoV,EAAWnN,EAAKqtV,SAASlgV,SAEzBnN,EAAK4D,SAAW5D,EAAK4D,QAAQrE,QAC7BS,EAAK4D,QAAQ,GAAGm8B,gBAAgB8pR,GAGhC18S,GACAnN,EAAK4D,QAAQiX,KAAKgvS,EAAuB18S,EAAS6jU,YAAYhxU,EAAKquV,cAAejgV,OAK9F1V,EAAM+xB,cAAcyY,eAAe,aAAc,YAEjDxqC,EAAM+xB,cAAcgY,eAAe,aAAc,CAAC,CAC9Cvb,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAG/DsM,EAAGqN,OAAOk+T,GA59Bd,CA89BGp0V,OAAOH,MAAM+G,QACF/G,OAUd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf6kC,EAAQ7kC,EAAM6kC,MACdtb,EAAOvpB,EAAMupB,KACbpa,EAAOnP,EAAMmP,KACb6Z,EAAKhpB,EAAMgpB,GACX+G,EAAS/G,EAAG+G,OACZtX,EAAgBzY,EAAMwY,eACtBg5T,EAAgBxxU,EAAMuY,eACtB8b,EAAQr0B,EAAMoI,WACdwtV,EAAuB51V,EAAM4C,QAAQmhB,YACrClR,EAAa7S,EAAM6S,WACnBspC,EAAS,SACT8rP,EAAW,WACX8hC,EAAW,WACXppB,EAAQ,gBACRk1C,EAAO,OACPhrU,EAAK,uBAGLo/S,EAAc,aAAep/S,EAAf,kCACdkgS,EAAU,UACVmF,EAAQ,UACRhqB,EAAQ,QACR7zR,EAAQ,IAIRy5R,EAAW,aACXkf,EAAgB,aAChBunC,EAAe,YACfvsD,EAAgB,gBAChB8vD,EAAiB,cACjBpwV,EAAO,KACPsB,EAAgBhF,EAAEgF,cAClB5E,EAASJ,EAAEI,OAEX2zV,EAAiBhmU,EAAO3tB,OAAO,CAC9BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAEAiP,EAAKyC,EAAK85B,EAAMhqC,EACZiuV,EAHA1uV,EAAOjI,KACX42V,EAAS1vV,GAAWA,EAAQwrC,OAAS9vC,EAIrC8tB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCA,EAAUe,EAAKf,QACf2E,EAAU5D,EAAK4D,QACAod,GAAG,WAAauC,EAAIvjB,EAAK4uV,UAAUrtV,KAAKvB,IACxC6a,KAAK,OAAQ,cAE5B5b,EAAQwd,YAAcxd,EAAQwd,aAAe7Y,EAAQiX,KAAK,eAE1D3M,EAAMlO,EAAKkO,IAAItK,EAAQiX,KAAK,QAC5BlK,EAAM3Q,EAAK2Q,IAAI/M,EAAQiX,KAAK,QAC5B4vB,EAAOzqC,EAAKuhD,OAAO39C,EAAQiX,KAAK,SAE5B5b,EAAQiP,MAAQ9P,GAAQ8P,IAAQ9P,IAChCa,EAAQiP,IAAMA,GAGdjP,EAAQ0R,MAAQvS,GAAQuS,IAAQvS,IAChCa,EAAQ0R,IAAMA,GAGbg+U,GAAUlkT,IAASrsC,IACpBa,EAAQwrC,KAAOA,GAGnBzqC,EAAKktV,gBAAkBpyV,EAAO,GAAImE,GAElCyvV,EAAY9qV,EAAQiX,KAAK,QAEzB7a,EAAKikE,SACLjkE,EAAKkwE,WACLlwE,EAAK6uV,UACL7uV,EAAK8uV,cACL9uV,EAAK+uV,SAEAr2V,EAAM4C,QAAQkf,SAGfxa,EAAK6iS,MAAM7hR,GAhET,WAgEuBuC,EAAK,IAAMq7Q,EAAQr7Q,GAAI,WACxC7qB,EAAM4C,QAAQye,QAAQiB,KACtBhb,EAAK6iS,MAAMnhS,IAAIk9R,EAAQr7Q,GAAI,WACxBvjB,EAAKgvV,cAGThvV,EAAKgvV,WAERhvV,EAAKivV,iBAVTjvV,EAAK6iS,MAAM7hR,GAAG49Q,EAAQr7Q,EAAIvjB,EAAK85E,OAAOv4E,KAAKvB,IAc/C4D,EAAQiX,KAAK,gBAAiB5b,EAAQiP,MAAQ9P,EAAOa,EAAQiP,IAAMjP,EAAQijQ,OAASjjQ,EAAQiP,KACpF2M,KAAK,gBAAiB5b,EAAQ0R,MAAQvS,EAAOa,EAAQ0R,IAAM1R,EAAQijQ,OAASjjQ,EAAQ0R,KAE5F1R,EAAQwJ,OAASyhU,EAAcjrU,EAAQwJ,SAEvChI,EAAQxB,EAAQwB,QAEHrC,IAENqC,EADc,UAAbiuV,EACO5tV,WAAW8C,EAAQqjB,OAElBrjB,EAAQqjB,OAIxBjnB,EAAKS,MAAMA,IAECxB,EAAQqgB,QAAU1b,EAAQU,GAAG,eAAiB5J,EAAEsF,EAAK4D,SAASwsB,QAAQ,YAAY9rB,GAAG,aAG7FtE,EAAKsf,QAAO,GAEZtf,EAAKyoE,SAAS7kE,EAAQU,GAAG,eAG7BtE,EAAK4oB,QAAQ,WAAW,WACpB,MAAO,CACHsD,SAAUlsB,EAAK6iS,MAAMv7Q,UAI7BtnB,EAAKskT,SACLtkT,EAAKirB,WAAWjrB,EAAK6iS,OACrB7iS,EAAKypB,mBAEL/wB,EAAM6zB,OAAOvsB,IAGlBf,QAAS,CACL9E,KAAM,iBACNuR,SAAUtN,EACVkhB,QAAQ,EACR4vU,kBAAkB,EAClBhhV,IAAK9P,EACLuS,IAAKvS,EACLqC,MAAOrC,EACPqsC,KAAM,EACN38B,OAAO,EACPzC,QAAS,GACT5C,OAAQ,IACR0mV,UAAU,EACV1yU,YAAa,GACb2yU,eAAe,EACfltF,OAAQ,EACRmtF,YAAa,iBACbC,cAAe,iBACf1jU,MAAO,KACPpkB,KAAM,SACNujB,SAAU,QACVra,QAAS,UAEbtO,OAAQ,CACJyyC,EACA05S,GAGJ31H,UAAW,SAAS35N,GAChB,IAAIe,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwb,EAAUngB,EAAQmgB,QAClBqpD,EAAWxpE,EAAQwpE,SACnB9vC,EAAO34B,EAAK6iS,MAAM79R,IAAIpB,GACtBO,EAAUnE,EAAKmE,QAAQ6sB,IAAI2xS,GAE/B3iU,EAAKuvV,aAAY,GAEjBvvV,EAAKwvV,qBAAqBxtV,OAAO,SACjChC,EAAKyvV,uBAAuBztV,OAAO,SACnC4B,EACKotB,IAAI,UAAYzN,GAChByN,IAAI,QAAUzN,GACdyN,IAAI,QAAUzN,GACdyN,IAAI,QAAUzN,GAEfvjB,EAAKirT,aACLjrT,EAAKirT,YAAYj6R,IAAIzN,GAGpBklD,GAAarpD,GAgCdjb,EACKmY,SAAS8C,EAAUskS,EAAgB,IACnCx/R,YAAY9E,EAAU,GAAKskS,GAEhC/qR,EAAK9d,KAAK8lR,EAAUvhR,GACfvE,KAAK4nT,EAAUh6P,GACf5tD,KAAK6jR,EAAet/Q,KArCzBjb,EACK+f,YAAYw/R,GACZ1iS,GAAG2hT,EAAa3iU,EAAK6rS,cAE1BlzQ,EAAKzR,KAAKy5Q,GAAU,GACfz5Q,KAAKu7S,GAAU,GACf5nT,KAAK6jR,GAAe,GAEzB1+R,EAAKwvV,qBAAqBjuV,KAAK,SAAS,SAAS7E,GAC7CA,EAAEwE,iBACFlB,EAAK0vV,MAAM,GACX1vV,EAAK2vV,SAASrzU,SAASkoR,MAG3BxkS,EAAKyvV,uBAAuBluV,KAAK,SAAS,SAAS7E,GAC/CA,EAAEwE,iBACFlB,EAAK0vV,OAAO,GACZ1vV,EAAK4vV,WAAWtzU,SAASkoR,MAG7BxkS,EAAK4D,QACAod,GAAG,UAAYuC,EAAIvjB,EAAKi7G,SAAS15G,KAAKvB,IACtCghB,GAAG,QAAUuC,EAAIvjB,EAAK6vV,OAAOtuV,KAAKvB,IAClCghB,GAAG,QAAUuC,EAAIvjB,EAAKosV,OAAO7qV,KAAKvB,IAClCghB,GAAG,QAAUuC,EAAIvjB,EAAK8vV,cAAcvuV,KAAKvB,IAE1CA,EAAKirT,aACLjrT,EAAKirT,YAAYjqS,GAAG,QAAUuC,EAAIvjB,EAAK29B,MAAMp8B,KAAKvB,MAc9DyoE,SAAU,SAASA,GAGf1wE,KAAK6gO,UAAU,CACXnwJ,SAAUA,IAAa9tE,GAAqB8tE,EAC5CrpD,SAAS,IAJFrnB,KAOFiyE,eAPEjyE,KAQFiyE,cAAcvB,SAASA,IAAa9tE,GAAqB8tE,IAItEnpD,OAAQ,SAASA,GAGbvnB,KAAK6gO,UAAU,CACXnwJ,UAAU,EACVrpD,UAAWE,EAASA,IAAW3kB,GAAqB2kB,KAJ7CvnB,KAOFiyE,eAPEjyE,KAQFiyE,cAAc1qD,OAAOA,EAASA,IAAW3kB,GAAqB2kB,IAI3EgK,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACX0wB,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAEhCe,EAAKmE,QAAQ4b,YAAY,oBAAqB/f,EAAKf,QAAQkwV,UAC3DnvV,EAAK6iS,MAAM37Q,KAAK,cAAelnB,EAAKf,QAAQwd,aAC5Czc,EAAK+vV,aAAa/vV,EAAKf,QAAQwd,aAC/Bzc,EAAK4D,QAAQiX,KAAK,CACd,gBAAiB7a,EAAKf,QAAQiP,MAAQ9P,EAAO4B,EAAKf,QAAQiP,IAAMlO,EAAKf,QAAQijQ,OAASliQ,EAAKf,QAAQiP,IACnG,gBAAiBlO,EAAKf,QAAQ0R,MAAQvS,EAAO4B,EAAKf,QAAQ0R,IAAM3Q,EAAKf,QAAQijQ,OAASliQ,EAAKf,QAAQ0R,MAGvG3Q,EAAKf,QAAQwJ,OAASyhU,EAAclqU,EAAKf,QAAQwJ,QACjDzI,EAAKwvV,qBAAqBz1V,UAC1BiG,EAAKwvV,qBAAuB,KAC5BxvV,EAAKyvV,uBAAuB11V,UAC5BiG,EAAKyvV,uBAAyB,KAC9BzvV,EAAKgwV,YAAYlhU,SACjB9uB,EAAK6uV,UAEL7uV,EAAKypB,mBAEDzpB,EAAKirT,cACLjrT,EAAKirT,YAAYj6R,IAAIzN,GACrBvjB,EAAKirT,YAAYn8R,SAEb9uB,EAAKgqE,gBACLhqE,EAAKgqE,cAAcjwE,UACfiG,EAAKwkT,yBACLxkT,EAAKmE,QAAQ8wP,WAKzBj1P,EAAKskT,SAELtkT,EAAK44N,UAAU,CACXnwJ,SAAUzoE,EAAKf,QAAQwpE,SACvBrpD,SAAUpf,EAAKf,QAAQqgB,SAGvBrgB,EAAQwB,QAAU9F,GAClBqF,EAAKS,MAAMxB,EAAQwB,QAI3B1G,QAAS,WACL,IAAIiG,EAAOjI,KAEPiI,EAAKirT,cACLjrT,EAAKirT,YAAYj6R,IAAIzN,GAEjBvjB,EAAKgqE,eACLhqE,EAAKgqE,cAAcjwE,WAI3BiG,EAAK4D,QACAoB,IAAIhF,EAAK6iS,OACT79R,IAAIhF,EAAK2vV,UACT3qV,IAAIhF,EAAK4vV,YACT5+T,IAAIzN,GAETvjB,EAAKwvV,qBAAqBz1V,UAC1BiG,EAAKyvV,uBAAuB11V,UAExBiG,EAAK+vT,OACL/vT,EAAK+vT,MAAM/+R,IAAI,QAAShxB,EAAKgwT,eAGjCvnS,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,IAG3BkO,IAAK,SAASzN,GACV,OAAO1I,KAAKq1U,QAAQ,MAAO3sU,IAG/BkQ,IAAK,SAASlQ,GACV,OAAO1I,KAAKq1U,QAAQ,MAAO3sU,IAG/BgqC,KAAM,SAAShqC,GACX,OAAO1I,KAAKq1U,QAAQ,OAAQ3sU,IAGhCA,MAAO,SAASA,GACZ,IAAIT,EAAOjI,KAEX,GAAI0I,IAAU9F,EACV,OAAOqF,EAAKq+M,QAGhB59M,EAAQT,EAAKuhD,OAAO9gD,MACTT,EAAKiwV,QAAQxvV,KAMxBT,EAAKm5N,QAAQ14N,GACbT,EAAKmvT,KAAOnvT,EAAKq+M,OAEbr+M,EAAKgqE,eACLhqE,EAAKgqE,cAAcr0D,YAI3BgoB,MAAO,WACH5lC,KAAKi3V,YAGTiB,QAAS,SAASxvV,GACd,IACAxB,EADWlH,KACIkH,QACfiP,EAAMjP,EAAQiP,IACdyC,EAAM1R,EAAQ0R,IAEd,OAAIlQ,IAAUrC,IAIV8P,IAAQ9P,GAAQqC,EAAQyN,EACxBzN,EAAQyN,EACDyC,IAAQvS,GAAQqC,EAAQkQ,IAC/BlQ,EAAQkQ,IANDlQ,GAYfouV,QAAS,WACL,IACAqB,EADIlwV,EAAOjI,KAEXikF,EAAW,WACP9pD,aAAclyB,EAAKmwV,WACnBD,EAAOhsU,YAAYsgR,IAEvBvlS,EAAUe,EAAKf,QACfkwV,EAAWlwV,EAAQkwV,SACnBvrV,EAAU5D,EAAK4D,SAEfssV,EAAStsV,EAAQsoF,SAAS,mBAEd,KACRgkQ,EAASx1V,EAAE01V,EAAW,WAAYnxV,EAAQowV,YAAapwV,GAAWmxV,EAAW,WAAYnxV,EAAQqwV,cAAerwV,IACvGimC,SAASllC,EAAKmE,SAEvBnE,EAAKgwV,YAAcE,EAAO7sS,QAAQ,iDAAiDn/C,UAGlFirV,IACDe,EAAOhsV,SAASgc,OAAOivU,GACvBnvV,EAAKmE,QAAQmY,SAAS,qBAG1Btc,EAAK2vV,SAAWO,EAAOrgU,GAAG,GAC1B7vB,EAAKwvV,qBAAuB,IAAI92V,EAAM++E,WAAWz3E,EAAK2vV,SAAU,CAAEU,QAASr0Q,IAC3Eh8E,EAAK4vV,WAAaM,EAAOrgU,GAAG,GAC5B7vB,EAAKyvV,uBAAyB,IAAI/2V,EAAM++E,WAAWz3E,EAAK4vV,WAAY,CAAES,QAASr0Q,KAGnF8yQ,YAAa,WACT,IACIlrV,EADO7L,KACQ6L,QADR7L,KAGNwzV,gBAAkB7wV,EAAEhC,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAM,qBAAsBF,UAAW,sCAAuCs/M,YAAY7qS,IAGvIo5G,MAAO,WACH,IAAIh9G,EAAOjI,KAEXiI,EAAKuvV,aAAY,GAEjBvvV,EAAK62D,QAAQ72D,EAAK4D,QAAQqjB,QAG9B6yD,OAAQ,SAASp9E,GACb,IAAIsD,EAAOjI,KAEXm6B,aAAalyB,EAAKswV,WAClBtwV,EAAKswV,UAAYx/T,YAAW,WACxB,IAKIxiB,EAAQiiV,EAAaC,EALrBh0U,EAAQ9f,EAAE2C,OACVsC,EAAM47B,EAAM/gB,GAAO,GACnB/b,EAAQ+b,EAAM/b,MAAMsC,UAAU,EAAGpB,GACjC8G,EAASzI,EAAKywV,QAAQzwV,EAAKf,QAAQwJ,QACnCwjD,EAAQxjD,EAAO,KAEfioV,EAAgB,EAEhBzkS,IACAskS,EAAc,IAAIvqV,OAAO,KAAOimD,EAAO,KACvCukS,EAAgB,IAAIxqV,OAAO,QAAUyC,EAAa,OAAI,YAAcwjD,EAAQ,SAAWxjD,EAAOsC,KAAS,cAGvGylV,IACAliV,EAASkiV,EAAcpgV,KAAK3P,IAG5B6N,IACAoiV,EAAgBpiV,EAAO,GAAG9T,QAAQ+1V,EAAa,IAAIhxV,QAExB,GAAvBkB,EAAMiN,QAAQ,MAAc1N,EAAKq+M,OAAS,GAC1CqyI,KAIR1wV,EAAKgvV,WAELzxT,EAAMv9B,EAAK4D,QAAQ,GAAI8sV,GACvB1wV,EAAKivV,kBAIbA,YAAa,WACLl3V,KAAKkH,QAAQmwV,eACbr3V,KAAK6L,QAAQ,GAAGu6B,UAIxBwyT,gBAAiB,SAASlwV,GACtB,IACIyhQ,EADOnqQ,KACOkH,QAAQijQ,OAS1B,OAPIA,GAAqB,IAAXA,GAEI,QADdzhQ,EAAQ/H,EAAMoI,WAAWL,MAErBA,GAAgByhQ,GAIjBzhQ,GAGXo2D,QAAS,SAASp2D,GACd,IAAIT,EAAOjI,KAEX0I,EAAQT,EAAK2wV,gBAAgBlwV,GAC7BT,EAAKm5N,QAAQ14N,GACbA,EAAQT,EAAKq+M,OAETr+M,EAAKmvT,MAAQ1uT,IACbT,EAAKmvT,KAAO1uT,EAEPT,EAAK0wT,SAEN1wT,EAAK4D,QAAQzB,QAAQ0yC,GAGzB70C,EAAKmC,QAAQ0yC,IAGjB70C,EAAK0wT,SAAU,GAGnBkgC,SAAU,SAASvlV,GACf,OAAOA,GAAWE,EAAWxT,KAAKkH,QAAQoM,UAG9C2jV,SAAU,WACN,IAAIhvV,EAAOjI,KACXiI,EAAKmE,QAAQmY,SAASmnS,GACtBzjT,EAAKuvV,aAAY,GACjBvvV,EAAK4D,QAAQ,GAAG+5B,SAGpBixT,UAAW,WACP,IAAI5uV,EAAOjI,KAEXm6B,aAAalyB,EAAKswV,WAClBtwV,EAAKmE,QAAQ+f,YAAYu/R,GAASv/R,YAAY0kS,GAC9C5oT,EAAKg9G,QACLh9G,EAAKmsV,uBAGTsE,QAAS,SAAShoV,EAAQ4C,GACtB,IAAIC,EAAevT,KAAK64V,SAASvlV,GAASC,aAU1C,OARA7C,EAASA,EAAO4H,eAEL3C,QAAQ,MAAQ,EACvBpC,EAAeA,EAAaQ,SACrBrD,EAAOiF,QAAQ,MAAQ,IAC9BpC,EAAeA,EAAaM,SAGzBN,GAGXyjV,OAAQ,WACJ,IAMIp2T,EANA34B,EAAOjI,KACPkH,EAAUe,EAAKf,QACf2E,EAAU5D,EAAK4D,QAAQ0Y,SAAS+8R,GAAOp0S,OAAO,GAC9C4rV,EAAYjtV,EAAQitV,WAKxBl4T,EAJc34B,EAAKmE,QACE2pB,KAAK/iB,EAAQsuS,GAGpBp3S,SAEL1C,OAAS,IACdo5B,EAAOj+B,EAAE,wBACAmgB,KAAKniB,EAAMmiB,KAAK,aAAa,GAC7BuuD,aAAaxlE,IAG1B,IACIA,EAAQgZ,aAAa,OAAQ,QAC/B,MAAOlgB,GACLkH,EAAQnG,KAAO,OAGnBk7B,EAAK,GAAGmd,MAAQlyC,EAAQkyC,MACxBnd,EAAK,GAAGi1D,SAAWhqF,EAAQgqF,SAC3Bj1D,EAAK,GAAGn0B,MAAMsR,QAAUlS,EAAQY,MAAMsR,QACtC6iB,EAAKzR,KAAK,cAAejoB,EAAQwd,aAE7Bo0U,IACAl4T,EAAK9d,KAAK,YAAag2U,GACvBjtV,EAAQitV,UAAY,IAIxB7wV,EAAK6iS,MAAQlqQ,EAAKrc,SAAS1Y,EAAQ6gB,WACjB5J,KAAK,CACFgN,KAAQ,aACR,gBAAiB5oB,EAAQiP,MAAQ9P,EAAOa,EAAQiP,IAAMjP,EAAQijQ,OAASjjQ,EAAQiP,IAC/E,gBAAiBjP,EAAQ0R,MAAQvS,EAAOa,EAAQ0R,IAAM1R,EAAQijQ,OAASjjQ,EAAQ0R,IAC/Eu/S,aAAgB,SAIzCj1M,SAAU,SAASv+G,GACf,IAAIsD,EAAOjI,KACPuR,EAAM5M,EAAEwiC,QAER51B,IAAQ2Y,EAAKqB,aACbtjB,EAAK8wV,YAAa,GAGlBxnV,GAAO2Y,EAAKU,KAGLrZ,GAAO2Y,EAAKQ,GAGZnZ,GAAO2Y,EAAKK,OAKnBhZ,GAAO2Y,EAAKI,MACZriB,EAAK0wT,SAAU,GAEnB1wT,EAAK+wV,aAAexzT,EAAMv9B,EAAK4D,UAP3B5D,EAAK62D,QAAQ72D,EAAK4D,QAAQqjB,OAH1BjnB,EAAKgxV,MAAM,GAHXhxV,EAAKgxV,OAAO,IAgBpBnB,OAAQ,WACJ93V,KAAKo0V,uBAGT2D,cAAe,WACX,IAAIlsV,EAAU7L,KAAK6L,QACfnD,EAAQmD,EAAQqjB,MAChB/Y,EAAMnW,KAAKkH,QAAQiP,IACnB5C,EAAevT,KAAK04V,QAAQ14V,KAAKkH,QAAQwJ,QACzCwoV,EAAmB3lV,EAAaP,KAChCmmV,EAAsB,OAARhjV,GAAgBA,GAAO,GAAyB,MAApBzN,EAAMoC,OAAO,GAEvD9K,KAAK+4V,YAAcG,IAAqBlmV,IACxCtK,EAAQA,EAAMjG,QAAQuQ,EAAOkmV,GAC7Bl5V,KAAK6L,QAAQqjB,IAAIxmB,GACjB1I,KAAK+4V,YAAa,GAGlB/4V,KAAKo5V,WAAap5V,KAAKwpD,OAAO9gD,KAC9BA,EAAQ1I,KAAKwpD,OAAO9gD,GACfwI,WACAzO,QAAQuQ,EAAOO,EAAaP,OAGjChT,KAAKq5V,cAAc9lV,GAAcxG,KAAKrE,KAAWywV,EACjDn5V,KAAKw1V,SAAW9sV,GAEhB1I,KAAK2zV,qBACL3zV,KAAK6L,QAAQqjB,IAAIlvB,KAAKw1V,UAClBx1V,KAAKg5V,eACLxzT,EAAM35B,EAAS7L,KAAKg5V,aAAa,IACjCh5V,KAAKg5V,aAAe,OAI5Bh5V,KAAKo5V,WAAY,GAGrBzF,mBAAoB,WAChB,IAAI1rV,EAAOjI,KAEXiI,EAAKisV,mBACL/5T,aAAalyB,EAAKksV,sBAClBlsV,EAAKksV,qBAAuBp7T,WAAW9wB,EAAKmsV,oBAAoB5qV,KAAKvB,GAAO,MAGhFisV,iBAAkB,WACHl0V,KAENoM,QAAQmY,SAAS2uU,GAFXlzV,KAGNwzV,gBAAgBrnU,YAAY,aAGrCioU,oBAAqB,WACjB,IAAInsV,EAAOjI,KAEXiI,EAAKmE,QAAQ+f,YAAY+mU,GACzBjrV,EAAKurV,gBAAgBjvU,SAAS,YAC9Btc,EAAKksV,qBAAuB,MAGhCkF,cAAe,SAAS9lV,GACpB,IAAItL,EAAOjI,KACPo4H,EAAY7kH,EAAaP,KACzBgD,EAAY/N,EAAKf,QAAQyM,SACzB2lV,EAAe,IAUnB,OARIlhO,IAAcplH,IACdolH,EAAY,KAAOA,GAGnBpiH,IAAc3P,IACd2P,EAAYzC,EAAaI,UAGX,IAAdqC,GAAmB/N,EAAKf,QAAQiwV,iBACzBV,GAGPxuV,EAAKf,QAAQiwV,mBACbmC,EAAe,MAAQtjV,EAAY,KAGnC/N,EAAKsxV,aAAenhO,IACpBnwH,EAAKsxV,WAAanhO,EAClBnwH,EAAKuxV,aAAe,IAAIvrV,OAAO,gBAAkBmqH,EAAY,MAAQkhO,EAAe,QAAUlhO,EAAY,MAAQkhO,EAAe,UAG9HrxV,EAAKuxV,eAGhBnF,OAAQ,SAAS1vV,GACb,IAAIsD,EAAOjI,KACP6L,EAAUlH,EAAE2C,OACZoB,EAAQmD,EAAQnD,MAChB6K,EAAetL,EAAKywV,QAAQzwV,EAAKf,QAAQwJ,QAE7CzI,EAAKmxV,WAAY,EAElBrgU,YAAW,WACN,IAAIxiB,EAAStO,EAAKuhD,OAAO39C,EAAQnD,OAE7B6N,IAAWlQ,EACX4B,EAAKm5N,QAAQ14N,IAEbmD,EAAQnD,MAAQ6N,EAAOrF,WAAWzO,QAAQuQ,EAAOO,EAAaP,MAC1D/K,EAAKiwV,QAAQ3hV,KAAYA,GAAWtO,EAAKoxV,cAAc9lV,GAAcxG,KAAKlB,EAAQnD,SAClFA,EAAQT,EAAK2wV,gBAAgB/sV,EAAQnD,OACrCT,EAAKm5N,QAAQ14N,SAM7B2sU,QAAS,SAASvgT,EAAQpsB,GACtB,IAAIT,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QAEnB,GAAIwB,IAAU9F,EACV,OAAOsE,EAAQ4tB,KAGnBpsB,EAAQT,EAAKuhD,OAAO9gD,KAEK,SAAXosB,KAId5tB,EAAQ4tB,GAAUpsB,EAClBmD,EACKoB,IAAIhF,EAAK6iS,OACThoR,KAAK,aAAegS,EAAQpsB,GAEjCmD,EAAQiX,KAAKgS,EAAQpsB,KAGzBivV,MAAO,SAASjlT,EAAMtN,GAClB,IAAIn9B,EAAOjI,KAEXolC,EAAUA,GAAW,IAErBjL,aAAclyB,EAAKmwV,WACnBnwV,EAAKmwV,UAAYr/T,YAAW,WACxB9wB,EAAK0vV,MAAMjlT,EAAM,MAClBtN,GAEHn9B,EAAKgxV,MAAMvmT,IAGfumT,MAAO,SAASvmT,GACZ,IAAIzqC,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf6zN,EAAgBz3N,EAAKq+M,OACrB59M,EAAQT,EAAKuhD,OAAO39C,EAAQqjB,QAAU,EACtClZ,EAAY/N,EAAKf,QAAQyM,UAAY,EAErCyF,KAAmBvN,EAAQ,IAC3B5D,EAAKgvV,WAGLhvV,EAAKf,QAAQijQ,QAAUzhQ,IACvBA,GAAgBT,EAAKf,QAAQijQ,QAGjCzhQ,IAAUA,EAAQT,EAAKf,QAAQwrC,KAAOA,GAAMx8B,QAAQF,GACpDtN,EAAQT,EAAKiwV,QAAQxvV,GACrBT,EAAKm5N,QAAQ14N,GACbT,EAAK0wT,SAAU,EAEXj5F,IAAkBh3N,GAClBT,EAAKmC,QAAQosV,IAIrB1iD,aAAc,SAASnvS,GACnBhC,EAAEgC,EAAEg5E,eAAe31D,YAAY6oS,EAAkB,eAAXlsT,EAAEe,OAG5C8xV,YAAa,SAASrvU,GAClB,IAAIlgB,EAAOjI,KAEXiI,EAAK6iS,MAAM3iR,OAAOA,GACdA,EACAlgB,EAAK6iS,MAAMx5Q,WAAW,eAEtBrpB,EAAK6iS,MAAMhoR,KAAK,cAAe,QAEnC7a,EAAK4D,QAAQsc,QAAQA,IAGzBqhC,OAAQ,SAAS9gD,EAAO4K,GACpB,OAAO0hB,EAAMtsB,EAAO1I,KAAK64V,SAASvlV,GAAUtT,KAAKkH,QAAQwJ,SAG7D4I,OAAQ,SAAS5Q,EAAOsN,GAGpB,OAFchW,KAAKkH,QAAQ6O,MAAQpV,EAAM2Y,OAASmgV,GAEnC/wV,EAAOsN,IAG1BorN,QAAS,SAAS14N,GACd,IAOIg3N,EACAg6H,EARAzxV,EAAOjI,KACPkH,EAAUe,EAAKf,QACfijQ,EAASjjQ,EAAQijQ,OACjBz5P,EAASxJ,EAAQwJ,OACjBiD,EAAWzM,EAAQyM,SACnBL,EAAUrL,EAAK4wV,WACftlV,EAAetL,EAAKywV,QAAQhoV,EAAQ4C,GAIpCK,IAAatN,IACbsN,EAAWJ,EAAaI,WAK5B+lV,GAFAhxV,EAAQT,EAAKuhD,OAAO9gD,EAAO4K,MAELjN,KAGlBqC,EAAQK,WAAWd,EAAKqR,OAAO5Q,EAAOiL,GAAW,KAGrD1L,EAAKq+M,OAAS59M,EAAQT,EAAKiwV,QAAQxvV,GACnCT,EAAK+vV,aAAar3V,EAAMuQ,SAASxI,EAAOgI,EAAQ4C,IAE5ComV,GACIvvF,IACAzhQ,EAAQK,WAAWd,EAAKqR,OAAO5Q,EAAQyhQ,EAAQx2P,GAAW,MAGlC,KAD5BjL,EAAQA,EAAMwI,YACJyE,QAAQ,OACdjN,EAAQT,EAAKqR,QAAQ5Q,EAAOiL,IAEhC+rN,EAAgBh3N,EAChBA,EAAQA,EAAMjG,QAAQuQ,EAAOO,EAAaP,QAE1CtK,EAAQ,KACRg3N,EAAgB,MAGpBz3N,EAAK4D,QAAQqjB,IAAIxmB,GACjBT,EAAKutV,SAAW9sV,EAChBT,EAAK4D,QAAQoB,IAAIhF,EAAK6iS,OAAOhoR,KAAK,gBAAiB48M,IAGvDs4H,aAAc,SAAStvV,GACnB,IAAI+b,EAAQzkB,KAAK8qS,MAEjBrmR,EAAMyK,IAAIxmB,GACL6tV,GAAyB7tV,GAC1B+b,EAAMyK,IAAIlvB,KAAKkH,QAAQwd,aAG3BD,EAAM3B,KAAK,QAAS9iB,KAAK6L,QAAQiX,KAAK,UAAY2B,EAAMyK,QAG5Dq9R,OAAQ,WACJ,IAII93J,EACAurC,EALA/3L,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACf3E,EAAUe,EAAKf,QACfyoB,EAAK9jB,EAAQiX,KAAK,MAIA,OAAlB5b,EAAQ2sB,QACR4gI,IAAW9sJ,EAAcT,EAAQ2sB,QAAS3sB,EAAQ2sB,MAAM4gI,SACxDurC,EAAYr4L,EAAcT,EAAQ2sB,OAAS3sB,EAAQ2sB,MAAM0yB,QAAUr/C,EAAQ2sB,MAEvE4gI,IACAxsJ,EAAKwkT,wBAA0BxkT,EAAKmE,QAAQ4f,KAAK,iBAAiB7f,SAClElE,EAAKgqE,cAAgB,IAAItxE,EAAMgpB,GAAGmiS,cAAc7jT,EAAKwkT,wBAAyB,CAAE35R,OAAQ7qB,KAGxFtH,EAAMuI,WAAW82L,KACjBA,EAAYA,EAAUz1L,KAAKtC,IAG1B+3L,IACDA,EAAY,IAGXrwK,IACDA,EAAKzoB,EAAQ9E,KAAO,IAAMzB,EAAM8uB,OAChC5jB,EAAQiX,KAAK,KAAM6M,IAGvB1nB,EAAKirT,YAAcvwT,EAAE,6CAA8CgtB,EAAK,KAAOqwK,EAAY,aAAa3uH,aAAappE,EAAKmE,SAErHnE,EAAK4D,QAAQiX,KAAK,cAAgBlgB,GAAiBqF,EAAK4D,QAAQiX,KAAK,cAAgBlgB,GACtFqF,EAAKirT,YAAYjqS,GAAG,QAAUuC,EAAIvjB,EAAK29B,MAAMp8B,KAAKvB,MAK9DkwE,SAAU,WACN,IAGI/rE,EAFAP,EADO7L,KACQ6L,QACf8tV,EAAa9tV,EAAQ,IAGzBO,EAAUP,EAAQwsB,QAAQ,sBAEb9rB,GAAG,2BACZH,EAAUP,EAAQsB,OAAO6e,KAAK,WAAW7f,UAG7CC,EAAQ,GAAGK,MAAMsR,QAAU47U,EAAWltV,MAAMsR,QAC5C47U,EAAWltV,MAAMO,MAAQ,GAZdhN,KAaNoM,QAAUA,EAAQmY,SAAS,4BACTA,SAASo1U,EAAWjtU,WACpBP,YAAY,0BACZvf,IAAI,UAAW,KAG1Cs/D,OAAQ,WACJ,IAAIjkE,EAAOjI,KACP6L,EAAU5D,EAAK4D,QACfwyT,EAASxyT,EAAQiX,KAAK,QACtBkkB,EAAOq3R,EAAS17T,EAAE,IAAM07T,GAAUxyT,EAAQQ,QAAQ,QAElD26B,EAAK,KACL/+B,EAAKgwT,cAAgB,WACjBl/R,YAAW,WACP9wB,EAAKS,MAAMmD,EAAQ,GAAGnD,OACtBT,EAAK2Q,IAAI3Q,EAAKktV,gBAAgBv8U,KAC9B3Q,EAAKkO,IAAIlO,EAAKktV,gBAAgBh/U,SAItClO,EAAK+vT,MAAQhxR,EAAK/d,GAAG,QAAShhB,EAAKgwT,mBAY/C,SAASogC,EAAWpkT,EAAWrT,EAAM15B,GACjC,IAAIwlB,EAA0B,aAAdunB,EAA2B,eAAiB,iBACxD5U,EAAoB,aAAd4U,EAA2B,WAAa,WAElD,OAAOnkC,EAAK02R,aAAa,0EAA4EnnQ,EAAM,iBAAmBuB,EAAO,YAAcA,EAAO,cAAe79B,EAAO,GAAImE,EAAS,CACzLowF,KAAM5qE,EACNuzH,MAAO,KACPtnI,QAAS,QAIjB,SAAS8gV,EAAS/wV,EAAOsN,GACrB,IAAIhG,EAAQjH,WAAWL,EAAO,IAAIwI,WAAWtG,MAAMoI,GAMnD,OAJIhD,EAAM,KACNA,EAAM,GAAKA,EAAM,GAAGhF,UAAU,EAAGgL,IAG9BhG,EAAMnF,KAAKmI,GAzBtBrS,EAAM+xB,cAAcyY,eAAe,iBAAkB,YAErDxqC,EAAM+xB,cAAcgY,eAAe,iBAAkB,CAAC,CAClDvb,KAAM,UACNrW,OAAQnY,EAAM+xB,cAAcsX,cAAc3sB,OAAO,CAAC,CAAC,OAAQ,aAyB/DsM,EAAGqN,OAAO0/T,GA38Bd,CA48BG51V,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBmgE,EAAK,kBACL+oQ,EAAa,gBACbC,EAAmB,IAAI5rV,OAAO2rV,EAAW,KACzCE,EAAe,YACfC,EAAa,UACbC,EAAoB,uBACpBC,EAAe,eACfC,EAAa,kCAGbC,EAAc,eAEdC,EAAc,yIACdC,EAAY,sqCACZhrB,EAAgB,uEAChBirB,EAAmB,uCACnBC,EAAsB,6BACtBx6H,EAAO,OACPy6H,EAAO,OACPC,EAAO,OACPC,EAAa,aAEbC,EAAW,WACX79S,EAAS,SACT89S,EAAiB,gBAEjBC,EAAiB,SAASnyV,EAAOgL,GAI7B,MAHuB,iBAAZA,IACPA,EAAU,IAAIzF,OAAO,OAASyF,EAAU,OAErCA,EAAQ3G,KAAKrE,IAExBoyV,EAAU,SAASr2U,EAAOgB,EAAU/R,GAChC,IAAIhL,EAAQ+b,EAAMyK,MAElB,OAAIzK,EAAMwR,OAAOxQ,GAAUje,QAAoB,KAAVkB,GAC1BmyV,EAAenyV,EAAOgL,IAIrCqnV,EAAe,SAASt2U,EAAOriB,GAC3B,QAAIqiB,EAAMjd,QAC8B,MAA7Bid,EAAM,GAAGolC,WAAWznD,IAoCvC,SAAS44V,EAAUp6T,GACf,OAAIj+B,EAAEs4V,UACKt4V,EAAEA,EAAEs4V,UAAUr6T,IAElBj+B,EAAEi+B,GAGb,SAASs6T,EAA0B/mU,EAAUk6B,GAKzC,IAJA,IACIxiD,EADA8sE,EAAah2E,IAIRiH,EAAM,EAAGpC,EAAS2sB,EAAS3sB,OAAQoC,EAAMpC,EAAQoC,IACtDiC,EAAUsoB,EAASvqB,GACfiwV,EAAiB9sV,KAAKlB,EAAQ6gB,YACvB7gB,EAAQkpB,aAAap0B,EAAMmiB,KAAK,UAC1BurC,IACTsqB,EAAaA,EAAW1rE,IAAIpB,IAIxC,OAAO8sE,EAGX,SAASwiR,EAAWtnU,EAAOhoB,GACvB,QAAKgoB,IAGyB,iBAAnBA,EAAMoE,UAA4C,UAAnBpE,EAAMoE,WAGP,iBAA9BpE,EAAMkB,aAAa,QAA6D,iBAA/BlpB,EAAQkpB,aAAa,OAG7ElB,EAAMkB,aAAa,SAAWlpB,EAAQkpB,aAAa,QAjEtDp0B,EAAMgpB,GAAGyxU,YACVz6V,EAAMgpB,GAAGyxU,UAAY,CAAEp9T,MAAO,GAAI/T,SAAU,GAAIoxU,YAAa14V,EAAEQ,KAAMm4V,eAAgB34V,EAAEQ,OAuE3F,IAAIo4V,EAAkB,SAAUtsU,GAI5B,IAHA,IAAI85B,EAAS95B,EAAI85B,OAEbxyC,EAAS,OACJhP,EAAI,EAAGA,EAAIwhD,EAAOvhD,OAAQD,GAAK,EACpCgP,GAAU,sBAA0BwyC,EAAOxhD,GAAQ,MAAI,cAAoBwhD,EAAOxhD,GAAU,QAAI,YAIpG,OADAgP,GAAU,SAIVilV,EAAY9qU,EAAO3tB,OAAO,CAC1BoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KACPsnO,EAnFZ,SAAsBz7N,GAClB,IAEIzJ,EAFAq5V,EAAY96V,EAAMgpB,GAAGyxU,UAAUM,eAAiB,GAChD19T,EAAQ,GAGZ,IAAK57B,KAAQq5V,EACT94V,EAAEI,QAAO,EAAMi7B,EAAOy9T,EAAUr5V,GAAMuzC,QAAQ9pC,IAElD,OAAOmyB,EA2EY29T,CAAa9vV,GACxB+vV,EAA4B,IAAMj7V,EAAMmiB,KAAK,YAAc,YAE/D5b,EAAUA,GAAW,IAEb82B,MAAQr7B,EAAEI,OAAO,GAAIpC,EAAMgpB,GAAGyxU,UAAUp9T,MAAOspM,EAAStpM,MAAO92B,EAAQ82B,OAC/E92B,EAAQ+iB,SAAWtnB,EAAEI,OAAO,GAAIpC,EAAMgpB,GAAGyxU,UAAUnxU,SAAUq9M,EAASr9M,SAAU/iB,EAAQ+iB,UAExFyG,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnCe,EAAK4zV,eAAiBl7V,EAAMkP,SAAS5H,EAAKf,QAAQ40V,eAClD7zV,EAAK8zV,iBAAmBp7V,EAAMkP,SAAS5H,EAAKf,QAAQ80V,kBAAkBnsV,UAAY0rV,GAE9EtzV,EAAK4D,QAAQU,GAAGkuV,IAChBxyV,EAAK4D,QAAQiX,KAAK43U,EAAYA,GAGlCzyV,EAAKg0V,eAAiB5sB,EAAgBusB,EACtC3zV,EAAKi0V,kBAAoB5B,EAAmBsB,EAE5C3zV,EAAKk0V,QAAU,GACfl0V,EAAKitN,gBACLjtN,EAAKm0V,cAAe,EAEhBn0V,EAAKo0V,mBACLp0V,EAAKq2O,YAIbj0O,OAAQ,CAAEswV,EAAU79S,EAAQ89S,GAE5B1zV,QAAS,CACL9E,KAAM,YACN05V,cAAe,SAAU7sU,GAGrB,MAAQ,8BAFMA,EAAIsB,QAEkC,WAExDtG,SAAU,CACNqyU,SAAU,kBACV5oV,QAAS,mBACTyC,IAAK,6CACLyC,IAAK,6CACL85B,KAAM,mBACN6pT,MAAO,yBACPluU,IAAK,uBACLhY,KAAM,wBACNmmV,YAAa,6DACbC,QAAS,iDAEbz+T,MAAO,CACHs+T,SAAU,SAAS73U,GACf,IAAIi4U,GAAkBj4U,EAAM3B,KAAK,UAAY2B,EAAMlY,GAAG,YAClDnK,EAAOqiB,EAAM3B,KAAK,QAClB3R,EAAU/O,GAAQA,EAAKuT,QAAQ,MAAQ,EAAI,IAAO,IAClDgnV,EAAgBl4U,EAAM3B,KAAK,UAAY9iB,KAAK6L,QAAQkqB,KAAK,cAAgB5kB,EAAQsT,EAAM3B,KAAK,QAAU3R,EAAQ,aAAa3J,OAC3Ho1V,EAAWn4U,EAAMwR,OAAO,mBAAmBzuB,SAAWk1V,GAAkBC,GACxEE,EAAQp4U,EAAMwR,OAAO,gBAAgBzuB,SAAWxH,KAAK6L,QAAQkqB,KAAK,cAAgB5kB,EAAQsT,EAAM3B,KAAK,QAAU3R,EAAQ,aAAa3J,OACpIkB,EAAQ+b,EAAMyK,MAElB,QAAS6rU,EAAat2U,EAAO,eAAiB/b,GAAmB,KAAVA,GAAiC,IAAjBA,EAAMlB,QAAgBo1V,GAAYC,KAE7GnpV,QAAS,SAAS+Q,GACd,OAAIA,EAAMwR,OAAO,gFAAgFA,OAAO,aAAazuB,QAA0B,KAAhBid,EAAMyK,OAC1H2rU,EAAep2U,EAAMyK,MAAOzK,EAAM3B,KAAK,aAItD3M,IAAK,SAASsO,GACV,OAAIA,EAAMwR,OAAOskU,EAAsB,KAAO55V,EAAMmiB,KAAK,QAAU,YAAYmT,OAAO,SAASzuB,QAA0B,KAAhBid,EAAMyK,QACjGnmB,WAAW0b,EAAM3B,KAAK,SAAW,IACjCniB,EAAMoI,WAAW0b,EAAMyK,QAMzCtW,IAAK,SAAS6L,GACV,OAAIA,EAAMwR,OAAOskU,EAAsB,KAAO55V,EAAMmiB,KAAK,QAAU,YAAYmT,OAAO,SAASzuB,QAA0B,KAAhBid,EAAMyK,QACjGnmB,WAAW0b,EAAM3B,KAAK,SAAW,IACjCniB,EAAMoI,WAAW0b,EAAMyK,QAMzCwjB,KAAM,SAASjuB,GACX,GAAIA,EAAMwR,OAAOskU,EAAsB,KAAO55V,EAAMmiB,KAAK,QAAU,YAAYmT,OAAO,UAAUzuB,QAA0B,KAAhBid,EAAMyK,MAAc,CAC1H,IAII4tU,EAJA3mV,EAAMpN,WAAW0b,EAAM3B,KAAK,SAAW,EACvC4vB,EAAO3pC,WAAW0b,EAAM3B,KAAK,UAAY,EACzCoM,EAAMnmB,WAAW0b,EAAMyK,OACvBvb,GA1JpBjL,IAD2BA,EA2J0BgqC,GA1JpC,IAAI9nC,MAAM,MACjBpD,OAAS,EACRkB,EAAM,GAAGlB,OAEb,EAyJS,OAAImM,GACAmpV,EAAQz5V,KAAKqmC,IAAI,GAAI/1B,GACZtQ,KAAKkN,OAAO2e,EAAM/Y,GAAO2mV,IAAWpqT,EAAOoqT,GAAUz5V,KAAKqmC,IAAI,IAAK/1B,IAAc,IAErFub,EAAM/Y,GAAOu8B,GAAU,EAlKpD,IAA+BhqC,EAoKf,OAAO,GAEX6zV,MAAO,SAAS93U,GACZ,OAAOq2U,EAAQr2U,EAAO,iBAAmB9jB,EAAMmiB,KAAK,QAAU,UAAWs3U,IAE7E/rU,IAAK,SAAS5J,GACV,OAAOq2U,EAAQr2U,EAAO,eAAiB9jB,EAAMmiB,KAAK,QAAU,QAASu3U,IAEzEhkV,KAAM,SAASoO,GACX,OAAIA,EAAMwR,OAAO,iBAAmBt1B,EAAMmiB,KAAK,QAAU,UAAUtb,QAA0B,KAAhBid,EAAMyK,OACL,OAAnEvuB,EAAM4c,UAAUkH,EAAMyK,MAAOzK,EAAM3B,KAAKniB,EAAMmiB,KAAK,aAIlE25U,QAAS,SAASh4U,GACd,GAAIA,EAAMwR,OAAO,IAAMt1B,EAAMmiB,KAAK,QAAU,aAAatb,OAAQ,CAC7D,IAAIS,EAAOjI,KACPy8V,EAAU97V,EAAMy1B,eAAe3R,GAC/Bs4U,EAAc,SAASC,GACnB,OAAO,MAAM,GAiBrB,GAdKv4U,EAAM5W,KAAK,uBAA0BkvV,EAAYN,EAAQO,aAAgBP,EAAQQ,iBAClFx4U,EAAM5W,KAAK,sBAAsB,GACjC5F,EAAKi1V,aAAc,EACnBT,EAAQn+G,WAAW9xM,MAAK,WACpBvkC,EAAKi1V,aAAc,EACnBj1V,EAAKk1V,cAAc14U,MACpBgoB,MAAK,SAAS5+B,GACb5F,EAAKi1V,aAAc,EACfrvV,EAAKkgB,OAAwB,wBAAflgB,EAAKkgB,OACnBjtB,OAAO6P,QAAQC,KAAK,yKAK5BmsV,EAAYN,EAAQO,WAEpB,OADAv4U,EAAMyN,WAAW,sBACVuqU,EAAQO,UAGvB,OAAO,IAGfI,gBAAgB,EAChBpB,mBAAmB,GAGvBqB,aAAc,WACV,OAAO18V,EAAMgpB,GAAGyxU,UAAUC,YAAYr7V,KAAK6L,QAAS7L,KAAK+oD,WAG7DszS,gBAAiB,WACb,OAAO17V,EAAMgpB,GAAGyxU,UAAUE,eAAet7V,KAAK6L,UAGlD7J,QAAS,WACL0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,MAEvBA,KAAK6L,QAAQotB,IAAI43D,GAEb7wF,KAAKg8V,oBACLh8V,KAAKg8V,kBAAkB/iU,IAAI43D,GAC3B7wF,KAAKg8V,kBAAoB,OAIjCtzV,MAAO,WACH,QAAK1I,KAAKo8V,cAIsB,IAAzBp8V,KAAK+oD,SAASvhD,QAGzBm4D,QAAS,SAASh7D,GACd,SAAM3E,KAAKs+O,aAAet+O,KAAKq9V,gBAAmBr9V,KAAKk9V,eACnDv4V,EAAEs1B,kBACFt1B,EAAEu1S,2BACFv1S,EAAEwE,kBACK,IAKfg0V,cAAe,SAAStxV,GACpB,IAAIonD,EAAQjzD,KAAK0I,QAEjB1I,KAAKs9V,cAAczxV,GAEf7L,KAAK0I,UAAYuqD,GACjBjzD,KAAKoK,QAAQ0yC,IAIrBo4K,cAAe,WACX,IAAIjtN,EAAOjI,KAEPiI,EAAK4D,QAAQU,GAAGkuV,IAChBxyV,EAAK4D,QAAQod,GAAG,SAAW4nE,EAAI5oF,EAAK03D,QAAQn2D,KAAKvB,IAGjDA,EAAKf,QAAQk2V,iBACRn1V,EAAK4D,QAAQU,GAAG8iU,IASjBpnU,EAAK4D,QAAQod,GAAG82M,EAAOlvI,GAAI,WACvB5oF,EAAKk1V,cAAcl1V,EAAK4D,YAGxB5D,EAAK4D,QAAQU,GAAG+tV,IAChBryV,EAAK4D,QAAQod,GAAG,QAAU4nE,GAAI,WAC1B5oF,EAAKk1V,cAAcl1V,EAAK4D,cAdhC5D,EAAK4D,QAAQod,GAAG82M,EAAOlvI,EAAI5oF,EAAKg0V,gBAAgB,WAC5Ch0V,EAAKk1V,cAAcx6V,EAAE3C,UAGzBiI,EAAK4D,QAAQod,GAAG,QAAU4nE,EAAI5oF,EAAKi0V,mBAAmB,WAClDj0V,EAAKk1V,cAAcx6V,EAAE3C,aAgBrCs+O,SAAU,WACN,IAAIi/G,EACA3zV,EAEApC,EADA+O,GAAS,EAGTymV,EAAUh9V,KAAK0I,QAInB,GAFA1I,KAAKm8V,QAAU,GAEVn8V,KAAK6L,QAAQU,GAAG8iU,GAajB94T,EAASvW,KAAKs9V,cAAct9V,KAAK6L,aAbA,CACjC,IAAI2xV,GAAU,EAId,IAAK5zV,EAAM,EAAGpC,GAFd+1V,EAASv9V,KAAK6L,QAAQkqB,KAAK/1B,KAAKi8V,iBAEFz0V,OAAQoC,EAAMpC,EAAQoC,IAC3C5J,KAAKs9V,cAAcC,EAAOzlU,GAAGluB,MAC9B4zV,GAAU,GAIlBjnV,GAAUinV,EAed,OAVIx9V,KAAKkH,QAAQ80V,oBAAsBgB,GACnCh9V,KAAKy9V,wBAGTz9V,KAAKoK,QAAQuwV,EAAU,CAAE+C,MAAOnnV,EAAQwyC,OAAQ/oD,KAAK+oD,WAEjDi0S,IAAYzmV,GACZvW,KAAKoK,QAAQ0yC,GAGVvmC,GAGX+mV,cAAe,SAAS74U,GACpBA,EAAQ9hB,EAAE8hB,GAGVzkB,KAAKo8V,cAAe,EAEpB,IAIIhmU,EA1VI1tB,EAsVJT,EAAOjI,KACP6P,EAAW5H,EAAK4zV,eAChBtlV,EAAStO,EAAK01V,eAAel5U,GAC7Bi5U,EAAQnnV,EAAOmnV,MAGfrvS,EAAa5pC,EAAM3B,KAAK03U,IAAS,GACjCoD,EAAM31V,EAAK41V,sBAAsBxvS,GAAWphD,IAAIwX,EAAM4gD,KAF1C,kBAE0DpvC,QAAO,WACzE,IAAIpqB,EAAUlJ,EAAE3C,MAChB,OAAI6L,EAAQoqB,OAAO,IAAMt1B,EAAMmiB,KAAK,OAAS,KAAKtb,QACvCqE,EAAQiX,KAAKniB,EAAMmiB,KAAK,UAAYurC,MAK/C9pC,SAAS,YACbu5U,EAAeJ,EAAkD,GAA1Cz1V,EAAK81V,gBAAgBt5U,EAAOlO,EAAOhF,KAC1DysV,EAAgBN,EAAkF,GAA1E1C,EAAUnrV,EAAS,CAAE0gB,SAvWzC7nB,EAuWyDo1V,EAtW9Dp1V,EAAMjG,QAAQ,QAAS,SACzBA,QAAQ,UAAW,KACnBA,QAAQ,SAAU,KAClBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,MAkW6DwiB,MAAOopC,KAClF4vS,GAAYx5U,EAAM3B,KAAKq3U,GACvB+D,EAAez5U,EAAMlY,GA/ZhB,kBAgaLo0N,EAAel8M,EAAMtY,OA/Zd,YA+aX,GAdAsY,EAAM6M,WAAW6oU,GAEb11U,EAAM2H,SAAS,cACfgK,EAAiBz1B,EAAMy1B,eAAe3R,EAAMpY,QAAQ,kBAGpDoY,EAAMlY,GAAG,kBACT6pB,EAAiBz1B,EAAMy1B,eAAe3R,EAAMpY,QAAQ,mBAGpDoY,EAAMlY,GAAG,qBACT6pB,EAAiBz1B,EAAMy1B,eAAe3R,EAAMpY,QAAQ,sBAGnDqxV,GAAUj5U,EAAM5W,KAAK,6BAoDf5F,EAAKk0V,QAAQ9tS,OApDyB,CAC7CpmD,EAAKk0V,QAAQ9tS,GAAayvS,EAC1B,IAAIK,EAAQP,EAAI96U,KAAK,MASrB,GAPA7a,EAAKm2V,0BAA0BJ,EAAc3vS,GAGzC8vS,GACAH,EAAal7U,KAAK,KAAMq7U,GAGT,IAAfP,EAAIp2V,OACJo2V,EAAI1lR,YAAY8lR,OACb,CACH5nU,EAAiBA,GAAkBz1B,EAAMy1B,eAAe3R,GACxD,IAAIw0G,EAAgBx0G,EAAMtY,SAASojB,IAAI,GACnCsuR,EAAcp5R,EAAM4gD,OAAO91C,IAAI,GAC/B8uU,EAAc55U,EAAMk7B,OAAOpwB,IAAI,IAG9B6G,GAAkB3R,EAAMlY,GAAG,kBAC5B6pB,EAAiBz1B,EAAMy1B,eAAe3R,EAAMpY,QAAQ,oBAInD+pB,GAAkB3R,EAAMlY,GAAG,qBAC5B6pB,EAAiBz1B,EAAMy1B,eAAe3R,EAAMpY,QAAQ,sBAGpD+pB,GAAkBA,EAAehqB,UAAYgqB,EAAevqB,UAAYuqB,EAAehqB,SAAW,CAAC,YAAa,aAAc,iBAAiBuJ,QAAQygB,EAAelvB,QAAQ9E,OAAS,GACvL47V,EAAatnD,YAAYtgR,EAAehqB,SACjC6sH,GAA4C,UAA3BA,EAAchhG,SAEtC+lU,EAAatnD,YAAYz9K,GAClB4kL,GAAes9C,EAAWt9C,EAAap5R,EAAM,IAEpDu5U,EAAatnD,YAAYmH,GAClBwgD,GAAelD,EAAWkD,EAAa55U,EAAM,IAEpDu5U,EAAatnD,YAAYjyR,GAClBy5U,GAAgBv9H,EAAan5N,OAEpCw2V,EAAatnD,YAAY/1E,GAEzBq9H,EAAatnD,YAAYjyR,GAIjCu5U,EAAa7xU,YAAY,YAEzB1H,EAAM3B,KAAKq3U,GAAa,GAe5B,GAVI8D,IAAaP,GACb19V,KAAKoK,QAAQwwV,EAAgB,CAAE8C,MAAOA,EAAOj5U,MAAOA,EAAOsJ,MAAO+vU,EAAa74U,MAAOopC,KAG1Fj4B,EAAkBA,GAAiD,aAA/BA,EAAelvB,QAAQ9E,KAAuBg0B,EAAiBz1B,EAAMy1B,eAAe3R,MAC/F2R,EAAekoU,eAAiBloU,EAAehqB,WACpEqY,EAAMuD,YAAY8xU,GAAe4D,GACjCj5U,EAAMuD,YAAY+xU,EAAY2D,IAG9BtnU,EAAgB,CAChB,IAAImoU,EAAYnoU,EAAekoU,eAAiBloU,EAAehqB,QAC3DoyV,EAAapoU,EAAe88R,YAE5BqrC,IACAA,EAAUv2U,YAAY8xU,GAAe4D,GACrCa,EAAUv2U,YAAY+xU,EAAY2D,IAElCc,GACAA,EAAWx2U,YAAYiyU,GAAeyD,GAI9C,GAAIO,IAAaP,EAAO,CACpB,IAAIe,EAAUT,EAAeA,EAAal7U,KAAK,MAAQ86U,EAAI96U,KAAK,MAEhE7a,EAAKy2V,2BAA2Bj6U,EAAOg6U,GAEnCz+V,KAAKkH,QAAQ80V,mBAAqBh8V,KAAKkH,QAAQk2V,gBAC/Cp9V,KAAKy9V,wBAIb,OAAOC,GAGXiB,aAAc,WACV,IACIjyU,EAAY,IAAMktU,EAClB/tV,EAFO7L,KAEQ6L,QAFR7L,KAIN4+V,iCAEA/yV,EAAQU,GAAG8iU,GAGZxjU,EAAQw5D,KAAK34C,GAAWnI,SAAS,YAFjC1Y,EAAQkqB,KAAKrJ,GAAWnI,SAAS,aAMzCkxB,MAAO,WACH,IAAIxtC,EAAOjI,KACPu9V,EAASt1V,EAAK4D,QAAQkqB,KAAK,cAC3B25I,EAASznK,EAAK4D,QAAQkqB,KAAK,iBAE/B9tB,EAAKk0V,QAAU,GAEfl0V,EAAK02V,eAEL12V,EAAK42V,wBAELtB,EAAOjsU,WAAW6oU,GAClBoD,EAAOpxU,YAAY2tU,GACnBpqL,EAAOvjJ,YAAY8tU,IAGvB4D,sBAAuB,SAASxvS,GAK5B,IAJA,IACIjsD,EADA08V,EAAWn+V,EAAMgpB,GAAGyxU,UAAU2D,gBAE9BpmR,EAAah2E,IAERiH,EAAM,EAAGpC,EAASxH,KAAK6L,QAAQrE,OAAQoC,EAAMpC,EAAQoC,IAC1D+uE,EAAaA,EAAW1rE,IAAIiuV,EAA0Bl7V,KAAK6L,QAAQjC,GAAK0vI,qBAAqB,KAAMjrF,IAGvG,IAAKjsD,KAAQ08V,EACTnmR,EAAaA,EAAW1rE,IAAI6xV,EAAS18V,GAAM48V,OAAOh/V,KAAK6L,QAASwiD,IAGpE,OAAOsqB,GAGXylR,0BAA2B,SAAS9nU,EAAW+3B,GAC3C,IACIjsD,EADA08V,EAAWn+V,EAAMgpB,GAAGyxU,UAAU2D,gBAUlC,IAAK38V,KAPLk0B,EAAU/R,SAASq1U,GACd92U,KAAKniB,EAAMmiB,KAAK,OAAQurC,GAAa,IAErC/3B,EAAUxT,KAAK,OAChBwT,EAAUxT,KAAK,KAAMurC,EAAY,UAGxBywS,EACTA,EAAS18V,GAAM68V,SAAS3oU,EAAW+3B,IAI3C0vS,gBAAiB,SAASt5U,EAAOy6U,GAC7B,IAGIC,EAFAC,EADOp/V,KACckH,QAAQ+iB,SAASi1U,GACtC7wS,EAAY5pC,EAAM3B,KAAK03U,GAS3B,OANK75V,EAAMgpB,GAAG6xU,UAAUnzV,UAAUnB,QAAQ+iB,SAASi1U,KAC9CC,EAAoBx+V,EAAMuI,WAAWk2V,GAAiBA,EAAc36U,GAAS26U,GAGlFA,EAAgBz+V,EAAMuI,WAAWk2V,GAAiBA,EAAc36U,GAAS26U,EAElEz+V,EAAM+P,OAAO+T,EAAM3B,KAAKniB,EAAMmiB,KAAKo8U,EAAU,UAAYz6U,EAAM3B,KAAK,sBAAwBq8U,GAAqBC,GAAiB36U,EAAM3B,KAAK,UAAY,GAC5JurC,EACA5pC,EAAM3B,KAAKo8U,IAAYz6U,EAAM3B,KAAKniB,EAAMmiB,KAAKo8U,MAGrDvB,eAAgB,SAASl5U,GACrB,IACI8Y,EADAS,EAAQh+B,KAAKkH,QAAQ82B,MAGzB,IAAKT,KAAQS,EACT,IAAKA,EAAMT,GAAMhzB,KAAKvK,KAAMykB,GACxB,MAAO,CAAEi5U,OAAO,EAAOnsV,IAAKgsB,GAIpC,MAAO,CAAEmgU,OAAO,IAGpB30S,OAAQ,WACJ,IAEIh7B,EAFA44B,EAAU,GACVoC,EAAS/oD,KAAKm8V,QAGlB,IAAKpuU,KAASg7B,EACVpC,EAAQhlD,KAAKonD,EAAOh7B,IAExB,OAAO44B,GAGXp1B,WAAY,SAASrqB,GACbA,EAAQ80V,mBACRh8V,KAAK6+V,wBAGTl+V,EAAM6H,WAAWxI,KAAKkH,QAASA,GAE/BlH,KAAKgC,UAELhC,KAAKmI,KAAKnI,KAAK6L,QAAS7L,KAAKkH,SAE7BlH,KAAKyxB,WAAWzxB,KAAKkH,UAGzBm4V,eAAgB,WAKZ,IAJA,IACI9B,EADOv9V,KACO6L,QAAQkqB,KADf/1B,KACyBi8V,gBAChCj3U,EAAS,GAEJpb,EAAM,EAAGpC,EAAS+1V,EAAO/1V,OAAQoC,EAAMpC,EAAQoC,IAAO,CAC3D,IAAI6a,EAAQ9hB,EAAE46V,EAAO3zV,IAEjBmxV,EAAat2U,EAAO+1U,MAIsB,IAAtCx1U,EAAOrP,QAAQ8O,EAAM3B,KAAK03U,KACoB,IAA7C/1U,EAAMpY,QAAQ,oBAAoB7E,QACO,IAA1Cid,EAAMpY,QAAQ,iBAAiB7E,SAC3Bwd,EAAOrjB,KAAK8iB,EAAM3B,KAAK03U,IAKvC,OAAOx1U,GAGX05U,2BAA4B,SAASj6U,EAAOg6U,GACxC,IAAI52T,EAAgBlnC,EAAMinC,0BAA0BnjB,GAE/CojB,GAAkB42T,GAIvB99V,EAAMsnC,gBAAgBJ,EA3pBR,mBA2pBwC42T,IAG1DG,+BAAgC,WAK5B,IAJA,IAEIn6U,EAAOg6U,EAFPx2V,EAAOjI,KACPu9V,EAASt1V,EAAK4D,QAAQkqB,KAAK,cAAoBC,UAG1CzuB,EAAI,EAAGA,EAAIg2V,EAAO/1V,OAAQD,GAAK,GACpCkd,EAAQ9hB,EAAE46V,EAAOh2V,KAEPgF,GAAG,WACTkyV,EAAUx2V,EAAK41V,sBAAsBp5U,EAAM3B,KAAK03U,IAC3CvtV,IAAIwX,EAAM4gD,KAAK,IAAMu0R,IACrB92U,KAAK,MAEV7a,EAAKy2V,2BAA2Bj6U,EAAOg6U,KAKnDa,cAAe,WAKX,IAJA,IAAIr3V,EAAOjI,KACPu/V,EAAat3V,EAAKo3V,iBAClBr6U,EAAS,GAEJzd,EAAI,EAAGA,EAAIg4V,EAAW/3V,OAAQD,GAAK,EAAG,CAC3C,IAAInF,EAAOm9V,EAAWh4V,GAElBU,EAAKk0V,QAAQ/5V,IACb4iB,EAAOrjB,KAAK,CACRsjB,MAAO7iB,EACPmuB,QAAStoB,EAAKk0V,QAAQ/5V,KAKlC,OAAO4iB,GAGXw6U,eAAgB,WACZ,IAIIlpU,EAJAruB,EAAOjI,KACPkH,EAAUlH,KAAKkH,QAAQ80V,kBAEvBqC,EADUr+V,KAAK6L,QACO8zC,OAgB1B,OAZIrpB,EADApvB,EAAQovB,UACI3zB,EAAEuE,EAAQovB,WACf+nU,GAAeA,EAAYjyU,SAAS4tU,GAC/BqE,EAEA17V,EAAE,WAAW0uE,aAAappE,EAAK4D,UAGrC0Y,SAAS,CAACy1U,EAAmBE,GAAYrvV,KAAK,MACxDyrB,EAAUxT,KAAK,OAAQ,SAEvBwT,EAAUrN,GAAG,QAAU4nE,EAAI5oF,EAAKw3V,cAAcj2V,KAAKvB,IAE5CquB,GAGXmpU,cAAe,SAAS96V,GACpBA,EAAEwE,iBAEF,IAGI0+B,EAFAu4L,EAAOz9N,EAAEgC,EAAE2C,QACXA,EAFOtH,KAEO6L,QAAQkqB,KAAK,UAAYqqM,EAAKvyN,KAAK,SAAW,MAG3DvG,EAAOE,SAIZqgC,EAAgBlnC,EAAMinC,0BAA0BtgC,KAG5CugC,EAAcz9B,QAAQ,UAI9BqzV,sBAAuB,WACnB,IAGIiC,EAHAz3V,EAAOjI,KACP+7M,EAAU9zM,EAAK+zV,kBACfjzS,EAAS9gD,EAAKq3V,gBAGbvjJ,IACDA,EAAU9zM,EAAK+zV,kBAAoB/zV,EAAKu3V,kBAG5CE,EAAa1E,EAAU/yV,EAAK8zV,iBAAiB,CACzChzS,OAAQA,KAGZgzJ,EAAQjsM,KAAK4vV,GAEb3jJ,EAAQ/zL,YAAY,YAAa+gC,EAAOvhD,SAG5Cq3V,sBAAuB,WACnB,IACI9iJ,EADO/7M,KACQg8V,kBAEdjgJ,GAILA,EAAQx3L,SAAS,eAIzB5jB,EAAMgpB,GAAGqN,OAAOwkU,GA1xBpB,CA2xBG16V,OAAOH,MAAM+G,QACF/G,OAWd,SAAUgC,EAAGC,GACT,IAAIjC,EAAQG,OAAOH,MACfgpB,EAAKhpB,EAAMgpB,GACX+G,EAAS/G,EAAG+G,OACZ3tB,EAASJ,EAAEI,OACXmG,EAAavI,EAAMuI,WACnBvB,EAAgBhF,EAAEgF,cAClB0tB,EAAU1yB,EAAE0yB,QAGZsqU,EAAwB,uFAUxB7iT,EAAS,SACT8iT,EAAY,WACZC,EAAe,CAAC,MAAO,QAAS,SAAU,OAAQ,WAEtD,SAASC,EAAU76U,GAEf,OADAA,EAAiB,MAATA,EAAgBA,EAAQ,IACnBvf,MAAQ/E,EAAM+E,KAAKuf,IAAU,SAmB9C,SAAS86U,EAAiB74V,GACtB,IAII84V,EAGAziU,EAPAtY,GAAS/d,EAAQ4hD,MAAMl6B,QAAU1nB,EAAQ4hD,OAAO5hD,EAAQ+d,OACxDvf,EAAOo6V,EAAU76U,GACjBg7U,EAAah7U,EAAQA,EAAMg7U,WAAa,GACxCp2S,EAAa5kC,EAAQA,EAAM4kC,WAAa,GAExCq2S,EAAWv/V,EAAMmiB,KAAK,QACtBq9U,EAAUx/V,EAAMmiB,KAAK,QAErBA,EAAO,CACH6M,GAAIzoB,EAAQyoB,IAAMzoB,EAAQ+d,MAC1B7iB,KAAM8E,EAAQ+d,MACd84B,MAAO72C,EAAQ62C,MAAQ72C,EAAQ62C,MAAQ72C,EAAQ+d,OAGvD,IAAK+6U,KAAYC,EAAY,CAGzB,GAFA1iU,EAAO0iU,EAAWD,GAEd3qU,EAAQ2qU,EAAUH,IAAiB,EACnC/8U,EAAKo9U,GAAYF,OACd,IAAK92V,EAAWq0B,GAAO,CAC1B,IAAIjqB,EAAU3S,EAAM6S,aAEpB,GAAoB,iBAAT+pB,GAAqBjqB,EAAQlR,KAAKoF,OAAQ,CACjD,IAAI+L,EAAeD,EAAQC,aACvB6sV,EAAa7iU,EAAKrsB,WACjBzO,QA/DT,IA+DwB8Q,EA/DxB,MAiEIuP,EAAKk9U,GAAYI,OAEjBt9U,EAAKk9U,GAAYr4V,EAAc41B,GAAQA,EAAK70B,OAASs3V,EAAWziU,EAIxEza,EAAKniB,EAAMmiB,KAAKk9U,EAAW,SAAWziU,EAAKhN,QAE3CzN,EAAKq1S,aAxEW,MA2EpB,IAAK,IAAIkoC,KAAiBx2S,EACtB/mC,EAAKu9U,GAAiBx2S,EAAWw2S,GASrC,OANIhrU,EAAQ3vB,EAAMm6V,IAAiB,IAC/B/8U,EAAKo9U,GAAYx6V,GAGrBod,EAAKq9U,IAAqB,YAATz6V,EAAqB,WAAa,UAAYwB,EAAQ+d,MAEhEnC,EAGX,SAASw9U,EAAehqU,EAAWxT,GAC/B,IAAI6M,EAAK2G,EAAUxT,KAAK,MAOxB,OALI6M,IACA7M,EAAK6M,GAAKA,EACV2G,EAAUhF,WAAW,OAGlBxO,EA0CX,IAAIy9U,EAAe,CACf,eAAgB,WAAY,gBAAiB,gBAAiB,cAAe,eAAgB,WAAY,YACzG,aAAc,iBAAkB,eAChC,SAAU,kBAAmB,gBAAiB,sBAAsB,cACpE,iBAAkB,aAAc,SAAU,SAAU,SAAU,aAAc,eAC5E,UAAW,WAAY,UAAW,YAAa,sBAG/CC,EAAU,CACV9/H,OAAU,SAASpqM,EAAWpvB,GAC1B,IAAI4b,EAAOi9U,EAAiB74V,GAC5BvE,EAAE,0BAA0BmgB,KAAKA,GAAMqqB,SAAS7W,IAEpD7qB,OAAU,SAAS6qB,EAAWpvB,GAC1B,IAAI4b,EAAOi9U,EAAiB74V,GAC5BvE,EAAE,wBAAwBmgB,KAAKA,GAAMqqB,SAAS7W,GAAWmqU,oBAAoB19V,EAAO,GAAImE,EAAQw5V,cAAe,CAAEhwV,OAAQxJ,EAAQwJ,UACjI/N,EAAE,SAAWhC,EAAMmiB,KAAK,OAAS,KAAO5b,EAAQ+d,MAAQ,sCAAsCkoB,SAAS7W,IAE3GjgB,KAAQ,SAASigB,EAAWpvB,GACxB,IAAI4b,EAAOi9U,EAAiB74V,GACxBwJ,EAASxJ,EAAQwJ,OAEjBA,IACAA,EAAS/P,EAAMuY,eAAexI,IAGlCoS,EAAKniB,EAAMmiB,KAAK,WAAapS,EAE7B/N,EAAE,wBAAwBmgB,KAAKA,GAAMqqB,SAAS7W,GAAWqqU,gBAAgB59V,EAAO,GAAImE,EAAQw5V,cAAe,CAAEhwV,OAAQxJ,EAAQwJ,UAC7H/N,EAAE,SAAWhC,EAAMmiB,KAAK,OAAS,KAAO5b,EAAQ+d,MAAQ,sCAAsCkoB,SAAS7W,IAE3GllB,OAAU,SAASklB,EAAWpvB,GAC1B,IAAI4b,EAAOi9U,EAAiB74V,GAE5BvE,EAAE,wBAAwBmgB,KAAKA,GAAMqqB,SAAS7W,GAAWsqU,aAAa15V,EAAQw5V,gBAElF1yS,QAAW,SAAS13B,EAAWpvB,GAC3B,IAAI4b,EAAOi9U,EAAiB74V,GAG5B25V,EAFcl+V,EAAE,6BAA6BmgB,KAAKA,GAAMg+U,cAAc55V,EAAQw5V,eAAevzT,SAAS7W,GAElEA,EAAWpvB,IAEnD4R,OAAU,SAASwd,EAAWpvB,GAC1B,IAAI4b,EAAOi9U,EAAiB74V,GACxBktB,EAAQzzB,EAAM6R,UAnF1B,SAAsB4hB,GAClB,IAAIxqB,EACApC,EACAwnC,EACAtmC,EACAk4B,EACArqB,EAEJ,GAAI6d,GAASA,EAAM5sB,OAEf,IADA+O,EAAS,GACJ3M,EAAM,EAAGpC,EAAS4sB,EAAM5sB,OAAQoC,EAAMpC,EAAQoC,IAE/Cg3B,GADAoO,EAAO5a,EAAMxqB,IACDg3B,MAAQoO,EAAKtmC,OAASsmC,EAClCtmC,EAAsB,MAAdsmC,EAAKtmC,MAAiBsmC,EAAKpO,MAAQoO,EAAQA,EAAKtmC,MAExD6N,EAAO3M,GAAO,CAAEg3B,KAAMA,EAAMl4B,MAAOA,GAG3C,OAAO6N,EAiEyBwqV,CAAa75V,EAAQ4R,SACjDnW,EAAE,WACEhC,EAAMmiB,KAAK,cAAgB,UAC3BniB,EAAMmiB,KAAK,eAAiB,WAC5BniB,EAAMmiB,KAAK,UAAY,MAASsR,EAAQA,EAAM3xB,QAAQ,MAAM,UAAY2xB,GAAS,IACjFzzB,EAAMmiB,KAAK,QAAU,KAAO5b,EAAQw5V,cAAcjxV,KAAO,IACzD9O,EAAMmiB,KAAK,QAAU,qBACpBA,KAAKA,GAAMqqB,SAAS7W,GACzB3zB,EAAE,SAAWhC,EAAMmiB,KAAK,OAAS,KAAO5b,EAAQ+d,MAAQ,uCAAuCkoB,SAAS7W,IAE5G0qU,YAAe,SAAS1qU,EAAWpvB,GAC/B,IAAI4b,EAAOi9U,EAAiB74V,GACxBxB,EAAOwB,EAAQ+5V,OACfA,EAAS,QAAUv7V,EACnBg7V,EAAgBx5V,EAAQw5V,cACxBQ,EA7EZ,SAAsBx7V,EAAMwB,GAGxB,GAAKxB,EAAK8B,OAYV,MAVc,iBAAT9B,GAA2BwB,GAAWA,EAAQi6V,YAAwB,gBAATz7V,EACxD,aACU,eAATA,GAAkC,kBAATA,EAC1B,SACU,cAATA,EACD,cAES,WAATA,GAA8B,aAATA,EAAsB,eAAiB,YAiEjD07V,CAAa17V,EAAMg7V,GAOpCG,EALcl+V,EAAEu+V,GACXp+U,KAAKA,GACLqqB,SAAS7W,GACT2qU,GAAQP,GAEuBpqU,EAAWpvB,KAInDm6V,EAAgB,CAChB51V,OAAU,SAAS6qB,EAAWpvB,GAC1B,IAAI4b,EAAOi9U,EAAiB74V,GAC5B4b,EAAOw9U,EAAehqU,EAAWxT,GAEjCngB,EAAE,0BAA0BmgB,KAAKA,GAAMqqB,SAAS7W,IAEpDjgB,KAAQ,SAASigB,EAAWpvB,GACxB,IAAI4b,EAAOi9U,EAAiB74V,GAC5B4b,EAAOw9U,EAAehqU,EAAWxT,GAEjCngB,EAAE,wBAAwBmgB,KAAKA,GAAMqqB,SAAS7W,IAElDllB,OAAU,SAASklB,EAAWpvB,GAC1B,IAAI4b,EAAOi9U,EAAiB74V,GAC5B4b,EAAOw9U,EAAehqU,EAAWxT,GAEjCngB,EAAE,yBAAyBmgB,KAAKA,GAAMqqB,SAAS7W,IAEnD03B,QAAW,SAAS13B,EAAWpvB,GAC3B,IAAI4b,EAAOi9U,EAAiB74V,GAC5B4b,EAAOw9U,EAAehqU,EAAWxT,GAEjCngB,EAAE,6BAA6BmgB,KAAKA,GAAMqqB,SAAS7W,IAEvDxd,OAAU,SAASwd,EAAWpvB,GAC1B,IAAI4b,EAAOi9U,EAAiB74V,GACxBktB,EAAQltB,EAAQ4R,OAChBstB,EAASzjC,EAAE,cAIf,IAAK,IAAIoW,KAFT+J,EAAOw9U,EAAehqU,EAAWxT,GAEfsR,EACdzxB,EAAE,kBAAoByxB,EAAMrb,GAAOrQ,MAAQ,KAAO0rB,EAAMrb,GAAO6nB,KAAO,aAAauM,SAAS/G,GAGhGA,EAAOtjB,KAAKA,GAAMqqB,SAAS7W,KAInC,SAASgrU,EAAmBC,EAAYvjU,GACpC,IACIT,EACA2yB,EAFA+vS,EAAasB,GAAcA,EAAWtB,YAAoB,GAI9D,IAAK1iU,KAAQ0iU,EACT/vS,EAAa+vS,EAAW1iU,GAEpB51B,EAAcuoD,IAAeA,EAAWxnD,QACxCwnD,EAAaA,EAAWxnD,OAGxBQ,EAAWgnD,KACXlyB,EAAMT,GAAQ2yB,GAK1B,SAAS2wS,EAA2BhtM,EAAKv9H,EAAWrR,IAChCA,GAASA,EAAMu8U,qBAA+B,KAG1D3tM,EAAI3kI,KAAI,GACRoH,EAAUyjB,OAAOp3C,EAAE,8BAAgCsiB,EAAMA,MAAQ,8DAIzE,IAAIw8U,EAAW/wU,EAAO3tB,OAAO,CACzBoF,KAAM,SAAS0D,EAAS3E,GACpB,IAAIe,EAAOjI,KAEPkH,EAAQI,SACRJ,EAAQozE,SAAWpzE,EAAQI,OAAOJ,QAAQozE,SAEtCpzE,EAAQI,OAAOqmF,OACf1lF,EAAKy5V,WAAY,IAGzBhxU,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GACnCe,EAAK05V,eAAiB15V,EAAK25V,UAAUp4V,KAAKvB,GAC1CA,EAAK2V,WAGTvT,OAAQ,CAACyyC,GAET51C,QAAS,CACL9E,KAAM,WACNo+V,QAASA,EACTa,cAAeA,EACfQ,gBAAgB,EAChBzE,gBAAgB,EAChBpB,mBAAmB,EACnBF,cA1SY,SAAU7sU,GACvB,IAAIsB,EAAUtB,EAAIsB,QAElB,MAAO,8DACN5vB,EAAMgpB,GAAG2tE,KAAK,CAAEA,KAAM,qBAAsBF,UAAW,mBACvD,mCAAuC7mE,EAFjC,4DAwSNuxU,WAAW,EACXryV,KAAM,UAGVwxV,OAAQ,SAASh8U,EAAOs8U,GACpB,IAYIj+S,EAZAr7C,EAAOjI,KACPwgW,EAAUv4V,EAAKy5V,UAAYL,EAAgBp5V,EAAKf,QAAQs5V,QACxDrhM,EAAWx3J,EAAcsd,GACzBopC,EAAY8wG,EAAWl6I,EAAMA,MAAQA,EACrC6jC,EAAQ7gD,EAAKf,QAAQ4hD,OAAS,GAE9BpjD,EADiBy5J,GAAYl6I,EAAMnM,OACX,SAAWgnV,EAAUyB,GAC7CQ,EAAW5iM,GAAoC,iBAAjBl6I,EAAMg8U,QAAwC,WAAjBh8U,EAAMg8U,OACjEe,EAAiB7iM,IAAa4iM,GAAY98U,EAAMg8U,OAChDgB,EAAgB9iM,IAAuD,IAA3Cx8J,EAAE0yB,QAAQpQ,EAAMg8U,OAAQV,GACpDU,EAASe,EAAiB/8U,EAAMg8U,OAAST,EAAQuB,EAAW,SAAWr8V,GACvE4wB,EAAYruB,EAAK4D,QAAQkqB,KAAK,IAAMp1B,EAAMmiB,KAAK,iBAAmB,IAAMurC,EAAU5rD,QAAQk9V,EAAuB,QAAU,KAG/HsB,EAASA,GAAkBT,EAAQpvV,OAE/B6wV,EACAhB,EAAST,EAAQQ,YACVgB,GAA0C,iBAAjB/8U,EAAMg8U,SACtCA,EAAS,SAAS3qU,GACdA,EAAUyjB,OAAO90B,EAAMg8U,UAI1B9hM,GAQIl6I,EAAMy7U,gBACPz7U,EAAMy7U,cAAgB,IAG1Bz7U,EAAMy7U,cAAgB39V,EAAO,GAAI,CAAE0M,KAAMxH,EAAKf,QAAQuI,MAAQwV,EAAMy7U,eACpEp9S,EAAKr+B,GAZLq+B,EAAK,CACDr+B,MAAOopC,EACPqyS,cAAe,CACXjxV,KAAMxH,EAAKf,QAAQuI,OAa/BwxV,EADA3qU,EAAYA,EAAU9uB,OAAS8uB,EAAYruB,EAAK4D,QAC9B9I,GAAO,EAAM,GAAIugD,EAAI,CAAEwF,MAAOA,MAGpD84S,UAAW,SAASj9V,GAChB,IACI8f,EADAxc,EAAOjI,KAEP0I,EAAQ/D,EAAE+D,MACVw5V,EAAuBj6V,EAAKk6V,2BAC5BrpV,EAAS,GACTspV,EAAgBzhW,EAAMmiB,KAAK,QAC3BurC,EAAY1pD,EAAEsgB,MAAMxiB,QAAQk9V,EAAuB,QACnD0C,EAAe,IAAIp0V,OAAO,2BAA6BogD,EAAY,aAEvEv1C,EAAOnU,EAAEsgB,OAAStgB,EAAE+D,OAEpB+b,EAAQ9hB,EAAE,UAAYy/V,EAAgB,MAAQ/zS,EAAY,KAAMpmD,EAAK4D,SAChEoqB,OAAO,IAAMt1B,EAAMmiB,KAAK,YAAc,cAAcmT,QAAO,WACzD,OAAOosU,EAAat1V,KAAKpK,EAAE3C,MAAM8iB,KAAKs/U,QAEnC56V,OAAS,IACfid,EAAQA,EAAMwR,QAAO,WACjB,IAAIpqB,EAAUlJ,EAAE3C,MAChB,OAAQ6L,EAAQU,GAAG,WAAaV,EAAQqjB,OAASxmB,MAIzD,IACIT,EAAKk6V,4BAA6B,IAE7Bl6V,EAAKq6V,YAAYhF,cAAc74U,KAAYy9U,GAAwBj6V,EAAKmC,QAAQ0yC,EAAQ,CAAEhkC,OAAQA,MACnGnU,EAAEwE,iBAGR,QACElB,EAAKk6V,4BAA6B,IAI1Cx2V,IAAK,WACD,OAAO3L,KAAKsiW,YAAYhkH,YAG5Bt8O,QAAS,WACL,IAAIiG,EAAOjI,KAEXiI,EAAK4oB,QAAQ,WAAW,WACpB,MAAO,CAAEsD,SAAUlsB,EAAK4D,YAG5B6kB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEvBA,EAAKf,QAAQ4hD,MAAM7+C,OAAO,MAAOhC,EAAK05V,gBACtC15V,EAAKf,QAAQ4hD,MAAM7+C,OAAO21V,EAAW33V,EAAK05V,gBAE1ChhW,EAAMsJ,OAAOhC,EAAK4D,SAEd5D,EAAKq6V,aACLr6V,EAAKq6V,YAAYtgW,UAErBrB,EAAMqB,QAAQiG,EAAK4D,SAEnB5D,EAAK4D,QAAQqmB,WAAW,kBAEpBjqB,EAAK4D,QAAQU,GAAG,IAAM5L,EAAMmiB,KAAK,QAAU,eAC3C7a,EAAK4D,QAAQylB,WAAW3wB,EAAMmiB,KAAK,UAI3ClF,QAAS,WACL,IACIhU,EACApC,EAKAyd,EAEAopC,EACAkzS,EACAgB,EAXAt6V,EAAOjI,KAGP4uB,EAAS3mB,EAAKf,QAAQ0nB,QAAU,GAChC0H,EAAYruB,EAAKyxC,WAAazxC,EAAKf,QAAQ26V,eAAiB55V,EAAK4D,QAAQ0gD,QAAUtkD,EAAK4D,QACxFi9C,EAAQ7gD,EAAKf,QAAQ4hD,OAAS,GAC9B9qB,EAAQ,GAWZ,IAJK96B,MAAMD,QAAQ2rB,KACfA,EAAS,CAACA,IAGThlB,EAAM,EAAGpC,EAASonB,EAAOpnB,OAAQoC,EAAMpC,EAAQoC,IAC/Cqb,EAAQ2J,EAAOhlB,GAEfykD,EADW1mD,EAAcsd,GACFA,EAAMA,MAAQA,EAGrCq8U,EAFAC,GAAcz4S,EAAMl6B,QAAUk6B,GAAOuF,GAENrwB,GAE/B/1B,EAAKg5V,OAAOh8U,EAAOs8U,GAYxB,GATIt5V,EAAKf,QAAQI,QACbW,EAAK4oB,QAAQ,WAAW,WACpB,MAAO,CACHsD,SAAUmC,EACVzoB,KAAMyoB,EAAUhc,KAAI,WAAa,MAAO,CAAE+Z,SAAUy0B,WAK3DthD,EAED,IAAK6mD,KADLk0S,EAAcz5S,EAAMl6B,QAAUk6B,EAE1Bw4S,EAAmBiB,EAAYl0S,GAAYrwB,IApb3D,SAA+B1H,GAC3BA,EAAUP,KAAK,oGAAsGp1B,EAAMmiB,KAAK,QAAU,eAAiBniB,EAAMmiB,KAAK,QAAU,cAAgBniB,EAAMmiB,KAAK,QAAU,qBAAuBniB,EAAMmiB,KAAK,QAAU,gBAAgB9f,MAAK,WAClR,IAAIw/V,EAAW7hW,EAAMmiB,KAAK,QACtBisD,EAAU/uE,KAAK+0B,aAAaytU,IAAa,GACzCpzR,EAA4B,aAAdpvE,KAAK0F,MAAqC,UAAd1F,KAAK0F,KAAmB,WAAa,SAC/E+8V,EAAqBziW,KAAK+0B,aAAa,UAAY0sU,EAASiB,qBAC5Dr0S,EAAYruD,KAAK6pD,WAAWznD,MAAQpC,KAAK6pD,WAAWznD,KAAKsG,OAEvB,IAAlCqmE,EAAQp5D,QAAQy5D,IAAuB/gB,IAAco0S,IACrD1zR,IAAYA,EAAQvnE,OAAS,IAAM,IAAM4nE,EAAc/gB,EAEvD1rD,EAAE3C,MAAM8iB,KAAK0/U,EAAUzzR,OA6a3B4zR,CAAsBrsU,GAElBruB,EAAKq6V,aACLr6V,EAAKq6V,YAAYtgW,UAGrBrB,EAAM6I,KAAK8sB,EAAWruB,EAAKf,QAAQ4hD,OAE/B7gD,EAAKf,QAAQk2V,iBACbn1V,EAAKf,QAAQ4hD,MACR7+C,OAAO,MAAOhC,EAAK05V,gBACnBn4V,KAAK,MAAOvB,EAAK05V,gBAEtB15V,EAAKf,QAAQ4hD,MACR7+C,OAAO21V,EAAW33V,EAAK05V,gBACvBn4V,KAAKo2V,EAAW33V,EAAK05V,iBAG9B15V,EAAKq6V,YAAc,IAAI3hW,EAAMgpB,GAAG6xU,UAAUllU,EAAW,CACjD8mU,eAAgBn1V,EAAKf,QAAQk2V,eAC7BpB,kBAAmB/zV,EAAKf,QAAQ80V,kBAChCF,cAAe7zV,EAAKf,QAAQ40V,eA1e5C,UA2egB99T,MAAOA,IAEF/1B,EAAKf,QAAQ46V,YACd75V,EAAK26V,cAAgB7pU,YAAW,WAC5B9wB,EAAK46V,iBACN,KAIfA,aAAc,WACE7iW,KAEN05C,WAAW3jB,KAAK,mBAAmB+B,GAAG,GAAG1tB,QAAQ,YAIhEq3V,EAASiB,qBAAuB,6BAEhC/4U,EAAGqN,OAAOyqU,GA7fb,CA8fG3gW,OAAOH,MAAM+G,QACF/G,OAgBV,SAAUgC,EAAGC,GACT,IAYI8xS,EAZA/zS,EAAQG,OAAOH,MACf+vB,EAAS/vB,EAAMgpB,GAAG+G,OAClBykE,EAAax0F,EAAMgpB,GAAGmnE,MAAMqE,WAC5BrN,EAAYnnF,EAAMgpB,GAAGm+D,UACrBngF,EAAgBhF,EAAEgF,cAClByR,EAAgBzY,EAAMwY,eACtBpN,EAAapL,EAAMqL,YACnBC,EAActL,EAAMuL,aACpBnJ,EAASJ,EAAEI,OACXC,EAAOL,EAAEK,KACT6M,EAAWlP,EAAMkP,SACjBugF,EAAO,OAEPS,EAAK,eACLiyQ,EAAW,oBAEXC,EAAU,YACVC,EAAe,kBACfC,EAAkBD,EAAe,MACjCE,EAAiB,oBAEjBC,EAAuB,mBACvBC,EAAW,aACXC,EAAmB,qBACnBphP,EAAgB,kBAChBqhP,EAAmB,cACnBC,EAAc,UACdC,EAAgB,UAChBC,EAAiB,qBACjBC,EAAc,wBAEdC,EAAU,WACVryT,EAAS,SACTsyT,EAAS,SAETh0Q,EAAO,OACPG,EAAW,WACXD,EAAa,aACbD,EAAQ,QACRg0Q,EAAU,UAGVC,EAAc,cAEdC,EAAY,YACZ7gR,EAAY,YACZE,EAAU,UACV4gR,EAAU,UAEVp5S,EAAQ,QACRnZ,EAAW,WACXwyT,EAAsB,yBACtBz1D,EAAS,SACT01D,EAAiC,wLACjCC,EAAwB,wBACxBC,EAA0B,4BAC1BC,EAA6BF,yBAA8BC,EAC3DE,EAA2B,+CAC3BC,EAAsB,sFACtBC,EAAsB,sBACtBC,GAAO,aACPr2U,GAAaztB,EAAMytB,WACnBs2U,GAAO,CACHtkW,MAAO,cACPC,OAAQ,cACRC,MAAO,eAGf,SAAS00H,GAAQ5vH,GACb,YAAoB,IAALA,EAGnB,SAASu/V,GAAM94V,EAAS0B,GACpB,OAAO0L,SAASpN,EAAQe,IAAIW,GAAW,KAAO,EAGlD,SAASq3V,GAAUl8V,EAAOotH,EAAKq0D,GAY3B,OATIzhL,GAASI,MAAMJ,IAAUA,EAAMwI,WAAWyE,QAAQ,MAAQ,EACxCjN,EAEArF,KAAKuV,IACnBvV,KAAK8S,IAAI8C,SAASvQ,EAAO,IAAKyhL,IAASx0B,IAAWw0B,EAAOlxK,SAASkxK,EAAM,KACxEr0D,KAAS6/B,IAAW7/B,EAAM78G,SAAS68G,EAAK,KAOpD,SAAS+uO,KACL,OAAQ7kW,KAAK0F,MAAQ1F,KAAK0F,KAAK4S,cAAc3C,QAAQ,WAAa,EAItE,SAASmvV,GAAYnyT,GAIjB,IAHA,IAAIp8B,EAAS,CAAE6N,IAAKuuB,EAAK+gF,UAAW7nG,KAAM8mB,EAAKoyT,YAC3C54V,EAASwmC,EAAK2hD,aAEXnoF,GAAQ,CACXoK,EAAO6N,KAAOjY,EAAOunH,UACrBn9G,EAAOsV,MAAQ1f,EAAO44V,WAEtB,IAAIC,EAAkBriW,EAAEwJ,GAAQS,IAAI,aAChCq4V,EAAkBtiW,EAAEwJ,GAAQS,IAAI,aAEZ,SAApBq4V,GAAkD,WAApBA,IAC9B1uV,EAAO6N,KAAOjY,EAAOwqB,WAGD,SAApBquU,GAAkD,WAApBA,IAC9BzuV,EAAOsV,MAAQ1f,EAAOygB,YAG1BzgB,EAASA,EAAOmoF,aAGpB,OAAO/9E,EAGX,IAAI2uV,GAASx0U,EAAO3tB,OAAO,CACvBoF,KAAM,SAAS0D,EAAS3E,GACpB,IACIkF,EAEA6gF,EAAYpgF,EAASC,EAErBy5C,EACA4+S,EAEAC,EAEAz1U,EAVA1nB,EAAOjI,KAEP+c,EAAS,GAOTsoV,EAAkBn+V,GAAWA,EAAQo+V,UAAYp+V,EAAQo+V,QAAQ99V,OAGrEkpB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAAS3E,GAEnC4F,GADA5F,EAAUe,EAAKf,SACI4F,SACnBjB,EAAU5D,EAAK4D,QACf06C,EAAUr/C,EAAQq/C,QAClB6+S,EAAeziW,EAAE7B,QAEbukW,IACAn+V,EAAQo+V,QAAU,IAGtBr9V,EAAKklC,SAAWxqC,EAAEuE,EAAQimC,UAE1BllC,EAAKw3S,YAAcv4S,EAAQmgF,UAAUo4N,YAAc98S,EAAEuE,EAAQmgF,UAAUo4N,aAAav1S,QAAU,KAE1Fq8C,IAAY5+C,EAAc4+C,KAC1BA,EAAUr/C,EAAQq/C,QAAU,CAAEl4B,IAAKk4B,IAIvC16C,EAAQkqB,KAAK,UAAUE,OAAO4uU,IAAkB9tU,SAE3ClrB,EAAQM,SAASI,GAAGtE,EAAKklC,WAAcllC,EAAKw3S,aAAgB3yS,EAASsX,MAAQxhB,GAAekK,EAAS+e,OAASjpB,IAC3GiJ,EAAQU,GAAGo3V,IACX5mV,EAASlR,EAAQkR,UACL,IAEZkwE,EAAaphF,EAAQe,IAAI,cACzBC,EAAUhB,EAAQe,IAAI,WAEtBf,EAAQe,IAAI,CAAEqgF,WAAY37C,EAAQzkC,QAAS,KAGvCkQ,EADA3N,SAAS6O,KAAKkX,SAAStpB,EAAQ,IACtBA,EAAQkR,SAER,CAAEqH,IAAK,EAAGyH,KAAM,GAG7BhgB,EAAQe,IAAI,CAAEqgF,WAAYA,EAAYpgF,QAASA,KAG/CC,EAASsX,MAAQxhB,IACjBkK,EAASsX,IAAMrH,EAAOqH,KAEtBtX,EAAS+e,OAASjpB,IAClBkK,EAAS+e,KAAO9O,EAAO8O,OAI1BmpG,GAAQ9tH,EAAQoF,UAAgC,OAApBpF,EAAQoF,UACrCpF,EAAQoF,QAAUT,EAAQU,GAAGo3V,IAGjCv3V,EAAUnE,EAAKmE,QAAUP,EAAQQ,QAAQ02V,GAErC77V,EAAQ0sB,YAAqC,SAAvB1sB,EAAQ0sB,YAC9BxnB,EAAQmY,SAAS5jB,EAAM0qC,iBAAiB,YAAa,aAAcnkC,EAAQ0sB,aAG1E/nB,EAAQU,GAAG,sBAAyBH,EAAQ,KAC7CP,EAAQ0Y,SAAS,oBACjB1Y,EAAQiX,KAAK,WAAY,GACzB7a,EAAKs9V,cAAc15V,EAAS3E,GAC5BkF,EAAUnE,EAAKmE,QAAUP,EAAQQ,QAAQ02V,GAEzC96V,EAAK81C,MAAM91C,EAAKf,QAAQ62C,OACxB91C,EAAKu9V,cAEDt+V,EAAQu+V,iBACRx9V,EAAKmE,QAAQ2tC,OAAOp5C,EAAMkP,SAAS3I,EAAQu+V,gBAAvB9kW,CAAwCuG,EAAQw+V,mBAI5Ez9V,EAAK09V,OAAS19V,EAAK29V,SAAWjwM,IAC9B1tJ,EAAK49V,OAAS59V,EAAK69V,QAAUnwM,IAC7B1tJ,EAAKyqF,YAEDnsC,GACAt+C,EAAK2V,QAAQ2oC,GAGbr/C,EAAQoF,SACRrE,EAAK23Q,QAAQ,MAAO14Q,EAAQ8qF,OAGhCmzQ,EAAgB/4V,EAAQ+oC,SAAS+tT,GAE7Bh8V,EAAQoF,SAAWpF,EAAQ8qF,OAC3B/pF,EAAK89V,SAAS35V,EAAQG,GAAGo3V,IAAU/2V,IAAI,CAAEgqB,QAAS,KAGtDxqB,EACK6c,GAAG,aAAe4nE,EAAIyzQ,EAA0Br8V,EAAK+9V,aAAax8V,KAAKvB,IACvEghB,GAAG,aAAe4nE,EAAIyzQ,EAA0Br8V,EAAKg+V,aAAaz8V,KAAKvB,IACvEghB,GAAG,QAAU4nE,EAAI,KAAOyzQ,EAA0Br8V,EAAKi+V,qBAAqB18V,KAAKvB,IACjFghB,GAAG,UAAY4nE,EAAI5oF,EAAMA,EAAKi7G,SAAS15G,KAAKvB,IAC5CghB,GAAG,QAAU4nE,EAAI5oF,EAAK2tF,OAAOpsF,KAAKvB,IAClCghB,GAAG,OAAS4nE,EAAI5oF,EAAKg9G,MAAMz7G,KAAKvB,IAErCk9V,EACKl8U,GAAG,UAAY4nE,EAAI5oF,EAAMA,EAAKk+V,gBAAgB38V,KAAKvB,IAE1Ck9V,EAAcpvU,KAAK,IAAMksF,GAAe,KAElCmjP,EAAav3V,KAAK22V,KAElCY,EAAan8U,GAAG,OAAS4nE,GAAI,WACzB,IAAIhlF,EAAUlJ,EAAEyM,SAASgK,eAAejN,OAAO+2V,GAC3Cr3V,EAAQrE,QACa7G,EAAMy1B,eAAevqB,GAC3B+pF,YAIvBwvQ,EAAan8U,GAAG,QAAU4nE,GAAI,WAC1BluF,EAAEugW,GAAgBpjD,IAtOb,qBAsOiC98S,MAAK,SAASuE,EAAGsE,GACnDlL,EAAMy1B,eAAezzB,EAAEkJ,IAAUo5G,cAIzCmgP,EAAav3V,KAAK22V,GAAqB,IAG3CxkW,KAAKquR,aAELruR,KAAKomW,aAEDl/V,EAAQm/V,QAAUrmW,KAAKoM,QAAQG,GAAG,aAClCtE,EAAKq+V,OAGT32U,EAAK9jB,EAAQiX,KAAK,SAEd6M,GAAU,aACVvjB,EAAQ0W,KAAK,CACLgN,KAAQ,SACR,kBAAmBH,IACpBwlB,SAAS8tT,GACX9tT,SAAS6tT,GACTlgV,KAAK,KAAM6M,IAGpBvjB,EAAQa,IAAIb,EAAQ+oC,SAAS,oBAAsB8tT,IAC9Ch6U,GAAGtoB,EAAM4C,QAAQ2lB,UAAY2nE,EAAI5oF,EAAK23Q,QAAQp2Q,KAAKvB,IAExDA,EAAKuwB,cAAgB73B,EAAM63B,cAAc3sB,GAEzC5D,EAAK84N,eAAiB94N,EAAKs+V,kBAAkB/8V,KAAKvB,GAElDA,EAAKs2S,QAAU59S,EAAM8uB,OAAOzkB,UAAU,EAAG,GAEzCrI,EAAE7B,QAAQmoB,GAAG,SAAW4nE,EAAK5oF,EAAKs2S,QAASt2S,EAAK84N,gBAE5C75N,EAAQoF,UACRrE,EAAKmC,QAAQwlF,GACb3nF,EAAKmC,QAAQ2lF,IAGjBpvF,EAAM6zB,OAAOvsB,GAETjI,KAAKkH,QAAQ8qF,QACbhyF,KAAKguT,YAAc,IAAI74N,EAAW/oF,GAClCpM,KAAKguT,YAAY54N,OACjBp1F,KAAKguT,YAAYz4N,WAAa,WAC1B,OAAOnpF,EAAQyB,KAAK,cAKhCm4V,aAAc,SAASrhW,GACnBhC,EAAEgC,EAAEg5E,eAAep5D,SAASg/U,IAGhC0C,aAAc,SAASthW,GACnBhC,EAAEgC,EAAEg5E,eAAexxD,YAAYo3U,IAGnC3tQ,OAAQ,WACJ51F,KAAKoM,QAAQmY,SAASi/U,IAG1Bv+O,MAAO,WACHjlH,KAAKoM,QAAQ+f,YAAYq3U,IAG7BgC,YAAa,WACT,IAAIp5V,EAAUpM,KAAKoM,QACflF,EAAUlH,KAAKkH,QACf8F,EAAQ9F,EAAQ8F,MAChBL,EAASzF,EAAQyF,OACjB8qS,EAAYvwS,EAAQuwS,UACpB+uD,EAAYt/V,EAAQuI,KACpBuiB,EAAa,CAAC,WAAW,YAAY,WAAW,aAChDy0U,EAAgD,eAA7Br6V,EAAQQ,IAAI,cAE/B85V,EAAgBD,EAAmB9B,GAAMv4V,EAAS,qBAAuBu4V,GAAMv4V,EAAS,sBAAwB,EAChHu6V,EAAgBF,EAAmB9B,GAAMv4V,EAAS,oBAAsBu4V,GAAMv4V,EAAS,uBAAyB,EAChH0rH,EAAa2uO,EAAmB9B,GAAMv4V,EAAS,eAAiB,EAEhEpM,KAAKy/S,cAAgBz/S,KAAK4mW,YAC1B5mW,KAAK6mW,oBACL3/V,EAAQuwS,UAAYp0S,KAAK8S,IAAInW,KAAKy/S,YAAY9yS,QAAUg6V,EAAgB7uO,GAAa2/K,GACrFvwS,EAAQgsR,SAAW7vR,KAAK8S,IAAInW,KAAKy/S,YAAYzyS,MAAQ05V,EAAex/V,EAAQgsR,WAGhF,IAAK,IAAI3rR,EAAI,EAAGA,EAAIyqB,EAAWxqB,OAAQD,IAAK,CACxC,IAAImB,EAAQxB,EAAQ8qB,EAAWzqB,KAAO,GAClCmB,GAASitJ,KACTvpJ,EAAQQ,IAAIolB,EAAWzqB,GAAImB,GAI/B+uS,GAAa9hJ,KACb31J,KAAK6L,QAAQe,IAAI,YAAa6qS,GAG9BzqS,EACAZ,EAAQL,WAAW64V,GAAU53V,EAAO9F,EAAQokN,SAAUpkN,EAAQgsR,WAG9D9mR,EAAQL,WAAW,IAGnBY,EACAP,EAAQH,YAAY24V,GAAUj4V,EAAQzF,EAAQwyO,UAAWxyO,EAAQuwS,YAGjErrS,EAAQH,YAAY,IAGnB/E,EAAQoF,SACTF,EAAQ+f,YAAYu3U,GAAav2V,OAGjCq5V,GAAa9B,GAAK8B,IAClBp6V,EAAQmY,SAASmgV,GAAK8B,KAI9B9zQ,UAAW,WACP,IAEIo0Q,EAAgBC,EAFhB36V,EAAUpM,KAAKoM,QACfU,EAAW9M,KAAKkH,QAAQ4F,SAG5B9M,KAAK6mW,oBAED7mW,KAAKy/S,cACL3yS,EAASsX,IAAMtX,EAASsX,KAAO,EAC/BtX,EAAS+e,KAAO/e,EAAS+e,MAAQ,EAEjCi7U,EAAiBh6V,EAASsX,IAAIlT,WAAWyE,QAAQ,KAAO,EACpDsD,SAASjZ,KAAKy/S,YAAY9yS,QAAU5D,WAAW+D,EAASsX,KAAO,KAAM,IACrEtX,EAASsX,IAEb2iV,EAAkBj6V,EAAS+e,KAAK3a,WAAWyE,QAAQ,KAAO,EACtDsD,SAASjZ,KAAKy/S,YAAYzyS,OAASjE,WAAW+D,EAAS+e,MAAQ,KAAM,IACrE/e,EAAS+e,KAEb/e,EAASsX,IAAMwgV,GAAUkC,EAAgB9mW,KAAK2lW,OAAQ3lW,KAAK6lW,QAC3D/4V,EAAS+e,KAAO+4U,GAAUmC,EAAiB/mW,KAAK4lW,QAAS5lW,KAAK8lW,UAG9Dh5V,EAASsX,KAAOtX,EAASsX,IAAIlT,WAAWyE,QAAQ,MAAQ,IACxD7I,EAASsX,IAAM9R,OAAOxF,EAASsX,IAAI3hB,QAAQ,KAAM,MAGjDqK,EAAS+e,MAAQ/e,EAAS+e,KAAK3a,WAAWyE,QAAQ,MAAQ,IAC1D7I,EAAS+e,KAAOvZ,OAAOxF,EAAS+e,KAAKppB,QAAQ,KAAM,MAGlC,IAAjBqK,EAASsX,MACTtX,EAASsX,IAAMtX,EAASsX,IAAIlT,YAGV,IAAlBpE,EAAS+e,OACT/e,EAAS+e,KAAO/e,EAAS+e,KAAK3a,YAGlC9E,EAAQQ,IAAI,CACRwX,IAAKtX,EAASsX,KAAO,GACrByH,KAAM/e,EAAS+e,MAAQ,MAI/Bg7U,kBAAmB,WACf,IAAIpnD,EAAcz/S,KAAKy/S,YAEvB,IAAKA,EACD,OAAO,KAGXA,EAAYzyS,MAAQyyS,EAAYhgS,aAChCggS,EAAY9yS,OAAS8yS,EAAY7/R,cAE7B3G,SAASwmS,EAAYzyS,MAAO,IAAMyyS,EAAY,GAAGt7R,cACjDs7R,EAAYzyS,OAASrM,EAAM4C,QAAQoa,aAGnC1E,SAASwmS,EAAY9yS,OAAQ,IAAM8yS,EAAY,GAAGv7R,eAClDu7R,EAAY9yS,QAAUhM,EAAM4C,QAAQoa,aAGxC8hS,EAAY3yS,SAAWg4V,GAAYrlD,EAAY,IAE3Cz/S,KAAK4mW,WACL5mW,KAAK2lW,OAAS3lW,KAAK4lW,SAAWjwM,IAC9B31J,KAAK6lW,OAAS7lW,KAAK8lW,QAAUnwM,MAE7B31J,KAAK2lW,OAASlmD,EAAY9oR,YAC1B32B,KAAK4lW,QAAUnmD,EAAY7yR,aAC3B5sB,KAAK8lW,QAAU9lW,KAAK4lW,QAAUnmD,EAAYzyS,MAAQjB,EAAW/L,KAAKoM,SAAS,GAC3EpM,KAAK6lW,OAAS7lW,KAAK2lW,OAASlmD,EAAY9yS,OAASV,EAAYjM,KAAKoM,SAAS,KAInF46V,kBAAmB,SAASr3U,GACxB,IAAI2hE,EAAYtxF,KAAKkH,QAAQoqF,UAM7B,OAAOA,GAAaA,EAAU3hE,IALT,CACjB4hE,KAAM,CAAE/qE,QAAS,IACjB8+B,MAAO,CAAEn4C,MAAM,EAAMqZ,QAAS,KAGkBmJ,IAGxDoC,QAAS,WACLpxB,EAAM4oB,OAAOvpB,KAAK6L,QAAQspC,aAG9Bk5O,WAAY,WACR,IAAI+0B,EAAYpjT,KAAKkH,QAAQk8S,UACzBh3S,EAAUpM,KAAKoM,QAEfpM,KAAKinW,WACL76V,EACK6sB,IAAI,WAAa43D,GACjB17C,SAASguT,GAAsBpsU,SAEpC/2B,KAAKinW,SAASjlW,UACdhC,KAAKinW,SAAW,MAGhB7jD,IACAh3S,EAAQ6c,GAAG,WAAa4nE,EAAIoyQ,EAAiB,SAAUt+V,GAC9ChC,EAAEgC,EAAE2C,QAAQ+E,QAAQ,6BAA6B7E,QAClDxH,KAAKknW,sBAEV19V,KAAKxJ,OAERgD,EAAK,sBAAsB4H,MAAM,MAAM,SAASmO,EAAOjP,GACnDsC,EAAQ2tC,OAAO26P,EAAUyyD,aAAar9V,OAG1C9J,KAAKinW,SAAW,IAAIG,GAAepnW,OAGvCoM,EAAU,MAGdg6V,WAAY,WACR,IAAI/+Q,EAAYrnF,KAAKkH,QAAQmgF,UAEzBrnF,KAAKuvR,WACLvvR,KAAKuvR,SAASvtR,UACdhC,KAAKuvR,SAAW,MAEhBloM,IACArnF,KAAKuvR,SAAW,IAAI83E,GAAernW,KAAMqnF,EAAUigR,YAAcrE,EAAiB57Q,EAAU3E,kBAIpG6kR,SAAU,WACN,IAWIjwQ,EAXApwF,EAAUlH,KAAKkH,QACfo+V,EAAUp+V,EAAQo+V,QAClBe,EAASn/V,EAAQm/V,OAEjB/vU,EADWt2B,KAAKoM,QAAQ+oC,SAAS8tT,GACZltU,KAAK,8BAC1ByxU,EAAyB,CAAE,WAAY,YACvCC,EAAQ,CACRC,SAAY,SACZ9pV,QAAW,kBACXq+S,OAAU,QAIdqpC,EAAU3iW,EAAE2X,IAAIgrV,GAAS,SAASt4T,GAG9B,OAFAA,EAASq5T,GAAmC,QAAzBr5T,EAAO10B,cAA0B,QAAU00B,EAC9DsqD,EAAOmwQ,EAAMz6T,EAAO10B,gBAAkB,GAC/B,CAAElW,KAAOolW,EAAuB7xV,QAAQq3B,EAAO10B,gBAAmB,EAAK,UAAY00B,EAASA,EAAQsqD,KAA8B,SAAxBtqD,EAAO10B,cAA2B,IAAMg/E,MAG7JhhE,EAAUxmB,KAAKnP,EAAMiP,OAAO8kS,EAAU1nQ,OAAQs4T,KAGlD/zU,WAAY,SAASrqB,GACjB,IAAIe,EAAOjI,KACPwmW,EAAYv+V,EAAKf,QAAQuI,KACzBq5I,EAAM9oJ,KAAKy/S,cAAgBx3S,EAAK2+V,UAAY5mW,KAAKy/S,YAAc98S,EAAEyM,UAEjEu4V,EAAgBrkW,KAAK0xB,MAAM1xB,KAAKkP,UAAUtL,IAE9Ce,EAAKmE,QAAQ+f,YAAYxrB,EAAM0qC,iBAAiB,YAAa,aAAcpjC,EAAKf,QAAQ0sB,aAExF7wB,EAAOmE,EAAQ4F,SAAU7E,EAAKf,QAAQ4F,UACtC/J,EAAOmE,EAAQ4F,SAAU66V,EAAc76V,UAEvC7E,EAAK2/V,oBAAsB9+M,EAAInyH,YAC/B1uB,EAAK4/V,qBAAuB/+M,EAAIl8H,aAEhC8D,EAAO3oB,GAAGwpB,WAAWhnB,KAAKtC,EAAMf,GAChC,IAAI++Q,GAAyC,IAA5Bh+Q,EAAKf,QAAQ++Q,WAoB9B,GAlBAh+Q,EAAK+sC,eAEwB,IAAlB9tC,EAAQ62C,OACf91C,EAAK81C,MAAM72C,EAAQ62C,OAGvB91C,EAAKmE,QAAQ+f,YAAYu4U,GAAK8B,IAC9Bv+V,EAAKu9V,cAELv9V,EAAKyqF,YACLzqF,EAAKomR,aACLpmR,EAAKm+V,aACLn+V,EAAKs/V,WAEDt/V,EAAKf,QAAQ0sB,YAA0C,SAA5B3rB,EAAKf,QAAQ0sB,YACxC3rB,EAAKmE,QAAQmY,SAAS5jB,EAAM0qC,iBAAiB,YAAa,aAAcpjC,EAAKf,QAAQ0sB,kBAG5D,IAAlB1sB,EAAQ8qF,MAAuB,CACtC,IAAI1lF,GAAmC,IAAzBrE,EAAKf,QAAQoF,QAC3BrE,EAAK6/V,2BACL7/V,EAAK89V,SAAS7+V,EAAQ8qF,OAAS1lF,GAGnCrE,EAAK4D,QAAQe,IAAI6kC,EAAUw0O,EAAa,GAAK,WAGjD57Q,OAAQ,CACJulF,EACAG,EACAD,EACAD,EA1hBO,WACA,WA4hBPg0Q,EACAG,EACAF,EA5hBK,SA8hBLC,EACA7gR,EACAE,EA3hBW,eA6hBXx4B,GAGJ1jD,QAAS,CACL9E,KAAM,SACNkvF,UAAW,CACPC,KAAM,CACF/qE,QAAS,CAAE6pB,KAAM,CAAE4D,UAAW,MAAQ8zT,KAAM,CAAE9zT,UAAW,OACzDvtB,SAAU,KAEd4+B,MAAO,CACH9+B,QAAS,CAAE6pB,KAAM,CAAE4D,UAAW,MAAOhlC,WAAY,CAAE0gC,MAAO,KAASo4T,KAAM,CAAE9zT,UAAW,QACtFvtB,SAAU,IACVvZ,MAAM,IAGd4wC,MAAO,GACPnqB,WAAY,GACZ0xU,QAAS,CAAC,SACV0C,WAAW,EACXh2Q,OAAO,EACPviF,KAAM,OACN2zS,WAAW,EACX/7N,WAAW,EACXikI,SAAU,GACVouB,UAAW,GACXw5C,SAAUv9H,IACV8hJ,UAAW9hJ,IACX0wM,QAAQ,EACRpgF,YAAY,EACZn5Q,SAAU,GACVy5C,QAAS,KACTj6C,QAAS,KACTK,OAAQ,KACRK,MAAO,KACPmgC,SAAU,OACV86T,aAAa,EACbC,aAAa,GAGjBC,UAAW,WACP,OAAOxlW,EAAE0yB,QAAQ,QAAS1yB,EAAE2X,IAAIta,KAAKkH,QAAQo+V,SAAS,SAASlgW,GAAK,OAAOA,EAAEkT,mBAAsB,GAGvG6tV,gBAAiB,SAASxhW,GACtB,IACIulB,EAAOvpB,EAAMupB,KACHvlB,EAAEwiC,SAEDjd,EAAKM,KAJTxqB,KAIqBmoW,cAC5BxjW,EAAEs1B,kBALKj6B,KAMFooW,QAAO,KAIpBllP,SAAU,SAASv+G,GACf,IAKIoY,EAAQo+R,EAIRktD,EAAUC,EAAWruH,EAAGr1O,EATxBqD,EAAOjI,KACPkH,EAAUe,EAAKf,QACfgjB,EAAOvpB,EAAMupB,KACbid,EAAUxiC,EAAEwiC,QACZ/6B,EAAUnE,EAAKmE,QAEfoxE,EAAW,GACXyqR,EAAc/gW,EAAQ+gW,YACtBC,EAAchhW,EAAQghW,YAGtB/gU,GAAWjd,EAAKM,KAAOviB,EAAKkgW,cAC5BxjW,EAAEs1B,kBACFhyB,EAAKmgW,QAAO,IAGZzjW,EAAE2C,QAAU3C,EAAEg5E,eAAiB11E,EAAKmqF,WAKpCztF,EAAEw8M,QAAqB,IAAXh6K,GACZl/B,EAAK2V,UAILjZ,EAAEw8M,QAAqB,IAAXh6K,IACRl/B,EAAKf,QAAQm/V,OACbp+V,EAAKsgW,QAELtgW,EAAKq+V,OAKT3hW,EAAEw8M,QAAUh6K,GAAWjd,EAAKQ,GACxBw9U,GACAjgW,EAAK+sC,UACL/sC,EAAKmE,QAAQhC,QAAQ,UACb69V,IACRhgW,EAAKy/V,WACLz/V,EAAKmE,QAAQhC,QAAQ,UAElBzF,EAAEw8M,QAAUh6K,GAAWjd,EAAKU,OAC9Bs9U,GAAgBD,EAGVA,IACPhgW,EAAK+sC,UACL/sC,EAAKmE,QAAQhC,QAAQ,WAJrBnC,EAAKugW,WACLvgW,EAAKmE,QAAQhC,QAAQ,WAO7B2S,EAASpc,EAAMusB,UAAU9gB,GAErBnE,EAAKw3S,cAAgBx3S,EAAK2+V,YAC1B7pV,EAAS9U,EAAKf,QAAQ4F,WAGtB5F,EAAQmgF,WAAc1iF,EAAE6pF,SAAY7pF,EAAEw8M,QAAW8mJ,IACjDhgW,EAAK4+V,oBACD1/T,GAAWjd,EAAKQ,IAChB3N,EAAOqH,IAAMwgV,GAAU7nV,EAAOqH,IAAMo5D,EAAUv1E,EAAK09V,OAAQ19V,EAAK49V,QAChE1qD,EAAU/uS,EAAQQ,IAAI,MAAOmQ,EAAOqH,MAC7B+iB,GAAWjd,EAAKU,MACvB7N,EAAOqH,IAAMwgV,GAAU7nV,EAAOqH,IAAMo5D,EAAUv1E,EAAK09V,OAAQ19V,EAAK49V,QAChE1qD,EAAU/uS,EAAQQ,IAAI,MAAOmQ,EAAOqH,MAC7B+iB,GAAWjd,EAAKO,MACvB1N,EAAO8O,KAAO+4U,GAAU7nV,EAAO8O,KAAO2xD,EAAUv1E,EAAK29V,QAAS39V,EAAK69V,SACnE3qD,EAAU/uS,EAAQQ,IAAI,OAAQmQ,EAAO8O,OAC9Bsb,GAAWjd,EAAKS,QACvB5N,EAAO8O,KAAO+4U,GAAU7nV,EAAO8O,KAAO2xD,EAAUv1E,EAAK29V,QAAS39V,EAAK69V,SACnE3qD,EAAU/uS,EAAQQ,IAAI,OAAQmQ,EAAO8O,QAIzC3kB,EAAQk8S,WAAaz+S,EAAE6pF,UAAYy5Q,IAAgBC,IAC/C/gU,GAAWjd,EAAKQ,IAChBywR,GAAU,EACVmtD,EAAYl8V,EAAQH,cAAgBuxE,GAC7Br2C,GAAWjd,EAAKU,OACvBuwR,GAAU,EAENmtD,EADArgW,EAAKw3S,cAAgBx3S,EAAK2+V,UACdvjW,KAAK8S,IAAI/J,EAAQH,cAAgBuxE,EACzCv1E,EAAKw3S,YAAY9yS,OAASoQ,EAAOqH,IAAMugV,GAAMv4V,EAAS,eACtDu4V,GAAMv4V,EAAS,qBAAuBu4V,GAAMv4V,EAAS,mBAE7CA,EAAQH,cAAgBuxE,GAEtCr2C,GAAWjd,EAAKO,MAClB0wR,GAAU,EACVktD,EAAWj8V,EAAQL,aAAeyxE,GAC3Br2C,GAAWjd,EAAKS,QACvBwwR,GAAU,EAENktD,EADApgW,EAAKw3S,cAAgBx3S,EAAK2+V,UACfvjW,KAAK8S,IAAI/J,EAAQL,aAAeyxE,EACvBv1E,EAAKw3S,YAAYzyS,MAAQ+P,EAAO8O,KAChC84U,GAAMv4V,EAAS,mBAAqBu4V,GAAMv4V,EAAS,qBAE5DA,EAAQL,aAAeyxE,GAItC29N,IACAlhE,EAAI2qH,GAAUyD,EAAUnhW,EAAQokN,SAAUpkN,EAAQgsR,UAClDtuR,EAAIggW,GAAU0D,EAAWphW,EAAQwyO,UAAWxyO,EAAQuwS,WAE/C3uS,MAAMmxO,KACP7tO,EAAQL,WAAWkuO,GACnBhyO,EAAKf,QAAQ8F,MAAQitO,EAAI,MAExBnxO,MAAMlE,KACPwH,EAAQH,YAAYrH,GACpBqD,EAAKf,QAAQyF,OAAS/H,EAAI,MAG9BqD,EAAKshB,WAIT4xR,GACAx2S,EAAEwE,mBAIV48V,SAAU,SAASz5V,GACf,IAAI46J,EAAUlnK,KAAKy/S,YAAcz/S,KAAKy/S,YAAYtqQ,SAASiuT,GAAYpjW,KAAKmtC,SAASgI,SAASiuT,GAC1Fh3V,EAAUpM,KAAKoM,QACfS,EAAUP,EAAU,cAAgB,OACpCstC,EAAS3gC,SAAS7M,EAAQQ,IAAI4hS,GAAS,IAAM,EAiBjD,OAfKtnI,EAAQ1/J,SACT0/J,EAAUvkK,EAAE,8BAGhBukK,EACK71F,aAAajlE,EAAQ,IACrBQ,IAAI,CACDgtC,OAAQA,EACR/sC,QAASA,IAGb7M,KAAKkH,QAAQ8qF,MAAMy2Q,gBAAkBzoW,KAAKy/S,aAC1Cz/S,KAAK0oW,yBAGFxhM,GAGXyhM,eAAgB,SAASrxQ,GAErB,MAAO,CACHlyF,EAAK,SACLtE,OAAU,WACV,kBAAmB,WACnB,iBAAkB,UAClB,kBAAmB,UACnBwlW,IAAO,MACPiC,MAAS,SARG,wBAAwBlwV,KAAKi/E,EAAK,GAAG5qE,WAAW,GASpDjqB,QAAQ,kBAAmB,MAG3CyjW,qBAAsB,SAASvhW,GAC3B,IAAI3E,KAAKoyF,SAAT,CAGA,IAAIkF,EAAO30F,EAAEgC,EAAE2C,QAAQ+E,QAAQ,6BAA6B0pB,KAAK,uBAC7DiX,EAAShtC,KAAK2oW,eAAerxQ,GAEjC,OAAItqD,GACAroC,EAAEwE,iBACFnJ,KAAKgtC,MACE,QAHX,IAOJ47T,QAAS,WAML,IALA,IAEIC,EAFA5gW,EAAOjI,KACP8oW,EAAiBnmW,EAAEogW,EAAUY,GAE7BoF,EAAS,GAEJxhW,EAAI,EAAGA,EAAIuhW,EAAethW,OAAQD,GAAK,GAC5CshW,EAAiB5gW,EAAK+gW,QAAQrmW,EAAEmmW,EAAevhW,OAG3CshW,EAAe3hW,SACf2hW,EAAe3hW,QAAQ8qF,OACvB62Q,EAAe3hW,QAAQoF,SACvBu8V,EAAe3hW,QAAQimC,WAAallC,EAAKf,QAAQimC,YAC/C07T,EAAeppD,aAAgBx3S,EAAKw3S,aAAeopD,EAAeppD,YAAY,KAAOx3S,EAAKw3S,YAAY,KACpGspD,EAAOpnW,KAAKknW,EAAez8V,QAAQ,IAU/C,OANA28V,EAAO7jV,MAAK,SAAShgB,EAAGigB,GACpB,OAAOjgB,EAAEuH,MAAMmtC,OAASz0B,EAAE1Y,MAAMmtC,UAGpC3xC,EAAO,KAEAtF,EAAEomW,IAGbC,QAAS,SAASn9V,GACd,IAAI06C,EAAU16C,EAAQspC,SAAS+tT,GAC3BpwU,EAASnyB,EAAMy1B,eAAemwB,GAElC,OAAIzzB,GAIGlwB,GAGX26E,OAAQ,WACJ,IAMI0rR,EAAQC,EANRjhW,EAAOjI,KACP8M,EAAW7E,EAAKf,QAAQ4F,SACxBV,EAAUnE,EAAKmE,QACf+8V,EAAiBxmW,EAAE7B,QACnB61B,EAAY,EACZ/J,EAAa,EAGjB,OAAI3kB,EAAKf,QAAQ+gW,cAIbhgW,EAAKf,QAAQm/V,SAAWp+V,EAAK2+V,WAC7B3+V,EAAKq+V,MAGJr+V,EAAKf,QAAQm/V,SACd1vU,EAAYwyU,EAAexyU,YAC3B/J,EAAau8U,EAAev8U,cAG5B5sB,KAAKy/S,cAAgBx3S,EAAKf,QAAQm/V,QAClC4C,EAASjpW,KAAK2lW,QAAU3lW,KAAK6lW,OAAS7lW,KAAK2lW,QAAU,EACrDuD,EAAUlpW,KAAK4lW,SAAW5lW,KAAK8lW,QAAU9lW,KAAK4lW,SAAW,IAEzD39V,EAAKmhW,mBAAoB,EACzBF,EAAUt8U,EAAavpB,KAAKuV,IAAI,GAAIuwV,EAAen8V,QAAUZ,EAAQL,cAAgB,GACrFk9V,EAAStyU,EAAYtzB,KAAKuV,IAAI,GAAIuwV,EAAex8V,SAAWP,EAAQH,cAAgB04V,GAAMv4V,EAAS,eAAiB,IAGxHA,EAAQQ,IAAI,CACRif,KAAMq9U,EACN9kV,IAAK6kV,IAGTn8V,EAASsX,IAAM6kV,EACfn8V,EAAS+e,KAAOq9U,GA3BLjhW,GAgCf81C,MAAO,SAASA,GACZ,IACIr1C,EADAT,EAAOjI,KAEPojO,GAAU,EACVh3N,EAAUnE,EAAKmE,QACfi9V,EAAWj9V,EAAQ+oC,SAAS8tT,GAC5BqG,EAAeD,EAASl0T,SAAS6tT,GAErC,OAAK37V,UAAUG,QAIX7E,EAAEgF,cAAco2C,IAChBr1C,OAA8B,IAAfq1C,EAAMnd,KAAuBmd,EAAMnd,KAAO,GACzDwiM,GAA4B,IAAlBrlL,EAAMqlL,SAEhB16N,EAAQq1C,GAGE,IAAVr1C,GACA0D,EAAQmY,SAAS,sBACjBnY,EAAQQ,IAAI,cAAe,GAC3By8V,EAAStyU,UAEJsyU,EAAS7hW,OAOV8hW,EAAax5V,KAAKszN,EAAUziO,EAAMitB,WAAWllB,GAASA,IANtD0D,EAAQ+gF,QAAQunN,EAAU60D,SAAS,CAC/BxrT,MAAOqlL,EAAUziO,EAAMitB,WAAWllB,GAASA,KAE/CT,EAAKs/V,WACL8B,EAAWj9V,EAAQ+oC,SAAS8tT,IAMpCh7V,EAAKf,QAAQ62C,MAAQr1C,EAEdT,GA5BIqhW,EAAax5V,QA+B5By2C,QAAS,SAASz2C,EAAMjC,GACpB,IAAI04C,EAAUvmD,KAAKoM,QAAQ+oC,SAAS+tT,GAChCsG,EAAkBjjT,EAAQpR,SAAS,wBAIvC,OAFAoR,EAAUijT,EAAgB,GAAKA,EAAkBjjT,EAE5CyuE,GAAQllH,IAIb9P,KAAK6wB,QAAQ,WAAW,WACpB,MAAO,CAAEsD,SAAUoyB,EAAQpR,eAG/Bx0C,EAAMqB,QAAQhC,KAAK6L,QAAQspC,YAE3BoR,EAAQgG,QAAQz8C,KAAKA,GAErB9P,KAAK6wB,QAAQ,WAAW,WAEpB,IADA,IAAI3rB,EAAI,GACCqC,EAAIg/C,EAAQ/+C,SAAUD,GAAK,GAChCrC,EAAEvD,KAAK,CAAE0yB,SAAUxmB,IAEvB,MAAO,CACHsmB,SAAUoyB,EAAQpR,WAClBtnC,KAAM3I,MAIPlF,MAtBIumD,EAAQz2C,QAyBvByhF,KAAM,WACF,IAKI21E,EAASuiM,EALTxhW,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACflF,EAAUe,EAAKf,QACfwiW,EAAc1pW,KAAKgnW,kBAAkB,QACrCxuR,EAAiBpsE,EAAQ+oC,SAAS+tT,GAGlCp6M,EADqB9oJ,KAAKy/S,cAAgBx3S,EAAK2+V,UACpB5mW,KAAKy/S,YAAc98S,EAAEyM,UAEpD,IAAKnH,EAAKmC,QAAQwlF,GAAO,CAerB,GAdI3nF,EAAKmqF,UACLhmF,EAAQqb,WAAU,GAAM,GAG5Bxf,EAAKmqF,UAAW,EAEhBnqF,EAAK23Q,UAED14Q,EAAQ8gW,WACR//V,EAAKmE,QAAQhC,QAAQ,SAGzBlD,EAAQoF,SAAU,EAEdpF,EAAQ8qF,MAAO,CAMf,GALAy3Q,IAAuBxhW,EAAK2gW,UAAUphW,QACtC0/J,EAAUj/J,EAAK89V,SAAS0D,IAEhBhiV,WAAU,GAAM,GAEpBiiV,EAAYhjV,UAAY/lB,EAAM6lB,QAAQmjV,OAASF,EAAoB,CACnE,IAAIG,EAAYjpW,EAAMipB,GAAGs9I,GAAS2iM,SAClCD,EAAUljV,SAASgjV,EAAYhjV,UAAY,GAC3CkjV,EAAU1xT,SAAS,IACnB0xT,EAAU9yT,YAEVowH,EAAQt6J,IAAI,UAAW,IAG3Bs6J,EAAQh6J,OAERvK,EAAE7B,QAAQmoB,GAAG,QAAU65U,GAAU,WACzB12V,EAAQyB,KAAK,aAAelL,EAAEyM,SAASgK,eAAe/M,QAAQD,GAAS5E,QACxES,EAAKmE,QAAQhC,QAAQ,YAK3BgC,EAAQG,GAAGo3V,KACZnrR,EAAe5rE,IAAI6kC,EAAUH,GAE7BrpC,EAAKmE,QAAQ2pB,KAAKuuU,GAA0B//U,SAAS,iBAErDnY,EAAQQ,IAAI,CAAEC,QAAS,gBACvBT,EAAQqb,YAAYI,aAAa,CAC7BrB,QAASkjV,EAAYljV,QACrBE,SAAUgjV,EAAYhjV,SACtBC,SAAU3mB,KAAKu7P,UAAU/xP,KAAKxJ,SAe1C,OAVIkH,EAAQ+gW,cACRhgW,EAAK2/V,oBAAsB9+M,EAAInyH,YAC/B1uB,EAAK4/V,qBAAuB/+M,EAAIl8H,aAChC3kB,EAAKygW,0BAGL1oW,KAAKkH,QAAQm/V,SAAWrmW,KAAK4mW,WAC7B5mW,KAAKsmW,MAGFr+V,GAGXszP,UAAW,WACP,IAAI0qB,GAAyC,IAA5BjmR,KAAKkH,QAAQ++Q,WAE1BjmR,KAAKkH,QAAQ8gW,WACbhoW,KAAKoM,QAAQhC,QAAQ,SAGzBpK,KAAK6L,QAAQe,IAAI6kC,EAAUw0O,EAAa,GAAK,UAC7CtlR,EAAM4oB,OAAOvpB,KAAK6L,QAAQspC,YAE1Bn1C,KAAKoK,QAAQ2lF,IAGjB+5Q,eAAgB,SAASC,GACrB,IAAIhB,EAAS/oW,KAAK4oW,UACd1hW,EAAUlH,KAAKkH,QACf8iW,EAAc9iW,EAAQ8qF,QAAU+2Q,EAAOvhW,OACvCyiW,EAAcjqW,KAAKgnW,kBAAkB,SAEzC,GAAIgD,EAAa,CACb,IAAKD,GAAqBE,EAAYvjV,UAAY/lB,EAAM6lB,QAAQmjV,KAAM,CAClE,IAAIC,EAAYjpW,EAAMipB,GAAG1iB,EAAQ8qF,MAAQhyF,KAAK+lW,UAAS,GAAQpjW,EAAEC,IAAconO,UAC/E4/H,EAAUljV,SAASujV,EAAYvjV,UAAY,GAC3CkjV,EAAU5xT,WAAW,IACrB4xT,EAAU9yT,YAEV92C,KAAK+lW,UAAS,GAAOhvU,SAErB7vB,EAAQ8qF,MAAMy2Q,eACdzoW,KAAK8nW,gCAEFiB,EAAOvhW,SACdxH,KAAKgpW,QAAQD,EAAO5mU,QAAQ4jU,UAAS,GAEjC7+V,EAAQ8qF,MAAMy2Q,eACdzoW,KAAK0oW,2BAKjBN,OAAQ,SAAS8B,GACb,IAOIlf,EAPA/iV,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACflF,EAAUe,EAAKf,QACfwiW,EAAc1pW,KAAKgnW,kBAAkB,QACrCiD,EAAcjqW,KAAKgnW,kBAAkB,SAErCl+M,EADqB9oJ,KAAKy/S,cAAgBx3S,EAAK2+V,UACpB5mW,KAAKy/S,YAAc98S,EAAEyM,UAGhDnH,EAAKmqF,WAIT44P,EAAmB/iV,EAAKmC,QAAQylF,EAAO,CAAEqrO,eAAgBgvC,IACzDjiW,EAAKmqF,UAAY44P,EAEb5+U,EAAQG,GAAGo3V,KAAa3Y,IACxB9jV,EAAQoF,SAAU,EAElB3J,EAAEogW,GAAS//V,MAAK,SAASuE,EAAGsE,GACxB,IAAI2sE,EAAiB71E,EAAEkJ,GAASspC,SAAS+tT,GAGrCr3V,GAAWO,GAAWosE,EAAeziD,KAAK,MAAQksF,GAAez6G,OAAS,GAC1EgxE,EAAerjC,SAASiuT,GAAUrsU,YAI1C/2B,KAAK8pW,iBAGL7hW,EAAKmE,QAAQ2pB,KAAKuuU,GAA0Bn4U,YAAY,iBAExD/f,EAAQqb,YAAYI,aAAa,CAC7BrB,QAASyjV,EAAYzjV,SAAWkjV,EAAYljV,QAC5C1Q,SAAiC,IAAxBm0V,EAAYn0V,QACrB4Q,SAAUujV,EAAYvjV,SACtBC,SAAU3mB,KAAKy7P,YAAYjyP,KAAKxJ,QAEpC2C,EAAE7B,QAAQm4B,IAAI6pU,IAGd76V,EAAKf,QAAQ+gW,cACbhgW,EAAK6/V,2BACD7/V,EAAK2/V,qBAAuB3/V,EAAK2/V,oBAAsB,GACvD9+M,EAAInyH,UAAU1uB,EAAK2/V,qBAEnB3/V,EAAK4/V,sBAAwB5/V,EAAK4/V,qBAAuB,GACzD/+M,EAAIl8H,WAAW3kB,EAAK4/V,uBAIxB5/V,EAAKf,QAAQi+G,QACbl9G,EAAKmE,QAAQhC,QAAQ,UAI7BqxP,YAAa,WACT,IAAIxzP,EAAOjI,KASX,GAPAiI,EAAKmE,QACA+f,YAAYu3U,GACZv2V,OACAP,IAAI,UAAW,IAEpB3E,EAAKmC,QAAQ0lF,GAET7nF,EAAKf,QAAQ8qF,MAAO,CACpB,IAAIm4Q,EAAYliW,EAAK+gW,QAAQ/gW,EAAK2gW,UAAUzmU,QACxCgoU,GACAA,EAAUvqF,YAKtBt6N,MAAO,WAEH,OADAtlD,KAAKooW,QAAO,GACLpoW,MAGXoqW,YAAa,SAASv+V,GAClB,OAAOlJ,EAAEkJ,GAASU,GAAI+3V,EAA2B,wFAGrD+F,aAAc,SAAS/iW,GACnB,IAAIqrM,EAASv5L,IACTvN,EAAU7L,KAAKoM,QAEnB,OAAOpM,KAAKkH,QAAQ8gW,YACfrlW,EAAEgwM,GAAQpmM,GAAGV,KACb7L,KAAKoqW,YAAY9iW,MAChBuE,EAAQkqB,KAAK48K,GAAQnrM,SAAWqE,EAAQkqB,KAAKzuB,GAAQE,SAG/Do4Q,QAAS,SAASj7Q,EAAG2lW,GACjB,IAAIriW,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACfm+V,EAAgBn+V,EAAQ,GACxBo+V,EAAqBviW,EAAKw3S,cAAgBx3S,EAAK2+V,UAC/C6D,EAAgBzqW,KAAKgnW,kBAAkB,QACvCptT,GAAUxtC,EAAQQ,IAAI4hS,GACtBk8D,EAAiB9wT,EACjBtyC,EAAU3C,GAAKA,EAAE2C,QAAW,KA2BhC,GAzBA3E,EAAEogW,GAAS//V,MAAK,SAASuE,EAAGsE,GACxB,IAAI8+V,EAAehoW,EAAEkJ,GACjB++V,EAAYD,EAAa/9V,IAAI4hS,GAC7Bh2N,EAAiBmyR,EAAax1T,SAAS+tT,GAEtCp6V,MAAM8hW,KACPhxT,EAASv2C,KAAKuV,KAAKgyV,EAAWhxT,IAGlCxtC,EAAQyB,KAAK,UAAWhC,GAAW0+V,GAI/B1+V,GAAW0+V,GACX/xR,EAAeziD,KAAK,IAAMksF,GAAez6G,SACxCgxE,EAAeziD,KAAKqtU,GAAU57V,QAC/BgxE,EAAez+B,OAAO26P,EAAUxtI,cAInC96J,EAAQ,GAAGK,MAAMmtC,QAAU8wT,EAAiB9wT,IAC7CxtC,EAAQQ,IAAI4hS,EAAQ50P,EAAS,GAEjC3xC,EAAK4D,QAAQkqB,KAAK,gBAAgBgB,SAE9B9uB,EAAKoiW,aAAa/iW,GAAS,CACtBgjW,GACDvxU,YAAW,WACP9wB,EAAKmE,QAAQw5B,UACd6kU,EAAgBA,EAAc/jV,SAAW,GAGhD,IAAIiQ,EAAY6zU,EAAqBviW,EAAKw3S,YAAY9oR,YAAch0B,EAAE7B,QAAQ61B,YAC1Ek0U,EAAY5xV,SAAS7M,EAAQU,WAAWsX,IAAK,KAE5Cnc,EAAKf,QAAQm/V,QAAUwE,EAAY,GAAKA,EAAYl0U,IACjDA,EAAY,EACZh0B,EAAE7B,QAAQ61B,UAAUk0U,GAEpBz+V,EAAQQ,IAAI,MAAO+pB,IAO/B,OAFAvqB,EAAU,KAEHnE,GAGXi/V,mBAAoB,WAChB,OAAIlnW,KAAKoyF,SACEpyF,KAGJA,KAAKA,KAAKkH,QAAQ+gW,YAAc,UAAY,eAGvDjzT,QAAS,WACL,IAAI/sC,EAAOjI,KACPkH,EAAUe,EAAKf,QACfwyO,EAAYxyO,EAAQwyO,UACpBoxH,EAAiB7iW,EAAK6iW,eAEtBx0U,EAAYruB,EAAKw3S,cAAgBx3S,EAAK2+V,UAAY3+V,EAAKw3S,YAAc98S,EAAEyM,UAE3E,OAAKlI,EAAQ+gW,aAAgB/gW,EAAQghW,aAIjCxuH,GAAaA,GAAa/jF,KAC1B1tJ,EAAKmE,QAAQQ,IAAI,aAAc8sO,GAG/BoxH,IAAmB5jW,EAAQ+gW,cAC3B6C,EAAen+V,OAASi4V,GAAUkG,EAAen+V,OAAQ1E,EAAKf,QAAQwyO,UAAWzxO,EAAKf,QAAQuwS,WAE1EvwS,EAAQ4F,SAASsX,IAAMnL,SAAS6xV,EAAen+V,OAAQ,IAAM1E,EAAK49V,SAGlF3+V,EAAQ4F,SAASsX,IAAMwgV,GAAU19V,EAAQ4F,SAASsX,IAAKnc,EAAK09V,OAAQ19V,EAAK49V,OAAS5sV,SAAS6xV,EAAen+V,OAAQ,KAElH5J,EAAO+nW,EAAgB,CACnBj/U,KAAM3kB,EAAQ4F,SAAS+e,KACvBzH,IAAKld,EAAQ4F,SAASsX,QAKlCnc,EAAKmE,QACAQ,IAAI,CACDE,SAAU5F,EAAQm/V,OAAS,QAAU,WACrCx6U,KAAMi/U,EAAej/U,KACrBzH,IAAK0mV,EAAe1mV,IACpBpX,MAAO89V,EAAe99V,MACtBL,OAAQm+V,EAAen+V,SAE1Bwf,YAAYs3U,GACZt3U,YAAYk3U,GACZttU,KAAK,sCAAsC7oB,OAAOvB,MAClDoqB,KAAK,qFAAqF5pB,SAAS4qB,SAASprB,MAAMA,MAClHoqB,KAAKmuU,GAAgC/3V,SAASe,OAAOvB,MAAMA,MAC3DoqB,KAAKsuU,GAA4Bl4V,SAASe,OAE3ChG,EAAQ+gW,YACRhgW,EAAKmE,QAAQ2pB,KAAK,+BAA+B5pB,SAAS/B,QAAQ,SAC3DlD,EAAQghW,aACfjgW,EAAKmE,QAAQ2pB,KAAK,iDAAiD5pB,SAAS/B,QAAQ,SAGxFnC,EAAKf,QAAQ8F,MAAQ89V,EAAe99V,MACpC/E,EAAKf,QAAQyF,OAASm+V,EAAen+V,OAEhC1E,EAAKf,QAAQ8qF,MAAMy2Q,eACpBxgW,EAAK6/V,2BAGL7/V,EAAK2/V,qBAAuB3/V,EAAK2/V,oBAAsB,GACvDtxU,EAAUK,UAAU1uB,EAAK2/V,qBAEzB3/V,EAAK4/V,sBAAwB5/V,EAAK4/V,qBAAuB,GACzDvxU,EAAU1J,WAAW3kB,EAAK4/V,sBAG9B3gW,EAAQ+gW,YAAc/gW,EAAQghW,aAAc,EAE5CjgW,EAAKmE,QAAQklB,WAAW,oBAExBrpB,EAAKshB,SAELthB,EAAKmC,QAAQ45V,GAEN/7V,GAjEIA,GAoEf8iW,cAAe,SAASC,EAAUhiV,GAC9B,IAAI/gB,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACfK,EAAQL,EAAQ,GAAGK,MACnBvF,EAAUe,EAAKf,QAEnB,OAAIA,EAAQ+gW,aAAe/gW,EAAQghW,cAInCjgW,EAAK6iW,eAAiB,CAClB99V,MAAOP,EAAMO,MACbL,OAAQF,EAAME,QAGlBP,EACK+oC,SAASguT,GAAsBh2V,OAAOxB,MACtCwpC,SAAS8tT,GAAiBltU,KAAKmuU,GAAgC/3V,SAASgB,OACxE2qB,GAAG,GAAG2+Q,OAAO/B,EAAU1nQ,OAAO,CAAE5qC,KAAM,oBAE3C4mB,EAASze,KAAKtC,GAEdA,EAAKmE,QAAQ+oC,SAAS8tT,GAAiBltU,KAAKsuU,GAA4Bl4V,SAASgc,OAAoB,aAAb6iV,GAExF/iW,EAAKmC,QAAQ4gW,GAEb5+V,EAAQ2pB,KAAK,+CAA+C5pB,SAAS/B,QAAQ,UAnBlEnC,GAwBfy/V,SAAU,WA+BN,OA9BA1nW,KAAK+qW,cAAc,YAAY,WAC3B,IAAI9iW,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACfo+V,EAAqBxqW,KAAKy/S,cAAgBx3S,EAAK2+V,UAC/C95V,EAAWV,EAAQU,WACnBg8I,EAAMnmJ,EAAEyM,UAEZrM,EAAOkF,EAAK6iW,eAAgB,CACxBj/U,KAAM/e,EAAS+e,MAAQ2+U,EAAqBxqW,KAAKy/S,YAAY7yR,aAAe,GAC5ExI,IAAKtX,EAASsX,KAAOomV,EAAqBxqW,KAAKy/S,YAAY9oR,YAAc,KAG7E32B,KAAK4nW,oBAAsB4C,EAAqBxqW,KAAKy/S,YAAY9oR,YAAcmyH,EAAInyH,YACnF32B,KAAK6nW,qBAAuB2C,EAAqBxqW,KAAKy/S,YAAY7yR,aAAek8H,EAAIl8H,aAErF3kB,EAAKygW,yBAELt8V,EACKQ,IAAI,CACDwX,IAAKomV,EAAqBxqW,KAAKy/S,YAAY9oR,YAAc,EACzD9K,KAAM2+U,EAAqBxqW,KAAKy/S,YAAY7yR,aAAe,EAC3D9f,SAAU09V,EAAqB,WAAa,UAE/CjmV,SAASk/U,GAEdx7V,EAAKf,QAAQ+gW,aAAc,EAE3BhgW,EAAKs+V,uBAGFvmW,MAGX0oW,uBAAwB,WACpB,IAAIzgW,EAAOjI,KACPy/S,EAAcx3S,EAAKw3S,YAEvB,GAAIA,IAAgBx3S,EAAK2+V,UAOrB,OANA3+V,EAAKgjW,mBAAmBxrD,GACxBA,EAAY7yS,IAAI6kC,EAAUH,QAC1BrpC,EAAKmE,QAAQQ,IAAI,CACbsmR,SAAUusB,EAAYhgS,aACtBg4R,UAAWgI,EAAY7/R,gBAK/B,IAAIsrV,EAAQvoW,EAAE,QACdsF,EAAKgjW,mBAAmBC,GACxBA,EAAMt+V,IAAI6kC,EAAUH,GAEpB,IAAI65T,EAAQxoW,EAAE,QACdsF,EAAKgjW,mBAAmBE,GACxBA,EAAMv+V,IAAI6kC,EAAUH,IAGxBw2T,yBAA0B,WACtB,IAAI7/V,EAAOjI,KACPy/S,EAAcx3S,EAAKw3S,YAEvB,GAAIA,IAAgBx3S,EAAK2+V,UAMrB,OALA3+V,EAAKmjW,qBAAqB3rD,QAC1Bx3S,EAAKmE,QAAQQ,IAAI,CACbsmR,SAAUusB,EAAYzyS,MACtByqS,UAAWgI,EAAY9yS,SAK/B1E,EAAKmjW,qBAAqBzoW,EAAEyM,SAAS6O,OACrChW,EAAKmjW,qBAAqBzoW,EAAE,UAGhCsoW,mBAAoB,SAASI,GACzB,IAAIrrW,KAAKsrW,kBAAkBD,GAA3B,CAIA,IAAIE,EAAeF,EAAS97U,IAAI,GAAG9iB,MAAMkgB,SAEb,iBAAjB4+U,GACPF,EAASx9V,KAAKo2V,EAAqBsH,KAI3CD,kBAAmB,SAASD,GACxB,MAAqD,iBAAvCA,EAASx9V,KAAKo2V,IAGhCmH,qBAAsB,SAASC,GAC3B,IAAIE,EAAeF,EAASx9V,KAAKo2V,GAEZ,OAAjBsH,GAAyBA,IAAiB3oW,GAC1CyoW,EAASz+V,IAAI6kC,EAAU85T,GACvBF,EAASn5U,WAAW+xU,IAEpBoH,EAASz+V,IAAI6kC,EAAU,KAI/Bw2T,YAAa,WACT,OAAOjoW,KAAKkH,QAAQ+gW,aAGxBO,SAAU,WAmBN,OAlBAxoW,KAAK+qW,cAAc,YAAY,WAC3B,IAAI9iW,EAAOjI,KAEXiI,EAAKmE,QAAQQ,IAAI,CACbD,OAAQ,GACR+sO,UAAW,KAGfzxO,EAAK4D,QAAQsB,OAEblF,EAAKf,QAAQghW,aAAc,KAG/BloW,KAAKoM,QAAQ0W,KAAK,mBAAoB9iB,KAAK6L,QAAQiX,KAAK,qBACxD9iB,KAAKoM,QAAQmY,SAAS8+U,GAEtBrjW,KAAK6mW,oBAEE7mW,MAGXkoW,YAAa,WACT,OAAOloW,KAAKkH,QAAQghW,aAGxB5B,IAAK,WACD,IAAIr+V,EAAOjI,KACPwrW,EAAM7oW,EAAE7B,QACRsL,EAAUnE,EAAKmE,QACflF,EAAUe,EAAKf,QACf4F,EAAW5F,EAAQ4F,SACnBsX,EAAMpkB,KAAKy/S,YAAcqlD,GAAY14V,EAAQ,IAAIgY,IAAMugV,GAAM3kW,KAAKy/S,YAAa,kBAAoBklD,GAAMv4V,EAAS,OAClHyf,EAAO7rB,KAAKy/S,YAAcqlD,GAAY14V,EAAQ,IAAIyf,KAAO84U,GAAM3kW,KAAKy/S,YAAa,mBAAqBklD,GAAMv4V,EAAS,QAEzH,IAAKnE,EAAKf,QAAQ+gW,YAAa,CAC3Bn7V,EAASsX,IAAMA,EACftX,EAAS+e,KAAOA,GAEZ5jB,EAAKmhW,mBAAuBppW,KAAKy/S,aAAoD,UAArCz/S,KAAKy/S,YAAY7yS,IAAI,cAErEE,EAASsX,KAAOonV,EAAI70U,YACpB7pB,EAAS+e,MAAQ2/U,EAAI5+U,aACrB3kB,EAAKmhW,mBAAoB,GAG7Bh9V,EAAQQ,IAAI7J,EAAO+J,EAAU,CAAEA,SAAU,WACzC,IAAImpG,EAAU7pG,EAAQ+oC,SAAS8tT,GAAiBltU,KAAKouU,GAAuBrsU,GAAG,GAC3Em+E,EAAQzuG,OAAS,GACjB7G,EAAMgpB,GAAG2tE,KAAK2e,EAAS,CAAE3e,KAAM,UAGnCrvF,EAAK2+V,WAAY,EACjB3+V,EAAKf,QAAQm/V,QAAS,EAElBrmW,KAAKy/S,cACLv4S,EAAQgsR,SAAWhsR,EAAQuwS,UAAY9hJ,IACvCvpJ,EAAQQ,IAAI,CACRsmR,SAAU,GACVukB,UAAW,QAM3B8wD,MAAO,WACH,IAAItgW,EAAOjI,KACPwrW,EAAM7oW,EAAE7B,QACRsL,EAAUnE,EAAKmE,QACflF,EAAUe,EAAKf,QACf4F,EAAW7E,EAAKf,QAAQ4F,SACxB2yS,EAAcx3S,EAAKw3S,YACnBr7R,EAAMnL,SAAS7M,EAAQQ,IAAI,OAAQ,IAAM4+V,EAAI70U,YAC7C9K,EAAO5S,SAAS7M,EAAQQ,IAAI,QAAS,IAAM4+V,EAAI5+U,aAEnD,IAAK3kB,EAAKf,QAAQ+gW,YAAa,CAC3BhgW,EAAK2+V,WAAY,EACjB3+V,EAAKmhW,mBAAoB,EACzBnhW,EAAKf,QAAQm/V,QAAS,EAElB5mD,IACAx3S,EAAK4+V,oBAEL3/V,EAAQgsR,SAAW7vR,KAAK8S,IAAIspS,EAAYzyS,MAAO9F,EAAQgsR,UACvDhsR,EAAQuwS,UAAYp0S,KAAK8S,IAAIspS,EAAY9yS,OAASg4V,GAAMv4V,EAAS,eAAgBlF,EAAQuwS,WAEzFrrS,EAAQQ,IAAI,CACRsmR,SAAUhsR,EAAQgsR,SAClBukB,UAAWvwS,EAAQuwS,YAInBrzR,EADAA,EAAMq7R,EAAY3yS,SAASsX,IACrBnc,EAAK09V,OACJvhV,EAAMq7R,EAAY3yS,SAASsX,IAAMq7R,EAAY9yS,OAC9C1E,EAAK49V,OAELzhV,EAAMq7R,EAAY9oR,aAAe8oR,EAAY3yS,SAASsX,IAAMugV,GAAMllD,EAAa,qBAIrF5zR,EADAA,EAAO4zR,EAAY3yS,SAAS+e,KACrB5jB,EAAK29V,QACL/5U,EAAO4zR,EAAY3yS,SAAS+e,KAAO4zR,EAAYzyS,MAC/C/E,EAAK69V,QAELj6U,EAAO4zR,EAAY7yR,cAAgB6yR,EAAY3yS,SAAS+e,KAAO84U,GAAMllD,EAAa,uBAKjG3yS,EAASsX,IAAMwgV,GAAUxgV,EAAKnc,EAAK09V,OAAQ19V,EAAK49V,QAChD/4V,EAAS+e,KAAO+4U,GAAU/4U,EAAM5jB,EAAK29V,QAAS39V,EAAK69V,SAEnD15V,EAAQQ,IAAI7J,EAAO+J,EAAU,CAAEA,SAAU,MACzC,IAAImpG,EAAU7pG,EAAQ+oC,SAAS8tT,GAAiBltU,KAAKquU,GAAyBtsU,GAAG,GAC7Em+E,EAAQzuG,OAAS,GACjB7G,EAAMgpB,GAAG2tE,KAAK2e,EAAS,CAAE3e,KAAM,UAK3CivQ,kBAAmB,WACf,IAKItsH,EAAGr1O,EALHqD,EAAOjI,KACPoM,EAAUnE,EAAKmE,QACfq/V,EAAM9oW,EAAE7B,QACRgjB,EAAYnjB,EAAM4C,QAAQugB,YAC1B2iV,EAAgD,eAA7Br6V,EAAQQ,IAAI,cAGnC,GAAK3E,EAAKf,QAAQ+gW,YAAlB,CAIA,IAAIvB,EAAgBD,EAAmB9B,GAAMv4V,EAAS,qBAAuBu4V,GAAMv4V,EAAS,sBAAwB,EAChHu6V,EAAgBF,EAAmB9B,GAAMv4V,EAAS,oBAAsBu4V,GAAMv4V,EAAS,uBAAyB,EAChH0rH,EAAa2uO,EAAmB9B,GAAMv4V,EAAS,eAAiB,EAEhEnE,EAAKw3S,cAAgBx3S,EAAK2+V,WAC1B3sH,EAAIhyO,EAAKw3S,YAAYhgS,aAAeinV,EACpC9hW,EAAIqD,EAAKw3S,YAAY7/R,eAAiB+mV,EAAgB7uO,KAEtDmiH,EAAIwxH,EAAIz+V,QAAU8W,EAAY4iV,EAC9B9hW,EAAI6mW,EAAI9+V,SAAWmX,GAAa6iV,EAAgB7uO,IAGpD1rH,EAAQQ,IAAI,CACRI,MAAOitO,EACPttO,OAAQ/H,IAEZqD,EAAKf,QAAQ8F,MAAQitO,EACrBhyO,EAAKf,QAAQyF,OAAS/H,EAEtBqD,EAAKshB,WAGT3L,QAAS,SAAS1W,GACd,IAGIi+G,EACAE,EACAh3F,EALApmB,EAAOjI,KACP8kN,EAAc78M,EAAKf,QACnB2E,EAAUlJ,EAAEsF,EAAK4D,SAiDrB,OA5CKlE,EAAcT,KACfA,EAAU,CAAEmnB,IAAKnnB,IAGrBA,EAAUnE,EAAO+hN,EAAYv+J,QAASr/C,GAEtCm+G,EAAa2P,GAAQ8vF,EAAY3/F,QAAU2/F,EAAY3/F,OAASj+G,EAAQi+G,QAExE92F,EAAMnnB,EAAQmnB,MAGL2mG,GAAQ3P,KACTA,GAAcj3F,GAAWC,IAGxBg3F,IAIDF,EAASt5G,EAAQkqB,KAAK,IAAMksF,GAAe,IAIvCkD,EAAOp+G,IAAMsnB,GAAO82F,EAAOp+G,IAG3B8E,EAAQiE,KAAK4kS,EAAUg3D,aAAa3oW,EAAO,GAAI+hN,EAAa,CAAEv+J,QAASr/C,MAG3E2E,EAAQkqB,KAAK,IAAMksF,GACdhpF,IAAI,OAAS43D,GACb5nE,GAAG,OAAS4nE,EAAI7wF,KAAK2rW,gBAAgBniW,KAAKxJ,QAd/CiI,EAAKq9G,aAAap+G,KAiBlBA,EAAQ2I,UAER5H,EAAKs+C,QAAQ12C,EAAS3I,EAAQ2I,SAAjBA,CAA2B,KAG5C5H,EAAKmC,QAAQy5V,IAGjBh4V,EAAQmc,YAAY,2BAA4Bq9F,GAEzCp9G,GAGX0jW,gBAAiB,WACb3rW,KAAKoK,QAAQy5V,IAGjB+H,cAAe,WACXzxU,aAAan6B,KAAK6rW,qBAClB7rW,KAAKoM,QAAQ2pB,KAAKwuU,GAAqBp4U,YAAYm3U,IAGvDwI,WAAY,SAASzqS,EAAKjZ,GACtBpoD,KAAKoK,QAAQwgD,EAAO,CAAExC,OAAQA,EAAQiZ,IAAKA,KAG/C0qS,aAAc,SAAS1oG,GACnB,OAAO,SAASx1P,GACZ,IAAIiC,EAAOjC,EACPw1P,IACAvzP,EAAOD,EAASwzP,EAATxzP,CAA0BhC,GAAQ,KAG7C7N,KAAKumD,QAAQz2C,EAAMjC,GACnB7N,KAAK6L,QAAQsjB,KAAK,YAAa,GAE/BnvB,KAAKoK,QAAQy5V,KAIrBmI,aAAc,WACVhsW,KAAKoM,QAAQ2pB,KAAKwuU,GAAqBhgV,SAAS++U,IAGpDh+O,aAAc,SAASp+G,GACnBlH,KAAK6rW,oBAAsB9yU,WAAW/4B,KAAKgsW,aAAaxiW,KAAKxJ,MAAO,KAEpE2C,EAAEmlD,KAAK/kD,EAAO,CACV2C,KAAM,MACNq/C,SAAU,OACVpnB,OAAO,EACP5P,MAAO/tB,KAAK8rW,WAAWtiW,KAAKxJ,MAC5B2mB,SAAU3mB,KAAK4rW,cAAcpiW,KAAKxJ,MAClC+nD,QAAS/nD,KAAK+rW,aAAa7kW,EAAQ2I,UAAUrG,KAAKxJ,OACnDkH,KAGPirB,SAAU,WACFnyB,KAAKinW,UACLjnW,KAAKinW,SAASjlW,UAGdhC,KAAKuvR,UACLvvR,KAAKuvR,SAASvtR,UAGlBhC,KAAKoM,QAAQ6sB,IAAI43D,GACZ17C,SAAS+tT,GAAgBjqU,IAAI43D,GAAIllF,MACjCoqB,KAAK,uCAAuCkD,IAAI43D,GAErDluF,EAAE7B,QAAQm4B,IAAI,SAAW43D,EAAK7wF,KAAKu+S,SACnC57S,EAAE7B,QAAQm4B,IAAI6pU,GACdngW,EAAE7B,QAAQm4B,IAAI43D,GAEd12D,aAAan6B,KAAK6rW,qBAElBn7U,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,MAEvBA,KAAKiK,OAAOrH,GAEZjC,EAAMqB,QAAQhC,KAAKoM,UAGvBpK,QAAS,WACLhC,KAAKmyB,WAEDnyB,KAAKkH,QAAQ8qF,OACbhyF,KAAK8pW,gBAAe,GAGxB9pW,KAAKoM,QAAQmgD,QAAQx1B,SAErB/2B,KAAKoM,QAAUpM,KAAKmtC,SAAWntC,KAAK6L,QAAUlJ,KAGlD4iW,cAAe,WACX,IAEI0G,EACA7/V,EAHA6xS,EAAcj+S,KAAK6L,QACnB3E,EAAUlH,KAAKkH,QAGfoX,EAAQ3d,EAAM4C,QAAQ+a,MAAM2/R,IAEL,IAAvB/2S,EAAQ++Q,YACRg4B,EAAYrxS,IAAI,WAAY,UAGhCR,EAAUzJ,EAAE+xS,EAAUtoS,QAAQlF,IAI9B+kW,EAAsBhuD,EAAYloR,KAAK,gCAAgCzb,KAAI,WACvE,IAAIvT,EAAM/G,KAAK+0B,aAAa,OAE5B,OADA/0B,KAAK+G,IAAM,GACJA,KAIXqF,EACK4b,YAAY,QAAS1J,GACrBwE,KAAK,WAAY,GACjBi3B,OAAOkkQ,GACPloR,KAAK,gCAAgC/yB,MAAK,SAAS+V,GAEpD/Y,KAAK+G,IAAMklW,EAAoBlzV,MAG/B/Y,KAAKy/S,YACLz/S,KAAKy/S,YAAYtyN,QAAQ/gF,GAClBpM,KAAKmtC,UACZ/gC,EAAQ+gC,SAASntC,KAAKmtC,UAG1B/gC,EAAQ2pB,KAAK,mBACRnpB,IAAI0R,EAAQ,OAAS,QAASvS,EAAWK,EAAQ2pB,KAAK,+BAAiC,IAE5FkoR,EAAYrxS,IAAI,aAAc,IAAIM,OAElC+wS,EAAYloR,KAAK,sBAAsB/yB,MAAK,WACxC,IAAIi+V,EAASt+V,EAAE3C,MAAM6N,KAAK,eAEtBozV,GACAA,EAAOrjV,aAIfxR,EAAU6xS,EAAc,QAuChC,SAASmpD,GAAeqE,GACpB,IAAIxjW,EAAOjI,KACXiI,EAAK21L,MAAQ6tK,EACbxjW,EAAKikW,kBAAmB,EACxBjkW,EAAKm+V,WAAa,IAAIt+Q,EAAU2jR,EAAIr/V,QAAS,CACzC6pB,OAAQ,oBACRi+B,MAAOu3S,EAAIr/V,QAAQujB,GAAK,YACxBw8U,UAAWlkW,EAAKkkW,UAAU3iW,KAAKvB,GAC/B+vN,KAAM/vN,EAAK+vN,KAAKxuN,KAAKvB,GACrBmkW,QAASnkW,EAAKmkW,QAAQ5iW,KAAKvB,KAG/BA,EAAKm+V,WAAW9nR,WAAW90E,KAAK,QAASvB,EAAKokW,WAAW7iW,KAAKvB,IAC9DA,EAAKm+V,WAAW9nR,WAAW90E,KAAK,UAAWvB,EAAKqkW,cAAc9iW,KAAKvB,IAoLvE,SAASo/V,GAAeoE,EAAKnE,EAAY5kR,GACrC,IAAIz6E,EAAOjI,KAOXiI,EAAK21L,MAAQ6tK,EACbxjW,EAAKikW,kBAAmB,EACxBjkW,EAAKm+V,WAAa,IAAIt+Q,EAAU2jR,EAAIr/V,QAAS,CACzC6pB,OAAQqxU,EACRpzS,MAAOu3S,EAAIr/V,QAAQujB,GAAK,UACxB+yD,eAAgBA,EAChBypR,UAAWlkW,EAAKkkW,UAAU3iW,KAAKvB,GAC/B+vN,KAAM/vN,EAAK+vN,KAAKxuN,KAAKvB,GACrBmkW,QAASnkW,EAAKmkW,QAAQ5iW,KAAKvB,GAC3BskW,WAAYtkW,EAAKskW,WAAW/iW,KAAKvB,KAGrCA,EAAKm+V,WAAW9nR,WAAWrkD,iBAAkB,EAxPjDy6Q,EAAY,CACRtoS,QAASyD,GAAS,WAAc,MAAO,kCACvCm9B,OAAQn9B,GAAS,SAAUof,GACvB,IAAI7sB,EAAO6sB,EAAI7sB,KAGXoqW,GAFOv9U,EAAIqoE,MAES,IAAIh/E,eAAiBlW,EAAKkW,cAGlD,MAFgB,WAAZk0V,IAAyBA,EAAW,kBAEjC7rW,EAAMmP,KAAK02R,aAAc,sEAAwEpkS,EAAO,cAAgB,CAAEk1F,KAAMk1Q,EAAUx5U,SAAU,YAE/Ju2U,SAAU15V,GAAS,SAAUof,GAGrB,MAAO,wEAFKA,EAAI8uB,MAET,gEAMfmpH,QAAS,gCACTwkM,aAAc77V,GAAS,SAAUof,GACzB,IAAI8uB,EAAQ9uB,EAAI8uB,MACZwI,EAAUt3B,EAAIs3B,QAElB,MAAO,kCAAoCxI,EAAQ,YAAckkE,EAA1D,UACA17D,EAAW,IADX,mEAMf4gT,aAAct3V,GAAS,SAAUhC,GAAQ,MAAQ,2DAA6DA,EAAO,eAoBzHu5V,GAAe/+V,UAAY,CACvBgkW,WAAY,WACRrsW,KAAK49L,MAAMxxL,QAAQ2tC,OAAO26P,EAAUxtI,UAExColM,cAAe,WACXtsW,KAAK49L,MAAMxxL,QAAQ2pB,KAAKqtU,GAAUrsU,UAEtCo1U,UAAW,SAASxnW,GAChB,IAAIsD,EAAOjI,KACPyrW,EAAMxjW,EAAK21L,MACXxxL,EAAUq/V,EAAIr/V,QAGlB,GADAnE,EAAKikW,iBAAmBT,EAAIrhW,QAAQ05V,IAChC77V,EAAKikW,iBAAT,CAIAjkW,EAAK2vH,eAAiB3+G,SAAS7M,EAAQQ,IAAI,eAAgB,IAC3D3E,EAAKq8Q,gBAAkB3jR,EAAMusB,UAAU9gB,EAAS,YAEhDnE,EAAKwkW,gBAAkB9nW,EAAEg5E,cAAcxuD,KAAK,aAAa1sB,QAAQ,4BAA6B,IAE9FwF,EAAKykW,YAAc,CACf1/V,MAAOZ,EAAQL,aACfY,OAAQP,EAAQH,eAGpBw/V,EAAI5E,oBAEJ5+V,EAAK0kW,gBAAkBlB,EAAIhsD,YAAcgsD,EAAIhsD,YAAY3yS,SAAWnM,EAAMusB,UAAUu+U,EAAIt+T,UAExF,IAAImnD,EAAeloF,EAAQkoF,eAE3B,GAAIA,EAAa/nF,GAAG,QAChBtE,EAAK0kW,gBAAgBvoV,IAAMnc,EAAK0kW,gBAAgB9gV,KAAO,MACpD,CACH,IAAI4qB,EAAY69C,EAAa1nF,IAAI,cAC7B4pC,EAAa89C,EAAa1nF,IAAI,eAElC,IADiB63V,GAAK13V,KAAK0pC,KAAeguT,GAAK13V,KAAKypC,GACrC,CACX,IAAIo2T,EAAkB9H,GAAY14V,EAAQ,IACtCygW,EAAuBD,EAAgB/gV,KAAO5jB,EAAK0kW,gBAAgB9gV,KAAO5jB,EAAKq8Q,gBAAgBz4P,KAC/FihV,EAAsBF,EAAgBxoV,IAAMnc,EAAK0kW,gBAAgBvoV,IAAMnc,EAAKq8Q,gBAAgBlgQ,IAEhGnc,EAAK8kW,sBAAwBF,EAAuB,EAAIA,EAAuB,EAC/E5kW,EAAK+kW,qBAAuBF,EAAsB,EAAIA,EAAsB,EAE5E7kW,EAAKq8Q,gBAAgBz4P,MAAQ5jB,EAAK8kW,sBAClC9kW,EAAKq8Q,gBAAgBlgQ,KAAOnc,EAAK+kW,sBAIzC5gW,EACK+oC,SAASguT,GAAsBrjD,IAAIn7S,EAAEg5E,eAAexwE,OAEzDxK,EAAEytF,GAAMxjF,IAAIg3V,EAAQj/V,EAAEg5E,cAAc/wE,IAAIg3V,MAE5C5rI,KAAM,SAASrzN,GACX,IAAI3E,KAAKksW,iBAAT,CAGA,IAaI7D,EAAUC,EACV2E,EAAcC,EAddjlW,EAAOjI,KACPyrW,EAAMxjW,EAAK21L,MACXxxL,EAAUq/V,EAAIr/V,QACdlF,EAAUukW,EAAIvkW,QACd4F,EAAW5F,EAAQ4F,SACnBmnC,EAAYhsC,EAAKwkW,gBACjBE,EAAkB1kW,EAAK0kW,gBACvBroF,EAAkBr8Q,EAAKq8Q,gBACvBooF,EAAczkW,EAAKykW,YACnBlC,EAAqBiB,EAAIhsD,cAAgBgsD,EAAI7E,UAC7CrpN,EAAM58I,EAAM4C,QAAQ+a,MAAMmtV,EAAIhsD,aAC9B0tD,EAAgB3C,GAAsBjtN,GAAOkuN,EAAIhsD,YAAYhgS,aAAegsV,EAAIhsD,YAAYzyS,MAAQrM,EAAM4C,QAAQoa,YAAc,EAChIyvV,EAAe5C,EAAqB,CAAEpmV,IAAKqnV,EAAIhsD,YAAY9oR,YAAa9K,KAAM4/U,EAAIhsD,YAAY7yR,cAAiB,CAAExI,IAAK,EAAGyH,KAAM,GAG/HzmB,EAAI/B,KAAKuV,IAAIjU,EAAES,EAAEmd,SAAU,GAC3Bpe,EAAId,KAAKuV,IAAIjU,EAAER,EAAEoe,SAAU,GAEvB0xB,EAAUt+B,QAAQ,MAAQ,GAGtB0yV,EADAoD,EAAIhsD,aAAer6S,EAAIsnW,EAAY1/V,OAASy+V,EAAI3F,QAAUsH,EAAavhV,KAAO8gV,EAAgB9gV,KAAOshV,EAC1F1B,EAAI3F,QAAUqH,EAAgB7oF,EAAgBz4P,KAAO6gV,EAAY1/V,MAAQogW,EAAavhV,KAEtFzmB,EAAIk/Q,EAAgBz4P,KAAO8gV,EAAgB9gV,KAG1Dzf,EAAQL,WAAW64V,GAAUyD,EAAUnhW,EAAQokN,SAAUpkN,EAAQgsR,YAC1Dj/O,EAAUt+B,QAAQ,MAAQ,IAEjC0yV,EAAWzD,IADXsI,EAAc5oF,EAAgBz4P,KAAO6gV,EAAY1/V,MAAQ2/V,EAAgB9gV,MACtCzmB,EAAG8B,EAAQokN,SAAUpkN,EAAQgsR,UAChEpmR,EAAS+e,KAAOqhV,EAAc7E,EAAWsE,EAAgB9gV,KAAOshV,GAAiBllW,EAAK8kW,uBAAyB,GAAKK,EAAavhV,KAE7H4/U,EAAIhsD,aAAe3yS,EAAS+e,MAAQ4/U,EAAI7F,UACxC94V,EAAS+e,KAAO4/U,EAAI7F,QACpByC,EAAWzD,GAAUsI,EAAcC,EAAgBrgW,EAAS+e,KAAO8gV,EAAgB9gV,KAAOuhV,EAAavhV,KAAM3kB,EAAQokN,SAAUpkN,EAAQgsR,WAG3I9mR,EAAQQ,IAAI,CACRif,KAAM/e,EAAS+e,KACf7e,MAAOq7V,KAIf,IAAIgF,EAAelpW,EACfsnW,EAAIvkW,QAAQm/V,SACZgH,GAAgB1qW,EAAE7B,QAAQ61B,aAE1Bsd,EAAUt+B,QAAQ,MAAQ,GAC1B2yV,EAAY+E,EAAe/oF,EAAgBlgQ,IAAMnc,EAAK2vH,eAAiB+0O,EAAgBvoV,IAEnFipV,EAAeX,EAAY//V,OAAS1E,EAAK2vH,gBAAkB6zO,EAAI5F,OAAS8G,EAAgBvoV,IAAMgpV,EAAahpV,MAC3GkkV,EAAYmD,EAAI5F,OAASvhF,EAAgBlgQ,IAAMsoV,EAAY//V,OAASygW,EAAahpV,KAGrFhY,EAAQH,YAAY24V,GAAU0D,EAAWphW,EAAQwyO,UAAWxyO,EAAQuwS,aAC7DxjQ,EAAUt+B,QAAQ,MAAQ,IAEjC2yV,EAAY1D,IADZqI,EAAe3oF,EAAgBlgQ,IAAMsoV,EAAY//V,OAASggW,EAAgBvoV,KACrCipV,EAAcnmW,EAAQwyO,UAAWxyO,EAAQuwS,WAC9E3qS,EAASsX,IAAM6oV,EAAe3E,EAAYqE,EAAgBvoV,KAAOnc,EAAK+kW,sBAAwB,GAAKI,EAAahpV,IAE5GtX,EAASsX,KAAOqnV,EAAI9F,QAAU8F,EAAIhsD,cAClC3yS,EAASsX,IAAMqnV,EAAI9F,OACnB2C,EAAY1D,GAAUqI,EAAengW,EAASsX,IAAMuoV,EAAgBvoV,IAAMgpV,EAAahpV,IAAKld,EAAQwyO,UAAWxyO,EAAQuwS,YAG3HrrS,EAAQQ,IAAI,CACRwX,IAAKtX,EAASsX,IACdzX,OAAQ27V,KAIZD,IACAoD,EAAIvkW,QAAQ8F,MAAQq7V,EAAW,MAE/BC,IACAmD,EAAIvkW,QAAQyF,OAAS27V,EAAY,MAGrCmD,EAAIliV,WAEZ6iV,QAAS,SAASznW,GACd,IAAI3E,KAAKksW,iBAAT,CAIA,IAAIjkW,EAAOjI,KACPyrW,EAAMxjW,EAAK21L,MACXxxL,EAAUq/V,EAAIr/V,QAkBlB,OAhBAA,EACK+oC,SAASguT,GAAsBrjD,IAAIn7S,EAAEg5E,eAAezwE,OAEzDvK,EAAEytF,GAAMxjF,IAAIg3V,EAAQ,IAEhB6H,EAAIjzU,eACJizU,EAAIjzU,cAAcid,QAGL,IAAb9wC,EAAEwiC,SACF/6B,EAAQQ,IAAI3E,EAAKq8Q,iBACZ13Q,IAAI3E,EAAKykW,aAGlBjB,EAAIrhW,QAAQ25V,IAEL,IAEX/hW,QAAS,WACDhC,KAAKomW,YACLpmW,KAAKomW,WAAWpkW,UAGpBhC,KAAKomW,WAAapmW,KAAK49L,MAAQ,OA2BvCypK,GAAeh/V,UAAY,CACvB8jW,UAAW,SAASxnW,GAChB,IAAI8mW,EAAMzrW,KAAK49L,MACXv2G,EAAYokR,EAAIvkW,QAAQmgF,UACxBx7E,EAAU4/V,EAAI5/V,QACdy5V,EAAUz5V,EAAQkqB,KAAK,8BACvB42U,EAAkBhsW,EAAMusB,UAAUu+U,EAAIt+T,UAE1CntC,KAAKksW,iBAAmBT,EAAIrhW,QAAQ84E,KAAemE,EAC/CrnF,KAAKksW,kBAAoBT,EAAIxD,gBAIjCwD,EAAI6B,sBAAwB3sW,EAAMusB,UAAUu+U,EAAIr/V,QAAS,YAEzDq/V,EAAI8B,uBAAyB,CACzB1hV,KAAM4/U,EAAIvkW,QAAQ4F,SAAS+e,KAC3BzH,IAAKqnV,EAAIvkW,QAAQ4F,SAASsX,KAG9BqnV,EAAI51L,cAAgB,CAChBhqJ,KAAMlnB,EAAES,EAAEq/B,OAASgnU,EAAI6B,sBAAsBzhV,KAC7CzH,IAAKzf,EAAER,EAAEsgC,OAASgnU,EAAI6B,sBAAsBlpV,KAGhDqnV,EAAI5E,oBACC4E,EAAIhsD,cACD6lD,EAAQ99V,OAAS,EACjBikW,EAAI7F,QAAU75V,EAAWu5V,GAAWrsV,SAASqsV,EAAQ14V,IAAI,SAAU,IAAMb,EAAWF,GAEpF4/V,EAAI7F,QAAU,GAAK75V,EAAWF,GAGlC4/V,EAAI7F,SAAW+G,EAAgB9gV,KAC/B4/U,EAAI9F,QAAUgH,EAAgBvoV,KAGlCzhB,EAAE+xS,EAAUxtI,SAAS/5H,SAASs+T,EAAIr/V,SAASQ,IAAI,CAAEgqB,QAAS,IAE1D60U,EAAIr/V,QAAQ+oC,SAASguT,GAAsBh2V,OAE3CxK,EAAEytF,GAAMxjF,IAAIg3V,EAAQj/V,EAAEg5E,cAAc/wE,IAAIg3V,MAG5C5rI,KAAM,SAASrzN,GACX,IAGIknB,EACAzH,EAJAqnV,EAAMzrW,KAAK49L,MACX9wL,EAAW2+V,EAAIvkW,QAAQ4F,SACvBk4B,EAAOymU,EAAIvkW,QAAQmgF,UAAUriD,KAI7BhlC,KAAKksW,kBAAoBT,EAAIxD,gBAI5BjjU,GAA+B,MAAvBA,EAAK1sB,gBACduT,EAAOlnB,EAAES,EAAEq/B,OAASgnU,EAAI51L,cAAchqJ,KAElC4/U,EAAIhsD,cAAgBgsD,EAAI7E,YACxB/6U,GAAQ4/U,EAAIhsD,YAAY7yR,cAG5B9f,EAAS+e,KAAO+4U,GAAU/4U,EAAM4/U,EAAI7F,QAAS6F,EAAI3F,UAGhD9gU,GAA+B,MAAvBA,EAAK1sB,gBACd8L,EAAMzf,EAAER,EAAEsgC,OAASgnU,EAAI51L,cAAczxJ,IAEjCqnV,EAAIhsD,cAAgBgsD,EAAI7E,YACxBxiV,GAAOqnV,EAAIhsD,YAAY9oR,aAG3B7pB,EAASsX,IAAMwgV,GAAUxgV,EAAKqnV,EAAI9F,OAAQ8F,EAAI5F,SAG9CllW,EAAM4C,QAAQqb,WACdjc,EAAE8oW,EAAIr/V,SAASQ,IACX,YAAa,cACZE,EAAS+e,KAAO4/U,EAAI8B,uBAAuB1hV,MAAQ,QACnD/e,EAASsX,IAAMqnV,EAAI8B,uBAAuBnpV,KAAO,OAGtDzhB,EAAE8oW,EAAIr/V,SAASQ,IAAIE,KAK3B0gW,YAAa,WACT,IAAI/B,EAAMzrW,KAAK49L,MAEf6tK,EAAIr/V,QACC+oC,SAASguT,GAAsBh7U,QAAQsjV,EAAIvkW,QAAQghW,aAAav8V,MAChEoqB,KAAKqtU,GAAUrsU,SAEpBp0B,EAAEytF,GAAMxjF,IAAIg3V,EAAQ,KAGxB2I,WAAY,SAAS5nW,GACb3E,KAAKksW,mBAGTlsW,KAAKwtW,cAEL7oW,EAAEg5E,cAActxE,QAAQ02V,GAASn2V,IAAI5M,KAAK49L,MAAM0vK,yBAGpDlB,QAAS,WACL,IAAIX,EAAMzrW,KAAK49L,MAEf,IAAI59L,KAAKksW,mBAAoBT,EAAIxD,cAYjC,OARAtlW,EAAE8oW,EAAIr/V,SACDQ,IAAI6+V,EAAIvkW,QAAQ4F,UAChBF,IAAI,YAAa,IAEtB5M,KAAKwtW,cAEL/B,EAAIrhW,QAAQg5E,IAEL,GAEXphF,QAAS,WACDhC,KAAKomW,YACLpmW,KAAKomW,WAAWpkW,UAGpBhC,KAAKomW,WAAapmW,KAAK49L,MAAQ,OAIvCj9L,EAAMgpB,GAAGqN,OAAOkuU,IAlpEpB,CAopEGpkW,OAAOH,MAAM+G,QACN/G,OAEd,SAAUgC,EAAGC,GAEL,IAAIknB,EAAUnpB,MAAMmpB,QAChB0rH,EAAO70I,MAAMopB,QACb8+M,EAAOloO,MAAMi/H,SACb8vD,EAAU5lK,EAAQ4lK,QAClBh/J,EAAS/vB,MAAMgpB,GAAG+G,OAClB9oB,EAAQjH,MAAMiH,MACdY,EAAa7H,MAAM6H,WACnBuD,EAAapL,MAAMqL,YACnBC,EAActL,MAAMuL,aACpBnJ,EAASJ,EAAEI,OACXiL,EAAyBrN,MAAMkN,KAAKG,uBACpCyyQ,EAAS/wF,EAAQ+wF,OACjBjyI,EAAQkhD,EAAQlhD,MAChB6uI,EAAY3tF,EAAQ2tF,UACpBj/I,EAASsxD,EAAQtxD,OACjB28I,EAAqBrrF,EAAQqrF,mBAC7B7/I,EAAOw0D,EAAQx0D,KACfoR,EAAOojD,EAAQpjD,KACfs3I,EAAkBl0F,EAAQk0F,gBAC1BF,EAAuBh0F,EAAQg0F,qBAC/B7G,EAAYntF,EAAQmtF,UACpBzuI,EAAQshD,EAAQthD,MAChBpU,EAAQ01D,EAAQ11D,MAChB0xI,EAAYh8E,EAAQg8E,UACpBihB,EAAwBj9F,EAAQi9F,sBAChCvH,EAAkB11F,EAAQ01F,gBAC1BoD,EAAc94F,EAAQ84F,YACtB2I,EAAWzhG,EAAQyhG,SACnBpD,EAAkBr+F,EAAQq+F,gBAC1BP,EAAoB99F,EAAQ89F,kBAC5B1M,EAAUpxF,EAAQoxF,QAClB/Z,EAAQr3E,EAAQq3E,MAChBz9P,EAAa3I,MAAM2I,WACnB67Q,EAAaz1F,EAAQy1F,WACrBH,EAAct1F,EAAQs1F,YACtB2F,EAAiBj7F,EAAQi7F,eACzBC,EAAkBl7F,EAAQk7F,gBAC1B1jB,EAAcH,EAAMG,YACpBD,EAAYF,EAAME,UAClBjyI,EAAUwgB,EAAK7vB,KAAKqP,QACpB/xH,EAAUC,MAAMD,QAChBiG,EAAavI,MAAMuI,WACnBN,EAAWm+P,EAAMn+P,SACjBjB,EAAgBhF,EAAEgF,cAElBvE,EAAOC,KAGPwtF,EAAK,gBACL48Q,EAAY,YACZjsF,EAAmB,mBACnB1kO,EAAS,SACTgjL,EAAQ,QAMRl1K,EAAQ,QACRzZ,EAAO,OAKPu8T,GAAS,iBACT3xR,GAAS,SACT4xR,GAAa,aACbC,GAAM,MACNn1K,GAAa,YACbE,GAAW,UACXliD,GAAO,OAUPnhB,GAAYhjH,OAAOgjH,UACnB0oC,IAAa1rJ,OAAOgjH,UAEpBu4O,GAAc,cACdpsF,GAAU,UASVqsF,GAAkB,SAAU7+U,GACpB,IAAIvC,EAAYuC,EAAIvC,UAChB4qE,EAAOroE,EAAIqoE,KACX1jE,EAAa3E,EAAI2E,WACjBgN,EAAO3R,EAAI2R,KAEf,OAAOjgC,MAAMmP,KAAK02R,aAAc,kBAAqB95Q,EAAY,cAAmBkU,EAAO,YAAc,CACzG02D,KAAMA,EACN1jE,WAAYA,KAKxB87J,EAAQq+K,kBAAoB,CAAC,CACzB3rW,KA/CM,OAgDP,CACCA,KA9CS,UA+CV,CACCA,KAjDO,QAkDR,CACCA,KApDQ,SAqDT,CACCA,KAAM+uC,EACNrkC,SAAU,SAASmzI,GACf,OAAOA,EAAM6kN,YAAY,aAIjC,IAAIkJ,GAAiB,CACjBxzU,OAAQ,CACJoG,KAAM,SACN02D,KAAM,iBACN5qE,UAAW,oBAEfq6B,OAAQ,CACJnmB,KAAM,OACNqtU,WAAY,OACZvhV,UAAW,mBACX4qE,KAAM,OACN1jE,WAAY,YA8CpB,SAASs6U,GAAgB7mF,GACrB,OAAOA,EAAUngR,QAAQ9E,KAAKkW,gBAAkB64B,EAAK74B,cAGzD,SAAS61V,GAAiB9zO,EAAOm2D,GAE7B,IADA,IAA8B49K,EAAQ/mF,EAAlCgnF,EAAkBX,GACbnmW,EAAI,EAAGA,EAAIipL,EAAWhpL,OAAQD,IAEnC,IAAK2mW,GADL7mF,EAAY72F,EAAWjpL,IACU,CAC7B,IAAI08J,EAAO5pC,EAAMG,WAAW6sJ,EAAUv6Q,YAClCm3J,EAAOoqM,IACPA,EAAkBpqM,EAClBmqM,EAAS/mF,GAIrB,OAAO+mF,EAGX,SAASE,GAAep6S,EAAOiyG,GAC3B,IAAI5+J,EAAiB22I,EAAdk9B,EAAU,GACbjmI,EAAW+e,EAAM+nN,mBAAmB9mO,SACpC3tC,EAAS2tC,EAAS3tC,OACtB,IAAKD,EAAI,EAAGA,EAAI4+J,EAAQ3+J,OAAQD,IAAK,CACjC22I,EAASioB,EAAQ5+J,GACjB,IAAK,IAAIojC,EAAI,EAAGA,EAAInjC,EAAQmjC,IACxB,GAAIwK,EAASxK,IAAMuzG,EAAO+9H,mBAAoB,CAC1C7gG,EAAQz5K,KAAKgpC,GACb,OAIZ,OAAOywI,EA1EXsU,EAAQT,cAAgB,SAASs/K,GAC7B,IAAI3tW,EAAW,CACX8E,KAjEiB,YAkEjB0pC,KAAM,GACNysO,UAAU,EACV39H,OAAQ,KACR94I,EAhEqB,EAiErBjB,EAjEqB,EAkErBmnN,SApEqB,GAqErBouB,UApEsB,GAqEtB1sO,MAxEkB,IAyElBL,OAxEmB,IAyEnBuiL,MAAO,GACP3gI,SAAU,CACNqqN,SAAS,EACTtpF,MAAO,IAEXkB,WAAYd,EAAQq+K,kBACpBp0T,SAAU,CACN2+E,MAAO,IAMf,OAFAyuI,EAAMM,aAAazmQ,EAAU2tW,GAEtB3tW,GAoDX,IAAI4tW,GAAiBllW,EAAWvG,OAAO,CACnCoF,KAAM,SAASjB,GACX,IAAIe,EAAOjI,KACXiI,EAAKosB,UAAYntB,GAAW,IAAImtB,SAChC/qB,EAAWvB,GAAGI,KAAKoC,KAAKtC,GACxBA,EAAKf,QAAUsB,EAAW,CAAEmnB,GAAI+/J,EAAQy9E,YAAcllQ,EAAKf,QAASA,GACpEe,EAAKi/Q,YAAa,EAClBj/Q,EAAKi2I,OAAS,IAAI1P,EAAM,CACpB7+G,GAAI1nB,EAAKf,QAAQyoB,GACjBksP,SAAU5zQ,EAAKf,QAAQ20Q,WAE3B5zQ,EAAK0nB,GAAK1nB,EAAKf,QAAQyoB,GACvB1nB,EAAK01I,aAGTz2I,QAAS,CACLgoL,MAAO,GACPv2C,OAAQmoI,EAAQC,KAChBx6N,QAAS,CACL0oF,MAAO,iBAEXmgD,YAAY,EACZq/K,cAAc,EACdlnV,QAAQ,GAGZ86H,WAAY,SAAShoB,GACjB,OAAIr6H,KAAK+jR,QACE/jR,KAAK+jR,QAAQ1hI,WAAWhoB,GAE5Br6H,KAAKkH,QAAQyxI,QAGxBrsI,QAAS,SAAS5D,GACd,GAAIw+P,EAAYx+P,GACZ,OAAO1I,KAAKk+I,OAAO5xI,UAEnBtM,KAAKk+I,OAAO5xI,QAAQ5D,IAI5Bg9P,OAAQ,aAGR9nP,QAAS,WACL5d,KAAKk+I,OAAOy1D,UAGhB7mM,SAAU,SAASutH,GACfr6H,KAAKkH,QAAQ9B,EAAIi1H,EAAMj1H,EACvBpF,KAAKkH,QAAQ/C,EAAIk2H,EAAMl2H,EACvBnE,KAAKk+I,OAAOpxI,SAASutH,IAGzBnpH,SAAU,WACN,OAAOlR,KAAKkH,QAAQyoB,IAGxBq5B,UAAW,WAEP,IAAI2C,EAAOnjD,EAAW,GAAI,CAAEtB,QAASlH,KAAKkH,UAI1C,OAHIlH,KAAKq0B,WACLs3B,EAAKt3B,SAAWr0B,KAAKq0B,SAASnjB,YAE3By6C,GAGX4+O,SAAU,SAAShkP,GACf,GAAIA,IAAY3jD,EAAa,CACzB,IAAIsE,EAAUlH,KAAKkH,QAEfwoL,EAAQq3E,MAAMn+P,SAAS29C,GACvBr/C,EAAQq/C,QAAQ3lB,KAAO2lB,EAEvB/9C,EAAWtB,EAAQq/C,QAASA,GAGhC,IAAI6+D,EAAiBl+G,EAAQq/C,QACTvmD,KAAK0uW,eAKrB1uW,KAAK2uW,qBAAqBvpP,GAF1BplH,KAAK4uW,qBAAqBxpP,GAMlC,OAAOplH,KAAKkH,QAAQq/C,QAAQ3lB,MAGhCguU,qBAAsB,SAAS1nW,GACvBA,EAAQ05B,OACR5gC,KAAK0uW,eAAiB,IAAI7xF,EAAU31Q,GACpClH,KAAK0uW,eAAevuF,gBAAiB,EACrCngR,KAAKk+I,OAAOnkG,OAAO/5C,KAAK0uW,kBAIhCC,qBAAsB,SAASznW,GAC3BlH,KAAK0uW,eAAe/6J,OAAOzsM,IAG/B0/Q,SAAU,SAASvsJ,GACf,IAAIqrI,EAAS1lQ,KAAK0lQ,SAClB,OAAO1lQ,KAAKsM,WAAao5P,EAAOvwO,SAASklG,IAAUr6H,KAAKkH,QAAQqgB,QAGpEo2H,UAAW,WACP,IAAI11I,EAAOjI,KACX,GAAIiI,EAAKf,QAAQq/C,QAAQ12C,SAAU,CAC/B,IAAIhC,EAAO5F,EAAKosB,UAAY,GACxBw6U,EAAkBluW,MAAMkP,SAAS5H,EAAKf,QAAQq/C,QAAQ12C,SAAU,CAC5DH,UAAW,aAGnBzH,EAAKf,QAAQq/C,QAAQ3lB,KAAOiuU,EAAgBhhW,KAIpDihW,WAAY,WACR,OAAmC,IAA5B9uW,KAAKkH,QAAQkoL,YAGxBx9K,OAAQ,WACJ,MAAO,CACH+d,GAAI3vB,KAAKkH,QAAQyoB,OAKzBo/U,GAAYnnW,EAAM7E,OAAO,CACzBoF,KAAM,SAAS83I,EAAO/4I,GAClBlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAC5ClH,KAAK+mR,YAAc,GACnB/mR,KAAKigJ,MAAQA,GAEjB/4I,QAAS,CACL8F,MAAO,EACPL,OAAQ,EACRsmB,KAAM,CACFm8F,MAlRwB,UAoR5B8/D,MAAO,IAEXpiL,SAAU,WACN,OAAI9M,KAAKkH,QAAQ4F,SACN9M,KAAKkH,QAAQ4F,SAAS9M,KAAKigJ,OAE3BjgJ,KAAKigJ,MAAM6kN,YAAY9kW,KAAKkH,QAAQ9E,OAGnDwP,OAAQ,WACJ,MAAO,CACHo9V,QAAShvW,KAAKigJ,MAAM/uI,WACpBm2Q,UAAWrnR,KAAKkH,QAAQ9E,SAKpC2sW,GAAU/5U,MAAQ,SAAS06J,EAAS9gL,GAKhC,IAJA,IAAIqgW,EAAUrgW,EAAIhE,MAAM,KACpB+kB,EAAKs/U,EAAQ,GACb7sW,EAAO6sW,EAAQ,IAAM99T,EAEhB5pC,EAAI,EAAGA,EAAImoL,EAAQ1vC,OAAOx4I,OAAQD,IAAK,CAC5C,IAAI04I,EAAQyvC,EAAQ1vC,OAAOz4I,GAC3B,GAAI04I,EAAM/4I,QAAQyoB,IAAMA,EACpB,OAAOswH,EAAMgoI,aAAa7lR,EAAKohC,UAK3C,IAAIwkP,GAAQwmF,GAAezrW,OAAO,CAC9BoF,KAAM,SAASjB,EAASwoL,GACpB,IAAIznL,EAAOjI,KACXwuW,GAAezmW,GAAGI,KAAKoC,KAAKtC,EAAMf,GAClClH,KAAK0vL,QAAUA,EACf1vL,KAAKkvW,yBACLhoW,EAAUe,EAAKf,QACfe,EAAKuoL,WAAa,GAClBvoL,EAAKvC,KAAOwB,EAAQxB,KACpBuC,EAAKknW,oBACLlnW,EAAKmnW,eACLnnW,EAAKs+C,QAAQt+C,EAAKs+C,WAElBt+C,EAAKonW,qBAGTnoW,QAASwoL,EAAQT,gBAEjBqgL,qBAAsB,SAASxmT,GAC3B,IAAIymT,EAAeC,GAAoB1mT,GAAS9oD,KAAKq0B,UACrDr0B,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASqoW,GAE5CvvW,KAAKyvW,gBAGTP,uBAAwB,SAASpmT,EAAO7jC,GACpC,GAAIjlB,KAAK0vL,SAAW1vL,KAAK0vL,QAAQggL,YAAa,CAC1C,IAAIH,EAAeC,GAAoB1mT,GAAS9oD,KAAKq0B,UAErD,GAAIy0B,GAAS7jC,EACT,GAAK6E,EAAQuL,QAAQpQ,EAAO,CAAC,IAAK,IAAK,QAAS,WAYzC,CACH,IAAIygP,EAAS1lQ,KAAK0lQ,SAClBA,EAAOzgP,GAAS6jC,EAAM7jC,GACtBjlB,KAAK0lQ,OAAOA,QAdR1lQ,KAAKkH,QAAQg3I,OACbl+I,KAAK2vW,gBACEJ,EAAa7pW,OACpB1F,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASqoW,GAC5CvvW,KAAK2vW,iBAGL3vW,KAAKkH,QAAQq/C,UACbvmD,KAAK29I,YACL39I,KAAKumD,QAAQvmD,KAAKkH,QAAQq/C,eAQlCvmD,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASqoW,KAKxDI,cAAe,WACX3vW,KAAKk+I,OAAOjoF,QACZj2D,KAAK0uW,eAAiB,KACtB1uW,KAAKkH,QAAQmtB,SAAWr0B,KAAKq0B,SAC7Br0B,KAAKmvW,oBACLnvW,KAAKovW,gBAGTK,aAAc,WACVzvW,KAAK2vW,gBACD3vW,KAAKkH,QAAQq/C,UACbvmD,KAAK29I,YACL39I,KAAKumD,QAAQvmD,KAAKkH,QAAQq/C,WAIlC+8N,YAAa,SAASssF,GAClB,IAAIlgL,EAAU1vL,KAAK0vL,QACnB,GAAIA,GAAWA,EAAQggL,YAAa,CAChC,IAAIhqG,EAAS1lQ,KAAKuuR,QACdzlO,EAAQ9oD,KAAKq0B,SAEby0B,IACA4mI,EAAQmgL,uBACJ76O,EAAQlsE,EAAM1jD,IAAMsgQ,EAAOtgQ,IAAM0jD,EAAM1jD,GACvC0jD,EAAMt5B,IAAI,IAAKk2O,EAAOtgQ,GAGtB4vH,EAAQlsE,EAAM3kD,IAAMuhQ,EAAOvhQ,IAAM2kD,EAAM3kD,GACvC2kD,EAAMt5B,IAAI,IAAKk2O,EAAOvhQ,GAGtB6wH,EAAQlsE,EAAM97C,QAAU04P,EAAO14P,QAAU87C,EAAM97C,OAC/C87C,EAAMt5B,IAAI,QAASk2O,EAAO14P,OAG1BgoH,EAAQlsE,EAAMn8C,SAAW+4P,EAAO/4P,SAAWm8C,EAAMn8C,QACjDm8C,EAAMt5B,IAAI,SAAUk2O,EAAO/4P,QAG/B3M,KAAKq0B,SAAWy0B,EAChB4mI,EAAQogL,sBAEJF,GACAlgL,EAAQshG,uBAMxBo+E,aAAc,WACV,IAAI1pG,EAAS1lQ,KAAKk+I,OAAOwe,UAAS,GAC9Bx1J,EAAUlH,KAAKkH,QACnBlH,KAAK0lQ,OAAO,IAAIxqI,EAAKh0H,EAAQ9B,EAAG8B,EAAQ/C,EAAGuhQ,EAAO14P,MAAO04P,EAAO/4P,SAChE3M,KAAK+vW,UACL/vW,KAAKgwW,iBAGTzpT,QAAS,SAASA,GACd,IAAIhwC,EAASvW,KAAKuqS,SAAShkP,GAI3B,OAFAvmD,KAAKgwW,gBAEEz5V,GAGXy5V,cAAe,WACX,IAAI5qP,EAAiBplH,KAAKkH,QAAQq/C,SAAW,GACzC0pT,EAAgBjwW,KAAK0uW,eACzB,GAAIuB,GAAiB7qP,EAAe6pB,MAAO,CACvC,IAAIihO,EAAgBlwW,KAAKk+I,OAAOwe,WAC5ByzM,EAAU,IAAIzgL,EAAQo8E,UAAUokG,GAChCE,EAAgBH,EAAc/0I,eAAet/F,KAAK,MAElDy0O,EAAc,IAAIn1O,EAAK,EAAG,EAAGk1O,EAAcpjW,QAASojW,EAAczjW,UAClE2jW,EAAgBH,EAAQlhO,MAAMohO,EAAajrP,EAAe6pB,OAE9DghO,EAAcnjW,SAASwjW,EAAc90O,aAI7C6zO,kBAAmB,WACf,IAGIhoF,EAAW9/Q,EAHXL,EAAUlH,KAAKkH,QACfM,EAASN,EAAQspL,WAAWhpL,OAC5B8oL,EAAoBppL,EAAQopL,kBAGhC,IAAK/oL,EAAI,EAAGA,EAAIC,EAAQD,IACpB8/Q,EAAY,IAAI0nF,GACZ/uW,KAAMwI,EAAW,GACb8nL,EACAppL,EAAQspL,WAAWjpL,KAG3BvH,KAAKwwL,WAAW7uL,KAAK0lR,IAI7B3hB,OAAQ,SAASh9P,GACb,IAAIg9P,EAEJ,GAAIh9P,EACA,GAAIE,EAASF,GACT,OAAQA,GACJ,KAAKmlW,GACDnoG,EAAS1lQ,KAAKuwW,qBACd,MACJ,IA/cL,WAgdS7qG,EAAS1lQ,KAAKuwW,qBACd,IAAI5zL,EAAM38K,KAAK0vL,QAAQupE,KACvByM,EAAOtgQ,GAAKu3K,EAAIv3K,EAChBsgQ,EAAOvhQ,GAAKw4K,EAAIx4K,EAChB,MACJ,KAAKs9Q,GACD/b,EAAS1lQ,KAAKwwW,iBACd,MACJ,QACI9qG,EAAS1lQ,KAAKuuR,aAGtBvuR,KAAKywW,WAAW/nW,GAChB1I,KAAK0wW,uBACC1wW,KAAK0vL,SAAW1vL,KAAK0vL,QAAQihL,YAC/B3wW,KAAK4wW,0BAIblrG,EAAS1lQ,KAAKuuR,QAGlB,OAAO7oB,GAGX+qG,WAAY,SAASplR,GACjB,IAAInkF,EAAUlH,KAAKkH,QACfs0H,EAAUnwC,EAAKmwC,UACfp2H,EAAI8B,EAAQ9B,EAAIo2H,EAAQp2H,EACxBjB,EAAI+C,EAAQ/C,EAAIq3H,EAAQr3H,EACxB6I,EAAQ9F,EAAQ8F,MAAQ5J,EAAKwV,IAAIyyE,EAAKr+E,MAAO9F,EAAQokN,UACrD3+M,EAASzF,EAAQyF,OAASvJ,EAAKwV,IAAIyyE,EAAK1+E,OAAQzF,EAAQwyO,WAE5D15O,KAAKuuR,QAAU,IAAIrzJ,EAAK91H,EAAGjB,EAAG6I,EAAOL,GAErC3M,KAAKk+I,OAAOy1D,OAAO,CACfvuM,EAAGA,EACHjB,EAAGA,EACH6I,MAAOA,EACPL,OAAQA,KAIhBG,SAAU,SAASutH,GACf,IAAIA,EAGA,OAAOr6H,KAAKuuR,QAAQ/yJ,UAFpBx7H,KAAK0lQ,OAAO,IAAIxqI,EAAKb,EAAMj1H,EAAGi1H,EAAMl2H,EAAGnE,KAAKuuR,QAAQvhR,MAAOhN,KAAKuuR,QAAQ5hR,UAShFxF,MAAO,WACH,IAAIwkD,EAAO3rD,KAAKgpD,YAQhB,OANA2C,EAAKzkD,QAAQyoB,GAAK+/J,EAAQy9E,WAEtBntQ,KAAK0vL,SAAW1vL,KAAK0vL,QAAQggL,aAAe16O,EAAQh1H,KAAKq0B,YACzDs3B,EAAKzkD,QAAQmtB,SAAWw8U,GAAc7wW,KAAKq0B,WAGxC,IAAI2zP,GAAMr8N,EAAKzkD,UAG1Bk/B,OAAQ,SAAS19B,GACb,IAA4B+oE,EAAUq/R,EAAlCphL,EAAU1vL,KAAK0vL,QAKnB,GAJIw3E,EAAYx+P,KACZA,GAAQ,GAGR1I,KAAK8uW,cACD9uW,KAAKknR,YAAcx+Q,EAgBnB,OAfA+oE,EAAW,GACXq/R,EAAa,GACb9wW,KAAKknR,WAAax+Q,EACd1I,KAAKknR,YACLx3F,EAAQq6F,eAAepoR,KAAK3B,MAC5ByxE,EAAS9vE,KAAK3B,QAEd+mQ,EAAMhwO,OAAO24J,EAAQq6F,eAAgB/pR,MACrC8wW,EAAWnvW,KAAK3B,OAGf0vL,EAAQqhL,oBACTrhL,EAAQshL,kBAAkBv/R,EAAUq/R,IAGjC,GAKnB//T,OAAQ,SAASunF,EAAO/6C,EAAQk7L,GAC5B,IAAI1nO,EAAS/wC,KAAKk+I,OAAOntG,SACzB,GAAIunF,IAAU11H,EAAa,EACN,IAAb61Q,GAAsBz4Q,KAAK0vL,SAAW1vL,KAAK0vL,QAAQs3F,iBAAmB1uJ,IAAUvnF,EAAOunF,OACvFt4H,KAAK0vL,QAAQs3F,gBAAgB/5Q,IACzB,IAAIyiL,EAAQ+0F,WAAWzkR,KAAK0vL,QAAQm3F,iBAAkB,CAAC7mR,MAAO,CAAC+wC,EAAOunF,SAAS,GAGvF,IAEI24O,EACAC,EAHA/rV,EAAInlB,KAAK0lQ,SACTyrG,EAAK,IAAIn3O,EAAM70G,EAAEnY,MAAQ,EAAGmY,EAAExY,OAAS,GAIvC4wE,IACA0zR,EAAa34O,EAAQvnF,EAAOunF,MAC5B44O,EAAc/rV,EAAEo4D,SAASxsC,OAAOwsC,EAAQ,IAAM0zR,GAAYpnG,MAAMsnG,GAChEnxW,KAAK2uR,gBAAkB3uR,KAAK2uR,gBAAgB/kB,KAAKsnG,EAAYrnG,MAAM1kP,EAAEq2G,YACrEx7H,KAAK8M,SAASokW,IAGlBlxW,KAAKk+I,OAAOntG,OAAOunF,EAAO64O,GAC1BnxW,KAAKkH,QAAQyyC,SAAS2+E,MAAQA,EAE1Bt4H,KAAK0vL,SAAW1vL,KAAK0vL,QAAQy4F,oBAC7BnoR,KAAK0vL,QAAQy4F,mBAAmBvqQ,UAGpC5d,KAAK4wW,qBAED5wW,KAAK0vL,SACL1vL,KAAK0vL,QAAQtlL,QAAQujW,GAAY,CAAE3+T,KAAMhvC,OAIjD,OAAO+wC,GAGXg2O,YAAa,SAASrhR,GAClB,IAAiB6B,EAAGojC,EAAGuvN,EAAKk3G,EAAxB76V,EAAS,GAEb,IAAKhP,EAAI,EAAGA,EAAIvH,KAAKwwL,WAAWhpL,OAAQD,IAGpC,IADA6pW,EADMpxW,KAAKwwL,WAAWjpL,GACXw/Q,YACNp8O,EAAI,EAASA,EAAIymU,EAAK5pW,OAAQmjC,IAE/B,GADAuvN,EAAMk3G,EAAKzmU,GACC,OAARjlC,EAAe,CACf,IAAI4H,EAAS4sP,EAAI5sP,SACbA,EAAO2yI,OAAS3yI,EAAO2yI,OAASjgJ,MAChCuW,EAAO5U,KAAKu4P,QAEb,GAAY,MAARx0P,EAAc,CACrB,IAAI4B,EAAS4yP,EAAI5yP,SACbA,EAAO24I,OAAS34I,EAAO24I,OAASjgJ,MAChCuW,EAAO5U,KAAKu4P,QAGhB3jP,EAAO5U,KAAKu4P,GAKxB,OAAO3jP,GAGXq6V,mBAAoB,WAChBjuW,EAAEK,KAAKhD,KAAK+mR,eAAe,WACvB/mR,KAAK4d,cASbqqQ,aAAc,SAASopF,GACnB,IAAI9pW,EAAGmmR,EACP,IAAI9kR,EAASyoW,GAQN,OAAIA,aAAuBr3O,EACvBm0O,GAAiBkD,EAAarxW,KAAKwwL,YAEnCxwL,KAAKwwL,WAAWhpL,OAASxH,KAAKwwL,WAAW,GAAK,KATrD,IADA6gL,EAAcA,EAAYluT,oBACrB57C,EAAI,EAAGA,EAAIvH,KAAKwwL,WAAWhpL,OAAQD,IAEpC,IADAmmR,EAAM1tR,KAAKwwL,WAAWjpL,IACdL,QAAQ9E,KAAK+gD,qBAAuBkuT,EACxC,OAAO3jF,GAUvBo3E,YAAa,SAASr5M,GAClB,IAAItmI,EAAInlB,KAAK0lQ,SACTxlG,EAASzU,EAAK3gJ,OAAO,GAAGwN,cAAgBmzI,EAAK7kJ,MAAM,GAEvD,OAAIsC,EAAWic,EAAE+6I,IACNlgK,KAAKsxW,gBAAgBnsV,EAAE+6I,MAG3B/6I,EAAEo4D,UAGbo2H,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CACT,IACIqqW,EADAC,EAAexxW,KAAKkH,QAGxBlH,KAAKyxW,YAAY99J,OAAO3zM,KAAK0xW,eAAexqW,IAExClH,KAAK+7Q,oBAAoB70Q,EAAS,CAxpBtC,QACC,SACL,IACA,QAspBQlH,KAAK0lQ,OAAO,IAAIxqI,EAAKs2O,EAAapsW,EAAGosW,EAAartW,EAAGqtW,EAAaxkW,MAAOwkW,EAAa7kW,SACtF4kW,GAAe,GAGfrqW,EAAQspL,aACRghL,EAAahhL,WAAatpL,EAAQspL,WAClCxwL,KAAK2xW,qBAGTH,EAAehpW,EAAWgpW,EAActqW,IAEpCA,EAAQyyC,UAAY43T,IACpBvxW,KAAK+vW,UAGLyB,EAAajrT,SACbvmD,KAAKumD,QAAQirT,EAAajrT,WAKtCorT,kBAAmB,WACf,IAGInhG,EACAljQ,EACAhG,EALAy/Q,EAAc/mR,KAAK+mR,cACvB/mR,KAAKwwL,WAAa,GAClBxwL,KAAKqvW,oBAKL,IAAK,IAAIzlW,EAAM,EAAGA,EAAMm9Q,EAAYv/Q,OAAQoC,IAExC0D,GADAkjQ,EAAauW,EAAYn9Q,IACL0D,SACpBhG,EAASkpQ,EAAWlpQ,SAChBgG,EAAO2yI,OAAS3yI,EAAO2yI,QAAUjgJ,KACjCwwQ,EAAWljQ,OAAOtN,KAAKioR,aAAa36Q,EAAOpG,QAAQ9E,OAAS,MACrDkF,EAAO24I,OAAS34I,EAAO24I,QAAUjgJ,MACxCwwQ,EAAWlpQ,OAAOtH,KAAKioR,aAAa3gR,EAAOJ,QAAQ9E,OAAS,MAEhEouQ,EAAW8S,eAInBvH,oBAAqBrsF,EAAQ+qF,mBAE7Bi3F,eAAgB,SAASxqW,GACrB,MAAO,CACH2G,KAAM3G,EAAQkoC,KACd9hC,OAAQpG,EAAQoG,OAChB4hL,MAAOhoL,EAAQgoL,MACfj8J,KAAM/rB,EAAQ+rB,KACd4qG,OAAQ32H,EAAQ22H,SAIxB6yO,qBAAsB,WACd1wW,KAAK0vL,SACL1vL,KAAK0vL,QAAQtlL,QAAQo3Q,EAAkB,CAAExyO,KAAMhvC,KAAM0lQ,OAAQ1lQ,KAAKuuR,QAAQpnR,WAIlFmqW,gBAAiB,SAASj3O,GACtB,IAAItpF,EAAS/wC,KAAK+wC,SAEd8qF,EADS77H,KAAK0lQ,SACFlqI,UAMhB,OAJIzqF,EAAOunF,OACP+B,EAAMtpF,OAAOA,EAAOwsC,SAASqsL,KAAK/tI,GAAK,IAAM9qF,EAAOunF,OAGjD+B,GAGXk2O,mBAAoB,WAChB,IAAI7qG,EAAS1lQ,KAAK0lQ,SACd7pI,EAAK6pI,EAAOlqI,UACZO,EAAK2pI,EAAOjqI,cAEhB,OAAOP,EAAKe,WAAWj8H,KAAK0vL,QAAQ6hG,YAAY11J,GAAK77H,KAAK0vL,QAAQ6hG,YAAYx1J,KAGlFy0O,eAAgB,WACZ,IAAI9qG,EAAS1lQ,KAAK0lQ,SAASkF,cAAc5qQ,KAAK+wC,SAASunF,OACnDuD,EAAK6pI,EAAOlqI,UACZO,EAAK2pI,EAAOjqI,cAEhB,OAAOP,EAAKe,WAAWJ,EAAIE,IAG/Bg0O,QAAS,WACL,IAAIp2T,EAAW35C,KAAKkH,QAAQyyC,SAExBA,GAAYA,EAAS2+E,OACrBt4H,KAAK+wC,OAAO4I,EAAS2+E,OAGzBt4H,KAAK2uR,gBAAkB,IAAI30J,GAG/BkiJ,OAAQ,SAASxzQ,GACb,IAAIxB,EAAUlH,KAAKkH,QACfgoL,EAAQhoL,EAAQgoL,MAChBrxD,EAAS32H,EAAQ22H,OACjB5qG,EAAO/rB,EAAQ+rB,KAEfvqB,GAASu+P,EAAU/3E,EAAMrxD,UACzBA,EAASr1H,EAAW,GAAIq1H,EAAQqxD,EAAMrxD,SAGtCn1H,GAASu+P,EAAU/3E,EAAMj8J,QACzBA,EAAOi8J,EAAMj8J,MAGjBjzB,KAAKyxW,YAAY99J,OAAO,CACpB91E,OAAQA,EACR5qG,KAAMA,IAGN/rB,EAAQqnD,UAAYrnD,EAAQqnD,SAASqqN,SACrC54Q,KAAK0vL,QAAQkiL,gBAAgB5xW,KAAM0I,IAI3Ck+Q,SAAU,SAASl+Q,GACf,GAAI1I,KAAKsM,UAAW,CAChB,IAA4BulW,EAAxBnsG,EAAS1lQ,KAAK0lQ,SACdptI,EAAQt4H,KAAK+wC,SAASunF,MAE1B,GAAI5vH,EAAMi4K,UAAYj4K,EAAMi4K,UACxB,OAAO+qF,EAAUE,MAAMljQ,EAAOg9P,EAAQptI,GAAgB,GAGtD,GADAu5O,EAAenpW,EAAMvB,QAAQ4pC,OAAO20N,EAAOnoL,SAAU+6C,GACjDotI,EAAOvwO,SAAS08U,GAChB,OAAO7xW,OAMvB4R,OAAQ,WACJ,MAAO,CACHo9V,QAAShvW,KAAKkH,QAAQyoB,KAI9Bw/U,kBAAmB,WACf,IAIIsC,EAkvIevzN,EACnBtiB,EAvvII10H,EAAUlH,KAAKkH,QACfihK,EAAgBnoK,KAAK0xW,eAAexqW,GACpC4qW,EAAiB5qW,EAAQg3I,OACzBx4I,GAAQwB,EAAQxB,KAAO,IAAIy9C,oBAG/BglH,EAAcn7J,MAAQ9F,EAAQ8F,MAC9Bm7J,EAAcx7J,OAASzF,EAAQyF,OAE3BzD,EAAW4oW,GACXL,EAAcK,EAAevnW,KAAKvK,KAAMkH,GACjCihK,EAAct6J,MACrB4jW,EAAc,IAAInlO,EAAK67B,GA4uIT,KADlBvsC,GADmBsiB,EAzuIGuzN,GA0uIRx1F,mBAAmB1+I,YAAY,OACxC3kF,OAAOxzC,GAA6B,IAAlBw2H,EAAKhjF,OAAOz0C,GACnC+5I,EAAOpxI,UAAU8uH,EAAKhjF,OAAOxzC,GAAIw2H,EAAKhjF,OAAOz0C,IA1uIzCstW,EADe,aAAR/rW,EACO,IAAI23Q,EAAUl1G,GACb,UAARziK,EACO,IAAI04H,EAAO+pC,GACV,QAARziK,EACO,IAAIm3Q,EAAU10G,GACb,SAARziK,EACO,IAAI0oI,EAAM+5B,GAEV,IAAI77B,EAAK67B,GAG3BnoK,KAAKyxW,YAAcA,EACnBzxW,KAAKk+I,OAAOnkG,OAAO/5C,KAAKyxW,gBAO5BznF,GAAawkF,GAAezrW,OAAO,CACnCoF,KAAM,SAASg2B,EAAMC,EAAIl3B,GACrB,IAAIe,EAAOjI,KACXwuW,GAAezmW,GAAGI,KAAKoC,KAAKtC,EAAMf,GAClClH,KAAKkvW,yBACLlvW,KAAK+xW,cACL9pW,EAAKmnC,KAAO,IAAIsgJ,EAAQ2vF,SAASp3Q,EAAKf,SACtCe,EAAKmnC,KAAKnc,KAp1BA,eAq1BVhrB,EAAKi2I,OAAOnkG,OAAO9xC,EAAKmnC,MACxBnnC,EAAK+pW,aAAe/pW,EAAKgqW,aAAe,IAAIj4O,EAC5C/xH,EAAKiqW,WAAW/zU,GAChBl2B,EAAKkqW,WAAW/zU,GAChBn2B,EAAKs+C,QAAQt+C,EAAKf,QAAQq/C,SAC1Bt+C,EAAKmqW,SAAW,GACZp9O,EAAQ9tH,IAAYA,EAAQm6H,QAC5Bp5H,EAAKo5H,OAAOn6H,EAAQm6H,SAI5Bn6H,QAAS,CACLgoL,MAAO,CACHrxD,OAAQ,IAEZwgJ,SAAU5nI,GACV6nI,OAAQ7nI,GACRpV,OAAQ,GACR+tD,YAAY,EACZijL,cAAelhU,EACfmhU,YAAanhU,GAGjBm+T,qBAAsB,SAASxmT,GAC3B9oD,KAAKkvW,uBAAuBpmT,GAAS9oD,KAAKq0B,WAG9C66U,uBAAwB,SAASpmT,GAC7B,GAAI9oD,KAAK0vL,SAAW1vL,KAAK0vL,QAAQggL,YAAa,CAC1C,IAAI6C,EAAUvyW,KAAK0vL,QAAQ8iL,SACvBtrW,EAixGhB,SAAkCmtB,GAC9B,IAAI9d,EAAS,GAITy+G,GAFJ3gG,EAAWA,GAAY,IAEFuM,OAA2B,OAAlBvM,EAASuM,OACnCrqB,EAAOgwC,QAAUlyB,EAASuM,MAG1Bo0F,EAAQ3gG,EAAS3uB,OAA2B,OAAlB2uB,EAAS3uB,OACnC6Q,EAAO7Q,KAAO2uB,EAAS3uB,MAGvBsvH,EAAQ3gG,EAAS8J,OAA2B,OAAlB9J,EAAS8J,OACnC5nB,EAAO4nB,KAAO9J,EAAS8J,MAGvB62F,EAAQ3gG,EAASg+U,gBAA6C,OAA3Bh+U,EAASg+U,gBAC5C97V,EAAO87V,cAAgBh+U,EAASg+U,eAGhCr9O,EAAQ3gG,EAASo+U,QAA6B,OAAnBp+U,EAASo+U,QACpCl8V,EAAOk8V,MAAQp+U,EAASo+U,OAGxBz9O,EAAQ3gG,EAASq+U,QAA6B,OAAnBr+U,EAASq+U,QACpCn8V,EAAOm8V,MAAQr+U,EAASq+U,OAGxB19O,EAAQ3gG,EAAS+J,KAAuB,OAAhB/J,EAAS+J,KACjC7nB,EAAO6nB,GAAK/J,EAAS+J,IAGrB42F,EAAQ3gG,EAASi+U,cAAyC,OAAzBj+U,EAASi+U,cAC1C/7V,EAAO+7V,YAAcj+U,EAASi+U,aAG9Bt9O,EAAQ3gG,EAASs+U,MAAyB,OAAjBt+U,EAASs+U,MAClCp8V,EAAOo8V,IAAMt+U,EAASs+U,KAGtB39O,EAAQ3gG,EAASu+U,MAAyB,OAAjBv+U,EAASu+U,MAClCr8V,EAAOq8V,IAAMv+U,EAASu+U,KAG1B,OAAOr8V,EA9zGes8V,CAAyB/pT,GAAS9oD,KAAKq0B,UAErD,GAAIy0B,EAAO,CACP,GAAIksE,EAAQ9tH,EAAQi3B,MAAO,CACvB,IAAIA,EAAOo0U,EAAQrrW,EAAQi3B,MACvBA,GAAQ62F,EAAQ9tH,EAAQmrW,iBACzBl0U,EAAOA,EAAK8pP,aAAa/gR,EAAQmrW,gBAEpCryW,KAAKsN,OAAO6wB,QACL62F,EAAQ9tH,EAAQurW,QAAUz9O,EAAQ9tH,EAAQwrW,QACjD1yW,KAAKsN,OAAO,IAAI0sH,EAAM9yH,EAAQurW,MAAOvrW,EAAQwrW,QAGjD,GAAI19O,EAAQ9tH,EAAQk3B,IAAK,CACrB,IAAIA,EAAKm0U,EAAQrrW,EAAQk3B,IACrBA,GAAM42F,EAAQ9tH,EAAQorW,eACtBl0U,EAAKA,EAAG6pP,aAAa/gR,EAAQorW,cAEjCtyW,KAAKsH,OAAO82B,QACL42F,EAAQ9tH,EAAQyrW,MAAQ39O,EAAQ9tH,EAAQ0rW,MAC/C5yW,KAAKsH,OAAO,IAAI0yH,EAAM9yH,EAAQyrW,IAAKzrW,EAAQ0rW,MAG3C59O,EAAQ9tH,EAAQxB,OAAS1F,KAAK0F,SAAWwB,EAAQxB,OACjD1F,KAAKqhI,OAAO,IACZrhI,KAAK0F,KAAKwB,EAAQxB,OAGtB1F,KAAKq0B,SAAWy0B,EAEhB9oD,KAAK29I,YACL39I,KAAK2zM,OAAO3zM,KAAKkH,cAEjBlH,KAAKkH,QAAUsB,EAAW,GAAItB,EAASlH,KAAKkH,WAKxDo8Q,YAAa,SAASssF,GAClB,GAAI5vW,KAAK0vL,SAAW1vL,KAAK0vL,QAAQggL,aACzB1vW,KAAK0vL,QAAQojL,sBAAuB,CACpC,IAAIhqT,EAAQ9oD,KAAK0vL,QAAQojL,sBAAsBx2S,SAASt8D,KAAKq0B,SAASg5B,KAElEvE,IACA9oD,KAAK0vL,QAAQmgL,uBACT76O,EAAQh1H,KAAKkH,QAAQurW,QAAiC,OAAvBzyW,KAAKkH,QAAQurW,OAC5CM,GAAW,OAAQjqT,GACnBiqT,GAAW,gBAAiBjqT,GAC5BA,EAAMt5B,IAAI,QAASxvB,KAAKkH,QAAQurW,OAChC3pT,EAAMt5B,IAAI,QAASxvB,KAAKkH,QAAQwrW,SAEhC5pT,EAAMt5B,IAAI,OAAQxvB,KAAKkH,QAAQi3B,MAC3B62F,EAAQlsE,EAAMupT,gBACdvpT,EAAMt5B,IAAI,gBAAiBxvB,KAAK+nR,gBAAkB/nR,KAAK+nR,gBAAgB7gR,QAAQ9E,KAAO,MAE1F2wW,GAAW,QAASjqT,GACpBiqT,GAAW,QAASjqT,IAGpBksE,EAAQh1H,KAAKkH,QAAQyrW,MAA6B,OAArB3yW,KAAKkH,QAAQyrW,KAC1CI,GAAW,KAAMjqT,GACjBiqT,GAAW,cAAejqT,GAC1BA,EAAMt5B,IAAI,MAAOxvB,KAAKkH,QAAQyrW,KAC9B7pT,EAAMt5B,IAAI,MAAOxvB,KAAKkH,QAAQ0rW,OAE9B9pT,EAAMt5B,IAAI,KAAMxvB,KAAKkH,QAAQk3B,IACzB42F,EAAQlsE,EAAMwpT,cACdxpT,EAAMt5B,IAAI,cAAexvB,KAAK2jR,gBAAkB3jR,KAAK2jR,gBAAgBz8Q,QAAQ9E,KAAO,MAExF2wW,GAAW,MAAOjqT,GAClBiqT,GAAW,MAAOjqT,IAGlBksE,EAAQh1H,KAAKkH,QAAQxB,OAASsvH,EAAQlsE,EAAMpjD,OAC5CojD,EAAMt5B,IAAI,OAAQxvB,KAAKkH,QAAQxB,MAGnC1F,KAAKq0B,SAAWy0B,EAChB9oD,KAAK0vL,QAAQogL,sBAETF,GACA5vW,KAAK0vL,QAAQw4F,4BAYjCiD,YAAa,WACT,OAAOnrR,KAAKirR,yBAA2BjrR,KAAKirR,yBAAyBn+Q,WAAa9M,KAAKgyW,cAG3FE,WAAY,SAAS5kW,GACjB,IAEI+mB,EAFA2+U,EAAc1lW,aAAkB06Q,GAChCirF,EAAmBjzW,KAAKkH,QAAQmrW,eAAiBlhU,EAEjD6hU,IAAgB1lW,EAAO26Q,aAAagrF,KAIpC3lW,IAAW1K,IACX5C,KAAKm+B,KAAO7wB,GAGhBtN,KAAKkzW,6BAEU,OAAX5lW,EACItN,KAAK+nR,kBACL/nR,KAAKgyW,cAAgBhyW,KAAKirR,0BAA4BjrR,KAAK+nR,iBAAiBj7Q,WAC5E9M,KAAKmzW,wBACLnzW,KAAKozW,gBAAgB,KAAMpzW,KAAKgyW,eAE7B1kW,aAAkByhW,KACzB16U,EAAW/mB,EAAO2yI,MAAM5rH,WAEpBr0B,KAAKozW,gBAAgB/+U,EAAS1E,IAElC3vB,KAAK+nR,gBAAkBz6Q,EACvBtN,KAAK+nR,gBAAgBhB,YAAYplR,KAAK3B,OAC/BsN,aAAkB0sH,GACzBh6H,KAAKozW,gBAAgB,KAAM9lW,GAC3BtN,KAAKgyW,aAAe1kW,EAChBtN,KAAK+nR,iBACL/nR,KAAKmzW,yBAGFH,KACP3+U,EAAW/mB,EAAO+mB,WAEdr0B,KAAKozW,gBAAgB/+U,EAAS1E,IAGlC3vB,KAAK+nR,gBAAkBz6Q,EAAO26Q,aAAagrF,GAC3CjzW,KAAK+nR,gBAAgBhB,YAAYplR,KAAK3B,SAI9CsN,OAAQ,SAASA,EAAQmrQ,GAQrB,OAPIxR,EAAU35P,KACNmrQ,GAAYz4Q,KAAK0vL,SACjB1vL,KAAK0vL,QAAQs3F,gBAAgBtB,iBAAiB,IAAIh2F,EAAQozF,mBAAmB9iR,KAAMsN,IAEvFtN,KAAKkyW,WAAW5kW,GAChBtN,KAAK4d,WAEF5d,KAAK+nR,gBAAkB/nR,KAAK+nR,gBAAkB/nR,KAAKgyW,cAG9DoB,gBAAiB,SAASj1U,EAAM+7K,GAC5Bl6M,KAAKkH,QAAQi3B,KAAOA,EAChB+7K,GACAl6M,KAAKkH,QAAQurW,MAAQv4J,EAAU90M,EAC/BpF,KAAKkH,QAAQwrW,MAAQx4J,EAAU/1M,IAE/BnE,KAAKkH,QAAQurW,MAAQ,KACrBzyW,KAAKkH,QAAQwrW,MAAQ,OAU7BW,cAAe,SAAS3qW,GACpB,IAAIA,EAYA,OAHK1I,KAAKszW,iBACNtzW,KAAKszW,eAAiB,IAAI5jL,EAAQi7E,YAAY3qQ,KAAKmrR,cAAe,KAAM,OAErEnrR,KAAKszW,eAXZ,KAAI5qW,aAAiBgnL,EAAQi7E,aAKzB,KAAM,+CAJNjiQ,EAAMmjB,KAAO,KACb7rB,KAAKszW,eAAiB5qW,EACtB1I,KAAKsN,OAAO5E,EAAM2xH,QAe9B+wJ,YAAa,WACT,OAAOprR,KAAKkrR,yBAA2BlrR,KAAKkrR,yBAAyBp+Q,WAAa9M,KAAKiyW,cAG3FE,WAAY,SAAS7qW,GACjB,IAEI+sB,EAFAk/U,EAAcjsW,aAAkB0gR,GAChCirF,EAAmBjzW,KAAKkH,QAAQorW,aAAenhU,EAG/CoiU,IAAgBjsW,EAAO2gR,aAAagrF,KAIpC3rW,IAAW1E,IACX5C,KAAKo+B,GAAK92B,GAGdtH,KAAKwzW,6BAEU,OAAXlsW,EACItH,KAAK2jR,kBACL3jR,KAAKiyW,cAAgBjyW,KAAKkrR,0BAA4BlrR,KAAK2jR,iBAAiB72Q,WAC5E9M,KAAKyzW,wBACLzzW,KAAK0zW,cAAc,KAAM1zW,KAAKiyW,eAE3B3qW,aAAkBynW,KACzB16U,EAAW/sB,EAAO24I,MAAM5rH,WAEpBr0B,KAAK0zW,cAAcr/U,EAAS1E,IAEhC3vB,KAAK2jR,gBAAkBr8Q,EACvBtH,KAAK2jR,gBAAgBoD,YAAYplR,KAAK3B,OAC/BsH,aAAkB0yH,GACzBh6H,KAAK0zW,cAAc,KAAMpsW,GACzBtH,KAAKiyW,aAAe3qW,EAChBtH,KAAK2jR,iBACL3jR,KAAKyzW,yBAEFF,KACPl/U,EAAW/sB,EAAO+sB,WAEdr0B,KAAK0zW,cAAcr/U,EAAS1E,IAEhC3vB,KAAK2jR,gBAAkBr8Q,EAAO2gR,aAAagrF,GAC3CjzW,KAAK2jR,gBAAgBoD,YAAYplR,KAAK3B,SAI9CsH,OAAQ,SAASA,EAAQmxQ,GASrB,OARIxR,EAAU3/P,KACNmxQ,GAAYz4Q,KAAK0vL,SACjB1vL,KAAK0vL,QAAQs3F,gBAAgBtB,iBAAiB,IAAIh2F,EAAQozF,mBAAmB9iR,KAAM4C,EAAa0E,IAEpGtH,KAAKmyW,WAAW7qW,GAEhBtH,KAAK4d,WAEF5d,KAAK2jR,gBAAkB3jR,KAAK2jR,gBAAkB3jR,KAAKiyW,cAG9DyB,cAAe,SAASt1U,EAAI+7K,GACxBn6M,KAAKkH,QAAQk3B,GAAKA,EACd+7K,GACAn6M,KAAKkH,QAAQyrW,IAAMx4J,EAAQ/0M,EAC3BpF,KAAKkH,QAAQ0rW,IAAMz4J,EAAQh2M,IAE3BnE,KAAKkH,QAAQyrW,IAAM,KACnB3yW,KAAKkH,QAAQ0rW,IAAM,OAU3Be,cAAe,SAASjrW,GACpB,IAAIA,EAYA,OAHK1I,KAAK4zW,iBACN5zW,KAAK4zW,eAAiB,IAAIlkL,EAAQi7E,YAAY3qQ,KAAKorR,cAAe,KAAM,OAErEprR,KAAK4zW,eAXZ,KAAIlrW,aAAiBgnL,EAAQi7E,aAKzB,KAAM,+CAJNjiQ,EAAMojB,MAAQ,KACd9rB,KAAK4zW,eAAiBlrW,EACtB1I,KAAKsH,OAAOoB,EAAM2xH,QAY9Bs3O,kBAAmB,WACf3xW,KAAKqjR,iBAAiBrjR,KAAKsN,SAAU,UACrCtN,KAAKqjR,iBAAiBrjR,KAAKsH,SAAU,WAGzC+7Q,iBAAkB,SAASt8P,EAAU3kB,GACjC,IAAI6F,EAAOjI,KACP0vL,EAAUznL,EAAKynL,QACnB,GAAI3oK,aAAoBgoV,KAAcr/K,EAAQuyF,aAAal7P,EAASk5H,MAAMtwH,IAAK,CAC3E,IAAI0E,EAAWtN,EAASk5H,MAAM5rH,SAC1Bw/U,EAAgB9sV,EAAS7f,QAAQ9E,KACjC0xW,EAAe,WACf,IAAI7zN,EAAQyvC,EAAQ8iL,SAASn+U,EAAS1E,IACtC5I,EAAWk5H,EAAMgoI,aAAa4rF,GAC9B5rW,EAAK7F,GAAM2kB,GAAU,GACrB9e,EAAKq7Q,eAET,GAAI5zF,EAAQ8iL,SAASn+U,EAAS1E,IAC3BmkV,QACI,CACH,IAAIC,EAAerkL,EAAQskL,oBAAoB13S,SAASjoC,EAASg5B,KAC7D0mT,GACArkL,EAAQukL,2BAA2BtyW,KAAKoyW,EAAaG,WAAWJ,UAIxE7rW,EAAK7F,GAAM2kB,GAAU,IAI7Bw/B,QAAS,SAASA,GACd,IAAIhwC,EAASvW,KAAKuqS,SAAShkP,GAI3B,OAHIyuE,EAAQzuE,IACRvmD,KAAKgwW,gBAEFz5V,GAGXq4V,qBAAsB,SAAS1nW,GAC3B,IAAIg3I,EAaJ,OAZIh1I,EAAWhC,EAAQg3I,QACnBA,EAASh3I,EAAQg3I,OAAO3zI,KAAKvK,KAAMkH,GAC5BA,EAAQ05B,OACfs9G,EAAS,IAAI2+H,EAAU31Q,IAGvBg3I,IACAl+I,KAAK0uW,eAAiBxwN,EACtBA,EAAOiiI,gBAAiB,EACxBngR,KAAKk+I,OAAOnkG,OAAOmkG,IAGhBA,GAGXywN,qBAAsB,SAASznW,GACvBgC,EAAWhC,EAAQg3I,SACnBl+I,KAAKk+I,OAAOnnH,OAAO/2B,KAAK0uW,gBACxB1uW,KAAK4uW,qBAAqB1nW,IAE1BlH,KAAK0uW,eAAe/6J,OAAOzsM,IAInC8oW,cAAe,WACX,GAAIhwW,KAAK0uW,eAAgB,CAMrB,IALA,IAAI3xV,EA9rCgB,EA+rChBskH,EAASrhI,KAAK4iM,YACduC,EAAS/hM,EAAKmN,MAAM8wH,EAAO75H,OAAS,GACpC09L,EAAWC,EAAS,EAEjBD,EAAW,GAAK7jE,EAAO6jE,GAAUp0I,OAAOuwE,EAAO8jE,KAClDD,IACAC,IAGJ,IAeI9qE,EAfAqH,EAAWL,EAAO8jE,GAClB9iE,EAAahB,EAAO6jE,GAEpBh5D,EAAclsI,KAAK0uW,eAAehyM,WAClC1vJ,EAAQk/H,EAAYl/H,MACpBL,EAASu/H,EAAYv/H,OACrBwnW,EAAc9yO,EAAO75H,OAAS,GAAM,EACpCg2E,EAAW6kD,EAAW7H,WAAWkH,GAUrC,GARIyyO,GAAe9yO,EAAO75H,OAAS,GAAKg2E,EAAW,IAC7C6kD,EAAWl+H,IAAMu9H,EAASv9H,GAAKq5E,EAAWxwE,GAAWq1H,EAAWj9H,IAAMs8H,EAASt8H,GAAKo4E,EAAW7wE,KACjGwnW,GAAc,EACdp3V,EAAS,GAKTo3V,EAAa,CACb,IAAI77O,EAAQkd,EAAK7vB,KAAK6P,IAAIpyH,EAAKqwC,MAAMiuF,EAASv9H,EAAIk+H,EAAWl+H,EAAGu9H,EAASt8H,EAAIi9H,EAAWj9H,IACxFi1H,EAAQ,IAAIL,GAAO0H,EAASt8H,EAAIi9H,EAAWj9H,GAAK,EAAIi9H,EAAWj9H,GAAIs8H,EAASv9H,EAAIk+H,EAAWl+H,GAAK,EAAIk+H,EAAWl+H,GAEvF,KAApBf,EAAK8T,IAAIohH,IACT+B,EAAMj1H,GAAK2X,EACXs9G,EAAMl2H,GAAKwI,EAAS,GACb2rH,EAAQ,KAAQ,GACvB+B,EAAMj1H,GAAK4H,EAAQ,EACnBqtH,EAAMl2H,GAAKwI,EAASoQ,GACbu7G,GAAS,IAAO,EAAIA,GAASA,EAAQ,GAC5C+B,EAAMl2H,GAAKwI,GACJ2rH,EAAQ,GAAKA,EAAQ,MAC5B+B,EAAMj1H,GAAK4H,EACXqtH,EAAMl2H,GAAKwI,OAEZ,CACH,IAAIynW,EAAShxW,EAAKmN,MAAM8wH,EAAO75H,OAAS,GACxC6yH,EAAQgH,EAAO+yO,GAAQjtW,QACvBk7H,EAAahB,EAAO+yO,EAAS,GAC7B1yO,EAAWL,EAAO+yO,EAAS,GAE3B,IAAI7tR,EAAU87C,EAAWj9H,GAAKi1H,EAAMj1H,GAAKs8H,EAASt8H,GAAKi1H,EAAMj1H,EAAI2X,GAAUmvH,EAAYl/H,MAAQ+P,EAC3FypE,EAAU67C,EAAWl+H,GAAKk2H,EAAMl2H,GAAKu9H,EAASv9H,GAAKk2H,EAAMl2H,EAAI4Y,GAAUmvH,EAAYv/H,OAASoQ,EAEhGs9G,EAAMj1H,GAAKmhF,EACX8zC,EAAMl2H,GAAKqiF,EAGfxmF,KAAK0uW,eAAe5hW,SAASutH,KAQrCj0F,OAAQ,SAAS19B,GACb,IAA4B+oE,EAAUq/R,EAAlCphL,EAAU1vL,KAAK0vL,QACnB,GAAI1vL,KAAK8uW,cACD9uW,KAAKknR,aAAex+Q,EAyBpB,OAxBA1I,KAAKknR,WAAax+Q,EAClB+oE,EAAW,GACXq/R,EAAa,GACT9wW,KAAKknR,YACLlnR,KAAK+jR,QAAU,IAAI4I,EAAsB3sR,KAAMA,KAAKkH,QAAQ6+B,WAC5D2pJ,EAAQ2hG,OAAOrxR,KAAK+jR,SAAS,GAC7Br0F,EAAQq6F,eAAepoR,KAAK3B,MAC5ByxE,EAAS9vE,KAAK3B,OAEVA,KAAK+jR,UACLr0F,EAAQ2hG,OAAOrxR,KAAK+jR,SAAS,GAC7Bhd,EAAMhwO,OAAO24J,EAAQq6F,eAAgB/pR,MACrCA,KAAK+jR,QAAUnhR,EACfkuW,EAAWnvW,KAAK3B,OAIpBA,KAAK+jR,SACL/jR,KAAK+jR,QAAQnmQ,UAGZ8xK,EAAQqhL,oBACTrhL,EAAQshL,kBAAkBv/R,EAAUq/R,IAEjC,GAUnBprG,OAAQ,SAASh9P,GACb,IAAIA,GAAUE,EAASF,GAGnB,OAAO1I,KAAKuuR,QAFZvuR,KAAKuuR,QAAU7lR,GAUvBhD,KAAM,SAASgD,GACX,IAAIxB,EAAUlH,KAAKkH,QACnB,IAAIwB,EAOA,OAAOxB,EAAQxB,KANXgD,IAAUxB,EAAQxB,OAClBwB,EAAQxB,KAAOgD,EACf1I,KAAK+xW,cACL/xW,KAAK4d,YAOjBm0V,YAAa,WACT,IAAIrsW,GAAQ1F,KAAKkH,QAAQxB,MAAQ,IAAI4S,cAEjCtY,KAAKq0W,QADL3uW,GAAQ+nW,EACO,IAAI7iF,EAAgB5qR,MAEpB,IAAI2qR,EAAe3qR,OAU1CqhI,OAAQ,SAAS34H,GACb,IAAIA,EAaG,CACH,IAAI4rW,EAAM,GACV,GAAIrtG,EAAUjnQ,KAAKoyW,UACf,IAAK,IAAIttW,EAAI,EAAGA,EAAI9E,KAAKoyW,SAAS5qW,OAAQ1C,IACtCwvW,EAAI3yW,KAAK3B,KAAKoyW,SAASttW,GAAGu1H,OAGlC,OAAOi6O,EAnBPt0W,KAAKoyW,SAAW,GAChB,IAAK,IAAI7qW,EAAI,EAAGA,EAAImB,EAAMlB,OAAQD,IAAK,CACnC,IAAI+vC,EAAa5uC,EAAMnB,GACvB,GAAI+vC,aAAsBo4I,EAAQ11D,MAC9Bh6H,KAAKoyW,SAASzwW,KAAK,IAAI+tL,EAAQi7E,YAAYrzN,QACxC,KAAIA,EAAW5oC,eAAe,OAAQ4oC,EAAW5oC,eAAe,KAGnE,KAAM,+EAFN1O,KAAKoyW,SAASzwW,KAAK,IAAI+tL,EAAQi7E,YAAY,IAAI3wI,EAAM1iF,EAAWlyC,EAAGkyC,EAAWnzC,QAoB9Fy+L,UAAW,WACP,IAAI0xK,EAAM,CAACt0W,KAAKmrR,eAChB,GAAInrR,KAAKoyW,SACL,IAAK,IAAIttW,EAAI,EAAGA,EAAI9E,KAAKoyW,SAAS5qW,OAAQ1C,IACtCwvW,EAAI3yW,KAAK3B,KAAKoyW,SAASttW,GAAGu1H,OAIlC,OADAi6O,EAAI3yW,KAAK3B,KAAKorR,eACPkpF,GAGX12V,QAAS,WACL5d,KAAKu0W,qBACLv0W,KAAKw0W,eACLx0W,KAAKgwW,gBAEDhwW,KAAK+jR,SACL/jR,KAAK+jR,QAAQnmQ,WAIrB22V,mBAAoB,WAChB,IACIppF,EAAaC,EACbqpF,EAAkBC,EAFlBlkG,EAAaxwQ,KAGbsN,EAASkjQ,EAAWljQ,SACpBhG,EAASkpQ,EAAWlpQ,SAEpBgG,aAAkB0sH,EAClBmxJ,EAAc79Q,EACPA,aAAkByhW,KAErB0F,EADAvG,GAAgB5gW,GACGA,EAAO2yI,MAAMuwC,WAEb,CAACljL,IAIxBhG,aAAkB0yH,EAClBoxJ,EAAc9jR,EACPA,aAAkBynW,KAErB2F,EADAxG,GAAgB5mW,GACGA,EAAO24I,MAAMuwC,WAEb,CAAClpL,IAIxB6jR,EACIupF,IACAlkG,EAAW0a,yBAA2BijF,GAAiBhjF,EAAaupF,IAEjED,IACHrpF,EACA5a,EAAWya,yBAA2BkjF,GAAiB/iF,EAAaqpF,GAC7DC,GACP10W,KAAK20W,uBAAuBF,EAAkBC,KAK1DC,uBAAwB,SAASF,EAAkBC,GAC/C,IAEIE,EAAsBC,EACtB1pF,EAAaC,EACb0pF,EAAWC,EACXhtF,EAAiBpE,EACjBqxF,EAAWC,EACXhxM,EAPAixM,EAAiBxH,GACjBhxE,EAAUgxE,GAQd,IAAKsH,EAAY,EAAGA,EAAYP,EAAiBjtW,OAAQwtW,IAErD,IAAK9G,GADLnmF,EAAkB0sF,EAAiBO,IAI/B,IAFA7pF,EAAcpD,EAAgBj7Q,WAEzBmoW,EAAY,EAAGA,EAAYP,EAAiBltW,OAAQytW,IAEhD/G,GADLvqF,EAAkB+wF,EAAiBO,MAE/B7pF,EAAczH,EAAgB72Q,YAC9Bm3J,EAAO7gK,EAAK2S,MAAMo1Q,EAAY3wJ,WAAW4wJ,KAE9B8pF,GAAkBl1W,KAAK0vL,SAAW1vL,KAAKm1W,iBAAiBhqF,EAAaC,EAAarD,EAAiBpE,KAC1GuxF,EAAiBjxM,EACjB2wM,EAAuB7sF,EACvB8sF,EAAuBlxF,GAGvB1/G,EAAOy4H,IACPo4E,EAAY/sF,EACZgtF,EAAYpxF,EACZ+Y,EAAUz4H,IAO1B2wM,IACAE,EAAYF,EACZG,EAAYF,GAGhB70W,KAAKirR,yBAA2B6pF,EAChC90W,KAAKkrR,yBAA2B6pF,GAGpCI,iBAAkB,SAAShqF,EAAaC,EAAarD,EAAiBpE,GAClE,IAAIyxF,EAASp1W,KAAKq0W,QACdgB,GAAY,EAChB,GAAID,aAAkBxqF,EAAiB,CACnC,IACIt1Q,EAAO3J,EACN0/E,EAAMiqR,EAFPj0O,EAAS+zO,EAAOtqF,YAAYK,EAAaC,EAAarD,EAAiBpE,GAI3E2xF,EAAUt1W,KAAKu1W,iBAAiBpqF,EAAaC,EAAarD,EAAgB9nI,MAAO0jI,EAAgB1jI,OACjG5e,EAAOl3H,QAAQghR,GACf9pJ,EAAO1/H,KAAKypR,GAGZ,IAAK,IAAIxhR,EAAM,EAAGA,EAAMy3H,EAAO75H,OAAQoC,IAcnC,GAbA0L,EAAQ+rH,EAAOz3H,EAAM,GACrB+B,EAAM01H,EAAOz3H,IACbyhF,EAAO,IAAI6vC,EAAK93H,EAAK+S,IAAIb,EAAMlQ,EAAGuG,EAAIvG,GAAIhC,EAAK+S,IAAIb,EAAMnR,EAAGwH,EAAIxH,GAChDf,EAAK8T,IAAI5B,EAAMlQ,EAAIuG,EAAIvG,GAAIhC,EAAK8T,IAAI5B,EAAMnR,EAAIwH,EAAIxH,KACzD6I,MAAQ,IACbq+E,EAAKjmF,IACLimF,EAAKr+E,OAAS,GAEdq+E,EAAK1+E,OAAS,IACd0+E,EAAKlnF,IACLknF,EAAK1+E,QAAU,IAGd0+E,EAAKs1F,WAAa3gL,KAAK0vL,QAAQ8lL,gBAAgBC,YAAYpqR,EAAMiqR,GAAU,CAC5ED,GAAY,EACZ,OAIZ,OAAOA,GAGXE,iBAAkB,SAASpqF,EAAaC,EAAanS,EAAaC,GAC9D,IAAIo8F,EAAU,GAOd,OANIt1W,KAAK01W,oBAAoBvqF,EAAalS,IACtCq8F,EAAQ3zW,KAAKs3Q,GAEbj5Q,KAAK01W,oBAAoBtqF,EAAalS,IACtCo8F,EAAQ3zW,KAAKu3Q,GAEVo8F,GAGXI,oBAAqB,SAASr7O,EAAO4lB,GACjC,IAA6B4xN,EAEzB/lF,EAAQC,EAFRrmB,EAASzlH,EAAMylH,SACfptI,EAAQ2nB,EAAMlvG,SAASunF,MAEvBq9O,EAAUjwG,EAAOtgQ,EACjBwwW,EAAUlwG,EAAOvhQ,EAKrB,OAFA2nR,GADA+lF,EAAex3O,EAAMlzH,QAAQ4pC,OAAO20N,EAAOnoL,SAAU+6C,IAC/BlzH,EACtB2mR,EAAS8lF,EAAa1tW,EACf2nR,EAAS6pF,GAAW7pF,EAAU6pF,EAAUjwG,EAAO14P,OAAU++Q,EAAS6pF,GAAW7pF,EAAU6pF,EAAUlwG,EAAO/4P,QAGnHgnM,OAAQ,SAASzsM,GACb,GAAIA,EAAS,CACTlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAE5C,IAAIm6H,EAASrhI,KAAKkH,QAAQm6H,OAEtBrM,EAAQqM,IAAWA,EAAO75H,OAAS,IACnCxH,KAAKqhI,OAAOA,GACZrhI,KAAKw0W,iBAGJttW,GAAWA,EAAQq/C,SAAYr/C,EAAQ05B,OACxC5gC,KAAKumD,QAAQr/C,EAAQq/C,SAGzBvmD,KAAKovC,KAAKukK,OAAO,CACb1gL,KAAM/rB,EAAQ+rB,KACd4qG,OAAQ32H,EAAQ22H,OAChBwgJ,SAAUn3Q,EAAQm3Q,SAClBC,OAAQp3Q,EAAQo3Q,WAQ5Bn3Q,MAAO,WACH,IAAIwkD,EAAO3rD,KAAKgpD,YAMhB,OAJIhpD,KAAK0vL,SAAW1vL,KAAK0vL,QAAQggL,aAAe16O,EAAQh1H,KAAKq0B,YACzDs3B,EAAKzkD,QAAQmtB,SAAWw8U,GAAc7wW,KAAKq0B,WAGxC,IAAI21P,GAAWhqR,KAAKm+B,KAAMn+B,KAAKo+B,GAAIutB,EAAKzkD,UAMnD8hD,UAAW,WACP,IAAI7qB,EAAOn+B,KAAKm+B,KAAKvsB,OAAS5R,KAAKm+B,KAAKvsB,OAAS5R,KAAKm+B,KAAKjtB,WACvDktB,EAAKp+B,KAAKo+B,GAAGxsB,OAAS5R,KAAKo+B,GAAGxsB,OAAS5R,KAAKo+B,GAAGltB,WAE/Cy6C,EAAOnjD,EAAW,GAAI,CACtBtB,QAASlH,KAAKkH,QACdi3B,KAAMA,EACNC,GAAIA,IAQR,OALI42F,EAAQh1H,KAAKq0B,YACbs3B,EAAKt3B,SAAWr0B,KAAKq0B,SAASnjB,YAGlCy6C,EAAKzkD,QAAQm6H,OAASrhI,KAAKqhI,SACpB11E,GASXi7N,SAAU,SAASl+Q,GACf,GAAI1I,KAAKsM,UAAW,CAChB,IAAIykH,EAAI,IAAIiJ,EAAMtxH,EAAMtD,EAAGsD,EAAMvE,GAAIg6B,EAAOn+B,KAAKmrR,cAAe/sP,EAAKp+B,KAAKorR,cAC1E,GAAI1iR,EAAMi4K,UAAYj4K,EAAMi4K,WAAaj4K,EAAMysB,SAASgJ,IAASz1B,EAAMysB,SAASiJ,GAC5E,OAAOp+B,KAEX,GAAIA,KAAKq0W,QAAQ5pF,QAAQ15J,GACrB,OAAO/wH,OAKnBk8Q,OAAQ,SAASxzQ,GACb,IAAI0mH,GAASpvH,KAAKkH,QAAQ22H,QAAU,IAAIzO,MAEpC1mH,GAASu+P,EAAUjnQ,KAAKkH,QAAQgoL,MAAMrxD,OAAOzO,SAC7CA,EAAQpvH,KAAKkH,QAAQgoL,MAAMrxD,OAAOzO,OAGtCpvH,KAAKovC,KAAKukK,OAAO,CACb91E,OAAQ,CACJzO,MAAOA,MAKnBolP,aAAc,WACLx/O,EAAQh1H,KAAKovC,QAGlBpvC,KAAKw9Q,YACLx9Q,KAAK0lQ,OAAO1lQ,KAAKq0W,QAAQ3pF,eAG7BlN,UAAW,WACHx9Q,KAAKq0W,SACLr0W,KAAKq0W,QAAQ7zT,QAEjB,IAAIlzC,EAAStN,KAAKmrR,cACd7jR,EAAStH,KAAKorR,cACd/pJ,EAASrhI,KAAKqhI,SAElBrhI,KAAKovC,KAAKukK,OAAO,CACbtyE,OAAQ,CAAC/zH,GAAQ+P,OAAOgkH,EAAQ,CAAC/5H,OAIzC6rW,sBAAuB,WACnBnzW,KAAK+nR,gBAAkBnlR,EACvB5C,KAAKirR,yBAA2BroR,GAGpC6wW,sBAAuB,WACnBzzW,KAAK2jR,gBAAkB/gR,EACvB5C,KAAKkrR,yBAA2BtoR,GAGpCswW,2BAA4B,WACpBlzW,KAAK+nR,iBACLhhB,EAAMhwO,OAAO/2B,KAAK+nR,gBAAgBhB,YAAa/mR,OAIvDwzW,2BAA4B,WACpBxzW,KAAK2jR,iBACL5c,EAAMhwO,OAAO/2B,KAAK2jR,gBAAgBoD,YAAa/mR,OAIvD4R,OAAQ,WACJ,IACcyoH,EADVm2I,EAAaxwQ,KAsBjB,MAAO,CACHm+B,KArBAqyO,EAAWryO,MAAQqyO,EAAWryO,KAAKvsB,OAC5B4+P,EAAWryO,KAAKvsB,SAGhB,CACHxM,GAFJi1H,EAAQm2I,EAAWwhG,cAEN5sW,EACTjB,EAAGk2H,EAAMl2H,GAgBbi6B,GAZAoyO,EAAWpyO,IAAMoyO,EAAWpyO,GAAGxsB,OAC1B4+P,EAAWpyO,GAAGxsB,SAGd,CACDxM,GAFJi1H,EAAQm2I,EAAWyhG,cAEN7sW,EACTjB,EAAGk2H,EAAMl2H,OAWrB0xW,GAAUnlV,EAAO3tB,OAAO,CACxBoF,KAAM,SAAS0D,EAASu3K,GACpB,IAAIn7K,EAAOjI,KAEXW,MAAMqB,QAAQ6J,GACd6kB,EAAO3oB,GAAGI,KAAKoC,KAAKtC,EAAM4D,EAASu3K,GAEnCn7K,EAAK4sN,aAEL5sN,EAAK6tW,gBACL7tW,EAAK8tW,qBAAqB9tW,EAAKf,SAC/Be,EAAK+tW,cAAc5yL,GACnBn7K,EAAKguW,uBAELhuW,EAAKiuW,cAELjuW,EAAKqiR,UAAY,IAAI97I,EAAM,CACvB7+G,GAAI,eAER1nB,EAAKs3I,OAAOxlG,OAAO9xC,EAAKqiR,WAExBriR,EAAKutW,gBAAkB,IAAI30N,GAAe54I,GAE1CA,EAAKgxP,KAAO,IAAIj/H,EAChB/xH,EAAKykR,UAAY,GACjBzkR,EAAKkuW,aAAe,IAAI3nO,EAAM,CAC1B7+G,GAAI,kBAER1nB,EAAKs3I,OAAOxlG,OAAO9xC,EAAKkuW,cAExBluW,EAAKmuW,kBAELnuW,EAAK88Q,cAEL98Q,EAAK4+Q,iBAAmB,IAAIkH,EAAgB9lR,EAAM,CAAEsmD,SAAUtmD,EAAKf,QAAQqnD,WAC3EtmD,EAAKkgR,mBAAqB,IAAIqF,EAAkBvlR,GAEhDA,EAAKopR,OAAOppR,EAAK4+Q,kBAAkB,GACnC5+Q,EAAKopR,OAAOppR,EAAKkgR,oBAAoB,GAErClgR,EAAKwd,SAAW,IAAI0rQ,EAASlpR,GAE7BA,EAAKouW,WAAa,GAElBpuW,EAAKquW,oBAAqB,EAE1BruW,EAAKsuW,kBAELtuW,EAAKuuW,uBAELvuW,EAAKwuW,wBAELxuW,EAAKooC,KAAKpoC,EAAKf,QAAQmpC,MAEvBpoC,EAAKs3I,OAAO/J,QAGhBtuI,QAAS,CACL9E,KAAM,UACN2rL,MAAO,UACPu2B,OAAQ,GACRilE,SAAU,GACVl5O,KAAM,EACN6xN,QAAS,EACTC,QAAS,EACTrxO,WAAY,GACZu2D,WAAW,EACXx3E,SAAU,GACVkhE,UAAU,EACVxiB,SAAU,CACNxd,OAAQ,GACRxnB,OAAQ,GACRqX,MAAM,EACN0uJ,MAAO,GACP0oC,KAAM,CACF24D,KAAM,CACFlhR,KAAM,GACN6oH,MAAO,KAGfvhG,QAAQ,GAEZ+3I,SAAU,GACVsgB,WAAY,CACR79K,IAAK,QAET4qJ,QAAS,CAAEj1I,SAAS,EAAMxW,OAAQ,OAClCzJ,KAAM,CACFigB,SAAS,EACTq/D,QAAS,GACTC,QAAS,IAEbyoG,cAAeS,EAAQT,cAAc,CAAEwpF,UAAU,IACjDppF,mBAAoB,CAChB9gI,SAAU,CACN+gI,MAAO,IAEX5pL,KAAM+nW,GAEVztN,OAAQ,GACR+mI,YAAa,IAGjB18Q,OAAQ,CACJsuL,GACAF,GACAm1K,GAAK7xR,GACL4xR,GACAnsF,EACA1kO,EACAgjL,EAh1DU,aACA,aAk1DV,eACA,OACA,SACA,OACA,SACA,MACA,YA11DS,YAFN,OACI,WAi2DX1rM,MAAO,WACH,OAAOzxB,KAGX6zW,qBAAsB,WAClB,IAAIjoT,EAAWvuD,KAAKkH,QAAQqnD,SAC5B,GAAIA,EAAU,CACV,IAAI+gI,EAAQ/gI,EAAS+gI,OACjBtvL,KAAK0vW,cAAyB,IAAVpgL,GAAqBA,GAA0B,IAAjBA,EAAM9nL,SACxD8nL,EAAQ,CAAC,cAAe,OAAQ,OAAQ,kBAAmB,wBAG3DA,GAASA,EAAM9nL,SACfxH,KAAK02W,QAAU,IAAIC,GAAe32W,KAAM,CACpCsvL,MAAOA,GAAS,GAChBhmK,MAAOtpB,KAAK42W,cAAcptW,KAAKxJ,MAC/BgyF,OAAO,IAGXhyF,KAAK02W,QAAQ7qW,QAAQe,IAAI,CACrB03I,UAAW,SAGftkJ,KAAK6L,QAAQshF,QAAQntF,KAAK02W,QAAQ7qW,SAClC7L,KAAK+xB,aAKjB8kV,YAAa,WACT,GAAK72W,KAAKihW,QAAUjhW,KAAKihW,OAAOt1V,QAAW3L,KAAKihW,OAAQ,CACpD,IAAInwU,EAAa9wB,KAAK8wB,WAElB/X,GADO+X,EAAW4G,QAAU,IACflwB,OACbshD,EAAQguT,GAAYhmV,EAAY,IAChCmvH,EAAQjgJ,KAAK+2W,aAAajuT,EAAO,IAErC,IAAK9oD,KAAKoK,QAAQ,MAAO,CAAE61I,MAAOA,IAC9BnvH,EAAW8rC,OAAO7jD,EAAO+vC,GACN9oD,KAAKg0W,oBAAoB13S,SAASxT,EAAMuE,KAC9CxhD,QAAUo0I,EACvBjgJ,KAAKg3W,KAAK/2N,KAKtB82N,aAAc,SAAS1iV,EAAUntB,GAI7B,OAHAA,EAAUsB,EAAW,GAAIxI,KAAKkH,QAAQ+nL,cAAe/nL,IAC7CmtB,SAAWA,EACP,IAAI2zP,GAAM9gR,EAASlH,OAInCi3W,iBAAkB,WACd,GAAMj3W,KAAKihW,QAAUjhW,KAAKihW,OAAOt1V,QAAW3L,KAAKihW,OAAS,CACtD,IAAI6R,EAAwB9yW,KAAK8yW,sBAE7B/5V,GADO+5V,EAAsBp7U,QAAU,IAC1BlwB,OACbshD,EAAQguT,GAAYhE,EAAuB,IAC3CtiG,EAAaxwQ,KAAKsnR,kBAAkBx+N,GACnC9oD,KAAKoK,QAAQ,MAAO,CAAEomQ,WAAYA,MACnCxwQ,KAAKk3W,oBAAoBpuT,EAAMuE,KAAOmjN,EACtCsiG,EAAsBl2S,OAAO7jD,EAAO+vC,GACpC9oD,KAAKm3W,cAAc3mG,GAAY,GAC/BxwQ,KAAKg3W,KAAKxmG,MAKtB8W,kBAAmB,SAASjzP,EAAU/mB,EAAQhG,GAC1C,IAAIJ,EAAUsB,EAAW,GAAIxI,KAAKkH,QAAQmoL,oBAK1C,OAJAnoL,EAAQmtB,SAAWA,EAEF,IAAI21P,GAAW18Q,GAAU,IAAI0sH,EAAS1yH,GAAU,IAAI0yH,EAAS9yH,IAKlFkwW,UAAW,SAAS/iV,EAAUgjV,GAE1B,IAAI7W,EAAS3wV,EADb7P,KAAKs3W,aAEL,IAAI/oT,EAAWvuD,KAAKkH,QAAQqnD,SAE5B,GAAkB,SAAd8oT,EACA7W,EAAUjyS,EAASgpT,aACnB1nW,EAAW0+C,EAASipT,kBACjB,IAAkB,cAAdH,EAKP,OAJA,IAAII,EAA4BC,GAAmBluW,KAAKxJ,MACxDwgW,EAAUh4V,EAAW,GAAI,CAAE21B,KAAMs5U,EAA2Br5U,GAAIq5U,GAA6BlpT,EAASopT,mBACtG9nW,EAAW0+C,EAASqpT,mBAKxB53W,KAAKihW,OAAS,IAAI4W,GAAY73W,KAAK6L,QAAS,CACxCk7C,OAAQ/mD,KAAKohO,QAAQ53N,KAAKxJ,MAC1Bw6B,OAAQx6B,KAAK0qF,QAAQlhF,KAAKxJ,MAC1B8oD,MAAOz0B,EACP3uB,KAAM2xW,EACN/vW,OAAQtH,KACRwgW,QAASA,EACT3wV,SAAUA,IAGd7P,KAAKoK,QAAQ,OAAQpK,KAAK83W,cAG9Bd,KAAM,SAAShoU,GACX,GAAIA,EAAK3a,SAAU,CACf,IAAIgjV,EAAaroU,aAAgBg5O,GAAQ,QAAU,aACnDhoR,KAAKo3W,UAAUpoU,EAAK3a,SAAUgjV,KAItCC,WAAY,WACJt3W,KAAKihW,SACLjhW,KAAK+3W,qBAAqBh5S,cAAc/+D,KAAKihW,OAAOn4S,OAEpD9oD,KAAKg4W,mBAIbC,SAAU,WACFj4W,KAAKihW,QAAUjhW,KAAKihW,OAAOt1V,QAC1B3L,KAAKoK,QAAQ,OAAQpK,KAAK83W,cAC3B93W,KAAK+3W,qBAAqBn8S,QAIlCwlK,QAAS,WACDphO,KAAKihW,QAAUjhW,KAAKihW,OAAOt1V,QAC1B3L,KAAKoK,QAAQ,OAAQpK,KAAK83W,eAC3B93W,KAAK+3W,qBAAqBn8S,OAC1B57D,KAAKg4W,mBAIbttR,QAAS,WACL,GAAI1qF,KAAKihW,SAAWjhW,KAAKoK,QAAQ,SAAUpK,KAAK83W,aAAc,CAC1D,IAAIhvT,EAAQ9oD,KAAKihW,OAAOn4S,MACxB9oD,KAAK+3W,qBAAqBh5S,cAAcjW,GACxC,IAAIj9C,EAAU7L,KAAKk3W,oBAAoBpuT,EAAMuE,MAAQrtD,KAAKwyW,SAAS1pT,EAAMn5B,IACrE9jB,GACAA,EAAQyjW,qBAAqBxmT,GAEjC9oD,KAAKg4W,mBAIbD,mBAAoB,WAChB,MAAoC,UAA7B/3W,KAAKihW,OAAO/5V,QAAQxB,KAAmB1F,KAAK8wB,WAAa9wB,KAAK8yW,uBAGzEgF,UAAW,WACP,IAAIvhW,EAAS,CAAE+f,UAAWt2B,KAAKihW,OAAO70V,SAEtC,OADAmK,EAAOvW,KAAKihW,OAAO/5V,QAAQxB,MAAQ1F,KAAKihW,OAAOn4S,MACxCvyC,GAGXyhW,eAAgB,WACRh4W,KAAKihW,SACLjhW,KAAKihW,OAAO37S,QACZtlD,KAAKihW,OAAS,OAItB6U,cAAe,WACX91W,KAAKoM,QAAUpM,KAAK6L,QAAQ0gD,QACvB3/C,IAAI,WAAY,YAChBkW,KAAK,WAAY,GACjByB,SAAS,sBAEdvkB,KAAKimR,WAAatjR,EAAE,WAAWwqC,SAASntC,KAAK6L,UAGjDmqW,cAAe,SAAS5yL,GACpB,IAAIl8K,EAAUlH,KAAKkH,QACfqnD,EAAWrnD,EAAQqnD,SACnB0gI,EAAgB/nL,EAAQ+nL,cACxBI,EAAqBnoL,EAAQmoL,mBAC7B6oL,GAAqB90L,GAAe,IAAI6L,eAC3B,IAAb1gI,GACA0gI,EAAc1gI,UAAW,EACzB8gI,EAAmB9gI,UAAW,IAE9B4pT,GAAmB5pT,EAAU0gI,EAAc1gI,SAAU,CAAC,OAAQ,SAAU,YACxE4pT,GAAmB5pT,EAAU8gI,EAAmB9gI,SAAU,CAAC,OAAQ,YAGnE2pT,GAAqBA,EAAkB1nL,aACvCtpL,EAAQ+nL,cAAcuB,WAAa0nL,EAAkB1nL,aAI7DylL,qBAAsB,WAClB,IAAI/uW,EAAUlH,KAAKkH,QACfkoL,EAAaloL,EAAQkoL,WACrBtgB,EAAW5nK,EAAQ4nK,SACnBjlJ,EAASlpB,MAAM4C,QAAQkf,SAEvB2sK,IAAep6D,EAAQo6D,EAAWl5I,YAClChvC,EAAQkoL,WAAa5mL,EAAW,CAC5B0tC,UAAUrsB,GACX3iB,EAAQkoL,aAGXtgB,IAAa95C,EAAQ85C,EAASv9J,OAC9BrK,EAAQ4nK,SAAWtmK,EAAW,CAC1B+I,IAAKsY,EAAS,OAAS,QACxB3iB,EAAQ4nK,YAInBonM,YAAa,WACT,IAAIkC,EAAkBz1W,EAAE,+BAA+BwqC,SAASntC,KAAKimR,YAAY,GAC7EoyF,EAAWr4W,KAAK8xF,WACpB9xF,KAAKu/I,OAAS,IAAIkhI,EAAO23F,EAAiB,CACtCprW,MAAOqrW,EAASrrW,OAziED,IA0iEfL,OAAQ0rW,EAAS1rW,QAziED,OA6iExBypW,gBAAiB,WACb,IAAInuW,EAAOjI,KACGiI,EAAK4D,QAEXod,GA/hEI,sDA+hEchhB,EAAKmmF,OAAO5kF,KAAKvB,IAC1CghB,GAAG,UAAY4nE,EAAI5oF,EAAKi7G,SAAS15G,KAAKvB,IAEvCA,EAAKqwW,YAAc,IAAI33W,MAAM++E,WAAW1/E,KAAKimR,WAAY,CACrD3lM,YAAY,EACZG,SAAS,EACTqlI,IAAK79M,EAAKo3E,KAAK71E,KAAKvB,GACpBqN,MAAOrN,EAAKswW,WAAW/uW,KAAKvB,GAC5BsyB,KAAMtyB,EAAKggF,MAAMz+E,KAAKvB,GACtB0D,IAAK1D,EAAKwnF,SAASjmF,KAAKvB,GACxB+9E,aAAc/9E,EAAKuwW,cAAchvW,KAAKvB,GACtCi+E,cAAej+E,EAAKwwW,eAAejvW,KAAKvB,GACxCg+M,WAAYh+M,EAAKywW,YAAYlvW,KAAKvB,GAClC0wW,UAAW1wW,EAAK+9P,WAAWx8P,KAAKvB,GAChC42E,kBAAkB,IAGtB52E,EAAK29Q,YAAc,IAAI4C,EAAYvgR,GAEnCjI,KAAKimR,WACAh9P,GAAG,YAAc4nE,EAAI5oF,EAAKsxN,WAAW/vN,KAAKvB,IAC1CghB,GAAG,WAAa4nE,EAAI5oF,EAAKuxN,UAAUhwN,KAAKvB,IACxCghB,GAAG,YAAc4nE,EAAI5oF,EAAK2wW,WAAWpvW,KAAKvB,IAC1CghB,GAAG,YAAc4nE,EAAI5oF,EAAK4wW,WAAWrvW,KAAKvB,IAC1CghB,GAAG,UAAY4nE,EAAI5oF,EAAK6wW,SAAStvW,KAAKvB,IAE3CjI,KAAK+4W,aAAe9wW,EAAKihR,aAAa1/Q,KAAKvB,GAE3CA,EAAK84N,eAAiB94N,EAAKshB,OAAO/f,KAAKvB,GAAM,GAC7CtH,MAAMm4B,SAAS7wB,EAAK84N,gBAEpB/gO,KAAKwJ,KAAKivL,GAAYxwL,EAAKkhR,gBAAgB3/Q,KAAKvB,IAChDjI,KAAKwJ,KAAKokW,GAAK3lW,EAAKkhR,gBAAgB3/Q,KAAKvB,KAG7CswW,WAAY,SAAS5zW,GACjB3E,KAAKg5W,qBAAsB,EAC3B,IAAI3+O,EAAQr6H,KAAKi5W,gBAAgBt0W,GAAG,GAEhCya,EAAQza,EAAEya,MACVpf,KAAK4lR,YAAYtwQ,MAAM+kH,EAAOr6H,KAAKk5W,MAAM95V,MACzCpf,KAAKmpR,kBACL/pQ,EAAMjW,mBAId8+E,MAAO,SAAStjF,GACZ,IAAIosH,EAAI/wH,KAAKi5W,gBAAgBt0W,GACzBya,EAAQza,EAAEya,MACVpf,KAAK4lR,YAAYrrP,KAAKw2F,EAAG/wH,KAAKk5W,MAAM95V,KACpCA,EAAMjW,kBAIdsmF,SAAU,SAAS9qF,GACf3E,KAAKg5W,qBAAsB,EAC3B,IAAIjoP,EAAI/wH,KAAKi5W,gBAAgBt0W,GACzBya,EAAQza,EAAEya,MACVpf,KAAK4lR,YAAYj6Q,IAAIolH,EAAG/wH,KAAKk5W,MAAM95V,MACnCpf,KAAKm5W,iBACL/5V,EAAMjW,mBAIdyvW,WAAY,SAASj0W,GACjB,IAAK3E,KAAKg5W,oBAAqB,CAC3B,IAAIjoP,EAAI/wH,KAAKi5W,gBAAgBt0W,GAC7B3E,KAAK4lR,YAAY8C,mBAAmB33J,GACpC/wH,KAAK4lR,YAAYgD,cAAc73J,KAIvC8nP,WAAY,WACR74W,KAAKg5W,qBAAsB,GAG/BF,SAAU,WACN94W,KAAKg5W,qBAAsB,GAG/B35R,KAAM,SAAS16E,GACX,IAAIihR,EAAc5lR,KAAK4lR,YACnBx2F,EAAapvL,KAAKkH,QAAQkoL,WAC1B/0D,EAAQr6H,KAAKi5W,gBAAgBt0W,GAC7B87N,EAAUzgO,KAAK4lC,QAInB,GAFAggP,EAAY8C,mBAAmBruJ,GAE3BurJ,EAAYS,YAAa,CACzB,IAAIr3O,EAAO42O,EAAYS,YAQvB,GANArmR,KAAKoK,QAAQ,QAAS,CAClB4kC,KAAMA,EACNqrF,MAAOA,EACPppH,KAAMjR,KAAKk5W,MAAMv0W,EAAEya,SAGnBgwK,IAA0C,IAA5BpgJ,EAAK9nC,QAAQkoL,WAAsB,CACjD,IAAIl5I,GAAmC,IAAxBk5I,EAAWl5I,SACtBkjU,EAAcz4W,MAAM4C,QAAQkf,UAAYziB,KAAKk5W,MAAMv0W,EAAEya,OAAOovE,QAE5Dx/C,EAAKk4O,WACDkyF,GACAp5W,KAAKmpR,kBACLn6O,EAAK5I,QAAO,IAEZpmC,KAAKm5W,eAAe14I,IAGxBzgO,KAAKmpR,kBACLnpR,KAAKomC,OAAO4I,EAAM,CACd06O,eAAgBxzO,GAAYkjU,IAEhCp5W,KAAKm5W,eAAe14I,UAGrBrxC,IACPpvL,KAAKmpR,kBACLnpR,KAAKokR,aAIblhK,SAAU,SAASv+G,GACX3E,KAAK4lR,YAAYkD,QAAQnkR,EAAEwiC,QAASnnC,KAAKk5W,MAAMv0W,KAC/CA,EAAEwE,kBAIVilF,OAAQ,SAASzpF,GACb,IAAIigC,EAtlEZ,SAAiBjgC,GACb,IAAI00W,EAAY10W,EAAEgkB,cACdic,EAAQ,EASZ,OAPIy0U,EAAUv0U,WAEVF,GADAA,GAASy0U,EAAUv0U,WAAa,IAChB,EAAI1hC,EAAK6iE,KAAKrhC,GAASxhC,EAAKmN,MAAMq0B,GAC3Cy0U,EAAUt0U,SACjBH,EAAQy0U,EAAUt0U,QAGfH,EA2kES+lJ,CAAQhmL,GAChBosH,EAAI/wH,KAAKi5W,gBAAgBt0W,GACzBsM,EAAOzI,EAAWxI,KAAKk5W,MAAMv0W,GAAI,CAAEigC,MAAOA,IAE1C5kC,KAAK4lR,YAAY0D,MAAMv4J,EAAG9/G,IAC1BtM,EAAEwE,kBAIV+vW,MAAO,SAASv0W,GACZ,MAAO,CAAE6pF,QAAS7pF,EAAE6pF,QAASu6L,QAASpkR,EAAEokR,QAAS5nE,OAAQx8M,EAAEw8M,OAAQ/5K,SAAUziC,EAAEyiC,SAAU1hC,KAAMf,EAAEe,OAGrGuzW,gBAAiB,SAASt0W,EAAG2Q,GACzB,IAAI+kH,EACJ,GAAI11H,EAAE8Z,MAAO,CACT,IAAIwG,EAAQ3P,EAAQ,gBAAkB,WACtC+kH,EAAQ,IAAIL,EAAMr1H,EAAES,EAAE6f,GAAQtgB,EAAER,EAAE8gB,QAC/B,CACH,IAAI7F,EAAQza,EAAEgkB,cACd0xG,EAAQ,IAAIL,EAAM56G,EAAM4iE,MAAO5iE,EAAM6iE,OAGzC,OAAOjiF,KAAKs5W,gBAAgBj/O,IAGhCm+O,cAAe,SAAS7zW,GACpB3E,KAAKmpR,kBACLnpR,KAAKikQ,SAAS58O,UACd,IAAIkyV,EAAgBv5W,KAAKs5W,gBAAgB,IAAIt/O,EAAMr1H,EAAE44E,OAAOn4E,EAAGT,EAAE44E,OAAOp5E,IACpE2pK,EAAY,CACZzzC,MAAOk/O,EACPlpU,KAAMrwC,KAAKqwC,QAGXrwC,KAAKoK,QAAQquL,GAAY3qB,KAI7B9tK,KAAKw5W,SAAW70W,EAChB3E,KAAKy5W,eAAiBF,IAG1Bd,eAAgB,SAAS9zW,GACrB,IAAIyhF,EAAkBpmF,KAAKw5W,SACvBD,EAAgBv5W,KAAKy5W,eACrBl8R,EAASv9E,KAAK05W,eAAe,IAAI1/O,EAAMr1H,EAAE44E,OAAOn4E,EAAGT,EAAE44E,OAAOp5E,IAC5DmiF,EAAa3hF,EAAE64E,SAAW4I,EAAgB5I,SAC1CntC,EAAOrwC,KAAKywP,MACZkpH,GAAa,EAEbv2W,EAAK8T,IAAIovE,EAAa,IAltEX,MAmtEXtmF,KAAKywP,MAAQpgN,EAAOrwC,KAAK45W,cAAcvpU,EAAOi2C,GAC9CtmF,KAAKkH,QAAQmpC,KAAOA,EACpBrwC,KAAKw5W,SAAW70W,EAChBg1W,GAAa,GAGjB,IAAIE,EAAcN,EAAczvG,MAAMz5N,GAClCssI,EAAMp/F,EAAOssL,MAAMgwG,IACnBF,GAAc35W,KAAKi5P,KAAKz+H,WAAWmiD,IA1tErB,KA2tEd38K,KAAK85W,cAAcn9L,GACnB38K,KAAK+5W,mBAGTp1W,EAAEwE,kBAGN68P,WAAY,SAASrhQ,GACjB,IAAI+qL,EAAU1vL,KACVg6W,EAAgBh6W,KAAKi5W,gBAAgBt0W,GACrCuC,EAAUwoL,EAAQxoL,QAClBqiR,EAAWriR,EAAQqiR,SACnBl5O,EAAOq/I,EAAQr/I,OAASk5O,EAExBC,EAAc,CAAEnvJ,MAAO2/O,EAAe/oW,KAD/BjR,KAAKk5W,MAAMv0W,GACgC0rC,KAAMA,GAGxDq/I,EAAQtlL,QAAQquL,GAAY+wF,KAIhCn5O,EAAO1vC,MAAMmpB,QAAQ/T,MAAM1S,KAAKuV,IAAI1R,EAAQg7P,QAAS7+P,KAAK8S,IAAIjP,EAAQi7P,QAAS9xN,IAAQ,GACvFm5O,EAAYn5O,KAAOA,EAEnBq/I,EAAQr/I,KAAKA,EAAMm5O,GACnB95F,EAAQtlL,QAAQuuL,GAAU6wF,KAG9BkvF,YAAa,YACqB,IAA1B14W,KAAKkH,QAAQ4nK,UACb9uK,KAAKikQ,SAAS18O,SAElBvnB,KAAKoK,QAAQuuL,GAAU,CACnBt+D,MAAOr6H,KAAKy5W,eACZppU,KAAMrwC,KAAKqwC,UAInBte,QAAS,WACL,IAAI+/D,EAAW9xF,KAAK8xF,WAChB9xF,KAAKu/I,QACLv/I,KAAKu/I,OAAO9vI,KAAKqiF,GAGjB9xF,KAAKimR,YAAcjmR,KAAK02W,SACxB12W,KAAKimR,WAAWt5Q,OAAOmlF,EAASnlF,SAIxC4sN,WAAY,SAAS50N,GACjB,IAAIu+B,EAAOv+B,EAAE2C,OAAOouI,WAChBxyG,GAAQA,EAAKyxG,WAAWunI,QACxBh5O,EAAKyxG,WAAWunI,QAAO,EAAMh5O,EAAKyxG,aAI1C6kF,UAAW,SAAS70N,GAChB,IAAIu+B,EAAOv+B,EAAE2C,OAAOouI,WAChBxyG,GAAQA,EAAKyxG,WAAWunI,QACxBh5O,EAAKyxG,WAAWunI,QAAO,EAAOh5O,EAAKyxG,aAI3CkgF,WAAY,WACR,IAGIJ,EAHAxsN,EAAOjI,KACPwvL,IAAcvnL,EAAKf,SAAW,IAAI6mL,OAAS,IAAIz1K,cAC/CggB,EAASxO,EAAQH,GAAG2O,QAAU,GAI9Bm8L,GAD2C,GAA3C3qM,EAAQsgK,YAAYz0K,QAAQ65K,GACb1lK,EAAQ+jK,YAAY6B,SAGnBp3J,EAAOk3J,IAAc,IAAIE,QAG7CznL,EAAKf,QAAUsB,EAAW,GAAIisN,EAAcxsN,EAAKf,UACnB,IAA1Be,EAAKf,QAAQqnD,UACb/lD,EAAWP,EAAKf,QAAS,CACrBqnD,UAAWkmK,GAAgB,IAAIlmK,YAK3CkoT,sBAAuB,WACnB,IAAIvvW,EAAUlH,KAAKkH,QACf+yW,EAAe/yW,EAAQ84I,OAAOx4I,OAE9ByyW,GACAj6W,KAAKk6W,gBAGLhzW,EAAQ6/Q,YAAYv/Q,QACpBxH,KAAKm6W,qBAGLF,GAAgB/yW,EAAQo9M,QACxBtkN,KAAKskN,OAAOp9M,EAAQo9M,SAI5B41J,cAAe,WACX,IAGIj6N,EAAO14I,EADPy4I,EAFOhgJ,KACQkH,QACE84I,OAGrB,IAAKz4I,EAAI,EAAGA,EAAIy4I,EAAOx4I,OAAQD,IAC3B04I,EAAQD,EAAOz4I,GANRvH,KAOF04Q,SAASz4H,IAItBk6N,mBAAoB,WAChB,IAIIz3F,EAAMp1Q,EAAQhG,EAAQC,EAJtBmoL,EAAU1vL,KACVkH,EAAUwoL,EAAQxoL,QAClBtG,EAAWsG,EAAQmoL,mBACnB03F,EAAc7/Q,EAAQ6/Q,YAG1B,IAAKx/Q,EAAI,EAAGA,EAAIw/Q,EAAYv/Q,OAAQD,IAChCm7Q,EAAOqE,EAAYx/Q,GACnB+F,EAASoiL,EAAQ0qL,sBAAsB13F,EAAKvkP,MAC5C72B,EAASooL,EAAQ0qL,sBAAsB13F,EAAKtkP,IAE5CsxJ,EAAQkpF,QAAQtrQ,EAAQhG,EAAQkB,EAAW,GAAI5H,EAAU8hR,KAIjE03F,sBAAuB,SAASlzW,GAE5B,IAEII,EADA0nW,EAAUpmW,EAFd1B,EAAUA,GAAW,IAEaA,EAAUA,EAAQ8nW,SAAW9nW,EAAQyoB,GAWvE,OATIq/U,GACA1nW,EAJUtH,KAIOiiR,aAAa+sF,GAC1B9nW,EAAQmgR,YACR//Q,EAASA,EAAO2gR,aAAa/gR,EAAQmgR,aAGzC//Q,EAAS,IAAI0yH,EAAM9yH,EAAQ9B,GAAK,EAAG8B,EAAQ/C,GAAK,GAG7CmD,GAGXtF,QAAS,WACL,IAAIiG,EAAOjI,KACX0wB,EAAO3oB,GAAG/F,QAAQuI,KAAKtC,GAEnBjI,KAAKs4W,aACLt4W,KAAKs4W,YAAYt2W,UAGrBrB,MAAMq4B,aAAa/wB,EAAK84N,gBAExB94N,EAAKguD,QACLhuD,EAAK4D,QAAQotB,IAAI43D,GACjB5oF,EAAKg8P,SAAS73P,QAAQ6sB,IAAI43D,GAC1B5oF,EAAKs3I,OAAOv9I,SAAQ,GACpBiG,EAAKs3I,OAAS38I,EAEdqF,EAAK+vW,iBACL/vW,EAAKoyW,kBACLpyW,EAAKqyW,wBACLryW,EAAKkhR,mBAGTkxF,gBAAiB,WACb,IAAIp2G,EAAWjkQ,KAAKikQ,SAEfA,IAILA,EAASjiQ,UACTiiQ,EAASp4P,QAAQkrB,SACjB/2B,KAAKikQ,SAAW,OAGpB11N,KAAM,WACF,IAIIhnC,EAAGipQ,EAAYvwH,EAJft0F,EAAO,CACPq0F,OAAQ,GACR+mI,YAAa,IAIjB,IAAKx/Q,EAAI,EAAGA,EAAIvH,KAAKggJ,OAAOx4I,OAAQD,KAChC04I,EAAQjgJ,KAAKggJ,OAAOz4I,IACVL,QAAQunW,cACd9iT,EAAKq0F,OAAOr+I,KAAKs+I,EAAM/4I,SAI/B,IAAKK,EAAI,EAAGA,EAAIvH,KAAK+mR,YAAYv/Q,OAAQD,IACrCipQ,EAAaxwQ,KAAK+mR,YAAYx/Q,GAE9BokD,EAAKo7N,YAAYplR,KAAK6G,EAAW,GAAIgoQ,EAAWtpQ,QAASspQ,EAAW5+P,WAGxE,OAAO+5C,GAGX/lB,MAAO,WACH,IAAK5lC,KAAK6L,QAAQU,GAAG5L,MAAMwY,kBAAmB,CAC1C,IAKI5R,EALAsE,EAAU7L,KAAK6L,QACf29V,EAAkB39V,EAAQ,GAC1B8sE,EAAa,GACb4b,EAAU,GACVl7E,EAAkBjK,SAASiK,gBAG/B,IACImwV,EAAkBA,EAAgB5jV,YAEd3B,aAAeulV,EAAgBtlV,eAC/Cy0D,EAAWh3E,KAAK6nW,GAChBj1Q,EAAQ5yF,KAAK6nW,EAAgB7yU,kBAE5B6yU,GAAmBnwV,GAI5B,IAFAxN,EAAQzB,QAAQ,SAEX7C,EAAI,EAAGA,EAAIoxE,EAAWnxE,OAAQD,IAC/BoxE,EAAWpxE,GAAGovB,UAAY49D,EAAQhtF,GAEtC,OAAO,IAIfqjE,KAAM,SAAS1jE,GACXlH,KAAKi2D,QAELj2D,KAAKuxB,WAAWrqB,GAChBlH,KAAKk6W,gBACLl6W,KAAKm6W,sBAGT5oV,WAAY,SAASrqB,GACjBsB,EAAWxI,KAAKkH,QAASA,IAG7B+uD,MAAO,WACH,IAAIhuD,EAAOjI,KAEXiI,EAAKm+B,QAAO,GACZn+B,EAAKqiR,UAAUr0N,QACfhuD,EAAKutW,gBAAgBv/S,QACrBhuD,EAAK88Q,eASTnM,QAAS,SAAStrQ,EAAQhG,EAAQJ,GAC9B,IAAIspQ,EACJ,GAAIxwQ,KAAK8yW,uBAAyB9yW,KAAK0vW,YAAa,CAChD,IAAIr7U,EAAWr0B,KAAK8yW,sBAAsB7lW,IAAI,KAC9CujQ,EAAaxwQ,KAAKk3W,oBAAoB7iV,EAASg5B,MACpC//C,OAAOA,GAClBkjQ,EAAWlpQ,OAAOA,GAClBkpQ,EAAW78D,OAAOzsM,GAClBspQ,EAAW8S,mBAEX9S,EAAa,IAAIwZ,GAAW18Q,EAAQhG,EAChCkB,EAAW,GAAKxI,KAAKkH,QAAQmoL,mBAAoBnoL,IAErDlH,KAAKm3W,cAAc3mG,GAGvB,OAAOA,GAQXoF,UAAW,SAAStoQ,EAAQhG,GACxB,IAAK,IAAIC,EAAI,EAAGA,EAAIvH,KAAK+mR,YAAYv/Q,OAAQD,IAAK,CAC9C,IAAI7C,EAAI1E,KAAK+mR,YAAYx/Q,GACzB,GAAI7C,EAAEy5B,MAAQ7wB,GAAU5I,EAAE05B,IAAM92B,EAC5B,OAAO,EAIf,OAAO,GAQX6vW,cAAe,SAAS3mG,EAAYiI,GAiBhC,OAhBiB,IAAbA,GACAz4Q,KAAKgnR,gBAAgB/5Q,IACjB,IAAIyiL,EAAQw0F,kBAAkB1T,EAAYxwQ,OAAO,GAGzDwwQ,EAAW9gF,QAAU1vL,KACrBwwQ,EAAW8+F,uBACX9+F,EAAW5yP,UACX5d,KAAKsqR,UAAUvwO,OAAOy2N,EAAWtyH,QACjCl+I,KAAK+mR,YAAYplR,KAAK6uQ,GAEtBxwQ,KAAKoK,QAAQ0yC,EAAQ,CACjBikR,MAAO,CAACvwD,GACR+lD,QAAS,KAGN/lD,GAGXmI,eAAgB,SAASnI,EAAYiI,GACjC,IACIpkP,EADAy+U,EAAwB9yW,KAAK8yW,sBAEjC,GAAIA,GAAyB9yW,KAAK0vW,aAK9B,GAJAr7U,EAAWyiV,GAAYhE,EAAuBjC,GAAcrgG,EAAWn8O,WACvEm8O,EAAWn8O,SAAWA,EACtBm8O,EAAW8S,eAENtjR,KAAKoK,QAAQ,MAAO,CAAEomQ,WAAYA,IAOnC,OANAxwQ,KAAKk3W,oBAAoB7iV,EAASg5B,KAAOmjN,EAEzCsiG,EAAsB7lW,IAAIonB,GAC1Br0B,KAAKm3W,cAAc3mG,EAAYiI,GAC/BjI,EAAWmhG,oBAEJnhG,OAER,IAAKxwQ,KAAKoK,QAAQ,MAAO,CAAEomQ,WAAYA,IAG1C,OAFAxwQ,KAAKm3W,cAAc3mG,EAAYiI,GAC/BjI,EAAWmhG,oBACJnhG,GAUfkI,SAAU,SAAS1pO,EAAMypO,GACrB,IAAIx4H,EACAgvC,EAAgBjvL,KAAKkH,QAAQ+nL,cAEjC,GAAIjgJ,aAAgBg5O,GAChB/nI,EAAQjxG,EACRhvC,KAAKu6W,aAAat6N,EAAMylH,cACrB,IAAM12N,aAAgBruC,MAAMiH,MAK/B,OAJAqnL,EAAgBzmL,EAAW,GAAIymL,EAAejgJ,GAAQ,IACtDixG,EAAQ,IAAI+nI,GAAM/4F,EAAejvL,MACjCA,KAAKu6W,aAAat6N,EAAMylH,UAqB5B,OAhBiB,IAAb+S,GACAz4Q,KAAKgnR,gBAAgB/5Q,IAAI,IAAIyiL,EAAQy0F,aAAalkI,EAAOjgJ,OAAO,GAGpEA,KAAKggJ,OAAOr+I,KAAKs+I,GACbA,EAAMyvC,UAAY1vL,OAClBA,KAAKw1W,gBAAgB54S,OAAOqjF,GAC5BA,EAAMyvC,QAAU1vL,MAEpBA,KAAKsqR,UAAUvwO,OAAOkmG,EAAM/B,QAE5Bl+I,KAAKoK,QAAQ0yC,EAAQ,CACjBikR,MAAO,CAAC9gL,GACRs2K,QAAS,KAGNt2K,GAGXs4H,UAAW,SAASt4H,EAAOw4H,GACvB,IAEIpkP,EADAvD,EADO9wB,KACW8wB,WAEtB,GAAIA,GAAc9wB,KAAK0vW,aAKnB,GAJAr7U,EAAWyiV,GAAYhmV,EAAY+/U,GAAc5wN,EAAM5rH,WACvD4rH,EAAM5rH,SAAWA,EACjB4rH,EAAMqjI,eAEDtjR,KAAKoK,QAAQ,MAAO,CAAE61I,MAAOA,IAAU,CACxCjgJ,KAAK8wB,WAAW7jB,IAAIonB,GACpB,IAAI0/U,EAAe/zW,KAAKg0W,oBAAoB13S,SAASjoC,EAASg5B,KAG9D,OAFA0mT,EAAaloW,QAAUo0I,EACvB8zN,EAAat7F,SAAWA,EACjBx4H,QAER,IAAKjgJ,KAAKoK,QAAQ,MAAO,CAAE61I,MAAOA,IACrC,OAAOjgJ,KAAK04Q,SAASz4H,EAAOw4H,IAIpC8hG,aAAc,SAAS70G,GACnBA,EAAOtgQ,EAAwB,iBAAbsgQ,EAAQ,EAAgB38P,WAAW28P,EAAOtgQ,GAAKsgQ,EAAOtgQ,EACxEsgQ,EAAOvhQ,EAAwB,iBAAbuhQ,EAAQ,EAAgB38P,WAAW28P,EAAOvhQ,GAAKuhQ,EAAOvhQ,GAQ7E4yB,OAAQ,SAAS3C,EAAOqkP,GAEnB,IAGIlxQ,EAHA4sB,EAAWqmV,GADfpmV,EAAQnxB,EAAQmxB,GAASA,EAAMxtB,MAAM,GAAK,CAACwtB,IAEvC4rH,EAAS7rH,EAAS6rH,OAClB+mI,EAAc5yP,EAAS4yP,YAY3B,IATK/xJ,EAAQyjJ,KACTA,GAAW,GAGXA,GACAz4Q,KAAKgnR,gBAAgB1B,QAGzBtlR,KAAK6vW,uBACAtoW,EAAIy4I,EAAOx4I,OAAS,EAAGD,GAAK,EAAGA,IACjCvH,KAAK29S,YAAY39J,EAAOz4I,GAAIkxQ,EAAUsO,GAGzC,IAAKx/Q,EAAIw/Q,EAAYv/Q,OAAS,EAAGD,GAAK,EAAGA,IACrCvH,KAAK29S,YAAY52B,EAAYx/Q,GAAIkxQ,GAGrCz4Q,KAAK8vW,sBAEDr3F,GACAz4Q,KAAKgnR,gBAAgBzB,QAAO,GAGhCvlR,KAAKoK,QAAQ0yC,EAAQ,CACjBikR,MAAO,GACPxK,QAASniS,KAIjBqmV,qBAAsB,SAASzrU,GACvBhvC,KAAK0vW,cACL1vW,KAAK8wB,WAAWiG,OAAOiY,EAAK3a,iBACrBr0B,KAAKwyW,SAASxjU,EAAK3a,SAAS1E,MAI3C+qV,0BAA2B,SAAS1rU,GAC5BhvC,KAAK0vW,cACL1vW,KAAK8yW,sBAAsB/7U,OAAOiY,EAAK3a,iBAChCr0B,KAAKk3W,oBAAoBloU,EAAK3a,SAASg5B,OAItD47N,eAAgB,SAAS70P,GAIrB,IAHA,IACI4a,EAAM7X,EAAMo3B,EADZy6N,EAAW,GAGNp/Q,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAElC2kD,GADAvf,EAAO5a,EAAMxqB,IACG1C,QAAQqnD,SAEpBp3B,EADA6X,aAAgBg5O,GACT,CAAE/nI,MAAOjxG,GAET,CAAEwhO,WAAYxhO,GAErBuf,IAAgC,IAApBA,EAASx3B,SAAqB/2B,KAAKoK,QAAQ,SAAU+sB,IACjE6xP,EAASrnR,KAAKqtC,GAGtB,OAAOg6O,GAMXzG,KAAM,WACFviR,KAAKgnR,gBAAgBzE,QAKzBE,KAAM,WACFziR,KAAKgnR,gBAAgBvE,QAQzBr8O,OAAQ,SAAS4I,EAAM9nC,GACnB,IAAI+/P,EAAUj4N,GA+BV,OAAOhvC,KAAK+pR,eA5BZ,IAGIxiR,EAAGsE,EAFHuoB,EAAQ,GACRq9C,EAAW,GAef,KAnBAvqE,EAAUsB,EAAW,CAAEkhR,gBAAgB,GAASxiR,IAEnBwiR,gBAMzB1pR,KAAKokR,WAGTpkR,KAAK+wW,oBAAqB,EAEtB/hU,aAAgB9rC,MAChBkxB,EAAQ4a,EACDA,aAAgBw/T,KACvBp6U,EAAQ,CAAE4a,IAGTznC,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,KAC1BsE,EAAUuoB,EAAM7sB,IACJ6+B,QAAO,IACfqrC,EAAS9vE,KAAKkK,GAItB7L,KAAKgxW,kBAAkBv/R,EAAU,IAEjCzxE,KAAK+wW,oBAAqB,GAMlC1nF,UAAW,WACPrpR,KAAKomC,OAAOpmC,KAAKggJ,OAAO3iI,OAAOrd,KAAK+mR,eAGxCI,WAAY,SAAS97L,GACjB,IAAI9jF,EAAG6sB,EAAO4a,EACdhvC,KAAK+wW,oBAAqB,EAC1B,IAAIt/R,EAAW,GACf,GAAI4Z,aAAgB6vC,EAEhB,IADA9mG,EAAQp0B,KAAKggJ,OAAO3iI,OAAOrd,KAAK+mR,aAC3Bx/Q,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC1BynC,EAAO5a,EAAM7sB,GACP8jF,IAAQr8C,EAAK43O,SAASv7L,KAAUr8C,EAAK9nC,QAAQqgB,QAC3CynB,EAAK5I,QAAO,IACZqrC,EAAS9vE,KAAKqtC,GAM9BhvC,KAAKgxW,kBAAkBv/R,EAAU,IACjCzxE,KAAK+wW,oBAAqB,GAG9B3sF,SAAU,SAASp1O,GACfhvC,KAAK+wW,oBAAqB,EAC1B,IAEIllW,EAAStE,EAFTupW,EAAa,GACb18U,EAAQ,GAWZ,IARI4a,aAAgB9rC,MAChBkxB,EAAQ4a,EACDA,aAAgBw/T,GACvBp6U,EAAMzyB,KAAKqtC,GACHi4N,EAAUj4N,KAClB5a,EAAQp0B,KAAK+pR,eAAenjR,MAAM,IAGjCW,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,KAC1BsE,EAAUuoB,EAAM7sB,IACJ6+B,QAAO,IACf0qU,EAAWnvW,KAAKkK,GAIxB7L,KAAKgxW,kBAAkB,GAAIF,GAC3B9wW,KAAK+wW,oBAAqB,GAO9BnxF,QAAS,SAASxrP,EAAOqkP,GAChBrkP,IACDA,EAAQp0B,KAAK+pR,eAAenjR,SAGhC,IAA2Cw0K,EAAvC7kK,EAASvW,KAAK26W,iBAAiBvmV,GACnC,IAAK4gG,EAAQyjJ,IAAaA,EAAU,CAChCr9F,EAAUkzL,GAAetuW,KAAKsqR,UAAW/zQ,EAAO4vJ,SAChD,IAAI9tC,EAAO,IAAI2sJ,EAAYhlR,KAAMo0B,EAAOgnJ,GACxCp7K,KAAKgnR,gBAAgB/5Q,IAAIorH,QAEzBr4H,KAAKsqR,UAAU1K,QAAQrpQ,EAAO4vJ,SAC9BnmK,KAAK46W,aAAarkW,GAAQ,IAQlCspQ,OAAQ,SAASzrP,EAAOqkP,GACfrkP,IACDA,EAAQp0B,KAAK+pR,eAAenjR,SAGhC,IAA2Cw0K,EAAvC7kK,EAASvW,KAAK26W,iBAAiBvmV,GACnC,IAAK4gG,EAAQyjJ,IAAaA,EAAU,CAChCr9F,EAAUkzL,GAAetuW,KAAKsqR,UAAW/zQ,EAAO4vJ,SAChD,IAAI9tC,EAAO,IAAI8sJ,EAAWnlR,KAAMo0B,EAAOgnJ,GACvCp7K,KAAKgnR,gBAAgB/5Q,IAAIorH,QAEzBr4H,KAAKsqR,UAAUzK,OAAOtpQ,EAAO4vJ,SAC7BnmK,KAAK46W,aAAarkW,GAAQ,IASlCskW,cAAe,SAAS7rU,EAAM9nC,GAC1B,IAEIuM,EAAS43E,EAAMxhF,EAAUixW,EAFzBhpR,EAAW9xF,KAAK8xF,WAChBq+Q,EAAU,IAAIzgL,EAAQo8E,UAAUh6K,GAGb,IAAnBA,EAAS9kF,OAAmC,IAApB8kF,EAASnlF,SAKhB,SADrBzF,EAAUsB,EAAW,CAAEse,SAAS,EAAOmoH,MAAO,iBAAmB/nI,IACrD+nI,QACR/nI,EAAQ+nI,MAAQ,iBAGhBjgG,aAAgBw/T,GAChBnjR,EAAOr8C,EAAK02N,OAAOmoG,IACZ5qW,EAAQ+rC,GACfq8C,EAAOrrF,KAAKksI,YAAYl9F,GACjBA,aAAgBksF,IACvB7vC,EAAOr8C,EAAK7nC,SAGhB0C,EAAWwhF,EAAKlkF,QAEhBkkF,EAAKh7C,KAAKrwC,KAAKywP,QAEXplK,EAAKr+E,MAAQ8kF,EAAS9kF,OAASq+E,EAAK1+E,OAASmlF,EAASnlF,UACtD3M,KAAKywP,MAAQzwP,KAAK45W,cAAcx2W,EAAK+S,IAAI27E,EAAS9kF,MAAQnD,EAASmD,MAAO8kF,EAASnlF,OAAS9C,EAAS8C,SACrG0+E,EAAOxhF,EAAS1C,QAAQkpC,KAAKrwC,KAAKywP,QAGtCzwP,KAAK+6W,iBAELtnW,EAAU43E,EAAKlkF,QACfgpW,EAAQlhO,MAAM5jD,EAAMnkF,EAAQ+nI,OAE5B6rO,EAASzvR,EAAKmwC,UAAUquI,MAAMp2P,EAAQ+nH,WACtCx7H,KAAK28K,IAAIm+L,EAAOhxG,OAAO,GAAI5iQ,EAAQ4f,WAGvCk0V,YAAa,SAAS/mU,GACdizN,EAAYjzN,KACZA,EAAY,QAEhB,IACI/kB,EACA8f,EACAznC,EAHA6sB,EAAQp0B,KAAKomC,SAKjB,GAAqB,IAAjBhS,EAAM5sB,OAAV,CAIA,OAAQysC,EAAU37B,eACd,IAAK,OACL,IAAK,MACD4W,EAAMomG,GACN,MACJ,IAAK,QACL,IAAK,SACDpmG,EAAM8uI,GAId,IAAKz2J,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAE1B,IADAynC,EAAO5a,EAAM7sB,cACOygR,GAChB,OAAQ/zO,EAAU37B,eACd,IAAK,OACD4W,EAAM9rB,EAAK+S,IAAI+Y,EAAK8f,EAAK9nC,QAAQ9B,GACjC,MACJ,IAAK,MACD8pB,EAAM9rB,EAAK+S,IAAI+Y,EAAK8f,EAAK9nC,QAAQ/C,GACjC,MACJ,IAAK,QACD+qB,EAAM9rB,EAAKwV,IAAIsW,EAAK8f,EAAK9nC,QAAQ9B,GACjC,MACJ,IAAK,SACD8pB,EAAM9rB,EAAKwV,IAAIsW,EAAK8f,EAAK9nC,QAAQ/C,GAKjD,IAAI2/Q,EAAa,GACb9jI,EAAS,GACb,IAAKz4I,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAE1B,IADAynC,EAAO5a,EAAM7sB,cACOygR,GAGhB,OAFAhoI,EAAOr+I,KAAKqtC,GACZ80O,EAAWniR,KAAKqtC,EAAK02N,UACbzxN,EAAU37B,eACd,IAAK,OACL,IAAK,QACD02B,EAAKliC,SAAS,IAAIktH,EAAM9qG,EAAK8f,EAAK9nC,QAAQ/C,IAC1C,MACJ,IAAK,MACL,IAAK,SACD6qC,EAAKliC,SAAS,IAAIktH,EAAMhrF,EAAK9nC,QAAQ9B,EAAG8pB,IAKxD,IAAImpG,EAAO,IAAIq3D,EAAQm0F,cAAc7jI,EAAQ8jI,GAC7C9jR,KAAKgnR,gBAAgB/5Q,IAAIorH,GAAM,KAGnChoF,KAAM,SAASA,EAAMnpC,GACjB,GAAImpC,EAAM,CACN,IAAIo/O,EAAcvoR,EAAUA,EAAQmzH,MAAQ,IAAIq1D,EAAQ11D,MAAM,EAAG,GAIjE,GAFA3pF,EAAOrwC,KAAKywP,MAAQzwP,KAAK45W,cAAcvpU,IAElC62N,EAAYuoB,GAAc,CAE3B,IAAIoqF,GADJpqF,EAAc,IAAI//F,EAAQ11D,MAAM52H,EAAK2S,MAAM05Q,EAAYrqR,GAAIhC,EAAK2S,MAAM05Q,EAAYtrR,KACpD2lQ,MAAMz5N,GAEhC+Z,EADiBpqD,KAAKuxR,YAAY9B,GACb5lB,MAAMgwG,GAC/B75W,KAAKymR,UAAU,IAAI/2F,EAAQ11D,MAAM52H,EAAK2S,MAAMq0C,EAAIhlD,GAAIhC,EAAK2S,MAAMq0C,EAAIjmD,KAGnE+C,IACAA,EAAQmpC,KAAOA,GAGnBrwC,KAAK85W,gBAEL95W,KAAKu/I,OAAO5+D,QAAQs8E,cAEpBj9J,KAAK+5W,kBAGT,OAAO/5W,KAAKywP,OAGhBwqH,QAAS,SAASt+L,GAKd,OAJa38K,KAAKu/I,OACNvvG,YACR2sI,EAAMA,EAAIitF,KAAK5pQ,KAAKi5P,OAEjBt8E,GAGXA,IAAK,SAASA,EAAK71J,GACf,KAAI61J,aAAe3iD,GAef,OAAOh6H,KAAKi5P,KAAK6Q,OAAO,GAdxB,IAAI7hQ,EAAOjI,KACPikQ,EAAWh8P,EAAKg8P,SAEpBtnF,GADAA,EAAM10K,EAAKgzW,QAAQt+L,IACTmtF,OAAO,GAEbhjP,EACAm9O,EAAS/0K,iBAAiBytF,EAAIv3K,EAAGu3K,EAAIx4K,GAAG,WACpC8D,EAAK8xW,sBAGT91G,EAASn2K,SAAS6uF,EAAIv3K,EAAGu3K,EAAIx4K,GAC7B8D,EAAK8xW,oBAOjBjoR,SAAU,WACN,IAAIjmF,EAAU7L,KAAK6L,QACfmB,EAAQnB,EAAQmB,QAChBL,EAASd,EAAQc,SAMrB,OAJI3M,KAAK02W,UACL/pW,GAAUV,EAAYjM,KAAK02W,QAAQ7qW,UAGhC,IAAIqvH,EAAK,EAAG,EAAGluH,EAAOL,IAEjC1F,KAAM,WACF,GAAIjH,KAAKkH,QAAQD,KAAKigB,QAAS,CAC3BlnB,KAAKq2W,WAAa,GAClBr2W,KAAKk7W,YAAc,EACnB,IAAK,IAAI3zW,EAAI,EAAGA,EAAIvH,KAAK+pR,eAAeviR,OAAQD,IAAK,CACjD,IAAIynC,EAAOhvC,KAAK+pR,eAAexiR,GAC/BvH,KAAKq2W,WAAW10W,KAAKqtC,MAIjCrrB,IAAK,WACD,GAAI3jB,KAAKkH,QAAQD,KAAKigB,QAAS,CAC3BlnB,KAAKq2W,WAAa,GAClBr2W,KAAKk7W,YAAc,EACnB,IAAK,IAAI3zW,EAAI,EAAGA,EAAIvH,KAAK+pR,eAAeviR,OAAQD,IAAK,CACjD,IAAIynC,EAAOhvC,KAAK+pR,eAAexiR,GAC/BvH,KAAKq2W,WAAW10W,KAAKqtC,GAEzBhvC,KAAK+2B,OAAO/2B,KAAKq2W,YAAY,KAIrCzyV,MAAO,WACH,GAAI5jB,KAAKq2W,WAAW7uW,OAAS,EAAG,CAC5B,IAAIwnC,EAAMmsU,EAAQ5zW,EACd6zW,EAAU,GACVjnV,EAAWqmV,GAAqBx6W,KAAKq2W,YACrCtvF,EAAc5yP,EAAS4yP,YACvB/mI,EAAS7rH,EAAS6rH,OAClBjjI,EAAS,CACT3X,EAAGpF,KAAKk7W,YAAcl7W,KAAKkH,QAAQD,KAAKs/E,QACxCpiF,EAAGnE,KAAKk7W,YAAcl7W,KAAKkH,QAAQD,KAAKu/E,SAI5C,IAFAxmF,KAAKokR,WAEA78Q,EAAI,EAAGA,EAAIy4I,EAAOx4I,OAAQD,IAE3B4zW,GADAnsU,EAAOgxG,EAAOz4I,IACAJ,QACdi0W,EAAQpsU,EAAKrf,IAAMwrV,EACnBA,EAAOruW,SAAS,IAAIktH,EAAMhrF,EAAK9nC,QAAQ9B,EAAI2X,EAAO3X,EAAG4pC,EAAK9nC,QAAQ/C,EAAI4Y,EAAO5Y,IAC7Eg3W,EAAOzrL,QAAU1vL,MACjBm7W,EAASn7W,KAAKu4Q,UAAU4iG,KAEpBA,EAAO/0U,SAIf,IAAK7+B,EAAI,EAAGA,EAAIw/Q,EAAYv/Q,OAAQD,IAChCynC,EAAO+3O,EAAYx/Q,IACnB4zW,EAASn7W,KAAK24Q,eAAe3pO,EAAK7nC,YAE9BnH,KAAKq7W,wBAAwBF,EAAQnsU,EAAM,SAAUosU,EAASr+V,GAC9D/c,KAAKq7W,wBAAwBF,EAAQnsU,EAAM,SAAUosU,EAASr+V,GAE9Do+V,EAAO/0U,QAAO,GACd+0U,EAAO73F,eAIftjR,KAAKkpR,eAELlpR,KAAKk7W,aAAe,IAI5BG,wBAAyB,SAAS7qG,EAAY8qG,EAAkBzH,EAAeuH,EAASr+V,GACpF,IAAIm3V,EAAYH,EAAc76F,EAC1B5xQ,EAASg0W,EAAiBzH,KAC1BnkL,EAAU1vL,KACVsH,aAAkBynW,IAAaqM,EAAQ9zW,EAAO24I,MAAMtwH,KACpDupP,EAAckiG,EAAQ9zW,EAAO24I,MAAMtwH,IAC/B+/J,EAAQuyF,aAAa/I,EAAYvpP,IACjC6gP,EAAWqjG,GAAe36F,EAAY+O,aAAa3gR,EAAOJ,QAAQ9E,QAElE2xW,EAAerkL,EAAQskL,oBAAoB13S,SAAS48M,EAAY7kP,SAASg5B,QAErE6mT,EAAa,SAASllU,GAClBkqO,EAAcxpF,EAAQ8iL,SAASxjU,EAAKrf,IACpC6gP,EAAWqjG,GAAe36F,EAAY+O,aAAa3gR,EAAOJ,QAAQ9E,OAClEouQ,EAAW8S,eAEf5zF,EAAQukL,2BAA2BtyW,KAAKoyW,EAAaG,WAAWA,MAIxE1jG,EAAWqjG,GAAe,IAAI75O,EAAMshP,EAAiBzH,EAAgB,WAAWzuW,EAAI2X,EAAO3X,EAAGk2W,EAAiBzH,EAAgB,WAAW1vW,EAAI4Y,EAAO5Y,KAS7J+nI,YAAa,SAAS93G,EAAOwkB,GACzB,IAAyBwB,EAArBixC,EAAO6vC,EAAK3uE,QACZgvT,EAAKt0G,EAAU7yO,GAASp0B,KAAK26W,iBAAiBvmV,GAAS,CAAE4rH,OAAQhgJ,KAAKggJ,QAC1E,GAAIu7N,EAAGv7N,OAAOx4I,OAAS,EAAG,CACtB,IAAIwnC,EAAOusU,EAAGv7N,OAAO,GACrB30D,EAAOr8C,EAAK02N,OAAO+b,IACnB,IAAK,IAAIl6Q,EAAI,EAAGA,EAAIg0W,EAAGv7N,OAAOx4I,OAAQD,IAElC6yC,GADApL,EAAOusU,EAAGv7N,OAAOz4I,IACLm+P,OAAO+b,KACJ,IAAX7oO,IACAwB,EAAKh1C,GAAK4pC,EAAK2/O,gBAAgBvpR,EAC/Bg1C,EAAKj2C,GAAK6qC,EAAK2/O,gBAAgBxqR,GAEnCknF,EAAOA,EAAKmxC,MAAMpiF,GAG1B,OAAOixC,GAGXmwR,iBAAkB,WACd,IAAI7O,EAAkB3sW,KAAK6L,QAAQkR,SAInC,OAHI/c,KAAK02W,UACL/J,EAAgBvoV,KAAOnY,EAAYjM,KAAK02W,QAAQ7qW,UAE7C8gW,GAGX+M,eAAgB,SAASr/O,GACrB,IAAIsyO,EAAkB3sW,KAAKw7W,mBAE3B,OAAO,IAAIxhP,EAAMK,EAAMj1H,EAAIunW,EAAgB9gV,KAAMwuG,EAAMl2H,EAAIwoW,EAAgBvoV,MAE/Eq3V,eAAgB,SAASphP,GACrB,IAAIsyO,EAAkB3sW,KAAKw7W,mBAE3B,OAAO,IAAIxhP,EAAMK,EAAMj1H,EAAIunW,EAAgB9gV,KAAMwuG,EAAMl2H,EAAIwoW,EAAgBvoV,MAE/Es3V,YAAa,SAASrhP,GAClB,OAAOr6H,KAAK27W,qBAAqBthP,EAAOr6H,KAAK47W,gBAEjDrqF,YAAa,SAASl3J,GAClB,OAAOr6H,KAAK27W,qBAAqBthP,EAAOr6H,KAAK68H,UAEjD0wJ,aAAc,SAASlzJ,GACnB,OAAOr6H,KAAK27W,qBAAqBthP,EAAOr6H,KAAK67W,eAEjDC,aAAc,SAASzhP,GACnB,OAAOr6H,KAAK27W,qBAAqBthP,EAAOr6H,KAAK+7W,qBAEjDzC,gBAAiB,SAASj/O,GACtB,IAAI2hP,EAAYh8W,KAAK05W,eAAer/O,GAKpC,OAJKr6H,KAAKu/I,OAAOvvG,YACbgsU,EAAU52W,EAAI42W,EAAU52W,EAAIpF,KAAKikQ,SAASr3O,WAC1CovV,EAAU73W,EAAI63W,EAAU73W,EAAInE,KAAKikQ,SAASttO,WAEvC32B,KAAK07W,YAAYM,IAE5BC,gBAAiB,SAAS5hP,GACtB,OAAOr6H,KAAKy7W,eAAez7W,KAAKuxR,YAAYl3J,KAEhDshP,qBAAsB,SAASthP,EAAOpC,GAClC,IAAI1hH,EAAS8jH,EACb,GAAIA,aAAiBL,EACb/B,IACA1hH,EAAS0hH,EAAO7vH,MAAMiyH,QAGzB,CACD,IAAIwB,EAAK77H,KAAK27W,qBAAqBthP,EAAMmB,UAAWvD,GAChD8D,EAAK/7H,KAAK27W,qBAAqBthP,EAAMoB,cAAexD,GACxD1hH,EAAS2kH,EAAKe,WAAWJ,EAAIE,GAEjC,OAAOxlH,GAGXivN,cAAe,SAAS10M,GACpB9wB,KAAKkH,QAAQ4pB,WAAaA,EAC1B9wB,KAAK6rE,cACD7rE,KAAKkH,QAAQ6pE,UACb/wE,KAAK8wB,WAAWq0C,SAIxB+2S,yBAA0B,SAASprV,GAC/B9wB,KAAKkH,QAAQ4rW,sBAAwBhiV,EACrC9wB,KAAKm8W,wBACDn8W,KAAKkH,QAAQ6pE,UACb/wE,KAAK8yW,sBAAsB3tS,SASnCm/I,OAAQ,SAASp9M,GAGb,IAAIxB,EAUAgrH,EACJ,OAbA1wH,KAAK2wW,YAAa,EAGdzpG,EAAYhgQ,KACZA,EAAUlH,KAAKkH,QAAQo9M,SAGvB5+M,EADAwhQ,EAAYhgQ,IAAYggQ,EAAYhgQ,EAAQxB,MACrC,OAGAwB,EAAQxB,MAGN4S,eACT,IAAK,OACDo4G,EAAI,IAAIg/D,EAAQkrG,WAAW56R,MAC3B,MAEJ,IAAK,UACD0wH,EAAI,IAAIg/D,EAAQsrG,cAAch7R,MAC9B,MAEJ,IAAK,gBACL,IAAK,QACL,IAAK,SACL,IAAK,iBACD0wH,EAAI,IAAIg/D,EAAQypF,aAAan5Q,MAC7B,MACJ,QACI,KAAM,qBAAuB0F,EAAO,sBAE5C,IAAIy8Q,EAAe,IAAIzyF,EAAQ8mG,YAAYx2R,MACvCoiR,EAAa1xJ,EAAE4zF,OAAOp9M,GAC1B,GAAIk7Q,EAAY,CACZ,IAAI/pJ,EAAO,IAAIq3D,EAAQwyF,eAAeC,EAAcC,EAAYl7Q,EAAUA,EAAQ4f,QAAU,MAC5F9mB,KAAKgnR,gBAAgB/5Q,IAAIorH,GAE7Br4H,KAAK2wW,YAAa,EAClB3wW,KAAKo8W,sBAOTn6F,aAAc,SAAStyP,GACnB,IAAIiuC,EAIJ,OAHAA,EAAQmpM,EAAM78P,MAAMlK,KAAKggJ,QAAQ,SAAS/6I,GACtC,OAAOA,EAAEi5I,OAAOvuH,KAAOA,MAGhBiuC,EAEXA,EAAQmpM,EAAM78P,MAAMlK,KAAK+mR,aAAa,SAASriR,GAC3C,OAAOA,EAAEw5I,OAAOvuH,KAAOA,MAK/B0sV,kBAAmB,SAAS1sV,GASxB,OAPI3vB,KAAK0vW,YACG1vW,KAAKwyW,SAAS7iV,GAEdo3O,EAAM78P,MAAMlK,KAAKggJ,QAAQ,SAASC,GACtC,OAAQA,EAAM5rH,UAAY,IAAI1E,KAAOA,MAMjD2sV,mBAAoB,SAASjvT,GASzB,OAPIrtD,KAAK0vW,YACG3oG,EAAM78P,MAAMlK,KAAKggJ,QAAQ,SAASC,GACtC,OAAQA,EAAM5rH,UAAY,IAAIg5B,MAAQA,KAGlCrtD,KAAKwyW,SAASnlT,IAK9BkvT,uBAAwB,SAAS5sV,GAC7B,IAAI6gP,EAMJ,OALIxwQ,KAAK8yW,wBACLtiG,EAAazJ,EAAM78P,MAAMlK,KAAK+mR,aAAa,SAASvW,GAChD,OAAQA,EAAWn8O,UAAY,IAAI1E,KAAOA,MAG3C6gP,GAGXgsG,wBAAyB,SAASnvT,GAC9B,IAAImjN,EAIJ,OAHIxwQ,KAAK8yW,wBACLtiG,EAAaxwQ,KAAKk3W,oBAAoB7pT,IAEnCmjN,GAGXulG,qBAAsB,SAAS7uW,GACvBA,EAAQo9M,SACRp9M,EAAQo9M,OAAS97M,EAAW,GAAIknL,EAAQiiG,WAAW5pR,GAAGqkK,gBAAkB,GAAIllK,EAAQo9M,UAI5F0sJ,kBAAmB,SAASv/R,EAAUq/R,IAC9Br/R,EAASjqE,QAAUspW,EAAWtpW,SAC9BxH,KAAKoK,QAAQ2xE,GAAQ,CAAEtK,SAAUA,EAAUq/R,WAAYA,KAG/D8I,cAAe,SAASvpU,GACpB,OAAOjtC,EAAK+S,IAAI/S,EAAKwV,IAAIy3B,EAAMrwC,KAAKkH,QAAQg7P,SAAUliQ,KAAKkH,QAAQi7P,UAEvE23G,cAAe,SAASzlR,GACpB,IAAIq7F,EAAU1vL,KACV28K,EAAMtoF,GAAOq7F,EAAQupE,KAErBvpE,EAAQnwC,OAAOvvG,WACf0/I,EAAQu0E,SAASn2K,SAAS6uF,EAAIv3K,EAAGu3K,EAAIx4K,GACrCurL,EAAQqrL,mBAERrrL,EAAQ+2F,UAAU9pG,GAClB+S,EAAQ+sL,wBAIhBC,WAAY,WACR18W,KAAKoK,QAAQwjW,GAAK,CAAEhnT,MAAO5mD,KAAKi5P,KAAMr0N,MAAOtyB,OAAO49G,OAExDu2J,UAAW,SAAS9pG,GAChB38K,KAAKi5P,KAAOt8E,EACZ38K,KAAK28W,oBAET5B,eAAgB,WACZ,IAAI1qU,EAAOrwC,KAAKywP,MAEZl9M,EAAY,IAAIwnO,EAAmB,EAAG,EAAG1qO,EAAMA,GACnDkD,EAAU3jC,OAAO5P,KAAKsqR,WACtBtqR,KAAK48W,kBAAkBrpU,GACvBvzC,KAAK28W,oBAETF,oBAAqB,WACjB,IAAI9/L,EAAM38K,KAAKi5P,KACX5oN,EAAOrwC,KAAKywP,MAEZl9M,EAAY,IAAIwnO,EAAmBp+F,EAAIv3K,EAAGu3K,EAAIx4K,EAAGksC,EAAMA,GAC3DkD,EAAU3jC,OAAO5P,KAAKsqR,WACtBtqR,KAAK48W,kBAAkBrpU,GACvBvzC,KAAK28W,oBAETC,kBAAmB,SAASC,GACxB78W,KAAK67W,aAAegB,EAAgB9iP,WACpC/5H,KAAK+7W,mBAAqBc,EAAgB3kP,SAAS6B,YAEvD4iP,iBAAkB,WACd,IAAIhgM,EAAM38K,KAAKi5P,KACX5oN,EAAOrwC,KAAKywP,MAEZl9M,EAAY,IAAIwnO,EAAmBp+F,EAAIv3K,EAAGu3K,EAAIx4K,EAAGksC,EAAMA,GAC3DrwC,KAAK68H,QAAUtpF,EAAUwmF,WACzB/5H,KAAK47W,cAAgBroU,EAAU2kF,SAAS6B,YAE5CmrJ,SAAU,SAAS9wP,EAAOgnJ,GACtB,IAAI7kK,EAASvW,KAAK26W,iBAAiBvmV,GACnCp0B,KAAKsqR,UAAUvK,QAAQxpQ,EAAO4vJ,QAASiV,GACvCp7K,KAAK46W,aAAarkW,GAAQ,IAE9BqkW,aAAc,SAASrkW,EAAQqpQ,GAC3B,IAEIr4Q,EAAGynC,EAFH8tU,EAAWl9F,EAAU5/Q,KAAKggJ,OAAOx4I,OAAS,EAAI,EAC9Cu1W,EAASn9F,EAAU5/Q,KAAK+mR,YAAYv/Q,OAAS,EAAI,EAErD,IAAKD,EAAI,EAAGA,EAAIgP,EAAOypI,OAAOx4I,OAAQD,IAClCynC,EAAOz4B,EAAOypI,OAAOz4I,GACrBw/P,EAAMhwO,OAAO/2B,KAAKggJ,OAAQhxG,GAC1B+3N,EAAMnqM,OAAO58D,KAAKggJ,OAAQhxG,EAAM8tU,GAEpC,IAAKv1W,EAAI,EAAGA,EAAIgP,EAAO66V,KAAK5pW,OAAQD,IAChCynC,EAAOz4B,EAAO66V,KAAK7pW,GACnBw/P,EAAMhwO,OAAO/2B,KAAK+mR,YAAa/3O,GAC/B+3N,EAAMnqM,OAAO58D,KAAK+mR,YAAa/3O,EAAM+tU,IAG7CpC,iBAAkB,SAASvmV,GACvB,IAAI7sB,EAAGgP,EAAS,GAAI4gB,EAAO/C,EAW3B,IAVA7d,EAAO4vJ,QAAU,GACjB5vJ,EAAOypI,OAAS,GAChBzpI,EAAO66V,KAAO,GAETh9U,EAEOnxB,EAAQmxB,KAChB+C,EAAO,CAAC/C,IAFR+C,EAAOn3B,KAAK+pR,eAAenjR,QAK1BW,EAAI,EAAGA,EAAI4vB,EAAK3vB,OAAQD,IAAK,CAC9B,IAAIynC,EAAO7X,EAAK5vB,GACZynC,aAAgBg5O,IAChBzxQ,EAAOypI,OAAOr+I,KAAKqtC,GACnBz4B,EAAO4vJ,QAAQxkK,KAAKqtC,EAAKkvG,SAClBlvG,aAAgBg7O,KACvBzzQ,EAAO66V,KAAKzvW,KAAKqtC,GACjBz4B,EAAO4vJ,QAAQxkK,KAAKqtC,EAAKkvG,SAIjC,OAAO3nI,GAGXonS,YAAa,SAAS3uQ,EAAMypO,EAAUukG,GAClChuU,EAAK5I,QAAO,GACR4I,aAAgBg5O,IAChBhoR,KAAKy6W,qBAAqBzrU,GAC1BhvC,KAAKi9W,aAAajuU,EAAMypO,EAAUukG,IAC3BhuU,aAAgBg7O,KACvBhqR,KAAK06W,0BAA0B1rU,GAC/BhvC,KAAKk9W,kBAAkBluU,EAAMypO,IAGjCz4Q,KAAKsqR,UAAUvzP,OAAOiY,EAAKkvG,SAG/B++N,aAAc,SAASh9N,EAAOw4H,EAAUukG,GACpC,IAAIz1W,EAAGipQ,EAAY6W,EACfxQ,EAAU,GAAIjsL,EAAU,GAS5B,IARA5qF,KAAK4lR,YAAY+B,eAEblP,GACAz4Q,KAAKgnR,gBAAgBtB,iBAAiB,IAAI9B,EAAgB3jI,IAE9D8mH,EAAMhwO,OAAO/2B,KAAKggJ,OAAQC,GAC1BjgJ,KAAKw1W,gBAAgBz+U,OAAOkpH,GAEvB14I,EAAI,EAAGA,EAAI04I,EAAMuwC,WAAWhpL,OAAQD,IAAK,CAC1C8/Q,EAAYpnI,EAAMuwC,WAAWjpL,GAC7B,IAAK,IAAIojC,EAAI,EAAGA,EAAI08O,EAAUN,YAAYv/Q,OAAQmjC,IAC9C6lO,EAAa6W,EAAUN,YAAYp8O,GAC9BqyU,GAAuBlzV,EAAQuL,QAAQm7O,EAAYwsG,KAChDxsG,EAAWuX,iBAAmBV,EAC9BxQ,EAAQl1Q,KAAK6uQ,GACNA,EAAWmT,iBAAmB0D,GACrCz8L,EAAQjpF,KAAK6uQ,IAM7B,IAAKjpQ,EAAI,EAAGA,EAAIsvQ,EAAQrvQ,OAAQD,IAC5BsvQ,EAAQtvQ,GAAG+F,OAAO,KAAMmrQ,GACxB5B,EAAQtvQ,GAAG+7Q,cAEf,IAAK/7Q,EAAI,EAAGA,EAAIqjF,EAAQpjF,OAAQD,IAC5BqjF,EAAQrjF,GAAGD,OAAO,KAAMmxQ,GACxB7tL,EAAQrjF,GAAG+7Q,eAInB45F,kBAAmB,SAAS1sG,EAAYiI,GAChCjI,EAAWuX,iBACXhhB,EAAMhwO,OAAOy5O,EAAWuX,gBAAgBhB,YAAavW,GAErDA,EAAWmT,iBACX5c,EAAMhwO,OAAOy5O,EAAWmT,gBAAgBoD,YAAavW,GAErDiI,GACAz4Q,KAAKgnR,gBAAgBtB,iBAAiB,IAAIhC,EAAqBlT,IAGnEzJ,EAAMhwO,OAAO/2B,KAAK+mR,YAAavW,IAGnC2sG,iBAAkB,SAAS/oV,EAAOgpV,GAC9B,IAAIpuU,EAAMmG,EAAU8qG,EAAOr2I,EAG3B,IAFAwqB,EAAQnxB,EAAQmxB,GAASA,EAAQ,CAACA,GAE3BA,EAAM5sB,QAGT,GAFAwnC,EAAO5a,EAAMve,SACboqI,EAAQjgJ,KAAKwyW,SAASxjU,EAAKqe,QAEvBrtD,KAAKq9W,wBAAwBp9N,GAC7BjgJ,KAAK29S,YAAY19J,GAAO,UACjBjgJ,KAAKwyW,SAASxjU,EAAKqe,KACtB+vT,GAAapuU,EAAKi7B,aAAej7B,EAAKy7B,UAEtC,IADAt1B,EAAWnG,EAAKmG,SAAStnC,OACpBjE,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IACjCwqB,EAAMzyB,KAAKwzC,EAASvrC,KAOxCyzW,wBAAyB,SAASp9N,GAC9B,IACIr2I,EADAm9Q,EAAc9mI,EAAM8mI,cAGxB,GAAIA,EACA,IAAKn9Q,EAAM,EAAGA,EAAMm9Q,EAAYv/Q,OAAQoC,IACpC5J,KAAK29S,YAAY52B,EAAYn9Q,IAAM,IAK/C0zW,aAAc,SAASjpV,EAAUokP,GAC7B,GAAKzjJ,EAAQ3gG,GAAb,CAIA,IAAI4rH,EAAQjgJ,KAAKwyW,SAASn+U,EAAS1E,IACnC,GAAIswH,EACA,OAAOA,EAGX,IAAI/4I,EAAUsB,EAAW,GAAIxI,KAAKkH,QAAQ+nL,eAK1C,OAJA/nL,EAAQmtB,SAAWA,EACnB4rH,EAAQ,IAAI+nI,GAAM9gR,EAASlH,MAC3BA,KAAK04Q,SAASz4H,GAAoB,IAAbw4H,GACrBz4Q,KAAKwyW,SAASn+U,EAAS1E,IAAMswH,EACtBA,IAGXs9N,kBAAmB,SAASlpV,GACxB,GAAK2gG,EAAQ3gG,GAAb,CAIA,IAAI4rH,EAAQjgJ,KAAKwyW,SAASn+U,EAASg5B,KACnC,GAAI4yF,EACA,OAAOA,EAGX,IAAI/4I,EAAUsB,EAAW,GAAIxI,KAAKkH,QAAQ+nL,eAK1C,OAJA/nL,EAAQmtB,SAAWA,EACnB4rH,EAAQ,IAAI+nI,GAAM9gR,EAASlH,MAC3BA,KAAK04Q,SAASz4H,GACdjgJ,KAAKwyW,SAASn+U,EAASg5B,KAAO4yF,EACvBA,IAGXu9N,cAAe,SAASppV,EAAOjoB,GAC3B,IAAI6iC,EAAMplC,EAAKq2I,EAAOw9N,EACtB,IAAK7zW,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAC9BolC,EAAO5a,EAAMxqB,GACbq2I,EAAQjgJ,KAAKu9W,kBAAkBvuU,IAC/ByuU,EAAcz9W,KAAKu9W,kBAAkBpxW,MACjBnM,KAAK41Q,UAAU6nG,EAAax9N,IAC/BjgJ,KAAK44Q,QAAQ6kG,EAAax9N,IAKnDy9N,eAAgB,SAAS/4W,GACrB,IAKIiF,EACA4lE,EANAvnE,EAAOjI,KACPkjC,EAAOv+B,EAAEu+B,KACT8J,EAASroC,EAAEqoC,OACX5Y,EAAQzvB,EAAEyvB,MACVltB,EAAUe,EAAKf,QAInB,GAAIvC,EAAEsgB,MACF,IAAKrb,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAC1B5J,KAAKwyW,SAASp+U,EAAMxqB,GAAKyjD,MACzBrtD,KAAKwyW,SAASp+U,EAAMxqB,GAAKyjD,KAAKoiT,mBAH1C,CASA,GAAc,UAAVziU,EACAhtC,KAAKm9W,iBAAiBx4W,EAAEyvB,OAAO,QAc/B,IAXM4Y,GAAqB,eAAXA,GAA6BhtC,KAAK29W,gBAC9C39W,KAAK29W,eAAgB,EACrBnuS,GAAY,GAGXxiC,GAAW9J,GACZj7B,EAAKguD,QAGTj2D,KAAKw9W,cAAcppV,EAAO8O,GAErBt5B,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAC9BwqB,EAAMxqB,GAAKghE,OAIf1jE,EAAQo9M,SAAW90I,GAAuB,UAAVxiC,GAAgC,OAAVA,IACtD/kC,EAAKq8M,OAAOp9M,EAAQo9M,QAGpB90I,IACAxvE,KAAKoK,QAAQ,aACbpK,KAAK29W,eAAgB,KAI7BC,SAAU,SAAS5uU,GACXA,aAAgBg5O,GAChBhoR,KAAK04Q,SAAS1pO,GACPA,aAAgBg7O,IACvBhqR,KAAKm3W,cAAcnoU,IAI3BmqU,eAAgB,SAAS0E,GACrB,IAAInuL,EAAU1vL,KAAK4lR,YAAYl2F,QAE/B,IAAK1vL,KAAK89W,eAA6C,IAA5BpuL,EAAQtpJ,SAAS5+B,OAAc,CACtD,IAAIqE,EAAU6jL,EAAQtpJ,SAAS,GAC/B,GAAIv6B,IAAwC,IAA7BA,EAAQ3E,QAAQqnD,SAAoB,CAC/C,IAAIA,EAAW1iD,EAAQ3E,QAAQqnD,SAC3B+gI,EAAQ/gI,EAAS+gI,MAarB,GAZItvL,KAAK0vW,aAAgC,IAAjBpgL,EAAM9nL,SACtBqE,aAAmBm8Q,GACnB14F,EAAQ,CAAC,OAAQ,kBAAmB,uBAC7BzjL,aAAmBm+Q,KAC1B16F,EAAQ,CAAC,SAGT/gI,IAAgC,IAApBA,EAASx3B,QACrBu4J,EAAM3tL,KAAK,WAIf2tL,GAASA,EAAM9nL,OAAQ,CACvB,IACI6yH,EACJr6H,KAAK89W,cAAgB,IAAInH,GAAejnL,EAAS,CAC7CJ,MAAOA,EACPhmK,MAAOtpB,KAAK42W,cAAcptW,KAAKxJ,MAC/BgyF,OAAO,EACP+rR,YAAa9kW,SAASy2K,EAAQ7jL,QAAQQ,QAAQ,aAAaO,IAAI,UAAW,IAAM,KAEpF,IAAIoxW,EAAajyW,EAAW/L,KAAK89W,cAAc11E,OAAOv8R,SAClDoyW,EAAchyW,EAAYjM,KAAK89W,cAAc11E,OAAOv8R,SACxD,GAAIA,aAAmBm8Q,GAAO,CAC1B,IAAI2D,EAAc3rR,KAAKuxR,YAAY1lR,EAAQ65P,OAAO+b,KAClDpnJ,EAAQ,IAAIL,EAAM2xJ,EAAYvmR,EAAGumR,EAAYxnR,GAAG0lQ,MAAM,IAAI7vI,GACrDgkP,EAAaryF,EAAY3+Q,OAAS,EACnCixW,EAdM,UAeP,GAAIpyW,aAAmBm+Q,GAAY,CACtC,IAAIk0F,EAAmBl+W,KAAKuxR,YAAY1lR,EAAQ65P,UAEhDrrI,EAAQ,IAAIL,EAAMkkP,EAAiB94W,EAAG84W,EAAiB/5W,GAClD0lQ,MAAM,IAAI7vI,GACNgkP,EAAaE,EAAiBlxW,MAAQ,IAAM,EAC7CixW,EArBE,KAyBV5jP,GACKr6H,KAAKu/I,OAAOvvG,YACbqqF,EAAQA,EAAMwvI,MAAM,IAAI7vI,EAAMh6H,KAAKikQ,SAASr3O,WAAY5sB,KAAKikQ,SAASttO,aAE1E0jG,EAAQr6H,KAAKy7W,eAAephP,GAC5BA,EAAQ,IAAIL,EAAM52H,EAAKwV,IAAIyhH,EAAMj1H,EAAG,GAAIhC,EAAKwV,IAAIyhH,EAAMl2H,EAAG,IAC1DnE,KAAK89W,cAActwK,OAAOnzE,GACtBwjP,GACA79W,KAAK89W,cAAc11E,OAAOz+R,IAAI,QAASR,KAG3CnJ,KAAKmpR,sBAOzBytF,cAAe,SAASjyW,GACpB3E,KAAKoK,QAAQ,eAAgBzF,GAC7B3E,KAAKmpR,mBAGTg1F,oBAAqB,SAAS9jP,GAC1B,OAAOA,EAAMyvI,MAAM,EAAI9pQ,KAAKqwC,SAGhC00O,YAAa,WACT/kR,KAAKggJ,OAAS,GACdhgJ,KAAK+pR,eAAiB,GACtB/pR,KAAK+mR,YAAc,GACnB/mR,KAAKwyW,SAAW,GAChBxyW,KAAKk3W,oBAAsB,GAC3Bl3W,KAAKg0W,oBAAsB,IAAIoK,GAC/Bp+W,KAAKi0W,2BAA6B,GAClCj0W,KAAKgnR,gBAAkB,IAAI5B,EAAgB,CACvCi5F,OAAQr+W,KAAK+4W,aACbuF,OAAQt+W,KAAK+4W,eAEjB/4W,KAAK2vB,GAAK+/J,EAAQy9E,YAGtBopG,gBAAiB,WACb,IAAItuW,EAAOjI,KACXiI,EAAK4jE,cAED5jE,EAAKynW,aACLznW,EAAKk0W,wBAGLl0W,EAAKf,QAAQ6pE,WACT9oE,EAAKynW,aACL1vW,KAAKu+W,gBAAiB,EACtBv+W,KAAKw+W,qBAAsB,EAC3Bv2W,EAAK6oB,WAAWq0C,QAChBl9D,EAAK6qW,sBAAsB3tS,SAE3Bl9D,EAAK6oB,WAAWq0C,UAK5B0G,YAAa,WACT,GAAImpD,EAAQh1H,KAAKkH,QAAQ4rW,uBAAwB,CAC7C9yW,KAAK0vW,aAAc,EACnB,IAAI38G,EAAY/yP,KAAKkH,QAAQ4pB,YAAc,GACvC2tV,EAAKx7W,EAAQ8vP,GAAa,CAAEllP,KAAMklP,GAAcA,EAEhD/yP,KAAK8wB,YAAc9wB,KAAK0+W,sBACxB1+W,KAAK8wB,WACA7mB,OAAO,SAAUjK,KAAK0+W,uBACtBz0W,OAAO,eAAgBjK,KAAK2+W,4BAC5B10W,OAAO,QAASjK,KAAK4+W,sBAE1B5+W,KAAK0+W,sBAAwB1+W,KAAK6+W,eAAer1W,KAAKxJ,MACtDA,KAAK2+W,2BAA6B3+W,KAAK8+W,oBAAoBt1W,KAAKxJ,MAChEA,KAAK4+W,oBAAsB5+W,KAAKq9S,OAAO7zS,KAAKxJ,OAGhDA,KAAK8wB,WAAanwB,MAAMkN,KAAKE,WAAWi5C,OAAOy3T,GAC1Cj1W,KAAK,SAAUxJ,KAAK0+W,uBACpBl1W,KAAK,eAAgBxJ,KAAK2+W,4BAC1Bn1W,KAAK,QAASxJ,KAAK4+W,0BAExB5+W,KAAK++W,kBACL/+W,KAAK0vW,aAAc,GAI3ByM,sBAAuB,WACnB,IAAIppH,EAAY/yP,KAAKkH,QAAQ4rW,sBAC7B,GAAI//G,EAAW,CACX,IAAI0rH,EAAKx7W,EAAQ8vP,GAAa,CAAEllP,KAAMklP,GAAcA,EAEhD/yP,KAAK8yW,uBAAyB9yW,KAAKg/W,2BACnCh/W,KAAK8yW,sBACA7oW,OAAO,SAAUjK,KAAKg/W,4BACtB/0W,OAAO,eAAgBjK,KAAKi/W,iCAC5Bh1W,OAAO,QAASjK,KAAKk/W,2BAE1Bl/W,KAAKg/W,2BAA6Bh/W,KAAKm/W,oBAAoB31W,KAAKxJ,MAChEA,KAAKi/W,gCAAkCj/W,KAAKo/W,yBAAyB51W,KAAKxJ,MAC1EA,KAAKk/W,yBAA2Bl/W,KAAKq/W,kBAAkB71W,KAAKxJ,OAGhEA,KAAK8yW,sBAAwBnyW,MAAMkN,KAAKE,WAAWi5C,OAAOy3T,GACrDj1W,KAAK,SAAUxJ,KAAKg/W,4BACpBx1W,KAAK,eAAgBxJ,KAAKi/W,iCAC1Bz1W,KAAK,QAASxJ,KAAKk/W,4BAIhCJ,oBAAqB,SAASn6W,GACZ,QAAVA,EAAEe,OACF1F,KAAKu+W,gBAAiB,IAI9Ba,yBAA0B,SAASz6W,GACjB,QAAVA,EAAEe,OACF1F,KAAKw+W,qBAAsB,IAInCnhE,OAAQ,WACJr9S,KAAKu+W,gBAAiB,GAG1Bc,kBAAmB,WACfr/W,KAAKw+W,qBAAsB,GAG/BK,eAAgB,SAASl6W,GACJ,WAAbA,EAAEqoC,OACEhtC,KAAKs/W,kBACLt/W,KAAKu/W,cAAc56W,EAAEyvB,OAEL,eAAbzvB,EAAEqoC,OACLhtC,KAAKs/W,kBACLt/W,KAAKw/W,cAAc76W,EAAEyvB,MAAOzvB,EAAEsgB,OAEd,QAAbtgB,EAAEqoC,OACThtC,KAAKg0W,oBAAoB/mW,IAAItI,EAAEyvB,OACX,SAAbzvB,EAAEqoC,OACThtC,KAAKy/W,YAAY96W,EAAEyvB,OAEnBp0B,KAAK4d,WAIb0hW,eAAgB,WACZ,OAAQt/W,KAAKq0H,YAGjBw7O,qBAAsB,WAClB7vW,KAAKq0H,YAAcr0H,KAAKq0H,YAAc,GAAK,GAG/Cy7O,oBAAqB,WACjB9vW,KAAKq0H,WAAajxH,EAAKwV,KAAK5Y,KAAKq0H,YAAc,GAAK,EAAG,IAG3Dz2G,QAAS,WACL5d,KAAKu+W,gBAAiB,EACjBv+W,KAAKw+W,qBACNx+W,KAAK0/W,+BAIbA,4BAA6B,WACzB1/W,KAAKi2D,QACLj2D,KAAK2/W,WAAW3/W,KAAK8wB,WAAW4G,QAC5B13B,KAAK8yW,uBACL9yW,KAAK4/W,gBAAgB5/W,KAAK8yW,sBAAsBp7U,QAAQ,GAGxD13B,KAAKkH,QAAQo9M,OACbtkN,KAAKskN,OAAOtkN,KAAKkH,QAAQo9M,QAEzBtkN,KAAKo8W,qBAETp8W,KAAKoK,QAAQ,cAGjBwmW,mBAAoB,WAChB5wW,KAAKw+W,qBAAsB,EACtBx+W,KAAKu+W,gBACNv+W,KAAK0/W,+BAIbtD,mBAAoB,WAEhB,IADA,IAAIr1F,EAAc/mR,KAAK+mR,YACdn9Q,EAAM,EAAGA,EAAMm9Q,EAAYv/Q,OAAQoC,IACxCm9Q,EAAYn9Q,GAAKgU,WAIzB2hW,cAAe,SAASnrV,GACpB,IACI4a,EAAMznC,EADNgrW,EAAUvyW,KAAKwyW,SAEnB,IAAKjrW,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAEtBgrW,GADJvjU,EAAO5a,EAAM7sB,IACIooB,MACb3vB,KAAK+2B,OAAOw7U,EAAQvjU,EAAKrf,KAAK,GAC9B4iV,EAAQvjU,EAAKrf,IAAM,OAK/B8vV,YAAa,WACT,IAAI/vL,EAAU1vL,KACV+vL,EAAgBL,EAAQskL,oBAC5BjkL,EAAczuL,SAAQ,SAASyyW,GAC3B,IAAI1/U,EAAW0/U,EAAa1/U,SACxB4rH,EAAQ8zN,EAAaloW,QACpBwoB,EAASo6B,UACNwxF,GACAA,EAAMqvN,uBACN5/K,EAAQgpF,SAASz4H,EAAO8zN,EAAat7F,UACrC/oF,EAAQ8iL,SAASn+U,EAAS1E,IAAMswH,GAEhCyvC,EAAQ4tL,aAAajpV,GAEzB0/U,EAAavuP,WACbuqE,EAAch5J,OAAO1C,QAKjCmrV,cAAe,SAASprV,EAAOnP,GAC3B,IAAK,IAAI1d,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAI8sB,EAAWD,EAAM7sB,GAEjB04I,EAAQjgJ,KAAKwyW,SAASn+U,EAAS1E,IAC/BswH,GACAA,EAAMivN,uBAAuB76U,EAAUpP,KAKnD06V,WAAY,SAAS5rV,GACjB,IAAK,IAAIxsB,EAAI,EAAGA,EAAIwsB,EAAUvsB,OAAQD,IAClCvH,KAAKs9W,aAAavpV,EAAUxsB,IAAI,IAIxC43W,oBAAqB,SAASx6W,GACT,WAAbA,EAAEqoC,OACEhtC,KAAKs/W,kBACLt/W,KAAK6/W,mBAAmBl7W,EAAEyvB,OAEV,QAAbzvB,EAAEqoC,OACThtC,KAAK4/W,gBAAgBj7W,EAAEyvB,OACH,SAAbzvB,EAAEqoC,SAEW,eAAbroC,EAAEqoC,OACLhtC,KAAKs/W,kBACLt/W,KAAK8/W,mBAAmBn7W,EAAEyvB,OAG9Bp0B,KAAK4wW,uBAIbiP,mBAAoB,SAASzrV,GACzB,IAAK,IAAI7sB,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9BvH,KAAK+2B,OAAO/2B,KAAKk3W,oBAAoB9iV,EAAM7sB,GAAG8lD,MAAM,GACpDrtD,KAAKk3W,oBAAoB9iV,EAAM7sB,GAAG8lD,KAAO,MAIjDyyT,mBAAoB,SAAS1rV,GACzB,IAAK,IAAI7sB,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAI8sB,EAAWD,EAAM7sB,GAEJvH,KAAKk3W,oBAAoB7iV,EAASg5B,KACxC6hT,uBAAuB76U,KAI1CurV,gBAAiB,SAAS74F,EAAatO,GAGnC,IAFA,IAAIjxQ,EAASu/Q,EAAYv/Q,OAEhBD,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI8sB,EAAW0yP,EAAYx/Q,GAC3BvH,KAAK+/W,uBAAuB1rV,EAAUokP,KAI9CsnG,uBAAwB,SAAS1rV,EAAUokP,GACvC,IAAKz4Q,KAAKk3W,oBAAoB7iV,EAASg5B,KAAM,CACzC,IAAIlvB,EAAOn+B,KAAKggX,mBAAmB3rV,EAAS8J,MACvC62F,EAAQ72F,IAAkB,OAATA,IAClBA,EAAO,IAAI67F,EAAM3lG,EAASo+U,MAAOp+U,EAASq+U,QAG9C,IAAIt0U,EAAKp+B,KAAKggX,mBAAmB3rV,EAAS+J,IAK1C,GAJK42F,EAAQ52F,IAAc,OAAPA,IAChBA,EAAK,IAAI47F,EAAM3lG,EAASs+U,IAAKt+U,EAASu+U,MAGtC59O,EAAQ72F,IAAS62F,EAAQ52F,GAAK,CAC9B,IAAIl3B,EAAUsB,EAAW,GAAIxI,KAAKkH,QAAQmoL,oBAC1CnoL,EAAQmtB,SAAWA,EACnB,IAAIm8O,EAAa,IAAIwZ,GAAW7rP,EAAMC,EAAIl3B,GAE1ClH,KAAKk3W,oBAAoB7iV,EAASg5B,KAAOmjN,EACzCxwQ,KAAKm3W,cAAc3mG,EAAYiI,MAK3CunG,mBAAoB,SAASt3W,GACzB,IAAI2+Q,EAMJ,OAJIryJ,EAAQtsH,IAAoB,OAAVA,IAClB2+Q,EAAYrnR,KAAKwyW,SAAS9pW,IAGvB2+Q,GAGX03F,gBAAiB,WACb,IAAI92W,EAAOjI,KAEP8wB,EADU7oB,EAAKf,QACM4pB,WAIzB,IAFAA,EAAa7tB,EAAQ6tB,GAAc,CAAEjjB,KAAMijB,GAAeA,aAEhCnwB,MAAMkN,KAAKE,cAAgB+iB,aAAsBnwB,MAAMkN,KAAKG,wBAClF,MAAM,IAAIyC,MAAM,qQAGfqgB,EAAWlC,SACZkC,EAAWlC,OAAS,CAChB,CAAE3J,MAAO,QACT,CAAEA,MAAO,OACT,CAAEA,MAAO,kBACT,CAAEA,MAAO,cAGbhd,EAAK6oB,YAAc7oB,EAAKwlR,iBACxBxlR,EAAKi1S,oBAGTj1S,EAAKwlR,gBAAkBxlR,EAAKy1W,eAAel0W,KAAKvB,GAChDA,EAAKm1S,cAAgBn1S,EAAKo1S,OAAO7zS,KAAKvB,GAEtCA,EAAK6oB,WAAa9iB,EAAuBg5C,OAAOl2B,GAC3CtnB,KAAKszC,EAAQ70C,EAAKwlR,iBAClBjkR,KAAKohD,EAAO3iD,EAAKm1S,gBAG1BF,kBAAmB,WACf,IAAIj1S,EAAOjI,KAEXiI,EAAK6oB,WAAW7mB,OAAO6yC,EAAQ70C,EAAKwlR,iBAAiBxjR,OAAO2gD,EAAO3iD,EAAKm1S,gBAG5E/rB,OAAQ,SAAStN,EAASsE,GAClBA,IAAazlR,GAAemhR,IACxBsE,GACAroR,KAAK0sR,UAAU/qR,KAAKoiR,GACpB/jR,KAAKm2W,aAAap8T,OAAOgqO,EAAQ7lI,UAGjC6oH,EAAMhwO,OAAO/2B,KAAK0sR,UAAW3I,GAC7B/jR,KAAKm2W,aAAap/U,OAAOgtP,EAAQ7lI,WAK7C0zN,gBAAiB,SAAS3xN,EAAOv3I,GACzBA,EACA1I,KAAKmoR,mBAAmBj7Q,KAAK+yI,GAE7BjgJ,KAAKmoR,mBAAmBnmR,WAIhC+3W,gBAAiB,WAGb,IAFA,IAAIkG,EAAWjgX,KAAK0sR,UAEXnlR,EAAI,EAAGA,EAAI04W,EAASz4W,OAAQD,IAAK,CACtC,IAAIw8Q,EAAUk8F,EAAS14W,GAEnBw8Q,EAAQE,eACRF,EAAQE,gBAEZF,EAAQnmQ,YAIhBsiW,SAAU,WACN,IAAK,IAAI34W,EAAI,EAAGA,EAAIvH,KAAK+mR,YAAYv/Q,OAAQD,IACzCvH,KAAK+mR,YAAYx/Q,GAAGqW,WAI5BurQ,gBAAiB,WACTnpR,KAAK89W,gBACL99W,KAAK89W,cAAc3wW,OACnBnN,KAAK89W,cAAc97W,UACnBhC,KAAK89W,cAAgB,OAI7BxD,sBAAuB,WACft6W,KAAK02W,UACL12W,KAAK02W,QAAQvpW,OACbnN,KAAK02W,QAAQ10W,UACbhC,KAAK02W,QAAU,OAIvBvlN,gBAAiB,WACb,IAAIv5D,EAAU53F,KAAKu/I,OAAOohI,SACtBysF,EAAevkI,EAAKt1L,YACAvD,WAAW4nD,EAAQxyF,GAAIwyF,EAAQzzF,GAEnDg8W,EAAW,IAAIt3I,EAAK3tG,KAAK,CAAC,EAAG,GAAI,CAACtjC,EAAQ5qF,MAAO4qF,EAAQjrF,SACzD0/I,EAAW7W,EAAKlJ,KAAKc,SAAS+yO,GAC9Bn0V,EAAO,IAAIwpH,EAAKhH,MAAM,CAAEj7F,UAAW65T,IACnCgT,EAAW,IAAI5qO,EAAKhH,MAAM,CAAE10F,KAAMuyG,IAClC5uG,EAAOz9C,KAAKu/I,OAAO27E,eAAe/lL,SAAS,GAO/C,OALAirU,EAASrmU,OAAO/tB,GAGhBA,EAAKmpB,SAASxzC,KAAK87C,GAEZ2iU,GAGXjrO,aAAc,WACV,IAAIxlG,EAAQk5L,EAAKt1L,YAAY5D,MAAM,EAAI3vC,KAAKywP,OACxCzkO,EAAO,IAAIwpH,EAAKhH,MAAM,CACtBj7F,UAAW5D,IAGX8N,EAAOz9C,KAAKsqR,UAAUpvD,eAG1B,OAFAlvM,EAAKmpB,SAASxzC,KAAK87C,GAEZzxB,GAGXk9P,aAAc,WACVlpR,KAAKgxR,oBACLhxR,KAAKkoR,0BAGT8I,kBAAmB,WACXhxR,KAAK8wB,YAAc9wB,KAAK0vW,aACxB1vW,KAAK8wB,WAAW8qC,QAIxBssN,uBAAwB,WACpB,IAAIjgR,EAAOjI,KACPiI,EAAK6qW,uBAAyB7qW,EAAKynW,cACnC/sW,EAAE+7D,KAAKt2D,MAAMzF,EAAGsF,EAAKgsW,4BAA4Bt1S,MAAK,WAClD12D,EAAK6qW,sBAAsBl3S,UAE/B3zD,EAAKo4W,0BAA4B,OAW7C,SAAS7Q,GAAoBn7U,GACzB,IAAI9d,EAAS,GA4Bb,OAxBIy+G,GAFJ3gG,EAAWA,GAAY,IAEFuM,OAA2B,OAAlBvM,EAASuM,OACnCrqB,EAAOqqB,KAAOvM,EAASuM,MAGvBo0F,EAAQ3gG,EAASjvB,IAAqB,OAAfivB,EAASjvB,IAChCmR,EAAOnR,EAAIivB,EAASjvB,GAGpB4vH,EAAQ3gG,EAASlwB,IAAqB,OAAfkwB,EAASlwB,IAChCoS,EAAOpS,EAAIkwB,EAASlwB,GAGpB6wH,EAAQ3gG,EAASrnB,QAA6B,OAAnBqnB,EAASrnB,QACpCuJ,EAAOvJ,MAAQqnB,EAASrnB,OAGxBgoH,EAAQ3gG,EAAS1nB,SAA+B,OAApB0nB,EAAS1nB,SACrC4J,EAAO5J,OAAS0nB,EAAS1nB,QAGzBqoH,EAAQ3gG,EAAS3uB,OAA2B,OAAlB2uB,EAAS3uB,OACnC6Q,EAAO7Q,KAAO2uB,EAAS3uB,MAGpB6Q,EAnCXuT,EAAQugK,YAAYtnL,OAAO8yW,GAAQ9tW,IAAI,GAEnCpH,MAAM+nO,UACN/nO,MAAM+nO,SAAS3lO,OAAO8yW,GAAQ9tW,IAoFlC,IAAI4uW,GAAiBh2W,MAAM2I,WAAWvG,OAAO,CACzCoF,KAAM,SAASunL,EAASxoL,GACpBvG,MAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,MAC9BA,KAAK0vL,QAAUA,EACf1vL,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAC5ClH,KAAKsgX,OAAS,GACdtgX,KAAKugX,gBACLvgX,KAAKwgX,cACLxgX,KAAKygX,cAEDzgX,KAAKkH,QAAQ8qF,OACbhyF,KAAK0gX,cAGT1gX,KAAKwJ,KAAKxJ,KAAKqK,OAAQnD,IAG3BmD,OAAQ,CAAC,SAETq2W,YAAa,WACT1gX,KAAKs2B,UAAY3zB,EAAE,UAAUo3C,OAAO/5C,KAAK6L,SACzC7L,KAAKooS,OAASpoS,KAAKs2B,UAAUwhR,WAAW,IAAI6oE,iBAGhDF,YAAa,WACT,IAAK,IAAIl5W,EAAI,EAAGA,EAAIvH,KAAKsgX,OAAO94W,OAAQD,IAAK,CACzC,IAAIy+Q,EAAOhmR,KAAKsgX,OAAO/4W,IACnBy+Q,EAAK+nB,SAAW/nB,EAAK+nB,QAAQvmS,SAAWwtH,EAAQgxJ,EAAK+nB,WACrD/tS,KAAK4gX,SAAS3zW,IAAI+4Q,KAK9Bu6F,cAAe,WACXvgX,KAAK6L,QAAUlJ,EAAE,UACjB3C,KAAK4gX,SAAW5gX,KAAK6L,QAChBg1W,aAAa,CACVv3V,MAAOtpB,KAAKspB,MAAM9f,KAAKxJ,MACvBojT,WAAW,IACZ09D,kBAEP9gX,KAAK6L,QAAQe,IAAI,SAAU,SAG/B4zW,YAAa,WACT,IAAK,IAAIj5W,EAAI,EAAGA,EAAIvH,KAAKkH,QAAQooL,MAAM9nL,OAAQD,IAC3CvH,KAAK+gX,WAAW/gX,KAAKkH,QAAQooL,MAAM/nL,KAI3Cw5W,WAAY,SAAS/6F,GACZr+Q,EAAcq+Q,KACfA,EAAO,CACH5jR,KAAM4jR,IAGd,IAAIg7F,EAAWh7F,EAAK5jR,KAAO,OACvBpC,KAAKghX,GACLhhX,KAAKghX,GAAUh7F,GAEfhmR,KAAKsgX,OAAO3+W,KAAK6G,EAAW,GAAIw9Q,EAAM,CAClCn8N,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQg5O,EAAK5jR,WAK3DorM,OAAQ,SAASnzE,GACb,IAAI0jP,EAAc9kW,SAASjZ,KAAKkH,QAAQ62W,YAAa,IAEjD/9W,KAAKooS,SACLpoS,KAAKooS,OAAO72M,KAAK8oC,EAAMj1H,EAAGi1H,EAAMl2H,GAE5B45W,GACA/9W,KAAKooS,OAAOh8R,QAAQQ,IAAI,SAAUmxW,KAK9C5wW,KAAM,WACEnN,KAAKooS,QACLpoS,KAAKooS,OAAO9iP,SAIpBoS,SAAU,WACN,MAAO,CACHhyD,KAAM,cACNqoS,QAAS,KAIjBmzE,SAAU,WACNlhX,KAAKsgX,OAAO3+W,KAAK,CACb21F,KAAM,SACNsrI,SAAU,WACVl9N,KAAM,SACNk7B,KAAM,OACNipB,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,YAIlDm0U,WAAY,WACRnhX,KAAKsgX,OAAO3+W,KAAK,CACb21F,KAAM,IACNsrI,SAAU,WACVl9N,KAAM,SACNk7B,KAAM,SACNipB,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,cAIlDo0U,wBAAyB,SAASl6W,GAC9BlH,KAAKqhX,aAAa,UAClBrhX,KAAKshX,aAAavzE,QAAQpsS,KAAK,CAC3B21F,KAAM,cACNsrI,SAAU,WACVhiM,KAAM,sBACNszB,MAAO,SACPrK,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,sBAAuB0F,KAAMxrC,EAAQwrC,UAIvF6uU,oBAAqB,SAASr6W,GAC1BlH,KAAKqhX,aAAa,UAClBrhX,KAAKshX,aAAavzE,QAAQpsS,KAAK,CAC3B21F,KAAM,eACNztC,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,kBAAmB0F,KAAMxrC,EAAQwrC,OAC3EkwL,SAAU,WACVhiM,KAAM,kBACNszB,MAAO,YAIfstT,gBAAiB,WACbxhX,KAAKqhX,aAAa,UAClBrhX,KAAKyhX,aAAa1zE,QAAQpsS,KAAK,CAC3B21F,KAAM,SACNsrI,SAAU,WACVhiM,KAAM,cACNszB,MAAO,SACPrK,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,mBAIlD00U,qBAAsB,WAClB1hX,KAAKqhX,aAAa,UAClBrhX,KAAKyhX,aAAa1zE,QAAQpsS,KAAK,CAC3B21F,KAAM,YACNsrI,SAAU,WACVhiM,KAAM,mBACNszB,MAAO,SACPrK,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,wBAIlD20U,SAAU,WACN3hX,KAAKqhX,aAAa,WAClBrhX,KAAK4hX,cAAc7zE,QAAQpsS,KAAK,CAC5B21F,KAAM,OACNsrI,SAAU,WACVhiM,KAAM,OACNszB,MAAO,UACPrK,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,YAIlD60U,SAAU,WACN7hX,KAAKqhX,aAAa,WAClBrhX,KAAK4hX,cAAc7zE,QAAQpsS,KAAK,CAC5B21F,KAAM,OACNsrI,SAAU,WACVhiM,KAAM,OACNszB,MAAO,UACPrK,WAAY7pD,KAAKihX,eAAe,CAAEj0U,OAAQ,YAIlDq0U,aAAc,SAASj/W,GACnB,IAAI+sB,EAAO,IAAM/sB,EAAO,QACnBpC,KAAKmvB,KACNnvB,KAAKmvB,GAAQnvB,KAAK03D,WAClB13D,KAAKsgX,OAAO3+W,KAAK3B,KAAKmvB,MAI9B8xV,eAAgB,SAASp3T,GACrB,IAAI/mC,EAAO,GAUX,OARI+mC,EAAW7c,SACXlqB,EAAKniB,MAAMmiB,KAAK,WAAa+mC,EAAW7c,QAGxC6c,EAAWnX,OACX5vB,EAAKniB,MAAMmiB,KAAK,SAAW+mC,EAAWnX,MAGnC5vB,GAGXg/V,eAAgB,SAASj2W,GACrB,IAAIiX,EAAO,GAEPkqB,EAASnhC,EAAQiX,KAAKniB,MAAMmiB,KAAK,WACjCkqB,IACAlqB,EAAKkqB,OAASA,GAGlB,IAAI0F,EAAO7mC,EAAQiX,KAAKniB,MAAMmiB,KAAK,SAKnC,OAJI4vB,IACA5vB,EAAK4vB,KAAOA,GAGT5vB,GAGXwG,MAAO,SAAS3kB,GACZ,IAAIklD,EAAa7pD,KAAK8hX,eAAen/W,EAAEgC,EAAE2C,SACrC0lC,EAAS6c,EAAW7c,OAEpBA,GAAUhtC,KAAKgtC,IACfhtC,KAAKgtC,GAAQ6c,GAGjB7pD,KAAKoK,QAAQ,QAASpK,KAAKioE,UAAUj7B,EAAQroC,EAAE2C,UAGnD2gE,UAAW,SAASj7B,EAAQ1lC,GAKxB,IAJA,IAEmCuE,EAF/BsoB,EAAWn0B,KAAK+hX,mBAChBv6W,EAAS2sB,EAAS3sB,OAClBw4I,EAAS,GAAI+mI,EAAc,GAEtBn9Q,EAAM,EAAGA,EAAMpC,EAAQoC,KAC5BiC,EAAUsoB,EAASvqB,cACIo+Q,GACnBhoI,EAAOr+I,KAAKkK,GAEZk7Q,EAAYplR,KAAKkK,GAIzB,MAAO,CACHm0I,OAAQA,EACR+mI,YAAaA,EACb/5O,OAAQA,EACR1lC,OAAQA,IAIhB45J,OAAU,WACN,IACI8nH,EADUhpR,KAAK0vL,QACIu5F,eAAejpR,KAAK+hX,oBACvC/4F,EAASxhR,SACTxH,KAAK0vL,QAAQ34J,OAAOiyP,GAAU,GAC9BhpR,KAAK0vL,QAAQw5F,iBAIrB8tF,KAAM,WACF,IAAIgL,EAAkBhiX,KAAK+hX,mBACI,IAA3BC,EAAgBx6W,QAChBxH,KAAK0vL,QAAQsnL,KAAKgL,EAAgB,KAI1CC,gBAAiB,SAAS/6W,GACtB,IAAIoxH,EAAQvvH,WAAW7B,EAAQwrC,MAAQ,IACvC1yC,KAAK+vW,QAAQz3O,IAGjB4pP,oBAAqB,SAASh7W,GAC1B,IAAIoxH,EAAQvvH,WAAW7B,EAAQwrC,MAAQ,IACvC1yC,KAAK+vW,SAASz3O,IAGlBy3O,QAAS,SAASz3O,GACd,IAAIyrJ,EAAU/jR,KAAK0vL,QAAQm3F,iBAC3B9C,EAAQzrJ,MAAMyrJ,EAAQzrJ,QAAUA,GAChCyrJ,EAAQhzO,UAGZgxU,iBAAkB,WACd,OAAO/hX,KAAK0vL,QAAQtpJ,UAGxBywU,YAAa,WACT72W,KAAK0vL,QAAQmnL,eAGjBI,iBAAkB,WACdj3W,KAAK0vL,QAAQunL,oBAGjB10F,KAAM,WACFviR,KAAK0vL,QAAQ6yF,QAGjBE,KAAM,WACFziR,KAAK0vL,QAAQ+yF,QAGjBzgR,QAAS,WACLhC,KAAK0vL,QAAU,KACf1vL,KAAK6L,QAAU,KACf7L,KAAKkH,QAAU,KAEXlH,KAAK4gX,UACL5gX,KAAK4gX,SAAS5+W,UAGdhC,KAAKooS,QACLpoS,KAAKooS,OAAOpmS,aAKpBmgX,GAASxhX,MAAM2I,WAAWvG,OAAO,CACjCoF,KAAM,SAAS0D,EAAS3E,GACpBvG,MAAM2I,WAAWvB,GAAGI,KAAKoC,KAAKvK,MAE9BA,KAAKkH,QAAUnE,GAAO,EAAM,GAAI/C,KAAKkH,QAASA,GAC9ClH,KAAK6L,QAAUA,EACf7L,KAAK8oD,MAAQ9oD,KAAKkH,QAAQ4hD,MAC1B9oD,KAAK4uB,OAAS5uB,KAAKoiX,aACnBpiX,KAAKirK,iBACLjrK,KAAKqiX,kBAGTn7W,QAAS,CACLs5V,QAAS,IAGbv1L,eAAgB,WACZjrK,KAAKoM,QAAUpM,KAAK6L,SAGxBw2W,eAAgB,WACZ,IAAIn7W,EAAUlH,KAAKkH,QAEnBlH,KAAKuuD,SAAW,IAAI5tD,MAAMgpB,GAAG83U,SAASzhW,KAAKoM,QAAS,CAChDwiB,OAAQ5uB,KAAK4uB,OACbtnB,OAAQJ,EAAQI,OAChBu6V,gBAAgB,EAChB/4S,MAAO9oD,KAAK8oD,SAIpB4mT,YAAa,SAASzqV,GAClB,OAAOjlB,KAAK8oD,MAAMyF,UAAYvuD,KAAK8oD,MAAMyF,SAAStpC,IAGtDm9V,WAAY,WACR,IAAIxzV,EAAS,GACT2zU,EAAcviW,KAAK8oD,MAAMl6B,OAE7B,IAAK,IAAI3J,KAASs9U,EAAa,CAC3B,IAAIhsV,EAAS,GACb,GAAIvW,KAAK0vW,YAAYzqV,GAAQ,CACzB,IAAIg8U,EAASjhW,KAAKkH,QAAQs5V,QAAQv7U,GAC9Bg8U,IACA1qV,EAAO0qV,OAASA,GAEpB1qV,EAAO0O,MAAQA,EACf2J,EAAOjtB,KAAK4U,IAIpB,OAAOqY,GAGXjjB,IAAK,WACD,OAAO3L,KAAKuuD,SAAS5iD,OAGzB3J,QAAS,WACLhC,KAAKuuD,SAASvsD,UACdhC,KAAKuuD,SAAS1iD,QAAQkqB,KAAK,IAAMp1B,MAAMmiB,KAAK,iBAAmB,KAAKypC,QACpEvsD,KAAK8oD,MAAQ9oD,KAAKoM,QAAUpM,KAAK6L,QAAU7L,KAAK0yT,QAAU1yT,KAAKuuD,SAAW,QAI9EspT,GAAcsK,GAAOp/W,OAAO,CAC5BoF,KAAM,SAAS0D,EAAS3E,GACpBi7W,GAAOp6W,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GACnClH,KAAKwJ,KAAKxJ,KAAKqK,OAAQrK,KAAKkH,SAE5BlH,KAAKuxF,QAGTlnF,OAAQ,CAAE,SAAU,UAEpBnD,QAAS,CACLpG,OAAQ,CACJkxF,OAAO,EACPoxN,WAAW,EACX/7N,WAAW,EACXtpC,MAAO,OACPzxC,SAAS,IAIjB2+J,eAAgB,WACZ,IAAIhjK,EAAOjI,KACXA,KAAKoM,QAAUzJ,EAAE,oCACZmgB,KAAKniB,MAAMmiB,KAAK,OAAQ9iB,KAAK8oD,MAAMuE,KAExC,IAAIi1T,EAAc,GAEdtiX,KAAKkH,QAAQ2I,UACbyyW,GAAetiX,KAAKuiX,kBACpBviX,KAAK4uB,OAAS,IAEd0zV,GAAetiX,KAAKwiX,gBAGxBF,GAAetiX,KAAK+oS,iBAEpB/oS,KAAKoM,QAAQ2tC,OACTp3C,EAAE,wCAAwCo3C,OAAOuoU,IAErDtiX,KAAKc,OAAS,IAAIH,MAAMgpB,GAAGu7U,OAAOllW,KAAKoM,QAAQ+gC,SAASntC,KAAK6L,SAAU7L,KAAKkH,QAAQpG,QACpFd,KAAKc,OAAO0I,KAAK,SAAS,SAAS7E,GAE3BA,EAAEu2T,gBACFv2T,EAAE2F,OAAOuB,QAAQzB,QAAQ,SACzBnC,EAAKw6W,aAAa99W,OAI1B3E,KAAK0iX,uBAGTH,gBAAiB,WACb,IAAI1yW,EAAW7P,KAAKkH,QAAQ2I,SAQ5B,MANwB,iBAAbA,IACPA,EAAWlP,MAAMktB,SAAShe,IAG9BA,EAAWlP,MAAMkP,SAASA,EAAflP,CAAyBX,KAAK8oD,QAK7C05T,cAAe,WAEX,IADA,IAAIx7U,EAAO,GACFz/B,EAAI,EAAGA,EAAIvH,KAAK4uB,OAAOpnB,OAAQD,IAAK,CACzC,IAAI0d,EAAQjlB,KAAK4uB,OAAOrnB,GAExBy/B,GAAQ,yCAA2C/hB,EAAMA,MAAQ,MAAQA,EAAMA,OAAS,IAAM,iBAE1FjlB,KAAK0vW,YAAYzqV,EAAMA,SACvB+hB,GAAQ,QAAUrmC,MAAMmiB,KAAK,iBAAmB,KAAOmC,EAAMA,MAC7D,iCAIR,OAAO+hB,GAGX+hQ,eAAgB,WACZ,IAAI/hQ,EAAO,+BAIX,OAHAA,GAAQhnC,KAAK2iX,cAAc,UAC3B37U,GAAQhnC,KAAK2iX,cAAc,UAC3B37U,GAAQ,UAIZ27U,cAAe,SAASvgX,GACpB,OAAOzB,MAAMkP,SAASi+V,GAAfntW,CAAgCqtW,GAAe5rW,KAG1DsgX,oBAAqB,WACjB1iX,KAAK4iX,oBAAsB5iX,KAAKyiX,aAAaj5W,KAAKxJ,MAClDA,KAAKc,OAAO+K,QAAQod,GAAG62M,EAAQjvI,EAAI,0BAA2B7wF,KAAK4iX,qBAEnE5iX,KAAK6iX,oBAAsB7iX,KAAK8iX,aAAat5W,KAAKxJ,MAClDA,KAAKc,OAAO+K,QAAQod,GAAG62M,EAAQjvI,EAAI,0BAA2B7wF,KAAK6iX,sBAGvEC,aAAc,SAASn+W,GACnBA,EAAEwE,iBACFnJ,KAAKoK,QAAQ,WAGjBq4W,aAAc,SAAS99W,GACnBA,EAAEwE,iBACFnJ,KAAKoK,QAAQ,WAGjBmnF,KAAM,WACFvxF,KAAKc,OAAOy8E,SAASgU,QAGzBjsC,MAAO,WACHtlD,KAAKc,OAAO0I,KAAK,aAAcxJ,KAAKgC,QAAQwH,KAAKxJ,OAAOslD,SAG5DtjD,QAAS,WACLhC,KAAKc,OAAOwkD,QAAQtjD,UACpBhC,KAAKc,OAAO+K,QAAQotB,IAAI6mM,EAAQjvI,EAAI,qBAAsB7wF,KAAK4iX,qBAC/D5iX,KAAKc,OAAO+K,QAAQotB,IAAI6mM,EAAQjvI,EAAI,qBAAsB7wF,KAAK6iX,qBAC/D7iX,KAAK4iX,oBAAsB,KAC3B5iX,KAAK+iX,wBAA0B,KAC/B/iX,KAAKc,OAAS,KACdqhX,GAAOp6W,GAAG/F,QAAQuI,KAAKvK,SAI/B,SAAS03W,GAAmBphV,EAAWpvB,GACnC,IAAI4hD,EAAQ9oD,KAAK8wB,WAAWoqC,OAAOpS,MACnC,GAAIA,EAAO,CACP,IAAI2iB,EAAY3iB,EAAM/gD,GAAG6mB,OAAOgS,KAAO,OAASkoB,EAAMK,QACtDxmD,EAAE,gBAAkBuE,EAAQ+d,MAAQ,QAC/BkoB,SAAS7W,GAAW0sV,kBAAkB,CACnCvyS,eAAgB3nB,EAAMK,QACtBopB,cAAe9G,EACf36C,WAAY9wB,KAAK8wB,WAAWjjB,OAAO+D,SACnCurT,YAAa,IACbxrP,gBAAgB,KAKhC,SAASsxS,GAAa5uV,GAClBr0B,KAAKq0B,SAAWA,EAChBr0B,KAAKs7E,UAAY,GAyBrB,SAAS8iS,KACLp+W,KAAKo0B,MAAQ,GAvBjB6uV,GAAal7W,GAAKk7W,GAAa56W,UAAY,CACvC6rW,WAAY,SAASlrV,GACjB,IAAIk6V,EAAWvgX,EAAEqpC,WAKjB,OAJAhsC,KAAKs7E,UAAU35E,KAAK,CAChBqnB,SAAUA,EACV+iB,SAAUm3U,IAEPA,GAGX19P,SAAU,WAGN,IAFA,IACIx2E,EADAssC,EAAYt7E,KAAKs7E,UAEZ1xE,EAAM,EAAGA,EAAM0xE,EAAU9zE,OAAQoC,KACtColC,EAAOhvC,KAAKs7E,UAAU1xE,IACjBof,SAAShpB,KAAKq0B,UACnB2a,EAAKjD,SAAS4J,UAElB31C,KAAKs7E,UAAY,KAQzB8iS,GAAwBr2W,GAAKq2W,GAAwB/1W,UAAY,CAC7D4E,IAAK,SAASmnB,GACV,IAAK,IAAIxqB,EAAM,EAAGA,EAAMwqB,EAAM5sB,OAAQoC,IAClC5J,KAAKo0B,MAAMA,EAAMxqB,GAAKyjD,KAAO,IAAI41T,GAAa7uV,EAAMxqB,KAI5DtI,QAAS,SAAS0nB,GACd,IAAK,IAAIqkC,KAAOrtD,KAAKo0B,MACjBpL,EAAShpB,KAAKo0B,MAAMi5B,KAI5BiP,SAAU,SAASjP,GACf,OAAOrtD,KAAKo0B,MAAMi5B,IAGtBt2B,OAAQ,SAASiY,UACNhvC,KAAKo0B,MAAM4a,EAAKqe,OAI/B,IAAI0yF,GAAWn4I,EAAM7E,OAAO,CACxBoF,KAAM,WACFnI,KAAKggJ,OAAS,IAGlBpb,KAAM,SAASqb,EAAOylH,GAClB1lQ,KAAKggJ,OAAOr+I,KAAK,CACb+jQ,OAAQA,EACRzlH,MAAOA,IAEXA,EAAMC,UAAYlgJ,MAGtB48D,OAAQ,SAASqjF,EAAOylH,GACpB1lQ,KAAK4kI,KAAKqb,EAAOylH,IAGrB3uO,OAAQ,SAASkpH,GAIb,IAHA,IAAID,EAAShgJ,KAAKggJ,OACdx4I,EAASw4I,EAAOx4I,OAEXoC,EAAM,EAAGA,EAAMpC,EAAQoC,IAC5B,GAAIo2I,EAAOp2I,GAAKq2I,QAAUA,EAAO,CAC7BD,EAAOx1I,OAAOZ,EAAK,GACnB,QAKZ6rW,YAAa,SAASpqR,EAAMiqR,GAIxB,IAHA,IAAIt1N,EAAShgJ,KAAKggJ,OACdx4I,EAASw4I,EAAOx4I,OAEXD,EAAI,EAAGA,EAAIC,EAAQD,IACxB,GAAIvH,KAAKmjX,UAAUnjO,EAAOz4I,GAAG04I,MAAO50D,KAAUvhE,EAAQuL,QAAQ2qH,EAAOz4I,GAAG04I,MAAOq1N,GAC3E,OAAO,GAKnB6N,UAAW,SAASljO,EAAO50D,GACvB,IAAIitC,EAAQ2nB,EAAMlvG,SAASunF,MACvBotI,EAASzlH,EAAMylH,SAOnB,OALKptI,EAGKozI,EAAUE,MAAMvgL,EAAMq6K,GAASptI,GAF/BotI,EAAOnjG,SAASl3E,MAQ9B+0D,GAAWL,GAASh9I,OAAO,CAC3BoF,KAAM,SAASkjF,GACX00D,GAASh4I,GAAGI,KAAKoC,KAAKvK,MACtBA,KAAKm1C,SAAW,GAChBn1C,KAAKqrF,KAAOA,GAGhBi1D,SAAU,SAASj1D,GACf,IAAIk1D,EAAWvgJ,KAAKqrF,KAChBm1D,EAAkBD,EAAS9kB,cAC3BA,EAAcpwC,EAAKowC,cAGvB,OAFe8kB,EAASn7I,GAAKimF,EAAKjmF,GAAKm7I,EAASp8I,GAAKknF,EAAKlnF,GAAKs3H,EAAYr2H,GAAKo7I,EAAgBp7I,GAC5Fq2H,EAAYt3H,GAAKq8I,EAAgBr8I,GAIzCi/W,eAAgB,SAAS/3R,GACrB,OAAOrrF,KAAKqrF,KAAKk3E,SAASl3E,IAG9BzuB,OAAQ,SAASqjF,EAAOylH,GACpB,IAAIjlH,GAAW,EACXtrG,EAAWn1C,KAAKm1C,SAChB3tC,EAAS2tC,EAAS3tC,OACtB,GAAIxH,KAAKsgJ,SAASolH,GAAS,CACvB,IAAKl+P,GAAUxH,KAAKggJ,OAAOx4I,OAAS,EAChCxH,KAAK4kI,KAAKqb,EAAOylH,OACd,CACEl+P,GACDxH,KAAKsqE,gBAGT,IAAK,IAAI1gE,EAAM,EAAGA,EAAMurC,EAAS3tC,OAAQoC,IACrC,GAAIurC,EAASvrC,GAAKgzD,OAAOqjF,EAAOylH,GAAS,CACrCjlH,GAAW,EACX,MAIHA,GACDzgJ,KAAK4kI,KAAKqb,EAAOylH,GAGzBjlH,GAAW,EAGf,OAAOA,GAGXn2E,cAAe,WACX,IAMI+4S,EAAUC,EANVj4R,EAAOrrF,KAAKqrF,KACZl2C,EAAWn1C,KAAKm1C,SAChB6qG,EAAShgJ,KAAKggJ,OACdziE,EAAS8N,EAAK9N,SACdmjE,EAAYr1D,EAAKr+E,MAAQ,EACzB2zI,EAAat1D,EAAK1+E,OAAS,EAS/B,IANAwoC,EAASxzC,KACL,IAAIy+I,GAAS,IAAIllB,EAAK7vC,EAAKjmF,EAAGimF,EAAKlnF,EAAGu8I,EAAWC,IACjD,IAAIP,GAAS,IAAIllB,EAAK39C,EAAOn4E,EAAGimF,EAAKlnF,EAAGu8I,EAAWC,IACnD,IAAIP,GAAS,IAAIllB,EAAK7vC,EAAKjmF,EAAGm4E,EAAOp5E,EAAGu8I,EAAWC,IACnD,IAAIP,GAAS,IAAIllB,EAAK39C,EAAOn4E,EAAGm4E,EAAOp5E,EAAGu8I,EAAWC,KAEpD2iO,EAAWtjO,EAAOx4I,OAAS,EAAG87W,GAAY,EAAGA,IAC9C,IAAKD,EAAW,EAAGA,EAAWluU,EAAS3tC,OAAQ67W,IAC3C,GAAIluU,EAASkuU,GAAUzmT,OAAOojF,EAAOsjO,GAAUrjO,MAAOD,EAAOsjO,GAAU59G,QAAS,CAC5E1lH,EAAOx1I,OAAO84W,EAAU,GACxB,QAMhB7N,YAAa,SAASpqR,EAAMiqR,GACxB,IAAI1rW,EACAurC,EAAWn1C,KAAKm1C,SAChB3tC,EAAS2tC,EAAS3tC,OAClBqiR,GAAM,EAEV,GAAI7pR,KAAKojX,eAAe/3R,GACpB,GAAI00D,GAASh4I,GAAG0tW,YAAYlrW,KAAKvK,KAAMqrF,EAAMiqR,GACzCzrF,GAAM,OAEL,IAAKjgR,EAAM,EAAGA,EAAMpC,EAAQoC,IACzB,GAAIurC,EAASvrC,GAAK6rW,YAAYpqR,EAAMiqR,GAAU,CAC3CzrF,GAAM,EACN,MAMf,OAAOA,KAIXhpI,GAAiBj5I,EAAM7E,OAAO,CAC9B69I,UAAW,IAEXz4I,KAAM,SAASunL,GACX,IAAI6zL,EAAsBvjX,KAAKwjX,cAAch6W,KAAKxJ,MAClD0vL,EAAQlmL,KAAKg4Q,EAAkB+hG,GAC/B7zL,EAAQlmL,KAAKmkW,GAAY4V,GACzBvjX,KAAK8gJ,aAGTA,UAAW,WACP9gJ,KAAK+gJ,QAAU,GACf/gJ,KAAKy9C,KAAO,IAAIsiG,IAGpB9pF,MAAO,WACHj2D,KAAK8gJ,aAGT0iO,cAAe,SAAS7+W,GAChBA,EAAEqqC,KAAKkxG,WACPv7I,EAAEqqC,KAAKkxG,UAAUnpH,OAAOpyB,EAAEqqC,MAE9BhvC,KAAK48D,OAAOj4D,EAAEqqC,OAGlB4tB,OAAQ,SAASqjF,GACb,IAAIylH,EAASzlH,EAAMylH,OAAO+b,IACtBgiG,EAAWzjX,KAAK4gJ,UAChBe,EAAU3hJ,KAAK4hJ,WAAW8jH,GAC1BtgQ,EAAIu8I,EAAQ,GAAG,GACfx9I,EAAIw9I,EAAQ,GAAG,GAEf3hJ,KAAK6hJ,OAAOF,GACZ3hJ,KAAKy9C,KAAKmf,OAAOqjF,EAAOylH,IAEnB1lQ,KAAK+gJ,QAAQ37I,KACdpF,KAAK+gJ,QAAQ37I,GAAK,IAGjBpF,KAAK+gJ,QAAQ37I,GAAGjB,KACjBnE,KAAK+gJ,QAAQ37I,GAAGjB,GAAK,IAAIi8I,GACrB,IAAIllB,EAAK91H,EAAIq+W,EAAUt/W,EAAIs/W,EAAUA,EAAUA,KAIvDzjX,KAAK+gJ,QAAQ37I,GAAGjB,GAAGy4D,OAAOqjF,EAAOylH,KAIzC3uO,OAAQ,SAASkpH,GACTA,EAAMC,WACND,EAAMC,UAAUnpH,OAAOkpH,IAI/B4B,OAAQ,SAASF,GACb,OAAOA,EAAQ,GAAGn6I,OAAS,GAAKm6I,EAAQ,GAAGn6I,OAAS,GAGxDo6I,WAAY,SAASv2D,GAMjB,IALA,IAAIo4R,EAAWzjX,KAAK4gJ,UAChBnlB,EAAcpwC,EAAKowC,cACnBqmB,EAAU1+I,EAAKmN,MAAMkrH,EAAYr2H,EAAIq+W,GACrC1hO,EAAU3+I,EAAKmN,MAAMkrH,EAAYt3H,EAAIs/W,GACrC9hO,EAAU,CAAC,GAAG,IACTv8I,EAAIhC,EAAKmN,MAAM86E,EAAKjmF,EAAIq+W,GAAWr+W,GAAK08I,EAAS18I,IACtDu8I,EAAQ,GAAGhgJ,KAAKyD,GAEpB,IAAK,IAAIjB,EAAIf,EAAKmN,MAAM86E,EAAKlnF,EAAIs/W,GAAWt/W,GAAK49I,EAAS59I,IACtDw9I,EAAQ,GAAGhgJ,KAAKwC,GAEpB,OAAOw9I,GAGX8zN,YAAa,SAASpqR,EAAMiqR,GACxB,IACIoO,EAAMC,EAAMv+W,EAAGjB,EACfs5C,EAFAkkG,EAAU3hJ,KAAK4hJ,WAAWv2D,GAI9B,GAAIrrF,KAAKy9C,KAAKg4T,YAAYpqR,EAAMiqR,GAC5B,OAAO,EAGX,IAAKoO,EAAO,EAAGA,EAAO/hO,EAAQ,GAAGn6I,OAAQk8W,IAErC,IADAt+W,EAAIu8I,EAAQ,GAAG+hO,GACVC,EAAO,EAAGA,EAAOhiO,EAAQ,GAAGn6I,OAAQm8W,IAGrC,GAFAx/W,EAAIw9I,EAAQ,GAAGgiO,IACflmU,GAAQz9C,KAAK+gJ,QAAQ37I,IAAM,IAAIjB,KACnBs5C,EAAKg4T,YAAYpqR,EAAMiqR,GAC/B,OAAO,EAKnB,OAAO,KAIf,SAASzE,GAAcx8U,GACnB,IAAI9d,EAAS8d,EAKb,OAJIA,aAAoB1zB,MAAMkN,KAAKq7C,SAC/B3yC,EAAS8d,EAASziB,UACXyiB,EAAS80B,SAAW90B,EAAS+5B,YAEjC73C,EAGX,SAASikW,GAAqBrmV,GAC1B,IAEItoB,EAASjC,EAFTm9Q,EAAc,GACd/mI,EAAS,GAEb,IAAKp2I,EAAM,EAAGA,EAAMuqB,EAAS3sB,OAAQoC,KACjCiC,EAAUsoB,EAASvqB,cACIo+Q,GACnBhoI,EAAOr+I,KAAKkK,GAEZk7Q,EAAYplR,KAAKkK,GAGzB,MAAO,CACHm0I,OAAQA,EACR+mI,YAAaA,GAIrB,SAAS+vF,GAAYhmV,EAAYg4B,GAC7B,OAAIh4B,EAAWoqC,OAAOpS,MACX,IAAIh4B,EAAWoqC,OAAOpS,MAAMA,GAGhC,IAAInoD,MAAMkN,KAAKw9C,iBAAiBvC,GAG3C,SAASiqT,GAAW9tV,EAAO6jC,GACnBksE,EAAQlsE,EAAM7jC,KACd6jC,EAAMt5B,IAAIvK,EAAO,MAIzB,SAASkzV,GAAmByL,EAAa50I,EAAgBpgN,GAErD,IADA,IAAI3J,EACKrb,EAAM,EAAGA,EAAMglB,EAAOpnB,OAAQoC,IACnCqb,EAAQ2J,EAAOhlB,GACXolO,IAAmBh6G,EAAQg6G,EAAe/pN,MAC1C+pN,EAAe/pN,GAAS2+V,EAAY3+V,IAYhD,SAAS9b,GAAexE,GACpBA,EAAEwE,iBAGN2gB,EAAQH,GAAGqN,OAAO6+U,IAElBrtW,EAAWknL,EAAS,CAChBs4F,MAAOA,GACPgC,WAAYA,GACZ+kF,UAAWA,GACX4H,eAAgBA,GAChBv2N,SAAUA,GACVL,SAAUA,GACVc,eAAgBA,GAChBg3N,YAAaA,KA7oKzB,CA+oKG/2W,OAAOH,MAAM+G,QAoBE/G,OAUlB,SAAUgC,EAAGC,GACT,IAAIQ,EAAOC,KAEPJ,EAAUC,MAAMD,QAEhBtC,EAAQG,OAAOH,MACfsL,EAActL,EAAMuL,aACpBH,EAAapL,EAAMqL,YACnBpE,EAAQjH,EAAMiH,MACd8oB,EAAS/vB,EAAMgpB,GAAG+G,OAClB7gB,EAAWlP,EAAMkP,SACjBrH,EAAa7H,EAAM6H,WACnBwF,EAAyBrN,EAAMkN,KAAKG,uBACpC8gB,EAASnuB,EAAMmuB,OAEfhF,EAAUnpB,EAAMmpB,QAEhB+mE,EAAK,gBACL/zC,EAAS,SACTu0Q,EAAa,YACbwyD,EAAe,cACfvuP,EAAYhjH,OAAOgjH,UAKnBwuP,EAAUpzV,EAAO3tB,OAAO,CACxBoF,KAAM,SAAS0D,EAAS3E,GACpBvG,EAAMqB,QAAQ6J,GACdlJ,EAAEkJ,GAAS0gD,QAEX77B,EAAO3oB,GAAGI,KAAKoC,KAAKvK,KAAM6L,EAAS3E,GACnClH,KAAKoM,QAAUpM,KAAK6L,QAEpB7L,KAAK60N,WAAW70N,KAAKkH,SAErBlH,KAAK6L,QAAQ0Y,SAAS,sBAEtBvkB,KAAK+jX,aAEL/jX,KAAK20N,iBAAmBnsN,EAAW,GAAIxI,KAAKkH,SAE5ClH,KAAKmlO,kBAELnlO,KAAKk1N,gBAELv0N,EAAM6zB,OAAOx0B,KAAM8pB,EAAQH,KAG/BziB,QAAS,CACL9E,KAAM,UACN2rL,MAAO,UACPh9G,UAAU,EACVtF,UAAW,OACXuF,WAAY,QACZgzS,WAAY,SAGhB35W,OAAQ,CAACgnT,EAAYwyD,GAErBhvJ,WAAY,SAAS3tN,GACjB,IAGIutN,IAFS3qM,EAAQH,GAAG2O,QAAU,MAChBpxB,GAAW,IAAI6mL,OAAS,IAAIz1K,gBACL,IAAIq3K,QAHlC3vL,KAKNkH,QAAUsB,EAAW,GAAIisN,EAAcvtN,IAGhDguN,cAAe,WACXl1N,KAAK6L,QACAod,GAjDM,yBAiDWjpB,KAAKu5N,WAAW/vN,KAAKxJ,OACtCipB,GAjDO,0BAiDWjpB,KAAKglH,YAAYx7G,KAAKxJ,OAE7CA,KAAK+gO,eAAiB/gO,KAAKupB,OAAO/f,KAAKxJ,MAAM,GAC7CW,EAAMm4B,SAAS94B,KAAK+gO,iBAGxBgjJ,WAAY,WACkB,eAAtB/jX,KAAKkH,QAAQxB,MACb1F,KAAKikX,QAAU,IAAIC,GAAa,GAChClkX,KAAKw5D,MAAQ,IAAI2qT,EAAiBnkX,KAAMA,KAAKkH,UAChB,aAAtBlH,KAAKkH,QAAQxB,MACpB1F,KAAKikX,QAAU,IAAIC,GAAa,GAChClkX,KAAKw5D,MAAQ,IAAI2qT,EAAiBnkX,KAAMA,KAAKkH,WAE7ClH,KAAKikX,QAAU,IAAIG,EACnBpkX,KAAKw5D,MAAQ,IAAI6qT,EAAerkX,KAAMA,KAAKkH,WAInDi+N,gBAAiB,WACb,IAAIl9N,EAAOjI,KAEP8wB,EADU7oB,EAAKf,QACM4pB,WAEzB7oB,EAAK09N,mBAAqB19N,EAAKq8W,cAAc96W,KAAKvB,GAElDA,EAAK6oB,WAAa9iB,EACbg5C,OAAOl2B,GACPtnB,KAAKszC,EAAQ70C,EAAK09N,oBAEnB70M,GACI7oB,EAAKf,QAAQ6pE,UACb9oE,EAAK6oB,WAAWq0C,SAK5BqgK,cAAe,SAAS10M,GACpB,IAAI7oB,EAAOjI,KACXiI,EAAK6oB,WAAW7mB,OAAO6yC,EAAQ70C,EAAK09N,oBACpC19N,EAAK6oB,WAAaA,EACTtnB,KAAKszC,EAAQ70C,EAAK09N,oBAEvB70M,GACI7oB,EAAKf,QAAQ6pE,UACb9oE,EAAK6oB,WAAWq0C,SAK5Bm/S,cAAe,SAAS3/W,GACpB,IAGIqqC,EAAMznC,EAHN27B,EAAOv+B,EAAEu+B,KACT9O,EAAQzvB,EAAEyvB,MACVltB,EAAUlH,KAAKkH,QAGnB,GAAKg8B,GAeD,GAAI9O,EAAM5sB,OAAQ,CACd,IAAIi2C,EAAOz9C,KAAKu8D,UAAUr5B,EAAKmqB,KAI/B,IAHA5P,EAAKtI,SAAW,GAChB/gB,EAAQ,IAAIzzB,EAAMkN,KAAKmiD,MAAM57B,GAAOsgC,iBAAiBxtD,EAAQ8pE,WAAY,QAEpEzpE,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC1BynC,EAAO5a,EAAM7sB,GACbk2C,EAAKtI,SAASxzC,KAAK3B,KAAKukX,UAAUv1U,IAGtC,IAAIw1U,EAAWxkX,KAAKw5D,MAAMgrT,SAAS/mU,GACnCz9C,KAAKikX,QAAQQ,QAAQhnU,EAAKtI,SAAUsI,EAAKw4F,MAAOuuO,GAEhDxkX,KAAK0kX,WAAWjnU,EAAKtI,UACrBn1C,KAAKw5D,MAAM5pD,OAAO6tC,SA5BtBz9C,KAAK2kX,cACL3kX,KAAK6L,QAAQ0gD,QACbvd,EAAOhvC,KAAKukX,UAAUnwV,EAAM,IAC5Bp0B,KAAKikX,QAAQW,WACT51U,EACAjjC,EAAW/L,KAAK6L,SAChBI,EAAYjM,KAAK6L,SACK,aAAtB7L,KAAKkH,QAAQxB,MAEjB1F,KAAKw5D,MAAMorT,WAAW51U,GAEtBhvC,KAAK09I,MAAQ1uG,EACbhvC,KAAK6kX,UAAY,EAoBrB,IAAKt9W,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC1B6sB,EAAM7sB,GAAGqjE,OAGT1nC,GACAljC,KAAKoK,QAAQinT,EAAY,CACrBnuR,KAAMA,KAKlByhV,YAAa,WACT,IAAI18W,EAAOjI,KACXiI,EAAK4oB,QAAQ,WAAW,WACrB,MAAO,CAAEsD,SAAUlsB,EAAK4D,QAAQkqB,KAAK,+DAI5C2uV,WAAY,SAAStwV,GACjB,IAGI0wV,EAAY91U,EAHZD,EAAS/uC,KAAKkH,QAAQ6nC,OAEtBqgF,EAAQrgF,EADG/uC,KAAK6kX,UACU91U,EAAOvnC,QAEjCvE,EAAQmsH,KACR01P,EA8uBZ,SAAwB3uW,EAAKyC,EAAKpR,GAC9B,IAAIu9W,EAAkBC,EAAa7uW,GAC/B8uW,EAAkBD,EAAapsW,GAC/BssW,EAAWC,EAAgBhvW,GAAOgvW,EAAgBvsW,GAAO,EACzDm2B,EAAS,GAEbA,EAAOptC,KAAKwU,GAEZ,IAAK,IAAI5O,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAI69W,EAAW,CACX/0P,EAAGg1P,EAAaN,EAAgB10P,EAAG40P,EAAgB50P,EAAG9oH,EAAGC,EAAQ09W,GACjErwW,EAAGwwW,EAAaN,EAAgBlwW,EAAGowW,EAAgBpwW,EAAGtN,EAAGC,EAAQ09W,GACjE//V,EAAGkgW,EAAaN,EAAgB5/V,EAAG8/V,EAAgB9/V,EAAG5d,EAAGC,EAAQ09W,IAErEn2U,EAAOptC,KAAK2jX,EAAkBF,IAKlC,OAFAr2U,EAAOptC,KAAKiX,GAELm2B,EAjwBcw2U,CAAen2P,EAAM,GAAIA,EAAM,GAAIh7F,EAAM5sB,SAI1D,IADA,IAAIg+W,GAAY,EACPj+W,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAGzBytH,GAFLhmF,EAAO5a,EAAM7sB,IAEK6nH,SAEVpgF,EAAKogF,MADL01P,EACaA,EAAWv9W,GAEX6nH,GAGhBpgF,EAAK3a,SAAS41C,cACfu7S,GAAY,GAIhBA,GACAxlX,KAAK6kX,aAIbY,aAAc,SAAShoU,GACnBz9C,KAAK03B,KAAKguV,aAAajoU,IAG3B8mU,UAAW,SAASv1U,GAChB,IAAIhjB,EAAO,GAkBX,OAhBIgpG,EAAQh1H,KAAKkH,QAAQ8pE,cACrBhlD,EAAKtjB,MAAQupL,EAASjyL,KAAKkH,QAAQ8pE,WAAYhiC,IAG/CgmF,EAAQh1H,KAAKkH,QAAQ88W,cACrBh4V,EAAKojG,MAAQ6iE,EAASjyL,KAAKkH,QAAQ88W,WAAYh1U,IAG/CgmF,EAAQh1H,KAAKkH,QAAQukE,aACrBz/C,EAAK4U,KAAOqxJ,EAASjyL,KAAKkH,QAAQukE,UAAWz8B,IAGjDhjB,EAAK0+C,MAAQ17B,EAAK07B,QAElB1+C,EAAKqI,SAAW2a,EAEThjB,GAGXuwC,UAAW,SAASlP,GAIhB,IAHA,IACIre,EADA5a,EAAQ,CAACp0B,KAAK09I,OAGXtpH,EAAM5sB,QAAQ,CAEjB,IADAwnC,EAAO5a,EAAM/E,OACJgF,SAASg5B,MAAQA,EACtB,OAAOre,EAGPA,EAAKmG,WACL/gB,EAAQA,EAAM/W,OAAO2xB,EAAKmG,aAKtC9gB,SAAU,SAAS6O,GACf,IAAImqB,EAAM1qD,EAAEugC,GAAMpgB,KAAKniB,EAAMmiB,KAAK,QAC9BgO,EAAa9wB,KAAK8wB,WAEtB,OAAOA,GAAcA,EAAWwrC,SAASjP,IAG7CiwP,UAAW,SAASjwP,GAChB,OAAOrtD,KAAK6L,QAAQkqB,KAAK,mBAAqBp1B,EAAMmiB,KAAK,OAAS,KAAOuqC,EAAM,OAGnFksK,WAAY,SAAS50N,GACjB,IAAI2C,EAAS3E,EAAEgC,EAAE2C,QACbA,EAAO8kB,SAAS,YAChBpsB,KAAK2lX,qBACLr+W,EACK6kB,YAAY,WACZ5H,SAAS,aAItBohW,mBAAoB,WAChB3lX,KAAK6L,QACAkqB,KAAK,YACL5J,YAAY,YAGrB64F,YAAa,WACThlH,KAAK2lX,sBAGT3jX,QAAS,WACL0uB,EAAO3oB,GAAG/F,QAAQuI,KAAKvK,MACvBA,KAAK6L,QAAQotB,IAAI43D,GAEb7wF,KAAK8wB,YACL9wB,KAAK8wB,WAAW7mB,OAAO6yC,EAAQ98C,KAAK2lO,oBAGxC3lO,KAAK09I,MAAQ,KACb/8I,EAAMq4B,aAAah5B,KAAK+gO,gBAExBpgO,EAAMqB,QAAQhC,KAAK6L,UAGvBuoB,MAAO,WACH,OAAOzxB,KAGXivB,QAAS,WACL,OAAOjxB,EAAMqxB,WAAWhyB,KAAK6L,UAGjCkmB,QAAS,WACL,IAAI0rB,EAAOz9C,KAAK09I,MAChB,GAAIjgG,EAAM,CACN,IAAI5xC,EAAU7L,KAAK6L,QACfm5I,EAAcn5I,EAAQspC,WAC1BsI,EAAKw4F,MAAMjpI,MAAQjB,EAAWF,GAC9B4xC,EAAKw4F,MAAMtpI,OAASV,EAAYJ,GAEhCm5I,EAAYp4I,IAAI,CACZI,MAAOywC,EAAKw4F,MAAMjpI,MAClBL,OAAQ8wC,EAAKw4F,MAAMtpI,SAGvB3M,KAAK4lX,aAAanoU,EAAMunG,KAIhC4gO,aAAc,SAASnoU,EAAM5xC,GACzB,GAAI4xC,EAAKtI,UAAYsI,EAAKtI,SAAS3tC,OAAQ,CACvC,IACIk8B,EAAOw0G,EADP/jH,EAAWtoB,EAAQspC,SAAS,mBAAmBA,WAGnDn1C,KAAKikX,QAAQQ,QAAQhnU,EAAKtI,SAAUsI,EAAKw4F,MAAO,CAAEr1G,KAAM5gC,KAAKw5D,MAAMm6G,UAAUl2H,EAAM5xC,KACnF,IAAK,IAAIjC,EAAM,EAAGA,EAAM6zC,EAAKtI,SAAS3tC,OAAQoC,IAC1C85B,EAAQ+Z,EAAKtI,SAASvrC,GACtBsuI,EAAe/jH,EAAS8B,OAAO,IAAMt1B,EAAMmiB,KAAK,OAAS,KAAO4gB,EAAMrP,SAASg5B,IAAM,MACrFrtD,KAAKw5D,MAAMqsT,YAAYniV,EAAOw0G,GAC9Bl4I,KAAK4lX,aAAaliV,EAAOw0G,KAKrC3mH,WAAY,SAASrqB,GACjB,IAAI4pB,EAAa5pB,EAAQ4pB,WAEzB5pB,EAAQ4pB,WAnVpB,UAoVY9wB,KAAK20N,iBAAmBnsN,EAAWxI,KAAK20N,iBAAkBztN,GAC1DlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAK20N,kBACnC30N,KAAK+jX,aACL/jX,KAAK60N,WAAW70N,KAAKkH,SAErBwpB,EAAO3oB,GAAG0pB,WAAWlnB,KAAKvK,KAAMkH,GAE5B4pB,GACA9wB,KAAKwlO,cAAcx3N,EAAuBg5C,OAAOl2B,IAGjD9wB,KAAKkH,QAAQ6pE,UACb/wE,KAAK8wB,WAAWq0C,WAKxBi/S,EAAax8W,EAAM7E,OAAO,CAC1B6hX,WAAY,SAASnnU,EAAMzwC,EAAOL,GAC9B8wC,EAAKw4F,MAAQ,CACTjpI,MAAOA,EACPL,OAAQA,EACRyX,IAAK,EACLyH,KAAM,IAIdi6V,KAAM,SAAS57T,GACX,OAAQA,EAAK/U,UAGjB4wU,eAAgB,SAAS3xV,EAAO6hH,GAC5B,IAGI1uI,EAHAy+W,EAAa/vO,EAAMjpI,MAAQipI,EAAMtpI,OACjCs5W,EAAY,EACZC,EAAY,GAGhB,IAAK3+W,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC1B2+W,EAAU3+W,GAAKwB,WAAWqrB,EAAM7sB,GAAGmB,OACnCu9W,GAAaC,EAAU3+W,GAG3B,IAAKA,EAAI,EAAGA,EAAI2+W,EAAU1+W,OAAQD,IAC9B6sB,EAAM7sB,GAAGskL,KAAOm6L,EAAaE,EAAU3+W,GAAK0+W,EAGhD,IAAIE,EAAmBnmX,KAAKomX,mBAAqBnwO,EAAMtpI,OAASspI,EAAMjpI,MAElEi6B,EAAe,CAAC7S,EAAM,IACtBqwJ,EAAOrwJ,EAAMxtB,MAAM,GACvB5G,KAAKqmX,SAAS5hM,EAAMx9I,EAAck/U,EAAkBlwO,IAGxDowO,SAAU,SAAS5hM,EAAM6hM,EAAat5W,EAAOipI,GACzCj2I,KAAKumX,WAAW9hM,EAAM6hM,EAAat5W,EAAOipI,IAG9CswO,WAAY,SAAS9hM,EAAM6hM,EAAat5W,EAAOipI,GAC3C,GAAIwuC,EAAKj9K,OAAS8+W,EAAY9+W,QAAU,EAWxC,GALIi9K,EAAKj9K,QAAU,GAA4B,IAAvB8+W,EAAY9+W,SAChC8+W,EAAc,CAAC7hM,EAAK,IACpBA,EAAOA,EAAK79K,MAAM,IAGF,IAAhB69K,EAAKj9K,OAAT,CAOA,IAAIy/B,EAAew9I,EAAK,GAExB,GAAIzkL,KAAKwmX,iBAAiBF,EAAat5W,IAAUhN,KAAKwmX,iBAAiB,CAACv/U,GAAc5pB,OAAOipW,GAAct5W,GACvGhN,KAAKumX,WAAW9hM,EAAK79K,MAAM,GAAI0/W,EAAYjpW,OAAO,CAAC4pB,IAAgBj6B,EAAOipI,OACvE,CACH,IAAIwwO,EAAYzmX,KAAK0mX,UAAUJ,EAAat5W,EAAOipI,GACnDj2I,KAAKumX,WAAW9hM,EAAM,GAAIgiM,EAAUz4K,IAAKy4K,SAZrCH,EAAY9+W,OAAS,GACrBxH,KAAK0mX,UAAUJ,EAAat5W,EAAOipI,OAb3C,CACI,IAAIpqI,EAAyB,GAAf44K,EAAKj9K,OAAci9K,EAAO6hM,EACxCtmX,KAAK2mX,WAAW96W,EAASmB,EAAOipI,KA0BxC0wO,WAAY,SAASvyV,EAAO6lN,EAAGhkG,GAC3B7hH,EAAM,GAAG6hH,MAAQA,GAGrBywO,UAAW,SAAStyV,EAAOpnB,EAAOipI,GAC9B,OAAIj2I,KAAKomX,mBACEpmX,KAAK4mX,QAAQxyV,EAAOpnB,EAAOipI,GAE3Bj2I,KAAK6mX,QAAQzyV,EAAOpnB,EAAOipI,IAI1CzG,YAAa,IAEbs3O,eAAgB,WACZ,MAA4B,MAArB9mX,KAAKwvI,aAGhB42O,iBAAkB,WACd,MAA4B,MAArBpmX,KAAKwvI,aAGhBu3O,aAAc,WACV/mX,KAAKwvI,YAAcxvI,KAAK8mX,iBAAmB,IAAM,KAGrDN,iBAAkB,SAASpyV,EAAOpnB,GAC9B,IAAKonB,GAA0B,IAAjBA,EAAM5sB,OAChB,OAAO8tH,EAOX,IAJA,IAAI0xP,EAAU,EACVC,EAAU,EACV96K,EAAU72E,EAEL/tH,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAIskL,EAAOz3J,EAAM7sB,GAAGskL,KACpBm7L,GAAWn7L,EACXsgB,EAAWA,EAAUtgB,EAAQsgB,EAAUtgB,EACvCo7L,EAAWA,EAAUp7L,EAAQo7L,EAAUp7L,EAG3C,OAAOzoL,EAAKwV,IACP5L,EAAQA,EAAQi6W,GAAYD,EAAUA,GACtCA,EAAUA,GAAYh6W,EAAQA,EAAQm/L,KAI/Cs4K,QAAS,SAAStvU,EAAU+xU,EAAW1C,GAKnC,GAJM0C,EAAUl6W,OAASk6W,EAAUv6W,QAAU3M,KAAKomX,oBAC9CpmX,KAAK+mX,eAGL5xU,GAAYA,EAAS3tC,OAAS,EAAG,CACjC,IAAI2/W,EAAe,CACfn6W,MAAOk6W,EAAUl6W,MACjBL,OAAQu6W,EAAUv6W,OAAS63W,EAAS5jV,KACpCxc,IAAK,EACLyH,KAAM,GAGV7rB,KAAK+lX,eAAe5wU,EAAUgyU,KAItCP,QAAS,SAASxyV,EAAOpnB,EAAOipI,GAC5B,IACI7xH,EAAM,EAEVpX,EAAQ+I,EAHQ/V,KAAKonX,WAAWhzV,GAGNpnB,GAE1B,IAAK,IAAIzF,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAIoF,EAASoJ,EAAMqe,EAAM7sB,GAAGskL,KAAO7+K,GACnConB,EAAM7sB,GAAG0uI,MAAQ,CACbtpI,OAAQA,EACRK,MAAOA,EACPoX,IAAK6xH,EAAM7xH,IAAMA,EACjByH,KAAMoqH,EAAMpqH,MAGhBzH,GAAOzX,EAGX,IAAI06W,EAAM,CACN16W,OAAQspI,EAAMtpI,OACdK,MAAOipI,EAAMjpI,MAAQA,EACrBoX,IAAK6xH,EAAM7xH,IACXyH,KAAMoqH,EAAMpqH,KAAO7e,GASvB,OANAq6W,EAAIr5K,IAAM5qM,EAAK+S,IAAIkxW,EAAIr6W,MAAOq6W,EAAI16W,QAE9B06W,EAAIr5K,KAAOq5K,EAAI16W,QACf3M,KAAK+mX,eAGFM,GAGXR,QAAS,SAASzyV,EAAOpnB,EAAOipI,GAO5B,IANA,IAEItpI,EAASoJ,EAFG/V,KAAKonX,WAAWhzV,GAEDpnB,GAC3BoX,EAAM6xH,EAAM7xH,IACZyH,EAAO,EAEFtkB,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9B6sB,EAAM7sB,GAAG0uI,MAAQ,CACbtpI,OAAQA,EACRK,MAAO+I,EAAMqe,EAAM7sB,GAAGskL,KAAOl/K,GAC7ByX,IAAKA,EACLyH,KAAMoqH,EAAMpqH,KAAOA,GAEvBA,GAAQuI,EAAM7sB,GAAG0uI,MAAMjpI,MAG3B,IAAIq6W,EAAM,CACN16W,OAAQspI,EAAMtpI,OAASA,EACvBK,MAAOipI,EAAMjpI,MACboX,IAAK6xH,EAAM7xH,IAAMzX,EACjBkf,KAAMoqH,EAAMpqH,MAShB,OANAw7V,EAAIr5K,IAAM5qM,EAAK+S,IAAIkxW,EAAIr6W,MAAOq6W,EAAI16W,QAE9B06W,EAAIr5K,KAAOq5K,EAAIr6W,OACfhN,KAAK+mX,eAGFM,GAGXD,WAAY,SAAShzV,GAGjB,IAFA,IAAIwyB,EAAQ,EAEHr/C,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9Bq/C,GAASxyB,EAAM7sB,GAAGskL,KAGtB,OAAOjlI,KAIXy9T,EAAiBz8W,EAAM7E,OAAO,CAC9BoF,KAAM,SAASwnL,EAASzoL,GACpBlH,KAAKkH,QAAUsB,EAAW,GAAIxI,KAAKkH,QAASA,GAC5ClH,KAAK2vL,QAAUA,EACf3vL,KAAK6L,QAAUlJ,EAAEgtL,EAAQ9jL,SAEzB7L,KAAK+c,OAAS,GAGlB42J,UAAW,SAAS3kI,EAAMnjC,GAEtB,OADWA,EAAQspC,SAAS,oBAChBxoC,UAAY,GAG5B63W,SAAU,SAAS/mU,GACf,IAAIunG,EAAchlJ,KAAKu8D,UAAU9e,EAAKppB,SAASg5B,KAC3Cm3T,EAAW,CACX5jV,KAAM,GAGV,GAAI6c,EAAKtI,SAAU,CAIf,GAHAn1C,KAAKw6T,OAAOx1K,GAEDhlJ,KAAKsiP,SAAS7kM,GACf,CACN,IAAIM,EAAQ/9C,KAAKsnX,aAAa7pU,GAC9BunG,EAAYjrG,OAAOgE,GAEnB/9C,KAAKunX,SAASxpU,EAAON,EAAKppB,UAE1BmwV,EAAS5jV,KAAOmd,EAAMpxC,SAG1Bq4I,EAAYjrG,OAAO/5C,KAAKwnX,eAExBxnX,KAAK+c,QAAUhR,EAAWi5I,GAAeA,EAAYvlI,cAAgB,EAGzE,OAAO+kW,GAGX+C,SAAU,SAAS17W,EAASwoB,GACxBr0B,KAAK2vL,QAAQ9+J,QAAQ,WAAW,WAC5B,MAAO,CACHsD,SAAUtoB,EACVgC,KAAM,CAAE,CAAEwmB,SAAUA,SAKhCkoC,UAAW,SAASlP,GAChB,OAAOrtD,KAAK6L,QAAQkqB,KAAK,mBAAqBp1B,EAAMmiB,KAAK,OAAS,KAAOuqC,EAAM,OAGnFz9C,OAAQ,SAAS6tC,GACb,IAAIunG,EAAchlJ,KAAKu8D,UAAU9e,EAAKppB,SAASg5B,KAC3ClY,EAAWsI,EAAKtI,SACpB,GAAIA,EAGA,IAFA,IAAIsyU,EAAWziO,EAAYjvH,KAAK,mBAEvBxuB,EAAI,EAAGA,EAAI4tC,EAAS3tC,OAAQD,IAAK,CACtC,IAAIu+W,EAAO3wU,EAAS5tC,GAChB62T,EAAcp+T,KAAK0nX,YAAY5B,GACnC2B,EAAS1tU,OAAOqkR,GAEhBp+T,KAAKunX,SAASnpD,EAAYjpR,WAAY2wU,EAAKzxV,UAE3Cr0B,KAAK2vL,QAAQvlL,QAAQy5W,EAAc,CAC/Bh4W,QAASuyT,MAMzBwmD,WAAY,SAASnnU,GACjB,IAAI2gR,EAAcp+T,KAAK0nX,YAAYjqU,GACnCz9C,KAAK6L,QAAQkuC,OAAOqkR,GACpBp+T,KAAKunX,SAASnpD,EAAYjpR,WAAYsI,EAAKppB,UAE3Cr0B,KAAK2vL,QAAQvlL,QAAQy5W,EAAc,CAC/Bh4W,QAASuyT,KAIjB5D,OAAQ,SAAS/8Q,GACbz9C,KAAK2vL,QAAQ9+J,QAAQ,WAAW,WAC5B,MAAO,CACHsD,SAAUspB,EAAKtI,SAAS,6BAIhCsI,EAAK7wC,IAAI,mBAAoB,IAC7B6wC,EAAKtxB,YAAY,UACjBsxB,EAAKtxB,YAAY,aACjBsxB,EAAK8O,SAGTm7T,YAAa,SAAS14U,GAClB,OAAOhvC,KAAK2nX,YAAY34U,GACfpiC,IAAI,mBAAoBoiC,EAAKogF,OAC7B7qG,SAAS,UACTyD,YACG,YACAhoB,KAAK4nX,qBAAqB54U,GAAQ,KAErC7mB,OAAsB,IAAf6mB,EAAKtmC,OACZqxC,OAAOp3C,EAAE,eACTmN,KAAK9P,KAAKsiP,SAAStzM,MAGhC24U,YAAa,SAAS34U,GAClB,IAAIwxN,EAAO79P,EAAE,sCAOb,OANA3C,KAAK6lX,YAAY72U,EAAMwxN,GAEnBxrI,EAAQhmF,EAAK3a,WAAa2gG,EAAQhmF,EAAK3a,SAASg5B,MAChDmzM,EAAK19O,KAAKniB,EAAMmiB,KAAK,OAAQksB,EAAK3a,SAASg5B,KAGxCmzM,GAGXqnH,iBAAkB,SAAS74U,GACvB,IAAIm3C,EAAc,CACdn5E,MAAOgiC,EAAKinG,MAAMjpI,MAClBL,OAAQqiC,EAAKinG,MAAMtpI,OACnBkf,KAAMmjB,EAAKinG,MAAMpqH,KACjBzH,IAAK4qB,EAAKinG,MAAM7xH,KAepB,OAZI+hE,EAAYt6D,MAAQ7rB,KAAK+c,OACzBopE,EAAYn5E,OAAuB,EAAdhN,KAAK+c,OAE1BopE,EAAYn5E,OAAShN,KAAK+c,OAG1BopE,EAAY/hE,IACZ+hE,EAAYx5E,QAAwB,EAAd3M,KAAK+c,OAE3BopE,EAAYx5E,QAAU3M,KAAK+c,OAGxBopE,GAGX0/R,YAAa,SAAS72U,EAAMnjC,GACxB,IAAIs6E,EAAcnmF,KAAK6nX,iBAAiB74U,GACxCnjC,EAAQe,IAAI,CACRI,MAAOm5E,EAAYn5E,MACnBL,OAAQw5E,EAAYx5E,OACpBkf,KAAMs6D,EAAYt6D,KAClBzH,IAAK+hE,EAAY/hE,OAIzBk+N,SAAU,SAAStzM,GACf,IAAIpO,EAAOoO,EAAKpO,KAMhB,OAJI5gC,KAAKkH,QAAQ2I,WACb+wB,EAAO5gC,KAAKuiX,gBAAgBvzU,IAGzBpO,GAGX2hV,gBAAiB,SAASvzU,GAEtB,OADoBn/B,EAAS7P,KAAKkH,QAAQ2I,SACnCi4W,CAAc,CACjBzzV,SAAU2a,EAAK3a,SACfuM,KAAMoO,EAAKpO,QAInB0mV,aAAc,SAASt4U,GACnB,OAAOrsC,EAAE,uCACAo3C,OAAOp3C,EAAE,eAAemN,KAAK9P,KAAKsiP,SAAStzM,MAGxDw4U,YAAa,WACT,OAAO7kX,EAAE,uCAGbilX,qBAAsB,SAAS54U,GAC3B,OAAOm2U,EAAgBn2U,EAAKogF,UAIhC80P,EAAet8W,EAAM7E,OAAO,CAC5B6hX,WAAY,SAASnnU,EAAMzwC,EAAOL,EAAQylC,GACtCqL,EAAKw4F,MAAQ,CACTjpI,MAAOA,EACPL,OAAQA,EACRyX,IAAK,EACLyH,KAAM,GAEV4xB,EAAKrL,SAAWA,GAGpBjqC,KAAM,SAASiqC,GACXpyC,KAAKoyC,SAAWA,EAChBpyC,KAAKgqP,SAAW53M,EAAW,EAAI,GAGnCqyU,QAAS,SAAStvU,EAAU+xU,EAAW1C,GAEnC,GAAIrvU,EAAS3tC,OAAS,EAAG,CACrB,IAAIwF,EAAQk6W,EAAUl6W,MAClBL,EAASu6W,EAAUv6W,OAEnB3M,KAAKoyC,SACLzlC,GAAU63W,EAAS5jV,KAEnB5zB,GAASw3W,EAAS5jV,KAGtB,IAAIumV,EAAe,CACfn6W,MAAOA,EACPL,OAAQA,EACRyX,IAAK,EACLyH,KAAM,GAGV7rB,KAAK+lX,eAAe5wU,EAAUgyU,KAItCpB,eAAgB,SAAS3xV,EAAO6hH,GAC5B,IAGI1uI,EAHAy+W,EAAa/vO,EAAMjpI,MAAQipI,EAAMtpI,OACjCs5W,EAAY,EACZC,EAAY,GAGhB,IAAK3+W,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CAC/B,IAAIynC,EAAO5a,EAAM7sB,GACjB2+W,EAAU3+W,GAAKwB,WAAWqrB,EAAM7sB,GAAGmB,OACnCu9W,GAAaC,EAAU3+W,GACvBynC,EAAKoD,SAAWpyC,KAAKoyC,SAGzB,IAAK7qC,EAAI,EAAGA,EAAI2+W,EAAU1+W,OAAQD,IAC9B6sB,EAAM7sB,GAAGskL,KAAOm6L,EAAaE,EAAU3+W,GAAK0+W,EAGhDjmX,KAAK+nX,aAAa3zV,EAAO6hH,IAG7B8xO,aAAc,SAAS3zV,EAAO6hH,GAC1B,IAAIgwO,EAAYjmX,KAAKonX,WAAWhzV,GAC5BA,EAAM,GAAGs2C,MAAQ,IAAM1qE,KAAKgqP,SAC5BhqP,KAAKomX,iBAAiBhyV,EAAO6hH,EAAOgwO,GAEpCjmX,KAAK8mX,eAAe1yV,EAAO6hH,EAAOgwO,IAI1CG,iBAAkB,SAAShyV,EAAO6hH,EAAOgwO,GAGrC,IAFA,IAAIp6V,EAAO,EAEFtkB,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAIynC,EAAO5a,EAAM7sB,GACbyF,EAAQgiC,EAAK68I,MAAQo6L,EAAYhwO,EAAMjpI,OAC3CgiC,EAAKinG,MAAQ,CACTtpI,OAAQspI,EAAMtpI,OACdK,MAAOA,EACPoX,IAAK6xH,EAAM7xH,IACXyH,KAAMoqH,EAAMpqH,KAAOA,GAGvBA,GAAQ7e,IAIhB85W,eAAgB,SAAS1yV,EAAO6hH,EAAOgwO,GAGnC,IAFA,IAAI7hW,EAAM,EAED7c,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAAK,CACnC,IAAIynC,EAAO5a,EAAM7sB,GACboF,EAASqiC,EAAK68I,MAAQo6L,EAAYhwO,EAAMtpI,QAC5CqiC,EAAKinG,MAAQ,CACTtpI,OAAQA,EACRK,MAAOipI,EAAMjpI,MACboX,IAAK6xH,EAAM7xH,IAAMA,EACjByH,KAAMoqH,EAAMpqH,MAGhBzH,GAAOzX,IAIfy6W,WAAY,SAAShzV,GAGjB,IAFA,IAAIwyB,EAAQ,EAEHr/C,EAAI,EAAGA,EAAI6sB,EAAM5sB,OAAQD,IAC9Bq/C,GAASxyB,EAAM7sB,GAAGskL,KAGtB,OAAOjlI,KAIXu9T,EAAmBE,EAAethX,OAAO,CACzCyhX,SAAU,SAAS/mU,GACf,IAAIunG,EAAchlJ,KAAKu8D,UAAU9e,EAAKppB,SAASg5B,KAC3Cm3T,EAAW,CACX5jV,KAAM,EACN7jB,OAAQ,GAGZ,GAAI0gC,EAAKtI,SAAU,CAIf,GAHAn1C,KAAKw6T,OAAOx1K,GAEDhlJ,KAAKsiP,SAAS7kM,GACf,CACN,IAAIM,EAAQ/9C,KAAKsnX,aAAa7pU,GAC9BunG,EAAYjrG,OAAOgE,GACnB/9C,KAAKunX,SAASxpU,EAAON,EAAKppB,UAEtBopB,EAAKrL,SACLoyU,EAAS5jV,KAAOmd,EAAMpxC,SAEtB63W,EAAS5jV,KAAOmd,EAAM/wC,QAI9Bg4I,EAAYjrG,OAAO/5C,KAAKwnX,eAExBxnX,KAAK+c,QAAUhR,EAAWi5I,GAAeA,EAAYvlI,cAAgB,EAGzE,OAAO+kW,GAGX7wM,UAAW,SAAS3kI,EAAMnjC,GAOtB,OALImjC,EAAKoD,SACCvmC,EAAQspC,SAAS,oBAAoBxoC,SAErCd,EAAQspC,SAAS,6BAA6BnoC,UAEzC,GAGnBs6W,aAAc,SAASt4U,GAQnB,OANIA,EAAKoD,SACGzvC,EAAE,uCAEFA,EAAE,iDAGDo3C,OAAOp3C,EAAE,eAAemN,KAAK9P,KAAKsiP,SAAStzM,QAIhE,SAASijJ,EAAShtK,EAAOitK,GACrB,OAAY,OAARA,EACOA,EAGDpjK,EAAO7J,GAAO,EACjBsK,CAAI2iK,GAGf,SAASl9D,EAAQtsH,GACb,YA54BY,IA44BEA,EAyBlB,SAAS28W,EAAalvW,EAAKyC,EAAKG,EAAOvR,EAAQ09W,GAC3C,IAAI8C,EAAW5kX,EAAK+S,IAAI/S,EAAK8T,IAAIf,GAAM/S,EAAK8T,IAAI0B,IAC5CqvW,EAAW7kX,EAAKwV,IAAIxV,EAAK8T,IAAIf,GAAM/S,EAAK8T,IAAI0B,IAE5CsvW,GADQD,EAAWD,IAAaxgX,EAAS,IACnBuR,EAAQ,GASlC,OANImsW,EACQ8C,EAAWE,EAEXD,EAAWC,EAM3B,SAAS5C,EAAkBl2P,GACvB,MAAO,IAAM+4P,EAAa/4P,EAAMiB,GAAK83P,EAAa/4P,EAAMv6G,GAAKszW,EAAa/4P,EAAMjqG,GAGpF,SAAS6/V,EAAa51P,GAElB,IAAIg2P,EAmBR,SAAoBh2P,GAChB,IAAIg5P,EAAch5P,EAAM5nH,OACpB49W,EAAW,GACK,IAAhBgD,GACAhD,EAAS/0P,EAAIjB,EAAM,GACnBg2P,EAASvwW,EAAIu6G,EAAM,GACnBg2P,EAASjgW,EAAIiqG,EAAM,KAEnBg2P,EAAS/0P,EAAIjB,EAAMpkH,UAAU,EAAG,GAChCo6W,EAASvwW,EAAIu6G,EAAMpkH,UAAU,EAAG,GAChCo6W,EAASjgW,EAAIiqG,EAAMpkH,UAAU,EAAG,IAGpC,OAAOo6W,EAhCQiD,CADfj5P,EAAQA,EAAM3sH,QAAQ,IAAK,KAG3B,MAAO,CACH4tH,EAAGi4P,EAASlD,EAAS/0P,GACrBx7G,EAAGyzW,EAASlD,EAASvwW,GACrBsQ,EAAGmjW,EAASlD,EAASjgW,IAI7B,SAASgjW,EAAa18W,GAClB,IAAI8K,EAASnT,EAAK2S,MAAMtK,GAAQyF,SAAS,IAAInC,cAM7C,OAJsB,IAAlBwH,EAAO/O,SACP+O,EAAS,IAAMA,GAGZA,EAmBX,SAAS+xW,EAASx4P,GACd,OAAO72G,SAAS62G,EAAI5+G,SAAS,IAAK,IAGtC,SAASi0W,EAAgB/1P,GACrB,IAAIwC,EAAa,EAMjB,OALIxC,IACAA,EAAQ41P,EAAa51P,GACrBwC,EAAaxuH,EAAKq6E,KAAK,KAAQ2xC,EAAMiB,EAAIjB,EAAMiB,EAAI,KAAQjB,EAAMv6G,EAAIu6G,EAAMv6G,EAAI,KAAQu6G,EAAMjqG,EAAIiqG,EAAMjqG,IAGpGysG,EAGX,SAAS77G,EAAMrN,GACX,IAAIuuH,EAAQ7zH,EAAKsmC,IAAI,GAAI,GACzB,OAAOtmC,EAAK2S,MAAMrN,EAAQuuH,GAASA,EAGvCntG,EAAQH,GAAGqN,OAAO8sV,GAzgCtB,CA2gCGhjX,OAAOH,MAAM+G,QACF/G,MAqwCd,OA1vCA,SAAUgC,EAAGkuB,EAASjuB,GAClB,aAGA,GAAKiuB,GAAYA,EAAQ03V,SAAzB,CAKA,IAIIC,EAaAC,EAGI7jW,EAUA8jW,EA9BJlpX,EAASqxB,EAAQrxB,OAAO,mBAAoB,IAC5CmpX,EAAY93V,EAAQ03V,SAAS,CAAC,OAC9BK,EAASD,EAAUp5V,IAAI,UACvBs5V,EAAWF,EAAUp5V,IAAI,YAEzBu5V,EAAOH,EAAUp5V,IAAI,QAcrBw5V,GACInkW,EAAQ,CACRokW,SAAU,qBACVC,SAAU,yBACVC,UAAW,sBACXC,UAAW,kBACXC,kBAAmB,kBACnBC,SAAU,yBACV52E,KAAM,SACN6L,YAAa,UAEboqE,EAAe,SAAS53V,EAAYprB,GACpC,MAAY,UAARA,EACOorB,EAEJnwB,MAAMkN,KAAKnI,GAAMshD,OAAOl2B,IAE5B,SAASykQ,EAAO1pR,EAASikB,EAAMxiB,GAClC,IAAI5H,EAAOkf,EAAMkL,IAAS,aACtBrc,EAAU8hR,EAAM+zF,MAAMh8W,GACtBmxW,EAAKiK,EAAaj1W,EAAS/N,GAa/B,OAXA6vR,EAAMg0F,OAAOj8W,GAAQ,SAASk8W,GAC1B,IA2yBiB38V,EA3yBbiG,GA4yBZjG,EAAKlqB,EADoBkqB,EA3yBgBhhB,GA6yBlClL,MAAMy1B,eAAevJ,EAAIlsB,MAAMgpB,KAClChpB,MAAMy1B,eAAevJ,EAAIlsB,MAAMkpB,OAAOF,KACtChpB,MAAMy1B,eAAevJ,EAAIlsB,MAAMmpB,QAAQH,KA7yBnC,GAAImJ,GAAyC,mBAAxBA,EAAO0yM,eACpBgkJ,IAAQ/1W,GAAW+1W,IAAQ12V,EAAOhC,WAAY,CAC9C,IAAI2tV,EAAKiK,EAAac,EAAK9jX,GAC3BotB,EAAO0yM,cAAci5I,GACrBhrW,EAAU+1W,MAIf/K,IAIXgL,EAAoB,CACpBC,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,UAAU,GAGVC,EAAuB,CAEvB3nX,MAAM,EACN27C,OAAO,EACPtxC,OAAO,GAsRPu9W,EAAa,6BA2VjBxqX,EAAOF,QAAQ,mBAAoB,CAAE,WAAY,SAASyQ,GACtD,IAAIk6W,EACAC,GAAW,EAGf1B,EAAkBz4W,EA2DlB,MAAO,CACHi3C,OA1DS,SAASl3B,EAAMq6V,GACxB,MAAO,CAEH3gP,SAAU,KACV/pI,QAAS,CAAE,WAAY,UACvB81R,OAAO,EAEP60F,WAAY,CAAE,SAAU,SAAU,WAAY,SAASC,EAAQC,GAC3DtqX,KAAK6P,SAAWrG,EAAK+gX,EAAaD,GAClCA,EAAOE,SAAWhhX,GAAK,WACnBxJ,KAAK6P,SAAW,KAChBy6W,EAAOE,SAAW,OACnBxqX,QAGPogO,KAAM,SAASm1D,EAAO1pR,EAASwqI,EAAOo0O,GAClC,IAAIpf,EAAW1oW,EAAEkJ,GAUb6+W,EAAW56V,EAAKrtB,QAAQ,WAAY,OAExC4oW,EAASvoV,KAAK4nW,EAAUrf,EAASvoV,KAAK,QAAU4nW,IAChDrf,EAAS,GAAGrjU,gBAAgB,QAAU0iV,GAEzBC,EAAap1F,EAAO1pR,EAASwqI,EAAOvmH,EAAMq6V,EAAUM,KAM7DR,GACA9vV,aAAa8vV,GAGjBA,EAAuBlxV,YAAW,WAC9Bw8P,EAAMq1F,MAAM,iBACPV,IACDA,GAAW,EACXvnX,EAAE,QAAQK,MAAK,WACX,IAAIgkC,EAAOrkC,EAAE3C,MAAMoqX,WAAW,QAC1BpjV,GACAA,EAAK6jV,8BAcrC,IAAIC,EAAW,CACX3I,OAAQ,WACRzrB,eAAgB,QAChBxB,WAAY,QACZ61B,eAAgB,QAChBC,WAAY,QACZC,aAAc,QACdloE,YAAa,QACbmoE,cAAe,QACf76S,YAAa,QACb86S,OAAQ,QACR3vB,UAAW,OACXzvD,OAAQ,SACRq/E,SAAU,KACVC,WAAY,MACZhC,SAAU,KACVJ,SAAU,KACVx2E,KAAM,KACN6L,YAAa,KACbmP,YAAa,KACbzK,OAAQ,SAGRsoE,EAAiB,GAEjBC,EAAoB,GAExB16V,EAAQvvB,QAAQ,CAAC,mBAAmB,SAASwxB,GACzCy4V,EAAkB5pX,KAAKmxB,GACvBA,EAAS,QAAUA,EACnBtzB,EAAOgsX,UAAU14V,GAAQ,WACrB,MAAO,CACH02G,SAAU,IACV42F,KAAM,SAASm1D,EAAO1pR,EAASwqI,GAC3Bs0O,EAAap1F,EAAO1pR,EAASwqI,EAAOvjH,EAAQA,WA2F5D,IAAIg7C,EAASntE,MAAMitB,WACf2jE,EAAO,MACPjsC,EAAQ,MAIZ3kD,MAAMitB,WAAa,SAAShf,GACxB,OAAOk/D,EAAOl/D,GACTnM,QAAQ8uF,EALH,aAML9uF,QAAQ6iD,EALF,cAQf,IAAImmU,EAAiB,GAqCrB9qX,MAAMyvB,oBAAmB,SAASkiG,GAC9Bm5P,EAAiB9oX,EAAEu7B,KAAKutV,GAAgB,SAASt0V,GAC7C,OAAQu0V,EAAUtjX,MAAM,KAAM+uB,MAxItC,SAA0Bw0V,EAAOC,GAC7B,SAASC,EAAKC,EAAev5V,GACzB/yB,EAAOgsX,UAAUM,EAAe,CAC5B,mBACA,SAASC,GACL,OAAOA,EAAiB/kU,OAAOz0B,EAAYu5V,MAKvD,IAAI1pX,EAAOwpX,EAAW,SAAW,GAG7Bl/V,EAFJtqB,GAAQupX,EAAM5jX,GAAGb,QAAQ9E,KAGrB4pX,EAAW,QAAU5pX,EAAK0I,OAAO,GAAK1I,EAAKoZ,OAAO,GAAGlD,cAIrD2zW,GAHJ7pX,EAAO,QAAUA,GAGCK,QAAQ,WAAY,OAEtC,IAA0D,GAAtD6oX,EAAe31W,QAAQvT,EAAKK,QAAQ,QAAS,KAAY,CACzD,IAAI2R,EAAQhS,IAAS4pX,EAAW,CAAE5pX,GAAS,CAAEA,EAAM4pX,GACnDn7V,EAAQvvB,QAAQ8S,GAAO,SAAS03W,GAC5BtsX,EAAOgsX,UAAUM,GAAe,WAC5B,MAAO,CACHtiP,SAAU,IACV/mI,SAAS,EACToN,SAAU,SAAShE,EAASg+C,GACxB,IAAIgqG,EAAMi3N,EAASp+V,IAAc,MAC7Bw/V,EAAariU,EAAWsiU,aAAetiU,EAAWqiU,WAEtD,MAAO,IAAMr4N,EAAM,IAAMo4N,GAAUC,EAAc,KAAOA,EAAa,IAAO,IAAM,IAAMrgX,EAAQiE,OAAS,KAAO+jJ,EAAM,YAOtI03N,EAAkB51W,QAAQvT,EAAKK,QAAQ,QAAS,MAAQ,IAI5DopX,EAAKzpX,EAAMA,GACP4pX,GAAY5pX,GACZypX,EAAKG,EAAU5pX,IA8FnBgqX,CAAiB95P,EAAMx/F,OAAwB,UAAhBw/F,EAAMrzG,WAKzCysW,EAAU,CAAE,YAAa,oBAAsB,WAAW,SAASx3V,EAAKy+G,GACpE,IAAI9yI,EAAOG,KAAKH,KAChB,GAAW,QAAPq0B,EAYA,OARKy+G,GAAO81O,IACR91O,EAAM81O,GAEVA,EAAc,UACV91O,GAAOA,EAAIr4D,WACXz6E,EAAKwsX,eAAiB15O,EAAIr4D,SAAS,GACnCz6E,EAAKysX,cAAczsX,EAAKgM,QAAS8mI,KAKzC,IAAI4iJ,EAAQ11R,EAAKwsX,eAEb92F,GA77BR,SAAwBpoO,GACpB,IAAI5e,EAAOs6U,EACX,IACIA,EAAW,SAAS17T,GAAK,OAAOA,KACzBA,IACT,QACE07T,EAAWt6U,GAw7BXg+U,EAAe,WACX,IAAInnX,EAAIutI,IAAOx+G,EAAW/uB,EAAE+uB,SAAUtmB,EAAOzI,EAAEyI,KAC/C,GAAIsmB,EAAS3sB,OAAS,EAClB,OAAQ0sB,GAEN,IAAK,UACHrD,EAAQvvB,QAAQ6yB,GAAU,SAAStH,GAC/B,IAAI2/V,EAAY7pX,EAAEkqB,GAAIhf,KAAK,gBAEvB2+W,GAAaA,IAAcj3F,GAASi3F,EAAUC,cApG1E,SAAsBl3F,EAAO1oQ,GACzB0oQ,EAAMm3F,WACF7/V,GAEAlqB,EAAEkqB,GACGqF,WAAW,UACXA,WAAW,gBACXA,WAAW,iBACXA,WAAW,2BACX/F,YAAY,YA4FGwgW,CAAaH,EAAW3/V,MAGhC,MAEF,IAAK,UACH,IAAI07V,EAAW1oX,EAAKgM,QAAQ08W,WACxBx4W,EAAUw4W,EAAWA,EAASh5V,IAAI,YAAci5V,EAEpD33V,EAAQvvB,QAAQ6yB,GAAU,SAAStH,EAAItlB,GACnC,IAAIilX,EACJ,GAAIpnX,EAAE+jF,UACFqjS,EAAYpnX,EAAE+jF,cACX,CACH,IAAIyjS,EAAO/+W,GAAQA,EAAKtG,GACpBqlX,IAAShqX,GACT4pX,EAAY7pX,EAAEI,OAAOwyR,EAAMs3F,OAAQD,IACzBH,cAAe,EAEzBD,EAAYj3F,EAIpB5yR,EAAEkqB,GAAIhf,KAAK,eAAgB2+W,GAC3Bz8W,EAAQ8c,EAAR9c,CAAYy8W,MAEhBM,EAAOv3F,UAQ3Bm2F,EAAU,YAAa,0BAA0B,WAC7C,OAAO1rX,KAAKH,KAAK6I,WAGrBgjX,EAAU,YAAa,0BAA0B,SAASx8V,GACtDlvB,KAAKH,KAAK6I,MAAMwmB,MAGpBw8V,EAAU,YAAa,0BAA0B,WAC7C,IAAI18U,EAAOhvC,KAAKH,KAAKw0B,WACjB28C,EAAahxE,KAAKH,KAAKqH,QAAQupE,eAEnC,OAAIzhC,EACIhvC,KAAKH,KAAKqH,QAAQyqE,eACZX,EACKhiC,EAAKgiC,GAELhiC,EAGJA,EAAKp9B,SAGT,QAIf85W,EAAU,YAAa,0BAA0B,SAASx8V,GACtD,IAAIrvB,EAAOG,KAAKH,KACZqH,EAAUrH,EAAKqH,QACf8pE,EAAa9pE,EAAQupE,eACrB7vC,EAAO15B,EAAQ05B,MAAQ,GAEvB1R,IAAQtsB,IACRssB,EAAM,IAGN8hD,IAAe9pE,EAAQyqE,gBAAkBziD,IACzC0R,EAAO1R,EAAIhoB,EAAQqrE,gBAAkB,GACrCrjD,EAAMA,EAAI8hD,GAAc9pE,EAAQqrE,iBAGN,IAA1B1yE,EAAKqH,QAAQ6pE,UAAuBlxE,EAAK6yE,SAASC,UAC7C/xC,GAAQ1R,GAAOhoB,EAAQyqE,eAM5B9xE,EAAK6I,MAAMwmB,GAHPrvB,EAAK+yE,WAAW1jD,EAAK0R,MAOjC8qV,EAAU,iBAAkB,0BAA0B,WAClD,IAAIhjX,EAAQ1I,KAAKH,KAAKk0B,YAAYntB,MAAM,GACpCoqE,EAAahxE,KAAKH,KAAKqH,QAAQupE,eAQnC,OANIO,GAAchxE,KAAKH,KAAKqH,QAAQyqE,iBAChCjpE,EAAQ/F,EAAE2X,IAAI5R,GAAO,SAASsmC,GAC1B,OAAOA,EAAKgiC,OAIbtoE,KAGXgjX,EAAU,iBAAkB,0BAA0B,SAASx8V,GAChD,MAAPA,IACAA,EAAM,IAGV,IAAIrvB,EAAOG,KAAKH,KACZqH,EAAUrH,EAAKqH,QACf8pE,EAAa9pE,EAAQupE,eACrB5iE,EAAOqhB,EAEP8hD,IAAe9pE,EAAQyqE,iBACvBziD,EAAMvsB,EAAE2X,IAAI4U,GAAK,SAAS8f,GACtB,OAAOA,EAAKgiC,QAIK,IAArB9pE,EAAQ6pE,UAAuB7pE,EAAQyqE,gBAAmB9xE,EAAK6yE,SAASC,QAGxE9yE,EAAK6I,MAAMwmB,GAFXrvB,EAAK+yE,WAAW/kE,EAAMqhB,MAc9Bw8V,EAAU,YAAa,iBAAiB,SAAS7/W,EAAS3E,GACtD,IAAIrH,EAAOG,KAAKH,KAChB,GAAIqH,IAAYhE,MAAMD,QAAQiE,GAE1B,IADA,IAAIquR,EAAQ11R,EAAKwsX,eACR9kX,EAAI1H,EAAKwK,OAAO7C,SAAUD,GAAK,GAAI,CACxC,IAAI6X,EAAQvf,EAAKwK,OAAO9C,GACpBuC,EAAU5C,EAAQkY,GAClBtV,GAA6B,iBAAXA,IAClB5C,EAAQkY,GAASvf,EAAKktX,0BAA0B3tW,EAAOm2Q,EAAOzrR,QAO9E4hX,EAAU,YAAa,6BAA6B,SAAStsW,EAAOm2Q,EAAOzrR,GAEvE,OADAA,EAAU8+W,EAAO9+W,GACV,SAASnF,GACZmoX,EAAOv3F,GAAO,WACVzrR,EAAQyrR,EAAO,CAAEy3F,WAAYroX,WAMzC+mX,EAAU,CAAE,UAAW,cAAe,cAAe,eAAiB,6BAA6B,SAAStsW,EAAOm2Q,EAAOzrR,GACtH,MAAa,UAATsV,EACOpf,KAAKqlE,QAEhBv7D,EAAU8+W,EAAO9+W,GACV,SAASzI,GACZ,IAEIgoE,EAAMnzB,EAAuC+2U,EAAO74V,EAAOs+R,EAASw6D,EAFpEp6V,EAASzxB,EAAGiJ,OACZpD,EAAU4rB,EAAO5rB,QACDimX,EAAS,CAAEH,WAAY3rX,GAEvCwvB,EAAQjoB,SAAS1B,EAAQkoL,cACzB/lH,GAA+C,IAAxCniE,EAAQkoL,WAAWz5K,QAAQ,QAClCugC,GAAuD,IAA5ChvC,EAAQkoL,WAAWz5K,QAAQ,aAEtCmd,EAAOs6V,qBACPl3U,GAAW,GAGf+2U,EAAQE,EAAO17S,SAAWzxE,KAAKomC,SAC/BhS,EAAQ+4V,EAAOt/W,KAAO,GACtB6kT,EAAUy6D,EAAOz6D,QAAU,GAC3B,IAAK,IAAInrT,EAAI,EAAGA,EAAI0lX,EAAMzlX,OAAQD,IAAK,CACnC,IAAIynC,EAAOq6B,EAAO4jT,EAAM1lX,GAAGqe,WAAaqnW,EAAM1lX,GAC1C8sB,EAAWvB,EAAOuB,SAAS2a,GAC3Bq6B,GACIx4C,EAAQhlB,QAAQwpB,QAAQhB,EAAUD,GAAS,GAC3CA,EAAMzyB,KAAK0yB,GAEf64V,EAASr8V,EAAQhlB,QAAQohX,EAAM1lX,IAAIwR,QAC/B8X,EAAQhlB,QAAQwpB,QAAQ63V,EAAQx6D,GAAW,GAC3CA,EAAQ/wT,KAAKurX,IAGjB94V,EAAMzyB,KAAK0yB,GAId6hB,IACDi3U,EAAO94V,SAAW84V,EAAOt/W,KAAOumB,EAAM,GACtC+4V,EAAOE,gBAAkB1sX,MAAM8tC,kBAAkB0+U,EAAO94V,UACxD84V,EAAO17S,SAAWw7S,EAAM,IAG5BH,EAAOv3F,GAAO,WACVzrR,EAAQyrR,EAAO43F,WAQ3BzB,EAAU,UAAW,iBAAiB,SAAS7/W,EAAS3E,GAEpD,GADAlH,KAAKqlE,OACDn+D,EAAQwrT,QAAS,CACjB,IAAIziT,EAAWtN,EAAEI,OAAO,GAAIpC,MAAMkC,SAAUqE,EAAQomX,kBACpDz8V,EAAQvvB,QAAQ4F,EAAQwrT,SAAS,SAASr5B,IAClCA,EAAIp0Q,OAAUo0Q,EAAIxpR,UAAawpR,EAAI3oR,QAAW2oR,EAAIvgR,QAAWugR,EAAIj2D,UAAYxgO,IAAey2R,EAAIj2D,UAChGi2D,EAAIxpR,SAAW,kBACXlP,MAAM2tB,KAAK+qQ,EAAIp0Q,MAAO,YAAc,QACpCtkB,MAAM2tB,KAAK+qQ,EAAIp0Q,MAAOhV,EAASP,WAAa,mBAMhE,IAcQ69W,EAdJC,EAA0B,CAC1B1J,QAAW,CAAE,YACb5rG,KAAQ,CAAE,iBAAkB,iBAAkB,eAC9CkzG,SAAY,CAAE,eAAgB,WAAY,eAC1CqC,MAAS,CAAE,iBAAkB,gBAC7BtE,UAAa,CAAE,uBAAwB,mBAAoB,qBAC3DD,UAAa,CAAC,sBAAuB,qBAAsB,gBAAiB,0BAA2B,2BACvGmC,WAAc,CAAE,YAChBhC,SAAY,CAAE,YACdJ,SAAY,CAAE,YACdztB,UAAa,CAAE,kBAIX+xB,EAAqB,GACzB18V,EAAQvvB,QAAQksX,GAAyB,SAAS94E,EAAW5hR,GACzDjC,EAAQvvB,QAAQozS,GAAW,SAAS7kS,GAC3B09W,EAAmB19W,KACpB09W,EAAmB19W,GAAY,IAEnC09W,EAAmB19W,GAAUlO,KAAK,WAAamxB,SAIvDjC,EAAQvvB,QAAQisX,GAAoB,SAASl1V,EAASmzV,GAClD,IAAIkC,EAAe,IAAMlC,EACrB11R,EAAWn1F,MAAMssB,UAAUygW,GAE/BluX,EAAOgsX,UAAUkC,GAAc,WAC3B,MAAO,CACHlkP,SAAU,IACV/pI,QAAS44B,EACTs1V,UAAU,EACV59W,QAAS,SAASs7V,EAAUif,GACxB,GAA6B,KAAzBA,EAAOoD,GAAX,CAIAriB,EAAS/5U,WAAWwkE,GACpB,IAAIjmF,EAAWw7V,EAAS,GAAG/0Q,UAE3B,OAAO,SAASi/L,EAAO1pR,EAASwqI,EAAOo0O,GAGnC,IAFA,IAAIL,GAEIA,GAAcK,EAAYjjX,QAC9B4iX,EAAaK,EAAY50W,QAGxBu0W,GAGDA,EAAWv6W,SAAS69W,EAAc79W,GAClChE,EAAQkrB,UAHR+xV,EAAKl4W,KAAKklF,EAAW,4EAA8Ez9D,EAAQxtB,KAAK,iBAvpC5I,SAAS8/W,EAAap1F,EAAO1pR,EAASwqI,EAAOvjH,EAAQq3V,EAAUM,GAE3D,KAAM5+W,aAAmBnE,QACrB,MAAM,IAAI+I,MAAM,kIAGpB,IAAIq5W,EAAWzzO,EAAMyzO,SACjB8D,EAAar4F,EAAM+zF,MAAMQ,GAIzB+D,GAFJpD,EAAcA,GAAe,IAEH,GACtBqD,EAASrD,EAAY,GAErBsD,EAAOprX,EAAEkJ,GAASinB,GAEtB,IAAKi7V,EAED,OADAjtX,OAAO6P,QAAQod,MAAM,mBAAqB+E,GACnC,KAGX,IAAIk7V,EAAS/4V,EAAasgQ,EAAO1pR,EAASwqI,EAAOvjH,EAAQi7V,GAErD7mX,EAAU8mX,EAAO9mX,QAErB,GAAI8mX,EAAOC,WAAWzmX,OAAtB,CAGI,IAFA,IAAI+2D,EAAW,GAENh3D,EAAI,EAAG8oB,EAAM29V,EAAOC,WAAWzmX,OAAQD,EAAI8oB,EAAK9oB,IAAK,CAE1D,IAAI0mX,EAAaD,EAAOC,WAAW1mX,GAE/B0f,EAAUtkB,EAAEqpC,UAAS,SAASxnC,GAC9B,IAAI0pX,EAAU34F,EAAMg0F,OAAO0E,EAAW7+U,MAAM,SAASgkC,GAC7CA,IAAaxwE,IACbsrX,IACA1pX,EAAEmxC,iBAGX1uB,UAEHs3C,EAAS58D,KAAKslB,GAGlBtkB,EAAE+7D,KAAKt2D,MAAM,KAAMm2D,GAAUI,KAAKwvT,OAnBtC,CAwBA,IAAIrE,GAAa8D,EAyBb,OAAOO,IAxBP,IAAI1wU,EAAO83O,EAAM64F,OAAS74F,EAEtBt+P,EAAW,WACX,IAAIo3V,EAAa94F,EAAMg0F,OAAOO,GAAU,SAAS12S,GACrCA,IAAaxwE,IACjByrX,IAEAxiX,EAAQylB,WAAW+kH,EAAMi4O,MAAMxE,UAC/BA,EAAW,KACXjB,EAASsF,QAOjB,qBAAqBphX,KAAK0wC,EAAK8wU,SAC/Bt3V,IAEAs+P,EAAMi5F,OAAOv3V,GAQrB,SAASk3V,IACL,IAAIM,EAEAp4O,EAAMuzO,UACN6E,EAAkB9rX,EAAEA,EAAEkJ,GAAS,GAAGslE,WAAU,KAIhDjqE,EAAU+tB,EAAasgQ,EAAO1pR,EAASwqI,EAAOvjH,EAAQi7V,GAAM7mX,QAExD2E,EAAQU,GAAG,WACV,SAASrF,GACN,GAAIA,EAAQM,OAAS,EAAG,CACpB,IAAI0C,EAAQvH,EAAEuE,EAAQ,KACjB,KAAK6F,KAAK7C,EAAM02B,SAAW,MAAM7zB,KAAK7C,EAAMglB,QAC7ChlB,EAAM6sB,SAGV,IAAK,IAAIxvB,EAAI,EAAGA,EAAIL,EAAQM,OAAQD,IAChC5E,EAAEuE,EAAQK,IAAI0xB,IAAI,aAR9B,CAWEptB,EAAQ,GAAG3E,SAGjB,IAAI0kD,EAASmiU,EAAKxjX,KAAKsB,EAAS48W,EAAcvhX,GAAS2G,KAAKilB,IA0JpE,SAAsBA,EAAQyiQ,EAAOl/I,EAAOq4O,EAAavE,GACrD,GAAI9zO,EAAM8zO,GAAW,CACjB,IAAI36V,EAAMo5V,EAAOvyO,EAAM8zO,IAAWzpX,OAClC,IAAI8uB,EAIA,MAAM,IAAI/e,MAAM05W,EAAW,2DAA6D9zO,EAAMq4O,IAF9Fl/V,EAAI+lQ,EAAOziQ,IA7Jf67V,CAAa/iU,EAAQ2pO,EAAOl/I,EAAOvjH,EAAQq3V,GAE3C50F,EAAMq1F,MAAM,qBAAsBh/T,GAElC,IAAIgjU,EAkXZ,SAAqCr5F,EAAOziQ,GACxC,IAAI+7V,EAAat5F,EAAMu5F,IAAI,YAAY,WACnCD,IACI/7V,IACAnyB,MAAMqB,QAAQ8wB,EAAOjnB,SACrBinB,EAAS,SAIjB,OAAO+7V,EA3XmBE,CAA4Bx5F,EAAO3pO,GAMzD,GAJIyqF,EAAMuzO,SAkclB,SAAqB92V,EAAQyiQ,EAAO1pR,EAAS4iX,EAAiBO,EAAYJ,EAAiBv4O,GAEvF,IAAIg4O,EAAa94F,EAAMg0F,OAAOyF,GAAY,SAAS57S,EAAU0uJ,GACzD,IAAKhvM,EAAOT,aAAe+gD,IAAa0uJ,EAAU,CAC9CusJ,IAEIh4O,EAAMm0O,UACNn0O,EAAMm0O,WAGV,IAAIyE,EAAkBzB,EAAwB16V,EAAO5rB,QAAQ9E,MAEzD6sX,GACAA,EAAgB3tX,SAAQ,SAASc,GAC7B,IAAI8sX,EAAmB35F,EAAM+zF,MAAMjzO,EAAM,IAAMj0I,IAE3C8sX,GACAT,EAAgB10U,OAAOp3C,EAAEusX,GAAkBpsW,KAAKniB,MAAMssB,UAAU,IAAM7qB,GAAO,QAKzF,IAAI+1E,EAAWx1E,EAAEmwB,EAAO1mB,SAAS,GAC7BgvC,EAAWz4C,EAAEmwB,EAAOjnB,SAAS,GACM,WAAxBinB,EAAO5rB,QAAQ9E,OAG1ByJ,EAAUlJ,EAAEy4C,IAGhB,IAAIrrC,EAAUlE,EAAQ08W,WAAWh5V,IAAI,YACrCuD,EAAOX,WAEHy8V,GACAA,IAGJ97V,EAAS,KAELsoB,IACI+8B,GACAA,EAASvyD,WAAWupW,aAAa/zU,EAAU+8B,GAE/Cx1E,EAAEkJ,GAASqsE,YAAYu2S,IAG3B1+W,EAAQ0+W,EAAR1+W,CAAyBwlR,OAE9B,GACHu3F,EAAOv3F,GAlfC65F,CAAYxjU,EAAQ2pO,EAAO1pR,EAAS4iX,EAAiBp4O,EAAMuzO,QAASgF,EAAiBv4O,GAGrFA,EAAMg5O,YAAa,CACnB,IAAIA,EAAch5O,EAAMg5O,YACpBx3C,EAAatiD,EAAM+zF,MAAM+F,GACzBx3C,GACAjsR,EAAOrkC,QAAQswT,GAkH/B,SAA2B/kT,EAAQyiQ,EAAO1pR,EAASwjX,GAC/C,GAAK1uX,MAAMgpB,GAAG0/V,UAAYv2V,aAAkBnyB,MAAMgpB,GAAG0/V,UAAc1oX,MAAMgpB,GAAG8oR,MAAQ3/Q,aAAkBnyB,MAAMgpB,GAAG8oR,KAE3G,YADAq2E,EAAKl4W,KAAK,+EAAkFkiB,EAAO5rB,QAAY,MAGnHquR,EAAMg0F,OAAO8F,GAAa,SAASj8S,EAAU0uJ,GACrC1uJ,GAAY0uJ,GACZhvM,EAAOvL,QAAQ6rD,MAvHfk8S,CAAkB1jU,EAAQ2pO,EAAO1pR,EAASwjX,GAG9C,GAAIh5O,EAAMk5O,YAAa,CACnB,IAAIA,EAAcl5O,EAAMk5O,YACpBC,EAAaj6F,EAAM+zF,MAAMiG,GACzBC,GACA5jU,EAAO8kB,SAAS8+S,GAqHhC,SAA2B18V,EAAQyiQ,EAAO1pR,EAAS0jX,GAC/C,GAA8B,mBAAnBz8V,EAAO49C,SAEd,YADAo4S,EAAKl4W,KAAK,iFAAoFkiB,EAAO5rB,QAAY,MAGrHquR,EAAMg0F,OAAOgG,GAAa,SAASn8S,EAAU0uJ,GACrC1uJ,GAAY0uJ,GACZhvM,EAAO49C,SAAS0C,MA1HhBq8S,CAAkB7jU,EAAQ2pO,EAAO1pR,EAAS0jX,GAiB9C,OAbIl5O,EAAMwzO,UACN6F,EAAe9jU,EAAQ2pO,EAAOl/I,EAAMwzO,UAIpCgE,GA+IZ,SAAuB/6V,EAAQyiQ,EAAO1pR,EAASgiX,EAASC,GACpD,IAAKh7V,EAAOpqB,MACR,OAGJ,IAAIA,EAGAinX,GAAsB,EAGtBjnX,EADAknX,EAAO/jX,GACC,WACJ,OAzBZ,SAAmBA,GACf,GAAI,kBAAkBkB,KAAKlB,EAAQiX,KAAK,SACpC,OAAOjX,EAAQsjB,KAAK,WAExB,OAAOtjB,EAAQqjB,MAqBA2gW,CAAUhkX,IAGb,WACJ,OAAOinB,EAAOpqB,SAKtB,IAAIonX,EAAa,WAKb,IAAI5gW,EAAM2+V,EAAQkC,WACd7gW,IAAQtsB,IACRssB,EAAM2+V,EAAQmC,aAGd9gW,IAAQtsB,IACRssB,EAAM,MAGVygW,GAAsB,EACtB52V,YAAW,WAEP,GADA42V,GAAsB,EAClB78V,EAAQ,CACR,IAAI+2V,EAAWt0F,EAAMziQ,EAAOjnB,QAAQiX,KAAK,eAErC+mW,IACA36V,EAAM26V,KAGsB,IAA5B/2V,EAAO5rB,QAAQ6pE,UAAuBj+C,EAAO4/C,SAASC,SAClDzjD,IAIJ4D,EAAOpqB,MAAMwmB,MAGtB,IAGP2+V,EAAQoC,QAAUH,EAClB/2V,YAAW,WACH80V,EAAQoC,UAAYH,IACpBjC,EAAQoC,QAAUH,EAClBjC,EAAQoC,cAIZL,EAAO/jX,IACPA,EAAQod,GAAG,UAAU,WACjB0mW,GAAsB,KAI9B,IAAIjuX,EAAW,SAAS27D,GACpB,OAAO,WACH,IAAI6yT,EACAP,IAAwB9jX,EAAQU,GAAG,YAGnC8wD,GAAYywT,IACZoC,EAAepC,EAAOqC,WAE1BtC,EAAQuC,cAAc1nX,KAClB20D,IACAwwT,EAAQhD,eACJqF,GACApC,EAAOjD,gBAGfiC,EAAOv3F,MAIfziQ,EAAO5oB,MAAM,SAAUxI,GAAS,IAChCoxB,EAAO5oB,MAAM,OAAQxI,GAAS,IAExBf,MAAMgpB,GAAGshW,cAAgBn4V,aAAkBnyB,MAAMgpB,GAAGshW,cACtDn4V,EAAO5oB,MAAM,YAAaxI,GAAS,IAGvC,IAAI2uX,EAAa3nX,IAKZI,MAAM+kX,EAAQkC,aAAeM,GAAcxC,EAAQkC,aAC/ClC,EAAQyC,SAASzC,EAAQkC,YAEL,MAAdM,GAAqC,KAAfA,GAAqBA,GAAcxC,EAAQkC,YACxElC,EAAQuC,cAAcC,GAFtBv9V,EAAOpqB,MAAMmlX,EAAQkC,aAM7BlC,EAAQhD,eA5PA0F,CAAc3kU,EAAQ2pO,EAAO1pR,EAASgiX,EAASC,GAG/CliU,GA8VZ,SAAuC94B,EAAQjnB,GAC3C,IAAM/K,OAAO0vX,mBAAoB19V,EAAO1mB,QACpC,OAGJ,IAAIqkX,EAAgB,GAAG7pX,MAAM2D,KAAK5H,EAAEkJ,GAAS,GAAGksJ,WAE5C24N,EAAK,IAAIF,kBAAiB,SAASG,GACnCl8P,IACK3hG,IAIL69V,EAAQrvX,SAAQ,SAASsvX,GACrB,IAAI32I,EAAIt3O,EAAEmwB,EAAO1mB,SAAS,GAC1B,OAAQwkX,EAAIvwB,eAER,IAAK,QAED,IAAIwwB,EAAgB,GAAGjqX,MAAM2D,KAAKqmX,EAAItpX,OAAOywJ,WAC7C84N,EAAcvvX,SAAQ,SAASu2J,GACvB44N,EAAc96W,QAAQkiJ,GAAO,IAC7BoiF,EAAEliF,UAAU9qJ,IAAI4qJ,GACZl3J,MAAMgpB,GAAGgoS,UAAY7+R,aAAkBnyB,MAAMgpB,GAAGgoS,UAChD7+R,EAAOrO,MAAM,GAAGszI,UAAU9qJ,IAAI4qJ,OAI1C44N,EAAcnvX,SAAQ,SAASu2J,GACvBg5N,EAAcl7W,QAAQkiJ,GAAO,IAC7BoiF,EAAEliF,UAAUhhI,OAAO8gI,GACfl3J,MAAMgpB,GAAGgoS,UAAY7+R,aAAkBnyB,MAAMgpB,GAAGgoS,UAChD7+R,EAAOrO,MAAM,GAAGszI,UAAUhhI,OAAO8gI,OAI7C44N,EAAgBI,EAChB,MAEJ,IAAK,WAC2B,mBAAjB/9V,EAAOvL,QAAyBuL,EAAOjnB,QAAQiX,KAAK,aAC3DgQ,EAAOvL,QAAQ5kB,EAAEiuX,EAAItpX,QAAQwb,KAAK,aAEtC,MAEJ,IAAK,WAC6B,mBAAnBgQ,EAAO49C,UAA2B59C,EAAOjnB,QAAQiX,KAAK,aAC7DgQ,EAAO49C,WAAW/tE,EAAEiuX,EAAItpX,QAAQwb,KAAK,iBAMrD4xG,QAGJ,SAASD,IACLi8P,EAAGI,aAGP,SAASp8P,IACLg8P,EAAG97O,QAAQjyI,EAAEkJ,GAAS,GAAI,CAAEg+C,YAAY,IAG5C6qE,IACA5hG,EAAO5oB,MAAM,UAAWuqH,GA9ZhBs8P,CAA8BnlU,EAAQ//C,GAGnC+/C,GAKf,SAAS32B,EAAasgQ,EAAO1pR,EAASwqI,EAAOvjH,EAAQi7V,GACjD,IAAIj+V,EAAOgD,EAAOrwB,QAAQ,SAAU,IAChCwrX,EAAa,GACb+C,EAAc36O,EAAMszO,UAAYtzO,EAAMnvI,QACtCmvV,EAAe9gE,EAAM+zF,MAAM0H,GAE3BA,GAAe36B,IAAiBzzV,GAChCqrX,EAAWtsX,KAAK,CAAEmzB,OAAQ,UAAWsa,KAAM4hV,IAG/C,IAAI9pX,EAAU2pB,EAAQ9tB,OAAO,GAAIszI,EAAM+1B,eAAgBiqL,GAEvD,SAAS46B,EAAU7uX,EAAMsG,GACrB,IAAIwoX,EAAargW,EAAQ5pB,KAAKsuR,EAAM+zF,MAAM5gX,IACtCwoX,IAAetuX,EACfqrX,EAAWtsX,KAAK,CAAEmzB,OAAQ1yB,EAAMgtC,KAAM1mC,IAEtCxB,EAAQ9E,GAAQ8uX,EAKxB,IAAI55D,EAAgBy2D,EAAKj7V,OAAOzqB,UAAUnB,QACtCiqX,EAAepD,EAAKj7V,OAAOzqB,UAAUgC,OAGzC1H,EAAEK,KAAKqzI,GAAO,SAASj0I,EAAMsG,GACzB,GAAa,WAATtG,GAA8B,gBAATA,GAAmC,gBAATA,GAAmC,eAATA,EAA7E,CAIA,IAAIgvX,EAAW,OAAShvX,EAAK0I,OAAO,GAAGiE,cAAgB3M,EAAKwE,MAAM,GAElE,GAA2B,IAAvBxE,EAAKuT,QAAQ,MAAa,CAC1B,IAAI07W,EAAWjvX,EAAKK,QAAQ,QAAQ,SAASwc,GACzC,OAAOA,EAAOnU,OAAO,GAAGwN,iBAGxB64W,EAAax7W,QAAQ07W,IAAa,IAClCnqX,EAAQmqX,GAAY3oX,GAI5B,GAAI4uT,EAAc5oT,eAAe0iX,GAC7BH,EAAUG,EAAU1oX,QACjB,GAAI4uT,EAAc5oT,eAAetM,KAAU2nX,EAAqB3nX,GACnE6uX,EAAU7uX,EAAMsG,QACb,IAAK+gX,EAAkBrnX,GAAO,CACjC,IAAI+N,EAAQ/N,EAAK+N,MAAM,oBACvB,GAAIA,EAAO,CACP,IAAImhX,EAAanhX,EAAM,GAAGrF,OAAO,GAAGwN,cAAgBnI,EAAM,GAAGvJ,MAAM,GAC/DuJ,EAAM,IAAc,YAAR/N,EAEZ8E,EAAQoqX,GAAc5oX,GAEV,YAARtG,IACAkvX,EAAa,WAEjBL,EAAUK,EAAY5oX,UAOtC,IAAIooB,EAAaulH,EAAMqzO,aAAerzO,EAAM/oI,OAU5C,OARIwjB,IACA5pB,EAAQ4pB,WAAai4V,EAAiBxzF,EAAO1pR,EAASikB,EAAMgB,IAKhE5pB,EAAQozE,SAAW,CAAEi7M,GAEd,CACHruR,QAASA,EACT+mX,WAAYA,GAiDpB,SAAS2B,EAAO/jX,GACZ,OAAOm+W,EAAWj9W,KAAKlB,EAAQ,GAAGskB,SAoHtC,SAASu/V,EAAe58V,EAAQyiQ,EAAOs0F,GACnC,GAAIlpX,MAAMgpB,GAAG4nW,iBAAmBz+V,aAAkBnyB,MAAMgpB,GAAG4nW,gBAAiB,CACxE,IAEIC,EAFAC,EAAoB5H,EAASj/W,MAAM,KACnC8mX,EAAwBD,EAAkB,GAAGjuV,OAYjD,OATAksV,EAAe58V,EAAO6+V,gBAAiBp8F,EAAOm8F,QAC1CD,EAAkB,IAClBD,EAAsBC,EAAkB,GAAGjuV,OAC3CksV,EAAe58V,EAAO8+V,cAAer8F,EAAOi8F,GAC5C1+V,EAAO8gC,MAAM,CAAEt+C,MAAOigR,EAAMm8F,GAAwB/lX,IAAK4pR,EAAMi8F,MAE/D1+V,EAAO8gC,MAAM,CAAEt+C,MAAOigR,EAAMm8F,GAAwB/lX,IAAK,QAMjE,GAA2B,mBAAhBmnB,EAAOpqB,MAAlB,CAKA,IAAIs+B,EAAOrkC,EAAEmwB,EAAOjnB,SAASwsB,QAAQ,iBAAiBnuB,QAClD4jX,EAASntX,MAAMmuB,OAAOkY,EAAKlkB,KAAK,SAAS,EAAhCniB,CAAsC40R,GAC/CzmQ,EAAS85V,EAAOiB,GAChB96V,EAASD,EAAOpuB,OAChBmxX,GAAW,EAEXC,EAAoBnxX,MAAMgpB,GAAG0mD,aAAev9C,aAAkBnyB,MAAMgpB,GAAG0mD,aACnD1vE,MAAMgpB,GAAGooW,aAAej/V,aAAkBnyB,MAAMgpB,GAAGooW,YAEvEvqX,EAAS,SAASkB,GAElB,OAAOA,GAASopX,EAAoBppX,EAAMlB,OAAS,GAGnDwqX,EAAqBxqX,EAAOsnB,EAAOymQ,IAEvCziQ,EAAOm/V,uBAAuBnjW,EAAOymQ,IAGrC,IAAI28F,EAAe,SAAS9+S,EAAU0uJ,GAC9B1uJ,IAAaxwE,IAIbwwE,EAAW,MAIXy+S,GAAaz+S,GAAY0uJ,GAAYt6N,EAAO4rE,IAAa4+S,IAI7DA,EAAqBxqX,EAAO4rE,GAC5BtgD,EAAOm/V,uBAAuB7+S,KAG9B0+S,EACAv8F,EAAM48F,iBAAiBtI,EAAUqI,GAEjC38F,EAAMg0F,OAAOM,EAAUqI,GAG3B,IAAIE,EAAgB,WAChBP,GAAW,EAEP/D,GAAUA,EAAOqC,WACjBrC,EAAOuE,YAGXvF,EAAOv3F,GAAO,WACVxmQ,EAAOwmQ,EAAOziQ,EAAOw/V,0BACrBN,EAAqBxqX,EAAOsnB,EAAOymQ,OAGvCs8F,GAAW,GAGf/+V,EAAO5oB,MAAM,SAAUkoX,GACvBt/V,EAAO5oB,MAAM,OAAQkoX,QA9DjBtJ,EAAKl4W,KAAK,2EAA8EkiB,EAAO5rB,QAAY,MAuMnH,SAASsC,EAAK2jD,EAAGngC,GACb,OAAO,SAAS9nB,EAAGigB,GACf,OAAOgoC,EAAE5iD,KAAKyiB,EAAK9nB,EAAGigB,IAI9B,SAASolW,EAAYh5W,EAAK7I,GACtB1I,KAAKuR,GAAO5Q,MAAM6R,UAAU9J,GA0KhC,SAASokX,EAAOv3F,EAAOh9N,GACnB,IAAI9a,EAAO83O,EAAM64F,OAAS74F,EACtBg9F,EAAc,qBAAqBxlX,KAAK0wC,EAAK8wU,SAC7Ch2T,EACIg6T,EACAh6T,IAEA9a,EAAK+wU,OAAOj2T,GAERg6T,GACR90U,EAAK+0U,UAmCb,SAAS9G,EAAUC,EAAO5zS,EAAYxf,GAClC,GAAIr1D,MAAMD,QAAQ0oX,GACd,OAAO96V,EAAQvvB,QAAQqqX,GAAO,SAASA,GACnCD,EAAUC,EAAO5zS,EAAYxf,MAGrC,GAAoB,iBAATozT,EAAmB,CAG1B,IAFA,IAAIzmX,EAAIymX,EAAM/gX,MAAM,KAChBxF,EAAIzE,MACDyE,GAAKF,EAAEsC,OAAS,GACnBpC,EAAIA,EAAEF,EAAE2Q,SAEZ,IAAKzQ,EAED,OADAqmX,EAAe9pX,KAAK,CAAEgqX,EAAO5zS,EAAYxf,KAClC,EAEXozT,EAAQvmX,EAAEiD,UAEd,IAAIoqX,EAAa9G,EAAM5zS,GAUvB,OATA4zS,EAAM5zS,GAAc,WAChB,IAAIl4E,EAAOG,KAAMm3B,EAAO9vB,UACxB,OAAOkxD,EAAKnwD,MAAM,CACdvI,KAAMA,EACNwlE,KAAM,WACF,OAAOotT,EAAWrqX,MAAMvI,EAAMwH,UAAUG,OAAS,EAAIH,UAAY8vB,KAEtEA,KAEA,GA96Bf,CAqvCGr2B,OAAOH,MAAM+G,OAAQ5G,OAAO+vB,SAGjBlwB","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :\n typeof define === 'function' && define.amd ? define(['jquery'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodataviz = global.kendodataviz || {}, global.kendodataviz.js = factory()));\n})(this, (function () {\n var breakpoints;\n var EVENT = \"change\";\n\n var defaultBreakpoints = {\n small: \"(max-width: 500px)\",\n medium: \"(min-width: 500.1px) and (max-width: 768px)\",\n large: \"(min-width: 768.1px)\",\n };\n\n function createMediaQuery(query) {\n var mediaQueryList = window.matchMedia(query);\n var onEnterCallbacks = [];\n var onLeaveCallbacks = [];\n var onChangeHandlers = [];\n var kendoMediaQuery = { mediaQueryList: mediaQueryList };\n\n var onChangeHandler = function (ev) {\n onChangeHandlers.forEach(function (cb) { return cb(ev); });\n\n if (ev.matches) {\n onEnterCallbacks.forEach(function (cb) { return cb(ev); });\n } else {\n onLeaveCallbacks.forEach(function (cb) { return cb(ev); });\n }\n };\n\n mediaQueryList.addEventListener(EVENT, onChangeHandler);\n\n var onChange = function (cb) {\n onChangeHandlers.push(cb);\n return kendoMediaQuery;\n };\n\n var onEnter = function (cb) {\n onEnterCallbacks.push(cb);\n\n if (mediaQueryList.matches) {\n var media = mediaQueryList.media;\n var matches = true;\n\n var ev = new MediaQueryListEvent(EVENT, {\n media: media,\n matches: matches,\n });\n\n cb(ev);\n }\n\n return kendoMediaQuery;\n };\n\n var onLeave = function (cb) {\n onLeaveCallbacks.push(cb);\n return kendoMediaQuery;\n };\n\n var destroy = function () {\n if (mediaQueryList) {\n mediaQueryList.removeEventListener(EVENT, onChangeHandler);\n }\n onEnterCallbacks = null;\n onLeaveCallbacks = null;\n onChangeHandlers = null;\n mediaQueryList = null;\n kendoMediaQuery = null;\n };\n\n kendoMediaQuery.onChange = onChange;\n kendoMediaQuery.onEnter = onEnter;\n kendoMediaQuery.onLeave = onLeave;\n kendoMediaQuery.destroy = destroy;\n\n return kendoMediaQuery;\n }\n\n function mediaQuery(query) {\n if (!query) {\n return;\n }\n\n breakpoints =\n breakpoints ||\n Object.assign({}, defaultBreakpoints, kendo.defaults.breakpoints);\n\n if (query in breakpoints) {\n query = breakpoints[query];\n }\n\n return createMediaQuery(query);\n }\n\n var __meta__$X = {\n id: \"core\",\n name: \"Core\",\n category: \"framework\",\n description: \"The core of the Kendo framework.\"\n };\n\n var packageMetadata = {\n name: '@progress/kendo-ui',\n productName: 'Kendo UI',\n productCodes: ['KENDOUICOMPLETE', 'KENDOUI', 'KENDOUI', 'KENDOUICOMPLETE'],\n publishDate: 0,\n version: '2023.2.829'.replace(/^\\s+|\\s+$/g, ''),\n licensingDocsUrl: 'https://docs.telerik.com/kendo-ui/intro/installation/using-license-code'\n };\n\n\n (function($, window, undefined$1) {\n var kendo = window.kendo = window.kendo || { cultures: {} },\n extend = $.extend,\n each = $.each,\n isArray = Array.isArray,\n noop = $.noop,\n math = Math,\n Template,\n JSON = window.JSON || {},\n support = {},\n percentRegExp = /%/,\n formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g,\n boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i,\n numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/,\n MONTH = \"month\",\n HOUR = \"hour\",\n ZONE = \"zone\",\n WEEKDAY = \"weekday\",\n QUARTER = \"quarter\",\n DATE_FIELD_MAP = {\n \"G\": \"era\",\n \"y\": \"year\",\n \"q\": QUARTER,\n \"Q\": QUARTER,\n \"M\": MONTH,\n \"L\": MONTH,\n \"d\": \"day\",\n \"E\": WEEKDAY,\n \"c\": WEEKDAY,\n \"e\": WEEKDAY,\n \"h\": HOUR,\n \"H\": HOUR,\n \"k\": HOUR,\n \"K\": HOUR,\n \"m\": \"minute\",\n \"s\": \"second\",\n \"a\": \"dayperiod\",\n \"t\": \"dayperiod\",\n \"x\": ZONE,\n \"X\": ZONE,\n \"z\": ZONE,\n \"Z\": ZONE\n },\n NAME_TYPES = {\n month: {\n type: \"months\",\n minLength: 3,\n standAlone: \"L\"\n },\n\n quarter: {\n type: \"quarters\",\n minLength: 3,\n standAlone: \"q\"\n },\n\n weekday: {\n type: \"days\",\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: \"c\"\n },\n\n dayperiod: {\n type: \"dayPeriods\",\n minLength: 0\n },\n\n era: {\n type: \"eras\",\n minLength: 0\n }\n },\n FUNCTION = \"function\",\n STRING = \"string\",\n NUMBER = \"number\",\n OBJECT = \"object\",\n NULL = \"null\",\n BOOLEAN = \"boolean\",\n UNDEFINED = \"undefined\",\n PREFIX = \"prefix\",\n ARIA_LABELLEDBY = \"aria-labelledby\",\n ARIA_LABEL = \"aria-label\",\n LABELIDPART = \"_label\",\n getterCache = {},\n setterCache = {},\n slice = [].slice,\n cssPropertiesNames = [ \"themeColor\", \"fillMode\", \"shape\", \"size\", \"rounded\", \"positionMode\" ],\n // avoid extending the depricated properties in latest verions of jQuery\n noDepricateExtend = function() {\n var arguments$1 = arguments;\n\n var src, copyIsArray, copy, name, options, clone,\n target = arguments[ 0 ] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if ( typeof target === \"boolean\" ) {\n deep = target;\n\n // skip the boolean and the target\n target = arguments[ i ] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if ( typeof target !== \"object\" && typeof target !== \"function\") {\n target = {};\n }\n\n // extend jQuery itself if only one argument is passed\n if ( i === length ) {\n target = this;\n i--;\n }\n\n for ( ; i < length; i++ ) {\n\n // Only deal with non-null/undefined values\n if ( ( options = arguments$1[ i ] ) != null ) {\n\n // Extend the base object\n for ( name in options ) {\n // filters, concat and : properties are depricated in the jQuery 3.3.0\n // accessing these properties throw a warning when jQuery migrate is included\n if (name == \"filters\" || name == \"concat\" || name == \":\") {\n continue;\n }\n src = target[ name ];\n copy = options[ name ];\n\n // Prevent never-ending loop\n if ( target === copy ) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n ( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n if ( copyIsArray ) {\n copyIsArray = false;\n clone = src && Array.isArray( src ) ? src : [];\n\n } else {\n clone = src && jQuery.isPlainObject( src ) ? src : {};\n }\n\n // Never move original objects, clone them\n target[ name ] = noDepricateExtend( deep, clone, copy );\n\n // Don't bring in undefined values\n } else if ( copy !== undefined$1 ) {\n target[ name ] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n\n kendo.version = \"2023.2.829\".replace(/^\\s+|\\s+$/g, '');\n\n function Class() {}\n\n Class.extend = function(proto) {\n var base = function() {},\n member,\n that = this,\n subclass = proto && proto.init ? proto.init : function() {\n that.apply(this, arguments);\n },\n fn;\n\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n // Merge object members\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n\n fn.constructor = subclass;\n subclass.extend = that.extend;\n\n return subclass;\n };\n\n Class.prototype._initOptions = function(options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n var isPresent = kendo.isPresent = function (value) { return value !== null && value !== undefined$1; };\n var isBlank = kendo.isBlank = function (value) { return value === null || value === undefined$1; };\n var isString = kendo.isString = function (value) { return typeof value === 'string'; };\n var isNumeric = kendo.isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n var isDate = kendo.isDate = function (value) { return value && value.getTime; };\n var isFunction = kendo.isFunction = function (value) { return typeof value === 'function'; };\n\n var preventDefault = function() {\n this._defaultPrevented = true;\n };\n\n var isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n };\n\n var Observable = Class.extend({\n init: function() {\n this._events = {};\n },\n\n bind: function(eventName, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined$1) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n if (one) {\n original = handler;\n handler = function() {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n\n return that;\n },\n\n one: function(eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n\n first: function(eventName, handlers) {\n var that = this,\n idx,\n eventNames = typeof eventName === STRING ? [eventName] : eventName,\n length,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName];\n\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n },\n\n trigger: function(eventName, e) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n e = e || {};\n\n e.sender = that;\n\n e._defaultPrevented = false;\n\n e.preventDefault = preventDefault;\n\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n },\n\n unbind: function(eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined$1) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n\n return that;\n }\n });\n\n\n function compilePart(part, stringPart) {\n if (stringPart) {\n return \"'\" +\n part.split(\"'\").join(\"\\\\'\")\n .split('\\\\\"').join('\\\\\\\\\\\\\"')\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/\\t/g, \"\\\\t\") + \"'\";\n } else {\n var first = part.charAt(0),\n rest = part.substring(1);\n\n if (first === \"=\") {\n return \"+(\" + rest + \")+\";\n } else if (first === \":\") {\n return \"+$kendoHtmlEncode(\" + rest + \")+\";\n } else {\n return \";\" + part + \";$kendoOutput+=\";\n }\n }\n }\n\n var argumentNameRegExp = /^\\w+/,\n encodeRegExp = /\\$\\{([^}]*)\\}/g,\n escapedCurlyRegExp = /\\\\\\}/g,\n curlyRegExp = /__CURLY__/g,\n escapedSharpRegExp = /\\\\#/g,\n sharpRegExp = /__SHARP__/g,\n zeros = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n\n Template = {\n paramName: \"data\", // name of the parameter of the generated template\n useWithBlock: true, // whether to wrap the template in a with() block\n render: function(template, data) {\n var idx,\n length,\n html = \"\";\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n\n return html;\n },\n compile: function(template, options) {\n var settings = extend({}, this, options),\n paramName = settings.paramName,\n argumentName = paramName.match(argumentNameRegExp)[0],\n useWithBlock = settings.useWithBlock,\n functionBody = \"var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;\",\n fn,\n parts,\n idx;\n\n if (isFunction(template)) {\n return template;\n }\n\n functionBody += useWithBlock ? \"with(\" + paramName + \"){\" : \"\";\n\n functionBody += \"$kendoOutput=\";\n\n parts = template\n .replace(escapedCurlyRegExp, \"__CURLY__\")\n .replace(encodeRegExp, \"#=$kendoHtmlEncode($1)#\")\n .replace(curlyRegExp, \"}\")\n .replace(escapedSharpRegExp, \"__SHARP__\")\n .split(\"#\");\n\n for (idx = 0; idx < parts.length; idx ++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n\n functionBody += useWithBlock ? \";}\" : \";\";\n\n functionBody += \"return $kendoOutput;\";\n\n functionBody = functionBody.replace(sharpRegExp, \"#\");\n\n try {\n // This function evaluation is required for legacy support of the Kendo Template syntax - non CSP compliant.\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n if (kendo.debugTemplates) {\n window.console.warn((\"Invalid template:'\" + template + \"' Generated code:'\" + functionBody + \"'\"));\n } else {\n throw new Error(kendo.format(\"Invalid template:'{0}' Generated code:'{1}'\", template, functionBody));\n }\n }\n }\n };\n\n function pad(number, digits, end) {\n number = number + \"\";\n digits = digits || 2;\n end = digits - number.length;\n\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n\n return number;\n }\n\n //JSON stringify\n (function() {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = {\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": '\\\\\"',\n \"\\\\\": \"\\\\\\\\\"\n },\n rep,\n toString = {}.toString;\n\n\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n\n Date.prototype.toJSON = function() {\n var that = this;\n\n return isFinite(that.valueOf()) ?\n pad(that.getUTCFullYear(), 4) + \"-\" +\n pad(that.getUTCMonth() + 1) + \"-\" +\n pad(that.getUTCDate()) + \"T\" +\n pad(that.getUTCHours()) + \":\" +\n pad(that.getUTCMinutes()) + \":\" +\n pad(that.getUTCSeconds()) + \"Z\" : null;\n };\n\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {\n return this.valueOf();\n };\n }\n\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? \"\\\"\" + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === STRING ? c :\n \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\" : \"\\\"\" + string + \"\\\"\";\n }\n\n function str(key, holder) {\n var i,\n k,\n v,\n length,\n mind = gap,\n partial,\n value = holder[key],\n type;\n\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === \"[object Array]\") {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? \"[]\" : gap ?\n \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\" :\n \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n\n v = partial.length === 0 ? \"{}\" : gap ?\n \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\" :\n \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function(value, replacer, space) {\n var i;\n gap = \"\";\n indent = \"\";\n\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n } else if (typeof space === STRING) {\n indent = space;\n }\n\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error(\"JSON.stringify\");\n }\n\n return str(\"\", { \"\": value });\n };\n }\n })();\n\n // Date and Number formatting\n (function() {\n var dateFormatRegExp = /EEEE|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g,\n standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i,\n literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g,\n commaRegExp = /\\,/g,\n EMPTY = \"\",\n POINT = \".\",\n COMMA = \",\",\n SHARP = \"#\",\n ZERO = \"0\",\n PLACEHOLDER = \"??\",\n EN = \"en-US\",\n objectToString = {}.toString;\n\n //cultures\n kendo.cultures = kendo.cultures || {}; // Ensure cultures object exists\n kendo.cultures[\"en-US\"] = {\n name: EN,\n numberFormat: {\n pattern: [\"-n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n percent: {\n pattern: [\"-n %\", \"n %\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"%\"\n },\n currency: {\n name: \"US Dollar\",\n abbr: \"USD\",\n pattern: [\"($n)\", \"$n\"],\n decimals: 2,\n \",\": \",\",\n \".\": \".\",\n groupSize: [3],\n symbol: \"$\"\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n namesAbbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n namesShort: [ \"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\" ]\n },\n months: {\n names: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n namesAbbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n },\n AM: [ \"AM\", \"am\", \"AM\" ],\n PM: [ \"PM\", \"pm\", \"PM\" ],\n patterns: {\n d: \"M/d/yyyy\",\n D: \"dddd, MMMM dd, yyyy\",\n F: \"dddd, MMMM dd, yyyy h:mm:ss tt\",\n g: \"M/d/yyyy h:mm tt\",\n G: \"M/d/yyyy h:mm:ss tt\",\n m: \"MMMM dd\",\n M: \"MMMM dd\",\n s: \"yyyy'-'MM'-'ddTHH':'mm':'ss\",\n t: \"h:mm tt\",\n T: \"h:mm:ss tt\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\",\n y: \"MMMM, yyyy\",\n Y: \"MMMM, yyyy\"\n },\n \"/\": \"/\",\n \":\": \":\",\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n\n\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split(\"-\")[0]] || null;\n }\n\n return null;\n }\n\n return null;\n }\n\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n\n return culture || kendo.cultures.current;\n }\n\n kendo.culture = function(cultureName) {\n var cultures = kendo.cultures, culture;\n\n if (cultureName !== undefined$1) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n return cultures.current;\n }\n };\n\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n\n //set current culture to en-US.\n kendo.culture(EN);\n\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n\n var calendar = culture.calendars.standard,\n days = calendar.days,\n months = calendar.months;\n\n format = format.pattern || calendar.patterns[format] || format;\n\n return format.replace(dateFormatRegExp, function(match) {\n var minutes;\n var result;\n var sign;\n\n if (match === \"d\") {\n result = date.getDate();\n } else if (match === \"dd\") {\n result = pad(date.getDate());\n } else if (match === \"ddd\") {\n result = days.namesAbbr[date.getDay()];\n } else if (match === \"dddd\" || match === \"EEEE\") {\n result = days.names[date.getDay()];\n } else if (match === \"M\") {\n result = date.getMonth() + 1;\n } else if (match === \"MM\") {\n result = pad(date.getMonth() + 1);\n } else if (match === \"MMM\") {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === \"MMMM\") {\n result = months.names[date.getMonth()];\n } else if (match === \"yy\") {\n result = pad(date.getFullYear() % 100);\n } else if (match === \"yyyy\") {\n result = pad(date.getFullYear(), 4);\n } else if (match === \"h\" ) {\n result = date.getHours() % 12 || 12;\n } else if (match === \"hh\") {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === \"H\") {\n result = date.getHours();\n } else if (match === \"HH\") {\n result = pad(date.getHours());\n } else if (match === \"m\") {\n result = date.getMinutes();\n } else if (match === \"mm\") {\n result = pad(date.getMinutes());\n } else if (match === \"s\") {\n result = date.getSeconds();\n } else if (match === \"ss\") {\n result = pad(date.getSeconds());\n } else if (match === \"f\") {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === \"ff\") {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === \"fff\") {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === \"tt\" || match === \"aa\") {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === \"zzz\") {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n\n result = math.abs(minutes / 60).toString().split(\".\")[0];\n minutes = math.abs(minutes) - (result * 60);\n\n result = (sign ? \"+\" : \"-\") + pad(result);\n result += \":\" + pad(minutes);\n } else if (match === \"zz\" || match === \"z\") {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n\n result = math.abs(result).toString().split(\".\")[0];\n result = (sign ? \"+\" : \"-\") + (match === \"zz\" ? pad(result) : result);\n }\n\n return result !== undefined$1 ? result : match.slice(1, match.length - 1);\n });\n }\n\n //number formatting\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n\n var numberFormat = culture.numberFormat,\n decimal = numberFormat[POINT],\n precision = numberFormat.decimals,\n pattern = numberFormat.pattern[0],\n literals = [],\n symbol,\n isCurrency, isPercent,\n customPrecision,\n formatAndPrecision,\n negative = number < 0,\n integer,\n fraction,\n integerLength,\n fractionLength,\n replacement = EMPTY,\n value = EMPTY,\n idx,\n length,\n ch,\n hasGroup,\n hasNegativeFormat,\n decimalIndex,\n sharpIndex,\n zeroIndex,\n hasZero, hasSharp,\n percentIndex,\n currencyIndex,\n startZeroIndex,\n start = -1,\n end;\n\n //return empty string if no number\n if (number === undefined$1) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return number;\n }\n\n //if no format then return number.toString() or number.toLocaleString() if culture.name is not defined\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n\n formatAndPrecision = standardFormatRegExp.exec(format);\n\n // standard formatting\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n\n isCurrency = format === \"c\";\n isPercent = format === \"p\";\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n\n customPrecision = formatAndPrecision[2];\n\n if (customPrecision) {\n precision = +customPrecision;\n }\n\n //return number in exponential format\n if (format === \"e\") {\n var exp = customPrecision ? number.toExponential(precision) : number.toExponential(); // toExponential() and toExponential(undefined) differ in FF #653438.\n\n return exp.replace(POINT, numberFormat[POINT]);\n }\n\n // multiply if format is percent\n if (isPercent) {\n number *= 100;\n }\n\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n\n integer = number[0];\n fraction = number[1];\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n value = groupInteger(integer, 0, integer.length, numberFormat);\n\n if (fraction) {\n value += decimal + fraction;\n }\n\n if (format === \"n\" && !negative) {\n return value;\n }\n\n number = EMPTY;\n\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n\n if (ch === \"n\") {\n number += value;\n } else if (ch === \"$\" || ch === \"%\") {\n number += symbol;\n } else {\n number += ch;\n }\n }\n\n return number;\n }\n\n //custom formatting\n //\n //separate format by sections.\n\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", \"\"),\n literal = match.slice(1).replace(quoteChar, \"\");\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n\n format = format.split(\";\");\n if (negative && format[1]) {\n //get negative format\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0 && format[2]) {\n //format for zeros\n format = format[2];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n //return format if it is string constant.\n return format;\n }\n } else {\n format = format[0];\n }\n\n percentIndex = format.indexOf(\"%\");\n currencyIndex = format.indexOf(\"$\");\n\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n\n //multiply number if the format has percent\n if (isPercent) {\n number *= 100;\n }\n\n if (isCurrency && format[currencyIndex - 1] === \"\\\\\") {\n format = format.split(\"\\\\\").join(\"\");\n isCurrency = false;\n }\n\n if (isCurrency || isPercent) {\n //get specific number format information if format is currency or percent\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n\n if (decimalIndex != -1) {\n fraction = number.toString().split(\"e\");\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n var rounded = round(number, sharpIndex, negative);\n\n while (rounded.charAt(rounded.length - 1) === ZERO && sharpIndex > 0 && sharpIndex > zeroIndex) {\n sharpIndex--;\n\n rounded = round(number, sharpIndex, negative);\n }\n\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n }\n\n number = round(number, idx, negative);\n\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n\n //define the index of the first digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n //define the index of the last digit placeholder\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n\n if (start == length) {\n end = start;\n }\n\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n\n integerLength = integer.length;\n fractionLength = fraction.length;\n\n if (negative && (number * -1) >= 0) {\n negative = false;\n }\n\n number = format.substring(0, start);\n\n if (negative && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), numberFormat);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n //replace symbol placeholders\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += (ch === \"$\" || ch === \"%\") ? symbol : ch;\n }\n number = value;\n }\n\n length = literals.length;\n\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n\n return number;\n }\n\n var groupInteger = function(number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n integer = number.substring(start, end);\n integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined$1 ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n if (idx > 0) {\n parts.push(integer.substring(0, idx));\n }\n break;\n }\n }\n\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n\n return number;\n };\n\n var round = function(value, precision, negative) {\n precision = precision || 0;\n\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + precision) : precision)));\n\n if (negative) {\n value = -value;\n }\n\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? (+value[1] - precision) : -precision));\n\n return value.toFixed(Math.min(precision, 20));\n };\n\n var toString = function(value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === \"[object Date]\") {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n\n return value !== undefined$1 ? value : \"\";\n };\n\n kendo.format = function(fmt) {\n var values = arguments;\n\n return fmt.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\");\n });\n };\n\n kendo._extractFormat = function(format) {\n if (format.slice(0,3) === \"{0:\") {\n format = format.slice(3, format.length - 1);\n }\n\n return format;\n };\n\n kendo._activeElement = function() {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n\n kendo._round = round;\n kendo._outerWidth = function(element, includeMargin) { return $(element).outerWidth(includeMargin || false) || 0; };\n kendo._outerHeight = function(element, includeMargin) { return $(element).outerHeight(includeMargin || false) || 0; };\n kendo.toString = toString;\n })();\n\n\n (function() {\n var nonBreakingSpaceRegExp = /\\u00A0/g,\n spaceRegExp = /\\s/g,\n exponentRegExp = /[eE][\\-+]?[0-9]+/,\n shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/,\n longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n offsetRegExp = /[+-]\\d*/,\n FORMATS_SEQUENCE = [ [], [ \"G\", \"g\", \"F\" ], [ \"D\", \"d\", \"y\", \"m\", \"T\", \"t\" ] ],\n STANDARD_FORMATS = [\n [\n \"yyyy-MM-ddTHH:mm:ss.fffffffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fffffff\",\n \"yyyy-MM-ddTHH:mm:ss.fffzzz\",\n \"yyyy-MM-ddTHH:mm:ss.fff\",\n \"ddd MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:sszzz\",\n \"yyyy-MM-ddTHH:mmzzz\",\n \"yyyy-MM-ddTHH:mmzz\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm:ss\"\n ], [\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy/MM/dd HH:mm\"\n ], [\n \"yyyy/MM/dd\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n ]\n ],\n numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n },\n objectToString = {}.toString;\n\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n\n //if date's day is different than the typed one - adjust\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n\n function lowerArray(data) {\n var idx = 0,\n length = data.length,\n array = [];\n\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + \"\").toLowerCase();\n }\n\n return array;\n }\n\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n\n return newLocalInfo;\n }\n\n function parseExact(value, format, culture, strict) {\n if (!value) {\n return null;\n }\n\n var lookAhead = function(match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n },\n getNumber = function(size) {\n var rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}'),\n match = value.substr(valueIdx, size).match(rg);\n\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n },\n getIndexByName = function(names, lower) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = value.substr(valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n },\n checkLiteral = function() {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n },\n calendar = culture.calendars.standard,\n year = null,\n month = null,\n day = null,\n hours = null,\n minutes = null,\n seconds = null,\n milliseconds = null,\n idx = 0,\n valueIdx = 0,\n literal = false,\n date = new Date(),\n twoDigitYearMax = calendar.twoDigitYearMax || 2029,\n defaultYear = date.getFullYear(),\n ch, count, length, pattern,\n pmHour, UTC, matches,\n amDesignators, pmDesignators,\n hoursOffset, minutesOffset,\n hasTime, match;\n\n if (!format) {\n format = \"d\"; //shord date format\n }\n\n //if format is part of the patterns get real format\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n\n format = format.split(\"\");\n length = format.length;\n\n for (; idx < length; idx++) {\n ch = format[idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === \"d\") {\n count = lookAhead(\"d\");\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n\n if (day !== null && count > 2) {\n continue;\n }\n\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? \"namesAbbr\" : \"names\"], true);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === \"M\") {\n count = lookAhead(\"M\");\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1; //because month is zero based\n } else if (ch === \"y\") {\n count = lookAhead(\"y\");\n year = getNumber(count);\n\n if (year === null) {\n return null;\n }\n\n if (count == 2) {\n if (typeof twoDigitYearMax === \"string\") {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n\n year = (defaultYear - defaultYear % 100) + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === \"h\" ) {\n lookAhead(\"h\");\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === \"H\") {\n lookAhead(\"H\");\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === \"m\") {\n lookAhead(\"m\");\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === \"s\") {\n lookAhead(\"s\");\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === \"f\") {\n count = lookAhead(\"f\");\n\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count); //move value index position\n\n if (milliseconds !== null) {\n milliseconds = parseFloat(\"0.\" + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n\n } else if (ch === \"t\") {\n count = lookAhead(\"t\");\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n\n pmHour = getIndexByName(pmDesignators);\n if (!pmHour && !getIndexByName(amDesignators)) {\n return null;\n }\n }\n else if (ch === \"z\") {\n UTC = true;\n count = lookAhead(\"z\");\n\n if (value.substr(valueIdx, 1) === \"Z\") {\n checkLiteral();\n continue;\n }\n\n matches = value.substr(valueIdx, 6)\n .match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n\n if (!matches) {\n return null;\n }\n\n matches = matches[0].split(\":\");\n\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n\n if (!minutesOffset && hoursOffset.length > 3) { //(+|-)[hh][mm] format is used\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n\n if (count > 2) {\n minutesOffset = matches[0][0] + minutesOffset;\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, -59, 59)) {\n return null;\n }\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n\n // if more characters follow, assume wrong format\n // https://github.com/telerik/kendo-ui-core/issues/3476\n if (strict && !/^\\s*$/.test(value.substr(valueIdx))) {\n return null;\n }\n\n hasTime = hours !== null || minutes !== null || seconds || null;\n\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset;\n }\n\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n\n if (year < 100) {\n value.setFullYear(year);\n }\n\n if (value.getDate() !== day && UTC === undefined$1) {\n return null;\n }\n\n return value;\n }\n\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n offset = offset.substring(1);\n offset = (parseInt(offset.substr(0, 2), 10) * 60) + parseInt(offset.substring(2), 10);\n\n return sign * offset;\n }\n\n function getDefaultFormats(culture) {\n var length = math.max(FORMATS_SEQUENCE.length, STANDARD_FORMATS.length);\n var calendar = culture.calendar || culture.calendars.standard;\n var patterns = calendar.patterns;\n var cultureFormats, formatIdx, idx;\n var formats = [];\n\n for (idx = 0; idx < length; idx++) {\n cultureFormats = FORMATS_SEQUENCE[idx];\n for (formatIdx = 0; formatIdx < cultureFormats.length; formatIdx++) {\n formats.push(patterns[cultureFormats[formatIdx]]);\n }\n formats = formats.concat(STANDARD_FORMATS[idx]);\n }\n\n return formats;\n }\n\n function internalParseDate(value, formats, culture, strict) {\n if (objectToString.call(value) === \"[object Date]\") {\n return value;\n }\n\n var idx = 0;\n var date = null;\n var length;\n var tzoffset;\n\n if (value && value.indexOf(\"/D\") === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n\n culture = kendo.getCulture(culture);\n\n if (!formats) {\n formats = getDefaultFormats(culture);\n }\n\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture, strict);\n if (date) {\n return date;\n }\n }\n\n return date;\n }\n\n kendo.parseDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, false);\n };\n\n kendo.parseExactDate = function(value, formats, culture) {\n return internalParseDate(value, formats, culture, true);\n };\n\n kendo.parseInt = function(value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n\n kendo.parseFloat = function(value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n\n if (typeof value === NUMBER) {\n return value;\n }\n\n value = value.toString();\n culture = kendo.getCulture(culture);\n\n var number = culture.numberFormat,\n percent = number.percent,\n currency = number.currency,\n symbol = currency.symbol,\n percentSymbol = percent.symbol,\n negative = value.indexOf(\"-\"),\n parts, isPercent;\n\n //handle exponential number\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number[\".\"], \".\"));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n\n if (value.indexOf(symbol) > -1 || (format && format.toLowerCase().indexOf(\"c\") > -1)) {\n number = currency;\n parts = number.pattern[0].replace(\"$\", symbol).split(\"n\");\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], \"\").replace(parts[1], \"\");\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n\n value = value.replace(\"-\", \"\")\n .replace(symbol, \"\")\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(number[\",\"].replace(nonBreakingSpaceRegExp, \" \")).join(\"\")\n .replace(spaceRegExp, \"\")\n .replace(number[\".\"], \".\");\n\n value = parseFloat(value);\n\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n\n if (value && isPercent) {\n value /= 100;\n }\n\n return value;\n };\n })();\n\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + \"box-shadow\") || element.css(\"box-shadow\"),\n radius = shadow ? shadow.match(boxShadowRegExp) || [ 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0 ],\n blur = math.max((+radius[3]), +(radius[4] || 0));\n\n return {\n left: (-radius[1]) + blur,\n right: (+radius[1]) + blur,\n bottom: (+radius[2]) + blur\n };\n }\n\n function wrap(element, autosize, resize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n windowOuterWidth = outerWidth(window);\n\n parent.parent().removeClass(\"k-animation-container-sm\");\n\n if (!parent.hasClass(\"k-child-animation-container\")) {\n var width = element[0].style.width,\n height = element[0].style.height,\n percentWidth = percentRegExp.test(width),\n percentHeight = percentRegExp.test(height),\n forceWidth = element.hasClass(\"k-tooltip\") || element.is(\".k-menu-horizontal.k-context-menu\");\n\n percentage = percentWidth || percentHeight;\n\n if (!percentWidth && (!autosize || (autosize && width) || forceWidth)) { width = autosize ? outerWidth(element) + 1 : outerWidth(element); }\n if (!percentHeight && (!autosize || (autosize && height)) || element.is(\".k-menu-horizontal.k-context-menu\")) { height = outerHeight(element); }\n\n element.wrap(\n $(\"
\")\n .addClass(\"k-child-animation-container\")\n .css({\n width: width,\n height: height\n }));\n parent = element.parent();\n\n parent.wrap(\n $(\"
\")\n .addClass(\"k-animation-container\")\n .attr(\"role\", \"region\")\n );\n\n if (percentage) {\n element.css({\n width: \"100%\",\n height: \"100%\"\n });\n }\n } else {\n wrapResize(element, autosize);\n }\n\n parent = parent.parent();\n\n if (windowOuterWidth < outerWidth(parent)) {\n parent.addClass(\"k-animation-container-sm\");\n resize = true;\n }\n\n if (resize) {\n wrapResize(element, autosize);\n }\n\n return parent;\n }\n\n function wrapResize(element, autosize) {\n var percentage,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n parent = element.parent(),\n wrapper = element.closest(\".k-animation-container\"),\n visible = element.is(\":visible\"),\n wrapperStyle = parent[0].style,\n elementHeight = element[0].style.height;\n\n if (wrapper.is(\":hidden\")) {\n wrapper.css({\n display: \"\",\n position: \"\"\n });\n }\n\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n\n if (!percentage) {\n if (!visible) {\n element.add(parent).show();\n }\n parent.css(\"width\", \"\"); // Needed to get correct width dimensions\n parent.css({\n width: autosize ? outerWidth(element) + 1 : outerWidth(element),\n });\n\n if (elementHeight === \"auto\") {\n element.css({ height: outerHeight(parent) });\n } else {\n parent.css({\n height: outerHeight(element)\n });\n }\n\n if (!visible) {\n element.hide();\n }\n }\n }\n\n function deepExtend(destination) {\n var arguments$1 = arguments;\n\n var i = 1,\n length = arguments.length;\n\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments$1[i]);\n }\n\n return destination;\n }\n\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray,\n LazyObservableArray = kendo.data.LazyObservableArray,\n DataSource = kendo.data.DataSource,\n HierarchicalDataSource = kendo.data.HierarchicalDataSource,\n property,\n propValue,\n propType,\n propInit,\n destProp;\n\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit &&\n propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray &&\n propInit !== DataSource && propInit !== HierarchicalDataSource && propInit !== RegExp &&\n (!kendo.isFunction(window.ArrayBuffer) || propInit !== ArrayBuffer) && !(propValue instanceof HTMLElement)) {\n\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n destProp = destination[property];\n if (typeof (destProp) === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n\n return destination;\n }\n\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined$1 ? dflt : agent;\n }\n\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function(strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, \"\");\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n\n if (properties) {\n $.each(properties, function(idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n\n return styles;\n }\n\n function isScrollable(element) {\n if (element.dataset[kendo.ns + \"scrollable\"] === \"false\") {\n return false;\n }\n\n if (element && element.className && typeof(element.className) === \"string\" && element.className.indexOf(\"k-auto-scrollable\") > -1) {\n return true;\n }\n\n var overflow = getComputedStyles(element, [\"overflow\"]).overflow;\n return overflow.indexOf(\"auto\") > -1 || overflow.indexOf(\"scroll\") > -1;\n }\n\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var browserVersion = support.browser.version;\n var el, isRtl;\n\n if (element instanceof $ && value !== undefined$1) {\n element.each(function(i, e) {\n scrollLeft(e, value);\n });\n\n return;\n } else {\n el = element instanceof $ ? element[0] : element;\n }\n\n if (!el) {\n return;\n }\n\n isRtl = support.isRtl(element);\n\n // After updating browser detection,\n // Test in which if should the Safari browsers go\n if (value !== undefined$1) {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && (mozila || webkit) && value > 0) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit && (browserVersion < 85 || support.browser.safari)) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n\n (function() {\n support._scrollbar = undefined$1;\n\n support.scrollbar = function(refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement(\"div\"),\n result;\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n\n return result;\n }\n };\n\n support.isRtl = function(element) {\n return $(element).closest(\".k-rtl\").length > 0;\n };\n\n var table = document.createElement(\"table\");\n\n // Internet Explorer does not support setting the innerHTML of TBODY and TABLE elements\n try {\n table.innerHTML = \"\";\n\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n\n support.touch = \"ontouchstart\" in window;\n\n var docStyle = document.documentElement.style;\n var transitions = support.transitions = false,\n transforms = support.transforms = false,\n elementProto = \"HTMLElement\" in window ? HTMLElement.prototype : [];\n\n support.hasHW3D = (\"WebKitCSSMatrix\" in window && \"m11\" in new window.WebKitCSSMatrix()) || \"MozPerspective\" in docStyle || \"msPerspective\" in docStyle;\n support.cssFlexbox = (\"flexWrap\" in docStyle) || (\"WebkitFlexWrap\" in docStyle) || (\"msFlexWrap\" in docStyle);\n\n each([ \"Moz\", \"webkit\", \"O\", \"ms\" ], function() {\n var prefix = this.toString(),\n hasTransitions = typeof table.style[prefix + \"Transition\"] === STRING;\n\n if (hasTransitions || typeof table.style[prefix + \"Transform\"] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n\n transforms = {\n css: (lowPrefix != \"ms\") ? \"-\" + lowPrefix + \"-\" : \"\",\n prefix: prefix,\n event: (lowPrefix === \"o\" || lowPrefix === \"webkit\") ? lowPrefix : \"\"\n };\n\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + \"TransitionEnd\" : \"transitionend\";\n }\n\n return false;\n }\n });\n\n table = null;\n\n support.transforms = transforms;\n support.transitions = transitions;\n\n support.devicePixelRatio = window.devicePixelRatio === undefined$1 ? 1 : window.devicePixelRatio;\n\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e$1) {\n //window.outerWidth throws error when in IE showModalDialog.\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n\n support.detectOS = function(ua) {\n var os = false, minorVersion, match = [],\n notAndroidPhone = !/mobile safari/i.test(ua),\n agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.?(\\d+(\\.\\d+)?)?/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n },\n osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n },\n formFactorRxs = {\n tablet: /playbook|ipad|fire/i\n },\n browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent == \"windows\" && \"plugins\" in navigator) { return false; } // Break if not Metro/Mobile Windows\n\n os = {};\n os.device = agent;\n os.tablet = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, \"default\");\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = (match[3] || \"0\").replace(\"_\", \".\");\n minorVersion = os.minorVersion.replace(\".\", \"\").substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + (new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join(\"0\"));\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED; // Use file protocol to detect appModes.\n os.appMode = window.navigator.standalone || (/file|local|wmapp/).test(window.location.protocol) || os.cordova; // Use file protocol to detect appModes.\n\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n\n break;\n }\n }\n }\n return os;\n };\n\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n\n support.hasNativeScrolling = false;\n\n if (mobileOS.ios || (mobileOS.android && mobileOS.majorVersion > 2) || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n\n support.delayedClick = function() {\n\n // only the mobile devices with touch events do this.\n if (support.touch) {\n // All iOS devices so far (by the time I am writing this, iOS 9.0.2 is the latest),\n // delay their click events.\n if (mobileOS.ios) {\n return true;\n }\n\n if (mobileOS.android) {\n\n if (!support.browser.chrome) { // older webkits and webviews delay the click\n return true;\n }\n\n // from here on, we deal with Chrome on Android.\n if (support.browser.version < 32) {\n return false;\n }\n\n // Chrome 32+ does conditional fast clicks if the view port is not user scalable.\n return !($(\"meta[name=viewport]\").attr(\"content\") || \"\").match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n\n support.detectBrowser = function(ua) {\n var browser = false,\n match = [],\n chromiumEdgeMatch = [],\n browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n if (browser.chrome) {\n chromiumEdgeMatch = ua.match(/(edg)[ \\/]([\\w.]+)/i);\n\n if (chromiumEdgeMatch) {\n browser.chromiumEdge = true;\n }\n }\n\n break;\n }\n }\n }\n\n return browser;\n };\n\n support.browser = support.detectBrowser(navigator.userAgent);\n\n if (!mobileOS && support.touch && support.browser.safari) {\n mobileOS = support.mobileOS = {\n ios: true,\n tablet: \"tablet\",\n device: \"ipad\",\n majorVersion: 13\n };\n }\n\n support.detectClipboardAccess = function() {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported(\"copy\") : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported(\"cut\") : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported(\"paste\") : false\n };\n\n if (support.browser.chrome) {\n //not using queryCommandSupported due to chromium issues 476508 and 542948\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n\n return commands;\n };\n\n support.clipboard = support.detectClipboardAccess();\n\n support.zoomLevel = function() {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n\n return support.touch ? (docEl.clientWidth / window.innerWidth) :\n browser.msie && browser.version >= 10 ? (((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth) : 1;\n } catch (e) {\n return 1;\n }\n };\n\n (function(browser) {\n // add browser-specific CSS class\n var cssClass = \"\",\n docElement = $(document.documentElement),\n majorVersion = parseInt(browser.version, 10);\n\n if (browser.msie) {\n cssClass = \"ie\";\n } else if (browser.mozilla) {\n cssClass = \"ff\";\n } else if (browser.safari) {\n cssClass = \"safari\";\n } else if (browser.webkit) {\n cssClass = \"webkit\";\n } else if (browser.opera) {\n cssClass = \"opera\";\n } else if (browser.edge) {\n cssClass = \"edge\";\n }\n\n if (cssClass) {\n cssClass = \"k-\" + cssClass + \" k-\" + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += \" k-mobile\";\n }\n\n if (!support.cssFlexbox) {\n cssClass += \" k-no-flexbox\";\n }\n\n docElement.addClass(cssClass);\n })(support.browser);\n\n support.eventCapture = document.documentElement.addEventListener;\n\n var input = document.createElement(\"input\");\n\n support.placeholder = \"placeholder\" in input;\n support.propertyChangeEvent = \"onpropertychange\" in input;\n\n support.input = (function() {\n var types = [\"number\", \"date\", \"time\", \"month\", \"week\", \"datetime\", \"datetime-local\"];\n var length = types.length;\n var value = \"test\";\n var result = {};\n var idx = 0;\n var type;\n\n for (;idx < length; idx++) {\n type = types[idx];\n input.setAttribute(\"type\", type);\n input.value = value;\n\n result[type.replace(\"-\", \"\")] = input.type !== \"text\" && input.value !== value;\n }\n\n return result;\n })();\n\n input.style.cssText = \"float:left;\";\n\n support.cssFloat = !!input.style.cssFloat;\n\n input = null;\n\n support.stableSort = (function() {\n // Chrome sort is not stable for more than *10* items\n // IE9+ sort is not stable for than *512* items\n var threshold = 513;\n\n var sorted = [{\n index: 0,\n field: \"b\"\n }];\n\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: \"a\"\n });\n }\n\n sorted.sort(function(a, b) {\n return a.field > b.field ? 1 : (a.field < b.field ? -1 : 0);\n });\n\n return sorted[0].index === 1;\n })();\n\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector ||\n elementProto.msMatchesSelector || elementProto.oMatchesSelector ||\n elementProto.matchesSelector || elementProto.matches ||\n function( selector ) {\n var nodeList = document.querySelectorAll ? ( this.parentNode || document ).querySelectorAll( selector ) || [] : $(selector),\n i = nodeList.length;\n\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n\n return false;\n };\n\n support.matchMedia = \"matchMedia\" in window;\n\n support.pushState = window.history && window.history.pushState;\n\n support.hashChange = \"onhashchange\" in window;\n\n support.customElements = \"registerElement\" in window.document;\n\n var chrome = support.browser.chrome,\n mobileChrome = support.browser.crios,\n mozilla = support.browser.mozilla,\n safari = support.browser.safari;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.kineticScrollNeeded = mobileOS && (mobileOS.device !== \"ipad\" || mobileOS.majorVersion < 13) && (support.touch || support.msPointers || support.pointers);\n })();\n\n\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != \"toJSON\") { // Ignore fake IE7 toJSON.\n result++;\n }\n }\n\n return result;\n }\n\n function getOffset(element, type, positioned) {\n if (!type) {\n type = \"offset\";\n }\n\n var offset = element[type]();\n // clone ClientRect object to JS object (jQuery3)\n var result = {\n top: offset.top,\n right: offset.right,\n bottom: offset.bottom,\n left: offset.left\n };\n\n // IE10 touch zoom is living in a separate viewport\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n var sign = support.isRtl(element) ? 1 : -1;\n\n result.top -= (window.pageYOffset - (document.documentElement.scrollTop));\n result.left -= (window.pageXOffset + (sign * document.documentElement.scrollLeft));\n }\n\n return result;\n }\n\n var directions = {\n left: { reverse: \"right\" },\n right: { reverse: \"left\" },\n down: { reverse: \"up\" },\n up: { reverse: \"down\" },\n top: { reverse: \"bottom\" },\n bottom: { reverse: \"top\" },\n \"in\": { reverse: \"out\" },\n out: { reverse: \"in\" }\n };\n\n function parseEffects(input) {\n var effects = {};\n\n each((typeof input === \"string\" ? input.split(\" \") : input), function(idx) {\n effects[idx] = this;\n });\n\n return effects;\n }\n\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n\n var effects = {};\n\n $.extend(effects, {\n enabled: true,\n Element: function(element) {\n this.element = $(element);\n },\n\n promise: function(element, options) {\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (options.init) {\n options.init();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element); // call the external complete callback with the element\n }\n\n element.dequeue();\n },\n\n disable: function() {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n\n enable: function() {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n\n effects.promiseShim = effects.promise;\n\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n // options is the list of effect names separated by space e.g. animate(element, \"fadeIn slideDown\")\n\n // only callback is provided e.g. animate(element, options, function() {});\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n\n return extend({\n //default options\n effects: {},\n duration: 400, //jQuery default duration\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, { completeCallback: options.complete, complete: noop }); // Move external complete callback, so deferred.resolve can be always executed.\n\n }\n\n function animate(element, options, duration, reverse, complete) {\n var idx = 0,\n length = element.length,\n instance;\n\n for (; idx < length; idx ++) {\n instance = $(element[idx]);\n instance.queue(function() {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n\n return element;\n }\n\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n }\n\n if (!(\"kendoAnimate\" in $.fn)) {\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n\n kendoAnimate: function(options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n\n kendoAddClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n\n kendoRemoveClass: function(classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function(classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n\n var ampRegExp = /&/g,\n ltRegExp = //g;\n function htmlEncode(value) {\n return (\"\" + value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n }\n\n function unescape(value) {\n var template;\n\n try {\n template = window.decodeURIComponent(value);\n } catch (error) {\n // If the string contains Unicode characters\n // the decodeURIComponent() will throw an error.\n // Therefore: convert to UTF-8 character\n template = value.replace(/%u([\\dA-F]{4})|%([\\dA-F]{2})/gi, function(_, m1, m2) {\n return String.fromCharCode(parseInt(\"0x\" + (m1 || m2), 16));\n });\n }\n\n return template;\n }\n\n var eventTarget = function(e) {\n return e.target;\n };\n\n if (support.touch) {\n\n eventTarget = function(e) {\n var touches = \"originalEvent\" in e ? e.originalEvent.changedTouches : \"changedTouches\" in e ? e.changedTouches : null;\n\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n\n each([\"swipe\", \"swipeLeft\", \"swipeRight\", \"swipeUp\", \"swipeDown\", \"doubleTap\", \"tap\"], function(m, value) {\n $.fn[value] = function(callback) {\n return this.on(value, callback);\n };\n });\n }\n\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = \"mousedown touchstart\";\n support.mouseup = \"mouseup touchend\";\n support.mousemove = \"mousemove touchmove\";\n support.mousecancel = \"mouseleave touchcancel\";\n support.click = \"click\";\n support.resize = \"resize\";\n } else {\n support.mousedown = \"touchstart\";\n support.mouseup = \"touchend\";\n support.mousemove = \"touchmove\";\n support.mousecancel = \"touchcancel\";\n support.click = \"touchend\";\n support.resize = \"orientationchange\";\n }\n } else if (support.pointers) {\n support.mousemove = \"pointermove\";\n support.mousedown = \"pointerdown\";\n support.mouseup = \"pointerup\";\n support.mousecancel = \"pointercancel\";\n support.click = \"pointerup\";\n support.resize = \"orientationchange resize\";\n } else if (support.msPointers) {\n support.mousemove = \"MSPointerMove\";\n support.mousedown = \"MSPointerDown\";\n support.mouseup = \"MSPointerUp\";\n support.mousecancel = \"MSPointerCancel\";\n support.click = \"MSPointerUp\";\n support.resize = \"orientationchange resize\";\n } else {\n support.mousemove = \"mousemove\";\n support.mousedown = \"mousedown\";\n support.mouseup = \"mouseup\";\n support.mousecancel = \"mouseleave\";\n support.click = \"click\";\n support.resize = \"resize\";\n }\n\n var wrapExpression = function(members, paramName) {\n var result = paramName || \"d\",\n index,\n idx,\n length,\n member,\n count = 1;\n\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== \"\") {\n index = member.indexOf(\"[\");\n\n if (index !== 0) {\n if (index == -1) {\n member = \".\" + member;\n } else {\n count++;\n member = \".\" + member.substring(0, index) + \" || {})\" + member.substring(index);\n }\n }\n\n count++;\n result += member + ((idx < length - 1) ? \" || {})\" : \")\");\n }\n }\n return new Array(count).join(\"(\") + result;\n },\n localUrlRe = /^([a-z]+:)?\\/\\//i;\n\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || { },\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n keys: {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n },\n support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: \"\",\n attr: function(value) {\n return \"data-\" + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: Template.compile.bind(Template),\n render: Template.render.bind(Template),\n stringify: JSON.stringify.bind(JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n unescape: unescape,\n isLocalUrl: function(url) {\n return url && !localUrlRe.test(url);\n },\n mediaQuery: mediaQuery,\n\n expr: function(expression, safe, paramName) {\n expression = expression || \"\";\n\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n\n paramName = paramName || \"d\";\n\n if (expression && expression.charAt(0) !== \"[\") {\n expression = \".\" + expression;\n }\n\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g,'\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g,\"'$1_$DOT$_$2'\");\n expression = wrapExpression(expression.split(\".\"), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, \".\");\n } else {\n expression = paramName + expression;\n }\n\n return expression;\n },\n\n exprToArray: function (expression, safe) {\n expression = expression || \"\";\n var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n var fields = [];\n\n expression.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(kendo.isPresent(index) ? index : (indexAccessor || field));\n return undefined$1;\n });\n\n return fields;\n },\n\n getter: function(expression, safe) {\n var key = expression + safe;\n\n return getterCache[key] = getterCache[key] || (function (obj) {\n var fields = kendo.exprToArray(expression, safe);\n\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!kendo.isPresent(result) && safe) {\n return result;\n }\n }\n\n return result;\n });\n },\n\n setter: function(expression) {\n return setterCache[expression] = setterCache[expression] || (function (obj, value) {\n var fields = kendo.exprToArray(expression);\n\n var innerSetter = function (ref) {\n var parent = ref.parent;\n var val = ref.val;\n var prop = ref.prop;\n var props = ref.props;\n\n if (props.length) {\n parent = parent[props.shift()];\n innerSetter({ parent: parent, val: val, prop: prop, props: props });\n } else {\n parent[prop] = val;\n }\n };\n\n innerSetter({\n parent: obj,\n val: value,\n prop: fields.pop(),\n props: fields\n });\n });\n },\n\n accessor: function(expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n\n guid: function() {\n var id = \"\", i, random, chars = \"abcdef\";\n\n id += chars[Math.floor(Math.random() * Math.floor(chars.length))];\n\n for (i = 1; i < 32; i++) {\n random = math.random() * 16 | 0;\n\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += \"-\";\n }\n id += (i == 12 ? 4 : (i == 16 ? (random & 3 | 8) : random)).toString(16);\n }\n\n return id;\n },\n\n roleSelector: function(role) {\n return role.replace(/(\\S+)/g, \"[\" + kendo.attr(\"role\") + \"=$1],\").slice(0, -1);\n },\n\n directiveSelector: function(directives) {\n var selectors = directives.split(\" \");\n\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != \"view\") {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, \"$1-$2\");\n }\n }\n }\n\n return selectors.join(\" \").replace(/(\\S+)/g, \"kendo-mobile-$1,\").slice(0, -1);\n },\n\n triggeredByInput: function(e) {\n return (/^(label|input|textarea|select)$/i).test(e.target.tagName);\n },\n\n onWidgetRegistered: function(callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n\n logToConsole: function(message, type) {\n var console = window.console;\n\n if (!kendo.suppressLog && typeof(console) != \"undefined\" && console.log) {\n console[type || \"log\"](message);\n }\n }\n });\n\n var Widget = Observable.extend( {\n init: function(element, options) {\n var that = this;\n\n validatePackage();\n\n that.element = kendo.jQuery(element).handler(that);\n\n that.angular(\"init\", options);\n\n Observable.fn.init.call(that);\n\n var dataSource = options ? options.dataSource : null;\n var props;\n\n if (options) {\n props = (that.componentTypes || {})[(options || {}).componentType];\n }\n\n if (dataSource) {\n // avoid deep cloning the data source\n options = extend({}, options, { dataSource: {} });\n }\n\n options = that.options = extend(true, {}, that.options, that.defaults, props || {}, options);\n\n if (dataSource) {\n options.dataSource = dataSource;\n }\n\n if (!that.element.attr(kendo.attr(\"role\"))) {\n that.element.attr(kendo.attr(\"role\"), (options.name || \"\").toLowerCase());\n }\n\n that.element.data(\"kendo\" + options.prefix + options.name, that);\n\n that.bind(that.events, options);\n },\n\n events: [],\n\n options: {\n prefix: \"\"\n },\n\n _hasBindingTarget: function() {\n return !!this.element[0].kendoBindingTarget;\n },\n\n _tabindex: function(target) {\n target = target || this.wrapper;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n\n element.removeAttr(TABINDEX);\n\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n\n setOptions: function(options) {\n this._clearCssClasses(options);\n this._setEvents(options);\n $.extend(this.options, options);\n this._applyCssClasses();\n },\n\n _setEvents: function(options) {\n var that = this,\n idx = 0,\n length = that.events.length,\n e;\n\n for (; idx < length; idx ++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n if (that._events && that._events[e]) {\n delete that._events[e];\n }\n }\n }\n\n that.bind(that.events, options);\n },\n\n resize: function(force) {\n var size = this.getSize(),\n currentSize = this._size;\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n },\n\n getSize: function() {\n return kendo.dimensions(this.element);\n },\n\n size: function(size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n\n setSize: $.noop,\n _resize: $.noop,\n\n destroy: function() {\n var that = this;\n\n that.element.removeData(\"kendo\" + that.options.prefix + that.options.name);\n that.element.removeData(\"handler\");\n that.unbind();\n },\n _destroy: function() {\n this.destroy();\n },\n angular: function() {},\n\n _muteAngularRebind: function(callback) {\n this._muteRebind = true;\n\n callback.call(this);\n\n this._muteRebind = false;\n },\n\n _applyCssClasses: function(element) {\n var protoOptions = this.__proto__.options,\n options = this.options,\n el = element || this.wrapper || this.element,\n classes = [],\n i, prop, validFill, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (validFill && validFill.length) {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop],\n fill: options.fillMode\n }));\n }\n } else {\n classes.push(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: options[prop]\n }));\n }\n }\n }\n\n el.addClass(classes.join(\" \"));\n },\n\n _ariaLabel: function(target) {\n var that = this,\n inputElm = that.element,\n inputId = inputElm.attr(\"id\"),\n labelElm = $(\"label[for=\\\"\" + inputId + \"\\\"]\"),\n ariaLabel = inputElm.attr(ARIA_LABEL),\n ariaLabelledBy = inputElm.attr(ARIA_LABELLEDBY),\n labelId;\n\n if (target[0] === inputElm[0]) {\n return;\n }\n\n if (ariaLabel) {\n target.attr(ARIA_LABEL, ariaLabel);\n } else if (ariaLabelledBy) {\n target.attr(ARIA_LABELLEDBY, ariaLabelledBy);\n } else if (labelElm.length) {\n labelId = labelElm.attr(\"id\") || that._generateLabelId(labelElm, inputId || kendo.guid());\n target.attr(ARIA_LABELLEDBY, labelId);\n }\n },\n\n _clearCssClasses: function(newOptions, element) {\n var protoOptions = this.__proto__.options,\n currentOptions = this.options,\n el = element || this.wrapper || this.element,\n i, prop, widgetName;\n\n if (!kendo.cssProperties.propertyDictionary[protoOptions.name]) {\n return;\n }\n\n for (i = 0; i < cssPropertiesNames.length; i++) {\n prop = cssPropertiesNames[i];\n widgetName = this.options._altname || protoOptions.name;\n\n if (protoOptions.hasOwnProperty(prop) && newOptions.hasOwnProperty(prop)) {\n if (prop === \"themeColor\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop],\n fill: currentOptions.fillMode\n }));\n } else {\n if (prop === \"fillMode\") {\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"themeColor\",\n value: currentOptions.themeColor,\n fill: currentOptions.fillMode\n }));\n }\n\n el.removeClass(kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: prop,\n value: currentOptions[prop]\n }));\n }\n }\n }\n },\n\n _generateLabelId: function(label, inputId) {\n var labelId = inputId + LABELIDPART;\n\n label.attr(\"id\", labelId);\n\n return labelId;\n },\n });\n\n var DataBoundWidget = Widget.extend({\n // Angular consumes these.\n dataItems: function() {\n return this.dataSource.flatView();\n },\n\n _angularItems: function(cmd) {\n var that = this;\n that.angular(cmd, function() {\n return {\n elements: that.items(),\n data: $.map(that.dataItems(), function(dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n });\n\n kendo.dimensions = function(element, dimensions) {\n var domElement = element[0];\n\n if (dimensions) {\n element.css(dimensions);\n }\n\n return { width: domElement.offsetWidth, height: domElement.offsetHeight };\n };\n\n kendo.notify = noop;\n\n var templateRegExp = /template$/i,\n jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/,\n jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]+\\]$/,\n dashRegExp = /([A-Z])/g;\n\n function parseOption(element, option) {\n var value;\n\n if (option.indexOf(\"data\") === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n\n option = option.replace(dashRegExp, \"-$1\");\n value = element.getAttribute(\"data-\" + kendo.ns + option);\n\n if (value === null) {\n value = undefined$1;\n } else if (value === \"null\") {\n value = null;\n } else if (value === \"true\") {\n value = true;\n } else if (value === \"false\") {\n value = false;\n } else if (numberRegExp.test(value) && option != \"mask\" && option != \"format\") {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n try {\n value = JSON.parse(value);\n } catch (error) {\n // Fallback to function eval for legacy reason - non CSP compliant\n value = new Function(\"return (\" + value + \")\")();\n }\n }\n\n return value;\n }\n\n function parseOptions(element, options, source) {\n var result = {},\n option,\n value,\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n for (option in options) {\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n\n if (templateRegExp.test(option) && role != \"drawer\") {\n if (typeof value === \"string\") {\n if ($(\"#\" + value).length) {\n value = kendo.template($(\"#\" + value).html());\n } else if (source) {\n value = kendo.template(source[value]);\n }\n } else {\n value = element.getAttribute(option);\n }\n }\n\n result[option] = value;\n }\n }\n\n return result;\n }\n\n kendo.initWidget = function(element, options, roles) {\n var result,\n option,\n widget,\n idx,\n length,\n role,\n value,\n dataSource,\n fullPath,\n widgetKeyRegExp;\n\n // Preserve backwards compatibility with (element, options, namespace) signature, where namespace was kendo.ui\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n\n element = element.nodeType ? element : element[0];\n\n role = element.getAttribute(\"data-\" + kendo.ns + \"role\");\n\n if (!role) {\n return;\n }\n\n fullPath = role.indexOf(\".\") === -1;\n\n // look for any widget that may be already instantiated based on this role.\n // The prefix used is unknown, hence the regexp\n //\n\n if (fullPath) {\n widget = roles[role];\n } else { // full namespace path - like kendo.ui.Widget\n widget = kendo.getter(role)(window);\n }\n\n var data = $(element).data(),\n widgetKey = widget ? \"kendo\" + widget.fn.options.prefix + widget.fn.options.name : \"\";\n\n if (fullPath) {\n widgetKeyRegExp = new RegExp(\"^kendo.*\" + role + \"$\", \"i\");\n } else { // full namespace path - like kendo.ui.Widget\n widgetKeyRegExp = new RegExp(\"^\" + widgetKey + \"$\", \"i\");\n }\n\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n // we have detected a widget of the same kind - save its reference, we will set its options\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n\n if (!widget) {\n return;\n }\n\n dataSource = parseOption(element, \"dataSource\");\n\n options = $.extend({}, parseOptions(element, $.extend({}, widget.fn.options, widget.fn.defaults) ), options);\n\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n\n value = parseOption(element, option);\n\n if (value !== undefined$1) {\n options[option] = kendo.getter(value)(window);\n }\n }\n\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n\n return result;\n };\n\n kendo.rolesFromNamespaces = function(namespaces) {\n var roles = [],\n idx,\n length;\n\n if (!namespaces[0]) {\n namespaces = [kendo.ui, kendo.dataviz.ui];\n }\n\n for (idx = 0, length = namespaces.length; idx < length; idx ++) {\n roles[idx] = namespaces[idx].roles;\n }\n\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n\n kendo.init = function(element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n kendo.initWidget(this, {}, roles);\n });\n };\n\n kendo.destroy = function(element) {\n $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().each(function() {\n var data = $(this).data();\n\n for (var key in data) {\n if (key.indexOf(\"kendo\") === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n\n function resizableWidget() {\n var widget = $(this);\n return ($.inArray(widget.attr(\"data-\" + kendo.ns + \"role\"), [\"slider\", \"rangeslider\", \"breadcrumb\"]) > -1) || widget.is(\":visible\");\n }\n\n kendo.resize = function(element, force) {\n var widgets = $(element).find(\"[data-\" + kendo.ns + \"role]\").addBack().filter(resizableWidget);\n\n if (!widgets.length) {\n return;\n }\n\n // sort widgets based on their parent-child relation\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n\n // resize widgets\n $.each(widgetsArray, function() {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n\n kendo.parseOptions = parseOptions;\n\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function(container, toggle, options) {\n var mask = container.find(\".k-loading-mask\"),\n support = kendo.support,\n browser = support.browser,\n isRtl, leftRight, webkitCorrection, containerScrollLeft, cssClass;\n\n options = $.extend({}, {\n width: \"100%\",\n height: \"100%\",\n top: container.scrollTop(),\n opacity: false\n }, options);\n\n cssClass = options.opacity ? 'k-loading-mask k-opaque' : 'k-loading-mask';\n\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? \"right\" : \"left\";\n containerScrollLeft = kendo.scrollLeft(container);\n webkitCorrection = browser.webkit ? (!isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft) : 0;\n\n mask = $(kendo.format(\"
{1}
\", cssClass, kendo.ui.progress.messages.loading))\n .width(options.width).height(options.height)\n .css(\"top\", options.top)\n .css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection)\n .prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function(widget, register, prefix) {\n var name = widget.fn.options.name,\n getter;\n\n register = register || kendo.ui;\n prefix = prefix || \"\";\n\n register[name] = widget;\n\n register.roles[name.toLowerCase()] = widget;\n\n getter = \"getKendo\" + prefix + name;\n name = \"kendo\" + prefix + name;\n\n var widgetEntry = { name: name, widget: widget, prefix: prefix || \"\" };\n kendo.widgets.push(widgetEntry);\n\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n\n $.fn[name] = function(options) {\n var value = this,\n args;\n\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n\n this.each(function() {\n var widget = $.data(this, name),\n method,\n result;\n\n if (!widget) {\n throw new Error(kendo.format(\"Cannot call method '{0}' of {1} before it is initialized\", options, name));\n }\n\n method = widget[options];\n\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format(\"Cannot find method '{0}' of {1}\", options, name));\n }\n\n result = method.apply(widget, args);\n\n if (result !== undefined$1) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function() {\n return new widget(this, options);\n });\n }\n\n return value;\n };\n\n $.fn[name].widget = widget;\n\n $.fn[getter] = function() {\n return this.data(name);\n };\n }\n });\n\n kendo.ui.progress.messages = {\n loading: \"Loading...\"\n };\n\n var ContainerNullObject = { bind: function() { return this; }, nullObject: true, options: {} };\n\n var MobileWidget = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass(\"km-widget\");\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n\n options: {\n prefix: \"Mobile\"\n },\n\n events: [],\n\n view: function() {\n var viewElement = this.element.closest(kendo.roleSelector(\"view splitview modalview drawer\"));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n\n viewHasNativeScrolling: function() {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n\n container: function() {\n var element = this.element.closest(kendo.roleSelector(\"view layout modalview drawer splitview\"));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n\n extend(kendo.mobile, {\n init: function(element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n\n roles: {},\n\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, \"Mobile\");\n }\n }\n });\n\n deepExtend(kendo.dataviz, {\n init: function(element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function(widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n\n kendo.touchScroller = function(elements, options) {\n // return the first touch scroller\n if (!options) { options = {}; }\n\n options.useNative = true;\n\n return $(elements).map(function(idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data(\"kendoMobileScroller\")) {\n element.kendoMobileScroller(options);\n return element.data(\"kendoMobileScroller\");\n } else {\n return false;\n }\n })[0];\n };\n\n kendo.preventDefault = function(e) {\n e.preventDefault();\n };\n\n kendo.widgetInstance = function(element, suites) {\n var role = element.data(kendo.ns + \"role\"),\n widgets = [], i, length,\n elementData = element.data(\"kendoView\");\n\n if (role) {\n // HACK!!! mobile view scroller widgets are instantiated on data-role=\"content\" elements. We need to discover them when resizing.\n if (role === \"content\") {\n role = \"scroller\";\n }\n\n // kendo.View is not a ui plugin\n\n if (role === \"view\" && elementData) {\n return elementData;\n }\n\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i ++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n }\n else {\n widgets = [ kendo.ui.roles[role], kendo.dataviz.ui.roles[role], kendo.mobile.ui.roles[role] ];\n }\n\n if (role.indexOf(\".\") >= 0) {\n widgets = [ kendo.getter(role)(window) ];\n }\n\n for (i = 0, length = widgets.length; i < length; i ++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data(\"kendo\" + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n\n kendo.onResize = function(callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function() { setTimeout(callback, 600); };\n }\n\n $(window).on(support.resize, handler);\n return handler;\n };\n\n kendo.unbindResize = function(callback) {\n $(window).off(support.resize, callback);\n };\n\n kendo.attrValue = function(element, key) {\n return element.data(kendo.ns + key);\n };\n\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n nodeName === \"a\" ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN\n ) &&\n visible(element);\n }\n\n function visible(element) {\n return $.expr.pseudos.visible(element) &&\n !$(element).parents().addBack().filter(function() {\n return $.css(this,\"visibility\") === \"hidden\";\n }).length;\n }\n\n $.extend($.expr.pseudos, {\n kendoFocusable: function(element) {\n var idx = $.attr(element, \"tabindex\");\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n\n var MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseenter\", \"mouseleave\", \"mouseover\", \"mouseout\", \"mouseup\", \"click\"];\n var EXCLUDE_BUST_CLICK_SELECTOR = \"label, input, [data-rel=external]\";\n\n var MouseEventNormalizer = {\n setupMouseMute: function() {\n var idx = 0,\n length = MOUSE_EVENTS.length,\n element = document.documentElement;\n\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n\n MouseEventNormalizer.mouseTrap = true;\n\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n\n var handler = function(e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === \"click\") {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n\n muteMouse: function(e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n\n unMuteMouse: function() {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function() {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: \"touchstart\",\n move: \"touchmove\",\n up: \"touchend touchcancel\",\n cancel: \"touchcancel\"\n };\n } else if (support.pointers) {\n eventMap = {\n down: \"pointerdown\",\n move: \"pointermove\",\n up: \"pointerup\",\n cancel: \"pointercancel pointerleave\"\n };\n } else if (support.msPointers) {\n eventMap = {\n down: \"MSPointerDown\",\n move: \"MSPointerMove\",\n up: \"MSPointerUp\",\n cancel: \"MSPointerCancel MSPointerLeave\"\n };\n }\n\n if (support.msPointers && !(\"onmspointerenter\" in window)) { // IE10\n // Create MSPointerEnter/MSPointerLeave events using mouseover/out and event-time checks\n $.each({\n MSPointerEnter: \"MSPointerOver\",\n MSPointerLeave: \"MSPointerOut\"\n }, function( orig, fix ) {\n $.event.special[ orig ] = {\n delegateType: fix,\n bindType: fix,\n\n handle: function( event ) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !$.contains( target, related )) ) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply( this, arguments );\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n\n\n var getEventMap = function(e) { return (eventMap[e] || e); },\n eventRegEx = /([^ ]+)/g;\n\n kendo.applyEventMap = function(events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n\n if (ns) {\n events = events.replace(eventRegEx, \"$1.\" + ns);\n }\n\n return events;\n };\n\n kendo.keyDownHandler = function(e, widget) {\n var events = widget._events.kendoKeydown;\n\n if (!events) {\n return true;\n }\n\n events = events.slice();\n e.sender = widget;\n e.preventKendoKeydown = false;\n for (var idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(widget, e);\n }\n\n return !e.preventKendoKeydown;\n };\n\n var on = $.fn.on;\n\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n\n noDepricateExtend(true, kendoJQuery, $);\n\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n\n kendoJQuery.fn.constructor = kendoJQuery;\n\n kendoJQuery.fn.init = function(selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n\n var rootjQuery = kendoJQuery(document);\n\n extend(kendoJQuery.fn, {\n handler: function(handler) {\n this.data(\"handler\", handler);\n return this;\n },\n\n autoApplyNS: function(ns) {\n this.data(\"kendoNS\", ns || kendo.guid());\n return this;\n },\n\n on: function() {\n var that = this,\n ns = that.data(\"kendoNS\");\n\n // support for event map signature\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n\n var context = that,\n args = slice.call(arguments);\n\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n\n var callback = args[args.length - 1],\n events = kendo.applyEventMap(args[0], ns);\n\n // setup mouse trap\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n\n var selector = args.length === 2 ? null : args[1],\n bustClick = events.indexOf(\"click\") > -1 && events.indexOf(\"touchend\") > -1;\n\n on.call(this,\n {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n },\n selector,\n {\n bustClick: bustClick\n });\n }\n\n if (arguments[0].indexOf(\"keydown\") !== -1 && args[1] && args[1].options) {\n args[0] = events;\n var widget = args[1];\n var keyDownCallBack = args[args.length - 1];\n args[args.length - 1] = function(e) {\n if (kendo.keyDownHandler(e, widget)) {\n return keyDownCallBack.apply(this, [e]);\n }\n };\n on.apply(that, args);\n return that;\n }\n\n if (typeof callback === STRING) {\n context = that.data(\"handler\");\n callback = context[callback];\n\n args[args.length - 1] = function(e) {\n callback.call(context, e);\n };\n }\n\n args[0] = events;\n\n on.apply(that, args);\n\n return that;\n },\n\n kendoDestroy: function(ns) {\n ns = ns || this.data(\"kendoNS\");\n\n if (ns) {\n this.off(\".\" + ns);\n }\n\n return this;\n }\n });\n\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n\n kendo.timezone = (function() {\n var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 };\n var days = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };\n\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n\n if (!cache) {\n rule[8] = cache = {};\n }\n\n if (cache[year]) {\n return cache[year];\n }\n\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf(\"last\") === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf(\">=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n } else if (on.indexOf(\"<=\") >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n }\n\n return cache[year] = date;\n }\n\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n\n if (!rules) {\n var time = zone.split(\":\");\n var offset = 0;\n\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n\n return [-1000000, 'max', '-', 'Jan', 1, [0, 0, 0], offset, '-'];\n }\n\n var year = new Date(utcTime).getUTCFullYear();\n\n rules = jQuery.grep(rules, function(rule) {\n var from = rule[0];\n var to = rule[1];\n\n return from <= year && (to >= year || (from == year && to == \"only\") || to == \"max\");\n });\n\n rules.push(utcTime);\n\n rules.sort(function(a, b) {\n if (typeof a != \"number\") {\n a = Number(ruleToDate(year, a));\n }\n\n if (typeof b != \"number\") {\n b = Number(ruleToDate(year, b));\n }\n\n return a - b;\n });\n\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n\n return isNaN(rule) ? rule : null;\n }\n\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n\n if (typeof zoneRules === \"string\") {\n zoneRules = zones[zoneRules];\n }\n\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n\n if (until && utcTime > until) {\n break;\n }\n }\n\n var zone = zoneRules[idx + 1];\n\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + \".\");\n }\n\n return zone;\n }\n\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(),\n utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(),\n utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n\n var zone = findZone(utcTime, zones, timezone);\n\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n\n function offset(utcTime, timezone) {\n if (timezone == \"Etc/UTC\" || timezone == \"Etc/GMT\") {\n return 0;\n }\n\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n\n var base = zone[2];\n\n if (base.indexOf(\"/\") >= 0) {\n return base.split(\"/\")[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf(\"%s\") >= 0) {\n return base.replace(\"%s\", (!rule || rule[7] == \"-\") ? '' : rule[7]);\n }\n\n return base;\n }\n\n function convert(date, fromOffset, toOffset) {\n var tempToOffset = toOffset;\n var diff;\n\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n\n var fromLocalOffset = date.getTimezoneOffset();\n\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = date.getTimezoneOffset();\n\n if (typeof tempToOffset == STRING) {\n tempToOffset = this.offset(date, tempToOffset);\n }\n\n diff = (toLocalOffset - fromLocalOffset) + (toOffset - tempToOffset);\n\n return new Date(date.getTime() + diff * 60000);\n }\n\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n\n function toLocalDate(time) {\n return this.apply(new Date(time), \"Etc/UTC\");\n }\n\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n })();\n\n kendo.date = (function() {\n var MS_PER_MINUTE = 60000,\n MS_PER_DAY = 86400000;\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n\n dir = dir || 1;\n day = ((day - date.getDay()) + (7 * dir)) % 7;\n\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n\n function firstDayOfMonth(date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n 1\n );\n }\n\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0),\n first = firstDayOfMonth(date),\n timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n\n if (timeOffset) {\n last.setHours(first.getHours() + (timeOffset / 60));\n }\n\n return last;\n }\n\n function firstDayOfYear(date) {\n return new Date(date.getFullYear(), 0, 1);\n }\n\n function lastDayOfYear(date) {\n return new Date(date.getFullYear(), 11, 31);\n }\n\n function moveDateToWeekStart(date, weekStartDay) {\n if (weekStartDay !== 1) {\n return addDays(dayOfWeek(date, weekStartDay, -1), 4);\n }\n\n return addDays(date, (4 - (date.getDay() || 7)));\n }\n\n function calcWeekInYear(date, weekStartDay) {\n var firstWeekInYear = new Date(date.getFullYear(), 0, 1, -6);\n\n var newDate = moveDateToWeekStart(date, weekStartDay);\n\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n\n var days = Math.floor(diffInMS / MS_PER_DAY);\n\n return 1 + Math.floor(days / 7);\n }\n\n function weekInYear(date, weekStartDay) {\n if (weekStartDay === undefined$1) {\n weekStartDay = kendo.culture().calendar.firstDay;\n }\n\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n\n var weekNumber = calcWeekInYear(date, weekStartDay);\n\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n\n return weekNumber;\n }\n\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(),\n date.getDate(), date.getHours(), date.getMinutes(),\n date.getSeconds(), date.getMilliseconds());\n }\n\n function getMilliseconds(date) {\n return toInvariantTime(date).getTime() - getDate(toInvariantTime(date));\n }\n\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min),\n msMax = getMilliseconds(max),\n msValue;\n\n if (!value || msMin == msMax) {\n return true;\n }\n\n if (min >= max) {\n max += MS_PER_DAY;\n }\n\n msValue = getMilliseconds(value);\n\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(),\n msMax = max.getTime(),\n msValue;\n\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n\n msValue = value.getTime();\n\n return msValue >= msMin && msValue <= msMax;\n }\n\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n\n date.setTime(date.getTime() + milliseconds);\n\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n\n function setHours(date, time) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n adjustDST(date, time.getHours());\n return date;\n }\n\n function today() {\n return getDate(new Date());\n }\n\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n\n return staticDate;\n }\n\n function addYear(date, offset) {\n var currentDate = new Date(date);\n\n return new Date(currentDate.setFullYear(currentDate.getFullYear() + offset));\n }\n\n function addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === \"LITERAL\") {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: \"literal\",\n pattern: value\n });\n }\n }\n\n function isHour12(pattern) {\n return pattern === \"h\" || pattern === \"K\";\n }\n\n function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n }\n\n return nameType;\n }\n\n function startsWith(text, searchString, position) {\n position = position || 0;\n return text.indexOf(searchString, position) === position;\n }\n\n function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (typeof format === \"string\") {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n }\n\n function splitDateFormat(format) {\n var info = kendo.culture();\n var pattern = datePattern(format, info).replace(\"dddd\", \"EEEE\").replace(\"tt\", \"aa\");\n var parts = [];\n var dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|t{1,2}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n var specifier;\n var type;\n var part;\n var names;\n var minLength;\n var patternLength;\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (startsWith(value, '\"') || startsWith(value, \"'\")) {\n addLiteral(parts, value);\n } else {\n specifier = value[0];\n type = DATE_FIELD_MAP[specifier];\n part = {\n type: type,\n pattern: value\n };\n\n if (type === \"hour\") {\n part.hour12 = isHour12(value);\n }\n\n names = NAME_TYPES[type];\n\n if (names) {\n minLength = typeof names.minLength === \"number\" ? names.minLength : names.minLength[specifier];\n patternLength = value.length;\n\n if (patternLength >= minLength && value !== \"aa\") {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n }\n\n function dateFormatNames(options) {\n var type = options.type;\n var nameType = options.nameType;\n var info = kendo.culture();\n if (nameType === \"wide\") {\n nameType = \"names\";\n }\n if (nameType === \"abbreviated\") {\n nameType = \"namesAbbr\";\n }\n if (nameType === \"narrow\") {\n nameType = \"namesShort\";\n }\n var result = info.calendar[type][nameType];\n if (!result) {\n result = info.calendar[type][\"name\"];\n }\n return result;\n }\n\n function dateFieldName(options) {\n var info = kendo.culture();\n var dateFields = info.calendar.dateFields;\n var fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType];\n }\n\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function(date) {\n return addDays(date, 1);\n },\n previousDay: function(date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n splitDateFormat: splitDateFormat,\n dateFieldName: dateFieldName,\n dateFormatNames: dateFormatNames,\n lastDayOfMonth: lastDayOfMonth,\n weekInYear: weekInYear,\n getMilliseconds: getMilliseconds,\n firstDayOfYear: firstDayOfYear,\n lastDayOfYear: lastDayOfYear,\n nextYear: function(date) {\n return addYear(date, 1);\n },\n previousYear: function(date) {\n return addYear(date, -1);\n }\n };\n })();\n\n\n kendo.stripWhitespace = function(element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function(node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else { // IE7/8 support\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n\n var animationFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n kendo.animationFrame = function(callback) {\n animationFrame.call(window, callback);\n };\n\n var animationQueue = [];\n\n kendo.queueAnimation = function(callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n\n kendo.runNextAnimation = function() {\n kendo.animationFrame(function() {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n\n kendo.parseQueryStringParams = function(url) {\n var queryString = url.split('?')[1] || \"\",\n params = {},\n paramParts = queryString.split(/&|=/),\n length = paramParts.length,\n idx = 0;\n\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== \"\") {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n\n return params;\n };\n\n kendo.elementUnderCursor = function(e) {\n if (typeof e.x.client != \"undefined\") {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n\n kendo.wheelDeltaY = function(jQueryEvent) {\n var e = jQueryEvent.originalEvent,\n deltaY = e.wheelDeltaY,\n delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined$1 || deltaY) { // IE does not have deltaY, thus always scroll (horizontal scrolling is treated as vertical)\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) { // Firefox and Opera\n delta = (-e.detail) * 10;\n }\n\n return delta;\n };\n\n kendo.throttle = function(fn, delay) {\n var timeout;\n var lastExecTime = 0;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\n }\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n };\n\n\n kendo.caret = function(element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined$1;\n\n if (end === undefined$1) {\n end = start;\n }\n\n if (element[0]) {\n element = element[0];\n }\n\n if (isPosition && element.disabled) {\n return;\n }\n\n try {\n if (element.selectionStart !== undefined$1) {\n if (isPosition) {\n element.focus();\n var mobile = support.mobileOS;\n if (mobile.wp || mobile.android) {// without the timeout the caret is at the end of the input\n setTimeout(function() { element.setSelectionRange(start, end); }, 0);\n }\n else {\n element.setSelectionRange(start, end);\n }\n } else {\n start = [element.selectionStart, element.selectionEnd];\n }\n } else if (document.selection) {\n if ($(element).is(\":visible\")) {\n element.focus();\n }\n\n rangeElement = element.createTextRange();\n\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart(\"character\", start);\n rangeElement.moveEnd(\"character\", end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(),\n selectionStart, selectionEnd;\n\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n\n start = [selectionStart, selectionEnd];\n }\n }\n } catch (e) {\n /* element is not focused or it is not in the DOM */\n start = [];\n }\n\n return start;\n };\n\n kendo.antiForgeryTokens = function() {\n var tokens = { },\n csrf_token = $(\"meta[name=csrf-token],meta[name=_csrf]\").attr(\"content\"),\n csrf_param = $(\"meta[name=csrf-param],meta[name=_csrf_header]\").attr(\"content\");\n\n $(\"input[name^='__RequestVerificationToken']\").each(function() {\n tokens[this.name] = this.value;\n });\n\n if (csrf_param !== undefined$1 && csrf_token !== undefined$1) {\n tokens[csrf_param] = csrf_token;\n }\n\n return tokens;\n };\n\n kendo.cycleForm = function(form) {\n var firstElement = form.find(\"input, .k-widget, .k-dropdownlist, .k-combobox\").first();\n var lastElement = form.find(\"button, .k-button\").last();\n\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.trigger(\"focus\");\n }\n }\n\n lastElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n\n firstElement.on(\"keydown\", function(e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n\n kendo.focusElement = function(element) {\n var scrollTopPositions = [];\n var scrollableParents = element.parentsUntil(\"body\")\n .filter(function(index, element) {\n var computedStyle = kendo.getComputedStyles(element, [\"overflow\"]);\n return computedStyle.overflow !== \"visible\";\n })\n .add(window);\n\n scrollableParents.each(function(index, parent) {\n scrollTopPositions[index] = $(parent).scrollTop();\n });\n\n try {\n //The setActive method does not cause the document to scroll to the active object in the current page\n element[0].setActive();\n } catch (e) {\n element[0].focus();\n }\n\n scrollableParents.each(function(index, parent) {\n $(parent).scrollTop(scrollTopPositions[index]);\n });\n };\n\n kendo.focusNextElement = function() {\n if (document.activeElement) {\n var focussable = $(\":kendoFocusable\");\n var index = focussable.index(document.activeElement);\n\n if (index > -1) {\n var nextElement = focussable[index + 1] || focussable[0];\n nextElement.focus();\n }\n }\n };\n\n kendo.trim = function(value) {\n if (!!value) {\n return value.toString().trim();\n } else {\n return \"\";\n }\n };\n\n kendo.getWidgetFocusableElement = function(element) {\n var nextFocusable = element.closest(\":kendoFocusable\"),\n widgetInstance = kendo.widgetInstance(element),\n target;\n\n if (nextFocusable.length) {\n target = nextFocusable;\n } else if (widgetInstance) {\n target = widgetInstance.options.name === 'Editor' ?\n $(widgetInstance.body) :\n widgetInstance.wrapper.find(\":kendoFocusable\").first();\n } else {\n target = element;\n }\n\n return target;\n };\n\n kendo.addAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n element.attr(attribute, (current + \" \" + value).trim());\n }\n };\n\n kendo.removeAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n element.attr(attribute, current.replace(value, \"\").trim());\n };\n\n kendo.toggleAttribute = function(element, attribute, value) {\n var current = element.attr(attribute) || \"\";\n\n if (current.indexOf(value) < 0) {\n kendo.addAttribute(element, attribute, value);\n } else {\n kendo.removeAttribute(element, attribute, value);\n }\n };\n\n kendo.matchesMedia = function(mediaQuery) {\n var media = kendo._bootstrapToMedia(mediaQuery) || mediaQuery;\n return support.matchMedia && window.matchMedia(media).matches;\n };\n\n kendo._bootstrapToMedia = function(bootstrapMedia) {\n return {\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n }[bootstrapMedia];\n };\n\n kendo.fileGroupMap = {\n audio: [\".aif\", \".iff\", \".m3u\", \".m4a\", \".mid\", \".mp3\", \".mpa\", \".wav\", \".wma\", \".ogg\", \".wav\", \".wma\", \".wpl\"],\n video: [\".3g2\", \".3gp\", \".avi\", \".asf\", \".flv\", \".m4u\", \".rm\", \".h264\", \".m4v\", \".mkv\", \".mov\", \".mp4\", \".mpg\",\n \".rm\", \".swf\", \".vob\", \".wmv\"],\n image: [\".ai\", \".dds\", \".heic\", \".jpe\", \"jfif\", \".jif\", \".jp2\", \".jps\", \".eps\", \".bmp\", \".gif\", \".jpeg\",\n \".jpg\", \".png\", \".ps\", \".psd\", \".svg\", \".svgz\", \".tif\", \".tiff\"],\n txt: [\".doc\", \".docx\", \".log\", \".pages\", \".tex\", \".wpd\", \".wps\", \".odt\", \".rtf\", \".text\", \".txt\", \".wks\"],\n presentation: [\".key\", \".odp\", \".pps\", \".ppt\", \".pptx\"],\n data: [\".xlr\", \".xls\", \".xlsx\"],\n programming: [\".tmp\", \".bak\", \".msi\", \".cab\", \".cpl\", \".cur\", \".dll\", \".dmp\", \".drv\", \".icns\", \".ico\", \".link\",\n \".sys\", \".cfg\", \".ini\", \".asp\", \".aspx\", \".cer\", \".csr\", \".css\", \".dcr\", \".htm\", \".html\", \".js\",\n \".php\", \".rss\", \".xhtml\"],\n pdf: [\".pdf\"],\n config: [\".apk\", \".app\", \".bat\", \".cgi\", \".com\", \".exe\", \".gadget\", \".jar\", \".wsf\"],\n zip: [\".7z\", \".cbr\", \".gz\", \".sitx\", \".arj\", \".deb\", \".pkg\", \".rar\", \".rpm\", \".tar.gz\", \".z\", \".zip\", \".zipx\"],\n \"disc-image\": [\".dmg\", \".iso\", \".toast\", \".vcd\", \".bin\", \".cue\", \".mdf\"]\n };\n\n kendo.getFileGroup = function(extension, withPrefix) {\n var fileTypeMap = kendo.fileGroupMap;\n var groups = Object.keys(fileTypeMap);\n var type = \"file\";\n\n if (extension === undefined$1 || !extension.length) {\n return type;\n }\n\n for (var i = 0; i < groups.length; i += 1) {\n var extensions = fileTypeMap[groups[i]];\n\n if (extensions.indexOf(extension.toLowerCase()) > -1) {\n return withPrefix ? \"file-\" + groups[i] : groups[i];\n }\n }\n\n return type;\n };\n\n kendo.getFileSizeMessage = function(size) {\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n\n if (size === 0) {\n return '0 Byte';\n }\n\n var i = parseInt(Math.floor(Math.log(size) / Math.log(1024)), 10);\n return Math.round(size / Math.pow(1024, i), 2) + ' ' + sizes[i];\n };\n\n kendo.selectorFromClasses = function(classes) {\n return \".\" + classes.split(\" \").join(\".\");\n };\n\n // Standardized Properties and CSS classes\n\n var themeColorValues = ['base', 'primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'];\n var fillValues = ['solid', 'outline', 'flat'];\n //var postitionValues = ['edge', 'outside', 'inside'];\n var shapeValues = ['rectangle', 'square'];\n var sizeValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n var roundedValues = [ ['small', 'sm'], ['medium', 'md'], ['large', 'lg'] ];\n //var alignValues = [ ['top start', 'top-start'], ['top end', 'top-end'], ['bottom start', 'bottom-start'], ['bottom end', 'bottom-end'] ];\n var positionModeValues = [ 'fixed', 'static', 'sticky', 'absolute' ];\n var resizeValues = [ ['both', 'resize'], ['horizontal', 'resize-x'], ['vertical', 'resize-y'] ];\n var overflowValues = [ 'auto', 'hidden', 'visible', 'scroll', 'clip' ];\n\n kendo.cssProperties = (function() {\n var defaultValues = {},\n propertyDictionary = {};\n\n function registerPrefix(widget, prefix) {\n var dict = kendo.cssProperties.propertyDictionary;\n\n if (!dict[widget]) {\n dict[widget] = {};\n }\n\n dict[widget][PREFIX] = prefix;\n }\n\n function registerValues(widget, args) {\n var dict = kendo.cssProperties.propertyDictionary,\n i, j, prop, values, newValues, currentValue;\n\n for (i = 0; i < args.length; i++) {\n prop = args[i].prop;\n newValues = args[i].values;\n\n if (!dict[widget][prop]) {\n dict[widget][prop] = {};\n }\n\n values = dict[widget][prop];\n\n for (j = 0; j < newValues.length; j++) {\n currentValue = newValues[j];\n\n if (isArray(newValues[j])) {\n values[currentValue[0]] = currentValue[1];\n } else {\n values[currentValue] = currentValue;\n }\n }\n }\n }\n\n function registerCssClass(propName, value, shorthand) {\n if (!defaultValues[propName]) {\n defaultValues[propName] = {};\n }\n\n defaultValues[propName][value] = shorthand || value;\n }\n\n function registerCssClasses(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n registerCssClass(propName, arr[i]);\n }\n }\n }\n\n function getValidClass(args) {\n var widget = args.widget,\n propName = args.propName,\n value = args.value,\n fill = args.fill,\n cssProperties = kendo.cssProperties,\n defaultValues = cssProperties.defaultValues[propName],\n widgetProperties = cssProperties.propertyDictionary[widget],\n overridePrefix = args.prefix,\n widgetValues, validValue, prefix;\n\n if (!widgetProperties) {\n return \"\";\n }\n\n widgetValues = widgetProperties[propName];\n validValue = widgetValues ? widgetValues[value] || defaultValues[value] : defaultValues[value];\n\n if (validValue) {\n if (propName === \"themeColor\") {\n prefix = widgetProperties[PREFIX] + fill + \"-\";\n } else if (propName === \"positionMode\") {\n prefix = \"k-pos-\";\n } else if (propName === \"rounded\") {\n prefix = \"k-rounded-\";\n } else if (propName === \"resize\") {\n prefix = \"k-\";\n } else if (propName === \"overflow\") {\n prefix = \"k-overflow-\";\n } else {\n prefix = widgetProperties[PREFIX];\n }\n\n prefix = overridePrefix || prefix;\n\n return prefix + validValue;\n } else {\n return \"\";\n }\n }\n\n registerCssClasses(\"themeColor\", themeColorValues);\n registerCssClasses(\"fillMode\", fillValues);\n registerCssClasses(\"shape\", shapeValues);\n registerCssClasses(\"size\", sizeValues);\n registerCssClasses(\"positionMode\", positionModeValues);\n registerCssClasses(\"rounded\", roundedValues);\n registerCssClasses(\"resize\", resizeValues);\n registerCssClasses(\"overflow\", overflowValues);\n\n return {\n positionModeValues: positionModeValues,\n roundedValues: roundedValues,\n sizeValues: sizeValues,\n shapeValues: shapeValues,\n fillModeValues: fillValues,\n themeColorValues: themeColorValues,\n\n defaultValues: defaultValues,\n propertyDictionary: propertyDictionary,\n\n registerValues: registerValues,\n getValidClass: getValidClass,\n registerPrefix: registerPrefix\n };\n }());\n\n //To do: delete below after implementing new styles and classes for BottomNavigation\n kendo.registerCssClass = function(propName, value, shorthand) {\n if (!kendo.propertyToCssClassMap[propName]) {\n kendo.propertyToCssClassMap[propName] = {};\n }\n\n kendo.propertyToCssClassMap[propName][value] = shorthand || value;\n };\n\n kendo.registerCssClasses = function(propName, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n kendo.registerCssClass(propName, arr[i][0], arr[i][1]);\n } else {\n kendo.registerCssClass(propName, arr[i]);\n }\n }\n };\n\n kendo.getValidCssClass = function(prefix, propName, value) {\n var validValue = kendo.propertyToCssClassMap[propName][value];\n\n if (validValue) {\n return prefix + validValue;\n }\n };\n\n kendo.propertyToCssClassMap = {};\n\n kendo.registerCssClasses(\"themeColor\", themeColorValues);\n kendo.registerCssClasses(\"fill\", fillValues);\n //kendo.registerCssClasses(\"postition\", postitionValues);\n kendo.registerCssClasses(\"shape\", shapeValues);\n kendo.registerCssClasses(\"size\", sizeValues);\n //kendo.registerCssClasses(\"align\", alignValues);\n kendo.registerCssClasses(\"positionMode\", positionModeValues);\n\n kendo.applyStylesFromKendoAttributes = function(element, styleProps) {\n var selector = styleProps.map(function (styleProp){ return (\"[\" + (kendo.attr((\"style-\" + styleProp))) + \"]\"); }).join(',');\n element.find(selector).addBack(selector).each(function (_, currentElement) {\n var $currentElement = $(currentElement);\n styleProps.forEach(function(styleProp) {\n var kendoAttr = kendo.attr((\"style-\" + styleProp));\n if ($currentElement.attr(kendoAttr)) {\n $currentElement.css(styleProp, $currentElement.attr(kendoAttr));\n $currentElement.removeAttr(kendoAttr);\n }\n });\n });\n };\n\n // jQuery deferred helpers\n\n // influenced from: https://gist.github.com/fearphage/4341799\n kendo.whenAll = function(array) {\n var resolveValues = arguments.length == 1 && Array.isArray(array) ? array : Array.prototype.slice.call(arguments),\n length = resolveValues.length,\n remaining = length,\n deferred = $.Deferred(),\n i = 0,\n failed = 0,\n rejectContexts = Array(length),\n rejectValues = Array(length),\n resolveContexts = Array(length),\n value;\n\n function updateFunc(index, contexts, values) {\n return function() {\n if (values != resolveValues) {\n failed++;\n }\n\n deferred.notifyWith(\n contexts[index] = this,\n values[index] = Array.prototype.slice.call(arguments)\n );\n\n if (!(--remaining)) {\n deferred[(!failed ? 'resolve' : 'reject') + 'With'](contexts, values);\n }\n };\n }\n\n for (; i < length; i++) {\n if ((value = resolveValues[i]) && kendo.isFunction(value.promise)) {\n value.promise()\n .done(updateFunc(i, resolveContexts, resolveValues))\n .fail(updateFunc(i, rejectContexts, rejectValues));\n }\n\n else {\n deferred.notifyWith(this, value);\n --remaining;\n }\n }\n\n if (!remaining) {\n deferred.resolveWith(resolveContexts, resolveValues);\n }\n\n return deferred.promise();\n };\n\n // kendo.saveAs -----------------------------------------------\n (function() {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $(\"
\").attr({\n action: proxyURL,\n method: \"POST\",\n target: proxyTarget\n });\n\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n data.contentType = parts[0].replace(\"data:\", \"\");\n data.base64 = parts[1];\n\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('').attr({\n value: data[name],\n name: name,\n type: \"hidden\"\n }).appendTo(form);\n }\n }\n\n form.appendTo(\"body\").submit().remove();\n }\n\n var fileSaver = document.createElement(\"a\");\n var downloadAttribute = \"download\" in fileSaver && !kendo.support.browser.edge;\n\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI; // could be a Blob object\n\n if (typeof dataURI == \"string\") {\n var parts = dataURI.split(\";base64,\");\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n }\n\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent(\"MouseEvents\");\n e.initMouseEvent(\"click\", true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function() {\n URL.revokeObjectURL(dataURI);\n });\n }\n\n kendo.saveAs = function(options) {\n var save = postToProxy;\n\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n })();\n\n // kendo proxySetters\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n\n Object.keys(data || {}).forEach(function(property) {\n Object.defineProperty(observable, property, {\n get: function() {\n return data[property];\n },\n set: function(value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n\n return observable;\n };\n\n kendo.getSeriesColors = function() {\n var seriesColorsTemplate = '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
',\n series = $(seriesColorsTemplate),\n colors = [];\n\n series.appendTo($('body'));\n\n series.each(function(i, item) {\n colors.push($(item).css(\"background-color\"));\n });\n\n series.remove();\n\n return colors;\n };\n\n kendo.isElement = function(element) {\n return element instanceof Element || element instanceof HTMLDocument;\n };\n\n // Kendo defaults\n (function() {\n\n kendo.defaults = kendo.defaults || {};\n kendo.setDefaults = function(key, value) {\n var path = key.split(\".\");\n var curr = kendo.defaults;\n\n key = path.pop();\n\n path.forEach(function(part) {\n if (curr[part] === undefined$1) {\n curr[part] = {};\n }\n\n curr = curr[part];\n });\n\n if (value.constructor === Object) {\n curr[key] = deepExtend({}, curr[key], value);\n } else {\n curr[key] = value;\n }\n };\n\n // Use external global flags for templates.\n kendo.debugTemplates = window.DEBUG_KENDO_TEMPLATES;\n\n // Setup default mediaQuery breakpoints\n kendo.setDefaults('breakpoints', defaultBreakpoints);\n })();\n\n // Implement type() as it has been depricated in jQuery\n (function() {\n kendo.class2type = {};\n\n jQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n function( _i, name ) {\n kendo.class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n } );\n\n kendo.type = function(obj) {\n if ( obj == null ) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ?\n kendo.class2type[Object.prototype.toString.call(obj)] || \"object\" :\n typeof obj;\n };\n }());\n\n var KendoLicensing = { validatePackage: function() {},setScriptKey: function() {} };\n\n window.KendoLicensing = {\n setScriptKey: KendoLicensing.setScriptKey\n };\n\n function validatePackage() {\n KendoLicensing.validatePackage(packageMetadata);\n }\n\n })(jQuery, window);\n var kendo$W = kendo;\n\n var __meta__$W = {\n id: \"fx\",\n name: \"Effects\",\n category: \"framework\",\n description: \"Required for animation effects in all Kendo UI widgets.\",\n depends: [ \"core\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n fx = kendo.effects,\n each = $.each,\n extend = $.extend,\n support = kendo.support,\n browser = support.browser,\n transforms = support.transforms,\n transitions = support.transitions,\n scaleProperties = { scale: 0, scalex: 0, scaley: 0, scale3d: 0 },\n translateProperties = { translate: 0, translatex: 0, translatey: 0, translate3d: 0 },\n hasZoom = (typeof document.documentElement.style.zoom !== \"undefined\") && !transforms,\n matrix3dRegExp = /matrix3?d?\\s*\\(.*,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?/i,\n cssParamsRegExp = /^(-?[\\d\\.\\-]+)?[\\w\\s]*,?\\s*(-?[\\d\\.\\-]+)?[\\w\\s]*/i,\n translateXRegExp = /translatex?$/i,\n oldEffectsRegExp = /(zoom|fade|expand)(\\w+)/,\n singleEffectRegExp = /(zoom|fade|expand)/,\n unitRegExp = /[xy]$/i,\n transformProps = [\"perspective\", \"rotate\", \"rotatex\", \"rotatey\", \"rotatez\", \"rotate3d\", \"scale\", \"scalex\", \"scaley\", \"scalez\", \"scale3d\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"translatez\", \"translate3d\", \"matrix\", \"matrix3d\"],\n transform2d = [\"rotate\", \"scale\", \"scalex\", \"scaley\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"matrix\"],\n transform2units = { \"rotate\": \"deg\", scale: \"\", skew: \"px\", translate: \"px\" },\n cssPrefix = transforms.css,\n round = Math.round,\n BLANK = \"\",\n PX = \"px\",\n NONE = \"none\",\n AUTO = \"auto\",\n WIDTH = \"width\",\n HEIGHT = \"height\",\n HIDDEN = \"hidden\",\n ORIGIN = \"origin\",\n ABORT_ID = \"abortId\",\n OVERFLOW = \"overflow\",\n TRANSLATE = \"translate\",\n POSITION = \"position\",\n COMPLETE_CALLBACK = \"completeCallback\",\n TRANSITION = cssPrefix + \"transition\",\n TRANSFORM = cssPrefix + \"transform\",\n BACKFACE = cssPrefix + \"backface-visibility\",\n PERSPECTIVE = cssPrefix + \"perspective\",\n DEFAULT_PERSPECTIVE = \"1500px\",\n TRANSFORM_PERSPECTIVE = \"perspective(\" + DEFAULT_PERSPECTIVE + \")\",\n directions = {\n left: {\n reverse: \"right\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: -1\n },\n right: {\n reverse: \"left\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: 1\n },\n down: {\n reverse: \"up\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: 1\n },\n up: {\n reverse: \"down\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: -1\n },\n top: {\n reverse: \"bottom\"\n },\n bottom: {\n reverse: \"top\"\n },\n \"in\": {\n reverse: \"out\",\n modifier: -1\n },\n out: {\n reverse: \"in\",\n modifier: 1\n },\n\n vertical: {\n reverse: \"vertical\"\n },\n\n horizontal: {\n reverse: \"horizontal\"\n }\n };\n\n kendo.directions = directions;\n\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n if (transitions) {\n return fx.stopQueue(this, clearQueue || false, gotoEnd || false);\n } else {\n return this.stop(clearQueue, gotoEnd);\n }\n }\n });\n\n /* jQuery support for all transform animations (FF 3.5/3.6, Opera 10.x, IE9 */\n\n if (transforms && !transitions) {\n each(transform2d, function(idx, value) {\n $.fn[value] = function(val) {\n if (typeof val == \"undefined\") {\n return animationProperty(this, value);\n } else {\n var that = $(this)[0],\n transformValue = value + \"(\" + val + transform2units[value.replace(unitRegExp, \"\")] + \")\";\n\n if (that.style.cssText.indexOf(TRANSFORM) == -1) {\n $(this).css(TRANSFORM, transformValue);\n } else {\n that.style.cssText = that.style.cssText.replace(new RegExp(value + \"\\\\(.*?\\\\)\", \"i\"), transformValue);\n }\n }\n return this;\n };\n\n $.fx.step[value] = function(fx) {\n $(fx.elem)[value](fx.now);\n };\n });\n\n var curProxy = $.fx.prototype.cur;\n $.fx.prototype.cur = function() {\n if (transform2d.indexOf(this.prop) != -1) {\n return parseFloat($(this.elem)[this.prop]());\n }\n\n return curProxy.apply(this, arguments);\n };\n }\n\n kendo.toggleClass = function(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n if (transitions) {\n options = extend({\n exclusive: \"all\",\n duration: 400,\n ease: \"ease-out\"\n }, options);\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease);\n setTimeout(function() {\n element.css(TRANSITION, \"\").css(HEIGHT);\n }, options.duration); // TODO: this should fire a kendoAnimate session instead.\n }\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n };\n\n kendo.parseEffects = function(input, mirror) {\n var effects = {};\n\n if (typeof input === \"string\") {\n each(input.split(\" \"), function(idx, value) {\n var redirectedEffect = !singleEffectRegExp.test(value),\n resolved = value.replace(oldEffectsRegExp, function(match, $1, $2) {\n return $1 + \":\" + $2.toLowerCase();\n }), // Support for old zoomIn/fadeOut style, now deprecated.\n effect = resolved.split(\":\"),\n direction = effect[1],\n effectBody = {};\n\n if (effect.length > 1) {\n effectBody.direction = (mirror && redirectedEffect ? directions[direction].reverse : direction);\n }\n\n effects[effect[0]] = effectBody;\n });\n } else {\n each(input, function(idx) {\n var direction = this.direction;\n\n if (direction && mirror && !singleEffectRegExp.test(idx)) {\n this.direction = directions[direction].reverse;\n }\n\n effects[idx] = this;\n });\n }\n\n return effects;\n };\n\n function parseInteger(value) {\n return parseInt(value, 10);\n }\n\n function parseCSS(element, property) {\n return parseInteger(element.css(property));\n }\n\n function keys(obj) {\n var acc = [];\n for (var propertyName in obj) {\n acc.push(propertyName);\n }\n return acc;\n }\n\n function strip3DTransforms(properties) {\n for (var key in properties) {\n if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) {\n delete properties[key];\n }\n }\n\n return properties;\n }\n\n function normalizeCSS(element, properties) {\n var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed;\n\n for (key in properties) {\n lowerKey = key.toLowerCase();\n isTransformed = transforms && transformProps.indexOf(lowerKey) != -1;\n\n if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) {\n delete properties[key];\n } else {\n value = properties[key];\n\n if (isTransformed) {\n transformation.push(key + \"(\" + value + \")\");\n } else {\n cssValues[key] = value;\n }\n }\n }\n\n if (transformation.length) {\n cssValues[TRANSFORM] = transformation.join(\" \");\n }\n\n return cssValues;\n }\n\n if (transitions) {\n extend(fx, {\n transition: function(element, properties, options) {\n var css,\n delay = 0,\n oldKeys = element.data(\"keys\") || [],\n timeoutID;\n\n options = extend({\n duration: 200,\n ease: \"ease-out\",\n complete: null,\n exclusive: \"all\"\n },\n options\n );\n\n var stopTransitionCalled = false;\n\n var stopTransition = function() {\n if (!stopTransitionCalled) {\n stopTransitionCalled = true;\n\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n\n element\n .removeData(ABORT_ID)\n .dequeue()\n .css(TRANSITION, \"\")\n .css(TRANSITION);\n\n options.complete.call(element);\n }\n };\n\n options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration;\n\n css = normalizeCSS(element, properties);\n\n $.merge(oldKeys, keys(css));\n\n if ($.hasOwnProperty(\"uniqueSort\")) {\n element\n .data(\"keys\", $.uniqueSort(oldKeys))\n .height();\n } else {\n element\n .data(\"keys\", $.unique(oldKeys))\n .height();\n }\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease).css(TRANSITION);\n element.css(css).css(TRANSFORM);\n\n /**\n * Use transitionEnd event for browsers who support it - but duplicate it with setTimeout, as the transitionEnd event will not be triggered if no CSS properties change.\n * This should be cleaned up at some point (widget by widget), and refactored to widgets not relying on the complete callback if no transition occurs.\n *\n * For IE9 and below, resort to setTimeout.\n */\n if (transitions.event) {\n element.one(transitions.event, stopTransition);\n if (options.duration !== 0) {\n delay = 500;\n }\n }\n\n timeoutID = setTimeout(stopTransition, options.duration + delay);\n element.data(ABORT_ID, timeoutID);\n element.data(COMPLETE_CALLBACK, stopTransition);\n },\n\n stopQueue: function(element, clearQueue, gotoEnd) {\n var cssValues,\n taskKeys = element.data(\"keys\"),\n retainPosition = (!gotoEnd && taskKeys),\n completeCallback = element.data(COMPLETE_CALLBACK);\n\n if (retainPosition) {\n cssValues = kendo.getComputedStyles(element[0], taskKeys);\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n if (retainPosition) {\n element.css(cssValues);\n }\n\n return element\n .removeData(\"keys\")\n .stop(clearQueue);\n }\n });\n }\n\n function animationProperty(element, property) {\n if (transforms) {\n var transform = element.css(TRANSFORM);\n if (transform == NONE) {\n return property == \"scale\" ? 1 : 0;\n }\n\n var match = transform.match(new RegExp(property + \"\\\\s*\\\\(([\\\\d\\\\w\\\\.]+)\")),\n computed = 0;\n\n if (match) {\n computed = parseInteger(match[1]);\n } else {\n match = transform.match(matrix3dRegExp) || [0, 0, 0, 0, 0];\n property = property.toLowerCase();\n\n if (translateXRegExp.test(property)) {\n computed = parseFloat(match[3] / match[2]);\n } else if (property == \"translatey\") {\n computed = parseFloat(match[4] / match[2]);\n } else if (property == \"scale\") {\n computed = parseFloat(match[2]);\n } else if (property == \"rotate\") {\n computed = parseFloat(Math.atan2(match[2], match[1]));\n }\n }\n\n return computed;\n } else {\n return parseFloat(element.css(property));\n }\n }\n\n var EffectSet = kendo.Class.extend({\n init: function(element, options) {\n var that = this;\n\n that.element = element;\n that.effects = [];\n that.options = options;\n that.restore = [];\n },\n\n run: function(effects) {\n var that = this,\n effect,\n idx, jdx,\n length = effects.length,\n element = that.element,\n options = that.options,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children,\n childrenLength;\n\n that.effects = effects;\n\n deferred.done(that.complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n effect = effects[idx];\n\n effect.setReverse(options.reverse);\n effect.setOptions(options);\n\n that.addRestoreProperties(effect.restore);\n\n effect.prepare(start, end);\n\n children = effect.children();\n\n for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx ++) {\n children[jdx].duration(options.duration).run();\n }\n }\n\n // legacy support for options.properties\n for (var effectName in options.effects) {\n extend(end, options.effects[effectName].properties);\n }\n\n // Show the element initially\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms && !options.reset) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start)\n .css(TRANSFORM); // Nudge\n\n for (idx = 0; idx < length; idx ++) {\n effects[idx].setup();\n }\n\n if (options.init) {\n options.init();\n }\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, extend({}, options, { complete: deferred.resolve }));\n\n return deferred.promise();\n },\n\n stop: function() {\n $(this.element).kendoStop(true, true);\n },\n\n addRestoreProperties: function(restore) {\n var element = this.element,\n value,\n i = 0,\n length = restore.length;\n\n for (; i < length; i ++) {\n value = restore[i];\n\n this.restore.push(value);\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n complete: function() {\n var that = this,\n idx = 0,\n element = that.element,\n options = that.options,\n effects = that.effects,\n length = effects.length;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n this.restoreCallback();\n\n if (hasZoom && !transforms) {\n setTimeout(this.restoreCallback.bind(this), 0); // Again jQuery callback in IE8-\n }\n\n for (; idx < length; idx ++) {\n effects[idx].teardown();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n }\n });\n\n fx.promise = function(element, options) {\n var effects = [],\n effectClass,\n effectSet = new EffectSet(element, options),\n parsedEffects = kendo.parseEffects(options.effects),\n effect;\n\n options.effects = parsedEffects;\n\n for (var effectName in parsedEffects) {\n effectClass = fx[capitalize(effectName)];\n\n if (effectClass) {\n effect = new effectClass(element, parsedEffects[effectName].direction);\n effects.push(effect);\n }\n }\n\n if (effects[0]) {\n effectSet.run(effects);\n } else { // Not sure how would an fx promise reach this state - means that you call kendoAnimate with no valid effects? Why?\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.init) {\n options.init();\n }\n\n element.dequeue();\n effectSet.complete();\n }\n };\n\n extend(fx, {\n animate: function(elements, properties, options) {\n var useTransition = options.transition !== false;\n delete options.transition;\n\n if (transitions && \"transition\" in fx && useTransition) {\n fx.transition(elements, properties, options);\n } else {\n if (transforms) {\n elements.animate(strip3DTransforms(properties), { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n } else {\n elements.each(function() {\n var element = $(this),\n multiple = {};\n\n each(transformProps, function(idx, value) { // remove transforms to avoid IE and older browsers confusion\n var params,\n currentValue = properties ? properties[value] + \" \" : null; // We need to match\n\n if (currentValue) {\n var single = properties;\n\n if (value in scaleProperties && properties[value] !== undefined$1) {\n params = currentValue.match(cssParamsRegExp);\n if (transforms) {\n extend(single, { scale: +params[0] });\n }\n } else {\n if (value in translateProperties && properties[value] !== undefined$1) {\n var position = element.css(POSITION),\n isFixed = (position == \"absolute\" || position == \"fixed\");\n\n if (!element.data(TRANSLATE)) {\n if (isFixed) {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"top\") || 0,\n left: parseCSS(element, \"left\") || 0,\n bottom: parseCSS(element, \"bottom\"),\n right: parseCSS(element, \"right\")\n });\n } else {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"marginTop\") || 0,\n left: parseCSS(element, \"marginLeft\") || 0\n });\n }\n }\n\n var originalPosition = element.data(TRANSLATE);\n\n params = currentValue.match(cssParamsRegExp);\n if (params) {\n\n var dX = value == TRANSLATE + \"y\" ? +null : +params[1],\n dY = value == TRANSLATE + \"y\" ? +params[1] : +params[2];\n\n if (isFixed) {\n if (!isNaN(originalPosition.right)) {\n if (!isNaN(dX)) { extend(single, { right: originalPosition.right - dX }); }\n } else {\n if (!isNaN(dX)) { extend(single, { left: originalPosition.left + dX }); }\n }\n\n if (!isNaN(originalPosition.bottom)) {\n if (!isNaN(dY)) { extend(single, { bottom: originalPosition.bottom - dY }); }\n } else {\n if (!isNaN(dY)) { extend(single, { top: originalPosition.top + dY }); }\n }\n } else {\n if (!isNaN(dX)) { extend(single, { marginLeft: originalPosition.left + dX }); }\n if (!isNaN(dY)) { extend(single, { marginTop: originalPosition.top + dY }); }\n }\n }\n }\n }\n\n if (!transforms && value != \"scale\" && value in single) {\n delete single[value];\n }\n\n if (single) {\n extend(multiple, single);\n }\n }\n });\n\n if (browser.msie) {\n delete multiple.scale;\n }\n\n element.animate(multiple, { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n });\n }\n }\n }\n });\n\n fx.animatedPromise = fx.promise;\n\n var Effect = kendo.Class.extend({\n init: function(element, direction) {\n var that = this;\n that.element = element;\n that._direction = direction;\n that.options = {};\n that._additionalEffects = [];\n\n if (!that.restore) {\n that.restore = [];\n }\n },\n\n // Public API\n reverse: function() {\n this._reverse = true;\n return this.run();\n },\n\n play: function() {\n this._reverse = false;\n return this.run();\n },\n\n add: function(additional) {\n this._additionalEffects.push(additional);\n return this;\n },\n\n direction: function(value) {\n this._direction = value;\n return this;\n },\n\n duration: function(duration) {\n this._duration = duration;\n return this;\n },\n\n compositeRun: function() {\n var that = this,\n effectSet = new EffectSet(that.element, { reverse: that._reverse, duration: that._duration }),\n effects = that._additionalEffects.concat([ that ]);\n\n return effectSet.run(effects);\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n idx = 0,\n restore = that.restore,\n length = restore.length,\n value,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children = that.children(),\n childrenLength = children.length;\n\n deferred.done(that._complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n value = restore[idx];\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].duration(that._duration).run();\n }\n\n that.prepare(start, end);\n\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start).css(TRANSFORM); // Trick webkit into re-rendering\n\n that.setup();\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, { duration: that._duration, complete: deferred.resolve });\n\n return deferred.promise();\n },\n\n stop: function() {\n var idx = 0,\n children = this.children(),\n childrenLength = children.length;\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].stop();\n }\n\n $(this.element).kendoStop(true, true);\n return this;\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n _complete: function() {\n var that = this,\n element = that.element;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n that.restoreCallback();\n\n if (that.shouldHide()) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (hasZoom && !transforms) {\n setTimeout(that.restoreCallback.bind(that), 0); // Again jQuery callback in IE8-\n }\n\n that.teardown();\n },\n\n /////////////////////////// Support for kendo.animate;\n setOptions: function(options) {\n extend(true, this.options, options);\n },\n\n children: function() {\n return [];\n },\n\n shouldHide: $.noop,\n\n setup: $.noop,\n prepare: $.noop,\n teardown: $.noop,\n directions: [],\n\n setReverse: function(reverse) {\n this._reverse = reverse;\n return this;\n }\n });\n\n function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1);\n }\n\n function createEffect(name, definition) {\n var effectClass = Effect.extend(definition),\n directions = effectClass.prototype.directions;\n\n fx[capitalize(name)] = effectClass;\n\n fx.Element.prototype[name] = function(direction, opt1, opt2, opt3) {\n return new effectClass(this.element, direction, opt1, opt2, opt3);\n };\n\n each(directions, function(idx, theDirection) {\n fx.Element.prototype[name + capitalize(theDirection)] = function(opt1, opt2, opt3) {\n return new effectClass(this.element, theDirection, opt1, opt2, opt3);\n };\n });\n }\n\n var FOUR_DIRECTIONS = [\"left\", \"right\", \"up\", \"down\"],\n IN_OUT = [\"in\", \"out\"];\n\n createEffect(\"slideIn\", {\n directions: FOUR_DIRECTIONS,\n\n divisor: function(value) {\n this.options.divisor = value;\n return this;\n },\n\n prepare: function(start, end) {\n var that = this,\n tmp,\n element = that.element,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n direction = directions[that._direction],\n offset = -direction.modifier * (direction.vertical ? outerHeight(element) : outerWidth(element)),\n startValue = offset / (that.options && that.options.divisor || 1) + PX,\n endValue = \"0px\";\n\n if (that._reverse) {\n tmp = start;\n start = end;\n end = tmp;\n }\n\n if (transforms) {\n start[direction.transition] = startValue;\n end[direction.transition] = endValue;\n } else {\n start[direction.property] = startValue;\n end[direction.property] = endValue;\n }\n }\n });\n\n createEffect(\"tile\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, previous) {\n Effect.prototype.init.call(this, element, direction);\n this.options = { previous: previous };\n },\n\n previousDivisor: function(value) {\n this.options.previousDivisor = value;\n return this;\n },\n\n children: function() {\n var that = this,\n reverse = that._reverse,\n previous = that.options.previous,\n divisor = that.options.previousDivisor || 1,\n dir = that._direction;\n\n var children = [ kendo.fx(that.element).slideIn(dir).setReverse(reverse) ];\n\n if (previous) {\n children.push( kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse) );\n }\n\n return children;\n }\n });\n\n function createToggleEffect(name, property, defaultStart, defaultEnd) {\n createEffect(name, {\n directions: IN_OUT,\n\n startValue: function(value) {\n this._startValue = value;\n return this;\n },\n\n endValue: function(value) {\n this._endValue = value;\n return this;\n },\n\n shouldHide: function() {\n return this._shouldHide;\n },\n\n prepare: function(start, end) {\n var that = this,\n startValue,\n endValue,\n out = this._direction === \"out\",\n startDataValue = that.element.data(property),\n startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart);\n\n if (startDataValueIsSet) {\n startValue = startDataValue;\n } else if (typeof this._startValue !== \"undefined\") {\n startValue = this._startValue;\n } else {\n startValue = out ? defaultStart : defaultEnd;\n }\n\n if (typeof this._endValue !== \"undefined\") {\n endValue = this._endValue;\n } else {\n endValue = out ? defaultEnd : defaultStart;\n }\n\n if (this._reverse) {\n start[property] = endValue;\n end[property] = startValue;\n } else {\n start[property] = startValue;\n end[property] = endValue;\n }\n\n that._shouldHide = end[property] === defaultEnd;\n }\n });\n }\n\n createToggleEffect(\"fade\", \"opacity\", 1, 0);\n createToggleEffect(\"zoom\", \"scale\", 1, 0.01);\n\n createEffect(\"slideMargin\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n origin = element.data(ORIGIN),\n offset = options.offset,\n margin,\n reverse = that._reverse;\n\n if (!reverse && origin === null) {\n element.data(ORIGIN, parseFloat(element.css(\"margin-\" + options.axis)));\n }\n\n margin = (element.data(ORIGIN) || 0);\n end[\"margin-\" + options.axis] = !reverse ? margin + offset : margin;\n }\n });\n\n createEffect(\"slideTo\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n offset = options.offset.split(\",\"),\n reverse = that._reverse;\n\n if (transforms) {\n end.translatex = !reverse ? offset[0] : 0;\n end.translatey = !reverse ? offset[1] : 0;\n } else {\n end.left = !reverse ? offset[0] : 0;\n end.top = !reverse ? offset[1] : 0;\n }\n element.css(\"left\");\n }\n });\n\n createEffect(\"expand\", {\n directions: [\"horizontal\", \"vertical\"],\n\n restore: [ OVERFLOW ],\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n reverse = that._reverse,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n setLength = element[0].style[property],\n oldLength = element.data(property),\n length = parseFloat(oldLength || setLength),\n realLength = round(element.css(property, AUTO)[property]());\n\n start.overflow = HIDDEN;\n\n length = (options && options.reset) ? realLength || length : length || realLength;\n\n end[property] = (reverse ? 0 : length) + PX;\n start[property] = (reverse ? length : 0) + PX;\n\n if (oldLength === undefined$1) {\n element.data(property, setLength);\n }\n },\n\n shouldHide: function() {\n return this._reverse;\n },\n\n teardown: function() {\n var that = this,\n element = that.element,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n length = element.data(property);\n\n if (length == AUTO || length === BLANK) {\n setTimeout(function() { element.css(property, AUTO).css(property); }, 0); // jQuery animate complete callback in IE is called before the last animation step!\n }\n }\n });\n\n var TRANSFER_START_STATE = { position: \"absolute\", marginLeft: 0, marginTop: 0, scale: 1 };\n /**\n * Intersection point formulas are taken from here - http://zonalandeducation.com/mmts/intersections/intersectionOfTwoLines1/intersectionOfTwoLines1.html\n * Formula for a linear function from two points from here - http://demo.activemath.org/ActiveMath2/search/show.cmd?id=mbase://AC_UK_calculus/functions/ex_linear_equation_two_points\n * The transform origin point is the intersection point of the two lines from the top left corners/top right corners of the element and target.\n * The math and variables below MAY BE SIMPLIFIED (zeroes removed), but this would make the formula too cryptic.\n */\n createEffect(\"transfer\", {\n init: function(element, target) {\n this.element = element;\n this.options = { target: target };\n this.restore = [];\n },\n\n setup: function() {\n this.element.appendTo(document.body);\n },\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n outerBox = fx.box(element),\n innerBox = fx.box(that.options.target),\n currentScale = animationProperty(element, \"scale\"),\n scale = fx.fillScale(innerBox, outerBox),\n transformOrigin = fx.transformOrigin(innerBox, outerBox);\n\n extend(start, TRANSFER_START_STATE);\n end.scale = 1;\n\n element.css(TRANSFORM, \"scale(1)\").css(TRANSFORM);\n element.css(TRANSFORM, \"scale(\" + currentScale + \")\");\n\n start.top = outerBox.top;\n start.left = outerBox.left;\n start.transformOrigin = transformOrigin.x + PX + \" \" + transformOrigin.y + PX;\n\n if (that._reverse) {\n start.scale = scale;\n } else {\n end.scale = scale;\n }\n }\n });\n\n\n var CLIPS = {\n top: \"rect(auto auto $size auto)\",\n bottom: \"rect($size auto auto auto)\",\n left: \"rect(auto $size auto auto)\",\n right: \"rect(auto auto auto $size)\"\n };\n\n var ROTATIONS = {\n top: { start: \"rotatex(0deg)\", end: \"rotatex(180deg)\" },\n bottom: { start: \"rotatex(-180deg)\", end: \"rotatex(0deg)\" },\n left: { start: \"rotatey(0deg)\", end: \"rotatey(-180deg)\" },\n right: { start: \"rotatey(180deg)\", end: \"rotatey(0deg)\" }\n };\n\n function clipInHalf(container, direction) {\n var vertical = kendo.directions[direction].vertical,\n size = (container[vertical ? HEIGHT : WIDTH]() / 2) + \"px\";\n\n return CLIPS[direction].replace(\"$size\", size);\n }\n\n createEffect(\"turningPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n prepare: function(start, end) {\n var that = this,\n reverse = that._reverse,\n direction = reverse ? directions[that._direction].reverse : that._direction,\n rotation = ROTATIONS[direction];\n\n start.zIndex = 1;\n\n if (that._clipInHalf) {\n start.clip = clipInHalf(that._container, kendo.directions[direction].reverse);\n }\n\n start[BACKFACE] = HIDDEN;\n\n end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end);\n start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start);\n },\n\n setup: function() {\n this._container.append(this.element);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n clipInHalf: function(value) {\n this._clipInHalf = value;\n return this;\n },\n\n temporary: function() {\n this.element.addClass('temp-page');\n return this;\n }\n });\n\n createEffect(\"staticPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n restore: [\"clip\"],\n\n prepare: function(start, end) {\n var that = this,\n direction = that._reverse ? directions[that._direction].reverse : that._direction;\n\n start.clip = clipInHalf(that._container, direction);\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n }\n });\n\n createEffect(\"pageturn\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n faceClone = options.face.clone(true).removeAttr(\"id\"),\n backClone = options.back.clone(true).removeAttr(\"id\"),\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse),\n kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse),\n kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse)\n ];\n },\n\n prepare: function(start, end) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n // hack to trigger transition end.\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n teardown: function() {\n this.element.find(\".temp-page\").remove();\n }\n });\n\n createEffect(\"flip\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse)\n ];\n },\n\n prepare: function(start) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n }\n });\n\n var RESTORE_OVERFLOW = !support.mobileOS.android;\n var IGNORE_TRANSITION_EVENT_SELECTOR = \".km-touch-scrollbar, .km-actionsheet-wrapper\";\n\n createEffect(\"replace\", {\n _before: $.noop,\n _after: $.noop,\n init: function(element, previous, transitionClass) {\n Effect.prototype.init.call(this, element);\n this._previous = $(previous);\n this._transitionClass = transitionClass;\n },\n\n duration: function() {\n throw new Error(\"The replace effect does not support duration setting; the effect duration may be customized through the transition class rule\");\n },\n\n beforeTransition: function(callback) {\n this._before = callback;\n return this;\n },\n\n afterTransition: function(callback) {\n this._after = callback;\n return this;\n },\n\n _both: function() {\n return $().add(this._element).add(this._previous);\n },\n\n _containerClass: function() {\n var direction = this._direction,\n containerClass = \"k-fx k-fx-start k-fx-\" + this._transitionClass;\n\n if (direction) {\n containerClass += \" k-fx-\" + direction;\n }\n\n if (this._reverse) {\n containerClass += \" k-fx-reverse\";\n }\n\n return containerClass;\n },\n\n complete: function(e) {\n if (!this.deferred || (e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR))) {\n return;\n }\n\n var container = this.container;\n\n container\n .removeClass(\"k-fx-end\")\n .removeClass(this._containerClass())\n .off(transitions.event, this.completeProxy);\n\n this._previous.hide().removeClass(\"k-fx-current\");\n this.element.removeClass(\"k-fx-next\");\n\n if (RESTORE_OVERFLOW) {\n container.css(OVERFLOW, \"\");\n }\n\n if (!this.isAbsolute) {\n this._both().css(POSITION, \"\");\n }\n\n this.deferred.resolve();\n delete this.deferred;\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n previous = that._previous,\n container = element.parents().filter(previous.parents()).first(),\n both = that._both(),\n deferred = $.Deferred(),\n originalPosition = element.css(POSITION),\n originalOverflow;\n\n // edge case for grid/scheduler, where the previous is already destroyed.\n if (!container.length) {\n container = element.parent();\n }\n\n this.container = container;\n this.deferred = deferred;\n this.isAbsolute = originalPosition == \"absolute\";\n\n if (!this.isAbsolute) {\n both.css(POSITION, \"absolute\");\n }\n\n if (RESTORE_OVERFLOW) {\n originalOverflow = container.css(OVERFLOW);\n container.css(OVERFLOW, \"hidden\");\n }\n\n if (!transitions) {\n this.complete();\n } else {\n element.addClass(\"k-fx-hidden\");\n\n container.addClass(this._containerClass());\n\n this.completeProxy = this.complete.bind(this);\n container.on(transitions.event, this.completeProxy);\n\n kendo.animationFrame(function() {\n element.removeClass(\"k-fx-hidden\").addClass(\"k-fx-next\");\n previous.css(\"display\", \"\").addClass(\"k-fx-current\");\n that._before(previous, element);\n kendo.animationFrame(function() {\n container.removeClass(\"k-fx-start\").addClass(\"k-fx-end\");\n that._after(previous, element);\n });\n });\n }\n\n return deferred.promise();\n },\n\n stop: function() {\n this.complete();\n }\n });\n\n var Animation = kendo.Class.extend({\n init: function() {\n var that = this;\n that._tickProxy = that._tick.bind(that);\n that._started = false;\n },\n\n tick: $.noop,\n done: $.noop,\n onEnd: $.noop,\n onCancel: $.noop,\n\n start: function() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n kendo.animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n },\n\n enabled: function() {\n return true;\n },\n\n cancel: function() {\n this._started = false;\n this.onCancel();\n },\n\n _tick: function() {\n var that = this;\n if (!that._started) { return; }\n\n that.tick();\n\n if (!that.done()) {\n kendo.animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n });\n\n var Transition = Animation.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Animation.fn.init.call(that);\n },\n\n done: function() {\n return this.timePassed() >= this.duration;\n },\n\n timePassed: function() {\n return Math.min(this.duration, (new Date()) - this.startDate);\n },\n\n moveTo: function(options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n\n that.duration = typeof options.duration == \"number\" ? options.duration : 300;\n\n that.tick = that._easeProxy(options.ease);\n\n that.startDate = new Date();\n that.start();\n },\n\n _easeProxy: function(ease) {\n var that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n });\n\n extend(Transition, {\n easeOutExpo: function(t, b, c, d) {\n return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n\n easeOutBack: function(t, b, c, d, s) {\n s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n });\n\n fx.Animation = Animation;\n fx.Transition = Transition;\n fx.createEffect = createEffect;\n\n fx.box = function(element) {\n element = $(element);\n var result = element.offset();\n result.width = kendo._outerWidth(element);\n result.height = kendo._outerHeight(element);\n return result;\n };\n\n fx.transformOrigin = function(inner, outer) {\n var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width),\n y = (inner.top - outer.top) * outer.height / (outer.height - inner.height);\n\n return {\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y\n };\n };\n\n fx.fillScale = function(inner, outer) {\n return Math.min(inner.width / outer.width, inner.height / outer.height);\n };\n\n fx.fitScale = function(inner, outer) {\n return Math.max(inner.width / outer.width, inner.height / outer.height);\n };\n })(window.kendo.jQuery);\n var kendo$V = kendo;\n\n var __meta__$V = {\n id: \"router\",\n name: \"Router\",\n category: \"framework\",\n description: \"The Router class is responsible for tracking the application state and navigating between the application states.\",\n depends: [ \"core\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n support = kendo.support,\n location = window.location,\n history = window.history,\n CHECK_URL_INTERVAL = 50,\n BROKEN_BACK_NAV = kendo.support.browser.msie,\n hashStrip = /^#*/,\n document = window.document;\n\n function absoluteURL(path, pathPrefix) {\n if (!pathPrefix) {\n return path;\n }\n\n if (path + \"/\" === pathPrefix) {\n path = pathPrefix;\n }\n\n var regEx = new RegExp(\"^\" + pathPrefix, \"i\");\n\n if (!regEx.test(path)) {\n path = pathPrefix + \"/\" + path;\n }\n\n return location.protocol + '//' + (location.host + \"/\" + path).replace(/\\/\\/+/g, '/');\n }\n\n function hashDelimiter(bang) {\n return bang ? \"#!\" : \"#\";\n }\n\n function locationHash(hashDelimiter) {\n var href = location.href;\n\n // ignore normal anchors if in hashbang mode - however, still return \"\" if no hash present\n if (hashDelimiter === \"#!\" && href.indexOf(\"#\") > -1 && href.indexOf(\"#!\") < 0) {\n return null;\n }\n\n return href.split(hashDelimiter)[1] || \"\";\n }\n\n function stripRoot(root, url) {\n if (url.indexOf(root) === 0) {\n return (url.substr(root.length)).replace(/\\/\\//g, '/');\n } else {\n return url;\n }\n }\n\n var HistoryAdapter = kendo.Class.extend({\n back: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.back(); });\n } else {\n history.back();\n }\n },\n\n forward: function() {\n if (BROKEN_BACK_NAV) {\n setTimeout(function() { history.forward(); });\n } else {\n history.forward();\n }\n },\n\n length: function() {\n return history.length;\n },\n\n replaceLocation: function(url) {\n location.replace(url);\n }\n });\n\n var PushStateAdapter = HistoryAdapter.extend({\n init: function(root) {\n this.root = root;\n },\n\n navigate: function(to) {\n history.pushState({}, document.title, absoluteURL(to, this.root));\n },\n\n replace: function(to) {\n history.replaceState({}, document.title, absoluteURL(to, this.root));\n },\n\n normalize: function(url) {\n return stripRoot(this.root, url);\n },\n\n current: function() {\n var current = location.pathname;\n\n if (location.search) {\n current += location.search;\n }\n\n return stripRoot(this.root, current);\n },\n\n change: function(callback) {\n $(window).bind(\"popstate.kendo\", callback);\n },\n\n stop: function() {\n $(window).unbind(\"popstate.kendo\");\n },\n\n normalizeCurrent: function(options) {\n var fixedUrl,\n root = options.root,\n pathname = location.pathname,\n hash = locationHash(hashDelimiter(options.hashBang));\n\n if (root === pathname + \"/\") {\n fixedUrl = root;\n }\n\n if (root === pathname && hash) {\n fixedUrl = absoluteURL(hash.replace(hashStrip, ''), root);\n }\n\n if (fixedUrl) {\n history.pushState({}, document.title, fixedUrl);\n }\n }\n });\n\n function fixHash(url) {\n return url.replace(/^(#)?/, \"#\");\n }\n\n function fixBang(url) {\n return url.replace(/^(#(!)?)?/, \"#!\");\n }\n\n var HashAdapter = HistoryAdapter.extend({\n init: function(bang) {\n this._id = kendo.guid();\n this.prefix = hashDelimiter(bang);\n this.fix = bang ? fixBang : fixHash;\n },\n\n navigate: function(to) {\n location.hash = this.fix(to);\n },\n\n replace: function(to) {\n this.replaceLocation(this.fix(to));\n },\n\n normalize: function(url) {\n if (url.indexOf(this.prefix) < 0) {\n return url;\n } else {\n return url.split(this.prefix)[1];\n }\n },\n\n change: function(callback) {\n if (support.hashChange) {\n $(window).on(\"hashchange.\" + this._id, callback);\n } else {\n this._interval = setInterval(callback, CHECK_URL_INTERVAL);\n }\n },\n\n stop: function() {\n $(window).off(\"hashchange.\" + this._id);\n clearInterval(this._interval);\n },\n\n current: function() {\n return locationHash(this.prefix);\n },\n\n normalizeCurrent: function(options) {\n var pathname = location.pathname,\n root = options.root;\n\n if (options.pushState && root !== pathname) {\n this.replaceLocation(root + this.prefix + stripRoot(root, pathname));\n return true; // browser will reload at this point.\n }\n\n return false;\n }\n });\n\n var History = kendo.Observable.extend({\n start: function(options) {\n options = options || {};\n\n this.bind([CHANGE, BACK, SAME], options);\n\n if (this._started) {\n return;\n }\n\n this._started = true;\n\n options.root = options.root || \"/\";\n\n var adapter = this.createAdapter(options),\n current;\n\n // adapter may reload the document\n if (adapter.normalizeCurrent(options)) {\n return;\n }\n\n current = adapter.current();\n\n $.extend(this, {\n adapter: adapter,\n root: options.root,\n historyLength: adapter.length(),\n current: current,\n locations: [current]\n });\n\n adapter.change(this._checkUrl.bind(this));\n },\n\n createAdapter: function(options) {\n return support.pushState && options.pushState ? new PushStateAdapter(options.root) : new HashAdapter(options.hashBang);\n },\n\n stop: function() {\n if (!this._started) {\n return;\n }\n this.adapter.stop();\n this.unbind(CHANGE);\n this._started = false;\n },\n\n change: function(callback) {\n this.bind(CHANGE, callback);\n },\n\n replace: function(to, silent) {\n\n this._navigate(to, silent, function(adapter) {\n adapter.replace(to);\n this.locations[this.locations.length - 1] = this.current;\n });\n },\n\n navigate: function(to, silent) {\n if (to === \"#:back\") {\n this.backCalled = true;\n this.adapter.back();\n return;\n }\n\n this._navigate(to, silent, function(adapter) {\n adapter.navigate(to);\n this.locations.push(this.current);\n });\n },\n\n _navigate: function(to, silent, callback) {\n var adapter = this.adapter;\n\n to = adapter.normalize(to);\n\n if (this.current === to || this.current === decodeURIComponent(to)) {\n this.trigger(SAME);\n return;\n }\n\n if (!silent) {\n if (this.trigger(CHANGE, { url: to, decode: false })) {\n return;\n }\n }\n\n this.current = to;\n\n callback.call(this, adapter);\n\n this.historyLength = adapter.length();\n },\n\n _checkUrl: function() {\n var adapter = this.adapter,\n current = adapter.current(),\n newLength = adapter.length(),\n navigatingInExisting = this.historyLength === newLength,\n back = current === this.locations[this.locations.length - 2] && navigatingInExisting,\n backCalled = this.backCalled,\n prev = this.current;\n\n if (current === null || this.current === current || this.current === decodeURIComponent(current)) {\n return true;\n }\n\n this.historyLength = newLength;\n this.backCalled = false;\n\n this.current = current;\n\n if (back && this.trigger(\"back\", { url: prev, to: current })) {\n adapter.forward();\n this.current = prev;\n return;\n }\n\n if (this.trigger(CHANGE, { url: current, backButtonPressed: !backCalled })) {\n if (back) {\n adapter.forward();\n } else {\n adapter.back();\n this.historyLength --;\n }\n this.current = prev;\n return;\n }\n\n if (back) {\n this.locations.pop();\n } else {\n this.locations.push(current);\n }\n }\n });\n\n kendo.History = History;\n kendo.History.HistoryAdapter = HistoryAdapter;\n kendo.History.HashAdapter = HashAdapter;\n kendo.History.PushStateAdapter = PushStateAdapter;\n kendo.absoluteURL = absoluteURL;\n kendo.history = new History();\n })(window.kendo.jQuery);\n var kendo$U = kendo;\n\n (function() {\n var kendo = window.kendo,\n history = kendo.history,\n Observable = kendo.Observable,\n INIT = \"init\",\n ROUTE_MISSING = \"routeMissing\",\n CHANGE = \"change\",\n BACK = \"back\",\n SAME = \"same\",\n optionalParam = /\\((.*?)\\)/g,\n namedParam = /(\\(\\?)?:\\w+/g,\n splatParam = /\\*\\w+/g,\n escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n function namedParamReplace(match, optional) {\n return optional ? match : '([^\\/]+)';\n }\n\n function routeToRegExp(route, ignoreCase) {\n return new RegExp('^' + route\n .replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, namedParamReplace)\n .replace(splatParam, '(.*?)') + '$', ignoreCase ? \"i\" : \"\");\n }\n\n function stripUrl(url) {\n return url.replace(/(\\?.*)|(#.*)/g, \"\");\n }\n\n var Route = kendo.Class.extend({\n init: function(route, callback, ignoreCase) {\n if (!(route instanceof RegExp)) {\n route = routeToRegExp(route, ignoreCase);\n }\n\n this.route = route;\n this._callback = callback;\n },\n\n callback: function(url, back, decode) {\n var params,\n idx = 0,\n length,\n queryStringParams = kendo.parseQueryStringParams(url);\n queryStringParams._back = back;\n\n url = stripUrl(url);\n params = this.route.exec(url).slice(1);\n length = params.length;\n\n if (decode) {\n for (; idx < length; idx ++) {\n if (typeof params[idx] !== 'undefined') {\n params[idx] = decodeURIComponent(params[idx]);\n }\n }\n }\n\n params.push(queryStringParams);\n\n this._callback.apply(null, params);\n },\n\n worksWith: function(url, back, decode) {\n if (this.route.test(stripUrl(url))) {\n this.callback(url, back, decode);\n return true;\n } else {\n return false;\n }\n }\n });\n\n var Router = Observable.extend({\n init: function(options) {\n if (!options) {\n options = {};\n }\n\n Observable.fn.init.call(this);\n\n this.routes = [];\n this.pushState = options.pushState;\n this.hashBang = options.hashBang;\n this.root = options.root;\n this.ignoreCase = options.ignoreCase !== false;\n\n this.bind([INIT, ROUTE_MISSING, CHANGE, SAME, BACK], options);\n },\n\n destroy: function() {\n history.unbind(CHANGE, this._urlChangedProxy);\n history.unbind(SAME, this._sameProxy);\n history.unbind(BACK, this._backProxy);\n this.unbind();\n },\n\n start: function() {\n var that = this,\n sameProxy = function() { that._same(); },\n backProxy = function(e) { that._back(e); },\n urlChangedProxy = function(e) { that._urlChanged(e); };\n\n history.start({\n same: sameProxy,\n change: urlChangedProxy,\n back: backProxy,\n pushState: that.pushState,\n hashBang: that.hashBang,\n root: that.root\n });\n\n // eslint-disable-next-line no-undef\n var initEventObject = { url: history.current || \"/\", preventDefault: $.noop };\n\n if (!that.trigger(INIT, initEventObject)) {\n that._urlChanged(initEventObject);\n }\n\n this._urlChangedProxy = urlChangedProxy;\n this._backProxy = backProxy;\n },\n\n route: function(route, callback) {\n this.routes.push(new Route(route, callback, this.ignoreCase));\n },\n\n navigate: function(url, silent) {\n kendo.history.navigate(url, silent);\n },\n\n replace: function(url, silent) {\n kendo.history.replace(url, silent);\n },\n\n _back: function(e) {\n if (this.trigger(BACK, { url: e.url, to: e.to })) {\n e.preventDefault();\n }\n },\n\n _same: function() {\n this.trigger(SAME);\n },\n\n _urlChanged: function(e) {\n var url = e.url;\n var decode = !!e.decode;\n var back = e.backButtonPressed;\n\n if (!url) {\n url = \"/\";\n }\n\n if (this.trigger(CHANGE, { url: e.url, params: kendo.parseQueryStringParams(e.url), backButtonPressed: back })) {\n e.preventDefault();\n return;\n }\n\n var idx = 0,\n routes = this.routes,\n route,\n length = routes.length;\n\n for (; idx < length; idx ++) {\n route = routes[idx];\n\n if (route.worksWith(url, back, decode)) {\n return;\n }\n }\n\n if (this.trigger(ROUTE_MISSING, { url: url, params: kendo.parseQueryStringParams(url), backButtonPressed: back })) {\n e.preventDefault();\n }\n }\n });\n\n kendo.Router = Router;\n })();\n\n /*\n This code is copied/inspired by the internal @progress/kendo-data-query repo:\n https://github.com/telerik/kendo-data-query/tree/develop/src/filtering\n\n !!!\n 1. If updates are to be synced consider the accentFoldingFiltering,\n which at the moment is not present as a feature in the data-query-package.\n\n 2. Double-check available operators as well.\n\n 3. Make sure objs are strings -> i.e., replace (a || \"\") to (a + '')\n !!!\n\n In future, if we consider reusing the code directly we should revise the above omissions.\n */\n\n var logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n };\n\n var operatorsMap = {\n isnullorempty: function (a) { return kendo.isBlank(a) || a === ''; },\n isnotnullorempty: function (a) { return kendo.isPresent(a) && a !== ''; },\n contains: function (a, b) { return (a + '').indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a + '').indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a + '').lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a + '').indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return kendo.isPresent(a); },\n isnull: function (a) { return kendo.isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a + '').lastIndexOf(b, 0) === 0; }\n };\n\n var dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\n\n var convertValue = function (value, ignoreCase, accentFoldingFiltering) {\n if (value != null && kendo.isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n } else if (ignoreCase) {\n return accentFoldingFiltering ? value.toLocaleLowerCase(accentFoldingFiltering) : value.toLowerCase();\n }\n } else if (value != null && kendo.isDate(value)) {\n return value.getTime();\n }\n return value;\n };\n\n var typedGetter = function (prop, value, ignoreCase, accentFoldingFiltering) {\n if (!kendo.isPresent(value)) {\n return prop;\n }\n\n var acc = prop;\n\n if (kendo.isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = function (a) {\n var x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return accentFoldingFiltering ? x.toLocaleLowerCase(accentFoldingFiltering) : x.toLowerCase();\n } else {\n return kendo.isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n\n if (kendo.isDate(value)) {\n return function (a) {\n var x = acc(a);\n return kendo.isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n };\n\n var transformFilter = function (ref) {\n var field = ref.field;\n var ignoreCase = ref.ignoreCase;\n var value = ref.value;\n var operator = ref.operator; if ( operator === void 0 ) operator = 'eq';\n var accentFoldingFiltering = ref.accentFoldingFiltering;\n\n field = !kendo.isPresent(field) ? function (a) { return a; } : field;\n\n ignoreCase = kendo.isPresent(ignoreCase) ? ignoreCase : true;\n\n var itemProp = typedGetter(\n kendo.isFunction(field) ? field : kendo.getter(field, true),\n value,\n ignoreCase,\n accentFoldingFiltering\n );\n\n value = convertValue(value, ignoreCase, accentFoldingFiltering);\n\n var op = kendo.isFunction(operator) ? operator : operatorsMap[operator];\n\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n };\n\n var isCompositeFilterDescriptor = function (source) { return kendo.isPresent(source.filters); };\n\n var transformCompositeFilter = function (filter) {\n var accentFoldingFiltering = filter.accentFoldingFiltering;\n var combiner = logic[filter.logic || 'and'];\n return filter.filters\n .filter(kendo.isPresent)\n .map(function (x) { return (isCompositeFilterDescriptor(x) ? transformCompositeFilter(extendAccentFolding(x, accentFoldingFiltering)) : transformFilter(extendAccentFolding(x, accentFoldingFiltering))); })\n .reduce(combiner.concat, combiner.identity);\n };\n\n var extendAccentFolding = function (filter, accentFoldingFiltering) { return (kendo.isPresent(accentFoldingFiltering) ? Object.assign(filter, { accentFoldingFiltering: accentFoldingFiltering }) : filter); };\n\n var filterExprNoEval = function(expr) {\n return transformCompositeFilter(expr);\n };\n\n var __meta__$U = {\n id: \"data.odata\",\n name: \"OData\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n NEWLINE = \"\\r\\n\",\n DOUBLELINE = \"\\r\\n\\r\\n\",\n isFunction = kendo.isFunction,\n odataFilters = {\n eq: \"eq\",\n neq: \"ne\",\n gt: \"gt\",\n gte: \"ge\",\n lt: \"lt\",\n lte: \"le\",\n contains: \"substringof\",\n doesnotcontain: \"substringof\",\n endswith: \"endswith\",\n startswith: \"startswith\",\n isnull: \"eq\",\n isnotnull: \"ne\",\n isnullorempty: \"eq\",\n isnotnullorempty: \"ne\",\n isempty: \"eq\",\n isnotempty: \"ne\"\n },\n odataFiltersVersionFour = extend({}, odataFilters, {\n contains: \"contains\"\n }),\n mappers = {\n pageSize: $.noop,\n page: $.noop,\n filter: function(params, filter, useVersionFour) {\n if (filter) {\n filter = toOdataFilter(filter, useVersionFour);\n if (filter) {\n params.$filter = filter;\n }\n }\n },\n sort: function(params, orderby) {\n var expr = $.map(orderby, function(value) {\n var order = value.field.replace(/\\./g, \"/\");\n\n if (value.dir === \"desc\") {\n order += \" desc\";\n }\n\n return order;\n }).join(\",\");\n\n if (expr) {\n params.$orderby = expr;\n }\n },\n skip: function(params, skip) {\n if (skip) {\n params.$skip = skip;\n }\n },\n take: function(params, take) {\n if (take) {\n params.$top = take;\n }\n }\n },\n defaultDataType = {\n read: {\n dataType: \"jsonp\"\n }\n };\n\n function toOdataFilter(filter, useOdataFour) {\n var result = [],\n logic = filter.logic || \"and\",\n idx,\n length,\n field,\n type,\n format,\n operator,\n value,\n ignoreCase,\n filters = filter.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n value = filter.value;\n operator = filter.operator;\n\n if (filter.filters) {\n filter = toOdataFilter(filter, useOdataFour);\n } else {\n ignoreCase = filter.ignoreCase;\n field = field.replace(/\\./g, \"/\");\n filter = odataFilters[operator];\n if (useOdataFour) {\n filter = odataFiltersVersionFour[operator];\n }\n\n if (operator === \"isnullorempty\") {\n filter = kendo.format(\"{0} {1} null or {0} {1} ''\", field, filter);\n } else if (operator === \"isnotnullorempty\") {\n filter = kendo.format(\"{0} {1} null and {0} {1} ''\", field, filter);\n } else if (operator === \"isnull\" || operator === \"isnotnull\") {\n filter = kendo.format(\"{0} {1} null\", field, filter);\n } else if (operator === \"isempty\" || operator === \"isnotempty\") {\n filter = kendo.format(\"{0} {1} ''\", field, filter);\n } else if (filter && value !== undefined$1) {\n type = kendo.type(value);\n if (type === \"string\") {\n format = \"'{1}'\";\n value = value.replace(/'/g, \"''\");\n\n if (ignoreCase === true) {\n field = \"tolower(\" + field + \")\";\n }\n\n } else if (type === \"date\") {\n if (useOdataFour) {\n format = \"{1:yyyy-MM-ddTHH:mm:ss+00:00}\";\n value = kendo.timezone.apply(value, 'Etc/UTC');\n } else {\n format = \"datetime'{1:yyyy-MM-ddTHH:mm:ss}'\";\n }\n } else {\n format = \"{1}\";\n }\n\n if (filter.length > 3) {\n if (filter !== \"substringof\") {\n format = \"{0}({2},\" + format + \")\";\n } else {\n format = \"{0}(\" + format + \",{2})\";\n if (operator === \"doesnotcontain\") {\n if (useOdataFour) {\n format = \"{0}({2},'{1}') eq -1\";\n filter = \"indexof\";\n } else {\n format += \" eq false\";\n }\n }\n }\n } else {\n format = \"{2} {0} \" + format;\n }\n\n filter = kendo.format(format, filter, value, field);\n }\n }\n\n result.push(filter);\n }\n\n filter = result.join(\" \" + logic + \" \");\n\n if (result.length > 1) {\n filter = \"(\" + filter + \")\";\n }\n\n return filter;\n }\n\n function stripMetadata(obj) {\n for (var name in obj) {\n if (name.indexOf(\"@odata\") === 0) {\n delete obj[name];\n }\n }\n }\n\n function hex16() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\n }\n\n function createBoundary(prefix) {\n return prefix + hex16() + '-' + hex16() + '-' + hex16();\n }\n\n function createDelimeter(boundary, close) {\n var result = NEWLINE + \"--\" + boundary;\n\n if (close) {\n result += \"--\";\n }\n\n return result;\n }\n\n function createCommand(transport, item, httpVerb, command) {\n var transportUrl = transport.options[command].url;\n var commandPrefix = kendo.format(\"{0} \", httpVerb);\n\n if (isFunction(transportUrl)) {\n return commandPrefix + transportUrl(item);\n } else {\n return commandPrefix + transportUrl;\n }\n }\n\n function getOperationHeader(changeset, changeId) {\n var header = \"\";\n\n header += createDelimeter(changeset, false);\n header += NEWLINE + 'Content-Type: application/http';\n header += NEWLINE + 'Content-Transfer-Encoding: binary';\n header += NEWLINE + 'Content-ID: ' + changeId;\n\n return header;\n }\n\n function getOperationContent(item) {\n var content = \"\";\n\n content += NEWLINE + \"Content-Type: application/json;odata=minimalmetadata\";\n content += NEWLINE + \"Prefer: return=representation\";\n content += DOUBLELINE + kendo.stringify(item);\n\n return content;\n }\n\n function getOperations(collection, changeset, changeId, command, transport, skipContent) {\n var requestBody = \"\";\n\n for (var i = 0; i < collection.length; i++) {\n requestBody += getOperationHeader(changeset, changeId);\n requestBody += DOUBLELINE + createCommand(transport, collection[i], transport.options[command].type, command) + ' HTTP/1.1';\n if (!skipContent) {\n requestBody += getOperationContent(collection[i]);\n }\n requestBody += NEWLINE;\n changeId++;\n }\n\n return requestBody;\n }\n\n function processCollection(colection, boundary, changeset, changeId, transport, command, skipContent) {\n var requestBody = \"\";\n\n requestBody += getBoundary(boundary, changeset);\n requestBody += getOperations(colection, changeset, changeId, command, transport, skipContent);\n requestBody += createDelimeter(changeset, true);\n requestBody += NEWLINE;\n\n return requestBody;\n }\n\n function getBoundary(boundary,changeset) {\n var requestBody = \"\";\n\n requestBody += \"--\" + boundary + NEWLINE;\n requestBody += \"Content-Type: multipart/mixed; boundary=\" + changeset + NEWLINE;\n\n return requestBody;\n }\n\n function createBatchRequest(transport, colections) {\n \t\tvar options = extend({}, transport.options.batch);\n var boundary = createBoundary(\"sf_batch_\");\n var requestBody = \"\";\n var changeId = 0;\n var batchURL = transport.options.batch.url;\n var changeset = createBoundary(\"sf_changeset_\");\n\n options.type = transport.options.batch.type;\n options.url = isFunction(batchURL) ? batchURL() : batchURL;\n \t\toptions.headers = extend(options.headers || {}, {\n \t\t\t\"Content-Type\": \"multipart/mixed; boundary=\" + boundary\n \t\t});\n\n if (colections.updated.length) {\n requestBody += processCollection(colections.updated, boundary, changeset, changeId, transport, \"update\", false);\n changeId += colections.updated.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.destroyed.length) {\n requestBody += processCollection(colections.destroyed, boundary, changeset, changeId, transport, \"destroy\", true);\n changeId += colections.destroyed.length;\n changeset = createBoundary(\"sf_changeset_\");\n }\n\n if (colections.created.length) {\n requestBody += processCollection(colections.created, boundary, changeset, changeId, transport, \"create\", false);\n }\n\n requestBody += createDelimeter(boundary, true);\n\n options.data = requestBody;\n\n return options;\n }\n\n function parseBatchResponse(responseText) {\n var responseMarkers = responseText.match(/--changesetresponse_[a-z0-9-]+$/gm);\n var markerIndex = 0;\n var collections = [];\n var changeBody;\n var status;\n var code;\n var marker;\n var jsonModel;\n\n collections.push({ models: [], passed: true });\n\n for (var i = 0; i < responseMarkers.length; i++) {\n marker = responseMarkers[i];\n if (marker.lastIndexOf('--', marker.length - 1)) {\n if (i < responseMarkers.length - 1) {\n collections.push({ models: [], passed: true });\n }\n continue;\n }\n\n if (!markerIndex) {\n markerIndex = responseText.indexOf(marker);\n } else {\n markerIndex = responseText.indexOf(marker, markerIndex + marker.length);\n }\n\n changeBody = responseText.substring(markerIndex, responseText.indexOf(\"--\", markerIndex + 1));\n status = changeBody.match(/^HTTP\\/1\\.\\d (\\d{3}) (.*)$/gm).pop();\n code = kendo.parseFloat(status.match(/\\d{3}/g).pop());\n\n if (code >= 200 && code <= 299) {\n jsonModel = changeBody.match(/\\{.*\\}/gm);\n if (jsonModel) {\n collections[collections.length - 1].models.push(JSON.parse(jsonModel[0]));\n }\n } else {\n collections[collections.length - 1].passed = false;\n }\n\n }\n\n return collections;\n }\n\n extend(true, kendo.data, {\n schemas: {\n odata: {\n type: \"json\",\n data: function(data) {\n return data.d.results || [data.d];\n },\n total: \"d.__count\"\n }\n },\n transports: {\n odata: {\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"jsonp\",\n jsonp: \"$callback\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type, useVersionFour) {\n var params,\n value,\n option,\n dataType;\n\n options = options || {};\n type = type || \"read\";\n dataType = (this.options || defaultDataType)[type];\n dataType = dataType ? dataType.dataType : \"json\";\n\n if (type === \"read\") {\n params = {\n $inlinecount: \"allpages\"\n };\n\n if (dataType != \"json\") {\n params.$format = \"json\";\n }\n\n for (option in options) {\n if (mappers[option]) {\n mappers[option](params, options[option], useVersionFour);\n } else {\n params[option] = options[option];\n }\n }\n } else {\n if (dataType !== \"json\") {\n throw new Error(\"Only json dataType can be used for \" + type + \" operation.\");\n }\n\n if (type !== \"destroy\") {\n for (option in options) {\n value = options[option];\n if (typeof value === \"number\") {\n options[option] = value + \"\";\n }\n }\n\n params = kendo.stringify(options);\n }\n }\n\n return params;\n }\n }\n }\n });\n\n extend(true, kendo.data, {\n schemas: {\n \"odata-v4\": {\n type: \"json\",\n data: function(data) {\n if (Array.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n stripMetadata(data[i]);\n }\n return data;\n } else {\n data = $.extend({}, data);\n stripMetadata(data);\n\n if (data.value) {\n return data.value;\n }\n return [data];\n }\n },\n total: function(data) {\n return data[\"@odata.count\"];\n }\n }\n },\n transports: {\n \"odata-v4\": {\n batch: {\n type: \"POST\"\n },\n read: {\n cache: true, // to prevent jQuery from adding cache buster\n dataType: \"json\"\n },\n update: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\", // to inform the server the the request body is JSON encoded\n type: \"PUT\" // can be PUT or MERGE\n },\n create: {\n cache: true,\n dataType: \"json\",\n contentType: \"application/json;IEEE754Compatible=true\",\n type: \"POST\" // must be POST to create new entity\n },\n destroy: {\n cache: true,\n dataType: \"json\",\n type: \"DELETE\"\n },\n parameterMap: function(options, type) {\n var result = kendo.data.transports.odata.parameterMap(options, type, true);\n if (type == \"read\") {\n result.$count = true;\n delete result.$inlinecount;\n }\n\n \t\t\t\t\tif (result && result.$filter) {\n \t\t\t\t\t\t// Remove the single quotation marks around the GUID (OData v4).\n \t\t\t\t\t\tresult.$filter = result.$filter.replace(/('[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')/ig, function(x) {\n \t\t\t\t\t\t\treturn x.substring(1, x.length - 1);\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n\n return result;\n },\n submit: function(e) {\n var that = this;\n var options = createBatchRequest(that, e.data);\n var collections = e.data;\n\n if (!collections.updated.length && !collections.destroyed.length && !collections.created.length) {\n return;\n }\n\n $.ajax(extend(true, {}, {\n success: function(response) {\n var responses = parseBatchResponse(response);\n var index = 0;\n var current;\n\n if (collections.updated.length) {\n current = responses[index];\n if (current.passed) {\n // Pass either the obtained models or an empty array if only status codes are returned.\n e.success(current.models.length ? current.models : [], \"update\");\n }\n index++;\n }\n if (collections.destroyed.length) {\n current = responses[index];\n if (current.passed) {\n // For delete operations OData returns only status codes.\n // Passing empty array to datasource will force it to correctly remove the deleted items from the pristine collection.\n e.success([], \"destroy\");\n }\n index++;\n }\n if (collections.created.length) {\n current = responses[index];\n if (current.passed) {\n e.success(current.models, \"create\");\n }\n }\n },\n error: function(response, status, error) {\n e.error(response, status, error);\n }\n }, options));\n }\n }\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$T = kendo;\n\n var __meta__$T = {\n id: \"data.xml\",\n name: \"XML\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n map = $.map,\n each = $.each,\n extend = $.extend,\n getter = kendo.getter,\n Class = kendo.Class;\n\n var XmlDataReader = Class.extend({\n init: function(options) {\n var that = this,\n total = options.total,\n model = options.model,\n parse = options.parse,\n errors = options.errors,\n serialize = options.serialize,\n data = options.data;\n\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n if (isPlainObject(value) && value.field) {\n if (!kendo.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n\n var id = model.id;\n if (id) {\n var idField = {};\n\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n\n that.model = model;\n }\n\n if (total) {\n if (typeof total == \"string\") {\n total = that.getter(total);\n that.total = function(data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == \"function\") {\n that.total = total;\n }\n }\n\n if (errors) {\n if (typeof errors == \"string\") {\n errors = that.getter(errors);\n that.errors = function(data) {\n return errors(data) || null;\n };\n } else if (typeof errors == \"function\") {\n that.errors = errors;\n }\n }\n\n if (data) {\n if (typeof data == \"string\") {\n data = that.xpathToMember(data);\n that.data = function(value) {\n var result = that.evaluate(value, data),\n modelInstance;\n\n result = isArray(result) ? result : [result];\n\n if (that.model && model.fields) {\n modelInstance = new that.model();\n\n return map(result, function(value) {\n if (value) {\n var record = {}, field;\n\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n\n return record;\n }\n });\n }\n\n return result;\n };\n } else if (typeof data == \"function\") {\n that.data = data;\n }\n }\n\n if (typeof parse == \"function\") {\n var xmlParse = that.parse;\n\n that.parse = function(data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n\n if (typeof serialize == \"function\") {\n that.serialize = serialize;\n }\n },\n total: function(result) {\n return this.data(result).length;\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n serialize: function(data) {\n return data;\n },\n parseDOM: function(element) {\n var result = {},\n parsedNode,\n node,\n nodeType,\n nodeName,\n member,\n attribute,\n attributes = element.attributes,\n attributeCount = attributes.length,\n idx;\n\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result[\"@\" + attribute.nodeName] = attribute.nodeValue;\n }\n\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n\n if (nodeType === 3 || nodeType === 4) {\n // text nodes or CDATA are stored as #text field\n result[\"#text\"] = node.nodeValue;\n } else if (nodeType === 1) {\n // elements are stored as fields\n parsedNode = this.parseDOM(node);\n\n nodeName = node.nodeName;\n\n member = result[nodeName];\n\n if (isArray(member)) {\n // elements of same nodeName are stored as array\n member.push(parsedNode);\n } else if (member !== undefined$1) {\n member = [member, parsedNode];\n } else {\n member = parsedNode;\n }\n\n result[nodeName] = member;\n }\n }\n return result;\n },\n\n evaluate: function(value, expression) {\n var members = expression.split(\".\"),\n member,\n result,\n length,\n intermediateResult,\n idx;\n\n while (member = members.shift()) {\n value = value[member];\n\n if (isArray(value)) {\n result = [];\n expression = members.join(\".\");\n\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n\n result.push.apply(result, intermediateResult);\n }\n\n return result;\n }\n }\n\n return value;\n },\n\n parse: function(xml) {\n var documentElement,\n tree,\n result = {};\n\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n\n tree = this.parseDOM(documentElement);\n\n result[documentElement.nodeName] = tree;\n\n return result;\n },\n\n xpathToMember: function(member, raw) {\n if (!member) {\n return \"\";\n }\n\n member = member.replace(/^\\//, \"\") // remove the first \"/\"\n .replace(/\\//g, \".\"); // replace all \"/\" with \".\"\n\n if (member.indexOf(\"@\") >= 0) {\n // replace @attribute with '[\"@attribute\"]'\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n\n if (member.indexOf(\"text()\") >= 0) {\n // replace \".text()\" with '[\"#text\"]'\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n\n return member;\n },\n getter: function(member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: {\n xml: XmlDataReader\n }\n });\n })(window.kendo.jQuery);\n var kendo$S = kendo;\n\n var __meta__$S = {\n id: \"data\",\n name: \"Data source\",\n category: \"framework\",\n description: \"Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.\",\n depends: [ \"core\" ],\n features: [ {\n id: \"data-odata\",\n name: \"OData\",\n description: \"Support for accessing Open Data Protocol (OData) services.\",\n depends: [ \"data.odata\" ]\n }, {\n id: \"data-signalr\",\n name: \"SignalR\",\n description: \"Support for binding to SignalR hubs.\",\n depends: [ \"data.signalr\" ]\n }, {\n id: \"data-XML\",\n name: \"XML\",\n description: \"Support for binding to XML.\",\n depends: [ \"data.xml\" ]\n }]\n };\n\n\n (function($, undefined$1) {\n var extend = $.extend,\n isPlainObject = $.isPlainObject,\n isEmptyObject = $.isEmptyObject,\n isArray = Array.isArray,\n grep = $.grep,\n ajax = $.ajax,\n map,\n each = $.each,\n noop = $.noop,\n kendo = window.kendo,\n isFunction = kendo.isFunction,\n Observable = kendo.Observable,\n Class = kendo.Class,\n STRING = \"string\",\n FUNCTION = \"function\",\n ASCENDING = \"asc\",\n CREATE = \"create\",\n READ = \"read\",\n UPDATE = \"update\",\n DESTROY = \"destroy\",\n CHANGE = \"change\",\n SYNC = \"sync\",\n GET = \"get\",\n ERROR = \"error\",\n REQUESTSTART = \"requestStart\",\n PROGRESS = \"progress\",\n REQUESTEND = \"requestEnd\",\n ITEMSLOADED = \"itemsLoaded\",\n ITEMLOAD = \"itemLoad\",\n crud = [CREATE, READ, UPDATE, DESTROY],\n identity = function(o) { return o; },\n getter = kendo.getter,\n stringify = kendo.stringify,\n math = Math,\n push = [].push,\n join = [].join,\n pop = [].pop,\n splice = [].splice,\n shift = [].shift,\n slice = [].slice,\n unshift = [].unshift,\n toString = {}.toString,\n stableSort = kendo.support.stableSort,\n dateRegExp = /^\\/Date\\((.*?)\\)\\/$/,\n objectKeys = [];\n\n var ObservableArray = Observable.extend({\n init: function(array, type) {\n var that = this;\n\n that.type = type || ObservableObject;\n\n Observable.fn.init.call(that);\n\n that.length = array.length;\n\n that.wrapAll(array, that);\n that._loadPromises = [];\n that._loadedNodes = [];\n },\n\n at: function(index) {\n return this[index];\n },\n\n toJSON: function(serializeFunctions) {\n var idx, length = this.length, value, json = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n value = this[idx];\n\n if (value instanceof ObservableObject) {\n value = value.toJSON(serializeFunctions);\n }\n\n json[idx] = value;\n }\n\n return json;\n },\n\n parent: noop,\n\n wrapAll: function(source, target) {\n var that = this,\n idx,\n length,\n parent = function() {\n return that;\n };\n\n target = target || [];\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n target[idx] = that.wrap(source[idx], parent);\n }\n\n return target;\n },\n\n wrap: function(object, parent) {\n var that = this,\n observable;\n\n if (object !== null && toString.call(object) === \"[object Object]\") {\n observable = object instanceof that.type || object instanceof Model;\n\n if (!observable) {\n object = object instanceof ObservableObject ? object.toJSON() : object;\n object = new that.type(object);\n }\n\n object.parent = parent;\n\n object.bind(CHANGE, function(e) {\n var isGroup = object.hasOwnProperty(\"hasSubgroups\");\n that.trigger(CHANGE, {\n field: e.field,\n node: e.node,\n index: e.index,\n items: e.items || [this],\n action: e.node || isGroup ? (e.action || \"itemloaded\") : \"itemchange\"\n });\n });\n\n object.bind(ITEMLOAD, function(e) {\n that._loadPromises.push(e.promise);\n that._loading = true;\n\n e.promise.done(function() {\n that._loadedNodes.push(e.node);\n var index = that._loadPromises.indexOf(e.promise);\n that._loadPromises.splice(index, 1);\n\n if (!that._loadPromises.length) {\n that._loading = false;\n that.trigger(ITEMSLOADED, { collection: that, nodes: that._loadedNodes });\n that._loadedNodes = [];\n }\n });\n });\n }\n\n return object;\n },\n\n loading: function() {\n return this._loading;\n },\n\n push: function() {\n var index = this.length,\n items = this.wrapAll(arguments),\n result;\n\n result = push.apply(this, items);\n\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n\n return result;\n },\n\n slice: slice,\n\n sort: [].sort,\n\n join: join,\n\n pop: function() {\n var length = this.length, result = pop.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: length - 1,\n items: [result]\n });\n }\n\n return result;\n },\n\n splice: function(index, howMany, item) {\n var items = this.wrapAll(slice.call(arguments, 2)),\n result, i, len;\n\n result = splice.apply(this, [index, howMany].concat(items));\n\n if (result.length) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: index,\n items: this.omitCache && this.omitCache.length ? result.concat(this.omitCache) : result\n });\n this.omitCache = [];\n }\n\n for (i = 0, len = result.length; i < len; i++) {\n if (result[i] && result[i].children) {\n result[i].unbind(CHANGE);\n }\n }\n }\n\n if (item) {\n if (!this.omitChangeEvent) {\n this.trigger(CHANGE, {\n action: \"add\",\n index: index,\n items: items\n });\n }\n }\n return result;\n },\n\n shift: function() {\n var length = this.length, result = shift.apply(this);\n\n if (length) {\n this.trigger(CHANGE, {\n action: \"remove\",\n index: 0,\n items: [result]\n });\n }\n\n return result;\n },\n\n unshift: function() {\n var items = this.wrapAll(arguments),\n result;\n\n result = unshift.apply(this, items);\n\n this.trigger(CHANGE, {\n action: \"add\",\n index: 0,\n items: items\n });\n\n return result;\n },\n\n indexOf: function(item) {\n var that = this,\n idx,\n length;\n\n for (idx = 0, length = that.length; idx < length; idx++) {\n if (that[idx] === item) {\n return idx;\n }\n }\n return -1;\n },\n\n forEach: function(callback, thisArg) {\n var idx = 0;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n callback.call(context, this[idx], idx, this);\n }\n },\n\n map: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n result[idx] = callback.call(context, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduce: function(callback) {\n var idx = 0,\n result,\n length = this.length;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx < length) {\n result = this[idx++];\n }\n\n for (; idx < length; idx++) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n reduceRight: function(callback) {\n var idx = this.length - 1,\n result;\n\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx > 0) {\n result = this[idx--];\n }\n\n for (; idx >= 0; idx--) {\n result = callback(result, this[idx], idx, this);\n }\n\n return result;\n },\n\n filter: function(callback, thisArg) {\n var idx = 0;\n var result = [];\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n result[result.length] = item;\n }\n }\n\n return result;\n },\n\n find: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return item;\n }\n }\n },\n\n every: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (!callback.call(context, item, idx, this)) {\n return false;\n }\n }\n\n return true;\n },\n\n some: function(callback, thisArg) {\n var idx = 0;\n var item;\n var length = this.length;\n var context = thisArg || window;\n\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback.call(context, item, idx, this)) {\n return true;\n }\n }\n\n return false;\n },\n\n // non-standard collection methods\n remove: function(item) {\n var idx = this.indexOf(item);\n\n if (idx !== -1) {\n this.splice(idx, 1);\n }\n },\n\n empty: function() {\n this.splice(0, this.length);\n }\n });\n\n // Polyfill for Symbol.iterator\n if (typeof Symbol !== \"undefined\" && Symbol.iterator && !ObservableArray.prototype[Symbol.iterator]) {\n ObservableArray.prototype[Symbol.iterator] = [][Symbol.iterator];\n }\n\n var LazyObservableArray = ObservableArray.extend({\n init: function(data, type, events) {\n var parentFn = function() { return this; };\n\n Observable.fn.init.call(this);\n\n this.type = type || ObservableObject;\n\n if (events) {\n this._events = events;\n }\n\n for (var idx = 0; idx < data.length; idx++) {\n this[idx] = data[idx];\n }\n\n this.length = idx;\n this._parent = parentFn.bind(this);\n },\n at: function(index) {\n var item = this[index];\n\n if (!(item instanceof this.type)) {\n item = this[index] = this.wrap(item, this._parent);\n } else {\n item.parent = this._parent;\n }\n\n return item;\n }\n });\n\n function eventHandler(context, type, field, prefix) {\n return function(e) {\n var event = {}, key;\n\n for (key in e) {\n event[key] = e[key];\n }\n\n if (prefix) {\n event.field = field + \".\" + e.field;\n } else {\n event.field = field;\n }\n\n if (type == CHANGE && context._notifyChange) {\n context._notifyChange(event);\n }\n\n context.trigger(type, event);\n };\n }\n\n function isPrimitiveType(value) {\n return (typeof value === \"object\" && Object.getPrototypeOf(value) === Object.getPrototypeOf({}))\n || Object.getPrototypeOf(value) === Object.getPrototypeOf(new Date())\n || typeof value !== \"object\";\n }\n\n function ownKeys(value, ignoreObjectKeys) {\n var props = [];\n var protoKeys = [];\n var keys, filteredObjectKeys;\n\n value = value || {};\n\n if (!isPrimitiveType(value)) {\n protoKeys = Object.getOwnPropertyNames(Object.getPrototypeOf(value)).filter(function (f) { return f.indexOf(\"__\") !== 0; });\n }\n\n keys = Object.getOwnPropertyNames(value).concat(protoKeys);\n\n filteredObjectKeys = objectKeys.filter(function(key) {\n return keys.indexOf(key) < 0;\n });\n\n while (value) {\n Object.getOwnPropertyNames(value).forEach(function(prop) {\n if (props.indexOf(prop) === -1 && (!ignoreObjectKeys || filteredObjectKeys.indexOf(prop) < 0)) {\n props.push(prop);\n }\n });\n value = Object.getPrototypeOf(value);\n }\n\n return props;\n }\n\n objectKeys = ownKeys({}, false);\n\n var ObservableObject = Observable.extend({\n init: function(value) {\n var that = this,\n member,\n keys = ownKeys(value, true),\n parent = function() {\n return that;\n };\n\n Observable.fn.init.call(this);\n\n this._handlers = {};\n\n keys.forEach(function(field) {\n member = value[field];\n\n if (typeof member === \"object\" && member && !member.getTime && field.charAt(0) != \"_\") {\n member = that.wrap(member, field, parent);\n }\n\n that[field] = member;\n });\n\n that.uid = kendo.guid();\n },\n\n shouldSerialize: function(field, serializeFunctions) {\n return this.hasOwnProperty(field) && field !== \"_handlers\" && field !== \"_events\" && ((serializeFunctions && serializeFunctions[field]) || typeof this[field] !== FUNCTION) && field !== \"uid\";\n },\n\n forEach: function(f) {\n for (var i in this) {\n if (this.shouldSerialize(i)) {\n f(this[i], i);\n }\n }\n },\n\n toJSON: function(serializeFunctions) {\n var result = {}, value, field;\n\n for (field in this) {\n if (this.shouldSerialize(field, serializeFunctions)) {\n value = this[field];\n\n if (value instanceof ObservableObject || value instanceof ObservableArray) {\n value = value.toJSON(serializeFunctions);\n }\n\n result[field] = value;\n }\n }\n\n return result;\n },\n\n get: function(field) {\n var that = this, result;\n\n that.trigger(GET, { field: field });\n\n if (field === \"this\") {\n result = that;\n } else {\n result = kendo.getter(field, true)(that);\n }\n\n return result;\n },\n\n _set: function(field, value) {\n var that = this;\n var composite = field.indexOf(\".\") >= 0;\n\n if (composite) {\n var paths = field.split(\".\"),\n path = \"\";\n\n while (paths.length > 1) {\n path += paths.shift();\n var obj = kendo.getter(path, true)(that);\n if (obj instanceof ObservableObject) {\n obj.set(paths.join(\".\"), value);\n return composite;\n }\n path += \".\";\n }\n }\n\n kendo.setter(field)(that, value);\n\n return composite;\n },\n\n set: function(field, value) {\n var that = this,\n isSetPrevented = false,\n composite = field.indexOf(\".\") >= 0,\n current = kendo.getter(field, true)(that);\n\n if (current !== value) {\n if (current instanceof Observable && this._handlers[field]) {\n if (this._handlers[field].get) {\n current.unbind(GET, this._handlers[field].get);\n }\n current.unbind(CHANGE, this._handlers[field].change);\n }\n\n isSetPrevented = that.trigger(\"set\", { field: field, value: value });\n\n if (!isSetPrevented) {\n if (!composite) {\n value = that.wrap(value, field, function() { return that; });\n }\n if (!that._set(field, value) || field.indexOf(\"(\") >= 0 || field.indexOf(\"[\") >= 0) {\n that.trigger(CHANGE, { field: field });\n }\n }\n }\n\n return isSetPrevented;\n },\n\n parent: noop,\n\n wrap: function(object, field, parent) {\n var that = this;\n var get;\n var change;\n var type = toString.call(object);\n\n if (object != null && (type === \"[object Object]\" || type === \"[object Array]\")) {\n var isObservableArray = object instanceof ObservableArray;\n var isDataSource = object instanceof DataSource;\n\n if (type === \"[object Object]\" && !isDataSource && !isObservableArray) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n get = eventHandler(that, GET, field, true);\n object.bind(GET, get);\n change = eventHandler(that, CHANGE, field, true);\n object.bind(CHANGE, change);\n\n that._handlers[field] = { get: get, change: change };\n } else if (type === \"[object Array]\" || isObservableArray || isDataSource) {\n if (!isObservableArray && !isDataSource) {\n object = new ObservableArray(object);\n }\n\n change = eventHandler(that, CHANGE, field, false);\n\n object.bind(CHANGE, change);\n\n that._handlers[field] = { change: change };\n }\n\n object.parent = parent;\n }\n\n return object;\n }\n });\n\n function equal(x, y) {\n if (x === y) {\n return true;\n }\n\n var xtype = kendo.type(x), ytype = kendo.type(y), field;\n\n if (xtype !== ytype) {\n return false;\n }\n\n if (xtype === \"date\") {\n return x.getTime() === y.getTime();\n }\n\n if (xtype !== \"object\" && xtype !== \"array\") {\n return false;\n }\n\n for (field in x) {\n if (!equal(x[field], y[field])) {\n return false;\n }\n }\n\n return true;\n }\n\n var parsers = {\n \"number\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseFloat(value);\n },\n\n \"date\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return kendo.parseDate(value);\n },\n\n \"boolean\": function(value) {\n if (typeof value === STRING) {\n if (value.toLowerCase() === \"null\") {\n return null;\n } else {\n return value.toLowerCase() === \"true\";\n }\n }\n return value != null ? !!value : value;\n },\n\n \"string\": function(value) {\n if (typeof value === STRING && value.toLowerCase() === \"null\") {\n return null;\n }\n return value != null ? (value + \"\") : value;\n },\n\n \"default\": function(value) {\n return value;\n }\n };\n\n var defaultValues = {\n \"string\": \"\",\n \"number\": 0,\n \"date\": new Date(),\n \"boolean\": false,\n \"default\": \"\"\n };\n\n function getFieldByName(obj, name) {\n var field,\n fieldName;\n\n for (fieldName in obj) {\n field = obj[fieldName];\n if (isPlainObject(field) && field.field && field.field === name) {\n return field;\n } else if (field === name) {\n return field;\n }\n }\n return null;\n }\n\n var Model = ObservableObject.extend({\n init: function(data) {\n var that = this;\n\n if (!data || $.isEmptyObject(data)) {\n data = $.extend({}, that.defaults, data);\n\n if (that._initializers) {\n for (var idx = 0; idx < that._initializers.length; idx++) {\n var name = that._initializers[idx];\n data[name] = that.defaults[name]();\n }\n }\n }\n\n ObservableObject.fn.init.call(that, data);\n\n that.dirty = false;\n that.dirtyFields = {};\n\n if (that.idField) {\n that.id = that.get(that.idField);\n\n if (that.id === undefined$1) {\n that.id = that._defaultId;\n }\n }\n },\n\n shouldSerialize: function(field) {\n return ObservableObject.fn.shouldSerialize.call(this, field) &&\n field !== \"uid\" && !(this.idField !== \"id\" && field === \"id\") &&\n field !== \"dirty\" && field !== \"dirtyFields\" && field !== \"_accessors\";\n },\n\n _parse: function(field, value) {\n var that = this,\n fieldName = field,\n fields = (that.fields || {}),\n parse;\n\n field = fields[field];\n if (!field) {\n field = getFieldByName(fields, fieldName);\n }\n if (field) {\n parse = field.parse;\n if (!parse && field.type) {\n parse = parsers[field.type.toLowerCase()];\n }\n }\n\n return parse ? parse(value) : value;\n },\n\n _notifyChange: function(e) {\n var action = e.action;\n\n if (action == \"add\" || action == \"remove\") {\n this.dirty = true;\n this.dirtyFields[e.field] = true;\n }\n },\n\n editable: function(field) {\n field = (this.fields || {})[field];\n return field ? field.editable !== false : true;\n },\n\n set: function(field, value) {\n var that = this;\n var dirty = that.dirty;\n\n if (that.editable(field)) {\n value = that._parse(field, value);\n\n if (!equal(value, that.get(field))) {\n that.dirty = true;\n that.dirtyFields[field] = true;\n\n if (ObservableObject.fn.set.call(that, field, value) && !dirty) {\n that.dirty = dirty;\n\n if (!that.dirty) {\n that.dirtyFields[field] = false;\n }\n }\n } else {\n that.trigger(\"equalSet\", { field: field, value: value });\n }\n }\n },\n\n accept: function(data) {\n var that = this,\n parent = function() { return that; },\n field;\n\n for (field in data) {\n var value = data[field];\n\n if (field.charAt(0) != \"_\") {\n value = that.wrap(data[field], field, parent);\n }\n\n that._set(field, value);\n }\n\n if (that.idField) {\n that.id = that.get(that.idField);\n }\n\n that.dirty = false;\n that.dirtyFields = {};\n },\n\n isNew: function() {\n return this.id === this._defaultId;\n }\n });\n\n Model.define = function(base, options) {\n if (options === undefined$1) {\n options = base;\n base = Model;\n }\n\n var model,\n proto = extend({ defaults: {} }, options),\n name,\n field,\n type,\n value,\n idx,\n length,\n fields = {},\n originalName,\n id = proto.id,\n functionFields = [];\n\n if (id) {\n proto.idField = id;\n }\n\n if (proto.id) {\n delete proto.id;\n }\n\n if (id) {\n proto.defaults[id] = proto._defaultId = \"\";\n }\n\n if (toString.call(proto.fields) === \"[object Array]\") {\n for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n field = proto.fields[idx];\n if (typeof field === STRING) {\n fields[field] = {};\n } else if (field.field) {\n fields[field.field] = field;\n }\n }\n proto.fields = fields;\n }\n\n for (name in proto.fields) {\n field = proto.fields[name];\n type = field.type || \"default\";\n value = null;\n originalName = name;\n\n name = typeof (field.field) === STRING ? field.field : name;\n\n if (!field.nullable) {\n value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined$1 ? field.defaultValue : defaultValues[type.toLowerCase()];\n\n if (typeof value === \"function\") {\n functionFields.push(name);\n }\n }\n\n if (options.id === name) {\n proto._defaultId = value;\n }\n\n proto.defaults[originalName !== name ? originalName : name] = value;\n\n if ($.isPlainObject(field)) {\n field.parse = field.parse || parsers[type];\n } else {\n field = {\n parse: parsers[type]\n };\n }\n }\n\n if (functionFields.length > 0) {\n proto._initializers = functionFields;\n }\n\n model = base.extend(proto);\n model.define = function(options) {\n return Model.define(model, options);\n };\n\n if (proto.fields) {\n model.fields = proto.fields;\n model.idField = proto.idField;\n }\n\n return model;\n };\n\n var Comparer = {\n selector: function(field) {\n return isFunction(field) ? field : getter(field);\n },\n\n compare: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n a = selector(a);\n b = selector(b);\n\n if (a == null && b == null) {\n return 0;\n }\n\n if (a == null) {\n return -1;\n }\n\n if (b == null) {\n return 1;\n }\n\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n\n return a > b ? 1 : (a < b ? -1 : 0);\n };\n },\n\n create: function(sort) {\n var compare = sort.compare || this.compare(sort.field);\n\n if (sort.dir == \"desc\") {\n return function(a, b) {\n return compare(b, a, true);\n };\n }\n\n return compare;\n },\n\n combine: function(comparers) {\n return function(a, b) {\n var result = comparers[0](a, b),\n idx,\n length;\n\n for (idx = 1, length = comparers.length; idx < length; idx ++) {\n result = result || comparers[idx](a, b);\n }\n\n return result;\n };\n }\n };\n\n var StableComparer = extend({}, Comparer, {\n asc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return -1;\n }\n\n if (valueB == null) {\n return 1;\n }\n\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB);\n }\n\n return valueA > valueB ? 1 : -1;\n };\n },\n\n desc: function(field) {\n var selector = this.selector(field);\n return function(a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n\n if (valueA == null) {\n return 1;\n }\n\n if (valueB == null) {\n return -1;\n }\n\n if (valueB.localeCompare) {\n return valueB.localeCompare(valueA);\n }\n\n return valueA < valueB ? 1 : -1;\n };\n },\n create: function(sort) {\n return this[sort.dir](sort.field);\n }\n });\n\n map = function(array, callback) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = callback(array[idx], idx, array);\n }\n\n return result;\n };\n\n var operators = (function() {\n\n function quote(str) {\n if (typeof str == \"string\") {\n str = str.replace(/[\\r\\n]+/g, \"\");\n }\n return JSON.stringify(str);\n }\n\n function textOp(impl) {\n return function(a, b, ignore, accentFoldingFiltering) {\n b += \"\";\n if (ignore) {\n a = \"(\" + a + \" + '').toString()\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n b = ((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase());\n }\n return impl(a, quote(b), ignore);\n };\n }\n\n function operator(op, a, b, ignore, accentFoldingFiltering) {\n if (b != null) {\n if (typeof b === STRING) {\n var date = dateRegExp.exec(b);\n if (date) {\n b = new Date(+date[1]);\n } else if (ignore) {\n b = quote(((accentFoldingFiltering) ? b.toLocaleLowerCase(accentFoldingFiltering) : b.toLowerCase()));\n a = \"((\" + a + \" || '')+'')\" + ((accentFoldingFiltering) ? \".toLocaleLowerCase('\" + accentFoldingFiltering + \"')\" : \".toLowerCase()\");\n } else {\n b = quote(b);\n }\n }\n\n if (b.getTime) {\n //b looks like a Date\n a = \"(\" + a + \"&&\" + a + \".getTime?\" + a + \".getTime():\" + a + \")\";\n b = b.getTime();\n }\n }\n\n return a + \" \" + op + \" \" + b;\n }\n\n function getMatchRegexp(pattern) {\n // take a pattern, as supported by Excel match filter, and\n // convert it to the equivalent JS regular expression.\n // Excel patterns support:\n //\n // * - match any sequence of characters\n // ? - match a single character\n //\n // to match a literal * or ?, they must be prefixed by a tilde (~)\n for (var rx = \"/^\", esc = false, i = 0; i < pattern.length; ++i) {\n var ch = pattern.charAt(i);\n if (esc) {\n rx += \"\\\\\" + ch;\n } else if (ch == \"~\") {\n esc = true;\n continue;\n } else if (ch == \"*\") {\n rx += \".*\";\n } else if (ch == \"?\") {\n rx += \".\";\n } else if (\".+^$()[]{}|\\\\/\\n\\r\\u2028\\u2029\\xA0\".indexOf(ch) >= 0) {\n rx += \"\\\\\" + ch;\n } else {\n rx += ch;\n }\n esc = false;\n }\n return rx + \"$/\";\n }\n\n return {\n quote: function(value) {\n if (value && value.getTime) {\n return \"new Date(\" + value.getTime() + \")\";\n }\n return quote(value);\n },\n eq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"==\", a, b, ignore, accentFoldingFiltering);\n },\n neq: function(a, b, ignore, accentFoldingFiltering) {\n return operator(\"!=\", a, b, ignore, accentFoldingFiltering);\n },\n gt: function(a, b, ignore) {\n return operator(\">\", a, b, ignore);\n },\n gte: function(a, b, ignore) {\n return operator(\">=\", a, b, ignore);\n },\n lt: function(a, b, ignore) {\n return operator(\"<\", a, b, ignore);\n },\n lte: function(a, b, ignore) {\n return operator(\"<=\", a, b, ignore);\n },\n startswith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == 0\";\n }),\n doesnotstartwith: textOp(function(a, b) {\n return a + \".lastIndexOf(\" + b + \", 0) == -1\";\n }),\n endswith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") >= 0\";\n }),\n doesnotendwith: textOp(function(a, b) {\n var n = b ? b.length - 2 : 0;\n return a + \".indexOf(\" + b + \", \" + a + \".length - \" + n + \") < 0\";\n }),\n contains: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") >= 0\";\n }),\n doesnotcontain: textOp(function(a, b) {\n return a + \".indexOf(\" + b + \") == -1\";\n }),\n matches: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n doesnotmatch: textOp(function(a, b) {\n b = b.substring(1, b.length - 1);\n return \"!\" + getMatchRegexp(b) + \".test(\" + a + \")\";\n }),\n isempty: function(a) {\n return a + \" === ''\";\n },\n isnotempty: function(a) {\n return a + \" !== ''\";\n },\n isnull: function(a) {\n return \"(\" + a + \" == null)\";\n },\n isnotnull: function(a) {\n return \"(\" + a + \" != null)\";\n },\n isnullorempty: function(a) {\n return \"(\" + a + \" === null) || (\" + a + \" === '')\";\n },\n isnotnullorempty: function(a) {\n return \"(\" + a + \" !== null) && (\" + a + \" !== '')\";\n }\n };\n })();\n\n function Query(data) {\n this.data = data || [];\n }\n\n // Continue to support legacy unsafe-eval for the spreadsheet\n Query.filterExpr = function(expression, options) {\n if ( options === void 0 ) options = { noEval: false };\n\n if (options.noEval) {\n // using no-eval for most cases\n return filterExprNoEval(expression);\n }\n\n var expressions = [],\n logic = { and: \" && \", or: \" || \" },\n idx,\n length,\n filter,\n expr,\n fieldFunctions = [],\n operatorFunctions = [],\n field,\n operator,\n filters = expression.filters;\n\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n operator = filter.operator;\n\n if (filter.filters) {\n expr = Query.filterExpr(filter);\n //Nested function fields or operators - update their index e.g. __o[0] -> __o[1]\n filter = expr.expression\n .replace(/__o\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__o[\" + (operatorFunctions.length + index) + \"]\";\n })\n .replace(/__f\\[(\\d+)\\]/g, function(match, index) {\n index = +index;\n return \"__f[\" + (fieldFunctions.length + index) + \"]\";\n });\n\n operatorFunctions.push.apply(operatorFunctions, expr.operators);\n fieldFunctions.push.apply(fieldFunctions, expr.fields);\n } else {\n if (typeof field === FUNCTION) {\n expr = \"__f[\" + fieldFunctions.length + \"](d)\";\n fieldFunctions.push(field);\n } else {\n expr = kendo.expr(field);\n }\n\n if (typeof operator === FUNCTION) {\n filter = \"__o[\" + operatorFunctions.length + \"](\" + expr + \", \" + operators.quote(filter.value) + \")\";\n operatorFunctions.push(operator);\n } else {\n filter = operators[(operator || \"eq\").toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined$1 ? filter.ignoreCase : true, expression.accentFoldingFiltering);\n }\n }\n\n expressions.push(filter);\n }\n\n return { expression: \"(\" + expressions.join(logic[expression.logic]) + \")\", fields: fieldFunctions, operators: operatorFunctions };\n };\n\n function normalizeSort(field, dir) {\n if (field) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return grep(descriptors, function(d) { return !!d.dir; });\n }\n }\n\n function sortFields(sorts, dir) {\n var sortObject = {};\n\n if (sorts) {\n var descriptor = typeof sorts === STRING ? { field: sorts, dir: dir } : sorts,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n for (var i = 0; i < descriptors.length; i++) {\n sortObject[descriptors[i].field] = { dir: descriptors[i].dir, index: i + 1 };\n }\n }\n\n return sortObject;\n }\n\n var operatorMap = {\n \"==\": \"eq\",\n equals: \"eq\",\n isequalto: \"eq\",\n equalto: \"eq\",\n equal: \"eq\",\n \"!=\": \"neq\",\n ne: \"neq\",\n notequals: \"neq\",\n isnotequalto: \"neq\",\n notequalto: \"neq\",\n notequal: \"neq\",\n \"<\": \"lt\",\n islessthan: \"lt\",\n lessthan: \"lt\",\n less: \"lt\",\n \"<=\": \"lte\",\n le: \"lte\",\n islessthanorequalto: \"lte\",\n lessthanequal: \"lte\",\n \">\": \"gt\",\n isgreaterthan: \"gt\",\n greaterthan: \"gt\",\n greater: \"gt\",\n \">=\": \"gte\",\n isgreaterthanorequalto: \"gte\",\n greaterthanequal: \"gte\",\n ge: \"gte\",\n notsubstringof: \"doesnotcontain\",\n isnull: \"isnull\",\n isempty: \"isempty\",\n isnotempty: \"isnotempty\"\n };\n\n function normalizeOperator(expression) {\n var idx,\n length,\n filter,\n operator,\n filters = expression.filters;\n\n if (filters) {\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n operator = filter.operator;\n\n if (operator && typeof operator === STRING) {\n filter.operator = operatorMap[operator.toLowerCase()] || operator;\n }\n\n normalizeOperator(filter);\n }\n }\n }\n\n function normalizeFilter(expression) {\n if (expression && !isEmptyObject(expression)) {\n if (isArray(expression) || !expression.filters) {\n expression = {\n logic: \"and\",\n filters: isArray(expression) ? expression : [expression]\n };\n }\n\n normalizeOperator(expression);\n\n return expression;\n }\n }\n\n Query.normalizeFilter = normalizeFilter;\n\n function compareDescriptor(f1, f2) {\n if (f1.logic || f2.logic) {\n return false;\n }\n\n return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n }\n\n function normalizeDescriptor(filter) {\n filter = filter || {};\n\n if (isEmptyObject(filter)) {\n return { logic: \"and\", filters: [] };\n }\n\n return normalizeFilter(filter);\n }\n\n function fieldComparer(a, b) {\n if (b.logic || (a.field > b.field)) {\n return 1;\n } else if (a.field < b.field) {\n return -1;\n } else {\n return 0;\n }\n }\n\n function compareFilters(expr1, expr2) {\n expr1 = normalizeDescriptor(expr1);\n expr2 = normalizeDescriptor(expr2);\n\n if (expr1.logic !== expr2.logic) {\n return false;\n }\n\n var f1, f2;\n var filters1 = (expr1.filters || []).slice();\n var filters2 = (expr2.filters || []).slice();\n\n if (filters1.length !== filters2.length) {\n return false;\n }\n\n filters1 = filters1.sort(fieldComparer);\n filters2 = filters2.sort(fieldComparer);\n\n for (var idx = 0; idx < filters1.length; idx++) {\n f1 = filters1[idx];\n f2 = filters2[idx];\n\n if (f1.logic && f2.logic) {\n if (!compareFilters(f1, f2)) {\n return false;\n }\n } else if (!compareDescriptor(f1, f2)) {\n return false;\n }\n }\n\n return true;\n }\n\n Query.compareFilters = compareFilters;\n\n function normalizeAggregate(expressions) {\n return isArray(expressions) ? expressions : [expressions];\n }\n\n function normalizeGroup(field, dir, compare, skipItemSorting) {\n var descriptor = typeof field === STRING ? { field: field, dir: dir, compare: compare, skipItemSorting: skipItemSorting } : field,\n descriptors = isArray(descriptor) ? descriptor : (descriptor !== undefined$1 ? [descriptor] : []);\n\n return map(descriptors, function(d) {\n return {\n field: d.field,\n dir: d.dir || \"asc\",\n aggregates: d.aggregates,\n compare: d.compare,\n skipItemSorting: d.skipItemSorting\n };\n });\n }\n\n function normalizeGroupWithoutCompare(field, dir, compare) {\n var descriptors = normalizeGroup(field, dir, compare);\n\n for (var i = 0; i < descriptors.length; i++) {\n delete descriptors[i].compare;\n }\n\n return descriptors;\n }\n\n function anyGroupDescriptorHasCompare(groupDescriptors) {\n var descriptors = isArray(groupDescriptors) ? groupDescriptors : [groupDescriptors];\n\n for (var i = 0; i < descriptors.length; i++) {\n if (descriptors[i] && isFunction(descriptors[i].compare)) {\n return true;\n }\n }\n\n return false;\n }\n\n Query.prototype = {\n toArray: function() {\n return this.data;\n },\n range: function(index, count) {\n return new Query(this.data.slice(index, index + count));\n },\n skip: function(count) {\n return new Query(this.data.slice(count));\n },\n take: function(count) {\n return new Query(this.data.slice(0, count));\n },\n select: function(selector) {\n return new Query(map(this.data, selector));\n },\n order: function(selector, dir, inPlace) {\n var sort = { dir: dir };\n\n if (selector) {\n if (selector.compare) {\n sort.compare = selector.compare;\n } else {\n sort.field = selector;\n }\n }\n\n if (inPlace) {\n return new Query(this.data.sort(Comparer.create(sort)));\n }\n\n return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n },\n orderBy: function(selector, inPlace) {\n return this.order(selector, \"asc\", inPlace);\n },\n orderByDescending: function(selector, inPlace) {\n return this.order(selector, \"desc\", inPlace);\n },\n sort: function(field, dir, comparer, inPlace) {\n var idx,\n length,\n descriptors = normalizeSort(field, dir),\n comparers = [];\n\n comparer = comparer || Comparer;\n\n if (descriptors.length) {\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n comparers.push(comparer.create(descriptors[idx]));\n }\n\n return this.orderBy({ compare: comparer.combine(comparers) }, inPlace);\n }\n\n return this;\n },\n\n filter: function(expressions) {\n var compiled,\n data = this.data,\n result = [];\n\n expressions = normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n return this;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n result = data.filter(compiled);\n return new Query(result);\n },\n\n group: function(descriptors, allData, options) {\n descriptors = normalizeGroup(descriptors || []);\n allData = allData || this.data;\n\n var that = this,\n result = new Query(that.data),\n descriptor;\n\n if (descriptors.length > 0) {\n descriptor = descriptors[0];\n\n if (options && options.groupPaging) {\n result = new Query(allData).groupAllData(descriptor, allData).select(function(group) {\n var data = new Query(allData).filter([{\n field: group.field,\n operator: \"eq\",\n value: group.value,\n ignoreCase: false\n }]);\n var items = descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray(), options).toArray() : group.items;\n return {\n field: group.field,\n value: group.value,\n hasSubgroups: descriptors.length > 1,\n items: items,\n aggregates: data.aggregate(descriptor.aggregates),\n uid: kendo.guid(),\n itemCount: items.length,\n subgroupCount: items.length\n };\n });\n\n } else {\n result = result.groupBy(descriptor).select(function(group) {\n var data = new Query(allData).filter([ { field: group.field, operator: \"eq\", value: group.value, ignoreCase: false } ]);\n return {\n field: group.field,\n value: group.value,\n items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray()).toArray() : group.items,\n hasSubgroups: descriptors.length > 1,\n aggregates: data.aggregate(descriptor.aggregates)\n };\n });\n }\n }\n return result;\n },\n\n groupBy: function(descriptor) {\n var that = this;\n\n if (isEmptyObject(descriptor) || !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? this.data : this._sortForGrouping(field, descriptor.dir || \"asc\"),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = that._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n groupAllData: function(descriptor, allData) {\n if (isEmptyObject(descriptor) || this.data && !this.data.length) {\n return new Query([]);\n }\n\n var field = descriptor.field,\n sorted = descriptor.skipItemSorting ? allData : new Query(allData).sort(field, descriptor.dir || \"asc\", StableComparer).toArray(),\n accessor = kendo.accessor(field),\n item,\n groupValue = accessor.get(sorted[0], field),\n group = {\n field: field,\n value: groupValue,\n items: []\n },\n currentValue,\n idx,\n len,\n result = [group];\n\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n\n result = this._sortGroups(result, descriptor);\n\n return new Query(result);\n },\n\n _sortForGrouping: function(field, dir) {\n var idx, length,\n data = this.data;\n\n if (!stableSort) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n data[idx].__position = idx;\n }\n\n data = new Query(data).sort(field, dir, StableComparer).toArray();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n delete data[idx].__position;\n }\n return data;\n }\n\n return this.sort(field, dir).toArray();\n },\n\n _sortGroups: function(groups, descriptor) {\n var result = groups;\n\n if (descriptor && isFunction(descriptor.compare)) {\n result = new Query(result).order({ compare: descriptor.compare }, descriptor.dir || ASCENDING).toArray();\n }\n\n return result;\n },\n\n aggregate: function(aggregates) {\n var idx,\n len,\n result = {},\n state = {};\n\n if (aggregates && aggregates.length) {\n for (idx = 0, len = this.data.length; idx < len; idx++) {\n calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n }\n }\n return result;\n }\n };\n\n function groupValueComparer(a, b) {\n if (a && a.getTime && b && b.getTime) {\n return a.getTime() === b.getTime();\n }\n return a === b;\n }\n\n function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n aggregates = aggregates || [];\n var idx,\n aggr,\n functionName,\n len = aggregates.length;\n\n for (idx = 0; idx < len; idx++) {\n aggr = aggregates[idx];\n functionName = aggr.aggregate;\n var field = aggr.field;\n accumulator[field] = accumulator[field] || {};\n state[field] = state[field] || {};\n state[field][functionName] = state[field][functionName] || {};\n accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n }\n }\n\n var functions = {\n sum: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n return accumulator;\n },\n count: function(accumulator) {\n return (accumulator || 0) + 1;\n },\n average: function(accumulator, item, accessor, index, length, state) {\n var value = accessor.get(item);\n\n if (state.count === undefined$1) {\n state.count = 0;\n }\n\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n\n if (isNumber(value)) {\n state.count++;\n }\n\n if (index == length - 1 && isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n },\n max: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function(accumulator, item, accessor) {\n var value = accessor.get(item);\n\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n\n function isNumber(val) {\n return typeof val === \"number\" && !isNaN(val);\n }\n\n function isDate(val) {\n return val && val.getTime;\n }\n\n function toJSON(array) {\n var idx, length = array.length, result = new Array(length);\n\n for (idx = 0; idx < length; idx++) {\n result[idx] = array[idx].toJSON();\n }\n\n return result;\n }\n\n Query.normalizeGroup = normalizeGroup;\n Query.normalizeSort = normalizeSort;\n\n Query.process = function(data, options, inPlace) {\n options = options || {};\n\n var group = options.group;\n var customGroupSort = anyGroupDescriptorHasCompare(normalizeGroup(group || []));\n var query = new Query(data),\n groupDescriptorsWithoutCompare = normalizeGroupWithoutCompare(group || []),\n normalizedSort = normalizeSort(options.sort || []),\n sort = customGroupSort ? normalizedSort : groupDescriptorsWithoutCompare.concat(normalizedSort),\n groupDescriptorsWithoutSort,\n total,\n filterCallback = options.filterCallback,\n filter = options.filter,\n skip = options.skip,\n take = options.take;\n\n if (sort && inPlace) {\n query = query.sort(sort, undefined$1, undefined$1, inPlace);\n }\n\n if (filter) {\n query = query.filter(filter);\n\n if (filterCallback) {\n query = filterCallback(query);\n }\n\n total = query.toArray().length;\n }\n\n if (sort) {\n if (!inPlace) {\n query = query.sort(sort);\n }\n\n if (group) {\n data = query.toArray();\n }\n }\n\n if (customGroupSort) {\n query = query.group(group, data, options);\n\n if (skip !== undefined$1 && take !== undefined$1 && !options.groupPaging) {\n query = new Query(flatGroups(query.toArray())).range(skip, take);\n\n groupDescriptorsWithoutSort = map(groupDescriptorsWithoutCompare, function(groupDescriptor) {\n return extend({}, groupDescriptor, {\n skipItemSorting: true\n });\n });\n\n query = query.group(groupDescriptorsWithoutSort, data, options);\n }\n } else {\n if (skip !== undefined$1 && take !== undefined$1) {\n total = query.data.length;\n\n if (skip + take > total && options.virtual) {\n skip -= skip + take - total;\n skip = skip < 0 ? 0 : skip;\n }\n query = query.range(skip, take);\n }\n\n if (group && (!isEmptyObject(group) || group.length !== 0)) {\n query = query.group(group, data, options);\n }\n }\n\n return {\n total: total,\n data: query.toArray()\n };\n };\n\n var LocalTransport = Class.extend({\n init: function(options) {\n this.data = options.data;\n },\n\n read: function(options) {\n options.success(this.data);\n },\n update: function(options) {\n options.success(options.data);\n },\n create: function(options) {\n options.success(options.data);\n },\n destroy: function(options) {\n options.success(options.data);\n }\n });\n\n var RemoteTransport = Class.extend( {\n init: function(options) {\n var that = this, parameterMap;\n\n options = that.options = extend({}, that.options, options);\n\n each(crud, function(index, type) {\n if (typeof options[type] === STRING) {\n options[type] = {\n url: options[type]\n };\n }\n });\n\n that.cache = options.cache ? Cache.create(options.cache) : {\n find: noop,\n add: noop\n };\n\n parameterMap = options.parameterMap;\n\n if (options.submit) {\n that.submit = options.submit;\n }\n\n if (isFunction(options.push)) {\n that.push = options.push;\n }\n\n if (!that.push) {\n that.push = identity;\n }\n\n that.parameterMap = isFunction(parameterMap) ? parameterMap : function(options) {\n var result = {};\n\n each(options, function(option, value) {\n if (option in parameterMap) {\n option = parameterMap[option];\n if (isPlainObject(option)) {\n value = option.value(value);\n option = option.key;\n }\n }\n\n result[option] = value;\n });\n\n return result;\n };\n },\n\n options: {\n parameterMap: identity\n },\n\n create: function(options) {\n return ajax(this.setup(options, CREATE));\n },\n\n read: function(options) {\n var that = this,\n success,\n error,\n result,\n cache = that.cache;\n\n options = that.setup(options, READ);\n\n success = options.success || noop;\n error = options.error || noop;\n\n result = cache.find(options.data);\n\n if (result !== undefined$1) {\n success(result);\n } else {\n options.success = function(result) {\n cache.add(options.data, result);\n\n success(result);\n };\n\n $.ajax(options);\n }\n },\n\n update: function(options) {\n return ajax(this.setup(options, UPDATE));\n },\n\n destroy: function(options) {\n return ajax(this.setup(options, DESTROY));\n },\n\n setup: function(options, type) {\n options = options || {};\n\n var that = this,\n parameters,\n operation = that.options[type],\n data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n\n options = extend(true, {}, operation, options);\n parameters = extend(true, {}, data, options.data);\n\n options.data = that.parameterMap(parameters, type);\n\n if (isFunction(options.url)) {\n options.url = options.url(parameters);\n }\n\n return options;\n }\n });\n\n var Cache = Class.extend({\n init: function() {\n this._store = {};\n },\n add: function(key, data) {\n if (key !== undefined$1) {\n this._store[stringify(key)] = data;\n }\n },\n find: function(key) {\n return this._store[stringify(key)];\n },\n clear: function() {\n this._store = {};\n },\n remove: function(key) {\n delete this._store[stringify(key)];\n }\n });\n\n Cache.create = function(options) {\n var store = {\n \"inmemory\": function() { return new Cache(); }\n };\n\n if (isPlainObject(options) && isFunction(options.find)) {\n return options;\n }\n\n if (options === true) {\n return new Cache();\n }\n\n return store[options]();\n };\n\n function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n setters = {},\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n originalName = fieldNames[getter];\n\n if (originalName && originalName !== getter) {\n if (!setters[originalName]) {\n setters[originalName] = kendo.setter(originalName);\n }\n setters[originalName](record, getters[getter](record));\n delete record[getter];\n }\n }\n }\n }\n\n function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n getter,\n originalName,\n idx,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n record[getter] = modelInstance._parse(getter, getters[getter](record));\n\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n delete record[originalName];\n }\n }\n }\n }\n\n function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record,\n idx,\n fieldName,\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n\n fieldName = originalFieldNames[record.field];\n if (fieldName && fieldName != record.field) {\n record.field = fieldName;\n }\n\n record.value = modelInstance._parse(record.field, record.value);\n\n if (record.items) {\n if (record.hasSubgroups) {\n convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n } else {\n convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n }\n }\n }\n }\n\n function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n data = originalFunction(data);\n\n return wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames)(data);\n };\n }\n\n function wrapDataAccessBase(model, converter, getters, originalFieldNames, fieldNames) {\n return function(data) {\n\n if (data && !isEmptyObject(getters)) {\n if (toString.call(data) !== \"[object Array]\" && !(data instanceof ObservableArray)) {\n data = [data];\n }\n\n converter(data, getters, new model(), originalFieldNames, fieldNames);\n }\n\n return data || [];\n };\n }\n\n var DataReader = Class.extend({\n init: function(schema) {\n var that = this, member, get, model, base;\n\n schema = schema || {};\n\n for (member in schema) {\n get = schema[member];\n\n that[member] = typeof get === STRING ? getter(get) : get;\n }\n\n base = schema.modelBase || Model;\n\n if (isPlainObject(that.model)) {\n that.model = model = base.define(that.model);\n }\n\n var dataFunction = that.data.bind(that);\n\n that._dataAccessFunction = dataFunction;\n\n if (that.model) {\n var groupsFunction = that.groups.bind(that),\n serializeFunction = that.serialize.bind(that),\n originalFieldNames = {},\n getters = {},\n serializeGetters = {},\n fieldNames = {},\n shouldSerialize = false,\n fieldName,\n name;\n\n model = that.model;\n\n if (model.fields) {\n each(model.fields, function(field, value) {\n var fromName;\n\n fieldName = field;\n\n if (isPlainObject(value) && value.field) {\n fieldName = value.field;\n } else if (typeof value === STRING) {\n fieldName = value;\n }\n\n if (isPlainObject(value) && value.from) {\n fromName = value.from;\n }\n\n shouldSerialize = shouldSerialize || (fromName && fromName !== field) || fieldName !== field;\n name = fromName || fieldName;\n getters[field] = name.indexOf(\".\") !== -1 ? getter(name, true) : getter(name);\n serializeGetters[field] = getter(field);\n originalFieldNames[fromName || fieldName] = field;\n fieldNames[field] = fromName || fieldName;\n });\n\n if (!schema.serialize && shouldSerialize) {\n that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n }\n }\n\n that._dataAccessFunction = dataFunction;\n that._wrapDataAccessBase = wrapDataAccessBase(model, convertRecords, getters, originalFieldNames, fieldNames);\n that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n }\n },\n errors: function(data) {\n return data ? data.errors : null;\n },\n parse: identity,\n data: identity,\n total: function(data) {\n return data.length;\n },\n groups: identity,\n aggregates: function() {\n return {};\n },\n serialize: function(data) {\n return data;\n }\n });\n\n function fillLastGroup(originalGroup, newGroup) {\n var currOriginal;\n var currentNew;\n\n if (newGroup.items && newGroup.items.length) {\n for (var i = 0; i < newGroup.items.length; i++) {\n currOriginal = originalGroup.items[originalGroup.items.length - 1];\n currentNew = newGroup.items[i];\n if (currOriginal && currentNew) {\n if (currOriginal.hasSubgroups && currOriginal.value == currentNew.value) {\n fillLastGroup(currOriginal, currentNew);\n } else if (currOriginal.field && currOriginal.value == currentNew.value) {\n currOriginal.items.omitChangeEvent = true;\n currOriginal.items.push.apply(currOriginal.items, currentNew.items);\n currOriginal.items.omitChangeEvent = false;\n } else {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n } else if (currentNew) {\n originalGroup.items.omitChangeEvent = true;\n originalGroup.items.push.apply(originalGroup.items, [currentNew]);\n originalGroup.items.omitChangeEvent = false;\n }\n }\n }\n }\n function mergeGroups(target, dest, skip, take) {\n var group,\n idx = 0,\n items;\n\n while (dest.length && take) {\n group = dest[idx];\n items = group.items;\n\n var length = items.length;\n\n if (target && target.field === group.field && target.value === group.value) {\n if (target.hasSubgroups && target.items.length) {\n mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n } else {\n items = items.slice(skip, skip + take);\n target.items = target.items.concat(items);\n }\n dest.splice(idx--, 1);\n } else if (group.hasSubgroups && items.length) {\n mergeGroups(group, items, skip, take);\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n } else {\n items = items.slice(skip, skip + take);\n group.items = items;\n\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n }\n\n if (items.length === 0) {\n skip -= length;\n } else {\n skip = 0;\n take -= items.length;\n }\n\n if (++idx >= dest.length) {\n break;\n }\n }\n\n if (idx < dest.length) {\n dest.splice(idx, dest.length - idx);\n }\n }\n\n function flatGroups(groups, indexFunction) {\n var result = [];\n var groupsLength = (groups || []).length;\n var group;\n var items;\n var indexFn = isFunction(indexFunction) ? indexFunction : function(array, index) {\n return array[index];\n };\n\n for (var groupIndex = 0; groupIndex < groupsLength; groupIndex++) {\n group = indexFn(groups, groupIndex);\n\n if (group.hasSubgroups) {\n result = result.concat(flatGroups(group.items));\n } else {\n items = group.items;\n\n for (var itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(indexFn(items, itemIndex));\n }\n }\n }\n return result;\n }\n\n function flattenGroups(data) {\n var idx,\n result = [],\n length,\n items,\n itemIndex;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n result = result.concat(flattenGroups(group.items));\n } else {\n items = group.items;\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(items.at(itemIndex));\n }\n }\n }\n }\n return result;\n }\n\n function wrapGroupItems(data, model) {\n var idx, length, group;\n if (model) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n group = data.at(idx);\n if (group.items) {\n if (group.hasSubgroups) {\n wrapGroupItems(group.items, model);\n } else {\n group.items = new LazyObservableArray(group.items, model, group.items._events);\n }\n }\n }\n }\n }\n\n function eachGroupItems(data, func) {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx].hasSubgroups) {\n if (eachGroupItems(data[idx].items, func)) {\n return true;\n }\n } else if (func(data[idx].items, data[idx])) {\n return true;\n }\n }\n }\n\n function replaceInRanges(ranges, data, item, observable) {\n for (var idx = 0; idx < ranges.length; idx++) {\n if (ranges[idx].data === data) {\n break;\n }\n if (replaceInRange(ranges[idx].data, item, observable)) {\n break;\n }\n }\n }\n\n function replaceInRange(items, item, observable) {\n for (var idx = 0, length = items.length; idx < length; idx++) {\n if (items[idx] && items[idx].hasSubgroups) {\n return replaceInRange(items[idx].items, item, observable);\n } else if (items[idx] === item || items[idx] === observable) {\n items[idx] = observable;\n return true;\n }\n }\n }\n\n function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n var item = view[viewIndex];\n\n if (!item || item instanceof type) {\n continue;\n }\n\n if (item.hasSubgroups !== undefined$1 && !serverGrouping) {\n replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n } else {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] === item) {\n view[viewIndex] = data.at(idx);\n replaceInRanges(ranges, data, item, view[viewIndex]);\n break;\n }\n }\n }\n }\n }\n\n function removeModel(data, model) {\n if (!data) {\n return;\n }\n var length = data.length;\n var dataItem;\n var idx;\n\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n data.splice(idx, 1);\n return dataItem;\n }\n }\n }\n\n function indexOfPristineModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return (item.uid && item.uid == model.uid) || (item[model.idField] === model.id && model.id !== model._defaultId);\n });\n }\n return -1;\n }\n\n function indexOfModel(data, model) {\n if (model) {\n return indexOf(data, function(item) {\n return item.uid == model.uid;\n });\n }\n return -1;\n }\n\n function indexOf(data, comparer) {\n var idx, length;\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (comparer(data[idx])) {\n return idx;\n }\n }\n\n return -1;\n }\n\n function fieldNameFromModel(fields, name) {\n if (fields && !isEmptyObject(fields)) {\n var descriptor = fields[name];\n var fieldName;\n if (isPlainObject(descriptor)) {\n fieldName = descriptor.from || descriptor.field || name;\n } else {\n fieldName = fields[name] || name;\n }\n\n if (isFunction(fieldName)) {\n return name;\n }\n\n return fieldName;\n }\n return name;\n }\n\n function convertFilterDescriptorsField(descriptor, model) {\n var idx,\n length,\n target = {};\n\n for (var field in descriptor) {\n if (field !== \"filters\") {\n target[field] = descriptor[field];\n }\n }\n\n if (descriptor.filters) {\n target.filters = [];\n for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n }\n } else {\n target.field = fieldNameFromModel(model.fields, target.field);\n }\n return target;\n }\n\n function convertDescriptorsField(descriptors, model) {\n var idx,\n length,\n result = [],\n target,\n descriptor;\n\n for (idx = 0, length = descriptors.length; idx < length; idx ++) {\n target = {};\n\n descriptor = descriptors[idx];\n\n for (var field in descriptor) {\n target[field] = descriptor[field];\n }\n\n target.field = fieldNameFromModel(model.fields, target.field);\n\n if (target.aggregates && isArray(target.aggregates)) {\n target.aggregates = convertDescriptorsField(target.aggregates, model);\n }\n result.push(target);\n }\n return result;\n }\n\n var DataSource = Observable.extend({\n init: function(options) {\n var that = this, model, data;\n\n if (options) {\n data = options.data;\n }\n\n options = that.options = extend({}, that.options, options);\n\n that._map = {};\n that._prefetch = {};\n that._data = [];\n that._pristineData = [];\n that._ranges = [];\n that._view = [];\n that._pristineTotal = 0;\n that._destroyed = [];\n that._pageSize = options.pageSize;\n that._page = options.page || (options.pageSize ? 1 : undefined$1);\n that._sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n that._filter = normalizeFilter(options.filter);\n that._group = normalizeGroup(options.group);\n that._aggregate = options.aggregate;\n that._total = options.total;\n that._groupPaging = options.groupPaging;\n\n if (that._groupPaging) {\n that._groupsState = {};\n }\n that._shouldDetachObservableParents = true;\n\n Observable.fn.init.call(that);\n\n that.transport = Transport.create(options, data, that);\n\n if (isFunction(that.transport.push)) {\n that.transport.push({\n pushCreate: that._pushCreate.bind(that),\n pushUpdate: that._pushUpdate.bind(that),\n pushDestroy: that._pushDestroy.bind(that)\n });\n }\n\n if (options.offlineStorage != null) {\n if (typeof options.offlineStorage == \"string\") {\n var key = options.offlineStorage;\n\n that._storage = {\n getItem: function() {\n return JSON.parse(localStorage.getItem(key));\n },\n setItem: function(item) {\n localStorage.setItem(key, stringify(that.reader.serialize(item)));\n }\n };\n } else {\n that._storage = options.offlineStorage;\n }\n }\n\n that.reader = new kendo.data.readers[options.schema.type || \"json\" ](options.schema);\n\n model = that.reader.model || {};\n\n that._detachObservableParents();\n\n that._data = that._observe(that._data);\n that._online = true;\n\n that.bind([\"push\", ERROR, CHANGE, REQUESTSTART, SYNC, REQUESTEND, PROGRESS], options);\n },\n\n options: {\n data: null,\n schema: {\n modelBase: Model\n },\n offlineStorage: null,\n serverSorting: false,\n serverPaging: false,\n serverFiltering: false,\n serverGrouping: false,\n serverAggregates: false,\n batch: false,\n inPlaceSort: false\n },\n\n clone: function() {\n return this;\n },\n\n online: function(value) {\n if (value !== undefined$1) {\n if (this._online != value) {\n this._online = value;\n\n if (value) {\n return this.sync();\n }\n }\n\n return $.Deferred().resolve().promise();\n } else {\n return this._online;\n }\n },\n\n offlineData: function(state) {\n if (this.options.offlineStorage == null) {\n return null;\n }\n\n if (state !== undefined$1) {\n return this._storage.setItem(state);\n }\n\n return this._storage.getItem() || [];\n },\n\n _isGrouped: function() {\n var group = this.group() || [];\n\n return group.length;\n },\n\n _isServerGrouped: function() {\n var group = this.group() || [];\n\n return this.options.serverGrouping && group.length;\n },\n\n _isServerGroupPaged: function() {\n return this._isServerGrouped() && this._groupPaging;\n },\n\n _isGroupPaged: function() {\n var group = this._group || [];\n\n return this._groupPaging && group.length;\n },\n\n _pushCreate: function(result) {\n this._push(result, \"pushCreate\");\n },\n\n _pushUpdate: function(result) {\n this._push(result, \"pushUpdate\");\n },\n\n _pushDestroy: function(result) {\n this._push(result, \"pushDestroy\");\n },\n\n _push: function(result, operation) {\n var data = this._readData(result);\n\n if (!data) {\n data = result;\n }\n\n this[operation](data);\n },\n\n _flatData: function(data, skip) {\n if (data) {\n if (this._isServerGrouped()) {\n return flattenGroups(data);\n }\n\n if (!skip) {\n for (var idx = 0; idx < data.length; idx++) {\n data.at(idx);\n }\n }\n }\n\n return data;\n },\n\n parent: noop,\n\n get: function(id) {\n var idx, length, data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].id == id) {\n return data[idx];\n }\n }\n },\n\n getByUid: function(id) {\n return this._getByUid(id, this._data);\n },\n\n _getByUid: function(id, dataItems) {\n var idx, length, data = this._flatData(dataItems, this.options.useRanges);\n\n if (!data) {\n return;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].uid == id) {\n return data[idx];\n }\n }\n },\n\n indexOf: function(model) {\n return indexOfModel(this._data, model);\n },\n\n at: function(index) {\n return this._data.at(index);\n },\n\n data: function(value) {\n var that = this;\n if (value !== undefined$1) {\n that._detachObservableParents();\n that._data = this._observe(value);\n\n that._pristineData = value.slice(0);\n\n that._storeData();\n\n that._ranges = [];\n that.trigger(\"reset\");\n that._addRange(that._data);\n\n that._total = that._data.length;\n that._pristineTotal = that._total;\n\n that._process(that._data);\n } else {\n if (that._data) {\n for (var idx = 0; idx < that._data.length; idx++) {\n that._data.at(idx);\n }\n }\n\n return that._data;\n }\n },\n\n view: function(value) {\n if (value === undefined$1) {\n return this._view;\n } else {\n this._view = this._observeView(value);\n }\n },\n\n _observeView: function(data) {\n var that = this;\n replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n\n var view = new LazyObservableArray(data, that.reader.model);\n view.parent = function() { return that.parent(); };\n return view;\n },\n\n flatView: function() {\n var groups = this.group() || [];\n\n if (groups.length) {\n return flattenGroups(this._view);\n } else {\n return this._view;\n }\n },\n\n add: function(model) {\n return this.insert(this._data.length, model);\n },\n\n _createNewModel: function(model) {\n if (this.reader.model) {\n return new this.reader.model(model);\n }\n\n if (model instanceof ObservableObject) {\n return model;\n }\n\n return new ObservableObject(model);\n },\n\n insert: function(index, model) {\n if (!model) {\n model = index;\n index = 0;\n }\n\n if (!(model instanceof Model)) {\n model = this._createNewModel(model);\n }\n\n if (this._isServerGrouped()) {\n this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n } else {\n this._data.splice(index, 0, model);\n }\n\n this._insertModelInRange(index, model);\n\n return model;\n },\n\n pushInsert: function(index, items) {\n var that = this;\n var rangeSpan = that._getCurrentRangeSpan();\n\n if (!items) {\n items = index;\n index = 0;\n }\n\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n\n var result = this.insert(index, item);\n\n pushed.push(result);\n\n var pristine = result.toJSON();\n\n if (this._isServerGrouped()) {\n pristine = this._wrapInEmptyGroup(pristine);\n }\n\n this._pristineData.push(pristine);\n\n if (rangeSpan && rangeSpan.length) {\n $(rangeSpan).last()[0].pristineData.push(pristine);\n }\n\n index++;\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"create\",\n items: pushed\n });\n }\n },\n\n pushCreate: function(items) {\n this.pushInsert(this._data.length, items);\n },\n\n pushUpdate: function(items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var pushed = [];\n\n for (var idx = 0; idx < items.length; idx ++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n\n var target = this.get(model.id);\n\n if (target) {\n pushed.push(target);\n\n target.accept(item);\n\n target.trigger(CHANGE);\n\n this._updatePristineForModel(target, item);\n } else {\n this.pushCreate(item);\n }\n }\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n pushDestroy: function(items) {\n var pushed = this._removeItems(items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"destroy\",\n items: pushed\n });\n }\n },\n\n _removeItems: function(itemsToRemove, removePristine) {\n if (!isArray(itemsToRemove)) {\n itemsToRemove = [itemsToRemove];\n }\n\n var shouldRemovePristine = typeof removePristine !== \"undefined\" ? removePristine : true;\n\n var destroyed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < itemsToRemove.length; idx ++) {\n var item = itemsToRemove[idx];\n var model = this._createNewModel(item);\n var found = false;\n var index = idx;\n\n this._eachItem(this._data, function(items) {\n // Ensure all children of a parent are removed before the change event is triggered.\n if (index !== itemsToRemove.length - 1) {\n items.omitChangeEvent = true;\n items.omitCache = [];\n } else {\n items.omitChangeEvent = false;\n }\n\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.id === model.id) {\n /* When the change event is omitted, certain calculations such as 'total' are broken because only the last item reaches the change handler.\n Keep track of all child items that had their change event omitted and when the change is finally triggered, concat them to the result.*/\n if (items.omitChangeEvent) {\n items.omitCache.push(item);\n }\n destroyed.push(item);\n items.splice(idx, 1);\n found = true;\n break;\n }\n }\n });\n\n if (found && shouldRemovePristine) {\n this._removePristineForModel(model);\n this._destroyed.pop();\n }\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return destroyed;\n },\n\n pushMove: function(index, items) {\n var pushed = this._moveItems(index, items);\n\n if (pushed.length) {\n this.trigger(\"push\", {\n type: \"update\",\n items: pushed\n });\n }\n },\n\n _moveItems: function(index, items) {\n if (!isArray(items)) {\n items = [items];\n }\n\n var moved = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n\n try {\n for (var i = 0; i < items.length; i ++) {\n var item = items[i];\n var model = this._createNewModel(item);\n\n this._eachItem(this._data, function(dataItems) {\n for (var idx = 0; idx < dataItems.length; idx++) {\n var dataItem = dataItems.at(idx);\n if (dataItem.id === model.id) {\n moved.push(dataItem);\n dataItems.splice(index >= idx ? --index : index, 0, dataItems.splice(idx, 1)[0]);\n index++;\n break;\n }\n }\n });\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n\n return moved;\n },\n\n remove: function(model) {\n var result,\n that = this,\n hasGroups = that._isServerGrouped();\n\n if (hasGroups && model.uid && (!model.isNew || !model.isNew())) {\n that._pushInDestroyed(model);\n }\n\n this._eachItem(that._data, function(items) {\n result = removeModel(items, model);\n\n if (result && hasGroups) {\n return true;\n }\n });\n\n this._removeModelFromRanges(model);\n\n return model;\n },\n\n destroyed: function() {\n return this._destroyed;\n },\n\n created: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew() && !data[idx].notFetched) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n updated: function() {\n var idx,\n length,\n result = [],\n data = this._flatData(this._data, this.options.useRanges);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && !data[idx].isNew()) && data[idx].dirty) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n\n sync: function() {\n var that = this,\n created = [],\n updated = [],\n destroyed = that._destroyed;\n\n var promise = $.Deferred().resolve().promise();\n\n if (that.online()) {\n\n if (!that.reader.model) {\n return promise;\n }\n\n created = that.created();\n updated = that.updated();\n\n var promises = [];\n\n if (that.options.batch && that.transport.submit) {\n promises = that._sendSubmit(created, updated, destroyed);\n } else {\n promises.push.apply(promises, that._send(\"create\", created));\n promises.push.apply(promises, that._send(\"update\", updated));\n promises.push.apply(promises, that._send(\"destroy\", destroyed));\n }\n\n promise = $.when\n .apply(null, promises)\n .then(function() {\n var arguments$1 = arguments;\n\n var idx, length;\n\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n if (arguments$1[idx]) {\n that._accept(arguments$1[idx]);\n }\n }\n\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n\n that.trigger(SYNC);\n\n if (that._isServerGroupPaged()) {\n that.read();\n }\n });\n } else {\n that._storeData(true);\n\n that._syncEnd();\n\n that._change({ action: \"sync\" });\n }\n\n return promise;\n },\n\n _syncEnd: noop,\n\n cancelChanges: function(model) {\n var that = this;\n\n if (model instanceof kendo.data.Model) {\n that._cancelModel(model);\n } else {\n that._destroyed = [];\n that._detachObservableParents();\n that._data = that._observe(that._pristineData);\n if (that.options.serverPaging) {\n that._total = that._pristineTotal;\n }\n\n that._ranges = [];\n that._addRange(that._data, 0);\n\n that._changesCanceled();\n\n that._change();\n\n that._markOfflineUpdatesAsDirty();\n\n if (that._isServerGrouped()) {\n that.read();\n }\n }\n },\n\n _changesCanceled: noop,\n\n _markOfflineUpdatesAsDirty: function() {\n var that = this;\n\n if (that.options.offlineStorage != null) {\n that._eachItem(that._data, function(items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.__state__ == \"update\" || item.__state__ == \"create\") {\n item.dirty = true;\n }\n }\n });\n }\n },\n\n hasChanges: function() {\n var idx,\n length,\n data = this._flatData(this._data, this.options.useRanges);\n\n if (this._destroyed.length) {\n return true;\n }\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n if ((data[idx].isNew && data[idx].isNew()) || data[idx].dirty) {\n return true;\n }\n }\n\n return false;\n },\n\n _accept: function(result) {\n var that = this,\n models = result.models,\n response = result.response,\n idx = 0,\n serverGroup = that._isServerGrouped(),\n pristine = that._pristineData,\n type = result.type,\n length;\n\n that.trigger(REQUESTEND, { response: response, type: type });\n\n if (response && !isEmptyObject(response)) {\n response = that.reader.parse(response);\n\n if (that._handleCustomErrors(response)) {\n return;\n }\n\n response = that.reader.data(response);\n\n if (!isArray(response)) {\n response = [response];\n }\n } else {\n response = $.map(models, function(model) { return model.toJSON(); } );\n }\n\n if (type === \"destroy\") {\n that._destroyed = [];\n }\n\n for (idx = 0, length = models.length; idx < length; idx++) {\n if (type !== \"destroy\") {\n models[idx].accept(response[idx]);\n\n if (type === \"create\") {\n pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx].toJSON()) : response[idx]);\n } else if (type === \"update\") {\n that._updatePristineForModel(models[idx], response[idx]);\n }\n } else {\n that._removePristineForModel(models[idx]);\n }\n }\n },\n\n _updatePristineForModel: function(model, values) {\n this._executeOnPristineForModel(model, function(index, items) {\n kendo.deepExtend(items[index], values);\n });\n },\n\n _executeOnPristineForModel: function(model, callback) {\n this._eachPristineItem(\n function(items) {\n var index = indexOfPristineModel(items, model);\n if (index > -1) {\n callback(index, items);\n return true;\n }\n });\n },\n\n _removePristineForModel: function(model) {\n this._executeOnPristineForModel(model, function(index, items) {\n items.splice(index, 1);\n });\n },\n\n _readData: function(data) {\n var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n return read.call(this.reader, data);\n },\n\n _eachPristineItem: function(callback) {\n var that = this;\n var options = that.options;\n var rangeSpan = that._getCurrentRangeSpan();\n\n that._eachItem(that._pristineData, callback);\n\n if (options.serverPaging && options.useRanges) {\n each(rangeSpan, function(i, range) {\n that._eachItem(range.pristineData, callback);\n });\n }\n },\n\n _eachItem: function(data, callback) {\n if (data && data.length) {\n if (this._isServerGrouped()) {\n eachGroupItems(data, callback);\n } else {\n callback(data);\n }\n }\n },\n\n _pristineForModel: function(model) {\n var pristine,\n idx,\n callback = function(items) {\n idx = indexOfPristineModel(items, model);\n if (idx > -1) {\n pristine = items[idx];\n return true;\n }\n };\n\n this._eachPristineItem(callback);\n\n return pristine;\n },\n\n _cancelModel: function(model) {\n var that = this;\n var pristine = this._pristineForModel(model);\n\n this._eachItem(this._data, function(items) {\n var idx = indexOfModel(items, model);\n if (idx >= 0) {\n if (pristine && (!model.isNew() || pristine.__state__)) {\n items[idx].accept(pristine);\n\n if (pristine.__state__ == \"update\") {\n items[idx].dirty = true;\n }\n\n } else {\n that._modelCanceled(model);\n\n items.splice(idx, 1);\n\n that._removeModelFromRanges(model);\n }\n }\n });\n },\n\n _modelCanceled: noop,\n\n _submit: function(promises, data) {\n var that = this;\n\n that.trigger(REQUESTSTART, { type: \"submit\" });\n\n that.trigger(PROGRESS);\n\n that.transport.submit(extend({\n success: function(response, type) {\n var promise = $.grep(promises, function(x) {\n return x.type == type;\n })[0];\n\n if (promise) {\n promise.resolve({\n response: response,\n models: promise.models,\n type: type\n });\n }\n },\n error: function(response, status, error) {\n for (var idx = 0; idx < promises.length; idx++) {\n promises[idx].reject(response);\n }\n\n that.error(response, status, error);\n }\n }, data));\n },\n\n _sendSubmit: function(created, updated, destroyed) {\n var that = this,\n promises = [];\n\n if (that.options.batch) {\n if (created.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"create\";\n deferred.models = created;\n }));\n }\n\n if (updated.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"update\";\n deferred.models = updated;\n }));\n }\n\n if (destroyed.length) {\n promises.push($.Deferred(function(deferred) {\n deferred.type = \"destroy\";\n deferred.models = destroyed;\n }));\n }\n\n that._submit(promises, {\n data: {\n created: that.reader.serialize(toJSON(created)),\n updated: that.reader.serialize(toJSON(updated)),\n destroyed: that.reader.serialize(toJSON(destroyed))\n }\n });\n }\n\n return promises;\n },\n\n _promise: function(data, models, type) {\n var that = this;\n\n return $.Deferred(function(deferred) {\n that.trigger(REQUESTSTART, { type: type });\n\n that.trigger(PROGRESS);\n\n that.transport[type].call(that.transport, extend({\n success: function(response) {\n deferred.resolve({\n response: response,\n models: models,\n type: type\n });\n },\n error: function(response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, data));\n }).promise();\n },\n\n _send: function(method, data) {\n var that = this,\n idx,\n length,\n promises = [],\n converted = that.reader.serialize(toJSON(data));\n\n if (that.options.batch) {\n if (data.length) {\n promises.push(that._promise( { data: { models: converted } }, data , method));\n }\n } else {\n for (idx = 0, length = data.length; idx < length; idx++) {\n promises.push(that._promise( { data: converted[idx] }, [ data[idx] ], method));\n }\n }\n\n return promises;\n },\n\n read: function(data) {\n var that = this, params = that._params(data);\n var deferred = $.Deferred();\n\n that._queueRequest(params, function() {\n var isPrevented = that.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n that.trigger(PROGRESS);\n\n that._ranges = [];\n that.trigger(\"reset\");\n if (that.online()) {\n that.transport.read({\n data: params,\n success: function(data) {\n that._ranges = [];\n that.success(data, params);\n\n deferred.resolve();\n },\n error: function() {\n var args = slice.call(arguments);\n\n that.error.apply(that, args);\n\n deferred.reject.apply(deferred, args);\n }\n });\n } else if (that.options.offlineStorage != null) {\n that.success(that.offlineData(), params);\n\n deferred.resolve();\n }\n } else {\n that._dequeueRequest();\n\n deferred.resolve(isPrevented);\n }\n });\n\n return deferred.promise();\n },\n\n _readAggregates: function(data) {\n return this.reader.aggregates(data);\n },\n\n success: function(data) {\n var that = this,\n options = that.options,\n items,\n replaceSubset;\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n if (that.online()) {\n data = that.reader.parse(data);\n\n if (that._handleCustomErrors(data)) {\n that._dequeueRequest();\n return;\n }\n\n that._total = that.reader.total(data);\n\n if (that._isServerGroupPaged()) {\n that._serverGroupsTotal = that._total;\n }\n\n if (that._pageSize > that._total) {\n that._pageSize = that._total;\n if (that.options.pageSize && that.options.pageSize > that._pageSize) {\n that._pageSize = that.options.pageSize;\n }\n }\n\n if (that._aggregate && options.serverAggregates) {\n that._aggregateResult = that._readAggregates(data);\n }\n\n data = that._readData(data);\n\n that._destroyed = [];\n } else {\n data = that._readData(data);\n\n items = [];\n var itemIds = {};\n var model = that.reader.model;\n var idField = model ? model.idField : \"id\";\n var idx;\n\n for (idx = 0; idx < this._destroyed.length; idx++) {\n var id = this._destroyed[idx][idField];\n itemIds[id] = id;\n }\n\n for (idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var state = item.__state__;\n if (state == \"destroy\") {\n if (!itemIds[item[idField]]) {\n this._pushInDestroyed(this._createNewModel(item));\n }\n } else {\n items.push(item);\n }\n }\n\n data = items;\n\n that._total = data.length;\n }\n\n that._pristineTotal = that._total;\n replaceSubset = that._skip && that._data.length && that._skip < that._data.length;\n\n if (that.options.endless) {\n if (replaceSubset) {\n that._pristineData.splice(that._skip, that._pristineData.length);\n }\n items = data.slice(0);\n for (var j = 0; j < items.length; j++) {\n that._pristineData.push(items[j]);\n }\n } else {\n that._pristineData = data.slice(0);\n }\n\n that._detachObservableParents();\n\n if (that.options.endless) {\n that._data.unbind(CHANGE, that._changeHandler);\n\n if (that._isServerGrouped() && that._data[that._data.length - 1].value === data[0].value) {\n fillLastGroup(that._data[that._data.length - 1], data[0]);\n data.shift();\n }\n\n data = that._observe(data);\n if (replaceSubset) {\n that._data.splice(that._skip, that._data.length);\n }\n for (var i = 0; i < data.length; i++) {\n that._data.push(data[i]);\n }\n that._data.bind(CHANGE, that._changeHandler);\n } else {\n that._data = that._observe(data);\n }\n\n that._markOfflineUpdatesAsDirty();\n\n that._storeData();\n\n that._addRange(that._data);\n\n that._process(that._data);\n\n that._dequeueRequest();\n },\n\n _detachObservableParents: function() {\n if (this._data && this._shouldDetachObservableParents) {\n for (var idx = 0; idx < this._data.length; idx++) {\n if (this._data[idx].parent) {\n this._data[idx].parent = noop;\n }\n }\n }\n },\n\n _storeData: function(updatePristine) {\n var serverGrouping = this._isServerGrouped();\n var model = this.reader.model;\n\n function items(data) {\n var state = [];\n\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data.at(idx);\n var item = dataItem.toJSON();\n\n if (serverGrouping && dataItem.items) {\n item.items = items(dataItem.items);\n } else {\n item.uid = dataItem.uid;\n\n if (model) {\n if (dataItem.isNew()) {\n item.__state__ = \"create\";\n } else if (dataItem.dirty) {\n item.__state__ = \"update\";\n }\n }\n }\n state.push(item);\n }\n\n return state;\n }\n\n if (this.options.offlineStorage != null) {\n var state = items(this._data);\n\n var destroyed = [];\n\n for (var idx = 0; idx < this._destroyed.length; idx++) {\n var item = this._destroyed[idx].toJSON();\n item.__state__ = \"destroy\";\n destroyed.push(item);\n }\n\n this.offlineData(state.concat(destroyed));\n\n if (updatePristine) {\n this._pristineData = this.reader.reader ? this.reader.reader._wrapDataAccessBase(state) : this.reader._wrapDataAccessBase(state);\n }\n }\n },\n\n _addRange: function(data, skip) {\n var that = this,\n start = typeof (skip) !== \"undefined\" ? skip : (that._skip || 0),\n end,\n range = {\n data: data,\n pristineData: data.toJSON(),\n timestamp: that._timeStamp()\n };\n\n if (this._isGroupPaged()) {\n end = start + data.length;\n range.outerStart = start;\n range.outerEnd = end;\n } else {\n end = start + that._flatData(data, true).length;\n }\n\n range.start = start;\n range.end = end;\n that._ranges.push(range);\n that._sortRanges();\n\n if (that._isGroupPaged()) {\n if (!that._groupsFlat) {\n that._groupsFlat = [];\n }\n that._appendToGroupsFlat(range.data);\n that._updateOuterRangesLength();\n }\n },\n\n _appendToGroupsFlat: function(data) {\n var length = data.length;\n\n for (var i = 0; i < length; i++) {\n this._groupsFlat.push(data[i]);\n }\n },\n\n _getGroupByUid: function(uid) {\n var length = this._groupsFlat.length;\n var group;\n\n for (var i = 0; i < length; i++) {\n group = this._groupsFlat[i];\n if (group.uid === uid) {\n return group;\n }\n }\n },\n\n _sortRanges: function() {\n this._ranges.sort(function(x, y) {\n return x.start - y.start;\n });\n },\n\n error: function(xhr, status, errorThrown) {\n this._dequeueRequest();\n this.trigger(REQUESTEND, { });\n this.trigger(ERROR, { xhr: xhr, status: status, errorThrown: errorThrown });\n },\n\n _params: function(data) {\n var that = this,\n options = extend({\n take: that.take(),\n skip: that.skip(),\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate,\n groupPaging: !!that._groupPaging\n }, data);\n\n if (!that.options.serverPaging) {\n delete options.take;\n delete options.skip;\n delete options.page;\n delete options.pageSize;\n }\n\n if (!that.options.serverGrouping) {\n delete options.group;\n } else if (that.reader.model && options.group) {\n options.group = convertDescriptorsField(options.group, that.reader.model);\n }\n\n if (!that.options.serverFiltering) {\n delete options.filter;\n } else if (that.reader.model && options.filter) {\n options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n }\n\n if (!that.options.serverSorting) {\n delete options.sort;\n } else if (that.reader.model && options.sort) {\n options.sort = convertDescriptorsField(options.sort, that.reader.model);\n }\n\n if (!that.options.serverAggregates) {\n delete options.aggregate;\n } else if (that.reader.model && options.aggregate) {\n options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n }\n\n if (!that.options.groupPaging) {\n delete options.groupPaging;\n }\n\n return options;\n },\n\n _queueRequest: function(options, callback) {\n var that = this;\n if (!that._requestInProgress) {\n that._requestInProgress = true;\n that._pending = undefined$1;\n callback();\n } else {\n that._pending = { callback: callback.bind(that), options: options };\n }\n },\n\n _dequeueRequest: function() {\n var that = this;\n that._requestInProgress = false;\n if (that._pending) {\n that._queueRequest(that._pending.options, that._pending.callback);\n }\n },\n\n _handleCustomErrors: function(response) {\n if (this.reader.errors) {\n var errors = this.reader.errors(response);\n if (errors) {\n this.trigger(ERROR, { xhr: null, status: \"customerror\", errorThrown: \"custom error\", errors: errors });\n return true;\n }\n }\n return false;\n },\n\n _shouldWrap: function(data) {\n var model = this.reader.model;\n\n if (model && data.length) {\n return !(data[0] instanceof model);\n }\n\n return false;\n },\n\n _observe: function(data) {\n var that = this,\n model = that.reader.model;\n\n that._shouldDetachObservableParents = true;\n\n if (data instanceof ObservableArray) {\n that._shouldDetachObservableParents = false;\n if (that._shouldWrap(data)) {\n data.type = that.reader.model;\n data.wrapAll(data, data);\n }\n } else {\n var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n data = new arrayType(data, that.reader.model);\n data.parent = function() { return that.parent(); };\n }\n\n if (that._isServerGrouped()) {\n wrapGroupItems(data, model);\n }\n\n if (that._changeHandler && that._data && that._data instanceof ObservableArray &&\n !(that.options.useRanges && that.options.serverPaging)) {\n that._data.unbind(CHANGE, that._changeHandler);\n } else {\n that._changeHandler = that._change.bind(that);\n }\n\n return data.bind(CHANGE, that._changeHandler);\n },\n\n _updateTotalForAction: function(action, items) {\n var that = this;\n\n var total = parseInt(that._total, 10);\n\n if (!isNumber(that._total)) {\n total = parseInt(that._pristineTotal, 10);\n }\n if (action === \"add\") {\n total += items.length;\n } else if (action === \"remove\") {\n total -= items.length;\n } else if (action !== \"itemchange\" && action !== \"sync\" && !that.options.serverPaging) {\n total = that._pristineTotal;\n } else if (action === \"sync\") {\n total = that._pristineTotal = parseInt(that._total, 10);\n }\n\n that._total = total;\n },\n\n _pushInDestroyed: function(model) {\n var isPushed = this._destroyed.find(function(item) {\n return item.uid === model.uid;\n });\n if (!isPushed) {\n this._destroyed.push(model);\n }\n },\n\n _change: function(e) {\n var that = this, idx, length, action = e ? e.action : \"\";\n\n if (action === \"remove\") {\n for (idx = 0, length = e.items.length; idx < length; idx++) {\n if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n that._pushInDestroyed(e.items[idx]);\n }\n }\n }\n\n if (that.options.autoSync && (action === \"add\" || action === \"remove\" || action === \"itemchange\")) {\n\n var handler = function(args) {\n if (args.action === \"sync\") {\n that.unbind(\"change\", handler);\n that._updateTotalForAction(action, e.items);\n }\n };\n\n that.first(\"change\", handler);\n\n that.sync();\n\n } else {\n that._updateTotalForAction(action, e ? e.items : []);\n\n that._process(that._data, e);\n }\n },\n\n _calculateAggregates: function(data, options) {\n options = options || {};\n\n var query = new Query(data),\n aggregates = options.aggregate,\n filter = options.filter;\n\n if (filter) {\n query = query.filter(filter);\n }\n\n return query.aggregate(aggregates);\n },\n\n _process: function(data, e) {\n var that = this,\n options = {},\n result;\n\n if (that.options.serverPaging !== true) {\n options.skip = that._skip;\n options.take = that._take || that._pageSize;\n\n if (options.skip === undefined$1 && that._page !== undefined$1 && that._pageSize !== undefined$1) {\n options.skip = (that._page - 1) * that._pageSize;\n }\n\n if (that.options.useRanges) {\n options.skip = that.currentRangeStart();\n }\n }\n\n if (that.options.serverSorting !== true) {\n options.sort = that._sort;\n }\n\n if (that.options.serverFiltering !== true) {\n options.filter = that._filter;\n }\n\n if (that.options.serverGrouping !== true) {\n options.group = that._group;\n }\n\n if (that.options.serverAggregates !== true) {\n options.aggregate = that._aggregate;\n }\n\n if (that.options.serverGrouping) {\n that._clearEmptyGroups(data);\n }\n\n options.groupPaging = that._groupPaging;\n\n if (that._isGroupPaged() && e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n result = that._queryProcess(data, {\n aggregate: that._aggregate\n });\n } else {\n result = that._queryProcess(data, options);\n }\n\n if (that._filter && e && e.action === \"add\") {\n var model = e.items[0],\n resultData = result.data;\n\n if (that._isGrouped() && !this._isServerGrouped()) {\n resultData = flattenGroups(resultData);\n }\n\n var modelIsInView = resultData.find(function(item) {\n return item.uid === model.uid;\n });\n\n if (!modelIsInView) {\n result.data.splice(model.index, 0, that._isGrouped() ? that._wrapInEmptyGroup(model) : model);\n result.total++;\n }\n }\n\n if (that.options.serverAggregates !== true) {\n // for performance reasons, calculate aggregates for part of the data only after query process\n // this is necessary in the TreeList when paging\n that._aggregateResult = that._calculateAggregates(result.dataToAggregate || data, options);\n }\n\n that._setView(result, options, e);\n\n that._setFilterTotal(result.total, false);\n\n e = e || {};\n\n e.items = e.items || that._view;\n\n that.trigger(CHANGE, e);\n },\n\n _setView: function(result, options, e) {\n var that = this;\n\n if (that._isGroupPaged() && !that._isServerGrouped()) {\n if (e && (e.action === \"page\" || e.action === \"expandGroup\" || e.action === \"collapseGroup\")) {\n that.view(result.data);\n that._updateOuterRangesLength();\n } else {\n that._ranges = [];\n var query = new Query(result.data);\n that._addRange(that._observe(result.data));\n\n if (options.skip + options.take > result.data.length) {\n options.skip = result.data.length - options.take;\n }\n\n that.view(query.range(options.skip, options.take).toArray());\n }\n\n } else {\n that.view(result.data);\n }\n },\n\n _clearEmptyGroups: function(data) {\n for (var idx = data.length - 1; idx >= 0; idx--) {\n var group = data[idx];\n if (group.hasSubgroups) {\n this._clearEmptyGroups(group.items);\n }\n\n if (group.items && !group.items.length && !group.itemCount) {\n splice.apply(group.parent(), [idx, 1]);\n }\n }\n },\n\n _queryProcess: function(data, options) {\n if (this.options.inPlaceSort) {\n return Query.process(data, options, this.options.inPlaceSort);\n }\n else {\n return Query.process(data, options);\n }\n },\n\n _mergeState: function(options) {\n var that = this;\n\n if (options !== undefined$1) {\n that._pageSize = options.pageSize;\n that._page = options.page;\n that._sort = options.sort;\n that._filter = options.filter;\n that._group = options.group;\n that._aggregate = options.aggregate;\n that._skip = that._currentRangeStart = options.skip;\n that._take = options.take;\n\n if (that._skip === undefined$1) {\n that._skip = that._currentRangeStart = that.skip();\n options.skip = that.skip();\n }\n\n if (that._take === undefined$1 && that._pageSize !== undefined$1) {\n that._take = that._pageSize;\n options.take = that._take;\n }\n\n if (that.options.virtual) {\n options.virtual = that.options.virtual;\n }\n\n if (options.sort) {\n that._sort = options.sort = normalizeSort(options.sort);\n that._sortFields = sortFields(options.sort);\n }\n\n if (options.filter) {\n that._filter = options.filter = (that.options.accentFoldingFiltering && !$.isEmptyObject(options.filter)) ? $.extend({}, normalizeFilter(options.filter), { accentFoldingFiltering: that.options.accentFoldingFiltering }) : normalizeFilter(options.filter);\n }\n\n if (options.group) {\n that._group = options.group = normalizeGroup(options.group);\n }\n if (options.aggregate) {\n that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n }\n }\n return options;\n },\n\n query: function(options) {\n var result;\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n\n if (remote || ((this._data === undefined$1 || this._data.length === 0) && !this._destroyed.length)) {\n if (this.options.endless) {\n var moreItemsCount = options.pageSize - this.pageSize();\n if (moreItemsCount > 0) {\n moreItemsCount = this.pageSize();\n options.page = options.pageSize / moreItemsCount;\n options.pageSize = moreItemsCount;\n } else {\n options.page = 1;\n this.options.endless = false;\n }\n }\n return this.read(this._mergeState(options));\n }\n\n var isPrevented = this.trigger(REQUESTSTART, { type: \"read\" });\n if (!isPrevented) {\n this.trigger(PROGRESS);\n if (options) {\n options.groupPaging = this._groupPaging;\n }\n result = this._queryProcess(this._data, this._mergeState(options));\n\n this._setFilterTotal(result.total, true);\n\n this._aggregateResult = this._calculateAggregates(result.dataToAggregate || this._data, options);\n this._setView(result, options);\n this.trigger(REQUESTEND, { type: \"read\" });\n this.trigger(CHANGE, { items: result.data, action: options ? options.action : \"\" });\n }\n\n return $.Deferred().resolve(isPrevented).promise();\n },\n\n _hasExpandedSubGroups: function(group) {\n var result = false;\n var length = group.items ? group.items.length : 0;\n\n if (!group.hasSubgroups) {\n return false;\n }\n\n for (var i = 0; i < length; i++) {\n if (this._groupsState[group.items[i].uid]) {\n result = true;\n break;\n }\n }\n return result;\n },\n\n _findGroupedRange: function(data, result, options, parents, callback) {\n var that = this;\n var length = data.length;\n var group;\n var current;\n var itemsLength;\n var groupCount;\n var itemsToSkip;\n\n for (var i = 0; i < length; i++) {\n group = data[i];\n\n if (options.taken >= options.take) {\n break;\n }\n\n if (!that._getGroupByUid(group.uid)) {\n that._groupsFlat.push(group);\n }\n\n if (that._groupsState[group.uid]) {\n if (that._isServerGroupPaged()) {\n if (that._fetchGroupItems(group, options, parents, callback)) {\n that._fetchingGroupItems = true;\n return;\n }\n groupCount = (group.subgroupCount || group.itemCount) + 1;\n itemsToSkip = options.skip - options.skipped;\n if (!that._hasExpandedSubGroups(group) && itemsToSkip > groupCount) {\n options.skipped += groupCount;\n continue;\n }\n }\n\n if (options.includeParents && options.skipped < options.skip) {\n options.skipped++;\n group.excludeHeader = true;\n } else if (options.includeParents) {\n options.taken++;\n group.excludeHeader = false;\n }\n\n if (group.hasSubgroups && group.items && group.items.length) {\n group.currentItems = [];\n\n if (!parents) {\n parents = [];\n }\n parents.push(group);\n\n that._findGroupedRange(group.items, group.currentItems, options, parents, callback);\n parents.pop();\n\n if (group.currentItems.length || options.taken > 0) {\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n } else {\n current = [];\n itemsLength = group.items.length;\n\n for (var j = 0; j < itemsLength; j++) {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n\n if (options.taken >= options.take) {\n break;\n }\n current.push(group.items[j]);\n options.taken++;\n }\n\n if (current.length || options.taken > 0) {\n group.currentItems = current;\n result.push(group);\n } else {\n group.excludeHeader = false;\n }\n }\n } else {\n if (options.skipped < options.skip) {\n options.skipped++;\n continue;\n }\n result.push(group);\n options.taken++;\n }\n }\n },\n\n _expandedSubGroupItemsCount: function(group, end, includeCurrentItems) {\n var that = this;\n var result = 0;\n var subGroup;\n var endSpecified = typeof end === \"number\";\n var length = endSpecified ? end : group.subgroupCount;\n var temp;\n\n if (!group.hasSubgroups) {\n return result;\n }\n\n for (var i = 0; i < length; i++) {\n subGroup = group.items[i];\n\n if (!subGroup) {\n break;\n }\n\n if (subGroup.hasSubgroups && that._groupsState[group.uid]) {\n temp = that._expandedSubGroupItemsCount(subGroup, length, true);\n result += temp;\n\n if (endSpecified) {\n length -= temp;\n }\n } else if (!subGroup.hasSubgroups && that._groupsState[subGroup.uid]) {\n temp = subGroup.items ? subGroup.items.length : 0;\n result += temp;\n if (endSpecified) {\n length -= temp;\n }\n }\n\n if (includeCurrentItems) {\n result += 1;\n if (endSpecified) {\n length -= 1;\n }\n }\n\n if (endSpecified && result > length) {\n return result;\n }\n }\n\n return result;\n },\n\n _fetchGroupItems: function(group, options, parents, callback) {\n var that = this;\n var groupItemsSkip;\n var firstItem;\n var lastItem;\n var groupItemCount = group.hasSubgroups ? group.subgroupCount : group.itemCount;\n var take = options.take;\n var skipped = options.skipped;\n var pageSize = that.take();\n var expandedSubGroupItemsCount;\n\n if (options.includeParents) {\n if (skipped < options.skip) {\n skipped += 1;\n } else {\n take -= 1;\n }\n }\n\n if (!group.items || (group.items && !group.items.length)) {\n that.getGroupItems(group, options, parents, callback, 0);\n return true;\n } else {\n expandedSubGroupItemsCount = this._expandedSubGroupItemsCount(group, options.skip - skipped);\n groupItemsSkip = Math.max(options.skip - (skipped + expandedSubGroupItemsCount), 0);\n\n if (groupItemsSkip >= groupItemCount) {\n return false;\n }\n\n firstItem = group.items[groupItemsSkip];\n lastItem = group.items[Math.min(groupItemsSkip + take, groupItemCount - 1)];\n\n if (firstItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor(groupItemsSkip / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n\n if (lastItem.notFetched) {\n that.getGroupItems(group, options, parents, callback, math.max(math.floor((groupItemsSkip + pageSize) / pageSize), 0) * pageSize, math.round((groupItemsSkip + pageSize) / pageSize));\n return true;\n }\n }\n },\n\n getGroupItems: function(group, options, parents, callback, groupItemsSkip, page) {\n var that = this;\n var take;\n var filter;\n var data;\n var subgroups;\n\n if (!group.items) {\n group.items = [];\n }\n\n take = that.take();\n filter = this._composeItemsFilter(group, parents);\n data = {\n page: page || 1,\n pageSize: take,\n skip: groupItemsSkip,\n take: take,\n filter: filter,\n aggregate: that._aggregate,\n sort: that._sort\n };\n subgroups = that.findSubgroups(group);\n\n if (subgroups && subgroups.length) {\n data.group = subgroups;\n data.groupPaging = true;\n }\n\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function() {\n that._queueRequest(data, function() {\n if (!that.trigger(REQUESTSTART, {\n type: \"read\"\n })) {\n that.transport.read({\n data: data,\n success: that._groupItemsSuccessHandler(group, options.skip, that.take(), callback, groupItemsSkip),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n },\n\n _groupItemsSuccessHandler: function(group, skip, take, callback, groupItemsSkip) {\n var that = this;\n var timestamp = that._timeStamp();\n callback = isFunction(callback) ? callback : noop;\n var totalField = that.options.schema && that.options.schema.total ? that.options.schema.total : \"Total\";\n\n return function(data) {\n var temp;\n var model = Model.define(that.options.schema.model);\n var totalCount;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, {\n response: data,\n type: \"read\"\n });\n\n if (isFunction(totalField)) {\n totalCount = totalField(data);\n } else {\n totalCount = data[totalField];\n }\n\n data = that.reader.parse(data);\n\n if (group.hasSubgroups) {\n temp = that.reader.groups(data);\n group.subgroupCount = totalCount;\n } else {\n temp = that.reader.data(data);\n temp = temp.map(function(item) {\n return new model(item);\n });\n }\n\n group.items.omitChangeEvent = true;\n for (var i = 0; i < totalCount; i++) {\n if (i >= groupItemsSkip && i < (groupItemsSkip + take) ) {\n group.items.splice(i, 1, temp[i - groupItemsSkip]);\n } else {\n if (!group.items[i]) {\n group.items.splice(i, 0, { notFetched: true });\n }\n }\n }\n group.items.omitChangeEvent = false;\n\n that._updateRangePristineData(group);\n that._fetchingGroupItems = false;\n\n if (!group.countAdded) {\n that._serverGroupsTotal += totalCount;\n group.countAdded = true;\n }\n\n that.range(skip, take, callback, \"expandGroup\");\n\n if (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress) {\n that.trigger(CHANGE, {});\n }\n };\n },\n\n findSubgroups: function(group) {\n var indexOfCurrentGroup = this._group.map(function(g) {\n return g.field;\n }).indexOf(group.field);\n\n return this._group.slice(indexOfCurrentGroup + 1, this._group.length);\n },\n\n _composeItemsFilter: function(group, parents) {\n var filter = {\n logic: \"and\",\n filters: []\n };\n\n if (this.filter()) {\n filter.filters.push(this.filter());\n }\n\n filter = extend(true, {}, filter);\n filter.filters.push({\n field: group.field,\n operator: \"eq\",\n value: group.value\n });\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n filter.filters.push({\n field: parents[i].field,\n operator: \"eq\",\n value: parents[i].value\n });\n }\n }\n\n return filter;\n },\n\n _updateRangePristineData: function(group) {\n var that = this;\n var ranges = that._ranges;\n var rangesLength = ranges.length;\n var temp;\n var currentGroup;\n var range;\n var dataLength;\n var indexes;\n var currIdx;\n\n for (var i = 0; i < rangesLength; i++) {\n range = ranges[i];\n dataLength = range.data.length;\n indexes = [];\n temp = null;\n\n for (var j = 0; j < dataLength; j++) {\n currentGroup = range.data[j];\n indexes.push(j);\n\n if ((currentGroup.uid === group.uid) || (currentGroup.hasSubgroups && currentGroup.items.length && that._containsSubGroup(currentGroup, group, indexes))) {\n break;\n }\n indexes.pop();\n }\n\n if (indexes.length) {\n temp = ranges[i].pristineData;\n\n while (indexes.length > 1) {\n currIdx = indexes.splice(0, 1)[0];\n temp = temp[currIdx].items;\n }\n temp[indexes[0]] = that._cloneGroup(group);\n break;\n }\n }\n },\n\n _containsSubGroup: function(group, subgroup, indexes) {\n var that = this;\n var length = group.items.length;\n var currentSubGroup;\n\n if (group.hasSubgroups && length) {\n for (var i = 0; i < length; i++) {\n currentSubGroup = group.items[i];\n indexes.push(i);\n if (currentSubGroup.uid === subgroup.uid ||\n (currentSubGroup.hasSubgroups &&\n currentSubGroup.items.length &&\n that._containsSubGroup(currentSubGroup, subgroup, indexes))) {\n return true;\n }\n indexes.pop();\n }\n }\n\n },\n\n _cloneGroup: function(group) {\n var that = this;\n group = typeof group.toJSON == \"function\" ? group.toJSON() : group;\n\n if (group.items && group.items.length) {\n group.items = group.items.map(function(item) {\n return that._cloneGroup(item);\n });\n }\n\n return group;\n },\n\n _setFilterTotal: function(filterTotal, setDefaultValue) {\n var that = this;\n\n if (!that.options.serverFiltering) {\n if (filterTotal !== undefined$1) {\n that._total = filterTotal;\n } else if (setDefaultValue) {\n that._total = that._data.length;\n }\n }\n },\n\n fetch: function(callback) {\n var that = this;\n var fn = function(isPrevented) {\n if (isPrevented !== true && isFunction(callback)) {\n callback.call(that);\n }\n };\n\n return this._query().done(fn);\n },\n\n _query: function(options) {\n var that = this;\n\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate()\n }, options));\n },\n\n next: function(options) {\n var that = this,\n page = that.page(),\n total = that.total();\n\n options = options || {};\n\n if (!page || (total && page + 1 > that.totalPages())) {\n return;\n }\n\n that._skip = that._currentRangeStart = page * that.take();\n\n page += 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n prev: function(options) {\n var that = this,\n page = that.page();\n\n options = options || {};\n\n if (!page || page === 1) {\n return;\n }\n\n that._skip = that._currentRangeStart = that._skip - that.take();\n\n page -= 1;\n options.page = page;\n\n that._query(options);\n\n return page;\n },\n\n page: function(val) {\n var that = this,\n skip;\n\n if (val !== undefined$1) {\n val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n var take = that.take();\n\n if (that._isGroupPaged()) {\n val -= 1;\n that.range(val * take, take, null, \"page\");\n return;\n }\n that._query(that._pageableQueryOptions({ page: val }));\n return;\n }\n skip = that.skip();\n\n return skip !== undefined$1 ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined$1;\n },\n\n pageSize: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query(that._pageableQueryOptions({ pageSize: val, page: 1 }));\n return;\n }\n\n return that.take();\n },\n\n sort: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that.trigger(\"sort\");\n that._query({ sort: val });\n return;\n }\n\n return that._sort;\n },\n\n filter: function(val) {\n var that = this;\n\n if (val === undefined$1) {\n return that._filter;\n }\n\n that.trigger(\"reset\");\n that._query({ filter: val, page: 1 });\n },\n\n group: function(val) {\n var that = this;\n var options = { group: val };\n\n if (that._groupPaging) {\n // clear ranges if ungrouping is performed\n if (val !== undefined$1 && (!val || !val.length) ) {\n that._ranges = [];\n }\n options.page = 1;\n }\n\n if (val !== undefined$1) {\n that._query(options);\n return;\n }\n\n return that._group;\n },\n\n getGroupsFlat: function(data) {\n var idx,\n result = [],\n length;\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data[idx];\n if (group.hasSubgroups) {\n result = result.concat(this.getGroupsFlat(group.items));\n }\n\n result.push(group);\n }\n\n return result;\n },\n\n total: function() {\n return parseInt(this._total || 0, 10);\n },\n\n groupsTotal: function(includeExpanded) {\n var that = this;\n\n if (!that._group.length) {\n return that.total();\n }\n\n if (that._isServerGrouped()) {\n if (that._serverGroupsTotal) {\n return that._serverGroupsTotal;\n }\n that._serverGroupsTotal = that.total();\n\n return that._serverGroupsTotal;\n }\n\n return that._calculateGroupsTotal(that._ranges.length ? that._ranges[0].data : [], includeExpanded);\n },\n\n _calculateGroupsTotal: function(groups, includeExpanded, itemsField, ignoreState) {\n var that = this;\n itemsField = itemsField || \"items\";\n var total;\n var length;\n\n if (that._group.length && groups) {\n total = 0;\n length = groups.length;\n\n for (var i = 0; i < length; i++) {\n total += that.groupCount(groups[i], includeExpanded, itemsField, ignoreState);\n }\n that._groupsTotal = total;\n return total;\n }\n\n that._groupsTotal = that._data.length;\n return that._groupsTotal;\n },\n\n groupCount: function(group, includeExpanded, itemsField, ignoreState) {\n var that = this;\n var total = 0;\n\n if (group.hasSubgroups && that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total += 1;\n }\n\n group[itemsField].forEach(function(subgroup) {\n total += that.groupCount(subgroup, includeExpanded, itemsField, ignoreState);\n });\n } else {\n if (that._groupsState[group.uid]) {\n if (includeExpanded && !group.excludeHeader || ignoreState) {\n total++;\n }\n total += group[itemsField] ? group[itemsField].length : 0;\n } else {\n total++;\n }\n }\n return total;\n },\n\n countGroupRange: function(range) {\n var total = 0;\n var length = range.length;\n\n for (var i = 0; i < length; i++) {\n total += this.groupCount(range[i], true);\n }\n\n return total;\n },\n\n aggregate: function(val) {\n var that = this;\n\n if (val !== undefined$1) {\n that._query({ aggregate: val });\n return;\n }\n\n return that._aggregate;\n },\n\n aggregates: function() {\n var result = this._aggregateResult;\n\n if (isEmptyObject(result)) {\n result = this._emptyAggregates(this.aggregate());\n }\n\n return result;\n },\n\n _emptyAggregates: function(aggregates) {\n var result = {};\n\n if (!isEmptyObject(aggregates)) {\n var aggregate = {};\n\n if (!isArray(aggregates)) {\n aggregates = [aggregates];\n }\n\n for (var idx = 0; idx < aggregates.length; idx++) {\n aggregate[aggregates[idx].aggregate] = 0;\n result[aggregates[idx].field] = aggregate;\n }\n }\n\n return result;\n },\n\n _pageableQueryOptions: function(options) {\n return options;\n },\n\n _wrapInEmptyGroup: function(model) {\n var groups = this.group(),\n parent,\n group,\n idx,\n length;\n\n for (idx = groups.length - 1, length = 0; idx >= length; idx--) {\n group = groups[idx];\n parent = {\n value: model.get ? model.get(group.field) : model[group.field],\n field: group.field,\n items: parent ? [parent] : [model],\n hasSubgroups: !!parent,\n aggregates: this._emptyAggregates(group.aggregates)\n };\n }\n\n return parent;\n },\n\n totalPages: function() {\n var that = this,\n pageSize = that.pageSize() || that.total(),\n total = that._isGroupPaged() ? that.groupsTotal(true) : that.total();\n\n return math.ceil((total || 0) / pageSize);\n },\n\n inRange: function(skip, take) {\n var that = this,\n end = math.min(skip + take, that.total());\n\n if (!that.options.serverPaging && that._data.length > 0) {\n return true;\n }\n\n return that._findRange(skip, end).length > 0;\n },\n\n lastRange: function() {\n var ranges = this._ranges;\n return ranges[ranges.length - 1] || { start: 0, end: 0, data: [] };\n },\n\n firstItemUid: function() {\n var ranges = this._ranges;\n return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n },\n\n enableRequestsInProgress: function() {\n this._skipRequestsInProgress = false;\n },\n\n _timeStamp: function() {\n return new Date().getTime();\n },\n\n range: function(skip, take, callback, action) {\n this._currentRequestTimeStamp = this._timeStamp();\n this._skipRequestsInProgress = true;\n var total = this._isGroupPaged() ? this.groupsTotal(true) : this.total();\n\n if (action === \"expandGroup\" || action === \"collapseGroup\") {\n this._updateOuterRangesLength();\n }\n\n skip = math.min(skip || 0, total);\n callback = isFunction(callback) ? callback : noop;\n\n var that = this,\n pageSkip = math.max(math.floor(skip / take), 0) * take,\n size = math.min(pageSkip + take, total),\n data;\n\n data = that._findRange(skip, math.min(skip + take, total), callback);\n\n if ((data.length || total === 0) && !that._fetchingGroupItems) {\n that._processRangeData(data, skip, take, that._originalPageSkip || pageSkip, that._originalSize || size, {\n action: action\n });\n that._originalPageSkip = null;\n that._originalSize = null;\n callback();\n return;\n }\n\n if (that._isGroupPaged()) {\n that._originalPageSkip = pageSkip;\n that._originalSize = size;\n\n pageSkip = math.max(math.floor(that._adjustPageSkip(skip, take) / take), 0) * take;\n size = math.min(pageSkip + take, total);\n }\n\n if (take !== undefined$1 && !that._fetchingGroupItems) {\n if ((that._isGroupPaged() && !that._groupRangeExists(pageSkip, take)) || !that._rangeExists(pageSkip, size)) {\n that.prefetch(pageSkip, take, function() {\n if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n } else {\n that.range(skip, take, callback);\n }\n });\n } else if (pageSkip < skip) {\n that.prefetch(size, take, function() {\n that.range(skip, take, callback );\n });\n }\n }\n },\n\n _findRange: function(start, end, callback) {\n var that = this,\n ranges = that._ranges,\n range,\n data = [],\n skipIdx,\n takeIdx,\n startIndex,\n endIndex,\n rangeData,\n rangeEnd,\n processed,\n options = that.options,\n remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates,\n flatData,\n count,\n length,\n groupMapOptions = {\n take: end - start,\n skip: start,\n skipped: 0,\n taken: 0,\n includeParents: true\n },\n prevRangeEnd,\n isGroupPaged = that._isGroupPaged(),\n startField = isGroupPaged ? \"outerStart\" : \"start\",\n endField = isGroupPaged ? \"outerEnd\" : \"end\",\n currentDataLength;\n\n for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n range = ranges[skipIdx];\n\n if (isGroupPaged) {\n if (range.outerStart >= end) {\n return [];\n }\n\n if (start > range.outerEnd) {\n groupMapOptions.skipped += range.outerEnd - (prevRangeEnd || 0);\n prevRangeEnd = range.outerEnd;\n continue;\n }\n\n if (typeof prevRangeEnd !== \"undefined\" && prevRangeEnd != range.outerStart) {\n groupMapOptions.skipped += range.outerStart - prevRangeEnd;\n }\n\n if (groupMapOptions.skipped > groupMapOptions.skip) {\n return [];\n }\n\n if (typeof prevRangeEnd === \"undefined\" && start > 0 && range.start > 0) {\n groupMapOptions.skipped = range.outerStart;\n }\n\n takeIdx = skipIdx;\n while (true) {\n this._findGroupedRange(range.data, data, groupMapOptions, null, callback);\n currentDataLength = that._calculateGroupsTotal(data, true, \"currentItems\");\n\n if (currentDataLength >= groupMapOptions.take) {\n return data;\n }\n\n if (that._fetchingGroupItems) {\n return [];\n }\n takeIdx++;\n\n if (ranges[takeIdx] && ranges[takeIdx].outerStart === range.outerEnd) {\n range = ranges[takeIdx];\n } else {\n break;\n }\n }\n } else if (start >= range[startField] && start <= range[endField]) {\n count = 0;\n\n for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n range = ranges[takeIdx];\n flatData = that._flatData(range.data, true);\n\n if (flatData.length && start + count >= range.start) {\n rangeData = range.data;\n rangeEnd = range.end;\n\n if (!remote) {\n if (options.inPlaceSort) {\n processed = that._queryProcess(range.data, { filter: that.filter() });\n } else {\n var sort = normalizeGroupWithoutCompare(that.group() || []).concat(normalizeSort(that.sort() || []));\n processed = that._queryProcess(range.data, { sort: sort, filter: that.filter() });\n }\n flatData = rangeData = processed.data;\n\n if (processed.total !== undefined$1) {\n rangeEnd = processed.total;\n }\n }\n\n startIndex = 0;\n if (start + count > range.start) {\n startIndex = (start + count) - range.start;\n }\n endIndex = flatData.length;\n if (rangeEnd > end) {\n endIndex = endIndex - (rangeEnd - end);\n }\n count += endIndex - startIndex;\n data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n\n if (end <= range.end && count == end - start) {\n return data;\n }\n }\n }\n break;\n }\n prevRangeEnd = range.outerEnd;\n }\n return [];\n },\n\n _getRangesMismatch: function(pageSkip) {\n var that = this;\n var ranges = that._ranges;\n var mismatch = 0;\n var i = 0;\n\n while (true) {\n var range = ranges[i];\n if (!range || range.outerStart > pageSkip) {\n break;\n }\n\n if (range.outerEnd != range.end) {\n mismatch = range.outerEnd - range.end;\n }\n i++;\n }\n\n return mismatch;\n },\n\n _mergeGroups: function(data, range, skip, take) {\n if (this._isServerGrouped()) {\n var temp = range.toJSON(),\n prevGroup;\n\n if (data.length) {\n prevGroup = data[data.length - 1];\n }\n\n mergeGroups(prevGroup, temp, skip, take);\n\n return data.concat(temp);\n }\n return data.concat(range.slice(skip, take));\n },\n\n _processRangeData: function(data, skip, take, pageSkip, size, eventData) {\n var that = this;\n\n that._pending = undefined$1;\n\n that._skip = skip > that.skip() && !that._omitPrefetch ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n\n that._currentRangeStart = skip;\n\n that._take = take;\n\n var paging = that.options.serverPaging;\n var sorting = that.options.serverSorting;\n var filtering = that.options.serverFiltering;\n var aggregates = that.options.serverAggregates;\n try {\n that.options.serverPaging = true;\n if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n that.options.serverSorting = true;\n }\n that.options.serverFiltering = true;\n that.options.serverPaging = true;\n that.options.serverAggregates = true;\n\n if (paging) {\n that._detachObservableParents();\n that._data = data = that._observe(data);\n }\n that._process(data, eventData);\n } finally {\n that.options.serverPaging = paging;\n that.options.serverSorting = sorting;\n that.options.serverFiltering = filtering;\n that.options.serverAggregates = aggregates;\n }\n },\n\n skip: function() {\n var that = this;\n\n if (that._skip === undefined$1) {\n return (that._page !== undefined$1 ? (that._page - 1) * (that.take() || 1) : undefined$1);\n }\n return that._skip;\n },\n\n currentRangeStart: function() {\n return this._currentRangeStart || 0;\n },\n\n take: function() {\n return this._take || this._pageSize;\n },\n\n _prefetchSuccessHandler: function(skip, size, callback, force) {\n var that = this;\n var timestamp = that._timeStamp();\n\n return function(data) {\n var found = false,\n range = { start: skip, end: size, data: [], timestamp: that._timeStamp() },\n idx,\n length,\n temp;\n\n that._dequeueRequest();\n\n that.trigger(REQUESTEND, { response: data, type: \"read\" });\n\n data = that.reader.parse(data);\n\n temp = that._readData(data);\n\n if (temp.length) {\n for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n if (that._ranges[idx].start === skip) {\n found = true;\n range = that._ranges[idx];\n\n if (!that._isGroupPaged()) {\n range.pristineData = temp;\n range.data = that._observe(temp);\n range.end = range.start + that._flatData(range.data, true).length;\n that._sortRanges();\n }\n\n break;\n }\n }\n\n if (!found) {\n that._addRange(that._observe(temp), skip);\n }\n }\n\n that._total = that.reader.total(data);\n\n if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n if (callback && temp.length) {\n callback();\n } else {\n that.trigger(CHANGE, {});\n }\n }\n };\n },\n\n prefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n\n if ((that._isGroupPaged() && !that._isServerGrouped() && that._groupRangeExists(skip, size))) {\n if (callback) {\n callback();\n }\n return;\n }\n\n if ((that._isServerGroupPaged() && !that._groupRangeExists(skip, size)) || !that._rangeExists(skip, size)) {\n clearTimeout(that._timeout);\n\n that._timeout = setTimeout(function() {\n that._queueRequest(options, function() {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n if (that._omitPrefetch) {\n that.trigger(PROGRESS);\n }\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback),\n error: function() {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n } else if (callback) {\n callback();\n }\n },\n\n _multiplePrefetch: function(skip, take, callback) {\n var that = this,\n size = math.min(skip + take, that.total()),\n options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n\n if (!that._rangeExists(skip, size)) {\n if (!that.trigger(REQUESTSTART, { type: \"read\" })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback, true)\n });\n }\n } else if (callback) {\n callback();\n }\n },\n\n _adjustPageSkip: function(start, take) {\n var that = this;\n var prevRange = that._getPrevRange(start);\n var result;\n var total = that.total();\n var mismatch;\n\n if (prevRange) {\n mismatch = that._getRangesMismatch(start);\n\n if (!mismatch) {\n return start;\n }\n start -= mismatch;\n }\n result = math.max(math.floor(start / take), 0) * take;\n\n if (result > total) {\n while (true) {\n result -= take;\n if (result < total) {\n break;\n }\n }\n }\n return result;\n },\n\n _getNextRange: function(end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= end && ranges[idx].end >= end) {\n return ranges[idx];\n }\n }\n },\n\n _getPrevRange: function(start) {\n var that = this,\n ranges = that._ranges,\n idx,\n range,\n length = ranges.length;\n\n for (idx = length - 1; idx >= 0; idx--) {\n if (ranges[idx].outerStart <= start) {\n range = ranges[idx];\n break;\n }\n\n }\n\n return range;\n },\n\n _rangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length;\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= start && ranges[idx].end >= end) {\n return true;\n }\n }\n\n return false;\n },\n\n _groupRangeExists: function(start, end) {\n var that = this,\n ranges = that._ranges,\n idx,\n length,\n availableItemsCount = 0,\n total = that.groupsTotal(true);\n\n if (end > total && !that._isServerGrouped()) {\n end = total;\n }\n\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n var range = ranges[idx];\n if (range.outerStart <= start && range.outerEnd >= start) {\n availableItemsCount += range.outerEnd - start;\n } else if (range.outerStart <= end && range.outerEnd >= end) {\n availableItemsCount += end - range.outerStart;\n }\n }\n\n return availableItemsCount >= end - start;\n },\n\n _getCurrentRangeSpan: function() {\n var that = this;\n var ranges = that._ranges;\n var start = that.currentRangeStart();\n var end = start + (that.take() || 0);\n var rangeSpan = [];\n var range;\n var idx;\n var length = ranges.length;\n\n for (idx = 0; idx < length; idx++) {\n range = ranges[idx];\n\n if ((range.start <= start && range.end >= start) || (range.start >= start && range.start <= end)) {\n rangeSpan.push(range);\n }\n }\n\n return rangeSpan;\n },\n\n _removeModelFromRanges: function(model) {\n var that = this;\n var range;\n\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n\n that._removeModelFromRange(range, model);\n }\n\n that._updateRangesLength();\n },\n\n _removeModelFromRange: function(range, model) {\n this._eachItem(range.data, function(data) {\n if (!data) {\n return;\n }\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data[idx];\n\n if (dataItem.uid && dataItem.uid == model.uid) {\n [].splice.call(data, idx, 1);\n break;\n }\n }\n });\n },\n\n _insertModelInRange: function(index, model) {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n\n if (range.start <= index && range.end >= index) {\n if (!that._getByUid(model.uid, range.data)) {\n if (that._isServerGrouped()) {\n range.data.splice(index, 0, that._wrapInEmptyGroup(model));\n } else {\n range.data.splice(index, 0, model);\n }\n }\n\n break;\n }\n }\n\n that._updateRangesLength();\n },\n\n _updateRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchFound = false;\n var mismatchLength = 0;\n var lengthDifference = 0;\n var rangeLength;\n var range;\n var i;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? range.data.length : that._flatData(range.data, true).length;\n lengthDifference = rangeLength - math.abs(range.end - range.start);\n\n if (!mismatchFound && lengthDifference !== 0) {\n mismatchFound = true;\n mismatchLength = lengthDifference;\n range.end += mismatchLength;\n continue;\n }\n\n if (mismatchFound) {\n range.start += mismatchLength;\n range.end += mismatchLength;\n }\n }\n },\n\n _updateOuterRangesLength: function() {\n var that = this;\n var ranges = that._ranges || [];\n var rangesLength = ranges.length;\n var mismatchLength = 0;\n var range;\n var i;\n var prevRange;\n var rangeLength;\n\n for (i = 0; i < rangesLength; i++) {\n range = ranges[i];\n rangeLength = that._isGroupPaged() ? that._calculateGroupsTotal(range.data, true, \"items\", true) : that._flatData(range.data, true).length;\n\n if (prevRange) {\n if (prevRange.end != range.start) {\n mismatchLength = range.start - prevRange.end;\n }\n range.outerStart = prevRange.outerEnd + mismatchLength;\n mismatchLength = 0;\n } else {\n range.outerStart = range.start;\n }\n\n range.outerEnd = range.outerStart + rangeLength;\n prevRange = range;\n }\n }\n });\n\n var Transport = {};\n\n Transport.create = function(options, data, dataSource) {\n var transport,\n transportOptions = options.transport ? $.extend({}, options.transport) : null;\n\n if (transportOptions) {\n transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n\n if (options.type === \"jsdo\") {\n transportOptions.dataSource = dataSource;\n }\n\n if (options.type) {\n kendo.data.transports = kendo.data.transports || {};\n kendo.data.schemas = kendo.data.schemas || {};\n\n if (!kendo.data.transports[options.type]) {\n kendo.logToConsole(\"Unknown DataSource transport type '\" + options.type + \"'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.\", \"warn\");\n } else if (!isPlainObject(kendo.data.transports[options.type])) {\n transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n } else {\n transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n }\n\n options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n }\n\n if (!transport) {\n transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n }\n } else {\n transport = new LocalTransport({ data: options.data || [] });\n }\n return transport;\n };\n\n DataSource.create = function(options) {\n if (isArray(options) || options instanceof ObservableArray) {\n options = { data: options };\n }\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n table = dataSource.table,\n select = dataSource.select,\n idx,\n length,\n model = {},\n field;\n\n if (!data && fields && !dataSource.transport) {\n if (table) {\n data = inferTable(table, fields);\n } else if (select) {\n data = inferSelect(select, fields);\n\n if (dataSource.group === undefined$1 && data[0] && data[0].optgroup !== undefined$1) {\n dataSource.group = \"optgroup\";\n }\n }\n }\n\n if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n if (field.type) {\n model[field.field] = field;\n }\n }\n\n if (!isEmptyObject(model)) {\n dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n }\n }\n\n dataSource.data = data;\n\n select = null;\n dataSource.select = null;\n table = null;\n dataSource.table = null;\n\n return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n };\n\n function inferSelect(select, fields) {\n select = $(select)[0];\n var options = select.options;\n var firstField = fields[0];\n var secondField = fields[1];\n\n var data = [];\n var idx, length;\n var optgroup;\n var option;\n var record;\n var value;\n\n for (idx = 0, length = options.length; idx < length; idx++) {\n record = {};\n option = options[idx];\n optgroup = option.parentNode;\n\n if (optgroup === select) {\n optgroup = null;\n }\n\n if (option.disabled || (optgroup && optgroup.disabled)) {\n continue;\n }\n\n if (optgroup) {\n record.optgroup = optgroup.label;\n }\n\n record[firstField.field] = option.text;\n\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n record[secondField.field] = value;\n\n data.push(record);\n }\n\n return data;\n }\n\n function inferTable(table, fields) {\n var tbody = $(table)[0].tBodies[0],\n rows = tbody ? tbody.rows : [],\n idx,\n length,\n fieldIndex,\n fieldCount = fields.length,\n data = [],\n cells,\n record,\n cell,\n empty;\n\n for (idx = 0, length = rows.length; idx < length; idx++) {\n record = {};\n empty = true;\n cells = rows[idx].cells;\n\n for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n cell = cells[fieldIndex];\n if (cell.nodeName.toLowerCase() !== \"th\") {\n empty = false;\n record[fields[fieldIndex].field] = cell.innerHTML;\n }\n }\n if (!empty) {\n data.push(record);\n }\n }\n\n return data;\n }\n\n var Node = Model.define({\n idField: \"id\",\n\n init: function(value) {\n var that = this,\n hasChildren = that.hasChildren || value && value.hasChildren,\n childrenField = \"items\",\n childrenOptions = {};\n\n kendo.data.Model.fn.init.call(that, value);\n\n if (typeof that.children === STRING) {\n childrenField = that.children;\n }\n\n childrenOptions = {\n schema: {\n data: childrenField,\n model: {\n hasChildren: hasChildren,\n id: that.idField,\n fields: that.fields\n }\n }\n };\n\n if (typeof that.children !== STRING) {\n extend(childrenOptions, that.children);\n }\n\n childrenOptions.data = value;\n\n if (!hasChildren) {\n hasChildren = childrenOptions.schema.data;\n }\n\n if (typeof hasChildren === STRING) {\n hasChildren = kendo.getter(hasChildren);\n }\n\n if (isFunction(hasChildren)) {\n var hasChildrenObject = hasChildren.call(that, that);\n\n if (hasChildrenObject && hasChildrenObject.length === 0) {\n that.hasChildren = false;\n } else {\n that.hasChildren = !!hasChildrenObject;\n }\n }\n\n that._childrenOptions = childrenOptions;\n\n if (that.hasChildren) {\n that._initChildren();\n }\n\n that._loaded = !!(value && value._loaded);\n },\n\n _initChildren: function() {\n var that = this;\n var children, transport, parameterMap;\n\n if (!(that.children instanceof HierarchicalDataSource)) {\n children = that.children = new HierarchicalDataSource(that._childrenOptions);\n\n transport = children.transport;\n parameterMap = transport.parameterMap;\n\n transport.parameterMap = function(data, type) {\n data[that.idField || \"id\"] = that.id;\n\n if (parameterMap) {\n data = parameterMap.call(that, data, type);\n }\n\n return data;\n };\n\n children.parent = function() {\n return that;\n };\n\n children.bind(CHANGE, function(e) {\n e.node = e.node || that;\n that.trigger(CHANGE, e);\n });\n\n children.bind(ERROR, function(e) {\n var collection = that.parent();\n\n if (collection) {\n e.node = e.node || that;\n collection.trigger(ERROR, e);\n }\n });\n\n children.bind(ITEMSLOADED, function(e) {\n var collection = that.parent();\n\n if (collection) {\n collection.trigger(ITEMSLOADED, e);\n }\n });\n\n that._updateChildrenField();\n }\n },\n\n append: function(model) {\n this._initChildren();\n this.loaded(true);\n this.children.add(model);\n },\n\n hasChildren: false,\n\n level: function() {\n var parentNode = this.parentNode(),\n level = 0;\n\n while (parentNode && parentNode.parentNode) {\n level++;\n parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n }\n\n return level;\n },\n\n _updateChildrenField: function() {\n var fieldName = this._childrenOptions.schema.data;\n\n this[fieldName || \"items\"] = this.children.data();\n },\n\n _childrenLoaded: function() {\n this._loaded = true;\n\n this._updateChildrenField();\n },\n\n load: function() {\n var options = {};\n var method = \"_query\";\n var children, promise;\n\n if (this.hasChildren) {\n this._initChildren();\n\n children = this.children;\n\n options[this.idField || \"id\"] = this.id;\n\n if (!this._loaded) {\n children._data = undefined$1;\n method = \"read\";\n }\n\n children.one(CHANGE, this._childrenLoaded.bind(this));\n\n if (this._matchFilter) {\n options.filter = { field: '_matchFilter', operator: 'eq', value: true };\n }\n\n promise = children[method](options);\n if (!this._loaded) {\n this.trigger(ITEMLOAD, { promise: promise, node: this });\n }\n } else {\n this.loaded(true);\n }\n\n return promise || $.Deferred().resolve().promise();\n },\n\n parentNode: function() {\n var array = this.parent();\n\n return array.parent();\n },\n\n loaded: function(value) {\n if (value !== undefined$1) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n\n shouldSerialize: function(field) {\n return Model.fn.shouldSerialize.call(this, field) &&\n field !== \"children\" &&\n field !== \"_loaded\" &&\n field !== \"hasChildren\" &&\n field !== \"_childrenOptions\";\n }\n });\n\n function dataMethod(name) {\n return function() {\n var data = this._data,\n result = DataSource.fn[name].apply(this, slice.call(arguments));\n\n if (this._data != data) {\n this._attachBubbleHandlers();\n }\n\n return result;\n };\n }\n\n var HierarchicalDataSource = DataSource.extend({\n init: function(options) {\n var node = Node.define({\n children: options\n });\n\n if (options.filter && !options.serverFiltering) {\n this._hierarchicalFilter = options.filter;\n options.filter = null;\n }\n\n DataSource.fn.init.call(this, extend(true, {}, { schema: { modelBase: node, model: node } }, options));\n\n this._attachBubbleHandlers();\n },\n\n _attachBubbleHandlers: function() {\n var that = this;\n\n that._data.bind(ERROR, function(e) {\n that.trigger(ERROR, e);\n });\n\n that._data.bind(ITEMSLOADED, function(e) {\n that.trigger(ITEMSLOADED, e);\n });\n },\n\n loading: function() {\n if (this._data) {\n return this._data.loading() || this._childrenLoading();\n }\n return false;\n },\n\n _childrenLoading: function() {\n var isLoading = false;\n this._data.forEach(function(node) {\n if (node.hasChildren && node.children.loading()) {\n isLoading = true;\n }\n });\n return isLoading;\n },\n\n read: function(data) {\n var result = DataSource.fn.read.call(this, data);\n\n if (this._hierarchicalFilter) {\n if (this._data && this._data.length > 0) {\n this.filter(this._hierarchicalFilter);\n } else {\n this.options.filter = this._hierarchicalFilter;\n this._filter = normalizeFilter(this.options.filter);\n this._hierarchicalFilter = null;\n }\n }\n\n return result;\n },\n\n remove: function(node) {\n var parentNode = node.parentNode(),\n dataSource = this,\n result;\n\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n\n result = DataSource.fn.remove.call(dataSource, node);\n\n if (parentNode && !dataSource.data().length) {\n parentNode.hasChildren = false;\n }\n\n return result;\n },\n\n success: dataMethod(\"success\"),\n\n data: dataMethod(\"data\"),\n\n insert: function(index, model) {\n var parentNode = this.parent();\n\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n\n return DataSource.fn.insert.call(this, index, model);\n },\n\n filter: function(val) {\n if (val === undefined$1) {\n return this._filter;\n }\n\n if (!this.options.serverFiltering && this._markHierarchicalQuery(val)) {\n val = { logic: \"or\", filters: [val, { field: '_matchFilter', operator: 'equals', value: true }] };\n }\n\n this.trigger(\"reset\");\n this._query({ filter: val, page: 1 });\n },\n\n _markHierarchicalQuery: function(expressions) {\n var compiled;\n var accentFoldingFiltering = this.options.accentFoldingFiltering;\n\n expressions = accentFoldingFiltering ? $.extend({}, normalizeFilter(expressions), { accentFoldingFiltering: accentFoldingFiltering }) : normalizeFilter(expressions);\n\n if (!expressions || expressions.filters.length === 0) {\n this._updateHierarchicalFilter(function() {return true;});\n return false;\n }\n\n compiled = Query.filterExpr(expressions, { noEval: true });\n\n this._updateHierarchicalFilter(compiled);\n return true;\n },\n\n _updateHierarchicalFilter: function(filter) {\n var current;\n var data = this._data;\n var result = false;\n\n for (var idx = 0; idx < data.length; idx++) {\n current = data[idx];\n\n if (current.hasChildren) {\n current._matchFilter = current.children._updateHierarchicalFilter(filter);\n if (!current._matchFilter) {\n current._matchFilter = filter(current);\n }\n } else {\n current._matchFilter = filter(current);\n }\n\n if (current._matchFilter) {\n result = true;\n }\n }\n return result;\n },\n\n _find: function(method, value) {\n var idx, length, node, children;\n var data = this._data;\n\n if (!data) {\n return;\n }\n\n node = DataSource.fn[method].call(this, value);\n\n if (node) {\n return node;\n }\n\n data = this._flatData(this._data);\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n children = data[idx].children;\n\n if (!(children instanceof HierarchicalDataSource)) {\n continue;\n }\n\n node = children[method](value);\n\n if (node) {\n return node;\n }\n }\n },\n\n get: function(id) {\n return this._find(\"get\", id);\n },\n\n getByUid: function(uid) {\n return this._find(\"getByUid\", uid);\n }\n });\n\n function inferList(list, fields) {\n var items = $(list).children(),\n idx,\n length,\n data = [],\n record,\n textField = fields[0].field,\n urlField = fields[1] && fields[1].field,\n spriteCssClassField = fields[2] && fields[2].field,\n imageUrlField = fields[3] && fields[3].field,\n item,\n id,\n textChild,\n className,\n children;\n\n function elements(collection, tagName) {\n return collection.filter(tagName).add(collection.find(tagName));\n }\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n record = { _loaded: true };\n item = items.eq(idx);\n\n textChild = item[0].firstChild;\n children = item.children();\n list = children.filter(\"ul\");\n children = children.filter(\":not(ul)\");\n\n id = item.attr(\"data-id\");\n\n if (id) {\n record.id = id;\n }\n\n if (textChild) {\n record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n }\n\n if (urlField) {\n record[urlField] = elements(children, \"a\").attr(\"href\");\n }\n\n if (imageUrlField) {\n record[imageUrlField] = elements(children, \"img\").attr(\"src\");\n }\n\n if (spriteCssClassField) {\n className = elements(children, \".k-sprite\").prop(\"className\");\n record[spriteCssClassField] = className && kendo.trim(className.replace(\"k-sprite\", \"\"));\n }\n\n if (list.length) {\n record.items = inferList(list.eq(0), fields);\n }\n\n if (item.attr(\"data-hasChildren\") == \"true\") {\n record.hasChildren = true;\n }\n\n data.push(record);\n }\n\n return data;\n }\n\n HierarchicalDataSource.create = function(options) {\n options = options && options.push ? { data: options } : options;\n\n var dataSource = options || {},\n data = dataSource.data,\n fields = dataSource.fields,\n list = dataSource.list;\n\n if (data && data._dataSource) {\n return data._dataSource;\n }\n\n if (!data && fields && !dataSource.transport) {\n if (list) {\n data = inferList(list, fields);\n }\n }\n\n dataSource.data = data;\n\n return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n };\n\n var Buffer = kendo.Observable.extend({\n init: function(dataSource, viewSize, disablePrefetch) {\n kendo.Observable.fn.init.call(this);\n\n this._prefetching = false;\n this.dataSource = dataSource;\n this.prefetch = !disablePrefetch;\n\n var buffer = this;\n\n dataSource.bind(\"change\", function() {\n buffer._change();\n });\n\n dataSource.bind(\"reset\", function() {\n buffer._reset();\n });\n\n this._syncWithDataSource();\n\n this.setViewSize(viewSize);\n },\n\n setViewSize: function(viewSize) {\n this.viewSize = viewSize;\n this._recalculate();\n },\n\n at: function(index) {\n var pageSize = this.pageSize,\n itemPresent = true;\n\n if (index >= this.total()) {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n\n if (!this.useRanges) {\n return this.dataSource.view()[index];\n }\n if (this.useRanges) {\n // out of range request\n if (index < this.dataOffset || index >= this.skip + pageSize) {\n itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n }\n\n // prefetch\n if (index === this.prefetchThreshold) {\n this._prefetch();\n }\n\n // mid-range jump - prefetchThreshold and nextPageThreshold may be equal, do not change to else if\n if (index === this.midPageThreshold) {\n this.range(this.nextMidRange, true);\n }\n // next range jump\n else if (index === this.nextPageThreshold) {\n this.range(this.nextFullRange);\n }\n // pull-back\n else if (index === this.pullBackThreshold) {\n if (this.offset === this.skip) { // from full range to mid range\n this.range(this.previousMidRange);\n } else { // from mid range to full range\n this.range(this.previousFullRange);\n }\n }\n\n if (itemPresent) {\n return this.dataSource.at(index - this.dataOffset);\n } else {\n this.trigger(\"endreached\", { index: index });\n return null;\n }\n }\n },\n\n indexOf: function(item) {\n return this.dataSource.data().indexOf(item) + this.dataOffset;\n },\n\n total: function() {\n return parseInt(this.dataSource.total(), 10);\n },\n\n next: function() {\n var buffer = this,\n pageSize = buffer.pageSize,\n offset = buffer.skip - buffer.viewSize + pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n\n this.offset = offset;\n this.dataSource.prefetch(pageSkip, pageSize, function() {\n buffer._goToRange(offset, true);\n });\n },\n\n range: function(offset, nextRange) {\n if (this.offset === offset) {\n return true;\n }\n\n var buffer = this,\n pageSize = this.pageSize,\n pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize,\n dataSource = this.dataSource;\n\n if (nextRange) {\n pageSkip += pageSize;\n }\n\n if (dataSource.inRange(offset, pageSize)) {\n this.offset = offset;\n this._recalculate();\n this._goToRange(offset);\n return true;\n } else if (this.prefetch) {\n dataSource.prefetch(pageSkip, pageSize, function() {\n buffer.offset = offset;\n buffer._recalculate();\n buffer._goToRange(offset, true);\n });\n return false;\n }\n\n return true;\n },\n\n syncDataSource: function() {\n var offset = this.offset;\n this.offset = null;\n this.range(offset);\n },\n\n destroy: function() {\n this.unbind();\n },\n\n _prefetch: function() {\n var buffer = this,\n pageSize = this.pageSize,\n prefetchOffset = this.skip + pageSize,\n dataSource = this.dataSource;\n\n if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n this._prefetching = true;\n this.trigger(\"prefetching\", { skip: prefetchOffset, take: pageSize });\n\n dataSource.prefetch(prefetchOffset, pageSize, function() {\n buffer._prefetching = false;\n buffer.trigger(\"prefetched\", { skip: prefetchOffset, take: pageSize });\n });\n }\n },\n\n _goToRange: function(offset, expanding) {\n if (this.offset !== offset) {\n return;\n }\n\n this.dataOffset = offset;\n this._expanding = expanding;\n this.dataSource.range(offset, this.pageSize);\n this.dataSource.enableRequestsInProgress();\n },\n\n _reset: function() {\n this._syncPending = true;\n },\n\n _change: function() {\n var dataSource = this.dataSource;\n\n this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n\n if (this._syncPending) {\n this._syncWithDataSource();\n this._recalculate();\n this._syncPending = false;\n this.trigger(\"reset\", { offset: this.offset });\n }\n\n this.trigger(\"resize\");\n\n if (this._expanding) {\n this.trigger(\"expand\");\n }\n\n delete this._expanding;\n },\n\n _syncWithDataSource: function() {\n var dataSource = this.dataSource;\n\n this._firstItemUid = dataSource.firstItemUid();\n this.dataOffset = this.offset = dataSource.skip() || 0;\n this.pageSize = dataSource.pageSize();\n this.useRanges = dataSource.options.serverPaging;\n },\n\n _recalculate: function() {\n var pageSize = this.pageSize,\n offset = this.offset,\n viewSize = this.viewSize,\n skip = Math.ceil(offset / pageSize) * pageSize;\n\n this.skip = skip;\n this.midPageThreshold = skip + pageSize - 1;\n this.nextPageThreshold = skip + viewSize - 1;\n this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n this.pullBackThreshold = this.offset - 1;\n\n this.nextMidRange = skip + pageSize - viewSize;\n this.nextFullRange = skip;\n this.previousMidRange = offset - viewSize;\n this.previousFullRange = skip - pageSize;\n }\n });\n\n var BatchBuffer = kendo.Observable.extend({\n init: function(dataSource, batchSize) {\n var batchBuffer = this;\n\n kendo.Observable.fn.init.call(batchBuffer);\n\n this.dataSource = dataSource;\n this.batchSize = batchSize;\n this._total = 0;\n\n this.buffer = new Buffer(dataSource, batchSize * 3);\n\n this.buffer.bind({\n \"endreached\": function(e) {\n batchBuffer.trigger(\"endreached\", { index: e.index });\n },\n \"prefetching\": function(e) {\n batchBuffer.trigger(\"prefetching\", { skip: e.skip, take: e.take });\n },\n \"prefetched\": function(e) {\n batchBuffer.trigger(\"prefetched\", { skip: e.skip, take: e.take });\n },\n \"reset\": function() {\n batchBuffer._total = 0;\n batchBuffer.trigger(\"reset\");\n },\n \"resize\": function() {\n batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n batchBuffer.trigger(\"resize\", { total: batchBuffer.total(), offset: this.offset });\n }\n });\n },\n\n syncDataSource: function() {\n this.buffer.syncDataSource();\n },\n\n at: function(index) {\n var buffer = this.buffer,\n skip = index * this.batchSize,\n take = this.batchSize,\n view = [],\n item;\n\n if (buffer.offset > skip) {\n buffer.at(buffer.offset - 1);\n }\n\n for (var i = 0; i < take; i++) {\n item = buffer.at(skip + i);\n\n if (item === null) {\n break;\n }\n\n view.push(item);\n }\n\n return view;\n },\n\n total: function() {\n return this._total;\n },\n\n destroy: function() {\n this.buffer.destroy();\n this.unbind();\n }\n });\n\n extend(true, kendo.data, {\n readers: {\n json: DataReader\n },\n Query: Query,\n DataSource: DataSource,\n HierarchicalDataSource: HierarchicalDataSource,\n Node: Node,\n Comparer: Comparer,\n ObservableObject: ObservableObject,\n ObservableArray: ObservableArray,\n LazyObservableArray: LazyObservableArray,\n LocalTransport: LocalTransport,\n RemoteTransport: RemoteTransport,\n Cache: Cache,\n DataReader: DataReader,\n Model: Model,\n Buffer: Buffer,\n BatchBuffer: BatchBuffer\n });\n })(window.kendo.jQuery);\n var kendo$R = kendo;\n\n var __meta__$R = {\n id: \"binder\",\n name: \"MVVM\",\n category: \"framework\",\n description: \"Model View ViewModel (MVVM) is a design pattern which helps developers separate the Model (the data) from the View (the UI).\",\n depends: [ \"core\", \"data\" ]\n };\n\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n encode = kendo.htmlEncode,\n Observable = kendo.Observable,\n ObservableObject = kendo.data.ObservableObject,\n ObservableArray = kendo.data.ObservableArray,\n toString = {}.toString,\n binders = {},\n Class = kendo.Class,\n VALUE = \"value\",\n SOURCE = \"source\",\n EVENTS = \"events\",\n CHECKED = \"checked\",\n CSS = \"css\",\n deleteExpando = true,\n FUNCTION = \"function\",\n CHANGE = \"change\";\n\n (function() {\n var a = document.createElement(\"a\");\n\n try {\n delete a.test;\n } catch (e) {\n deleteExpando = false;\n }\n })();\n\n var Binding = Observable.extend( {\n init: function(parents, path) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.source = parents[0];\n that.parents = parents;\n that.path = path;\n that.dependencies = {};\n that.dependencies[path] = true;\n that.observable = that.source instanceof Observable;\n\n that._access = function(e) {\n that.dependencies[e.field] = true;\n };\n\n if (that.observable) {\n that._change = function(e) {\n that.change(e);\n };\n\n that.source.bind(CHANGE, that._change);\n }\n },\n\n _parents: function() {\n var parents = this.parents;\n var value = this.get();\n\n if (value && typeof value.parent == \"function\") {\n var parent = value.parent();\n\n if ($.inArray(parent, parents) < 0) {\n parents = [parent].concat(parents);\n }\n }\n\n return parents;\n },\n\n change: function(e) {\n var dependency,\n ch,\n field = e.field,\n that = this;\n\n if (that.path === \"this\") {\n that.trigger(CHANGE, e);\n } else {\n for (dependency in that.dependencies) {\n if (dependency.indexOf(field) === 0) {\n ch = dependency.charAt(field.length);\n\n if (!ch || ch === \".\" || ch === \"[\") {\n that.trigger(CHANGE, e);\n break;\n }\n }\n }\n }\n },\n\n start: function(source) {\n source.bind(\"get\", this._access);\n },\n\n stop: function(source) {\n source.unbind(\"get\", this._access);\n },\n\n get: function() {\n\n var that = this,\n source = that.source,\n index = 0,\n path = that.path,\n result = source;\n\n if (!that.observable) {\n return result;\n }\n\n that.start(that.source);\n\n result = source.get(path);\n\n // Traverse the observable hierarchy if the binding is not resolved at the current level.\n while (result === undefined$1 && source) {\n\n source = that.parents[++index];\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n\n // second pass try to get the parent from the object hierarchy\n if (result === undefined$1) {\n source = that.source; //get the initial source\n\n while (result === undefined$1 && source) {\n source = source.parent();\n\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n }\n\n // If the result is a function - invoke it\n if (typeof result === \"function\") {\n index = path.lastIndexOf(\".\");\n\n // If the function is a member of a nested observable object make that nested observable the context (this) of the function\n if (index > 0) {\n source = source.get(path.substring(0, index));\n }\n\n // Invoke the function\n that.start(source);\n\n if (source !== that.source) {\n result = result.call(source, that.source);\n } else {\n result = result.call(source);\n }\n\n that.stop(source);\n }\n\n // If the binding is resolved by a parent object\n if (source && source !== that.source) {\n\n that.currentSource = source; // save parent object\n\n // Listen for changes in the parent object\n source.unbind(CHANGE, that._change)\n .bind(CHANGE, that._change);\n }\n\n that.stop(that.source);\n\n return result;\n },\n\n set: function(value) {\n var source = this.currentSource || this.source;\n\n var field = kendo.getter(this.path)(source);\n\n if (typeof field === \"function\") {\n if (source !== this.source) {\n field.call(source, this.source, value);\n } else {\n field.call(source, value);\n }\n } else {\n source.set(this.path, value);\n }\n },\n\n destroy: function() {\n if (this.observable) {\n this.source.unbind(CHANGE, this._change);\n if (this.currentSource) {\n this.currentSource.unbind(CHANGE, this._change);\n }\n }\n\n this.unbind();\n }\n });\n\n var EventBinding = Binding.extend( {\n get: function() {\n var source = this.source,\n path = this.path,\n index = 0,\n handler;\n\n handler = source.get(path);\n\n while (!handler && source) {\n source = this.parents[++index];\n\n if (source instanceof ObservableObject) {\n handler = source.get(path);\n }\n }\n\n if (!handler) {\n return;\n }\n\n return handler.bind(source);\n }\n });\n\n var TemplateBinding = Binding.extend( {\n init: function(source, path, template) {\n var that = this;\n\n Binding.fn.init.call(that, source, path);\n\n that.template = template;\n },\n\n render: function(value) {\n var html;\n\n this.start(this.source);\n\n html = kendo.render(this.template, value);\n\n this.stop(this.source);\n\n return html;\n }\n });\n\n var Binder = Class.extend({\n init: function(element, bindings, options) {\n this.element = element;\n this.bindings = bindings;\n this.options = options;\n },\n\n bind: function(binding, attribute) {\n var that = this;\n\n binding = attribute ? binding[attribute] : binding;\n\n binding.bind(CHANGE, function(e) {\n that.refresh(attribute || e);\n });\n\n that.refresh(attribute);\n },\n\n destroy: function() {\n }\n });\n\n var TypedBinder = Binder.extend({\n dataType: function() {\n var dataType = this.element.getAttribute(\"data-\" + kendo.ns + \"type\") || this.element.type || \"text\";\n return dataType.toLowerCase();\n },\n\n parsedValue: function() {\n return this._parseValue(this.element.value, this.dataType());\n },\n\n _parseValue: function(value, dataType) {\n if (dataType == \"date\") {\n value = kendo.parseDate(value, \"yyyy-MM-dd\");\n } else if (dataType == \"datetime-local\") {\n value = kendo.parseDate(value, [\"yyyy-MM-ddTHH:mm:ss\", \"yyyy-MM-ddTHH:mm\"] );\n } else if (dataType == \"number\") {\n value = kendo.parseFloat(value);\n } else if (dataType == \"boolean\") {\n value = value.toLowerCase();\n if (kendo.parseFloat(value) !== null) {\n value = Boolean(kendo.parseFloat(value));\n } else {\n value = (value.toLowerCase() === \"true\");\n }\n }\n return value;\n }\n });\n\n binders.attr = Binder.extend({\n refresh: function(key) {\n this.element.setAttribute(key, this.bindings.attr[key].get());\n }\n });\n\n binders.css = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.classes = {};\n },\n refresh: function(className) {\n var element = $(this.element),\n binding = this.bindings.css[className],\n hasClass = this.classes[className] = binding.get();\n if (hasClass) {\n element.addClass(className);\n } else {\n element.removeClass(className);\n }\n }\n });\n\n binders.style = Binder.extend({\n refresh: function(key) {\n this.element.style[key] = this.bindings.style[key].get() || \"\";\n }\n });\n\n binders.enabled = Binder.extend({\n refresh: function() {\n if (this.bindings.enabled.get()) {\n this.element.removeAttribute(\"disabled\");\n } else {\n this.element.setAttribute(\"disabled\", \"disabled\");\n }\n }\n });\n\n binders.readonly = Binder.extend({\n refresh: function() {\n if (this.bindings.readonly.get()) {\n this.element.setAttribute(\"readonly\", \"readonly\");\n } else {\n this.element.removeAttribute(\"readonly\");\n }\n }\n });\n\n binders.disabled = Binder.extend({\n refresh: function() {\n if (this.bindings.disabled.get()) {\n this.element.setAttribute(\"disabled\", \"disabled\");\n } else {\n this.element.removeAttribute(\"disabled\");\n }\n }\n });\n\n binders.events = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.handlers = {};\n },\n\n refresh: function(key) {\n var element = $(this.element),\n binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n element.off(key, handler);\n }\n\n handler = this.handlers[key] = binding.get();\n\n element.on(key, binding.source, handler);\n },\n\n destroy: function() {\n var element = $(this.element),\n handler;\n\n for (handler in this.handlers) {\n element.off(handler, this.handlers[handler]);\n }\n }\n });\n\n binders.text = Binder.extend({\n refresh: function() {\n var text = this.bindings.text.get();\n var dataFormat = this.element.getAttribute(\"data-\" + kendo.ns + \"format\") || \"\";\n if (text == null) {\n text = \"\";\n }\n\n $(this.element).text(kendo.toString(text, dataFormat));\n }\n });\n\n binders.visible = Binder.extend({\n refresh: function() {\n if (this.bindings.visible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.invisible = Binder.extend({\n refresh: function() {\n if (!this.bindings.invisible.get()) {\n this.element.style.display = \"\";\n } else {\n this.element.style.display = \"none\";\n }\n }\n });\n\n binders.html = Binder.extend({\n refresh: function() {\n this.element.innerHTML = this.bindings.html.get();\n }\n });\n\n binders.value = TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n\n this._change = this.change.bind(this);\n this.eventName = options.valueUpdate || CHANGE;\n\n $(this.element).on(this.eventName, this._change);\n\n this._initChange = false;\n },\n\n change: function() {\n this._initChange = this.eventName != CHANGE;\n\n this.bindings[VALUE].set(this.parsedValue());\n\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var value = this.bindings[VALUE].get();\n\n if (value == null) {\n value = \"\";\n }\n\n var type = this.dataType();\n\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n this.element.value = value;\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n $(this.element).off(this.eventName, this._change);\n }\n });\n\n binders.source = Binder.extend({\n init: function(element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n\n var source = this.bindings.source.get();\n\n if (source instanceof kendo.data.DataSource && options.autoBind !== false) {\n source.fetch();\n }\n },\n\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action != \"itemchange\") {\n that.render();\n }\n } else {\n that.render();\n }\n },\n\n container: function() {\n var element = this.element;\n\n if (element.nodeName.toLowerCase() == \"table\") {\n if (!element.tBodies[0]) {\n element.appendChild(document.createElement(\"tbody\"));\n }\n element = element.tBodies[0];\n }\n\n return element;\n },\n\n template: function() {\n var options = this.options,\n template = options.template,\n nodeName = this.container().nodeName.toLowerCase();\n\n if (!template) {\n if (nodeName == \"select\") {\n if (options.valueField || options.textField) {\n template = function (data) {\n var valueAttr = kendo.getter(options.valueField || options.textField)(data);\n var innerText = kendo.getter(options.textField || options.valueField)(data);\n return (\"\");\n };\n } else {\n template = function (data) { return (\"\"); };\n }\n } else if (nodeName == \"tbody\") {\n template = function (data) { return (\"\" + (encode(data)) + \"\"); };\n } else if (nodeName == \"ul\" || nodeName == \"ol\") {\n template = function (data) { return (\"
  • \" + (encode(data)) + \"
  • \"); };\n } else {\n template = function (data) { return (\"\" + (encode(data))); };\n }\n template = kendo.template(template);\n }\n\n return template;\n },\n\n add: function(index, items) {\n var element = this.container(),\n parents,\n idx,\n length,\n child,\n clone = element.cloneNode(false),\n reference = element.children[index];\n\n $(clone).html(kendo.render(this.template(), items));\n\n if (clone.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n child = clone.children[0];\n element.insertBefore(child, reference || null);\n bindElement(child, items[idx], this.options.roles, [items[idx]].concat(parents));\n }\n }\n },\n\n remove: function(index, items) {\n var idx, element = this.container();\n\n for (idx = 0; idx < items.length; idx++) {\n var child = element.children[index];\n unbindElementTree(child, true);\n if (child.parentNode == element) {\n element.removeChild(child);\n }\n }\n },\n\n render: function() {\n var source = this.bindings.source.get(),\n parents,\n idx,\n length,\n element = this.container(),\n template = this.template();\n\n if (source == null) {\n return;\n }\n\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n if (!(source instanceof ObservableArray) && toString.call(source) !== \"[object Array]\") {\n source = [source];\n }\n\n if (this.bindings.template) {\n unbindElementChildren(element, true);\n\n $(element).html(this.bindings.template.render(source));\n\n if (element.children.length) {\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n bindElement(element.children[idx], source[idx], this.options.roles, [source[idx]].concat(parents));\n }\n }\n } else {\n $(element).html(kendo.render(template, source));\n }\n }\n });\n\n binders.input = {\n checked: TypedBinder.extend({\n init: function(element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = this.change.bind(this);\n\n $(this.element).change(this._change);\n },\n\n change: function() {\n var element = this.element;\n var value = this.value();\n\n if (element.type == \"radio\") {\n value = this.parsedValue();\n this.bindings[CHECKED].set(value);\n } else if (element.type == \"checkbox\") {\n var source = this.bindings[CHECKED].get();\n var index;\n\n if (source instanceof ObservableArray) {\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n if (index > -1) {\n source.splice(index, 1);\n } else {\n source.push(value);\n }\n } else {\n this.bindings[CHECKED].set(value);\n }\n }\n },\n\n refresh: function() {\n var value = this.bindings[CHECKED].get(),\n source = value,\n type = this.dataType(),\n element = this.element;\n\n if (element.type == \"checkbox\") {\n if (source instanceof ObservableArray) {\n var index = -1;\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n element.checked = (index >= 0);\n } else {\n element.checked = source;\n }\n } else if (element.type == \"radio\") {\n if (type == \"date\") {\n value = kendo.toString(value, \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(value, \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n if (value !== null && typeof(value) !== \"undefined\" && element.value === value.toString()) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n binders.select = {\n source: binders.source.extend({\n refresh: function(e) {\n var that = this,\n source = that.bindings.source.get();\n\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == \"add\") {\n that.add(e.index, e.items);\n } else if (e.action == \"remove\") {\n that.remove(e.index, e.items);\n } else if (e.action == \"itemchange\" || e.action === undefined$1) {\n that.render();\n if (that.bindings.value) {\n if (that.bindings.value) {\n var val = retrievePrimitiveValues(that.bindings.value.get(), $(that.element).data(\"valueField\"));\n if (val === null) {\n that.element.selectedIndex = -1;\n } else {\n that.element.value = val;\n }\n }\n }\n }\n } else {\n that.render();\n }\n }\n }),\n value: TypedBinder.extend({\n init: function(target, bindings, options) {\n TypedBinder.fn.init.call(this, target, bindings, options);\n\n this._change = this.change.bind(this);\n $(this.element).change(this._change);\n },\n\n parsedValue: function() {\n var dataType = this.dataType();\n var values = [];\n var value, option, idx, length;\n for (idx = 0, length = this.element.options.length; idx < length; idx++) {\n option = this.element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n values.push(this._parseValue(value, dataType));\n }\n }\n return values;\n },\n\n change: function() {\n var values = [],\n element = this.element,\n source,\n field = this.options.valueField || this.options.textField,\n valuePrimitive = this.options.valuePrimitive,\n option,\n valueIndex,\n value,\n idx,\n length;\n\n for (idx = 0, length = element.options.length; idx < length; idx++) {\n option = element.options[idx];\n\n if (option.selected) {\n value = option.attributes.value;\n\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n\n if (field) {\n values.push(value);\n } else {\n values.push(this._parseValue(value, this.dataType()));\n }\n\n }\n }\n\n if (field) {\n source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n\n for (valueIndex = 0; valueIndex < values.length; valueIndex++) {\n for (idx = 0, length = source.length; idx < length; idx++) {\n var sourceValue = source[idx].get(field);\n var match = (String(sourceValue) === values[valueIndex]);\n if (match) {\n values[valueIndex] = source[idx];\n break;\n }\n }\n }\n }\n\n value = this.bindings[VALUE].get();\n if (value instanceof ObservableArray) {\n value.splice.apply(value, [0, value.length].concat(values));\n } else if (!valuePrimitive && (value instanceof ObservableObject || value === null || value === undefined$1 || !field)) {\n this.bindings[VALUE].set(values[0]);\n } else {\n this.bindings[VALUE].set(values[0].get(field));\n }\n },\n refresh: function() {\n var optionIndex,\n element = this.element,\n options = element.options,\n value = this.bindings[VALUE].get(),\n values = value,\n field = this.options.valueField || this.options.textField,\n found = false,\n type = this.dataType(),\n optionValue;\n\n if (!(values instanceof ObservableArray)) {\n values = new ObservableArray([value]);\n }\n\n element.selectedIndex = -1;\n\n for (var valueIndex = 0; valueIndex < values.length; valueIndex++) {\n value = values[valueIndex];\n\n\n if (field && value instanceof ObservableObject) {\n value = value.get(field);\n }\n\n if (type == \"date\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-dd\");\n } else if (type == \"datetime-local\") {\n value = kendo.toString(values[valueIndex], \"yyyy-MM-ddTHH:mm:ss\");\n }\n\n for (optionIndex = 0; optionIndex < options.length; optionIndex++) {\n optionValue = options[optionIndex].value;\n\n if (optionValue === \"\" && value !== \"\") {\n optionValue = options[optionIndex].text;\n }\n\n if (value != null && optionValue == value.toString()) {\n options[optionIndex].selected = true;\n found = true;\n }\n }\n }\n },\n destroy: function() {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n\n function dataSourceBinding(bindingName, fieldName, setter) {\n return Binder.extend({\n init: function(widget, bindings, options) {\n var that = this;\n\n Binder.fn.init.call(that, widget.element[0], bindings, options);\n\n that.widget = widget;\n that._dataBinding = that.dataBinding.bind(that);\n that._dataBound = that.dataBound.bind(that);\n that._itemChange = that.itemChange.bind(that);\n },\n\n itemChange: function(e) {\n bindElement(e.item[0], e.data, this._ns(e.ns), [e.data].concat(this.bindings[bindingName]._parents()));\n },\n\n dataBinding: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.removedItems || widget.items();\n\n for (idx = 0, length = items.length; idx < length; idx++) {\n unbindElementTree(items[idx], false);\n }\n },\n\n _ns: function(ns) {\n ns = ns || kendo.ui;\n var all = [ kendo.ui, kendo.dataviz.ui, kendo.mobile.ui ];\n all.splice($.inArray(ns, all), 1);\n all.unshift(ns);\n\n return kendo.rolesFromNamespaces(all);\n },\n\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n items = e.addedItems || widget.items(),\n dataSource = widget[fieldName],\n view,\n parents,\n hds = kendo.data.HierarchicalDataSource;\n\n if (hds && dataSource instanceof hds) {\n // suppress binding of HDS items, because calling view() on root\n // will return only root items, and widget.items() returns all items\n return;\n }\n\n if (items.length) {\n view = e.addedDataItems || dataSource.flatView();\n parents = this.bindings[bindingName]._parents();\n\n for (idx = 0, length = view.length; idx < length; idx++) {\n if (items[idx]) {\n bindElement(items[idx], view[idx], this._ns(e.ns), [view[idx]].concat(parents));\n }\n }\n }\n },\n\n refresh: function(e) {\n var that = this,\n source,\n widget = that.widget,\n select, multiselect, dropdowntree;\n\n e = e || {};\n\n if (!e.action) {\n that.destroy();\n\n widget.bind(\"dataBinding\", that._dataBinding);\n widget.bind(\"dataBound\", that._dataBound);\n widget.bind(\"itemChange\", that._itemChange);\n\n source = that.bindings[bindingName].get();\n\n if (widget[fieldName] instanceof kendo.data.DataSource && widget[fieldName] != source) {\n if (source instanceof kendo.data.DataSource) {\n widget[setter](source);\n } else if (source && source._dataSource) {\n widget[setter](source._dataSource);\n } else {\n select = kendo.ui.Select && widget instanceof kendo.ui.Select;\n multiselect = kendo.ui.MultiSelect && widget instanceof kendo.ui.MultiSelect;\n dropdowntree = kendo.ui.DropDownTree && widget instanceof kendo.ui.DropDownTree;\n\n if (!dropdowntree) {\n widget[fieldName].data(source);\n } else {\n widget.treeview[fieldName].data(source);\n }\n\n if (that.bindings.value && (select || multiselect)) {\n widget.value(retrievePrimitiveValues(that.bindings.value.get(), widget.options.dataValueField));\n }\n }\n }\n }\n },\n\n destroy: function() {\n var widget = this.widget;\n\n widget.unbind(\"dataBinding\", this._dataBinding);\n widget.unbind(\"dataBound\", this._dataBound);\n widget.unbind(\"itemChange\", this._itemChange);\n }\n });\n }\n\n binders.widget = {\n events: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this.handlers = {};\n },\n\n refresh: function(key) {\n var binding = this.bindings.events[key],\n handler = this.handlers[key];\n\n if (handler) {\n this.widget.unbind(key, handler);\n }\n\n handler = binding.get();\n\n this.handlers[key] = function(e) {\n e.data = binding.source;\n\n handler(e);\n\n if (e.data === binding.source) {\n delete e.data;\n }\n };\n\n this.widget.bind(key, this.handlers[key]);\n },\n\n destroy: function() {\n var handler;\n\n for (handler in this.handlers) {\n this.widget.unbind(handler, this.handlers[handler]);\n }\n }\n }),\n\n checked: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.bind(CHANGE, this._change);\n },\n change: function() {\n this.bindings[CHECKED].set(this.value());\n },\n\n refresh: function() {\n var val = this.bindings[CHECKED].get();\n\n if (this.element.type === \"radio\") {\n if (val !== undefined$1) {\n this.widget.check(val.toString() === this.value());\n } else {\n this.widget.check(false);\n }\n } else {\n this.widget.check(val === true);\n }\n },\n\n value: function() {\n var element = this.element,\n value = element.value;\n\n if (value == \"on\" || value == \"off\" || this.element.type == \"checkbox\") {\n value = element.checked;\n }\n\n return value;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n start: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.start.set(this.widget.range().start);\n },\n\n refresh: function() {\n var that = this;\n var start = this.bindings.start.get();\n var end = that.widget._range ? that.widget._range.end : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n end: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this._change = this.change.bind(this);\n this.widget = widget;\n this.widget.bind(CHANGE, this._change);\n },\n\n change: function() {\n this.bindings.end.set(this.widget.range().end);\n },\n\n refresh: function() {\n var that = this;\n var end = this.bindings.end.get();\n var start = that.widget._range ? that.widget._range.start : null;\n this.widget.range({ start: start, end: end });\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n\n visible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var visible = this.bindings.visible.get();\n this.widget.wrapper[0].style.display = visible ? \"\" : \"none\";\n }\n }),\n\n invisible: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n var invisible = this.bindings.invisible.get();\n this.widget.wrapper[0].style.display = invisible ? \"none\" : \"\";\n }\n }),\n\n floatingLabel: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n if (!widget.floatingLabel) {\n return;\n }\n\n widget.floatingLabel.refresh();\n }\n }),\n\n enabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(this.bindings.enabled.get());\n }\n }\n }),\n\n disabled: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n\n refresh: function() {\n if (this.widget.enable) {\n this.widget.enable(!this.bindings.disabled.get());\n }\n }\n }),\n\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\"),\n\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n\n var value = this.bindings.value.get();\n\n this._valueIsObservableObject = !options.valuePrimitive && (value == null || value instanceof ObservableObject);\n this._valueIsObservableArray = value instanceof ObservableArray;\n this._initChange = false;\n },\n\n _source: function() {\n var source;\n\n if (this.widget.dataItem) {\n source = this.widget.dataItem();\n if (source && source instanceof ObservableObject) {\n return [source];\n }\n }\n\n if (this.bindings.source) {\n source = this.bindings.source.get();\n }\n\n if (!source || source instanceof kendo.data.DataSource) {\n source = this.widget.dataSource.flatView();\n }\n\n return source;\n },\n\n change: function() {\n var value = this.widget.value(),\n field = this.options.dataValueField || this.options.dataTextField,\n isArray = toString.call(value) === \"[object Array]\",\n isObservableObject = this._valueIsObservableObject,\n valueIndex, valueLength, values = [],\n sourceItem, sourceValue,\n idx, length, source;\n\n this._initChange = true;\n\n if (field) {\n\n if (value === \"\" && (isObservableObject || this.options.valuePrimitive)) {\n value = null;\n } else {\n source = this._source();\n\n if (isArray) {\n valueLength = value.length;\n values = value.slice(0);\n }\n\n for (idx = 0, length = source.length; idx < length; idx++) {\n sourceItem = source[idx];\n sourceValue = sourceItem.get(field);\n\n if (isArray) {\n for (valueIndex = 0; valueIndex < valueLength; valueIndex++) {\n if (sourceValue == values[valueIndex]) {\n values[valueIndex] = sourceItem;\n break;\n }\n }\n } else if (sourceValue == value) {\n value = isObservableObject ? sourceItem : sourceValue;\n break;\n }\n }\n\n if (values[0]) {\n if (this._valueIsObservableArray) {\n value = values;\n } else if (isObservableObject || !field) {\n value = values[0];\n } else {\n value = values[0].get(field);\n }\n }\n }\n }\n\n this.bindings.value.set(value);\n this._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var widget = this.widget;\n var options = widget.options;\n var textField = options.dataTextField;\n var valueField = options.dataValueField || textField;\n var value = this.bindings.value.get();\n var text = options.text || \"\";\n var idx = 0, length;\n var values = [];\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (valueField) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n values[idx] = value[idx].get(valueField);\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n text = value.get(textField);\n value = value.get(valueField);\n }\n }\n\n if (options.autoBind === false && !options.cascadeFrom && widget.listView && !widget.listView.bound()) {\n if (textField === valueField && !text) {\n text = value;\n }\n\n if (!text && (value || value === 0) && options.valuePrimitive) {\n widget.value(value);\n } else {\n widget._preselect(value, text);\n }\n } else {\n widget.value(value);\n }\n }\n\n this._initChange = false;\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n dropdowntree: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n selectedNode = that.widget.treeview.select(),\n nonPrimitiveValues = that.widget._isMultipleSelection() ? that.widget._getAllChecked() : (that.widget.treeview.dataItem(selectedNode) || that.widget.value()),\n newValues = (valuePrimitive || that.widget.options.autoBind === false) ? that.widget.value() : nonPrimitiveValues;\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice ? newValues.slice(0) : newValues;\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n var newLength = newValues.length;\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n if (options.autoBind === false && options.valuePrimitive !== true) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n })\n },\n gantt: {\n dependencies: dataSourceBinding(\"dependencies\", \"dependencies\", \"setDependenciesDataSource\")\n },\n\n multiselect: {\n value: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n this._change = this.change.bind(this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n\n change: function() {\n var that = this,\n oldValues = that.bindings[VALUE].get(),\n valuePrimitive = that.options.valuePrimitive,\n newValues = valuePrimitive ? that.widget.value() : that.widget.dataItems();\n\n var field = this.options.dataValueField || this.options.dataTextField;\n\n newValues = newValues.slice(0);\n\n that._initChange = true;\n\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n\n var newLength = newValues.length;\n\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n\n while (old !== undefined$1) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n\n old = oldValues[i];\n }\n\n arraySplice(oldValues, oldValues.length, 0, newValues);\n\n if (remove.length) {\n oldValues.trigger(\"change\", {\n action: \"remove\",\n items: remove,\n index: removeIndex\n });\n }\n\n if (newValues.length) {\n oldValues.trigger(\"change\", {\n action: \"add\",\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n\n that._initChange = false;\n },\n\n refresh: function() {\n if (!this._initChange) {\n var options = this.options,\n widget = this.widget,\n field = options.dataValueField || options.dataTextField,\n value = this.bindings.value.get(),\n data = value,\n idx = 0, length,\n values = [],\n selectedValue;\n\n if (value === undefined$1) {\n value = null;\n }\n\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n\n if (options.autoBind === false && options.valuePrimitive !== true && !widget._isBound()) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n\n destroy: function() {\n this.widget.unbind(CHANGE, this._change);\n }\n\n })\n },\n scheduler: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx;\n var length;\n var widget = this.widget;\n var elements = e.addedItems || widget.items();\n var data, parents;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n grid: {\n source: dataSourceBinding(\"source\", \"dataSource\", \"setDataSource\").extend({\n dataBound: function(e) {\n var idx,\n length,\n widget = this.widget,\n elements = e.addedItems || widget.items(),\n parents,\n data;\n\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n },\n\n badge: {\n text: Binder.extend({\n init: function(widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n\n this.widget = widget;\n },\n refresh: function() {\n var text = this.bindings.text.get();\n\n if (text == null) {\n text = \"\";\n }\n this.widget.text(text);\n }\n })\n }\n };\n\n var arraySplice = function(arr, idx, remove, add) {\n add = add || [];\n remove = remove || 0;\n\n var addLength = add.length;\n var oldLength = arr.length;\n\n var shifted = [].slice.call(arr, idx + remove);\n var shiftedLength = shifted.length;\n var index;\n\n if (addLength) {\n addLength = idx + addLength;\n index = 0;\n\n for (; idx < addLength; idx++) {\n arr[idx] = add[index];\n index++;\n }\n\n arr.length = addLength;\n } else if (remove) {\n arr.length = idx;\n\n remove += idx;\n while (idx < remove) {\n delete arr[--remove];\n }\n }\n\n if (shiftedLength) {\n shiftedLength = idx + shiftedLength;\n index = 0;\n\n for (; idx < shiftedLength; idx++) {\n arr[idx] = shifted[index];\n index++;\n }\n\n arr.length = shiftedLength;\n }\n\n idx = arr.length;\n\n while (idx < oldLength) {\n delete arr[idx];\n idx++;\n }\n };\n\n var BindingTarget = Class.extend( {\n init: function(target, options) {\n this.target = target;\n this.options = options;\n this.toDestroy = [];\n },\n\n bind: function(bindings) {\n var key,\n hasValue,\n hasSource,\n hasEvents,\n hasChecked,\n hasCss,\n widgetBinding = this instanceof WidgetBindingTarget,\n specificBinders = this.binders();\n\n for (key in bindings) {\n if (key == VALUE) {\n hasValue = true;\n } else if (key == SOURCE) {\n hasSource = true;\n } else if (key == EVENTS && !widgetBinding) {\n hasEvents = true;\n } else if (key == CHECKED) {\n hasChecked = true;\n } else if (key == CSS) {\n hasCss = true;\n } else {\n this.applyBinding(key, bindings, specificBinders);\n }\n }\n if (hasSource) {\n this.applyBinding(SOURCE, bindings, specificBinders);\n }\n\n if (hasValue) {\n this.applyBinding(VALUE, bindings, specificBinders);\n }\n\n if (hasChecked) {\n this.applyBinding(CHECKED, bindings, specificBinders);\n }\n\n if (hasEvents && !widgetBinding) {\n this.applyBinding(EVENTS, bindings, specificBinders);\n }\n\n if (hasCss && !widgetBinding) {\n this.applyBinding(CSS, bindings, specificBinders);\n }\n\n if (widgetBinding && this.target && this.target.floatingLabel) {\n this.applyBinding(\"floatingLabel\", bindings, specificBinders);\n }\n },\n\n binders: function() {\n return binders[this.target.nodeName.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.options);\n\n toDestroy.push(binder);\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else if (name !== \"template\") {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.nodeName.toLowerCase() + \" element\");\n }\n },\n\n destroy: function() {\n var idx,\n length,\n toDestroy = this.toDestroy;\n\n for (idx = 0, length = toDestroy.length; idx < length; idx++) {\n toDestroy[idx].destroy();\n }\n }\n });\n\n var WidgetBindingTarget = BindingTarget.extend( {\n binders: function() {\n return binders.widget[this.target.options.name.toLowerCase()] || {};\n },\n\n applyBinding: function(name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders.widget[name],\n toDestroy = this.toDestroy,\n attribute,\n binding = bindings[name];\n\n if (binder) {\n binder = new binder(this.target, bindings, this.target.options);\n\n toDestroy.push(binder);\n\n\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else {\n throw new Error(\"The \" + name + \" binding is not supported by the \" + this.target.options.name + \" widget\");\n }\n }\n });\n\n function bindingTargetForRole(element, roles) {\n var widget = kendo.initWidget(element, {}, roles);\n\n if (widget) {\n return new WidgetBindingTarget(widget);\n }\n }\n\n var keyValueRegExp = /[A-Za-z0-9_\\-]+:(\\{([^}]*)\\}|[^,}]+)/g,\n whiteSpaceRegExp = /\\s/g;\n\n function parseBindings(bind) {\n var result = {},\n idx,\n length,\n token,\n colonIndex,\n key,\n value,\n tokens;\n\n tokens = bind.match(keyValueRegExp);\n\n for (idx = 0, length = tokens.length; idx < length; idx++) {\n token = tokens[idx];\n colonIndex = token.indexOf(\":\");\n\n key = token.substring(0, colonIndex);\n value = token.substring(colonIndex + 1);\n\n if (value.charAt(0) == \"{\") {\n value = parseBindings(value);\n }\n\n result[key] = value;\n }\n\n return result;\n }\n\n function createBindings(bindings, source, type) {\n var binding,\n result = {};\n\n for (binding in bindings) {\n result[binding] = new type(source, bindings[binding]);\n }\n\n return result;\n }\n\n function bindElement(element, source, roles, parents) {\n\n if (!element || element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n return;\n }\n\n var role = element.getAttribute(\"data-\" + kendo.ns + \"role\"),\n idx,\n bind = element.getAttribute(\"data-\" + kendo.ns + \"bind\"),\n childrenCopy = [],\n deep = true,\n bindings,\n options = {},\n target;\n\n parents = parents || [source];\n\n if (role || bind) {\n unbindElement(element, false);\n }\n\n if (role) {\n target = bindingTargetForRole(element, roles);\n }\n\n if (bind) {\n bind = parseBindings(bind.replace(whiteSpaceRegExp, \"\"));\n\n if (!target) {\n options = kendo.parseOptions(element, { textField: \"\", valueField: \"\", template: \"\", valueUpdate: CHANGE, valuePrimitive: false, autoBind: true }, source);\n options.roles = roles;\n target = new BindingTarget(element, options);\n }\n\n target.source = source;\n\n bindings = createBindings(bind, parents, Binding);\n\n if (options.template) {\n bindings.template = new TemplateBinding(parents, \"\", options.template);\n }\n\n if (bindings.click) {\n bind.events = bind.events || {};\n bind.events.click = bind.click;\n bindings.click.destroy();\n delete bindings.click;\n }\n\n if (bindings.source) {\n deep = false;\n }\n\n if (bind.attr) {\n bindings.attr = createBindings(bind.attr, parents, Binding);\n }\n\n if (bind.style) {\n bindings.style = createBindings(bind.style, parents, Binding);\n }\n\n if (bind.events) {\n bindings.events = createBindings(bind.events, parents, EventBinding);\n }\n\n if (bind.css) {\n bindings.css = createBindings(bind.css, parents, Binding);\n }\n\n target.bind(bindings);\n }\n\n if (target) {\n element.kendoBindingTarget = target;\n }\n\n var children = element.children;\n if (deep && children && !element.getAttribute(\"data-\" + kendo.ns + \"stop\")) {\n // https://github.com/telerik/kendo/issues/1240 for the weirdness.\n for (idx = 0; idx < children.length; idx++) {\n childrenCopy[idx] = children[idx];\n }\n\n for (idx = 0; idx < childrenCopy.length; idx++) {\n bindElement(childrenCopy[idx], source, roles, parents);\n }\n }\n }\n\n function bind(dom, object) {\n var idx,\n length,\n node,\n roles = kendo.rolesFromNamespaces([].slice.call(arguments, 2));\n\n object = kendo.observable(object);\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++) {\n node = dom[idx];\n if (node.nodeType === 1) {\n bindElement(node, object, roles);\n }\n }\n }\n\n function unbindElement(element, destroyWidget) {\n var bindingTarget = element.kendoBindingTarget;\n\n if (bindingTarget) {\n bindingTarget.destroy();\n\n if (deleteExpando) {\n delete element.kendoBindingTarget;\n } else if (element.removeAttribute) {\n element.removeAttribute(\"kendoBindingTarget\");\n } else {\n element.kendoBindingTarget = null;\n }\n }\n\n if (destroyWidget) {\n var widget = kendo.widgetInstance($(element));\n if (widget && typeof widget.destroy === FUNCTION) {\n widget.destroy();\n }\n }\n }\n\n function unbindElementTree(element, destroyWidgets) {\n unbindElement(element, destroyWidgets);\n\n unbindElementChildren(element, destroyWidgets);\n }\n\n function unbindElementChildren(element, destroyWidgets) {\n var children = element.children;\n\n if (children) {\n for (var idx = 0, length = children.length; idx < length; idx++) {\n unbindElementTree(children[idx], destroyWidgets);\n }\n }\n }\n\n function unbind(dom) {\n var idx, length;\n\n dom = $(dom);\n\n for (idx = 0, length = dom.length; idx < length; idx++ ) {\n unbindElementTree(dom[idx], false);\n }\n }\n\n function notify(widget, namespace) {\n var element = widget.element,\n bindingTarget = element[0].kendoBindingTarget;\n\n if (bindingTarget) {\n bind(element, bindingTarget.source, namespace);\n }\n }\n\n function retrievePrimitiveValues(value, valueField) {\n var values = [];\n var idx = 0;\n var length;\n var item;\n\n if (!valueField) {\n return value;\n }\n\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n item = value[idx];\n values[idx] = item.get ? item.get(valueField) : item[valueField];\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(valueField);\n }\n\n return value;\n }\n\n kendo.unbind = unbind;\n kendo.bind = bind;\n kendo.data.binders = binders;\n kendo.data.Binder = Binder;\n kendo.notify = notify;\n\n kendo.observable = function(object) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n\n return object;\n };\n\n kendo.observableHierarchy = function(array) {\n var dataSource = kendo.data.HierarchicalDataSource.create(array);\n\n function recursiveRead(data) {\n var i, children;\n\n for (i = 0; i < data.length; i++) {\n data[i]._initChildren();\n\n children = data[i].children;\n\n children.fetch();\n\n data[i].items = children.data();\n\n recursiveRead(data[i].items);\n }\n }\n\n dataSource.fetch();\n\n recursiveRead(dataSource.data());\n\n dataSource._data._dataSource = dataSource;\n\n return dataSource._data;\n };\n\n })(window.kendo.jQuery);\n var kendo$Q = kendo;\n\n var __meta__$Q = {\n id: \"view\",\n name: \"View\",\n category: \"framework\",\n description: \"The View class instantiates and handles the events of a certain screen from the application.\",\n depends: [ \"core\", \"binder\", \"fx\" ],\n hidden: false\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n attr = kendo.attr,\n ui = kendo.ui,\n attrValue = kendo.attrValue,\n directiveSelector = kendo.directiveSelector,\n Observable = kendo.Observable,\n Widget = kendo.ui.Widget,\n roleSelector = kendo.roleSelector,\n\n SCRIPT = \"SCRIPT\",\n INIT = \"init\",\n TRANSITION_START = \"transitionStart\",\n TRANSITION_END = \"transitionEnd\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ATTACH = \"attach\",\n DETACH = \"detach\",\n sizzleErrorRegExp = /unrecognized expression/;\n\n var bodyRegExp = /]*>(([\\u000a\\u000d\\u2028\\u2029]|.)*)<\\/body>/i;\n var LOAD_START = \"loadStart\";\n var LOAD_COMPLETE = \"loadComplete\";\n var SHOW_START = \"showStart\";\n var SAME_VIEW_REQUESTED = \"sameViewRequested\";\n var VIEW_SHOW = \"viewShow\";\n var VIEW_TYPE_DETERMINED = \"viewTypeDetermined\";\n var AFTER = \"after\";\n var classNames = {\n content: \"k-content\",\n view: \"k-view\",\n stretchedView: \"k-stretched-view\",\n widget: \"k-widget\",\n header: \"k-header\",\n footer: \"k-footer\"\n };\n\n var View = kendo.ui.Widget.extend({\n init: function(content, options) {\n var that = this;\n options = options || {};\n that.id = kendo.guid();\n\n Observable.fn.init.call(that);\n this.options = $.extend({}, this.options, options);\n\n that.content = content;\n\n if (that.options.renderOnInit) {\n Widget.fn.init.call(that, that._createElement(), options);\n }\n\n if (that.options.wrapInSections) {\n that._renderSections();\n }\n\n that.tagName = options.tagName || \"div\";\n that.model = options.model;\n that._wrap = options.wrap !== false;\n this._evalTemplate = options.evalTemplate || false;\n this._useWithBlock = options.useWithBlock;\n that._fragments = {};\n\n that.bind([ INIT, SHOW, HIDE, TRANSITION_START, TRANSITION_END ], options);\n },\n\n options: {\n name: \"View\",\n renderOnInit: false,\n wrapInSections: false,\n detachOnHide: true,\n detachOnDestroy: true\n },\n\n render: function(container) {\n var that = this,\n notInitialized = !that.element;\n\n // The order below matters - kendo.bind should happen when the element is in the DOM, and show should be triggered after init.\n\n if (notInitialized) {\n that.element = that._createElement();\n }\n\n if (container) {\n $(container).append(that.element);\n }\n\n if (notInitialized) {\n kendo.bind(that.element, that.model);\n that.trigger(INIT);\n }\n\n if (container) {\n that._eachFragment(ATTACH);\n that.trigger(SHOW);\n }\n\n return that.element;\n },\n\n clone: function() {\n return new ViewClone(this);\n },\n\n triggerBeforeShow: function() {\n return true;\n },\n\n triggerBeforeHide: function() {\n return true;\n },\n\n showStart: function() {\n var that = this;\n var element = that.render();\n\n if (element) {\n element.css(\"display\", \"\");\n }\n\n this.trigger(SHOW_START, { view: this });\n },\n\n showEnd: function() {\n },\n\n hideEnd: function() {\n this.hide();\n },\n\n beforeTransition: function(type) {\n this.trigger(TRANSITION_START, { type: type });\n },\n\n afterTransition: function(type) {\n this.trigger(TRANSITION_END, { type: type });\n },\n\n hide: function() {\n if (this.options.detachOnHide) {\n this._eachFragment(DETACH);\n $(this.element).detach();\n }\n\n this.trigger(HIDE);\n },\n\n destroy: function() {\n var that = this;\n var element = that.element;\n\n if (element) {\n Widget.fn.destroy.call(that);\n\n kendo.unbind(element);\n kendo.destroy(element);\n\n if (that.options.detachOnDestroy) {\n element.remove();\n }\n }\n },\n\n // ported from mobile view\n purge: function() {\n var that = this;\n\n that.destroy();\n $(that.element).add(that.content).add(that.wrapper).off().remove();\n },\n\n fragments: function(fragments) {\n $.extend(this._fragments, fragments);\n },\n\n _eachFragment: function(methodName) {\n for (var placeholder in this._fragments) {\n this._fragments[placeholder][methodName](this, placeholder);\n }\n },\n\n _createElement: function() {\n var that = this,\n wrapper = \"<\" + that.tagName + \">\",\n element,\n content;\n\n try {\n content = $(document.getElementById(that.content) || that.content); // support passing id without #\n\n if (content[0].tagName === SCRIPT) {\n content = content.html();\n }\n } catch (e) {\n if (sizzleErrorRegExp.test(e.message)) {\n content = that.content;\n }\n }\n\n if (typeof content === \"string\") {\n content = content.replace(/^\\s+|\\s+$/g, '');\n if (that._evalTemplate) {\n content = kendo.template(content, { useWithBlock: that._useWithBlock })(that.model || {});\n }\n\n element = $(wrapper).append(content);\n // drop the wrapper if asked - this seems like the easiest (although not very intuitive) way to avoid messing up templates with questionable content, like this one for instance:\n // \n if (!that._wrap) {\n element = element.contents();\n }\n } else {\n element = content;\n if (that._evalTemplate) {\n var result = $(kendo.template($(\"
    \").append(element.clone(true)).html(), { useWithBlock: that._useWithBlock })(that.model || {}));\n\n // template uses DOM\n if ($.contains(document, element[0])) {\n element.replaceWith(result);\n }\n\n element = result;\n }\n if (that._wrap) {\n element = element.wrapAll(wrapper).parent();\n }\n }\n\n return element;\n },\n\n _renderSections: function() {\n var that = this;\n\n if (that.options.wrapInSections) {\n that._wrapper();\n that._createContent();\n that._createHeader();\n that._createFooter();\n }\n },\n\n _wrapper: function() {\n var that = this;\n var content = that.content;\n\n if (content.is(roleSelector(\"view\"))) {\n that.wrapper = that.content;\n } else {\n that.wrapper = content\n .wrap('
    ')\n .parent();\n }\n\n var wrapper = that.wrapper;\n\n wrapper.attr(\"id\", that.id);\n\n wrapper.addClass(classNames.view);\n wrapper.addClass(classNames.widget);\n wrapper.attr(\"role\", \"view\");\n },\n\n _createContent: function() {\n var that = this;\n var wrapper = $(that.wrapper);\n var contentSelector = roleSelector(\"content\");\n\n if (!wrapper.children(contentSelector)[0]) {\n var ccontentElements = wrapper.children().filter(function() {\n var child = $(this);\n if (!child.is(roleSelector(\"header\")) && !child.is(roleSelector(\"footer\"))) {\n return child;\n }\n });\n\n ccontentElements.wrap(\"
    ');\n }\n\n // use contentElement instead of content as view.content can be a string\n this.contentElement = wrapper.children(roleSelector(\"content\"));\n\n this.contentElement\n .addClass(classNames.stretchedView)\n .addClass(classNames.content);\n },\n\n _createHeader: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.header = wrapper.children(roleSelector(\"header\")).addClass(classNames.header);\n },\n\n _createFooter: function() {\n var that = this;\n var wrapper = that.wrapper;\n\n this.footer = wrapper.children(roleSelector(\"footer\")).addClass(classNames.footer);\n }\n });\n\n var ViewClone = kendo.Class.extend({\n init: function(view) {\n $.extend(this, {\n element: view.element.clone(true),\n transition: view.transition,\n id: view.id\n });\n\n view.element.parent().append(this.element);\n },\n\n hideEnd: function() {\n this.element.remove();\n },\n\n beforeTransition: $.noop,\n afterTransition: $.noop\n });\n\n var Layout = View.extend({\n init: function(content, options) {\n View.fn.init.call(this, content, options);\n this.containers = {};\n },\n\n container: function(selector) {\n var container = this.containers[selector];\n\n if (!container) {\n container = this._createContainer(selector);\n this.containers[selector] = container;\n }\n\n return container;\n },\n\n showIn: function(selector, view, transition) {\n this.container(selector).show(view, transition);\n },\n\n _createContainer: function(selector) {\n var root = this.render(),\n element = root.find(selector),\n container;\n\n if (!element.length && root.is(selector)) {\n if (root.is(selector)) {\n element = root;\n } else {\n\n throw new Error(\"can't find a container with the specified \" + selector + \" selector\");\n }\n }\n\n container = new ViewContainer(element);\n\n container.bind(\"accepted\", function(e) {\n e.view.render(element);\n });\n\n return container;\n }\n });\n\n var Fragment = View.extend({\n attach: function(view, placeholder) {\n view.element.find(placeholder).replaceWith(this.render());\n },\n\n detach: function() {\n }\n });\n\n var transitionRegExp = /^(\\w+)(:(\\w+))?( (\\w+))?$/;\n\n function parseTransition(transition) {\n if (!transition) {\n return {};\n }\n\n var matches = transition.match(transitionRegExp) || [];\n\n return {\n type: matches[1],\n direction: matches[3],\n reverse: matches[5] === \"reverse\"\n };\n }\n\n var ViewContainer = Observable.extend({\n init: function(container) {\n Observable.fn.init.call(this);\n this.container = container;\n this.history = [];\n this.view = null;\n this.running = false;\n },\n\n after: function() {\n this.running = false;\n this.trigger(\"complete\", { view: this.view });\n this.trigger(\"after\");\n },\n\n end: function() {\n this.view.showEnd();\n this.previous.hideEnd();\n this.after();\n },\n\n show: function(view, transition, locationID) {\n if (!view.triggerBeforeShow() || (this.view && !this.view.triggerBeforeHide())) {\n this.trigger(\"after\");\n return false;\n }\n\n locationID = locationID || view.id;\n\n var that = this,\n current = (view === that.view) ? view.clone() : that.view,\n history = that.history,\n previousEntry = history[history.length - 2] || {},\n back = previousEntry.id === locationID,\n // If explicit transition is set, it will be with highest priority\n // Next we will try using the history record transition or the view transition configuration\n theTransition = transition || ( back ? history[history.length - 1].transition : view.transition ),\n transitionData = parseTransition(theTransition);\n\n if (that.running) {\n that.effect.stop();\n }\n\n if (theTransition === \"none\") {\n theTransition = null;\n }\n\n that.trigger(\"accepted\", { view: view });\n that.view = view;\n that.previous = current;\n that.running = true;\n\n if (!back) {\n history.push({ id: locationID, transition: theTransition });\n } else {\n history.pop();\n }\n\n if (!current) {\n view.showStart();\n view.showEnd();\n that.after();\n return true;\n }\n\n if (!theTransition || !kendo.effects.enabled) {\n view.showStart();\n that.end();\n } else {\n // hide the view element before init/show - prevents blinks on iPad\n // the replace effect will remove this class\n view.element.addClass(\"k-fx-hidden\");\n view.showStart();\n // do not reverse the explicit transition\n if (back && !transition) {\n transitionData.reverse = !transitionData.reverse;\n }\n\n that.effect = kendo.fx(view.element).replace(current.element, transitionData.type)\n .beforeTransition(function() {\n view.beforeTransition(\"show\");\n current.beforeTransition(\"hide\");\n })\n .afterTransition(function() {\n view.afterTransition(\"show\");\n current.afterTransition(\"hide\");\n })\n .direction(transitionData.direction)\n .setReverse(transitionData.reverse);\n\n that.effect.run().then(function() { that.end(); });\n }\n\n return true;\n },\n\n destroy: function() {\n var that = this;\n var view = that.view;\n\n if (view && view.destroy) {\n view.destroy();\n }\n }\n });\n\n var ViewEngine = Observable.extend({\n init: function(options) {\n var that = this,\n views,\n container;\n\n Observable.fn.init.call(that);\n that.options = options;\n\n $.extend(that, options);\n that.sandbox = $(\"
    \");\n container = that.container;\n\n views = that._hideViews(container);\n that.rootView = views.first();\n that.layouts = {};\n\n that.viewContainer = new kendo.ViewContainer(that.container);\n\n that.viewContainer.bind(\"accepted\", function(e) {\n e.view.params = that.params;\n });\n\n that.viewContainer.bind(\"complete\", function(e) {\n that.trigger(VIEW_SHOW, { view: e.view });\n });\n\n that.viewContainer.bind(AFTER, function() {\n that.trigger(AFTER);\n });\n\n this.bind(this.events, options);\n },\n\n events: [\n SHOW_START,\n AFTER,\n VIEW_SHOW,\n LOAD_START,\n LOAD_COMPLETE,\n SAME_VIEW_REQUESTED,\n VIEW_TYPE_DETERMINED\n ],\n\n destroy: function() {\n var that = this;\n var viewContainer = that.viewContainer;\n\n kendo.destroy(that.container);\n\n for (var id in that.layouts) {\n this.layouts[id].destroy();\n }\n\n if (viewContainer) {\n viewContainer.destroy();\n }\n },\n\n view: function() {\n return this.viewContainer.view;\n },\n\n showView: function(url, transition, params) {\n url = url.replace(new RegExp(\"^\" + this.remoteViewURLPrefix), \"\");\n if (url === \"\" && this.remoteViewURLPrefix) {\n url = \"/\";\n }\n\n if (url.replace(/^#/, \"\") === this.url) {\n this.trigger(SAME_VIEW_REQUESTED);\n return false;\n }\n\n this.trigger(SHOW_START);\n\n var that = this,\n element = that._findViewElement(url),\n view = kendo.widgetInstance(element);\n\n that.url = url.replace(/^#/, \"\");\n\n that.params = params;\n\n if (view && view.reload) {\n view.purge();\n element = [];\n }\n\n this.trigger(VIEW_TYPE_DETERMINED, { remote: element.length === 0, url: url });\n\n if (element[0]) {\n if (!view) {\n view = that._createView(element);\n }\n\n return that.viewContainer.show(view, transition, url);\n } else {\n return true;\n }\n },\n\n append: function(html, url) {\n var sandbox = this.sandbox,\n urlPath = (url || \"\").split(\"?\")[0],\n container = this.container,\n views,\n view;\n\n if (bodyRegExp.test(html)) {\n html = RegExp.$1;\n }\n\n sandbox[0].innerHTML = html;\n\n container.append(sandbox.children(\"script, style\"));\n\n views = this._hideViews(sandbox);\n view = views.first();\n\n // Generic HTML content found as remote view - no remote view markers\n if (!view.length) {\n views = view = sandbox.wrapInner(\"
    \").children(); // one element\n }\n\n if (urlPath) {\n view.hide().attr(attr(\"url\"), urlPath);\n }\n\n container.append(views);\n\n return this._createView(view);\n },\n\n _locate: function(selectors) {\n return this.$angular ? directiveSelector(selectors) : roleSelector(selectors);\n },\n\n _findViewElement: function(url) {\n var element,\n urlPath = url.split(\"?\")[0];\n\n if (!urlPath) {\n return this.rootView;\n }\n\n element = this.container.children(\"[\" + attr(\"url\") + \"='\" + urlPath + \"']\");\n\n // do not try to search for \"#/foo/bar\" id, jQuery throws error\n if (!element[0] && urlPath.indexOf(\"/\") === -1) {\n element = this.container.children(urlPath.charAt(0) === \"#\" ? urlPath : \"#\" + urlPath);\n }\n\n if (!element[0]) {\n element = this._findViewElementById(url);\n }\n\n return element;\n },\n\n _findViewElementById: function(id) {\n var element = this.container.children(\"[id='\" + id + \"']\");\n return element;\n },\n\n _createView: function(element) {\n //return this._createMobileView(element);\n return this._createSpaView(element);\n },\n\n _createMobileView: function(element) {\n return kendo.initWidget(element, {\n defaultTransition: this.transition,\n loader: this.loader,\n container: this.container,\n getLayout: this.getLayoutProxy,\n modelScope: this.modelScope,\n reload: attrValue(element, \"reload\")\n }, ui.roles);\n },\n\n _createSpaView: function(element) {\n var viewOptions = (this.options || {}).viewOptions || {};\n return new kendo.View(element, {\n renderOnInit: viewOptions.renderOnInit,\n wrap: viewOptions.wrap || false,\n wrapInSections: viewOptions.wrapInSections,\n detachOnHide: viewOptions.detachOnHide,\n detachOnDestroy: viewOptions.detachOnDestroy\n });\n },\n\n _hideViews: function(container) {\n return container.children(this._locate(\"view\")).hide();\n }\n });\n\n kendo.ViewEngine = ViewEngine;\n\n kendo.ViewContainer = ViewContainer;\n kendo.Fragment = Fragment;\n kendo.Layout = Layout;\n kendo.View = View;\n kendo.ViewClone = ViewClone;\n\n })(window.kendo.jQuery);\n var kendo$P = kendo;\n\n var __meta__$P = {\n id: \"data.signalr\",\n name: \"SignalR\",\n category: \"framework\",\n depends: [ \"data\" ],\n hidden: true\n };\n\n (function($) {\n var kendo = window.kendo;\n var isFunction = kendo.isFunction;\n\n function isJQueryPromise(promise) {\n return promise && isFunction(promise.done) && isFunction(promise.fail);\n }\n\n function isNativePromise(promise) {\n return promise && isFunction(promise.then) && isFunction(promise.catch);\n }\n\n var transport = kendo.data.RemoteTransport.extend({\n init: function(options) {\n var signalr = options && options.signalr ? options.signalr : {};\n\n var promise = signalr.promise;\n\n if (!promise) {\n throw new Error('The \"promise\" option must be set.');\n }\n\n if (!isJQueryPromise(promise) && !isNativePromise(promise)) {\n throw new Error('The \"promise\" option must be a Promise.');\n }\n\n this.promise = promise;\n\n var hub = signalr.hub;\n\n if (!hub) {\n throw new Error('The \"hub\" option must be set.');\n }\n\n if (typeof hub.on != \"function\" || typeof hub.invoke != \"function\") {\n throw new Error('The \"hub\" option is not a valid SignalR hub proxy.');\n }\n\n this.hub = hub;\n\n kendo.data.RemoteTransport.fn.init.call(this, options);\n },\n\n push: function(callbacks) {\n var client = this.options.signalr.client || {};\n\n if (client.create) {\n this.hub.on(client.create, callbacks.pushCreate);\n }\n\n if (client.update) {\n this.hub.on(client.update, callbacks.pushUpdate);\n }\n\n if (client.destroy) {\n this.hub.on(client.destroy, callbacks.pushDestroy);\n }\n },\n\n _crud: function(options, type) {\n var hub = this.hub;\n var promise = this.promise;\n var server = this.options.signalr.server;\n\n if (!server || !server[type]) {\n throw new Error(kendo.format('The \"server.{0}\" option must be set.', type));\n }\n\n var args = [server[type]];\n\n var data = this.parameterMap(options.data, type);\n\n if (!$.isEmptyObject(data)) {\n args.push(data);\n }\n\n if (isJQueryPromise(promise)) {\n promise.done(function() {\n hub.invoke.apply(hub, args)\n .done(options.success)\n .fail(options.error);\n });\n } else if (isNativePromise(promise)) {\n promise.then(function() {\n hub.invoke.apply(hub, args)\n .then(options.success)\n .catch(options.error);\n });\n }\n },\n\n read: function(options) {\n this._crud(options, \"read\");\n },\n\n create: function(options) {\n this._crud(options, \"create\");\n },\n\n update: function(options) {\n this._crud(options, \"update\");\n },\n\n destroy: function(options) {\n this._crud(options, \"destroy\");\n }\n });\n\n $.extend(true, kendo.data, {\n transports: {\n signalr: transport\n }\n });\n\n })(window.kendo.jQuery);\n var kendo$O = kendo;\n\n var __meta__$O = {\n id: \"userevents\",\n name: \"User Events\",\n category: \"framework\",\n depends: [ \"core\" ],\n hidden: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n Class = kendo.Class,\n Observable = kendo.Observable,\n now = Date.now,\n extend = $.extend,\n OS = support.mobileOS,\n invalidZeroEvents = OS && OS.android,\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, // WP8 and W8 are very sensitive and always report move.\n\n // UserEvents events\n PRESS = \"press\",\n HOLD = \"hold\",\n SELECT = \"select\",\n START = \"start\",\n MOVE = \"move\",\n END = \"end\",\n CANCEL = \"cancel\",\n TAP = \"tap\",\n DOUBLETAP = \"doubleTap\",\n RELEASE = \"release\",\n GESTURESTART = \"gesturestart\",\n GESTURECHANGE = \"gesturechange\",\n GESTUREEND = \"gestureend\",\n GESTURETAP = \"gesturetap\";\n\n var THRESHOLD = {\n \"api\": 0,\n \"touch\": 0,\n \"mouse\": 9,\n \"pointer\": 9\n };\n\n var ENABLE_GLOBAL_SURFACE = (!support.touch || support.mouseAndTouchPresent);\n\n function touchDelta(touch1, touch2) {\n var x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n }\n\n function getTouches(e) {\n var touches = [],\n originalEvent = e.originalEvent,\n currentTarget = e.currentTarget,\n idx = 0, length,\n changedTouches,\n touch;\n\n if (e.api) {\n touches.push({\n id: 2, // hardcoded ID for API call;\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: \"api\"\n });\n }\n else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n for (length = changedTouches.length; idx < length; idx ++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: \"touch\"\n });\n }\n }\n else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: \"pointer\"\n });\n } else {\n touches.push({\n id: 1, // hardcoded ID for mouse event;\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: \"mouse\"\n });\n }\n\n return touches;\n }\n\n var TouchAxis = Class.extend({\n init: function(axis, location) {\n var that = this;\n\n that.axis = axis;\n\n that._updateLocationData(location);\n\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n },\n\n move: function(location) {\n var that = this,\n offset = location[\"page\" + that.axis],\n timeStamp = now(),\n timeDelta = (timeStamp - that.timeStamp) || 1; // Firing manually events in tests can make this 0;\n\n if (!offset && invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n\n that._updateLocationData(location);\n\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n },\n\n _updateLocationData: function(location) {\n var that = this, axis = that.axis;\n\n that.location = location[\"page\" + axis];\n that.client = location[\"client\" + axis];\n that.screen = location[\"screen\" + axis];\n }\n });\n\n var Touch = Class.extend({\n init: function(userEvents, target, touchInfo) {\n extend(this, {\n x: new TouchAxis(\"X\", touchInfo.location),\n y: new TouchAxis(\"Y\", touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n },\n\n press: function() {\n this._holdTimeout = setTimeout(this._hold.bind(this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n },\n\n _tap: function(touchInfo) {\n var that = this;\n that.userEvents._clicks++;\n if (that.userEvents._clicks == 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks == 1) {\n that._trigger(TAP, touchInfo);\n }\n else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n },\n\n _hold: function() {\n this._trigger(HOLD, this.pressEvent);\n },\n\n move: function(touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== \"api\" && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) { return; }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n // Event handlers may cancel the drag in the START event handler, hence the double check for pressed.\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n },\n\n end: function(touchInfo) {\n this.endTime = now();\n\n if (this._finished) { return; }\n\n // Mark the object as finished if there are blocking operations in the event handlers (alert/confirm)\n this._finished = true;\n\n this._trigger(RELEASE, touchInfo); // Release should be fired before TAP (as click is after mouseup/touchend)\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n }\n else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n\n this.dispose();\n },\n\n dispose: function() {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches;\n\n this._finished = true;\n this.pressEvent = null;\n clearTimeout(this._holdTimeout);\n\n activeTouches.splice($.inArray(this, activeTouches), 1);\n },\n\n skip: function() {\n this.dispose();\n },\n\n cancel: function() {\n this.dispose();\n },\n\n isMoved: function() {\n return this._moved;\n },\n\n _start: function(touchInfo) {\n clearTimeout(this._holdTimeout);\n\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n },\n\n _trigger: function(name, touchInfo) {\n var that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n },\n\n _withinIgnoreThreshold: function() {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n });\n\n function withEachUpEvent(callback) {\n var downEvents = kendo.eventMap.up.split(\" \"),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx ++) {\n callback(downEvents[idx]);\n }\n }\n\n var UserEvents = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that.eventNS = ns;\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"up cancel\", ns), \"_end\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_start\");\n\n if (that.useClickAsTap) {\n element.on(kendo.applyEventMap(\"click\", ns), filter, \"_click\");\n }\n\n if (support.pointers || support.msPointers) {\n //touch-action:none will not work for IE10\n if (support.browser.version < 11) {\n var defaultAction = \"pinch-zoom double-tap-zoom\";\n element.css(\"-ms-touch-action\", options.touchAction && options.touchAction != \"none\" ? defaultAction + \" \" + options.touchAction : defaultAction);\n } else {\n element.css(\"touch-action\", options.touchAction || \"none\");\n }\n }\n\n if (options.preventDragEvent) {\n element.on(kendo.applyEventMap(\"dragstart\", ns), kendo.preventDefault);\n }\n\n element.on(kendo.applyEventMap(\"mousedown\", ns), filter, { root: element }, \"_select\");\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0],\n preventIfMovingProxy = that.preventIfMoving.bind(that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n },\n\n preventIfMoving: function(e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0];\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n UserEvents.current = this;\n },\n\n cancel: function() {\n this._disposeAll();\n this.trigger(CANCEL);\n },\n\n notify: function(eventName, data) {\n var that = this,\n touches = that.touches;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n }\n\n extend(data, { touches: touches }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n // API\n press: function(x, y, target) {\n this._apiCall(\"_start\", x, y, target);\n },\n\n move: function(x, y) {\n this._apiCall(\"_move\", x, y);\n },\n\n end: function(x, y) {\n this._apiCall(\"_end\", x, y);\n },\n\n _isMultiTouch: function() {\n return this.touches.length > 1;\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _isMoved: function() {\n return $.grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n },\n\n _select: function(e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n UserEvents.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget); // target.is(filter) ? target : target.closest(filter, that.element);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify(\"gesturestart\", {});\n }\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"end\", e);\n },\n\n _click: function(e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: $(e.currentTarget),\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: $(e.currentTarget),\n event: e,\n type: \"tap\"\n };\n\n if (this.trigger(\"tap\", data)) {\n e.preventDefault();\n }\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n },\n\n _apiCall: function(type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: $(target || this.element)[0],\n stopPropagation: $.noop,\n preventDefault: $.noop\n });\n }\n });\n\n var ClickMoveClick = Observable.extend({\n init: function(element, options) {\n var that = this,\n filter,\n ns = kendo.guid();\n\n options = options || {};\n filter = that.filter = options.filter;\n that.touches = [];\n that._maxTouches = 1;\n that.eventNS = ns;\n that._downStarted = 0;\n\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n\n extend(that, {\n element: element,\n // the touch events lock to the element anyway, so no need for the global setting\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(element[0].ownerDocument.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n that.surface.handler(that)\n .on(kendo.applyEventMap(\"move\", ns), \"_move\")\n .on(kendo.applyEventMap(\"cancel up\", ns), \"cancel\");\n\n element.on(kendo.applyEventMap(\"down\", ns), filter, \"_down\")\n .on(kendo.applyEventMap(\"up\", ns), filter, \"_up\");\n\n that.bind([\n START,\n MOVE,\n END,\n HOLD,\n CANCEL,\n SELECT\n ], options);\n },\n\n _down: function(e) {\n if (e.which && e.which > 1) {\n this.cancel();\n } else {\n this._downStarted = new Date().getTime();\n this._downTarget = e.target;\n }\n },\n\n _up: function(e) {\n var currentMilestone = new Date().getTime(),\n currentTarget = e.target;\n\n if ((!e.which || e.which === 1) &&\n currentMilestone < this._downStarted + CLICK_DELAY &&\n currentTarget === this._downTarget) {\n if (this.touches && this.touches.length > 0) {\n this._end(e);\n } else {\n this._start(e);\n }\n\n this._preventCancel = true;\n } else {\n this.cancel();\n }\n\n this._downStarted = 0;\n this._downTarget = null;\n },\n\n destroy: function() {\n var that = this;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData(\"handler\");\n that.surface.removeData(\"handler\");\n that._disposeAll();\n\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n\n capture: function() {\n ClickMoveClick.current = this;\n },\n\n cancel: function() {\n if (this._preventCancel) {\n this._preventCancel = false;\n return;\n } else if (this.touches && this.touches.length > 0) {\n this._disposeAll();\n this.trigger(CANCEL);\n }\n },\n\n notify: function(eventName, data) {\n data.clickMoveClick = true;\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n\n _maxTouchesReached: function() {\n return this.touches.length >= this._maxTouches;\n },\n\n _disposeAll: function() {\n var touches = this.touches;\n\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n\n _start: function(e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if ((which && which > 1) || (that._maxTouchesReached())) {\n return;\n }\n\n ClickMoveClick.current = null;\n\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx ++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = $(touch.currentTarget);\n } else {\n target = that.element;\n }\n\n if (!target.length) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n touch._start(touch);\n }\n },\n\n _move: function(e) {\n this._eachTouch(\"move\", e);\n },\n\n _end: function(e) {\n this._eachTouch(\"move\", e);\n this._eachTouch(\"end\", e);\n },\n\n _eachTouch: function(methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx ++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx ++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch.x.move(touchInfo.location);\n matchingTouch.y.move(touchInfo.location);\n matchingTouch[methodName](touchInfo);\n }\n }\n }\n });\n\n UserEvents.defaultThreshold = function(value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function(value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n kendo.getTouches = getTouches;\n kendo.touchDelta = touchDelta;\n kendo.UserEvents = UserEvents;\n kendo.ClickMoveClick = ClickMoveClick;\n })(window.kendo.jQuery);\n var kendo$N = kendo;\n\n var __meta__$N = {\n id: \"draganddrop\",\n name: \"Drag & drop\",\n category: \"framework\",\n description: \"Drag & drop functionality for any DOM element.\",\n depends: [ \"core\", \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n document = window.document,\n $window = $(window),\n Class = kendo.Class,\n Widget = kendo.ui.Widget,\n Observable = kendo.Observable,\n UserEvents = kendo.UserEvents,\n ClickMoveClick = kendo.ClickMoveClick,\n extend = $.extend,\n getOffset = kendo.getOffset,\n draggables = {},\n dropTargets = {},\n dropAreas = {},\n lastDropTarget,\n elementUnderCursor = kendo.elementUnderCursor,\n KEYUP = \"keyup\",\n CHANGE = \"change\",\n\n // Draggable events\n DRAGSTART = \"dragstart\",\n HOLD = \"hold\",\n DRAG = \"drag\",\n DRAGEND = \"dragend\",\n DRAGCANCEL = \"dragcancel\",\n HINTDESTROYED = \"hintDestroyed\",\n\n // DropTarget events\n DRAGENTER = \"dragenter\",\n DRAGLEAVE = \"dragleave\",\n DROP = \"drop\";\n\n function contains(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n\n function numericCssPropery(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n\n function within(value, range) {\n return Math.min(Math.max(value, range.min), range.max);\n }\n\n function containerBoundaries(container, element) {\n var offset = getOffset(container),\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n minX = offset.left + numericCssPropery(container, \"borderLeftWidth\") + numericCssPropery(container, \"paddingLeft\"),\n minY = offset.top + numericCssPropery(container, \"borderTopWidth\") + numericCssPropery(container, \"paddingTop\"),\n maxX = minX + container.width() - outerWidth(element, true),\n maxY = minY + container.height() - outerHeight(element, true);\n\n return {\n x: { min: minX, max: maxX },\n y: { min: minY, max: maxY }\n };\n }\n\n function checkTarget(target, targets, areas) {\n var theTarget, theFilter, i = 0,\n targetLen = targets && targets.length,\n areaLen = areas && areas.length;\n\n while (target && target.parentNode) {\n for (i = 0; i < targetLen; i ++) {\n theTarget = targets[i];\n if (theTarget.element[0] === target) {\n return { target: theTarget, targetElement: target };\n }\n }\n\n for (i = 0; i < areaLen; i ++) {\n theFilter = areas[i];\n if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\n return { target: theFilter, targetElement: target };\n }\n }\n\n target = target.parentNode;\n }\n\n return undefined$1;\n }\n\n var TapCapture = Observable.extend({\n init: function(element, options) {\n var that = this,\n domElement = element[0];\n\n that.capture = false;\n\n if (domElement.addEventListener) {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.addEventListener(this, that._press.bind(that), true);\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.addEventListener(this, that._release.bind(that), true);\n });\n } else {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.attachEvent(this, that._press.bind(that));\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.attachEvent(this, that._release.bind(that));\n });\n }\n\n Observable.fn.init.call(that);\n\n that.bind([\"press\", \"release\"], options || {});\n },\n\n captureNext: function() {\n this.capture = true;\n },\n\n cancelCapture: function() {\n this.capture = false;\n },\n\n _press: function(e) {\n var that = this;\n that.trigger(\"press\");\n if (that.capture) {\n e.preventDefault();\n }\n },\n\n _release: function(e) {\n var that = this;\n that.trigger(\"release\");\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n });\n\n var PaneDimension = Observable.extend({\n init: function(options) {\n var that = this;\n Observable.fn.init.call(that);\n\n that.forcedEnabled = false;\n\n $.extend(that, options);\n\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = \"offsetWidth\";\n that.scrollSize = \"scrollWidth\";\n that.axis = \"x\";\n } else {\n that.measure = \"offsetHeight\";\n that.scrollSize = \"scrollHeight\";\n that.axis = \"y\";\n }\n },\n\n makeVirtual: function() {\n $.extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n },\n\n virtualSize: function(min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n },\n\n outOfBounds: function(offset) {\n return offset > this.max || offset < this.min;\n },\n\n forceEnabled: function() {\n this.forcedEnabled = true;\n },\n\n getSize: function() {\n return this.container[0][this.measure];\n },\n\n getTotal: function() {\n return this.element[0][this.scrollSize];\n },\n\n rescale: function(scale) {\n this.scale = scale;\n },\n\n update: function(silent) {\n var that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return; // we are not visible.\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n\n that.enabled = that.forcedEnabled || (scaledTotal > size);\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n });\n\n var PaneDimensions = Observable.extend({\n init: function(options) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.x = new PaneDimension(extend({ horizontal: true }, options));\n that.y = new PaneDimension(extend({ horizontal: false }, options));\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n\n that.bind(CHANGE, options);\n },\n\n rescale: function(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n },\n\n centerCoordinates: function() {\n return { x: Math.min(0, -this.x.centerOffset), y: Math.min(0, -this.y.centerOffset) };\n },\n\n refresh: function() {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n });\n\n var PaneAxis = Observable.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Observable.fn.init.call(that);\n },\n\n outOfBounds: function() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n },\n\n dragMove: function(delta) {\n var that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n if ((position < dimension.min && delta < 0) || (position > dimension.max && delta > 0)) {\n delta *= that.resistance;\n }\n\n movable.translateAxis(axis, delta);\n that.trigger(CHANGE, that);\n }\n });\n\n var Pane = Class.extend({\n\n init: function(options) {\n var that = this,\n x,\n y,\n resistance,\n movable;\n\n extend(that, { elastic: true }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: \"x\",\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: \"y\",\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\"press\", \"move\", \"end\", \"gesturestart\", \"gesturechange\"], {\n gesturestart: function(e) {\n that.gesture = e;\n that.offset = that.dimensions.container.offset();\n },\n\n press: function(e) {\n if ($(e.event.target).closest(\"a\").is(\"[data-navigate-on-press=true]\")) {\n e.sender.cancel();\n }\n },\n\n gesturechange: function(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n\n center = e.center,\n\n scaleDelta = e.distance / previousGesture.distance,\n\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n\n if (movable.scale <= minScale && scaleDelta < 1) {\n // Resist shrinking. Instead of shrinking from 1 to 0.5, it will shrink to 0.5 + (1 /* minScale */ - 0.5) * 0.8 = 0.9;\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n e.preventDefault();\n },\n\n move: function(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n\n end: function(e) {\n e.preventDefault();\n }\n });\n }\n });\n\n var TRANSFORM_STYLE = support.transitions.prefix + \"Transform\",\n translate;\n\n\n if (support.hasHW3D) {\n translate = function(x, y, scale) {\n return \"translate3d(\" + x + \"px,\" + y + \"px,0) scale(\" + scale + \")\";\n };\n } else {\n translate = function(x, y, scale) {\n return \"translate(\" + x + \"px,\" + y + \"px) scale(\" + scale + \")\";\n };\n }\n\n var Movable = Observable.extend({\n init: function(element) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.element = $(element);\n that.element[0].style.webkitTransformOrigin = \"left top\";\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n that._saveCoordinates(translate(that.x, that.y, that.scale));\n },\n\n translateAxis: function(axis, by) {\n this[axis] += by;\n this.refresh();\n },\n\n scaleTo: function(scale) {\n this.scale = scale;\n this.refresh();\n },\n\n scaleWith: function(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n },\n\n translate: function(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n },\n\n moveAxis: function(axis, value) {\n this[axis] = value;\n this.refresh();\n },\n\n moveTo: function(coordinates) {\n extend(this, coordinates);\n this.refresh();\n },\n\n refresh: function() {\n var that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates != that.coordinates) {\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n that.element[0].style.position = \"absolute\";\n that.element[0].style.left = that.x + \"px\";\n that.element[0].style.top = that.y + \"px\";\n\n } else {\n that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\n }\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n },\n\n _saveCoordinates: function(coordinates) {\n this.coordinates = coordinates;\n }\n });\n\n function destroyDroppable(collection, widget) {\n var groupName = widget.options.group,\n droppables = collection[groupName],\n i;\n\n Widget.fn.destroy.call(widget);\n\n if (droppables.length > 1) {\n for (i = 0; i < droppables.length; i++) {\n if (droppables[i] == widget) {\n droppables.splice(i, 1);\n break;\n }\n }\n } else {\n droppables.length = 0; // WTF, porting this from the previous destroyGroup\n delete collection[groupName];\n }\n }\n\n var DropTarget = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropTargets)) {\n dropTargets[group] = [ that ];\n } else {\n dropTargets[group].push( that );\n }\n },\n\n events: [\n DRAGENTER,\n DRAGLEAVE,\n DROP\n ],\n\n options: {\n name: \"DropTarget\",\n group: \"default\"\n },\n\n destroy: function() {\n destroyDroppable(dropTargets, this);\n },\n\n _trigger: function(eventName, e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n return that.trigger(eventName, extend({}, e.event, {\n draggable: draggable,\n dropTarget: e.dropTarget\n }));\n }\n },\n\n _over: function(e) {\n this._trigger(DRAGENTER, e);\n },\n\n _out: function(e) {\n this._trigger(DRAGLEAVE, e);\n },\n\n _drop: function(e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n draggable.dropped = !that._trigger(DROP, e);\n }\n }\n });\n\n DropTarget.destroyGroup = function(groupName) {\n var group = dropTargets[groupName] || dropAreas[groupName],\n i;\n\n if (group) {\n for (i = 0; i < group.length; i++) {\n Widget.fn.destroy.call(group[i]);\n }\n\n group.length = 0;\n delete dropTargets[groupName];\n delete dropAreas[groupName];\n }\n };\n\n DropTarget._cache = dropTargets;\n\n var DropTargetArea = DropTarget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropAreas)) {\n dropAreas[group] = [ that ];\n } else {\n dropAreas[group].push( that );\n }\n },\n\n destroy: function() {\n destroyDroppable(dropAreas, this);\n },\n\n options: {\n name: \"DropTargetArea\",\n group: \"default\",\n filter: null\n }\n });\n\n var Draggable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that._activated = false;\n\n if (this.options.clickMoveClick) {\n that.clickMoveClick = new ClickMoveClick(that.element, {\n global: true,\n filter: that.options.filter,\n start: that._startClickMoveClick.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that)\n });\n }\n\n that.userEvents = new UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n threshold: that.options.distance,\n start: that._start.bind(that),\n hold: that._hold.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that),\n select: that._select.bind(that)\n });\n\n if (kendo.support.touch) {\n that.element.find(that.options.filter).css('touch-action', 'none');\n }\n\n that._afterEndHandler = that._afterEnd.bind(that);\n that._captureEscape = that._captureEscape.bind(that);\n },\n\n events: [\n HOLD,\n DRAGSTART,\n DRAG,\n DRAGEND,\n DRAGCANCEL,\n HINTDESTROYED\n ],\n\n options: {\n name: \"Draggable\",\n distance: ( kendo.support.touch ? 0 : 5),\n group: \"default\",\n cursorOffset: null,\n axis: null,\n container: null,\n filter: null,\n ignore: null,\n holdToDrag: false,\n autoScroll: false,\n dropped: false,\n clickMoveClick: false\n },\n\n cancelHold: function() {\n this._activated = false;\n },\n\n _captureEscape: function(e) {\n var that = this;\n\n if (e.keyCode === kendo.keys.ESC) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n this._trigger(DRAGCANCEL, { event: e });\n }\n },\n\n _updateHint: function(e) {\n var that = this,\n coordinates,\n options = that.options,\n boundaries = that.boundaries,\n axis = options.axis,\n cursorOffset = that.options.cursorOffset;\n\n if (cursorOffset) {\n coordinates = { left: e.x.location + cursorOffset.left, top: e.y.location + cursorOffset.top };\n } else {\n if (e.x.delta !== 0 || e.y.delta !== 0) {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n } else {\n that.hintOffset.left = e.x.startLocation + e.x.initialDelta;\n that.hintOffset.top = e.y.startLocation + e.y.initialDelta;\n coordinates = $.extend({}, that.hintOffset);\n }\n }\n\n if (boundaries) {\n coordinates.top = within(coordinates.top, boundaries.y);\n coordinates.left = within(coordinates.left, boundaries.x);\n }\n\n if (axis === \"x\") {\n delete coordinates.top;\n } else if (axis === \"y\") {\n delete coordinates.left;\n }\n\n that.hint.css(coordinates);\n },\n\n _shouldIgnoreTarget: function(target) {\n var ignoreSelector = this.options.ignore;\n return ignoreSelector && $(target).is(ignoreSelector);\n },\n\n _select: function(e) {\n if (!this._shouldIgnoreTarget(e.event.target)) {\n e.preventDefault();\n }\n },\n\n _startClickMoveClick: function(e) {\n this._activated = true;\n\n this._start(e);\n },\n\n _start: function(e) {\n var that = this,\n options = that.options,\n container = options.container ? $(options.container) : null,\n hint = options.hint;\n\n if (this._shouldIgnoreTarget(e.touch.initialTouch) || (options.holdToDrag && !that._activated)) {\n that.userEvents.cancel();\n return;\n }\n\n that.currentTarget = e.target;\n that.currentTargetOffset = getOffset(that.currentTarget);\n\n if (hint) {\n if (that.hint) {\n that.hint.stop(true, true).remove();\n }\n\n that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\n\n var offset = getOffset(that.currentTarget);\n that.hintOffset = offset;\n\n that.hint.css( {\n position: \"absolute\",\n zIndex: 20000, // the Window's z-index is 10000 and can be raised because of z-stacking\n left: offset.left,\n top: offset.top\n })\n .appendTo(document.body);\n\n that.angular(\"compile\", function() {\n that.hint.removeAttr(\"ng-repeat\");\n var scopeTarget = $(e.target);\n\n while (!scopeTarget.data(\"$$kendoScope\") && scopeTarget.length) {\n scopeTarget = scopeTarget.parent();\n }\n\n return {\n elements: that.hint.get(),\n scopeFrom: scopeTarget.data(\"$$kendoScope\")\n };\n });\n }\n\n draggables[options.group] = that;\n\n that.dropped = false;\n\n if (container) {\n that.boundaries = containerBoundaries(container, that.hint);\n }\n\n $(document).on(KEYUP, that._captureEscape);\n\n if (that._trigger(DRAGSTART, e)) {\n that.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n that._afterEnd();\n }\n\n that.userEvents.capture();\n },\n\n _hold: function(e) {\n this.currentTarget = e.target;\n\n if (this._trigger(HOLD, e)) {\n this.userEvents.cancel();\n } else {\n this._activated = true;\n }\n },\n\n _drag: function(e) {\n e.preventDefault();\n\n var cursorElement = this._elementUnderCursor(e);\n\n if (this.options.autoScroll && this._cursorElement !== cursorElement) {\n this._scrollableParent = findScrollableParent(cursorElement);\n this._cursorElement = cursorElement;\n }\n\n this._lastEvent = e;\n this._processMovement(e, cursorElement);\n\n if (this.options.autoScroll) {\n // chrome seems to trigger mousemove when mouse is moved outside of the window (over the Chrome), too.\n if (this._scrollableParent[0]) {\n var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\n\n\n this._scrollCompenstation = $.extend({}, this.hintOffset);\n this._scrollVelocity = velocity;\n\n if (velocity.y === 0 && velocity.x === 0) {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n } else if (!this._scrollInterval) {\n this._scrollInterval = setInterval(this._autoScroll.bind(this), 50);\n }\n }\n }\n\n if (this.hint) {\n this._updateHint(e);\n }\n },\n\n _processMovement: function(e, cursorElement) {\n this._withDropTarget(cursorElement, function(target, targetElement) {\n if (!target) {\n if (lastDropTarget) {\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n lastDropTarget = null;\n }\n return;\n }\n\n if (lastDropTarget) {\n if (targetElement === lastDropTarget.targetElement) {\n return;\n }\n\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n }\n\n target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\n lastDropTarget = extend(target, { targetElement: targetElement });\n });\n\n this._trigger(DRAG, extend(e, { dropTarget: lastDropTarget, elementUnderCursor: cursorElement }));\n },\n\n _autoScroll: function() {\n var parent = this._scrollableParent[0],\n velocity = this._scrollVelocity,\n compensation = this._scrollCompenstation;\n\n if (!parent) {\n return;\n }\n\n var cursorElement = this._elementUnderCursor(this._lastEvent);\n this._processMovement(this._lastEvent, cursorElement);\n\n var yIsScrollable, xIsScrollable;\n\n var isRootNode = parent === scrollableRoot()[0];\n\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > $window.height();\n xIsScrollable = document.body.scrollWidth > $window.width();\n } else {\n yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n }\n\n var yDelta = parent.scrollTop + velocity.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\n\n var xDelta = parent.scrollLeft + velocity.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\n\n if (yInBounds) {\n parent.scrollTop += velocity.y;\n } else if (yIsScrollable && yDelta < 0) {\n parent.scrollTop = 0;\n }\n\n if (xInBounds) {\n parent.scrollLeft += velocity.x;\n } else if (xIsScrollable && xDelta < 0) {\n parent.scrollLeft = 0;\n }\n\n if (this.hint && isRootNode && (xInBounds || yInBounds)) {\n if (yInBounds) {\n compensation.top += velocity.y;\n }\n\n if (xInBounds) {\n compensation.left += velocity.x;\n }\n\n this.hint.css(compensation);\n }\n },\n\n _end: function(e) {\n this._withDropTarget(this._elementUnderCursor(e), function(target, targetElement) {\n if (target) {\n target._drop(extend({}, e, { dropTarget: $(targetElement) }));\n lastDropTarget = null;\n }\n });\n\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n this._cancel(this._trigger(DRAGEND, e));\n },\n\n _onCancel: function(e) {\n this._cancel();\n this._trigger(DRAGCANCEL, { event: e });\n },\n\n _cancel: function(isDefaultPrevented) {\n var that = this;\n\n that._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that._activated = false;\n\n if (that.hint && !that.dropped) {\n setTimeout(function() {\n that.hint.stop(true, true);\n\n if (isDefaultPrevented) {\n that._afterEndHandler();\n } else {\n that.hint.animate(that.currentTargetOffset, \"fast\", that._afterEndHandler);\n }\n }, 0);\n } else {\n that._afterEnd();\n }\n },\n\n _trigger: function(eventName, e) {\n var that = this;\n\n return that.trigger(\n eventName, extend(\n {},\n e.event,\n {\n x: e.x,\n y: e.y,\n currentTarget: that.currentTarget,\n initialTarget: e.touch ? e.touch.initialTouch : null,\n dropTarget: e.dropTarget,\n elementUnderCursor: e.elementUnderCursor,\n clickMoveClick: e.clickMoveClick\n }\n ));\n },\n\n _elementUnderCursor: function(e) {\n var target = elementUnderCursor(e),\n hint = this.hint;\n\n if (hint && contains(hint[0], target)) {\n hint.hide();\n target = elementUnderCursor(e);\n // IE8 does not return the element in iframe from first attempt\n if (!target) {\n target = elementUnderCursor(e);\n }\n hint.show();\n }\n\n return target;\n },\n\n _withDropTarget: function(element, callback) {\n var result,\n group = this.options.group,\n targets = dropTargets[group],\n areas = dropAreas[group];\n\n if (targets && targets.length || areas && areas.length) {\n result = checkTarget(element, targets, areas);\n\n if (result) {\n callback(result.target, result.targetElement);\n } else {\n callback();\n }\n }\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that._afterEnd();\n\n that.userEvents.destroy();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.destroy();\n }\n\n this._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n\n that.currentTarget = null;\n },\n\n _afterEnd: function() {\n var that = this;\n\n if (that.hint) {\n that.hint.remove();\n }\n\n delete draggables[that.options.group];\n\n that.trigger(\"destroy\");\n that.trigger(HINTDESTROYED);\n $(document).off(KEYUP, that._captureEscape);\n }\n });\n\n kendo.ui.plugin(DropTarget);\n kendo.ui.plugin(DropTargetArea);\n kendo.ui.plugin(Draggable);\n kendo.TapCapture = TapCapture;\n kendo.containerBoundaries = containerBoundaries;\n\n extend(kendo.ui, {\n Pane: Pane,\n PaneDimensions: PaneDimensions,\n Movable: Movable\n });\n\n function scrollableViewPort(element) {\n var root = scrollableRoot()[0],\n offset,\n top,\n left;\n\n if (element[0] === root) {\n top = root.scrollTop;\n left = root.scrollLeft;\n\n return {\n top: top,\n left: left,\n bottom: top + $window.height(),\n right: left + $window.width()\n };\n } else {\n offset = element.offset();\n offset.bottom = offset.top + element.height();\n offset.right = offset.left + element.width();\n return offset;\n }\n }\n\n function scrollableRoot() {\n return $(kendo.support.browser.edge || kendo.support.browser.safari ? document.body : document.documentElement);\n }\n\n function findScrollableParent(element) {\n var root = scrollableRoot();\n\n if (!element || element === document.body || element === document.documentElement) {\n return root;\n }\n\n var parent = $(element)[0];\n\n while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\n parent = parent.parentNode;\n }\n\n if (parent === document.body) {\n return root;\n }\n\n return $(parent);\n }\n\n function autoScrollVelocity(mouseX, mouseY, rect) {\n var velocity = { x: 0, y: 0 };\n\n var AUTO_SCROLL_AREA = 50;\n\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n\n return velocity;\n }\n\n // export for testing\n kendo.ui.Draggable.utils = {\n autoScrollVelocity: autoScrollVelocity,\n scrollableViewPort: scrollableViewPort,\n findScrollableParent: findScrollableParent\n };\n\n })(window.kendo.jQuery);\n var kendo$M = kendo;\n\n var __meta__$M = {\n id: \"mobile.scroller\",\n name: \"Scroller\",\n category: \"mobile\",\n description: \"The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.\",\n depends: [ \"fx\", \"draganddrop\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n mobile = kendo.mobile,\n fx = kendo.effects,\n ui = mobile.ui,\n extend = $.extend,\n Widget = ui.Widget,\n Class = kendo.Class,\n Movable = kendo.ui.Movable,\n Pane = kendo.ui.Pane,\n PaneDimensions = kendo.ui.PaneDimensions,\n Transition = fx.Transition,\n Animation = fx.Animation,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n RELEASECLASS = \"km-scroller-release\",\n REFRESHCLASS = \"km-scroller-refresh\",\n PULL = \"pull\",\n CHANGE = \"change\",\n RESIZE = \"resize\",\n SCROLL = \"scroll\",\n MOUSE_WHEEL_ID = 2;\n\n var ZoomSnapBack = Animation.extend({\n init: function(options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.tapCapture.bind(\"press\", that.cancel.bind(that));\n },\n\n enabled: function() {\n return this.movable.scale < this.dimensions.minScale;\n },\n\n done: function() {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n\n tick: function() {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n\n onEnd: function() {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n\n var DragInertia = Animation.extend({\n init: function(options) {\n var that = this;\n\n Animation.fn.init.call(that);\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function() { that._end(); }\n })\n });\n\n that.tapCapture.bind(\"press\", function() { that.cancel(); });\n that.userEvents.bind(\"end\", that.start.bind(that));\n that.userEvents.bind(\"gestureend\", that.start.bind(that));\n that.userEvents.bind(\"tap\", that.onEnd.bind(that));\n },\n\n onCancel: function() {\n this.transition.cancel();\n },\n\n freeze: function(location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n\n onEnd: function() {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n\n done: function() {\n return abs(this.velocity) < 1;\n },\n\n start: function(e) {\n var that = this,\n velocity;\n\n if (!that.dimension.enabled) { return; }\n\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n\n Animation.fn.start.call(that);\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n\n tick: function() {\n var that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = (that.velocity *= friction),\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n },\n\n _end: function() {\n this.tapCapture.cancelCapture();\n this.end();\n },\n\n _snapBack: function() {\n var that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n\n _moveTo: function(location) {\n this.transition.moveTo({ location: location, duration: SNAPBACK_DURATION, ease: Transition.easeOutExpo });\n }\n });\n\n var AnimatedScroller = Animation.extend({\n init: function(options) {\n var that = this;\n\n kendo.effects.Animation.fn.init.call(this);\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n\n tick: function() {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n\n done: function() {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n\n onEnd: function() {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n\n setCoordinates: function(from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n\n setCallback: function(callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined$1;\n }\n },\n\n _updateCoordinates: function() {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n\n var ScrollBar = Class.extend({\n init: function(options) {\n var that = this,\n horizontal = options.axis === \"x\",\n element = $('
    ');\n\n if (horizontal) {\n element.attr(\"aria-orientation\", \"horizontal\");\n }\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? \"width\" : \"height\"\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n\n refresh: function() {\n var that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n\n if (sizeRatio >= 1) {\n this.element.css(\"display\", \"none\");\n } else {\n this.element.css(\"display\", \"\");\n }\n\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n\n if (that.elementSize != size) {\n that.element.css(that.size, size + \"px\");\n that.elementSize = size;\n }\n\n that._ariaValue(position, dimension.size - that.elementSize);\n\n that.movable.moveAxis(axis, position);\n },\n\n show: function() {\n this.element.css({ opacity: SCROLLBAR_OPACITY, visibility: \"visible\" });\n },\n\n hide: function() {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n },\n\n _ariaValue: function(current, total) {\n var element = this.element;\n\n if (current > total) {\n current = total;\n }\n\n element.attr(\"aria-valuemax\", total);\n element.attr(\"aria-valuenow\", current);\n }\n });\n\n var Scroller = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass(\"km-native-scroller\")\n .prepend('
    ');\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n\n return;\n }\n\n element\n .css(\"overflow\", \"hidden\")\n .addClass(\"km-scroll-wrapper\")\n .wrapInner('
    ')\n .prepend('
    ');\n\n var inner = element.children().eq(1),\n\n tapCapture = new kendo.TapCapture(element),\n\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new kendo.UserEvents(element, {\n touchAction: \"pan-y\",\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function(e) {\n dimensions.refresh();\n\n var velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n\n\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo: function(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = - movable.y;\n that.scrollLeft = - movable.x;\n\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n element.on(\"DOMMouseScroll mousewheel\", this._wheelScroll.bind(this));\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children().first()\n });\n\n that._initAxis(\"x\");\n that._initAxis(\"y\");\n\n // build closure\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n\n _wheelScroll: function(e) {\n if (e.ctrlKey) {\n return;\n }\n\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n\n var delta = kendo.wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n },\n\n makeVirtual: function() {\n this.dimensions.y.makeVirtual();\n },\n\n virtualSize: function(min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n\n height: function() {\n return this.dimensions.y.size;\n },\n\n scrollHeight: function() {\n return this.scrollElement[0].scrollHeight;\n },\n\n scrollWidth: function() {\n return this.scrollElement[0].scrollWidth;\n },\n\n options: {\n name: \"Scroller\",\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function() { return false; },\n pullToRefresh: false,\n messages: {\n pullTemplate: \"Pull to refresh\",\n releaseTemplate: \"Release to refresh\",\n refreshTemplate: \"Refreshing\"\n }\n },\n\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n\n _resize: function() {\n if (!this._native) {\n this.contentResized();\n }\n },\n\n setOptions: function(options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n\n reset: function() {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({ x: 0, y: 0 });\n this._scale(1);\n }\n },\n\n contentResized: function() {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis(\"x\", this.dimensions.x.min);\n }\n\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis(\"y\", this.dimensions.y.min);\n }\n },\n\n zoomOut: function() {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n\n enable: function() {\n this.enabled = true;\n },\n\n disable: function() {\n this.enabled = false;\n },\n\n scrollTo: function(x, y) {\n if (this._native) {\n kendo.scrollLeft(this.scrollElement, abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({ x: x, y: y });\n }\n },\n\n animatedScrollTo: function(x, y, callback) {\n var from,\n to;\n\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = { x: this.movable.x, y: this.movable.y };\n to = { x: x, y: y };\n\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n\n pullHandled: function() {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n\n _scale: function(scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n\n _initPullToRefresh: function() {\n var that = this;\n\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n\n that.scrollElement.prepend('' + that.pullTemplate({}) + '');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children(\".km-template\");\n\n that.pane.y.bind(\"change\", that._paneChange.bind(that));\n that.userEvents.bind(\"end\", that._dragEnd.bind(that));\n },\n\n _dragEnd: function() {\n var that = this;\n\n if (!that.pulled) {\n return;\n }\n\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger(\"pull\");\n },\n\n _paneChange: function() {\n var that = this;\n\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n\n _initAxis: function(axis) {\n var that = this,\n elementId = that.element.attr(\"id\"),\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar;\n\n if (!elementId) {\n elementId = kendo.guid();\n that.element.attr(\"id\", elementId);\n }\n\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints,\n controlsId: elementId\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + \"inertia\"] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function() {\n scrollBar.hide();\n that.trigger(\"scrollEnd\", {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n\n ui.plugin(Scroller);\n })(window.kendo.jQuery);\n var kendo$L = kendo;\n\n var __meta__$L = {\n id: \"popup\",\n name: \"Pop-up\",\n category: \"framework\",\n depends: [ \"core\" ],\n advanced: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n Class = kendo.Class,\n support = kendo.support,\n getOffset = kendo.getOffset,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n OPEN = \"open\",\n CLOSE = \"close\",\n DEACTIVATE = \"deactivate\",\n ACTIVATE = \"activate\",\n CENTER = \"center\",\n LEFT = \"left\",\n RIGHT = \"right\",\n TOP = \"top\",\n BOTTOM = \"bottom\",\n ABSOLUTE = \"absolute\",\n HIDDEN = \"hidden\",\n BODY = \"body\",\n LOCATION = \"location\",\n POSITION = \"position\",\n VISIBLE = \"visible\",\n EFFECTS = \"effects\",\n ACTIVE = \"k-active\",\n ACTIVEBORDER = \"k-state-border\",\n ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/,\n ACTIVECHILDREN = \".k-picker-wrap, .k-dropdown-wrap, .k-link\",\n MOUSEDOWN = \"down\",\n DOCUMENT_ELEMENT = $(document.documentElement),\n WINDOW = $(window),\n SCROLL = \"scroll\",\n cssPrefix = support.transitions.css,\n TRANSFORM = cssPrefix + \"transform\",\n extend = $.extend,\n NS = \".kendoPopup\",\n styles = [\"font-size\",\n \"font-family\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"line-height\"];\n\n function contains(container, target) {\n if (!container || !target) {\n return false;\n }\n return container === target || $.contains(container, target);\n }\n\n var Popup = Widget.extend({\n init: function(element, options) {\n var that = this, parentPopup;\n\n options = options || {};\n\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + \" \" + RIGHT;\n options.position = options.position || TOP + \" \" + RIGHT;\n }\n\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n that.collisions = options.collision ? options.collision.split(\" \") : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n\n parentPopup = $(that.options.anchor).closest(\".k-popup,.k-group\").filter(\":not([class^=km-])\"); // When popup is in another popup, make it relative.\n\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || document.body);\n\n that.element.hide()\n .addClass(\"k-popup\")\n .toggleClass(\"k-rtl\", !!options.isRtl)\n .appendTo(options.appendTo)\n .attr(\"aria-hidden\", true)\n .on(\"mouseenter\" + NS, function() {\n that._hovered = true;\n })\n .on(\"wheel\" + NS, function(e) {\n var list = $(e.target).find(\".k-list\");\n var scrollArea = list.parent();\n if (list.length && list.is(\":visible\") && ((scrollArea.scrollTop() === 0 && e.originalEvent.deltaY < 0) ||\n (scrollArea.scrollTop() === scrollArea.prop('scrollHeight') - scrollArea.prop('offsetHeight') && e.originalEvent.deltaY > 0))) {\n e.preventDefault();\n }\n })\n .on(\"mouseleave\" + NS, function() {\n that._hovered = false;\n });\n\n that.wrapper = $();\n\n if (options.animation === false) {\n options.animation = { open: { effects: {} }, close: { hide: true, effects: {} } };\n }\n\n extend(options.animation.open, {\n complete: function() {\n that.wrapper.addClass(\"k-animation-container-shown\"); // Forcing refresh causes flickering in mobile.\n that.wrapper.css(\"overflow\",\"\");\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n\n extend(options.animation.close, {\n complete: function() {\n that._animationClose();\n }\n });\n\n that._mousedownProxy = function(e) {\n that._mousedown(e);\n };\n\n if (support.mobileOS.android) {\n that._resizeProxy = function(e) {\n setTimeout(function() {\n that._resize(e);\n }, 600); //Logic from kendo.onResize\n };\n } else {\n that._resizeProxy = function(e) {\n that._resize(e);\n };\n }\n\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, that.toggle.bind(that));\n }\n },\n\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n\n options: {\n name: \"Popup\",\n toggleEvent: \"click\",\n origin: BOTTOM + \" \" + LEFT,\n position: TOP + \" \" + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: \"flip fit\",\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: \"slideIn:down\",\n transition: true,\n duration: 200\n },\n close: { // if close animation effects are defined, they will be used instead of open.reverse\n duration: 100,\n hide: true\n }\n },\n omitOriginOffsets: false\n },\n\n _animationClose: function() {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n\n that.wrapper.hide();\n\n if (location) {\n that.wrapper.css(location);\n }\n\n if (that.options.anchor != BODY) {\n that._hideDirClass();\n }\n\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n\n destroy: function() {\n var that = this,\n options = that.options,\n element = that.element.off(NS),\n parent;\n\n Widget.fn.destroy.call(that);\n\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n\n kendo.destroy(that.element.children());\n element.removeData();\n\n if (options.appendTo[0] === document.body) {\n parent = element.closest(\".k-animation-container\");\n\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n\n open: function(x, y) {\n var that = this,\n fixed = { isFixed: !isNaN(parseInt(y,10)), x: x, y: y },\n element = that.element,\n options = that.options,\n animation, wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\"),\n listbox = element.find(\"[role='listbox']\"),\n parent;\n\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n if (that.element.parent().data(\"animating\") || that._trigger(OPEN)) {\n return;\n }\n\n that._activated = false;\n\n if (!options.modal) {\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy)\n .on(that.downEvent, that._mousedownProxy);\n\n // this binding hangs iOS in editor\n // all elements in IE7/8 fire resize event, causing mayhem\n that._toggleResize(false);\n that._toggleResize(true);\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize, options._resizeOnWrap)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n })\n .attr(\"aria-hidden\", false);\n\n parent = element.parent();\n\n if (listbox.attr(\"aria-label\")) {\n wrapper.attr(\"aria-label\", listbox.attr(\"aria-label\"));\n } else if (listbox.attr(\"aria-labelledby\")) {\n wrapper.attr(\"aria-labelledby\", listbox.attr(\"aria-labelledby\"));\n }\n\n if (support.mobileOS.android) {\n parent.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n\n if (options.anchor != BODY && !that.element.hasClass(\"k-tooltip\")) {\n that._showDirClass(animation);\n }\n\n parent.hide();\n element.show();\n that.wrapper.show();\n\n parent.data(EFFECTS, animation.effects)\n .kendoStop(true)\n .kendoAnimate(animation);\n\n\n element.attr(\"aria-hidden\", false);\n }\n },\n\n _location: function(isFixed) {\n var that = this,\n element = that.element,\n options = that.options,\n wrapper,\n anchor = $(options.anchor),\n mobile = element[0] && element.hasClass(\"km-widget\");\n\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == \"font-size\") {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n\n that.wrapper = wrapper = kendo.wrap(element, options.autosize)\n .css({\n overflow: HIDDEN,\n display: \"block\",\n position: ABSOLUTE\n });\n\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, \"translatez(0)\"); // Android is VERY slow otherwise. Should be tested in other droids as well since it may cause blur.\n }\n\n wrapper.css(POSITION);\n\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, \"-10000px\");\n }\n\n that._position(isFixed || {});\n\n var offset = wrapper.offset();\n return {\n width: kendo._outerWidth(wrapper),\n height: kendo._outerHeight(wrapper),\n left: offset.left,\n top: offset.top\n };\n },\n\n _openAnimation: function() {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n\n return animation;\n },\n\n _hideDirClass: function() {\n var anchor = $(this.options.anchor);\n var direction = ((anchor.attr(\"class\") || \"\").match(ACTIVEBORDERREGEXP) || [\"\", \"down\"])[1];\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n anchor\n .removeClass(dirClass)\n .children(ACTIVECHILDREN)\n .removeClass(ACTIVE)\n .removeClass(dirClass);\n\n this.element.removeClass(ACTIVEBORDER + \"-\" + kendo.directions[direction].reverse);\n },\n\n _showDirClass: function(animation) {\n var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : \"down\";\n var dirClass = ACTIVEBORDER + \"-\" + direction;\n\n $(this.options.anchor)\n .addClass(dirClass)\n .children(ACTIVECHILDREN)\n .addClass(ACTIVE)\n .addClass(dirClass);\n },\n\n position: function() {\n if (this.visible()) {\n this.flipped = this._position();\n //this._hideDirClass();\n //this._showDirClass(this._openAnimation());\n }\n },\n\n toggle: function() {\n var that = this;\n\n that[that.visible() ? CLOSE : OPEN]();\n },\n\n visible: function() {\n return this.wrapper.is(\":\" + VISIBLE) && this.element.is(\":\" + VISIBLE);\n },\n\n close: function(skipEffects) {\n var that = this,\n parent = that.element.parent(),\n options = that.options, wrap,\n animation, openEffects, closeEffects;\n\n if (that.visible()) {\n wrap = (that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide());\n\n that.wrapper.removeClass(\"k-animation-container-shown\");\n that._toggleResize(false);\n\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n\n // Close all inclusive popups.\n that.element.find(\".k-popup\").each(function() {\n var that = $(this),\n popup = that.data(\"kendoPopup\");\n\n if (popup) {\n popup.close(skipEffects);\n }\n });\n\n DOCUMENT_ELEMENT.off(that.downEvent, that._mousedownProxy);\n\n if (skipEffects) {\n animation = { hide: true, effects: {} };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = parent.data(EFFECTS);\n closeEffects = animation.effects;\n\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n\n that._closing = true;\n }\n\n parent.kendoStop(true);\n that.element.attr(\"aria-hidden\", true);\n wrap\n .css({ overflow: HIDDEN }) // stop callback will remove hidden overflow\n .attr(\"aria-hidden\", true);\n parent.kendoAnimate(animation);\n\n if (skipEffects) {\n that._animationClose();\n }\n }\n },\n\n _trigger: function(ev) {\n return this.trigger(ev, { type: ev });\n },\n\n _resize: function(e) {\n var that = this;\n\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function() {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || (that._activated && that.element.find(\".k-list\").length > 0)) {\n that.close();\n }\n }\n },\n\n _toggleResize: function(toggle) {\n var method = toggle ? \"on\" : \"off\";\n var eventNames = support.resize;\n\n if (!(support.mobileOS.ios || support.mobileOS.android || support.browser.safari)) {\n eventNames += \" \" + SCROLL;\n }\n\n if (toggle && !this.scrollableParents) {\n this.scrollableParents = this._scrollableParents();\n }\n\n if (this.scrollableParents && this.scrollableParents.length) {\n this.scrollableParents[method](SCROLL, this._resizeProxy);\n }\n\n WINDOW[method](eventNames, this._resizeProxy);\n },\n\n _mousedown: function(e) {\n var that = this,\n container = that.element[0],\n options = that.options,\n anchor = $(options.anchor)[0],\n toggleTarget = options.toggleTarget,\n target = kendo.eventTarget(e),\n popup = $(target).closest(\".k-popup\"),\n mobile = popup.parent().parent(\".km-shim\").length;\n\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n\n // This MAY result in popup not closing in certain cases.\n if ($(e.target).closest(\"a\").data(\"rel\") === \"popover\") {\n return;\n }\n\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n\n _fit: function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n },\n\n _flip: function(offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n\n _scrollableParents: function() {\n return $(this.options.anchor)\n .parentsUntil(\"body\")\n .filter(function(index, element) {\n return kendo.isScrollable(element);\n });\n },\n\n _position: function(fixed) {\n var that = this,\n //element = that.element.css(POSITION, \"\"), /* fixes telerik/kendo-ui-core#790, comes from telerik/kendo#615 */\n element = that.element,\n wrapper = that.wrapper,\n options = that.options,\n viewport = $(options.viewport),\n zoomLevel = support.zoomLevel(),\n isWindow = !!((viewport[0] == window) && window.innerWidth && (zoomLevel <= 1.02)),\n anchor = $(options.anchor),\n origins = options.origin.toLowerCase().split(\" \"),\n positions = options.position.toLowerCase().split(\" \"),\n collisions = that.collisions,\n siblingContainer, parents,\n parentZIndex, zIndex = 10002,\n idx = 0,\n docEl = document.documentElement,\n length, viewportOffset, viewportWidth, viewportHeight;\n\n if (options.viewport === window) {\n viewportOffset = {\n top: (window.pageYOffset || document.documentElement.scrollTop || 0),\n left: (window.pageXOffset || document.documentElement.scrollLeft || 0)\n };\n } else {\n viewportOffset = viewport.offset();\n }\n\n if (isWindow) {\n viewportWidth = window.innerWidth;\n viewportHeight = window.innerHeight;\n } else {\n viewportWidth = viewport.width();\n viewportHeight = viewport.height();\n }\n\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n var sign = options.isRtl ? -1 : 1;\n\n viewportWidth -= sign * kendo.support.scrollbar();\n }\n\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css(\"zIndex\")), 0);\n\n // set z-index to be more than that of the container/sibling\n // compensate with more units for window z-stack\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css(\"zIndex\"));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n\n wrapper.css(\"zIndex\", zIndex);\n\n if (fixed && fixed.isFixed) {\n wrapper.css({ left: fixed.x, top: fixed.y });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]),\n offset = getOffset(wrapper),\n anchorParent = anchor.offsetParent().parent(\".k-animation-container,.k-popup,.k-group\"); // If the parent is positioned, get the current positions\n\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n\n if (!that.wrapper.data(LOCATION)) { // Needed to reset the popup location after every closure - fixes the resize bugs.\n wrapper.data(LOCATION, extend({}, pos));\n }\n\n var offsets = extend({}, offset),\n location = extend({}, pos),\n adjustSize = options.adjustSize;\n\n if (collisions[0] === \"fit\") {\n location.top += that._fit(offsets.top, outerHeight(wrapper) + adjustSize.height, viewportHeight / zoomLevel);\n }\n\n if (collisions[1] === \"fit\") {\n location.left += that._fit(offsets.left, outerWidth(wrapper) + adjustSize.width, viewportWidth / zoomLevel);\n }\n\n var flipPos = extend({}, location);\n var elementHeight = outerHeight(element);\n var wrapperHeight = outerHeight(wrapper);\n\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n\n if (collisions[0] === \"flip\") {\n location.top += that._flip(offsets.top, elementHeight, outerHeight(anchor), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n\n if (collisions[1] === \"flip\") {\n location.left += that._flip(offsets.left, outerWidth(element), outerWidth(anchor), viewportWidth / zoomLevel, origins[1], positions[1], outerWidth(wrapper));\n }\n\n wrapper.css(location);\n\n return (location.left != flipPos.left || location.top != flipPos.top);\n },\n\n _align: function(origin, position) {\n var that = this,\n element = that.wrapper,\n anchor = $(that.options.anchor),\n verticalOrigin = origin[0],\n horizontalOrigin = origin[1],\n verticalPosition = position[0],\n horizontalPosition = position[1],\n anchorOffset = getOffset(anchor),\n appendTo = $(that.options.appendTo),\n appendToOffset,\n width = outerWidth(element),\n height = outerHeight(element) || outerHeight(element.find(\".k-child-animation-container\").children().first()),\n anchorWidth = outerWidth(anchor),\n anchorHeight = outerHeight(anchor),\n top = that.options.omitOriginOffsets ? 0 : anchorOffset.top,\n left = that.options.omitOriginOffsets ? 0 : anchorOffset.left,\n round = Math.round;\n\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n\n\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n\n return {\n top: top,\n left: left\n };\n }\n });\n\n ui.plugin(Popup);\n\n var stableSort = kendo.support.stableSort;\n var tabKeyTrapNS = \"kendoTabKeyTrap\";\n var focusableNodesSelector = \"a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex], *[contenteditable]\";\n var TabKeyTrap = Class.extend({\n init: function(element, options) {\n this.element = $(element);\n this.element.autoApplyNS(tabKeyTrapNS);\n },\n\n trap: function() {\n this.element.on(\"keydown\", this._keepInTrap.bind(this));\n },\n\n removeTrap: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n },\n\n destroy: function() {\n this.element.kendoDestroy(tabKeyTrapNS);\n this.element = undefined$1;\n },\n\n shouldTrap: function() {\n return true;\n },\n\n _keepInTrap: function(e) {\n if (e.which !== 9 || !this.shouldTrap() || e.isDefaultPrevented()) {\n return;\n }\n\n var elements = this._focusableElements();\n var sortedElements = this._sortFocusableElements(elements);\n var next = this._nextFocusable(e, sortedElements);\n\n if (next) {\n this._focus(next);\n }\n\n e.preventDefault();\n },\n _focusableElements: function() {\n var elements = this.element.find(focusableNodesSelector).filter(function(i, item) {\n return item.tabIndex >= 0 && $(item).is(':visible') && !$(item).is('[disabled]');\n });\n\n if (this.element.is(\"[tabindex]\")) {\n elements.push(this.element[0]);\n }\n\n return elements;\n },\n _sortFocusableElements: function(elements) {\n var sortedElements;\n\n if (stableSort) {\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex - next.tabIndex;\n });\n } else {\n var attrName = \"__k_index\";\n elements.each(function(i, item) {\n item.setAttribute(attrName, i);\n });\n\n sortedElements = elements.sort(function(prev, next) {\n return prev.tabIndex === next.tabIndex ?\n parseInt(prev.getAttribute(attrName), 10) - parseInt(next.getAttribute(attrName), 10) :\n prev.tabIndex - next.tabIndex;\n });\n\n elements.removeAttr(attrName);\n }\n\n return sortedElements;\n },\n _nextFocusable: function(e, elements) {\n var count = elements.length;\n var current = elements.index(e.target);\n\n return elements.get((current + (e.shiftKey ? -1 : 1)) % count);\n },\n _focus: function(element) {\n if (element.nodeName == \"IFRAME\") {\n element.contentWindow.document.body.focus();\n return;\n }\n\n element.focus();\n\n if (element.nodeName == \"INPUT\" && element.setSelectionRange && this._haveSelectionRange(element)) {\n element.setSelectionRange(0, element.value.length);\n }\n },\n _haveSelectionRange: function(element) {\n var elementType = element.type.toLowerCase();\n\n return elementType === \"text\" || elementType === \"search\" ||\n elementType === \"url\" || elementType === \"tel\" ||\n elementType === \"password\";\n }\n });\n ui.Popup.TabKeyTrap = TabKeyTrap;\n })(window.kendo.jQuery);\n var kendo$K = kendo;\n\n var __meta__$K = {\n id: \"html.base\",\n name: \"Html.Base\",\n category: \"web\",\n description: \"\",\n depends: [\"core\"],\n features: []\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Class = kendo.Class;\n\n kendo.html = kendo.html || {};\n\n var HTMLBase = Class.extend({\n init: function(element, options) {\n var that = this;\n that.element = $(element);\n options = options || {};\n delete options.name;\n that._initOptions(options);\n },\n options: {\n stylingOptions: []\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n var validFill;\n\n if (option === \"themeColor\") {\n validFill = kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: \"fillMode\",\n value: options.fillMode\n });\n\n if (!validFill || validFill.length === 0) {\n return \"\";\n }\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions);\n that.wrapper.addClass(stylingOptions.join(\" \"));\n },\n html: function() {\n var that = this;\n\n return that.wrapper[0].outerHTML;\n }\n });\n\n $.extend(kendo.html, {\n HTMLBase: HTMLBase\n });\n\n })(window.kendo.jQuery);\n var kendo$J = kendo;\n\n var __meta__$J = {\n id: \"html.icon\",\n name: \"Html.Icon\",\n category: \"web\",\n description: \"HTML font icon rendering utility for Kendo UI for jQuery.\",\n depends: [\"html.base\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n HTMLBase = kendo.html.HTMLBase;\n\n var KICON = 'k-icon';\n var KI_PREFFIX = 'k-i-';\n var KSVGICON = 'k-svg-icon';\n var KSVG_PREFFIX = 'k-svg-i-';\n\n var FLIP_PREFIX = 'k-flip-';\n var FLIP_HORIZONTAL = FLIP_PREFIX + \"h\";\n var FLIP_VERTICAL = FLIP_PREFIX + \"v\";\n\n var THEME_COLOR_PREFIX = 'k-color-';\n\n var ICON_TYPES = {\n 'svg': function (element, options) { return new HTMLSvgIcon(element, options); },\n 'font': function (element, options) { return new HTMLFontIcon(element, options); }\n };\n\n var FLIP_CLASSES = {\n default: '',\n horizontal: FLIP_HORIZONTAL,\n vertical: FLIP_VERTICAL,\n both: (FLIP_HORIZONTAL + \" \" + FLIP_VERTICAL)\n };\n\n var renderIcon = function(element, options) {\n if (!element || $.isPlainObject(element) || kendo.isString(element)) {\n options = element;\n element = $(\"\");\n }\n\n if (kendo.isString(options)) {\n options = {\n icon: options\n };\n }\n\n if (!kendo.isPresent(options.type)) {\n options.type = kendo.defaults.iconType ? kendo.defaults.iconType : 'svg';\n }\n\n if (kendo.isFunction(options.type)) {\n return options.type(element, options);\n }\n\n if (!kendo.isFunction(ICON_TYPES[options.type])) {\n return null;\n }\n\n return (ICON_TYPES[options.type](element, options)).html();\n };\n\n var HTMLBaseIcon = HTMLBase.extend({\n init: function(element, options) {\n var that = this;\n HTMLBase.fn.init.call(that, element, options);\n that._wrapper();\n },\n options: {\n name: 'HTMLIcon',\n size: 'none',\n themeColor: 'none',\n flip: 'default',\n iconClass: '',\n stylingOptions: [ 'size', 'themeColor', 'fill' ]\n },\n _wrapper: function() {\n var that = this;\n\n that._addClasses();\n },\n _addClasses: function() {\n var that = this,\n options = that.options,\n stylingOptions = options.stylingOptions,\n previouslyAddedClasses = that.wrapper.data(\"added-classes\");\n\n stylingOptions = stylingOptions.map(function(option) {\n if (option === 'themeColor') {\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n prefix: THEME_COLOR_PREFIX\n });\n }\n\n if (option === 'fill') {\n return FLIP_CLASSES[options.flip];\n }\n\n return kendo.cssProperties.getValidClass({\n widget: options.name,\n propName: option,\n value: options[option],\n fill: options.fillMode\n });\n });\n\n if (previouslyAddedClasses) {\n that.wrapper.removeClass(previouslyAddedClasses.filter(function (x) { return x !== that._className; }).join(\" \"));\n }\n\n that.wrapper.data(\"added-classes\", stylingOptions.concat([that._className]));\n that.wrapper.addClass(stylingOptions.join(\" \"));\n }\n });\n\n var HTMLFontIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLFontIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n // Find if there is an existing k-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(function (x) { return x.includes(KI_PREFFIX); }),\n className = that.options.icon ? (\"\" + (that.options.icon.startsWith(KI_PREFFIX) ? \"\" : KI_PREFFIX) + (that.options.icon)) : \"\";\n\n that._className = className;\n that.wrapper = that.element\n .addClass(KICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(that.options.iconClass || '');\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n var HTMLSvgIcon = HTMLBaseIcon.extend({\n init: function(element, options) {\n // Ensure that the inner contents of the wrapping span element are always removed for re-rendering purposes.\n element.empty();\n HTMLBaseIcon.fn.init.call(this, element, options);\n },\n options: extend({}, HTMLBaseIcon.fn.options, {\n name: 'HTMLSVGIcon',\n icon: null\n }),\n _wrapper: function() {\n var that = this,\n icon = that.options.icon,\n iconClass = that.options.iconClass,\n // Find if there is an existing k-svg-i- class appended to the element.\n currentIconClass = that.element[0].className.split(\" \").find(function (x) { return x.includes(KSVG_PREFFIX); }),\n svgElm = $(''),\n className;\n\n if (!icon && iconClass) {\n // match k-i-(some-icon-name)\n var regex = /k-i-(\\w+(?:-\\w+)*)/;\n var iconNameMatch = iconClass.match(regex);\n if (iconNameMatch) {\n icon = iconNameMatch[1];\n iconClass = iconClass.replace(iconNameMatch[0], \"\");\n }\n }\n\n if (kendo.isString(icon)) {\n // remove k-i- and convert kebab-case-icon to camelCaseIcon\n icon = icon.replace('k-i-', '').replace(/-./g, function (x){ return x[1].toUpperCase(); });\n icon = kendo.ui.svgIcons[icon] || kendo.ui.svgIcons[(icon + \"Icon\")];\n }\n\n className = icon && icon.name ? (\"\" + KSVG_PREFFIX + (icon.name)) : '';\n that._className = className;\n\n that.wrapper = that.element\n .addClass(KSVGICON)\n .removeClass(currentIconClass) // Remove any existing icons.\n .addClass(className)\n .addClass(iconClass || '')\n .attr(\"aria-hidden\", true);\n\n if ($.isPlainObject(icon)) {\n svgElm.attr('viewBox', icon.viewBox || '')\n .attr({\n 'viewBox': icon.viewBox || '',\n 'focusable': 'false',\n 'xmlns': 'http://www.w3.org/2000/svg'\n })\n .html(icon.content || '');\n\n that.wrapper.append(svgElm[0].outerHTML);\n }\n\n HTMLBaseIcon.fn._wrapper.call(this);\n }\n });\n\n $.extend(kendo.html, {\n renderIcon: renderIcon,\n HTMLFontIcon: HTMLFontIcon,\n HTMLSvgIcon: HTMLSvgIcon,\n getIconRenderer: function (type) { return ICON_TYPES[type]; }\n });\n\n kendo.cssProperties.registerPrefix(\"HTMLFontIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLFontIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n\n kendo.cssProperties.registerPrefix(\"HTMLSVGIcon\", \"k-icon-\");\n\n kendo.cssProperties.registerValues(\"HTMLSVGIcon\", [{\n prop: \"size\",\n values: kendo.cssProperties.sizeValues.concat([['xsmall', 'xs'], ['xlarge', 'xl'], ['xxlarge', 'xxl'], ['xxxlarge', 'xxxl']])\n }, {\n prop: \"themeColor\",\n values: ['primary', 'secondary', 'tertiary', 'inherit', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse']\n }]);\n })(window.kendo.jQuery);\n var kendo$I = kendo;\n\n var caretTrIcon = {\n name: 'caret-tr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretBrIcon = {\n name: 'caret-br',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretBlIcon = {\n name: 'caret-bl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretTlIcon = {\n name: 'caret-tl',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltUpIcon = {\n name: 'caret-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltRightIcon = {\n name: 'caret-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltDownIcon = {\n name: 'caret-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltLeftIcon = {\n name: 'caret-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToTopIcon = {\n name: 'caret-alt-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToRightIcon = {\n name: 'caret-alt-to-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToBottomIcon = {\n name: 'caret-alt-to-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltToLeftIcon = {\n name: 'caret-alt-to-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltUpIcon = {\n name: 'caret-double-alt-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltRightIcon = {\n name: 'caret-double-alt-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltDownIcon = {\n name: 'caret-double-alt-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretDoubleAltLeftIcon = {\n name: 'caret-double-alt-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var caretAltExpandIcon = {\n name: 'caret-alt-expand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsNoChangeIcon = {\n name: 'arrows-no-change',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowOverflowDownIcon = {\n name: 'arrow-overflow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronUpIcon = {\n name: 'chevron-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronRightIcon = {\n name: 'chevron-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDownIcon = {\n name: 'chevron-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronLeftIcon = {\n name: 'chevron-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowUpIcon = {\n name: 'arrow-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRightIcon = {\n name: 'arrow-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowDownIcon = {\n name: 'arrow-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowLeftIcon = {\n name: 'arrow-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelDownIcon = {\n name: 'level-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelUpIcon = {\n name: 'level-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var levelToTopIcon = {\n name: 'level-to-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var colResizeIcon = {\n name: 'col-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsAxesIcon = {\n name: 'arrows-axes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsSwapIcon = {\n name: 'arrows-swap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dragAndDropIcon = {\n name: 'drag-and-drop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var categorizeIcon = {\n name: 'categorize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gridIcon = {\n name: 'grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gridLayoutIcon = {\n name: 'grid-layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupIcon = {\n name: 'group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var ungroupIcon = {\n name: 'ungroup',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleDragIcon = {\n name: 'handle-drag',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutIcon = {\n name: 'layout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layout1By4Icon = {\n name: 'layout-1-by-4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layout2By2Icon = {\n name: 'layout-2-by-2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutSideBySideIcon = {\n name: 'layout-side-by-side',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var layoutStackedIcon = {\n name: 'layout-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var columnsIcon = {\n name: 'columns',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rowsIcon = {\n name: 'rows',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var reorderIcon = {\n name: 'reorder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var menuIcon = {\n name: 'menu',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var moreVerticalIcon = {\n name: 'more-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var moreHorizontalIcon = {\n name: 'more-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var overlapIcon = {\n name: 'overlap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var homeIcon = {\n name: 'home',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsLeftRightIcon = {\n name: 'arrows-left-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsTopBottomIcon = {\n name: 'arrows-top-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusBottomLeftIcon = {\n name: 'border-radius-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusBottomRightIcon = {\n name: 'border-radius-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusTopLeftIcon = {\n name: 'border-radius-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusTopRightIcon = {\n name: 'border-radius-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRadiusIcon = {\n name: 'border-radius',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleBottomIcon = {\n name: 'border-style-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleLeftIcon = {\n name: 'border-style-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleRightIcon = {\n name: 'border-style-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleTopIcon = {\n name: 'border-style-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderStyleIcon = {\n name: 'border-style',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var boxSizingIcon = {\n name: 'box-sizing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleDownIcon = {\n name: 'chevron-double-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleLeftIcon = {\n name: 'chevron-double-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleRightIcon = {\n name: 'chevron-double-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chevronDoubleUpIcon = {\n name: 'chevron-double-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataOdsIcon = {\n name: 'data-ods',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var nonRecurrenceIcon = {\n name: 'non-recurrence',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayBlockIcon = {\n name: 'display-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayFlexIcon = {\n name: 'display-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayInlineFlexIcon = {\n name: 'display-inline-flex',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletSliderIcon = {\n name: 'droplet-slider',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileReportIcon = {\n name: 'file-report',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gapColumnIcon = {\n name: 'gap-column',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gapRowIcon = {\n name: 'gap-row',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleResizeAltIcon = {\n name: 'handle-resize-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handleResizeIcon = {\n name: 'handle-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imagesIcon = {\n name: 'images',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var letterSpaceIcon = {\n name: 'letter-space',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lineHeightIcon = {\n name: 'line-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listLatinBigIcon = {\n name: 'list-latin-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listLatinSmallIcon = {\n name: 'list-latin-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanBigIcon = {\n name: 'list-roman-big',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanSmallIcon = {\n name: 'list-roman-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedOutlineIcon = {\n name: 'list-unordered-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedSquareIcon = {\n name: 'list-unordered-square',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var maxHeightIcon = {\n name: 'max-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var maxWidthIcon = {\n name: 'max-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minHeightIcon = {\n name: 'min-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minWidthIcon = {\n name: 'min-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outlineOffsetIcon = {\n name: 'outline-offset',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outlineWidthIcon = {\n name: 'outline-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingBottomIcon = {\n name: 'padding-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingLeftIcon = {\n name: 'padding-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingRightIcon = {\n name: 'padding-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingTopIcon = {\n name: 'padding-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paddingIcon = {\n name: 'padding',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionBottomIcon = {\n name: 'position-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionLeftIcon = {\n name: 'position-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionRightIcon = {\n name: 'position-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var positionTopIcon = {\n name: 'position-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var regularExpressionIcon = {\n name: 'regular-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var replaceAllIcon = {\n name: 'replace-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var replaceSingleIcon = {\n name: 'replace-single',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var reportElementIcon = {\n name: 'report-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rightDoubleQuotesIcon = {\n name: 'right-double-quotes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var wholeWordIcon = {\n name: 'whole-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataSdsIcon = {\n name: 'data-sds',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var downloadLightIcon = {\n name: 'download-light',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyeSlashIcon = {\n name: 'eye-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var displayInlineBlockIcon = {\n name: 'display-inline-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperPlaneIcon = {\n name: 'paper-plane',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gaugeLinearIcon = {\n name: 'gauge-linear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gaugeRadialIcon = {\n name: 'gauge-radial',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeBoxIcon = {\n name: 'envelope-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeLinkIcon = {\n name: 'envelope-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopeIcon = {\n name: 'envelope',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var warningCircleIcon = {\n name: 'warning-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var warningTriangleIcon = {\n name: 'warning-triangle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontGrowIcon = {\n name: 'font-grow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontShrinkIcon = {\n name: 'font-shrink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textOverflowIcon = {\n name: 'text-overflow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textWrapArrowIcon = {\n name: 'text-wrap-arrow',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textTruncateIcon = {\n name: 'text-truncate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textClipIcon = {\n name: 'text-clip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderColorIcon = {\n name: 'border-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderTypeIcon = {\n name: 'border-type',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var undoIcon = {\n name: 'undo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redoIcon = {\n name: 'redo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCcwIcon = {\n name: 'arrow-rotate-ccw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCwIcon = {\n name: 'arrow-rotate-cw',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsNoRepeatIcon = {\n name: 'arrows-no-repeat',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCcwSmallIcon = {\n name: 'arrow-rotate-ccw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowRotateCwSmallIcon = {\n name: 'arrow-rotate-cw-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clockIcon = {\n name: 'clock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calendarIcon = {\n name: 'calendar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var saveIcon = {\n name: 'save',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var printIcon = {\n name: 'print',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pencilIcon = {\n name: 'pencil',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trashIcon = {\n name: 'trash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperclipIcon = {\n name: 'paperclip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paperclipAltIcon = {\n name: 'paperclip-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkIcon = {\n name: 'link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlinkIcon = {\n name: 'unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkVerticalIcon = {\n name: 'link-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlinkVerticalIcon = {\n name: 'unlink-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lockIcon = {\n name: 'lock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unlockIcon = {\n name: 'unlock',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelIcon = {\n name: 'cancel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelOutlineIcon = {\n name: 'cancel-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cancelCircleIcon = {\n name: 'cancel-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkIcon = {\n name: 'check',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkOutlineIcon = {\n name: 'check-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkCircleIcon = {\n name: 'check-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xIcon = {\n name: 'x',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xOutlineIcon = {\n name: 'x-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var xCircleIcon = {\n name: 'x-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusIcon = {\n name: 'plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusOutlineIcon = {\n name: 'plus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusCircleIcon = {\n name: 'plus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusIcon = {\n name: 'minus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusOutlineIcon = {\n name: 'minus-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusCircleIcon = {\n name: 'minus-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortAscIcon = {\n name: 'sort-asc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortDescIcon = {\n name: 'sort-desc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortClearIcon = {\n name: 'sort-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortAscSmallIcon = {\n name: 'sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sortDescSmallIcon = {\n name: 'sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterIcon = {\n name: 'filter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterClearIcon = {\n name: 'filter-clear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSmallIcon = {\n name: 'filter-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSortAscSmallIcon = {\n name: 'filter-sort-asc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterSortDescSmallIcon = {\n name: 'filter-sort-desc-small',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterAddExpressionIcon = {\n name: 'filter-add-expression',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filterAddGroupIcon = {\n name: 'filter-add-group',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var loginIcon = {\n name: 'login',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var logoutIcon = {\n name: 'logout',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var downloadIcon = {\n name: 'download',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var uploadIcon = {\n name: 'upload',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hyperlinkOpenIcon = {\n name: 'hyperlink-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hyperlinkOpenSmIcon = {\n name: 'hyperlink-open-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var launchIcon = {\n name: 'launch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowIcon = {\n name: 'window',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowRestoreIcon = {\n name: 'window-restore',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var windowMinimizeIcon = {\n name: 'window-minimize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gearIcon = {\n name: 'gear',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var gearsIcon = {\n name: 'gears',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var wrenchIcon = {\n name: 'wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyeIcon = {\n name: 'eye',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var searchIcon = {\n name: 'search',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomInIcon = {\n name: 'zoom-in',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomOutIcon = {\n name: 'zoom-out',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var arrowsMoveIcon = {\n name: 'arrows-move',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calculatorIcon = {\n name: 'calculator',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cartIcon = {\n name: 'cart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var connectorIcon = {\n name: 'connector',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var plusSmIcon = {\n name: 'plus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var minusSmIcon = {\n name: 'minus-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusDenyIcon = {\n name: 'kpi-status-deny',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusHoldIcon = {\n name: 'kpi-status-hold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var kpiStatusOpenIcon = {\n name: 'kpi-status-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var equalIcon = {\n name: 'equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var notEqualIcon = {\n name: 'not-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var lessOrEqualIcon = {\n name: 'less-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var greaterOrEqualIcon = {\n name: 'greater-or-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var divideIcon = {\n name: 'divide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var accessibilityIcon = {\n name: 'accessibility',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeOutlineIcon = {\n name: 'barcode-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeIcon = {\n name: 'barcode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeScannerIcon = {\n name: 'barcode-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeOutlineIcon = {\n name: 'qr-code-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeIcon = {\n name: 'qr-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var qrCodeScannerIcon = {\n name: 'qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var barcodeQrCodeScannerIcon = {\n name: 'barcode-qr-code-scanner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var signatureIcon = {\n name: 'signature',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var handIcon = {\n name: 'hand',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pointerIcon = {\n name: 'pointer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stickIcon = {\n name: 'stick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unstickIcon = {\n name: 'unstick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var setColumnPositionIcon = {\n name: 'set-column-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clockArrowRotateIcon = {\n name: 'clock-arrow-rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playIcon = {\n name: 'play',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pauseIcon = {\n name: 'pause',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stopIcon = {\n name: 'stop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rewindIcon = {\n name: 'rewind',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var forwardIcon = {\n name: 'forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeDownIcon = {\n name: 'volume-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeUpIcon = {\n name: 'volume-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var volumeMuteIcon = {\n name: 'volume-mute',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var hdIcon = {\n name: 'hd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var closedCaptionsIcon = {\n name: 'closed-captions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playlistIcon = {\n name: 'playlist',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var musicNotesIcon = {\n name: 'music-notes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var playSmIcon = {\n name: 'play-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pauseSmIcon = {\n name: 'pause-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stopSmIcon = {\n name: 'stop-sm',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var heartOutlineIcon = {\n name: 'heart-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var heartIcon = {\n name: 'heart',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var starOutlineIcon = {\n name: 'star-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var starIcon = {\n name: 'star',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxIcon = {\n name: 'checkbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxCheckedIcon = {\n name: 'checkbox-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxIndeterminateIcon = {\n name: 'checkbox-indeterminate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var checkboxNullIcon = {\n name: 'checkbox-null',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var circleIcon = {\n name: 'circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var radiobuttonIcon = {\n name: 'radiobutton',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var radiobuttonCheckedIcon = {\n name: 'radiobutton-checked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bellIcon = {\n name: 'bell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var infoCircleIcon = {\n name: 'info-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var questionCircleIcon = {\n name: 'question-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exclamationCircleIcon = {\n name: 'exclamation-circle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cameraIcon = {\n name: 'camera',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageIcon = {\n name: 'image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageExportIcon = {\n name: 'image-export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomActualSizeIcon = {\n name: 'zoom-actual-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var zoomBestFitIcon = {\n name: 'zoom-best-fit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageResizeIcon = {\n name: 'image-resize',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cropIcon = {\n name: 'crop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mirrorIcon = {\n name: 'mirror',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flipHorizontalIcon = {\n name: 'flip-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flipVerticalIcon = {\n name: 'flip-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateIcon = {\n name: 'rotate',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateRightIcon = {\n name: 'rotate-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rotateLeftIcon = {\n name: 'rotate-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var brushIcon = {\n name: 'brush',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paletteIcon = {\n name: 'palette',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletIcon = {\n name: 'droplet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shapeLineIcon = {\n name: 'shape-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var brightnessContrastIcon = {\n name: 'brightness-contrast',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var slidersIcon = {\n name: 'sliders',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var invertColorsIcon = {\n name: 'invert-colors',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var transparencyIcon = {\n name: 'transparency',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var grayscaleIcon = {\n name: 'grayscale',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var blurIcon = {\n name: 'blur',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sharpenIcon = {\n name: 'sharpen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shapesIcon = {\n name: 'shapes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var roundCornersIcon = {\n name: 'round-corners',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringToFrontIcon = {\n name: 'bring-to-front',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringToBackIcon = {\n name: 'bring-to-back',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringForwardIcon = {\n name: 'bring-forward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bringBackwardIcon = {\n name: 'bring-backward',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStartIcon = {\n name: 'align-self-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfCenterIcon = {\n name: 'align-self-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfEndIcon = {\n name: 'align-self-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStartAltIcon = {\n name: 'align-self-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfCenterAltIcon = {\n name: 'align-self-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfEndAltIcon = {\n name: 'align-self-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsUpIcon = {\n name: 'thumbnails-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsRightIcon = {\n name: 'thumbnails-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsDownIcon = {\n name: 'thumbnails-down',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var thumbnailsLeftIcon = {\n name: 'thumbnails-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fullscreenIcon = {\n name: 'fullscreen',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fullscreenExitIcon = {\n name: 'fullscreen-exit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dropletSlashIcon = {\n name: 'droplet-slash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var photosIcon = {\n name: 'photos',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignToGridIcon = {\n name: 'align-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sizeToGridIcon = {\n name: 'size-to-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameSizeIcon = {\n name: 'make-same-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameWidthIcon = {\n name: 'make-same-width',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeSameHeightIcon = {\n name: 'make-same-height',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeHorizontalSpacingEqualIcon = {\n name: 'make-horizontal-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var increaseHorizontalSpacingIcon = {\n name: 'increase-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decreaseHorizontalSpacingIcon = {\n name: 'decrease-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var removeHorizontalSpacingIcon = {\n name: 'remove-horizontal-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var makeVerticalSpacingEqualIcon = {\n name: 'make-vertical-spacing-equal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var increaseVerticalSpacingIcon = {\n name: 'increase-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decreaseVerticalSpacingIcon = {\n name: 'decrease-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var removeVerticalSpacingIcon = {\n name: 'remove-vertical-spacing',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var eyedropperIcon = {\n name: 'eyedropper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapGridIcon = {\n name: 'snap-grid',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapToGridlinesIcon = {\n name: 'snap-to-gridlines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var snapToSnaplinesIcon = {\n name: 'snap-to-snaplines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dimensionsIcon = {\n name: 'dimensions',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStretchIcon = {\n name: 'align-self-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignSelfStretchAltIcon = {\n name: 'align-self-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStartIcon = {\n name: 'align-items-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsCenterIcon = {\n name: 'align-items-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsEndIcon = {\n name: 'align-items-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStretchIcon = {\n name: 'align-items-stretch',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsBaselineIcon = {\n name: 'align-items-baseline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStartAltIcon = {\n name: 'align-items-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsCenterAltIcon = {\n name: 'align-items-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsEndAltIcon = {\n name: 'align-items-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsStretchAltIcon = {\n name: 'align-items-stretch-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignItemsBaselineAltIcon = {\n name: 'align-items-baseline-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentStartIcon = {\n name: 'justify-content-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentCenterIcon = {\n name: 'justify-content-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentEndIcon = {\n name: 'justify-content-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentBetweenIcon = {\n name: 'justify-content-between',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentAroundIcon = {\n name: 'justify-content-around',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentStartAltIcon = {\n name: 'justify-content-start-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentCenterAltIcon = {\n name: 'justify-content-center-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentEndAltIcon = {\n name: 'justify-content-end-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentBetweenAltIcon = {\n name: 'justify-content-between-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var justifyContentAroundAltIcon = {\n name: 'justify-content-around-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileWrenchIcon = {\n name: 'file-wrench',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var boldIcon = {\n name: 'bold',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var italicIcon = {\n name: 'italic',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var underlineIcon = {\n name: 'underline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontFamilyIcon = {\n name: 'font-family',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var foregroundColorIcon = {\n name: 'foreground-color',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var convertLowercaseIcon = {\n name: 'convert-lowercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var convertUppercaseIcon = {\n name: 'convert-uppercase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var strikethroughIcon = {\n name: 'strikethrough',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var subscriptIcon = {\n name: 'subscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var supscriptIcon = {\n name: 'supscript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var divIcon = {\n name: 'div',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var allIcon = {\n name: 'all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h1Icon = {\n name: 'h1',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h2Icon = {\n name: 'h2',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h3Icon = {\n name: 'h3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h4Icon = {\n name: 'h4',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h5Icon = {\n name: 'h5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var h6Icon = {\n name: 'h6',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listOrderedIcon = {\n name: 'list-ordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listUnorderedIcon = {\n name: 'list-unordered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var indentIcon = {\n name: 'indent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var outdentIcon = {\n name: 'outdent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertTopIcon = {\n name: 'insert-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertMiddleIcon = {\n name: 'insert-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var insertBottomIcon = {\n name: 'insert-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignTopIcon = {\n name: 'align-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignMiddleIcon = {\n name: 'align-middle',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignBottomIcon = {\n name: 'align-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignLeftIcon = {\n name: 'align-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignCenterIcon = {\n name: 'align-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignRightIcon = {\n name: 'align-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignJustifyIcon = {\n name: 'align-justify',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var alignRemoveIcon = {\n name: 'align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textWrapIcon = {\n name: 'text-wrap',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var horizontalRuleIcon = {\n name: 'horizontal-rule',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopLeftIcon = {\n name: 'table-align-top-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopCenterIcon = {\n name: 'table-align-top-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignTopRightIcon = {\n name: 'table-align-top-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleLeftIcon = {\n name: 'table-align-middle-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleCenterIcon = {\n name: 'table-align-middle-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignMiddleRightIcon = {\n name: 'table-align-middle-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomLeftIcon = {\n name: 'table-align-bottom-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomCenterIcon = {\n name: 'table-align-bottom-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignBottomRightIcon = {\n name: 'table-align-bottom-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAlignRemoveIcon = {\n name: 'table-align-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersAllIcon = {\n name: 'borders-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersOutsideIcon = {\n name: 'borders-outside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideIcon = {\n name: 'borders-inside',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideHorizontalIcon = {\n name: 'borders-inside-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersInsideVerticalIcon = {\n name: 'borders-inside-vertical',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderTopIcon = {\n name: 'border-top',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderBottomIcon = {\n name: 'border-bottom',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderLeftIcon = {\n name: 'border-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var borderRightIcon = {\n name: 'border-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersNoneIcon = {\n name: 'borders-none',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bordersShowHideIcon = {\n name: 'borders-show-hide',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formIcon = {\n name: 'form',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formElementIcon = {\n name: 'form-element',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var codeSnippetIcon = {\n name: 'code-snippet',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var selectAllIcon = {\n name: 'select-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var buttonIcon = {\n name: 'button',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var selectBoxIcon = {\n name: 'select-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var calendarDateIcon = {\n name: 'calendar-date',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupBoxIcon = {\n name: 'group-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textareaIcon = {\n name: 'textarea',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textboxIcon = {\n name: 'textbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var textboxHiddenIcon = {\n name: 'textbox-hidden',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var passwordIcon = {\n name: 'password',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paragraphAddIcon = {\n name: 'paragraph-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var editToolsIcon = {\n name: 'edit-tools',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var templateManagerIcon = {\n name: 'template-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var changeManuallyIcon = {\n name: 'change-manually',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesIcon = {\n name: 'track-changes',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesEnableIcon = {\n name: 'track-changes-enable',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesAcceptIcon = {\n name: 'track-changes-accept',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesAcceptAllIcon = {\n name: 'track-changes-accept-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesRejectIcon = {\n name: 'track-changes-reject',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var trackChangesRejectAllIcon = {\n name: 'track-changes-reject-all',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var documentManagerIcon = {\n name: 'document-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var customIconIcon = {\n name: 'custom-icon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bookIcon = {\n name: 'book',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageAddIcon = {\n name: 'image-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageEditIcon = {\n name: 'image-edit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageMapEditorIcon = {\n name: 'image-map-editor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentIcon = {\n name: 'comment',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentRemoveIcon = {\n name: 'comment-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var commentsRemoveIcon = {\n name: 'comments-remove',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var silverlightIcon = {\n name: 'silverlight',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mediaManagerIcon = {\n name: 'media-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var videoExternalIcon = {\n name: 'video-external',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var flashManagerIcon = {\n name: 'flash-manager',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var binocularsIcon = {\n name: 'binoculars',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var copyIcon = {\n name: 'copy',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cutIcon = {\n name: 'cut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardIcon = {\n name: 'clipboard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardCodeIcon = {\n name: 'clipboard-code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardWordIcon = {\n name: 'clipboard-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardWordAltIcon = {\n name: 'clipboard-word-alt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardHtmlIcon = {\n name: 'clipboard-html',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardMarkdownIcon = {\n name: 'clipboard-markdown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clipboardTextIcon = {\n name: 'clipboard-text',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var applyFormatIcon = {\n name: 'apply-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var clearCssIcon = {\n name: 'clear-css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var copyFormatIcon = {\n name: 'copy-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripAllFormattingIcon = {\n name: 'strip-all-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripCssFormatIcon = {\n name: 'strip-css-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripFontElementsIcon = {\n name: 'strip-font-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripSpanElementsIcon = {\n name: 'strip-span-elements',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stripWordFormattingIcon = {\n name: 'strip-word-formatting',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formatCodeBlockIcon = {\n name: 'format-code-block',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var buildingBlocksIcon = {\n name: 'building-blocks',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var puzzlePieceIcon = {\n name: 'puzzle-piece',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkAddIcon = {\n name: 'link-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeLinkIcon = {\n name: 'globe-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeUnlinkIcon = {\n name: 'globe-unlink',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopLinkIcon = {\n name: 'envelop-link',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var anchorIcon = {\n name: 'anchor',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableAddIcon = {\n name: 'table-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableIcon = {\n name: 'table',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePropertiesIcon = {\n name: 'table-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellIcon = {\n name: 'table-cell',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellPropertiesIcon = {\n name: 'table-cell-properties',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnInsertLeftIcon = {\n name: 'table-column-insert-left',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnInsertRightIcon = {\n name: 'table-column-insert-right',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowInsertAboveIcon = {\n name: 'table-row-insert-above',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowInsertBelowIcon = {\n name: 'table-row-insert-below',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnDeleteIcon = {\n name: 'table-column-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowDeleteIcon = {\n name: 'table-row-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCellDeleteIcon = {\n name: 'table-cell-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableDeleteIcon = {\n name: 'table-delete',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeIcon = {\n name: 'cells-merge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeHorizontallyIcon = {\n name: 'cells-merge-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellsMergeVerticallyIcon = {\n name: 'cells-merge-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellSplitHorizontallyIcon = {\n name: 'cell-split-horizontally',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cellSplitVerticallyIcon = {\n name: 'cell-split-vertically',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableUnmergeIcon = {\n name: 'table-unmerge',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var paneFreezeIcon = {\n name: 'pane-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rowFreezeIcon = {\n name: 'row-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var columnFreezeIcon = {\n name: 'column-freeze',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var toolbarFloatIcon = {\n name: 'toolbar-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var spellCheckerIcon = {\n name: 'spell-checker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var validationXhtmlIcon = {\n name: 'validation-xhtml',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var validationDataIcon = {\n name: 'validation-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var toggleFullScreenModeIcon = {\n name: 'toggle-full-screen-mode',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var formulaFxIcon = {\n name: 'formula-fx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var sumIcon = {\n name: 'sum',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var symbolIcon = {\n name: 'symbol',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dollarIcon = {\n name: 'dollar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var percentIcon = {\n name: 'percent',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var customFormatIcon = {\n name: 'custom-format',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decimalIncreaseIcon = {\n name: 'decimal-increase',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var decimalDecreaseIcon = {\n name: 'decimal-decrease',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fontSizeIcon = {\n name: 'font-size',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var imageAbsolutePositionIcon = {\n name: 'image-absolute-position',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableWizardIcon = {\n name: 'table-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var crosstabIcon = {\n name: 'crosstab',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var crosstabWizardIcon = {\n name: 'crosstab-wizard',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableBodyIcon = {\n name: 'table-body',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableColumnGroupsIcon = {\n name: 'table-column-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableCornerIcon = {\n name: 'table-corner',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tableRowGroupsIcon = {\n name: 'table-row-groups',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeOutlineIcon = {\n name: 'globe-outline',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var globeIcon = {\n name: 'globe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mapMarkerIcon = {\n name: 'map-marker',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var mapMarkerTargetIcon = {\n name: 'map-marker-target',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinIcon = {\n name: 'pin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var unpinIcon = {\n name: 'unpin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var shareIcon = {\n name: 'share',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var userIcon = {\n name: 'user',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var inboxIcon = {\n name: 'inbox',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bloggerIcon = {\n name: 'blogger',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var bloggerBoxIcon = {\n name: 'blogger-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var deliciousIcon = {\n name: 'delicious',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var deliciousBoxIcon = {\n name: 'delicious-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var diggIcon = {\n name: 'digg',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var diggBoxIcon = {\n name: 'digg-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopIcon = {\n name: 'envelop',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var envelopBoxIcon = {\n name: 'envelop-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var facebookIcon = {\n name: 'facebook',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var facebookBoxIcon = {\n name: 'facebook-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googleIcon = {\n name: 'google',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googleBoxIcon = {\n name: 'google-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googlePlusIcon = {\n name: 'google-plus',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var googlePlusBoxIcon = {\n name: 'google-plus-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkedinIcon = {\n name: 'linkedin',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var linkedinBoxIcon = {\n name: 'linkedin-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var myspaceIcon = {\n name: 'myspace',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var myspaceBoxIcon = {\n name: 'myspace-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinterestIcon = {\n name: 'pinterest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pinterestBoxIcon = {\n name: 'pinterest-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redditIcon = {\n name: 'reddit',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var redditBoxIcon = {\n name: 'reddit-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stumbleUponIcon = {\n name: 'stumble-upon',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var stumbleUponBoxIcon = {\n name: 'stumble-upon-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tellAFriendIcon = {\n name: 'tell-a-friend',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tellAFriendBoxIcon = {\n name: 'tell-a-friend-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tumblrIcon = {\n name: 'tumblr',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tumblrBoxIcon = {\n name: 'tumblr-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var twitterIcon = {\n name: 'twitter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var twitterBoxIcon = {\n name: 'twitter-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var yammerIcon = {\n name: 'yammer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var yammerBoxIcon = {\n name: 'yammer-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var behanceIcon = {\n name: 'behance',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var behanceBoxIcon = {\n name: 'behance-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dribbbleIcon = {\n name: 'dribbble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dribbbleBoxIcon = {\n name: 'dribbble-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rssIcon = {\n name: 'rss',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var rssBoxIcon = {\n name: 'rss-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vimeoIcon = {\n name: 'vimeo',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vimeoBoxIcon = {\n name: 'vimeo-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var youtubeIcon = {\n name: 'youtube',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var youtubeBoxIcon = {\n name: 'youtube-box',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderIcon = {\n name: 'folder',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderOpenIcon = {\n name: 'folder-open',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderAddIcon = {\n name: 'folder-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderUpIcon = {\n name: 'folder-up',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var folderMoreIcon = {\n name: 'folder-more',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var aggregateFieldsIcon = {\n name: 'aggregate-fields',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileIcon = {\n name: 'file',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAddIcon = {\n name: 'file-add',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileTxtIcon = {\n name: 'file-txt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileCsvIcon = {\n name: 'file-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileExcelIcon = {\n name: 'file-excel',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileWordIcon = {\n name: 'file-word',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileMdbIcon = {\n name: 'file-mdb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePptIcon = {\n name: 'file-ppt',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePdfIcon = {\n name: 'file-pdf',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePsdIcon = {\n name: 'file-psd',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileFlashIcon = {\n name: 'file-flash',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileConfigIcon = {\n name: 'file-config',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAscxIcon = {\n name: 'file-ascx',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileBacIcon = {\n name: 'file-bac',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileZipIcon = {\n name: 'file-zip',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filmIcon = {\n name: 'film',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var css3Icon = {\n name: 'css3',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var html5Icon = {\n name: 'html5',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var codeIcon = {\n name: 'code',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cssIcon = {\n name: 'css',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var jsIcon = {\n name: 'js',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exeIcon = {\n name: 'exe',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var csprojIcon = {\n name: 'csproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vbprojIcon = {\n name: 'vbproj',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var csIcon = {\n name: 'cs',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var vbIcon = {\n name: 'vb',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var slnIcon = {\n name: 'sln',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var cloudIcon = {\n name: 'cloud',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileHorizontalIcon = {\n name: 'file-horizontal',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var subreportIcon = {\n name: 'subreport',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataIcon = {\n name: 'data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileHeaderIcon = {\n name: 'file-header',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileFooterIcon = {\n name: 'file-footer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupHeaderSectionIcon = {\n name: 'group-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupFooterSectionIcon = {\n name: 'group-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pageHeaderSectionIcon = {\n name: 'page-header-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var pageFooterSectionIcon = {\n name: 'page-footer-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var detailSectionIcon = {\n name: 'detail-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tocSectionIcon = {\n name: 'toc-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupSectionIcon = {\n name: 'group-section',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersIcon = {\n name: 'parameters',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataCsvIcon = {\n name: 'data-csv',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataJsonIcon = {\n name: 'data-json',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataSqlIcon = {\n name: 'data-sql',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataWebIcon = {\n name: 'data-web',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var groupCollectionIcon = {\n name: 'group-collection',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterBooleanIcon = {\n name: 'parameter-boolean',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterDateTimeIcon = {\n name: 'parameter-date-time',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterFloatIcon = {\n name: 'parameter-float',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterIntegerIcon = {\n name: 'parameter-integer',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parameterStringIcon = {\n name: 'parameter-string',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tocSectionLevelIcon = {\n name: 'toc-section-level',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var inheritedIcon = {\n name: 'inherited',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileVideoIcon = {\n name: 'file-video',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileAudioIcon = {\n name: 'file-audio',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileImageIcon = {\n name: 'file-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filePresentationIcon = {\n name: 'file-presentation',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileDataIcon = {\n name: 'file-data',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileDiscImageIcon = {\n name: 'file-disc-image',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileProgrammingIcon = {\n name: 'file-programming',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersByteArrayIcon = {\n name: 'parameters-byte-array',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var parametersUnknownIcon = {\n name: 'parameters-unknown',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileErrorIcon = {\n name: 'file-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var filesErrorIcon = {\n name: 'files-error',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var dataRestIcon = {\n name: 'data-rest',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var fileTypescriptIcon = {\n name: 'file-typescript',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionStartIcon = {\n name: 'table-position-start',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionCenterIcon = {\n name: 'table-position-center',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var tablePositionEndIcon = {\n name: 'table-position-end',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanUpperIcon = {\n name: 'list-roman-upper',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var listRomanLowerIcon = {\n name: 'list-roman-lower',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var importIcon = {\n name: 'import',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var exportIcon = {\n name: 'export',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var graphIcon = {\n name: 'graph',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnClusteredIcon = {\n name: 'chart-column-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnStackedIcon = {\n name: 'chart-column-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnStacked100Icon = {\n name: 'chart-column-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartColumnRangeIcon = {\n name: 'chart-column-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarClusteredIcon = {\n name: 'chart-bar-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarStackedIcon = {\n name: 'chart-bar-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarStacked100Icon = {\n name: 'chart-bar-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBarRangeIcon = {\n name: 'chart-bar-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaClusteredIcon = {\n name: 'chart-area-clustered',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaStackedIcon = {\n name: 'chart-area-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaStacked100Icon = {\n name: 'chart-area-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartAreaRangeIcon = {\n name: 'chart-area-range',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineIcon = {\n name: 'chart-line',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStackedIcon = {\n name: 'chart-line-stacked',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStacked100Icon = {\n name: 'chart-line-stacked100',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineMarkersIcon = {\n name: 'chart-line-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStackedMarkersIcon = {\n name: 'chart-line-stacked-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartLineStacked100MarkersIcon = {\n name: 'chart-line-stacked100-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartPieIcon = {\n name: 'chart-pie',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartDoughnutIcon = {\n name: 'chart-doughnut',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterIcon = {\n name: 'chart-scatter',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterSmoothLinesMarkersIcon = {\n name: 'chart-scatter-smooth-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterSmoothLinesIcon = {\n name: 'chart-scatter-smooth-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterStraightLinesMarkersIcon = {\n name: 'chart-scatter-straight-lines-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartScatterStraightLinesIcon = {\n name: 'chart-scatter-straight-lines',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartBubbleIcon = {\n name: 'chart-bubble',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartCandlestickIcon = {\n name: 'chart-candlestick',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartOhlcIcon = {\n name: 'chart-ohlc',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarIcon = {\n name: 'chart-radar',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarMarkersIcon = {\n name: 'chart-radar-markers',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRadarFilledIcon = {\n name: 'chart-radar-filled',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartRoseIcon = {\n name: 'chart-rose',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var chartChoroplethIcon = {\n name: 'chart-choropleth',\n content: '',\n viewBox: '0 0 512 512'\n };\n\n var svgIcons = /*#__PURE__*/Object.freeze({\n __proto__: null,\n accessibilityIcon: accessibilityIcon,\n aggregateFieldsIcon: aggregateFieldsIcon,\n alignBottomIcon: alignBottomIcon,\n alignCenterIcon: alignCenterIcon,\n alignItemsBaselineAltIcon: alignItemsBaselineAltIcon,\n alignItemsBaselineIcon: alignItemsBaselineIcon,\n alignItemsCenterAltIcon: alignItemsCenterAltIcon,\n alignItemsCenterIcon: alignItemsCenterIcon,\n alignItemsEndAltIcon: alignItemsEndAltIcon,\n alignItemsEndIcon: alignItemsEndIcon,\n alignItemsStartAltIcon: alignItemsStartAltIcon,\n alignItemsStartIcon: alignItemsStartIcon,\n alignItemsStretchAltIcon: alignItemsStretchAltIcon,\n alignItemsStretchIcon: alignItemsStretchIcon,\n alignJustifyIcon: alignJustifyIcon,\n alignLeftIcon: alignLeftIcon,\n alignMiddleIcon: alignMiddleIcon,\n alignRemoveIcon: alignRemoveIcon,\n alignRightIcon: alignRightIcon,\n alignSelfCenterAltIcon: alignSelfCenterAltIcon,\n alignSelfCenterIcon: alignSelfCenterIcon,\n alignSelfEndAltIcon: alignSelfEndAltIcon,\n alignSelfEndIcon: alignSelfEndIcon,\n alignSelfStartAltIcon: alignSelfStartAltIcon,\n alignSelfStartIcon: alignSelfStartIcon,\n alignSelfStretchAltIcon: alignSelfStretchAltIcon,\n alignSelfStretchIcon: alignSelfStretchIcon,\n alignToGridIcon: alignToGridIcon,\n alignTopIcon: alignTopIcon,\n allIcon: allIcon,\n anchorIcon: anchorIcon,\n applyFormatIcon: applyFormatIcon,\n arrowDownIcon: arrowDownIcon,\n arrowLeftIcon: arrowLeftIcon,\n arrowOverflowDownIcon: arrowOverflowDownIcon,\n arrowRightIcon: arrowRightIcon,\n arrowRotateCcwIcon: arrowRotateCcwIcon,\n arrowRotateCcwSmallIcon: arrowRotateCcwSmallIcon,\n arrowRotateCwIcon: arrowRotateCwIcon,\n arrowRotateCwSmallIcon: arrowRotateCwSmallIcon,\n arrowUpIcon: arrowUpIcon,\n arrowsAxesIcon: arrowsAxesIcon,\n arrowsLeftRightIcon: arrowsLeftRightIcon,\n arrowsMoveIcon: arrowsMoveIcon,\n arrowsNoChangeIcon: arrowsNoChangeIcon,\n arrowsNoRepeatIcon: arrowsNoRepeatIcon,\n arrowsSwapIcon: arrowsSwapIcon,\n arrowsTopBottomIcon: arrowsTopBottomIcon,\n barcodeIcon: barcodeIcon,\n barcodeOutlineIcon: barcodeOutlineIcon,\n barcodeQrCodeScannerIcon: barcodeQrCodeScannerIcon,\n barcodeScannerIcon: barcodeScannerIcon,\n behanceBoxIcon: behanceBoxIcon,\n behanceIcon: behanceIcon,\n bellIcon: bellIcon,\n binocularsIcon: binocularsIcon,\n bloggerBoxIcon: bloggerBoxIcon,\n bloggerIcon: bloggerIcon,\n blurIcon: blurIcon,\n boldIcon: boldIcon,\n bookIcon: bookIcon,\n borderBottomIcon: borderBottomIcon,\n borderColorIcon: borderColorIcon,\n borderLeftIcon: borderLeftIcon,\n borderRadiusBottomLeftIcon: borderRadiusBottomLeftIcon,\n borderRadiusBottomRightIcon: borderRadiusBottomRightIcon,\n borderRadiusIcon: borderRadiusIcon,\n borderRadiusTopLeftIcon: borderRadiusTopLeftIcon,\n borderRadiusTopRightIcon: borderRadiusTopRightIcon,\n borderRightIcon: borderRightIcon,\n borderStyleBottomIcon: borderStyleBottomIcon,\n borderStyleIcon: borderStyleIcon,\n borderStyleLeftIcon: borderStyleLeftIcon,\n borderStyleRightIcon: borderStyleRightIcon,\n borderStyleTopIcon: borderStyleTopIcon,\n borderTopIcon: borderTopIcon,\n borderTypeIcon: borderTypeIcon,\n bordersAllIcon: bordersAllIcon,\n bordersInsideHorizontalIcon: bordersInsideHorizontalIcon,\n bordersInsideIcon: bordersInsideIcon,\n bordersInsideVerticalIcon: bordersInsideVerticalIcon,\n bordersNoneIcon: bordersNoneIcon,\n bordersOutsideIcon: bordersOutsideIcon,\n bordersShowHideIcon: bordersShowHideIcon,\n boxSizingIcon: boxSizingIcon,\n brightnessContrastIcon: brightnessContrastIcon,\n bringBackwardIcon: bringBackwardIcon,\n bringForwardIcon: bringForwardIcon,\n bringToBackIcon: bringToBackIcon,\n bringToFrontIcon: bringToFrontIcon,\n brushIcon: brushIcon,\n buildingBlocksIcon: buildingBlocksIcon,\n buttonIcon: buttonIcon,\n calculatorIcon: calculatorIcon,\n calendarDateIcon: calendarDateIcon,\n calendarIcon: calendarIcon,\n cameraIcon: cameraIcon,\n cancelCircleIcon: cancelCircleIcon,\n cancelIcon: cancelIcon,\n cancelOutlineIcon: cancelOutlineIcon,\n caretAltDownIcon: caretAltDownIcon,\n caretAltExpandIcon: caretAltExpandIcon,\n caretAltLeftIcon: caretAltLeftIcon,\n caretAltRightIcon: caretAltRightIcon,\n caretAltToBottomIcon: caretAltToBottomIcon,\n caretAltToLeftIcon: caretAltToLeftIcon,\n caretAltToRightIcon: caretAltToRightIcon,\n caretAltToTopIcon: caretAltToTopIcon,\n caretAltUpIcon: caretAltUpIcon,\n caretBlIcon: caretBlIcon,\n caretBrIcon: caretBrIcon,\n caretDoubleAltDownIcon: caretDoubleAltDownIcon,\n caretDoubleAltLeftIcon: caretDoubleAltLeftIcon,\n caretDoubleAltRightIcon: caretDoubleAltRightIcon,\n caretDoubleAltUpIcon: caretDoubleAltUpIcon,\n caretTlIcon: caretTlIcon,\n caretTrIcon: caretTrIcon,\n cartIcon: cartIcon,\n categorizeIcon: categorizeIcon,\n cellSplitHorizontallyIcon: cellSplitHorizontallyIcon,\n cellSplitVerticallyIcon: cellSplitVerticallyIcon,\n cellsMergeHorizontallyIcon: cellsMergeHorizontallyIcon,\n cellsMergeIcon: cellsMergeIcon,\n cellsMergeVerticallyIcon: cellsMergeVerticallyIcon,\n changeManuallyIcon: changeManuallyIcon,\n chartAreaClusteredIcon: chartAreaClusteredIcon,\n chartAreaRangeIcon: chartAreaRangeIcon,\n chartAreaStacked100Icon: chartAreaStacked100Icon,\n chartAreaStackedIcon: chartAreaStackedIcon,\n chartBarClusteredIcon: chartBarClusteredIcon,\n chartBarRangeIcon: chartBarRangeIcon,\n chartBarStacked100Icon: chartBarStacked100Icon,\n chartBarStackedIcon: chartBarStackedIcon,\n chartBubbleIcon: chartBubbleIcon,\n chartCandlestickIcon: chartCandlestickIcon,\n chartChoroplethIcon: chartChoroplethIcon,\n chartColumnClusteredIcon: chartColumnClusteredIcon,\n chartColumnRangeIcon: chartColumnRangeIcon,\n chartColumnStacked100Icon: chartColumnStacked100Icon,\n chartColumnStackedIcon: chartColumnStackedIcon,\n chartDoughnutIcon: chartDoughnutIcon,\n chartLineIcon: chartLineIcon,\n chartLineMarkersIcon: chartLineMarkersIcon,\n chartLineStacked100Icon: chartLineStacked100Icon,\n chartLineStacked100MarkersIcon: chartLineStacked100MarkersIcon,\n chartLineStackedIcon: chartLineStackedIcon,\n chartLineStackedMarkersIcon: chartLineStackedMarkersIcon,\n chartOhlcIcon: chartOhlcIcon,\n chartPieIcon: chartPieIcon,\n chartRadarFilledIcon: chartRadarFilledIcon,\n chartRadarIcon: chartRadarIcon,\n chartRadarMarkersIcon: chartRadarMarkersIcon,\n chartRoseIcon: chartRoseIcon,\n chartScatterIcon: chartScatterIcon,\n chartScatterSmoothLinesIcon: chartScatterSmoothLinesIcon,\n chartScatterSmoothLinesMarkersIcon: chartScatterSmoothLinesMarkersIcon,\n chartScatterStraightLinesIcon: chartScatterStraightLinesIcon,\n chartScatterStraightLinesMarkersIcon: chartScatterStraightLinesMarkersIcon,\n checkCircleIcon: checkCircleIcon,\n checkIcon: checkIcon,\n checkOutlineIcon: checkOutlineIcon,\n checkboxCheckedIcon: checkboxCheckedIcon,\n checkboxIcon: checkboxIcon,\n checkboxIndeterminateIcon: checkboxIndeterminateIcon,\n checkboxNullIcon: checkboxNullIcon,\n chevronDoubleDownIcon: chevronDoubleDownIcon,\n chevronDoubleLeftIcon: chevronDoubleLeftIcon,\n chevronDoubleRightIcon: chevronDoubleRightIcon,\n chevronDoubleUpIcon: chevronDoubleUpIcon,\n chevronDownIcon: chevronDownIcon,\n chevronLeftIcon: chevronLeftIcon,\n chevronRightIcon: chevronRightIcon,\n chevronUpIcon: chevronUpIcon,\n circleIcon: circleIcon,\n clearCssIcon: clearCssIcon,\n clipboardCodeIcon: clipboardCodeIcon,\n clipboardHtmlIcon: clipboardHtmlIcon,\n clipboardIcon: clipboardIcon,\n clipboardMarkdownIcon: clipboardMarkdownIcon,\n clipboardTextIcon: clipboardTextIcon,\n clipboardWordAltIcon: clipboardWordAltIcon,\n clipboardWordIcon: clipboardWordIcon,\n clockArrowRotateIcon: clockArrowRotateIcon,\n clockIcon: clockIcon,\n closedCaptionsIcon: closedCaptionsIcon,\n cloudIcon: cloudIcon,\n codeIcon: codeIcon,\n codeSnippetIcon: codeSnippetIcon,\n colResizeIcon: colResizeIcon,\n columnFreezeIcon: columnFreezeIcon,\n columnsIcon: columnsIcon,\n commentIcon: commentIcon,\n commentRemoveIcon: commentRemoveIcon,\n commentsRemoveIcon: commentsRemoveIcon,\n connectorIcon: connectorIcon,\n convertLowercaseIcon: convertLowercaseIcon,\n convertUppercaseIcon: convertUppercaseIcon,\n copyFormatIcon: copyFormatIcon,\n copyIcon: copyIcon,\n cropIcon: cropIcon,\n crosstabIcon: crosstabIcon,\n crosstabWizardIcon: crosstabWizardIcon,\n csIcon: csIcon,\n csprojIcon: csprojIcon,\n css3Icon: css3Icon,\n cssIcon: cssIcon,\n customFormatIcon: customFormatIcon,\n customIconIcon: customIconIcon,\n cutIcon: cutIcon,\n dataCsvIcon: dataCsvIcon,\n dataIcon: dataIcon,\n dataJsonIcon: dataJsonIcon,\n dataOdsIcon: dataOdsIcon,\n dataRestIcon: dataRestIcon,\n dataSdsIcon: dataSdsIcon,\n dataSqlIcon: dataSqlIcon,\n dataWebIcon: dataWebIcon,\n decimalDecreaseIcon: decimalDecreaseIcon,\n decimalIncreaseIcon: decimalIncreaseIcon,\n decreaseHorizontalSpacingIcon: decreaseHorizontalSpacingIcon,\n decreaseVerticalSpacingIcon: decreaseVerticalSpacingIcon,\n deliciousBoxIcon: deliciousBoxIcon,\n deliciousIcon: deliciousIcon,\n detailSectionIcon: detailSectionIcon,\n diggBoxIcon: diggBoxIcon,\n diggIcon: diggIcon,\n dimensionsIcon: dimensionsIcon,\n displayBlockIcon: displayBlockIcon,\n displayFlexIcon: displayFlexIcon,\n displayInlineBlockIcon: displayInlineBlockIcon,\n displayInlineFlexIcon: displayInlineFlexIcon,\n divIcon: divIcon,\n divideIcon: divideIcon,\n documentManagerIcon: documentManagerIcon,\n dollarIcon: dollarIcon,\n downloadIcon: downloadIcon,\n downloadLightIcon: downloadLightIcon,\n dragAndDropIcon: dragAndDropIcon,\n dribbbleBoxIcon: dribbbleBoxIcon,\n dribbbleIcon: dribbbleIcon,\n dropletIcon: dropletIcon,\n dropletSlashIcon: dropletSlashIcon,\n dropletSliderIcon: dropletSliderIcon,\n editToolsIcon: editToolsIcon,\n envelopBoxIcon: envelopBoxIcon,\n envelopIcon: envelopIcon,\n envelopLinkIcon: envelopLinkIcon,\n envelopeBoxIcon: envelopeBoxIcon,\n envelopeIcon: envelopeIcon,\n envelopeLinkIcon: envelopeLinkIcon,\n equalIcon: equalIcon,\n exclamationCircleIcon: exclamationCircleIcon,\n exeIcon: exeIcon,\n exportIcon: exportIcon,\n eyeIcon: eyeIcon,\n eyeSlashIcon: eyeSlashIcon,\n eyedropperIcon: eyedropperIcon,\n facebookBoxIcon: facebookBoxIcon,\n facebookIcon: facebookIcon,\n fileAddIcon: fileAddIcon,\n fileAscxIcon: fileAscxIcon,\n fileAudioIcon: fileAudioIcon,\n fileBacIcon: fileBacIcon,\n fileConfigIcon: fileConfigIcon,\n fileCsvIcon: fileCsvIcon,\n fileDataIcon: fileDataIcon,\n fileDiscImageIcon: fileDiscImageIcon,\n fileErrorIcon: fileErrorIcon,\n fileExcelIcon: fileExcelIcon,\n fileFlashIcon: fileFlashIcon,\n fileFooterIcon: fileFooterIcon,\n fileHeaderIcon: fileHeaderIcon,\n fileHorizontalIcon: fileHorizontalIcon,\n fileIcon: fileIcon,\n fileImageIcon: fileImageIcon,\n fileMdbIcon: fileMdbIcon,\n filePdfIcon: filePdfIcon,\n filePptIcon: filePptIcon,\n filePresentationIcon: filePresentationIcon,\n fileProgrammingIcon: fileProgrammingIcon,\n filePsdIcon: filePsdIcon,\n fileReportIcon: fileReportIcon,\n fileTxtIcon: fileTxtIcon,\n fileTypescriptIcon: fileTypescriptIcon,\n fileVideoIcon: fileVideoIcon,\n fileWordIcon: fileWordIcon,\n fileWrenchIcon: fileWrenchIcon,\n fileZipIcon: fileZipIcon,\n filesErrorIcon: filesErrorIcon,\n filmIcon: filmIcon,\n filterAddExpressionIcon: filterAddExpressionIcon,\n filterAddGroupIcon: filterAddGroupIcon,\n filterClearIcon: filterClearIcon,\n filterIcon: filterIcon,\n filterSmallIcon: filterSmallIcon,\n filterSortAscSmallIcon: filterSortAscSmallIcon,\n filterSortDescSmallIcon: filterSortDescSmallIcon,\n flashManagerIcon: flashManagerIcon,\n flipHorizontalIcon: flipHorizontalIcon,\n flipVerticalIcon: flipVerticalIcon,\n folderAddIcon: folderAddIcon,\n folderIcon: folderIcon,\n folderMoreIcon: folderMoreIcon,\n folderOpenIcon: folderOpenIcon,\n folderUpIcon: folderUpIcon,\n fontFamilyIcon: fontFamilyIcon,\n fontGrowIcon: fontGrowIcon,\n fontShrinkIcon: fontShrinkIcon,\n fontSizeIcon: fontSizeIcon,\n foregroundColorIcon: foregroundColorIcon,\n formElementIcon: formElementIcon,\n formIcon: formIcon,\n formatCodeBlockIcon: formatCodeBlockIcon,\n formulaFxIcon: formulaFxIcon,\n forwardIcon: forwardIcon,\n fullscreenExitIcon: fullscreenExitIcon,\n fullscreenIcon: fullscreenIcon,\n gapColumnIcon: gapColumnIcon,\n gapRowIcon: gapRowIcon,\n gaugeLinearIcon: gaugeLinearIcon,\n gaugeRadialIcon: gaugeRadialIcon,\n gearIcon: gearIcon,\n gearsIcon: gearsIcon,\n globeIcon: globeIcon,\n globeLinkIcon: globeLinkIcon,\n globeOutlineIcon: globeOutlineIcon,\n globeUnlinkIcon: globeUnlinkIcon,\n googleBoxIcon: googleBoxIcon,\n googleIcon: googleIcon,\n googlePlusBoxIcon: googlePlusBoxIcon,\n googlePlusIcon: googlePlusIcon,\n graphIcon: graphIcon,\n grayscaleIcon: grayscaleIcon,\n greaterOrEqualIcon: greaterOrEqualIcon,\n gridIcon: gridIcon,\n gridLayoutIcon: gridLayoutIcon,\n groupBoxIcon: groupBoxIcon,\n groupCollectionIcon: groupCollectionIcon,\n groupFooterSectionIcon: groupFooterSectionIcon,\n groupHeaderSectionIcon: groupHeaderSectionIcon,\n groupIcon: groupIcon,\n groupSectionIcon: groupSectionIcon,\n h1Icon: h1Icon,\n h2Icon: h2Icon,\n h3Icon: h3Icon,\n h4Icon: h4Icon,\n h5Icon: h5Icon,\n h6Icon: h6Icon,\n handIcon: handIcon,\n handleDragIcon: handleDragIcon,\n handleResizeAltIcon: handleResizeAltIcon,\n handleResizeIcon: handleResizeIcon,\n hdIcon: hdIcon,\n heartIcon: heartIcon,\n heartOutlineIcon: heartOutlineIcon,\n homeIcon: homeIcon,\n horizontalRuleIcon: horizontalRuleIcon,\n html5Icon: html5Icon,\n hyperlinkOpenIcon: hyperlinkOpenIcon,\n hyperlinkOpenSmIcon: hyperlinkOpenSmIcon,\n imageAbsolutePositionIcon: imageAbsolutePositionIcon,\n imageAddIcon: imageAddIcon,\n imageEditIcon: imageEditIcon,\n imageExportIcon: imageExportIcon,\n imageIcon: imageIcon,\n imageMapEditorIcon: imageMapEditorIcon,\n imageResizeIcon: imageResizeIcon,\n imagesIcon: imagesIcon,\n importIcon: importIcon,\n inboxIcon: inboxIcon,\n increaseHorizontalSpacingIcon: increaseHorizontalSpacingIcon,\n increaseVerticalSpacingIcon: increaseVerticalSpacingIcon,\n indentIcon: indentIcon,\n infoCircleIcon: infoCircleIcon,\n inheritedIcon: inheritedIcon,\n insertBottomIcon: insertBottomIcon,\n insertMiddleIcon: insertMiddleIcon,\n insertTopIcon: insertTopIcon,\n invertColorsIcon: invertColorsIcon,\n italicIcon: italicIcon,\n jsIcon: jsIcon,\n justifyContentAroundAltIcon: justifyContentAroundAltIcon,\n justifyContentAroundIcon: justifyContentAroundIcon,\n justifyContentBetweenAltIcon: justifyContentBetweenAltIcon,\n justifyContentBetweenIcon: justifyContentBetweenIcon,\n justifyContentCenterAltIcon: justifyContentCenterAltIcon,\n justifyContentCenterIcon: justifyContentCenterIcon,\n justifyContentEndAltIcon: justifyContentEndAltIcon,\n justifyContentEndIcon: justifyContentEndIcon,\n justifyContentStartAltIcon: justifyContentStartAltIcon,\n justifyContentStartIcon: justifyContentStartIcon,\n kpiStatusDenyIcon: kpiStatusDenyIcon,\n kpiStatusHoldIcon: kpiStatusHoldIcon,\n kpiStatusOpenIcon: kpiStatusOpenIcon,\n launchIcon: launchIcon,\n layout1By4Icon: layout1By4Icon,\n layout2By2Icon: layout2By2Icon,\n layoutIcon: layoutIcon,\n layoutSideBySideIcon: layoutSideBySideIcon,\n layoutStackedIcon: layoutStackedIcon,\n lessOrEqualIcon: lessOrEqualIcon,\n letterSpaceIcon: letterSpaceIcon,\n levelDownIcon: levelDownIcon,\n levelToTopIcon: levelToTopIcon,\n levelUpIcon: levelUpIcon,\n lineHeightIcon: lineHeightIcon,\n linkAddIcon: linkAddIcon,\n linkIcon: linkIcon,\n linkVerticalIcon: linkVerticalIcon,\n linkedinBoxIcon: linkedinBoxIcon,\n linkedinIcon: linkedinIcon,\n listLatinBigIcon: listLatinBigIcon,\n listLatinSmallIcon: listLatinSmallIcon,\n listOrderedIcon: listOrderedIcon,\n listRomanBigIcon: listRomanBigIcon,\n listRomanLowerIcon: listRomanLowerIcon,\n listRomanSmallIcon: listRomanSmallIcon,\n listRomanUpperIcon: listRomanUpperIcon,\n listUnorderedIcon: listUnorderedIcon,\n listUnorderedOutlineIcon: listUnorderedOutlineIcon,\n listUnorderedSquareIcon: listUnorderedSquareIcon,\n lockIcon: lockIcon,\n loginIcon: loginIcon,\n logoutIcon: logoutIcon,\n makeHorizontalSpacingEqualIcon: makeHorizontalSpacingEqualIcon,\n makeSameHeightIcon: makeSameHeightIcon,\n makeSameSizeIcon: makeSameSizeIcon,\n makeSameWidthIcon: makeSameWidthIcon,\n makeVerticalSpacingEqualIcon: makeVerticalSpacingEqualIcon,\n mapMarkerIcon: mapMarkerIcon,\n mapMarkerTargetIcon: mapMarkerTargetIcon,\n maxHeightIcon: maxHeightIcon,\n maxWidthIcon: maxWidthIcon,\n mediaManagerIcon: mediaManagerIcon,\n menuIcon: menuIcon,\n minHeightIcon: minHeightIcon,\n minWidthIcon: minWidthIcon,\n minusCircleIcon: minusCircleIcon,\n minusIcon: minusIcon,\n minusOutlineIcon: minusOutlineIcon,\n minusSmIcon: minusSmIcon,\n mirrorIcon: mirrorIcon,\n moreHorizontalIcon: moreHorizontalIcon,\n moreVerticalIcon: moreVerticalIcon,\n musicNotesIcon: musicNotesIcon,\n myspaceBoxIcon: myspaceBoxIcon,\n myspaceIcon: myspaceIcon,\n nonRecurrenceIcon: nonRecurrenceIcon,\n notEqualIcon: notEqualIcon,\n outdentIcon: outdentIcon,\n outlineOffsetIcon: outlineOffsetIcon,\n outlineWidthIcon: outlineWidthIcon,\n overlapIcon: overlapIcon,\n paddingBottomIcon: paddingBottomIcon,\n paddingIcon: paddingIcon,\n paddingLeftIcon: paddingLeftIcon,\n paddingRightIcon: paddingRightIcon,\n paddingTopIcon: paddingTopIcon,\n pageFooterSectionIcon: pageFooterSectionIcon,\n pageHeaderSectionIcon: pageHeaderSectionIcon,\n paletteIcon: paletteIcon,\n paneFreezeIcon: paneFreezeIcon,\n paperPlaneIcon: paperPlaneIcon,\n paperclipAltIcon: paperclipAltIcon,\n paperclipIcon: paperclipIcon,\n paragraphAddIcon: paragraphAddIcon,\n parameterBooleanIcon: parameterBooleanIcon,\n parameterDateTimeIcon: parameterDateTimeIcon,\n parameterFloatIcon: parameterFloatIcon,\n parameterIntegerIcon: parameterIntegerIcon,\n parameterStringIcon: parameterStringIcon,\n parametersByteArrayIcon: parametersByteArrayIcon,\n parametersIcon: parametersIcon,\n parametersUnknownIcon: parametersUnknownIcon,\n passwordIcon: passwordIcon,\n pauseIcon: pauseIcon,\n pauseSmIcon: pauseSmIcon,\n pencilIcon: pencilIcon,\n percentIcon: percentIcon,\n photosIcon: photosIcon,\n pinIcon: pinIcon,\n pinterestBoxIcon: pinterestBoxIcon,\n pinterestIcon: pinterestIcon,\n playIcon: playIcon,\n playSmIcon: playSmIcon,\n playlistIcon: playlistIcon,\n plusCircleIcon: plusCircleIcon,\n plusIcon: plusIcon,\n plusOutlineIcon: plusOutlineIcon,\n plusSmIcon: plusSmIcon,\n pointerIcon: pointerIcon,\n positionBottomIcon: positionBottomIcon,\n positionLeftIcon: positionLeftIcon,\n positionRightIcon: positionRightIcon,\n positionTopIcon: positionTopIcon,\n printIcon: printIcon,\n puzzlePieceIcon: puzzlePieceIcon,\n qrCodeIcon: qrCodeIcon,\n qrCodeOutlineIcon: qrCodeOutlineIcon,\n qrCodeScannerIcon: qrCodeScannerIcon,\n questionCircleIcon: questionCircleIcon,\n radiobuttonCheckedIcon: radiobuttonCheckedIcon,\n radiobuttonIcon: radiobuttonIcon,\n redditBoxIcon: redditBoxIcon,\n redditIcon: redditIcon,\n redoIcon: redoIcon,\n regularExpressionIcon: regularExpressionIcon,\n removeHorizontalSpacingIcon: removeHorizontalSpacingIcon,\n removeVerticalSpacingIcon: removeVerticalSpacingIcon,\n reorderIcon: reorderIcon,\n replaceAllIcon: replaceAllIcon,\n replaceSingleIcon: replaceSingleIcon,\n reportElementIcon: reportElementIcon,\n rewindIcon: rewindIcon,\n rightDoubleQuotesIcon: rightDoubleQuotesIcon,\n rotateIcon: rotateIcon,\n rotateLeftIcon: rotateLeftIcon,\n rotateRightIcon: rotateRightIcon,\n roundCornersIcon: roundCornersIcon,\n rowFreezeIcon: rowFreezeIcon,\n rowsIcon: rowsIcon,\n rssBoxIcon: rssBoxIcon,\n rssIcon: rssIcon,\n saveIcon: saveIcon,\n searchIcon: searchIcon,\n selectAllIcon: selectAllIcon,\n selectBoxIcon: selectBoxIcon,\n setColumnPositionIcon: setColumnPositionIcon,\n shapeLineIcon: shapeLineIcon,\n shapesIcon: shapesIcon,\n shareIcon: shareIcon,\n sharpenIcon: sharpenIcon,\n signatureIcon: signatureIcon,\n silverlightIcon: silverlightIcon,\n sizeToGridIcon: sizeToGridIcon,\n slidersIcon: slidersIcon,\n slnIcon: slnIcon,\n snapGridIcon: snapGridIcon,\n snapToGridlinesIcon: snapToGridlinesIcon,\n snapToSnaplinesIcon: snapToSnaplinesIcon,\n sortAscIcon: sortAscIcon,\n sortAscSmallIcon: sortAscSmallIcon,\n sortClearIcon: sortClearIcon,\n sortDescIcon: sortDescIcon,\n sortDescSmallIcon: sortDescSmallIcon,\n spellCheckerIcon: spellCheckerIcon,\n starIcon: starIcon,\n starOutlineIcon: starOutlineIcon,\n stickIcon: stickIcon,\n stopIcon: stopIcon,\n stopSmIcon: stopSmIcon,\n strikethroughIcon: strikethroughIcon,\n stripAllFormattingIcon: stripAllFormattingIcon,\n stripCssFormatIcon: stripCssFormatIcon,\n stripFontElementsIcon: stripFontElementsIcon,\n stripSpanElementsIcon: stripSpanElementsIcon,\n stripWordFormattingIcon: stripWordFormattingIcon,\n stumbleUponBoxIcon: stumbleUponBoxIcon,\n stumbleUponIcon: stumbleUponIcon,\n subreportIcon: subreportIcon,\n subscriptIcon: subscriptIcon,\n sumIcon: sumIcon,\n supscriptIcon: supscriptIcon,\n symbolIcon: symbolIcon,\n tableAddIcon: tableAddIcon,\n tableAlignBottomCenterIcon: tableAlignBottomCenterIcon,\n tableAlignBottomLeftIcon: tableAlignBottomLeftIcon,\n tableAlignBottomRightIcon: tableAlignBottomRightIcon,\n tableAlignMiddleCenterIcon: tableAlignMiddleCenterIcon,\n tableAlignMiddleLeftIcon: tableAlignMiddleLeftIcon,\n tableAlignMiddleRightIcon: tableAlignMiddleRightIcon,\n tableAlignRemoveIcon: tableAlignRemoveIcon,\n tableAlignTopCenterIcon: tableAlignTopCenterIcon,\n tableAlignTopLeftIcon: tableAlignTopLeftIcon,\n tableAlignTopRightIcon: tableAlignTopRightIcon,\n tableBodyIcon: tableBodyIcon,\n tableCellDeleteIcon: tableCellDeleteIcon,\n tableCellIcon: tableCellIcon,\n tableCellPropertiesIcon: tableCellPropertiesIcon,\n tableColumnDeleteIcon: tableColumnDeleteIcon,\n tableColumnGroupsIcon: tableColumnGroupsIcon,\n tableColumnInsertLeftIcon: tableColumnInsertLeftIcon,\n tableColumnInsertRightIcon: tableColumnInsertRightIcon,\n tableCornerIcon: tableCornerIcon,\n tableDeleteIcon: tableDeleteIcon,\n tableIcon: tableIcon,\n tablePositionCenterIcon: tablePositionCenterIcon,\n tablePositionEndIcon: tablePositionEndIcon,\n tablePositionStartIcon: tablePositionStartIcon,\n tablePropertiesIcon: tablePropertiesIcon,\n tableRowDeleteIcon: tableRowDeleteIcon,\n tableRowGroupsIcon: tableRowGroupsIcon,\n tableRowInsertAboveIcon: tableRowInsertAboveIcon,\n tableRowInsertBelowIcon: tableRowInsertBelowIcon,\n tableUnmergeIcon: tableUnmergeIcon,\n tableWizardIcon: tableWizardIcon,\n tellAFriendBoxIcon: tellAFriendBoxIcon,\n tellAFriendIcon: tellAFriendIcon,\n templateManagerIcon: templateManagerIcon,\n textClipIcon: textClipIcon,\n textOverflowIcon: textOverflowIcon,\n textTruncateIcon: textTruncateIcon,\n textWrapArrowIcon: textWrapArrowIcon,\n textWrapIcon: textWrapIcon,\n textareaIcon: textareaIcon,\n textboxHiddenIcon: textboxHiddenIcon,\n textboxIcon: textboxIcon,\n thumbnailsDownIcon: thumbnailsDownIcon,\n thumbnailsLeftIcon: thumbnailsLeftIcon,\n thumbnailsRightIcon: thumbnailsRightIcon,\n thumbnailsUpIcon: thumbnailsUpIcon,\n tocSectionIcon: tocSectionIcon,\n tocSectionLevelIcon: tocSectionLevelIcon,\n toggleFullScreenModeIcon: toggleFullScreenModeIcon,\n toolbarFloatIcon: toolbarFloatIcon,\n trackChangesAcceptAllIcon: trackChangesAcceptAllIcon,\n trackChangesAcceptIcon: trackChangesAcceptIcon,\n trackChangesEnableIcon: trackChangesEnableIcon,\n trackChangesIcon: trackChangesIcon,\n trackChangesRejectAllIcon: trackChangesRejectAllIcon,\n trackChangesRejectIcon: trackChangesRejectIcon,\n transparencyIcon: transparencyIcon,\n trashIcon: trashIcon,\n tumblrBoxIcon: tumblrBoxIcon,\n tumblrIcon: tumblrIcon,\n twitterBoxIcon: twitterBoxIcon,\n twitterIcon: twitterIcon,\n underlineIcon: underlineIcon,\n undoIcon: undoIcon,\n ungroupIcon: ungroupIcon,\n unlinkIcon: unlinkIcon,\n unlinkVerticalIcon: unlinkVerticalIcon,\n unlockIcon: unlockIcon,\n unpinIcon: unpinIcon,\n unstickIcon: unstickIcon,\n uploadIcon: uploadIcon,\n userIcon: userIcon,\n validationDataIcon: validationDataIcon,\n validationXhtmlIcon: validationXhtmlIcon,\n vbIcon: vbIcon,\n vbprojIcon: vbprojIcon,\n videoExternalIcon: videoExternalIcon,\n vimeoBoxIcon: vimeoBoxIcon,\n vimeoIcon: vimeoIcon,\n volumeDownIcon: volumeDownIcon,\n volumeMuteIcon: volumeMuteIcon,\n volumeUpIcon: volumeUpIcon,\n warningCircleIcon: warningCircleIcon,\n warningTriangleIcon: warningTriangleIcon,\n wholeWordIcon: wholeWordIcon,\n windowIcon: windowIcon,\n windowMinimizeIcon: windowMinimizeIcon,\n windowRestoreIcon: windowRestoreIcon,\n wrenchIcon: wrenchIcon,\n xCircleIcon: xCircleIcon,\n xIcon: xIcon,\n xOutlineIcon: xOutlineIcon,\n yammerBoxIcon: yammerBoxIcon,\n yammerIcon: yammerIcon,\n youtubeBoxIcon: youtubeBoxIcon,\n youtubeIcon: youtubeIcon,\n zoomActualSizeIcon: zoomActualSizeIcon,\n zoomBestFitIcon: zoomBestFitIcon,\n zoomInIcon: zoomInIcon,\n zoomOutIcon: zoomOutIcon\n });\n\n var __meta__$I = {\n id: \"icons\",\n name: \"Icons\",\n category: \"web\",\n description: \"The Icons set provides both FontIcon and SvgIcon components along with the SVG icons collection from @progress/kendo-svg-icons\",\n depends: [\"core\", \"html.icon\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n html = kendo.html,\n ui = kendo.ui,\n Widget = ui.Widget,\n extend = $.extend;\n\n var FontIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLFontIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLFontIcon.fn.options, {\n name: 'FontIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n that._icon = new html.HTMLFontIcon(that.element, $.extend({}, that.options));\n }\n });\n\n var SvgIcon = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n\n delete options.name;\n that._icon = new html.HTMLSvgIcon(element, $.extend({}, options));\n that.element = that.wrapper = that._icon.element;\n\n kendo.notify(that);\n },\n options: extend({}, html.HTMLSvgIcon.fn.options, {\n name: 'SvgIcon'\n }),\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n if (options.icon) {\n this.element.html('');\n }\n\n that._icon = new html.HTMLSvgIcon(that.element, $.extend({}, that.options));\n }\n });\n\n kendo.ui.plugin(FontIcon);\n kendo.ui.plugin(SvgIcon);\n\n kendo.setDefaults('iconType', 'svg');\n kendo.ui.svgIcons = svgIcons;\n kendo.ui.icon = html.renderIcon;\n })(window.kendo.jQuery);\n var kendo$H = kendo;\n\n var __meta__$H = {\n id: \"tooltip\",\n name: \"Tooltip\",\n category: \"web\",\n description: \"The Tooltip widget displays a popup hint for a given html element.\",\n depends: [ \"core\", \"popup\", \"icons\" ],\n features: [ {\n id: \"tooltip-fx\",\n name: \"Animation\",\n description: \"Support for animation\",\n depends: [ \"fx\" ]\n } ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n Popup = kendo.ui.Popup,\n isFunction = kendo.isFunction,\n isPlainObject = $.isPlainObject,\n extend = $.extend,\n DOCUMENT = $(document),\n isLocalUrl = kendo.isLocalUrl,\n ARIAIDSUFFIX = \"_tb_active\",\n DESCRIBEDBY = \"aria-describedby\",\n SHOW = \"show\",\n HIDE = \"hide\",\n ERROR = \"error\",\n CONTENTLOAD = \"contentLoad\",\n REQUESTSTART = \"requestStart\",\n KCONTENTFRAME = \"k-content-frame\",\n TEMPLATE = function (ref) {\n var autoHide = ref.autoHide;\n var callout = ref.callout;\n var dir = ref.dir;\n\n return \"
    \" +\n '
    ' +\n (!autoHide ? (\"
    \" + (kendo.ui.icon($(''), { icon: \"x\" })) + \"
    \") : '') +\n (callout ? (\"
    \") : '') +\n '
    ';\n },\n IFRAMETEMPLATE = kendo.template(function (ref) {\n var content = ref.content;\n\n return \"\";\n }\n ),\n NS = \".kendoTooltip\",\n POSITIONS = {\n bottom: {\n origin: \"bottom center\",\n position: \"top center\"\n },\n top: {\n origin: \"top center\",\n position: \"bottom center\"\n },\n left: {\n origin: \"center left\",\n position: \"center right\",\n collision: \"fit flip\"\n },\n right: {\n origin: \"center right\",\n position: \"center left\",\n collision: \"fit flip\"\n },\n center: {\n position: \"center center\",\n origin: \"center center\"\n }\n },\n REVERSE = {\n \"top\": \"bottom\",\n \"bottom\": \"top\",\n \"left\": \"right\",\n \"right\": \"left\",\n \"center\": \"center\"\n },\n DIRCLASSES = {\n bottom: \"n\",\n top: \"s\",\n left: \"e\",\n right: \"w\",\n center: \"n\"\n },\n DIMENSIONS = {\n \"horizontal\": { offset: \"top\", size: \"outerHeight\" },\n \"vertical\": { offset: \"left\", size: \"outerWidth\" }\n },\n DEFAULTCONTENT = function(e) {\n return e.target.data(kendo.ns + \"title\");\n };\n\n function restoreTitle(element) {\n while (element.length) {\n if (restoreTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n function restoreTitleAttributeForElement(element) {\n var title = element.data(kendo.ns + \"title\");\n if (title) {\n element.attr(\"title\", title);\n element.removeData(kendo.ns + \"title\");\n return true;\n }\n }\n\n function saveTitleAttributeForElement(element) {\n var title = element.attr(\"title\");\n if (title) {\n element.data(kendo.ns + \"title\", title);\n element.attr(\"title\", \"\");\n return true;\n }\n }\n\n function saveTitleAttributes(element) {\n while (element.length && !element.is(\"body\")) {\n if (saveTitleAttributeForElement(element)) {\n break;\n }\n element = element.parent();\n }\n }\n\n var TooltipBase = Widget.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n Widget.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n if (kendo.support.touch && this._isShownOnMouseEnter()) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._showOn.bind(that));\n }\n\n that.element.on(that.options.showOn + NS, that.options.filter, that._showOn.bind(that));\n\n if (that.options.showOn === \"click\") {\n that.element.on(\"keydown\" + NS, that.options.filter, that._keydown.bind(that));\n }\n },\n\n options: {\n name: \"TooltipBase\",\n filter: \"\",\n offset: 0,\n showAfter: 100,\n hideAfter: 100,\n callout: true,\n position: \"bottom\",\n showOn: \"mouseenter\",\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n destroy: function() {\n var popup = this.popup;\n\n if (popup) {\n popup.element.off(NS);\n popup.destroy();\n }\n\n clearTimeout(this.timeout);\n\n Widget.fn.destroy.call(this);\n },\n\n hide: function() {\n if (this.popup) {\n this.popup.close();\n }\n },\n\n show: function(target) {\n target = target || this.element;\n\n this._saveTitle(target);\n this._show(target);\n },\n\n target: function() {\n if (this.popup) {\n return this.popup.options.anchor;\n }\n return null;\n },\n\n _keydown: function(e) {\n var currentTarget = $(e.currentTarget);\n\n if (e.keyCode == kendo.keys.ENTER) {\n this._show(currentTarget);\n }\n },\n\n _showOn: function(e) {\n var that = this;\n\n var currentTarget = $(e.currentTarget);\n if (that._isShownOnClick() && !that._isShownOnMouseEnter()) {\n that._show(currentTarget);\n } else if (that._isShownOnFocus()) {\n that._saveTitle(currentTarget);\n that._show(currentTarget);\n } else {\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._show(currentTarget);\n }, that.options.showAfter);\n }\n },\n\n _isShownOnFocus: function() {\n return this.options.showOn && this.options.showOn.match(/focus/);\n },\n\n _isShownOnMouseEnter: function() {\n return this.options.showOn && this.options.showOn.match(/mouseenter/);\n },\n\n _isShownOnClick: function() {\n return this.options.showOn && this.options.showOn.match(/click/);\n },\n\n _positionCallout: function() {\n var that = this,\n position = that.options.position,\n dimensions = that.dimensions,\n offset = dimensions.offset,\n popup = that.popup,\n anchor = popup.options.anchor,\n anchorOffset = $(anchor).offset(),\n elementOffset = $(popup.element).offset(),\n cssClass = DIRCLASSES[popup.flipped ? REVERSE[position] : position],\n offsetAmount = anchorOffset[offset] - elementOffset[offset] + ($(anchor)[dimensions.size]() / 2);\n\n that._offset(position, that.options.offset);\n\n that.arrow\n .removeClass(\"k-callout-n k-callout-s k-callout-w k-callout-e\")\n .addClass(\"k-callout-\" + cssClass)\n .css(offset, offsetAmount);\n },\n\n _offset: function(position, offsetAmount, arrowWidth) {\n var that = this,\n isTopLeft = position == \"top\" || position == \"left\",\n isFlipped = that.popup.flipped,\n direction = (isTopLeft && isFlipped) || (!isTopLeft && !isFlipped) ? 1 : -1,\n marginRule = isTopLeft ? \"margin-\" + position : \"margin-\" + REVERSE[position],\n offset = ((arrowWidth || kendo._outerWidth(that.arrow)) / 2) + offsetAmount;\n\n that.popup.wrapper.css(marginRule, offset * direction + \"px\");\n },\n\n _addDescribedBy: function() {\n var that = this,\n anchor = that.popup.options.anchor,\n ariaId = anchor[0].id || that.element[0].id || kendo.guid(),\n describedBy = [];\n\n if (anchor.attr(DESCRIBEDBY)) {\n describedBy.push(anchor.attr(DESCRIBEDBY));\n }\n\n if (ariaId) {\n describedBy.push(ariaId + ARIAIDSUFFIX);\n anchor.attr(DESCRIBEDBY, describedBy.join(\" \"));\n that.popup.element.attr(\"id\", ariaId + ARIAIDSUFFIX);\n }\n\n },\n\n _removeDescribedBy: function(target) {\n var tooltipId = this.popup.element.attr(\"id\"),\n currentDescribedBy = target.attr(DESCRIBEDBY),\n arrayAttr, finalArray, finalDescribedbyAttr;\n\n if (!currentDescribedBy) {\n return;\n }\n\n arrayAttr = currentDescribedBy.split(\" \");\n\n if (arrayAttr && arrayAttr.length > 0) {\n finalArray = arrayAttr.filter(function(val) {\n return val !== tooltipId;\n });\n }\n\n if (finalArray && finalArray.length > 0) {\n finalDescribedbyAttr = finalArray.join(\" \");\n target.attr(DESCRIBEDBY, finalDescribedbyAttr);\n } else {\n target.removeAttr(DESCRIBEDBY);\n }\n },\n\n _openPopup: function() {\n if (!this.popup) {\n return;\n }\n\n this.popup._hovered = true;\n this.popup.open();\n }\n });\n kendo.ui.plugin(TooltipBase);\n\n var Tooltip = TooltipBase.extend({\n init: function(element, options) {\n var that = this,\n axis;\n\n TooltipBase.fn.init.call(that, element, options);\n\n axis = that.options.position.match(/left|right/) ? \"horizontal\" : \"vertical\";\n\n that.dimensions = DIMENSIONS[axis];\n\n that._documentKeyDownHandler = that._documentKeyDown.bind(that);\n\n if (this._isShownOnMouseEnter() || this._isShownOnClick()) {\n that.element.on(\"mouseenter\" + NS, that.options.filter, that._mouseenter.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnMouseEnter()) {\n that.element.on(\"mouseleave\" + NS, that.options.filter, that._mouseleave.bind(that));\n }\n\n if (this.options.autoHide && this._isShownOnFocus()) {\n that.element.on(\"blur\" + NS, that.options.filter, that._blur.bind(that));\n }\n\n if (kendo.support.touch) {\n that.element.on(kendo.support.mousedown + NS, that.options.filter, that._mouseenter.bind(that));\n }\n },\n\n options: {\n name: \"Tooltip\",\n filter: \"\",\n content: DEFAULTCONTENT,\n showAfter: 100,\n callout: true,\n offset: 0,\n position: \"bottom\",\n showOn: \"mouseenter\",\n autoHide: true,\n width: null,\n height: null,\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 0\n },\n close: {\n duration: 40,\n hide: true\n }\n }\n },\n\n events: [ SHOW, HIDE, CONTENTLOAD, ERROR, REQUESTSTART ],\n\n _mouseenter: function(e) {\n saveTitleAttributes($(e.currentTarget));\n },\n\n _saveTitle: function(target) {\n saveTitleAttributes(target);\n },\n\n _appendContent: function(target) {\n var that = this,\n contentOptions = that.options.content,\n element = that.content,\n showIframe = that.options.iframe,\n iframe;\n\n if (isPlainObject(contentOptions) && contentOptions.url) {\n if (!(\"iframe\" in that.options)) {\n showIframe = !isLocalUrl(contentOptions.url);\n }\n\n that.trigger(REQUESTSTART, { options: contentOptions, target: target });\n\n if (!showIframe) {\n element.empty();\n kendo.ui.progress(element, true);\n\n // perform AJAX request\n that._ajaxRequest(contentOptions);\n } else {\n element.hide();\n\n iframe = element.find(\".\" + KCONTENTFRAME)[0];\n\n if (iframe) {\n // refresh existing iframe\n iframe.src = contentOptions.url || iframe.src;\n } else {\n element.html(IFRAMETEMPLATE({ content: contentOptions }));\n }\n\n element.find(\".\" + KCONTENTFRAME)\n .off(\"load\" + NS)\n .on(\"load\" + NS, function() {\n that.trigger(CONTENTLOAD);\n element.show();\n });\n }\n } else if (contentOptions && isFunction(contentOptions)) {\n contentOptions = contentOptions({ sender: this, target: target });\n element.html(contentOptions || \"\");\n } else {\n element.html(contentOptions);\n }\n\n that.angular(\"compile\", function() {\n return { elements: element };\n });\n },\n\n _ajaxRequest: function(options) {\n var that = this,\n successFn = function(data) {\n kendo.ui.progress(that.content, false);\n\n that.content.html(data);\n\n if (kendo._outerHeight(that.popup.element) > kendo._outerHeight(that.popup.wrapper)) {\n that.popup.wrapper.css(\"height\", kendo._outerHeight(that.popup.element) + \"px\");\n that.popup.position();\n that._positionCallout();\n }\n\n that.trigger(CONTENTLOAD);\n };\n\n jQuery.ajax(extend({\n type: \"GET\",\n dataType: \"html\",\n cache: false,\n error: function(xhr, status) {\n kendo.ui.progress(that.content, false);\n\n that.trigger(ERROR, { status: status, xhr: xhr });\n },\n success: successFn.bind(that)\n }, options));\n },\n\n _documentKeyDown: function(e) {\n if (e.keyCode === kendo.keys.ESC) {\n this.hide();\n }\n },\n\n refresh: function() {\n var that = this,\n popup = that.popup;\n\n if (popup && popup.options.anchor) {\n that._appendContent(popup.options.anchor);\n }\n },\n\n _show: function(target) {\n var that = this,\n current = that.target();\n\n if (!that.popup) {\n that._initPopup();\n }\n\n if (current && current[0] != target[0]) {\n that.popup.close(true);\n that.popup.element.kendoStop(true, true);// animation can be too long to hide the element before it is shown again\n }\n\n if (!current || current[0] != target[0]) {\n that._appendContent(target);\n that.popup.options.anchor = target;\n }\n\n that.popup.one(\"deactivate\", function() {\n restoreTitle(target);\n\n that._removeDescribedBy(target);\n\n this.element\n .removeAttr(\"id\")\n .attr(\"aria-hidden\", true);\n\n DOCUMENT.off(\"keydown\" + NS, that._documentKeyDownHandler);\n });\n\n that._openPopup();\n },\n\n _initPopup: function() {\n var that = this,\n options = that.options,\n wrapper = $(kendo.template(TEMPLATE)({\n callout: options.callout && options.position !== \"center\",\n dir: DIRCLASSES[options.position],\n autoHide: options.autoHide\n }));\n\n that.popup = new Popup(wrapper, extend({\n autosize: true,\n activate: function() {\n that._addDescribedBy();\n\n if (options.callout) {\n that._positionCallout();\n } else {\n that._offset(that.options.position, that.options.offset);\n }\n\n this.element.removeAttr(\"aria-hidden\");\n\n DOCUMENT.on(\"keydown\" + NS, that._documentKeyDownHandler);\n\n that.trigger(SHOW);\n that.popup._hovered = undefined$1;\n },\n close: function() {\n that.trigger(HIDE);\n },\n copyAnchorStyles: false,\n animation: options.animation\n }, POSITIONS[options.position]));\n\n wrapper.css({\n width: options.width,\n height: options.height\n });\n\n that.content = wrapper.find(\".k-tooltip-content\");\n that.arrow = wrapper.find(\".k-callout\");\n\n if (options.autoHide && this._isShownOnMouseEnter()) {\n wrapper.on(\"mouseleave\" + NS, that._mouseleave.bind(that));\n } else {\n wrapper.on(\"click\" + NS, \".k-tooltip-button\", that._closeButtonClick.bind(that));\n }\n },\n\n _closeButtonClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _mouseleave: function(e) {\n var that = this;\n\n clearTimeout(that.timeout);\n\n that.timeout = setTimeout(function() {\n that._closePopup(e.currentTarget);\n }, that.options.hideAfter);\n },\n\n _blur: function(e) {\n this._closePopup(e.currentTarget);\n },\n\n _closePopup: function(target) {\n if (this.popup && !this.popup._hovered) {\n this.popup.close();\n } else {\n restoreTitle($(target));\n }\n },\n\n destroy: function() {\n this.element.off(NS);\n\n DOCUMENT.off(\"keydown\" + NS, this._documentKeyDownHandler);\n\n TooltipBase.fn.destroy.call(this);\n }\n });\n\n kendo.ui.plugin(Tooltip);\n })(window.kendo.jQuery);\n var kendo$G = kendo;\n\n (function($) {\n\n function createPromise() {\n return $.Deferred();\n }\n\n function promiseAll(promises) {\n return $.when.apply($, promises);\n }\n\n function extendStatic(dest, src) {\n if (!src) {\n return;\n }\n\n if (typeof src.__proto__ === 'function') {\n dest.__proto__ = src;\n } else {\n for (var member in src) {\n if (src.hasOwnProperty(member)) {\n dest[member] = src[member];\n }\n }\n }\n }\n\n kendo.drawing.util = kendo.drawing.util || {};\n kendo.deepExtend(kendo.drawing.util, {\n createPromise: createPromise,\n promiseAll: promiseAll,\n extendStatic: extendStatic\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n /* eslint-disable space-before-blocks, space-before-function-paren, no-multi-spaces */\n\n var __meta__$G = {\n id: \"color\",\n name: \"Color utils\",\n category: \"framework\",\n advanced: true,\n description: \"Color utilities used across components\",\n depends: [ \"core\" ]\n };\n\n window.kendo = window.kendo || {};\n\n var Class = kendo.Class;\n var support = kendo.support;\n\n var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n };\n\n var browser = support.browser;\n\n var matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n };\n\n var BaseColor = Class.extend({\n init: function() { },\n\n toHSV: function() { return this; },\n\n toRGB: function() { return this; },\n\n toHex: function(options) { return this.toBytes().toHex(options); },\n\n toBytes: function() { return this; },\n\n toCss: function(options) { return \"#\" + this.toHex(options); },\n\n toCssRgba: function() {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n },\n\n toDisplay: function() {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n },\n\n equals: function(c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n },\n\n diff: function(other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n },\n\n clone: function() {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n }\n });\n\n var RGB = BaseColor.extend({\n init: function(r, g, b, a) {\n BaseColor.fn.init.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n },\n\n toHSV: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n },\n\n toHSL: function() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n },\n\n toBytes: function() {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n });\n\n var Bytes = RGB.extend({\n init: function(r, g, b, a) {\n RGB.fn.init.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n },\n\n toRGB: function() {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toHex: function(options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n },\n\n toBytes: function() {\n return this;\n }\n });\n\n function hex(n, width, pad) {\n if (pad === void 0) { pad = \"0\"; }\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n }\n\n var HSV = BaseColor.extend({\n init: function(h, s, v, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n },\n\n toRGB: function() {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n },\n\n toHSL: function() {\n return this.toRGB().toHSL();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n var HSL = BaseColor.extend({\n init: function(h, s, l, a) {\n BaseColor.fn.init.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n },\n\n toRGB: function() {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n },\n\n toHSV: function() {\n return this.toRGB().toHSV();\n },\n\n toBytes: function() {\n return this.toRGB().toBytes();\n }\n });\n\n function hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n }\n\n function alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n }\n\n function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n }\n\n var DARK_TRESHOLD = 180;\n\n var Color = Class.extend({\n init: function(value) {\n var this$1$1 = this;\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1$1.r = channels[0];\n this$1$1.g = channels[1];\n this$1$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n },\n\n toHex: function() {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n },\n\n resolveColor: function(value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n },\n\n normalizeByte: function(value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n },\n\n padDigit: function(value) {\n return (value.length === 1) ? \"0\" + value : value;\n },\n\n brightness: function(value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n },\n\n percBrightness: function() {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n },\n\n isDark: function() {\n return this.percBrightness() < DARK_TRESHOLD;\n }\n });\n\n Color.fromBytes = function(r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function(r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function(h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function(h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n Color.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n }, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n }, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n } ];\n\n Color.namedColors = namedColors;\n\n kendo.deepExtend(kendo, {\n parseColor: parseColor,\n namedColors: namedColors,\n Color: Color\n });\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo.util = window.kendo.util || {};\n\n var LRUCache = kendo.Class.extend({\n init: function(size) {\n\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n\n put: function(key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n },\n\n get: function(key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n }\n });\n\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n }\n\n // Computes FNV-1 hash\n // See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\n function hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n }\n\n function zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n }\n\n var DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n };\n\n var defaultMeasureBox;\n\n if (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n }\n\n var TextMetrics = kendo.Class.extend({\n init: function(options) {\n\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n\n measure: function(text, style, options) {\n if (options === void 0) { options = {}; }\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n },\n\n _baselineMarker: function() {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n }\n });\n\n TextMetrics.current = new TextMetrics();\n\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n\n kendo.deepExtend(kendo.util, {\n LRUCache: LRUCache,\n TextMetrics: TextMetrics,\n measureText: measureText,\n objectKey: objectKey,\n hashKey: hashKey,\n normalizeText: normalizeText\n });\n\n })(window.kendo.jQuery);\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-drawing` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo = window.kendo || {};\n var kendoDrawing = kendo.drawing;\n var kendoDrawingUtil = kendoDrawing.util;\n var extendStatic = kendoDrawingUtil.extendStatic;\n var Class = kendo.Class;\n var kendoUtil = kendo.util;\n var support = kendo.support;\n var supportBrowser = support.browser;\n\n var createPromise = kendoDrawingUtil.createPromise;\n var promiseAll = kendoDrawingUtil.promiseAll;\n\n var HasObservers = (function (Class$$1) {\n function HasObservers () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(HasObservers, Class$$1);\n HasObservers.prototype = Object.create( Class$$1 && Class$$1.prototype );\n HasObservers.prototype.constructor = HasObservers;\n HasObservers.fn = HasObservers.prototype;\n HasObservers.fn.init = HasObservers.fn.constructor;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if (e === void 0) { e = {}; }\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n }(Class));\n\n function append$1$1(first, second) {\n first.push.apply(first, second);\n return first;\n }\n\n /* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\n var literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n };\n\n function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n\n var UNDEFINED = \"undefined\";\n\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n\n var defId = 1;\n\n function definitionId() {\n return \"kdef\" + defId++;\n }\n\n var DEG_TO_RAD = Math.PI / 180;\n var MAX_NUM = Number.MAX_VALUE;\n var MIN_NUM = -Number.MAX_VALUE;\n\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n\n var fromCharCode = String.fromCharCode;\n\n // Encodes a string as UTF-8\n function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n }\n\n // Encodes a string as UTF-16 big-endian\n\n var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n }\n\n function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n }\n\n function eventElement(e) {\n if (e === void 0) { e = {}; }\n\n return e.touch ? e.touch.initialTouch : e.target;\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n\n function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n // mergeSort is stable.\n function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n }\n\n var now = Date.now || function() {\n return new Date().getTime();\n };\n\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n\n function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n }\n\n function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n }\n\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n\n function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n }\n\n function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n }\n\n function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n }\n\n function getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n }\n\n function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n }\n\n function unbindEvents(element, events) {\n if (events === void 0) { events = {}; }\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n }\n\n function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n }\n\n var Matrix = (function (Class$$1) {\n function Matrix(a, b, c, d, e, f) {\n if (a === void 0) { a = 0; }\n if (b === void 0) { b = 0; }\n if (c === void 0) { c = 0; }\n if (d === void 0) { d = 0; }\n if (e === void 0) { e = 0; }\n if (f === void 0) { f = 0; }\n\n Class$$1.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n extendStatic(Matrix, Class$$1);\n Matrix.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Matrix.prototype.constructor = Matrix;\n Matrix.fn = Matrix.prototype;\n Matrix.fn.init = Matrix.fn.constructor;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if (separator === void 0) { separator = \",\"; }\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n }(Class));\n\n Matrix.IDENTITY = Matrix.unit();\n\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n }\n\n var util = {\n \tappend: append$1$1,\n \tarabicToRoman: arabicToRoman,\n \tcreatePromise: createPromise,\n \tdefined: defined,\n \tdefinitionId: definitionId,\n \tdeg: deg,\n \tencodeBase64: encodeBase64,\n \teventCoordinates: eventCoordinates,\n \teventElement: eventElement,\n \tisTransparent: isTransparent,\n \tlast: last,\n \tlimitValue: limitValue,\n \tmergeSort: mergeSort,\n \tnow: now,\n \tpromiseAll: promiseAll,\n \trad: rad,\n \tround: round,\n \tvalueOrDefault: valueOrDefault,\n \tbindEvents: bindEvents,\n \telementOffset: elementOffset,\n \telementSize: elementSize,\n \telementStyles: elementStyles,\n \tunbindEvents: unbindEvents,\n \telementPadding: elementPadding,\n \telementScale: elementScale,\n \tDEG_TO_RAD: DEG_TO_RAD,\n \tMAX_NUM: MAX_NUM,\n \tMIN_NUM: MIN_NUM\n };\n\n var toString$1 = {}.toString;\n\n var OptionsStore = (function (HasObservers$$1) {\n function OptionsStore(options, prefix) {\n var this$1$1 = this;\n if (prefix === void 0) { prefix = \"\"; }\n\n HasObservers$$1.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1$1._wrap(member, field);\n this$1$1[field] = member;\n }\n }\n\n extendStatic(OptionsStore, HasObservers$$1);\n OptionsStore.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n OptionsStore.fn = OptionsStore.prototype;\n OptionsStore.fn.init = OptionsStore.fn.constructor;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString$1.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n }(HasObservers));\n\n function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n }\n\n function getAccessor(field) {\n return function() {\n return this[field];\n };\n }\n\n function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n }\n\n var withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n };\n\n function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n }\n\n var Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n extendStatic(Point, superclass);\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n Point.fn = Point.prototype;\n Point.fn.init = Point.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if (scaleY === void 0) { scaleY = scaleX; }\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if (separator === void 0) { separator = \" \"; }\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n }(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\n var Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n extendStatic(Size, superclass);\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n Size.fn = Size.prototype;\n Size.fn.init = Size.fn.constructor;\n\n var staticAccessors = { ZERO: {} };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n }(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\n var Rect = (function (HasObservers$$1) {\n function Rect(origin, size, cornerRadius) {\n if (origin === void 0) { origin = new Point(); }\n if (size === void 0) { size = new Size(); }\n if (cornerRadius === void 0) { cornerRadius = 0; }\n\n HasObservers$$1.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n extendStatic(Rect, HasObservers$$1);\n Rect.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Rect.prototype.constructor = Rect;\n Rect.fn = Rect.prototype;\n Rect.fn.init = Rect.fn.constructor;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if (y === void 0) { y = x; }\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n }(HasObservers));\n\n var Transformation = (function (HasObservers$$1) {\n function Transformation(matrix) {\n if (matrix === void 0) { matrix = Matrix.unit(); }\n\n HasObservers$$1.call(this);\n\n this._matrix = matrix;\n }\n\n extendStatic(Transformation, HasObservers$$1);\n Transformation.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Transformation.prototype.constructor = Transformation;\n Transformation.fn = Transformation.prototype;\n Transformation.fn.init = Transformation.fn.constructor;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if (scaleY === void 0) { scaleY = scaleX; }\n if (origin === void 0) { origin = null; }\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n }(HasObservers));\n\n function transform$1(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n }\n\n var Element$1 = (function (HasObservers$$1) {\n function Element(options) {\n HasObservers$$1.call(this);\n\n this._initOptions(options);\n }\n\n extendStatic(Element, HasObservers$$1);\n Element.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Element.prototype.constructor = Element;\n Element.fn = Element.prototype;\n Element.fn.init = Element.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if (options === void 0) { options = {}; }\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = transform$1(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", transform$1(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return transform$1(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if (parentTransform === void 0) { parentTransform = this.parentTransform(); }\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return transform$1(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n }(HasObservers));\n\n function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n }\n\n var PI_DIV_2 = Math.PI / 2;\n\n var Circle$2 = (function (superclass) {\n function Circle(center, radius) {\n if (center === void 0) { center = new Point(); }\n if (radius === void 0) { radius = 0; }\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n }(withAccessors(HasObservers, [ \"radius\" ])));\n\n var GRADIENT = \"Gradient\";\n\n var paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n var IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\n var measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n function geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n }\n\n function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n }\n\n var withGeometry = function (TBase, names) {\n if (names === void 0) { names = [ \"geometry\" ]; }\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n };\n\n var DEFAULT_STROKE = \"#000\";\n\n var Circle = (function (superclass) {\n function Circle(geometry, options) {\n if (geometry === void 0) { geometry = new Circle$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n extendStatic(Circle, superclass);\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n Circle.fn = Circle.prototype;\n Circle.fn.init = Circle.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var PRECISION = 10;\n\n function close$1(a, b, tolerance) {\n if (tolerance === void 0) { tolerance = PRECISION; }\n\n return round(Math.abs(a - b), tolerance) === 0;\n }\n\n function closeOrLess(a, b, tolerance) {\n return a < b || close$1(a, b, tolerance);\n }\n\n function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n }\n\n var MAX_INTERVAL = 45;\n var pow$1 = Math.pow;\n var accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\n var Arc$2 = (function (superclass) {\n function Arc(center, options) {\n if (center === void 0) { center = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform$1().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow$1(radiusX, 2) * pow$1(Math.sin(angleRad), 2) + pow$1(radiusY, 2) * pow$1(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n }(withAccessors(HasObservers, accessors)));\n\n function calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n }\n\n function normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if (rotation === void 0) { rotation = 0; }\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n }\n\n function bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n }\n\n var push = [].push;\n var pop = [].pop;\n var splice = [].splice;\n var shift = [].shift;\n var slice = [].slice;\n var unshift = [].unshift;\n\n var ElementsArray = (function (HasObservers$$1) {\n function ElementsArray(array) {\n if (array === void 0) { array = []; }\n\n HasObservers$$1.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n extendStatic(ElementsArray, HasObservers$$1);\n ElementsArray.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n ElementsArray.fn = ElementsArray.prototype;\n ElementsArray.fn.init = ElementsArray.fn.constructor;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice$1 (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n }(HasObservers));\n\n var GeometryElementsArray = (function (ElementsArray$$1) {\n function GeometryElementsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(GeometryElementsArray, ElementsArray$$1);\n GeometryElementsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n GeometryElementsArray.fn = GeometryElementsArray.prototype;\n GeometryElementsArray.fn.init = GeometryElementsArray.fn.constructor;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n }(ElementsArray));\n\n function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform$1().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n }\n\n function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n }\n\n function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n }\n\n var ComplexNumber = (function (Class$$1) {\n function ComplexNumber(real, img) {\n if (real === void 0) { real = 0; }\n if (img === void 0) { img = 0; }\n\n Class$$1.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n extendStatic(ComplexNumber, Class$$1);\n ComplexNumber.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n ComplexNumber.fn = ComplexNumber.prototype;\n ComplexNumber.fn.init = ComplexNumber.fn.constructor;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad$$1 = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad$$1 / n), nthR * Math.sin(rad$$1 / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n }(Class));\n\n function numberSign$1(x) {\n return x < 0 ? -1 : 1;\n }\n\n function solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n }\n\n //Cardano's formula\n function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign$1(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign$1(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n }\n\n function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n }\n\n function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close$1(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n }\n\n function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n }\n\n function pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n }\n\n function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n }\n\n var withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n };\n\n var points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\n var Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n extendStatic(Segment, superclass);\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n Segment.fn = Segment.prototype;\n Segment.fn.init = Segment.fn.constructor;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform$1().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform$1().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n }(withPoints(HasObservers, points)));\n\n function arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n var geometry = {\n \tCircle: Circle$2,\n \tArc: Arc$2,\n \tRect: Rect,\n \tPoint: Point,\n \tSegment: Segment,\n \tMatrix: Matrix,\n \tSize: Size,\n \ttoMatrix: toMatrix,\n \tTransformation: Transformation,\n \ttransform: transform$1\n };\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n var X = \"x\";\n var Y = \"y\";\n\n function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n }\n\n function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n }\n\n function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n }\n\n function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n }\n\n function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n }\n\n function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n }\n\n function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n }\n\n function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n }\n\n function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n }\n\n function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n }\n\n function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n }\n\n function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n }\n\n function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n var ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n };\n\n function toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n }\n\n function reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n }\n\n var third = 1 / 3;\n\n function quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n }\n\n var SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\n var SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\n var MOVE = \"m\";\n var CLOSE = \"z\";\n\n function parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n }\n\n function parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n }\n\n function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n }\n\n function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n }\n\n var SPACE = ' ';\n var printPoints = function (precision) { return function () {\n var arguments$1 = arguments;\n\n var points = [], len = arguments.length;\n while ( len-- ) { points[ len ] = arguments$1[ len ]; }\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n } };\n var segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\n var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n extendStatic(Path, superclass);\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n Path.fn = Path.prototype;\n Path.fn.init = Path.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point$$1 = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point$$1);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point$$1, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc$2(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc$2.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point$$1) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point$$1);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point$$1);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point$$1, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point$$1, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point$$1, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point$$1, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point$$1 = Point.create(points[i]);\n if (point$$1) {\n if (i === 0) {\n path.moveTo(point$$1);\n } else {\n path.lineTo(point$$1);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n }(paintable(measurable(Element$1))));\n\n var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n extendStatic(MultiPath, superclass);\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n MultiPath.fn = MultiPath.prototype;\n MultiPath.fn.init = MultiPath.fn.constructor;\n\n var prototypeAccessors$1 = { nodeType: {} };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point$$1) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point$$1);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point$$1) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point$$1)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point$$1) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point$$1, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n }(paintable(measurable(Element$1))));\n\n var DEFAULT_STROKE$1 = \"#000\";\n\n var Arc = (function (superclass) {\n function Arc(geometry, options) {\n if (geometry === void 0) { geometry = new Arc$2(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE$1);\n }\n }\n\n extendStatic(Arc, superclass);\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n Arc.fn = Arc.prototype;\n Arc.fn.init = Arc.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Arc\";\n };\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n };\n\n Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n return Arc;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_FILL = \"#000\";\n\n var Text = (function (superclass) {\n function Text(content, position, options) {\n if (position === void 0) { position = new Point(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n extendStatic(Text, superclass);\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n Text.fn = Text.prototype;\n Text.fn.init = Text.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = kendoUtil.measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n }(paintable(withPoints(Element$1, [ \"position\" ]))));\n\n var Image$1 = (function (superclass) {\n function Image(src, rect, options) {\n if (rect === void 0) { rect = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n extendStatic(Image, superclass);\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n Image.fn = Image.prototype;\n Image.fn.init = Image.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n }(withGeometry(Element$1, [ \"rect\" ])));\n\n var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n extendStatic(anonymous, TBase);\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n anonymous.fn = anonymous.prototype;\n anonymous.fn.init = anonymous.fn.constructor;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n ); };\n\n var Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n extendStatic(Group, superclass);\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n Group.fn = Group.prototype;\n Group.fn.init = Group.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append$1$1(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element$1.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n }(traversable(Element$1, \"children\")));\n\n function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || transform$1();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n }\n\n function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n }\n\n function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n }\n\n var DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n };\n\n var forEach = function (elements, callback) {\n elements.forEach(callback);\n };\n\n var forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n };\n\n var Layout = (function (Group$$1) {\n function Layout(rect, options) {\n Group$$1.call(this, $.extend({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n extendStatic(Layout, Group$$1);\n Layout.prototype = Object.create( Group$$1 && Group$$1.prototype );\n Layout.prototype.constructor = Layout;\n Layout.fn = Layout.prototype;\n Layout.fn.init = Layout.fn.constructor;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n\n Layout.prototype.reflow = function reflow () {\n var this$1$1 = this;\n\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = transform$1();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups () {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1$1._newGroup();\n } else {\n addGroup();\n group = this$1$1._newGroup();\n this$1$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1$1._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n\n Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n\n Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n }(Group));\n\n var Rect$2 = (function (superclass) {\n function Rect$$1(geometry, options) {\n if (geometry === void 0) { geometry = new Rect(); }\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n extendStatic(Rect$$1, superclass);\n Rect$$1.prototype = Object.create( superclass && superclass.prototype );\n Rect$$1.prototype.constructor = Rect$$1;\n Rect$$1.fn = Rect$$1.prototype;\n Rect$$1.fn.init = Rect$$1.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Rect$$1.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect$$1.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Rect$$1.prototype._containsPoint = function _containsPoint (point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect$$1.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Rect$$1.prototype, prototypeAccessors );\n\n return Rect$$1;\n }(paintable(measurable(withGeometry(Element$1)))));\n\n function alignElements(elements, rect, alignment, axis, sizeField) {\n for (var idx = 0; idx < elements.length; idx++) {\n var bbox = elements[idx].clippedBBox();\n if (bbox) {\n var point = bbox.origin.clone();\n point[axis] = alignStart(bbox.size[sizeField], rect, alignment || \"start\", axis, sizeField);\n translateToPoint(point, bbox, elements[idx]);\n }\n }\n }\n\n function align(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"x\", \"width\");\n }\n\n function vAlign(elements, rect, alignment) {\n alignElements(elements, rect, alignment, \"y\", \"height\");\n }\n\n function stackElements(elements, stackAxis, otherAxis, sizeField) {\n if (elements.length > 1) {\n var origin = new Point();\n var previousBBox = elements[0].bbox;\n\n for (var idx = 1; idx < elements.length; idx++) {\n var element = elements[idx].element;\n var bbox = elements[idx].bbox;\n origin[stackAxis] = previousBBox.origin[stackAxis] + previousBBox.size[sizeField];\n origin[otherAxis] = bbox.origin[otherAxis];\n translateToPoint(origin, bbox, element);\n bbox.origin[stackAxis] = origin[stackAxis];\n previousBBox = bbox;\n }\n }\n }\n\n function createStackElements(elements) {\n var stackElements = [];\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var bbox = element.clippedBBox();\n if (bbox) {\n stackElements.push({\n element: element,\n bbox: bbox\n });\n }\n }\n\n return stackElements;\n }\n\n function stack(elements) {\n stackElements(createStackElements(elements), \"x\", \"y\", \"width\");\n }\n\n function vStack(elements) {\n stackElements(createStackElements(elements), \"y\", \"x\", \"height\");\n }\n\n function getStacks(elements, rect, sizeField) {\n var maxSize = rect.size[sizeField];\n var stacks = [];\n var stack = [];\n var stackSize = 0;\n var element, bbox;\n\n var addElementToStack = function() {\n stack.push({\n element: element,\n bbox: bbox\n });\n };\n\n for (var idx = 0; idx < elements.length; idx++) {\n element = elements[idx];\n\n bbox = element.clippedBBox();\n if (bbox) {\n var size = bbox.size[sizeField];\n if (stackSize + size > maxSize) {\n if (stack.length) {\n stacks.push(stack);\n stack = [];\n addElementToStack();\n stackSize = size;\n } else {\n addElementToStack();\n stacks.push(stack);\n stack = [];\n stackSize = 0;\n }\n } else {\n addElementToStack();\n stackSize += size;\n }\n }\n }\n\n if (stack.length) {\n stacks.push(stack);\n }\n\n return stacks;\n }\n\n function wrapElements(elements, rect, axis, otherAxis, sizeField) {\n var stacks = getStacks(elements, rect, sizeField);\n var origin = rect.origin.clone();\n var result = [];\n\n for (var idx = 0; idx < stacks.length; idx++) {\n var stack = stacks[idx];\n var startElement = stack[0];\n origin[otherAxis] = startElement.bbox.origin[otherAxis];\n translateToPoint(origin, startElement.bbox, startElement.element);\n startElement.bbox.origin[axis] = origin[axis];\n stackElements(stack, axis, otherAxis, sizeField);\n result.push([]);\n for (var elementIdx = 0; elementIdx < stack.length; elementIdx++) {\n result[idx].push(stack[elementIdx].element);\n }\n }\n return result;\n }\n\n function wrap(elements, rect) {\n return wrapElements(elements, rect, \"x\", \"y\", \"width\");\n }\n\n function vWrap(elements, rect) {\n return wrapElements(elements, rect, \"y\", \"x\", \"height\");\n }\n\n function fit(element, rect) {\n var bbox = element.clippedBBox();\n if (bbox) {\n var elementSize = bbox.size;\n var rectSize = rect.size;\n if (rectSize.width < elementSize.width || rectSize.height < elementSize.height) {\n var scale = Math.min(rectSize.width / elementSize.width, rectSize.height / elementSize.height);\n var transform = element.transform() || transform$1();\n transform.scale(scale, scale);\n element.transform(transform);\n }\n }\n }\n\n var StopsArray = (function (ElementsArray$$1) {\n function StopsArray () {\n ElementsArray$$1.apply(this, arguments);\n }\n\n extendStatic(StopsArray, ElementsArray$$1);\n StopsArray.prototype = Object.create( ElementsArray$$1 && ElementsArray$$1.prototype );\n StopsArray.prototype.constructor = StopsArray;\n StopsArray.fn = StopsArray.prototype;\n StopsArray.fn.init = StopsArray.fn.constructor;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n }(ElementsArray));\n\n function optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n }\n\n function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n }\n\n var withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }extendStatic(result, TBase);\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n result.fn = result.prototype;\n result.fn.init = result.fn.constructor;\n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n };\n\n var options = [ \"offset\", \"color\", \"opacity\" ];\n\n var GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n extendStatic(GradientStop, superclass);\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n GradientStop.fn = GradientStop.prototype;\n GradientStop.fn.init = GradientStop.fn.constructor;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n }(withOptions(HasObservers, options)));\n\n var Gradient = (function (HasObservers$$1) {\n function Gradient(options) {\n if (options === void 0) { options = {}; }\n\n HasObservers$$1.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n extendStatic(Gradient, HasObservers$$1);\n Gradient.prototype = Object.create( HasObservers$$1 && HasObservers$$1.prototype );\n Gradient.prototype.constructor = Gradient;\n Gradient.fn = Gradient.prototype;\n Gradient.fn.init = Gradient.fn.constructor;\n\n var prototypeAccessors = { nodeType: {} };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if (stops === void 0) { stops = []; }\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n }(HasObservers));\n\n var points$1 = [ \"start\", \"end\" ];\n\n var LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n extendStatic(LinearGradient, superclass);\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n LinearGradient.fn = LinearGradient.prototype;\n LinearGradient.fn.init = LinearGradient.fn.constructor;\n\n return LinearGradient;\n }(withPoints(Gradient, points$1)));\n\n var RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if (options === void 0) { options = {}; }\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n extendStatic(RadialGradient, superclass);\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n RadialGradient.fn = RadialGradient.prototype;\n RadialGradient.fn.init = RadialGradient.fn.constructor;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n }(withPoints(Gradient, [ \"center\" ])));\n\n function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n }\n\n function linear(position) {\n return position;\n }\n\n function easeOutElastic(position, time, start, diff) {\n var s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n }\n\n var easingFunctions = {\n \tswing: swing,\n \tlinear: linear,\n \teaseOutElastic: easeOutElastic\n };\n\n var instance;\n\n var AnimationFactory = (function (Class$$1) {\n function AnimationFactory() {\n Class$$1.call(this);\n\n this._items = [];\n }\n\n extendStatic(AnimationFactory, Class$$1);\n AnimationFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n AnimationFactory.fn = AnimationFactory.prototype;\n AnimationFactory.fn.init = AnimationFactory.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n };\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n };\n\n Object.defineProperties( AnimationFactory, staticAccessors );\n\n return AnimationFactory;\n }(Class));\n\n var Animation = (function (Class$$1) {\n function Animation(element, options) {\n Class$$1.call(this);\n\n this.options = $.extend({}, this.options, options);\n this.element = element;\n }\n\n extendStatic(Animation, Class$$1);\n Animation.prototype = Object.create( Class$$1 && Class$$1.prototype );\n Animation.prototype.constructor = Animation;\n Animation.fn = Animation.prototype;\n Animation.fn.init = Animation.fn.constructor;\n\n var prototypeAccessors = { options: {} };\n\n Animation.create = function create (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n };\n\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if (delay === void 0) { delay = 0; }\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1$1.step(easingPosition);\n\n if (wallTime < finish) {\n kendo.animationFrame(loop);\n } else {\n this$1$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n return Animation;\n }(Class));\n\n var instance$1;\n\n var PathParser = (function (Class$$1) {\n function PathParser () {\n Class$$1.apply(this, arguments);\n }\n\n extendStatic(PathParser, Class$$1);\n PathParser.prototype = Object.create( Class$$1 && Class$$1.prototype );\n PathParser.prototype.constructor = PathParser;\n PathParser.fn = PathParser.prototype;\n PathParser.fn.init = PathParser.fn.constructor;\n\n var staticAccessors = { current: {} };\n\n staticAccessors.current.get = function () {\n if (!instance$1) {\n instance$1 = new PathParser();\n }\n\n return instance$1;\n };\n\n PathParser.prototype.parse = function parse (str, options) {\n var multiPath = new MultiPath(options);\n return parsePath(multiPath, str);\n };\n\n Object.defineProperties( PathParser, staticAccessors );\n\n return PathParser;\n }(Class));\n\n var BaseNode = (function (Class$$1) {\n function BaseNode(srcElement) {\n Class$$1.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n extendStatic(BaseNode, Class$$1);\n BaseNode.prototype = Object.create( Class$$1 && Class$$1.prototype );\n BaseNode.prototype.constructor = BaseNode;\n BaseNode.fn = BaseNode.prototype;\n BaseNode.fn.init = BaseNode.fn.constructor;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n }(Class));\n\n var events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n ];\n\n var Surface$2 = (function (Observable$$1) {\n function Surface(element, options) {\n Observable$$1.call(this);\n\n this.options = $.extend({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n extendStatic(Surface, Observable$$1);\n Surface.prototype = Object.create( Observable$$1 && Observable$$1.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1$1 = this;\n\n return function (e) {\n var node = this$1$1.eventTarget(e);\n if (node && !this$1$1._suspendedTracking) {\n this$1$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n }(kendo.Observable));\n\n function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n }\n\n function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n }\n\n function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n }\n\n var NODE_MAP = {};\n\n var SVG_NS = \"http://www.w3.org/2000/svg\";\n var NONE = \"none\";\n var POINT_DIGITS = 3;\n\n var applyStyle = function (styleString, element) { return styleString.split(';').filter(function (s) { return s !== ''; }).forEach(function (s) {\n var parts = s.split(':');\n element.style[parts[0].trim()] = parts[1].trim();\n }); };\n\n var styleAttr = 'data-style';\n var replaceStyleAttr = function (html) { return html.replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\n var restoreStyleAttr = function (container) {\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\n var styleString = element.getAttribute(styleAttr);\n element.removeAttribute(styleAttr);\n applyStyle(styleString, element);\n });\n };\n\n var renderSVG = function(container, svg) {\n container.innerHTML = replaceStyleAttr(svg);\n restoreStyleAttr(container);\n };\n\n if (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n }\n\n var renderSVG$1 = renderSVG;\n\n var TRANSFORM = \"transform\";\n var DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n };\n\n function isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n }\n\n function baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(supportBrowser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n }\n\n var Node = (function (BaseNode$$1) {\n function Node(srcElement, options) {\n BaseNode$$1.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode$$1.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1$1.options);\n\n if (defined(pos)) {\n this$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG$1(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode$$1.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n }(BaseNode));\n\n var GradientStopNode = (function (Node$$1) {\n function GradientStopNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GradientStopNode, Node$$1);\n GradientStopNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n GradientStopNode.fn = GradientStopNode.prototype;\n GradientStopNode.fn.init = GradientStopNode.fn.constructor;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n }(Node));\n\n var GradientNode = (function (Node$$1) {\n function GradientNode(srcElement) {\n Node$$1.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n extendStatic(GradientNode, Node$$1);\n GradientNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GradientNode.prototype.constructor = GradientNode;\n GradientNode.fn = GradientNode.prototype;\n GradientNode.fn.init = GradientNode.fn.constructor;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n }(Node));\n\n var LinearGradientNode = (function (GradientNode$$1) {\n function LinearGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(LinearGradientNode, GradientNode$$1);\n LinearGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n LinearGradientNode.fn = LinearGradientNode.prototype;\n LinearGradientNode.fn.init = LinearGradientNode.fn.constructor;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n }(GradientNode));\n\n var RadialGradientNode = (function (GradientNode$$1) {\n function RadialGradientNode () {\n GradientNode$$1.apply(this, arguments);\n }\n\n extendStatic(RadialGradientNode, GradientNode$$1);\n RadialGradientNode.prototype = Object.create( GradientNode$$1 && GradientNode$$1.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n RadialGradientNode.fn = RadialGradientNode.prototype;\n RadialGradientNode.fn.init = RadialGradientNode.fn.constructor;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n }(GradientNode));\n\n var ClipNode = (function (Node$$1) {\n function ClipNode(srcElement) {\n Node$$1.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n extendStatic(ClipNode, Node$$1);\n ClipNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n ClipNode.prototype.constructor = ClipNode;\n ClipNode.fn = ClipNode.prototype;\n ClipNode.fn.init = ClipNode.fn.constructor;\n\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n }(Node));\n\n var DefinitionNode = (function (Node$$1) {\n function DefinitionNode() {\n Node$$1.call(this);\n this.definitionMap = {};\n }\n\n extendStatic(DefinitionNode, Node$$1);\n DefinitionNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n DefinitionNode.fn = DefinitionNode.prototype;\n DefinitionNode.fn.init = DefinitionNode.fn.constructor;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1$1 = this;\n\n for (var field in definitions) {\n this$1$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n }(Node));\n\n var RootNode = (function (Node$$1) {\n function RootNode(options) {\n Node$$1.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n extendStatic(RootNode, Node$$1);\n RootNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n }(Node));\n\n var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n };\n\n var SOLID = \"solid\";\n var BUTT = \"butt\";\n\n var ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n };\n\n var PathNode = (function (Node$$1) {\n function PathNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node$$1);\n PathNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n Node$$1.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if (width === void 0) { width = 1; }\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n }(Node));\n\n var ArcNode = (function (PathNode$$1) {\n function ArcNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode$$1);\n ArcNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n }(PathNode));\n\n var CircleNode = (function (PathNode$$1) {\n function CircleNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode$$1);\n CircleNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n }(PathNode));\n\n var GroupNode = (function (Node$$1) {\n function GroupNode () {\n Node$$1.apply(this, arguments);\n }\n\n extendStatic(GroupNode, Node$$1);\n GroupNode.prototype = Object.create( Node$$1 && Node$$1.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n Node$$1.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n }(Node));\n\n var ImageNode = (function (PathNode$$1) {\n function ImageNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(ImageNode, PathNode$$1);\n ImageNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = kendo.htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n }(PathNode));\n\n var MultiPathNode = (function (PathNode$$1) {\n function MultiPathNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode$$1);\n MultiPathNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n }(PathNode));\n\n var RectNode = (function (PathNode$$1) {\n function RectNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode$$1);\n RectNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n }(PathNode));\n\n var ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\n function decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n }\n\n if (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n }\n\n var TextNode = (function (PathNode$$1) {\n function TextNode () {\n PathNode$$1.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode$$1);\n TextNode.prototype = Object.create( PathNode$$1 && PathNode$$1.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode$$1.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode$$1.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode$$1.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = kendo.htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = kendo.htmlEncode(content);\n\n return kendoUtil.normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(supportBrowser.msie || supportBrowser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n }(PathNode));\n\n NODE_MAP.Arc = ArcNode;\n NODE_MAP.Circle = CircleNode;\n NODE_MAP.Group = GroupNode;\n NODE_MAP.Image = ImageNode;\n NODE_MAP.MultiPath = MultiPathNode;\n NODE_MAP.Path = PathNode;\n NODE_MAP.Rect = RectNode;\n NODE_MAP.Text = TextNode;\n\n var RTL = 'rtl';\n\n function alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n }\n\n var Surface$3 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode($.extend({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG$1(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform$1().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"\" + (this._root.render()) + \"\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var NODE_MAP$2 = {};\n\n function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n }\n\n var Node$2 = (function (BaseNode$$1) {\n function Node(srcElement) {\n BaseNode$$1.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n extendStatic(Node, BaseNode$$1);\n Node.prototype = Object.create( BaseNode$$1 && BaseNode$$1.prototype );\n Node.prototype.constructor = Node;\n Node.fn = Node.prototype;\n Node.fn.init = Node.fn.constructor;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode$$1.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode$$1.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP$2[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1$1.insertAt(childNode, pos);\n } else {\n this$1$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n }(BaseNode));\n\n var GroupNode$2 = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n extendStatic(GroupNode, superclass);\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n GroupNode.fn = GroupNode.prototype;\n GroupNode.fn.init = GroupNode.fn.constructor;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n }(traversable(Node$2, \"childNodes\")));\n\n var FRAME_DELAY = 1000 / 60;\n\n var RootNode$2 = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = kendo.throttle(function () {\n kendo.animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n extendStatic(RootNode, superclass);\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n RootNode.fn = RootNode.prototype;\n RootNode.fn.init = RootNode.fn.constructor;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n }(traversable(GroupNode$2, \"childNodes\")));\n\n var QuadRoot = (function (Class$$1) {\n function QuadRoot() {\n Class$$1.call(this);\n\n this.shapes = [];\n }\n\n extendStatic(QuadRoot, Class$$1);\n QuadRoot.prototype = Object.create( Class$$1 && Class$$1.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n QuadRoot.fn = QuadRoot.prototype;\n QuadRoot.fn.init = QuadRoot.fn.constructor;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n }(Class));\n\n var QuadNode = (function (QuadRoot$$1) {\n function QuadNode(rect) {\n QuadRoot$$1.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n extendStatic(QuadNode, QuadRoot$$1);\n QuadNode.prototype = Object.create( QuadRoot$$1 && QuadRoot$$1.prototype );\n QuadNode.prototype.constructor = QuadNode;\n QuadNode.fn = QuadNode.prototype;\n QuadNode.fn.init = QuadNode.fn.constructor;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot$$1.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append$1$1(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n }(QuadRoot));\n\n var ROOT_SIZE = 3000;\n var LEVEL_STEP = 10000;\n var MAX_LEVEL = 75;\n\n var ShapesQuadTree = (function (Class$$1) {\n function ShapesQuadTree() {\n Class$$1.call(this);\n\n this.initRoots();\n }\n\n extendStatic(ShapesQuadTree, Class$$1);\n ShapesQuadTree.prototype = Object.create( Class$$1 && Class$$1.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n ShapesQuadTree.fn = ShapesQuadTree.prototype;\n ShapesQuadTree.fn.init = ShapesQuadTree.fn.constructor;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append$1$1(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1$1);\n if (element.nodeType === \"Group\") {\n append$1$1(elements, element.children);\n } else {\n this$1$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n }(Class));\n\n function zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n }\n\n var SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n };\n\n SurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n };\n\n SurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n };\n\n SurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n };\n\n SurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n };\n\n SurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n };\n\n SurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n };\n\n SurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n };\n\n function addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = kendo.parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n }\n\n var PathNode$2 = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n extendStatic(PathNode, Node);\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n PathNode.fn = PathNode.prototype;\n PathNode.fn.init = PathNode.fn.constructor;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n }(Node$2));\n\n var ArcNode$2 = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(ArcNode, PathNode);\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n ArcNode.fn = ArcNode.prototype;\n ArcNode.fn.init = ArcNode.fn.constructor;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n }(PathNode$2));\n\n var CircleNode$2 = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(CircleNode, PathNode);\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n CircleNode.fn = CircleNode.prototype;\n CircleNode.fn.init = CircleNode.fn.constructor;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n }(PathNode$2));\n\n var ImageNode$2 = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n extendStatic(ImageNode, PathNode);\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n ImageNode.fn = ImageNode.prototype;\n ImageNode.fn.init = ImageNode.fn.constructor;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n }(PathNode$2));\n\n var MultiPathNode$2 = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(MultiPathNode, PathNode);\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n MultiPathNode.fn = MultiPathNode.prototype;\n MultiPathNode.fn.init = MultiPathNode.fn.constructor;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n }(PathNode$2));\n\n var RectNode$2 = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(RectNode, PathNode);\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n RectNode.fn = RectNode.prototype;\n RectNode.fn.init = RectNode.fn.constructor;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n }(PathNode$2));\n\n var TextNode$2 = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n extendStatic(TextNode, PathNode);\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n TextNode.fn = TextNode.prototype;\n TextNode.fn.init = TextNode.fn.constructor;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n };\n\n return TextNode;\n }(PathNode$2));\n\n NODE_MAP$2.Arc = ArcNode$2;\n NODE_MAP$2.Circle = CircleNode$2;\n NODE_MAP$2.Group = GroupNode$2;\n NODE_MAP$2.Image = ImageNode$2;\n NODE_MAP$2.MultiPath = MultiPathNode$2;\n NODE_MAP$2.Path = PathNode$2;\n NODE_MAP$2.Rect = RectNode$2;\n NODE_MAP$2.Text = TextNode$2;\n\n var Surface$4 = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode$2(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var prototypeAccessors = { type: {} };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n }(Surface$2));\n\n var instance$2;\n var support$1;\n\n var hasDocument = function () { return typeof document !== \"undefined\"; };\n\n var supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\n var supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\n var SurfaceFactory = (function (Class$$1) {\n function SurfaceFactory() {\n Class$$1.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: Surface$3\n }, {\n name: \"canvas\",\n type: Surface$4\n } ];\n }\n\n extendStatic(SurfaceFactory, Class$$1);\n SurfaceFactory.prototype = Object.create( Class$$1 && Class$$1.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n SurfaceFactory.fn = SurfaceFactory.prototype;\n SurfaceFactory.fn.init = SurfaceFactory.fn.constructor;\n\n var staticAccessors = { support: {},current: {} };\n\n staticAccessors.support.get = function () {\n if (!support$1) {\n support$1 = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support$1;\n };\n\n staticAccessors.current.get = function () {\n if (!instance$2) {\n instance$2 = new SurfaceFactory();\n }\n\n return instance$2;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n kendo.logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n }(Class));\n\n var Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n extendStatic(Surface, BaseSurface);\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n Surface.fn = Surface.prototype;\n Surface.fn.init = Surface.fn.constructor;\n\n var staticAccessors = { support: {} };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n }(Surface$2));\n\n function exportGroup(group) {\n var root = new RootNode({\n skipBaseHref: true\n });\n var bbox = group.clippedBBox();\n var rootGroup = group;\n\n if (bbox) {\n var origin = bbox.getOrigin();\n var exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n rootGroup = exportRoot;\n }\n\n root.load([ rootGroup ]);\n\n var svg = \"\" + (root.render()) + \"\";\n\n root.destroy();\n\n return svg;\n }\n\n var svg$1 = {\n \tSurface: Surface$3,\n \tRootNode: RootNode,\n \tNode: Node,\n \tGroupNode: GroupNode,\n \tArcNode: ArcNode,\n \tCircleNode: CircleNode,\n \tRectNode: RectNode,\n \tImageNode: ImageNode,\n \tTextNode: TextNode,\n \tPathNode: PathNode,\n \tMultiPathNode: MultiPathNode,\n \tDefinitionNode: DefinitionNode,\n \tClipNode: ClipNode,\n \tGradientStopNode: GradientStopNode,\n \tLinearGradientNode: LinearGradientNode,\n \tRadialGradientNode: RadialGradientNode,\n \texportGroup: exportGroup\n };\n\n var canvas = {\n \tSurface: Surface$4,\n \tRootNode: RootNode$2,\n \tNode: Node$2,\n \tGroupNode: GroupNode$2,\n \tArcNode: ArcNode$2,\n \tCircleNode: CircleNode$2,\n \tRectNode: RectNode$2,\n \tImageNode: ImageNode$2,\n \tTextNode: TextNode$2,\n \tPathNode: PathNode$2,\n \tMultiPathNode: MultiPathNode$2\n };\n\n function exportImage(group, options) {\n var defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n var exportRoot = group;\n var bbox = group.clippedBBox();\n\n if (bbox) {\n var origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform$1().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n var size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n var surfaceOptions = $.extend(defaults, options);\n\n var container = document.createElement(\"div\");\n var style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n var surface = new Surface$4(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n var promise = surface.image();\n var destroy = function () {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n }\n\n function exportSVG(group, options) {\n var svg = exportGroup(group);\n\n if (!options || !options.raw) {\n svg = \"data:image/svg+xml;base64,\" + encodeBase64(svg);\n }\n\n return createPromise().resolve(svg);\n }\n\n /* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n /* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n /* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n /* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n var browser = supportBrowser || {};\n /*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n /* -----[ local vars ]----- */\n\n function slice$1$1(thing) {\n return Array.prototype.slice.call(thing);\n }\n\n var KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n\n var IMAGE_CACHE = {};\n\n var nodeInfo = {};\n nodeInfo._root = nodeInfo;\n\n /* -----[ Custom Text node to speed up rendering in kendo.pdf ]----- */\n\n var inBrowser = typeof window !== 'undefined';\n var microsoft = inBrowser ? browser.msie || browser.edge : false;\n\n var TextRect = (function (Text$$1) {\n function TextRect(str, rect, options) {\n Text$$1.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n extendStatic(TextRect, Text$$1);\n TextRect.prototype = Object.create( Text$$1 && Text$$1.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.fn = TextRect.prototype;\n TextRect.fn.init = TextRect.fn.constructor;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n }(Text));\n\n function addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n }\n\n function removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n }\n\n function setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n }\n\n var matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n \treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n })(Element.prototype);\n\n function closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n }\n\n // clone nodes ourselves, so that we redraw (DOM or\n // jQuery clone will not)\n var cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice$1$1(clone.querySelectorAll(\"canvas\")).forEach(function (canvas$$1, i) {\n canvas$$1.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice$1$1(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n })(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\n function getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n }\n\n function drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n kendo.pdf.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform$1(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = kendo.pdf.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = kendo.template(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice$1$1(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice$1$1(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice$1$1(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle$1(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle$1(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n }\n\n // This is needed for the Spreadsheet print functionality. Since\n // there we only need to draw text, this cuts through the ceremony\n // of drawDOM/renderElement and renders the text node directly.\n function drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle$1(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n }\n\n var parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = kendo.parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n })();\n\n var splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last$$1 = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last$$1) {\n ret.push(trim(input.substring(last$$1, pos)));\n last$$1 = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last$$1 < pos) {\n ret.push(trim(input.substring(last$$1, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n })();\n\n var getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n })(Object.create ? Object.create(null) : {});\n\n var getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = kendoUtil.measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n })(Object.create ? Object.create(null) : {});\n\n function getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n }\n\n function hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n function getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n }\n\n function getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n }\n\n function incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n }\n\n function resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n }\n\n function doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n }\n\n function updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n }\n\n function parseColor$1(str, css) {\n var color = kendo.parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n }\n\n function whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n var done = false;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n next();\n\n function next() {\n if (!done && --pending <= 0) {\n callback();\n done = true;\n }\n }\n }\n\n function cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle$1(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice$1$1(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n }\n\n function alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n }\n\n function pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"text-decoration-color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n if (name == \"underline\") {\n var offset = getPropertyValue(style, \"text-underline-offset\");\n if (offset != \"auto\") {\n nodeInfo[\"underline-offset\"] = parseFloat(offset);\n }\n }\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n }\n\n function popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n }\n\n function updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n }\n\n function emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n }\n\n function createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n }\n\n function getComputedStyle$1(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n }\n\n function getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n }\n\n function pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n }\n\n function getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor$1(getPropertyValue(style, side + \"-color\"), true)\n };\n }\n\n function saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n }\n\n function getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n }\n\n function getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n }\n\n function innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle$1(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n }\n\n function getTransform(style) {\n var transform$$1 = getPropertyValue(style, \"transform\");\n if (transform$$1 == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform$$1);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n }\n\n function radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n }\n\n function parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n }\n\n function setTransform$1(shape, m) {\n m = new Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n }\n\n function setClipping(shape, clipPath) {\n shape.clip(clipPath);\n }\n\n function addArcToPath(path, x, y, options) {\n var points = new Arc$2([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n }\n\n function sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n }\n\n function adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n }\n\n function elementRoundBox(element, box, type) {\n var style = getComputedStyle$1(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n }\n\n // Create a drawing.Path for a rounded rectangle. Receives the\n // bounding box and the border-radiuses in CSS order (top-left,\n // top-right, bottom-right, bottom-left). The radiuses must be\n // objects containing x (horiz. radius) and y (vertical radius).\n function roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n }\n\n function formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n }\n\n function evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n }\n\n function getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n }\n\n function _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle$1(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n }\n\n function _renderElement(element, group) {\n var style = getComputedStyle$1(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor$1(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice$1$1(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice$1$1(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform$$1) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform$1(edge, transform$$1);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform$$1) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform$1(path, transform$$1);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image$1(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[listStyleType];\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n }\n\n function gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n }\n\n function maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap$$1 = new Group();\n wrap$$1.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap$$1.transform(transform$1().translate(bbox.left, bbox.top));\n\n group.append(wrap$$1);\n\n return true;\n }\n\n function renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image$1(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n }\n\n function zIndexSort(a, b) {\n var sa = getComputedStyle$1(a);\n var sb = getComputedStyle$1(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n }\n\n function isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n }\n\n function getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n }\n\n function renderCheckbox(element, group) {\n var style = getComputedStyle$1(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n }\n\n function renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle$1(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle$1(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n }\n\n function serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg$$1 = doc.documentElement;\n var box = getContentBox(element);\n svg$$1.setAttribute(\"width\", box.width);\n svg$$1.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg$$1);\n }\n\n return xml;\n }\n\n function renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle$1(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n }\n\n function renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle$1(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0 || isNaN(fontSize)) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align$$1 = getPropertyValue(style, \"text-align\");\n var isJustified = align$$1 == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var underlineOffset = nodeInfo[\"underline-offset\"];\n\n if (underline) {\n forEachRect(decorateUnder);\n }\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (lineThrough || overline) {\n forEachRect(decorateOver);\n }\n\n return; // only function declarations after this line\n\n function forEachRect(callback) {\n range.selectNode(node);\n var clientRects = slice$1$1(range.getClientRects());\n\n forEachRect = function (cb) { return clientRects.forEach(cb); };\n forEachRect(callback);\n }\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function drawTextLine(lineWidth, textBox, color, ypos) {\n if (color) {\n var path = new Path({ stroke: {\n width: lineWidth,\n color: color\n }});\n\n ypos -= lineWidth;\n path.moveTo(textBox.left, ypos)\n .lineTo(textBox.right, ypos);\n group.append(path);\n }\n }\n\n function decorateOver(box) {\n var width = fontSize / 12;\n drawTextLine(width, box, lineThrough, box.bottom - box.height / 2.7);\n drawTextLine(width, box, overline, box.top);\n }\n\n function decorateUnder(box) {\n var width = fontSize / 12;\n var underlinePos = box.bottom;\n if (underlineOffset != null) {\n underlinePos += underlineOffset;\n } else {\n underlinePos += width; // for \"auto\" it seems better to add line width\n }\n drawTextLine(width, box, underline, underlinePos);\n }\n }\n\n function groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n }\n\n function renderElement(element, container) {\n var style = getComputedStyle$1(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform$1(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n }\n\n // function drawDebugBox(box, group, color) {\n // var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n // if (color) {\n // path.stroke(color);\n // }\n // group.append(path);\n // }\n\n // function dumpTextNode(node) {\n // var txt = node.data.replace(/^\\s+/, \"\");\n // if (txt.length < 100) {\n // console.log(node.data.length + \": |\" + txt);\n // } else {\n // console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n // }\n // }\n\n function mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n }\n\n var drawing = {\n \tsvg: svg$1,\n \tcanvas: canvas,\n \tutil: util,\n \tHasObservers: HasObservers,\n \tPathParser: PathParser,\n \tparsePath: parsePath,\n \tBaseNode: BaseNode,\n \tOptionsStore: OptionsStore,\n \tSurface: Surface,\n \tSurfaceFactory: SurfaceFactory,\n \texportImage: exportImage,\n \texportSVG: exportSVG,\n \tQuadNode: QuadNode,\n \tShapesQuadTree: ShapesQuadTree,\n \tElement: Element$1,\n \tCircle: Circle,\n \tArc: Arc,\n \tPath: Path,\n \tMultiPath: MultiPath,\n \tText: Text,\n \tImage: Image$1,\n \tGroup: Group,\n \tLayout: Layout,\n \tRect: Rect$2,\n \talign: align,\n \tvAlign: vAlign,\n \tstack: stack,\n \tvStack: vStack,\n \twrap: wrap,\n \tvWrap: vWrap,\n \tfit: fit,\n \tLinearGradient: LinearGradient,\n \tRadialGradient: RadialGradient,\n \tGradientStop: GradientStop,\n \tGradient: Gradient,\n \tAnimation: Animation,\n \tAnimationFactory: AnimationFactory,\n \tdrawDOM: drawDOM,\n \tdrawText: drawText,\n \tgetFontFaces: getFontFaces\n };\n\n kendo.deepExtend(kendo, {\n drawing: drawing,\n geometry: geometry\n });\n\n // Use unique SVG Definition IDs for Kendo UI\n defId = 1000;\n\n kendo.drawing.Segment = kendo.geometry.Segment;\n kendo.dataviz.drawing = kendo.drawing;\n kendo.dataviz.geometry = kendo.geometry;\n kendo.drawing.util.measureText = kendo.util.measureText;\n kendo.drawing.util.objectKey = kendo.util.objectKey;\n kendo.drawing.Color = kendo.Color;\n kendo.util.encodeBase64 = kendo.drawing.util.encodeBase64;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var NS = \".kendo\";\n var kendo = window.kendo;\n var deepExtend = kendo.deepExtend;\n var utils = kendo.drawing.util;\n var defined = utils.defined;\n var limitValue = utils.limitValue;\n var eventCoordinates = utils.eventCoordinates;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n\n var TOOLTIP_TEMPLATE = '
    ' +\n '
    ' +\n '
    ';\n var TOOLTIP_CLOSE_TEMPLATE = \"
    \" + (kendo.ui.icon($(''), { icon: \"x\" })) + \"
    \";\n\n var SurfaceTooltip = kendo.Class.extend({\n init: function(surface, options) {\n this.element = $(TOOLTIP_TEMPLATE);\n this.content = this.element.children(\".k-tooltip-content\");\n\n options = options || {};\n\n this.options = deepExtend({}, this.options, this._tooltipOptions(options));\n this.popupOptions = {\n appendTo: options.appendTo,\n animation: options.animation,\n copyAnchorStyles: false,\n collision: \"fit fit\"\n };\n\n this._openPopupHandler = this._openPopup.bind(this);\n\n this.surface = surface;\n this._bindEvents();\n },\n\n options: {\n position: \"top\",\n showOn: \"mouseenter\",\n offset: 7,\n autoHide: true,\n hideDelay: 0,\n showAfter: 100\n },\n\n _bindEvents: function() {\n this._showHandler = this._showEvent.bind(this);\n this._surfaceLeaveHandler = this._surfaceLeave.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._mousemoveHandler = this._mousemove.bind(this);\n\n this.surface.bind(\"click\", this._showHandler);\n this.surface.bind(\"mouseenter\", this._showHandler);\n this.surface.bind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.bind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.on(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n\n this.element.on(\"click\" + NS, \".k-tooltip-button\", this._hideClick.bind(this));\n this.element.on(\"mouseleave\" + NS, this._tooltipLeave.bind(this));\n },\n\n getPopup: function() {\n if (!this.popup) {\n this.popup = new kendo.ui.Popup(this.element, this.popupOptions);\n }\n\n return this.popup;\n },\n\n destroy: function() {\n var popup = this.popup;\n\n this.surface.unbind(\"click\", this._showHandler);\n this.surface.unbind(\"mouseenter\", this._showHandler);\n this.surface.unbind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.unbind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.off(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n this.element.off(\"click\" + NS);\n this.element.off(\"mouseleave\" + NS);\n\n if (popup) {\n popup.destroy();\n delete this.popup;\n }\n delete this.popupOptions;\n\n clearTimeout(this._timeout);\n\n delete this.element;\n delete this.content;\n delete this.surface;\n },\n\n _tooltipOptions: function(options) {\n options = options || {};\n return {\n position: options.position,\n showOn: options.showOn,\n offset: options.offset,\n autoHide: options.autoHide,\n width: options.width,\n height: options.height,\n content: options.content,\n shared: options.shared,\n hideDelay: options.hideDelay,\n showAfter: options.showAfter\n };\n },\n\n _tooltipShape: function(shape) {\n while (shape && !shape.options.tooltip) {\n shape = shape.parent;\n }\n return shape;\n },\n\n _updateContent: function(target, shape, options) {\n var content = options.content;\n if (kendo.isFunction(content)) {\n content = content({\n element: shape,\n target: target\n });\n }\n\n if (content) {\n this.content.html(content);\n return true;\n }\n },\n\n _position: function(shape, options, elementSize, event) {\n var position = options.position;\n var tooltipOffset = options.offset || 0;\n var surface = this.surface;\n var offset = surface._instance._elementOffset();\n var size = surface.getSize();\n var surfaceOffset = surface._instance._offset;\n var bbox = shape.bbox();\n var width = elementSize.width;\n var height = elementSize.height;\n var left = 0, top = 0;\n\n bbox.origin.translate(offset.left, offset.top);\n if (surfaceOffset) {\n bbox.origin.translate(-surfaceOffset.x, -surfaceOffset.y);\n }\n\n if (position == \"cursor\" && event) {\n var coord = eventCoordinates(event);\n left = coord.x - width / 2;\n top = coord.y - height - tooltipOffset;\n } else if (position == \"left\") {\n left = bbox.origin.x - width - tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"right\") {\n left = bbox.bottomRight().x + tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"bottom\") {\n left = bbox.center().x - width / 2;\n top = bbox.bottomRight().y + tooltipOffset;\n } else {\n left = bbox.center().x - width / 2;\n top = bbox.origin.y - height - tooltipOffset;\n }\n\n return {\n left: limitValue(left, offset.left, offset.left + size.width),\n top: limitValue(top, offset.top, offset.top + size.height)\n };\n },\n\n show: function(shape, options) {\n this._show(shape, shape, deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip), options));\n },\n\n hide: function() {\n var popup = this.popup;\n var current = this._current;\n\n delete this._current;\n clearTimeout(this._showTimeout);\n if (popup && popup.visible() && current &&\n !this.surface.trigger(\"tooltipClose\", { element: current.shape, target: current.target, popup: popup })) {\n popup.close();\n }\n },\n\n _hideClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _show: function(target, shape, options, event, delay) {\n var current = this._current;\n\n clearTimeout(this._timeout);\n\n if (current && ((current.shape === shape && options.shared) || current.target === target)) {\n return;\n }\n\n clearTimeout(this._showTimeout);\n\n var popup = this.getPopup();\n\n if (!this.surface.trigger(\"tooltipOpen\", { element: shape, target: target, popup: popup }) &&\n this._updateContent(target, shape, options)) {\n\n this._autoHide(options);\n var elementSize = this._measure(options);\n\n if (popup.visible()) {\n popup.close(true);\n }\n\n this._current = {\n options: options,\n elementSize: elementSize,\n shape: shape,\n target: target,\n position: this._position(options.shared ? shape : target, options, elementSize, event)\n };\n\n if (delay) {\n this._showTimeout = setTimeout(this._openPopupHandler, options.showAfter || 0);\n } else {\n this._openPopup();\n }\n }\n },\n\n _openPopup: function() {\n var current = this._current;\n var position = current.position;\n\n this.getPopup().open(position.left, position.top);\n },\n\n _autoHide: function(options) {\n if (options.autoHide && this._closeButton) {\n this.element.removeClass(\"k-tooltip-closable\");\n this._closeButton.remove();\n delete this._closeButton;\n }\n\n if (!options.autoHide && !this._closeButton) {\n this.element.addClass(\"k-tooltip-closable\");\n this._closeButton = $(TOOLTIP_CLOSE_TEMPLATE).appendTo(this.element);\n }\n },\n\n _showEvent: function(e) {\n var shape = this._tooltipShape(e.element);\n\n if (shape) {\n var options = deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip));\n\n if (options && options.showOn == e.type) {\n this._show(e.element, shape, options, e.originalEvent, true);\n }\n }\n },\n\n _measure: function(options) {\n this.element.css({\n width: defined(options.width) ? options.width : 'auto',\n height: defined(options.height) ? options.height : 'auto'\n });\n\n var clone = this.element.clone().appendTo(document.body).css({ visibility: 'hidden' });\n var width = outerWidth(clone);\n var height = outerHeight(clone);\n clone.remove();\n\n this.element.css({\n width: width,\n height: height\n });\n\n return {\n width: width,\n height: height\n };\n },\n\n _mouseleave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e.originalEvent)) {\n var tooltip = this;\n var current = tooltip._current;\n\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n clearTimeout(tooltip._showTimeout);\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n },\n\n _mousemove: function(e) {\n var current = this._current;\n if (current && e.element) {\n var options = current.options;\n if (options.position == \"cursor\") {\n var position = this._position(e.element, options, current.elementSize, e.originalEvent);\n current.position = position;\n this.getPopup().wrapper.css({ left: position.left, top: position.top });\n }\n }\n },\n\n _surfaceLeave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e)) {\n clearTimeout(this._showTimeout);\n this.hide();\n }\n },\n\n _popupRelatedTarget: function(e) {\n return e.relatedTarget && $(e.relatedTarget).closest(this.popup.wrapper).length;\n },\n\n _tooltipLeave: function() {\n var tooltip = this;\n var current = tooltip._current;\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n });\n\n kendo.drawing.SurfaceTooltip = SurfaceTooltip;\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var draw = kendo.drawing;\n var DrawingSurface = draw.Surface;\n var Widget = kendo.ui.Widget;\n var deepExtend = kendo.deepExtend;\n\n kendo.support.svg = DrawingSurface.support.svg;\n kendo.support.canvas = DrawingSurface.support.canvas;\n\n var Surface = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, {});\n\n this.options = deepExtend({}, this.options, options);\n\n this._instance = DrawingSurface.create(this.element[0], options);\n if (this._instance.translate) {\n this.translate = translate;\n }\n\n this._triggerInstanceHandler = this._triggerInstanceEvent.bind(this);\n this._bindHandler(\"click\");\n this._bindHandler(\"mouseenter\");\n this._bindHandler(\"mouseleave\");\n this._bindHandler(\"mousemove\");\n\n this._enableTracking();\n },\n\n options: {\n name: \"Surface\",\n tooltip: {}\n },\n\n events: [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\",\n \"tooltipOpen\",\n \"tooltipClose\"\n ],\n\n _triggerInstanceEvent: function(e) {\n this.trigger(e.type, e);\n },\n\n _bindHandler: function(event) {\n this._instance.bind(event, this._triggerInstanceHandler);\n },\n\n draw: function(element) {\n this._instance.draw(element);\n },\n\n clear: function() {\n if (this._instance) {\n this._instance.clear();\n }\n this.hideTooltip();\n },\n\n destroy: function() {\n if (this._instance) {\n this._instance.destroy();\n delete this._instance;\n }\n\n if (this._tooltip) {\n this._tooltip.destroy();\n delete this._tooltip;\n }\n\n Widget.fn.destroy.call(this);\n },\n\n exportVisual: function() {\n return this._instance.exportVisual();\n },\n\n eventTarget: function(e) {\n return this._instance.eventTarget(e);\n },\n\n showTooltip: function(shape, options) {\n if (this._tooltip) {\n this._tooltip.show(shape, options);\n }\n },\n\n hideTooltip: function() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n\n suspendTracking: function() {\n this._instance.suspendTracking();\n this.hideTooltip();\n },\n\n resumeTracking: function() {\n this._instance.resumeTracking();\n },\n\n getSize: function() {\n return {\n width: this.element.width(),\n height: this.element.height()\n };\n },\n\n setSize: function(size) {\n this.element.css({\n width: size.width,\n height: size.height\n });\n\n this._size = size;\n this._instance.currentSize(size);\n this._resize();\n },\n\n _resize: function() {\n this._instance.currentSize(this._size);\n this._instance._resize();\n },\n\n _enableTracking: function() {\n if (kendo.ui.Popup) {\n this._tooltip = new draw.SurfaceTooltip(this, this.options.tooltip || {});\n }\n }\n });\n\n kendo.ui.plugin(Surface);\n\n Surface.create = function(element, options) {\n return new Surface(element, options);\n };\n\n kendo.drawing.Surface = Surface;\n\n function translate(offset) {\n this._instance.translate(offset);\n }\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var kendo = window.kendo;\n var drawing = kendo.drawing;\n var drawDOM = drawing.drawDOM;\n\n drawing.drawDOM = function(element, options) {\n return drawDOM($(element)[0], options);\n };\n\n // Aliases used by spreadsheet/print.js\n drawing.drawDOM.drawText = drawing.drawText;\n drawing.drawDOM.getFontFaces = drawing.getFontFaces;\n\n })(window.kendo.jQuery);\n\n var __meta__$F = {\n id: \"drawing\",\n name: \"Drawing API\",\n category: \"framework\",\n description: \"The Kendo UI low-level drawing API\",\n depends: [ \"core\", \"color\", \"popup\", \"icons\" ]\n };\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, curly */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var drawing = kendo.drawing;\n var util = drawing.util;\n var Path = drawing.Path;\n var Group = drawing.Group;\n var Class = kendo.Class;\n var support = kendo.support;\n var geometry = kendo.geometry;\n var Rect = geometry.Rect;\n var Circle = geometry.Circle;\n var geometryTransform = geometry.transform;\n var Segment = geometry.Segment;\n var dataviz = kendo.dataviz;\n\n var deepExtend = kendo.deepExtend;\n var isFunction = kendo.isFunction;\n var __common_getter_js = kendo.getter;\n\n var ARC = \"arc\";\n var AXIS_LABEL_CLICK = \"axisLabelClick\";\n var BLACK = \"#000\";\n var BOTTOM = \"bottom\";\n var CENTER = \"center\";\n var CIRCLE = \"circle\";\n var COORD_PRECISION = 3;\n var CROSS = \"cross\";\n var DATE = \"date\";\n var DEFAULT_FONT = \"12px sans-serif\";\n var DEFAULT_HEIGHT = 400;\n var DEFAULT_PRECISION = 10;\n var DEFAULT_WIDTH = 600;\n var END = \"end\";\n var FORMAT_REGEX = /\\{\\d+:?/;\n var HEIGHT = \"height\";\n var HIGHLIGHT_ZINDEX = 100;\n var INSIDE = \"inside\";\n var LEFT = \"left\";\n var MAX_VALUE = Number.MAX_VALUE;\n var MIN_VALUE = -Number.MAX_VALUE;\n var NONE = \"none\";\n var NOTE_CLICK = \"noteClick\";\n var NOTE_HOVER = \"noteHover\";\n var NOTE_LEAVE = \"noteLeave\";\n var OBJECT = \"object\";\n var OUTSIDE = \"outside\";\n var RIGHT = \"right\";\n var ROUNDED_RECT = \"roundedRect\";\n var START = \"start\";\n var STRING = \"string\";\n var TOP = \"top\";\n var TRIANGLE = \"triangle\";\n var VALUE = \"value\";\n var WHITE = \"#fff\";\n var WIDTH = \"width\";\n var X = \"x\";\n var Y = \"y\";\n var DEFAULT_SERIES_OPACITY = 1;\n\n var constants = {\n \tARC: ARC,\n \tAXIS_LABEL_CLICK: AXIS_LABEL_CLICK,\n \tBLACK: BLACK,\n \tBOTTOM: BOTTOM,\n \tCENTER: CENTER,\n \tCIRCLE: CIRCLE,\n \tCOORD_PRECISION: COORD_PRECISION,\n \tCROSS: CROSS,\n \tDATE: DATE,\n \tDEFAULT_FONT: DEFAULT_FONT,\n \tDEFAULT_HEIGHT: DEFAULT_HEIGHT,\n \tDEFAULT_PRECISION: DEFAULT_PRECISION,\n \tDEFAULT_WIDTH: DEFAULT_WIDTH,\n \tEND: END,\n \tFORMAT_REGEX: FORMAT_REGEX,\n \tHEIGHT: HEIGHT,\n \tHIGHLIGHT_ZINDEX: HIGHLIGHT_ZINDEX,\n \tINSIDE: INSIDE,\n \tLEFT: LEFT,\n \tMAX_VALUE: MAX_VALUE,\n \tMIN_VALUE: MIN_VALUE,\n \tNONE: NONE,\n \tNOTE_CLICK: NOTE_CLICK,\n \tNOTE_HOVER: NOTE_HOVER,\n \tNOTE_LEAVE: NOTE_LEAVE,\n \tOBJECT: OBJECT,\n \tOUTSIDE: OUTSIDE,\n \tRIGHT: RIGHT,\n \tROUNDED_RECT: ROUNDED_RECT,\n \tSTART: START,\n \tSTRING: STRING,\n \tTOP: TOP,\n \tTRIANGLE: TRIANGLE,\n \tVALUE: VALUE,\n \tWHITE: WHITE,\n \tWIDTH: WIDTH,\n \tX: X,\n \tY: Y,\n \tDEFAULT_SERIES_OPACITY: DEFAULT_SERIES_OPACITY\n };\n\n function isArray(value) {\n return Array.isArray(value);\n }\n\n function addClass(element, classes) {\n var classArray = isArray(classes) ? classes : [ classes ];\n\n for (var idx = 0; idx < classArray.length; idx++) {\n var className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n }\n\n var SPACE_REGEX = /\\s+/g;\n\n function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n }\n\n function alignPathToPixel(path) {\n var offset = 0.5;\n if (path.options.stroke && kendo.drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (var i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n }\n\n function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n }\n\n function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n }\n\n function isString(value) {\n return typeof value === STRING;\n }\n\n function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n }\n\n function isObject(value) {\n return typeof value === \"object\";\n }\n\n function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n }\n\n var SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\n function isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n }\n\n function elementStyles(element, styles) {\n var stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n var result = {};\n var style = window.getComputedStyle(element);\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (var field$1 in styles) {\n element.style[field$1] = styleValue(styles[field$1]);\n }\n }\n }\n\n function getSpacing(value, defaultSpacing) {\n if (defaultSpacing === void 0) { defaultSpacing = 0; }\n\n var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n }\n\n var current = {\n compile: function(template) {\n return template;\n }\n };\n\n var TemplateService = Class.extend({\n\n });\n\n TemplateService.register = function(userImplementation) {\n current = userImplementation;\n };\n\n TemplateService.compile = function(template, options) {\n return current.compile(template, options);\n };\n\n function getTemplate(options) {\n if (options === void 0) { options = {}; }\n\n var template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n }\n\n function grep(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n }\n\n function hasClasses(element, classNames) {\n if (element.className) {\n var names = classNames.split(\" \");\n for (var idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf && element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n }\n\n var HashMap = function HashMap() {\n this._map = {};\n };\n\n HashMap.prototype.get = function get (name) {\n return this._map[this._key(name)];\n };\n\n HashMap.prototype.set = function set (name, value) {\n this._map[this._key(name)] = value;\n };\n\n HashMap.prototype._key = function _key (name) {\n return name instanceof Date ? name.getTime() : name;\n };\n\n function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n }\n\n function interpolateValue(start, end, progress) {\n return kendo.drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n }\n\n var TRIGGER = 'trigger';\n\n var InstanceObserver = Class.extend({\n init: function(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n },\n\n trigger: function(name, args) {\n var ref = this;\n var observer = ref.observer;\n var handlerMap = ref.handlerMap;\n var isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n },\n\n callObserver: function(fnName) {\n var arguments$1 = arguments;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) { args[ len ] = arguments$1[ len + 1 ]; }\n\n return this.observer[fnName].apply(this.observer, args);\n },\n\n requiresHandlers: function(names) {\n var this$1$1 = this;\n\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (var idx = 0; idx < names.length; idx++) {\n if (this$1$1.handlerMap[names[idx]]) {\n return true;\n }\n }\n }\n });\n\n function map(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n var value = callback(array[idx]);\n if (kendo.drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n }\n\n var browser = support.browser || {};\n\n function mousewheelDelta(e) {\n var delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n }\n\n var ref = kendo.drawing.util;\n var append = ref.append;\n var bindEvents = ref.bindEvents;\n var defined = ref.defined;\n var deg = ref.deg;\n var elementOffset = ref.elementOffset;\n var elementSize = ref.elementSize;\n var eventCoordinates = ref.eventCoordinates;\n var eventElement = ref.eventElement;\n var hashKey = ref.hashKey;\n var last = ref.last;\n var limitValue = ref.limitValue;\n var objectKey = ref.objectKey;\n var rad = ref.rad;\n var round = ref.round;\n var unbindEvents = ref.unbindEvents;\n var valueOrDefault = ref.valueOrDefault;\n\n var FontLoader = Class.extend({\n\n });\n\n FontLoader.fetchFonts = function(options, fonts, state) {\n if (state === void 0) { state = { depth: 0 }; }\n\n var MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n var value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n };\n\n FontLoader.loadFonts = function(fonts, callback) {\n var promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n kendo.logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n };\n\n FontLoader.preloadFonts = function(options, callback) {\n var fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n };\n\n function setDefaultOptions(type, options) {\n var proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n }\n\n function sparseArrayLimits(arr) {\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var idx = 0, length = arr.length; idx < length; idx++) {\n var value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n }\n\n function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n }\n\n var Matrix = geometry.Matrix;\n var matrixRegexp = /matrix\\((.*)\\)/;\n\n function parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n }\n\n function transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n }\n\n function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n }\n\n function autoTextColor(color) {\n var isDark = new kendo.Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n }\n\n var DELETED = {};\n\n var LegacySet = Class.extend({\n init: function(values) {\n var this$1$1 = this;\n\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (var i = 0; i < this._values.length; i++) {\n this$1$1._index[this$1$1._values[i]] = i;\n }\n },\n\n values: function() {\n return this._values.filter(function (item) { return item !== DELETED; });\n },\n\n has: function(value) {\n return this._index[value] !== undefined;\n },\n\n add: function(value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n },\n\n delete: function(value) {\n var index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n },\n\n clear: function() {\n this._index = {};\n this._values = [];\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(LegacySet.fn, {\n size: {\n get: function() {\n return this._values.length;\n }\n }\n });\n }\n\n var SetWrapper = Class.extend({\n init: function(values) {\n this._set = new Set(values);\n },\n\n values: function() {\n return Array.from(this._set);\n },\n\n has: function(value) {\n return this._set.has(value);\n },\n\n add: function(value) {\n this._set.add(value);\n },\n\n delete: function(value) {\n this._set.delete(value);\n },\n\n clear: function() {\n this._set.clear();\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(SetWrapper.fn, {\n size: {\n get: function() {\n return this._set.size;\n }\n }\n });\n }\n\n // TODO: Drop LegacySet when removing support for IE10\n var supportsSet = function () {\n var supported = false;\n\n if (typeof Set === 'function') {\n var set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n };\n\n function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n }\n\n function defaultErrorHandler(error) {\n throw error;\n }\n\n var keys = {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n };\n\n function autoMajorUnit(min, max) {\n var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n }\n\n var Point = Class.extend({\n init: function(x, y) {\n\n this.x = x || 0;\n this.y = y || 0;\n },\n\n clone: function() {\n return new Point(this.x, this.y);\n },\n\n equals: function(point) {\n return point && this.x === point.x && this.y === point.y;\n },\n\n rotate: function(center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n },\n\n multiply: function(a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n },\n\n distanceTo: function(point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n });\n\n Point.onCircle = function(center, angle, radius) {\n var radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n var Box = Class.extend({\n init: function(x1, y1, x2, y2) {\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n },\n\n equals: function(box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n },\n\n width: function() {\n return this.x2 - this.x1;\n },\n\n height: function() {\n return this.y2 - this.y1;\n },\n\n translate: function(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n },\n\n move: function(x, y) {\n var height = this.height();\n var width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n },\n\n wrap: function(targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n },\n\n wrapPoint: function(point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n },\n\n snapTo: function(targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n },\n\n alignTo: function(targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n shrink: function(dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n },\n\n expand: function(dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n },\n\n pad: function(padding) {\n var spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n },\n\n unpad: function(padding) {\n var spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n },\n\n clone: function() {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n },\n\n center: function() {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n },\n\n containsPoint: function(point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n },\n\n points: function() {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n },\n\n getHash: function() {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n },\n\n overlaps: function(box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n },\n\n rotate: function(rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n },\n\n toRect: function() {\n return new Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n },\n\n hasSize: function() {\n return this.width() !== 0 && this.height() !== 0;\n },\n\n align: function(targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? WIDTH : HEIGHT;\n var size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n }\n });\n\n function rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n }\n\n var Ring = Class.extend({\n init: function(center, innerRadius, radius, startAngle, angle) {\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n },\n\n clone: function() {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n },\n\n middle: function() {\n return this.startAngle + this.angle / 2;\n },\n\n setRadius: function(newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n },\n\n point: function(angle, innerRadius) {\n var radianAngle = rad(angle);\n var ax = Math.cos(radianAngle);\n var ay = Math.sin(radianAngle);\n var radius = innerRadius ? this.innerRadius : this.radius;\n var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n },\n\n adjacentBox: function(distance, width, height) {\n var sector = this.clone().expand(distance);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n var hw = width / 2;\n var hh = height / 2;\n var sa = Math.sin(rad(midAndle));\n var ca = Math.cos(rad(midAndle));\n var x = midPoint.x - hw;\n var y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n },\n\n containsPoint: function(p) {\n var center = this.center;\n var innerRadius = this.innerRadius;\n var radius = this.radius;\n var startAngle = this.startAngle;\n var endAngle = this.startAngle + this.angle;\n var dx = p.x - center.x;\n var dy = p.y - center.y;\n var vector = new Point(dx, dy);\n var startPoint = this.point(startAngle);\n var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n var endPoint = this.point(endAngle);\n var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n },\n\n getBBox: function() {\n var this$1$1 = this;\n\n var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n var startAngle = round(this.startAngle % 360);\n var endAngle = round((startAngle + this.angle) % 360);\n var innerRadius = this.innerRadius;\n var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n var startAngleIndex = allAngles.indexOf(startAngle);\n var endAngleIndex = allAngles.indexOf(endAngle);\n var angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (var i = 0; i < angles.length; i++) {\n var point = this$1$1.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n },\n\n expand: function(value) {\n this.radius += value;\n return this;\n }\n });\n\n function numericComparer(a, b) {\n return a - b;\n }\n\n var Sector = Ring.extend({\n init: function(center, radius, startAngle, angle) {\n Ring.fn.init.call(this, center, 0, radius, startAngle, angle);\n },\n\n expand: function(value) {\n return Ring.fn.expand.call(this, value);\n },\n\n clone: function() {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n },\n\n setRadius: function(newRadius) {\n this.radius = newRadius;\n\n return this;\n }\n });\n\n var DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\n var ShapeBuilder = Class.extend({\n createRing: function(sector, options) {\n var startAngle = sector.startAngle + 180;\n var endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n var center = new geometry.Point(sector.center.x, sector.center.y);\n var radius = Math.max(sector.radius, 0);\n var innerRadius = Math.max(sector.innerRadius, 0);\n var arc = new geometry.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n var path = Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n var innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n }\n });\n\n ShapeBuilder.current = new ShapeBuilder();\n\n var ChartElement = Class.extend({\n init: function(options) {\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n reflow: function(targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n },\n\n destroy: function() {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n },\n\n getRoot: function() {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n },\n\n getSender: function() {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n },\n\n getService: function() {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n },\n\n translateChildren: function(dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n },\n\n append: function() {\n var arguments$1 = arguments;\n var this$1$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1$1.children.push(item);\n item.parent = this$1$1;\n }\n },\n\n renderVisual: function() {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n },\n\n addVisual: function() {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n },\n\n renderChildren: function() {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n },\n\n createAnimation: function() {\n if (this.visual && this.options.animation) {\n this.animation = drawing.Animation.create(\n this.visual, this.options.animation\n );\n }\n },\n\n appendVisual: function(childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n },\n\n clipRoot: function() {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n },\n\n stackRoot: function() {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n },\n\n stackVisual: function(childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n },\n\n traverse: function(callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n },\n\n closest: function(match) {\n var element = this;\n var matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n },\n\n renderComplete: function() {},\n\n hasHighlight: function() {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false));\n },\n\n toggleHighlight: function(show, opacity) {\n var this$1$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n $.extend(this.highlightVisualArgs(), {\n createVisual: function () { return this$1$1.createHighlight(highlightOptions); },\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n }\n ));\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n },\n\n createGradientOverlay: function(element, options, gradientOptions) {\n var overlay = new Path($.extend({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n },\n\n createGradient: function(options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n },\n\n supportsPointInactiveOpacity: function() {\n return true;\n }\n });\n\n ChartElement.prototype.options = { };\n\n var BoxElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1$1.align(targetBox, X, options.align);\n this$1$1.align(targetBox, Y, options.vAlign);\n this$1$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n ChartElement.fn.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n },\n\n align: function(targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n },\n\n hasBox: function() {\n var options = this.options;\n return options.border.width || options.background;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n },\n\n visualStyle: function() {\n var options = this.options;\n var border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n }\n });\n\n setDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n });\n\n var ShapeElement = BoxElement.extend({\n init: function(options, pointData) {\n BoxElement.fn.init.call(this, options);\n\n this.pointData = pointData;\n },\n\n getElement: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new drawing.Circle(\n new Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new drawing.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n var rect = box.toRect();\n if (type === ROUNDED_RECT) {\n var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geometryTransform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n },\n\n createElement: function() {\n var this$1$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: function () { return this$1$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n },\n\n visualOptions: function() {\n var options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n },\n\n createVisual: function() {\n this.visual = this.createElement();\n }\n });\n\n setDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n });\n\n var LINEAR = \"linear\";\n var RADIAL = \"radial\";\n\n var GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n };\n\n function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n var a = Math.min(r.x1, s.x1);\n var b = Math.max(r.x1, s.x1);\n var c = Math.min(r.x2, s.x2);\n var d = Math.max(r.x2, s.x2);\n var e = Math.min(r.y1, s.y1);\n var f = Math.max(r.y1, s.y1);\n var g = Math.min(r.y2, s.y2);\n var h = Math.max(r.y2, s.y2);\n var boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n }\n\n var RootElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n var rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n },\n\n reflow: function() {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (var i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n },\n\n createVisual: function() {\n this.visual = new Group();\n this.createBackground();\n },\n\n createBackground: function() {\n var options = this.options;\n var border = options.border || {};\n var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n var background = Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n },\n\n getRoot: function() {\n return this;\n },\n\n createGradient: function(options) {\n var gradients = this.gradients;\n var hashCode = objectKey(options);\n var gradient = GRADIENTS[options.gradient];\n var drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n var gradientOptions = $.extend({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new drawing.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new drawing.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n },\n\n cleanGradients: function() {\n var gradients = this.gradients;\n for (var hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n },\n\n size: function() {\n var options = this.options;\n return new Box(0, 0, options.width, options.height);\n }\n });\n\n setDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n });\n\n function innerRadialStops(options) {\n var stops = options.stops;\n var usedSpace = ((options.innerRadius / options.radius) * 100);\n var length = stops.length;\n var currentStops = [];\n\n for (var i = 0; i < length; i++) {\n var currentStop = $.extend({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n }\n\n var FloatElement = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n this._initDirection();\n },\n\n _initDirection: function() {\n var options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n },\n\n reflow: function(targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n },\n\n reflowChildren: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var elementAxis = ref.elementAxis;\n var groupAxis = ref.groupAxis;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var ref$1 = this.groupOptions();\n var groups = ref$1.groups;\n var groupsSize = ref$1.groupsSize;\n var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n var groupsCount = groups.length;\n var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n var groupStart = groupsStart;\n\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var group = groups[groupIdx];\n var groupElements = group.groupElements;\n var elementStart = box[elementAxis + 1];\n var groupElementsCount = groupElements.length;\n\n for (var idx = 0; idx < groupElementsCount; idx++) {\n var element = groupElements[idx];\n var elementSize$$1 = this$1$1.elementSize(element);\n var groupElementStart = groupStart + this$1$1.alignStart(elementSize$$1[groupSizeField], group.groupSize);\n\n var elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize$$1[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize$$1[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize$$1[elementSizeField] + this$1$1.elementSpacing;\n }\n groupStart += group.groupSize + this$1$1.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n },\n\n alignStart: function(size, maxSize) {\n var start = 0;\n var align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n },\n\n groupOptions: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var children = ref.children;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var elementSpacing = ref.elementSpacing;\n var groupSpacing = ref.groupSpacing;\n var maxSize = round(box[elementSizeField]());\n var childrenCount = children.length;\n var groups = [];\n\n var groupSize = 0;\n var groupElementsSize = 0;\n var groupsSize = 0;\n var maxGroupElementsSize = 0;\n var groupElements = [];\n\n for (var idx = 0; idx < childrenCount; idx++) {\n var element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n var elementSize$$1 = this$1$1.elementSize(element);\n if (this$1$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize$$1[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize$$1[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize$$1[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n },\n\n elementSize: function(element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n },\n\n createVisual: function() {}\n });\n\n setDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n });\n\n var DrawingText = drawing.Text;\n\n var Text = ChartElement.extend({\n init: function(content, options) {\n ChartElement.fn.init.call(this, options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var size = options.size = util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n },\n\n createVisual: function() {\n var ref = this.options;\n var font = ref.font;\n var color = ref.color;\n var opacity = ref.opacity;\n var cursor = ref.cursor;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n }\n });\n\n setDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n });\n\n function rectToBox(rect) {\n var origin = rect.origin;\n var bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n }\n\n var ROWS_SPLIT_REGEX = /\\n/m;\n\n var TextBox = BoxElement.extend({\n init: function(content, options, data) {\n BoxElement.fn.init.call(this, options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n },\n\n _initContainer: function() {\n var options = this.options;\n var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n var text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n var visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n BoxElement.fn.reflow.call(this, targetBox);\n\n if (options.rotation) {\n var margin = getSpacing(options.margin);\n var box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n },\n\n createVisual: function() {\n var options = this.options;\n\n this.visual = new Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n var box = Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n },\n\n renderVisual: function() {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n var visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n visualContext: function(targetBox) {\n var this$1$1 = this;\n\n var context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: function () {\n this$1$1._boxReflow = true;\n this$1$1.reflow(targetBox);\n this$1$1._boxReflow = false;\n return this$1$1.getDefaultVisual();\n }\n };\n if (this.data) {\n $.extend(context, this.data);\n }\n\n return context;\n },\n\n getDefaultVisual: function() {\n this.createVisual();\n this.renderChildren();\n var visual = this.visual;\n delete this.visual;\n return visual;\n },\n\n rotate: function() {\n var options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n },\n\n rotationTransform: function() {\n var rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n var ref = this.normalBox.center();\n var cx = ref.x;\n var cy = ref.y;\n var boxCenter = this.rotatedBox.center();\n\n return geometryTransform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n }\n });\n\n var Title = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this._textBox = new TextBox(this.options.text, $.extend({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n },\n\n reflow: function(targetBox) {\n ChartElement.fn.reflow.call(this, targetBox);\n this.box.snapTo(targetBox, X);\n }\n });\n\n Title.buildTitle = function(options, defaultOptions) {\n var titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = $.extend({ visible: true }, defaultOptions, titleOptions);\n\n var title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n };\n\n Title.orderTitles = function(titles) {\n var items = [].concat(titles);\n var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n };\n\n function collapseVerticalMargins(items) {\n for (var i = 1; i < items.length; i++) {\n var box = items[i]._textBox;\n var prevBox = items[i - 1]._textBox;\n prevBox.options.margin = $.extend(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = $.extend(getSpacing(box.options.margin), { top: 0 });\n }\n }\n\n setDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n });\n\n var AxisLabel = TextBox.extend({\n init: function(value, text, index, dataItem, options) {\n TextBox.fn.init.call(this, text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n },\n\n visualContext: function(targetBox) {\n var context = TextBox.fn.visualContext.call(this, targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n },\n\n click: function(widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n },\n\n rotate: function() {\n if (this.options.alignRotation !== CENTER) {\n var box = this.normalBox.toRect();\n var transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n TextBox.fn.rotate.call(this);\n }\n\n return this.box;\n },\n\n rotationTransform: function() {\n var options = this.options;\n var rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return TextBox.fn.rotationTransform.call(this);\n }\n\n var rotationMatrix = geometryTransform().rotate(rotation).matrix();\n var box = this.normalBox.toRect();\n var rect = this.targetBox.toRect();\n\n var rotationOrigin = options.rotationOrigin || TOP;\n var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n var topLeft = box.topLeft().transformCopy(rotationMatrix);\n var topRight = box.topRight().transformCopy(rotationMatrix);\n var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n var rotatedBox = Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n var translate = {};\n translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n var alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geometryTransform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n }\n });\n\n setDefaultOptions(AxisLabel, {\n _autoReflow: false\n });\n\n var DEFAULT_ICON_SIZE = 7;\n var DEFAULT_LABEL_COLOR = \"#fff\";\n\n var Note = BoxElement.extend({\n init: function(fields, options, chartService) {\n BoxElement.fn.init.call(this, options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n },\n\n hide: function() {\n this.options.visible = false;\n },\n\n show: function() {\n this.options.visible = true;\n },\n\n render: function() {\n var this$1$1 = this;\n\n var options = this.options;\n\n if (options.visible) {\n var label = options.label;\n var icon = options.icon;\n var box = new Box();\n var childAlias = function () { return this$1$1; };\n var size = icon.size;\n var text = this.fields.text;\n var width, height;\n\n if (defined(label) && label.visible) {\n var noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n var marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n },\n\n reflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var marker = ref.marker;\n var wrapperBox = ref.wrapperBox;\n var center = targetBox.center();\n var length = options.line.length;\n var position = options.position;\n\n // TODO: Review\n if (options.visible) {\n var lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n },\n\n createVisual: function() {\n BoxElement.fn.createVisual.call(this);\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual($.extend(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n },\n\n createLine: function() {\n var options = this.options.line;\n\n if (this.linePoints) {\n var path = Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n },\n\n click: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n },\n\n over: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n },\n\n out: function(widget, e) {\n var args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n },\n\n eventArgs: function(e) {\n var options = this.options;\n\n return $.extend(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n }\n });\n\n setDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n });\n\n var defaultImplementation = {\n format: function (format, value) { return value; },\n\n toString: function (value) { return value; },\n\n parseDate: function (value) { return new Date(value); },\n\n firstDay: function () { return 0; }\n };\n\n var current$1 = defaultImplementation;\n\n var IntlService = Class.extend({\n\n });\n\n IntlService.register = function(userImplementation) {\n current$1 = userImplementation;\n };\n\n if (Object.defineProperties) {\n Object.defineProperties(IntlService, {\n implementation: {\n get: function() {\n return current$1;\n }\n }\n });\n }\n\n var FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\n var FormatService = Class.extend({\n init: function(intlService) {\n this._intlService = intlService;\n },\n\n auto: function(formatString) {\n var arguments$1 = arguments;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) { values[ len ] = arguments$1[ len + 1 ]; }\n\n var intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format.apply(intl, [ formatString ].concat( values ));\n }\n\n return intl.toString(values[0], formatString);\n },\n\n localeAuto: function(formatString, values, locale) {\n var intl = this.intl;\n var result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(FormatService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n }\n }\n });\n }\n\n var ChartService = Class.extend({\n init: function(chart, context) {\n if (context === void 0) { context = {}; }\n\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n },\n\n notify: function(name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n },\n\n isPannable: function(axis) {\n var pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n }\n });\n\n if (Object.defineProperties) {\n Object.defineProperties(ChartService.fn, {\n intl: {\n get: function() {\n return this._intlService || IntlService.implementation;\n },\n set: function(value) {\n this._intlService = value;\n this.format.intl = value;\n }\n }\n });\n }\n\n var current$2;\n\n var DomEventsBuilder = Class.extend({\n\n });\n\n DomEventsBuilder.register = function(userImplementation) {\n current$2 = userImplementation;\n };\n\n DomEventsBuilder.create = function(element, events) {\n if (current$2) {\n return current$2.create(element, events);\n }\n };\n\n var services = {\n \tChartService: ChartService,\n \tDomEventsBuilder: DomEventsBuilder,\n \tFormatService: FormatService,\n \tIntlService: IntlService,\n \tTemplateService: TemplateService\n };\n\n function createAxisTick(options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n\n var tick = new Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n }\n\n function createAxisGridLine(options, gridLine) {\n var lineStart = options.lineStart;\n var lineEnd = options.lineEnd;\n var position = options.position;\n\n var line = new Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n }\n\n var Axis = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = new ChartService(); }\n\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n },\n\n initFields: function() {\n },\n\n labelsRange: function() {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n },\n\n normalizeLabelRotation: function(labelOptions) {\n var rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n },\n\n createLabels: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var align = options.vertical ? RIGHT : CENTER;\n var labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n var step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n var range = this.labelsRange();\n for (var idx = range.min; idx < range.max; idx += step) {\n var labelContext = { index: idx, count: range.max };\n var label = this$1$1.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this$1$1.append(label);\n this$1$1.labels.push(label);\n }\n }\n }\n },\n\n clearLabels: function() {\n this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n this.labels = [];\n },\n\n clearTitle: function() {\n var this$1$1 = this;\n\n if (this.title) {\n this.children = grep(this.children, function (child) { return child !== this$1$1.title; });\n this.title = undefined;\n }\n },\n\n clear: function() {\n this.clearLabels();\n this.clearTitle();\n },\n\n lineBox: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var axisX = mirror ? box.x1 : box.x2;\n var axisY = mirror ? box.y2 : box.y1;\n var lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n },\n\n createTitle: function() {\n var options = this.options;\n var titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n var title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n },\n\n createNotes: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var notes = options.notes;\n var items = notes.data || [];\n\n this.notes = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = deepExtend({}, notes, items[i]);\n item.value = this$1$1.parseNoteValue(item.value);\n\n var note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this$1$1.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this$1$1.append(note);\n this$1$1.notes.push(note);\n }\n }\n },\n\n parseNoteValue: function(value) {\n return value;\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n this.createPlotBands();\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n this.createBackground();\n this.createLine();\n },\n\n gridLinesVisual: function() {\n var gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var lineBox = this.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (var i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n },\n\n createLine: function() {\n var options = this.options;\n var line = options.line;\n var lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n var path = new Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n var group = this._lineGroup = new Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n },\n\n getActualTickSize: function() {\n var options = this.options;\n var tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n },\n\n createBackground: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var background = options.background;\n\n if (background) {\n this._backgroundPath = Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var plotBands = options.plotBands || [];\n var vertical = options.vertical;\n var plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1$1.options.vertical; })[0];\n\n for (var idx = 0; idx < plotBands.length; idx++) {\n var item = plotBands[idx];\n var slotX = (void 0), slotY = (void 0);\n var labelOptions = item.label;\n var label = (void 0);\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this$1$1.getSlot(item.from, item.to, true);\n } else {\n slotX = this$1$1.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this$1$1.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n var bandRect = new Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n var path = Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n },\n\n createPlotBandLabel: function(label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n var text = label.text;\n var textbox;\n\n if (defined(label) && label.visible) {\n var labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var minorUnit = options.minorUnit;\n var vertical = options.vertical;\n var axisLineVisible = altAxis.options.line.visible;\n var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n var lineBox = altAxis.lineBox();\n var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (var i = gridLine.skip; i < count; i += step) {\n var pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var title = ref.title;\n var vertical = options.vertical;\n var count = labels.length;\n var sizeFn = vertical ? WIDTH : HEIGHT;\n var titleSize = title ? title.box[sizeFn]() : 0;\n var space = this.getActualTickSize() + options.margin + titleSize;\n var rootBox = (this.getRoot() || {}).box || box;\n var boxSize = rootBox[sizeFn]();\n var maxLabelSize = 0;\n\n for (var i = 0; i < count; i++) {\n var labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n },\n\n getLabelsTickPositions: function() {\n return this.getMajorTickPositions();\n },\n\n labelTickIndex: function(label) {\n return label.index;\n },\n\n arrangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var tickPositions = this.getLabelsTickPositions();\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var labelSize = vertical ? label.box.height() : label.box.width();\n var firstTickPosition = tickPositions[tickIx];\n var nextTickPosition = tickPositions[tickIx + 1];\n var positionStart = (void 0), positionEnd = (void 0);\n\n if (vertical) {\n if (labelsBetweenTicks) {\n var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this$1$1.positionLabel(label, mirror, positionStart, positionEnd);\n }\n },\n\n positionLabel: function(label, mirror, positionStart, positionEnd) {\n if (positionEnd === void 0) { positionEnd = positionStart; }\n\n var options = this.options;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var labelOffset = this.getActualTickSize() + options.margin;\n var labelBox;\n\n if (vertical) {\n var labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n var labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n },\n\n autoRotateLabelAngle: function(labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n },\n\n autoRotateLabels: function() {\n var this$1$1 = this;\n\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n var tickPositions = this.getMajorTickPositions();\n var labels = this.labels;\n var limit = Math.min(labels.length, tickPositions.length - 1);\n var angle = 0;\n\n for (var idx = 0; idx < limit; idx++) {\n var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n var labelBox = labels[idx].box;\n var labelAngle = this$1$1.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n labels[idx$1].options.rotation = angle;\n labels[idx$1].reflow(new Box());\n }\n\n return true;\n }\n },\n\n arrangeTitle: function() {\n var ref = this;\n var options = ref.options;\n var title = ref.title;\n var mirror = options.labels.mirror;\n var vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n },\n\n arrangeNotes: function() {\n var this$1$1 = this;\n\n for (var idx = 0; idx < this.notes.length; idx++) {\n var item = this$1$1.notes[idx];\n var value = item.options.value;\n var slot = (void 0);\n\n if (defined(value)) {\n if (this$1$1.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this$1$1.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this$1$1.lineBox());\n }\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n alignTo: function(secondAxis) {\n var lineBox = secondAxis.lineBox();\n var vertical = this.options.vertical;\n var pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n },\n\n axisLabelText: function(value, options, context) {\n var this$1$1 = this;\n\n var text;\n var tmpl = getTemplate(options);\n var defaultText = function () {\n if (!options.format) {\n return value;\n }\n\n return this$1$1.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n var templateContext = $.extend({}, context, {\n get text() { return defaultText(); },\n value: value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n },\n\n slot: function(from , to, limit) {\n var slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n contentBox: function() {\n var box = this.box.clone();\n var labels = this.labels;\n if (labels.length) {\n var axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n var offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n var lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n },\n\n maxLabelOffset: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var tickPositions = this.getLabelsTickPositions();\n var offsetField = vertical ? Y : X;\n var labels = this.labels;\n var startPosition = reverse ? 1 : 0;\n var endPosition = reverse ? 0 : 1;\n var maxStartOffset = 0;\n var maxEndOffset = 0;\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1$1.labelTickIndex(label);\n var startTick = (void 0), endTick = (void 0);\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n },\n\n limitRange: function(from, to, min, max, offset) {\n var options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n var rangeSize = to - from;\n var minValue = from;\n var maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n },\n\n valueRange: function() {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n },\n\n lineDir: function() {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n },\n\n lineInfo: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = this.lineDir();\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n pointOffset: function(point) {\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n var offset = relative / lineSize;\n\n return offset;\n },\n\n scaleToDelta: function(rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n var MAX_SCALE = 0.999;\n var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n var delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n },\n\n labelsBetweenTicks: function() {\n return !this.options.justified;\n },\n\n prepareUserOptions: function() {\n }\n });\n\n setDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n });\n\n var MILLISECONDS = \"milliseconds\";\n var SECONDS = \"seconds\";\n var MINUTES = \"minutes\";\n var HOURS = \"hours\";\n var DAYS = \"days\";\n var WEEKS = \"weeks\";\n var MONTHS = \"months\";\n var YEARS = \"years\";\n\n var TIME_PER_MILLISECOND = 1;\n var TIME_PER_SECOND = 1000;\n var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\n var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\n var TIME_PER_DAY = 24 * TIME_PER_HOUR;\n var TIME_PER_WEEK = 7 * TIME_PER_DAY;\n var TIME_PER_MONTH = 31 * TIME_PER_DAY;\n var TIME_PER_YEAR = 365 * TIME_PER_DAY;\n var TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n };\n\n function absoluteDateDiff(a, b) {\n var diff = a.getTime() - b;\n var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n }\n\n function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n }\n\n function toDate(value) {\n var result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n }\n\n function startOfWeek(date, weekStartDay) {\n if (weekStartDay === void 0) { weekStartDay = 0; }\n\n var daysToSubtract = 0;\n var day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n }\n\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n\n return false;\n }\n\n function addHours(date, hours) {\n var roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n }\n\n function addDuration(dateValue, value, unit, weekStartDay) {\n var result = dateValue;\n\n if (dateValue) {\n var date = toDate(dateValue);\n var hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n }\n\n function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n }\n\n function ceilDate(dateValue, unit, weekStartDay) {\n var date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n }\n\n function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n }\n\n function dateDiff(a, b) {\n return a.getTime() - b;\n }\n\n function toTime(value) {\n if (isArray(value)) {\n var result = [];\n for (var idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n }\n\n function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n }\n\n function timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n function dateIndex(value, start, baseUnit, baseUnitStep) {\n var date = toDate(value);\n var startDate = toDate(start);\n var index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n }\n\n function duration(a, b, unit) {\n var diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n }\n\n function lteDateIndex(date, sortedDates) {\n var low = 0;\n var high = sortedDates.length - 1;\n var index;\n\n while (low <= high) {\n index = Math.floor((low + high) / 2);\n var currentDate = sortedDates[index];\n\n if (currentDate < date) {\n low = index + 1;\n continue;\n }\n\n if (currentDate > date) {\n high = index - 1;\n continue;\n }\n\n while (dateEquals(sortedDates[index - 1], date)) {\n index--;\n }\n\n return index;\n }\n\n if (sortedDates[index] <= date) {\n return index;\n }\n\n return index - 1;\n }\n\n function parseDate(intlService, date) {\n var result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n }\n\n function parseDates(intlService, dates) {\n if (isArray(dates)) {\n var result = [];\n for (var idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n }\n\n function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n }\n\n var MIN_CATEGORY_POINTS_RANGE = 0.01;\n var MIN_CATEGORY_RANGE = 0.1;\n\n function indexOf(value, arr) {\n if (value instanceof Date) {\n var length = arr.length;\n for (var idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n }\n\n var CategoryAxis = Axis.extend({\n initFields: function() {\n this._ticks = {};\n },\n\n categoriesHash: function() {\n return \"\";\n },\n\n clone: function() {\n var copy = new CategoryAxis($.extend({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n initUserOptions: function(options) {\n var categories = options.categories || [];\n var definedMin = defined(options.min);\n var definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n var min = definedMin ? Math.floor(options.min) : 0;\n var max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n },\n\n rangeIndices: function() {\n var options = this.options;\n var length = options.categories.length || 1;\n var min = isNumber(options.min) ? options.min % 1 : 0;\n var max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n totalRangeIndices: function(limit) {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (limit) {\n var totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n range: function() {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n },\n\n roundedRange: function() {\n return this.range();\n },\n\n totalRange: function() {\n var options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n },\n\n scaleOptions: function() {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var lineBox = this.lineBox();\n var size = this.options.vertical ? lineBox.height() : lineBox.width();\n var scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n },\n\n arrangeLabels: function() {\n Axis.fn.arrangeLabels.call(this);\n this.hideOutOfRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n var ref = this;\n var box = ref.box;\n var labels = ref.labels;\n\n if (labels.length > 0) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n var firstLabel = labels[0];\n var lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n },\n\n getMajorTickPositions: function() {\n return this.getTicks().majorTicks;\n },\n\n getMinorTickPositions: function() {\n return this.getTicks().minorTicks;\n },\n\n getLabelsTickPositions: function() {\n return this.getTicks().labelTicks;\n },\n\n tickIndices: function(stepSize) {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var limit = Math.ceil(max);\n var current = Math.floor(min);\n var indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n },\n\n getTickPositions: function(stepSize) {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n var indices = this.tickIndices(stepSize);\n var positions = [];\n\n for (var idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n },\n\n getTicks: function() {\n var options = this.options;\n var cache = this._ticks;\n var range = this.rangeIndices();\n var lineBox = this.lineBox();\n var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n },\n\n filterOutOfRangePositions: function(positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n var axis = this.options.vertical ? Y : X;\n var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n var end = positions.length - 1;\n var startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n var endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n },\n\n lineInfo: function() {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = reverse ? -1 : 1;\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n },\n\n lineDir: function() {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var reverse = ref.reverse;\n return reverse ? -1 : 1;\n },\n\n getSlot: function(from, to, limit) {\n var options = this.options;\n var reverse = options.reverse;\n var justified = options.justified;\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var box = ref.box;\n var min = ref.min;\n var ref$1 = this.lineInfo();\n var valueAxis = ref$1.axis;\n var lineStart = ref$1.lineStart;\n\n var slotBox = box.clone();\n var singleSlot = !defined(to);\n\n var start = valueOrDefault(from, 0);\n var end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n var p1 = lineStart + (start - min) * scale;\n var p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n },\n\n limitSlot: function(slot) {\n var vertical = this.options.vertical;\n var valueAxis = vertical ? Y : X;\n var lineBox = this.lineBox();\n var limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n },\n\n slot: function(from, to, limit) {\n var min = Math.floor(this.options.min || 0);\n var start = from;\n var end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return Axis.fn.slot.call(this, start, end, limit);\n },\n\n pointCategoryIndex: function(point) {\n var ref = this.options;\n var reverse = ref.reverse;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var max = ref$1.max;\n var startValue = reverse ? max : min;\n var lineStart = box[valueAxis + 1];\n var lineEnd = box[valueAxis + 2];\n var pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n var value = startValue + (pos - lineStart) / scale;\n var diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n },\n\n getCategory: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n },\n\n categoryIndex: function(value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n },\n\n categoryAt: function(index, total) {\n var options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n },\n\n categoriesCount: function() {\n return (this.options.categories || []).length;\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var range = options.categories.length;\n var scale = size / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var rangeIndices = this.totalRangeIndices();\n var range = rangeIndices.max - rangeIndices.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = rangeIndices.min + minDelta;\n var max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var ref = this.totalRange();\n var totalMin = ref.min;\n var totalMax = ref.max;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n },\n\n labelsCount: function() {\n var labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n },\n\n labelsRange: function() {\n var options = this.options;\n var justified = options.justified;\n var labelOptions = options.labels;\n var ref = this.totalRangeIndices(true);\n var min = ref.min;\n var max = ref.max;\n var start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n var skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var dataItem = options.dataItems ? options.dataItems[index] : null;\n var category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n var text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.totalRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n },\n\n noteSlot: function(value) {\n var options = this.options;\n var index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n },\n\n arrangeNotes: function() {\n Axis.fn.arrangeNotes.call(this);\n this.hideOutOfRangeNotes();\n },\n\n hideOutOfRangeNotes: function() {\n var ref = this;\n var notes = ref.notes;\n var box = ref.box;\n if (notes && notes.length) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n\n for (var idx = 0; idx < notes.length; idx++) {\n var note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n },\n\n pan: function(delta) {\n var range = this.totalRangeIndices(true);\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n var totalRange = this.totalRange();\n var min = range.min + offset;\n var max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n },\n\n pointsRange: function(start, end) {\n var ref = this.options;\n var reverse = ref.reverse;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var range = this.totalRangeIndices(true);\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n var diffStart = start[valueAxis] - lineStart;\n var diffEnd = end[valueAxis] - lineStart;\n\n var min = range.min + diffStart / scale;\n var max = range.min + diffEnd / scale;\n var rangeMin = Math.min(min, max);\n var rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n },\n\n valueRange: function() {\n return this.range();\n },\n\n totalIndex: function(value) {\n var options = this.options;\n var index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n },\n\n currentRangeIndices: function() {\n var options = this.options;\n var min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n var max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n mapCategories: function() {\n if (!this._categoriesMap) {\n var map$$1 = this._categoriesMap = new HashMap();\n var srcCategories = this.options.srcCategories;\n for (var idx = 0; idx < srcCategories.length; idx++) {\n map$$1.set(srcCategories[idx], idx);\n }\n }\n },\n\n totalCount: function() {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n }\n });\n\n setDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n });\n\n var COORDINATE_LIMIT = 300000;\n\n var DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n };\n\n var ZERO_THRESHOLD = 0.2;\n\n var AUTO = \"auto\";\n var BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n ];\n var FIT = \"fit\";\n\n function categoryRange(categories) {\n var range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n }\n\n var EmptyDateRange = Class.extend({\n init: function(options) {\n this.options = options;\n },\n\n displayIndices: function() {\n return {\n min: 0,\n max: 1\n };\n },\n\n displayRange: function() {\n return {};\n },\n\n total: function() {\n return {};\n },\n\n valueRange: function() {\n return {};\n },\n\n valueIndex: function() {\n return -1;\n },\n\n values: function() {\n return [];\n },\n\n totalIndex: function() {\n return -1;\n },\n\n valuesCount: function() {\n return 0;\n },\n\n totalCount: function() {\n return 0;\n },\n\n dateAt: function() {\n return null;\n }\n });\n\n var DateRange = Class.extend({\n init: function(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n var roundToBaseUnit = options.roundToBaseUnit;\n var justified = options.justified;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n var lowerEnd = this.roundToTotalStep(end);\n var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n var min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n var max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n var next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n },\n\n displayRange: function() {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n },\n\n displayIndices: function() {\n if (!this._indices) {\n var options = this.options;\n\n var baseUnit = options.baseUnit;\n var baseUnitStep = options.baseUnitStep;\n\n var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n },\n\n total: function() {\n return {\n min: this.start,\n max: this.end\n };\n },\n\n totalCount: function() {\n var last$$1 = this.totalIndex(this.end);\n\n return last$$1 + (this.options.justified ? 1 : 0);\n },\n\n valueRange: function() {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n },\n\n valueIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n },\n\n totalIndex: function(value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n },\n\n dateIndex: function(value) {\n var options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n },\n\n valuesCount: function() {\n var maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n },\n\n values: function() {\n var values = this._values;\n if (!values) {\n var options = this.options;\n var range = this.valueRange();\n this._values = values = [];\n\n for (var date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n },\n\n dateAt: function(index, total) {\n var options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n },\n\n roundToTotalStep: function(value, upper, next) {\n var ref = this.options;\n var baseUnit = ref.baseUnit;\n var baseUnitStep = ref.baseUnitStep;\n var weekStartDay = ref.weekStartDay;\n var start = this.start;\n\n var step = dateIndex(value, start, baseUnit, baseUnitStep);\n var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n }\n });\n\n function autoBaseUnit(options, startUnit, startStep) {\n var categoryLimits = categoryRange(options.categories);\n var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n var autoUnit = options.baseUnit === FIT;\n var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n var units = span / TIME_PER_UNIT[baseUnit];\n var totalUnits = units;\n var unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n }\n\n function defaultBaseUnit(options) {\n var categories = options.categories;\n var count = defined(categories) ? categories.length : 0;\n var minDiff = MAX_VALUE;\n var lastCategory, unit;\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n var category = categories[categoryIx];\n\n if (category && lastCategory) {\n var diff = absoluteDateDiff(category, lastCategory);\n if (diff > 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n }\n\n function initUnit(options) {\n var baseUnit = (options.baseUnit || \"\").toLowerCase();\n var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n }\n\n var DateCategoryAxis = CategoryAxis.extend({\n clone: function() {\n var copy = new DateCategoryAxis($.extend({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n },\n\n categoriesHash: function() {\n var start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n },\n\n initUserOptions: function(options) {\n return options;\n },\n\n initFields: function() {\n CategoryAxis.fn.initFields.call(this);\n\n var chartService = this.chartService;\n var intlService = chartService.intl;\n var options = this.options;\n\n var categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n var range = categoryRange(categories);\n var maxDivisions = options.maxDivisions;\n\n this.dataRange = new DateRange(range.min, range.max, initUnit(options));\n\n if (maxDivisions) {\n var dataRange = this.dataRange.displayRange();\n\n var divisionOptions = $.extend({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n var dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n },\n\n tickIndices: function(stepSize) {\n var ref = this;\n var dataRange = ref.dataRange;\n var divisionRange = ref.divisionRange;\n var valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return CategoryAxis.fn.tickIndices.call(this, stepSize);\n }\n\n var indices = [];\n var values = divisionRange.values();\n var offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (var idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n var last$$1 = indices.length - 1;\n indices.splice(idx, 0, indices[last$$1 - 1] + (indices[last$$1] - indices[last$$1 - 1]) * stepSize);\n }\n }\n\n return indices;\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n var categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n },\n\n parseNoteValue: function(value) {\n return parseDate(this.chartService.intl, value);\n },\n\n noteSlot: function(value) {\n return this.getSlot(value);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var baseUnit = options.baseUnit;\n var weekStartDay = options.weekStartDay;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / (range.max - range.min);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n var from = addTicks(options.min || range.min, offset);\n var to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n },\n\n labelsRange: function() {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n },\n\n pan: function(delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var ref = this.dataRange.displayRange();\n var min = ref.min;\n var max = ref.max;\n var totalLimits = this.dataRange.total();\n var scale = size / (max - min);\n var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n var from = addTicks(min, offset);\n var to = addTicks(max, offset);\n\n var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n },\n\n pointsRange: function(start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n var pointsRange = CategoryAxis.fn.pointsRange.call(this, start, end);\n var datesRange = this.dataRange.displayRange();\n var indicesRange = this.dataRange.displayIndices();\n var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n var options = this.options;\n\n var min = addTicks(datesRange.min, pointsRange.min * scale);\n var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n },\n\n scaleRange: function(scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n var options = this.options;\n var fit = options.userSetBaseUnit === FIT;\n var totalLimits = this.dataRange.total();\n var ref = this.dataRange.displayRange();\n var rangeMin = ref.min;\n var rangeMax = ref.max;\n\n var position = Math.abs(this.pointOffset(cursor));\n var range = rangeMax - rangeMin;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = Math.round(position * delta);\n var maxDelta = Math.round((1 - position) * delta);\n\n var ref$1 = this.dataRange.options;\n var baseUnit = ref$1.baseUnit;\n var min = new Date(rangeMin.getTime() + minDelta);\n var max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n\n var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n var rangeDiff = dateDiff(rangeMax, rangeMin);\n var diff = dateDiff(max, min);\n var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n var autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n var stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n },\n\n zoomRange: function(scale, cursor) {\n var totalLimits = this.dataRange.total();\n var range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n },\n\n range: function() {\n return this.dataRange.displayRange();\n },\n\n createLabels: function() {\n CategoryAxis.fn.createLabels.call(this);\n this.createRangeLabels();\n },\n\n clearLabels: function() {\n CategoryAxis.fn.clearLabels.call(this);\n this.rangeLabels = [];\n },\n\n arrangeLabels: function() {\n this.arrangeRangeLabels();\n CategoryAxis.fn.arrangeLabels.call(this);\n },\n\n arrangeRangeLabels: function() {\n var ref = this;\n var options = ref.options;\n var rangeLabels = ref.rangeLabels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n var firstLabel = rangeLabels[0];\n if (firstLabel) {\n var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n var lastLabel = rangeLabels[1];\n if (lastLabel) {\n var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position$1);\n }\n },\n\n autoRotateLabels: function() {\n CategoryAxis.fn.autoRotateLabels.call(this);\n this.autoRotateRangeLabels();\n },\n\n hideOutOfRangeLabels: function() {\n CategoryAxis.fn.hideOutOfRangeLabels.call(this);\n this.hideOverlappingLabels();\n },\n\n hideOverlappingLabels: function() {\n var ref = this;\n var rangeLabels = ref.rangeLabels;\n var labels = ref.labels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n var firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (var i = 0; i < labels.length; i++) {\n var overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n var lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n if (!overlaps$1) {\n break;\n }\n }\n }\n },\n\n contentBox: function() {\n var box = CategoryAxis.fn.contentBox.call(this);\n var rangeLabels = this.rangeLabels;\n\n for (var i = 0; i < rangeLabels.length; i++) {\n var label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n if (labelContext === void 0) { labelContext = {}; }\n\n var options = this.options;\n var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n var date = this.divisionRange.dateAt(index);\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n },\n\n createRangeLabels: function() {\n var this$1$1 = this;\n\n var ref = this.divisionRange;\n var displayStart = ref.displayStart;\n var displayEnd = ref.displayEnd;\n var options = this.options;\n var labelOptions = $.extend({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var createLabel = function (index, date, text) {\n if (text) {\n var label = new AxisLabel(date, text, index, null, labelOptions);\n this$1$1.append(label);\n this$1$1.rangeLabels.push(label);\n }\n };\n\n var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n },\n\n autoRotateRangeLabels: function() {\n var this$1$1 = this;\n\n var labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n var rotateLabel = function (label, tickPositions, index) {\n var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n var angle = this$1$1.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n var tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n },\n\n categoryIndex: function(value) {\n return this.dataRange.valueIndex(value);\n },\n\n slot: function(from, to, limit) {\n var dateRange = this.dataRange;\n var start = from;\n var end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n var slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n },\n\n getSlot: function(a, b, limit) {\n var start = a;\n var end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return CategoryAxis.fn.getSlot.call(this, start, end, limit);\n },\n\n valueRange: function() {\n var options = this.options;\n var range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n },\n\n categoryAt: function(index, total) {\n return this.dataRange.dateAt(index, total);\n },\n\n categoriesCount: function() {\n return this.dataRange.valuesCount();\n },\n\n rangeIndices: function() {\n return this.dataRange.displayIndices();\n },\n\n labelsBetweenTicks: function() {\n return !this.divisionRange.options.justified;\n },\n\n prepareUserOptions: function() {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n },\n\n getCategory: function(point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n },\n\n totalIndex: function(value) {\n return this.dataRange.totalIndex(value);\n },\n\n currentRangeIndices: function() {\n var range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n },\n\n totalRange: function() {\n return this.dataRange.total();\n },\n\n totalCount: function() {\n return this.dataRange.totalCount();\n },\n\n isEmpty: function() {\n return !this.options.srcCategories.length;\n },\n\n roundedRange: function() {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n var options = this.options;\n var datesRange = categoryRange(options.srcCategories);\n\n var dateRange = new DateRange(datesRange.min, datesRange.max, $.extend({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: false\n }));\n\n return dateRange.displayRange();\n }\n });\n\n setDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n });\n\n function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n var axisMin;\n\n if (min >= 0 && max >= 0) {\n var minValue = min === max ? 0 : min;\n\n var diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n }\n\n function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n var axisMax;\n\n if (min <= 0 && max <= 0) {\n var maxValue = min === max ? 0 : max;\n\n var diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n }\n\n function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n }\n\n function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n }\n\n function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n }\n\n var MIN_VALUE_RANGE$1 = Math.pow(10, -DEFAULT_PRECISION + 1);\n\n var NumericAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n Axis.fn.init.call(this, $.extend({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n },\n\n initUserOptions: function(options) {\n var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n },\n\n initFields: function() {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n },\n\n clone: function() {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return 0;\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n var options = this.options;\n var range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n },\n\n getTickPositions: function(unit, skipUnit) {\n var options = this.options;\n var ref = this.lineInfo();\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var range = options.max - options.min;\n var scale = lineSize / range;\n var step = unit * scale;\n var divisions = this.getDivisions(unit);\n var positions = [];\n var pos = lineBox[axisOrigin];\n var skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (var idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n },\n\n getMajorTickPositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(a, b, limit) {\n if (limit === void 0) { limit = false; }\n\n var options = this.options;\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var lineStart = ref.lineStart;\n var step = axisDir * (lineSize / (options.max - options.min));\n\n var start = valueOrDefault(a, b || 0);\n var end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n var p1 = Math.min(start, end) - options.min;\n var p2 = Math.max(start, end) - options.min;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n },\n\n getValue: function(point) {\n var options = this.options;\n var max = Number(options.max);\n var min = Number(options.min);\n var offset = this.pointOffset(point);\n var valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n var value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var vertical = options.vertical;\n var reverse = options.reverse;\n var max = options.max;\n var min = options.min;\n var ref = this.lineInfo();\n var lineSize = ref.lineSize;\n var range = max - min;\n var scale = lineSize / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n },\n\n labelsCount: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE$1) {\n max = min + MIN_VALUE_RANGE$1;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n },\n\n isValidRange: function(min, max) {\n return max - min > MIN_VALUE_RANGE$1;\n }\n });\n\n function autoAxisOptions(seriesMin, seriesMax, options) {\n var narrowRange = options.narrowRange;\n\n var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n var majorUnit = autoMajorUnit(autoMin, autoMax);\n var autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n }\n\n function totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n }\n\n function clearNullValues(options, fields) {\n for (var idx = 0; idx < fields.length; idx++) {\n var field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n }\n\n function axisOptions(autoOptions, userOptions) {\n var options = userOptions;\n var userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n var userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n var result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n }\n\n function remainderClose(value, divisor, ratio) {\n var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n var threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n }\n\n setDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n });\n\n var MIN_VALUE_RANGE = 1000;\n\n var DateValueAxis = Axis.extend({\n init: function(seriesMin, seriesMax, axisOptions, chartService) {\n var min = toDate(seriesMin);\n var max = toDate(seriesMax);\n\n var intlService = chartService.intl;\n var options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n Axis.fn.init.call(this, options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n var weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n },\n\n clone: function() {\n return new DateValueAxis(this.seriesMin, this.seriesMax, $.extend({}, this.options), this.chartService);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n getDivisions: function(stepValue) {\n var options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n },\n\n getTickPositions: function(step) {\n var options = this.options;\n var ref = this.lineInfo();\n var dir = ref.axisDir;\n var lineSize = ref.lineSize;\n var start = ref.lineStart;\n var divisions = this.getDivisions(step);\n var timeRange = dateDiff(options.max, options.min);\n var scale = lineSize / timeRange;\n var weekStartDay = options.weekStartDay || 0;\n\n var positions = [ start ];\n for (var i = 1; i < divisions; i++) {\n var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n var pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n },\n\n getMajorTickPositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n getMinorTickPositions: function() {\n return this.getTickPositions(this.options.minorUnit);\n },\n\n getSlot: function(a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n },\n\n getValue: function(point) {\n var value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n },\n\n labelsCount: function() {\n return this.getDivisions(this.options.majorUnit);\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var options = this.options;\n var offset = index * options.majorUnit;\n var weekStartDay = options.weekStartDay || 0;\n var date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n var unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n },\n\n translateRange: function(delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var reverse = options.reverse;\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / dateDiff(range.max, range.min);\n\n var offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n var from = addTicks(options.min, offset);\n var to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta, true);\n var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n },\n\n scaleRange: function(scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = toDate(toTime(this.options.min) + minDelta);\n var max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min: min,\n max: max\n };\n }\n });\n\n function timeUnits(delta) {\n var unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n }\n\n function applyDefaults(seriesMin, seriesMax, options) {\n var min = options.min || seriesMin;\n var max = options.max || seriesMax;\n var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n var baseUnitTime = TIME_PER_UNIT[baseUnit];\n var weekStartDay = options.weekStartDay || 0;\n var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n var majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n var actualUnits = duration(autoMin, autoMax, baseUnit);\n var totalUnits = ceil(actualUnits, majorUnit);\n var unitsToAdd = totalUnits - actualUnits;\n var head = Math.floor(unitsToAdd / 2);\n var tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n }\n\n setDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n });\n\n var DEFAULT_MAJOR_UNIT = 10;\n var MIN_VALUE_RANGE$2 = 1e-6;\n\n var LogarithmicAxis = Axis.extend({\n init: function(seriesMin, seriesMax, options, chartService) {\n\n var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n var base = axisOptions.majorUnit;\n var autoMax = autoAxisMax$1(seriesMax, base);\n var autoMin = autoAxisMin$1(seriesMin, seriesMax, axisOptions);\n var range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n Axis.fn.init.call(this, axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n },\n\n clone: function() {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n $.extend({}, this.options),\n this.chartService\n );\n },\n\n startValue: function() {\n return this.options.min;\n },\n\n getSlot: function(a, b, limit) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var min = options.min;\n var max = options.max;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineBox = ref$1.lineBox;\n var lineSize = ref$1.lineSize;\n var lineStart = ref$1.lineStart;\n var step = axisDir * (lineSize / (logMax - logMin));\n var start = valueOrDefault(a, b || 1);\n var end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n var p1 = Math.min(start, end) - logMin;\n var p2 = Math.max(start, end) - logMin;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n },\n\n getValue: function(point) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineStart = ref$1.lineStart;\n var lineSize = ref$1.lineSize;\n var step = ((logMax - logMin) / lineSize);\n var offset = axisDir * (point[axis] - lineStart);\n var valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n var value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n },\n\n range: function() {\n var options = this.options;\n return { min: options.min, max: options.max };\n },\n\n translateRange: function(delta) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var reverse = options.reverse;\n var vertical = options.vertical;\n var base = options.majorUnit;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var scale = size / (logMax - logMin);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n },\n\n labelsCount: function() {\n var floorMax = Math.floor(this.logMax);\n var count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n },\n\n getMajorTickPositions: function() {\n var ticks = [];\n\n this.traverseMajorTicksPositions(function (position) {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n },\n\n createTicks: function(lineGroup) {\n var options = this.options;\n var majorTicks = options.majorTicks;\n var minorTicks = options.minorTicks;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var lineBox = this.lineBox();\n var ticks = [];\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var vertical = options.vertical;\n var lineBox = altAxis.lineBox();\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n },\n\n traverseMajorTicksPositions: function(callback, tickOptions) {\n var ref = this.lineInfo();\n var lineStart = ref.lineStart;\n var step = ref.step;\n var ref$1 = this;\n var logMin = ref$1.logMin;\n var logMax = ref$1.logMax;\n\n for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n },\n\n traverseMinorTicksPositions: function(callback, tickOptions) {\n var this$1$1 = this;\n\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var ref$1 = this.lineInfo();\n var lineStart = ref$1.lineStart;\n var step = ref$1.step;\n var ref$2 = this;\n var logMin = ref$2.logMin;\n var logMax = ref$2.logMax;\n var start = Math.floor(logMin);\n\n for (var power = start; power < logMax; power++) {\n var minorOptions = this$1$1._minorIntervalOptions(power);\n for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n var value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n },\n\n createAxisLabel: function(index, labelOptions, labelContext) {\n var power = Math.ceil(this.logMin + index);\n var value = Math.pow(this.options.majorUnit, power);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n },\n\n shouldRenderNote: function(value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n },\n\n pan: function(delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n },\n\n pointsRange: function(start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n },\n\n scaleRange: function(scale, cursor) {\n var ref = this.options;\n var base = ref.majorUnit;\n var logMin = log(this.options.min, base);\n var logMax = log(this.options.max, base);\n var position = Math.abs(this.pointOffset(cursor));\n var range = logMax - logMin;\n var delta = this.scaleToDelta(scale, range);\n var min = Math.pow(base, logMin + position * delta);\n var max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE$2) {\n max = min + MIN_VALUE_RANGE$2;\n }\n\n return {\n min: min,\n max: max\n };\n },\n\n zoomRange: function(scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n },\n\n _minorIntervalOptions: function(power) {\n var ref = this.options;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var value = Math.pow(base, power);\n var nextValue = Math.pow(base, power + 1);\n var difference = nextValue - value;\n var minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n },\n\n lineInfo: function() {\n var info = Axis.fn.lineInfo.call(this);\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n }\n });\n\n function initRange(autoMin, autoMax, axisOptions, options) {\n var min = axisOptions.min;\n var max = axisOptions.max;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n function autoAxisMin$1(min, max, options) {\n var base = options.majorUnit;\n var autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n }\n\n function autoAxisMax$1(max, base) {\n var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n var autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n }\n\n function throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n }\n\n function log(x, base) {\n return Math.log(x) / Math.log(base);\n }\n\n setDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n });\n\n var GridLinesMixin = {\n createGridLines: function(altAxis) {\n var options = this.options;\n var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n var gridLines = [];\n var skipMajor = false;\n var majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n var center = this.box.center();\n var circle = new Circle([ center.x, center.y ], radius);\n var container = this.gridLinesVisual();\n\n for (var i = 0; i < angles.length; i++) {\n var line = new Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n var this$1$1 = this;\n\n var divs = this.intervals(size, skip, step, skipAngles);\n var options = altAxis.options;\n var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, function (d) {\n var alpha = this$1$1.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n };\n\n var RadarCategoryAxis = CategoryAxis.extend({\n range: function() {\n return { min: 0, max: this.options.categories.length };\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n lineBox: function() {\n return this.box;\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n var measureBox = new Box();\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var options = this.options;\n var categories = options.categories.length;\n var divCount = categories / size || 1;\n var divAngle = 360 / divCount;\n var skip = skipOption || 0;\n var step = stepOption || 1;\n var divs = [];\n var angle = 0;\n\n for (var i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n },\n\n majorIntervals: function() {\n return this.intervals(1);\n },\n\n minorIntervals: function() {\n return this.intervals(0.5);\n },\n\n intervalAngle: function(interval) {\n return (360 + interval + this.options.startAngle) % 360;\n },\n\n majorAngles: function() {\n var this$1$1 = this;\n\n return map(this.majorIntervals(), function (interval) { return this$1$1.intervalAngle(interval); });\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var ref = this.options;\n var minorGridLines = ref.minorGridLines;\n var majorGridLines = ref.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n\n radiusCallback: function(radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = rad(360 / (this.options.categories.length * 2));\n var minorRadius = Math.cos(minorAngle) * radius;\n var majorAngles = this.majorAngles();\n\n var radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var plotBands = this.options.plotBands || [];\n\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var slot = this$1$1.plotBandSlot(band);\n var singleSlot = this$1$1.getSlot(band.from);\n\n var head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n var tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n },\n\n plotBandSlot: function(band) {\n return this.getSlot(band.from, band.to - 1);\n },\n\n getSlot: function(from, to) {\n var options = this.options;\n var justified = options.justified;\n var box = this.box;\n var divs = this.majorAngles();\n var totalDivs = divs.length;\n var slotAngle = 360 / totalDivs;\n var fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n var slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n var slots = toValue - fromValue + 1;\n var angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n },\n\n slot: function(from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n\n return new geometry.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n },\n\n pointCategoryIndex: function(point) {\n var this$1$1 = this;\n\n var length = this.options.categories.length;\n var index = null;\n\n for (var i = 0; i < length; i++) {\n var slot = this$1$1.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n }\n });\n\n setDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n });\n deepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\n var PolarAxis = Axis.extend({\n init: function(options, chartService) {\n Axis.fn.init.call(this, options, chartService);\n\n var instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n },\n\n getDivisions: function(stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n },\n\n reflow: function(box) {\n this.box = box;\n this.reflowLabels();\n },\n\n reflowLabels: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n\n var measureBox = new Box();\n var divs = this.intervals(options.majorUnit, skip, step);\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n\n lineBox: function() {\n return this.box;\n },\n\n intervals: function(size, skipOption, stepOption, skipAngles) {\n if (skipAngles === void 0) { skipAngles = false; }\n\n var min = this.options.min;\n var divisions = this.getDivisions(size);\n var divs = [];\n var skip = skipOption || 0;\n var step = stepOption || 1;\n\n for (var i = skip; i < divisions; i += step) {\n var current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n },\n\n majorIntervals: function() {\n return this.intervals(this.options.majorUnit);\n },\n\n minorIntervals: function() {\n return this.intervals(this.options.minorUnit);\n },\n\n intervalAngle: function(i) {\n return (540 - i - this.options.startAngle) % 360;\n },\n\n createLine: function() {\n return [];\n },\n\n majorGridLineAngles: function(altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n },\n\n minorGridLineAngles: function(altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n\n plotBandSlot: function(band) {\n return this.getSlot(band.from, band.to);\n },\n\n getSlot: function(a, b) {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var startAngle = options.startAngle;\n var start = limitValue(a, options.min, options.max);\n var end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n var tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n },\n\n slot: function(from, to) {\n if (to === void 0) { to = from; }\n\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var min = Math.min(from, to);\n var max = Math.max(from, to);\n var startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geometry.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n },\n\n getValue: function(point) {\n var options = this.options;\n var center = this.box.center();\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = Math.round(deg(Math.atan2(dy, dx)));\n var start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n },\n\n valueRange: function() {\n return {\n min: 0,\n max: Math.PI * 2\n };\n }\n });\n\n setDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n });\n\n deepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n });\n\n var RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var type = ref.majorGridLines.type;\n var plotBands = ref.plotBands; if (plotBands === void 0) { plotBands = []; }\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var group = this._plotbandGroup = new Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n var slot = this$1$1.getSlot(band.from, band.to, true);\n var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n var shape = (void 0);\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = Path.fromPoints(this$1$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n var innerPoints = [];\n var outerPoints = [];\n var center = [ ring.center.x, ring.center.y ];\n var innerCircle = new Circle(center, ring.innerRadius);\n var outerCircle = new Circle(center, ring.radius);\n\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var majorTicks = this.radarMajorGridLinePositions();\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n var minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip; if (skip === void 0) { skip = 0; }\n var step = options.step; if (step === void 0) { step = 0; }\n var container = this.gridLinesVisual();\n\n for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n var tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new drawing.Circle(circle, style));\n } else {\n var line = new Path(style);\n for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n var lineBox = this.lineBox();\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var radius = point.distanceTo(center);\n var distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n var alpha = angularDistance(theta, majorAngles[0]);\n var gamma = 90 - midAngle;\n var beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n };\n\n function angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n }\n\n var RadarNumericAxis = NumericAxis.extend({\n radarMajorGridLinePositions: function() {\n return this.getTickPositions(this.options.majorUnit);\n },\n\n radarMinorGridLinePositions: function() {\n var options = this.options;\n var minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n },\n\n axisType: function() {\n return NumericAxis;\n }\n });\n\n deepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\n var RadarLogarithmicAxis = LogarithmicAxis.extend({\n radarMajorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n },\n\n radarMinorGridLinePositions: function() {\n var positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n },\n\n axisType: function() {\n return LogarithmicAxis;\n }\n });\n\n deepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\n var WEIGHT = 0.333;\n var EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\n var CurveProcessor = Class.extend({\n init: function(closed) {\n\n this.closed = closed;\n },\n\n process: function(dataPoints) {\n var this$1$1 = this;\n\n var points = dataPoints.slice(0);\n var segments = [];\n var closed = this.closed;\n var length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n this$1$1.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = this$1$1.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n this.secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n },\n\n removeDuplicates: function(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n },\n\n invertAxis: function(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = this.lineFunction(p0,p1);\n var y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n },\n\n isLine: function(p0, p1, p2) {\n var fn = this.lineFunction(p0, p1);\n var y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n },\n\n lineFunction: function(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n },\n\n controlPoints: function(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n },\n\n restrictControlPoint: function(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n },\n\n tangent: function(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n },\n\n isMonotonicByField: function(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n },\n\n firstControlPoint: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n },\n\n secondControlPoint: function(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n },\n\n point: function(xValue, yValue, xField, yField) {\n var controlPoint = new geometry.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n },\n\n calculateFunction: function(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n }\n });\n\n function numberSign(value) {\n return value <= 0 ? -1 : 1;\n }\n\n dataviz.Gradients = GRADIENTS;\n\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n services: services,\n autoMajorUnit: autoMajorUnit,\n Point: Point,\n Box: Box,\n Ring: Ring,\n Sector: Sector,\n ShapeBuilder: ShapeBuilder,\n ShapeElement: ShapeElement,\n ChartElement: ChartElement,\n BoxElement: BoxElement,\n RootElement: RootElement,\n FloatElement: FloatElement,\n Text: Text,\n TextBox: TextBox,\n Title: Title,\n AxisLabel: AxisLabel,\n Axis: Axis,\n Note: Note,\n CategoryAxis: CategoryAxis,\n DateCategoryAxis: DateCategoryAxis,\n DateValueAxis: DateValueAxis,\n NumericAxis: NumericAxis,\n LogarithmicAxis: LogarithmicAxis,\n PolarAxis: PolarAxis,\n RadarCategoryAxis: RadarCategoryAxis,\n RadarNumericAxis: RadarNumericAxis,\n RadarLogarithmicAxis: RadarLogarithmicAxis,\n CurveProcessor: CurveProcessor,\n rectToBox: rectToBox,\n addClass: addClass,\n removeClass: removeClass,\n alignPathToPixel: alignPathToPixel,\n clockwise: clockwise,\n convertableToNumber: convertableToNumber,\n deepExtend: deepExtend,\n elementStyles: elementStyles,\n getSpacing: getSpacing,\n getTemplate: getTemplate,\n getter: __common_getter_js,\n grep: grep,\n hasClasses: hasClasses,\n HashMap: HashMap,\n inArray: inArray,\n interpolateValue: interpolateValue,\n InstanceObserver: InstanceObserver,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n isObject: isObject,\n isString: isString,\n map: map,\n mousewheelDelta: mousewheelDelta,\n FontLoader: FontLoader,\n setDefaultOptions: setDefaultOptions,\n sparseArrayLimits: sparseArrayLimits,\n styleValue: styleValue,\n find: find,\n elementScale: elementScale,\n autoTextColor: autoTextColor,\n createHashSet: createHashSet,\n defaultErrorHandler: defaultErrorHandler,\n keys: keys,\n append: append,\n bindEvents: bindEvents,\n Class: Class,\n defined: defined,\n deg: deg,\n elementOffset: elementOffset,\n elementSize: elementSize,\n eventCoordinates: eventCoordinates,\n eventElement: eventElement,\n hashKey: hashKey,\n last: last,\n limitValue: limitValue,\n logToConsole: kendo.logToConsole,\n objectKey: objectKey,\n rad: rad,\n round: round,\n unbindEvents: unbindEvents,\n valueOrDefault: valueOrDefault,\n absoluteDateDiff: absoluteDateDiff,\n addDuration: addDuration,\n addTicks: addTicks,\n ceilDate: ceilDate,\n dateComparer: dateComparer,\n dateDiff: dateDiff,\n dateEquals: dateEquals,\n dateIndex: dateIndex,\n duration: duration,\n floorDate: floorDate,\n lteDateIndex: lteDateIndex,\n startOfWeek: startOfWeek,\n toDate: toDate,\n parseDate: parseDate,\n parseDates: parseDates,\n toTime: toTime,\n firstDay: firstDay\n });\n\n })(window.kendo.jQuery);\n\n (function($) {\n\n var dataviz = kendo.dataviz;\n var services = dataviz.services;\n var draw = kendo.drawing;\n\n dataviz.SASS_THEMES = [\"sass\", \"default-v2\", \"bootstrap-v4\", \"material-v2\"];\n\n dataviz.ExportMixin = {\n extend: function(proto, skipLegacy) {\n if (!proto.exportVisual) {\n throw new Error(\"Mixin target has no exportVisual method defined.\");\n }\n\n proto.exportSVG = this.exportSVG;\n proto.exportImage = this.exportImage;\n proto.exportPDF = this.exportPDF;\n\n if (!skipLegacy) {\n proto.svg = this.svg;\n proto.imageDataURL = this.imageDataURL;\n }\n },\n\n exportSVG: function(options) {\n return draw.exportSVG(this.exportVisual(), options);\n },\n\n exportImage: function(options) {\n return draw.exportImage(this.exportVisual(options), options);\n },\n\n exportPDF: function(options) {\n return draw.exportPDF(this.exportVisual(), options);\n },\n\n svg: function() {\n if (draw.svg.Surface) {\n return draw.svg.exportGroup(this.exportVisual());\n } else {\n throw new Error(\"SVG Export failed. Unable to export instantiate kendo.drawing.svg.Surface\");\n }\n },\n\n imageDataURL: function() {\n if (!kendo.support.canvas) {\n return null;\n }\n\n if (draw.canvas.Surface) {\n var container = $(\"
    \").css({\n display: \"none\",\n width: this.element.width(),\n height: this.element.height()\n }).appendTo(document.body);\n\n var surface = new draw.canvas.Surface(container[0]);\n surface.draw(this.exportVisual());\n var image = surface._rootElement.toDataURL();\n\n surface.destroy();\n container.remove();\n\n return image;\n } else {\n throw new Error(\"Image Export failed. Unable to export instantiate kendo.drawing.canvas.Surface\");\n }\n }\n };\n\n services.IntlService.register({\n format: function(format) {\n return kendo.format.apply(null, [format].concat(Array.prototype.slice.call(arguments, 1)));\n },\n toString: kendo.toString,\n parseDate: kendo.parseDate,\n firstDay: function() {\n return kendo.culture().calendars.standard.firstDay;\n }\n });\n\n services.TemplateService.register({\n compile: kendo.template\n });\n\n dataviz.Point2D = dataviz.Point;\n dataviz.Box2D = dataviz.Box;\n dataviz.mwDelta = function(e) {\n return dataviz.mousewheelDelta(e.originalEvent);\n };\n\n })(window.kendo.jQuery);\n\n var __meta__$E = {\n id: \"dataviz.core\",\n name: \"Core\",\n description: \"The DataViz core functions\",\n category: \"dataviz\",\n depends: [ \"core\", \"drawing\" ],\n hidden: true\n };\n\n var kendo$F = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function() {\n /* eslint-disable space-before-blocks, space-before-function-paren */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n\n var BAR_GAP = 1.5;\n var BAR_SPACING = 0.4;\n var BLACK = '#000';\n var SANS = 'Arial, Helvetica, sans-serif';\n var SANS11 = \"11px \" + SANS;\n var SANS12 = '12px ' + SANS;\n var SANS16 = '16px ' + SANS;\n var TRANSPARENT = 'transparent';\n var WHITE = '#fff';\n\n var notes = function () { return ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n visible: true\n }); };\n\n var axisDefaults = function () { return ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n }); };\n\n var areaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n }); };\n\n var rangeAreaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n }); };\n\n var barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var boxPlotSeries = function () { return ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n }\n }); };\n\n var bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n opacity: 0.6\n }); };\n\n var bulletSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n }\n }); };\n\n var candlestickSeries = function () { return ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n spacing: 0.3\n }); };\n\n var columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var donutSeries = function () { return ({\n margin: 1\n }); };\n\n var lineSeries = function () { return ({\n width: 2\n }); };\n\n var ohlcSeries = function () { return ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n spacing: 0.3\n }); };\n\n var radarAreaSeries = function () { return ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.5\n }); };\n\n var radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n width: 2\n }); };\n\n var rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n }); };\n\n var scatterLineSeries = function () { return ({\n width: 1\n }); };\n\n var waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n spacing: BAR_SPACING\n }); };\n\n var pieSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n }); };\n\n var funnelSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n }); };\n\n var heatmapSeries = function () { return ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n }\n }); };\n\n var seriesDefaults = function (options) { return ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n }); };\n\n var title = function () { return ({\n font: SANS16\n }); };\n\n var subtitle = function () { return ({\n font: SANS12\n }); };\n\n var legend = function () { return ({\n labels: {\n font: SANS12\n }\n }); };\n\n var baseTheme = function (options) {\n if (options === void 0) { options = {}; }\n\n return ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n subtitle: subtitle(),\n legend: legend()\n });\n };\n\n kendo.deepExtend(kendo.dataviz, {\n chartBaseTheme: baseTheme\n });\n\n })();\n\n (function($) {\n var cache;\n var SERIES_COLORS = 30;\n\n function seriesTemplate() {\n var template =\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n\n for (var i = 0; i < SERIES_COLORS; i++) {\n template += '
    ';\n }\n\n return template;\n }\n\n function autoTheme(force) {\n if (!force && cache) {\n return cache;\n }\n\n var theme = { chart: kendo.dataviz.chartBaseTheme() };\n var hook = $(\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n seriesTemplate() +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ').hide().appendTo(document.body);\n\n function mapColor(key, varName) {\n set(key, queryStyle(varName, \"backgroundColor\"));\n }\n\n function queryStyle(varName, prop) {\n return hook.find(\".k-var--\" + varName).css(prop);\n }\n\n function set(path, value) {\n var store = theme;\n var parts = path.split('.');\n var key = parts.shift();\n\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n\n store[key] = value;\n }\n\n function setInactiveOpacity(seriesTypes, selector) {\n var inactiveOpacity = parseFloat(queryStyle(selector, \"opacity\"));\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(function(type) {\n set(\"chart.seriesDefaults.\" + type + \".highlight.inactiveOpacity\", inactiveOpacity);\n });\n }\n }\n\n (function setColors() {\n mapColor(\"chart.axisDefaults.crosshair.color\", \"chart-crosshair-background\");\n mapColor(\"chart.axisDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.axisDefaults.line.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.majorGridLines.color\", \"chart-major-lines\");\n mapColor(\"chart.axisDefaults.minorGridLines.color\", \"chart-minor-lines\");\n mapColor(\"chart.axisDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.axisDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.axisDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.axisDefaults.title.color\", \"normal-text-color\");\n mapColor('chart.chartArea.background', 'background');\n mapColor(\"chart.legend.inactiveItems.labels.color\", \"chart-inactive\");\n mapColor(\"chart.legend.inactiveItems.markers.color\", \"chart-inactive\");\n mapColor(\"chart.legend.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.boxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.boxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.boxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.bullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.candlestick.downColor\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.candlestick.line.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.errorBars.color\", \"chart-error-bars-background\");\n mapColor(\"chart.seriesDefaults.horizontalWaterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.icon.border.color\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.labels.background\", \"background\");\n mapColor(\"chart.seriesDefaults.labels.color\", \"normal-text-color\");\n mapColor(\"chart.seriesDefaults.notes.icon.background\", \"chart-notes-background\");\n mapColor(\"chart.seriesDefaults.notes.icon.border.color\", \"chart-notes-border\");\n mapColor(\"chart.seriesDefaults.notes.line.color\", \"chart-notes-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.downColor\", \"chart-major-lines\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.mean.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.median.color\", \"base\");\n mapColor(\"chart.seriesDefaults.verticalBoxPlot.whiskers.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.verticalBullet.target.color\", \"primary\");\n mapColor(\"chart.seriesDefaults.waterfall.line.color\", \"chart-major-lines\");\n mapColor(\"chart.title.color\", \"normal-text-color\");\n mapColor(\"chart.subtitle.color\", \"normal-text-color\");\n\n mapColor(\"diagram.shapeDefaults.fill.color\", \"primary\");\n mapColor(\"diagram.shapeDefaults.content.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.stroke.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.shapeDefaults.connectorDefaults.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.fill.color\", \"normal-background\");\n mapColor(\"diagram.editable.resize.handles.hover.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.editable.resize.handles.hover.fill.color\", \"normal-text-color\");\n mapColor(\"diagram.selectable.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.content.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.handles.fill.color\", \"primary-contrast\");\n mapColor(\"diagram.connectionDefaults.selection.handles.stroke.color\", \"normal-text-color\");\n mapColor(\"diagram.connectionDefaults.selection.stroke.color\", \"normal-text-color\");\n\n mapColor(\"gauge.pointer.color\", \"gauge-pointer\");\n mapColor(\"gauge.scale.labels.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.minorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.majorTicks.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.line.color\", \"normal-text-color\");\n mapColor(\"gauge.scale.rangePlaceholderColor\", \"gauge-track\");\n\n var opacity = parseFloat(queryStyle(\"chart-area-opacity\", \"opacity\"));\n if (!isNaN(opacity)) {\n set(\"chart.seriesDefaults.area.opacity\", opacity);\n set(\"chart.seriesDefaults.radarArea.opacity\", opacity);\n set(\"chart.seriesDefaults.verticalArea.opacity\", opacity);\n set(\"chart.seriesDefaults.labels.opacity\", opacity);\n }\n\n setInactiveOpacity([\"area\", \"verticalArea\"], \"chart-area-inactive-opacity\");\n setInactiveOpacity([\"line\", \"verticalLine\"], \"chart-line-inactive-opacity\");\n })();\n\n (function setSizes() {\n set(\"diagram.connectionDefaults.selection.handles.width\", 8);\n set(\"diagram.connectionDefaults.selection.handles.height\", 8);\n })();\n\n (function setFonts() {\n function font(varName) {\n return queryStyle(varName, \"fontWeight\") + \" \" +\n queryStyle(varName, \"fontSize\") + \" \" +\n queryStyle(varName, \"fontFamily\");\n }\n\n var defaultFont = font(\"chart-font\");\n var titleFont = font(\"chart-title-font\");\n var paneTitleFont = font(\"chart-pane-title-font\");\n var labelFont = font(\"chart-label-font\");\n\n set(\"chart.axisDefaults.labels.font\", labelFont);\n set(\"chart.axisDefaults.notes.label.font\", defaultFont);\n set(\"chart.axisDefaults.title.font\", defaultFont);\n set(\"chart.legend.labels.font\", defaultFont);\n set(\"chart.seriesDefaults.labels.font\", labelFont);\n set(\"chart.seriesDefaults.notes.label.font\", defaultFont);\n set(\"chart.title.font\", titleFont);\n set(\"chart.subtitle.font\", paneTitleFont);\n set(\"chart.paneDefaults.title.font\", paneTitleFont);\n })();\n\n (function setSeriesColors() {\n function letterPos(letter) {\n return letter.toLowerCase().charCodeAt(0) - \"a\".charCodeAt(0);\n }\n\n function seriesPos(name) {\n var alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n\n var num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n }\n\n var series = $(\".k-var--series div\").toArray();\n var unsetColor = $('.k-var--series-unset').css(\"backgroundColor\");\n var seriesColors = series.reduce(\n function(arr, el) {\n var pos = seriesPos(el.className);\n var color = $(el).css(\"backgroundColor\");\n\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n\n return arr;\n },\n [] // Will populate the series colors in this array\n );\n\n set(\"chart.seriesColors\", seriesColors);\n })();\n\n hook.remove();\n\n cache = theme;\n\n return theme;\n }\n\n kendo.dataviz.autoTheme = autoTheme;\n })(window.kendo.jQuery);\n\n (function($) {\n\n // Imports ================================================================\n var kendo = window.kendo,\n ui = kendo.dataviz.ui,\n deepExtend = kendo.deepExtend;\n\n // Constants ==============================================================\n var BLACK = \"#000\",\n SANS = \"Arial,Helvetica,sans-serif\",\n SANS12 = \"12px \" + SANS,\n WHITE = \"#fff\";\n\n var chartBaseTheme = kendo.dataviz.chartBaseTheme({\n gradients: true\n });\n\n var gaugeBaseTheme = {\n scale: {\n labels: {\n font: SANS12\n }\n }\n };\n\n var diagramBaseTheme = {\n shapeDefaults: {\n hover: {\n opacity: 0.2\n },\n stroke: {\n width: 0\n }\n },\n editable: {\n resize: {\n handles: {\n width: 7,\n height: 7\n }\n }\n },\n selectable: {\n stroke: {\n width: 1,\n dashType: \"dot\"\n }\n },\n connectionDefaults: {\n stroke: {\n width: 2\n },\n selection: {\n handles: {\n width: 8,\n height: 8\n }\n },\n editable: {\n tools: [\"edit\", \"delete\"]\n }\n }\n };\n\n var themes = ui.themes,\n registerTheme = ui.registerTheme = function(themeName, options) {\n var result = {};\n // Apply base theme\n result.chart = deepExtend({}, chartBaseTheme, options.chart);\n result.gauge = deepExtend({}, gaugeBaseTheme, options.gauge);\n result.diagram = deepExtend({}, diagramBaseTheme, options.diagram);\n result.treeMap = deepExtend({}, options.treeMap);\n\n // Copy the line/area chart settings for their vertical counterparts\n var defaults = result.chart.seriesDefaults;\n defaults.verticalLine = deepExtend({}, defaults.line);\n defaults.verticalArea = deepExtend({}, defaults.area);\n defaults.rangeArea = deepExtend({}, defaults.area);\n defaults.verticalRangeArea = deepExtend({}, defaults.rangeArea);\n defaults.verticalBoxPlot = deepExtend({}, defaults.boxPlot);\n defaults.polarArea = deepExtend({}, defaults.radarArea);\n defaults.polarLine = deepExtend({}, defaults.radarLine);\n\n themes[themeName] = result;\n };\n\n registerTheme(\"black\", {\n chart: {\n title: {\n color: WHITE\n },\n subtitle: {\n color: WHITE\n },\n legend: {\n labels: {\n color: WHITE\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: WHITE\n },\n errorBars: {\n color: WHITE\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatter: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#3d3d3d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n candlestick: {\n downColor: \"#555\",\n line: {\n color: WHITE\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n ohlc: {\n line: {\n color: WHITE\n }\n }\n },\n chartArea: {\n background: \"#3d3d3d\"\n },\n seriesColors: [\"#0081da\", \"#3aafff\", \"#99c900\", \"#ffeb3d\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: WHITE\n },\n majorGridLines: {\n color: \"#545454\"\n },\n minorGridLines: {\n color: \"#454545\"\n },\n title: {\n color: WHITE\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"#3b3b3b\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: WHITE\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0070e4\"\n },\n scale: {\n rangePlaceholderColor: \"#1d1d1d\",\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: WHITE\n },\n majorTicks: {\n color: WHITE\n },\n line: {\n color: WHITE\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#0066cc\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#384049\"\n },\n hover: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0081da\", \"#314b5c\"],\n [\"#3aafff\", \"#3c5464\"],\n [\"#99c900\", \"#4f5931\"],\n [\"#ffeb3d\", \"#64603d\"],\n [\"#b20753\", \"#543241\"],\n [\"#ff4195\", \"#643e4f\"]]\n }\n });\n\n registerTheme(\"blueopal\", {\n chart: {\n title: {\n color: \"#293135\"\n },\n subtitle: {\n color: \"#293135\"\n },\n legend: {\n labels: {\n color: \"#293135\"\n },\n inactiveItems: {\n labels: {\n color: \"#27A5BA\"\n },\n markers: {\n color: \"#27A5BA\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#293135\"\n },\n candlestick: {\n downColor: \"#c4d0d5\",\n line: {\n color: \"#9aabb2\"\n }\n },\n waterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9aabb2\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n },\n seriesColors: [\"#0069a5\", \"#0098ee\", \"#7bd2f6\", \"#ffb800\", \"#ff8517\", \"#e34a00\"],\n axisDefaults: {\n line: {\n color: \"#9aabb2\"\n },\n labels: {\n color: \"#293135\"\n },\n majorGridLines: {\n color: \"#c4d0d5\"\n },\n minorGridLines: {\n color: \"#edf1f2\"\n },\n title: {\n color: \"#293135\"\n },\n crosshair: {\n color: \"#9aabb2\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9aabb2\"\n }\n },\n label: {\n color: \"#293135\"\n },\n line: {\n color: \"#9aabb2\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#005c83\"\n },\n scale: {\n rangePlaceholderColor: \"#daecf4\",\n\n labels: {\n color: \"#293135\"\n },\n minorTicks: {\n color: \"#293135\"\n },\n majorTicks: {\n color: \"#293135\"\n },\n line: {\n color: \"#293135\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#7ec6e3\"\n },\n connectorDefaults: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n },\n content: {\n color: \"#293135\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#003f59\"\n },\n hover: {\n fill: {\n color: \"#003f59\"\n },\n stroke: {\n color: \"#003f59\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#003f59\"\n },\n fill: {\n color: \"#003f59\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#003f59\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#003f59\"\n },\n content: {\n color: \"#293135\"\n },\n selection: {\n handles: {\n fill: {\n color: \"#3d3d3d\"\n },\n stroke: {\n color: \"#efefef\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#0069a5\", \"#bad7e7\"],\n [\"#0098ee\", \"#b9e0f5\"],\n [\"#7bd2f6\", \"#ceeaf6\"],\n [\"#ffb800\", \"#e6e3c4\"],\n [\"#ff8517\", \"#e4d8c8\"],\n [\"#e34a00\", \"#ddccc2\"]\n ]\n }\n });\n\n registerTheme(\"highcontrast\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#66465B\"\n },\n markers: {\n color: \"#66465B\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatter: {\n markers: {\n background: \"#2c232b\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#2c232b\"\n }\n },\n area: {\n opacity: 0.5\n },\n waterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#ffffff\"\n }\n },\n candlestick: {\n downColor: \"#664e62\",\n line: {\n color: \"#ffffff\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#ffffff\",\n opacity: 1\n }\n }\n },\n ohlc: {\n line: {\n color: \"#ffffff\"\n }\n }\n },\n chartArea: {\n background: \"#2c232b\"\n },\n seriesColors: [\"#a7008f\", \"#ffb800\", \"#3aafff\", \"#99c900\", \"#b20753\", \"#ff4195\"],\n axisDefaults: {\n line: {\n color: \"#ffffff\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#664e62\"\n },\n minorGridLines: {\n color: \"#4f394b\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#ffffff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#a7008f\"\n },\n scale: {\n rangePlaceholderColor: \"#2c232b\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#2c232b\"\n },\n majorTicks: {\n color: \"#664e62\"\n },\n line: {\n color: \"#ffffff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#a7018f\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#2c232b\"\n },\n hover: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#2c232b\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#a7008f\", \"#451c3f\"],\n [\"#ffb800\", \"#564122\"],\n [\"#3aafff\", \"#2f3f55\"],\n [\"#99c900\", \"#424422\"],\n [\"#b20753\", \"#471d33\"],\n [\"#ff4195\", \"#562940\"]\n ]\n }\n });\n\n registerTheme(\"default\", {\n chart: {\n title: {\n color: \"#8e8e8e\"\n },\n subtitle: {\n color: \"#8e8e8e\"\n },\n legend: {\n labels: {\n color: \"#232323\"\n },\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK,\n background: WHITE,\n opacity: 0.5\n },\n errorBars: {\n color: \"#232323\"\n },\n candlestick: {\n downColor: \"#dedede\",\n line: {\n color: \"#8d8d8d\"\n }\n },\n waterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8e8e8e\"\n }\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n },\n seriesColors: [\"#ff6800\", \"#a0a700\", \"#ff8d00\", \"#678900\", \"#ffb53c\", \"#396000\"],\n axisDefaults: {\n line: {\n color: \"#8e8e8e\"\n },\n labels: {\n color: \"#232323\"\n },\n minorGridLines: {\n color: \"#f0f0f0\"\n },\n majorGridLines: {\n color: \"#dfdfdf\"\n },\n title: {\n color: \"#232323\"\n },\n crosshair: {\n color: \"#8e8e8e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8e8e8e\"\n }\n },\n label: {\n color: \"#232323\"\n },\n line: {\n color: \"#8e8e8e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#ea7001\"\n },\n scale: {\n rangePlaceholderColor: \"#dedede\",\n\n labels: {\n color: \"#2e2e2e\"\n },\n minorTicks: {\n color: \"#2e2e2e\"\n },\n majorTicks: {\n color: \"#2e2e2e\"\n },\n line: {\n color: \"#2e2e2e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#e15613\"\n },\n connectorDefaults: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#2e2e2e\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n },\n hover: {\n fill: {\n color: \"#282828\"\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#282828\"\n },\n fill: {\n color: \"#282828\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#a7018f\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#282828\"\n },\n content: {\n color: \"#2e2e2e\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ff6800\", \"#edcfba\"],\n [\"#a0a700\", \"#dadcba\"],\n [\"#ff8d00\", \"#edd7ba\"],\n [\"#678900\", \"#cfd6ba\"],\n [\"#ffb53c\", \"#eddfc6\"],\n [\"#396000\", \"#c6ceba\"]\n ]\n }\n });\n\n registerTheme(\"silver\", {\n chart: {\n title: {\n color: \"#4e5968\"\n },\n subtitle: {\n color: \"#4e5968\"\n },\n legend: {\n labels: {\n color: \"#4e5968\"\n },\n inactiveItems: {\n labels: {\n color: \"#B1BCC8\"\n },\n markers: {\n color: \"#B1BCC8\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#293135\",\n background: \"#eaeaec\",\n opacity: 0.5\n },\n errorBars: {\n color: \"#4e5968\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n },\n line: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatter: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#eaeaec\"\n }\n },\n pie: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n donut: {\n connectors: {\n color: \"#A6B1C0\"\n }\n },\n waterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#a6b1c0\"\n }\n },\n candlestick: {\n downColor: \"#a6afbe\"\n }\n },\n chartArea: {\n background: \"#eaeaec\"\n },\n seriesColors: [\"#007bc3\", \"#76b800\", \"#ffae00\", \"#ef4c00\", \"#a419b7\", \"#430B62\"],\n axisDefaults: {\n line: {\n color: \"#a6b1c0\"\n },\n labels: {\n color: \"#4e5968\"\n },\n majorGridLines: {\n color: \"#dcdcdf\"\n },\n minorGridLines: {\n color: \"#eeeeef\"\n },\n title: {\n color: \"#4e5968\"\n },\n crosshair: {\n color: \"#a6b1c0\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4e5968\"\n }\n },\n label: {\n color: \"#4e5968\"\n },\n line: {\n color: \"#4e5968\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#0879c0\"\n },\n scale: {\n rangePlaceholderColor: \"#f3f3f4\",\n\n labels: {\n color: \"#515967\"\n },\n minorTicks: {\n color: \"#515967\"\n },\n majorTicks: {\n color: \"#515967\"\n },\n line: {\n color: \"#515967\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#1c82c2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#282828\"\n }\n }\n },\n content: {\n color: \"#515967\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n },\n hover: {\n fill: {\n color: \"#515967\"\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#515967\"\n },\n fill: {\n color: \"#515967\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#515967\"\n },\n content: {\n color: \"#515967\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#515967\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#007bc3\", \"#c2dbea\"],\n [\"#76b800\", \"#dae7c3\"],\n [\"#ffae00\", \"#f5e5c3\"],\n [\"#ef4c00\", \"#f2d2c3\"],\n [\"#a419b7\", \"#e3c7e8\"],\n [\"#430b62\", \"#d0c5d7\"]\n ]\n }\n });\n\n registerTheme(\"metro\", {\n chart: {\n title: {\n color: \"#777777\"\n },\n subtitle: {\n color: \"#777777\"\n },\n legend: {\n labels: {\n color: \"#777777\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: BLACK\n },\n errorBars: {\n color: \"#777777\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n waterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#c7c7c7\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#8ebc00\", \"#309b46\", \"#25a0da\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#16aba9\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#c7c7c7\"\n },\n labels: {\n color: \"#777777\"\n },\n minorGridLines: {\n color: \"#c7c7c7\"\n },\n majorGridLines: {\n color: \"#c7c7c7\"\n },\n title: {\n color: \"#777777\"\n },\n crosshair: {\n color: \"#c7c7c7\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#777777\"\n }\n },\n label: {\n color: \"#777777\"\n },\n line: {\n color: \"#777777\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#8ebc00\"\n },\n scale: {\n rangePlaceholderColor: \"#e6e6e6\",\n\n labels: {\n color: \"#777\"\n },\n minorTicks: {\n color: \"#777\"\n },\n majorTicks: {\n color: \"#777\"\n },\n line: {\n color: \"#777\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#8ebc00\"\n },\n connectorDefaults: {\n fill: {\n color: BLACK\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: BLACK\n }\n }\n },\n content: {\n color: \"#777\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#787878\"\n },\n fill: {\n color: \"#787878\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#515967\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#787878\"\n },\n content: {\n color: \"#777\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#8ebc00\", \"#e8f2cc\"],\n [\"#309b46\", \"#d6ebda\"],\n [\"#25a0da\", \"#d3ecf8\"],\n [\"#ff6900\", \"#ffe1cc\"],\n [\"#e61e26\", \"#fad2d4\"],\n [\"#d8e404\", \"#f7facd\"],\n [\"#16aba9\", \"#d0eeee\"],\n [\"#7e51a1\", \"#e5dcec\"],\n [\"#313131\", \"#d6d6d6\"],\n [\"#ed1691\", \"#fbd0e9\"]\n ]\n }\n });\n\n registerTheme(\"metroblack\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#797979\"\n },\n markers: {\n color: \"#797979\"\n }\n }\n },\n seriesDefaults: {\n border: {\n _brightness: 1\n },\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n },\n line: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#0e0e0e\"\n }\n },\n candlestick: {\n downColor: \"#828282\",\n line: {\n color: \"#ffffff\"\n }\n },\n waterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cecece\"\n }\n },\n overlay: {\n gradient: \"none\"\n }\n },\n chartArea: {\n background: \"#0e0e0e\"\n },\n seriesColors: [\"#00aba9\", \"#309b46\", \"#8ebc00\", \"#ff6900\", \"#e61e26\", \"#d8e404\", \"#25a0da\", \"#7e51a1\", \"#313131\", \"#ed1691\"],\n axisDefaults: {\n line: {\n color: \"#cecece\"\n },\n labels: {\n color: \"#ffffff\"\n },\n minorGridLines: {\n color: \"#2d2d2d\"\n },\n majorGridLines: {\n color: \"#333333\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#cecece\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cecece\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#00aba9\"\n },\n scale: {\n rangePlaceholderColor: \"#2d2d2d\",\n\n labels: {\n color: \"#ffffff\"\n },\n minorTicks: {\n color: \"#333333\"\n },\n majorTicks: {\n color: \"#cecece\"\n },\n line: {\n color: \"#cecece\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#00aba9\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#0e0e0e\"\n },\n hover: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: \"#787878\"\n },\n hover: {\n fill: {\n color: \"#787878\"\n },\n stroke: {\n color: \"#787878\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#787878\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#0e0e0e\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#00aba9\", \"#0b2d2d\"],\n [\"#309b46\", \"#152a19\"],\n [\"#8ebc00\", \"#28310b\"],\n [\"#ff6900\", \"#3e200b\"],\n [\"#e61e26\", \"#391113\"],\n [\"#d8e404\", \"#36390c\"],\n [\"#25a0da\", \"#132b37\"],\n [\"#7e51a1\", \"#241b2b\"],\n [\"#313131\", \"#151515\"],\n [\"#ed1691\", \"#3b1028\"]\n ]\n }\n });\n\n registerTheme(\"moonlight\", {\n chart: {\n title: {\n color: \"#ffffff\"\n },\n subtitle: {\n color: \"#ffffff\"\n },\n legend: {\n labels: {\n color: \"#ffffff\"\n },\n inactiveItems: {\n labels: {\n color: \"#A1A7AB\"\n },\n markers: {\n color: \"#A1A7AB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#ffffff\"\n },\n errorBars: {\n color: \"#ffffff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#212a33\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#212a33\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#212a33\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#757d87\",\n line: {\n color: \"#ea9d06\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: WHITE,\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#8c909e\"\n }\n },\n ohlc: {\n line: {\n color: \"#ea9d06\"\n }\n }\n },\n chartArea: {\n background: \"#212a33\"\n },\n seriesColors: [\"#ffca08\", \"#ff710f\", \"#ed2e24\", \"#ff9f03\", \"#e13c02\", \"#a00201\"],\n axisDefaults: {\n line: {\n color: \"#8c909e\"\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n labels: {\n color: \"#ffffff\"\n },\n majorGridLines: {\n color: \"#3e424d\"\n },\n minorGridLines: {\n color: \"#2f3640\"\n },\n title: {\n color: \"#ffffff\"\n },\n crosshair: {\n color: \"#8c909e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#8c909e\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#f4af03\"\n },\n scale: {\n rangePlaceholderColor: \"#2f3640\",\n\n labels: {\n color: WHITE\n },\n minorTicks: {\n color: \"#8c909e\"\n },\n majorTicks: {\n color: \"#8c909e\"\n },\n line: {\n color: \"#8c909e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#f3ae03\"\n },\n connectorDefaults: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#414550\"\n },\n hover: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n },\n content: {\n color: WHITE\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: WHITE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: WHITE\n },\n fill: {\n color: WHITE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: WHITE\n }\n },\n connectionDefaults: {\n stroke: {\n color: WHITE\n },\n content: {\n color: WHITE\n },\n selection: {\n handles: {\n fill: {\n color: \"#414550\"\n },\n stroke: {\n color: WHITE\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#ffca08\", \"#4e4b2b\"],\n [\"#ff710f\", \"#4e392d\"],\n [\"#ed2e24\", \"#4b2c31\"],\n [\"#ff9f03\", \"#4e422a\"],\n [\"#e13c02\", \"#482e2a\"],\n [\"#a00201\", \"#3b232a\"]\n ]\n }\n });\n\n registerTheme(\"uniform\", {\n chart: {\n title: {\n color: \"#686868\"\n },\n subtitle: {\n color: \"#686868\"\n },\n legend: {\n labels: {\n color: \"#686868\"\n },\n inactiveItems: {\n labels: {\n color: \"#B6B6B6\"\n },\n markers: {\n color: \"#B6B6B6\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#686868\"\n },\n errorBars: {\n color: \"#686868\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n },\n pie: {\n overlay: {\n gradient: \"sharpBevel\"\n }\n },\n donut: {\n overlay: {\n gradient: \"sharpGlass\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.3\n },\n candlestick: {\n downColor: \"#cccccc\",\n line: {\n color: \"#cccccc\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#cccccc\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#9e9e9e\"\n }\n },\n ohlc: {\n line: {\n color: \"#cccccc\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#527aa3\", \"#6f91b3\", \"#8ca7c2\", \"#a8bdd1\", \"#c5d3e0\", \"#e2e9f0\"],\n axisDefaults: {\n line: {\n color: \"#9e9e9e\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n labels: {\n color: \"#686868\"\n },\n majorGridLines: {\n color: \"#dadada\"\n },\n minorGridLines: {\n color: \"#e7e7e7\"\n },\n title: {\n color: \"#686868\"\n },\n crosshair: {\n color: \"#9e9e9e\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#9e9e9e\"\n }\n },\n label: {\n color: \"#686868\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#527aa3\"\n },\n scale: {\n rangePlaceholderColor: \"#e7e7e7\",\n\n labels: {\n color: \"#686868\"\n },\n minorTicks: {\n color: \"#aaaaaa\"\n },\n majorTicks: {\n color: \"#888888\"\n },\n line: {\n color: \"#9e9e9e\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#d1d1d1\"\n },\n connectorDefaults: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n },\n content: {\n color: \"#686868\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n },\n hover: {\n fill: {\n color: \"#686868\"\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#686868\"\n },\n fill: {\n color: \"#686868\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#686868\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#686868\"\n },\n content: {\n color: \"#686868\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#686868\"\n }\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#527aa3\", \"#d0d8e1\"],\n [\"#6f91b3\", \"#d6dde4\"],\n [\"#8ca7c2\", \"#dce1e7\"],\n [\"#a8bdd1\", \"#e2e6ea\"],\n [\"#c5d3e0\", \"#e7eaed\"],\n [\"#e2e9f0\", \"#edeff0\"]\n ]\n }\n });\n\n registerTheme(\"bootstrap\", {\n chart: {\n title: {\n color: \"#333333\"\n },\n subtitle: {\n color: \"#333333\"\n },\n legend: {\n labels: {\n color: \"#333333\"\n },\n inactiveItems: {\n labels: {\n color: \"#999999\"\n },\n markers: {\n color: \"#9A9A9A\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#333333\"\n },\n overlay: {\n gradient: \"none\"\n },\n errorBars: {\n color: \"#343434\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#333333\"\n },\n line: {\n color: \"#000000\"\n }\n },\n pie: {\n overlay: {\n gradient: \"none\"\n }\n },\n donut: {\n overlay: {\n gradient: \"none\"\n }\n },\n line: {\n markers: {\n background: \"#ffffff\"\n }\n },\n bubble: {\n opacity: 0.6\n },\n scatter: {\n markers: {\n background: \"#ffffff\"\n }\n },\n scatterLine: {\n markers: {\n background: \"#ffffff\"\n }\n },\n area: {\n opacity: 0.8\n },\n candlestick: {\n downColor: \"#d0d0d0\",\n line: {\n color: \"#333333\"\n },\n border: {\n _brightness: 1.5,\n opacity: 1\n },\n highlight: {\n border: {\n color: \"#b8b8b8\",\n opacity: 0.2\n }\n }\n },\n waterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cccccc\"\n }\n },\n ohlc: {\n line: {\n color: \"#333333\"\n }\n }\n },\n chartArea: {\n background: \"#ffffff\"\n },\n seriesColors: [\"#428bca\", \"#5bc0de\", \"#5cb85c\", \"#f2b661\", \"#e67d4a\", \"#da3b36\"],\n axisDefaults: {\n line: {\n color: \"#cccccc\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n labels: {\n color: \"#333333\"\n },\n majorGridLines: {\n color: \"#cccccc\"\n },\n minorGridLines: {\n color: \"#ebebeb\"\n },\n title: {\n color: \"#333333\"\n },\n crosshair: {\n color: \"#000000\"\n },\n notes: {\n icon: {\n background: \"#000000\",\n border: {\n color: \"#000000\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: \"#000000\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#428bca\"\n },\n scale: {\n rangePlaceholderColor: \"#cccccc\",\n labels: {\n color: \"#333333\"\n },\n minorTicks: {\n color: \"#ebebeb\"\n },\n majorTicks: {\n color: \"#cccccc\"\n },\n line: {\n color: \"#cccccc\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#428bca\"\n },\n connectorDefaults: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n }\n },\n content: {\n color: \"#333333\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n },\n hover: {\n fill: {\n color: \"#333333\"\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#333333\"\n },\n fill: {\n color: \"#333333\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#333333\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#c4c4c4\"\n },\n content: {\n color: \"#333333\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#333333\"\n }\n },\n stroke: {\n color: \"#333333\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#428bca\", \"#d1e0ec\"],\n [\"#5bc0de\", \"#d6eaf0\"],\n [\"#5cb85c\", \"#d6e9d6\"],\n [\"#5cb85c\", \"#f4e8d7\"],\n [\"#e67d4a\", \"#f2ddd3\"],\n [\"#da3b36\", \"#f0d0cf\"]\n ]\n }\n });\n\n registerTheme(\"flat\", {\n chart: {\n title: {\n color: \"#4c5356\"\n },\n subtitle: {\n color: \"#4c5356\"\n },\n legend: {\n labels: {\n color: \"#4c5356\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#4c5356\"\n },\n errorBars: {\n color: \"#4c5356\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#cdcdcd\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#10c4b2\", \"#ff7663\", \"#ffb74f\", \"#a2df53\", \"#1c9ec4\", \"#ff63a5\", \"#1cc47b\"],\n axisDefaults: {\n line: {\n color: \"#cdcdcd\"\n },\n labels: {\n color: \"#4c5356\"\n },\n minorGridLines: {\n color: \"#cdcdcd\"\n },\n majorGridLines: {\n color: \"#cdcdcd\"\n },\n title: {\n color: \"#4c5356\"\n },\n crosshair: {\n color: \"#cdcdcd\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#cdcdcd\"\n }\n },\n label: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#cdcdcd\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#10c4b2\"\n },\n scale: {\n rangePlaceholderColor: \"#cdcdcd\",\n\n labels: {\n color: \"#4c5356\"\n },\n minorTicks: {\n color: \"#4c5356\"\n },\n majorTicks: {\n color: \"#4c5356\"\n },\n line: {\n color: \"#4c5356\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#10c4b2\"\n },\n connectorDefaults: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n }\n },\n content: {\n color: \"#4c5356\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n },\n hover: {\n fill: {\n color: \"#363940\"\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#363940\"\n },\n fill: {\n color: \"#363940\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#363940\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#cdcdcd\"\n },\n content: {\n color: \"#4c5356\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#363940\"\n }\n },\n stroke: {\n color: \"#363940\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#10c4b2\", \"#cff3f0\"],\n [\"#ff7663\", \"#ffe4e0\"],\n [\"#ffb74f\", \"#fff1dc\"],\n [\"#a2df53\", \"#ecf9dd\"],\n [\"#1c9ec4\", \"#d2ecf3\"],\n [\"#ff63a5\", \"#ffe0ed\"],\n [\"#1cc47b\", \"#d2f3e5\"]\n ]\n }\n });\n\n\n registerTheme(\"material\", {\n chart: {\n title: {\n color: \"#444444\"\n },\n subtitle: {\n color: \"#444444\"\n },\n legend: {\n labels: {\n color: \"#444444\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#444444\"\n },\n errorBars: {\n color: \"#444444\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#e5e5e5\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#e5e5e5\"\n },\n labels: {\n color: \"#444444\"\n },\n minorGridLines: {\n color: \"#e5e5e5\"\n },\n majorGridLines: {\n color: \"#e5e5e5\"\n },\n title: {\n color: \"#444444\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#444444\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#e5e5e5\",\n\n labels: {\n color: \"#444444\"\n },\n minorTicks: {\n color: \"#444444\"\n },\n majorTicks: {\n color: \"#444444\"\n },\n line: {\n color: \"#444444\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#444444\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n },\n hover: {\n fill: {\n color: \"#444444\"\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#444444\"\n },\n fill: {\n color: \"#444444\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#444444\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#444444\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#444444\"\n }\n },\n stroke: {\n color: \"#444444\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n registerTheme(\"materialblack\", {\n chart: {\n title: {\n color: \"#fff\"\n },\n subtitle: {\n color: \"#fff\"\n },\n legend: {\n labels: {\n color: \"#fff\"\n },\n inactiveItems: {\n labels: {\n color: \"#CBCBCB\"\n },\n markers: {\n color: \"#CBCBCB\"\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: \"#fff\"\n },\n errorBars: {\n color: \"#fff\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#e5e5e5\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#e5e5e5\"\n }\n },\n candlestick: {\n downColor: \"#c7c7c7\",\n line: {\n color: \"#787878\"\n }\n },\n area: {\n opacity: 0.9\n },\n waterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n horizontalWaterfall: {\n line: {\n color: \"#4d4d4d\"\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n chartArea: {\n background: \"#1c1c1c\"\n },\n seriesColors: [\"#3f51b5\", \"#03a9f4\", \"#4caf50\", \"#f9ce1d\", \"#ff9800\", \"#ff5722\"],\n axisDefaults: {\n line: {\n color: \"#4d4d4d\"\n },\n labels: {\n color: \"#fff\"\n },\n minorGridLines: {\n color: \"#4d4d4d\"\n },\n majorGridLines: {\n color: \"#4d4d4d\"\n },\n title: {\n color: \"#fff\"\n },\n crosshair: {\n color: \"#7f7f7f\"\n },\n notes: {\n icon: {\n background: \"transparent\",\n border: {\n color: \"#4d4d4d\"\n }\n },\n label: {\n color: \"#fff\"\n },\n line: {\n color: \"#4d4d4d\"\n }\n }\n }\n },\n gauge: {\n pointer: {\n color: \"#3f51b5\"\n },\n scale: {\n rangePlaceholderColor: \"#4d4d4d\",\n\n labels: {\n color: \"#fff\"\n },\n minorTicks: {\n color: \"#fff\"\n },\n majorTicks: {\n color: \"#fff\"\n },\n line: {\n color: \"#fff\"\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: \"#3f51b5\"\n },\n connectorDefaults: {\n fill: {\n color: \"#7f7f7f\"\n },\n stroke: {\n color: WHITE\n },\n hover: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#7f7f7f\"\n }\n }\n },\n content: {\n color: \"#fff\"\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n },\n hover: {\n fill: {\n color: \"#fff\"\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: \"#fff\"\n },\n fill: {\n color: \"#fff\"\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: \"#fff\"\n }\n },\n connectionDefaults: {\n stroke: {\n color: \"#7f7f7f\"\n },\n content: {\n color: \"#fff\"\n },\n selection: {\n handles: {\n fill: {\n color: WHITE\n },\n stroke: {\n color: \"#fff\"\n }\n },\n stroke: {\n color: \"#fff\"\n }\n }\n }\n },\n treeMap: {\n colors: [\n [\"#3f51b5\", \"#cff3f0\"],\n [\"#03a9f4\", \"#e5f6fe\"],\n [\"#4caf50\", \"#edf7ed\"],\n [\"#f9ce1d\", \"#fefae8\"],\n [\"#ff9800\", \"#fff4e5\"],\n [\"#ff5722\", \"#ffeee8\"]\n ]\n }\n });\n\n (function() {\n var TEXT = \"#333333\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#dddddd\";\n var SERIES = [\"#008fd3\", \"#99d101\", \"#f39b02\", \"#f05662\", \"#c03c53\", \"#acacac\"];\n var SERIES_LIGHT = [\"#cbe8f5\", \"#eaf5cb\", \"#fceacc\", \"#fbdcdf\", \"#f2d7dc\", \"#eeeeee\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"fiori\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#4e4e4e\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#c8c8c8\";\n var AXIS_MINOR = \"#e5e5e5\";\n var SERIES = [\"#0072c6\", \"#5db2ff\", \"#008a17\", \"#82ba00\", \"#ff8f32\", \"#ac193d\"];\n var SERIES_LIGHT = [\"#cbe2f3\", \"#deeffe\", \"#cbe7d0\", \"#e5f0cb\", \"#fee8d5\", \"#eed0d7\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#00b0ff\",\n border: {\n color: \"#00b0ff\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"office365\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: INACTIVE\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var TEXT = \"#32364c\";\n var INACTIVE = \"#7f7f7f\";\n var INACTIVE_SHAPE = \"#bdbdbd\";\n var AXIS = \"#dfe0e1\";\n var AXIS_MINOR = \"#dfe0e1\";\n var SERIES = [\"#ff4350\", \"#ff9ea5\", \"#00acc1\", \"#80deea\", \"#ffbf46\", \"#ffd78c\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n var DIAGRAM_HOVER = WHITE;\n\n function noteStyle() {\n return {\n icon: {\n background: \"#007cc0\",\n border: {\n color: \"#007cc0\"\n }\n },\n label: {\n color: \"#ffffff\"\n },\n line: {\n color: AXIS\n }\n };\n }\n\n registerTheme(\"nova\", {\n chart: {\n title: {\n color: TEXT\n },\n subtitle: {\n color: TEXT\n },\n legend: {\n labels: {\n color: TEXT\n },\n inactiveItems: {\n labels: {\n color: INACTIVE\n },\n markers: {\n color: INACTIVE\n }\n }\n },\n seriesDefaults: {\n labels: {\n color: TEXT\n },\n errorBars: {\n color: TEXT\n },\n notes: noteStyle(),\n candlestick: {\n downColor: AXIS,\n line: {\n color: INACTIVE_SHAPE\n }\n },\n area: {\n opacity: 0.8\n },\n waterfall: {\n line: {\n color: AXIS\n }\n },\n horizontalWaterfall: {\n line: {\n color: AXIS\n }\n },\n overlay: {\n gradient: \"none\"\n },\n border: {\n _brightness: 1\n }\n },\n seriesColors: SERIES,\n axisDefaults: {\n line: {\n color: AXIS\n },\n labels: {\n color: TEXT\n },\n minorGridLines: {\n color: AXIS_MINOR\n },\n majorGridLines: {\n color: AXIS\n },\n title: {\n color: TEXT\n },\n crosshair: {\n color: TEXT\n },\n notes: noteStyle()\n }\n },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: {\n shapeDefaults: {\n fill: {\n color: PRIMARY\n },\n connectorDefaults: {\n fill: {\n color: TEXT\n },\n stroke: {\n color: DIAGRAM_HOVER\n },\n hover: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: TEXT\n }\n }\n },\n content: {\n color: TEXT\n }\n },\n editable: {\n resize: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n },\n hover: {\n fill: {\n color: INACTIVE_SHAPE\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n rotate: {\n thumb: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n fill: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n selectable: {\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n connectionDefaults: {\n stroke: {\n color: INACTIVE_SHAPE\n },\n content: {\n color: INACTIVE_SHAPE\n },\n selection: {\n handles: {\n fill: {\n color: DIAGRAM_HOVER\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n },\n stroke: {\n color: INACTIVE_SHAPE\n }\n }\n }\n },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n (function() {\n var SERIES = [\"#ff6358\", \"#ffd246\", \"#78d237\", \"#28b4c8\", \"#2d73f5\", \"#aa46be\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n\n registerTheme(\"default-v2\", {\n chart: { /* read from DOM */ },\n gauge: { /* read from DOM */ },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n\n themes.sass = themes[\"default-v2\"];\n })();\n\n\n (function() {\n var TEXT = \"#292b2c\";\n var AXIS = \"rgba(0, 0, 0, .04)\";\n var SERIES = [\"#0275d8\", \"#5bc0de\", \"#5cb85c\", \"#f0ad4e\", \"#e67d4a\", \"#d9534f\"];\n var SERIES_LIGHT = [\"#ffd9dc\", \"#ffeced\", \"#cceef3\", \"#e6f8fb\", \"#fff2da\", \"#fff7e8\"];\n var PRIMARY = SERIES[0];\n\n registerTheme(\"bootstrap-v4\", {\n chart: { /* read from DOM */ },\n gauge: {\n pointer: {\n color: PRIMARY\n },\n scale: {\n rangePlaceholderColor: AXIS,\n labels: {\n color: TEXT\n },\n minorTicks: {\n color: TEXT\n },\n majorTicks: {\n color: TEXT\n },\n line: {\n color: TEXT\n }\n }\n },\n diagram: { /* read from DOM */ },\n treeMap: {\n colors: fuse(SERIES, SERIES_LIGHT)\n }\n });\n })();\n\n function fuse(arr1, arr2) {\n return $.map(arr1, function(item, index) {\n return [\n [item, arr2[index]]\n ];\n });\n }\n\n })(window.kendo.jQuery);\n\n var __meta__$D = {\n id: \"dataviz.themes\",\n name: \"Themes\",\n description: \"Built-in themes for the DataViz widgets\",\n category: \"dataviz\",\n depends: [ \"dataviz.core\" ],\n hidden: true\n };\n var kendo$E = kendo;\n\n /***********************************************************************\n * WARNING: this file is auto-generated. If you change it directly,\n * your modifications will eventually be lost. The source code is in\n * `kendo-charts` repository, you should make your changes there and\n * run `src-modules/sync.sh` in this repository.\n */\n\n (function($) {\n /* eslint-disable space-before-blocks, space-before-function-paren, curly */\n\n window.kendo.dataviz = window.kendo.dataviz || {};\n var dataviz = kendo.dataviz;\n var Class = dataviz.Class;\n var isNumber = dataviz.isNumber;\n var datavizConstants = dataviz.constants;\n var MAX_VALUE = datavizConstants.MAX_VALUE;\n var MIN_VALUE = datavizConstants.MIN_VALUE;\n var VALUE = datavizConstants.VALUE;\n var CENTER = datavizConstants.CENTER;\n var TOP = datavizConstants.TOP;\n var BOTTOM = datavizConstants.BOTTOM;\n var LEFT = datavizConstants.LEFT;\n var WHITE = datavizConstants.WHITE;\n var CIRCLE = datavizConstants.CIRCLE;\n var X = datavizConstants.X;\n var Y = datavizConstants.Y;\n var RIGHT = datavizConstants.RIGHT;\n var BLACK = datavizConstants.BLACK;\n var DATE = datavizConstants.DATE;\n var DEFAULT_PRECISION = datavizConstants.DEFAULT_PRECISION;\n var ARC = datavizConstants.ARC;\n var defined = dataviz.defined;\n var getter = dataviz.getter;\n var isArray = dataviz.isArray;\n var ChartElement = dataviz.ChartElement;\n var Point = dataviz.Point;\n var Box = dataviz.Box;\n var alignPathToPixel = dataviz.alignPathToPixel;\n var setDefaultOptions = dataviz.setDefaultOptions;\n var inArray = dataviz.inArray;\n var isFunction = dataviz.isFunction;\n var valueOrDefault = dataviz.valueOrDefault;\n var isObject = dataviz.isObject;\n var deepExtend = dataviz.deepExtend;\n var last = dataviz.last;\n var eventElement = dataviz.eventElement;\n var getTemplate = dataviz.getTemplate;\n var TextBox = dataviz.TextBox;\n var ShapeElement = dataviz.ShapeElement;\n var getSpacing = dataviz.getSpacing;\n var CurveProcessor = dataviz.CurveProcessor;\n var append = dataviz.append;\n var isString = dataviz.isString;\n var parseDate = dataviz.parseDate;\n var styleValue = dataviz.styleValue;\n var CategoryAxis = dataviz.CategoryAxis;\n var BoxElement = dataviz.BoxElement;\n var Title = dataviz.Title;\n var round = dataviz.round;\n var limitValue = dataviz.limitValue;\n var grep = dataviz.grep;\n var elementStyles = dataviz.elementStyles;\n var bindEvents = dataviz.bindEvents;\n var services = dataviz.services;\n var unbindEvents = dataviz.unbindEvents;\n var support = kendo.support;\n var drawing = kendo.drawing;\n var Path = drawing.Path;\n var Animation = drawing.Animation;\n var AnimationFactory = drawing.AnimationFactory;\n var Group = drawing.Group;\n var Color = kendo.Color;\n var geometry = kendo.geometry;\n var GeometryPoint = geometry.Point;\n var transform = geometry.transform;\n\n var ChartAxis = Class.extend({\n init: function(axis) {\n\n this._axis = axis;\n this.options = axis.options;\n },\n\n value: function(point) {\n var axis = this._axis;\n var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n },\n\n slot: function(from, to, limit) {\n if (limit === void 0) { limit = true; }\n\n return this._axis.slot(from, to, limit);\n },\n\n range: function() {\n return this._axis.range();\n },\n\n valueRange: function() {\n return this._axis.valueRange();\n }\n });\n\n function findAxisByName(name, axes) {\n for (var idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n }\n\n var ChartPane = kendo.Class.extend({\n init: function(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n },\n\n findAxisByName: function(name) {\n return findAxisByName(name, this._pane.axes);\n }\n });\n\n var ChartPlotArea = Class.extend({\n init: function(plotArea) {\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n });\n\n function countNumbers(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n }\n\n var Aggregates = {\n min: function(values) {\n var length = values.length;\n var min = MAX_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n var length = values.length;\n var max = MIN_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n var length = values.length;\n var sum = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n var result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n var count = countNumbers(values);\n var result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n var length = values.length;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n };\n\n function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n var get = getter(field, true);\n return get(row);\n }\n\n var SeriesBinder = Class.extend({\n init: function() {\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n },\n\n register: function(seriesTypes, valueFields, otherFields) {\n var this$1$1 = this;\n if (valueFields === void 0) { valueFields = [ VALUE ]; }\n if (otherFields === void 0) { otherFields = {}; }\n\n for (var i = 0; i < seriesTypes.length; i++) {\n var type = seriesTypes[i];\n\n this$1$1._valueFields[type] = valueFields;\n this$1$1._otherFields[type] = otherFields;\n this$1$1._nullValue[type] = this$1$1._makeValue(valueFields, null);\n this$1$1._undefinedValue[type] = this$1$1._makeValue(valueFields, undefined);\n }\n },\n\n canonicalFields: function(series) {\n return this.valueFields(series).concat(this.otherFields(series));\n },\n\n valueFields: function(series) {\n return this._valueFields[series.type] || [ VALUE ];\n },\n\n otherFields: function(series) {\n return this._otherFields[series.type] || [ VALUE ];\n },\n\n bindPoint: function(series, pointIx, item) {\n var data = series.data;\n var pointData = defined(item) ? item : data[pointIx];\n var result = { valueFields: { value: pointData } };\n var valueFields = this.valueFields(series);\n var otherFields = this._otherFields[series.type];\n var fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n var fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n var srcValueFields = this.sourceFields(series, valueFields);\n var srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n },\n\n _makeValue: function(fields, initialValue) {\n var value = {};\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n },\n\n _bindFromArray: function(array, fields) {\n var value = {};\n\n if (fields) {\n var length = Math.min(fields.length, array.length);\n\n for (var i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n },\n\n _bindFromObject: function(object, fields, srcFields) {\n if (srcFields === void 0) { srcFields = fields; }\n\n var value = {};\n\n if (fields) {\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n var srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n },\n\n sourceFields: function(series, canonicalFields) {\n var sourceFields = [];\n\n if (canonicalFields) {\n var length = canonicalFields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = canonicalFields[i];\n var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n }\n });\n\n SeriesBinder.current = new SeriesBinder();\n\n var STD_ERR = \"stderr\";\n var STD_DEV = \"stddev\";\n var percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\n var standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\n var ErrorRangeCalculator = Class.extend({\n init: function(errorValue, series, field) {\n\n this.initGlobalRanges(errorValue, series, field);\n },\n\n initGlobalRanges: function(errorValue, series, field) {\n var data = series.data;\n var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n var average = this.getAverage(data);\n var deviation = this.getStandardDeviation(data, average, false);\n var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n var standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n },\n\n createValueGetter: function(series, field) {\n var data = series.data;\n var binder = SeriesBinder.current;\n var valueFields = binder.valueFields(series);\n var item = defined(data[0]) ? data[0] : {};\n var valueGetter;\n\n if (isArray(item)) {\n var index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === datavizConstants.OBJECT) {\n var srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n },\n\n getErrorRange: function(pointValue, errorValue) {\n var low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n var percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n },\n\n getStandardError: function(data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n },\n\n getStandardDeviation: function(data, average, isSample) {\n var this$1$1 = this;\n\n var length = data.length;\n var total = isSample ? average.count - 1 : average.count;\n var squareDifferenceSum = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n },\n\n getAverage: function(data) {\n var this$1$1 = this;\n\n var length = data.length;\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n }\n });\n\n var browser = support.browser || {};\n\n var INITIAL_ANIMATION_DURATION = 600;\n var FADEIN = \"fadeIn\";\n\n var GLASS = \"glass\";\n var BORDER_BRIGHTNESS = 0.8;\n var TOOLTIP_OFFSET = 5;\n var START_SCALE = browser.msie ? 0.001 : 0;\n var ERROR_LOW_FIELD = \"errorLow\";\n var ERROR_HIGH_FIELD = \"errorHigh\";\n var X_ERROR_LOW_FIELD = \"xErrorLow\";\n var X_ERROR_HIGH_FIELD = \"xErrorHigh\";\n var Y_ERROR_LOW_FIELD = \"yErrorLow\";\n var Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\n var LINE_MARKER_SIZE = 8;\n var ZERO = \"zero\";\n var INTERPOLATE = \"interpolate\";\n var GAP = \"gap\";\n var ABOVE = \"above\";\n var BELOW = \"below\";\n\n var SMOOTH = \"smooth\";\n var STEP = \"step\";\n\n var AREA = \"area\";\n var BAR = \"bar\";\n var BOX_PLOT = \"boxPlot\";\n var BUBBLE = \"bubble\";\n var BULLET = \"bullet\";\n var CANDLESTICK = \"candlestick\";\n var COLUMN = \"column\";\n var DONUT = \"donut\";\n var FUNNEL = \"funnel\";\n var PYRAMID = \"pyramid\";\n var HEATMAP = \"heatmap\";\n var HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\n var LINE = \"line\";\n var OHLC = \"ohlc\";\n var PIE = \"pie\";\n var POLAR_AREA = \"polarArea\";\n var POLAR_LINE = \"polarLine\";\n var POLAR_SCATTER = \"polarScatter\";\n var RADAR_AREA = \"radarArea\";\n var RADAR_COLUMN = \"radarColumn\";\n var RADAR_LINE = \"radarLine\";\n var RANGE_AREA = \"rangeArea\";\n var RANGE_BAR = \"rangeBar\";\n var RANGE_COLUMN = \"rangeColumn\";\n var SCATTER = \"scatter\";\n var SCATTER_LINE = \"scatterLine\";\n var VERTICAL_AREA = \"verticalArea\";\n var VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\n var VERTICAL_BULLET = \"verticalBullet\";\n var VERTICAL_LINE = \"verticalLine\";\n var VERTICAL_RANGE_AREA = \"verticalRangeArea\";\n var WATERFALL = \"waterfall\";\n var EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n ];\n\n var LEGEND_ITEM_CLICK = \"legendItemClick\";\n var LEGEND_ITEM_HOVER = \"legendItemHover\";\n var LEGEND_ITEM_LEAVE = \"legendItemLeave\";\n var SERIES_CLICK = \"seriesClick\";\n var SERIES_HOVER = \"seriesHover\";\n var SERIES_OVER = \"seriesOver\";\n var SERIES_LEAVE = \"seriesLeave\";\n var PLOT_AREA_CLICK = \"plotAreaClick\";\n var PLOT_AREA_HOVER = \"plotAreaHover\";\n var PLOT_AREA_LEAVE = \"plotAreaLeave\";\n var DRAG = \"drag\";\n var DRAG_END = \"dragEnd\";\n var DRAG_START = \"dragStart\";\n var ZOOM_START = \"zoomStart\";\n var ZOOM = \"zoom\";\n var ZOOM_END = \"zoomEnd\";\n var SELECT_START = \"selectStart\";\n var SELECT = \"select\";\n var SELECT_END = \"selectEnd\";\n var RENDER = \"render\";\n var SHOW_TOOLTIP = \"showTooltip\";\n var HIDE_TOOLTIP = \"hideTooltip\";\n var PANE_RENDER = \"paneRender\";\n\n var LOGARITHMIC = \"log\";\n var CATEGORY = \"category\";\n\n var INSIDE_END = \"insideEnd\";\n var INSIDE_BASE = \"insideBase\";\n var OUTSIDE_END = \"outsideEnd\";\n\n var MOUSEWHEEL = \"wheel\";\n var MOUSEWHEEL_DELAY = 150;\n var MOUSEWHEEL_ZOOM_RATE = 0.3;\n\n var DRILLDOWN = \"drilldown\";\n var DRILLDOWN_FIELD = \"drilldown\";\n\n var constants = {\n \tINITIAL_ANIMATION_DURATION: INITIAL_ANIMATION_DURATION,\n \tFADEIN: FADEIN,\n \tLEGEND_ITEM_CLICK: LEGEND_ITEM_CLICK,\n \tLEGEND_ITEM_HOVER: LEGEND_ITEM_HOVER,\n \tLEGEND_ITEM_LEAVE: LEGEND_ITEM_LEAVE,\n \tSERIES_CLICK: SERIES_CLICK,\n \tSERIES_HOVER: SERIES_HOVER,\n \tSERIES_OVER: SERIES_OVER,\n \tSERIES_LEAVE: SERIES_LEAVE,\n \tGLASS: GLASS,\n \tBORDER_BRIGHTNESS: BORDER_BRIGHTNESS,\n \tTOOLTIP_OFFSET: TOOLTIP_OFFSET,\n \tSTART_SCALE: START_SCALE,\n \tERROR_LOW_FIELD: ERROR_LOW_FIELD,\n \tERROR_HIGH_FIELD: ERROR_HIGH_FIELD,\n \tX_ERROR_LOW_FIELD: X_ERROR_LOW_FIELD,\n \tX_ERROR_HIGH_FIELD: X_ERROR_HIGH_FIELD,\n \tY_ERROR_LOW_FIELD: Y_ERROR_LOW_FIELD,\n \tY_ERROR_HIGH_FIELD: Y_ERROR_HIGH_FIELD,\n \tLINE_MARKER_SIZE: LINE_MARKER_SIZE,\n \tINTERPOLATE: INTERPOLATE,\n \tZERO: ZERO,\n \tSMOOTH: SMOOTH,\n \tSTEP: STEP,\n \tCATEGORY: CATEGORY,\n \tFUNNEL: FUNNEL,\n \tPYRAMID: PYRAMID,\n \tBAR: BAR,\n \tCANDLESTICK: CANDLESTICK,\n \tPIE: PIE,\n \tCOLUMN: COLUMN,\n \tAREA: AREA,\n \tVERTICAL_BULLET: VERTICAL_BULLET,\n \tBOX_PLOT: BOX_PLOT,\n \tOHLC: OHLC,\n \tWATERFALL: WATERFALL,\n \tLINE: LINE,\n \tBULLET: BULLET,\n \tVERTICAL_LINE: VERTICAL_LINE,\n \tVERTICAL_AREA: VERTICAL_AREA,\n \tRANGE_AREA: RANGE_AREA,\n \tVERTICAL_RANGE_AREA: VERTICAL_RANGE_AREA,\n \tRANGE_COLUMN: RANGE_COLUMN,\n \tVERTICAL_BOX_PLOT: VERTICAL_BOX_PLOT,\n \tRANGE_BAR: RANGE_BAR,\n \tHORIZONTAL_WATERFALL: HORIZONTAL_WATERFALL,\n \tSCATTER: SCATTER,\n \tSCATTER_LINE: SCATTER_LINE,\n \tBUBBLE: BUBBLE,\n \tRADAR_AREA: RADAR_AREA,\n \tRADAR_LINE: RADAR_LINE,\n \tRADAR_COLUMN: RADAR_COLUMN,\n \tPOLAR_LINE: POLAR_LINE,\n \tPOLAR_AREA: POLAR_AREA,\n \tPOLAR_SCATTER: POLAR_SCATTER,\n \tRENDER: RENDER,\n \tPLOT_AREA_CLICK: PLOT_AREA_CLICK,\n \tPLOT_AREA_HOVER: PLOT_AREA_HOVER,\n \tPLOT_AREA_LEAVE: PLOT_AREA_LEAVE,\n \tLOGARITHMIC: LOGARITHMIC,\n \tDRAG: DRAG,\n \tDRAG_START: DRAG_START,\n \tDRAG_END: DRAG_END,\n \tZOOM_START: ZOOM_START,\n \tZOOM: ZOOM,\n \tZOOM_END: ZOOM_END,\n \tSELECT_START: SELECT_START,\n \tSELECT: SELECT,\n \tSELECT_END: SELECT_END,\n \tPANE_RENDER: PANE_RENDER,\n \tGAP: GAP,\n \tDONUT: DONUT,\n \tINSIDE_END: INSIDE_END,\n \tINSIDE_BASE: INSIDE_BASE,\n \tOUTSIDE_END: OUTSIDE_END,\n \tMOUSEWHEEL: MOUSEWHEEL,\n \tMOUSEWHEEL_DELAY: MOUSEWHEEL_DELAY,\n \tMOUSEWHEEL_ZOOM_RATE: MOUSEWHEEL_ZOOM_RATE,\n \tSHOW_TOOLTIP: SHOW_TOOLTIP,\n \tHIDE_TOOLTIP: HIDE_TOOLTIP,\n \tEQUALLY_SPACED_SERIES: EQUALLY_SPACED_SERIES,\n \tABOVE: ABOVE,\n \tBELOW: BELOW,\n \tHEATMAP: HEATMAP,\n \tDRILLDOWN: DRILLDOWN,\n \tDRILLDOWN_FIELD: DRILLDOWN_FIELD\n };\n\n var DEFAULT_ERROR_BAR_WIDTH = 4;\n\n var ErrorBarBase = ChartElement.extend({\n init: function(low, high, isVertical, chart, series, options) {\n ChartElement.fn.init.call(this, options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n },\n\n reflow: function(targetBox) {\n var endCaps = this.options.endCaps;\n var isVertical = this.isVertical;\n var axis = this.getAxis();\n var valueBox = axis.getSlot(this.low, this.high);\n var centerBox = targetBox.center();\n var capsWidth = this.getCapsWidth(targetBox, isVertical);\n var capValue = isVertical ? centerBox.x : centerBox.y;\n var capStart = capValue - capsWidth;\n var capEnd = capValue + capsWidth;\n var linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n },\n\n getCapsWidth: function(box, isVertical) {\n var boxSize = isVertical ? box.width() : box.height();\n var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: function () {\n this$1$1.createDefaultVisual();\n var defaultVisual = this$1$1.visual;\n delete this$1$1.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n },\n\n createDefaultVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var linePoints = ref.linePoints;\n var lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n ChartElement.fn.createVisual.call(this);\n\n for (var idx = 0; idx < linePoints.length; idx += 2) {\n var line = new Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this$1$1.visual.append(line);\n }\n }\n });\n\n setDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n });\n\n var CategoricalErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n }\n });\n\n var MAX_EXPAND_DEPTH = 5;\n\n function evalOptions(options, context, state, dryRun) {\n if (state === void 0) { state = {}; }\n if (dryRun === void 0) { dryRun = false; }\n\n var defaults = state.defaults = state.defaults || {};\n var depth = state.depth = state.depth || 0;\n var needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (var property in options) {\n if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n var propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n }\n\n function categoriesCount(series) {\n var seriesCount = series.length;\n var categories = 0;\n\n for (var i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n }\n\n var CategoricalChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n },\n\n plotValue: function(point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n var otherValues = [];\n var categorySum = 0;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n if (other) {\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n },\n\n plotRange: function(point, startValue) {\n var this$1$1 = this;\n if (startValue === void 0) { startValue = 0; }\n\n var categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n var plotValue = this.plotValue(point);\n var positive = plotValue >= 0;\n var prevValue = startValue;\n var isStackedBar = false;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === datavizConstants.STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n var otherValue = this$1$1.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this$1$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, dataviz.convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n },\n\n stackLimits: function(axisName, stackName) {\n var this$1$1 = this;\n\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var i = 0; i < this.categoryPoints.length; i++) {\n var categoryPoints = this$1$1.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n var point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n var to = this$1$1.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n },\n\n updateStackRange: function() {\n var this$1$1 = this;\n\n var ref = this.options;\n var isStacked = ref.isStacked;\n var chartSeries = ref.series;\n var limitsCache = {};\n\n if (isStacked) {\n for (var i = 0; i < chartSeries.length; i++) {\n var series = chartSeries[i];\n var axisName = series.axis;\n var key = axisName + series.stack;\n\n var limits = limitsCache[key];\n if (!limits) {\n limits = this$1$1.stackLimits(axisName, series.stack);\n\n var errorTotals = this$1$1.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, dataviz.sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, dataviz.sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this$1$1.valueAxisRanges[axisName] = limits;\n }\n }\n }\n },\n\n addErrorBar: function(point, data, categoryIx) {\n var value = point.value;\n var series = point.series;\n var seriesIx = point.seriesIx;\n var errorBars = point.options.errorBars;\n var lowValue = data.fields[ERROR_LOW_FIELD];\n var highValue = data.fields[ERROR_HIGH_FIELD];\n var errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n },\n\n addPointErrorBar: function(point, categoryIx) {\n var isVertical = !this.options.invertAxes;\n var options = point.options.errorBars;\n var series = point.series;\n var low = point.low;\n var high = point.high;\n\n if (this.options.isStacked) {\n var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n var fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n },\n\n stackedErrorRange: function(point, categoryIx) {\n var plotValue = this.plotRange(point, 0)[1] - point.value;\n var low = point.low + plotValue;\n var high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n },\n\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n\n var categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n var seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n var point = this.createPoint(data, fields);\n if (point) {\n $.extend(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n },\n\n evalPointOptions: function(options, value, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n },\n\n updateRange: function(data, fields) {\n var axisName = fields.series.axis;\n var value = data.value;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n },\n\n seriesValueAxis: function(series) {\n var plotArea = this.plotArea;\n var axisName = series.axis;\n var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var categorySlots = this.categorySlots = [];\n var chartPoints = this.points;\n var categoryAxis = this.categoryAxis;\n var pointIx = 0;\n\n this.traverseDataPoints(function (data, fields) {\n var categoryIx = fields.categoryIx;\n var currentSeries = fields.series;\n\n var valueAxis = this$1$1.seriesValueAxis(currentSeries);\n var point = chartPoints[pointIx++];\n\n var categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this$1$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n var plotRange = this$1$1.plotRange(point, valueAxis.startValue());\n var valueSlot = this$1$1.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n var pointSlot = this$1$1.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this$1$1.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this$1$1.options.isStacked100) {\n point.percentage = this$1$1.plotValue(point);\n }\n\n this$1$1.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n },\n\n valueSlot: function(valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n },\n\n limitPoints: function() {\n var this$1$1 = this;\n\n var categoryPoints = this.categoryPoints;\n var points = categoryPoints[0].concat(last(categoryPoints));\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this$1$1.limitPoint(points[idx]);\n }\n }\n },\n\n limitPoint: function(point) {\n var limittedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limittedSlot.equals(point.box)) {\n point.reflow(limittedSlot);\n }\n },\n\n aboveAxis: function(point, valueAxis) {\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n var value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n },\n\n categoryAxisCrossingValue: function(valueAxis) {\n var categoryAxis = this.categoryAxis;\n var options = valueAxis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n },\n\n reflowPoint: function(point, pointSlot) {\n point.reflow(pointSlot);\n },\n\n reflowCategories: function() { },\n\n pointSlot: function(categorySlot, valueSlot) {\n var options = this.options;\n var invertAxes = options.invertAxes;\n var slotX = invertAxes ? valueSlot : categorySlot;\n var slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var count = categoriesCount(series);\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this$1$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n var currentSeries = series[seriesIx$1];\n var currentCategory = this$1$1.categoryAxis.categoryAt(categoryIx);\n var pointData = this$1$1._bindPoint(currentSeries, seriesIx$1, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx$1\n });\n }\n }\n\n for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n this$1$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n }\n },\n\n _outOfRangeCallback: function(series, field, seriesIx, callback) {\n var outOfRangePoint = series[field];\n if (outOfRangePoint) {\n var categoryIx = outOfRangePoint.categoryIx;\n var pointData = this._bindPoint(series, seriesIx, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n },\n\n _bindPoint: function(series, seriesIx, categoryIx, item) {\n if (!this._bindCache) {\n this._bindCache = [];\n }\n\n var bindCache = this._bindCache[seriesIx];\n if (!bindCache) {\n bindCache = this._bindCache[seriesIx] = [];\n }\n\n var data = bindCache[categoryIx];\n if (!data) {\n data = bindCache[categoryIx] = SeriesBinder.current.bindPoint(series, categoryIx, item);\n }\n\n return data;\n },\n\n formatPointValue: function(point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n },\n\n pointValue: function(data) {\n return data.valueFields.value;\n }\n });\n\n setDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n });\n\n var PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n };\n\n var NoteMixin = {\n createNote: function() {\n var options = this.options.notes;\n var text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new dataviz.Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n };\n\n var LinePoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n },\n\n render: function() {\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n var labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n },\n\n markerBorder: function() {\n var options = this.options.markers;\n var background = options.background;\n var border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n },\n\n createVisual: function() {},\n\n createMarker: function() {\n var options = this.options.markers;\n var marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n },\n\n markerBox: function() {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var aboveAxis = ref.aboveAxis;\n var vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n var childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n var noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n var center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n },\n\n reflowLabel: function(box) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n },\n\n createHighlight: function() {\n var markers = this.options.highlight.markers;\n var defaultColor = this.markerBorder().color;\n var options = this.options.markers;\n var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n var shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n },\n\n highlightVisual: function() {\n return (this.marker || {}).visual;\n },\n\n highlightVisualArgs: function() {\n var marker = this.marker;\n var visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n var size = this.options.markers.size;\n var halfSize = size / 2;\n var center = this.box.center();\n rect = new geometry.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n },\n\n tooltipAnchor: function() {\n var markerBox = this.markerBox();\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n var x = markerBox.x2 + TOOLTIP_OFFSET;\n var horizontalAlign = LEFT;\n var y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n var markerBox = this.markerBox();\n return markerBox.overlaps(box);\n },\n\n unclipElements: function() {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n }\n });\n\n LinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: datavizConstants.HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n }\n };\n\n deepExtend(LinePoint.prototype, PointEventsMixin);\n deepExtend(LinePoint.prototype, NoteMixin);\n\n var LineSegment = ChartElement.extend({\n init: function(linePoints, series, seriesIx) {\n ChartElement.fn.init.call(this);\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n },\n\n points: function() {\n return this.toGeometryPoints(this.linePoints);\n },\n\n toGeometryPoints: function(points) {\n var result = [];\n for (var i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: function () {\n this$1$1.segmentVisual();\n\n return this$1$1.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n },\n\n segmentVisual: function() {\n var ref = this;\n var options = ref.options;\n var series = ref.series;\n var color = series.color;\n var defaults = series._defaults;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var line = Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n },\n\n aliasFor: function(e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n }\n });\n\n setDefaultOptions(LineSegment, {\n closed: false\n });\n\n var StepLineMixin = {\n calculateStepPoints: function(points) {\n var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n var ref = categoryAxis.options;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n\n var stepAxis = vertical ? X : Y;\n var axis = vertical ? Y : X;\n var stepDir = reverse ? 2 : 1;\n var dir = stepDir;\n\n var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n var result = [ previousPoint ];\n\n for (var idx = 1; idx < points.length; idx++) {\n var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n var stepPoint = new GeometryPoint();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n };\n\n function toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n var box = lintPoint.box;\n var result = new GeometryPoint();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n }\n\n var StepLineSegment = LineSegment.extend({\n points: function() {\n return this.calculateStepPoints(this.linePoints);\n }\n });\n\n deepExtend(StepLineSegment.prototype, StepLineMixin);\n\n var SplineSegment = LineSegment.extend({\n segmentVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var curveProcessor = new CurveProcessor(this.options.closed);\n var segments = curveProcessor.process(this.points());\n var curve = new Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n }\n });\n\n var LineChartMixin = {\n renderSegments: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesPoints = ref.seriesPoints;\n var series = options.series;\n var seriesCount = seriesPoints.length;\n var lastSegment;\n\n this._segments = [];\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var sortedPoints = this$1$1.sortPoints(seriesPoints[seriesIx]);\n var pointCount = sortedPoints.length;\n var linePoints = [];\n\n for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n var point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this$1$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this$1$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1$1._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n var missingValues = series.missingValues;\n var assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n var target = new Point(x, y);\n var allPoints = this.seriesPoints[seriesIx];\n var nearestPointDistance = MAX_VALUE;\n var nearestPoint;\n\n for (var i = 0; i < allPoints.length; i++) {\n var point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n var pointBox = point.box;\n var pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n };\n\n var ClipAnimation = Animation.extend({\n setup: function() {\n this._setEnd(this.options.box.x1);\n },\n\n step: function(pos) {\n var box = this.options.box;\n this._setEnd(dataviz.interpolateValue(box.x1, box.x2, pos));\n },\n\n _setEnd: function(x) {\n var element = this.element;\n var segments = element.segments;\n var topRight = segments[1].anchor();\n var bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n }\n });\n\n setDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(\"clip\", ClipAnimation);\n\n function anyHasZIndex(elements) {\n for (var idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n }\n\n var ClipAnimationMixin = {\n createAnimation: function() {\n var root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n var box = root.size();\n var clipPath = Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n var points = this.animationPoints();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n };\n\n var LineChart = CategoricalChart.extend({\n render: function() {\n\n CategoricalChart.fn.render.call(this);\n\n this.updateStackRange();\n this.renderSegments();\n },\n\n pointType: function() {\n return LinePoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var missingValues = this.seriesMissingValues(series);\n var value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n plotRange: function(point) {\n var this$1$1 = this;\n\n var plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this$1$1.plotValue(other);\n\n if (this$1$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n deepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var AreaSegment = LineSegment.extend({\n init: function(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n LineSegment.fn.init.call(this, linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n },\n\n createVisual: function() {\n var series = this.series;\n var defaults = series._defaults;\n var lineOptions = series.line || {};\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n },\n\n strokeSegments: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n },\n\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.points());\n },\n\n stackSegments: function() {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n },\n\n segmentsFromPoints: function(points) {\n return points.map(function (point) { return new geometry.Segment(point); });\n },\n\n createStroke: function(style) {\n var stroke = new Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n },\n\n hasStackSegment: function() {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n },\n\n createFill: function(style) {\n var strokeSegments = this.strokeSegments();\n var fillSegments = strokeSegments.slice(0);\n var hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n var stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n var fill = new Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n },\n\n fillToAxes: function(fillPath) {\n var chart = this.parent;\n var invertAxes = chart.options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.series);\n var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n var segments = this.strokeSegments();\n var firstPoint = segments[0].anchor();\n var lastPoint = last(segments).anchor();\n var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n }\n });\n\n var StepAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n },\n\n createStackSegments: function(stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n }\n });\n\n deepExtend(StepAreaSegment.prototype, StepLineMixin);\n\n var SplineAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n var curveProcessor = new CurveProcessor(this.options.closed);\n var linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n },\n\n createStackSegments: function() {\n var strokeSegments = this.strokeSegments();\n var stackSegments = [];\n for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n var segment = strokeSegments[idx];\n stackSegments.push(new geometry.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n }\n });\n\n var AreaChart = LineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n\n var stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n var missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n var pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n LineChart.fn.reflow.call(this, targetBox);\n\n var stackPoints = this._stackPoints;\n if (stackPoints) {\n for (var idx = 0; idx < stackPoints.length; idx++) {\n var stackPoint = stackPoints[idx];\n var pointSlot = this$1$1.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n },\n\n _gapStackPoints: function(linePoints, seriesIx, style) {\n var this$1$1 = this;\n\n var seriesPoints = this.seriesPoints;\n var startIdx = linePoints[0].categoryIx;\n var length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n var endIdx = startIdx + length;\n var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n var stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n var pointIx = categoryIx + pointOffset;\n var currentSeriesIx = seriesIx;\n var point = (void 0);\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this$1$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this$1$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n var gapStackPoint = this$1$1._createGapStackPoint(categoryIx);\n this$1$1._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n },\n\n _previousSegmentPoint: function(categoryIx, pointIx, segmentIx, seriesIdx) {\n var seriesPoints = this.seriesPoints;\n var index = seriesIdx;\n var point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n },\n\n _createGapStackPoint: function(categoryIx) {\n var options = this.pointOptions({}, 0);\n var point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var AxisGroupRangeTracker = Class.extend({\n init: function() {\n\n this.axisRanges = {};\n },\n\n update: function(chartAxisRanges) {\n var axisRanges = this.axisRanges;\n\n for (var axisName in chartAxisRanges) {\n var chartRange = chartAxisRanges[axisName];\n var range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n },\n\n reset: function(axisName) {\n this.axisRanges[axisName] = undefined;\n },\n\n query: function(axisName) {\n return this.axisRanges[axisName];\n }\n });\n\n var BarLabel = ChartElement.extend({\n init: function(content, options, pointData) {\n ChartElement.fn.init.call(this, options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n },\n\n createVisual: function() {\n this.textBox.options.noclip = this.options.noclip;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var vertical = options.vertical;\n var aboveAxis = options.aboveAxis;\n var text = this.children[0];\n var textOptions = text.options;\n var box = text.box;\n var padding = text.options.padding;\n var labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n },\n\n alignToClipBox: function(clipBox) {\n var vertical = this.options.vertical;\n var field = vertical ? Y : X;\n var start = field + \"1\";\n var end = field + \"2\";\n var text = this.children[0];\n var parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n var targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n }\n });\n\n setDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n });\n\n function hasGradientOverlay(options) {\n var overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n }\n\n var BAR_ALIGN_MIN_WIDTH = 6;\n\n var Bar = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1$1.errorBars[i].reflow(targetBox);\n }\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var box = ref.box;\n var options = ref.options;\n var customVisual = options.visual;\n\n if (this.visible !== false) {\n ChartElement.fn.createVisual.call(this);\n\n if (customVisual) {\n var visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: function () {\n var group = new Group();\n this$1$1.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n },\n\n createRect: function(visual) {\n var options = this.options;\n var border = options.border;\n var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n var rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n var path = this.rectVisual = Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n var width = this.box.width();\n var height = this.box.height();\n\n var size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n },\n\n createHighlight: function(style) {\n var highlight = Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n getBorderColor: function() {\n var color = this.color;\n var border = this.options.border;\n var brightness = border._brightness || BORDER_BRIGHTNESS;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n },\n\n tooltipAnchor: function() {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var aboveAxis = ref.aboveAxis;\n var clipBox = this.owner.pane.clipBox() || box;\n var horizontalAlign = LEFT;\n var verticalAlign = TOP;\n var x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n var x1 = Math.max(box.x1, clipBox.x1);\n var x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n }\n });\n\n deepExtend(Bar.prototype, PointEventsMixin);\n deepExtend(Bar.prototype, NoteMixin);\n\n Bar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n }\n };\n\n function forEach(elements, callback) {\n elements.forEach(callback);\n }\n\n function forEachReverse(elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n }\n\n var ClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(box) {\n var ref = this.options;\n var vertical = ref.vertical;\n var gap = ref.gap;\n var spacing = ref.spacing;\n var children = this.children;\n var count = children.length;\n var axis = vertical ? Y : X;\n var slots = count + gap + (spacing * (count - 1));\n var slotSize = (vertical ? box.height() : box.width()) / slots;\n var position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, function (child, idx) {\n var childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n }\n });\n\n setDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n });\n\n var StackWrap = ChartElement.extend({\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var positionAxis = this.options.vertical ? X : Y;\n var children = this.children;\n var childrenCount = children.length;\n var box = this.box = new Box();\n\n for (var i = 0; i < childrenCount; i++) {\n var currentChild = children[i];\n\n if (currentChild.visible !== false) {\n var childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this$1$1.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n }\n });\n\n setDefaultOptions(StackWrap, {\n vertical: true\n });\n\n var BarChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n this.updateStackRange();\n },\n\n pointType: function() {\n return Bar;\n },\n\n clusterType: function() {\n return ClusterLayout;\n },\n\n stackType: function() {\n return StackWrap;\n },\n\n stackLimits: function(axisName, stackName) {\n var limits = CategoricalChart.fn.stackLimits.call(this, axisName, stackName);\n\n return limits;\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var isStacked = options.isStacked;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\n\n var color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var pointType = this.pointType();\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n var clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (isStacked) {\n var stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n },\n\n getStackWrap: function(series, cluster) {\n var stack = series.stack;\n var stackGroup = stack ? stack.group || stack : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === datavizConstants.STRING) {\n for (var i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\n }\n\n if (!stackWrap) {\n var stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n },\n\n categorySlot: function(categoryAxis, categoryIx, valueAxis) {\n var options = this.options;\n var categorySlot = categoryAxis.getSlot(categoryIx);\n var startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n var stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n createAnimation: function() {\n this._setAnimationOptions();\n CategoricalChart.fn.createAnimation.call(this);\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n },\n\n _setChildrenAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n var pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n },\n\n _setAnimationOptions: function() {\n var options = this.options;\n var animation = options.animation || {};\n var origin;\n\n if (options.isStacked) {\n var valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new GeometryPoint(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n }\n });\n\n setDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n });\n\n var Candlestick = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n this.value = value;\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var ocSlot = valueAxis.getSlot(value.open, value.close);\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n var mid = lhSlot.center().x;\n var points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n },\n\n reflowNote: function() {\n if (this.note) {\n this.note.reflow(this.box);\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n },\n\n mainVisual: function(options) {\n var group = new Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n },\n\n createBody: function(container, options) {\n var body = Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n },\n\n createLines: function(container, options) {\n this.drawLines(container, options, this.lines, options.line);\n },\n\n drawLines: function(container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n var lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (var i = 0; i < lines.length; i++) {\n var line = Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n },\n\n getBorderColor: function() {\n var border = this.options.border;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n },\n\n createOverlay: function() {\n var overlay = Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n },\n\n createHighlight: function() {\n var highlight = this.options.highlight;\n var normalColor = this.color;\n\n this.color = highlight.color || this.color;\n var overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n },\n\n highlightVisual: function() {\n return this._mainVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n },\n\n tooltipAnchor: function() {\n var box = this.box;\n var clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n }\n });\n\n setDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"
  • \" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {4:d}
    Open:{0:C}
    High:{1:C}
    Low:{2:C}
    Close:{3:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n }\n });\n\n deepExtend(Candlestick.prototype, PointEventsMixin);\n deepExtend(Candlestick.prototype, NoteMixin);\n\n function areNumbers(values) {\n return countNumbers(values) === values.length;\n }\n\n var CandlestickChart = CategoricalChart.extend({\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n },\n\n pointType: function() {\n return Candlestick;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var pointType = this.pointType();\n var value = data.valueFields;\n var pointOptions = deepExtend({}, series);\n var color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (series.type === CANDLESTICK) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n },\n\n splitValue: function(value) {\n return [ value.low, value.open, value.close, value.high ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value);\n var axisRange = this.valueAxisRanges[axisName];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n },\n\n animationPoints: function() {\n return this.points;\n }\n });\n\n deepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\n var BoxPlot = Candlestick.extend({\n init: function(value, options) {\n Candlestick.fn.init.call(this, value, options);\n\n this.createNote();\n },\n\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n var medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n var meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n },\n\n reflowBoxSlot: function(box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n },\n\n calcMedianPoints: function(box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n },\n\n renderOutliers: function(options) {\n var this$1$1 = this;\n\n var value = this.value;\n var outliers = value.outliers || [];\n var outerFence = Math.abs(value.q3 - value.q1) * 3;\n var elements = [];\n var markers = options.markers || {};\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n var markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this$1$1.color)) {\n markersBorder.color = this$1$1.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n var shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n },\n\n reflowOutliers: function(outliers) {\n var this$1$1 = this;\n\n var valueAxis = this.owner.seriesValueAxis(this.options);\n var center = this.box.center();\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i].value;\n var markerBox = valueAxis.getSlot(outlierValue);\n\n if (this$1$1.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this$1$1.box = this$1$1.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n },\n\n mainVisual: function(options) {\n var group = Candlestick.fn.mainVisual.call(this, options);\n var outliers = this.renderOutliers(options);\n\n for (var i = 0; i < outliers.length; i++) {\n var element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n },\n\n createLines: function(container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n },\n\n getBorderColor: function() {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return Candlestick.fn.getBorderColor.call(this);\n }\n });\n\n setDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
    {6:d}
    Lower:{0:C}
    Q1:{1:C}
    Median:{2:C}
    Mean:{5:C}
    Q3:{3:C}
    Upper:{4:C}
    \"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: datavizConstants.CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n });\n\n deepExtend(BoxPlot.prototype, PointEventsMixin);\n\n var VerticalBoxPlot = BoxPlot.extend({\n reflowBoxSlot: function(box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n },\n\n reflowWhiskerSlot: function(box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n },\n\n calcMeanPoints: function(box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n },\n\n calcWhiskerPoints: function(boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n },\n\n calcMedianPoints: function(box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n }\n });\n\n var BoxPlotChart = CandlestickChart.extend({\n addValue: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n },\n\n pointType: function() {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n },\n\n splitValue: function(value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n },\n\n filterOutliers: function(items) {\n var length = (items || []).length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n var item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n },\n\n supportsPointInactiveOpacity: function() {\n return false;\n }\n });\n\n var ScatterErrorBar = ErrorBarBase.extend({\n getAxis: function() {\n var axes = this.chart.seriesAxes(this.series);\n var axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n }\n });\n\n function hasValue(value) {\n return defined(value) && value !== null;\n }\n\n var ScatterChart = ChartElement.extend({\n init: function(plotArea, options) {\n\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n addErrorBar: function(point, field, fields) {\n var value = point.value[field];\n var valueErrorField = field + \"Value\";\n var lowField = field + \"ErrorLow\";\n var highField = field + \"ErrorHigh\";\n var seriesIx = fields.seriesIx;\n var series = fields.series;\n var errorBars = point.options.errorBars;\n var lowValue = fields[lowField];\n var highValue = fields[highField];\n\n if (isNumber(value)) {\n var errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n },\n\n addPointErrorBar: function(errorRange, point, field) {\n var low = errorRange.low;\n var high = errorRange.high;\n var series = point.series;\n var options = point.options.errorBars;\n var isVertical = field === Y;\n var item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n },\n\n addValue: function(value, fields) {\n var x = value.x;\n var y = value.y;\n var seriesIx = fields.seriesIx;\n var series = this.options.series[seriesIx];\n var missingValues = this.seriesMissingValues(series);\n var seriesPoints = this.seriesPoints[seriesIx];\n\n var pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n var point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n $.extend(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues;\n },\n\n createMissingValue: function() {},\n\n updateRange: function(value, series) {\n var intlService = this.chartService.intl;\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var x = value.x;\n var y = value.y;\n var xAxisRange = this.xAxisRanges[xAxisName];\n var yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n },\n\n evalPointOptions: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\",\n \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\",\n \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n },\n\n pointType: function() {\n return LinePoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var seriesAxes = this$1$1.seriesAxes(fields.series);\n var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n },\n\n pointSlot: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var seriesPoints = ref.seriesPoints;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1._bindPoint(currentSeries, seriesIx, pointIx);\n var value = ref$1.valueFields;\n var fields = ref$1.fields;\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1$1\n }, fields));\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n });\n deepExtend(ScatterChart.prototype, ClipAnimationMixin, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n });\n\n var Bubble = LinePoint.extend({\n init: function(value, options) {\n LinePoint.fn.init.call(this, value, options);\n\n this.category = value.category;\n },\n\n createHighlight: function() {\n var highlight = this.options.highlight;\n var border = highlight.border;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width + border.width) / 2;\n var highlightGroup = new Group();\n var shadow = new drawing.Circle(new geometry.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n var overlay = new drawing.Circle(new geometry.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n }\n });\n\n Bubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n });\n\n Bubble.prototype.defaults.highlight.zIndex = undefined;\n\n var BubbleChart = ScatterChart.extend({\n _initFields: function() {\n this._maxSize = MIN_VALUE;\n ScatterChart.fn._initFields.call(this);\n },\n\n addValue: function(value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n ScatterChart.fn.addValue.call(this, value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n },\n\n reflow: function(box) {\n this.updateBubblesSize(box);\n ScatterChart.fn.reflow.call(this, box);\n },\n\n pointType: function() {\n return Bubble;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointsCount = series.data.length;\n var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n var animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n var color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n var pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n var point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n updateBubblesSize: function(box) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var boxSize = Math.min(box.width(), box.height());\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesPoints = this$1$1.seriesPoints[seriesIx];\n var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n var maxSize = currentSeries.maxSize || boxSize * 0.2;\n var minR = minSize / 2;\n var maxR = maxSize / 2;\n var minArea = Math.PI * minR * minR;\n var maxArea = Math.PI * maxR * maxR;\n var areaRange = maxArea - minArea;\n var areaRatio = areaRange / this$1$1._maxSize;\n\n for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n var point = seriesPoints[pointIx];\n if (point) {\n var area = Math.abs(point.value.size) * areaRatio;\n var radius = Math.sqrt((minArea + area) / Math.PI);\n var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n var zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n },\n\n createAnimation: function() {},\n\n createVisual: function() {}\n });\n\n setDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n });\n\n var Target = ShapeElement.extend({\n\n });\n\n deepExtend(Target.prototype, PointEventsMixin);\n\n var Bullet = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this, options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\n var options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createLabel();\n this.createNote();\n }\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText, labels, pointData);\n this.append(this.label);\n }\n },\n\n reflow: function(box) {\n this.render();\n\n var ref = this;\n var options = ref.options;\n var target = ref.target;\n var chart = ref.owner;\n var invertAxes = options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.options);\n var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n var targetValueSlot = valueAxis.getSlot(this.value.target);\n var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n var targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n var label = this.label;\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(box);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n var body = Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n },\n\n createAnimation: function() {\n if (this.bodyVisual) {\n this.animation = Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n },\n\n createHighlight: function(style) {\n return Path.fromRect(this.box.toRect(), style);\n },\n\n highlightVisual: function() {\n return this.bodyVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n }\n });\n\n Bullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\n setDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n labels: {\n visible: false\n },\n tooltip: {\n format: \"Current: {0}
    Target: {1}\"\n },\n notes: {\n label: {}\n }\n });\n\n deepExtend(Bullet.prototype, PointEventsMixin);\n deepExtend(Bullet.prototype, NoteMixin);\n\n var BulletChart = CategoricalChart.extend({\n init: function(plotArea, options) {\n\n wrapData(options);\n\n CategoricalChart.fn.init.call(this, plotArea, options);\n },\n\n reflowCategories: function(categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n },\n\n plotRange: function(point) {\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n },\n\n createPoint: function(data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var value = data.valueFields;\n\n var bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n var color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(bulletOptions, value, fields);\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n var bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n },\n\n updateRange: function(value, fields) {\n var current = value.current;\n var target = value.target;\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n },\n\n pointValue: function(data) {\n return data.valueFields.current;\n },\n\n aboveAxis: function(point) {\n var value = point.value.current;\n\n return value > 0;\n },\n\n createAnimation: function() {\n var this$1$1 = this;\n\n var points = this.points;\n\n this._setAnimationOptions();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n point.options.animation = this$1$1.options.animation;\n point.createAnimation();\n }\n }\n });\n\n BulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\n setDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n });\n\n function wrapData(options) {\n var series = options.series;\n\n for (var i = 0; i < series.length; i++) {\n var seriesItem = series[i];\n var data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n }\n\n var BaseTooltip = Class.extend({\n init: function(chartService, options) {\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n },\n\n getStyle: function(options, point) {\n var background = options.background;\n var border = options.border.color;\n\n if (point) {\n var pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n var padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n },\n\n show: function(options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n var style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n var background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n },\n\n hide: function() {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n },\n\n destroy: function() {\n delete this.chartService;\n }\n });\n\n setDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n });\n\n var CrosshairTooltip = BaseTooltip.extend({\n init: function(chartService, crosshair, options) {\n BaseTooltip.fn.init.call(this, chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n },\n\n initAxisName: function() {\n var axis = this.crosshair.axis;\n var plotArea = axis.plotArea;\n var name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n },\n\n showAt: function(point) {\n var ref = this;\n var axis = ref.crosshair.axis;\n var options = ref.options;\n var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n var formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n },\n\n hide: function() {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n },\n\n getAnchor: function() {\n var ref = this;\n var crosshair = ref.crosshair;\n var ref_options = ref.options;\n var position = ref_options.position;\n var padding = ref_options.padding;\n var vertical = !crosshair.axis.options.vertical;\n var lineBox = crosshair.line.bbox();\n var horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n });\n\n setDefaultOptions(CrosshairTooltip, {\n padding: 10\n });\n\n var Crosshair = ChartElement.extend({\n init: function(chartService, axis, options) {\n ChartElement.fn.init.call(this, options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n var tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n },\n\n showAt: function(point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n },\n\n hide: function() {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n },\n\n moveLine: function() {\n var ref = this;\n var axis = ref.axis;\n var point = ref.point;\n var vertical = axis.options.vertical;\n var box = this.getBox();\n var dim = vertical ? Y : X;\n var lineStart = new GeometryPoint(box.x1, box.y1);\n var lineEnd;\n\n if (vertical) {\n lineEnd = new GeometryPoint(box.x2, box.y1);\n } else {\n lineEnd = new GeometryPoint(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n var slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n },\n\n getBox: function() {\n var axis = this.axis;\n var axes = axis.pane.axes;\n var length = axes.length;\n var vertical = axis.options.vertical;\n var box = axis.lineBox().clone();\n var dim = vertical ? X : Y;\n var axisLineBox;\n\n for (var i = 0; i < length; i++) {\n var currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options;\n this.line = new Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n },\n\n destroy: function() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n ChartElement.fn.destroy.call(this);\n }\n });\n\n setDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n });\n\n var ChartContainer = ChartElement.extend({\n init: function(options, pane) {\n ChartElement.fn.init.call(this, options);\n this.pane = pane;\n },\n\n shouldClip: function() {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n },\n\n _clipBox: function() {\n return this.pane.chartsBox();\n },\n\n createVisual: function() {\n this.visual = new Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n var clipBox = this.clipBox = this._clipBox();\n var clipRect = clipBox.toRect();\n var clipPath = Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n unclipLabels: function() {\n var ref = this;\n var charts = ref.children;\n var clipBox = ref.clipBox;\n\n for (var i = 0; i < charts.length; i++) {\n var points = charts[i].points || {};\n var length = points.length;\n\n for (var j = 0; j < length; j++) {\n var point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n var label = point.label;\n var note = point.note;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n },\n\n destroy: function() {\n ChartElement.fn.destroy.call(this);\n\n delete this.parent;\n }\n });\n\n ChartContainer.prototype.isStackRoot = true;\n\n var Pane = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n },\n\n createTitle: function() {\n var titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n if (this.title) {\n this.append(this.title);\n }\n },\n\n appendAxis: function(axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n },\n\n appendAxisAt: function(axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n },\n\n appendChart: function(chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n },\n\n empty: function() {\n var this$1$1 = this;\n\n var plotArea = this.parent;\n\n if (plotArea) {\n for (var i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this$1$1.axes[i]);\n }\n\n for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n plotArea.removeChart(this$1$1.charts[i$1]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n },\n\n reflow: function(targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n var content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n BoxElement.fn.reflow.call(this, targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n },\n\n visualStyle: function() {\n var style = BoxElement.fn.visualStyle.call(this);\n style.zIndex = -10;\n\n return style;\n },\n\n renderComplete: function() {\n if (this.options.visible) {\n this.createGridLines();\n }\n },\n\n stackRoot: function() {\n return this;\n },\n\n clipRoot: function() {\n return this;\n },\n\n createGridLines: function() {\n var axes = this.axes;\n var allAxes = axes.concat(this.parent.axes);\n var vGridLines = [];\n var hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var vertical = axis.options.vertical;\n var gridLines = vertical ? vGridLines : hGridLines;\n for (var j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n var altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n },\n\n refresh: function() {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n },\n\n chartsBox: function() {\n var axes = this.axes;\n var length = axes.length;\n var chartsBox = new Box();\n\n for (var idx = 0; idx < length; idx++) {\n var axis = axes[idx];\n var axisValueField = axis.options.vertical ? Y : X;\n var lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n var allAxes = this.parent.axes;\n var length$1 = allAxes.length;\n\n for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n var axis$1 = allAxes[idx$1];\n if (!axis$1.options.vertical) {\n var lineBox$1 = axis$1.lineBox();\n chartsBox.x1 = lineBox$1.x1;\n chartsBox.x2 = lineBox$1.x2;\n }\n }\n }\n return chartsBox;\n },\n\n clipBox: function() {\n return this.chartContainer.clipBox;\n },\n\n notifyRender: function() {\n var service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n }\n });\n\n var ID = 1;\n\n function paneID() {\n return \"pane\" + ID++;\n }\n\n Pane.prototype.isStackRoot = true;\n\n setDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n });\n\n function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n }\n\n function segmentVisible(series, fields, index) {\n var visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n var pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n }\n\n function bindSegments(series) {\n var data = series.data;\n var points = [];\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < data.length; idx++) {\n var pointData = SeriesBinder.current.bindPoint(series, idx);\n var value = pointData.valueFields.value;\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n }\n\n function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n }\n\n function filterSeriesByType(series, types) {\n var result = [];\n\n var seriesTypes = [].concat(types);\n for (var idx = 0; idx < series.length; idx++) {\n var currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n }\n\n function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n var key = \"_date_\" + field;\n var value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\n }\n\n function isDateAxis(axisOptions, sampleCategory) {\n var type = axisOptions.type;\n var dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n }\n\n function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n }\n\n var AREA_REGEX = /area/i;\n\n function seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n }\n\n function hasValue$1(series, item) {\n var fields = SeriesBinder.current.bindPoint(series, null, item);\n var valueFields = fields.valueFields;\n\n for (var field in valueFields) {\n if (dataviz.convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n }\n\n function findNext(ref) {\n var start = ref.start;\n var dir = ref.dir;\n var min = ref.min;\n var max = ref.max;\n var getter$$1 = ref.getter;\n var hasItem = ref.hasItem;\n var series = ref.series;\n\n var pointHasValue, outPoint;\n var idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter$$1(idx);\n pointHasValue = hasValue$1(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n }\n\n function createOutOfRangePoints(series, range, count, getter$$1, hasItem) {\n var min = range.min;\n var max = range.max;\n var hasMinPoint = min > 0 && min < count;\n var hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n var missingValues = seriesMissingValues(series);\n var minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter$$1(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter$$1(max + 1);\n }\n } else {\n var outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter$$1(min - 1);\n pointHasValue = hasValue$1(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter$$1,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter$$1(max + 1);\n pointHasValue = hasValue$1(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter$$1,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n }\n\n var PlotAreaBase = ChartElement.extend({\n init: function(series, options, chartService) {\n ChartElement.fn.init.call(this, options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.items = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n },\n\n initFields: function() { },\n\n initSeries: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n },\n\n createPanes: function() {\n var this$1$1 = this;\n\n var titleOptions = this.options.title || {};\n var paneDefaults = this.options.paneDefaults;\n var paneOptions = this.options.panes || [];\n var panesLength = Math.max(paneOptions.length, 1);\n var panes = [];\n\n var defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (var i = 0; i < panesLength; i++) {\n var options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n var currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this$1$1.append(currentPane);\n }\n\n this.panes = panes;\n },\n\n crosshairOptions: function(axis) {\n return axis.options.crosshair;\n },\n\n createCrosshairs: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n for (var j = 0; j < pane.axes.length; j++) {\n var axis = pane.axes[j];\n var options = this$1$1.crosshairOptions(axis);\n if (options && options.visible) {\n var currentCrosshair = new Crosshair(this$1$1.chartService, axis, options);\n\n this$1$1.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n },\n\n removeCrosshairs: function(pane) {\n var crosshairs = this.crosshairs;\n var axes = pane.axes;\n\n for (var i = crosshairs.length - 1; i >= 0; i--) {\n for (var j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n },\n\n hideCrosshairs: function() {\n var crosshairs = this.crosshairs;\n for (var idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n },\n\n findPane: function(name) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n },\n\n findPointPane: function(point) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n },\n\n appendAxis: function(axis) {\n var pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n },\n\n removeAxis: function(axisToRemove) {\n var this$1$1 = this;\n\n var filteredAxes = [];\n\n for (var i = 0; i < this.axes.length; i++) {\n var axis = this$1$1.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n },\n\n appendChart: function(chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n },\n\n removeChart: function(chartToRemove) {\n var this$1$1 = this;\n\n var filteredCharts = [];\n\n for (var i = 0; i < this.charts.length; i++) {\n var chart = this$1$1.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n },\n\n addToLegend: function(series) {\n var count = series.length;\n var legend = this.options.legend;\n var labels = legend.labels || {};\n var inactiveItems = legend.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n var data = [];\n\n for (var i = 0; i < count; i++) {\n var currentSeries = series[i];\n var seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n var text = currentSeries.name;\n var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n var defaults = currentSeries._defaults;\n var color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var itemLabelOptions = (void 0), markerColor = (void 0);\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.items, data);\n },\n\n groupAxes: function(panes) {\n var xAxes = [];\n var yAxes = [];\n\n for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n var paneAxes = panes[paneIx].axes;\n for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n var axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n },\n\n groupSeriesByPane: function() {\n var this$1$1 = this;\n\n var series = this.series;\n var seriesByPane = {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var pane = this$1$1.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n },\n\n filterVisibleSeries: function(series) {\n var result = [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n },\n\n reflow: function(targetBox) {\n var options = this.options.plotArea;\n var panes = this.panes;\n var margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n },\n\n redraw: function(panes) {\n var this$1$1 = this;\n\n var panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n var root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (var i = 0; i < panesArray.length; i++) {\n this$1$1.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n panesArray[i$1].refresh();\n }\n },\n\n axisCrossingValues: function(axis, crossingAxes) {\n var options = axis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n var valuesToAdd = crossingAxes.length - crossingValues.length;\n var defaultValue = crossingValues[0] || 0;\n\n for (var i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n },\n\n alignAxisTo: function(axis, targetAxis, crossingValue, targetCrossingValue) {\n var slot = axis.getSlot(crossingValue, crossingValue, true);\n var slotEdge = axis.options.reverse ? 2 : 1;\n var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n var targetEdge = targetAxis.options.reverse ? 2 : 1;\n var axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n },\n\n alignAxes: function(xAxes, yAxes) {\n var this$1$1 = this;\n\n var xAnchor = xAxes[0];\n var yAnchor = yAxes[0];\n var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n var leftAnchors = {};\n var rightAnchors = {};\n var topAnchors = {};\n var bottomAnchors = {};\n\n for (var i = 0; i < yAxes.length; i++) {\n var axis = yAxes[i];\n var pane = axis.pane;\n var paneId = pane.id;\n var visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n var anchor = paneAnchor(xAxes, pane) || xAnchor;\n var anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this$1$1.axisCrossingValues(anchor, yAxes);\n }\n\n this$1$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this$1$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n var axis$1 = xAxes[i$1];\n var pane$1 = axis$1.pane;\n var paneId$1 = pane$1.id;\n var visible$1 = axis$1.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n var anchorCrossings$1 = yAnchorCrossings;\n if (anchor$1 !== yAnchor) {\n anchorCrossings$1 = this$1$1.axisCrossingValues(anchor$1, xAxes);\n }\n\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n if (axis$1.options._overlap) {\n continue;\n }\n\n if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis$1._mirrored) {\n axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n axis$1._mirrored = true;\n }\n this$1$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(topAnchors[paneId$1].box, TOP)\n .translate(0, -axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n topAnchors[paneId$1] = axis$1;\n }\n }\n\n if (round(axis$1.lineBox().y2, datavizConstants.COORD_PRECISION) === round(anchor$1.lineBox().y2, datavizConstants.COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n .translate(0, axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n bottomAnchors[paneId$1] = axis$1;\n }\n }\n\n if (i$1 !== 0) {\n axis$1.alignTo(xAnchor);\n axis$1.reflow(axis$1.box);\n }\n }\n },\n\n shrinkAxisWidth: function(panes) {\n var axes = this.groupAxes(panes).any;\n var axisBox = axisGroupBox(axes);\n var overflowX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis = axes[i$1];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n },\n\n shrinkAxisHeight: function(panes) {\n var shrinked;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var axes = currentPane.axes;\n var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (var j = 0; j < axes.length; j++) {\n var currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n },\n\n fitAxes: function(panes) {\n var axes = this.groupAxes(panes).any;\n var offsetX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var paneAxes = currentPane.axes;\n var paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n var axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n for (var j = 0; j < paneAxes.length; j++) {\n var currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis$1 = axes[i$1];\n\n currentAxis$1.reflow(\n currentAxis$1.box.translate(offsetX, 0)\n );\n }\n },\n\n reflowAxes: function(panes) {\n var this$1$1 = this;\n\n var axes = this.groupAxes(panes);\n\n for (var i = 0; i < panes.length; i++) {\n this$1$1.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n },\n\n autoRotateAxisLabels: function(groupedAxes) {\n var this$1$1 = this;\n\n var ref = this;\n var panes = ref.panes;\n var axes = allPaneAxes(panes);\n var rotated;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n this$1$1.reflowPaneAxes(panes[idx$1]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n },\n\n reflowPaneAxes: function(pane) {\n var axes = pane.axes;\n var length = axes.length;\n\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n },\n\n reflowCharts: function(panes) {\n var charts = this.charts;\n var count = charts.length;\n var box = this.box;\n\n for (var i = 0; i < count; i++) {\n var chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n },\n\n reflowPanes: function() {\n var ref = this;\n var box = ref.box;\n var panes = ref.panes;\n var panesLength = panes.length;\n var remainingHeight = box.height();\n var remainingPanes = panesLength;\n var autoHeightPanes = 0;\n var top = box.y1;\n\n for (var i = 0; i < panesLength; i++) {\n var currentPane = panes[i];\n var height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n var percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (var i$1 = 0; i$1 < panesLength; i$1++) {\n var currentPane$1 = panes[i$1];\n\n if (!currentPane$1.options.height) {\n currentPane$1.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (var i$2 = 0; i$2 < panesLength; i$2++) {\n var currentPane$2 = panes[i$2];\n var paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane$2.reflow(paneBox);\n\n remainingPanes--;\n top += currentPane$2.options.height;\n }\n },\n\n backgroundBox: function() {\n var axes = this.axes;\n var axesCount = axes.length;\n var box;\n\n for (var i = 0; i < axesCount; i++) {\n var axisA = axes[i];\n\n for (var j = 0; j < axesCount; j++) {\n var axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n },\n\n chartsBoxes: function() {\n var panes = this.panes;\n var boxes = [];\n\n for (var idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n },\n\n addBackgroundPaths: function(multipath) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(Path.fromRect(boxes[idx].toRect()));\n }\n },\n\n backgroundContainsPoint: function(point) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var options = this.options.plotArea;\n var opacity = options.opacity;\n var background = options.background;\n var border = options.border; if (border === void 0) { border = {}; }\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n var bg = this._bgVisual = new drawing.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n },\n\n pointsByCategoryIndex: function(categoryIndex) {\n var charts = this.charts;\n var result = [];\n\n if (categoryIndex !== null) {\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n },\n\n pointsBySeriesIndex: function(seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n },\n\n pointsBySeriesName: function(name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n },\n\n filterPoints: function(callback) {\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n },\n\n findPoint: function(callback) {\n var charts = this.charts;\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n },\n\n paneByPoint: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n },\n\n detachLabels: function() {\n var axes = this.groupAxes(this.panes);\n var xAxes = axes.x;\n var yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n },\n\n detachAxisGroupLabels: function(axes, crossingAxes) {\n var this$1$1 = this;\n\n var labelAxisCount = 0;\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var pane = axis.pane;\n var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n var axisIndex = i + labelAxisCount;\n var labelAxis = this$1$1.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n var pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n },\n\n createLabelAxis: function(axis, axisIndex, anchor) {\n var labelOptions = axis.options.labels;\n var position = labelOptions.position;\n var onAxis = position !== datavizConstants.END && position !== datavizConstants.START;\n var visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n var allAxes = this.groupAxes(this.panes);\n var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n var end = position === datavizConstants.END;\n var range = anchor.range();\n var edge = end ? range.max : range.min;\n var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n var labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n }\n });\n\n function isSingleAxis(axis) {\n return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n );\n }\n\n function axisGroupBox(axes) {\n var length = axes.length;\n var box;\n\n for (var i = 0; i < length; i++) {\n var axis = axes[i];\n var visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n }\n\n function paneAnchor(axes, pane) {\n for (var i = 0; i < axes.length; i++) {\n var anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n }\n\n function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n }\n\n var allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\n setDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n });\n\n var PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n };\n\n var SeriesAggregator = Class.extend({\n init: function(series, binder, defaultAggregates) {\n\n var canonicalFields = binder.canonicalFields(series);\n var valueFields = binder.valueFields(series);\n var sourceFields = binder.sourceFields(series, canonicalFields);\n var seriesFields = this._seriesFields = [];\n var defaults = defaultAggregates.query(series.type);\n var rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (var i = 0; i < canonicalFields.length; i++) {\n var field = canonicalFields[i];\n var fieldAggregate = (void 0);\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n },\n\n aggregatePoints: function(srcPoints, group) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref._series;\n var seriesFields = ref._seriesFields;\n var data = this._bindPoints(srcPoints || []);\n var firstDataItem = data.dataItems[0];\n var result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n var fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (var i = 0; i < seriesFields.length; i++) {\n var field = seriesFields[i];\n var srcValues = this$1$1._bindField(data.values, field.canonicalName);\n var value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n },\n\n _bindPoints: function(points) {\n var ref = this;\n var binder = ref._binder;\n var series = ref._series;\n var values = [];\n var dataItems = [];\n\n for (var i = 0; i < points.length; i++) {\n var pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n },\n\n _bindField: function(data, field) {\n var values = [];\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var item = data[i];\n var valueFields = item.valueFields;\n var value = (void 0);\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n }\n });\n\n function setValue(fieldName, target, value) {\n var parentObj = target;\n var field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n var parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n }\n\n var DefaultAggregates = Class.extend({\n init: function() {\n\n this._defaults = {};\n },\n\n register: function(seriesTypes, aggregates) {\n var this$1$1 = this;\n\n for (var i = 0; i < seriesTypes.length; i++) {\n this$1$1._defaults[seriesTypes[i]] = aggregates;\n }\n },\n\n query: function(seriesType) {\n return this._defaults[seriesType];\n }\n });\n\n DefaultAggregates.current = new DefaultAggregates();\n\n var RangeBar = Bar.extend({\n createLabel: function() {\n var labels = this.options.labels;\n var fromOptions = deepExtend({}, labels, labels.from);\n var toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n },\n\n _createLabel: function(options) {\n var labelTemplate = getTemplate(options);\n var pointData = this.pointData();\n\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var ref = this;\n var labelFrom = ref.labelFrom;\n var labelTo = ref.labelTo;\n var value = ref.value;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n }\n });\n\n RangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n });\n\n var RangeBarChart = BarChart.extend({\n pointType: function() {\n return RangeBar;\n },\n\n pointValue: function(data) {\n return data.valueFields;\n },\n\n formatPointValue: function(point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n },\n\n plotRange: function(point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n updateRange: function(value, fields) {\n var axisName = fields.series.axis;\n var from = value.from;\n var to = value.to;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n },\n\n aboveAxis: function(point) {\n var value = point.value;\n return value.from < value.to;\n }\n });\n\n RangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\n var RangeLinePoint = LinePoint.extend({\n aliasFor: function() {\n return this.parent;\n }\n });\n\n var AUTO = 'auto';\n var DEFAULT_FROM_FORMAT = '{0}';\n var DEFAULT_TO_FORMAT = '{1}';\n\n var RangeAreaPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this.initLabelsFormat();\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n var value = this.value;\n\n var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var fromBox = targetBox.from;\n var toBox = targetBox.to;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n },\n\n createHighlight: function() {\n var group = new Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n },\n\n highlightVisual: function() {\n return this.visual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n },\n\n tooltipAnchor: function() {\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n var box = this.box;\n var center = box.center();\n var horizontalAlign = LEFT;\n var x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n },\n\n initLabelsFormat: function() {\n var labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = $.extend({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = $.extend({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n },\n\n positionLabels: function(fromBox, toBox) {\n var ref = this.options;\n var labels = ref.labels;\n var vertical = ref.vertical;\n\n if (labels.position === AUTO) {\n var fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n },\n\n copyFields: function(point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n }\n });\n\n deepExtend(RangeAreaPoint.prototype, PointEventsMixin);\n deepExtend(RangeAreaPoint.prototype, NoteMixin);\n\n RangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: datavizConstants.HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n }\n };\n\n var RangeAreaSegment = AreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n },\n\n createStroke: function(style) {\n var toPath = new Path(style);\n var fromPath = new Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n },\n\n hasStackSegment: function() {\n return true;\n },\n\n fromPoints: function() {\n return this.linePoints.map(function (point) { return point.fromPoint; });\n },\n\n toPoints: function() {\n return this.linePoints.map(function (point) { return point.toPoint; });\n }\n });\n\n var SplineRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.createCurveSegments(this.toPoints());\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n },\n\n createCurveSegments: function(points) {\n var curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n }\n });\n\n var StepRangeAreaSegment = RangeAreaSegment.extend({\n createStrokeSegments: function() {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n },\n\n stackSegments: function() {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n }\n });\n\n deepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\n var RangeAreaChart = CategoricalChart.extend({\n render: function() {\n CategoricalChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n pointType: function() {\n return RangeAreaPoint;\n },\n\n createPoint: function(data, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n },\n\n plotRange: function(point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n },\n\n valueSlot: function(valueAxis, plotRange) {\n var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n },\n\n pointSlot: function(categorySlot, valueSlot) {\n var from = valueSlot.from;\n var to = valueSlot.to;\n var fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n },\n\n addValue: function(data, fields) {\n var valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n CategoricalChart.fn.addValue.call(this, data, fields);\n },\n\n updateRange: function(value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n var from = value.from;\n var to = value.to;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n }\n });\n\n deepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\n var OHLCPoint = Candlestick.extend({\n reflow: function(box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var oPoints = [];\n var cPoints = [];\n var lhPoints = [];\n\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n var oSlot = valueAxis.getSlot(value.open, value.open);\n var cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n var mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n },\n\n createBody: function() {}\n });\n\n var OHLCChart = CandlestickChart.extend({\n pointType: function() {\n return OHLCPoint;\n }\n });\n\n var WaterfallSegment = ChartElement.extend({\n init: function(from, to, series) {\n ChartElement.fn.init.call(this);\n\n this.from = from;\n this.to = to;\n this.series = series;\n },\n\n linePoints: function() {\n var from = this.from;\n var ref = this;\n var fromBox = ref.from.box;\n var toBox = ref.to.box;\n var points = [];\n\n if (from.isVertical) {\n var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n },\n\n createVisual: function() {\n ChartElement.fn.createVisual.call(this);\n\n var line = this.series.line || {};\n\n var path = Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n });\n\n setDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n });\n\n var WaterfallChart = BarChart.extend({\n render: function() {\n BarChart.fn.render.call(this);\n this.createSegments();\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var totalCategories = categoriesCount(series);\n var isVertical = !this.options.invertAxes;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var total = 0;\n var runningTotal = 0;\n\n for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n var value = data.valueFields.value;\n var summary = data.fields.summary;\n var from = total;\n var to = (void 0);\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this$1$1.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n },\n\n updateRange: function(value, fields) {\n BarChart.fn.updateRange.call(this, { value: fields.to }, fields);\n },\n\n aboveAxis: function(point) {\n return point.value >= 0;\n },\n\n plotRange: function(point) {\n return [ point.from, point.to ];\n },\n\n createSegments: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n var seriesPoints = this.seriesPoints;\n var segments = this.segments = [];\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var points = seriesPoints[seriesIx];\n\n if (points) {\n var prevPoint = (void 0);\n for (var pointIx = 0; pointIx < points.length; pointIx++) {\n var point = points[pointIx];\n\n if (point && prevPoint) {\n var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this$1$1.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n }\n });\n\n var AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\n var OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\n var CategoricalPlotArea = PlotAreaBase.extend({\n initFields: function(series) {\n var this$1$1 = this;\n\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (var i = 0; i < series.length; i++) {\n var stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this$1$1.stack100 = true;\n break;\n }\n }\n }\n\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.createCategoryAxes(panes);\n this.aggregateCategories(panes);\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n },\n\n createCharts: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n\n var visibleSeries = this$1$1.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n var groups = this$1$1.groupSeriesByCategoryAxis(visibleSeries);\n for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n this$1$1.createChartGroup(groups[groupIx], pane);\n }\n }\n },\n\n createChartGroup: function(series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n },\n\n aggregateCategories: function(panes) {\n var this$1$1 = this;\n\n var series = this.srcSeries || this.series;\n var processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var categoryAxis = this$1$1.seriesCategoryAxis(currentSeries);\n var axisPane = this$1$1.findPane(categoryAxis.options.pane);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this$1$1.aggregateSeries(currentSeries, categoryAxis);\n } else {\n currentSeries = this$1$1.filterSeries(currentSeries, categoryAxis);\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n },\n\n filterSeries: function(series, categoryAxis) {\n var dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(isNumber(categoryAxis.options.min) || isNumber(categoryAxis.options.max))) {\n return series;\n }\n\n var range = categoryAxis.currentRangeIndices();\n var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n var currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }); }, function (idx) { return defined(series.data[idx]); });\n }\n\n return currentSeries;\n },\n\n clearSeriesPointsCache: function() {\n this._seriesPointsCache = {};\n },\n\n seriesSourcePoints: function(series, categoryAxis) {\n var this$1$1 = this;\n\n var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n if (this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n var axisOptions = categoryAxis.options;\n var srcCategories = axisOptions.srcCategories;\n var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n var srcData = series.data;\n var getFn = dateAxis ? getDateField : getField;\n var result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories();//fixes major performance issue caused by searching for the index for large data\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = (void 0);\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this$1$1.chartService.intl);\n } else {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n var categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n },\n\n aggregateSeries: function(series, categoryAxis) {\n var srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n var result = deepExtend({}, series);\n var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n var data = result.data = [];\n var dataItems = categoryAxis.options.dataItems || [];\n\n var range = categoryAxis.currentRangeIndices();\n var categoryItem = function (idx) {\n var categoryIdx = idx - range.min;\n var point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n var category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (var idx = range.min; idx <= range.max; idx++) {\n var point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n },\n\n appendChart: function(chart, pane) {\n var series = chart.options.series;\n var categoryAxis = this.seriesCategoryAxis(series[0]);\n var categories = categoryAxis.options.categories;\n var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var axisName = series.axis;\n var axisOptions = [].concat(options.valueAxis);\n var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = (panes[0] || {}).name || \"default\";\n var paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesCategoryAxis: function(series) {\n var axisName = series.categoryAxis;\n var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n },\n\n stackableChartOptions: function(firstSeries, pane) {\n var stack = firstSeries.stack;\n var isStacked100 = stack && stack.type === \"100%\";\n var clip = pane.options.clip;\n\n return {\n isStacked: stack,\n isStacked100: isStacked100,\n clip: clip\n };\n },\n\n groupSeriesByCategoryAxis: function(series) {\n var categoryAxes = [];\n var unique = {};\n for (var idx = 0; idx < series.length; idx++) {\n var name = series[idx].categoryAxis || \"$$default$$\";\n if (!unique.hasOwnProperty(name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n var groups = [];\n for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n var axis = categoryAxes[axisIx];\n var axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n },\n\n createBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var barChart = new BarChart(this, $.extend({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(barChart, pane);\n },\n\n createRangeBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n },\n\n createBulletChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var lineChart = new LineChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(lineChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var areaChart = new AreaChart(this, $.extend({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(areaChart, pane);\n },\n\n createRangeAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n },\n\n createOHLCChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createCandlestickChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createBoxPlotChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n },\n\n createWaterfallChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n },\n\n axisRequiresRounding: function(categoryAxisName, categoryAxisIndex) {\n var this$1$1 = this;\n\n var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n var currentSeries = this$1$1.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n var line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n },\n\n aggregatedAxis: function(categoryAxisName, categoryAxisIndex) {\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n },\n\n createCategoryAxesLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n },\n\n createCategoryAxes: function(panes) {\n var this$1$1 = this;\n\n var invertAxes = this.invertAxes;\n var definitions = [].concat(this.options.categoryAxis);\n var axes = [];\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var categories = axisOptions.categories; if (categories === void 0) { categories = []; }\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this$1$1.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this$1$1.isJustified();\n }\n\n if (this$1$1.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n var categoryAxis = (void 0);\n\n if (isDateAxis(axisOptions, categories[0])) {\n categoryAxis = new dataviz.DateCategoryAxis(axisOptions, this$1$1.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this$1$1.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this$1$1.namedCategoryAxes[name]) {\n throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this$1$1.appendAxis(categoryAxis);\n }\n }\n\n var primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n },\n\n isJustified: function() {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n },\n\n createValueAxes: function(panes) {\n var this$1$1 = this;\n\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var definitions = [].concat(this.options.valueAxis);\n var invertAxes = this.invertAxes;\n var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n var axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var axisType = (void 0);\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this$1$1.chartService\n );\n\n if (name) {\n if (this$1$1.namedValueAxes[name]) {\n throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n }\n this$1$1.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this$1$1.appendAxis(valueAxis);\n }\n }\n\n var primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var pane = this.pointPane(point);\n var categories = [];\n var values = [];\n\n if (!pane) {\n return;\n }\n\n var allAxes = pane.axes;\n for (var i = 0; i < allAxes.length; i++) {\n var axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n },\n\n pointPane: function(point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n },\n\n updateAxisOptions: function(axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n }\n });\n\n function updateAxisOptions(targetOptions, axis, options) {\n var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n }\n\n function groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n }\n\n setDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n });\n\n deepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\n var Highlight = Class.extend({\n init: function() {\n\n this._points = [];\n },\n\n destroy: function() {\n this._points = [];\n },\n\n show: function(points, opacity) {\n var this$1$1 = this;\n\n var arrayPoints = [].concat(points);\n this.hide();\n\n for (var i = 0; i < arrayPoints.length; i++) {\n var point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this$1$1.togglePointHighlight(point, true, opacity);\n this$1$1._points.push(point);\n }\n }\n },\n\n togglePointHighlight: function(point, show, opacity) {\n var toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n var eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n },\n\n hide: function() {\n var this$1$1 = this;\n\n var points = this._points;\n while (points.length) {\n this$1$1.togglePointHighlight(points.pop(), false);\n }\n },\n\n isHighlighted: function(element) {\n var points = this._points;\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n }\n });\n\n function preventDefault() {\n this._defaultPrevented = true;\n }\n\n function acceptKey(e, mouseKey) {\n var key = (mouseKey || \"\").toLowerCase();\n var event = e.event;\n var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n }\n\n function toChartAxisRanges(axisRanges) {\n var ranges = {};\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n }\n\n var Pannable = Class.extend({\n init: function(plotArea, options) {\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n },\n\n start: function(e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n },\n\n move: function(e) {\n if (this._active) {\n var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n },\n\n end: function() {\n var active = this._active;\n this._active = false;\n\n return active;\n },\n\n pan: function() {\n var ref = this;\n var plotArea = ref.plotArea;\n var axisRanges = ref.axisRanges;\n if (axisRanges.length) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.plotArea;\n },\n\n _panAxes: function(e, position) {\n var plotArea = this.plotArea;\n var delta = -e[position].delta;\n var lock = (this.options.lock || \"\").toLowerCase();\n var updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n var axes = plotArea.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n var range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n }\n });\n\n Pannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n };\n\n var ZoomSelection = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n },\n\n createElement: function() {\n var marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n var marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n },\n\n removeElement: function() {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n },\n\n setStyles: function(styles) {\n elementStyles(this._marquee, styles);\n },\n\n start: function(e) {\n if (acceptKey(e, this.options.key)) {\n var chart = this.chart;\n var point = chart._eventCoordinates(e);\n var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n var offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n },\n\n _elementOffset: function() {\n var chartElement = this.chart.element;\n var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var offset = dataviz.elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n },\n\n move: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n },\n\n end: function(e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n var elementOffset$$1 = this._elementOffset();\n var selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset$$1.left;\n selectionPosition.top -= elementOffset$$1.top;\n\n var start = { x: selectionPosition.left, y: selectionPosition.top };\n var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n },\n\n zoom: function() {\n var axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n var plotArea = this.chart._plotArea;\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n },\n\n _updateAxisRanges: function(start, end) {\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n\n var axes = this._zoomPane.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n var range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n },\n\n _selectionPosition: function(e) {\n var clipBox = this._zoomPaneClipBox;\n var startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n var pageX = e.x.location;\n var pageY = e.y.location;\n var lock = (this.options.lock || \"\").toLowerCase();\n var left = Math.min(startLocation.x, pageX);\n var top = Math.min(startLocation.y, pageY);\n var width = Math.abs(startLocation.x - pageX);\n var height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n }\n });\n\n ZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n };\n\n var ref = drawing.util;\n var limitValue$1 = ref.limitValue;\n\n // Limit the zoom rate between 1% and 90% per mousewheel event.\n // At zoom rates close to 100% the axis range quickly becomes 0.\n var MIN_RATE = 0.01;\n var MAX_RATE = 0.9;\n var DEFAULT_RATE = 0.3;\n\n var MousewheelZoom = Class.extend({\n init: function(chart, options) {\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n },\n\n updateRanges: function(delta, coords) {\n var this$1$1 = this;\n\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n var axes = this.chart._plotArea.axes;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n var rate = limitValue$1(this$1$1.options.rate, MIN_RATE, MAX_RATE);\n var range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n },\n\n zoom: function() {\n var axisRanges = this.axisRanges;\n var plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n },\n\n destroy: function() {\n delete this.chart;\n }\n });\n\n var LegendLayout = ChartElement.extend({\n init: function(options, chartService) {\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n },\n\n render: function() {\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var vertical = options.vertical;\n\n this.visual = new drawing.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? \"vertical\" : \"horizontal\",\n reverse: options.rtl,\n alignItems: vertical ? \"start\" : \"center\"\n });\n\n for (var idx = 0; idx < children.length; idx++) {\n var legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n },\n\n reflow: function(box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n var bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = dataviz.rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n },\n\n renderVisual: function() {\n this.addVisual();\n },\n\n createVisual: function() {}\n });\n\n var LegendItem = BoxElement.extend({\n init: function(options) {\n BoxElement.fn.init.call(this, options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n },\n\n createContainer: function() {\n this.container = new dataviz.FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n },\n\n createMarker: function() {\n this.container.append(new ShapeElement(this.markerOptions()));\n },\n\n markerOptions: function() {\n var options = this.options;\n var markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\n });\n },\n\n createLabel: function() {\n var options = this.options;\n var labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n },\n\n renderComplete: function() {\n BoxElement.fn.renderComplete.call(this);\n\n var cursor = this.options.cursor || {};\n var eventSink = this._itemOverlay = Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n },\n\n click: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n },\n\n over: function(widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n }\n\n // Don't trigger point hover for legend items\n return true;\n },\n\n out: function(widget, e) {\n widget._unsetActivePoint();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n },\n\n eventArgs: function(e) {\n var options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n },\n\n renderVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n markers: this.markerOptions(),\n labels: options.labels\n },\n createVisual: function () {\n this$1$1.createVisual();\n this$1$1.renderChildren();\n this$1$1.renderComplete();\n\n var defaultVisual = this$1$1.visual;\n\n delete this$1$1.visual;\n\n return defaultVisual;\n }\n });\n this.addVisual();\n } else {\n BoxElement.fn.renderVisual.call(this);\n }\n }\n });\n\n var HORIZONTAL = \"horizontal\";\n var POINTER = \"pointer\";\n var CUSTOM = \"custom\";\n\n var Legend = ChartElement.extend({\n init: function(options, chartService) {\n if (chartService === void 0) { chartService = {}; }\n\n ChartElement.fn.init.call(this, options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n },\n\n createContainers: function() {\n var options = this.options;\n var position = options.position;\n var userAlign = options.align;\n var align = position;\n var vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === \"start\") {\n align = LEFT;\n } else if (userAlign === \"end\") {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === \"start\") {\n vAlign = TOP;\n } else if (userAlign === \"end\") {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n },\n\n createItems: function() {\n var chartService = this.getService();\n var options = this.options;\n var vertical = this.isVertical();\n var innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n var items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n var count = items.length;\n\n for (var i = 0; i < count; i++) {\n var item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n },\n\n isVertical: function() {\n var ref = this.options;\n var orientation = ref.orientation;\n var position = ref.position;\n var vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n },\n\n hasItems: function() {\n return this.container.children[0].children.length > 0;\n },\n\n reflow: function(targetBox) {\n var options = this.options;\n var legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n },\n\n containerReflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var position = options.position;\n var width = options.width;\n var height = options.height;\n var pos = position === TOP || position === BOTTOM ? X : Y;\n var vertical = this.isVertical();\n var alignTarget = targetBox.clone();\n var containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n var box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n },\n\n containerCustomReflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var offsetX = options.offsetX;\n var offsetY = options.offsetY;\n var width = options.width;\n var height = options.height;\n var vertical = this.isVertical();\n var containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n },\n\n renderVisual: function() {\n if (this.hasItems()) {\n ChartElement.fn.renderVisual.call(this);\n }\n },\n\n createLegendTitle: function(title) {\n var titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n var text = titleOptions.text;\n\n if (!title || title.visible === false) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n var labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n },\n\n createTitleLayout: function() {\n this.layout = new dataviz.FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n },\n\n hasTitle: function() {\n return Boolean(this.options.title && this.options.title.visible !== false);\n },\n\n appendTitleLayoutContent: function() {\n var options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n }\n });\n\n setDefaultOptions(Legend, {\n position: RIGHT,\n items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\n }\n });\n\n var PlotAreaFactory = Class.extend({\n init: function() {\n\n this._registry = [];\n },\n\n register: function(type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n },\n\n create: function(srcSeries, options, chartService) {\n var registry = this._registry;\n var match = registry[0];\n var series;\n\n for (var idx = 0; idx < registry.length; idx++) {\n var entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n\n if (series.length > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n }\n });\n\n PlotAreaFactory.current = new PlotAreaFactory();\n\n var ZOOM_ACCELERATION = 3;\n var SELECTOR_HEIGHT_ADJUST = 0.1;\n\n function createDiv(classNames) {\n var element = document.createElement(\"div\");\n if (classNames) {\n element.className = classNames;\n }\n\n return element;\n }\n\n function closestHandle(element) {\n var current = element;\n while (current && !dataviz.hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n }\n\n var Selection = Class.extend({\n init: function(chart, categoryAxis, options, observer) {\n\n var chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof dataviz.DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n },\n\n onPane: function(pane) {\n return this.categoryAxis.pane === pane;\n },\n\n createElements: function() {\n var options = this.options;\n var wrapper = this.wrapper = createDiv(\"k-selector k-pointer-events-none\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n\n var selection = this.selection = createDiv(\"k-selection k-pointer-events-none\");\n\n this.leftMask = createDiv(\"k-mask k-pointer-events-none\");\n this.rightMask = createDiv(\"k-mask k-pointer-events-none\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n var body = this.body = createDiv(\"k-selection-bg k-pointer-events-none\");\n selection.appendChild(body);\n\n var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle k-pointer-events-auto\");\n var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle k-pointer-events-auto\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n wrapper.style.cssText = wrapper.style.cssText;\n },\n\n bindEvents: function() {\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n var obj;\n bindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n }\n\n this._domEvents = services.DomEventsBuilder.create(this.chartElement, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n },\n\n initOptions: function() {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var box = categoryAxis.pane.chartsBox();\n var intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref$1.paddingLeft;\n var paddingTop = ref$1.paddingTop;\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n },\n\n destroy: function() {\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n var obj;\n unbindEvents(this.chartElement, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n this._mousewheelHandler = null;\n }\n\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n },\n\n _rangeEventArgs: function(range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n },\n\n _pointInPane: function(x, y) {\n var paneBox = this.categoryAxis.pane.box;\n var modelCoords = this.chart._toModelCoordinates(x, y);\n return paneBox.containsPoint(modelCoords);\n },\n\n _start: function(e) {\n var options = this.options;\n var target = eventElement(e);\n if (this._state || !target) {\n return;\n }\n\n var coords = dataviz.eventCoordinates(e);\n var inPane = this._pointInPane(coords.x, coords.y);\n if (!inPane) {\n return;\n }\n\n var handle = closestHandle(target);\n var bodyRect = this.body.getBoundingClientRect();\n var inBody = !handle && coords.x >= bodyRect.x && coords.x <= bodyRect.x + bodyRect.width &&\n coords.y >= bodyRect.y && coords.y <= bodyRect.y + bodyRect.height;\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: handle,\n startLocation: e.x ? e.x.location : 0,\n inBody: inBody,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n var args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n },\n\n _press: function(e) {\n var handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n dataviz.addClass(handle, \"k-handle-active\");\n }\n },\n\n _move: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var target = state.moveTarget;\n var reverse = categoryAxis.options.reverse;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var delta = state.startLocation - e.x.location;\n var oldRange = { from: range.from, to: range.to };\n var span = range.to - range.from;\n var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target && !state.inBody) {\n return;\n }\n\n var leftHandle = target && dataviz.hasClasses(target, \"k-left-handle\");\n var rightHandle = target && dataviz.hasClasses(target, \"k-right-handle\");\n\n if (state.inBody) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n },\n\n _end: function() {\n if (this._state) {\n var moveTarget = this._state.moveTarget;\n if (moveTarget) {\n dataviz.removeClass(moveTarget, \"k-handle-active\");\n }\n\n var range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n },\n\n _tap: function(e) {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var coords = this.chart._eventCoordinates(e);\n var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var span = to - from;\n var mid = from + span / 2;\n var range = {};\n var rightClick = e.event.which === 3;\n var offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n },\n\n _mousewheel: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n\n this._start(e);\n\n if (this._state) {\n var range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1._end();\n }, MOUSEWHEEL_DELAY);\n }\n },\n\n _gesturestart: function(e) {\n var options = this.options;\n var touch = e.touches[0];\n var inPane = this._pointInPane(touch.pageX, touch.pageY);\n\n if (!inPane) {\n return;\n }\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n var args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n },\n\n _gestureend: function() {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n },\n\n _gesturechange: function(e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var chart = ref.chart;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n var left = Math.min(p0, p1);\n var right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n },\n\n _index: function(value) {\n var index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n },\n\n _value: function(index) {\n var value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n },\n\n _slot: function(value) {\n var categoryAxis = this.categoryAxis;\n var index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n },\n\n move: function(from, to) {\n var options = this.options;\n var reverse = this.categoryAxis.options.reverse;\n var offset = options.offset;\n var padding = options.padding;\n var border = options.selection.border;\n var left = reverse ? to : from;\n var right = reverse ? from : to;\n var edge = 'x' + (reverse ? 2 : 1);\n\n var box = this._slot(left);\n var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n var distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n },\n\n set: function(from, to) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var fromValue = limitValue(this._index(from), min, max);\n var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n },\n\n expand: function(delta) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var zDir = options.mousewheel.zoom;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n },\n\n zoom: function(delta, coords) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n var ref = this.categoryAxis.options;\n var reverse = ref.reverse;\n var origin = X + (reverse ? '2' : '1');\n var lineBox = this.categoryAxis.lineBox();\n var relative = Math.abs(lineBox[origin] - coords[X]);\n var size = lineBox.width();\n var position = round(relative / size, 2);\n var minDelta = round(position * delta);\n var maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n },\n\n trigger: function(name, args) {\n return (this.observer || this.chart).trigger(name, args);\n }\n });\n\n setDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n });\n\n var Tooltip = BaseTooltip.extend({\n show: function(point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n var options = deepExtend({}, this.options, point.options.tooltip);\n var anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n BaseTooltip.fn.show.call(this, {\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n },\n\n hide: function() {\n delete this._current;\n BaseTooltip.fn.hide.call(this);\n }\n });\n\n var SharedTooltip = BaseTooltip.extend({\n init: function(plotArea, options) {\n BaseTooltip.fn.init.call(this, plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n },\n\n showAt: function(points, coords) {\n var tooltipPoints = grep(points, function(point) {\n var tooltip = point.series.tooltip;\n var excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n var point = tooltipPoints[0];\n var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n },\n\n _slotAnchor: function(point, slot) {\n var axis = this.plotArea.categoryAxis;\n var align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n },\n\n _defaultAnchor: function(point, slot) {\n var box = point.owner.pane.chartsBox();\n var vertical = this.plotArea.categoryAxis.options.vertical;\n var center = box.center();\n var slotCenter = slot.center();\n var align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n var centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n }\n });\n\n setDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n });\n\n var BarChartAnimation = Animation.extend({\n setup: function() {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n var axis = options.vertical ? Y : X;\n\n var fromScale = this.fromScale = new GeometryPoint(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n },\n\n step: function(pos) {\n var scaleX = dataviz.interpolateValue(this.fromScale.x, 1, pos);\n var scaleY = dataviz.interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(transform()\n .scale(scaleX, scaleY, this.origin)\n );\n },\n\n abort: function() {\n Animation.fn.abort.call(this);\n this.element.transform(null);\n }\n });\n\n setDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(BAR, BarChartAnimation);\n\n var BubbleAnimation = Animation.extend({\n setup: function() {\n var center = this.center = this.element.bbox().center();\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.center)\n );\n }\n });\n\n setDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n });\n\n AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\n var FadeInAnimation = Animation.extend({\n setup: function() {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n },\n\n step: function(pos) {\n this.element.opacity(pos * this.fadeTo);\n }\n });\n\n setDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n });\n\n AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\n var PieAnimation = Animation.extend({\n setup: function() {\n this.element.transform(transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n },\n\n step: function(pos) {\n this.element.transform(transform()\n .scale(pos, pos, this.options.center)\n );\n }\n });\n\n setDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n });\n\n AnimationFactory.current.register(PIE, PieAnimation);\n\n var ScatterLineChart = ScatterChart.extend({\n render: function() {\n ScatterChart.fn.render.call(this);\n\n this.renderSegments();\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n },\n\n animationPoints: function() {\n var points = ScatterChart.fn.animationPoints.call(this);\n return points.concat(this._segments);\n },\n\n createMissingValue: function(value, missingValues) {\n if (missingValues === ZERO) {\n var missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n }\n });\n\n deepExtend(ScatterLineChart.prototype, LineChartMixin);\n\n var XYPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function(panes) {\n var this$1$1 = this;\n if (panes === void 0) { panes = this.panes; }\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this$1$1.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this$1$1.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n },\n\n appendChart: function(chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n createScatterChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createScatterLineChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createBubbleChart: function(series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n },\n\n createXYAxis: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n var defaultRange = tracker.query();\n var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n var typeSamples = [ axisOptions.min, axisOptions.max ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateValueAxis;\n } else if (isLog) {\n axisType = dataviz.LogarithmicAxis;\n } else {\n axisType = dataviz.NumericAxis;\n }\n\n var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n },\n\n createAxes: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n var currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n },\n\n updateAxisOptions: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$1(this.options, index, vertical, options);\n updateAxisOptions$1(this.originalOptions, index, vertical, options);\n }\n });\n\n function updateAxisOptions$1(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\n var PieSegment = ChartElement.extend({\n init: function(value, sector, options) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.sector = sector;\n },\n\n render: function() {\n var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = dataviz.autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n var themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), pointData);\n\n this.append(this.label);\n }\n },\n\n reflow: function(targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n },\n\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var labelsDistance = labelsOptions.distance;\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n var labelWidth = label.box.width();\n var lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n var x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n\n ChartElement.fn.createVisual.call(this);\n\n if (this.value) {\n if (options.visual) {\n var startAngle = (sector.startAngle + 180) % 360;\n var visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new GeometryPoint(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: function () {\n var group = new Group();\n this$1$1.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n },\n\n createSegmentVisual: function(group) {\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n var borderOptions = options.border || {};\n var border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n var color = options.color;\n var fill = {\n color: color,\n opacity: options.opacity\n };\n var visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n },\n\n createSegment: function(sector, options) {\n if (options.singleSegment) {\n return new drawing.Circle(new geometry.Circle(new GeometryPoint(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n },\n\n createAnimation: function() {\n var ref = this;\n var options = ref.options;\n var center = ref.sector.center;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n ChartElement.fn.createAnimation.call(this);\n },\n\n createHighlight: function(options) {\n var highlight = this.options.highlight || {};\n var border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n },\n\n highlightVisual: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new GeometryPoint(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n },\n\n tooltipAnchor: function() {\n var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n pointData: function() {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n }\n });\n\n var RAD_30 = round(dataviz.rad(30), DEFAULT_PRECISION);\n var RAD_60 = round(dataviz.rad(60), DEFAULT_PRECISION);\n\n function tooltipAlignment(angle) {\n var radians = dataviz.rad(angle);\n var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n var horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n var vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n }\n\n setDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: datavizConstants.DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true\n });\n\n deepExtend(PieSegment.prototype, PointEventsMixin);\n\n var PieChartMixin = {\n createLegendItem: function(value, point, options) {\n var legendOptions = this.options.legend || {};\n var labelsOptions = legendOptions.labels || {};\n var inactiveItems = legendOptions.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n var pointVisible = options.visible !== false;\n var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n var text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n var itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n };\n\n var PIE_SECTOR_ANIM_DELAY = 70;\n\n var PieChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n },\n\n render: function() {\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var colorsCount = seriesColors.length;\n var series = options.series;\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var data = currentSeries.data;\n var ref$1 = bindSegments(currentSeries);\n var total = ref$1.total;\n var points = ref$1.points;\n var count = ref$1.count;\n var anglePerValue = 360 / total;\n var constantAngle = (void 0);\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n var currentAngle = (void 0);\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n var value = pointData.value;\n var visible = pointData.visible;\n var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n var explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new dataviz.Ring(null, 0, 0, currentAngle, angle), {\n owner: this$1$1,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this$1$1.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n },\n\n addValue: function(value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new PieSegment(value, sector, segmentOptions);\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var ref = this;\n var options = ref.options;\n var points = ref.points;\n var seriesConfigs = ref.seriesConfigs; if (seriesConfigs === void 0) { seriesConfigs = []; }\n var count = points.length;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n var newBoxCenter = newBox.center();\n var boxCenter = box.center();\n var seriesCount = options.series.length;\n var leftSideLabels = [];\n var rightSideLabels = [];\n var padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n var radius = halfMinWidth - padding;\n var center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n var seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n var label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n },\n\n leftLabelsReflow: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n rightLabelsReflow: function(labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n },\n\n distanceBetweenLabels: function(labels) {\n var segment = last(this.points);\n var sector = segment.sector;\n var count = labels.length - 1;\n var lr = sector.radius + segment.options.labels.distance;\n var distances = [];\n var firstBox = labels[0].box;\n var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (var i = 0; i < count; i++) {\n var secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n },\n\n distributeLabels: function(distances, labels) {\n var this$1$1 = this;\n\n var count = distances.length;\n var left, right, remaining;\n\n for (var i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this$1$1._takeDistance(distances, i, --left, remaining);\n remaining = this$1$1._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n },\n\n _takeDistance: function(distances, anchor, position, amount) {\n var result = amount;\n if (distances[position] > 0) {\n var available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n },\n\n reflowLabels: function(distances, labels) {\n var this$1$1 = this;\n\n var segment = last(this.points);\n var sector = segment.sector;\n var labelOptions = segment.options.labels;\n var labelsCount = labels.length;\n var labelDistance = labelOptions.distance;\n var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n var boxX;\n\n distances[0] += 2;\n for (var i = 0; i < labelsCount; i++) {\n var label = labels[i];\n var box = label.box;\n\n boxY += distances[i];\n boxX = this$1$1.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var ref = this;\n var connectors = ref.options.connectors;\n var points = ref.points;\n var count = points.length;\n var space = 4;\n\n ChartElement.fn.createVisual.call(this);\n\n this._connectorLines = [];\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var label = segment.label;\n var angle = sector.middle();\n var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n var connectorLine = new Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n var box = label.box;\n var centerPoint = sector.center;\n var start = sector.point(angle);\n var middle = new Point(box.x1, box.center().y);\n var sr = (void 0), end = (void 0), crossing = (void 0);\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this$1$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this$1$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this$1$1._connectorLines.push(connectorLine);\n this$1$1.visual.append(connectorLine);\n }\n }\n }\n },\n\n renderVisual: function() {\n ChartElement.fn.renderVisual.call(this);\n\n if (dataviz.find(this.options.series, function (options) { return options.autoFit; })) {\n var targetBox = this.targetBox;\n var pieCenter = this.box.center();\n var bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n var bboxBottom = bbox.bottomRight();\n\n var scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n },\n\n labelComparator: function(reverse) {\n var reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n var first = (a.parent.sector.middle() + 270) % 360;\n var second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n },\n\n hAlignLabel: function(originalX, sector, y1, y2, direction) {\n var radius = sector.radius;\n var sector_center = sector.center;\n var cx = sector_center.x;\n var cy = sector_center.y;\n var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n },\n\n pointInCircle: function(point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format, point.value);\n },\n\n animationDelay: function(categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n },\n\n stackRoot: function() {\n return this;\n }\n });\n\n function intersection(a1, a2, b1, b2) {\n var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n var result;\n if (ub !== 0) {\n var ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n }\n\n setDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n });\n\n deepExtend(PieChart.prototype, PieChartMixin);\n\n PieChart.prototype.isStackRoot = true;\n\n var PiePlotArea = PlotAreaBase.extend({\n render: function() {\n this.createPieChart(this.series);\n },\n\n createPieChart: function(series) {\n var firstSeries = series[0];\n var pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n },\n\n appendChart: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n });\n\n var DonutSegment = PieSegment.extend({\n reflowLabel: function() {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n var lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n PieSegment.fn.reflowLabel.call(this);\n }\n }\n },\n\n createSegment: function(sector, options) {\n return dataviz.ShapeBuilder.current.createRing(sector, options);\n }\n });\n\n setDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n });\n\n deepExtend(DonutSegment.prototype, PointEventsMixin);\n\n var DONUT_SECTOR_ANIM_DELAY = 50;\n\n var DonutChart = PieChart.extend({\n addValue: function(value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new DonutSegment(value, sector, segmentOptions);\n\n $.extend(segment, fields);\n this.append(segment);\n this.points.push(segment);\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var options = this.options;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var series = options.series;\n var seriesCount = series.length;\n\n var padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n var totalSize = halfMinWidth - padding;\n var seriesWithoutSize = 0;\n var holeSize;\n\n for (var i = 0; i < seriesCount; i++) {\n var currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n var innerRadius = holeSize;\n var margin = 0;\n var size, radius;\n\n this.seriesConfigs = [];\n\n for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n var currentSeries$1 = series[i$1];\n size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this$1$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries$1.margin || 0;\n innerRadius = radius;\n }\n\n PieChart.fn.reflow.call(this, targetBox);\n },\n\n animationDelay: function(categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n }\n });\n\n setDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n });\n\n var DonutPlotArea = PiePlotArea.extend({\n render: function() {\n this.createDonutChart(this.series);\n },\n\n createDonutChart: function(series) {\n var firstSeries = series[0];\n var donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n }\n });\n\n var DEFAULT_PADDING = 0.15;\n\n var PolarPlotAreaBase = PlotAreaBase.extend({\n initFields: function() {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n },\n\n render: function() {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n },\n\n alignAxes: function() {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).center;\n var axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n },\n\n createValueAxis: function() {\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n var axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = dataviz.RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = dataviz.RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n },\n\n reflowAxes: function() {\n var ref = this;\n var options = ref.options.plotArea;\n var valueAxis = ref.valueAxis;\n var polarAxis = ref.polarAxis;\n var box = ref.box;\n var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n var padding = getSpacing(options.padding || {}, defaultPadding);\n var paddingBox = box.clone().unpad(padding);\n var axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n },\n\n backgroundBox: function() {\n return this.box;\n },\n\n detachLabels: function() {}\n });\n\n var PolarScatterChart = ScatterChart.extend({\n pointSlot: function(slotX, slotY) {\n var valueRadius = slotX.center.y - slotY.y1;\n var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n }\n });\n\n setDefaultOptions(PolarScatterChart, {\n clip: false\n });\n\n var PolarLineChart = ScatterLineChart.extend({\n\n });\n\n PolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\n setDefaultOptions(PolarLineChart, {\n clip: false\n });\n\n var SplinePolarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function(fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n },\n\n _polarAxisCenter: function() {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n return center;\n },\n\n strokeSegments: function() {\n var segments = this._strokeSegments;\n\n if (!segments) {\n var center = this._polarAxisCenter();\n var curveProcessor = new CurveProcessor(false);\n var linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n }\n });\n\n var PolarAreaSegment = AreaSegment.extend({\n fillToAxes: function(fillPath) {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n var centerSegment = new geometry.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n }\n });\n\n var PolarAreaChart = PolarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n },\n\n createMissingValue: function(value, missingValues) {\n var missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n },\n\n _hasMissingValuesGap: function() {\n var this$1$1 = this;\n\n var series = this.options.series;\n\n for (var idx = 0; idx < series.length; idx++) {\n if (this$1$1.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n },\n\n sortPoints: function(points) {\n var this$1$1 = this;\n\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n var value = point.value;\n if (!hasValue(value.y) && this$1$1.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n }\n });\n\n function xComparer(a, b) {\n return a.value.x - b.value.x;\n }\n\n var PolarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var polarAxis = new dataviz.PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n },\n\n valueAxisOptions: function(defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n },\n\n createValueAxis: function() {\n PolarPlotAreaBase.fn.createValueAxis.call(this);\n this.axisY = this.valueAxis;\n },\n\n appendChart: function(chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n },\n\n createCharts: function() {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n },\n\n createScatterChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var xValue = this.axisX.getValue(point);\n var yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n },\n\n createCrosshairs: function() {}\n });\n\n setDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin);\n\n function groupBySeriesIx(segments) {\n var seriesSegments = [];\n for (var idx = 0; idx < segments.length; idx++) {\n var segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n }\n\n var RadarLineChart = LineChart.extend({\n pointSlot: function(categorySlot, valueSlot) {\n var valueRadius = categorySlot.center.y - valueSlot.y1;\n var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n },\n\n renderSegments: function() {\n LineChart.fn.renderSegments.call(this);\n\n if (this._segments && this._segments.length > 1) {\n var seriesSegments = groupBySeriesIx(this._segments);\n\n for (var idx = 0; idx < seriesSegments.length; idx++) {\n var segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n var firstPoint = segments[0].linePoints[0];\n var lastSegment = last(segments);\n var lastPoint = last(lastSegment.linePoints);\n var isFirstDataPoint = firstPoint.categoryIx === 0;\n var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n },\n\n createSegment: function(linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n var segment = new pointType(linePoints, currentSeries, seriesIx);\n var missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n }\n });\n\n setDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n });\n\n var SplineRadarAreaSegment = SplineAreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaSegment = AreaSegment.extend({\n fillToAxes: function() {}\n });\n\n var RadarAreaChart = RadarLineChart.extend({\n createSegment: function(linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n var stackPoints;\n var segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n },\n\n seriesMissingValues: function(series) {\n return series.missingValues || ZERO;\n }\n });\n\n var RadarSegment = DonutSegment.extend({\n init: function(value, options) {\n DonutSegment.fn.init.call(this, value, null, options);\n }\n });\n\n setDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n });\n\n var RadarClusterLayout = ChartElement.extend({\n init: function(options) {\n ChartElement.fn.init.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n },\n\n reflow: function(sector) {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var gap = options.gap;\n var spacing = options.spacing;\n var count = children.length;\n var slots = count + gap + (spacing * (count - 1));\n var slotAngle = sector.angle / slots;\n var angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, function (child) {\n var slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n }\n });\n\n setDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n });\n\n var RadarStackLayout = ChartElement.extend({\n reflow: function(sector) {\n var ref = this;\n var reverse = ref.options.reverse;\n var children = ref.children;\n var childrenCount = children.length;\n var first = reverse ? childrenCount - 1 : 0;\n var step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (var i = first; i >= 0 && i < childrenCount; i += step) {\n var childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n });\n\n var RadarBarChart = BarChart.extend({\n pointType: function() {\n return RadarSegment;\n },\n\n clusterType: function() {\n return RadarClusterLayout;\n },\n\n stackType: function() {\n return RadarStackLayout;\n },\n\n categorySlot: function(categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n\n pointSlot: function(categorySlot, valueSlot) {\n var slot = categorySlot.clone();\n var y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n },\n\n reflowPoint: function(point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n },\n\n createAnimation: function() {\n this.options.animation.center = this.box.toRect().center();\n BarChart.fn.createAnimation.call(this);\n }\n });\n\n RadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\n setDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n });\n\n var RadarPlotArea = PolarPlotAreaBase.extend({\n createPolarAxis: function() {\n var categoryAxis = new dataviz.RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createCategoryAxesLabels();\n },\n\n valueAxisOptions: function(defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n },\n\n aggregateCategories: function() {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n },\n\n createCategoryAxesLabels: function() {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n },\n\n filterSeries: function(currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n },\n\n createCharts: function() {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n },\n\n chartOptions: function(series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n },\n\n createAreaChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n },\n\n createLineChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n },\n\n createBarChart: function(series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n },\n\n seriesCategoryAxis: function() {\n return this.categoryAxis;\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var category = this.categoryAxis.getCategory(point);\n var value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n },\n\n createCrosshairs: function() {}\n });\n\n deepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints\n });\n\n setDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n });\n\n var FunnelSegment = ChartElement.extend({\n init: function(value, options, segmentOptions) {\n ChartElement.fn.init.call(this, options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n },\n\n reflow: function(chartBox) {\n var points = this.points;\n var label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n },\n\n createVisual: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var visual;\n\n ChartElement.fn.createVisual.call(this);\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: function () { return this$1$1.createPath(); }\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n },\n\n createPath: function() {\n var options = this.options;\n var border = options.border;\n var path = Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n },\n\n createHighlight: function(style) {\n return Path.fromPoints(this.points, style);\n },\n\n highlightVisual: function() {\n return this.visual.children[0];\n },\n\n highlightVisualArgs: function() {\n var path = Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n },\n\n tooltipAnchor: function() {\n var box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n },\n\n formatValue: function(format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n }\n });\n\n setDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n });\n\n deepExtend(FunnelSegment.prototype, PointEventsMixin);\n\n var FunnelChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n },\n\n formatPointValue: function(point, format) {\n return this.chartService.format.auto(format,point.value);\n },\n\n render: function() {\n var this$1$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if (seriesColors === void 0) { seriesColors = []; }\n var series = options.series[0];\n var data = series.data;\n\n if (!data) {\n return;\n }\n\n var ref$1 = bindSegments(series);\n var total = ref$1.total;\n var points = ref$1.points;\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this$1$1,\n series: series,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n var value = pointData.valueFields.value;\n var segment = this$1$1.createSegment(value, fields);\n var label = this$1$1.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n },\n\n evalSegmentOptions: function(options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n },\n\n createSegment: function(value, fields) {\n var seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n var segment = new FunnelSegment(value, seriesOptions, fields);\n $.extend(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n },\n\n createLabel: function(value, fields) {\n var series = fields.series;\n var dataItem = fields.dataItem;\n var labels = deepExtend({}, this.options.labels, series.labels);\n var text = value;\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.plotArea.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = dataviz.autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n var textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n },\n\n labelPadding: function() {\n var labels = this.labels;\n var padding = { left: 0, right: 0 };\n\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n var align = label.options.align;\n if (align !== CENTER) {\n var width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n },\n\n dynamicSlopeReflow: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var firstSegment = segments[0];\n var maxSegment = firstSegment;\n\n for (var idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n var previousOffset = (width - lastUpperSide) / 2;\n var previousHeight = 0;\n\n for (var idx$1 = 0; idx$1 < count; idx$1++) {\n var percentage = segments[idx$1].percentage;\n var nextSegment = segments[idx$1 + 1];\n var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n var points = segments[idx$1].points = [];\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n var offset = (void 0);\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n },\n\n constantSlopeReflow: function(box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var decreasingWidth = options.neckRatio <= 1;\n var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n var finalNarrow = (topMostWidth - neckRatio) / 2;\n var previousHeight = 0;\n\n for (var idx = 0; idx < count; idx++) {\n var points = segments[idx].points = [];\n var percentage = segments[idx].percentage;\n var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new GeometryPoint(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new GeometryPoint(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new GeometryPoint(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n },\n\n reflow: function(chartBox) {\n var points = this.points;\n var count = points.length;\n\n if (!count) {\n return;\n }\n\n var options = this.options;\n var box = chartBox.clone().unpad(this.labelPadding());\n var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n var width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (var idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n }\n });\n\n setDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n });\n\n deepExtend(FunnelChart.prototype, PieChartMixin);\n\n var MAX_NECK_RATIO = 1e6;\n\n var PyramidChart = FunnelChart.extend({\n init: function(plotArea, options) {\n options.dynamicSlope = false;\n options.neckRatio = MAX_NECK_RATIO;\n\n FunnelChart.fn.init.call(this, plotArea, options);\n }\n });\n\n var FunnelPlotArea = PlotAreaBase.extend({\n render: function() {\n this.createChart(FunnelChart, filterSeriesByType(this.series, [ FUNNEL ]));\n this.createChart(PyramidChart, filterSeriesByType(this.series, [ PYRAMID ]));\n },\n\n createChart: function(chartType, series) {\n var firstSeries = series[0];\n if (!firstSeries) {\n return;\n }\n\n var chart = new chartType(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(chart);\n },\n\n appendChart: function(chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n });\n\n // Linear color scale from the given color to white minus minimum lightness offset.\n var colorScale = function (color, minLightnessOffset) {\n if (minLightnessOffset === void 0) { minLightnessOffset = 0.05; }\n\n var baseColor = kendo.parseColor(color);\n var offset = 1 - minLightnessOffset;\n\n return function (value) {\n var hsl = baseColor.toHSL();\n var range = 100 - hsl.l;\n var point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n };\n\n var HeatmapPoint = ChartElement.extend({\n init: function(value, options) {\n ChartElement.fn.init.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n },\n\n render: function() {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n },\n\n createLabel: function() {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n var labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = dataviz.autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\n },\n\n formatValue: function(format) {\n return this.owner.formatPointValue(this, format);\n },\n\n reflow: function(targetBox) {\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n },\n\n markerBox: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var rect = this.box.toRect();\n var type = valueOrDefault(markers.type, 'rect');\n var isRoundRect = type === datavizConstants.ROUNDED_RECT;\n var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n var halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n var center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return dataviz.rectToBox(rect);\n },\n\n markerBorder: function() {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n },\n\n createMarker: function() {\n var options = this.options;\n var markerOptions = options.markers;\n var marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n },\n\n createHighlight: function(style) {\n var options = this.options;\n var markerOptions = this.options.highlight.markers || this.options.markers;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n var visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n },\n\n highlightVisual: function() {\n return this.rectVisual;\n },\n\n highlightVisualArgs: function() {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n },\n\n tooltipAnchor: function() {\n var left = this.box.center().x;\n var top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n },\n\n overlapsBox: function(box) {\n return this.box.overlaps(box);\n },\n\n unclipElements: function() {\n /* noop, clip labels */\n },\n\n pointData: function() {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n }\n });\n\n deepExtend(HeatmapPoint.prototype, PointEventsMixin);\n deepExtend(HeatmapPoint.prototype, NoteMixin);\n\n HeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n }\n };\n\n var HeatmapChart = ChartElement.extend({\n init: function(plotArea, options) {\n ChartElement.fn.init.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n },\n\n _initFields: function() {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n },\n\n render: function() {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n },\n\n setRange: function() {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1$1._bindPoint(currentSeries, seriesIx, pointIx);\n var valueFields = ref$1.valueFields;\n if (defined(valueFields.value) && valueFields.value !== null) {\n this$1$1.valueRange.min = Math.min(this$1$1.valueRange.min, valueFields.value);\n this$1$1.valueRange.max = Math.max(this$1$1.valueRange.max, valueFields.value);\n }\n }\n }\n },\n\n addValue: function(value, fields) {\n var point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n $.extend(point, fields);\n }\n }\n\n this.points.push(point);\n },\n\n evalPointOptions: function(options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = {\n defaults: series._defaults,\n excluded: [\n \"data\", \"tooltip\", \"content\", \"template\",\n \"visual\", \"toggle\", \"drilldownSeriesFactory\"\n ]\n };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n },\n\n pointType: function() {\n return HeatmapPoint;\n },\n\n pointOptions: function(series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n },\n\n createPoint: function(value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n var scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n var point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n },\n\n seriesAxes: function(series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n },\n\n reflow: function(targetBox) {\n var this$1$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var ref = this$1$1.seriesAxes(fields.series);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n var indexX = xAxis.categoryIndex(value.x);\n var indexY = yAxis.categoryIndex(value.y);\n var slotX = xAxis.getSlot(indexX, indexX, limit);\n var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n },\n\n pointSlot: function(slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n },\n\n traverseDataPoints: function(callback) {\n var this$1$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var ref$1 = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref$1.xAxis;\n var yAxis = ref$1.yAxis;\n var xRange = xAxis.currentRangeIndices();\n var yRange = yAxis.currentRangeIndices();\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$2 = this$1$1._bindPoint(currentSeries, seriesIx, pointIx);\n var value = ref$2.valueFields;\n var fields = ref$2.fields;\n var xIndex = xAxis.totalIndex(value.x);\n var yIndex = yAxis.totalIndex(value.y);\n var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n var yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1$1\n }, fields));\n }\n }\n }\n },\n\n formatPointValue: function(point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n },\n\n animationPoints: function() {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n }\n });\n setDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n });\n deepExtend(HeatmapChart.prototype, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n });\n\n var HeatmapPlotArea = PlotAreaBase.extend({\n initFields: function() {\n this.namedXAxes = {};\n this.namedYAxes = {};\n },\n\n render: function(panes) {\n if (panes === void 0) { panes = this.panes; }\n\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var series = this.srcSeries || this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var data = currentSeries.data || [];\n var ref = this$1$1.seriesAxes(currentSeries);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n\n var xCategories = dataviz.createHashSet(xAxis.categories || []);\n var yCategories = dataviz.createHashSet(yAxis.categories || []);\n\n for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n var x = ref$1.x;\n var y = ref$1.y;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n },\n\n createCharts: function(panes) {\n var this$1$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1$1.addToLegend(paneSeries);\n var filteredSeries = this$1$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1$1.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n },\n\n createHeatmapChart: function(series, pane) {\n var chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n },\n\n seriesPaneName: function(series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n },\n\n seriesAxes: function(series) {\n var xAxis;\n var yAxis;\n\n var options = this.options;\n\n var xAxisOptions = [].concat(options.xAxis);\n var xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n } else {\n xAxis = xAxisOptions[0];\n }\n\n var yAxisOptions = [].concat(options.yAxis);\n var yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(function (axis) { return axis.name === yAxisName; });\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n },\n\n createAxisLabels: function() {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n },\n\n createXYAxis: function(options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var axisOptions = $.extend({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = dataviz.DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n var axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.mapCategories();\n\n return axis;\n },\n\n createAxes: function(panes) {\n var this$1$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n },\n\n removeAxis: function(axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.fn.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n },\n\n _dispatchEvent: function(chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n },\n\n updateAxisOptions: function(axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions$2(this.options, index, vertical, options);\n updateAxisOptions$2(this.originalOptions, index, vertical, options);\n },\n\n crosshairOptions: function(axis) {\n // Stack the crosshair above the series points.\n return $.extend({}, axis.options.crosshair, { zIndex: 0 });\n }\n });\n\n function updateAxisOptions$2(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n }\n\n setDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n });\n\n deepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\n var COLOR = \"color\";\n var FIRST = \"first\";\n var FROM = \"from\";\n var MAX = \"max\";\n var MIN = \"min\";\n var NOTE_TEXT = \"noteText\";\n var SUMMARY_FIELD = \"summary\";\n var TO = \"to\";\n\n PlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA\n ]);\n\n PlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE\n ]);\n\n PlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\n PlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\n PlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL, PYRAMID ]);\n\n PlotAreaFactory.current.register(PolarPlotArea, [ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ]);\n PlotAreaFactory.current.register(RadarPlotArea, [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ]);\n\n PlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\n SeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD, DRILLDOWN_FIELD ]\n );\n\n SeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR, DRILLDOWN_FIELD ]);\n SeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR, DRILLDOWN_FIELD ]);\n\n SeriesBinder.current.register(\n [ FUNNEL, PYRAMID ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n );\n\n DefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n );\n\n DefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n );\n\n SeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n );\n\n SeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n );\n\n SeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n );\n\n DefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT, DRILLDOWN_FIELD ]\n );\n\n DefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n );\n\n SeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\", DRILLDOWN_FIELD ]\n );\n\n var AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\n var MOUSEMOVE = \"mousemove\";\n var CONTEXTMENU = \"contextmenu\";\n var MOUSELEAVE = \"mouseleave\";\n var MOUSEMOVE_DELAY = 20;\n\n var Chart = Class.extend({\n init: function(element, userOptions, themeOptions, context) {\n var this$1$1 = this;\n if (context === void 0) { context = {}; }\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new services.ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n var options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n dataviz.FontLoader.preloadFonts(userOptions, function () {\n this$1$1.fontLoaded = true;\n if (!this$1$1._destroyed) {\n this$1$1.trigger('init');\n this$1$1._redraw();\n this$1$1._attachEvents();\n }\n });\n },\n\n _initElement: function(element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n },\n\n _setElementClass: function(element) {\n dataviz.addClass(element, \"k-chart\");\n },\n\n _initTheme: function(options, themeOptions) {\n var seriesCopies = [];\n var series = options.series || [];\n\n for (var i = 0; i < series.length; i++) {\n seriesCopies.push($.extend({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n },\n\n getSize: function() {\n var chartArea = this.options.chartArea || {};\n var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n },\n\n resize: function(force) {\n var size = this.getSize();\n var currentSize = this._size;\n var hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && dataviz.find(this._selections, function (s) { return !s.visible; })) {\n this._destroySelections();\n this._setupSelection();\n }\n },\n\n _resize: function() {\n this._noTransitionsRedraw();\n },\n\n redraw: function(paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n },\n\n getAxis: function(name) {\n return findAxisByName(name, this._plotArea.axes);\n },\n\n findAxisByName: function(name) {\n return this.getAxis(name);\n },\n\n findPaneByName: function(name) {\n var panes = this._plotArea.panes;\n\n for (var idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n },\n\n findPaneByIndex: function(idx) {\n var panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n },\n\n plotArea: function() {\n return new ChartPlotArea(this._plotArea);\n },\n\n toggleHighlight: function(show, filter) {\n var plotArea = this._plotArea;\n var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n var points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n var seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (inArray(firstSeries.type, [ PIE, FUNNEL, PYRAMID ])) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n },\n\n togglePointsHighlight: function(show, points) {\n var highlight = this._highlight;\n for (var idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n },\n\n showTooltip: function(filter) {\n var shared = this._sharedTooltip();\n var ref = this;\n var tooltip = ref._tooltip;\n var plotArea = ref._plotArea;\n var point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n },\n\n hideTooltip: function() {\n this._tooltip.hide();\n },\n\n _initSurface: function() {\n var surface = this.surface;\n var wrap = this._surfaceWrap();\n\n var chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n dataviz.elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n dataviz.elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = drawing.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n },\n\n _surfaceWrap: function() {\n return this.element;\n },\n\n _redraw: function() {\n var model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._model = model;\n this._plotArea = model._plotArea;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n },\n\n exportVisual: function(exportOptions) {\n var visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n var currentOptions = this.options;\n var options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n var model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n },\n\n _sharedTooltip: function() {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n },\n\n _createPannable: function() {\n var options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n },\n\n _createZoomSelection: function() {\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n },\n\n _createMousewheelZoom: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n },\n\n _toggleDragZoomEvents: function() {\n var pannable = this.options.pannable;\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n var mousewheel = (zoomable || {}).mousewheel;\n var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n var element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n },\n\n _toggleDomEvents: function(drag, zoom) {\n var domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n },\n\n _createTooltip: function() {\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n },\n\n _createSharedTooltip: function(options) {\n return new SharedTooltip(this._plotArea, options);\n },\n\n applyDefaults: function(options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n },\n\n applySeriesColors: function() {\n var options = this.options;\n var series = options.series;\n var colors = options.seriesColors || [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var seriesColor = colors[i % colors.length];\n var defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n },\n\n _getModel: function() {\n var options = this.options;\n var plotArea = this._createPlotArea();\n var model = new dataviz.RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n var title = Title.buildTitle(options.title);\n var subtitle = Title.buildTitle(options.subtitle, {\n align: options.title.align,\n position: options.title.position\n });\n model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n if (options.legend && options.legend.visible) {\n model.append(new Legend(plotArea.options.legend, this.chartService));\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n },\n\n _modelOptions: function() {\n var options = this.options;\n var size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || datavizConstants.DEFAULT_WIDTH,\n height: size.height || datavizConstants.DEFAULT_HEIGHT\n }, options.chartArea);\n },\n\n _createPlotArea: function(skipSeries) {\n var options = this.options;\n\n var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n },\n\n _setupSelection: function() {\n var this$1$1 = this;\n\n var ref = this;\n var axes = ref._plotArea.axes;\n var selections = this._selections = [];\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n var range = axis.range();\n\n var selection = new Selection(this$1$1, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n },\n\n _selectStart: function(e) {\n return this.trigger(SELECT_START, e);\n },\n\n _select: function(e) {\n return this.trigger(SELECT, e);\n },\n\n _selectEnd: function(e) {\n return this.trigger(SELECT_END, e);\n },\n\n _initHandlers: function() {\n this._clickHandler = this._click.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = kendo.throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n },\n\n addObserver: function(observer) {\n if (observer) {\n this.observers.push(observer);\n }\n },\n\n removeObserver: function(observer) {\n var index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n },\n\n requiresHandlers: function(eventNames) {\n var observers = this.observers;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n },\n\n trigger: function(name, args) {\n if (args === void 0) { args = {}; }\n\n args.sender = this;\n\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n } else if (name === SERIES_OVER) {\n this._updateDrilldownPoint(args.point);\n } else if (name === SERIES_LEAVE) {\n this._resetDrilldownPoint();\n } else if (name === SERIES_CLICK) {\n this._startDrilldown(args.point);\n }\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n },\n\n _attachEvents: function() {\n var element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n var obj;\n bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n\n this.domEvents = services.DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n },\n\n _mouseleave: function(e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotAreaHovered) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n },\n\n _cancelDomEvents: function() {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n },\n\n _gesturestart: function(e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this.surface.suspendTracking();\n }\n },\n\n _gestureend: function(e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n },\n\n _gesturechange: function(e) {\n var mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n var previousGestureDistance = this._gestureDistance;\n var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n var coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n },\n\n _mouseout: function(e) {\n if (e.element) {\n var element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n },\n\n _start: function(e) {\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n },\n\n _move: function(e) {\n var ref = this;\n var state = ref._navState;\n var pannable = ref._pannable;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n var ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n var ranges$1 = {};\n var axes = state.axes;\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n var axis = currentAxis.options.vertical ? e.y : e.x;\n var delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges$1;\n this.trigger(DRAG, {\n axisRanges: ranges$1,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n },\n\n _end: function(e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n var pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n var ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n },\n\n _stopChartHandlers: function(e) {\n var selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (var idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n },\n\n _mousewheelZoomRate: function() {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n },\n\n _mousewheel: function(e) {\n var this$1$1 = this;\n\n var delta = dataviz.mousewheelDelta(e);\n var mousewheelZoom = this._mousewheelZoom;\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1.trigger(ZOOM_END, args);\n this$1$1._zooming = false;\n if (this$1$1.surface) {\n this$1$1.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n var state = this._navState;\n if (!state) {\n var prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n var totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n var axes = this._navState.axes;\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1$1._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1$1._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n },\n\n _startNavigation: function(e, coords, chartEvent) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPointPane(coords);\n var axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n var ranges = axisRanges(axes);\n\n var prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n },\n\n _endNavigation: function(e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n },\n\n _getChartElement: function(e, match) {\n var element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n },\n\n _drawingChartElement: function(element, e, match) {\n var current = element;\n var chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n },\n\n _eventCoordinates: function(e) {\n var coordinates = dataviz.eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n },\n\n _elementPadding: function() {\n if (!this._padding) {\n var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n },\n\n _toDocumentCoordinates: function(point) {\n var padding = this._elementPadding();\n var offset = dataviz.elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n },\n\n _toModelCoordinates: function(clientX, clientY) {\n var element = this.element;\n var offset = dataviz.elementOffset(element);\n var padding = this._elementPadding();\n var inverseTransform = dataviz.elementScale(element).invert();\n var point = new GeometryPoint(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n },\n\n _tap: function(e) {\n var this$1$1 = this;\n\n var drawingElement = this.surface.eventTarget(e);\n var element = this._drawingChartElement(drawingElement, e);\n var sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(function () {\n this$1$1.handlingTap = false;\n }, 0);\n },\n\n _click: function(e) {\n var element = this._getChartElement(e);\n this._propagateClick(element, e);\n },\n\n _propagateClick: function(element, e) {\n var this$1$1 = this;\n\n var current = element;\n while (current) {\n if (current.click) {\n current.click(this$1$1, e);\n }\n\n current = current.parent;\n }\n },\n\n _startHover: function(element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n var point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n this._showInactiveOpacity(point, e);\n\n return point;\n },\n\n _displayTooltip: function(point) {\n var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n },\n\n _displayInactiveOpacity: function(activePoint, multipleSeries, highlightPoints) {\n var chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n var inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n },\n\n _getInactivePoints: function(activePoint, chartInstance) {\n var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(function (point) { return point !== activePoint; });\n },\n\n _getAllPointsOfType: function(container, type) {\n var this$1$1 = this;\n\n var points = [];\n\n for (var i = 0; i < container.children.length; i++) {\n var element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this$1$1._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n },\n\n _updateHoveredPoint: function(point, e) {\n var hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n },\n\n _updateDrilldownPoint: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var ref = SeriesBinder.current.bindPoint(point.series, null, point.dataItem);\n var fields = ref.fields;\n if (fields.drilldown) {\n this._drilldownState = { cursor: this.element.style.cursor };\n this.element.style.cursor = 'pointer';\n }\n },\n\n _resetDrilldownPoint: function() {\n if (this._drilldownState) {\n this.element.style.cursor = this._drilldownState.cursor;\n this._drilldownState = null;\n }\n },\n\n _startDrilldown: function(point) {\n if (!point || !point.series) {\n return;\n }\n\n var series = point.series;\n var ref = SeriesBinder.current.bindPoint(series, null, point.dataItem);\n var fields = ref.fields;\n var value = fields.drilldown;\n if (value) {\n var args = { series: series, point: point, value: value, sender: this };\n this.trigger(DRILLDOWN, args);\n }\n },\n\n _updateSeriesOpacity: function(point, resetOpacity) {\n var this$1$1 = this;\n\n var plotArea = this._plotArea;\n var length = plotArea.series.length;\n\n for (var i = 0; i < length; i++) {\n var currSeries = plotArea.series[i];\n var defaultOpacity = this$1$1._getDefaultOpacityForSeries(currSeries);\n var inactiveOpacity = this$1$1._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n },\n\n _applySeriesOpacity: function(elements, activeSeries, reset, series) {\n var this$1$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var currSeries = element.series || series;\n var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n var opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this$1$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n },\n\n _chartInstanceFromPoint: function(point) {\n var chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n },\n\n _showInactiveOpacity: function(point, e) {\n var activePoint = this._activePoint;\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n }\n\n return point;\n },\n\n _hideInactiveOpacity: function(point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n if (hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n },\n\n _hasInactiveOpacity: function() {\n var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n },\n\n _getInactiveOpacityForSeries: function(series) {\n var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _getDefaultOpacityForSeries: function(series) {\n return series.defaultOpacity || series.opacity || datavizConstants.DEFAULT_SERIES_OPACITY;\n },\n\n _mouseover: function(e) {\n var point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n var obj;\n bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n }\n },\n\n _mouseMoveTracking: function(e) {\n var ref = this;\n var options = ref.options;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n var point = ref._activePoint;\n var coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n var obj;\n unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n this._unsetActivePoint();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n },\n\n _mousemove: function(e) {\n var coords = this._eventCoordinates(e);\n var plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n var overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n this._plotAreaHovered = true;\n this._plotArea.hover(this, e);\n } else if (this._plotAreaHovered && !overPlotArea) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n },\n\n _trackCrosshairs: function(coords) {\n var crosshairs = this._plotArea.crosshairs;\n\n for (var i = 0; i < crosshairs.length; i++) {\n var current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n },\n\n _trackSharedTooltip: function(coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var plotArea = ref._plotArea;\n var categoryAxis = ref._plotArea.categoryAxis;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n var index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n var points = plotArea.pointsByCategoryIndex(index);\n var pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n var hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n },\n\n hideElements: function(options) {\n var plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n },\n\n _unsetActivePoint: function(options) {\n var ref = this;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n },\n\n _deferRedraw: function() {\n this._redraw();\n },\n\n _clearRedrawTimeout: function() {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n },\n\n bindCategories: function() {\n var this$1$1 = this;\n\n var options = this.options;\n var definitions = [].concat(options.categoryAxis);\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this$1$1.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n },\n\n bindCategoryAxisFromSeries: function(axis, axisIx) {\n var this$1$1 = this;\n\n var series = this.options.series;\n var seriesLength = series.length;\n var uniqueCategories = new dataviz.HashMap();//perf improvement in case type category with dates\n var items = [];\n var bindable = false;\n var dateAxis;\n\n for (var seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n var s = series[seriesIx];\n var onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n var data = s.data;\n var dataLength = data.length;\n var bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n var getFn = dateAxis ? getDateField : getField;\n\n for (var dataIx = 0; dataIx < dataLength; dataIx++) {\n var dataRow = data[dataIx];\n var category = getFn(s.categoryField, dataRow, this$1$1.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dataviz.dateComparer(a[0], b[0]);\n });\n }\n\n var result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\n axis.categories = [];\n }\n },\n\n _isBindable: function(series) {\n var valueFields = SeriesBinder.current.valueFields(series);\n var result = true;\n\n for (var i = 0; i < valueFields.length; i++) {\n var field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n },\n\n _noTransitionsRedraw: function() {\n var options = this.options;\n var transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n },\n\n _legendItemHover: function(seriesIndex, pointIndex) {\n var ref = this;\n var plotArea = ref._plotArea;\n var highlight = ref._highlight;\n var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n var items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL, PYRAMID ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n var multipleSeries = plotArea.series.length > 1;\n var point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n },\n\n _shouldAttachMouseMove: function() {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n },\n\n updateMouseMoveHandler: function() {\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n if (this._shouldAttachMouseMove()) {\n var obj$1;\n bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n },\n\n applyOptions: function(options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n },\n\n setOptions: function(options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n },\n\n setDirection: function(rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n },\n\n setIntlService: function(intl) {\n this.chartService.intl = intl;\n },\n\n noTransitionsRedraw: function() {\n this._noTransitionsRedraw();\n },\n\n destroy: function() {\n this._destroyed = true;\n\n var obj;\n unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n var obj$1;\n unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n }\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n },\n\n _destroySurface: function() {\n var surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n },\n\n _destroySelections: function() {\n var selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n },\n\n _destroyView: function() {\n var model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n this._resetDrilldownPoint();\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n }\n });\n\n function resolveAxisAliases(options) {\n var aliases = AXIS_NAMES;\n\n for (var idx = 0; idx < aliases.length; idx++) {\n var alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n }\n\n function pointByCategoryName(points, name) {\n if (points) {\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n }\n\n function applyAxisDefaults(options, themeOptions) {\n var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n var axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n var axisColor = (axisOptions || {}).color || axisDefaults.color;\n var result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n }\n\n function applySeriesDefaults(options, themeOptions) {\n var series = options.series;\n var seriesLength = series.length;\n var seriesDefaults = options.seriesDefaults;\n var commonDefaults = deepExtend({}, options.seriesDefaults);\n var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (var i = 0; i < seriesLength; i++) {\n var seriesType = series[i].type || options.seriesDefaults.type;\n\n var baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n }\n\n function cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n }\n\n function axisRanges(axes) {\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n }\n\n function sortDates(dates, comparer) {\n if (comparer === void 0) { comparer = dataviz.dateComparer; }\n\n for (var i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n }\n\n function uniqueDates(srcDates, comparer) {\n if (comparer === void 0) { comparer = dataviz.dateComparer; }\n\n var dates = sortDates(srcDates, comparer);\n var length = dates.length;\n var result = length > 0 ? [ dates[0] ] : [];\n\n for (var i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n }\n\n function transpose(rows) {\n var rowCount = rows.length;\n var result = [];\n\n for (var rowIx = 0; rowIx < rowCount; rowIx++) {\n var row = rows[rowIx];\n var colCount = row.length;\n\n for (var colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\n }\n\n var DATA_FIELDS = [ 'data', 'categories' ];\n\n function clearMissingValues(originalOptions, options) {\n for (var field in options) {\n if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n var fieldValue = options[field];\n var originalValue = originalOptions[field];\n if (defined(originalValue)) {\n var nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n }\n\n function triggerPaneRender(panes) {\n for (var idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n }\n\n setDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {}\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n });\n\n kendo.deepExtend(kendo.dataviz, {\n constants: constants,\n Aggregates: Aggregates,\n AreaChart: AreaChart,\n AreaSegment: AreaSegment,\n AxisGroupRangeTracker: AxisGroupRangeTracker,\n Bar: Bar,\n BarChart: BarChart,\n BarLabel: BarLabel,\n BoxPlotChart: BoxPlotChart,\n BoxPlot: BoxPlot,\n BubbleChart: BubbleChart,\n Bullet: Bullet,\n BulletChart: BulletChart,\n CandlestickChart: CandlestickChart,\n Candlestick: Candlestick,\n CategoricalChart: CategoricalChart,\n CategoricalErrorBar: CategoricalErrorBar,\n CategoricalPlotArea: CategoricalPlotArea,\n Chart: Chart,\n ChartContainer: ChartContainer,\n ClipAnimation: ClipAnimation,\n ClusterLayout: ClusterLayout,\n Crosshair: Crosshair,\n CrosshairTooltip: CrosshairTooltip,\n DefaultAggregates: DefaultAggregates,\n DonutChart: DonutChart,\n DonutPlotArea: DonutPlotArea,\n DonutSegment: DonutSegment,\n ErrorBarBase: ErrorBarBase,\n ErrorRangeCalculator: ErrorRangeCalculator,\n Highlight: Highlight,\n SharedTooltip: SharedTooltip,\n Legend: Legend,\n LegendItem: LegendItem,\n LegendLayout: LegendLayout,\n LineChart: LineChart,\n LinePoint: LinePoint,\n LineSegment: LineSegment,\n Pane: Pane,\n PieAnimation: PieAnimation,\n PieChart: PieChart,\n PieChartMixin: PieChartMixin,\n PiePlotArea: PiePlotArea,\n PieSegment: PieSegment,\n PlotAreaBase: PlotAreaBase,\n PlotAreaEventsMixin: PlotAreaEventsMixin,\n PlotAreaFactory: PlotAreaFactory,\n PointEventsMixin: PointEventsMixin,\n RangeBar: RangeBar,\n RangeBarChart: RangeBarChart,\n RangeAreaPoint: RangeAreaPoint,\n RangeAreaChart: RangeAreaChart,\n ScatterChart: ScatterChart,\n ScatterErrorBar: ScatterErrorBar,\n ScatterLineChart: ScatterLineChart,\n Selection: Selection,\n SeriesAggregator: SeriesAggregator,\n SeriesBinder: SeriesBinder,\n SplineSegment: SplineSegment,\n SplineAreaSegment: SplineAreaSegment,\n StackWrap: StackWrap,\n Tooltip: Tooltip,\n OHLCChart: OHLCChart,\n OHLCPoint: OHLCPoint,\n WaterfallChart: WaterfallChart,\n WaterfallSegment: WaterfallSegment,\n XYPlotArea: XYPlotArea,\n MousewheelZoom: MousewheelZoom,\n ZoomSelection: ZoomSelection,\n Pannable: Pannable,\n ChartAxis: ChartAxis,\n ChartPane: ChartPane,\n ChartPlotArea: ChartPlotArea,\n findAxisByName: findAxisByName,\n anyHasZIndex: anyHasZIndex,\n appendIfNotNull: appendIfNotNull,\n areNumbers: areNumbers,\n bindSegments: bindSegments,\n categoriesCount: categoriesCount,\n countNumbers: countNumbers,\n equalsIgnoreCase: equalsIgnoreCase,\n evalOptions: evalOptions,\n filterSeriesByType: filterSeriesByType,\n getDateField: getDateField,\n getField: getField,\n hasGradientOverlay: hasGradientOverlay,\n hasValue: hasValue,\n isDateAxis: isDateAxis,\n segmentVisible: segmentVisible,\n singleItemOrArray: singleItemOrArray,\n createOutOfRangePoints: createOutOfRangePoints\n });\n\n })(window.kendo.jQuery);\n\n var __meta__$C = {\n id: \"breadcrumb\",\n name: \"Breadcrumb\",\n category: \"web\",\n description: \"The Breadcrumb widget displays navigation breadcrumb.\",\n depends: [ \"core\", \"icons\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n extend = $.extend,\n mediaQuery = kendo.mediaQuery,\n isPlainObject = $.isPlainObject,\n support = kendo.support,\n encode = kendo.htmlEncode,\n\n BREADCRUMB = \".kendoBreadcrumb\",\n\n ARIA_HIDDEN = \"aria-hidden\",\n ARIA_LABEL = \"aria-label\",\n\n CLICK = \"click\",\n FOCUS = \"focus\",\n BLUR = \"blur\",\n KEYDOWN = \"keydown\",\n CHANGE = \"change\",\n DOT = \".\";\n\n var breadcrumbStyles = {\n widget: \"k-breadcrumb k-breadcrumb-wrap\",\n overlay: \"k-breadcrumb-container\",\n textbox: \"k-input-inner\",\n textboxWrapper: \"k-textbox k-input k-input-md k-rounded-md k-input-solid\",\n link: \"k-breadcrumb-link\",\n item: \"k-breadcrumb-item\",\n delimiter: \"k-breadcrumb-delimiter-icon\",\n rootItem: \"k-breadcrumb-root-item\",\n rootLink: \"k-breadcrumb-root-link\",\n overflowIcon: \"k-breadcrumb-overflow-icon\",\n focused: \"k-focus\",\n hidden: \"k-hidden\",\n inputWrapper: \"k-breadcrumb-input-container\"\n };\n\n var Breadcrumb = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n options = options || {};\n\n Widget.fn.init.call(that, element, options);\n\n that._wrapper();\n\n if (options.editable) {\n that._editable();\n that._tabindex();\n }\n\n that.wrapper.on(CLICK + BREADCRUMB, \"a:not(.k-disabled)\", that._click.bind(that));\n\n if (options.value || options.bindToLocation || !options.items) {\n that._value();\n } else if (options.items) {\n that.items(options.items);\n }\n\n that._applyCssClasses();\n\n that._resizeHandler = kendo.onResize(function() {\n that.resize(true);\n });\n },\n\n options: {\n editable: false,\n navigational: false,\n bindToLocation: false,\n items: null,\n name: \"Breadcrumb\",\n size: \"medium\",\n gap: 0,\n rootIcon: \"home\",\n delimiterIcon: \"chevron-right\",\n messages: {\n rootTitle: \"Go to root\"\n }\n },\n\n events: [ CHANGE, CLICK ],\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n kendo.unbindResize(that._resizeHandler);\n\n that.wrapper\n .add(that.wrapper.find(\"input\"))\n .add(that.wrapper.find(\"a\"))\n .off(BREADCRUMB);\n },\n\n items: function(items) {\n var that = this;\n\n if (items === undefined$1) {\n return that.options.items;\n }\n\n that.options.items = items;\n that._segments = items;\n that.refresh();\n },\n\n _update: function(val) {\n var that = this;\n\n if (val !== that.value()) {\n that._generateSegments(val);\n that.refresh();\n that.trigger(CHANGE, { sender: this, value: val });\n }\n },\n\n _generateSegments: function(value) {\n var that = this,\n options = that.options,\n items = options.items,\n path, segments;\n\n segments = that._split(value);\n\n if (!items) {\n that.options.items = that._segments = segments;\n return;\n }\n\n that._segments = [];\n\n for (var i = 0; i < segments.length; i++) {\n path = that._path(items.slice(0, i + 1));\n\n if (path !== \"\" && value.indexOf(path) > -1 && items[i] && items[i].text === segments[i]) {\n that._segments.push(items[i]);\n } else {\n that._segments.push(segments[i]);\n }\n }\n },\n\n _click: function(e) {\n var that = this,\n options = that.options,\n item = $(e.target).closest(DOT + breadcrumbStyles.item),\n previousDomItems = item.prevAll().addBack(),\n previousItems = that._getItems(previousDomItems),\n path = that._path(previousItems),\n segment = that._segments[item.index()];\n\n if (!options.navigational) {\n e.preventDefault();\n }\n\n if (!that.trigger(CLICK, { sender: that, originalEvent: e, isRoot: segment.type === \"rootitem\", item: segment })) {\n that._update(path);\n }\n },\n\n _getItems: function(items) {\n var that = this;\n\n return $.map(items, function(item) {\n return that._segments[$(item).index()] || item.innerText;\n });\n },\n\n _edit: function() {\n var that = this,\n input = that.input;\n\n that.oldValue = that.value();\n that.inputWrapper.css(\"height\", that.wrapper.height());\n that.overlay.hide();\n that.input.val(that.value());\n that.input.attr(ARIA_HIDDEN, false);\n that.inputWrapper.show();\n\n setTimeout(function() {\n input.select();\n });\n },\n\n _blur: function(shouldRestoreValue) {\n var that = this,\n input = that.input,\n inputWrapper = that.inputWrapper,\n wrapper = that.wrapper,\n overlay = that.overlay,\n val = input.val().replace(/\\/{2,}/g, \"/\");\n\n if (overlay.is(\":visible\")) {\n return;\n }\n\n if (shouldRestoreValue) {\n val = that.oldValue;\n }\n\n input.attr(ARIA_HIDDEN, true);\n inputWrapper.hide();\n overlay.show();\n input.val(\"\");\n that._update(val);\n wrapper.removeClass(breadcrumbStyles.focused);\n },\n\n _keydown: function(e) {\n var that = this,\n key = e.keyCode,\n isEnter = key === kendo.keys.ENTER,\n isEsc = key === kendo.keys.ESC;\n\n if (isEnter || isEsc) {\n that._blur(isEsc);\n\n setTimeout(function() {\n that.overlay.find(\"a\").first().trigger(\"focus\");\n });\n }\n },\n\n isNavigational: function(target) {\n var canNavigate =\n target.hasClass(breadcrumbStyles.textbox) ||\n target.closest(DOT + breadcrumbStyles.item);\n\n if (target[0] === this.wrapper[0]) {\n return false;\n }\n\n return canNavigate && !target.hasClass(\"k-breadcrumb-last-item\");\n },\n\n _wrapperKeydown: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (ev.keyCode === kendo.keys.ENTER && !isNavigational) {\n that._edit();\n }\n },\n\n _wrapperClick: function(ev) {\n var that = this,\n target = $(ev.target),\n isNavigational = that.isNavigational(target);\n\n if (!isNavigational) {\n this._edit();\n }\n },\n\n _wrapperFocus: function(ev) {\n $(ev.target).addClass(breadcrumbStyles.focused);\n },\n\n _wrapperBlur: function(ev) {\n $(ev.target).removeClass(breadcrumbStyles.focused);\n },\n\n _wrapper: function() {\n var that = this,\n element = this.element,\n elementIsInput = element.is(\"input\"),\n inputWrapper = $(\"
    \");\n\n that.wrapper = elementIsInput ? element\n .wrap($(\"