{"version":3,"sources":["kendo.grid.js"],"names":["f","define","$","normalizeText","text","String","replace","REPLACE_REGEX","SPACE","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","LRUCache","DEFAULT_OPTIONS","defaultMeasureBox","window","kendo","util","Class","extend","init","size","this","_size","_length","_map","put","value","map","entry","_head","_tail","newer","older","get","baselineMarkerSize","document","createElement","cssText","options","_cache","styleKey","cacheKey","cachedResult","baselineMarker","textStr","box","_baselineMarker","cloneNode","textContent","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","marker","deepExtend","jQuery","amd","a1","a2","a3","undefined","attrEquals","attrName","attrValue","attr","groupCells","count","Array","stringifyAttributes","attributes","result","STRING","cursor","context","add","css","reorder","selector","source","dest","before","idx","sourceIndex","eq","appendTo","elements","lockedContent","content","filter","find","attachCustomCommandEvent","container","commands","command","commandName","isArray","isPlainObject","click","name","on","CLICK","NS","proxy","normalizeColumns","columns","encoded","hide","column","hidden","uid","field","isVisible","addHiddenStyle","footerAttributes","headerAttributes","guid","id","columnParent","parents","columnParents","inserted","splice","setColumnVisibility","visible","method","removeHiddenStyle","isCellVisible","display","visibleColumns","grep","toJQuery","toArray","updateCellRowSpan","cell","sourceLockedColumnsCount","lockedColumnDepth","depth","lockedColumns","nonLockedColumnDepth","nonLockedColumns","rowSpan","moveCellsBetweenContainers","sources","target","leafs","destination","groups","rows","sourcesDepth","targetDepth","children","insertAfter","last","addRowSpanValue","moveCells","updateCellIndex","thead","offset","position","allColumns","cells","leafColumns","el","hasClass","columnPosition","row","temp","max","sourcePosition","columnVisiblePosition","ths","t","append","concat","cellCounts","findParentColumnWithChildren","index","rtl","locked","findReorderTarget","parent","parentColumns","inArray","flatColumnsInDomOrder","flatColumns","targetParentContainerIndex","targetIndex","hiddenLeafColumnsCount","counter","columnsWidth","cols","colWidth","indexOf","parseInt","removeRowSpanValue","removeEmptyRows","emptyRowsCount","remove","mapColumnToCellRows","rowIndex","visibleNonLockedColumns","visibleLockedColumns","visibleLeafColumns","leafDataCells","indexAttr","a","b","indexA","indexB","parentColumnsCells","parentCellsWithChildren","prevCells","parentCell","closest","headerRows","level","prevAll","colSpan","Math","getAttribute","childColumnsCells","child","colSpanAttr","next","appendContent","tbody","table","html","empty","placeholder","tmp","tbodySupportsInnerHtml","innerHTML","firstChild","replaceChild","normalizeCols","hasDetails","colgroup","format","is","prepend","browser","msie","version","setTimeout","normalizeHeaderCells","len","lastIndex","th","insertBefore","convertToObject","array","item","formatGroupValue","columnValues","isForeignKey","groupValue","htmlEncode","setCellVisibility","state","pad","nonDataCellsRegExp","test","className","hideColumnCells","columnIndex","groupRows","data","hasSubgroups","items","groupFooters","aggregates","showColumnCells","updateColspan","toAdd","toRemove","num","tableWidth","syncTableHeight","table1","table2","lockedHeigth","tableHeigth","diff","filterRowRegExp","adjustRowHeight","row1","row2","offsetHeight1","offsetHeight2","getCommand","focusTable","direct","scrollTop","scrollLeft","edge","setActive","e","focus","one","preventDefault","isColumnEditable","model","selectable","editable","isInputElement","element","tableClick","currentTarget","isHeader","lockedTable","headerTable","lockedHeader","isInput","currentTable","support","touch","roleSelector","_setCurrent","navigatable","isIE8","_activeElement","contains","isInEdit","groupRowBuilder","colspan","ARIALABEL","COLLAPSE","groupRowLockedContentBuilder","ui","DataSource","ObservableObject","tbodyInnerHtml","activeElement","Widget","outerWidth","_outerWidth","outerHeight","_outerHeight","keys","prototype","isFunction","isEmptyObject","math","PROGRESS","ERROR","DATA_CELL","SELECTION_CELL_SELECTOR","NAVROW","NAVCELL","ITEMROW","FIRSTITEMROW","LASTITEMROW","FIRSTNAVITEM","HEADERCELLS","EDIT","BEFOREEDIT","SAVE","REMOVE","DETAILINIT","FILTERMENUINIT","COLUMNMENUINIT","FILTERMENUOPEN","COLUMNMENUOPEN","CELLCLOSE","CHANGE","COLUMNHIDE","COLUMNSHOW","SAVECHANGES","DATABOUND","DETAILEXPAND","DETAILCOLLAPSE","ITEM_CHANGE","PAGE","PAGING","SCROLL","SYNC","FOCUSED","FOCUSABLE","SELECTED","CHECKBOX","CHECKBOXINPUT","NORECORDSCLASS","COLUMNRESIZE","COLUMNREORDER","COLUMNLOCK","COLUMNUNLOCK","NAVIGATE","HEIGHT","TABINDEX","FUNCTION","BOTTOM","CONTAINER_FOR","FIELD","INPUT","INCELL","INLINE","UNIQUE_ID","DELETECONFIRM","NORECORDS","CONFIRMDELETE","CANCELDELETE","EXPAND","formatRegExp","templateHashRegExp","whitespaceRegExp","RegExp","COMMANDBUTTONTMPL","SELECTCOLUMNTMPL","SELECTCOLUMNHEADERTMPL","isRtl","isIE7","VirtualScrollable","that","fn","call","_refreshHandler","refresh","setDataSource","dataSource","wrap","unbind","bind","useRanges","itemHeight","noop","prefetch","maxScrollHeight","events","destroy","wrapper","verticalScrollbar","off","drag","scrollbar","overflow","first","_wheelScroll","kineticScrollNeeded","UserEvents","global","allowSelection","start","sender","capture","move","y","delta","x","_scroll","ctrlKey","wheelDeltaY","clientHeight","scrollHeight","delayLoading","rowHeight","skip","_rangeStart","innerHeight","isScrollingUp","_scrollbarTop","firstItemIndex","floor","lastItemIndex","ceil","_preventScroll","_scrollTop","_scrolling","_fetch","trigger","_scrollingTimeout","clearTimeout","_page","take","scrollToTop","_scrollTo","scrollToBottom","_scrollWrapperToTop","_scrollWrapperToBottom","_isScrolledToTop","_isScrolledToBottom","itemIndex","rangeStart","_isElementVisible","_isElementVisibleInWrapper","halfHeight","top","abs","pageSize","scrollIntoView","containerHeight","containerScroll","elementOffset","elementHeight","scrollingUp","currentSkip","fetching","prefetchAt","webkitCorrection","webkit","min","total","_fetching","callback","_timeout","inRange","progress","range","repaintScrollbar","shouldScrollWrapper","maxHeight","wrapperElement","wasScrolledToBottom","addScrollBarHeight","scrollWidth","totalHeight","action","cancel","page","defaultCommands","create","iconClass","save","edit","update","canceledit","excel","pdf","Grid","DataBoundWidget","_events","_element","_aria","_columns","_dataSource","_tbody","_pageable","_thead","_groupable","_toolbar","_setContentHeight","_templates","_navigatable","_selectable","_clipboard","_details","_editable","_attachCustomCommandsEvent","_minScreenSupport","autoBind","fetch","_group","_groups","_footer","addClass","_resizeHandler","resize","notify","scrollable","virtual","groupable","virtualScrollable","toolbar","filterable","sortable","allowCopy","pageable","persistSelection","rowTemplate","altRowTemplate","noRecords","resizable","reorderable","columnMenu","detailTemplate","columnResizeHandleWidth","mobile","messages","cancelDelete","confirmation","confirmDelete","expandCollapseColumnHeader","_angularItems","_destroyColumnAttachments","_navigatableTables","pager","kendoGroupable","clearArea","_selectedIds","copyHandler","updateClipBoardState","clearAreaHandler","_resizeUserEvents","_resizeHandleDocumentClickHandler","_destroyVirtualScrollable","_destroyEditable","_progressHandler","_errorHandler","_removeLockedContainers","pane","minScreenResizeHandler","_draggableInstance","lockedRowTemplate","lockedAltRowTemplate","footerTemplate","groupFooterTemplate","lockedGroupFooterTemplate","noRecordsTemplate","scrollables","footer","lockedFooter","_groupableClickHandler","_groupRows","_setContentWidthHandler","getOptions","initialData","_data","group","aggregate","transport","$angular","setOptions","mobileWrapper","currentOptions","_isMobile","after","removeClass","_setEvents","_items","tr","dataItems","n","resizeHandle","angular","each","filterMenu","_cellId","_hasDetails","_wrapper","_createResizeHandle","left","headerWrap","ieCorrection","firefoxCorrection","indicatorWidth","mozilla","show","_autoFitLeafColumn","_positionColumnResizeHandle","lockedHead","getPageZoomStyle","bodyZoom","docZoom","parseFloat","documentElement","isNaN","clientX","winScrollLeft","_resizeHandleDocumentClick","_hideResizeHandle","_positionColumnResizeHandleTouch","threshold","hold","_resizable","columnStart","columnWidth","columnMinWidth","gridWidth","isLocked","col","isMobile","mobileOS","Resizable","handle","hint","header","contentTable","location","minResizableWidth","constrain","totalWidth","rtlMultiplier","currentWidth","_footerWidth","resizeend","newWidth","oldWidth","_applyLockedContainersWidth","_syncLockedContentHeight","_syncLockedHeaderHeight","_draggable","kendoDraggable","autoScroll","dragstart","not","dragend","title","paddingLeft","paddingRight","lineHeight","paddingTop","paddingBottom","_reorderable","kendoReorderable","draggable","dragOverContainers","lockable","inSameContainer","change","oldIndex","newIndex","reorderColumn","_reorderHeader","sourceLockedColumns","targetLockedColumns","destPosition","_reorderContent","footerCol","lockedRows","visibleSources","destIndex","colSourceIndex","colDest","lockedCount","headerCol","prev","_hasFilterRow","leafIndex","autoFitColumn","contentDiv","footerTable","j","tables","oldColumnWidth","newColumnWidth","visibleLocked","notGroupOrHierarchyCol","notGroupOrHierarchyVisibleCell","lockChanged","sourceColumns","destColumn","_updateColumnCellIndex","_updateTablesWidth","_updateFirstColumnClass","lockColumn","unlockColumn","cellIndex","td","lockedColumnOffset","_modelForContainer","_editMode","getByUid","mode","multiple","handler","_editContainer","end","closeCell","_scrollVirtualWrapper","isLockedCell","has","blur","editCell","timer","editRow","_isVirtualInlineEditable","stopPropagation","removeRow","_confirmation","_attachModelChange","_shouldClearEditableState","_clearEditableState","kendoEditable","fields","editor","values","skipFocus","_isVirtualIncellEditable","_editableState","_relatedRow","_adjustLockedHorizontalScrollBar","clientWidth","touchScroller","_adjustRowsHeight","_syncLockedFooterHeight","editView","_editCancelClickHandler","_editUpdateClickHandler","_detachModelChange","_destroyEditView","close","_actionSheet","purge","navigate","_modelChangeHandler","_modelChange","isCancel","type","_displayCell","ns","dataItem","storage","settings","Template","templateSettings","tmpl","template","_cellTmpl","_removeRow","cancelRow","sync","_createPopupEditor","_createInlineEditor","_editCancelClick","_editUpdateClick","saveRow","currentIndex","updateText","cancelText","tempCommand","unescape","_createButton","kendoWindow","modal","userTriggered","clearContainer","_openPopUpEditor","_editAnimation","center","open","Editable","isScrolledToBottom","cancelChanges","_isVirtualEditable","_restoreVirtualView","_displayRow","valid","deferred","Deferred","reject","promise","resolve","related","newRow","nextRow","angularElements","angularData","isSelected","isAlt","replaceWith","select","_showMessage","actionSheet","view","ActionSheet","cancelTemplate","popup","_actionSheetPopupOptions","confirm","_virtualPageToTop","saveChanges","addRow","createAt","createAtBottom","toLowerCase","virtualEditable","serverPaging","totalPages","_virtualAddRow","insert","_editModel","_firstEditableColumnIndex","_virtualAddRowAtBottom","_virtualAddRowAtTop","at","_virtualPageToBottom","_virtualPage","currentRangeStart","initialItemHeight","scrolledItemsCount","newScrollbarTop","_toolbarTmpl","prependTo","saveAsExcel","saveAsPDF","attributeClassMatch","Error","split","match","_hasFooters","groupRow","collapseGroup","expandGroup","_isLocked","_attachGroupable","draggables","enabled","Groupable","groupContainer","draggableElements","allowDrag","endless","_endlessPageSize","_continuousItems","lockedItems","nonLockedItems","apply","slice","multi","notString","dataSourceOptions","schema","Selectable","parseOptions","aria","_persistSelectedRows","useAllItems","relatedTarget","continuousItems","keyCode","SPACEBAR","shiftKey","clear","_lastActive","LEFT","RIGHT","UP","DOWN","selectRange","_firstSelectee","grid","stopImmediatePropagation","copySelection","areaClipBoard","val","getTSV","Event","metaKey","getSelection","selection","createRange","opacity","cellsOffset","lockedCols","inLockedArea","rowsOffset","selected","delimeter","onlyVisible","cellText","any","hideMinScreenCols","screenWidth","innerWidth","screen","_iterateMinScreenCols","minWidth","minScreenWidth","hideColumn","showColumn","clearSelection","_deselectCheckRows","prop","_toggleHeaderCheckState","checked","allRows","modelId","selectedViewIds","selectedKeyNames","property","ids","_updateCurrentAttr","headerId","removeAttr","_current","_scrollCurrent","tableContainer","isInLockedContainer","isInContent","scrollableContainer","addBack","_rowVirtualIndex","preventTrigger","_lastCellIndex","_removeCurrent","elementToLowercase","tagName","isHorizontal","elementOffsetDir","containerOffsetDir","bottomDistance","offsetLeft","dataTables","headerTables","_openHeaderMenu","_tableFocus","_tableBlur","_tableKeyDown","altKey","_setTabIndex","handled","requestInProgress","canHandle","isDefaultPrevented","_moveUp","_moveDown","_moveRight","_moveLeft","PAGEDOWN","_handlePageDown","PAGEUP","_handlePageUp","HOME","_handleHome","END","_handleEnd","ENTER","F2","_handleEnterKey","ESC","_handleEscKey","TAB","_handleTabKey","collapseRow","_moveColumn","_prevHorizontalCell","_tabNext","_horizontalContainer","expandRow","_nextHorizontalCell","nextAll","_prevVerticalCell","_verticalContainer","_nextVerticalCell","isLeft","ctrl","rowContainer","isInLockedTable","isInBody","isInCell","_handleEditing","active","_toggleCurrent","link","focusable","originalIndex","_currentDataIndex","lockedColumnsCount","tmpIndex","currentRowCells","hiddenColumns","up","step","right","back","switchRow","isEdited","isIE","oldIE","editContainer","opera","triggerHandler","_initMobile","Pane","align","effect","_scrollable","originalPageSize","hasVirtualScroll","_createVirtualScrollable","_endlessFetchInProgress","_skipRerenderItemsCount","movable","_averageRowHeight","_restoreEditableState","scroll","_focusEditable","_onVirtualPaging","_cacheEditableState","_isVirtualPopupEditable","editableState","editedModel","inlineMode","incellMode","_getByUid","editedField","_canFocusEditable","widget","widgetInstance","_renderNoRecordsContent","noRecordsElement","_setContentWidth","expander","hiddenDivClass","hiddenDiv","footerWrap","contentWidth","nonLockedCols","nonLockedColsWidth","isGridHeightSet","initialHeight","newHeight","currentRowHeight","itemsCount","_rowHeight","_sum","_measures","_requestStart","_error","_progress","relatedRow","selectableRow","childCells","originalCells","Pager","_wrapFooter","_appendLockedColumnFooter","footerRow","_appendCols","_columnMenu","menu","menuOptions","hasMultiColumnHeaders","initCallback","openCallback","closeCallback","sortHandler","filterHandler","compare","forceUnique","checkSource","owner","filtering","kendoColumnMenu","_headerCells","_filterable","columnFilterable","filterInit","filterOpen","kendoFilterMultiCheck","kendoFilterMenu","_filterRow","rowheader","suggestDataSource","operators","customDataSource","cellOptions","_updateHeader","delay","inputWidth","suggestionOperator","minLength","dataTextField","operator","showOperators","kendoFilterCell","_sortable","sorterInstance","kendoColumnSorter","initialColumns","_checkboxClick","_headerCheckboxClick","checkBox","parentGrid","getKendoGrid","isSelecting","_tmpl","alt","skipGroupCells","paramName","fieldAttr","dirtyCellTemplate","expr","_dirtyCellTemplate","_headerCellText","headerTemplate","_dirtyIndicatorTemplate","stringify","useWithBlock","columnLeafs","columnsLocked","_detailTmpl","_footerTmpl","g","_noRecordsTmpl","defaultTemplate","scrollableNoGridHeightStyles","templateName","rowClass","scope","fieldsMap","_emptyAggregates","templateFunctionStorage","templateFunctionCount","hasFiltering","columnsWithoutFiltering","detailRow","button","expanding","masterRow","ariaLabelText","toggleClass","detailCell","toggle","correctIdx","classesRegEx","sectionRowIndex","_createHeaderCells","_appendLockedColumnContent","spanIdx","skipHiddenCount","colOffset","detach","lockedCells","_appendLockedColumnHeader","trFilter","hasFilterRow","filterCellOffset","filterCells","leafColumnsCount","filtercellCells","filterRow","existingFilterRow","syncHeight","hasLockedColumns","hasTHead","_prepareColumns","_updateCols","_retrieveFirstColumn","parentRow","childRow","totalColSpan","_updateHeaderCols","_updateLockedCols","_autoColumns","toJSON","_rowsHtml","templates","_groupRowHtml","groupHeaderBuilder","skipColspan","footerData","groupHeaderTemplate","footerDefaults","_groupAggregatesDefaultObject","groupItems","headerData","toHide","groupToCollapse","showFooter","footerCount","relatedGroup","_groupToCollapse","footersVisibility","groupsCount","pop","_firstDataItem","grouped","headerCellIndex","_setParentsVisibility","predicate","p","_resize","force","_isActiveInTable","isCurrentInHeader","hasCheckBoxColumn","_progressTimeOut","_renderContent","_renderLockedContent","_togglePagerVisibility","_restoreCurrent","contentResized","resetTouchEvents","_muteAngularRebind","_restoreSelection","selectedRows","dataItemKey","cmd","_cleanupDetailItems","_angularGroupItems","_angularGroupFooterItems","endlessAppend","alwaysVisible","rows2","containers","containersLength","heights","ExcelMixin","PDFMixin","_drawPDF_autoPageBreak","allPages","startingPage","draw","cont","_destructive","pageNumber","pageNum","drawing","drawDOM","clone","always","then","fail","err","renderPage","origBody","_initPDFProgress","_drawPDF","exportPage","doc","_drawPDFShadow","avoidLinks","done","args","paperSize","Group","pb","loading","kendoProgressBar","chunkCount","plugin"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,qBAAsB,cAAeD,IAC9C,YACG,SAAUE,GAqDP,QAASC,GAAcC,GACnB,OAAcA,EAAPC,IAAaC,QAAQC,EAAeC,GAE/C,QAASC,GAAUC,GAAnB,GAEaC,GADLC,IACJ,KAASD,IAAOD,GACZE,EAAMC,KAAKF,EAAMD,EAAOC,GAE5B,OAAOC,GAAME,OAAOC,KAAK,IAE7B,QAASC,GAAQC,GAAjB,GAEaC,GADLC,EAAO,UACX,KAASD,EAAI,EAAGA,EAAID,EAAIG,SAAUF,EAC9BC,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACzEA,GAAQF,EAAII,WAAWH,EAE3B,OAAOC,KAAS,EAEpB,QAASG,KACL,OACIC,MAAO,EACPC,OAAQ,EACRC,SAAU,GA0DlB,QAASC,GAAYtB,EAAMuB,EAAOC,GAC9B,MAAOC,GAAYC,QAAQC,QAAQ3B,EAAMuB,EAAOC,GAtIvD,GAEOI,GAiDAzB,EACAC,EA0BAyB,EACAC,EAKAL,CAnFJM,QAAOC,MAAMC,KAAOF,OAAOC,MAAMC,SAC7BL,EAAWI,MAAME,MAAMC,QACvBC,KAAM,SAAUC,GACZC,KAAKC,MAAQF,EACbC,KAAKE,QAAU,EACfF,KAAKG,SAETC,IAAK,SAAUnC,EAAKoC,GAAf,GACGC,GAAMN,KAAKG,KACXI,GACAtC,IAAKA,EACLoC,MAAOA,EAEXC,GAAIrC,GAAOsC,EACNP,KAAKQ,OAGNR,KAAKS,MAAMC,MAAQH,EACnBA,EAAMI,MAAQX,KAAKS,MACnBT,KAAKS,MAAQF,GAJbP,KAAKQ,MAAQR,KAAKS,MAAQF,EAM1BP,KAAKE,SAAWF,KAAKC,OACrBK,EAAIN,KAAKQ,MAAMvC,KAAO,KACtB+B,KAAKQ,MAAQR,KAAKQ,MAAME,MACxBV,KAAKQ,MAAMG,MAAQ,MAEnBX,KAAKE,WAGbU,IAAK,SAAU3C,GACX,GAAIsC,GAAQP,KAAKG,KAAKlC,EACtB,IAAIsC,EAeA,MAdIA,KAAUP,KAAKQ,OAASD,IAAUP,KAAKS,QACvCT,KAAKQ,MAAQD,EAAMG,MACnBV,KAAKQ,MAAMG,MAAQ,MAEnBJ,IAAUP,KAAKS,QACXF,EAAMI,QACNJ,EAAMI,MAAMD,MAAQH,EAAMG,MAC1BH,EAAMG,MAAMC,MAAQJ,EAAMI,OAE9BJ,EAAMI,MAAQX,KAAKS,MACnBF,EAAMG,MAAQ,KACdV,KAAKS,MAAMC,MAAQH,EACnBP,KAAKS,MAAQF,GAEVA,EAAMF,SAIrBxC,EAAgB,eAChBC,EAAQ,IA0BRyB,GAAoBsB,mBAAoB,GAEpB,mBAAbC,YACPtB,EAAoBsB,SAASC,cAAc,OAC3CvB,EAAkBP,MAAM+B,QAAU,wQAElC7B,EAAcO,MAAME,MAAMC,QAC1BC,KAAM,SAAUmB,GACZjB,KAAKkB,OAAS,GAAI5B,GAAS,KAC3BU,KAAKiB,QAAUzD,EAAEqC,UAAWN,EAAiB0B,IAEjD5B,QAAS,SAAU3B,EAAMuB,EAAOgC,GAAvB,GAODE,GACAC,EACAC,EAIAtB,EACAb,EACAoC,EACKrD,EACDoC,EAKJkB,CAlBJ,IAHgB,SAAZN,IACAA,OAECvD,EACD,MAAOkB,IAKX,IAHIuC,EAAWpD,EAAUkB,GACrBmC,EAAW9C,EAAQZ,EAAOyD,GAC1BE,EAAerB,KAAKkB,OAAON,IAAIQ,GAE/B,MAAOC,EAEPtB,GAAOnB,IACPM,EAAa+B,EAAQO,KAAOhC,EAC5B8B,EAAiBtB,KAAKyB,kBAAkBC,WAAU,EACtD,KAASzD,IAAOgB,GACRoB,EAAQpB,EAAMhB,GACG,SAAVoC,IACPnB,EAAWD,MAAMhB,GAAOoC,EAgBhC,OAbIkB,GAAUN,EAAQxD,iBAAkB,EAAQA,EAAcC,GAAeA,EAAPC,GACtEuB,EAAWyC,YAAcJ,EACzBrC,EAAW0C,YAAYN,GACvBR,SAASe,KAAKD,YAAY1C,GACtBqC,EAAQ7C,SACRqB,EAAKlB,MAAQK,EAAW4C,YAAc9B,KAAKiB,QAAQJ,mBACnDd,EAAKjB,OAASI,EAAW6C,aACzBhC,EAAKhB,SAAWuC,EAAeU,UAAYhC,KAAKiB,QAAQJ,oBAExDd,EAAKlB,MAAQ,GAAKkB,EAAKjB,OAAS,GAChCkB,KAAKkB,OAAOd,IAAIgB,EAAUrB,GAE9Bb,EAAW+C,WAAWC,YAAYhD,GAC3Ba,GAEX0B,gBAAiB,WACb,GAAIU,GAASrB,SAASC,cAAc,MAEpC,OADAoB,GAAOlD,MAAM+B,QAAU,0DAA4DhB,KAAKiB,QAAQJ,mBAAqB,eAAiBb,KAAKiB,QAAQJ,mBAAqB,uBACjKsB,KAGfhD,EAAYC,QAAU,GAAID,GAI1BO,MAAM0C,WAAW1C,MAAMC,MACnBL,SAAUA,EACVH,YAAaA,EACbH,YAAaA,EACbjB,UAAWA,EACXO,QAASA,EACTb,cAAeA,KAErBgC,OAAOC,MAAM2C,SACC,kBAAV9E,SAAwBA,OAAO+E,IAAM/E,OAAS,SAAUgF,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUlF,EAAGC,QACVA,OAAO,cACH,aACA,qBACA,iBACA,eACA,mBACA,mBACA,kBACA,cACA,mBACA,iBACA,oBACA,kBACA,2BACA,oBACA,cACA,cACA,oBACA,aACDD,IACL,WAysNE,MA1mNC,UAAUE,EAAGkF,GA6RV,QAASC,GAAWC,EAAUC,GAC1B,MAAO,IAAMnD,GAAMoD,KAAKF,GAAY,IAAMC,EAAY,IAE1D,QAASE,GAAWC,GAChB,MAAWC,OAAMD,EAAQ,GAAG3E,KAAK,wCAErC,QAAS6E,GAAoBC,GACzB,GAAIL,GAAMM,EAAS,GACnB,IAAID,EAAY,CACZ,SAAWA,KAAeE,GACtB,MAAOF,EAEX,KAAKL,IAAQK,GACTC,GAAUN,EAAO,KAAOK,EAAWL,GAAQ,IAGnD,MAAOM,GAiDX,QAASE,GAAOC,EAASlD,GACrB7C,EAAE,oCAAqC+F,GAASC,IAAI1C,SAASe,MAAM4B,IAAI,SAAUpD,GAErF,QAASqD,GAAQC,EAAUC,EAAQC,EAAMC,EAAQd,GAAjD,GAIae,GAHLC,EAAcJ,CAGlB,KAFAA,EAASpG,IACTwF,EAAQA,GAAS,EACRe,EAAM,EAAGA,EAAMf,EAAOe,IAC3BH,EAASA,EAAOJ,IAAIG,EAASM,GAAGD,EAAcD,GAE/B,iBAARF,GACPD,EAAOE,EAAS,eAAiB,eAAeH,EAASM,GAAGJ,IAE5DD,EAAOM,SAASL,GAGxB,QAASM,GAASC,EAAeC,EAASC,GACtC,MAAO9G,GAAE4G,GAAeZ,IAAIa,GAASE,KAAKD,GAE9C,QAASE,GAAyBjB,EAASkB,EAAWC,GAClD,GAAIX,GAAKrF,EAAQiG,EAASC,CAE1B,KADAF,EAAYG,GAAQH,GAAyBA,GAAZA,GAC5BX,EAAM,EAAGrF,EAASgG,EAAShG,OAAQqF,EAAMrF,EAAQqF,IAClDY,EAAUD,EAASX,GACfe,GAAcH,IAAYA,EAAQI,QAClCH,EAAcD,EAAQK,MAAQL,EAAQjH,KACtC+G,EAAUQ,GAAGC,GAAQC,GAAI,aAAeP,GAAe,IAAIhH,QAAQ,MAAO,KAAOgH,YAAaA,GAAeQ,GAAMT,EAAQI,MAAOxB,KAI9I,QAAS8B,GAAiBC,EAASC,EAASC,GACxC,MAAOlF,IAAIgF,EAAS,SAAUG,GAAV,GAEZC,GAUAC,CAEJ,OAbAF,SAAgBA,KAAWpC,IAAWuC,MAAOH,GAAWA,EAEnDI,EAAUJ,KAAWD,IACtBC,EAAOtC,WAAa2C,EAAeL,EAAOtC,YAC1CsC,EAAOM,iBAAmBD,EAAeL,EAAOM,kBAChDN,EAAOO,iBAAmBF,EAAeL,EAAOO,kBAChDN,GAAS,GAETD,EAAOH,UACPG,EAAOH,QAAUD,EAAiBI,EAAOH,QAASC,EAASG,IAE3DC,EAAMjG,GAAMuG,OAChBR,EAAOO,iBAAmBnG,IAASqG,GAAIP,GAAOF,EAAOO,kBAC9CnG,IACH0F,QAASA,EACTG,OAAQA,GACTD,KAGX,QAASU,GAAaV,EAAQH,GAC1B,GAAIc,KAEJ,OADAC,GAAcZ,EAAQH,EAASc,GACxBA,EAAQA,EAAQ1H,OAAS,GAEpC,QAAS2H,GAAcZ,EAAQH,EAASc,GAAxC,GAEarC,GAIGuC,CAJZ,KADAF,EAAUA,MACDrC,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IAAO,CAC3C,GAAI0B,IAAWH,EAAQvB,GACnB,OAAO,CACJ,IAAIuB,EAAQvB,GAAKuB,QAAS,CAG7B,GAFIgB,EAAWF,EAAQ1H,OACvB0H,EAAQjI,KAAKmH,EAAQvB,IAChBsC,EAAcZ,EAAQH,EAAQvB,GAAKuB,QAASc,GAG7C,OAAO,CAFPA,GAAQG,OAAOD,EAAUF,EAAQ1H,OAAS4H,IAMtD,OAAO,EAEX,QAASE,GAAoBf,EAAQgB,GACjC,GAAIC,GAASD,EAAUE,EAAoBb,CAC3CL,GAAOC,QAAUe,EACjBhB,EAAOtC,WAAauD,EAAOjB,EAAOtC,YAClCsC,EAAOM,iBAAmBW,EAAOjB,EAAOM,kBACxCN,EAAOO,iBAAmBU,EAAOjB,EAAOO,kBAE5C,QAASY,KACL,MAA8B,SAAvB5G,KAAKf,MAAM4H,QAEtB,QAAShB,GAAUJ,GACf,MAAOqB,IAAgBrB,IAAS/G,OAAS,EAE7C,QAASoI,GAAexB,GACpB,MAAOyB,IAAKzB,EAAS,SAAUG,GAC3B,GAAIrC,IAAUqC,EAAOC,MAIrB,OAHItC,IAAUqC,EAAOH,UACjBlC,EAAS0D,EAAerB,EAAOH,SAAS5G,OAAS,GAE9C0E,IAGf,QAAS4D,GAAS7C,GACd,MAAO3G,GAAE2G,GAAU7D,IAAI,WACnB,MAAON,MAAKiH,YAGpB,QAASC,GAAkBC,EAAM7B,EAAS8B,GAA1C,GACQC,GAAoBC,EAAMC,EAAcjC,IACxCkC,EAAuBF,EAAMG,EAAiBnC,IAC9CoC,EAAUP,EAAKO,OAGXP,GAAKO,QAFTN,EACIC,EAAoBG,EACLE,GAAWL,EAAoBG,IAAyB,EAExDE,GAAWF,EAAuBH,GAGjDA,EAAoBG,EACLE,GAAWL,EAAoBG,GAE/BE,GAAWF,EAAuBH,IAAsB,EAInF,QAASM,GAA2BC,EAASC,EAAQC,EAAOxC,EAASb,EAAWsD,EAAaC,GAA7F,GAIYjF,GACAkF,EAJJC,EAAeZ,EAAMM,GACrBO,EAAcb,GAAOO,GACrBK,GAAeC,IACXpF,EAAiBE,MAAM+E,EAAS,GAAG3J,KAAK,6DACxC4J,EAAOF,EAAYK,SAAS,uBAChC5K,EAAMyF,MAAMiF,EAAeC,EAAc,GAAG9J,KAAK,OAAS0E,EAAa,UAAUsF,YAAYJ,EAAKK,SAEtGC,EAAgBR,EAAaG,EAAeC,GAC5CK,EAAUV,EAAOxC,EAASb,EAAWsD,GAEzC,QAASU,GAAgBC,EAAOpD,EAASqD,GAAzC,GAEQC,GACAzB,EACA0B,EAEAC,EACAb,EACA3D,EAIKP,EAASrF,CAAlB,KAXAiK,EAASA,GAAU,EAGfE,EAAavD,EACjBA,EAAUyD,EAAYzD,GAClBwD,KACAb,EAAOS,EAAMnE,KAAK,0BAClBD,EAAS,WACT,GAAI0E,GAAKxL,EAAEwC,KACX,QAAQgJ,EAAGC,SAAS,kBAAoBD,EAAGC,SAAS,qBAE/ClF,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACrD6E,EAAWM,EAAe5D,EAAQvB,GAAM8E,GACnCC,EAAMF,EAASO,OAChBL,EAAMF,EAASO,KAAOlB,EAAKhE,GAAG2E,EAASO,KAAK5E,KAAK,aAAaD,OAAOA,IAEzE6C,EAAO2B,EAAMF,EAASO,KAAKlF,GAAG2E,EAASzB,MACvCA,EAAKrE,KAAKpD,GAAMoD,KAAK,SAAU6F,EAAS5E,EAE5C,OAAOuB,GAAQ5G,OAEnB,QAAS4I,GAAMhC,GAAf,GAGavB,GAEGqF,EAJRhG,EAAS,EACTiG,EAAM,CACV,KAAStF,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IAChCuB,EAAQvB,GAAKuB,UACT8D,EAAO9B,EAAMhC,EAAQvB,GAAKuB,SAC1B8D,EAAOC,IACPA,EAAMD,GAIlB,OAAOhG,GAASiG,EAEpB,QAASb,GAAUV,EAAOxC,EAASb,EAAWsD,GAA9C,GAKQhE,GAKAqE,EATAkB,EAAiBC,EAAsBzB,EAAM,GAAIxC,GACjDkE,EAAM/E,EAAUF,KAAK,6BAA+B+E,EAAeH,IAAM,iBACzEM,EAAIjM,IACJwG,EAAcsF,EAAenC,IAEjC,KAAKpD,EAAM,EAAGA,EAAM+D,EAAMpJ,OAAQqF,IAC9B0F,EAAIA,EAAEjG,IAAIgG,EAAIvF,GAAGD,EAAcD,GAInC,KAFAgE,EAAYxD,KAAK,0BAA0BN,GAAGqF,EAAeH,KAAKO,OAAOD,GACrErB,KACCrE,EAAM,EAAGA,EAAM+D,EAAMpJ,OAAQqF,IAC1B+D,EAAM/D,GAAKuB,UACX8C,EAAWA,EAASuB,OAAO7B,EAAM/D,GAAKuB,SAG1C8C,GAAS1J,QACT8J,EAAUJ,EAAU9C,EAASb,EAAWsD,GAGhD,QAASmB,GAAezD,EAAQH,EAAS6D,EAAKS,GAA9C,GACQxG,GACAW,CAIJ,KAHAoF,EAAMA,GAAO,EACbS,EAAaA,MACbA,EAAWT,GAAOS,EAAWT,IAAQ,EAChCpF,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IAAO,CACvC,GAAIuB,EAAQvB,IAAQ0B,EAAQ,CACxBrC,GACI+D,KAAMyC,EAAWT,GACjBA,IAAKA,EAET,OACG,GAAI7D,EAAQvB,GAAKuB,UACpBlC,EAAS8F,EAAezD,EAAQH,EAAQvB,GAAKuB,QAAS6D,EAAM,EAAGS,IAE3D,KAGRA,GAAWT,KAEf,MAAO/F,GAEX,QAASyG,GAA6BvE,EAASwE,EAAOlG,EAAQmG,GAA9D,GACQlC,GACAmC,EAASpG,EAAOoG,MACpB,GACInC,GAASvC,EAAQwE,GACjBA,GAASC,EAAM,WACVlC,GAAUiC,MAAcA,EAAQxE,EAAQ5G,QAAUmJ,GAAUjE,IAAWiE,EAAOvC,SAAWuC,EAAOmC,QAAUA,EACnH,OAAOnC,GAEX,QAASoC,GAAkB3E,EAASuC,EAAQjE,EAAQE,GAApD,GAKYoG,GACAC,EAMAL,EAQA9F,CAnBR,OAAI6D,GAAOvC,SACPuC,EAASA,EAAOvC,QACTuC,EAAO/D,EAAS,EAAI+D,EAAOnJ,OAAS,KAEvCwL,EAAS/D,EAAa0B,EAAQvC,GAG9B6E,EADAD,EACgBA,EAAO5E,QAEPA,EAEhBwE,EAAQM,GAAQvC,EAAQsC,GACd,IAAVL,GAAehG,EACfgG,IACOA,GAASK,EAAczL,OAAS,GAAMoF,GAEtCgG,EAAQ,GAAe,IAAVA,IAAgBhG,KACpCgG,GAAShG,KAAc,GAFvBgG,IAIA9F,EAAcoG,GAAQxG,EAAQuG,GAClCtC,EAASgC,EAA6BM,EAAeL,EAAOlG,EAAQI,EAAc8F,GAC9EjC,GAAUA,GAAUjE,GAAUiE,EAAOvC,QAC9B2E,EAAkB3E,EAASuC,EAAQjE,EAAQE,GAGnD,MAEX,QAASyF,GAAsB9D,EAAQH,EAAS6D,EAAKS,GAArD,GACQxG,GACAW,CAIJ,KAHAoF,EAAMA,GAAO,EACbS,EAAaA,MACbA,EAAWT,GAAOS,EAAWT,IAAQ,EAChCpF,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IAAO,CACvC,GAAIuB,EAAQvB,IAAQ0B,EAAQ,CACxBrC,GACI+D,KAAMyC,EAAWT,GACjBA,IAAKA,EAET,OACG,GAAI7D,EAAQvB,GAAKuB,UACpBlC,EAASmG,EAAsB9D,EAAQH,EAAQvB,GAAKuB,QAAS6D,EAAM,EAAGS,IAElE,KAGHtE,GAAQvB,GAAK2B,QACdkE,EAAWT,KAGnB,MAAO/F,GAEX,QAASiH,GAAsB/E,GAC3B,GAAIlC,GAASkH,EAAY/C,EAAcjC,GACvC,OAAOlC,GAAOuG,OAAOW,EAAY7C,EAAiBnC,KAEtD,QAASiF,GAA2BD,EAAahF,EAAStB,EAAawG,GAAvE,GACQ/E,GAAS6E,EAAYtG,GACrB6D,EAASyC,EAAYE,GACrBN,EAAS/D,EAAaV,EAAQH,EAElC,OADAA,GAAU4E,EAASA,EAAO5E,QAAUA,EAC7B8E,GAAQvC,EAAQvC,GAE3B,QAASgF,GAAYhF,GAArB,GAGavB,GAFLX,KACAgF,IACJ,KAASrE,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IACpCX,EAAOjF,KAAKmH,EAAQvB,IAChBuB,EAAQvB,GAAKuB,UACb8C,EAAWA,EAASuB,OAAOrE,EAAQvB,GAAKuB,SAMhD,OAHI8C,GAAS1J,SACT0E,EAASA,EAAOuG,OAAOW,EAAYlC,KAEhChF,EAEX,QAASqH,GAAuBnF,GAAhC,GAEQG,GACK1B,EAFL2G,EAAU,CAEd,KAAS3G,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IACpC0B,EAASH,EAAQvB,GACb0B,EAAOH,QACPoF,GAAWD,EAAuBhF,EAAOH,SAClCG,EAAOC,QACdgF,GAGR,OAAOA,GAEX,QAASC,GAAaC,GAAtB,GACQC,GACK9G,EAASrF,EADJG,EAAQ,CACtB,KAASkF,EAAM,EAAGrF,EAASkM,EAAKlM,OAAQqF,EAAMrF,EAAQqF,IAClD8G,EAAWD,EAAK7G,GAAK9E,MAAMJ,MACvBgM,GAAYA,EAASC,QAAQ,WAC7BjM,GAASkM,SAASF,EAAU,IAGpC,OAAOhM,GAEX,QAASmM,GAAmBvG,EAAWzB,GAAvC,GAEQ0E,GACK3D,EAFL+E,EAAQrE,EAAUF,KAAK,gEAE3B,KAASR,EAAM,EAAGA,EAAM+E,EAAMpK,OAAQqF,IAClC2D,EAAUoB,EAAM/E,GAAK2D,QACjBA,EAAU,IACVoB,EAAM/E,GAAK2D,QAAUA,EAAU1E,GAAS,GAIpD,QAASuF,GAAgB9D,EAAWzB,GAApC,GAEae,GADL+E,EAAQrE,EAAUF,KAAK,gEAC3B,KAASR,EAAM,EAAGA,EAAM+E,EAAMpK,OAAQqF,IAClC+E,EAAM/E,GAAK2D,SAAW1E,EAG9B,QAASiI,GAAgBxG,GAAzB,GAMaV,GALLkE,EAAOxD,EAAUF,KAAK,yBACtB2G,EAAiBjD,EAAK3D,OAAO,WAC7B,OAAQ9G,EAAEwC,MAAMoI,WAAW1J,SAC5ByM,SAASzM,OACRoK,EAAQb,EAAK1D,KAAK,0CACtB,KAASR,EAAM,EAAGA,EAAM+E,EAAMpK,OAAQqF,IAC9B+E,EAAM/E,GAAK2D,QAAU,IACrBoB,EAAM/E,GAAK2D,SAAWwD,EAG9B,OAAOjD,GAAKvJ,OAASwM,EAEzB,QAASE,GAAoB9F,EAASwD,EAAOb,EAAMoD,EAAU1C,GACzD,GAAI5E,GAAKoF,EAAKzK,EAAQ0J,IACtB,KAAKrE,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACjDoF,EAAMlB,EAAKoD,OACXlC,EAAIhL,KAAK2K,EAAM7E,GAAG0E,EAAS5E,IAC3BkE,EAAKoD,GAAYlC,EACb7D,EAAQvB,GAAKuB,UACb8C,EAAWA,EAASuB,OAAOrE,EAAQvB,GAAKuB,SAG5C8C,GAAS1J,QACT0M,EAAoBhD,EAAUU,EAAOb,EAAMoD,EAAW,EAAG1C,EAASrD,EAAQ5G,QAGlF,QAAS6I,GAAcjC,GACnB,MAAOyB,IAAKzB,EAAS,SAAUG,GAC3B,MAAOA,GAAOuE,SAGtB,QAASvC,GAAiBnC,GACtB,MAAOyB,IAAKzB,EAAS,SAAUG,GAC3B,OAAQA,EAAOuE,SAGvB,QAASsB,GAAwBhG,GAC7B,MAAOyB,IAAKzB,EAAS,SAAUG,GAC3B,OAAQA,EAAOuE,QAAUnE,EAAUJ,KAG3C,QAAS8F,GAAqBjG,GAC1B,MAAOyB,IAAKzB,EAAS,SAAUG,GAC3B,MAAOA,GAAOuE,QAAUnE,EAAUJ,KAG1C,QAAS+F,GAAmBlG,GAA5B,GAEavB,GADLX,IACJ,KAASW,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IAChCuB,EAAQvB,GAAK2B,SAGbJ,EAAQvB,GAAKuB,QACblC,EAASA,EAAOuG,OAAO6B,EAAmBlG,EAAQvB,GAAKuB,UAEvDlC,EAAOjF,KAAKmH,EAAQvB,IAG5B,OAAOX,GAEX,QAAS2F,GAAYzD,GAArB,GAEavB,GADLX,IACJ,KAASW,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IAC/BuB,EAAQvB,GAAKuB,QAIlBlC,EAASA,EAAOuG,OAAOZ,EAAYzD,EAAQvB,GAAKuB,UAH5ClC,EAAOjF,KAAKmH,EAAQvB,GAK5B,OAAOX,GAEX,QAASqI,GAAchH,GAAvB,GAaQiH,GAZAzD,EAAOxD,EAAUF,KAAK,0BACtBD,EAAS,WACT,GAAI0E,GAAKxL,EAAEwC,KACX,QAAQgJ,EAAGC,SAAS,kBAAoBD,EAAGC,SAAS,qBAEpDH,EAAQtL,GAuBZ,OAtBIyK,GAAKvJ,OAAS,IACdoK,EAAQb,EAAK1D,KAAK,MAAMD,OAAOA,GAAQA,OAAO,WAC1C,MAAOtE,MAAK0H,QAAU,KAG9BoB,EAAQA,EAAMtF,IAAIyE,EAAKK,OAAO/D,KAAK,MAAMD,OAAOA,IAC5CoH,EAAYhM,GAAMoD,KAAK,SAC3BgG,EAAM1K,KAAK,SAAUuN,EAAGC,GAAb,GAGHC,GACAC,CASJ,OAZAH,GAAInO,EAAEmO,GACNC,EAAIpO,EAAEoO,GACFC,EAASF,EAAE7I,KAAK4I,GAChBI,EAASF,EAAE9I,KAAK4I,GAChBG,IAAWnJ,IACXmJ,EAASrO,EAAEmO,GAAG7B,SAEdgC,IAAWpJ,IACXoJ,EAAStO,EAAEoO,GAAG9B,SAElB+B,EAASd,SAASc,EAAQ,IAC1BC,EAASf,SAASe,EAAQ,IACnBD,EAASC,EAAS,EAAID,EAASC,KAAc,IAEjDhD,EAEX,QAASiD,GAAmB5E,GAA5B,GAOY+C,GACA8B,EAGArD,EACAmB,EACAmC,EAGKlI,EAMDmI,EArBRzH,EAAY0C,EAAKgF,QAAQ,SACzB/I,EAAS5F,IAAIgG,IAAI2D,GACjBgC,EAAMhC,EAAKgF,QAAQ,MACnBC,EAAa3H,EAAUF,KAAK,yBAC5B8H,EAAQD,EAAWtC,MAAMX,EAC7B,IAAIkD,EAAQ,EAAG,CAUX,IATInC,EAASkC,EAAWnI,GAAGoI,EAAQ,GAC/BL,EAA0B9B,EAAO3F,KAAK,2CAA2CD,OAAO,WACxF,OAAQ9G,EAAEwC,MAAM8C,KAAK,aAErB6F,EAAS,EACTmB,EAAQX,EAAI5E,KAAK,2CAA2CuF,MAAM3C,GAClE8E,EAAY9E,EAAKmF,QAAQ,yCAAyChI,OAAO,WACzE,MAAOtE,MAAKuM,QAAU,IAEjBxI,EAAM,EAAGA,EAAMkI,EAAUvN,OAAQqF,IACtC4E,GAAUsD,EAAUlI,GAAKwI,SAAW,CAIxC,KAFAzC,GAAS0C,KAAKnD,IAAIV,EAAS,EAAG,GAC9BA,EAAS,EACJ5E,EAAM,EAAGA,EAAMiI,EAAwBtN,OAAQqF,IAOhD,GANImI,EAAaF,EAAwB/H,GAAGF,GAExC4E,GADAuD,EAAWpJ,KAAK,gBACNoJ,EAAW,GAAGO,aAAa,gBAE3B,EAEV3C,GAAS/F,GAAO+F,EAAQnB,EAAQ,CAChCvF,EAAS2I,EAAmBG,GAAY1I,IAAIJ,EAC5C,QAIZ,MAAOA,GAEX,QAASsJ,GAAkBvF,GAA3B,GAQYwF,GACAV,EACAlI,EAIA4E,EAIAG,EACAyD,EAKIlM,EAvBRoE,EAAY0C,EAAKgF,QAAQ,SACzB/I,EAAS5F,IAAIgG,IAAI2D,GACjBgC,EAAMhC,EAAKgF,QAAQ,MACnBC,EAAa3H,EAAUF,KAAK,yBAC5B8H,EAAQD,EAAWtC,MAAMX,GAAOhC,EAAK,GAAGO,QACxCkF,EAAclN,GAAMoD,KAAK,UAC7B,IAAIuJ,GAASD,EAAW1N,OAAS,EAAG,CAQhC,IAPIiO,EAAQxD,EAAI0D,OACZZ,EAAY9E,EAAKmF,QAAQ,yCAE7BL,EAAYA,EAAU3H,OAAO,WACzB,OAAQtE,KAAK0H,SAA4B,IAAjB1H,KAAK0H,UAE7BiB,EAAS,EACR5E,EAAM,EAAGA,EAAMkI,EAAUvN,OAAQqF,IAClC4E,GAAUoC,SAASkB,EAAUhI,GAAGF,GAAKjB,KAAK8J,GAAc,KAAO,CAKnE,KAHI9D,EAAQ6D,EAAMpI,KAAK,2CACnBgI,EAAUxB,SAAS5D,EAAKrE,KAAK8J,GAAc,KAAO,EACtD7I,EAAM,EACCA,EAAMwI,GACTI,EAAQ7D,EAAM7E,GAAGF,EAAM4E,GACvBvF,EAASA,EAAOI,IAAIkJ,EAAkBC,IAClCtM,EAAQ0K,SAAS4B,EAAM7J,KAAK8J,GAAc,IAC1CvM,EAAQ,IACRkM,GAAWlM,EAAQ,GAEvB0D,IAGR,MAAOX,GAEX,QAAS0J,GAAcC,EAAOC,EAAOC,EAAMC,GACvC,GAAIC,GAAaC,EAAML,CAavB,OAZIG,IACAH,EAAMG,QAENG,GACAN,EAAM,GAAGO,UAAYL,GAErBE,EAAcrM,SAASC,cAAc,OACrCoM,EAAYG,UAAY,iBAAmBL,EAAO,mBAClDF,EAAQI,EAAYI,WAAWA,WAC/BP,EAAM,GAAGQ,aAAaT,EAAOK,EAAI,IACjCL,EAAQvP,EAAEuP,IAEPA,EAEX,QAASjH,GAAehD,GACpBA,EAAOA,KACP,IAAI7D,GAAQ6D,EAAK7D,KASjB,OARKA,IAGDA,EAAQA,EAAMrB,QAAQ,+BAAgC,WAClDqB,IAAU6D,EAAK7D,QACfA,EAAQA,EAAMrB,QAAQ,SAAU,qBAJpCqB,EAAQ,eAOLY,MAAWiD,GAAQ7D,MAAOA,IAErC,QAAS0H,GAAkB7D,GACvBA,EAAOA,KACP,IAAI7D,GAAQ6D,EAAK7D,KAIjB,OAHIA,KACA6D,EAAK7D,MAAQA,EAAMrB,QAAQ,+BAAgC,KAExDkF,EAEX,QAAS2K,GAAcT,EAAOlG,EAAgB4G,EAAY1F,GACtD,GAAwCnJ,GAApC8O,EAAWX,EAAMzI,KAAK,aAAqBqG,EAAOtK,GAAIwG,EAAgB,SAAUrB,GAE5E,MADA5G,GAAQ4G,EAAO5G,MACXA,GAAiC,IAAxBkM,SAASlM,EAAO,IAClBa,GAAMkO,OAAO,iCAAmC/O,KAAUwE,GAASxE,EAAQA,EAAQ,MAEvF,aAEX6O,GAAcC,EAASpJ,KAAK,oBAAoB7F,SAChDkM,EAAKrE,OAAO,EAAG,EAAG,mCAElBoH,EAASjP,QACTiP,EAASxC,SAEbwC,EAAWnQ,EAAMyF,MAAM+E,EAAS,GAAG3J,KAAK,6BAA+BuM,EAAKvM,KAAK,KAC5EsP,EAASE,GAAG,cACbF,EAAWnQ,EAAE,eAAekM,OAAOiE,IAEvCX,EAAMc,QAAQH,GACVI,GAAQC,MAA2B,GAAnBD,GAAQE,UACxBjB,EAAMvJ,IAAI,UAAW,gBACrBhE,OAAOyO,WAAW,WACdlB,EAAMvJ,IAAI,UAAW,KACtB,IAGX,QAAS0K,GAAqB1J,EAAWa,GAAzC,GAEQvB,GAAKqK,EADLC,EAAY,EAEZC,EAAK7J,EAAUF,KAAK,wBACxB,KAAKR,EAAM,EAAGqK,EAAM9I,EAAQ5G,OAAQqF,EAAMqK,EAAKrK,IACvCuB,EAAQvB,GAAKiG,SACbsE,EAAGrK,GAAGF,GAAKwK,aAAaD,EAAGrK,GAAGoK,IAC9BC,EAAK7J,EAAUF,KAAK,yBACpB8J,KAIZ,QAASG,GAAgBC,GACrB,GAAiBC,GAAM3K,EAAKrF,EAAxB0E,IACJ,KAAKW,EAAM,EAAGrF,EAAS+P,EAAM/P,OAAQqF,EAAMrF,EAAQqF,IAC/C2K,EAAOD,EAAM1K,GACbX,EAAOsL,EAAKrO,OAASqO,EAAKhR,IAE9B,OAAO0F,GAEX,QAASuL,GAAiBtO,EAAOuN,EAAQgB,EAAcrJ,GACnD,GAAIsJ,GAAeD,GAAgBA,EAAalQ,QAAUoG,GAAc8J,EAAa,KAAO,SAAWA,GAAa,GAAIE,EAAaD,EAAeL,EAAgBI,GAAcvO,GAASA,CAE3L,OADAyO,GAA2B,MAAdA,EAAqBA,EAAa,GACxClB,EAASlO,GAAMkO,OAAOA,EAAQkB,GAAcvJ,KAAY,EAAQuJ,EAAapP,GAAMqP,WAAWD,GAEzG,QAASE,GAAkBlG,EAAOgB,EAAOrD,GAErC,IADA,GAAawI,GAATC,EAAM,EAAU/H,EAAO2B,EAAMoG,GAC1B/H,GAAM,CAET,GADA8H,IAAQxI,GAAwC,SAAvBU,EAAKlI,MAAM4H,QAChCoI,IAAUE,GAAmBC,KAAKjI,EAAKkI,cAAgBvF,EAAQ,EAAG,CAClE3C,EAAKlI,MAAM4H,QAAUJ,EAAU,GAAK,MACpC,OAEJU,EAAO2B,IAAQoG,IAGvB,QAASI,GAAgBrH,EAAMsH,GAE3B,IADA,GAAmCpI,GAAMgC,EAArCpF,EAAM,EAAGrF,EAASuJ,EAAKvJ,OACpBqF,EAAMrF,EAAQqF,GAAO,EACxBoF,EAAMlB,EAAKhE,GAAGF,GACVoF,EAAI0E,GAAG,kCACP1G,EAAOgC,EAAIf,SAAS,4CAA4CE,OAChEnB,EAAKrE,KAAK,UAAWiI,SAAS5D,EAAKrE,KAAK,WAAY,IAAM,KAEtDqG,EAAIF,SAAS,qBAAuB9B,EAAOgC,EAAIf,SAAS,qBAAqB,MAC7EjB,EAAO3J,EAAE2J,GACTA,EAAKrE,KAAK,UAAWiI,SAAS5D,EAAKrE,KAAK,WAAY,IAAM,GAC1DqE,EAAK5C,KAAK,OAAON,GAAGsL,GAAapE,SACjChC,EAAMhC,EAAK5C,KAAK,aAEpByK,EAAkB7F,EAAI,GAAGL,MAAOyG,GAAa,IAIzD,QAASC,GAAUC,GAAnB,GAEQf,GACK3K,EAFLX,IAEJ,KAASW,EAAM,EAAGA,EAAM0L,EAAK/Q,SACzBgQ,EAAOe,EAAK1L,GACN,SAAW2K,IAAQ,SAAWA,IAAQ,SAAWA,IAFtB3K,IAKjCX,EAAOjF,KAAKuQ,GACRA,EAAKgB,eACLtM,EAASA,EAAOuG,OAAO6F,EAAUd,EAAKiB,QAG9C,OAAOvM,GAEX,QAASwM,IAAaH,GAAtB,GAEQf,GACK3K,EAFLX,IAEJ,KAASW,EAAM,EAAGA,EAAM0L,EAAK/Q,SACzBgQ,EAAOe,EAAK1L,GACN,SAAW2K,IAAQ,SAAWA,IAAQ,SAAWA,IAFtB3K,IAK7B2K,EAAKgB,eACLtM,EAASA,EAAOuG,OAAOiG,GAAalB,EAAKiB,SAE7CvM,EAAOjF,KAAKuQ,EAAKmB,WAErB,OAAOzM,GAEX,QAAS0M,IAAgB7H,EAAMsH,GAE3B,IADA,GAAmCpI,GAAMgC,EAAK7D,EAA1CvB,EAAM,EAAGrF,EAASuJ,EAAKvJ,OACpBqF,EAAMrF,EAAQqF,GAAO,EACxBoF,EAAMlB,EAAKhE,GAAGF,GACVoF,EAAI0E,GAAG,kCACP1G,EAAOgC,EAAIf,SAAS,4CAA4CE,OAChEnB,EAAKrE,KAAK,UAAWiI,SAAS5D,EAAKrE,KAAK,WAAY,IAAM,KAEtDqG,EAAIF,SAAS,qBAAuB9B,EAAOgC,EAAIf,SAAS,qBAAqB,MAC7EjB,EAAO3J,EAAE2J,GACTA,EAAKrE,KAAK,UAAWiI,SAAS5D,EAAKrE,KAAK,WAAY,IAAM,GAC1D2K,EAActG,EAAK5C,KAAK,eAAgBuC,EAAexB,IAAU,EAAO,GACxE6D,EAAMhC,EAAK5C,KAAK,aAEpByK,EAAkB7F,EAAI,GAAGL,MAAOyG,GAAa,IAIzD,QAASQ,IAAcC,EAAOC,EAAUC,GACpCA,EAAMA,GAAO,CACb,IAAIxB,GAAM3K,EAAKrF,CACf,KAAKqF,EAAM,EAAGrF,EAASsR,EAAMtR,OAAQqF,EAAMrF,EAAQqF,IAC/C2K,EAAOsB,EAAM/L,GAAGF,GAAKqE,WAAWE,OAChCoG,EAAK5L,KAAK,UAAWiI,SAAS2D,EAAK5L,KAAK,WAAY,IAAMoN,GAC1DxB,EAAOuB,EAAShM,GAAGF,GAAKqE,WAAWE,OACnCoG,EAAK5L,KAAK,UAAWiI,SAAS2D,EAAK5L,KAAK,WAAY,IAAMoN,GAGlE,QAASC,IAAWnD,GAApB,GACQjJ,GAAKrF,EAAQG,EAAQ,EACrB+L,EAAOoC,EAAMzI,KAAK,gBACtB,KAAKR,EAAM,EAAGrF,EAASkM,EAAKlM,OAAQqF,EAAMrF,EAAQqF,GAAO,EACrDlF,GAASkM,SAASH,EAAK7G,GAAK9E,MAAMJ,MAAO,GAE7C,OAAOA,GAs9KX,QAASuR,IAAgBC,EAAQC,GAAjC,GAIYC,GACAC,EACArH,EACAsH,CANRJ,GAASA,EAAO,GAChBC,EAASA,EAAO,GACZD,EAAOpI,KAAKvJ,SAAW4R,EAAOrI,KAAKvJ,SAC/B6R,EAAeF,EAAOtO,aACtByO,EAAcF,EAAOvO,aAGrBwO,EAAeC,GACfrH,EAAMmH,EAAOrI,KAAKqI,EAAOrI,KAAKvJ,OAAS,GACnCgS,GAAgBtB,KAAKjG,EAAIkG,aACzBlG,EAAMmH,EAAOrI,KAAKqI,EAAOrI,KAAKvJ,OAAS,IAE3C+R,EAAOF,EAAeC,IAEtBrH,EAAMkH,EAAOpI,KAAKoI,EAAOpI,KAAKvJ,OAAS,GACnCgS,GAAgBtB,KAAKjG,EAAIkG,aACzBlG,EAAMkH,EAAOpI,KAAKoI,EAAOpI,KAAKvJ,OAAS,IAE3C+R,EAAOD,EAAcD,GAEzBpH,EAAIlK,MAAMH,OAASqK,EAAIpH,aAAe0O,EAAO,MAGrD,QAASE,IAAgBC,EAAMC,GAA/B,GACQ/R,GACAgS,EAAgBF,EAAK7O,aACrBgP,EAAgBF,EAAK9O,YACrB+O,GAAgBC,EAChBjS,EAASgS,EAAgB,KAClBA,EAAgBC,IACvBjS,EAASiS,EAAgB,MAEzBjS,IACA8R,EAAK3R,MAAMH,OAAS+R,EAAK5R,MAAMH,OAASA,GAGhD,QAASkS,IAAWtM,EAAUM,GAC1B,GAAIjB,GAAKrF,EAAQiG,CACjB,UAAWD,KAAarB,IAAUqB,IAAaM,EAC3C,MAAON,EAEX,IAAII,GAAcJ,IAAaA,EAASM,OAASA,EAC7C,MAAON,EAEX,IAAIG,GAAQH,GACR,IAAKX,EAAM,EAAGrF,EAASgG,EAAShG,OAAQqF,EAAMrF,EAAQqF,IAElD,GADAY,EAAUD,EAASX,SACRY,KAAYtB,IAAUsB,IAAYK,GAAQL,EAAQK,OAASA,EAClE,MAAOL,EAInB,OAAO,MAEX,QAASsM,IAAWjE,EAAOkE,GAA3B,GAIYC,GAAWC,EAHfpD,EAAOD,GAAQC,MAAQD,GAAQsD,IACnC,IAAIH,KAAW,EAAM,CAKjB,GAJAlE,EAAQxP,EAAEwP,GAEVmE,EAAYnE,EAAM9C,SAASiH,YAC3BC,EAAapE,EAAM9C,SAASkH,aACxBpD,EACA,IACIhB,EAAM,GAAGsE,YACX,MAAOC,GACLvE,EAAM,GAAGwE,YAGbxE,GAAM,GAAGwE,OAEbxE,GAAM9C,SAASiH,UAAUA,GAAWC,WAAWA,OAE/C5T,GAAEwP,GAAOyE,IAAI,UAAW,SAAUF,GAC9BA,EAAEG,mBACHF,QAGX,QAASG,IAAiBlM,EAAQmM,GAC9B,SAAKnM,EAAOG,OAASH,EAAOoM,gBAGxBD,EAAME,WAAaF,EAAME,SAASrM,EAAOG,WAGzCH,EAAOqM,WAAarM,EAAOqM,SAASF,KAK5C,QAASG,IAAeC,GACpB,MAAOxU,GAAEwU,GAASnE,GAAG,uHAEzB,QAASoE,IAAWV,GAChB,GAAIW,GAAgB1U,EAAE+T,EAAEW,eAAgBC,EAAWD,EAAcrE,GAAG,MAAOb,EAAQhN,KAAKgN,MAAMxJ,IAAIxD,KAAKoS,aAAcC,EAAcrS,KAAK0I,MAAMwB,SAAS1G,IAAIhG,EAAE,SAAUwC,KAAKsS,eAAgBC,EAAUR,GAAeR,EAAE1J,QAAS2K,EAAeN,EAAc/F,QAAQ,SAAS,EAC9Q,KAAIzM,GAAM+S,QAAQC,MAGlB,MAAIH,IAAWL,EAAc3N,KAAK7E,GAAMiT,aAAa,eAAejU,QAChEsB,KAAK4S,YAAYV,GACjB,IAEAM,IAAiBxF,EAAM,IAAMwF,IAAiBxF,EAAM,IAAMwF,IAAiBH,EAAY,IAAMG,IAAiBH,EAAY,IAG1H7U,EAAE+T,EAAE1J,QAAQgG,GAAG,kCAGf7N,KAAKiB,QAAQ4R,aACb7S,KAAK4S,YAAYV,IAEjBC,GAAaI,GACbrE,WAAW,WACD4E,IAAStV,EAAEkC,GAAMqT,kBAAkB9J,SAAS,aACzC8I,GAAerS,GAAMqT,mBAAsBvV,EAAEwV,SAASR,EAAc9S,GAAMqT,mBAC3E9B,GAAWuB,GAAc,KAKrCL,GACAZ,EAAEG,kBAnBN,GAsBJ,QAASuB,IAAS9L,GACd,MAAOA,KAASA,EAAK8B,SAAS,gBAAkB9B,EAAK+C,SAASjB,SAAS,oBAE3E,QAASiK,IAAgBC,EAAS9G,EAAO3O,GACrC,MAAO,yCAA2CqF,EAAWsJ,GAAS,gBAAkB8G,EAAU,mGAA+GC,GAAY,KAAOC,GAAW,SAAW3V,EAAO,iBAErQ,QAAS4V,IAA6BH,GAClC,MAAO,sDAA6DA,EAAU,iEArmNrF,GACOzT,IAAQD,OAAOC,MAAO6T,GAAK7T,GAAM6T,GAAIC,GAAa9T,GAAM+P,KAAK+D,WAAYC,GAAmB/T,GAAM+P,KAAKgE,iBAAkBpG,GAAyB3N,GAAM+S,QAAQiB,eAAgBC,GAAgBjU,GAAMqT,eAAgBa,GAASL,GAAGK,OAAQC,GAAanU,GAAMoU,YAAaC,GAAcrU,GAAMsU,aAAcC,GAAOvU,GAAMuU,KAAMnP,GAAgBtH,EAAEsH,cAAejF,GAASrC,EAAEqC,OAAQS,GAAM9C,EAAE8C,IAAKyG,GAAOvJ,EAAEuJ,KAAMlC,GAAUrH,EAAEqH,QAASuF,GAAU5M,EAAE4M,QAASjM,GAAO8E,MAAMiR,UAAU/V,KAAMiH,GAAQ5H,EAAE4H,MAAO+O,GAAazU,GAAMyU,WAAYC,GAAgB5W,EAAE4W,cAAepB,GAAWxV,EAAEwV,SAAUqB,GAAO7H,KAAM8H,GAAW,WAAYC,GAAQ,QAASC,GAAY,qDAAsDC,GAA0B,uHAAwHC,GAAS,qCAAsCC,GAAU,qDAAsDC,GAAU,kGAAmGC,GAAeD,GAAU,SAAUE,GAAcF,GAAU,QAASG,GAAeL,GAAS,UAAYC,GAAU,SAAUK,GAAc,wDAAyD7P,GAAK,aAAc8P,GAAO,OAAQC,GAAa,aAAcC,GAAO,OAAQC,GAAS,SAAUC,GAAa,aAAcC,GAAiB,iBAAkBC,GAAiB,iBAAkBC,GAAiB,iBAAkBC,GAAiB,iBAAkBC,GAAY,YAAaC,GAAS,SAAUC,GAAa,aAAcC,GAAa,aAAcC,GAAc,cAAeC,GAAY,YAAaC,GAAe,eAAgBC,GAAiB,iBAAkBC,GAAc,aAAcC,GAAO,OAAQC,GAAS,SAAUC,GAAS,SAAUC,GAAO,OAAQC,GAAU,kBAAmBC,GAAY,kBAAmBC,GAAW,mBAAoBC,GAAW,aAAcC,GAAgB,+BAAmCD,GAAUE,GAAiB,mBAAoBC,GAAe,eAAgBC,GAAgB,gBAAiBC,GAAa,aAAcC,GAAe,eAAgBC,GAAW,WAAY/R,GAAQ,QAASgS,GAAS,SAAUC,GAAW,WAAYC,GAAW,WAAY/T,GAAS,SAAUgU,GAAS,SAAUC,GAAgB,gBAAiBC,GAAQ,QAASC,GAAQ,QAASC,GAAS,SAAUC,GAAS,SAAUC,GAAY,MAAOC,GAAgB,+CAAgDC,GAAY,wBAAyBC,GAAgB,SAAUC,GAAe,SAAU1E,GAAW,WAAY2E,GAAS,SAAU5E,GAAY,aAAc6E,GAAe,YAAaC,GAAqB,MAAOC,GAAmB,sBAAuBhJ,GAAyBiJ,OAAO,MAAQD,GAAmB,oCAAgDA,GAAmB,OAAQzH,GAAsB0H,OAAO,MAAQD,GAAmB,mBAA+BA,GAAmB,OAAQE,GAAoB,uQAA4RC,GAAmB,iBAAmB5B,GAAW,kJAAmJ6B,GAAyB,iBAAmB7B,GAAW,qJAAsJ8B,IAAQ,EAAOzK,GAAUrO,GAAM+S,QAAQ1E,QAAS0K,GAAQ1K,GAAQC,MAA2B,GAAnBD,GAAQE,QAAc6E,GAAQ/E,GAAQC,MAA2B,GAAnBD,GAAQE,QACtvHyK,GAAoB9E,GAAO/T,QAC3BC,KAAM,SAAUkS,EAAS/Q,GACrB,GAAI0X,GAAO3Y,IACX4T,IAAOgF,GAAG9Y,KAAK+Y,KAAKF,EAAM3G,EAAS/Q,GACnC0X,EAAKG,gBAAkB1T,GAAMuT,EAAKI,QAASJ,GAC3CA,EAAKK,cAAc/X,EAAQgY,YAC3BN,EAAKO,QAETF,cAAe,SAAUC,GACrB,GAAIN,GAAO3Y,IACP2Y,GAAKM,YACLN,EAAKM,WAAWE,OAAOxD,GAAQgD,EAAKG,iBAExCH,EAAKM,WAAaA,EAClBN,EAAKM,WAAWG,KAAKzD,GAAQgD,EAAKG,iBAClCH,EAAKM,WAAWhY,QAAQoY,WAAY,GAExCpY,SACI+D,KAAM,oBACNsU,WAAY9b,EAAE+b,KACdC,UAAU,EACVC,gBAAiB,MAErBC,QACItD,GACAD,GACAE,IAEJsD,QAAS,WACL,GAAIhB,GAAO3Y,IACX4T,IAAOgF,GAAGe,QAAQd,KAAKF,GACvBA,EAAKM,WAAWE,OAAOxD,GAAQgD,EAAKG,iBACpCH,EAAKiB,QAAQpW,IAAImV,EAAKkB,mBAAmBC,IAAI3U,IACzCwT,EAAKoB,OACLpB,EAAKoB,KAAKJ,UACVhB,EAAKoB,KAAO,MAEhBpB,EAAKiB,QAAUjB,EAAK3G,QAAU2G,EAAKkB,kBAAoB,KACvDlB,EAAKG,gBAAkB,MAE3BI,KAAM,WACF,GAAoFU,GAAhFjB,EAAO3Y,KAAMga,EAAYta,GAAM+S,QAAQuH,YAAc,EAAGhI,EAAU2G,EAAK3G,OAC3EA,GAAQvO,KACJ5E,MAAO,OACPob,SAAU,WACXxW,IAAI+U,GAAQ,eAAiB,gBAAiBwB,GACjDrB,EAAKtU,QAAU2N,EAAQ5J,WAAW8R,QAClCN,EAAUjB,EAAKiB,QAAUjB,EAAKtU,QAAQ6U,KAAK,4CAA4ChP,SAASkP,KAAK,iBAAmBjU,GAAK,cAAgBA,GAAIC,GAAMuT,EAAKwB,aAAcxB,IACtKjZ,GAAM+S,QAAQ2H,sBACdzB,EAAKoB,KAAO,GAAIra,IAAM2a,WAAW1B,EAAKiB,SAClCU,QAAQ,EACRC,gBAAgB,EAChBC,MAAO,SAAUjJ,GACbA,EAAEkJ,OAAOC,WAEbC,KAAM,SAAUpJ,GACZoH,EAAKkB,kBAAkB1I,UAAUwH,EAAKkB,kBAAkB1I,YAAcI,EAAEqJ,EAAEC,OAC1EjB,EAAQxI,WAAWwI,EAAQxI,aAAeG,EAAEuJ,EAAED,OAC9CtJ,EAAEG,qBAIdiH,EAAKkB,kBAAoBrc,EAAE,oDAAoDiG,KAAM5E,MAAOmb,IAAa9V,SAAS8N,GAASoH,KAAK,SAAWjU,GAAIC,GAAMuT,EAAKoC,QAASpC,KAEvKwB,aAAc,SAAU5I,GACpB,IAAIA,EAAEyJ,QAAN,CAGA,GAAIhB,GAAYha,KAAK6Z,kBAAmB1I,EAAY6I,EAAU7I,YAAa0J,EAAQnb,GAAMub,YAAY1J,IACjGsJ,GAAWA,EAAQ,GAAmB,IAAd1J,GAAsB0J,EAAQ,GAAK1J,EAAY6I,EAAU,GAAGkB,cAAgBlB,EAAU,GAAGmB,eACjH5J,EAAEG,iBACF1R,KAAK6Z,kBAAkB1I,UAAUA,GAAa0J,MAGtDE,QAAS,SAAUxJ,GACf,GAAIoH,GAAO3Y,KAAMob,GAAgBzC,EAAK1X,QAAQuY,SAAUrI,EAAYI,EAAEW,cAAcf,UAAW8H,EAAaN,EAAKM,WAAYoC,EAAY1C,EAAKW,WAAYgC,EAAOrC,EAAWqC,QAAU,EAAGd,EAAQ7B,EAAK4C,aAAeD,EAAMxc,EAAS6Z,EAAK3G,QAAQwJ,cAAeC,KAAmB9C,EAAK+C,eAAiB/C,EAAK+C,cAAgBvK,GAAYwK,EAAiBtH,GAAKhL,IAAIgL,GAAKuH,MAAMzK,EAAYkK,GAAY,GAAIQ,EAAgBxH,GAAKhL,IAAIsS,EAAiBtH,GAAKyH,KAAKhd,EAASuc,GAAY,EACpd,OAAI1C,GAAKoD,gBACLpD,EAAKoD,gBAAiB,EACtB,IAEJpD,EAAKqD,WAAa7K,EAAYqJ,EAAQa,EACtC1C,EAAK+C,cAAgBvK,EACrBwH,EAAKsD,WAAab,EACbzC,EAAKuD,OAAOP,EAAgBE,EAAeJ,KAC5C9C,EAAKiB,QAAQ,GAAGzI,UAAYwH,EAAKqD,YAErCrD,EAAKwD,QAAQ9F,IACT+E,IACIzC,EAAKyD,mBACLC,aAAa1D,EAAKyD,mBAEtBzD,EAAKyD,kBAAoBlO,WAAW,WAChCyK,EAAKsD,YAAa,EAClBtD,EAAK2D,MAAM3D,EAAK4C,YAAa5C,EAAKM,WAAWsD,SAC9C,MAdP5D,IAiBJ6D,YAAa,WACTxc,KAAKyc,UAAU,IAEnBC,eAAgB,WACZ,GAAI1C,GAAYha,KAAK6Z,iBACrB7Z,MAAKyc,UAAUzC,EAAU,GAAGmB,aAAenB,EAAUlb,WAEzD6d,oBAAqB,WACjB3c,KAAK4Z,QAAQzI,UAAU,IAE3ByL,uBAAwB,WACpB5c,KAAK4Z,QAAQzI,UAAUnR,KAAK4Z,QAAQ,GAAGuB,eAE3CsB,UAAW,SAAUtL,GAAV,GACHwH,GAAO3Y,KACPga,EAAYrB,EAAKkB,iBACjBG,GAAU7I,cAAgBA,IAC1BwH,EAAKoD,gBAAiB,GAE1BpD,EAAKiB,QAAQzI,UAAUA,GACvBwH,EAAKqD,WAAarD,EAAKiB,QAAQzI,YAC/B6I,EAAU7I,UAAUA,GACpBwH,EAAK+C,cAAgB1B,EAAU7I,aAEnC0L,iBAAkB,WACd,MAA8C,KAAvC7c,KAAK6Z,kBAAkB1I,aAElC2L,oBAAqB,WAAA,GACb9C,GAAYha,KAAK6Z,kBACjB1I,EAAY6I,EAAU7I,WAC1B,OAAOA,GAAY,GAAKA,GAAapG,SAASiP,EAAU,GAAGmB,aAAenB,EAAUlb,SAAU,KAElGie,UAAW,SAAU1R,GACjB,GAAI2R,GAAahd,KAAKub,aAAevb,KAAKiZ,WAAWqC,QAAU,CAC/D,OAAO0B,GAAa3R,GAExB4R,kBAAmB,SAAUjL,GACzB,MAAOhS,MAAKkd,2BAA2BlL,IAE3CkL,2BAA4B,SAAUlL,GAAV,GAGpBhQ,GACAmb,EAHAxE,EAAO3Y,KACP4Z,EAAUjB,EAAKiB,OAInB,OADA5H,GAAUxU,EAAEwU,MACRA,EAAQ,IAAMgB,GAAS4G,EAAQ,GAAI5H,EAAQ,MAC3ChQ,EAAY+I,SAASiH,EAAQpJ,WAAWwU,IAAK,IAC7CD,EAAanL,EAAQ+B,cAAgB,GAChC/R,GAAa,GAAKqS,GAAKgJ,IAAIrb,IAAcmb,IAAenb,EAAYmb,GAAcvD,EAAQ9a,YAMvG8J,SAAU,SAAUkB,GAAV,GAGF1G,GAFA4Z,EAAahd,KAAKub,aAAevb,KAAKiZ,WAAWqC,QAAU,EAC3DgC,EAAWtd,KAAKiZ,WAAWqE,UAO/B,OAJIla,GADA0G,EAAQkT,EACClT,EAAQkT,EAAa,EAErBA,EAAalT,EAAQ,EAE3B1G,EAASka,EAAWA,EAAWla,GAE1Cma,eAAgB,SAAUpU,GAAV,GACR1E,GAAYzE,KAAK4Z,QAAQ,GACzB4D,EAAkB/Y,EAAUyW,aAC5BuC,EAAkBhZ,EAAU0M,UAC5BuM,EAAgBvU,EAAI,GAAGnH,UACvB2b,EAAgBxU,EAAI,GAAGpH,YACvB0b,GAAkBC,EAClB1d,KAAK6Z,kBAAkB,GAAG1I,WAAaqM,EAAkB,EAClDE,EAAgBC,GAAiBF,EAAkBD,IAC1Dxd,KAAK6Z,kBAAkB,GAAG1I,WAAaqM,EAAkB,IAGjEtB,OAAQ,SAAUP,EAAgBE,EAAe+B,GAAzC,GACAjF,GAAO3Y,KAAMiZ,EAAaN,EAAKM,WAAYK,EAAaX,EAAKW,WAAYiD,EAAOtD,EAAWsD,OAAQS,EAAarE,EAAK4C,aAAetC,EAAWqC,QAAU,EAAGuC,EAAcxJ,GAAKuH,MAAMD,EAAiBY,GAAQA,EAAMuB,GAAW,EAAOC,EAAa,IACnP/D,EAAYrB,EAAKkB,kBACjBmE,EAAmBjQ,GAAQkQ,OAAS,EAAI,CAuB5C,OAtBItC,GAAiBqB,GACjBc,GAAW,EACXd,EAAa3I,GAAKhL,IAAI,EAAGwS,EAAgBU,GACzC5D,EAAKqD,WAAahC,EAAU7I,YAAc6L,EAAa1D,EACvDX,EAAK2D,MAAMU,EAAYT,IAChBV,GAAiBmB,EAAaT,IAASqB,GAC9CE,GAAW,EACXd,EAAa3I,GAAK6J,IAAIvC,EAAgB1C,EAAWkF,QAAU5B,GAEvD5D,EAAKqD,WADLhC,EAAU7I,aAAe6I,EAAU,GAAGmB,aAAenB,EAAUlb,SAAWkf,EACxDrF,EAAKiB,QAAQ,GAAGuB,aAAexC,EAAKiB,QAAQ9a,SAE5Cwa,EAEtBX,EAAK2D,MAAMU,EAAYT,KACf5D,EAAKyF,WAAazF,EAAK1X,QAAQuY,WACnCmC,EAAiBkC,EAActB,EAAOA,EAAOwB,GAAcpC,EAAiBY,GAC5EtD,EAAWO,SAASqE,EAActB,EAAMA,EAAM/e,EAAE+b,MAEhDsC,EAAgBgC,EAActB,EAAOwB,GACrC9E,EAAWO,SAASqE,EAActB,EAAMA,EAAM/e,EAAE+b,OAGjDuE,GAEXA,SAAU,WACN,MAAO9d,MAAKoe,WAEhB9B,MAAO,SAAUhB,EAAMiB,EAAM8B,GACzB,GAAI1F,GAAO3Y,KAAMob,GAAgBzC,EAAK1X,QAAQuY,SAAUP,EAAaN,EAAKM,UAC1EoF,GAAWlK,GAAWkK,GAAYA,EAAW7gB,EAAE+b,KAC3CZ,EAAKwD,QAAQ/F,IACTkF,KAAMA,EACNiB,KAAMA,MAIdF,aAAa1D,EAAK2F,UAClB3F,EAAKyF,WAAY,EACjBzF,EAAK4C,YAAcD,EACfrC,EAAWsF,QAAQjD,EAAMiB,IACzB7c,GAAM6T,GAAGiL,SAAShhB,EAAEmb,EAAKiB,SAAS1P,UAAU,GAC5C+O,EAAWwF,MAAMnD,EAAMiB,EAAM,WACzB7c,GAAM6T,GAAGiL,SAAShhB,EAAEmb,EAAKiB,SAAS1P,UAAU,GAC5CmU,IACA1F,EAAKwD,QAAQhG,QAGZiF,GACD1b,GAAM6T,GAAGiL,SAAS7F,EAAKiB,QAAQ1P,UAAU,GAE7CyO,EAAK2F,SAAWpQ,WAAW,WAClByK,EAAKsD,aACFb,GACA1b,GAAM6T,GAAGiL,SAAS7F,EAAKiB,QAAQ1P,UAAU,GAE7C+O,EAAWwF,MAAMnD,EAAMiB,EAAM,WACzB7c,GAAM6T,GAAGiL,SAAS7F,EAAKiB,QAAQ1P,UAAU,GACzCmU,IACA1F,EAAKwD,QAAQhG,QAGtB,QAGXuI,iBAAkB,SAAUC,GAAV,GACqN5a,GAA/N4U,EAAO3Y,KAAMiN,EAAO,GAAI2R,EAAYjG,EAAK1X,QAAQwY,gBAAiBR,EAAaN,EAAKM,WAAYe,EAAata,GAAM+S,QAAQ2H,oBAAkD,EAA5B1a,GAAM+S,QAAQuH,YAAiB6E,EAAiBlG,EAAKiB,QAAQ,GAC9MkF,EAAsBnG,EAAKmE,sBADyMxD,EAE3NX,EAAKW,WAAaX,EAAK1X,QAAQqY,cAAgB,EACxDyF,EAAqBF,EAAeG,YAAcH,EAAe/c,YAAckY,EAAY,EAHuHiF,EAIxMhG,EAAWkF,QAAU7E,EAAayF,CAChD,KAAKhb,EAAM,EAAGA,EAAMsQ,GAAKuH,MAAMqD,EAAcL,GAAY7a,IACrDkJ,GAAQ,gCAAkC2R,EAAY,YAEtDK,GAAcL,IACd3R,GAAQ,gCAAkCgS,EAAcL,EAAY,cAExEjG,EAAKkB,kBAAkB5M,KAAKA,GACxB6R,IAAwBnG,EAAKmE,uBAC7BnE,EAAK+D,iBAEsB,IAApB/D,EAAKqD,YAAgC2C,IAC5CE,EAAe1N,UAAYwH,EAAKqD,aAGxCjD,QAAS,SAAUxH,GAAV,GACDoH,GAAO3Y,KAAMiZ,EAAaN,EAAKM,WAAY+D,EAAarE,EAAK4C,YAC7D2D,GAAU3N,OAAS2N,OACnBP,EAAsBhG,EAAKmE,wBAA0BoC,GAAUA,IAAWhJ,IAAegJ,IAAW9J,IAAU8J,IAAW5I,EAC7H5W,IAAM6T,GAAGiL,SAAS7F,EAAKiB,QAAQ1P,UAAU,GACzCmS,aAAa1D,EAAK2F,UAClB3F,EAAK+F,iBAAiBC,GAClBhG,EAAKoB,MACLpB,EAAKoB,KAAKoF,SAEY,IAAfnC,GAA+BrE,EAAKyF,cACtCc,GAAUA,IAAW5I,IAAQ4I,IAAWhJ,MACzCyC,EAAK4C,YAActC,EAAWqC,QAER,IAAtBrC,EAAWmG,QAAkBF,IAAUA,IAAW5I,IAAQ4I,IAAWhJ,MACrEyC,EAAKkB,kBAAkB,GAAG1I,UAAY,IAG9CwH,EAAKyF,WAAY,KAqBrBiB,IACAC,QACI5hB,KAAM,iBACN2R,UAAW,aACXkQ,UAAW,mBAEfJ,QACIzhB,KAAM,iBACN2R,UAAW,wBACXkQ,UAAW,qBAEfC,MACI9hB,KAAM,eACN2R,UAAW,sBACXkQ,UAAW,oBAEf5F,SACIjc,KAAM,SACN2R,UAAW,gBACXkQ,UAAW,oBAEfE,MACI/hB,KAAM,OACN2R,UAAW,cACXkQ,UAAW,mBAEfG,QACIhiB,KAAM,SACN2R,UAAW,0BACXkQ,UAAW,oBAEfI,YACIjiB,KAAM,SACN2R,UAAW,gBACXkQ,UAAW,qBAEfK,OACIliB,KAAM,kBACN2R,UAAW,eACXkQ,UAAW,yBAEfM,KACIniB,KAAM,gBACN2R,UAAW,aACXkQ,UAAW,wBAmrBfO,GAAOpgB,GAAM6T,GAAGwM,gBAAgBlgB,QAChCC,KAAM,SAAUkS,EAAS/Q,EAASyY,GAC9B,GAAIf,GAAO3Y,IACXiB,GAAU4D,GAAQ5D,IAAagY,WAAYhY,GAAYA,EACvD2S,GAAOgF,GAAG9Y,KAAK+Y,KAAKF,EAAM3G,EAAS/Q,GAC/ByY,IACAf,EAAKqH,QAAUtG,GAEnBlB,GAAQ9Y,GAAM+S,QAAQ+F,MAAMxG,GAC5B2G,EAAKsH,WACLtH,EAAKuH,QACLvH,EAAKwH,SAASxH,EAAK1X,QAAQqE,SAC3BqT,EAAKyH,cACLzH,EAAK0H,SACL1H,EAAK2H,YACL3H,EAAK4H,SACL5H,EAAK6H,aACL7H,EAAK8H,WACL9H,EAAK+H,oBACL/H,EAAKgI,aACLhI,EAAKiI,eACLjI,EAAKkI,cACLlI,EAAKmI,aACLnI,EAAKoI,WACLpI,EAAKqI,YACLrI,EAAKsI,6BACLtI,EAAKuI,oBACDvI,EAAK1X,QAAQkgB,SACbxI,EAAKM,WAAWmI,SAEhBzI,EAAK0I,OAAS1I,EAAK2I,UAAY,EAC/B3I,EAAK4I,WAEL5I,EAAKvU,gBACLuU,EAAKiB,QAAQ4H,SAAS,wBACtB7I,EAAK8I,eAAiB,WAClB9I,EAAK+I,UAETlkB,EAAEiC,QAAQwF,GAAG,SAAWE,GAAIwT,EAAK8I,iBAErC/hB,GAAMiiB,OAAOhJ,IAEjBe,QACI/D,GACA,cACA,SACAI,GACAC,GACAC,GACAZ,GACAC,GACAE,GACAD,GACAE,GACAR,GACAC,GACAC,GACAC,GACAU,GACAJ,GACAmB,GACAC,GACAjB,GACAD,GACAmB,GACAC,GACAC,GACA,OACA,OACA,SACA,QACA,cACA,iBAEJ+B,cAAe,SAAUC,GAAV,GACPN,GAAO3Y,KACP4hB,EAAajJ,EAAK1X,QAAQ2gB,UAC9BjJ,GAAK1X,QAAQgY,WAAaA,EAC1BN,EAAKyH,cACLzH,EAAK2H,YACL3H,EAAK4H,SACDqB,IACIA,EAAWC,QACXlJ,EAAKtU,QAAQE,KAAK,+BAA+B6M,WAAW,GAE5DuH,EAAKtU,QAAQ+M,WAAW,IAG5BuH,EAAK1X,QAAQ6gB,WACbnJ,EAAK6H,aAEL7H,EAAKoJ,mBACLpJ,EAAKoJ,kBAAkB/I,cAAcL,EAAK1X,QAAQgY,YAElDN,EAAK1X,QAAQ4R,aACb8F,EAAKiI,eAELjI,EAAK1X,QAAQ4Q,YACb8G,EAAKkI,cAELlI,EAAK1X,QAAQkgB,UACblI,EAAWmI,SAGnBngB,SACI+D,KAAM,OACNM,WACA0c,QAAS,KACTb,UAAU,EACVc,YAAY,EACZL,YAAY,EACZM,UAAU,EACVrQ,YAAY,EACZsQ,WAAW,EACXtP,aAAa,EACbuP,UAAU,EACVC,kBAAkB,EAClBvQ,UAAU,EACVgQ,WAAW,EACXQ,YAAa,GACbC,eAAgB,GAChBC,WAAW,EACXvJ,cACAna,OAAQ,KACR2jB,WAAW,EACXC,aAAa,EACbC,YAAY,EACZC,eAAgB,KAChBC,wBAAyB,EACzBC,OAAQ,GACRC,UACIjR,UACIkR,aAAcjL,GACdkL,aAAcrL,GACdsL,cAAepL,IAEnBpT,UACI4a,OAAQD,GAAgBC,OAAO5hB,KAC/ByhB,OAAQE,GAAgBF,OAAOzhB,KAC/B8hB,KAAMH,GAAgBG,KAAK9hB,KAC3Bic,QAAS0F,GAAgB1F,QAAQjc,KACjC+hB,KAAMJ,GAAgBI,KAAK/hB,KAC3BgiB,OAAQL,GAAgBK,OAAOhiB,KAC/BiiB,WAAYN,GAAgBM,WAAWjiB,KACvCkiB,MAAOP,GAAgBO,MAAMliB,KAC7BmiB,IAAKR,GAAgBQ,IAAIniB,MAE7B8kB,UAAW3K,GACXsL,2BAA4B,KAGpCxJ,QAAS,WACL,GAAiB3H,GAAb2G,EAAO3Y,IACX2Y,GAAKyK,cAAc,WACnBzK,EAAK0K,4BACLzP,GAAOgF,GAAGe,QAAQd,KAAKF,GACvB3Y,KAAKsjB,mBAAqB,KACtB3K,EAAK8I,gBACLjkB,EAAEiC,QAAQqa,IAAI,SAAW3U,GAAIwT,EAAK8I,gBAElC9I,EAAK4K,OAAS5K,EAAK4K,MAAMvR,SACzB2G,EAAK4K,MAAM5J,UAEfhB,EAAK4K,MAAQ,KACT5K,EAAKmJ,WAAanJ,EAAKmJ,UAAU9P,SACjC2G,EAAKmJ,UAAU9P,QAAQwR,eAAe,WAE1C7K,EAAKmJ,UAAY,KACbnJ,EAAK1X,QAAQyhB,aACb/J,EAAKiB,QAAQnK,KAAK,oBAAoBkK,UAEtChB,EAAK9G,YAAc8G,EAAK9G,WAAWG,UACnC2G,EAAK9G,WAAW8H,UAChBhB,EAAK8K,YACD9K,EAAK1X,QAAQohB,oBAAqB,IAClC1J,EAAK+K,aAAe,MAEpB/K,EAAKgL,cACLhL,EAAKiB,QAAQE,IAAI,UAAWnB,EAAKgL,aACjChL,EAAKQ,OAAOR,EAAKgL,cAEjBhL,EAAKiL,uBACLjL,EAAKQ,OAAOR,EAAKiL,sBACjBjL,EAAKiL,qBAAuB,MAE5BjL,EAAKkL,kBACLlL,EAAKiB,QAAQE,IAAI,QAASnB,EAAKkL,mBAGvClL,EAAK9G,WAAa,KACd8G,EAAK8J,YACL9J,EAAK8J,UAAU9I,UACXhB,EAAKmL,oBACDnL,EAAKoL,mCACLvmB,EAAEsD,UAAUgZ,IAAI,QAASnB,EAAKoL,mCAElCpL,EAAKmL,kBAAkBnK,UACvBhB,EAAKmL,kBAAoB,MAE7BnL,EAAK8J,UAAY,MAErB9J,EAAKqL,4BACLrL,EAAKsL,mBACDtL,EAAKM,aACLN,EAAKM,WAAWE,OAAOxD,GAAQgD,EAAKG,iBAAiBK,OAAO7E,GAAUqE,EAAKuL,kBAAkB/K,OAAO5E,GAAOoE,EAAKwL,eAChHxL,EAAKG,gBAAkBH,EAAKuL,iBAAmBvL,EAAKwL,cAAgB,MAExEnS,EAAU2G,EAAK3G,QAAQxO,IAAImV,EAAKiB,SAASpW,IAAImV,EAAK3L,OAAOxJ,IAAImV,EAAKjQ,OAAOlF,IAAImV,EAAKiB,QAAQrV,KAAK,qBAC3FoU,EAAKtU,UACL2N,EAAUA,EAAQxO,IAAImV,EAAKtU,SAASb,IAAImV,EAAKtU,QAAQE,KAAK,iCAE1DoU,EAAKrG,cACLqG,EAAKyL,0BAELzL,EAAK0L,MACL1L,EAAK0L,KAAK1K,UAEVhB,EAAK2L,wBACL9mB,EAAEiC,QAAQqa,IAAI,SAAUnB,EAAK2L,wBAE7B3L,EAAK4L,oBAAsB5L,EAAK4L,mBAAmBvS,SACnD2G,EAAK4L,mBAAmB5K,UAE5BhB,EAAK4L,mBAAqB,KAC1BvS,EAAQ8H,IAAI3U,IACZzF,GAAMia,QAAQhB,EAAKiB,SACnBjB,EAAK2J,YAAc3J,EAAK4J,eAAiB5J,EAAK6L,kBAAoB7L,EAAK8L,qBAAuB9L,EAAKiK,eAAiBjK,EAAK+L,eAAiB/L,EAAKgM,oBAAsBhM,EAAKiM,0BAA4BjM,EAAKkM,kBAAoB,KAC/NlM,EAAKmM,YAAcnM,EAAKjQ,MAAQiQ,EAAK5L,MAAQ4L,EAAK3G,QAAU2G,EAAK3L,MAAQ2L,EAAKtU,QAAUsU,EAAKoM,OAASpM,EAAKiB,QAAUjB,EAAKvG,YAAcuG,EAAKvU,cAAgBuU,EAAKrG,aAAeqG,EAAKqM,aAAerM,EAAKsM,uBAAyBtM,EAAKuM,WAAavM,EAAKwM,wBAA0B,MAExRC,WAAY,WAAA,GAGJhiB,GAEA6V,EACAoM,EALApkB,EAAUjB,KAAKiB,OAuBnB,OAtBAA,GAAQgY,WAAa,KACjB7V,EAASvD,IAAO,KAAUG,KAAKiB,SACnCmC,EAAOkC,QAAU5F,GAAM0C,cAAepC,KAAKsF,SACvC2T,EAAajZ,KAAKiZ,WAClBoM,EAAcpM,EAAWhY,QAAQwO,MAAQwJ,EAAWqM,MACxDrM,EAAWhY,QAAQwO,KAAO,KAC1BrM,EAAO6V,WAAazb,EAAEqC,QAAO,KAAUoZ,EAAWhY,SAClDgY,EAAWhY,QAAQwO,KAAO4V,EAC1BjiB,EAAO6V,WAAWxJ,KAAO4V,EACzBjiB,EAAO6V,WAAWmG,KAAOnG,EAAWmG,OACpChc,EAAO6V,WAAW3U,OAAS2U,EAAW3U,SACtClB,EAAO6V,WAAWqE,SAAWrE,EAAWqE,WACxCla,EAAO6V,WAAW7a,KAAO6a,EAAW7a,OACpCgF,EAAO6V,WAAWsM,MAAQtM,EAAWsM,QACrCniB,EAAO6V,WAAWuM,UAAYvM,EAAWuM,YACrCpiB,EAAO6V,WAAWwM,YAClBriB,EAAO6V,WAAWwM,UAAUxM,WAAa,MAEzC7V,EAAOgf,UAAYhf,EAAOgf,SAAS9E,WACnCla,EAAOgf,SAAS9E,SAAWrE,EAAWqE,YAE1Cla,EAAOsiB,SAAWhjB,EACXU,GAEXuiB,WAAY,SAAU1kB,GAAV,GAMJ2Y,GACAF,EACA1H,EAII4T,EAXJC,EAAiB7lB,KAAKolB,YAC1B1lB,IAAM0C,WAAWyjB,EAAgB5kB,GAC5BA,EAAQgY,aACT4M,EAAe5M,WAAajZ,KAAKiZ,YAEjCW,EAAU5Z,KAAK4Z,QACfF,EAAS1Z,KAAKggB,QACdhO,EAAUhS,KAAKgS,QACnBhS,KAAK2Z,UACL3Z,KAAKiB,QAAU,KACXjB,KAAK8lB,YACDF,EAAgBhM,EAAQzN,QAAQzM,GAAMiT,aAAa,SAASzI,SAChE0b,EAAcG,MAAMnM,GACpBgM,EAAcza,SACdyO,EAAQoM,YAAY,kBAEpBpM,EAAQ,KAAO5H,EAAQ,KACvB4H,EAAQ9V,OAAOkO,GACf4H,EAAQzO,UAEZ6G,EAAQ9E,QACRlN,KAAKF,KAAKkS,EAAS6T,EAAgBnM,GACnC1Z,KAAKimB,WAAWJ,IAEpBlW,MAAO,WACH,MAAI3P,MAAKoE,cACEpE,KAAKkmB,OAAOlmB,KAAK+M,OAAOvJ,IAAIxD,KAAKkmB,OAAOlmB,KAAKoS,YAAYhK,SAAS,WAElEpI,KAAKkmB,OAAOlmB,KAAK+M,QAGhCmZ,OAAQ,SAAUzhB,GACd,MAAOA,GAAU2D,WAAW9D,OAAO,WAC/B,GAAI6hB,GAAK3oB,EAAEwC,KACX,QAAQmmB,EAAGld,SAAS,oBAAsBkd,EAAGld,SAAS,kBAAoBkd,EAAGld,SAAS,qBAG9Fmd,UAAW,WAAA,GAGCC,GAAsBjZ,EACjB5O,EAHT4nB,EAAY1mB,GAAM6T,GAAGwM,gBAAgBnH,GAAGwN,UAAUvN,KAAK7Y,KAC3D,IAAIA,KAAKoE,cAAe,CAEpB,IADIiiB,EAAID,EAAU1nB,OAAQ0O,EAAUnK,MAAM,EAAIojB,GACrC7nB,EAAI6nB,IAAK7nB,GAAK,GACnB4O,EAAI5O,GAAK4O,EAAI5O,EAAI6nB,GAAKD,EAAU5nB,EAEpC4nB,GAAYhZ,EAEhB,MAAOgZ,IAEX/C,0BAA2B,WACvB,GAAI1K,GAAO3Y,IACX2Y,GAAK2N,aAAe,KACf3N,EAAKjQ,QAGV1I,KAAKumB,QAAQ,UAAW,WACpB,OAASpiB,SAAUwU,EAAKjQ,MAAM9H,SAElC+X,EAAKjQ,MAAMlF,IAAImV,EAAKrG,cAAc/N,KAAK,MAAMiiB,KAAK,WAC9C,GAAIlY,GAAK9Q,EAAEwC,MAAOymB,EAAanY,EAAGmB,KAAK,mBAAoByS,EAAW5T,EAAGmB,KAAK,qBAAsBkT,EAAarU,EAAGmB,KAAK,kBACrHgX,IACAA,EAAW9M,UAEXuI,GACAA,EAASvI,UAETgJ,GACAA,EAAWhJ,cAIvBsH,2BAA4B,WACxB,GAA4Dtc,GAASZ,EAAKrF,EAAtEia,EAAO3Y,KAAMsF,EAAUyD,EAAY4P,EAAKrT,YAC5C,KAAKvB,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACjDY,EAAUW,EAAQvB,GAAKY,QACnBA,GACAH,EAAyBmU,EAAMA,EAAKiB,QAASjV,IAIzDub,MAAO,WACH,GAAIha,GAAKlG,KAAKgS,QAAQlP,KAAK,OAAS,MAChCoD,KACAlG,KAAK0mB,QAAUxgB,EAAK,iBAG5B+Z,SAAU,WACN,GAAItH,GAAO3Y,KAAMgN,EAAQ2L,EAAK3G,OACzBhF,GAAMa,GAAG,WAENb,EADA2L,EAAK1X,QAAQ2gB,WACLjJ,EAAK3G,QAAQzN,KAAK,6BAElBoU,EAAK3G,QAAQ5J,SAAS,SAE7B4E,EAAMtO,SACPsO,EAAQxP,EAAE,aAAa0G,SAASyU,EAAK3G,WAGzCyG,IACAzL,EAAMlK,KAAK,cAAe,GAE9B6V,EAAK3L,MAAQA,EAAMlK,KAAK,OAAQ6V,EAAKgO,cAAgB,WAAa,QAClEhO,EAAKiO,YAETC,oBAAqB,SAAUpiB,EAAW6J,GAArB,GAMbwY,GAWIhe,EACK/E,EAeDgjB,EAAuEC,EAA2DhJ,EAAyHiJ,EAhCnQtO,EAAO3Y,KACPknB,EAAiBvO,EAAK1X,QAAQ4hB,wBAC9BjB,EAAajJ,EAAK1X,QAAQ2gB,WAC1B0E,EAAe3N,EAAK2N,aACpBte,EAAShI,KAAKshB,SAUlB,IARIgF,GAAgB3N,EAAKvU,eAAiBkiB,EAAa7W,KAAK,MAAM,KAAOnB,EAAG,KACxEgY,EAAaxM,IAAI3U,IAAIgG,SACrBmb,EAAe,MAEdA,IACDA,EAAe3N,EAAK2N,aAAe9oB,EAAE,gFACrCiH,EAAUiF,OAAO4c,IAEhB9N,GAgBDsO,EAAOxY,EAAG1F,WAAWke,KACjBlF,IACImF,EAAazY,EAAGnC,QAAQ,8CAA+C6a,EAAejZ,GAAQC,KAAO+Y,EAAW3V,aAAe,EAAG4M,EAAmBjQ,GAAQkQ,OAAS8I,EAAW,GAAG/H,YAAc+H,EAAW,GAAGjlB,YAAcilB,EAAW3V,aAAe,EAAG6V,EAAoBlZ,GAAQoZ,QAAUJ,EAAW,GAAG/H,YAAc+H,EAAW,GAAGjlB,aAAeilB,EAAW,GAAG/H,YAAc+H,EAAW,GAAGjlB,YAAcilB,EAAW3V,cAAgB,EACjb0V,GAAQ9I,EAAmBiJ,EAAoBD,OAnB3C,CAGR,IAFAF,EAAOxY,EAAG,GAAGxM,YACTgH,EAAQ2C,EAAc6C,EAAGnC,QAAQ,UAAU7H,OAAO,YAC7CP,EAAM,EAAGA,EAAM+E,EAAMpK,QACtBoK,EAAM/E,IAAQuK,EAAG,GADavK,IAIlC+iB,GAAQhe,EAAM/E,GAAKjC,WAEnBkG,GAAS,IACT8e,GAAQjT,GAAWpP,EAAUF,KAAK,wBAA0ByD,GAE5D2Q,EAAKgO,gBACLG,GAAQjT,GAAWpP,EAAUF,KAAK,6BAS1C+hB,EAAa7iB,KACT2Z,IAAK9O,EAAG1F,WAAWwU,IACnB0J,KAAMA,EAAOI,EACbpoB,OAAQiV,GAAYzF,GACpBzP,MAAwB,EAAjBqoB,IACRzX,KAAK,KAAMnB,GAAI8Y,OAClBd,EAAaxM,IAAI,WAAa3U,IAAIF,GAAG,WAAaE,GAAI,WAClDwT,EAAK0O,mBAAmB/Y,EAAGmB,KAAK,aAGxC6X,4BAA6B,WACzB,GAAI3O,GAAO3Y,KAAMknB,EAAiBvO,EAAK1X,QAAQ4hB,wBAAyB0E,EAAa5O,EAAKrG,aAAeqG,EAAKrG,aAAa/N,KAAK,eAAiB/G,GACjJmb,GAAKjQ,MAAMlF,IAAI+jB,GAAYtiB,GAAG,YAAcE,GAAI,KAAM,SAAUoM;AAK5D,QAASiW,KAAT,GAKQC,GAJAC,EAAUC,WAAWnqB,EAAEsD,SAAS8mB,iBAAiBnkB,IAAI,QAQzD,OAPIokB,OAAMH,KACNA,EAAU,GAEVD,EAAWE,WAAWnqB,EAAEsD,SAASe,MAAM4B,IAAI,SAC3CokB,MAAMJ,KACNA,EAAW,GAERC,EAAUD,EAd6B,GAgB9CK,GAA0CC,EAAwCnf,EAflF0F,EAAK9Q,EAAEwC,KACPsO,GAAGrF,SAAS,iBAAmBqF,EAAGrF,SAAS,sBAc3C6e,EAAUvW,EAAEuW,QAAUN,IAAoBO,EAAgBvqB,EAAEiC,QAAQ2R,aAAcxI,EAAW0F,EAAG3F,SAASme,MAAStO,GAA2B,EAAnBxY,KAAK8B,aAC/HgmB,EAAUC,EAAgBnf,EAAWse,GAAkBY,EAAUC,EAAgBnf,EAAWse,EAC5FvO,EAAKkO,oBAAoBvY,EAAGnC,QAAQ,OAAQmC,GACrCqK,EAAK2N,aACZ3N,EAAK2N,aAAa9gB,OAElBlC,EAAOqV,EAAKiB,QAAS,QAIjCoO,2BAA4B,SAAUzW,GAC9B/T,EAAE+T,EAAE1J,QAAQsE,QAAQ,oBAAoBzN,SAG5ClB,EAAEsD,UAAUgZ,IAAIvI,GAChBvR,KAAKioB,sBAETA,kBAAmB,WACXjoB,KAAKsmB,eACLtmB,KAAKsmB,aAAa7W,KAAK,MAAMuW,YAAY,mBACrChmB,KAAKoE,gBAAkBpE,KAAK8lB,WAC5B9lB,KAAKsmB,aAAaxM,IAAI3U,IAAIgG,SAC1BnL,KAAKsmB,aAAe,MAEpBtmB,KAAKsmB,aAAa9gB,SAI9B0iB,iCAAkC,WAC9B,GAAIvP,GAAO3Y,KAAMunB,EAAa5O,EAAKrG,aAAeqG,EAAKrG,aAAa/N,KAAK,eAAiB/G,GAC1Fmb,GAAKmL,kBAAoB,GAAIpkB,IAAM2a,WAAWkN,EAAW/jB,IAAImV,EAAKjQ,QAC9DpE,OAAQ,+CACR6jB,UAAW,GACXC,KAAM,SAAU7W,GACZ,GAAIjD,GAAK9Q,EAAE+T,EAAE1J,OACb0J,GAAEG,iBACFpD,EAAGkT,SAAS,mBACZ7I,EAAKkO,oBAAoBvY,EAAGnC,QAAQ,OAAQmC,GACvCqK,EAAKoL,oCACNpL,EAAKoL,kCAAoC3e,GAAMuT,EAAKqP,2BAA4BrP,IAEpFnb,EAAEsD,UAAUmE,GAAG,QAAS0T,EAAKoL,uCAIzCsE,WAAY,WACR,GAAyC5jB,GAAW6jB,EAAaC,EAAaC,EAAgBC,EAA2GC,EAAUC,EAAKra,EAApNqK,EAAO3Y,KAAMiB,EAAU0X,EAAK1X,QAAyE2nB,EAAW5oB,KAAK8lB,UAAW9L,EAAata,GAAM+S,QAAQoW,SAAuC,EAA5BnpB,GAAM+S,QAAQuH,WACpL/Y,GAAQwhB,YACRhe,EAAYxD,EAAQ2gB,WAAajJ,EAAKiB,QAAQrV,KAAK,6BAA+BoU,EAAKiB,QACnFgP,EACAjQ,EAAKuP,iCAAiCzjB,GAEtCkU,EAAK2O,4BAA4B7iB,GAEjCkU,EAAK8J,WACL9J,EAAK8J,UAAU9I,UAEnBhB,EAAK8J,UAAY,GAAIlP,IAAGuV,UAAUrkB,EAAUjB,IAAImV,EAAKrG,eACjDyW,QAAW9nB,EAAQ2gB,WAAa,GAAK,KAAO,mBAC5CoH,KAAM,SAAUD,GACZ,MAAOvrB,GAAE,2CAA2CiG,KAAM3E,OAAQiV,GAAYgV,EAAOtZ,KAAK,OAASkJ,EAAK5L,MAAMjK,KAAK,mBAEvH0X,MAAO,SAAUjJ,GAAV,GAKC0X,GAA8Bnf,EAE9Bof,EAAyDnE,CAN7DzW,GAAK9Q,EAAE+T,EAAEW,eAAezC,KAAK,MACzBmZ,GACAjQ,EAAKsP,oBAELgB,EAAS3a,EAAGnC,QAAQ,SAAUrC,EAAQtM,EAAE4M,QAAQkE,EAAG,GAAI7C,EAAc6C,EAAGnC,QAAQ,UAAU7H,OAAO,aACrGokB,EAAWO,EAAO/e,SAASjB,SAAS,wBAChCigB,EAAeR,EAAW/P,EAAKvG,YAAcuG,EAAK3L,MAAO+X,EAASpM,EAAKoM,QAAUvnB,IACjFmb,EAAKoM,QAAUpM,EAAKvU,gBACpB2gB,EAAoBpM,EAAKoM,OAAO3c,SAAvBsgB,EAAgC,wBAAgD,wBAE7FplB,EAAOqV,EAAKiB,QAAS,cAEjB+O,EADA1nB,EAAQ2gB,WACFqH,EAAO1kB,KAAK,kDAAoDuF,EAAQ,KAAKtG,IAAI0lB,EAAa9gB,SAAS,YAAY7D,KAAK,kDAAoDuF,EAAQ,MAAMtG,IAAIuhB,EAAOxgB,KAAK,YAAYA,KAAK,kDAAoDuF,EAAQ,MAEvRof,EAAa9gB,SAAS,YAAY7D,KAAK,kDAAoDuF,EAAQ,KAE7Gwe,EAAc/W,EAAEuJ,EAAEqO,SAClBZ,EAAc1U,GAAWvF,GACzBka,EAAiBzf,EAAY4P,EAAKrT,SAASwE,GAAOsf,mBAAqB,GACvEX,EAAuB5U,GAAX6U,EAAsBQ,EAAa9gB,SAAS,SAAuBuQ,EAAK5L,OAChFgB,GAAQkQ,QACRtF,EAAKiB,QAAQ4H,SAAS,2BAG9BE,OAAQ,SAAUnQ,GAAV,GAGIwT,GASAkE,EACAC,EACAG,EACAC,EACAzqB,EAfJ0qB,EAAgB/Q,MAAa,EAAGgR,EAAejB,EAAchX,EAAEuJ,EAAEqO,SAAWI,EAAgBjB,EAAciB,CAC1GtoB,GAAQ2gB,YAEJ8G,GAAY/P,EAAKqM,aACjBD,EAASpM,EAAKqM,aAAa5c,SAAS,SAC7BuQ,EAAKoM,SACZA,EAASpM,EAAKoM,OAAOxgB,KAAK,+BAEzBwgB,GAAWA,EAAO,KACnBA,EAASvnB,KAETyrB,EAAS3a,EAAGnC,QAAQ,SACpB+c,EAAeR,EAAW/P,EAAKvG,YAAcuG,EAAK3L,MAClDqc,GAAY,EACZC,EAAa3Q,EAAKiB,QAAQ/a,QAAUmb,EACpCnb,EAAQ2qB,EACRd,GAAYD,EAAYF,EAAc1pB,EAAQyqB,IAC9CzqB,EAAQ0pB,GAAee,EAAab,EAAwB,EAAZzO,GAC5Cnb,EAAQ,IACRA,EAAQ2qB,GAEZH,GAAY,GAEZxqB,EAAQ,IAAMA,GAAS2pB,IACvBG,EAAIllB,IAAI,QAAS5E,GACb4pB,IAEI5pB,EADAwqB,EACQC,EAAyB,EAAZtP,EAEbyO,EAAYlX,EAAEuJ,EAAEqO,SAAWI,EAAgBjB,EAAciB,EAErEL,EAAa1lB,IAAIylB,GAAQzlB,IAAIuhB,GAAQthB,IAAI,QAAS5E,GAC7C6pB,IACD/P,EAAK8Q,aAAe5qB,MAIzB2qB,EAAe,IAAMA,GAAgBhB,GAC5CG,EAAIllB,IAAI,QAAS+lB,IAGzBE,UAAW,WAAA,GACwBjkB,GAAQwjB,EAO/Bnf,EAPJ6f,EAAW9V,GAAWvF,EAC1BhL,GAAOqV,EAAKiB,QAAS,IACjB7L,GAAQkQ,QACRtF,EAAKiB,QAAQoM,YAAY,0BAEzBuC,GAAeoB,IACfV,EAAStQ,EAAKrG,aAAeqG,EAAKrG,aAAa/N,KAAK,wBAAwBf,IAAImV,EAAKjQ,MAAMnE,KAAK,aAAe+J,EAAGpE,SAC9GJ,EAAQwE,EAAGxL,KAAKpD,GAAMoD,KAAK,UAC1BgH,IACDA,EAAQmf,EAAO1kB,KAAK,gDAAgDuF,MAAMwE,IAE9E7I,EAASsD,EAAY4P,EAAKrT,SAASwE,GACnCrE,EAAO5G,MAAQ8qB,EACfhR,EAAKwD,QAAQtF,IACTpR,OAAQA,EACRmkB,SAAUrB,EACVoB,SAAUA,IAEdhR,EAAKkR,8BACLlR,EAAKmR,2BACLnR,EAAKoR,2BAETpR,EAAKsP,oBACL3Z,EAAK,UAKrB0b,WAAY,WAAA,GAMAf,GALJtQ,EAAO3Y,IACP2Y,GAAK1X,QAAQyhB,cACT/J,EAAK4L,oBACL5L,EAAK4L,mBAAmB5K,UAExBsP,EAAStQ,EAAKiB,QAAQxR,SAAS,kBACnCuQ,EAAK4L,mBAAqB5L,EAAKiB,QAAQqQ,gBACnC1E,MAAO7lB,GAAMuG,OACbikB,YAAY,EACZ5lB,OAAQqU,EAAKtU,QAAU,wBAA0B2Q,GAAc,8BAAgCA,GAC/FmV,UAAW,WACPlB,EAAO7gB,SAAS,uBAAuB+Q,OAAO,SAAWhU,GAAK,aAAaiU,KAAK,SAAWjU,GAAK,YAAa,SAAUoM,GAC/GoH,EAAKoJ,kBACLpJ,EAAKtU,QAAQE,KAAK,+BAA+B6M,WAAWpR,KAAKoR,YAEjEuH,EAAKmM,YAAYsF,IAAI7Y,EAAEW,eAAed,WAAWpR,KAAKoR,eAIlEiZ,QAAS,WACLpB,EAAO7gB,SAAS,uBAAuB+Q,OAAO,SAAWhU,GAAK,cAElE4U,KAAM,WACFpB,EAAKsP,qBAETe,KAAM,SAAUnhB,GACZ,GAAIyiB,GAAQziB,EAAO/E,KAAKpD,GAAMoD,KAAK,SAInC,OAHIwnB,KACAA,EAAQ5qB,GAAMqP,WAAWub,IAEtB9sB,EAAE,wCAAwCiG,KAC7C5E,MAAOgJ,EAAOhJ,QACd0rB,YAAa1iB,EAAOpE,IAAI,eACxB+mB,aAAc3iB,EAAOpE,IAAI,gBACzBgnB,WAAY5iB,EAAO/I,SAAW,KAC9B4rB,WAAY7iB,EAAOpE,IAAI,cACvBknB,cAAe9iB,EAAOpE,IAAI,mBAC3BwJ,KAAKqd,GAASziB,EAAO/E,KAAKpD,GAAMoD,KAAK,WAAa+E,EAAOnK,QAAQoQ,QAAQ,uDAEjF2B,KAAK,oBAGhBmb,aAAc,WACV,GAAIjS,GAAO3Y,IACP2Y,GAAK1X,QAAQyhB,cACT/J,EAAKiB,QAAQnK,KAAK,qBAClBkJ,EAAKiB,QAAQnK,KAAK,oBAAoBkK,UAE1ChB,EAAKiB,QAAQiR,kBACTC,UAAWnS,EAAK4L,mBAChBwG,mBAAoB,SAAU/mB,EAAawG,GACvC,GAAIlF,GAAU+E,EAAsBsO,EAAKrT,QACzC,OAAOA,GAAQtB,GAAagnB,YAAa,GAASzgB,EAA2BjF,EAASqT,EAAKrT,QAAStB,EAAawG,OAErHygB,gBAAiB,SAAU1Z,GACvB,MAAO/T,GAAE+T,EAAE3N,QAAQsG,SAAS,KAAO1M,EAAE+T,EAAE1J,QAAQqC,SAAS,IAAMK,EAA2BF,EAAsBsO,EAAKrT,SAAUqT,EAAKrT,QAASiM,EAAEvN,YAAauN,EAAE/G,iBAEjK0gB,OAAQ,SAAU3Z,GAAV,GACAjM,GAAU+E,EAAsBsO,EAAKrT,SACrCG,EAASH,EAAQiM,EAAE4Z,UACnBC,EAAW7gB,EAA2BjF,EAASqT,EAAKrT,QAASiM,EAAE4Z,SAAU5Z,EAAE6Z,SAC/EzS,GAAKwD,QAAQrF,IACTsU,SAAUA,EACVD,SAAU/gB,GAAQ3E,EAAQH,GAC1BG,OAAQA,IAEZkT,EAAK0S,cAAcD,EAAU3lB,EAAuB,WAAf8L,EAAE3I,eAKvD0iB,eAAgB,SAAU1jB,EAASC,EAAQ/D,GAA3B,GAKHC,GAKLyF,EACA+hB,EACAC,EAXA7S,EAAO3Y,KACPsJ,EAAiBJ,EAAetB,EAAQ,GAAI+Q,EAAKrT,SACjDmmB,EAAeviB,EAAerB,EAAQ8Q,EAAKrT,SAC3CwC,IACJ,KAAS/D,EAAM,EAAGA,EAAM6D,EAAQlJ,OAAQqF,IAChC6D,EAAQ7D,GAAKuB,UACbwC,EAAQA,EAAM6B,OAAO/B,EAAQ7D,GAAKuB,SAGtCkE,GAAMrF,EAASwU,EAAKrG,aAAcqG,EAAKjQ,MAAO,SAAWY,EAAeH,IAAM,sDAC9EoiB,EAAsBhkB,EAAcK,GAASlJ,OAC7C8sB,EAAsBjkB,GAAeM,IAASnJ,OAC9CoJ,EAAMpJ,QACF6sB,EAAsB,GAA6B,IAAxBC,EAC3B7jB,EAA2BC,EAASC,EAAQC,EAAO6Q,EAAKrT,QAASqT,EAAKrG,aAAa/N,KAAK,SAAUoU,EAAKjQ,MAAO1I,KAAKshB,WACpF,IAAxBiK,GAA6BC,EAAsB,GAC1D7jB,EAA2BC,EAASC,EAAQC,EAAO6Q,EAAKrT,QAASqT,EAAKjQ,MAAOiQ,EAAKrG,aAAa/N,KAAK,SAAUvE,KAAKshB,YAEnHzZ,EAAOvC,SAAWgE,EAAenC,KAAOskB,EAAatkB,KAAO,GAAKskB,EAAatkB,KAAOmC,EAAenC,KAAO,KAC3GU,EAASoC,EAAkB0O,EAAKrT,QAASuC,EAAQD,EAAQ,GAAI9D,GACzD+D,GACA8Q,EAAK2S,eAAexjB,EAAOD,EAAQ/D,KAGpCynB,IAAwBC,GAC/BtkB,EAAkBsC,EAAIF,EAAenC,MAAOwR,EAAKrT,QAASimB,GAE9D7nB,EAAQ8F,EAAKF,EAAenC,KAAMskB,EAAatkB,KAAMrD,EAAQ8D,EAAQlJ,SAEzEgtB,gBAAiB,SAAU9jB,EAASG,EAAajE,GAAhC,GAYE6nB,GAwBX1jB,EAWKlE,EAASrF,EA9Cdia,EAAO3Y,KACP4rB,EAAapuB,IACboG,EAASgE,EAAQ,GACjBikB,EAAiB/kB,EAAec,GAChC5D,EAAcoG,GAAQxG,EAAQmF,EAAY4P,EAAKrT,UAC/CwmB,EAAY1hB,GAAQrC,EAAagB,EAAY4P,EAAKrT,UAClDymB,EAAiB3hB,GAAQxG,EAAQ4H,EAAmBmN,EAAKrT,UACzD0mB,EAAU5hB,GAAQrC,EAAayD,EAAmBmN,EAAKrT,UACvD2mB,EAAc1kB,EAAcoR,EAAKrT,SAAS5G,OAC1CgqB,IAAa3gB,EAAYiC,OACzB+a,EAASpM,EAAKoM,QAAUpM,EAAKiB,QAAQrV,KAAK,kBAC1C2nB,EACQP,EAAYK,CAkCxB,KAjCIjkB,EAAYrC,SACRgjB,GACAsD,EAAUrT,EAAKvG,YAAY7N,KAAK,YAChC2nB,EAAYvT,EAAKrG,aAAa/N,KAAK,YACnConB,EAAYnuB,EAAEmb,EAAKqM,cAAczgB,KAAK,qBAEtCynB,EAAUrT,EAAK5L,MAAMof,OACrBD,EAAYvT,EAAKjQ,MAAMyjB,OACvBR,EAAY5G,EAAOxgB,KAAK,uBAAuBA,KAAK,qBAGxDoU,EAAKyT,iBACL1oB,EAAQiV,EAAKiB,QAAQrV,KAAK,yDAA0DP,EAAa8nB,EAAWhoB,EAAQ8D,EAAQlJ,QAEhIgF,EAAQS,EAASwU,EAAKrG,aAAcqG,EAAKjQ,MAAMyjB,OAAQ,0CAA2CJ,EAAgBG,EAAWpoB,EAAQ+nB,EAAentB,QAChJia,EAAK1X,QAAQ2gB,YACble,EAAQS,EAASwU,EAAKvG,YAAauG,EAAK5L,MAAMof,OAAQ,0CAA2CJ,EAAgBC,EAASloB,EAAQ+nB,EAAentB,QAEjJqmB,GAAUA,EAAOrmB,SACjBgF,EAAQS,EAASwU,EAAKqM,aAAcD,EAAOxgB,KAAK,uBAAwB,0DAA2DwnB,EAAgBJ,EAAW7nB,EAAQ+nB,EAAentB,QACrLgF,EAAQqhB,EAAOxgB,KAAK,8DAA+DP,EAAa8nB,EAAWhoB,EAAQ8D,EAAQlJ,SAE3HuJ,EAAO0Q,EAAK5L,MAAM3E,SAAS,uCAC3BuQ,EAAKvG,cACD6Z,EAAcH,EACVG,GAAejoB,GACf+L,GAAc4I,EAAKvG,YAAY7N,KAAK,4BAA6BoU,EAAK3L,MAAMzI,KAAK,4BAA6BqD,EAAQlJ,QAEnHutB,EAAcjoB,GACrB+L,GAAc4I,EAAK3L,MAAMzI,KAAK,4BAA6BoU,EAAKvG,YAAY7N,KAAK,4BAA6BqD,EAAQlJ,QAE1HktB,EAAajT,EAAKvG,YAAY7N,KAAK,iDAE9BR,EAAM,EAAGrF,EAASuJ,EAAKvJ,OAAQqF,EAAMrF,EAAQqF,GAAO,EACzDL,EAAQS,EAASynB,EAAW7nB,GAAMkE,EAAKlE,GAAM,4CAA6CC,EAAa8nB,EAAWhoB,EAAQ8D,EAAQlJ,SAG1I2oB,mBAAoB,SAAUgF,GAC1BrsB,KAAKssB,cAAcvjB,EAAY/I,KAAKsF,SAAS+mB,KAEjDC,cAAe,SAAU7mB,GAAV,GACsDqE,GAAOwE,EAAI+D,EAAaqW,EAAsIC,EAAK4D,EAAYnb,EAuB5O8X,EAAyDnE,EAIzDyH,EAIKC,EAkBLC,EACAC,EAMAC,EAIIhiB,EAAgCC,EAAUye,EACrCvlB,EAASrF,EA7DlBia,EAAO3Y,KAAMiB,EAAU0X,EAAK1X,QAASqE,EAAUqT,EAAKrT,QAA2CunB,EAAgBlU,EAAKrG,aAAe7G,EAAckN,EAAKrG,aAAa/N,KAAK,iBAAiBD,OAAOsC,GAAelI,OAAS,EAAgCouB,EAAyB,8CAA+CC,EAAiC,sDAYrW,IAVItnB,EADiB,gBAAVA,GACEH,EAAQG,GACVX,GAAcW,GACZsB,GAAKuD,EAAYhF,GAAU,SAAUoJ,GAC1C,MAAOA,KAASjJ,IACjB,GAEMsB,GAAKuD,EAAYhF,GAAU,SAAUoJ,GAC1C,MAAOA,GAAK9I,QAAUH,IACvB,GAEFA,GAAWI,EAAUJ,GAA1B,CAmBA,IAhBAqE,EAAQM,GAAQ3E,EAAQsD,EAAYzD,IACpCojB,EAAWjjB,EAAOuE,OAEdqI,EADAqW,EACc/P,EAAKrG,aAAalK,SAAS,SAE3BuQ,EAAKjQ,MAAMwB,SAE7BoE,EAAK+D,EAAY9N,KAAK,gBAAmBuF,EAAQ,MAC7Cof,EAAeR,EAAW/P,EAAKvG,YAAcuG,EAAK3L,MAAO+X,EAASpM,EAAKoM,QAAUvnB,IACjFmb,EAAKoM,QAAUpM,EAAKvU,gBACpB2gB,EAAoBpM,EAAKoM,OAAO3c,SAAvBsgB,EAAgC,wBAAgD,wBAEzF8D,EAAczH,EAAOxgB,KAAK,SAAS2V,QACnCvB,EAAKrG,eAAiBoW,IACtB5e,GAAS+iB,GAEJJ,EAAI,EAAGA,EAAInnB,EAAQ5G,QACpB4G,EAAQmnB,KAAOhnB,EADagnB,IAIxBnnB,EAAQmnB,GAAG/mB,QACXoE,GAuBZ,IAnBI7I,EAAQ2gB,YACR+G,EAAMtW,EAAY9N,KAAKuoB,GAAwB7oB,GAAG6F,GAAOtG,IAAI0lB,EAAa9gB,SAAS,YAAY7D,KAAKuoB,GAAwB7oB,GAAG6F,IAAQtG,IAAIgpB,EAAYjoB,KAAK,YAAYA,KAAKuoB,GAAwB7oB,GAAG6F,IACnM4e,IACD6D,EAAarD,EAAahf,SAC1BkH,EAAamb,EAAWnb,eAG5BuX,EAAMO,EAAa9gB,SAAS,YAAY7D,KAAKuoB,GAAwB7oB,GAAG6F,GAExE4iB,EAASra,EAAY7O,IAAI0lB,GAAc1lB,IAAIgpB,GAC3CG,EAAiB9Y,GAAWvF,GAChCqa,EAAI9pB,MAAM,IACV6tB,EAAOjpB,IAAI,eAAgB,SAC3BklB,EAAI9pB,MAAM,QACV6tB,EAAOlL,SAAS,iBAChBkL,EAAOjpB,IAAI,eAAgB,IACvBmpB,EAAiBpgB,KAAKsP,KAAKtP,KAAKnD,IAAIwK,GAAWvF,GAAKuF,GAAWqV,EAAa3kB,KAAK,2BAA2BN,GAAG,GAAGmE,SAAS2kB,GAAgC9oB,GAAG6F,IAAS+J,GAAW2Y,EAAYjoB,KAAK,MAAMN,GAAG,GAAGmE,SAAS2kB,GAAgC9oB,GAAG6F,MAAY,EAC3Q6e,EAAI9pB,MAAM+tB,GACVnnB,EAAO5G,MAAQ+tB,EACX3rB,EAAQ2gB,WAAY,CAEpB,IADIhX,EAAOyH,EAAY9N,KAAK,OAAkB+kB,EAAa,EAClDvlB,EAAM,EAAGrF,EAASkM,EAAKlM,OAAQqF,EAAMrF,EAAQqF,GAAO,EAAG,CAE5D,GADA8G,EAAWD,EAAK7G,GAAK9E,MAAMJ,OACvBgM,GAAYA,EAASC,QAAQ,SAE1B,CACHwe,EAAa,CACb,OAHAA,GAAcve,SAASF,EAAU,IAMrCye,GACAoD,EAAOlG,KAAK,WACRxmB,KAAKf,MAAMJ,MAAQyqB,EAAa,OAIxCvb,GAAQC,MAA2B,GAAnBD,GAAQE,UACxBye,EAAOjpB,IAAI,UAAW,gBACtByK,WAAW,WACPwe,EAAOjpB,IAAI,UAAW,UACvB,IAEPipB,EAAO1G,YAAY,iBACf5U,GACAmb,EAAWnb,WAAWA,GAE1BuH,EAAKwD,QAAQtF,IACTpR,OAAQA,EACRmkB,SAAU+C,EACVhD,SAAUiD,IAEdjU,EAAKkR,8BACLlR,EAAKmR,2BACLnR,EAAKoR,4BAETsB,cAAe,SAAUS,EAAWrmB,EAAQ3B,GAA7B,GAC8KkpB,GAcrLC,EAdAtU,EAAO3Y,KAAMkK,EAAS/D,EAAaV,EAAQkT,EAAKrT,SAAUA,EAAU4E,EAASA,EAAO5E,QAAUqT,EAAKrT,QAAStB,EAAcoG,GAAQ3E,EAAQH,GAAU4nB,EAAa5nB,EAAQwmB,GAAyBpD,IAAawE,EAAWljB,OAAQiiB,EAAc1kB,EAAcoR,EAAKrT,SAAS5G,MAC5QsF,KAAgB8nB,KAGfrmB,EAAOuE,QAAU0e,GAAqD,GAAzCjhB,EAAiBkR,EAAKrT,SAAS5G,QAG7D+G,EAAOuE,SAAW0e,GAA2B,GAAfuD,IAGlCtT,EAAKsP,oBACDnkB,IAAWpB,IACXoB,EAASgoB,EAAY9nB,GAErBipB,GAAiBxnB,GACrBkT,EAAK2S,eAAe2B,EAAeC,EAAYppB,GAC3C6U,EAAKrG,eACLrH,EAAgB0N,EAAKjQ,OACrBuC,EAAgB0N,EAAKrG,eAErB4a,EAAW5nB,UACX4nB,EAAankB,EAAYmkB,EAAW5nB,SACpC4nB,EAAaA,EAAWppB,EAAS,EAAIopB,EAAWxuB,OAAS,IAEzD+G,EAAOH,UACP2nB,EAAgBlkB,EAAYtD,EAAOH,UAEvCqT,EAAK+S,gBAAgBuB,EAAeC,EAAYppB,GAChDkpB,IAAgBvnB,EAAOuE,OACvBgjB,EAAcA,GAAetE,EAC7BjjB,EAAOuE,OAAS0e,EAChBpjB,EAAQiB,OAAOzC,EAASgoB,EAAYA,EAAY,EAAG,EAAGrmB,GACtDH,EAAQiB,OAAOvC,EAAc8nB,EAAY9nB,EAAcA,EAAc,EAAG,GACxE2U,EAAKgI,aACLhI,EAAKwU,yBACLxU,EAAKyU,qBACLzU,EAAKkR,8BACLlR,EAAKoR,0BACLpR,EAAKmR,2BACLnR,EAAK0U,0BACAL,IAGDtE,EACA/P,EAAKwD,QAAQpF,IAActR,OAAQA,IAEnCkT,EAAKwD,QAAQnF,IAAgBvR,OAAQA,QAG7C0nB,uBAAwB,WAAA,GAChBlE,GACAtgB,EAAS,CACT3I,MAAKsS,eACL2W,EAASjpB,KAAKsS,aAAa/N,KAAK,SAChCoE,EAASF,EAAgBwgB,EAAQ1hB,EAAcvH,KAAKsF,WAExDmD,EAAgBzI,KAAK0I,MAAOjB,EAAiBzH,KAAKsF,SAAUqD,IAEhE2kB,WAAY,SAAU7nB,GAAV,GAYJqE,GAXAxE,EAAUtF,KAAKsF,OAEfG,GADiB,gBAAVA,GACEH,EAAQG,GAERsB,GAAKzB,EAAS,SAAUoJ,GAC7B,MAAOA,GAAK9I,QAAUH,IACvB,IAEFA,GAAUA,EAAOuE,QAAUvE,EAAOC,SAGnCoE,EAAQvC,EAAcjC,GAAS5G,OAAS,EAC5CsB,KAAKqrB,cAAcvhB,EAAOrE,GAAQ,KAEtC8nB,aAAc,SAAU9nB,GAAV,GAYNqE,GAXAxE,EAAUtF,KAAKsF,OAEfG,GADiB,gBAAVA,GACEH,EAAQG,GAERsB,GAAKzB,EAAS,SAAUoJ,GAC7B,MAAOA,GAAK9I,QAAUH,IACvB,GAEFA,GAAWA,EAAOuE,SAAUvE,EAAOC,SAGpCoE,EAAQvC,EAAcjC,GAAS5G,OACnCsB,KAAKqrB,cAAcvhB,EAAOrE,GAAQ,KAEtC+nB,UAAW,SAAUC,GACjB,GAAIC,GAAqB,CAIzB,OAHI1tB,MAAKoS,cAAgB5U,EAAEwV,SAAShT,KAAKoS,YAAY,GAAIqb,EAAG,MACxDC,EAAqB3kB,EAAYxB,EAAcvH,KAAKsF,UAAU5G,QAE3DlB,EAAEiwB,GAAIvjB,SAAS9B,SAAS,2CAA2C0B,MAAM2jB,GAAMC,GAE1FC,mBAAoB,SAAUlpB,GAC1BA,EAAYjH,EAAEiH,GACTA,EAAUoJ,GAAG,OAA8B,UAArB7N,KAAK4tB,cAC5BnpB,EAAYA,EAAU0H,QAAQ,MAElC,IAAIjG,GAAKzB,EAAU3B,KAAKpD,GAAMoD,KAAK,OACnC,OAAO9C,MAAKiZ,WAAW4U,SAAS3nB,IAEpC8a,UAAW,WAAA,GAaC8M,GAZJnV,EAAO3Y,KAAM6R,EAAa8G,EAAK9G,YAAc8G,EAAK9G,WAAW5Q,QAAQ8sB,SAAUjc,EAAW6G,EAAK1X,QAAQ6Q,SAAUkc,EAAU,WACvH,GAAInmB,GAAS8L,KAAiBxM,EAAOwR,EAAKsV,gBACtC9mB,GAAS3J,EAAEwV,SAAS7L,EAAK,GAAIU,IAAWV,EAAK,KAAOU,GAAWrK,EAAEqK,GAAQsE,QAAQ,0BAA0BzN,SACvGia,EAAK7G,SAASoc,MACdvV,EAAKwV,YAELxV,EAAKyV,yBAIjBtc,KACA9R,KAAK4Z,QAAQ4H,SAAS,cAClBsM,EAAOnV,EAAKiV,YACH,WAATE,EACIhc,EAAS4N,UAAW,GACpB/G,EAAKiB,QAAQ3U,GAAGC,GAAQC,GAAI,+BAAgC,SAAUoM,GAClE,GAAIkc,GAAKjwB,EAAEwC,MAAOquB,EAAe1V,EAAKvG,aAAeqb,EAAGthB,QAAQ,SAAS,KAAOwM,EAAKvG,YAAY,EAC7Fqb,GAAGxkB,SAAS,qBAAuBwkB,EAAGxkB,SAAS,kBAAoBwkB,EAAGxkB,SAAS,iBAAmBwkB,EAAGxkB,SAAS,gBAAkBwkB,EAAGa,IAAI,mBAAmB5vB,QAAU+uB,EAAGa,IAAI,wBAAwB5vB,QAAU+uB,EAAGthB,QAAQ,SAAS,KAAOwM,EAAK5L,MAAM,KAAOshB,GAAgB7wB,EAAE+T,EAAE1J,QAAQgG,GAAG,YAGzR8K,EAAK7G,SACD6G,EAAK7G,SAASoc,OACVrc,GACArU,EAAEmW,MAAiB4a,OAEvB5V,EAAKwV,YACLxV,EAAK6V,SAASf,IAEd9U,EAAKyV,wBAGTzV,EAAK6V,SAASf,MAEnBxoB,GAAG,UAAYE,GAAI,WACb3H,EAAEwV,SAAShT,KAAM2T,QAClB0I,aAAa1D,EAAK8V,OAClB9V,EAAK8V,MAAQ,QAElBxpB,GAAG,WAAaE,GAAI,WACnBwT,EAAK8V,MAAQvgB,WAAW8f,EAAS,KAIrClc,EAAS4N,UAAW,IACpB/G,EAAKiB,QAAQ3U,GAAGC,GAAQC,GAAI,oEAAqE,SAAUoM,GACvGA,EAAEG,iBACFiH,EAAK+V,QAAQlxB,EAAEwC,MAAMmM,QAAQ,SAE7BwM,EAAKgW,4BACLhW,EAAKiB,QAAQ3U,GAAG,WAAaE,GAAI,+BAAgC,WACzDwT,EAAK7G,WAAa6G,EAAK7G,SAASoc,OAChCvV,EAAKyV,2BAMrBtc,EAAS6H,WAAY,EACrBhB,EAAKiB,QAAQ3U,GAAGC,GAAQC,GAAI,qEAAsE,SAAUoM,GACxGA,EAAEG,iBACFH,EAAEqd,kBACFjW,EAAKkW,UAAUrxB,EAAEwC,MAAMmM,QAAQ,SAGnCwM,EAAKiB,QAAQ3U,GAAGC,GAAQC,GAAI,2EAA4E,SAAUoM,GAC9GA,EAAEqd,kBACGjW,EAAKmW,iBACNvd,EAAEG,qBAMtB8c,SAAU,SAAUrnB,GAAV,GAEFwR,GAAalT,EAA0DmM,EA+BnEuU,CA7BR,IAHAhf,EAAO3J,EAAE2J,GACLwR,EAAO3Y,KAAMyF,EAASsD,EAAY4P,EAAKrT,SAASqT,EAAK6U,UAAUrmB,IAAQyK,EAAQ+G,EAAKgV,mBAAmBxmB,GAC3GwR,EAAKwV,YACDvc,GAASD,GAAiBlM,EAAQmM,KAAWnM,EAAOd,QAAS,CAC7D,GAAIgU,EAAKwD,QAAQjH,IAActD,MAAOA,IAClC,MAEJ+G,GAAKoW,mBAAmBnd,GACxB+G,EAAKsV,eAAiB9mB,EAClBwR,EAAKqW,2BACLrW,EAAKsW,sBAETtW,EAAK7G,SAAW3K,EAAKqa,SAAS,eAAe0N,eACzCC,QACIvpB,MAAOH,EAAOG,MACdgI,OAAQnI,EAAOmI,OACfwhB,OAAQ3pB,EAAO2pB,OACfC,OAAQ5pB,EAAO4pB,QAEnBzd,MAAOA,EACP/J,OAAQ8Q,EACRuS,OAAQ,SAAU3Z,GACVoH,EAAKwD,QAAQhH,IACTka,OAAQ9d,EAAE8d,OACV5qB,UAAW0C,EACXyK,MAAOA,KAEXL,EAAEG,kBAGV4d,aAAW3W,EAAK4W,6BAA8B5W,EAAK6W,kBACpD/f,KAAK,iBACJ0W,EAAKhf,EAAK+C,SAASsX,SAAS,mBAC5B7I,EAAKvU,eACLuM,GAAgBwV,EAAG,GAAIxN,EAAK8W,YAAYtJ,GAAI3E,SAAS,mBAAmB,IAE5E7I,EAAKwD,QAAQlH,IACTxQ,UAAW0C,EACXyK,MAAOA,MAInB8d,iCAAkC,WAAA,GAC1B1iB,GAAQhN,KAAKgN,MAAO3I,EAAU2I,EAAM9C,SACpC8P,EAAYhN,EAAM,GAAGlL,YAAcuC,EAAQ,GAAGsrB,YAAcjwB,GAAM+S,QAAQuH,YAAc,CAC5Fha,MAAKoE,cAActF,OAAOuF,EAAQvF,SAAWkb,IAEjD8P,yBAA0B,WAClB9pB,KAAKoS,cACApS,KAAK4vB,eACN5vB,KAAK0vB,mCAET1vB,KAAK6vB,kBAAkB7vB,KAAKgN,MAAOhN,KAAKoS,eAGhD2X,wBAAyB,WAAA,GAEb3X,GACApF,CAFJhN,MAAKsS,eACDF,EAAcpS,KAAKsS,aAAalK,SAAS,SACzC4E,EAAQhN,KAAK0I,MAAMwB,SACvBlK,KAAK6vB,kBAAkBzd,EAAapF,GACpCoD,GAAgBgC,EAAapF,KAGrC8iB,wBAAyB,WACjB9vB,KAAKglB,cAAgBhlB,KAAK+kB,QAAU/kB,KAAK+kB,OAAOrmB,QAChDsB,KAAK6vB,kBAAkB7vB,KAAKglB,aAAa5c,SAAS,SAAUpI,KAAK+kB,OAAOxgB,KAAK,iCAGrF0f,iBAAkB,WAAA,GACVtL,GAAO3Y,KACP2Z,EAAU,WACV,GAAIhB,EAAK7G,SAAU,CACf,GAAIrN,GAAYkU,EAAKoX,SAAWpX,EAAKoX,SAAS/d,QAAU2G,EAAKsV,cACzDxpB,KACAA,EAAUqV,IAAI5U,GAAQC,GAAI,kBAAmBwT,EAAKqX,yBAClDvrB,EAAUqV,IAAI5U,GAAQC,GAAI,kBAAmBwT,EAAKsX,0BAEtDtX,EAAKuX,qBACLvX,EAAK7G,SAAS6H,UACdhB,EAAK7G,SAAW,KAChB6G,EAAKsV,eAAiB,KACtBtV,EAAKwX,oBAGTxX,GAAK7G,WACoB,UAArB6G,EAAKiV,aAA4BjV,EAAKmN,UAGtCnM,IAFAhB,EAAKsV,eAAexe,KAAK,eAAe2J,KAAK,aAAcO,GAASyW,SAKxEzX,EAAK0X,eACL1X,EAAK0X,aAAa1W,UAClBhB,EAAK0X,aAAe,OAG5BF,iBAAkB,WACVnwB,KAAK+vB,WACL/vB,KAAK+vB,SAASO,QACdtwB,KAAK+vB,SAAW,KAChB/vB,KAAKqkB,KAAKkM,SAAS,MAG3BxB,mBAAoB,SAAUnd,GAC1B,GAAI+G,GAAO3Y,IACX2Y,GAAK6X,oBAAsB,SAAUjf,GACjCoH,EAAK8X,cACD7qB,MAAO2L,EAAE3L,MACTgM,MAAO5R,QAGf4R,EAAMwH,KAAK,SAAUT,EAAK6X,sBAE9BN,mBAAoB,WAChB,GAAIvX,GAAO3Y,KAAMyE,EAAYkU,EAAKsV,eAAgBrc,EAAQ+G,EAAKgV,mBAAmBlpB,EAC9EmN,IACAA,EAAMuH,OAAOxD,GAAQgD,EAAK6X,sBAGlCrC,UAAW,SAAUuC,GACjB,GAA6CjrB,GAAQ0gB,EAAIvU,EAArD+G,EAAO3Y,KAAMmH,EAAOwR,EAAKsV,cACxB9mB,KAGLyK,EAAQ+G,EAAKgV,mBAAmBxmB,GAC5BupB,GAAY/X,EAAKwD,QAAQ,UACrB1X,UAAW0C,EACXyK,MAAOA,MAIf+G,EAAKwD,QAAQzG,IACTib,KAAMD,EAAW,SAAW,OAC5B9e,MAAOA,EACPnN,UAAW0C,IAEfA,EAAK6e,YAAY,eACjBvgB,EAASsD,EAAY4P,EAAKrT,SAASqT,EAAK6U,UAAUrmB,IAClDgf,EAAKhf,EAAK+C,SAAS8b,YAAY,mBAC/BrN,EAAKsL,mBACLtL,EAAKiY,aAAazpB,EAAM1B,EAAQmM,GAC5B+G,EAAKqW,2BACLrW,EAAKsW,sBAETtW,EAAKwD,QAAQ,cACTzN,KAAMyX,EACN1W,KAAMmC,EACNif,GAAItd,KAEJoF,EAAKvU,eACLuM,GAAgBwV,EAAG1iB,IAAI,SAAU,IAAI,GAAIkV,EAAK8W,YAAYtJ,GAAI1iB,IAAI,SAAU,IAAI,OAGxFmtB,aAAc,SAAUzpB,EAAM1B,EAAQqrB,GAClC,GAAInY,GAAO3Y,KAAMiP,GACT8hB,WACA/tB,MAAO,GACRguB,EAAWnxB,MAAWH,GAAMuxB,SAAUtY,EAAK1X,QAAQiwB,kBAAmBC,EAAOzxB,GAAM0xB,SAASzY,EAAK0Y,UAAU5rB,EAAQwJ,GAAQ+hB,EAC9H/hB,GAAMjM,MAAQ,IACdmuB,EAAO/rB,GAAM+rB,EAAMliB,EAAM8hB,UAE7B5pB,EAAK+F,QAAQD,KAAKkkB,EAAKL,IACvBnY,EAAK4N,QAAQ,UAAW,WACpB,OACIpiB,SAAUgD,EACVsI,OAASqhB,SAAUA,QAI/BjC,UAAW,SAAU1lB,GACZnJ,KAAK8uB,cAAc3lB,IAGxBnJ,KAAKsxB,WAAWnoB,IAEpBmoB,WAAY,SAAUnoB,GAClB,GAAiByI,GAAb+G,EAAO3Y,KAAa8tB,EAAOnV,EAAKiV,WACvB,YAATE,GACAnV,EAAK4Y,YAETpoB,EAAM3L,EAAE2L,GACJwP,EAAKvU,gBACL+E,EAAMA,EAAI3F,IAAImV,EAAK8W,YAAYtmB,KAEnCA,EAAMA,EAAI3D,OACVoM,EAAQ+G,EAAKgV,mBAAmBxkB,GAC5ByI,IAAU+G,EAAKwD,QAAQ/G,IACnBjM,IAAKA,EACLyI,MAAOA,KAEX+G,EAAKM,WAAW9N,OAAOyG,GACV,WAATkc,GAA8B,UAATA,GACrBnV,EAAKM,WAAWuY,QAEJ,WAAT1D,GACPnV,EAAKsL,oBAGb2J,UAAW,WACP,GAAIE,GAAO,SAAUhc,EAAW9R,KAAKiB,QAAQ6Q,QAQ7C,OAPIA,MAAa,IAETgc,EADmB,gBAAZhc,GACAA,EAEAA,EAASgc,MAAQA,GAGzBA,GAEXY,QAAS,SAAUvlB,GAAV,GACDyI,GAQAkc,EACArpB,EARAkU,EAAO3Y,IACPmJ,aAAesK,IACf7B,EAAQzI,GAERA,EAAM3L,EAAE2L,GACRyI,EAAQ+G,EAAKgV,mBAAmBxkB,IAEhC2kB,EAAOnV,EAAKiV,YAEhBjV,EAAK4Y,YACD3f,IACAzI,EAAMwP,EAAK5L,MAAM3E,SAAS,IAAM1I,GAAMoD,KAAK,OAAS,IAAM8O,EAAMjM,IAAM,KACtEgT,EAAKoW,mBAAmBnd,GACX,UAATkc,EACAnV,EAAK8Y,mBAAmB7f,GACR,WAATkc,EACPnV,EAAK+Y,oBAAoBvoB,EAAKyI,GACd,WAATkc,GACPtwB,EAAE2L,GAAKf,SAASoM,IAAWgS,KAAK,WAAA,GACxBrf,GAAO3J,EAAEwC,MACTyF,EAASsD,EAAY4P,EAAKrT,SAASqT,EAAK6U,UAAUrmB,GAEtD,IADAyK,EAAQ+G,EAAKgV,mBAAmBxmB,GAC5ByK,KAAWA,EAAME,UAAYF,EAAME,SAASrM,EAAOG,SAAWH,EAAOG,QAAUH,EAAOoM,WAEtF,MADA8G,GAAK6V,SAASrnB,IACP,IAInB1C,EAAYkU,EAAKoX,SAAWpX,EAAKoX,SAAS/d,QAAU2G,EAAKsV,eACrDxpB,IACKzE,KAAKgwB,0BACNhwB,KAAKgwB,wBAA0B5qB,GAAMpF,KAAK2xB,iBAAkB3xB,OAEhEyE,EAAUQ,GAAGC,GAAQC,GAAI,kBAAmBnF,KAAKgwB,yBAC5ChwB,KAAKiwB,0BACNjwB,KAAKiwB,wBAA0B7qB,GAAMpF,KAAK4xB,iBAAkB5xB,OAEhEyE,EAAUQ,GAAGC,GAAQC,GAAI,kBAAmBnF,KAAKiwB,4BAI7D2B,iBAAkB,SAAUrgB,GACxBA,EAAEG,iBACFH,EAAEqd,kBACF5uB,KAAK6xB,WAETF,iBAAkB,SAAUpgB,GAAV,GAaVugB,GAZAnZ,EAAO3Y,KACP6S,EAAc8F,EAAK1X,QAAQ4R,YAC3BjB,EAAQ+G,EAAK7G,SAAS7Q,QAAQ2Q,MAC9BnN,EAAYkU,EAAKoX,SAAWpX,EAAKoX,SAAS/d,QAAU2G,EAAKsV,cAC7D1c,GAAEG,iBACFH,EAAEqd,kBACEjW,EAAKwD,QAAQ,UACT1X,UAAWA,EACXmN,MAAOA,MAIXkgB,EAAenZ,EAAKhJ,QAAQ7F,MAAMtM,EAAEmb,EAAKvZ,WAAW8K,UACxDyO,EAAK4Y,YACD1e,IACA8F,EAAK/F,YAAY+F,EAAKhJ,QAAQ1L,GAAG6tB,GAAc1pB,WAAW9D,OAAOqQ,IAASuF,SAC1EjJ,GAAW0H,EAAK3L,OAAO,MAG/BykB,mBAAoB,SAAU7f,GAAV,GAGZnM,GACAd,EAEAZ,EACArF,EACAyyB,EACAY,EACAC,EACAC,EAEAnvB,EAwCgBmM,EA6BhBxK,EAjFAkU,EAAO3Y,KACPiN,EAAO,QAAUvN,GAAMoD,KAAK,OAAS,KAAO8O,EAAMjM,IAAM,8BAAgCgT,EAAKmN,UAAY,iBAAmB,IAAM,wCAGlIqJ,KAOA7pB,EAAUyD,EAAY4P,EAAKrT,SAE3BwM,EAAW6G,EAAK1X,QAAQ6Q,SACxBsf,EAAWtf,EAASsf,SACpBnwB,EAAU6D,GAAcgN,GAAYA,EAASrS,UAC7CuxB,EAAWnxB,MAAWH,GAAMuxB,SAAUtY,EAAK1X,QAAQiwB,iBACvD,KAAIvY,EAAKwD,QAAQjH,IAActD,MAAOA,IAAtC,CAIA,GADA3Q,EAAUA,MACNmwB,EAKA,UAJWA,KAAa/tB,KACpB+tB,EAAW3xB,OAAOyyB,SAASd,IAE/BnkB,GAAQvN,GAAM0xB,SAASA,EAAUJ,GAAUpf,GACtC7N,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACjD0B,EAASH,EAAQvB,GACb0B,EAAOd,UACPstB,EAAcjhB,GAAWvL,EAAOd,QAAS,QACrCstB,IACAttB,EAAUstB,QAKtB,KAAKluB,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACjD0B,EAASH,EAAQvB,GACb0B,EAAOoM,aAGNpM,EAAOd,QAqBDc,EAAOd,UACdstB,EAAcjhB,GAAWvL,EAAOd,QAAS,QACrCstB,IACAttB,EAAUstB,KAvBdhlB,GAAQ,yCAA2CxH,EAAOG,MAAQ,MAAQH,EAAO6kB,OAAS7kB,EAAOG,OAAS,IAAM,iBAC5G+L,GAAiBlM,EAAQmM,IACzBud,EAAOhxB,MACHyH,MAAOH,EAAOG,MACdgI,OAAQnI,EAAOmI,OACfwhB,OAAQ3pB,EAAO2pB,OACfC,OAAQ5pB,EAAO4pB,SAEnBpiB,GAAQ,QAAUvN,GAAMoD,KAAK,iBAAmB,KAAO2C,EAAOG,MAAQ,kCAElEqJ,GACA8hB,WACA/tB,MAAO,GAEXmuB,EAAOzxB,GAAM0xB,SAASzY,EAAK0Y,UAAU5rB,EAAQwJ,GAAQ+hB,GACjD/hB,EAAMjM,MAAQ,IACdmuB,EAAO/rB,GAAM+rB,EAAMliB,EAAM8hB,UAE7B9jB,GAAQ,6BAA+BkkB,EAAKvf,GAAS,WAUjEjN,IACIG,GAAcH,KACVA,EAAQjH,MAAQoH,GAAcH,EAAQjH,QACtCq0B,EAAaptB,EAAQjH,KAAKgiB,OAC1BsS,EAAartB,EAAQjH,KAAKyhB,QAE1Bxa,EAAQ7B,OACRA,EAAO6B,EAAQ7B,OAKtB6V,EAAKmN,WAsCN7Y,GAAQ,eACR0L,EAAKoX,SAAWpX,EAAK0L,KAAK3a,OAAO,aAAehK,GAAMmxB,GAAK,oBAAsBnxB,GAAMmxB,GAAK,oCAAsCnxB,GAAMmxB,GAAK,2DAAkEnxB,GAAMmxB,GAAK,kCAAoClY,EAAKwZ,eAC/PntB,KAAM,SACNtH,KAAMq0B,EACNjvB,KAAMA,KACJ7B,EAAQqpB,OAAS,QAAU3R,EAAKwZ,eAClCntB,KAAM,aACNtH,KAAMs0B,EACNlvB,KAAMA,IACL,SAAWmK,EAAO,UACvBxI,EAAYkU,EAAKsV,eAAiBtV,EAAKoX,SAAS/d,QAAQzN,KAAK,wBA/C7D0I,GAAQ,+CACRA,GAAQ0L,EAAKwZ,eACTntB,KAAM,SACNtH,KAAMq0B,EACNjvB,KAAMA,IACL6V,EAAKwZ,eACNntB,KAAM,aACNtH,KAAMs0B,EACNlvB,KAAMA,IAEVmK,GAAQ,qBACRxI,EAAYkU,EAAKsV,eAAiBzwB,EAAEyP,GAAM/I,SAASyU,EAAKiB,SAAS3V,GAAG,GAAGmuB,YAAYvyB,IAC/EwyB,OAAO,EACP5P,WAAW,EACXqI,WAAW,EACXR,MAAO,OACP7jB,SAAS,EACT2pB,MAAO,SAAU7e,GACb,GAAIA,EAAE+gB,cAAe,CAEjB,GADA/gB,EAAEkJ,OAAOzI,QAAQR,QACbmH,EAAKwD,QAAQ,UACT1X,UAAWA,EACXmN,MAAOA,IAGX,MADAL,GAAEG,iBACF,CAEJ,IAAIogB,GAAenZ,EAAKhJ,QAAQ7F,MAAMtM,EAAEmb,EAAKvZ,WAAW8K,SACxDyO,GAAK4Y,YACD5Y,EAAK1X,QAAQ4R,cACb8F,EAAK/F,YAAY+F,EAAKhJ,QAAQ1L,GAAG6tB,GAAc1pB,WAAW9D,OAAOqQ,IAASuF,SAC1EjJ,GAAW0H,EAAK3L,OAAO,OAIpC/L,KAcP0X,EAAK7G,SAAW6G,EAAKsV,eAAeiB,eAChCC,OAAQA,EACRvd,MAAOA,EACP2gB,gBAAgB,EAChB1qB,OAAQ8Q,IACTlJ,KAAK,iBACJkJ,EAAKmN,WACLrhB,EAAUF,KAAK,0CAA0C2F,OAAO,iBAAiBsX,SAAS,WAAW2K,KAAK,iBAAiB3K,SAAS,WAAWzc,MAAM,WACjJvH,EAAEwC,MAAM6M,OAAOzE,SAAS,SAASrD,UAGzC4T,EAAK6Z,mBACL7Z,EAAKwD,QAAQlH,IACTxQ,UAAWA,EACXmN,MAAOA,MAGf4gB,iBAAkB,WACTxyB,KAAK8lB,UAGN9lB,KAAKqkB,KAAKkM,SAASvwB,KAAK+vB,SAAU/vB,KAAKyyB,gBAFvCzyB,KAAKiuB,eAAexe,KAAK,eAAeijB,SAASC,QAKzDjB,oBAAqB,SAAUvoB,EAAKyI,GAAf,GAEbnM,GACA0B,EACAxC,EAHAgU,EAAO3Y,KAIPmvB,IACAxW,GAAKwD,QAAQjH,IAActD,MAAOA,MAGlC+G,EAAKvU,gBACL+E,EAAMA,EAAI3F,IAAImV,EAAK8W,YAAYtmB,KAEnCA,EAAIf,SAAS,yCAAyCoe,KAAK,WAGvD,GAFArf,EAAO3J,EAAEwC,MACTyF,EAASsD,EAAY4P,EAAKrT,SAASqT,EAAK6U,UAAUrmB,KAC7C1B,EAAOd,SAAWgN,GAAiBlM,EAAQmM,GAC5Cud,EAAOhxB,MACHyH,MAAOH,EAAOG,MACdgI,OAAQnI,EAAOmI,OACfwhB,OAAQ3pB,EAAO2pB,OACfC,OAAQ5pB,EAAO4pB,SAEnBloB,EAAKrE,KAAKpD,GAAMoD,KAAK,iBAAkB2C,EAAOG,OAC9CuB,EAAK+F,YACF,IAAIzH,EAAOd,UACdA,EAAUqM,GAAWvL,EAAOd,QAAS,SACxB,CACTwC,EAAK+F,OACL,IAAI6kB,GAAYC,EAAYlvB,CACxBgC,IAAcH,KACVA,EAAQjH,MAAQoH,GAAcH,EAAQjH,QACtCq0B,EAAaptB,EAAQjH,KAAKgiB,OAC1BsS,EAAartB,EAAQjH,KAAKyhB,QAE1Bxa,EAAQ7B,OACRA,EAAO6B,EAAQ7B,OAGvBtF,EAAEmb,EAAKwZ,eACHntB,KAAM,SACNtH,KAAMq0B,EACNjvB,KAAMA,IACL6V,EAAKwZ,eACNntB,KAAM,aACNtH,KAAMs0B,EACNlvB,KAAMA,KACNoB,SAASiD,MAIzBwR,EAAKsV,eAAiB9kB,EACtBwP,EAAKsV,eAAezM,SAAS,mBACzB7I,EAAKqW,2BACLrW,EAAKsW,sBAETtW,EAAK7G,SAAW,GAAIpS,IAAM6T,GAAGqf,SAASja,EAAKsV,gBACvCpmB,OAAQ8Q,EACRwW,OAAQA,EACRvd,MAAOA,EACP0d,aAAW3W,EAAKgW,4BAA8BhW,EAAK6W,gBAAkB7W,EAAK6W,eAAe5pB,OACzF2sB,gBAAgB,IAEhBppB,EAAIzK,OAAS,IACbiS,GAAgBxH,EAAI,GAAIA,EAAI,IAC5BwP,EAAKkR,+BAETlR,EAAKwD,QAAQlH,IACTxQ,UAAW0E,EACXyI,MAAOA,MAGf2f,UAAW,SAAU5P,GAAV,GAC2C/P,GAA9C+G,EAAO3Y,KAAMyE,EAAYkU,EAAKsV,eAC9BlM,EAAoBpJ,EAAKoJ,kBACzB8Q,EAAqB9Q,GAAqBA,EAAkBjF,qBAChE,IAAIrY,EAAW,CAEX,GADAmN,EAAQ+G,EAAKgV,mBAAmBlpB,GAC5Bkd,GAAUhJ,EAAKwD,QAAQ,UACnB1X,UAAWA,EACXmN,MAAOA,IAEX,MAEJ+G,GAAKsL,mBACLtL,EAAKM,WAAW6Z,cAAclhB,GAC1B+G,EAAKoa,sBAAwBF,GAC7Bla,EAAKqa,sBAETra,EAAKsW,sBAEDtW,EAAKsa,YADgB,UAArBta,EAAKiV,YACYnpB,EAEAkU,EAAK5L,MAAMxI,KAAK,IAAM7E,GAAMoD,KAAK,OAAS,IAAM8O,EAAMjM,IAAM,QAIzFksB,QAAS,WAAA,GAKDqB,GAJAva,EAAO3Y,KACPyE,EAAYzE,KAAKiuB,eACjBrc,EAAQ5R,KAAK2tB,mBAAmBlpB,GAChC0uB,EAAW31B,EAAE41B,UAEjB,OAAK3uB,IAAczE,KAAK8R,UAGxBohB,EAAQva,EAAK7G,UAAY6G,EAAK7G,SAASoc,OAClCgF,GAASlzB,KAAKmc,QAAQhH,IACnB1Q,UAAWA,EACXmN,MAAOA,KAENshB,GACDva,EAAKyV,wBAEF+E,EAASE,SAASC,YAE7B3a,EAAKsW,sBACEjvB,KAAKiZ,WAAWuY,SAbZ2B,EAASI,UAAUD,WAelCL,YAAa,SAAU9pB,GAAV,GAC8CqqB,GAASC,EAAQC,EA0BhEC,EACAC,EA3BJjb,EAAO3Y,KAAM4R,EAAQ+G,EAAKgV,mBAAmBxkB,GAAgC0qB,EAAa1qB,EAAIF,SAAS,oBAAqB6qB,EAAQ3qB,EAAIF,SAAS,QACjJ2I,KACI+G,EAAKvU,gBACLovB,EAAUh2B,GAAGs2B,EAAQnb,EAAK8L,qBAAuB9L,EAAK6L,mBAAmB5S,IACzE+G,EAAK8W,YAAYtmB,EAAIb,QAAQyrB,YAAYP,IAE7C7a,EAAK4N,QAAQ,UAAW,WACpB,OAASpiB,SAAUgF,EAAIvI,SAE3B6yB,EAASj2B,GAAGs2B,EAAQnb,EAAK4J,eAAiB5J,EAAK2J,aAAa1Q,IACvDzI,EAAI0E,GAAG,aACR4lB,EAAOjuB,OAEX2D,EAAI4qB,YAAYN,GAChB9a,EAAKwD,QAAQ,cACTzN,KAAM+kB,EACNhkB,KAAMmC,EACNif,GAAItd,KAEJigB,GAAWA,EAAQ90B,QACnBia,EAAKwD,QAAQ,cACTzN,KAAM8kB,EACN/jB,KAAMmC,EACNif,GAAItd,KAGRogB,EAAkBF,EAClBG,IAAiB9C,SAAUlf,IAC3B4hB,GAAWA,EAAQ90B,SACnBi1B,EAAkBF,EAAOjwB,IAAIgwB,GAC7BI,EAAYz1B,MAAO2yB,SAAUlf,KAEjC+G,EAAK4N,QAAQ,UAAW,WACpB,OACIpiB,SAAUwvB,EAAgB/yB,MAC1B6O,KAAMmkB,KAGVC,IAAelb,EAAK1X,QAAQ4Q,YAAgBrU,EAAEuJ,KAAKgC,EAAY4P,EAAKrT,SAAU,SAAUqjB,GACpF,MAAOA,GAAI9W,aACZnT,SACHia,EAAKqb,OAAOP,EAAOjwB,IAAIgwB,IAEvBA,GACA7iB,GAAgB8iB,EAAO,GAAID,EAAQ,IAEvCE,EAAUD,EAAO5mB,OACb6mB,EAAQzqB,SAAS,iBAAmByqB,EAAQ7lB,GAAG,aAC/C4lB,EAAOlvB,KAAK,6BAA6ByhB,YAAY,cAAcxE,SAAS,kBAIxFyS,aAAc,SAAUlR,EAAU5Z,GAApB,GAKNioB,GACAnkB,EACAinB,EANAvb,EAAO3Y,IACX,OAAK2Y,GAAKmN,WAGNsL,EAAW1xB,GAAM0xB,SAAS,qIAC1BnkB,EAAOzP,EAAE4zB,EAASrO,IAAW7e,SAASyU,EAAKwb,KAAKniB,SAChDkiB,EAAcvb,EAAK0X,aAAe,GAAI3wB,IAAMojB,OAAOvP,GAAG6gB,YAAYnnB,GAClEkS,OAAQ4D,EAASC,aACjBqR,eAAgB,sFAChBjE,MAAO,WACHpwB,KAAK2Z,WAEThV,QAAS,SAAU4M,GACf,GAAI7C,GAAOlR,EAAE+T,EAAEW,eAAehI,QACzBwE,GAAKzF,SAAS,0BACf0P,EAAK2Y,WAAWnoB,IAGxBmrB,MAAO3b,EAAK4b,2BAEhBL,EAAYvB,KAAKxpB,IACV,GAnBI1J,OAAO+0B,QAAQzR,EAASuH,QAqBvCwE,cAAe,SAAU3lB,GACrB,GAAIwP,GAAO3Y,KAAM8R,EAAW6G,EAAK1X,QAAQ6Q,SAAUmR,EAAenR,KAAa,SAAeA,KAAazO,GAASsV,EAAK1X,QAAQ8hB,SAASjR,SAASmR,aAAenR,EAASmR,YAI3K,OAHIne,IAAcgN,UAAoBA,GAASgc,OAASzqB,UAAiB4f,KAAiB5f,IAAU4f,KAAiB,IACjHA,EAAetK,EAAK1X,QAAQ8hB,SAASjR,SAASmR,cAE9CA,KAAiB,GAAyB,MAAhBA,UACfA,KAAiB7L,KACxB6L,EAAeA,EAAatK,EAAKgV,mBAAmBxkB,KAEjDwP,EAAKsb,cACR/Q,cAAepR,EAASoR,eAAiBvK,EAAK1X,QAAQ8hB,SAASjR,SAASoR,cACxEF,aAAclR,EAASkR,cAAgBrK,EAAK1X,QAAQ8hB,SAASjR,SAASkR,aACtEsH,MAAOrH,KAAiB,EAAOtK,EAAK1X,QAAQ8hB,SAASjR,SAASmR,aAAeA,GAC9E9Z,KAIX2pB,cAAe,WACX,GAAIna,GAAO3Y,IACX2Y,GAAKM,WAAW6Z,gBACZna,EAAKoa,sBACLpa,EAAK8b,kBAAkB,WACnB9b,EAAKoJ,kBAAkBvF,iBAInCkY,YAAa,WAAA,GACL/b,GAAO3Y,KACPkzB,EAAQva,EAAK7G,UAAY6G,EAAK7G,SAASoc,OACtCgF,GAAUva,EAAK7G,UAAc6G,EAAKwD,QAAQrG,IAEnCod,GACRva,EAAKyV,wBAFLzV,EAAKM,WAAWuY,QAKxBmD,OAAQ,WAAA,GACa7qB,GAEb8H,EAFA+G,EAAO3Y,KAAaiZ,EAAaN,EAAKM,WAAY6U,EAAOnV,EAAKiV,YAAagH,EAAWjc,EAAK1X,QAAQ6Q,SAAS8iB,UAAY,GAAItX,EAAWrE,EAAWqE,WAAY6W,EAAOlb,EAAWkb,WAChLU,EAAiBD,EAASE,gBAAkBzd,GAE5C0d,EAAkBpc,EAAKoa,oBACvBpa,GAAK7G,UAAY6G,EAAK7G,SAASoc,QAAUvV,EAAK7G,UAClC,UAARgc,GACAnV,EAAK4Y,YAETznB,EAAQmP,EAAWnO,QAAQqpB,EAAK,IAC5BU,IACA/qB,GAASqqB,EAAKz1B,OACV4e,IAAarE,EAAWhY,QAAQ+zB,cAAgB1X,GAAY6W,EAAKz1B,SACjEoL,GAAS,IAGbA,EAAQ,IAEJA,EADAmP,EAAWmG,OAASnG,EAAWgc,cACtBhc,EAAWmG,OAAS,GAAK9B,EAE1B,GAGZyX,EACApc,EAAKuc,kBAELtjB,EAAQqH,EAAWkc,OAAOrrB,MAC1B6O,EAAKyc,WAAWxjB,KAGpB+G,EAAKyV,yBAGbgH,WAAY,SAAUxjB,GAAV,GAKA1L,GAAgB8G,EAA4D7D,EAA8DhC,EAJ9IwR,EAAO3Y,KACP40B,EAAWjc,EAAK1X,QAAQ6Q,SAAS8iB,UAAY,GAC7C9G,EAAOnV,EAAKiV,WACZhc,KACI1L,EAAK0L,EAAMjM,IAAKqH,EAAQ2L,EAAKvU,cAAgBuU,EAAKvG,YAAcuG,EAAK3L,MAAO7D,EAAM6D,EAAMzI,KAAK,MAAQ7E,GAAMoD,KAAK,OAAS,IAAMoD,EAAK,KAAMiB,EAAOgC,EAAIf,SAAS,2CAA2CnE,GAAG0U,EAAK0c,0BAA0BlsB,IAClO,WAAT2kB,GAAqB3kB,EAAIzK,OACzBia,EAAK+V,QAAQvlB,GACG,UAAT2kB,EACPnV,EAAK+V,QAAQ9c,GACNzK,EAAKzI,QACZia,EAAK6V,SAASrnB,GAEY,UAA1BytB,EAASE,eAA6Bnc,EAAKvU,gBAC3CuU,EAAKvU,cAAc,GAAG+M,UAAYwH,EAAKtU,QAAQ,GAAG8M,UAAYwH,EAAK3L,MAAM,GAAGjL,gBAIxFmzB,eAAgB,WAAA,GACRvc,GAAO3Y,KACP60B,GAAkBlc,EAAK1X,QAAQ6Q,SAAS8iB,UAAY,IAAIE,gBAAkBzd,EAC9EsB,GAAKsW,sBACD4F,EACAlc,EAAK2c,yBAEL3c,EAAK4c,uBAGbA,oBAAqB,WAAA,GAIb3jB,GAHA+G,EAAO3Y,KACPiZ,EAAaN,EAAKM,WAClB8I,EAAoBpJ,EAAKoJ,iBAEH,KAAtB9I,EAAWmG,QACXxN,EAAQqH,EAAWkc,OAAO,MAC1Bxc,EAAKyc,WAAWxjB,GAChBmQ,EAAkBvF,eAElB7D,EAAK8b,kBAAkB,WACnB7iB,EAAQqH,EAAWkc,OAAO,MAC1Bxc,EAAKyc,WAAWxjB,GAChBmQ,EAAkBvF,iBAI9B8Y,uBAAwB,WAAA,GAKhB1jB,GAJA+G,EAAO3Y,KACPiZ,EAAaN,EAAKM,WAClB8I,EAAoBpJ,EAAKoJ,kBACzBjY,EAAQmP,EAAWkF,OAEnBlF,GAAWuc,GAAG1rB,EAAQ,YAAc2J,KACpC7B,EAAQqH,EAAWkc,OAAOrrB,MAC1B6O,EAAK8c,qBAAqB,WACtB9c,EAAKyc,WAAWxjB,GAChBmQ,EAAkBrF,oBAGtB/D,EAAK8c,qBAAqB,WACtB7jB,EAAQqH,EAAWkc,OAAOrrB,MAC1B6O,EAAKyc,WAAWxjB,GAChBmQ,EAAkBrF,oBAI9B+X,kBAAmB,SAAUpW,GACzB,GAAI1F,GAAO3Y,IACX2Y,GAAK+c,aAAa,EAAG/c,EAAKM,WAAWsD,OAAQ,WACzC8B,OAGRoX,qBAAsB,SAAUpX,GAAV,GACd1F,GAAO3Y,KACPiZ,EAAaN,EAAKM,WAClBsD,EAAOtD,EAAWsD,MACtB5D,GAAK+c,aAAazc,EAAWkF,QAAU5B,EAAMA,EAAM,WAC/C8B,OAGRqX,aAAc,SAAUpa,EAAMiB,EAAM8B,GAChC,GAAI1F,GAAO3Y,IACP2Y,GAAKoa,uBACLpa,EAAKoJ,kBAAkBhG,gBAAiB,EACxCpD,EAAKoJ,kBAAkBzF,MAAMhB,EAAMiB,EAAM8B,KAGjD2U,oBAAqB,WAAA,GACbra,GAAO3Y,KACPiZ,EAAaN,EAAKM,WAClB8I,EAAoBpJ,EAAKoJ,kBACzB/H,EAAY+H,EAAkBlI,kBAC9BD,EAAUmI,EAAkBnI,QAC5B2C,EAAOtD,EAAWsD,OAClBjB,EAAOjH,GAAK6J,IAAIjF,EAAW0c,oBAAqB1c,EAAWkF,QAAU5B,GACrEqZ,EAAoB7T,EAAkBzI,WACtCuc,EAAqB7b,EAAU7I,YAAcykB,CACjDjd,GAAK+c,aAAapa,EAAMiB,EAAM,WAAA,GACtBjD,GAAayI,EAAkBzI,WAC/Bwc,EAAkBD,EAAqBvc,CACvCyI,GAAkBjF,sBAClBiF,EAAkBrF,kBAGdqF,EAAkBhG,eADlB/B,EAAU7I,cAAgB2kB,EAK9B9b,EAAU7I,UAAU2kB,GACpBlc,EAAQzI,UAAU6I,EAAU7I,YAAcmK,EAAOhC,OAI7D+b,0BAA2B,SAAU5wB,GACjC,GAAiBgB,GAA6C1B,EAAKrF,EAA/Dia,EAAO3Y,KAAcsF,EAAUyD,EAAY4P,EAAKrT,SAAuBsM,EAAQ+G,EAAKgV,mBAAmBlpB,EAC3G,KAAKV,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IAEjD,GADA0B,EAASH,EAAQvB,GACb6N,KAAWA,EAAME,UAAYF,EAAME,SAASrM,EAAOG,UAAYH,EAAOd,SAAWc,EAAOG,OAASH,EAAOC,UAAW,EACnH,MAAO3B,EAGf,WAEJ0c,SAAU,WACN,GAA2Ghc,GAAvGkU,EAAO3Y,KAAM4Z,EAAUjB,EAAKiB,QAASoI,EAAUrJ,EAAK1X,QAAQ+gB,QAASlQ,EAAW6G,EAAK1X,QAAQ6Q,QAC7FkQ,KACAvd,EAAYkU,EAAKiB,QAAQrV,KAAK,mBACzBE,EAAU/F,SACNyV,GAAW6N,KACZA,QAAiBA,KAAY3e,GAAS2e,EAAUrJ,EAAKod,aAAa/T,GAASpkB,QAAQsa,GAAoB,OACvG8J,EAAU5c,GAAM1F,GAAM0xB,SAASpP,GAAUrJ,IAE7ClU,EAAYjH,EAAE,2CAA2CyP,KAAK+U,OAAagU,UAAUpc,GACrFjB,EAAK4N,QAAQ,UAAW,WACpB,OAASpiB,SAAUM,EAAU7D,UAGjCkR,GAAYA,EAASwN,UAAW,GAChC7a,EAAUQ,GAAGC,GAAQC,GAAI,cAAe,SAAUoM,GAC9CA,EAAEG,iBACFiH,EAAKgc,WACN1vB,GAAGC,GAAQC,GAAI,yBAA0B,SAAUoM,GAClDA,EAAEG,iBACFiH,EAAKma,kBACN7tB,GAAGC,GAAQC,GAAI,uBAAwB,SAAUoM,GAChDA,EAAEG,iBACFiH,EAAK+b,gBAGbjwB,EAAUQ,GAAGC,GAAQC,GAAI,gBAAiB,SAAUoM,GAChDA,EAAEG,iBACFiH,EAAKsd,gBAETxxB,EAAUQ,GAAGC,GAAQC,GAAI,cAAe,SAAUoM,GAC9CA,EAAEG,iBACFiH,EAAKud,gBAIjBH,aAAc,SAAUrxB,GACpB,GAAiBX,GAAKrF,EAAlBia,EAAO3Y,KAAmBiN,EAAO,EACrC,IAAIpI,GAAQH,GACR,IAAKX,EAAM,EAAGrF,EAASgG,EAAShG,OAAQqF,EAAMrF,EAAQqF,IAClDkJ,GAAQ0L,EAAKwZ,cAAcztB,EAASX,GAG5C,OAAOkJ,IAEXklB,cAAe,SAAUxtB,GACrB,GAKkDwxB,GAL9C/E,EAAWzsB,EAAQysB,UAAY/Y,GAAmBzT,QAAqBD,KAAYtB,GAASsB,EAAUA,EAAQK,MAAQL,EAAQjH,KAAM2R,EAAYgQ,GAAgBza,GAAeya,GAAgBza,GAAayK,UAAY,WAAazK,GAAe,IAAIhH,QAAQ,MAAO,IAAKqD,GACxQoO,UAAWA,EACX3R,KAAMkH,EACN9B,KAAM,GACNyc,UAAW,IACZwD,EAAW/iB,KAAKiB,QAAQ8hB,SAASre,QACxC,MAAKE,GAAiBE,GAAcH,IAAYA,EAAQysB,UACpD,KAAUgF,OAAM,6CA4BpB,OA1BItxB,IAAcH,IACdA,EAAU9E,IAAO,KAAU8E,GACvBA,EAAQ0K,WAAajF,GAAQnJ,EAAQoO,UAAW1K,EAAQ0K,UAAUgnB,MAAM,MAAQ,EAChF1xB,EAAQ0K,WAAa,IAAMpO,EAAQoO,UAC5B1K,EAAQ0K,YAAc3M,IAC7BiC,EAAQ0K,UAAYpO,EAAQoO,WAEZ,SAAhBzK,GAA0BE,GAAcH,EAAQjH,QAChDiH,EAAU9E,IAAO,KAAU8E,GAC3BA,EAAQjH,KAAOiH,EAAQjH,KAAK+hB,MAE5B9a,EAAQ7B,OACJgC,GAAcH,EAAQ7B,QACtB6B,EAAQ7B,KAAOI,EAAoByB,EAAQ7B,aAEpC6B,GAAQ7B,OAASO,KACxB8yB,EAAsBxxB,EAAQ7B,KAAKwzB,MAAM,iBACrCH,GAAuB/rB,GAAQ+rB,EAAoB,GAAIxxB,EAAQ0K,UAAUgnB,MAAM,MAAQ,IACvF1xB,EAAQ0K,WAAa,IAAM8mB,EAAoB,MAI3Dl1B,EAAUpB,IAAO,EAAMoB,EAASoe,GAAgBza,IAAgBlH,KAAMqlB,EAASne,IAAgBD,IAE/F1D,EAAUpB,IAAO,EAAMoB,EAASoe,GAAgBza,IAAgBlH,KAAMqlB,EAASne,KAE5ElF,GAAM0xB,SAASA,GAAUnwB,IAEpCs1B,YAAa,WACT,QAASv2B,KAAK0kB,kBAAoB1kB,KAAK2kB,qBAAuB3kB,KAAK+kB,QAAU/kB,KAAK+kB,OAAOrmB,OAAS,GAAKsB,KAAK4Z,QAAQrV,KAAK,kBAAkB7F,OAAS,GAExJ8hB,WAAY,WACR,GAAI7H,GAAO3Y,IACP2Y,GAAKsM,uBACLtM,EAAK3L,MAAMxJ,IAAImV,EAAKvG,aAAa0H,IAAI5U,GAAQC,GAAIwT,EAAKsM,wBAEtDtM,EAAKsM,uBAAyB,SAAU1T,GACpC,GAAIS,GAAUxU,EAAEwC,MAAOw2B,EAAWxkB,EAAQ7F,QAAQ,MAAOoZ,EAAQ5M,EAAKuM,WAAWvM,EAAKiB,QAAQrV,KAAK,mBAAmBuF,MAAM0sB,GACxHxkB,GAAQ/I,SAAS,gBACZ0P,EAAKwD,QAAQ,iBACVoJ,MAAOA,EACPvT,QAASwkB,KAEb7d,EAAK8d,cAAcD,GAGlB7d,EAAKwD,QAAQ,eACVoJ,MAAOA,EACPvT,QAASwkB,KAEb7d,EAAK+d,YAAYF,GAGzBjlB,EAAEG,iBACFH,EAAEqd,mBAGNjW,EAAKge,YACLhe,EAAKvG,YAAYnN,GAAGC,GAAQC,GAAI,6DAA8DwT,EAAKsM,wBAEnGtM,EAAK3L,MAAM/H,GAAGC,GAAQC,GAAI,6DAA8DwT,EAAKsM,wBAEjGtM,EAAKie,oBAETA,iBAAkB,WACd,GAAIje,GAAO3Y,KAAM4Z,EAAUjB,EAAKiB,QAASkI,EAAYnJ,EAAK1X,QAAQ6gB,UAAW+U,EAAa7hB,GAAc,IAAMtV,GAAMoD,KAAK,SAAW,IAAKwB,EAASqU,EAAKtU,QAAU,wBAA0BwyB,EAAa,8BAAgCA,CACpO/U,IAAaA,EAAUgV,WAAY,IAC9Bld,EAAQ0U,IAAI,yBAAyB,IACtC9wB,EAAE,qBAAqBgkB,SAAS,qBAAqBwU,UAAUpc,GAE/DjB,EAAKmJ,WACLnJ,EAAKmJ,UAAUnI,UAEnBhB,EAAKmJ,UAAY,GAAIvO,IAAGwjB,UAAUnd,EAAS/Z,MAAWiiB,GAClDgJ,UAAWnS,EAAK4L,mBAChByS,eAAgB,yBAChB/d,WAAYN,EAAKM,WACjBge,kBAAmB3yB,EACnBA,OAAQA,EACR4yB,UAAWve,EAAK1X,QAAQyhB,YACxBwI,OAAQ,SAAU3Z,GACVoH,EAAKwD,QAAQ,SAAWnU,OAAQuJ,EAAEvJ,SAClCuJ,EAAEG,kBAEFiH,EAAKsW,sBACDtW,EAAKM,WAAWhY,QAAQk2B,UACxBxe,EAAKM,WAAWhY,QAAQk2B,QAAU,KAClCxe,EAAKye,iBAAmBze,EAAKM,WAAWhY,QAAQqc,SAChD3E,EAAKM,WAAWqE,SAAS3E,EAAKM,WAAWhY,QAAQqc,kBAOzE+Z,iBAAkB,SAAU/yB,EAAQ6C,GAAlB,GAIVwR,GACAxU,EACAmzB,EACAC,EACAjyB,EACAmC,EACArE,EACKW,CAVT,IAAK/D,KAAKoE,cAAV,CAUA,IAPIuU,EAAO3Y,KACPmE,EAAWwU,EAAK3L,MAAMxJ,IAAImV,EAAKvG,aAC/BklB,EAAc95B,EAAE8G,EAAQH,EAAS,IACjCozB,EAAiB/5B,EAAE8G,EAAQH,EAAS,IACpCmB,EAAU6B,EAAOI,EAAcoR,EAAKrT,SAAS5G,OAAS,EACtD+I,EAAmBN,EAAOwR,EAAKrT,QAAQ5G,OAAS4G,EAAU,EAC1DlC,KACKW,EAAM,EAAGA,EAAMuzB,EAAY54B,OAAQqF,GAAOuB,EAC/CnH,GAAKq5B,MAAMp0B,EAAQk0B,EAAYG,MAAM1zB,EAAKA,EAAMuB,IAChDnH,GAAKq5B,MAAMp0B,EAAQm0B,EAAehxB,OAAO,EAAGkB,GAEhD,OAAOrE,KAEXyd,YAAa,WAAA,GACQ6W,GAAOvwB,EAwBhBhD,EAIAG,EA5BJqU,EAAO3Y,KAAmB23B,KAAgBjP,EAAW/P,EAAKge,YAAa9kB,EAAa8G,EAAK1X,QAAQ4Q,WAAY+lB,EAAoBjf,EAAKM,WAAWhY,OACrJ,IAAI4Q,EAAY,CAIZ,GAHI8G,EAAK9G,YACL8G,EAAK9G,WAAW8H,UAEhBhB,EAAK1X,QAAQohB,oBAAqB,EAAM,CACxC,IAAKuV,EAAkBC,SAAWD,EAAkBC,OAAOjmB,QAAUgmB,EAAkBC,OAAOjmB,MAAM1L,GAChG,KAAUkwB,OAAM,kFAEpBzd,GAAK+K,gBAET7R,EAAanS,GAAM6T,GAAGukB,WAAWC,aAAalmB,GAC9C6lB,EAAQ7lB,EAAWkc,SACnB5mB,EAAO0K,EAAW1K,KACdwR,EAAKgO,gBACLgR,EAAUA,EAAUj5B,QAAU,kBAE9Bia,EAAK1X,QAAQ6gB,WAAanJ,EAAK4d,iBAC/BoB,EAAUA,EAAUj5B,QAAU,mCAElCi5B,EAAYA,EAAUt5B,KAAK,KACT,KAAds5B,IACAA,EAAY,QAAUA,EAAY,KAElCxzB,EAAWwU,EAAK3L,MAChB0b,IACAvkB,EAAWA,EAASX,IAAImV,EAAKvG,cAE7B9N,EAAS,KAAO6C,EAAOsN,GAA0B,WAAakjB,GAClEhf,EAAK9G,WAAa,GAAInS,IAAM6T,GAAGukB,WAAW3zB,GACtCG,OAAQA,EACR0zB,MAAM,EACNjK,SAAU2J,EACVxM,OAAQ,WACAvS,EAAK1X,QAAQohB,mBAAqBlb,GAClCwR,EAAKsf,uBAETtf,EAAKwD,QAAQxG,KAEjBuiB,YAAaxP,GAAYgP,GAASvwB,EAClCgxB,cAAe,SAAUxoB,GAAV,GAIP6jB,GACApwB,EACKW,EAASrF,CALlB,KAAIyI,GAASuhB,EAAb,CAKA,IADItlB,EAAS5F,IACJuG,EAAM,EAAGrF,EAASiR,EAAMjR,OAAQqF,EAAMrF,EAAQqF,IACnDyvB,EAAU7a,EAAK8W,YAAY9f,EAAM5L,IAC7BqG,GAAQopB,EAAQ,GAAI7jB,GAAS,IAC7BvM,EAASA,EAAOI,IAAIgwB,GAG5B,OAAOpwB,KAEXg1B,gBAAiB,WACb,MAAOzf,GAAK0e,iBAAiB/yB,EAAQ6C,MAGzCwR,EAAK1X,QAAQ4R,aACb1O,EAASc,GAAG,UAAYE,GAAI,SAAUoM,GAAV,GACpBnS,GAAUuZ,EAAKvZ,UACfyI,EAAS0J,EAAE1J,MACf,IAAI0J,EAAE8mB,UAAYpkB,GAAKqkB,WAAa/mB,EAAEgnB,UAAY/6B,EAAE4M,QAAQvC,EAAQ1D,QAAmB/E,EAAQyO,GAAG,2BAA6BzO,EAAQ8K,SAAS2D,GAAG,uDAAwD,CAOvM,GANA0D,EAAEG,iBACFH,EAAEqd,kBACFxvB,EAAU+H,EAAO/H,EAAUA,EAAQ8K;AAC/Bwe,IAAavhB,IACb/H,EAAUA,EAAQoE,IAAImV,EAAK8W,YAAYrwB,KAEvCs4B,EACA,GAAKnmB,EAAEyJ,SAGH,GAAI5b,EAAQ6J,SAASwN,IAGjB,MAFArX,GAAQ4mB,YAAYvP,IACpBkC,EAAKwD,QAAQxG,IACb,MALJgD,GAAK9G,WAAW2mB,YASpB7f,GAAK9G,WAAW2mB,OAEfrxB,KACDwR,EAAK9G,WAAW4mB,YAAcr5B,GAElCuZ,EAAK9G,WAAWxR,MAAMjB,QACd+H,IAASoK,EAAEgnB,UAAYhnB,EAAE8mB,SAAWpkB,GAAKykB,MAAQnnB,EAAEgnB,UAAYhnB,EAAE8mB,SAAWpkB,GAAK0kB,OAASpnB,EAAEgnB,UAAYhnB,EAAE8mB,SAAWpkB,GAAK2kB,IAAMrnB,EAAEgnB,UAAYhnB,EAAE8mB,SAAWpkB,GAAK4kB,MAAQtnB,EAAE8mB,UAAYpkB,GAAKqkB,UAAY/mB,EAAEgnB,YACjNhnB,EAAEG,iBACFH,EAAEqd,kBACFxvB,EAAUA,EAAQ8K,SACdwe,IACAtpB,EAAUA,EAAQoE,IAAImV,EAAK8W,YAAYrwB,KAEvCs4B,GACK/e,EAAK9G,WAAW4mB,cACjB9f,EAAK9G,WAAW4mB,YAAcr5B,GAElCuZ,EAAK9G,WAAWinB,YAAYngB,EAAK9G,WAAWknB,iBAAkB35B,KAE9DuZ,EAAK9G,WAAW2mB,QAChB7f,EAAK9G,WAAWxR,MAAMjB,SAO9C0hB,WAAY,WAAA,GAIAkY,GAHJ/3B,EAAUjB,KAAKiB,QACf4Q,EAAa5Q,EAAQ4Q,UACrBA,IAAc5Q,EAAQkhB,YAClB6W,EAAOh5B,KACNiB,EAAQ4R,aACTmmB,EAAKhsB,MAAMxJ,IAAIw1B,EAAK5mB,aAAatP,KAAK,WAAY,GAAGmC,GAAG,YAAcE,GAAK,WAAaA,GAAI,iBAAkB,SAAUoM,GAChHA,EAAE1J,SAAW0J,EAAEW,eACfX,EAAE0nB,6BAEPh0B,GAAG,YAAcE,GAAIuP,GAAS,IAAMC,GAASvP,GAAM6M,GAAY+mB,IAEtEA,EAAKrV,YAAcve,GAAM4zB,EAAKE,cAAeF,GAC7CA,EAAKpV,qBAAuB,WACpBoV,EAAKG,eACLH,EAAKG,cAAcC,IAAIJ,EAAKK,UAAU7nB,QAAQwiB,UAGtDgF,EAAK5f,KAAK,SAAU4f,EAAKpV,sBACzBoV,EAAKpf,QAAQ3U,GAAG,UAAW+zB,EAAKrV,aAChCqV,EAAKnV,iBAAmBze,GAAM4zB,EAAKvV,UAAWuV,GAC9CA,EAAKpf,QAAQ3U,GAAG,QAAS+zB,EAAKnV,oBAGtCqV,cAAe,SAAU3nB,GACjBA,YAAalP,QAAOi3B,QAAW/nB,EAAEyJ,UAAWzJ,EAAEgoB,SAAY/7B,EAAE+T,EAAE1J,QAAQgG,GAAG,mCAAqCpO,OAAO+5B,cAAgB/5B,GAAAA,OAAO+5B,gBAA6B14B,SAAS24B,WAAa34B,SAAS24B,UAAUC,cAAch8B,OAG/NsC,KAAKm5B,gBACNn5B,KAAKm5B,cAAgB37B,EAAE,gBAAgBiG,KACnCmF,SAAU,QACVwU,IAAK,MACL0J,KAAM,MACN6S,QAAS,EACT96B,MAAO,EACPC,OAAQ,IACToF,SAASlE,KAAK4Z,UAErB5Z,KAAKm5B,cAAcC,IAAIp5B,KAAKq5B,UAAU7nB,QAAQwiB,WAElDqF,OAAQ,WAAA,GASA37B,GAQI0F,EACAw2B,EACAC,EACAC,EAyBAC,EA5CJf,EAAOh5B,KACPg6B,EAAWhB,EAAKhF,SAChBiG,EAAY,KACZ9X,EAAY6W,EAAK/3B,QAAQkhB,UACzB+X,GAAc,CAyDlB,OAxDI18B,GAAEsH,cAAcqd,IAAcA,EAAU8X,YACxCA,EAAY9X,EAAU8X,WAEtBv8B,EAAO,GACPs8B,EAASt7B,SACLs7B,EAAS/1B,GAAG,GAAG4J,GAAG,QAClBmsB,EAAWA,EAASz1B,KAAK,0BAEzB21B,GACAF,EAAS11B,OAAO,YAEhBlB,KACAw2B,EAAc55B,KAAKsF,QAAQ5G,OAC3Bm7B,EAAab,EAAKrC,aAAepvB,EAAcyxB,EAAK1zB,SAAS5G,OAC7Do7B,GAAe,EACnBt8B,EAAEgpB,KAAKwT,EAAU,SAAUj2B,EAAKoD,GAAf,GAETgf,GACA9a,EACAmiB,EAcA2M,CAjBJhzB,GAAO3J,EAAE2J,GACLgf,EAAKhf,EAAKgF,QAAQ,MAClBd,EAAW8a,EAAGrc,QACd0jB,EAAYrmB,EAAK2C,QACjBowB,IACA1M,GAAarmB,EAAKmF,QAAQ,WAAW5N,QAErCm7B,GAAcC,IACdA,EAAet8B,EAAEwV,SAASgmB,EAAK5mB,YAAY,GAAIjL,EAAK,KAEpD6xB,EAAK1X,WAAawY,IAClBtM,GAAawL,EAAK1X,WAEtBkM,EAAYsM,EAAetM,EAAYA,EAAYqM,EAC/CD,EAAcpM,IACdoM,EAAcpM,GAEd2M,EAAWhzB,EAAKzJ,OACf0F,EAAOiI,KACRjI,EAAOiI,OAEXjI,EAAOiI,GAAUmiB,GAAa2M,IAE9BJ,EAAa32B,EAAO1E,OACxB0E,EAAS5F,EAAEgpB,KAAKpjB,EAAQ,SAAUW,EAAKq1B,GAC/BA,IACAh2B,EAAOW,GAAOq1B,EAAI3B,MAAMmC,GACpBG,EAAah2B,IACbg2B,EAAah2B,MAIzBvG,EAAEgpB,KAAKpjB,EAAOq0B,MAAMsC,GAAa,SAAUh2B,EAAKq1B,GAExC17B,GADA07B,EACQA,EAAI/6B,KAAK47B,GAAa,OAEtB,UAIbv8B,GAEX+lB,UAAW,SAAUlS,GACjB,GAAIvE,EACAhN,MAAKm5B,eAAiB5nB,GAAKA,EAAE1J,SAAW7H,KAAKm5B,cAAc,KAEvDnsB,EADAhN,KAAKiB,QAAQ4R,YACLrV,EAAEwC,KAAKZ,WAAW+M,QAAQ,SAE1BnM,KAAKgN,MAEjBiE,GAAWjE,GAAO,IAElBhN,KAAKm5B,gBACLn5B,KAAKm5B,cAAchuB,SACnBnL,KAAKm5B,cAAgB,OAG7BjY,kBAAmB,WACf,GAAIkZ,GAAMp6B,KAAKq6B,mBACXD,KACAp6B,KAAKskB,uBAAyBlf,GAAMpF,KAAKq6B,kBAAmBr6B,MAC5DxC,EAAEiC,QAAQwF,GAAG,SAAUjF,KAAKskB,0BAGpC+V,kBAAmB,WACf,GAAIzvB,GAAO5K,KAAKsF,QAASg1B,EAAc76B,OAAO86B,WAAa,EAAI96B,OAAO86B,WAAaC,OAAO37B,KAC1F,OAAOmB,MAAKy6B,sBAAsB7vB,EAAM0vB,IAE5CG,sBAAuB,SAAU7vB,EAAM0vB,GAAhB,GAEV97B,GACDmqB,EACA+R,EAHJN,GAAM,CACV,KAAS57B,EAAI,EAAGA,EAAIoM,EAAKlM,OAAQF,IACzBmqB,EAAM/d,EAAKpM,GACXk8B,EAAW/R,EAAIgS,eACfD,IAAah4B,GAA0B,OAAbg4B,IAC1BN,GAAM,EACFM,EAAWJ,EACXt6B,KAAK46B,WAAWjS,GAEhB3oB,KAAK66B,WAAWlS,KAGnBA,EAAIjjB,QAAUijB,EAAIrjB,UACnB80B,EAAMp6B,KAAKy6B,sBAAsB9R,EAAIrjB,QAASg1B,IAAgBF,EAGtE,OAAOA,IAEX3K,YAAa,SAAUtmB,GAAV,GAML6D,GACAlD,EANAsI,EAAcpS,KAAKoS,WAEvB,OADAjJ,GAAM3L,EAAE2L,GACHiJ,GAGDpF,EAAQ7D,EAAIgD,QAAQnM,KAAKgN,MAAMxJ,IAAIxD,KAAKoS,cACxCtI,EAAQkD,EAAMzI,KAAK,aAAauF,MAAMX,GAC1C6D,EAAQA,EAAM,KAAOhN,KAAKgN,MAAM,GAAKoF,EAAcpS,KAAKgN,MACjDA,EAAMzI,KAAK,aAAaN,GAAG6F,IALvBX,GAOf2xB,eAAgB,WACZ,GAAIniB,GAAO3Y,IAIX,OAHI2Y,GAAK9G,YACL8G,EAAK9G,WAAW2mB,QAEhBh7B,EAAEuJ,KAAKgC,EAAY4P,EAAKrT,SAAU,SAAUqjB,GACxC,MAAOA,GAAI9W,aACZnT,QACHia,EAAKoiB,mBAAmBpiB,EAAKqb,UAC7B,IAEArb,EAAK1X,QAAQohB,kBACb1J,EAAKsf,uBAETtf,EAAKwD,QAAQxG,IAHb,IAKJqe,OAAQ,SAAUrkB,GACd,GAAIgJ,GAAO3Y,KAAM6R,EAAa8G,EAAK9G,UAEnC,OADAlC,GAAQgJ,EAAK3L,MAAMxJ,IAAImV,EAAKvG,aAAa7N,KAAKoL,GAC1CA,EAAMjR,QACFmT,IAAeA,EAAW5Q,QAAQ8sB,WAClClc,EAAW2mB,QACX7oB,EAAQA,EAAMuK,SAEdvB,EAAKge,cACLhnB,EAAQA,EAAMnM,IAAImM,EAAMrP,IAAI,WACxB,MAAOqY,GAAK8W,YAAYzvB,UAG5B6R,EACAA,EAAWxR,MAAMsP,IAEjBA,EAAM6W,KAAK,WACPhpB,EAAEwC,MAAMwhB,SAAS/K,IAAUlS,KAAKoS,IAAeqkB,KAAK,WAAW,GAAMl4B,KAAK,aAAc,gBAAgBA,KAAK,gBAAgB,KAE7H6V,EAAKqb,SAASt1B,SAAWia,EAAKhJ,QAAQjR,QACtCia,EAAKsiB,yBAAwB,GAE7BtiB,EAAK1X,QAAQohB,kBACb1J,EAAKsf,uBAETtf,EAAKwD,QAAQxG,KAEjB,GAEG9D,EAAaA,EAAWxR,QAAUsY,EAAKhJ,QAAQrL,OAAO,IAAMmS,KAEvEwkB,wBAAyB,SAAUC,GAC/B,GAAIviB,GAAO3Y,IACPk7B,GACAviB,EAAKjQ,MAAMlF,IAAImV,EAAKrG,cAAc/N,KAAK,MAAQoS,IAAeqkB,KAAK,WAAW,GAAMl4B,KAAK,gBAAgB,GAAMA,KAAK,aAAc,qBAElI6V,EAAKjQ,MAAMlF,IAAImV,EAAKrG,cAAc/N,KAAK,MAAQoS,IAAeqkB,KAAK,WAAW,GAAOl4B,KAAK,gBAAgB,GAAOA,KAAK,aAAc,oBAG5Ii4B,mBAAoB,SAAUprB,GAC1B,GAAIgJ,GAAO3Y,IACX2P,GAAQgJ,EAAK3L,MAAMxJ,IAAImV,EAAKvG,aAAa7N,KAAKoL,GAC1CgJ,EAAKge,cACLhnB,EAAQA,EAAMnM,IAAImM,EAAMrP,IAAI,WACxB,MAAOqY,GAAK8W,YAAYzvB,UAGhC2P,EAAM6W,KAAK,WACPhpB,EAAEwC,MAAMgmB,YAAYvP,IAAUlS,KAAKoS,IAAe7T,KAAK,gBAAgB,GAAOk4B,KAAK,WAAW,GAAOl4B,KAAK,aAAc,gBAE5H6V,EAAKsiB,yBAAwB,GACzBtiB,EAAK1X,QAAQohB,kBACb1J,EAAKsf,uBAETtf,EAAKwD,QAAQxG,KAEjBsiB,qBAAsB,WAAA,GACDh6B,GAAK6yB,EAKbtyB,EALLma,EAAO3Y,KAAqBm7B,EAAUxiB,EAAKhJ,QAASioB,EAAoBjf,EAAKM,WAAWhY,QAASm6B,EAAUxD,EAAkBC,OAAOjmB,MAAM1L,GAAIm1B,IAKlJ,KAJA1iB,EAAKqb,SAASxN,KAAK,WACfsK,EAAWnY,EAAKmY,SAAS9wB,MACzBq7B,EAAgBvK,EAASsK,KAAY,IAEhC58B,EAAI,EAAGA,EAAI28B,EAAQz8B,OAAQF,IAChCsyB,EAAWnY,EAAKmY,SAASqK,EAAQ38B,IACjCP,EAAM6yB,EAASsK,GACXC,EAAgBp9B,GAChB0a,EAAK+K,aAAazlB,IAAO,QAElB0a,GAAK+K,aAAazlB,IAIrCq9B,iBAAkB,WAAA,GAELC,GADL5iB,EAAO3Y,KAAMw7B,IACjB,KAASD,IAAY5iB,GAAK+K,aACtB8X,EAAIr9B,KAAKo9B,EAGb,OADAC,GAAIp9B,OACGo9B,GAEXC,mBAAoB,SAAUr8B,EAASyN,GACnC,GAAI6uB,GAAWl+B,EAAE4B,GAASqQ,KAAK,WAC/BjS,GAAE4B,GAAS4mB,YAAYzP,IAASpK,QAAQ,SAASwvB,WAAW,yBACxDD,GACAA,EAAWA,EAAS99B,QAAQoC,KAAK0mB,QAAS,IAC1ClpB,EAAE4B,GAAS0D,KAAK,KAAM44B,IAEtBl+B,EAAE4B,GAASu8B,WAAW,MAE1B9uB,EAAK4C,KAAK,WAAY5C,EAAK/J,KAAK,OAAOA,KAAK,KAAM9C,KAAK0mB,SAASlF,SAASjL,IAASpK,QAAQ,SAASrJ,KAAK,wBAAyB9C,KAAK0mB,SACtI1mB,KAAK47B,SAAW/uB,GAEpBgvB,eAAgB,WAAA,GAMR1yB,GACA2yB,EACAC,EACAC,EACAC,EAGQ5wB,EAZRjM,EAAUY,KAAK47B,SACfha,EAAa5hB,KAAKiB,QAAQ2gB,UACzBxiB,IAAYwiB,IAGbzY,EAAM/J,EAAQ8K,SACd4xB,EAAiB3yB,EAAIgD,QAAQ,SAASjC,SACtC6xB,EAAsBD,EAAejuB,GAAG,gDACxCmuB,EAAcF,EAAejuB,GAAG,qEAChCouB,EAAsBz+B,EAAEwC,KAAKqE,SAASE,KAAK,+BAA+B23B,UAAU5zB,OAAO,GAC3F0zB,IACIpa,EAAWC,SACPxW,EAAWmB,KAAKnD,IAAIe,GAAQjB,EAAI,GAAInJ,KAAKkmB,OAAO/c,EAAIe,WAAY,GACpElK,KAAKm8B,iBAAmBn8B,KAAK+hB,kBAAkBhF,UAAU1R,GACzDrL,KAAK+hB,kBAAkBxE,eAAepU,IAEtCnJ,KAAKyc,UAAUzc,KAAKyvB,YAAYtmB,GAAK,GAAI8yB,IAG7Cj8B,KAAKoE,gBACLpE,KAAKoE,cAAc,GAAG+M,UAAY8qB,EAAoB9qB,WAErD4qB,GACD/7B,KAAKyc,UAAUrd,EAAQ,GAAI68B,KAGnC78B,QAAS,SAAUyN,GACf,MAAO7M,MAAK4S,YAAY/F,GAAM,IAElC+F,YAAa,SAAU/F,EAAMuvB,GACzB,GAAIh9B,GAAUY,KAAK47B,QAcnB,OAbA/uB,GAAOrP,EAAEqP,GACLA,EAAKnO,SACAU,GAAWA,EAAQ,KAAOyN,EAAK,KAChC7M,KAAKy7B,mBAAmBr8B,EAASyN,GACjC7M,KAAK67B,iBACAO,GACDp8B,KAAKmc,QAAQlF,IAAYjF,QAASnF,MAI1CA,GAAQA,EAAKnO,SACbsB,KAAKq8B,eAAiBxvB,EAAK3C,SAAS9B,SAASoM,IAAW1K,MAAM+C,IAE3D7M,KAAK47B,UAEhBU,eAAgB,WACRt8B,KAAK47B,WACL57B,KAAK47B,SAAS5V,YAAYzP,IAC1BvW,KAAK47B,SAAW,OAGxBnf,UAAW,SAAUzK,EAASvN,GAAnB,GAYCuI,GAXJuvB,EAAqBvqB,EAAQwqB,QAAQ1H,cACrC2H,EAAsC,OAAvBF,GAAsD,OAAvBA,EAC9C7e,EAAgB1L,EAAQyqB,EAAe,aAAe,aACtDC,EAAmB1qB,EAAQyqB,EAAe,cAAgB,gBAC1Dhf,EAAkBhZ,EAAUg4B,EAAe,aAAe,aAC1DE,EAAqBl4B,EAAUg4B,EAAe,cAAgB,gBAC9DG,EAAiBlf,EAAgBgf,EACjCt5B,EAAS,EACT4jB,EAAe,EACfC,EAAoB,CACpBzO,KAASikB,IACLzvB,EAAQxP,EAAEwU,GAAS7F,QAAQ,SAAS,GACpC4B,GAAQC,KACRgZ,EAAeha,EAAM6vB,WACd9uB,GAAQoZ,UACfF,EAAoBja,EAAM6vB,WAAan9B,GAAM+S,QAAQuH,cAG7DyD,EAAkBjR,KAAK6Q,IAAII,EAAkBuJ,EAAeC,GAExD7jB,EADAqa,EAAkBC,EACTA,EACFkf,EAAiBnf,EAAkBkf,EACtCD,GAAoBC,EACXC,EAAiBD,EAEjBjf,EAGJD,EAEbra,EAASoJ,KAAK6Q,IAAIja,EAAS4jB,GAAgBC,EAC3CxiB,EAAUg4B,EAAe,aAAe,aAAer5B,GAE3Dwd,aAAc,WAAA,GAKNkc,GACAC,EACArQ,EANA/T,EAAO3Y,IACN2Y,GAAK1X,QAAQ4R,cAGdiqB,EAAankB,EAAK3L,MAAMxJ,IAAImV,EAAKvG,aACjC2qB,EAAepkB,EAAKjQ,MAAMwB,SAAS1G,IAAIhG,EAAE,SAAUmb,EAAKrG,eACxDoa,EAASoQ,EACTnkB,EAAK1X,QAAQ2gB,aACb8K,EAASA,EAAOlpB,IAAIu5B,GACpBA,EAAaj6B,KAAKqU,QAEtBnX,KAAKsjB,mBAAqBoJ,EAC1BA,EAAO5S,IAAI,YAAc3U,GAAK,SAAWA,GAAK,YAAcA,GAAK,WAAaA,IAC9E43B,EAAa93B,GAAG,UAAYE,GAAIC,GAAMuT,EAAKqkB,gBAAiBrkB,IAAOpU,KAAK,YAAYzB,KAAK,eACzFg6B,EAAWh6B,KAAKqU,GAAU9C,GAAKhL,IAAIyzB,EAAWh6B,KAAKqU,KAAa,EAAG,IAAIlS,GAAG,YAAcE,GAAK,WAAaA,GAAI,iBAAkB,SAAUoM,GAClIA,EAAE1J,SAAW0J,EAAEW,eACfX,EAAE0nB,6BAGVvM,EAAOznB,GAAGvF,GAAM+S,QAAQC,MAAQ,aAAevN,GAAK,YAAcA,GAAIuP,GAAS,IAAMC,GAASvP,GAAM6M,GAAY0G,IAAO1T,GAAG,QAAUE,GAAIC,GAAMuT,EAAKskB,YAAatkB,IAAO1T,GAAG,WAAaE,GAAIC,GAAMuT,EAAKukB,WAAYvkB,IAAO1T,GAAG,UAAYE,GAAIC,GAAMuT,EAAKwkB,cAAexkB,MAE1QqkB,gBAAiB,SAAUzrB,GACnBA,EAAE6rB,QAAU7rB,EAAE8mB,SAAWpkB,GAAK4kB,OAC9B74B,KAAKZ,UAAUmF,KAAK,yCAAyCQ,QAC7DwM,EAAE0nB,6BAGVoE,aAAc,SAAUrwB,GACpBhN,KAAKsjB,mBAAmBxgB,KAAKqU,OAC7BnK,EAAMlK,KAAKqU,GAAU,IAEzB8lB,YAAa,SAAU1rB,GAAV,GAILnS,GACA4N,CAJAtN,IAAM+S,QAAQC,QAGdtT,EAAUY,KAAKZ,UACf4N,EAAQxP,EAAE+T,EAAEW,eACZ9S,GAAWA,EAAQyO,GAAG,YACtBzO,EAAQoiB,SAASjL,IAEjBvW,KAAK4S,YAAY5F,EAAMzI,KAAKwQ,KAEhC/U,KAAKq9B,aAAarwB,KAEtBkwB,WAAY,WACR,GAAI99B,GAAUY,KAAKZ,SACfA,IACAA,EAAQ4mB,YAAYzP,KAG5B4mB,cAAe,SAAU5rB,GAAV,GAaP+rB,GAZAl+B,EAAUY,KAAKZ,UACfm+B,EAAoBv9B,KAAK+hB,mBAAqB/hB,KAAK+hB,kBAAkBjE,WACrEjW,EAASrK,EAAE+T,EAAE1J,QACb21B,GAAajsB,EAAEksB,uBAAyB51B,EAAOgG,GAAG,6BACtD,OAAI0vB,IACAhsB,EAAEG,iBACF,IAEJtS,EAAUA,EAAUA,EAAU5B,EAAEwC,KAAKoS,aAAa5O,IAAIxD,KAAKgN,OAAOzI,KAAKwQ,IAClE3V,EAAQV,SAGT4+B,GAAU,EACVE,GAAajsB,EAAE8mB,SAAWpkB,GAAK2kB,KAC/B0E,EAAUt9B,KAAK09B,QAAQt+B,EAASmS,EAAEgnB,WAElCiF,GAAajsB,EAAE8mB,SAAWpkB,GAAK4kB,OAC/ByE,EAAUt9B,KAAK29B,UAAUv+B,EAASmS,EAAEgnB,WAEpCiF,GAAajsB,EAAE8mB,UAAY7f,GAAQvE,GAAKykB,KAAOzkB,GAAK0kB,SACpD2E,EAAUt9B,KAAK49B,WAAWx+B,EAASmS,EAAE6rB,OAAQ7rB,EAAEgnB,SAAUhnB,EAAEyJ,QAASzJ,EAAEW,gBAEtEsrB,GAAajsB,EAAE8mB,UAAY7f,GAAQvE,GAAK0kB,MAAQ1kB,GAAKykB,QACrD4E,EAAUt9B,KAAK69B,UAAUz+B,EAASmS,EAAE6rB,OAAQ7rB,EAAEgnB,SAAUhnB,EAAEyJ,QAASzJ,EAAEW,gBAErEsrB,GAAajsB,EAAE8mB,SAAWpkB,GAAK6pB,WAC/BR,EAAUt9B,KAAK+9B,mBAEfP,GAAajsB,EAAE8mB,SAAWpkB,GAAK+pB,SAC/BV,EAAUt9B,KAAKi+B,iBAEfT,GAAajsB,EAAE8mB,SAAWpkB,GAAKiqB,OAC/BZ,EAAUt9B,KAAKm+B,YAAY/+B,EAASmS,EAAEyJ,UAEtCwiB,GAAajsB,EAAE8mB,SAAWpkB,GAAKmqB,MAC/Bd,EAAUt9B,KAAKq+B,WAAWj/B,EAASmS,EAAEyJ,UAErCzJ,EAAE8mB,SAAWpkB,GAAKqqB,OAAS/sB,EAAE8mB,SAAWpkB,GAAKsqB,KAC7CjB,EAAUt9B,KAAKw+B,gBAAgBp/B,EAASmS,EAAEW,cAAerK,IAEzD0J,EAAE8mB,SAAWpkB,GAAKwqB,MAClBnB,EAAUt9B,KAAK0+B,cAAct/B,EAASmS,EAAEW,gBAExCX,EAAE8mB,SAAWpkB,GAAK0qB,MAClBrB,EAAUt9B,KAAK4+B,cAAcx/B,EAASmS,EAAEW,cAAeX,EAAEgnB,WAEzD+E,IACA/rB,EAAEG,iBACFH,EAAEqd,oBAxCNxvB,IA2CJy+B,UAAW,SAAUz+B,EAASg+B,EAAQ7E,EAAUvd,EAASxI,GAA9C,GACH3F,GAAM/C,EACNX,EAAM/J,EAAQ8K,SACdzF,EAAY0E,EAAIe,QA6BpB,OA5BIkzB,GACAp9B,KAAK6+B,YAAY11B,GACV6R,GAAW5b,EAAQyO,GAAG,cAAgB7N,KAAKiB,QAAQyhB,YAC1D1iB,KAAK8+B,YAAY1/B,GAAS,IAE1B0K,EAAQrF,EAAUF,KAAKmQ,IAAQ5K,MAAMX,GACrC0D,EAAO7M,KAAK++B,oBAAoBt6B,EAAWrF,EAAS0K,GAC/C+C,EAAK,KACF0rB,EACIv4B,KAAKoS,aACLvF,EAAO7M,KAAKyvB,YAAYtmB,GACpB3L,EAAEwV,SAAShT,KAAKoS,YAAY,GAAIjJ,EAAI,MACpC0D,EAAOA,EAAKP,QAAQsI,GAAU,WAElC/H,EAAOA,EAAKzE,SAASoM,GAAY,UAEjC3H,EAAO7M,KAAKg/B,SAAS5/B,EAASoT,GAAc,IAGhD/N,EAAYzE,KAAKi/B,qBAAqBx6B,GACtCoI,EAAO7M,KAAK++B,oBAAoBt6B,EAAWrF,EAAS0K,GAChD+C,EAAK,KAAOzN,EAAQ,IACpB6R,GAAWxM,EAAUyF,UAAU,KAI3ClK,KAAK4S,YAAY/F,KAEd,GAEX+wB,WAAY,SAAUx+B,EAASg+B,EAAQ7E,EAAUvd,EAASxI,GAA9C,GACJ3F,GAAM/C,EACNX,EAAM/J,EAAQ8K,SACdzF,EAAY0E,EAAIe,QA6BpB,OA5BIkzB,GACAp9B,KAAKk/B,UAAU/1B,GACR6R,GAAW5b,EAAQyO,GAAG,cAAgB7N,KAAKiB,QAAQyhB,YAC1D1iB,KAAK8+B,YAAY1/B,GAAS,IAE1B0K,EAAQrF,EAAUF,KAAKmQ,IAAQ5K,MAAMX,GACrC0D,EAAO7M,KAAKm/B,oBAAoB16B,EAAWrF,EAAS0K,GAC/C+C,EAAK,KACF0rB,EACIv4B,KAAKoS,aACLvF,EAAO7M,KAAKyvB,YAAYtmB,GACpB3L,EAAEwV,SAAShT,KAAKgN,MAAM,GAAI7D,EAAI,MAC9B0D,EAAOA,EAAKuyB,QAAQxqB,GAAU,WAElC/H,EAAOA,EAAKzE,SAASoM,GAAY,WAEjC3H,EAAO7M,KAAKg/B,SAAS5/B,EAASoT,GAAc,IAGhD/N,EAAYzE,KAAKi/B,qBAAqBx6B,GAAW,GACjDoI,EAAO7M,KAAKm/B,oBAAoB16B,EAAWrF,EAAS0K,GAChD+C,EAAK,KAAOzN,EAAQ,IACpB6R,GAAWxM,EAAUyF,UAAU,KAI3ClK,KAAK4S,YAAY/F,KAEd,GAEX6wB,QAAS,SAAUt+B,EAASm5B,GAAnB,GAED1rB,GAgBAO,EAjBA3I,EAAYrF,EAAQ8K,SAASA,QAoBjC,OAlBIquB,IACA1rB,EAAOzN,EAAQ8K,SACf2C,EAAOA,EAAKP,QAAQsI,GAAU,UAC9B/H,EAAOzN,EAAQ8K,SAAS2D,GAAG+G,IAAW/H,EAAKzE,WAAWnE,GAAG7E,EAAQ0K,SAAW+C,EAAKzE,SAASoM,GAAY,WAEtG3H,EAAO7M,KAAKq/B,kBAAkB56B,EAAWrF,GACpCyN,EAAK,KACN7M,KAAKq8B,eAAiB,EACtB53B,EAAYzE,KAAKs/B,mBAAmB76B,GAAW,GAC/CoI,EAAO7M,KAAKq/B,kBAAkB56B,EAAWrF,GACrCyN,EAAK,IACLoE,GAAWxM,EAAUyF,UAAU,KAIvCkD,EAAMpN,KAAKq8B,gBAAkB,EACjCr8B,KAAK4S,YAAY/F,GACjB7M,KAAKq8B,eAAiBjvB,GACf,GAEXuwB,UAAW,SAAUv+B,EAASm5B,GAAnB,GAEH1rB,GAgBAO,EAjBA3I,EAAYrF,EAAQ8K,SAASA,QAoBjC,OAlBIquB,IACA1rB,EAAOzN,EAAQ8K,SACf2C,EAAOA,EAAKuyB,QAAQxqB,GAAU,UAC9B/H,EAAOzN,EAAQ8K,SAAS2D,GAAG+G,IAAW/H,EAAKzE,WAAWnE,GAAG7E,EAAQ0K,SAAW+C,EAAKzE,SAASoM,GAAY,YAEtG3H,EAAO7M,KAAKu/B,kBAAkB96B,EAAWrF,GACpCyN,EAAK,KACN7M,KAAKq8B,eAAiB,EACtB53B,EAAYzE,KAAKs/B,mBAAmB76B,GACpCoI,EAAO7M,KAAKu/B,kBAAkB96B,EAAWrF,GACrCyN,EAAK,IACLoE,GAAWxM,EAAUyF,UAAU,KAIvCkD,EAAMpN,KAAKq8B,gBAAkB,EACjCr8B,KAAK4S,YAAY/F,GACjB7M,KAAKq8B,eAAiBjvB,GACf,GAEX0xB,YAAa,SAAU1/B,EAASogC,GAAnB,GACLr7B,GAAWnE,KAAK4Z,QAAQnK,OAAOob,iBAAiB7Y,QAAQzN,KAAKvE,KAAKukB,mBAAmBtjB,QAAQqD,OAAS,YACtGgB,EAAUwB,EAAeuD,EAAsBrK,KAAKsF,UACpD6lB,EAAWhnB,EAAS2F,MAAMtM,EAAE4B,IAC5BuJ,EAAS62B,KAAc,EACvB/5B,EAASH,EAAQ6lB,GACjBC,EAAW7gB,EAA2BjF,EAAStF,KAAKsF,QAAS6lB,EAAUA,EAAWxiB,EAClFyiB,IAAY,GACZprB,KAAKqrB,cAAcD,EAAU3lB,EAAQ+5B,IAG7CrB,YAAa,SAAU/+B,EAASqgC,GAAnB,GAKLtT,GAJAhjB,EAAM/J,EAAQ8K,SACdw1B,EAAev2B,EAAIe,SACnBy1B,EAAkB3/B,KAAKoS,aAAepS,KAAKoS,YAAYhK,SAAS,SAAS,KAAOs3B,EAAa,GAC7FE,EAAWF,EAAa,KAAO1/B,KAAK+M,MAAM,EAc9C,IAZI0yB,EAEItT,EADAnsB,KAAKoS,YACEpS,KAAKoS,YAAY7N,KAAKsQ,GAAe,IAAMF,GAAU,UAErD3U,KAAKgN,MAAMzI,KAAKsQ,GAAe,IAAMF,GAAU,WAEnDirB,GAAYD,KACfC,GAAY5/B,KAAKoS,cACjBjJ,EAAMnJ,KAAKyvB,YAAYtmB,IAE3BgjB,EAAOhjB,EAAIf,SAASoM,GAAY,WAEhC2X,GAAQA,EAAKztB,OAEb,MADAsB,MAAK4S,YAAYuZ,IACV,GAGfkS,WAAY,SAAUj/B,EAASqgC,GAAnB,GAKJ5yB,GAJA1D,EAAM/J,EAAQ8K,SACdw1B,EAAev2B,EAAIe,SACnBy1B,EAAkB3/B,KAAKoS,aAAepS,KAAKoS,YAAYhK,SAAS,SAAS,KAAOs3B,EAAa,GAC7FE,EAAWF,EAAa,KAAO1/B,KAAK+M,MAAM,EAU9C,IARI0yB,EACA5yB,EAAO7M,KAAKgN,MAAMzI,KAAKuQ,GAAc,IAAMH,GAAU,UAC9CirB,GAAYD,MACdC,GAAY5/B,KAAKoS,cAClBjJ,EAAMnJ,KAAKyvB,YAAYtmB,IAE3B0D,EAAO1D,EAAIf,SAASoM,GAAY,UAEhC3H,GAAQA,EAAKnO,OAEb,MADAsB,MAAK4S,YAAY/F,IACV,GAGfkxB,gBAAiB,WACb,QAAK/9B,KAAKiB,QAAQmhB,WAGlBpiB,KAAKiZ,WAAWmG,KAAKpf,KAAKiZ,WAAWmG,OAAS,IACvC,IAEX6e,cAAe,WACX,QAAKj+B,KAAKiB,QAAQmhB,WAGlBpiB,KAAKiZ,WAAWmG,KAAKpf,KAAKiZ,WAAWmG,OAAS,IACvC,IAEXwf,cAAe,SAAUx/B,EAASoT,EAAc+lB,GAAjC,GAEPpxB,GADA04B,EAAW7/B,KAAKiB,QAAQ6Q,UAAgC,UAApB9R,KAAK4tB,WAE7C,UAAKiS,GAAYzgC,EAAQyO,GAAG,SAG5B1G,EAAO3J,EAAEmW,MAAiBxH,QAAQ,gBAC9BhF,EAAK,IAAMA,EAAK,KAAO/H,EAAQ,KAC/BA,EAAU+H,GAEdA,EAAOnH,KAAKg/B,SAAS5/B,EAASoT,EAAc+lB,KACxCpxB,EAAKzI,SACLsB,KAAK8/B,eAAe1gC,EAAS+H,EAAMA,EAAKgF,QAAQ,WACzC,KAIfuyB,cAAe,SAAUt/B,EAASoT,GAAnB,GAaHsf,GAZJiO,EAASpsB,KACTksB,EAA+B,UAApB7/B,KAAK4tB,WACpB,OAAK3a,IAAS7T,IAOVygC,EACA7/B,KAAKmuB,WAAU,IAEX2D,EAAet0B,EAAE4B,GAAS8K,SAASJ,QACnCi2B,GACAA,EAAOxR,OAEXvuB,KAAKuxB,WAAU,GACXO,GAAgB,GAChB9xB,KAAK4S,YAAY5S,KAAK2P,QAAQ1L,GAAG6tB,GAAc1pB,SAASuM,IAASuF,UAGrEnM,GAAQC,MAAQD,GAAQE,QAAU,GAClCnN,SAASe,KAAK2P,QAElBP,GAAWuB,GAAc,IAClB,KAtBCpT,EAAQkvB,IAAIyR,GAAQrhC,SACpBuS,GAAWuB,GAAc,IAClB,IAsBnBwtB,eAAgB,SAAU5gC,EAAS0S,GAC/B,GAAI3I,GAAM/J,EAAQ8K,QAClB,OAAIf,GAAI0E,GAAG,oBACP1E,EAAI5E,KAAK,iBAAiBQ,SACnB,KAEN+M,IAAY3I,EAAI0E,GAAG,oBACpB1E,EAAI5E,KAAK,iBAAiBQ,SACnB,IAIfy5B,gBAAiB,SAAUp/B,EAASoT,EAAc3K,GAAjC,GAGTo4B,GAgBAC,EAlBApuB,EAAW9R,KAAKiB,QAAQ6Q,UAAY9R,KAAKiB,QAAQ6Q,SAAS4N,UAAW,EACrEjb,EAAYoD,EAAOsE,QAAQ,kBAK/B,OAHKtE,GAAOgG,GAAG,UAAarQ,EAAEwV,SAAS5T,EAAQ,GAAIyI,EAAO,MACtDzI,EAAUqF,GAEVrF,EAAQyO,GAAG,OACXoyB,EAAO7gC,EAAQmF,KAAK,WAChB07B,EAAKvhC,OACLuhC,EAAKl7B,QAEL3F,EAAQmF,KAAKoS,IAAenF,SAEzB,KAEPxR,KAAKggC,eAAe5gC,EAAS0S,KAG7BouB,EAAY9gC,EAAQmF,KAAK,yBACzB27B,EAAU,KAAO9gC,EAAQ6J,SAAS,gBAAkB7J,EAAQ6J,SAAS,oBACrEi3B,EAAU1uB,SACH,MAEPM,GAAajK,EAAOgG,GAAG,iCAClBpJ,EAAU,KACXA,EAAYrF,GAEhBY,KAAK8/B,eAAer7B,GAAW,EAAO+N,IAC/B,KAIf2sB,oBAAqB,SAAUnyB,EAAO5N,EAAS+gC,GAA1B,GAGTl4B,GACAoD,EAGQe,EANZtD,EAAQ1J,EAAQggC,QAAQ5qB,GAC5B,OAAK1L,GAAMpK,SACHuJ,EAAO+E,EAAMzI,KAAKmQ,IAClBrJ,EAAWpD,EAAK6B,MAAM1K,EAAQ8K,UAC9BmB,OAeDvC,EAAMoR,QAdD9a,EAAQ6J,SAAS,aACbmD,KACJhB,GAAqB7D,EAAcvH,KAAKsF,SAAS,IAAKoH,EAAkBzE,EAAKhE,GAAG,GAAGmE,SAAS,YAAY8R,SAAU9N,EAAY,EAAG,GAC7HA,EAAW+zB,GACJ/zB,EAAW+zB,GAAe,GAE9B/gC,GAEPA,EAAQ8K,SAASjB,SAAS,gBACnBhB,EAAKK,OAAOF,SAASoM,IAAW0F,QAEpCjS,EAAKhE,GAAGk8B,GAAe/3B,SAASoM,IAAW0F,SAK9D6kB,oBAAqB,SAAU/xB,EAAO5N,EAAS+gC,GAA1B,GAGTl4B,GACAoD,EAGQe,EACA9G,EAPZwD,EAAQ1J,EAAQkN,QAAQkI,GAC5B,OAAK1L,GAAMpK,SACHuJ,EAAO+E,EAAMzI,KAAKmQ,IAClBrJ,EAAWpD,EAAK6B,MAAM1K,EAAQ8K,UAC9BmB,OAgBDvC,EAAMoR,QAfD9a,EAAQ6J,SAAS,aACbmD,KACA9G,EAAUiC,EAAcvH,KAAKsF,SACjC8F,GAAqB9F,EAAQA,EAAQ5G,OAAS,IAAKgO,EAAkBzE,EAAKhE,GAAG,GAAGmE,WAAWE,QAAS8D,EAAY,EAAG,GAC/GA,EAAW+zB,GACJ/zB,EAAW+zB,GAAe,GAE9B/gC,GAEPA,EAAQ8K,SAASjB,SAAS,gBACnBhB,EAAKK,OAAOF,SAASoM,IAAWlM,OAEpCL,EAAKhE,GAAGk8B,GAAe/3B,SAASoM,IAAWlM,QAK9D83B,kBAAmB,SAAUpzB,EAAO5N,GAAjB,GAKXihC,GAJAv2B,EAAQ1K,EAAQ0D,KAAK,aACzB,OAAKgH,IAGDu2B,EAAqB94B,EAAcvH,KAAKsF,SAAS5G,OACjD2hC,IAAuBrzB,EAAMb,QAAQ,OAAOlD,SAAS,yBAAyB,GACvEa,EAAQu2B,EAEZv2B,GANIpH,GAQf28B,kBAAmB,SAAU56B,EAAWrF,GAArB,GACX0J,GACAK,EAAM/J,EAAQ8K,SACdjC,EAAOxD,EAAU2D,SAASsM,IAC1BrJ,EAAWpD,EAAK6B,MAAMX,GACtBW,EAAQ9J,KAAKogC,kBAAkB37B,EAAWrF,EAC9C,IAAI0K,GAAS1K,EAAQ6J,SAAS,YAE1B,MADAH,GAAQiD,EAAmB3M,GACpB0J,EAAM7E,GAAG6E,EAAMpK,OAAS,EAGnC,IADAoL,EAAQ0C,KAAKnD,IAAIF,EAAIf,SAASoM,IAAW1K,MAAM1K,GAAUY,KAAKq8B,gBAAkB,GAC5ElzB,EAAIF,SAAS,gBACb,MAAOwC,GAAchH,GAAWH,OAAOsC,GAAe3C,GAAG6F,EAE7D,IAAIuB,OAEA,GADAlC,EAAM1E,EAAUF,KAAK,4BAChB4E,EAAI,GACL,MAAOsC,GAAchH,GAAWH,OAAOsC,GAAe3C,GAAG6F,OAG7DX,GAAmB,IAAbkC,EAAiB7N,IAAMyK,EAAKhE,GAAGoH,EAAW,EAGpD,OADAvC,GAAQK,EAAIf,SAASoM,IAEV1L,EAAM7E,GADb6E,EAAMpK,OAASoL,EACCA,EAEJ,IAEpBy1B,kBAAmB,SAAU96B,EAAWrF,GAArB,GACX0J,GAeAw3B,EAEIC,EACAC,EACKz8B,EAASrF,EAlBlByK,EAAM/J,EAAQ8K,SACdjC,EAAOxD,EAAU2D,SAASsM,IAC1BrJ,EAAWpD,EAAK6B,MAAMX,GACtBW,EAAQ9J,KAAKogC,kBAAkB37B,EAAWrF,EAC9C,IAAIiM,OAAkBvB,IAAUpH,GAAatD,EAAQ6J,SAAS,YAC1D,MAAOyD,GAAkBtN,GAAS6E,GAAG,EAUzC,IARA6F,EAAQA,EAAQiB,SAASjB,EAAO,IAAMX,EAAIf,SAASoM,IAAW1K,MAAM1K,GACpE0K,EAAQ0C,KAAKnD,IAAIS,EAAO9J,KAAKq8B,gBAAkB,GAE3ClzB,EAAMlB,EAAKhE,GADXoH,MACc,EAEAA,EAAWjM,EAAQ,GAAGsI,SAEpC44B,EAAWx2B,EACX9J,KAAKogC,kBAAkB37B,EAAWrF,KAAasD,EAG/C,IAFI69B,EAAkBp3B,EAAIf,SAAS,8CAC/Bo4B,EAAgBD,EAAgBj8B,OAAO,WAClCP,EAAM,EAAGrF,EAAS8hC,EAAc9hC,OAAQqF,EAAMrF,EAAQqF,IACvDw8B,EAAgBz2B,MAAM02B,EAAcz8B,IAAQ+F,GAC5Cw2B,GAMZ,OAFAx2B,GAAQw2B,EACRx3B,EAAQK,EAAIf,SAASoM,IAEV1L,EAAM7E,GADb6E,EAAMpK,OAASoL,EACCA,EAEJ,IAEpBw1B,mBAAoB,SAAU76B,EAAWg8B,GAArB,GACZzzB,GAAQvI,EAAUyF,SAClBxL,EAASsB,KAAKsjB,mBAAmB5kB,OACjCgiC,EAAOl0B,KAAKoP,MAAMld,EAAS,GAC3BoL,EAAQM,GAAQ4C,EAAM,GAAIhN,KAAKsjB,mBAQnC,OAPImd,KACAC,OAEJ52B,GAAS42B,GACL52B,GAAS,GAAKA,EAAQpL,KACtBsO,EAAQhN,KAAKsjB,mBAAmBrf,GAAG6F,IAEhCkD,EAAMzI,KAAKk8B,EAAK,QAAU,UAErCxB,qBAAsB,SAAUx6B,EAAWk8B,GAArB,GAKd3zB,GACAlD,EALApL,EAASsB,KAAKsjB,mBAAmB5kB,MACrC,OAAIA,IAAU,EACH+F,GAEPuI,EAAQvI,EAAUyF,SAClBJ,EAAQM,GAAQ4C,EAAM,GAAIhN,KAAKsjB,oBACnCxZ,GAAS62B,EAAQ,MACbA,GAAmB,GAAT72B,GAAcA,GAASpL,GAGhCiiC,IAAmB,GAAT72B,GAAcA,EAAQ,GAC1BrF,EAEJzE,KAAKsjB,mBAAmBrf,GAAG6F,GAAOvF,KAAK,gBALnCE,IAOfu6B,SAAU,SAAU5/B,EAASoT,EAAcouB,GAAjC,GACFC,IAAY,EACZh0B,EAAO+zB,EAAOxhC,EAAQkN,QAAQkI,GAAY,UAAYpV,EAAQggC,QAAQ,iBAY1E,OAXKvyB,GAAKnO,SACNmO,EAAOzN,EAAQ8K,SACXlK,KAAKoS,cACLyuB,EAAYD,GAAQpuB,GAAgBxS,KAAKoS,YAAY,KAAOwuB,GAAQpuB,GAAgBxS,KAAKgN,MAAM,GAC/FH,EAAO7M,KAAKyvB,YAAY5iB,IAExBg0B,IACAh0B,EAAOA,EAAK+zB,EAAO,UAAY,WAAW,6DAE9C/zB,EAAOA,EAAKzE,SAASoM,IAAaosB,EAAO,QAAU,YAEhD/zB,GAEXizB,eAAgB,SAAU1gC,EAASyN,EAAMG,GACrC,GAAsKkzB,GAAuFY,EAAzPnoB,EAAO3Y,KAAM+/B,EAASviC,EAAEmW,MAAkBma,EAAOnV,EAAKiV,YAAamT,EAAOhzB,GAAQC,KAAMgzB,EAAQD,GAAQhzB,GAAQE,QAAU,EAAGgzB,EAAgBtoB,EAAKsV,eAA2Bnc,EAAW6G,EAAK1X,QAAQ6Q,UAAY6G,EAAK1X,QAAQ6Q,SAAS4N,UAAW,CAOtP,IANA1S,EAAQxP,EAAEwP,GAEN8zB,EADQ,UAARhT,EACW1uB,EAAQ6J,SAAS,eAEjB7J,EAAQ8K,SAASjB,SAAS,mBAErC0P,EAAK7G,SAAU,CAWf,GAVItU,EAAEwV,SAASiuB,EAAc,GAAIlB,EAAO,MAChChyB,GAAQmzB,OAASF,EACjBjB,EAAOxR,OAAOrD,SAASiW,eAAe,SAEtCpB,EAAOxR,OACHwS,GACAhB,EAAOxR,UAId5V,EAAK7G,SAEN,MADAb,IAAWjE,GACX,CAEJ,KAAI2L,EAAK7G,SAASoc,MAiBd,MARIvV,GAAK/F,YADG,UAARkb,EACiBmT,EAEAA,EAAc74B,WAAW9D,OAAOkQ,IAAW0F,SAEhEgmB,EAAYe,EAAc18B,KAAK,yBAAyB,GACpD27B,GACAA,EAAU1uB,QAEd,CAhBY,WAARsc,EACAnV,EAAKwV,aAELxV,EAAKkZ,UACLiP,GAAW,GAenBj0B,GACA8L,EAAK/F,YAAY/F,GAEjBm0B,GACAlgC,SAASe,KAAK2P,QAElBP,GAAWjE,GAAO,GACb8E,KAGAgvB,IAAaj0B,GAAQA,KACV,UAARihB,EACAnV,EAAK6V,SAAS7V,EAAKvZ,WAEnBuZ,EAAK+V,QAAQ/V,EAAKvZ,UAAU8K,YAIxC0c,SAAU,WACN,GAAIjO,GAAO3Y,KAAMgN,EAAQ2L,EAAK3L,MAAOlO,EAAS6Z,EAAK1X,QAAQnC,OAAQ8a,EAAUjB,EAAK3G,OAC7E4H,GAAQ/L,GAAG,SACZ+L,EAAUA,EAAQV,KAAK,UAAUhP,UAErCyO,EAAKiB,QAAUA,EAAQ4H,SAAS,mCAC5B1iB,IACA6Z,EAAKiB,QAAQnW,IAAIyT,GAAQpY,GACzBkO,EAAMvJ,IAAIyT,GAAQ,SAEtByB,EAAKyoB,eAETA,YAAa,WAAA,GAKDn0B,GAJJhM,EAAUjB,KAAKiB,QACf0X,EAAO3Y,IACXA,MAAK8lB,UAAY7kB,EAAQ6hB,UAAW,GAAQpjB,GAAM+S,QAAQoW,UAA+B,UAAnB5nB,EAAQ6hB,QAAyC,WAAnB7hB,EAAQ6hB,OACxG9iB,KAAK8lB,YACD7Y,EAAOjN,KAAK4Z,QAAQ4H,SAAS,iBAAiBtI,KAAK,aAAexZ,GAAMmxB,GAAK,uBAAyBnxB,GAAMmxB,GAAK,oBAA2BnxB,GAAMmxB,GAAK,+BAA+B3mB,SAC1LlK,KAAKqkB,KAAO3kB,GAAMojB,OAAOvP,GAAG8tB,KAAKnoB,KAAKjM,GACtCjN,KAAKm0B,KAAOn0B,KAAKqkB,KAAK8P,OACtBn0B,KAAKu0B,yBAA2B/2B,EAAEsD,SAAS8mB,iBAAiB3e,SAAS,YAAeopB,OAAO,IACvFiP,MAAO,gBACP14B,SAAU,gBACV24B,OAAQ,cAERtgC,EAAQnC,QACRkB,KAAKqkB,KAAKrS,QAAQ9H,SAASzG,IAAIyT,GAAQjW,EAAQnC,QAEnDkB,KAAKyyB,eAAiB,QACtBzyB,KAAKm0B,KAAK/a,KAAK,OAAQ,WACfT,EAAKge,cACLhe,EAAKyU,qBACLzU,EAAKkR,8BACLlR,EAAKmR,2BACLnR,EAAKoR,0BACLpR,EAAKmX,+BAKrBzP,OAAQ,WACJ,GAAqCtT,GAAjC4L,EAAO3Y,KAAMgN,EAAQ2L,EAAK3L,KAC9BD,GAAQC,EAAMzI,KAAK,UACdwI,EAAMrO,SACPqO,EAAQvP,EAAE,YAAY0G,SAAS8I,IAEnC2L,EAAK5L,MAAQA,EAAMjK,KAAK,OAAQ,aAEpC0+B,YAAa,WAAA,GACQvY,GAAQjc,EAyBjB+X,EAYIoS,EACAsK,EAmBA7R,EAzDRjX,EAAO3Y,KAAqBiB,EAAU0X,EAAK1X,QAAS2gB,EAAa3gB,EAAQ2gB,WAAY8f,EAAmB9f,KAAe,GAAQA,EAAWC,UAAYlJ,EAAKoJ,kBAAmB/H,GAAata,GAAM+S,QAAQ2H,qBAAuBsnB,EAAmBhiC,GAAM+S,QAAQuH,YAAc,CAC/Q4H,KACAqH,EAAStQ,EAAKiB,QAAQxR,SAAS,kBAC1B6gB,EAAO,KACRA,EAASzrB,EAAE,iCAAiC+Q,aAAaoK,EAAK3L,QAElEic,EAAOxlB,IAAI+U,GAAQ,eAAiB,gBAAiBoJ,EAAWC,QAAU7H,EAAY,EAAIA,GAC1FhN,EAAQxP,EAAE,yBACNib,IACAzL,EAAMlK,KAAK,cAAe,GAE9BkK,EAAMnO,MAAM8Z,EAAK3L,MAAM,GAAG/N,MAAMJ,OAChCmO,EAAMtD,OAAOiP,EAAKjQ,OAClBugB,EAAO/b,QAAQxD,OAAOlM,EAAE,wDAAwDkM,OAAOsD,IACvF2L,EAAKtU,QAAUsU,EAAK3L,MAAM9C,SACtByO,EAAKtU,QAAQwJ,GAAG,sDAChB8K,EAAKtU,QAAUsU,EAAKtU,QAAQ6F,UAE3ByO,EAAKtU,QAAQwJ,GAAG,iDACjB8K,EAAKtU,QAAUsU,EAAK3L,MAAMkM,KAAK,oDAAoDhP,UAEnFw3B,GACA/oB,EAAKgpB,2BAEThpB,EAAKmM,YAAcmE,EAAO7gB,SAAS,uBAAuB5E,IAAImV,EAAKtU,SAC/D0gB,EAASpM,EAAKiB,QAAQrV,KAAK,kBAC3BwgB,EAAOrmB,SACPia,EAAKmM,YAAcnM,EAAKmM,YAAYthB,IAAIuhB,EAAO3c,SAAS,yBAExDwZ,EAAWC,QACXlJ,EAAKtU,QAAQE,KAAK,+BAA+B4U,OAAO,SAAWhU,IAAIiU,KAAK,SAAWjU,GAAI,WACvFwT,EAAKmM,YAAY1T,WAAWpR,KAAKoR,YAC7BuH,EAAKvU,gBACLuU,EAAKvU,cAAc,GAAG+M,UAAYnR,KAAKmR,cAI3CgmB,EAAUvV,EAAWuV,QACrBsK,EAAmB9oB,EAAKM,WAAWhY,QAAQqc,SAC3C6Z,IACAxe,EAAKye,iBAAmBqK,GAE5B9oB,EAAKtU,QAAQ8U,OAAO,SAAWhU,IAAIiU,KAAK,SAAWjU,GAAI,SAAUoM,GAC7DoH,EAAKmM,YAAYsF,IAAI7Y,EAAEW,eAAed,WAAWpR,KAAKoR,YAClDuH,EAAKvU,eAAiBmN,EAAEW,eAAiByG,EAAKtU,QAAQ,KACtDsU,EAAKvU,cAAc,GAAG+M,UAAYnR,KAAKmR,WAEvCgmB,GACIn3B,KAAKmR,UAAYnR,KAAKkb,aAAelb,KAAKmb,oBAAwBxC,EAAKipB,yBAA2BjpB,EAAKye,iBAAmBze,EAAKM,WAAWkF,UAC1IxF,EAAKkpB,wBAA0BlpB,EAAKye,iBACpCze,EAAKye,iBAAmBze,EAAKye,iBAAmBqK,EAChD9oB,EAAKM,WAAWhY,QAAQk2B,SAAU,EAClCxe,EAAKipB,yBAA0B,EAC/BjpB,EAAKM,WAAWqE,SAAS3E,EAAKye,qBAItCxH,EAAgBjX,EAAKtU,QAAQoL,KAAK,sBAClCmgB,GACAA,EAAcjW,UAElBiW,EAAgBlwB,GAAMkwB,cAAcjX,EAAKtU,SACrCurB,GAAiBA,EAAckS,UAC/BnpB,EAAKiX,cAAgBA,EACrBA,EAAckS,QAAQ1oB,KAAK,SAAU,SAAU7H,GAC3CoH,EAAKmM,YAAY1T,YAAYG,EAAEkJ,OAAOK,GAClCnC,EAAKvU,eACLuU,EAAKvU,cAAc+M,WAAWI,EAAEkJ,OAAOG,KAG/CjC,EAAKlH,IAAIsE,GAAW,SAAUxE,GAC1BA,EAAEkJ,OAAOb,QAAQ4H,SAAS,yBAM9CmgB,yBAA0B,WACtB,GAAIhpB,GAAO3Y,IACP2Y,GAAKoJ,mBACLpJ,EAAKoJ,kBAAkBpI,UAE3BhB,EAAKoJ,kBAAoB,GAAIrJ,IAAkBC,EAAKtU,SAChD4U,WAAYN,EAAKM,WACjBK,WAAY,WACR,MAAOX,GAAKopB,qBAEhB3iB,KAAM,WACFzG,EAAKqpB,yBAETC,OAAQ,WACJtpB,EAAKupB,oBAGbvpB,EAAKoJ,kBAAkB3I,KAAKhD,GAAQhR,GAAMuT,EAAKwpB,iBAAkBxpB,KAErEwpB,iBAAkB,WACd,GAAIxpB,GAAO3Y,IACX2Y,GAAKypB,sBACDzpB,EAAK4W,6BACL5W,EAAKqW,2BAA4B,EACjCrW,EAAKwV,YACLxV,EAAKqW,2BAA4B,IAGzC+D,mBAAoB,WAChB,MAAO/yB,MAAKuvB,4BAA8BvvB,KAAK2uB,4BAA8B3uB,KAAKqiC,2BAEtF1T,yBAA0B,WACtB,MAAO3uB,MAAK+hB,mBAAqB/hB,KAAK4tB,cAAgBlW,IAE1D6X,yBAA0B,WACtB,MAAOvvB,MAAK+hB,mBAAqB/hB,KAAK4tB,cAAgBnW,IAE1D4qB,wBAAyB,WACrB,MAAOriC,MAAK+hB,mBAA0C,UAArB/hB,KAAK4tB,aAE1CQ,sBAAuB,WAAA,GACfzV,GAAO3Y,KACP4hB,EAAajJ,EAAKoJ,mBAClBpJ,EAAKgW,4BAA8BhW,EAAK4W,8BACpC3N,EAAW9E,sBACX8E,EAAWhF,yBACJgF,EAAW/E,oBAClB+E,EAAWjF,wBAIvBqlB,sBAAuB,WAAA,GAOf74B,GACAhC,EAPAwR,EAAO3Y,KACPsiC,EAAgB3pB,EAAK6W,mBACrB+S,EAAcD,EAAc1wB,MAC5BqH,EAAaN,EAAKM,WAClBupB,EAAa7pB,EAAKgW,2BAClB8T,EAAa9pB,EAAK4W,4BAGjBiT,GAAcC,IAAeF,GAAetpB,EAAWypB,UAAUH,EAAY58B,IAAKsT,EAAWkb,UAC1FqO,GACA7pB,EAAKqW,2BAA4B,EACjCrW,EAAK+V,QAAQ6T,GACb5pB,EAAKupB,kBACEO,IACPt5B,EAAMwP,EAAK5L,MAAM3E,SAASzF,EAAWgV,GAAW4qB,EAAY58B,MAC5DwB,EAAO3J,EAAE2L,GAAKf,SAASzF,EAAW4U,GAAO+qB,EAAc18B,QACnDuB,EAAK,KACLwR,EAAKqW,2BAA4B,EACjCrW,EAAK6V,SAASrnB,GACdwR,EAAKupB,oBAIjBvpB,EAAKqW,2BAA4B,GAErCkT,eAAgB,WAAA,GACRvpB,GAAO3Y,KACP2iC,GAAehqB,EAAK6W,oBAAsB5pB,MAC1Cq7B,EAAgBtoB,EAAKsV,cACrBgT,KAAkBjuB,GAASiuB,EAAc,GAAIttB,OAAoBgF,EAAKiqB,sBAClEjqB,EAAKgW,2BACLsS,EAAc18B,KAAK5B,EAAW2U,GAAeqrB,IAAcp+B,KAAKiS,IAAWvS,GAAG,GAAGuN,QAC1EmH,EAAK4W,4BACZ0R,EAAc18B,KAAKiS,IAAWvS,GAAG,GAAGuN,UAIhDoxB,kBAAmB,WACf,GAAIjqB,GAAO3Y,IACX,QAAQ2Y,EAAK4W,4BAA8B5W,EAAKgW,6BAA+BhW,EAAKoJ,kBAAkB9E,kBAAkBtE,EAAKsV,iBAEjImU,oBAAqB,WAAA,GAMbrC,GACA8C,EANAlqB,EAAO3Y,KACPihC,EAAgBtoB,EAAKsV,eACrBsU,EAActB,EAAgBtoB,EAAKgV,mBAAmBsT,GAAiB,KACvEuB,EAAa7pB,EAAKgW,2BAClB8T,EAAa9pB,EAAK4W,4BAGjBiT,GAAcC,IAAeF,IAC9B5pB,EAAKsW,sBACL8Q,EAASviC,EAAEmW,MACPstB,GAAiBlB,EAAO,IAAM/sB,GAASiuB,EAAc,GAAIlB,EAAO,MAChEA,EAAO7U,SACP2X,EAASnjC,GAAMojC,eAAe/C,EAAQrgC,GAAM6T,IACxCsvB,GAAU1uB,GAAW0uB,EAAOxiC,QAAU0/B,EAAOlyB,GAAG2J,MAChDqrB,EAAOxiC,MAAM0/B,EAAO3G,OACpByJ,EAAO1mB,QAAQxG,MAGnB6sB,EACA7pB,EAAK6W,gBACD5d,MAAO2wB,EACP38B,MAAOm6B,EAAO5zB,QAAQ,IAAMzM,GAAMoD,KAAKwU,IAAiB,KAAKxU,KAAKpD,GAAMoD,KAAKwU,MAE1EmrB,IACP9pB,EAAK6W,gBACD5d,MAAO2wB,EACP38B,MAAOq7B,EAAcn+B,KAAKpD,GAAMoD,KAAKyU,SAKrD0X,oBAAqB,WACjB,GAAItW,GAAO3Y,IACP2Y,GAAKoJ,oBACLpJ,EAAK6W,eAAiB,OAG9BxL,0BAA2B,WACvB,GAAIrL,GAAO3Y,IACX2Y,GAAKsW,sBACDtW,EAAKoJ,mBAAqBpJ,EAAKoJ,kBAAkB/P,SACjD2G,EAAKoJ,kBAAkBpI,UAE3BhB,EAAKoJ,kBAAoB,MAE7BghB,wBAAyB,WAAA,GAGbC,GAFJrqB,EAAO3Y,IACP2Y,GAAK1X,QAAQuhB,YACTwgB,EAAmBrqB,EAAK3L,MAAM9C,SAAS9B,SAAS,IAAMwO,IACtDosB,EAAiBtkC,SACjBia,EAAK4N,QAAQ,UAAW,WACpB,OAASpiB,SAAU6+B,EAAiBpiC,SAExCoiC,EAAiB73B,UAEhBwN,EAAKM,YAAeN,EAAKM,WAAWkb,OAAOz1B,SAC5CskC,EAAmBxlC,EAAEmb,EAAKkM,uBAAuBxc,YAAYsQ,EAAK3L,OAClE2L,EAAK4N,QAAQ,UAAW,WACpB,OACIpiB,SAAU6+B,EAAiBpiC,MAC3B6O,gBAMpBwzB,iBAAkB,SAAU7xB,GACxB,GAAmJ8xB,GAA/IvqB,EAAO3Y,KAAMmjC,EAAiB,0BAA2BC,EAAY,eAAiBD,EAAiB,WAAY1gB,EAAY9J,EAAK8J,SACpI9J,GAAK1X,QAAQ2gB,YAAcjJ,EAAKiB,QAAQ/L,GAAG,cAC3Cq1B,EAAWvqB,EAAK3L,MAAM9C,SAAS9B,SAAS,IAAM+6B,GAC9CxqB,EAAKwM,wBAA0B/f,GAAMuT,EAAKsqB,iBAAkBtqB,GACvDA,EAAKM,YAAeN,EAAKM,WAAWkb,OAAOz1B,OAarCwkC,EAAS,KAChBA,EAAS/3B,SACLsX,GACAA,EAAUtJ,OAAO,SAAUR,EAAKwM,2BAf/B+d,EAAS,KACVA,EAAW1lC,EAAE4lC,GAAWl/B,SAASyU,EAAK3L,MAAM9C,UACxCuY,GACAA,EAAUrJ,KAAK,SAAUT,EAAKwM,0BAGlCxM,EAAKjQ,QACLw6B,EAASrkC,MAAM8Z,EAAKjQ,MAAM7J,SACrBgpB,MAAMF,WAAWvW,EAAY,MAC9BuH,EAAKtU,QAAQ+M,WAAWA,KASpCuH,EAAKkR,8BACDlR,EAAKrG,cAA8C,IAA9BqG,EAAK3L,MAAM,GAAG2iB,cACnChX,EAAK3L,MAAM,GAAG/N,MAAMJ,MAAQ,SAIxCgrB,4BAA6B,WACzB,GAAI7pB,KAAKiB,QAAQ2gB,YAAc5hB,KAAKsS,aAAc,CAC9C,GAAqb+wB,GAAjbhxB,EAAcrS,KAAK0I,MAAMwB,SAAU6c,EAAa1U,EAAYnI,SAAUo5B,EAAetjC,KAAK4Z,QAAQ,GAAG+V,YAAa3nB,EAAShI,KAAKshB,UAAWtH,EAAYta,GAAM+S,QAAQuH,YAAapP,EAAO5K,KAAKsS,aAAa/N,KAAK,2DAA4Dg/B,EAAgBlxB,EAAY9N,KAAK,qDAAsD1F,EAAQ8L,EAAaC,GAAO44B,EAAqB74B,EAAa44B,EACjav7B,GAAS,IACTnJ,GAASgV,GAAW7T,KAAKsS,aAAa/N,KAAK,wBAA0ByD,GAErEnJ,GAASykC,IACTzkC,EAAQykC,EAAe,EAAItpB,GAE/Bha,KAAKsS,aAAa9O,IAAIxD,KAAKoE,eAAevF,MAAMA,GAChDkoB,EAAW,GAAG9nB,MAAMJ,MAAQkoB,EAAW7c,SAASrL,QAAUA,EAAQ,EAAI,KACtEwT,EAAY7O,IAAIxD,KAAKgN,OAAOnO,MAAM2kC,GAC9BxjC,KAAK+hB,oBACLuhB,GAAgBtpB,GAEpBha,KAAKqE,QAAQ,GAAGpF,MAAMJ,MAAQykC,EAAezkC,EAAQ,EAAI,KACrDmB,KAAKglB,cAAgBhlB,KAAKglB,aAAatmB,SACvCsB,KAAKglB,aAAanmB,MAAMA,GACxBwkC,EAAarjC,KAAK+kB,OAAOxgB,KAAK,uBAC9B8+B,EAAW,GAAGpkC,MAAMJ,MAAQkoB,EAAW,GAAG4I,YAAc,KACxD0T,EAAWj7B,WAAW8R,QAAQrb,MAAM2kC,MAIhD9iB,kBAAmB,WAAA,GAgBP+iB,GAfJ9qB,EAAO3Y,KAAMiB,EAAU0X,EAAK1X,QAASnC,EAAS6Z,EAAKiB,QAAQ4B,cAAeyN,EAAStQ,EAAKiB,QAAQxR,SAAS,kBAAmB4R,EAAYta,GAAM+S,QAAQuH,WACtJ/Y,GAAQ2gB,YAAcjJ,EAAKiB,QAAQ/L,GAAG,cACtC/O,GAAUiV,GAAYkV,GAClBtQ,EAAK4K,OAAS5K,EAAK4K,MAAMvR,QAAQnE,GAAG,cACpC/O,GAAUiV,GAAY4E,EAAK4K,MAAMvR,UAEjC/Q,EAAQ6gB,YACRhjB,GAAUiV,GAAY4E,EAAKiB,QAAQxR,SAAS,wBAE5CnH,EAAQ+gB,UACRljB,GAAUiV,GAAY4E,EAAKiB,QAAQxR,SAAS,qBAE5CuQ,EAAK+L,iBACL5lB,GAAUiV,GAAY4E,EAAKiB,QAAQxR,SAAS,oBAE5Cq7B,EAAkB,SAAUz6B,GAC5B,GAAI06B,GAAeC,CACnB,SAAI36B,EAAG,GAAG/J,MAAMH,SAGZ4kC,EAAgB16B,EAAGlK,SAEvBkK,EAAGlK,OAAO,QACV6kC,EAAY36B,EAAGlK,SACX4kC,GAAiBC,GACjB36B,EAAGlK,OAAO,KACH,IAEXkK,EAAGlK,OAAO,KACH,KAEP2kC,EAAgB9qB,EAAKiB,WACjB9a,EAAqB,EAAZkb,GACLrB,EAAKvU,gBACL4V,EAAYrB,EAAK3L,MAAM,GAAGlL,YAAc6W,EAAK3L,MAAM9C,SAAS,GAAGylB,YAAc3V,EAAY,EACzFrB,EAAKvU,cAActF,OAAOA,EAASkb,IAEvCrB,EAAKtU,QAAQvF,OAAOA,IAEpB6Z,EAAKtU,QAAQvF,OAAmB,EAAZkb,EAAgB,MAKpD+nB,kBAAmB,WAAA,GAUX6B,GATAjrB,EAAO3Y,KAAM6jC,EAAalrB,EAAKuN,OAAOvN,EAAK5L,OAAOrO,OAAQ2c,EAAY1C,EAAKmrB,UAC/E,OAAmB,KAAfD,EACOxoB,GAEN1C,EAAKmrB,aACNnrB,EAAKmrB,WAAazoB,EAAYtH,GAAY4E,EAAK3L,OAAS62B,EACxDlrB,EAAKorB,KAAO1oB,EACZ1C,EAAKqrB,UAAY,GAEjBJ,EAAmB7vB,GAAY4E,EAAK3L,OAAS62B,EAC7CxoB,IAAcuoB,IACdjrB,EAAKqrB,YACLrrB,EAAKorB,MAAQH,EACbjrB,EAAKmrB,WAAanrB,EAAKorB,KAAOprB,EAAKqrB,WAEhC3oB,IAEX+E,YAAa,WACT,GAAyCgC,GAArCzJ,EAAO3Y,KAAMiB,EAAU0X,EAAK1X,QAAmBgY,EAAahY,EAAQgY,UACxEA,GAAapU,GAAQoU,IAAgBxJ,KAAMwJ,GAAeA,EACtDnU,GAAcmU,KACdpZ,GAAOoZ,GACHjM,MAAO2L,EAAK3L,MACZmiB,OAAQxW,EAAKrT,UAEjB8c,EAAWnhB,EAAQmhB,SACftd,GAAcsd,IAAaA,EAAS9E,WAAa5a,IACjDuW,EAAWqE,SAAW8E,EAAS9E,WAGnC3E,EAAKM,YAAcN,EAAKG,gBACxBH,EAAKM,WAAWE,OAAOxD,GAAQgD,EAAKG,iBAAiBK,OAAO7E,GAAUqE,EAAKuL,kBAAkB/K,OAAO5E,GAAOoE,EAAKwL,gBAEhHxL,EAAKG,gBAAkB1T,GAAMuT,EAAKI,QAASJ,GAC3CA,EAAKuL,iBAAmB9e,GAAMuT,EAAKsrB,cAAetrB,GAClDA,EAAKwL,cAAgB/e,GAAMuT,EAAKurB,OAAQvrB,IAE5CA,EAAKM,WAAazF,GAAW8L,OAAOrG,GAAYG,KAAKzD,GAAQgD,EAAKG,iBAAiBM,KAAK9E,GAAUqE,EAAKuL,kBAAkB9K,KAAK7E,GAAOoE,EAAKwL,gBAE9I+f,OAAQ,WACJlkC,KAAKmkC,WAAU,IAEnBF,cAAe,WACXjkC,KAAKmkC,WAAU,IAEnB1T,aAAc,SAAUlf,GAAV,GACsH6yB,GAAYj9B,EAAM1B,EAAuC2H,EAAyEyE,EAAYwyB,EAAeC,EAAYC,EAAe7lC,EA6BhTk1B,EA7BJjb,EAAO3Y,KAAM+M,EAAQ4L,EAAK5L,MAAO6E,EAAQL,EAAEK,MAAOzI,EAAMwP,EAAK5L,MAAMxI,KAAK,MAAQ7E,GAAMoD,KAAK,OAAS,IAAM8O,EAAMjM,IAAM,KAAgCmuB,EAAQ3qB,EAAIF,SAAS,SAAelF,EAAM4U,EAAKuN,OAAOnZ,GAAOjD,MAAMX,GAAMuf,EAAW/P,EAAKvU,aAInP,IAHIskB,IACA0b,EAAazrB,EAAK8W,YAAYtmB,IAE9BA,EAAI3F,IAAI4gC,GAAYh8B,SAAS,gBAAgB1J,SAAWia,EAAK1X,QAAQqhB,YACrEnZ,EAAI3F,IAAI4gC,GAAYh8B,SAAS,yCAAyCoe,KAAK,WACvErf,EAAO3J,EAAEwC,MACTyF,EAASsD,EAAY4P,EAAKrT,SAASqT,EAAK6U,UAAUrmB,IAC9C1B,EAAOG,QAAU2L,EAAE3L,QACduB,EAAK8B,SAAS,eAGf9B,EAAKqa,SAAS,gBAFd7I,EAAKiY,aAAazpB,EAAM1B,EAAQmM,UAMzC,KAAKzI,EAAIF,SAAS,mBAAoB,CAiCzC,IAhCAo7B,EAAgB7mC,IAAIgG,IAAI2F,GACpBuf,IACAtb,GAAO0mB,EAAQnb,EAAK8L,qBAAuB9L,EAAK6L,mBAAmB5S,GACnEyyB,EAAgBA,EAAc7gC,IAAI4gC,GAClCA,EAAWrQ,YAAY3mB,IAE3BuL,EAAK4N,QAAQ,UAAW,WACpB,OAASpiB,SAAUkgC,EAAczjC,SAErCwM,GAAO0mB,EAAQnb,EAAK4J,eAAiB5J,EAAK2J,aAAa1Q,GACvDzI,EAAI4qB,YAAY3mB,GAChBA,EAAMuL,EAAKuN,OAAOnZ,GAAO9I,GAAGF,GACxB6vB,IAAiB9C,SAAUlf,IAC3B8W,IACAvf,EAAMA,EAAI3F,IAAI4gC,GACdA,EAAazrB,EAAK8W,YAAYriB,GAAK,GACnCuD,GAAgBvD,EAAI,GAAIg3B,GACxBh3B,EAAMA,EAAI5J,IAAI4gC,GACdxQ,EAAYz1B,MAAO2yB,SAAUlf,KAEjC+G,EAAK4N,QAAQ,UAAW,WACpB,OACIpiB,SAAUiJ,EAAIxM,MACd6O,KAAMmkB,KAGd/hB,EAAa8G,EAAK1X,QAAQ4Q,WACtBA,GAAc1I,EAAIF,SAAS,qBAC3B0P,EAAKqb,OAAO5mB,GAEhBm3B,EAAgBF,EAAcj8B,SAAS,yCACvCk8B,EAAal3B,EAAIhF,SAAS,yCACrBrE,EAAM,EAAGrF,EAASia,EAAKrT,QAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACtD0B,EAASkT,EAAKrT,QAAQvB,GACtBoD,EAAOm9B,EAAWrgC,GAAGF,GACjB8N,GAAc0yB,EAActgC,GAAGF,GAAKkF,SAAS,qBAC7C9B,EAAKqa,SAAS,mBAGtB7I,GAAKwD,QAAQ,cACTzN,KAAMtB,EACNqC,KAAMmC,EACNif,GAAItd,OAIhB+M,UAAW,WACP,GAAiB1G,GAAbjB,EAAO3Y,KAAeoiB,EAAWzJ,EAAK1X,QAAQmhB,QAC9CA,KACAxI,EAAUjB,EAAKiB,QAAQxR,SAAS,oBAC3BwR,EAAQlb,SACTkb,EAAUpc,EAAE,4CAA4C0G,SAASyU,EAAKiB,UAEtEjB,EAAK4K,OACL5K,EAAK4K,MAAM5J,UAGXhB,EAAK4K,MADe,gBAAbnB,IAAyBA,YAAoB1iB,IAAM6T,GAAGixB,MAChDpiB,EAEA,GAAI1iB,IAAM6T,GAAGixB,MAAM5qB,EAAS/Z,MAAWuiB,GAAYnJ,WAAYN,EAAKM,cAErFN,EAAK4K,MAAMnK,KAAK,aAAc,SAAU7H,GAChCoH,EAAKwD,QAAQ,QAAUiD,KAAM7N,EAAEzH,SAC/ByH,EAAEG,qBAKlB6P,QAAS,WAAA,GACgI8hB,GAIzHj2B,EAsCAzE,EA1CRgQ,EAAO3Y,KAAM6P,EAAa8I,EAAKM,WAAWpJ,aAAc5C,EAAO,GAAIyX,EAAiB/L,EAAK+L,eAAgBzjB,EAAU0X,EAAK1X,QAAqB8jB,EAASpM,EAAKoM,QAAUpM,EAAKiB,QAAQrV,KAAK,iBACvLmgB,IACAzX,EAAOzP,EAAEmb,EAAK8rB,YAAY/f,EAAe7U,KACrCkV,EAAOrmB,QACH0O,EAAMH,EACV0L,EAAK4N,QAAQ,UAAW,WACpB,OAASpiB,SAAU4gB,EAAOnkB,SAE9BmkB,EAAOgP,YAAY3mB,GACnB2X,EAASpM,EAAKoM,OAAS3X,GAGnB2X,EAASpM,EAAKoM,OADd9jB,EAAQ2gB,WACe3gB,EAAQmhB,SAAWnV,EAAKsB,aAAaoK,EAAKiB,QAAQxR,SAAS,qBAAuB6E,EAAK/I,SAASyU,EAAKiB,SAErG3M,EAAKsB,aAAaoK,EAAK5L,OAGtD4L,EAAK4N,QAAQ,UAAW,WACpB,OACIpiB,SAAU4gB,EAAOxgB,KAAK,4CAA4C3D,MAClE6O,KAAMnP,GAAIqY,EAAKrT,QAAS,SAAUqjB,GAC9B,OACIljB,OAAQkjB,EACRnD,UAAW3V,EAAW8Y,EAAI/iB,cAKnCmf,IAAWpM,EAAKoM,SACvBpM,EAAKoM,OAASA,GAEdA,EAAOrmB,SACHuC,EAAQ2gB,aACRyhB,EAAate,EAAOjiB,KAAK,eAAgBsF,SAAS,uBAClDuQ,EAAKmM,YAActnB,EAAEmb,EAAKmM,YAAYxgB,OAAO,WACzC,OAAQ9G,EAAEwC,MAAM6N,GAAG,yBACpB5G,WAAWzD,IAAI6/B,IAElB1qB,EAAK8Q,cACL1E,EAAOxgB,KAAK,SAASd,IAAI,QAASkV,EAAK8Q,cAEvC4Z,IACI16B,EAASgQ,EAAKtU,QAAQ+M,aACtBnQ,EAAQ2gB,cAAe,GAAQ3gB,EAAQ2gB,WAAWC,UAClDlZ,EAASgQ,EAAKiB,QAAQrV,KAAK,8BAA8B6M,cAE7DiyB,EAAWjyB,WAAWzI,KAG1BgQ,EAAKvU,gBACLuU,EAAK+rB,4BACL/rB,EAAKkR,8BACLlR,EAAKmX,4BAGb2U,YAAa,SAAUE,GACnB,GAAIhsB,GAAO3Y,KAAMiN,EAAO,GAAI+M,EAAata,GAAM+S,QAAQoW,SAAuC,EAA5BnpB,GAAM+S,QAAQuH,WAChF,OAAIrB,GAAK1X,QAAQ2gB,YACb3U,EAAOzP,EAAE,qEAAuEib,GAAQ,mBAAqB,IAAM,WAAaksB,EAAY,gCAC5IhsB,EAAKisB,YAAY33B,EAAK1I,KAAK,UAC3B0I,EAAKxJ,IAAI+U,GAAQ,eAAiB,gBAAiBwB,GAC5C/M,GAEJ,gCAAkC03B,EAAY,YAEzDE,YAAa,WAAA,GACQC,GAA2Cr/B,EAAiEs/B,EAAa7iB,EAAUD,EAAYnZ,EA6CnJ/E,EAASrF,EAEVyI,EA/CRwR,EAAO3Y,KAAYsF,EAAUyD,EAAY4P,EAAKrT,SAAkBrE,EAAU0X,EAAK1X,QAAS0hB,EAAa1hB,EAAQ0hB,WAAsDqiB,EAAwBj+B,GAAK4R,EAAKrT,QAAS,SAAUoJ,GACpN,MAAOA,GAAKpJ,UAAY5C,IACzBhE,OAAS,EAAGkqB,EAAW5oB,KAAK8lB,UAAWmf,EAAe,SAAU1zB,GAC/DoH,EAAKwD,QAAQ5G,IACT3P,MAAO2L,EAAE3L,MACTnB,UAAW8M,EAAE9M,aAElBygC,EAAe,SAAU3zB,GACxBoH,EAAKwD,QAAQ1G,IACT7P,MAAO2L,EAAE3L,MACTnB,UAAW8M,EAAE9M,aAElB0gC,EAAgB,SAAUnzB,GACzBf,GAAWe,EAAQ7F,QAAQ,UAAU,IACtCi5B,EAAc,SAAU7zB,GACnBoH,EAAKwD,QAAQ,QAAU/d,KAAMmT,EAAEnT,OAC/BmT,EAAEG,kBAEFiH,EAAKsW,sBACDtW,EAAKM,WAAWhY,QAAQk2B,UACxBxe,EAAKM,WAAWhY,QAAQk2B,QAAU,KAClCxe,EAAKye,iBAAmBze,EAAKM,WAAWhY,QAAQqc,SAChD3E,EAAKM,WAAWqE,SAAS3E,EAAKM,WAAWhY,QAAQqc,aAG1D+nB,EAAgB,SAAU9zB,GACrBoH,EAAKwD,QAAQ,UACT7X,OAAQiN,EAAEjN,OACVsB,MAAO2L,EAAE3L,QAEb2L,EAAEG,kBAEFiH,EAAKsW,sBACDtW,EAAKM,WAAWhY,QAAQk2B,UACxBxe,EAAKM,WAAWhY,QAAQk2B,QAAU,KAClCxe,EAAKye,iBAAmBze,EAAKM,WAAWhY,QAAQqc,SAChD3E,EAAKM,WAAWqE,SAAS3E,EAAKM,WAAWhY,QAAQqc,aAG1DoI,EAAWzkB,EAAQykB,QAC1B,IAAI/C,EAKA,IAJyB,iBAAdA,KACPA,MAEJ7Z,EAAQ2C,EAAckN,EAAKjQ,OAClB3E,EAAM,EAAGrF,EAASoK,EAAMpK,OAAQqF,EAAMrF,EAAQqF,IACnD0B,EAASH,EAAQvB,GACboD,EAAO2B,EAAM7E,GAAGF,GACf0B,EAAOd,UAAYc,EAAOG,QAASuB,EAAKrE,KAAK,QAAUpD,GAAMmxB,GAAK,WACnEiU,EAAO39B,EAAKsI,KAAK,mBACbq1B,GACAA,EAAKnrB,UAETuI,EAAWzc,EAAOyc,YAAa,GAASS,EAAWT,YAAa,GAASjhB,EAAQihB,YAAa,GAAQriB,MAAWoB,EAAQihB,UAAYojB,SAAU7/B,EAAOyc,cAAgBojB,UACtKrjB,KAAahhB,EAAQghB,YAAcxc,EAAOwc,cAAe,GAASU,EAAWV,cAAe,IAAQpiB,IAASwkB,KAAM1L,EAAK0L,MAAQpjB,EAAQghB,WAAYxc,EAAOwc,YACvJxc,EAAOwc,YAAcxc,EAAOwc,WAAWhJ,aACvCgJ,EAAWsjB,aAAc,EACzBtjB,EAAWujB,YAAc//B,EAAOwc,WAAWhJ,YAE3CgJ,IACAA,EAAWrU,OAASnI,EAAOmI,QAE/Bm3B,GACI9rB,WAAYN,EAAKM,WACjBoW,OAAQ5pB,EAAO4pB,OACf/pB,QAASqd,EAAWrd,QACpB4c,SAAUA,EACVD,WAAYA,EACZc,SAAUJ,EAAWI,SACrB0iB,MAAO9sB,EACPwsB,cAAeA,EACfrlC,KAAMmlC,EACNtS,KAAMuS,EACN7gB,KAAM1L,EAAK0L,KACXjmB,KAAMgnC,EACNM,UAAWL,EACX/gC,OAAQskB,EAAW,yBAA2B,GAC9CrhB,eAAgBy9B,GAAyBv/B,EAAOulB,YAAa,GAASzjB,EAAcjC,GAAS5G,OAAS,GAEtGgnB,IACAqf,EAAYrf,SAAWA,GAE3Bve,EAAKw+B,gBAAgBZ,KAKrCa,aAAc,WACV,MAAO5lC,MAAK0I,MAAMnE,KAAK,MAAMD,OAAO,WAChC,GAAIgK,GAAK9Q,EAAEwC,KACX,QAAQsO,EAAGrF,SAAS,kBAAoBqF,EAAGrF,SAAS,uBAG5D48B,YAAa,WAAA,GAC6Cpf,GAAY3d,EAAO3B,EAgC5DpD,EAASrF,EAWNonC,EACA7kC,EA5CZ0X,EAAO3Y,KAAMsF,EAAUyD,EAAY4P,EAAKrT,SAAmCygC,EAAa,SAAUx0B,GAC9FoH,EAAKwD,QAAQ7G,IACT1P,MAAO2L,EAAE3L,MACTnB,UAAW8M,EAAE9M,aAElB0gC,EAAgB,SAAUnzB,GACzBf,GAAWe,EAAQ7F,QAAQ,UAAU,IACtCk5B,EAAgB,SAAU9zB,GACrBoH,EAAKwD,QAAQ,UACT7X,OAAQiN,EAAEjN,OACVsB,MAAO2L,EAAE3L,QAEb2L,EAAEG,kBAEFiH,EAAKsW,sBACDtW,EAAKM,WAAWhY,QAAQk2B,UACxBxe,EAAKM,WAAWhY,QAAQk2B,QAAU,KAClCxe,EAAKye,iBAAmBze,EAAKM,WAAWhY,QAAQqc,SAChD3E,EAAKM,WAAWqE,SAAS3E,EAAKM,WAAWhY,QAAQqc,aAG1D0oB,EAAa,SAAUz0B,GACtBoH,EAAKwD,QAAQ3G,IACT5P,MAAO2L,EAAE3L,MACTnB,UAAW8M,EAAE9M;IAElBwd,EAAatJ,EAAK1X,QAAQghB,UAIjC,IAHIA,SAAqBA,GAAW6L,MAAQzqB,IAAU4e,EAAW6L,KAAKhjB,QAAQ,cAC1EmX,GAAa,GAEbA,IAAetJ,EAAK1X,QAAQ0hB,WAE5B,IADA7Z,EAAQ2C,EAAckN,EAAKjQ,OAClB3E,EAAM,EAAGrF,EAASoK,EAAMpK,OAAQqF,EAAMrF,EAAQqF,IACnDoD,EAAO2B,EAAM7E,GAAGF,GACZuB,EAAQvB,GAAKke,cAAe,GAAU3c,EAAQvB,GAAKY,UAAYW,EAAQvB,GAAK6B,QAASuB,EAAKrE,KAAK,QAAUpD,GAAMmxB,GAAK,WACpHpK,EAAatf,EAAKsI,KAAK,mBACnBgX,GACAA,EAAW9M,UAEf8M,EAAatf,EAAKsI,KAAK,yBACnBgX,GACAA,EAAW9M,UAEXmsB,EAAmBxgC,EAAQvB,GAAKke,WAChChhB,EAAUpB,MAAWoiB,EAAY6jB,GACjC7sB,WAAYN,EAAKM,WACjBoW,OAAQ/pB,EAAQvB,GAAKsrB,OACrBzhB,OAAQtI,EAAQvB,GAAK6J,OACrBu3B,cAAeA,EACf7a,MAAOhlB,EAAQvB,GAAKumB,OAAShlB,EAAQvB,GAAK6B,MAC1C9F,KAAMimC,EACNpT,KAAMqT,EACN3hB,KAAM1L,EAAK0L,KACX6G,OAAQma,IAERS,GAAoBA,EAAiB/iB,WACrC9hB,EAAQ8hB,SAAWljB,IAAO,KAAUoiB,EAAWc,SAAU+iB,EAAiB/iB,WAE1E+iB,GAAoBA,EAAiB7sB,aACrChY,EAAQskC,aAAc,EACtBtkC,EAAQukC,YAAcM,EAAiB7sB,YAEvC6sB,GAAoBA,EAAiBpO,MACrCvwB,EAAK8+B,sBAAsBhlC,GAE3BkG,EAAK++B,gBAAgBjlC,KAMzCklC,WAAY,WAAA,GAKJnV,GACAtL,EACApgB,EAAqC2c,EAAsCmkB,EAA8Cf,EAgBpH7mC,EACD6nC,EAAmB1d,EAAkB2d,EAA+CC,EAA0Bj4B,EAAiB1I,EAM3H4gC,EAKAzjB,EAlCRpK,EAAO3Y,IACX,IAAK2Y,EAAKyT,gBAqBV,IAjBI1G,EAAW/M,EAAK1X,QAAQykB,SACxBpgB,EAAUyD,EAAY4P,EAAKrT,SAAU2c,EAAatJ,EAAK1X,QAAQghB,WAAYmkB,EAAYztB,EAAKjQ,MAAMnE,KAAK,iBAAkB8gC,EAAgB,SAAU9zB,GAC3IoH,EAAKwD,QAAQ,UACT7X,OAAQiN,EAAEjN,OACVsB,MAAO2L,EAAE3L,QAEb2L,EAAEG,kBAEFiH,EAAKsW,sBACDtW,EAAKM,WAAWhY,QAAQk2B,UACxBxe,EAAKM,WAAWhY,QAAQk2B,QAAU,KAClCxe,EAAKye,iBAAmBze,EAAKM,WAAWhY,QAAQqc,SAChD3E,EAAKM,WAAWqE,SAAS3E,EAAKM,WAAWhY,QAAQqc,aAIjEtd,KAAKymC,cAAczmC,KAAKiZ,WAAWsM,QAAQ7mB,QAClCF,EAAI,EAAGA,EAAI8G,EAAQ5G,OAAQF,IAMhC,GALuBmqB,EAAMrjB,EAAQ9G,GAAI8nC,EAAY3tB,EAAK1X,QAAQghB,WAAWqkB,UAAWC,GAAmB,EAAOj4B,EAAK9Q,EAAE,SAAUoI,EAAQ+iB,EAAI/iB,MAC3I+iB,EAAIjjB,QACJ4I,EAAG9I,OAEP4gC,EAAU18B,OAAO4E,GACb1I,GAAS+iB,EAAI1G,cAAe,EAAO,CAUnC,GATIukB,EAAc7d,EAAI1G,YAAc0G,EAAI1G,WAAW9a,SACnDk/B,EAAoB1tB,EAAK1X,QAAQgY,WAC7BotB,YAA6B7yB,MAC7B6yB,EAAoB1tB,EAAK1X,QAAQgY,WAAWhY,SAE5C8hB,EAAWljB,IAAO,KAAUoiB,EAAWc,UACvC4F,EAAI1G,YACJpiB,IAAO,EAAMkjB,EAAU4F,EAAI1G,WAAWc,UAEtCyjB,EAAY1P,WAAY,EAAO,CAC/BxoB,EAAGrB,KAAK,SACR,UAEAu5B,EAAYvtB,aACZotB,EAAoBG,EAAYvtB,WAChCstB,GAAmB,GAEnB5d,EAAI1G,YAAc0G,EAAI1G,WAAWqkB,YACjCA,EAAY3d,EAAI1G,WAAWqkB,WAE/BtV,GACIvrB,OAAQkjB,EACR1P,WAAYN,EAAKM,WACjBotB,kBAAmBA,EACnBE,iBAAkBA,EAClB3gC,MAAOA,EACPmd,SAAUA,EACVsM,OAAQ1G,EAAI0G,OACZ+B,SAAUoV,EAAYpV,SACtBsV,MAAOF,EAAYE,MACnBC,WAAYH,EAAYG,WACxBC,mBAAoBJ,EAAYI,mBAChCC,UAAWL,EAAYK,UACvBC,cAAeN,EAAYM,cAC3BC,SAAUP,EAAYO,SACtBT,UAAWA,EACXU,cAAeR,EAAYQ,cAC3B9b,OAAQma,GAER3f,IACAsL,EAAStL,SAAWA,GAExBloB,EAAE,WAAWsF,KAAKpD,GAAMoD,KAAK,SAAU8C,GAAO1B,SAASoK,GAAI24B,gBAAgBjW,OAE3E1iB,GAAGrB,KAAK,WAIpBi6B,UAAW,WAAA,GAC+CzhC,GAAQ0hC,EAAgBhgC,EAQtE2B,EACK/E,EAASrF,EATlBia,EAAO3Y,KAAMsF,EAAUyD,EAAY4P,EAAKrT,SAAwC4c,EAAWvJ,EAAK1X,QAAQihB,SAAUkjB,EAAc,SAAU7zB,GAClIoH,EAAKwD,QAAQ,QAAU/d,KAAMmT,EAAEnT,OAC/BmT,EAAEG,iBAEFiH,EAAKsW,sBAGjB,IAAI/M,EAAU,CAEV,IADIpZ,EAAQ2C,EAAckN,EAAKjQ,OACtB3E,EAAM,EAAGrF,EAASoK,EAAMpK,OAAQqF,EAAMrF,EAAQqF,IACnD0B,EAASH,EAAQvB,GACb0B,EAAOyc,YAAa,IAAUzc,EAAOd,SAAWc,EAAOG,QACvDuB,EAAO2B,EAAM7E,GAAGF,GAChBojC,EAAiBhgC,EAAKsI,KAAK,qBACvB03B,GACAA,EAAextB,UAEnBxS,EAAKrE,KAAK,QAAUpD,GAAMmxB,GAAK,QAASprB,EAAOG,OAAOwhC,kBAAkBvnC,MAAWqiB,EAAUzc,EAAOyc,UAChGjJ,WAAYN,EAAKM,WACjB+e,MAAM,EACN1zB,OAAQ,yBACR4mB,OAAQka,KAIpBt8B,GAAQ,OAGhBqX,SAAU,SAAU7a,GAAV,GAC+BC,GAAmCs0B,EAqBhEwN,EArBJ1uB,EAAO3Y,KAAMgN,EAAQ2L,EAAK3L,MAAgBpC,EAAOoC,EAAMzI,KAAK,OAAoB0U,EAAaN,EAAK1X,QAAQgY,UAoB9G,IAnBA3T,EAAUA,EAAQ5G,OAAS4G,EAAUhF,GAAI0M,EAAMzI,KAAK,MAAO,SAAU+J,EAAIvK,GACrEuK,EAAK9Q,EAAE8Q,EACP,IAAI4T,GAAW5T,EAAGxL,KAAKpD,GAAMoD,KAAK,aAAcmf,EAAa3T,EAAGxL,KAAKpD,GAAMoD,KAAK,eAAgB6tB,EAAOriB,EAAGxL,KAAKpD,GAAMoD,KAAK,SAAUgf,EAAYxT,EAAGxL,KAAKpD,GAAMoD,KAAK,cAAe8C,EAAQ0I,EAAGxL,KAAKpD,GAAMoD,KAAK,UAAWwnB,EAAQhc,EAAGxL,KAAKpD,GAAMoD,KAAK,UAAWgiC,EAAOx2B,EAAGxL,KAAKpD,GAAMoD,KAAK,QAIxR,OAHK8C,KACDA,EAAQ0I,EAAG5Q,OAAOE,QAAQ,gBAAiB,MAG3CgI,MAAOA,EACP+qB,KAAMA,EACNrG,MAAOA,EACPpI,SAAuB,UAAbA,EACVD,WAA2B,UAAfA,EACZH,UAAyB,UAAdA,EACXgjB,KAAMA,EACN1T,SAAU9iB,EAAGxL,KAAKpD,GAAMoD,KAAK,aAC7BjE,MAAO+L,EAAK3G,GAAGF,GAAKN,IAAI,YAGhC8B,IAAYoT,EAAK3L,MAAMzI,KAAK,YAAY7F,OAAS,KAAOua,IAAeA,EAAWwM,YAC9E9M,EAAK1X,QAAQ2gB,WAAY,CAIzB,GAHIylB,EAAiB/hC,EACrBu0B,EAAatyB,EAAcjC,GAC3BA,EAAUmC,EAAiBnC,GACvBu0B,EAAWn7B,OAAS,GAAwB,IAAnB4G,EAAQ5G,OACjC,KAAU03B,OAAM,iDAEpBjoB,GAAqBwK,EAAK3G,QAAQzN,KAAK,oBAAqB8iC,GAC5D/hC,EAAUu0B,EAAWlwB,OAAOrE,GAEhCqT,EAAKrT,QAAUD,EAAiBC,EAASC,GACrC/H,EAAEuJ,KAAKgC,EAAY4P,EAAKrT,SAAU,SAAUqjB,GACxC,MAAOA,GAAI9W,aACZnT,SACCia,EAAK1X,QAAQohB,mBACb1J,EAAK+K,iBAET/K,EAAKiB,QAAQ3U,GAAGC,GAAQC,GAAI,cAAgBwR,GAAevR,GAAMuT,EAAK2uB,eAAgB3uB,IACtFA,EAAKiB,QAAQ3U,GAAGC,GAAQC,GAAI,cAAgBwR,GAAevR,GAAMuT,EAAK4uB,qBAAsB5uB,MAGpG4uB,qBAAsB,SAAUh2B,GAC5B,GAAIoH,GAAO3Y,KAAMwnC,EAAWhqC,EAAE+T,EAAE1J,QAASqzB,EAAUsM,EAASxM,KAAK,WAAYyM,EAAaD,EAASr7B,QAAQ,oBAAoBu7B,cAC3H/uB,KAAS8uB,IAGTvM,EACAviB,EAAKqb,OAAOyT,EAAW93B,SAEvBgJ,EAAKmiB,mBAGbwM,eAAgB,SAAU/1B,GACtB,GAAIoH,GAAO3Y,KAAMmJ,EAAM3L,EAAE+T,EAAE1J,QAAQsE,QAAQ,MAAOw7B,GAAex+B,EAAIF,SAASwN,GAC1EkC,KAASxP,EAAIgD,QAAQ,oBAAoBu7B,iBAGzCC,EACAhvB,EAAKqb,OAAO7qB,GAEZwP,EAAKoiB,mBAAmB5xB,KAGhCmY,QAAS,WACL,GAAIiE,GAAQvlB,KAAKiZ,WAAWsM,OAC5B,OAAOA,GAAQA,EAAM7mB,OAAS,GAElCkpC,MAAO,SAAUtlB,EAAahd,EAASuiC,EAAKC,GAArC,GACoH/jC,GAA8BqtB,EAG9I3rB,EAAQkrB,EAEX/qB,EALA+S,EAAO3Y,KAAMgxB,EAAWnxB,MAAWH,GAAMuxB,SAAUtY,EAAK1X,QAAQiwB,kBAAmB6W,EAAY/W,EAAS+W,UAAgBrpC,EAAS4G,EAAQ5G,OAAkBuQ,GACvJ8hB,WACA/tB,MAAO,GACM0K,EAAaiL,EAAKgO,cAAetX,KAAgBrH,EAAS2Q,EAAK2I,UAAWzO,EAAc8F,EAAK1X,QAAQ4R,YACtHm1B,EAAYtoC,GAAMoD,KAAK,SAEvBmlC,EAAoB,EACxB,KAAK3lB,EAAa,CAqBd,IApBAA,EAAc,MACVulB,GACAx4B,EAAUlR,KAAK,SAEfuP,GACA2B,EAAUlR,KAAK,gBAEfkR,EAAU3Q,SACV4jB,GAAe,WAAajT,EAAUhR,KAAK,KAAO,KAElDK,IACA4jB,GAAe,IAAM5iB,GAAMoD,KAAK,OAAS,OAASpD,GAAMwoC,KAAK,MAAOlX,EAAS+W,WAAa,MAE9FzlB,GAAe,eACXta,EAAS,IAAM8/B,IACfxlB,GAAevf,EAAWiF,IAE1B0F,IACA4U,GAAe,wEAA0ElP,GAAY,KAAO4E,GAAS,6BAEpHjU,EAAM,EAAGA,EAAMrF,EAAQqF,IACxB0B,EAASH,EAAQvB,GACjBqtB,EAAW3rB,EAAO2rB,SAClBT,QAAcS,GACdxrB,EAAQH,EAAOG,MACX+S,EAAKiV,cAAgBnW,IAAU7R,IAC/BH,EAAOtC,WAAasC,EAAOtC,eACvBwV,EAAKoJ,oBACLtc,EAAOtC,WAAW6kC,GAAapiC,GAEnCqiC,EAAoBtvB,EAAKwvB,mBAAmBviC,EAAOmiC,GACnDtiC,EAAOtC,WAAW,SAAWsC,EAAOtC,WAAW,UAAY,GACvDsC,EAAOtC,WAAW,SAAS2H,QAAQm9B,GAAqB,IACxDxiC,EAAOtC,WAAW,UAAY8kC,IAGtC3lB,GAAe,MAAQpf,EAAoBuC,EAAOtC,YAC9C0P,IACAyP,GAAe,sBAAyB7c,EAAOO,iBAAiBE,GAAK,KAErET,EAAOd,UACP2d,GAAe,2BAEnBA,GAAe,oBACfA,GAAe3J,EAAK0Y,UAAU5rB,EAAQwJ,GACtCqT,GAAe,OAEnBA,IAAe,QAGnB,MADAA,GAAc5iB,GAAM0xB,SAAS9O,EAAa0O,GACtC/hB,EAAMjM,MAAQ,EACPoC,GAAMkd,EAAarT,EAAM8hB,SAE7BzO,GAEX6lB,mBAAoB,SAAUviC,EAAOmiC,GACjC,MAAIniC,IAASmiC,EACF,MAAQA,EAAY,OAASA,EAAY,aAAeA,EAAY,mBAAqBroC,GAAMwoC,KAAKtiC,EAAOmiC,EAAY,gBAAkB,4BAE7I,IAEXK,gBAAiB,SAAU3iC,GACvB,GAAIkT,GAAO3Y,KAAMgxB,EAAWnxB,MAAWH,GAAMuxB,SAAUtY,EAAK1X,QAAQiwB,kBAAmBE,EAAW3rB,EAAO4iC,eAAgB1X,QAAcS,GAAU1zB,EAAO+H,EAAO6kB,OAAS7kB,EAAOG,OAAS,EAMxL,OALI+qB,KAASvZ,GACT1Z,EAAOgC,GAAM0xB,SAASA,EAAUJ,OACzBL,IAASttB,KAChB3F,EAAO0zB,GAEJ1zB,GAEX2zB,UAAW,SAAU5rB,EAAQwJ,GACzB,GAAoLlL,GAAKrF,EAArLia,EAAO3Y,KAAMgxB,EAAWnxB,MAAWH,GAAMuxB,SAAUtY,EAAK1X,QAAQiwB,kBAAmBE,EAAW3rB,EAAO2rB,SAAU2W,EAAY/W,EAAS+W,UAAWniC,EAAQH,EAAOG,MAAOqH,EAAO,GAAiBW,EAASnI,EAAOmI,OAAQ+iB,QAAcS,GAAUxiB,EAAenJ,EAAO4pB,MACvQ,IAAI5pB,EAAOd,QAAS,CAChB,GAAIE,GAAQY,EAAOd,SAAU,CACzB,IAAKZ,EAAM,EAAGrF,EAAS+G,EAAOd,QAAQjG,OAAQqF,EAAMrF,EAAQqF,IAEpDkJ,GADAxH,EAAOd,QAAQZ,GAAK0C,QACZ/G,GAAMkO,OAAO,2BAAgCnI,EAAOd,QAAQZ,GAAK0C,QAASkS,EAAKwZ,cAAc1sB,EAAOd,QAAQZ,IAAMnG,QAAQsa,GAAoB,QAE9IS,EAAKwZ,cAAc1sB,EAAOd,QAAQZ,IAAMnG,QAAQsa,GAAoB,MAGpF,OAAOjL,GAEX,MAAO0L,GAAKwZ,cAAc1sB,EAAOd,SAAS/G,QAAQsa,GAAoB,OAE1E,MAAIzS,GAAOoM,WACAyG,IAEXrL,GAAQ0L,EAAK2vB,wBAAwB1iC,EAAOmiC,GACxCpX,IAASvZ,IACTnI,EAAM8hB,QAAQ,OAAS9hB,EAAMjM,OAASouB,EACtCnkB,GAAQ,cAAgBgC,EAAMjM,MAAQ,IAAM+kC,EAAY,KACxD94B,EAAMjM,SACC2tB,IAASttB,GAChB4J,GAAQmkB,EACDxiB,GAAgBA,EAAalQ,QAAUoG,GAAc8J,EAAa,KAAO,SAAWA,GAAa,IAAMhJ,GAC9GqH,GAAQ,WAAavN,GAAM6oC,UAAU/5B,EAAgBI,IAAehR,QAAQsa,GAAoB,OAAS,IACzGjL,GAAQ,cACH+jB,EAASwX,eACVv7B,GAAQ86B,EAAY,KAExB96B,GAAQrH,EAAQ,KAChBqH,GAAQ,0BAERA,GAAQxH,EAAOF,QAAU,KAAO,KAC5BqI,IACAX,GAAQ,iBAAmBW,EAAOhQ,QAAQqa,GAAc,QAAU,MAElErS,GACAA,EAAQlG,GAAMwoC,KAAKtiC,EAAOmiC,GAC1B96B,GAAQrH,EAAQ,aAAiBA,GAEjCqH,GAAQ,KAERW,IACAX,GAAQ,KAEZA,GAAQ,KAELA,IAEXq7B,wBAAyB,SAAU1iC,EAAOmiC,GACtC,MAAIniC,IAASmiC,EACF,MAAQA,EAAY,OAASA,EAAY,aAAeA,EAAY,mBAAqBroC,GAAMwoC,KAAKtiC,EAAOmiC,EAAY,gBAAkB,8CAE7I,IAEXpnB,WAAY,WACR,GAAIhI,GAAO3Y,KAAMiB,EAAU0X,EAAK1X,QAASgY,EAAaN,EAAKM,WAAYjR,EAASiR,EAAWsM,QAASR,EAASpM,EAAKoM,QAAUpM,EAAKiB,QAAQrV,KAAK,kBAAmBsL,EAAaoJ,EAAWuM,YAAaijB,EAAc1/B,EAAY4P,EAAKrT,SAAUojC,EAAgB3/B,EAAYxB,EAAcoR,EAAKrT,UAAWA,EAAUrE,EAAQ2gB,WAAa7Y,EAAYtB,EAAiBkR,EAAKrT,UAAYmjC,CACtX,IAAIxnC,EAAQ2gB,YAAc8mB,EAAchqC,OAAQ,CAC5C,GAAIuC,EAAQqhB,aAAerhB,EAAQshB,eAC/B,KAAU6T,OAAM,+DAEpBzd,GAAK2J,YAAc3J,EAAKivB,MAAM3mC,EAAQqhB,YAAahd,GAAS,GAAO,GACnEqT,EAAK4J,eAAiB5J,EAAKivB,MAAM3mC,EAAQshB,gBAAkBthB,EAAQqhB,YAAahd,GAAS,GAAM,GAC/FqT,EAAK6L,kBAAoB7L,EAAKivB,MAAM3mC,EAAQqhB,YAAaomB,GACzD/vB,EAAK8L,qBAAuB9L,EAAKivB,MAAM3mC,EAAQshB,gBAAkBthB,EAAQqhB,YAAaomB,GAAe,OAErG/vB,GAAK2J,YAAc3J,EAAKivB,MAAM3mC,EAAQqhB,YAAahd,GACnDqT,EAAK4J,eAAiB5J,EAAKivB,MAAM3mC,EAAQshB,gBAAkBthB,EAAQqhB,YAAahd,GAAS,EAEzFqT,GAAKgO,gBACLhO,EAAKiK,eAAiBjK,EAAKgwB,YAAY1nC,EAAQ2hB,gBAAkB,MAEjEjK,EAAK0I,SAAWjN,GAAcvE,KAAgBuE,GAAcvE,KAAgBkV,EAAOrmB,QAAUqI,GAAK0hC,EAAa,SAAUhjC,GACrH,MAAOA,GAAOif,iBACfhmB,UACHia,EAAK+L,eAAiB/L,EAAKiwB,YAAYH,EAAa54B,EAAY,iBAAkB,sBAElF7H,GAAUjB,GAAK0hC,EAAa,SAAUhjC,GAClC,MAAOA,GAAOkf,sBACfjmB,SACHmR,EAAarS,EAAE8C,IAAI0H,EAAQ,SAAU6gC,GACjC,MAAOA,GAAEh5B,aAEb8I,EAAKgM,oBAAsBhM,EAAKiwB,YAAYtjC,EAASuK,EAAY,sBAAuB,iBAAkB64B,EAAchqC,QACpHuC,EAAQ2gB,YAAc8mB,EAAchqC,SACpCia,EAAKiM,0BAA4BjM,EAAKiwB,YAAYF,EAAe74B,EAAY,sBAAuB,oBAGxG8I,EAAK1X,QAAQuhB,YACb7J,EAAKkM,kBAAoBlM,EAAKmwB,mBAGtCA,eAAgB,WAAA,GAUR1X,GAEAT,EACAQ,EAZAvX,EAAU,6BACVmvB,EAAkB,sDAClBC,EAA+BhpC,KAAKiB,QAAQ2gB,aAAe5hB,KAAK4Z,QAAQ,GAAG3a,MAAMH,OAAS,0CAA4C,GACtImQ,GACA8hB,WACA/tB,MAAO,GAEPguB,EAAWxzB,EAAEqC,UAAWH,GAAMuxB,SAAUjxB,KAAKiB,QAAQiwB,kBACrD6W,EAAY/W,EAAS+W,UAErB96B,EAAO,EAoBX,OAhBImkB,GADApxB,KAAKiB,QAAQuhB,UAAU4O,SACZpxB,KAAKiB,QAAQuhB,UAAU4O,SAEvB1xB,GAAMkO,OAAOm7B,EAAiB/oC,KAAKiB,QAAQ8hB,SAASP,UAAWwmB,GAE9ErY,QAAcS,GACD,aAATT,GACA1hB,EAAM8hB,QAAQ,OAAS9hB,EAAMjM,OAASouB,EACtCnkB,GAAQ,cAAgBgC,EAAMjM,MAAQ,IAAM+kC,EAAY,KACxD94B,EAAMjM,SACU,WAAT2tB,IACP1jB,GAAQmkB,GAEZD,EAAOzxB,GAAM0xB,SAAS1xB,GAAMkO,OAAOgM,EAAShD,GAAgB3J,GAAO+jB,GAC/D/hB,EAAMjM,MAAQ,IACdmuB,EAAO3zB,EAAE4H,MAAM+rB,EAAMliB,EAAM8hB,UAExBI,GAEXyX,YAAa,SAAUtjC,EAASuK,EAAYo5B,EAAcC,EAAUpB,GAChE,GAAkI/jC,GAAKrF,EAAQ0yB,EAAUT,EAA8HlrB,EAAnRkT,EAAO3Y,KAAMgxB,EAAWnxB,MAAWH,GAAMuxB,SAAUtY,EAAK1X,QAAQiwB,kBAAmB6W,EAAY/W,EAAS+W,UAAW96B,EAAO,GAAiC8jB,KAAc/tB,EAAQ,EAAGmmC,KAAYnhC,EAAS2Q,EAAK2I,UAAW8nB,EAAYzwB,EAAKM,WAAWowB,iBAAiBx5B,EAQ1Q,KAPA5C,GAAQ,cAAgBi8B,EAAW,KAC/BlhC,EAAS,IAAM8/B,IACf76B,GAAQlK,EAAWiF,IAEnB2Q,EAAKgO,gBACL1Z,GAAQ,4CAEPlJ,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACjD0B,EAASH,EAAQvB,GACjBqtB,EAAW3rB,EAAOwjC,GAClBtY,QAAcS,GACdnkB,GAAQ,MAAQ/J,EAAoBuC,EAAOM,kBAAoB,IAC3DqrB,GACIT,IAASvZ,KACT+xB,EAAQC,EAAU3jC,EAAOG,OAAS/F,MAAWmxB,GAAY+W,UAAWA,EAAY,KAAQtiC,EAAOG,MAAQ,UACvGwrB,EAAW1xB,GAAM0xB,SAASA,EAAU+X,IAExCpY,EAAQ,OAAS/tB,GAASouB,EAC1BnkB,GAAQ,cAAgBjK,EAAQ,IAAM+kC,EAAY,KAClD/kC,KAEAiK,GAAQ,SAEZA,GAAQ,OAIZ,OAFAA,IAAQ,QACRA,EAAOvN,GAAM0xB,SAASnkB,EAAM+jB,GACxBhuB,EAAQ,EACDoC,GAAM6H,EAAM8jB,GAEhB9jB,GAEX07B,YAAa,SAAUvX,GACnB,GAAIzY,GAAO3Y,KAAMiN,EAAO,GAAI+jB,EAAWnxB,MAAWH,GAAMuxB,SAAUtY,EAAK1X,QAAQiwB,kBAAmB6W,EAAY/W,EAAS+W,UAAWuB,KAA8BC,EAAwB,EAAGvhC,EAAS2Q,EAAK2I,UAAWnO,EAAUrM,EAAeiC,EAAY4P,EAAKrT,UAAU5G,OAAQiyB,QAAcS,EAe9R,OAdAnkB,IAAQ,4BACJjF,EAAS,IACTiF,GAAQlK,EAAWiF,IAEvBiF,GAAQ,+DAAiEkG,EAAU,aAAeA,EAAU,IAAM,IAAM,IACpHwd,IAASvZ,IACTkyB,EAAwB,OAASC,GAAyBnY,EAC1DnkB,GAAQ,cAAgBs8B,EAAwB,IAAMxB,EAAY,KAClEwB,KAEAt8B,GAAQmkB,EAEZnkB,GAAQ,aACRA,EAAOvN,GAAM0xB,SAASnkB,EAAM+jB,GACxBuY,EAAwB,EACjBnkC,GAAM6H,EAAMq8B,GAEhBr8B,GAEX0Z,YAAa,WACT,GAAIhO,GAAO3Y,IACX,OAAuC,QAAhC2Y,EAAK1X,QAAQ2hB,iBAA4BjK,EAAKqH,QAAQ3K,SAAmB3W,QAEpF0tB,cAAe,WAAA,GACPnK,GAAajiB,KAAKiB,QAAQghB,WAC1BunB,EAAevnB,SAAqBA,GAAW6L,MAAQzqB,IAAU4e,EAAW6L,KAAKhjB,QAAQ,WACzFxF,EAAUtF,KAAKsF,QACfmkC,EAA0BjsC,EAAEuJ,KAAKzB,EAAS,SAAUqjB,GACpD,MAAOA,GAAI1G,cAAe,GAK9B,OAHI3c,GAAQ5G,QAAU+qC,EAAwB/qC,QAAU4G,EAAQ5G,SAC5D8qC,GAAe,GAEZA,GAEXzoB,SAAU,WACN,GAAIpI,GAAO3Y,IACX,IAAI2Y,EAAK1X,QAAQ2gB,YAAcjJ,EAAKgO,eAAiBpf,EAAcoR,EAAKrT,SAAS5G,OAC7E,KAAU03B,OAAM,kEAEpBzd,GAAK3L,MAAM/H,GAAGC,GAAQC,GAAI,iEAAkE,SAAUoM,GAClG,GAAgHm4B,GAAiDj6B,EAA7Jk6B,EAASnsC,EAAEwC,MAAO4pC,EAAYD,EAAO1gC,SAAS,cAAe4gC,EAAYF,EAAOx9B,QAAQ,mBAA+ByW,EAAiBjK,EAAKiK,eAAsBlV,EAAaiL,EAAKgO,cAAemjB,EAAgBF,EAAYv2B,GAAW2E,EA4B/O,OA3BA2xB,GAAOI,YAAY,cAAeH,GAAWG,YAAY,eAAgBH,GAAW9mC,KAAKsQ,GAAW02B,GACpGJ,EAAYG,EAAUh9B,OAClBa,IAAeg8B,EAAUzgC,SAAS,kBAClCwG,EAAOkJ,EAAKmY,SAAS+Y,GACrBH,EAAYlsC,EAAEolB,EAAenT,IAAO+R,SAASqoB,EAAU5gC,SAAS,SAAW,QAAU,IAAIZ,YAAYwhC,GACrGlxB,EAAK4N,QAAQ,UAAW,WACpB,OACIpiB,SAAUulC,EAAU9oC,MACpB6O,OAASqhB,SAAUrhB,OAG3BkJ,EAAKwD,QAAQ9G,IACTw0B,UAAWA,EACXH,UAAWA,EACXj6B,KAAMA,EACNu6B,WAAYN,EAAUnlC,KAAK,qBAGnCoU,EAAKwD,QAAQytB,EAAY5zB,GAAeC,IACpC4zB,UAAWA,EACXH,UAAWA,IAEfA,EAAUO,OAAOL,GACbjxB,EAAKijB,UACLjjB,EAAKijB,SAAS94B,KAAK,gBAAiB8mC,GAExCr4B,EAAEG,kBACK,KAGfof,SAAU,SAAU3K,GAEhB,GADAA,EAAK3oB,EAAE2oB,GAAI,IACNA,EACD,MAAO,KAEX,IAAyHsG,GAAGyd,EAAxHjiC,EAAOjI,KAAK+M,MAAM3E,WAAY+hC,EAAe,6CAA8CpmC,EAAMoiB,EAAGikB,eAExG,KADAF,EAAanmC,EACR0oB,EAAI,EAAGA,EAAI1oB,EAAK0oB,IACb0d,EAAa/6B,KAAKnH,EAAKwkB,GAAGpd,YAC1B66B,GAGR,OAAOlqC,MAAKslB,MAAM4kB,IAEtBhL,UAAW,SAAU/Y,GACjB3oB,EAAE2oB,GAAI5hB,KAAK,oBAAoBQ,SAEnC85B,YAAa,SAAU1Y,GACnB3oB,EAAE2oB,GAAI5hB,KAAK,sBAAsBQ,SAErCslC,mBAAoB,SAAU/kC,EAASoC,GAAnB,GACC3D,GAAKuK,EAAI5Q,EAAiBgB,EAA2CkH,EAK9EkE,EALJ6O,EAAO3Y,KAAqBiN,EAAO,GAAYnF,EAAQiB,EAAY4P,EAAKrT,QAC5E,KAAKvB,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACjDuK,EAAKhJ,EAAQvB,GAAK0B,QAAUH,EAAQvB,GACpCrG,EAAOib,EAAKyvB,gBAAgB95B,GAC5B1I,EAAQ,GACJkE,EAAQM,GAAQkE,EAAIxG,GACpBwG,EAAGuD,YACH5E,GAAQ,kBAAsB/J,EAAoBoL,EAAGtI,kBACjD0B,IAAYpC,EAAQvB,GAAKwI,UACzBU,GAAQ,aAAgBvF,EAAU,KAElCoC,OACAmD,GAAQvN,GAAMoD,KAAK,SAAW,KAAQgH,EAAQ,KAElDpM,EAAO4Q,EAAG+5B,eAAiB3qC,EAAO6a,GAClCtL,GAAQ,IAAMvP,EAAO,SACd4Q,EAAG3J,SACVsI,GAAQ,kBAAsB/J,EAAoBoL,EAAGtI,kBACjD0B,IAAYpC,EAAQvB,GAAKwI,UACzBU,GAAQ,aAAgBvF,EAAU,KAElCoC,OACAmD,GAAQvN,GAAMoD,KAAK,SAAW,KAAQgH,EAAQ,KAElDmD,GAAQ,IAAMvP,EAAO,UAEjB4Q,EAAG1I,QACHA,EAAQlG,GAAMoD,KAAK,SAAW,KAAQwL,EAAG1I,MAAQ,MAErDqH,GAAQ,uCAA6CrH,EACrDqH,GAAQ,wBACJvF,IAAYpC,EAAQvB,GAAKwI,UACzBU,GAAQ,aAAgBvF,EAAU,KAElCpC,EAAQvB,GAAKwI,QAAU,IACvBU,GAAQ,aAAe3H,EAAQvB,GAAKwI,QAAU9B,EAAuB6D,EAAGhJ,UAAY,KACpF2H,GAAQvN,GAAMoD,KAAK,WAAa,KAAQwC,EAAQvB,GAAKwI,QAAU,KAE/D+B,EAAGgc,QACHrd,GAAQvN,GAAMoD,KAAK,SAAW,KAAOwL,EAAGgc,MAAM1sB,QAAQ,IAAK,UAAUA,QAAQ,KAAM,KAAQ,MAE3F0Q,EAAGwT,YAAcpf,IACjBuK,GAAQvN,GAAMoD,KAAK,aAAe,KAAQwL,EAAGwT,UAAY,MAEzDxT,EAAGuB,YAAcvB,EAAGuB,WAAWnR,SAC/BuO,GAAQvN,GAAMoD,KAAK,cAAgB,KAAQwL,EAAGuB,WAAa,KAE3D/F,OACAmD,GAAQvN,GAAMoD,KAAK,SAAW,KAAQgH,EAAQ,KAElDmD,GAAQ/J,EAAoBoL,EAAGtI,kBAC/BiH,GAAQ,IAAMvP,EAAO,QAG7B,OAAOuP,IAEXq9B,2BAA4B,WACxB,GAA4BvmC,GAA6GrF,EAA+C+F,EAAW8H,EAASg+B,EAAxMjlC,EAAUtF,KAAKsF,QAAcqI,EAAW3N,KAAKgN,MAAMzI,KAAK,YAAaqG,EAAO+C,EAASpJ,KAAK,0CAAmDs1B,EAAar8B,IAAKgtC,EAAkB,EAAgCC,EAAY,CACjO,KAAK1mC,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IACjD,GAAIuB,EAAQvB,GAAKiG,OACb,GAAInE,EAAUP,EAAQvB,IAAO,CAMzB,IALAwI,EAAU,EACNjH,EAAQvB,GAAKuB,UACbiH,EAAUxD,EAAYzD,EAAQvB,GAAKuB,SAAS5G,OAAS+L,EAAuBnF,EAAQvB,GAAKuB,UAE7FiH,EAAUA,GAAW,EAChBg+B,EAAU,EAAGA,EAAUh+B,EAASg+B,IACjC1Q,EAAaA,EAAWr2B,IAAIoH,EAAK3G,GAAGF,EAAM0mC,EAAYF,EAAUC,GAEpEC,IAAal+B,EAAU,MAEvBi+B,IAIZ/lC,GAAYjH,EAAE,6CAA+Cib,GAAQ,mBAAqB,IAAM,6CAChG9K,EAAS+8B,SACTjmC,EAAUF,KAAK,YAAYmF,OAAOmwB,GAClClsB,EAASY,aAAavO,KAAKgN,MAAMzI,KAAK,UACtCvE,KAAKoE,cAAgBK,EAAU8J,aAAavO,KAAKqE,SACjDrE,KAAKoS,YAAc3N,EAAU2D,SAAS,UAE1Cs8B,0BAA2B,WAAA,GAMnB3gC,GAAKrF,EALLia,EAAO3Y,KACP+kB,EAASpM,EAAKoM,OACdjc,EAAQic,EAAOxgB,KAAK,yBACpBqG,EAAOma,EAAOxgB,KAAK,0CACnB0I,EAAOzP,EAAE,yHAETwK,EAAS2Q,EAAK2I,UACdqpB,EAAcntC,IAAKq8B,EAAar8B,GAEpC,KADAmtC,EAAcA,EAAYnnC,IAAIsF,EAAMxE,OAAO,kBACtCP,EAAM,EAAGrF,EAASqK,EAAYxB,EAAcoR,EAAKrT,UAAU5G,OAAQqF,EAAMrF,EAAQqF,IAClF4mC,EAAcA,EAAYnnC,IAAIsF,EAAM7E,GAAGF,EAAMiE,GAGjD,KADA6xB,EAAaA,EAAWr2B,IAAIoH,EAAKtG,OAAO,iBACnCP,EAAM,EAAGrF,EAASoI,EAAeiC,EAAYwC,EAAqBoN,EAAKrT,WAAW5G,OAAQqF,EAAMrF,EAAQqF,IACzG81B,EAAaA,EAAWr2B,IAAIoH,EAAK3G,GAAGF,EAAMiE,GAE9C2iC,GAAYzmC,SAAS+I,EAAK1I,KAAK,OAC/Bs1B,EAAW31B,SAAS+I,EAAK1I,KAAK,aAC9BoU,EAAKqM,aAAe/X,EAAK+oB,UAAUjR,IAEvC6lB,0BAA2B,SAAUnmC,GAAV,GACkBV,GAAKkJ,EAAMvO,EAAkBynB,EAAI0kB,EAAU79B,EAA0J7F,EAU9NoF,EAKKg+B,EAOJ9d,EAwBTzpB,EA9CJ2V,EAAO3Y,KAAMsF,EAAUtF,KAAKsF,QAAoF2C,KAAWuiC,EAAkB,EAAG5/B,EAAOpN,IAAKstC,EAAenyB,EAAKyT,gBAAiB2e,EAAmB,EAAGC,EAAcxtC,IAAWytC,EAAmB,EAAGniC,EAAQtL,IAAtNmQ,EACjDgL,EAAKjQ,MAAMyjB,OAAO5nB,KAAK,0CADyD0kB,EAElFtQ,EAAKjQ,MAAMnE,KAAK,2DAF0E2mC,EAGjFvyB,EAAKjQ,MAAMnE,KAAK,iBAAiBA,KAAK,2CACpDkmC,EAAY,CAChB,KAAK1mC,EAAM,EAAGrF,EAAS4G,EAAQ5G,OAAQqF,EAAMrF,EAAQqF,IAAO,CACxD,GAAIuB,EAAQvB,GAAKiG,OAAQ,CAGrB,GAFA7C,EAAO8hB,EAAOhlB,GAAGF,GACjBknC,EAAmBliC,EAAYzD,EAAQvB,GAAKuB,aAAe5G,OACvDmH,EAAUP,EAAQvB,IAAO,CAMzB,IALIwI,EAAU,KACVjH,EAAQvB,GAAKuB,UACbiH,EAAU0+B,EAAmBxgC,EAAuBnF,EAAQvB,GAAKuB,UAErEiH,EAAUA,GAAW,EACZg+B,EAAU,EAAGA,EAAUh+B,EAASg+B,IACrC3/B,EAAOA,EAAKpH,IAAImK,EAAS1J,GAAGF,EAAM0mC,EAAYF,EAAUC,GAE5DC,IAAal+B,EAAU,EAI3B,IAFAnB,GAAqB9F,EAAQvB,IAAO2I,EAAkBvF,GAAOc,EAAM,EAAG,GACtEgjC,EAAmBA,GAAoB,EAC9Bxe,EAAI,EAAGA,EAAIwe,EAAkBxe,IAClCue,EAAcA,EAAYxnC,IAAI0nC,EAAgBjnC,GAAG8mC,EAAmBte,GAExEse,IAAoBE,EAEpB3lC,EAAQvB,GAAKuB,UACbklC,GAAmB//B,EAAuBnF,EAAQvB,GAAKuB,UAEtDO,EAAUP,EAAQvB,KACnBymC,IAGR,GAAIviC,EAAKvJ,OAAQ,CAQb,IAPAuO,EAAO,8DAAgEwL,GAAQ,mBAAqB,IAAM,sBAC1GxL,GAAYhK,MAAMgF,EAAKvJ,OAAS,GAAGL,KAAK,aACxC4O,IAAS69B,EAAe,8BAAgC,IAAM,yBAC9D99B,EAAQxP,EAAEyP,GACVU,EAAWX,EAAMzI,KAAK,YACtBoJ,EAASjE,OAAOiP,EAAKjQ,MAAMyjB,OAAO5nB,KAAK,mBAAmBf,IAAIoH,IAC9Dub,EAAKnZ,EAAMzI,KAAK,+BACXR,EAAM,EAAGrF,EAASuJ,EAAKvJ,OAAQqF,EAAMrF,EAAQqF,IAC9C+E,EAAQ9B,EAASiB,EAAKlE,IACtBoiB,EAAGliB,GAAGF,GAAK2F,OAAOiP,EAAKjQ,MAAMnE,KAAK,SAAWR,EAAM,mBAAmBP,IAAIsF,GAU9E,OARI9F,GAAQiI,EAAgBjL,KAAK0I,OAC7BT,EAAKvJ,OAASsE,GACdgI,EAAmBgC,EAAOhK,EAAQiF,EAAKvJ,QAE3CmsC,EAAW79B,EAAMzI,KAAK,iBACtBsmC,EAASnhC,OAAOiP,EAAKjQ,MAAMnE,KAAK,+BAA+Bf,IAAIwnC,IACnEhrC,KAAKsS,aAAetF,EAAMgpB,UAAUvxB,GACpCzE,KAAK0I,MAAMnE,KAAK,iBAAiB4G,UAC1B,EAEX,OAAO,GAEXiZ,wBAAyB,WACrB,GAAIjgB,GAAWnE,KAAKsS,aAAa9O,IAAIxD,KAAKoE,eAAeZ,IAAIxD,KAAKglB,aAClEtlB,IAAMia,QAAQxV,GACdA,EAAS2V,IAAI3U,IAAIgG,SACjBnL,KAAKsS,aAAetS,KAAKoE,cAAgBpE,KAAKglB,aAAe,KAC7DhlB,KAAK6R,WAAa,MAEtB0O,OAAQ,WAAA,GAC6Hxc,GAA2GoiB,EAiBhOle,EAkBJkjC,EAKAC,EA2CJC,EACAC,EApFA3yB,EAAO3Y,KAAMsF,EAAUqT,EAAKrT,QAASoI,EAAaiL,EAAKgO,eAAiBrhB,EAAQ5G,OAAQosC,EAAenyB,EAAKyT,gBAAsBnf,EAAO,GAAIvE,EAAQiQ,EAAK3L,MAAMzI,KAAK,UAAWgnC,EAAW5yB,EAAK3G,QAAQzN,KAAK,eAAe7F,OAAS,CAczO,IAbKgK,EAAMhK,SACPgK,EAAQlL,EAAE,YAAY+Q,aAAaoK,EAAK5L,QAExC4L,EAAKrG,cAAgBqG,EAAKjQ,OAC1Byd,EAAKxN,EAAKjQ,MAAMnE,KAAK,iCAAiC0I,KAAK,IAC3DkZ,EAAGhb,SACHgb,EAAK3oB,IACLmb,EAAKyL,2BAEL+B,EAAKxN,EAAK3G,QAAQzN,KADXgnC,EACgB,4CAEA,qBAEtBplB,EAAGznB,SACJynB,EAAKzd,EAAMN,WAAW8R,SACjBiM,EAAGznB,QAAQ,CAOZ,IANIuJ,IACIP,QAAS,EACToB,SACAgB,MAAO,IAEf6O,EAAK6yB,gBAAgBvjC,EAAM3C,GACtBvB,EAAM,EAAGA,EAAMkE,EAAKvJ,OAAQqF,IAC7BkJ,GAAQ,OACJS,IACAT,GAAQ,4CAA8C0L,EAAK1X,QAAQ8hB,SAASI,2BAA6B,SAE7GlW,GAAQ0L,EAAK0xB,mBAAmBpiC,EAAKlE,GAAK+E,MAAOb,EAAKlE,GAAK2D,SAC3DuF,GAAQ,OAEZkZ,GAAK3oB,EAAEyP,GAGX69B,IACIK,EAAY3tC,EAAE,SAClB2tC,EAAU3pB,SAAS,iBACf9T,GAAcyY,EAAG5hB,KAAK,qBAAqB7F,SAC3CysC,EAAUr9B,QAAQ,wDAElBs9B,GAAqBzyB,EAAKjQ,OAASA,GAAOnE,KAAK,iBAC/C6mC,EAAkB1sC,SAClBgB,GAAMia,QAAQyxB,GACdA,EAAkBjgC,UAEtBzC,EAAMgB,OAAOyhC,IAEZhlB,EAAG/d,WAAW1J,OAORgP,IAAeyY,EAAG5hB,KAAK,qBAAqB,IACnD4hB,EAAGrY,QAAQ,yDAPXb,EAAO,GACHS,IACAT,GAAQ,wDAEZA,GAAQ0L,EAAK0xB,mBAAmB/kC,GAChC6gB,EAAGlZ,KAAKA,IAIZkZ,EAAGrjB,KAAK,OAAQ,OAAOyB,KAAK,MAAMid,SAAS,YACtC7I,EAAK1X,QAAQ2gB,YACdlZ,EAAM8Y,SAAS,iBAEnB2E,EAAG5hB,KAAK,UAAU4G,SAAS+iB,MAAM8H,UAAUttB,GACvCiQ,EAAKjQ,OACLiQ,EAAK0K,4BAETrjB,KAAKumB,QAAQ,UAAW,WACpB,OAASpiB,SAAUuE,EAAMnE,KAAK,MAAM3D,SAExCZ,KAAKumB,QAAQ,UAAW,WACpB,OACIpiB,SAAUuE,EAAMnE,KAAK,MAAM3D,MAC3B6O,KAAMnP,GAAIgF,EAAS,SAAUqjB,GACzB,OAASljB,OAAQkjB,QAI7BhQ,EAAKjQ,MAAQA,EAAM5F,KAAK,OAAQ,YAChC6V,EAAKuuB,YACLvuB,EAAKktB,cACLltB,EAAKwtB,aACLxtB,EAAK6oB,cACL7oB,EAAK8yB,cACL9yB,EAAKksB,cAEDyG,EAAmBtrC,KAAKiB,QAAQ2gB,YAAcra,EAAcvH,KAAKsF,SAAS5G,OAC1E4sC,IACAD,EAAa1yB,EAAKiyB,0BAA0BjyB,EAAKjQ,MAAMyD,QAAQ,mBAC/DwM,EAAK2xB,6BACL3xB,EAAKvU,cAAcgV,KAAK,iBAAmBjU,GAAK,cAAgBA,GAAIC,GAAMuT,EAAKwB,aAAcxB,KAEjGA,EAAKwU,yBACLxU,EAAK0U,0BACL1U,EAAK0P,aACL1P,EAAKqR,aACLrR,EAAKiS,eACLjS,EAAK8tB,cAAc9tB,EAAK2I,WACpBgqB,IACID,GACA1yB,EAAKoR,0BAETpR,EAAKkR,+BAELlR,EAAKmJ,WACLnJ,EAAKie,oBAGb8U,qBAAsB,SAAUpmC,EAAS2C,GAAnB,GAGVxC,GAFJrC,EAAS5F,GACb,IAAIyK,EAAKvJ,QAAU4G,EAAQ,GAAI,CAE3B,IADIG,EAASH,EAAQ,GACdG,EAAOH,SAAWG,EAAOH,QAAQ5G,QACpC+G,EAASA,EAAOH,QAAQ,GACxB2C,EAAOA,EAAK3D,OAAO,iBAEvBlB,GAASA,EAAOI,IAAIyE,GAExB,MAAO7E,IAEXiqB,wBAAyB,WAAA,GAGblH,GAEAle,EAJJ0Q,EAAO3Y,KAAMsF,EAAUqT,EAAKrT,YAAeoI,EAAaiL,EAAKgO,eAAiBrhB,EAAQ5G,MACrFgP,IAAeiL,EAAK2I,YACjB6E,EAAKxN,EAAKjQ,MAAMnE,KAAK,sCACzBe,EAAUmC,EAAiBnC,GACvB2C,EAAO0Q,EAAK+yB,qBAAqBpmC,EAAS6gB,GAC1CxN,EAAKge,cACLxQ,EAAKxN,EAAKrG,aAAa/N,KAAK,2CAC5Be,EAAUiC,EAAcoR,EAAKrT,SAC7B2C,EAAOA,EAAKzE,IAAImV,EAAK+yB,qBAAqBpmC,EAAS6gB,KAEvDle,EAAKue,KAAK,WACN,GAAIhd,GAAMhM,EAAEwC,MAAMuE,KAAK,KACvBiF,GAAIwc,YAAY,WAChBxc,EAAIvF,GAAG,GAAGud,SAAS,eAI/BgqB,gBAAiB,SAAUvjC,EAAM3C,EAAS4G,EAAYy/B,GAArC,GAIJ5nC,GACDoD,EAJJgC,EAAMwiC,GAAa1jC,EAAKA,EAAKvJ,OAAS,GACtCktC,EAAW3jC,EAAKkB,EAAIW,MAAQ,GAC5B+hC,EAAe,CACnB,KAAS9nC,EAAM,EAAGA,EAAMuB,EAAQ5G,OAAQqF,IAChCoD,GACA1B,OAAQH,EAAQvB,GAChBwI,QAAS,GAEbpD,EAAIL,MAAM3K,KAAKgJ,GACX7B,EAAQvB,GAAKuB,SAAWA,EAAQvB,GAAKuB,QAAQ5G,SACxCktC,IACDA,GACIlkC,QAAS,EACToB,SACAgB,MAAO7B,EAAKvJ,QAEhBuJ,EAAK9J,KAAKytC,IAEdzkC,EAAKoF,QAAUjH,EAAQvB,GAAKuB,QAAQ5G,OACpCsB,KAAKwrC,gBAAgBvjC,EAAM3C,EAAQvB,GAAKuB,QAAS6B,EAAMykC,GACvDC,GAAgB1kC,EAAKoF,QAAU,EAC/BpD,EAAIzB,QAAUO,EAAKvJ,OAASyK,EAAIW,MAGpCoC,KACAA,EAAWK,SAAWs/B,IAG9B1xB,aAAc,SAAU5I,GAAV,GAINlN,GAIA8M,EAAiC0J,CAPjCtJ,GAAEyJ,UAGF3W,EAAUrE,KAAKqE,QACfrE,KAAKiB,QAAQ2gB,WAAWC,UACxBxd,EAAUrE,KAAK+hB,kBAAkBlI,mBAEjC1I,EAAY9M,EAAQ8M,YAAa0J,EAAQnb,GAAMub,YAAY1J,GAC3DsJ,IACIxW,EAAQ,GAAG8W,aAAe9W,EAAQ,GAAG6W,eAAiB7W,EAAQ,GAAG8M,UAAY9M,EAAQ,GAAG8W,aAAe9W,EAAQ,GAAG6W,cAAgBL,EAAQ,GAAKxW,EAAQ,GAAG8M,UAAY,GAAK0J,EAAQ,IACnLtJ,EAAEG,iBAENrN,EAAQ8M,UAAUA,GAAa0J,MAGvC8b,UAAW,WACP,MAA4B,OAArB32B,KAAKsS,cAEhBw5B,kBAAmB,WACf,GAAI9+B,GAAQhN,KAAK0I,MAAMwB,SAAS1G,IAAIxD,KAAKgN,MACrChN,MAAK22B,YACLlpB,EAAcT,EAAOxB,EAAmBF,EAAwBtL,KAAKsF,UAAWtF,KAAK2mB,cAAe,GAEpGlZ,EAAcT,EAAOxB,EAAmB1E,EAAe9G,KAAKsF,UAAWtF,KAAK2mB,cAAe,IAGnG8kB,YAAa,SAAUz+B,GACnBA,EAAQA,GAAShN,KAAK0I,MAAMwB,SAAS1G,IAAIxD,KAAKgN,OAC9ChN,KAAK4kC,YAAY53B,EAAOhN,KAAK22B,cAEjCoV,kBAAmB,SAAU/+B,GACrBhN,KAAK22B,cACL3pB,EAAQA,GAAShN,KAAKsS,aAAa/N,KAAK,SAASf,IAAIxD,KAAKoS,aAC1D3E,EAAcT,EAAOxB,EAAmBD,EAAqBvL,KAAKsF,UAAWtF,KAAK2mB,cAAe3mB,KAAKshB,aAG9GsjB,YAAa,SAAU53B,EAAOhD,GACtBA,EACAyD,EAAcT,EAAOxB,EAAmBF,EAAwBtL,KAAKsF,UAAWtF,KAAK2mB,cAAe,GAEpGlZ,EAAcT,EAAOxB,EAAmB1E,EAAe9G,KAAKsF,UAAWtF,KAAK2mB,cAAe3mB,KAAKshB,YAGxG0qB,aAAc,SAAUnU,GACpB,GAAIA,GAAUA,EAAOoU,OAAQ,CACzB,GAAiBrmC,GAAOL,EAApBoT,EAAO3Y,IACX63B,GAASA,EAAOoU,SAChB1mC,IAAYoT,EAAK3L,MAAMzI,KAAK,YAAY7F,OAAS,KAAOia,EAAKM,aAAeN,EAAKM,WAAWwM,WAC5F,KAAK7f,IAASiyB,GACVlf,EAAKrT,QAAQnH,MACTyH,MAAOA,EACPL,QAASA,EACTS,kBAAoBE,GAAIxG,GAAMuG,SAGtC0S,GAAK4H,SACL5H,EAAKgI,eAGburB,UAAW,SAAUz8B,EAAM08B,GACvB,GAA4BpoC,GAAqFrF,EAA7Gia,EAAO3Y,KAAMiN,EAAO,GAASqV,EAAc6pB,EAAU7pB,YAAaC,EAAiB4pB,EAAU5pB,cACjG,KAAKxe,EAAM,EAAGrF,EAAS+Q,EAAK/Q,OAAQqF,EAAMrF,EAAQqF,IAC1C4U,EAAKkpB,wBAA0B,EAC/BlpB,EAAKkpB,2BAGD50B,GADAlJ,EAAM,EACEwe,EAAe9S,EAAK1L,IAEpBue,EAAY7S,EAAK1L,IAE7B4U,EAAK2M,MAAMnnB,KAAKsR,EAAK1L,IAG7B,OAAOkJ,IAEXm/B,cAAe,SAAU7mB,EAAOpS,EAAS9G,EAAOggC,EAAoBF,EAAWG,GAAhE,GACiBvoC,GAAKrF,EA4BzB6tC,EACK/mB,EA7BT7M,EAAO3Y,KAAMiN,EAAO,GAAiBrH,EAAQ2f,EAAM3f,MAAOH,EAASsB,GAAKgC,EAAY4P,EAAKrT,SAAU,SAAUG,GACzG,MAAOA,GAAOG,OAASA,IACxB,OAAUwrB,EAAW3rB,EAAO+mC,oBAAqB9uC,GAAQ+H,EAAO6kB,OAAS1kB,GAAS,KAAO+I,EAAiB4W,EAAMllB,MAAOoF,EAAOmI,OAAQnI,EAAO4pB,OAAQ5pB,EAAOF,SAAUknC,EAAiB9zB,EAAK+zB,kCAAqCC,EAAapnB,EAAM5V,MAAOE,EAAahQ,MAAW4sC,EAAgBlnB,EAAM1V,YAAa+8B,EAAa/sC,OAClU+F,MAAO2f,EAAM3f,MACbvF,MAAOklB,EAAMllB,MACbsP,MAAOg9B,EACP98B,WAAYA,GACb0V,EAAM1V,WAAW0V,EAAM3f,QAAS+e,EAAsBwnB,EAAUxnB,mBASvE,IARIyM,IACA1zB,QAAc0zB,KAAaha,GAAWga,EAASwb,GAAcltC,GAAM0xB,SAASA,GAAUwb,IAErFj0B,EAAKkpB,wBAGNwK,EAAmBl5B,EAAS9G,EAAO3O,GAFnCuP,GAAQo/B,EAAmBl5B,EAAS9G,EAAO3O,GAI3C6nB,EAAM7V,aACN,IAAK3L,EAAM,EAAGrF,EAASiuC,EAAWjuC,OAAQqF,EAAMrF,EAAQqF,IAC/C4U,EAAKkpB,wBAGNlpB,EAAKyzB,cAAcO,EAAW5oC,GAAMuoC,EAAcn5B,EAAUA,EAAU,EAAG9G,EAAQ,EAAGggC,EAAoBF,EAAWG,GAFnHr/B,GAAQ0L,EAAKyzB,cAAcO,EAAW5oC,GAAMuoC,EAAcn5B,EAAUA,EAAU,EAAG9G,EAAQ,EAAGggC,EAAoBF,EAAWG,OAMnIr/B,IAAQ0L,EAAKuzB,UAAUS,EAAYR,EAEvC,IAAIxnB,EAAqB,CACjB4nB,IACJ,KAAS/mB,IAAa3V,GAClB08B,EAAW/mB,GAAa3lB,MAAWgQ,EAAW2V,IAC1CD,OACI3f,MAAO2f,EAAM3f,MACbvF,MAAOklB,EAAMllB,MACbsP,MAAOg9B,IAInB1/B,IAAQ0X,EAAoB4nB,GAEhC,MAAOt/B,IAEXwpB,cAAe,SAAUlR,GAAV,GACPlZ,GAAsJ1D,EAA4B5E,EAAKrF,EAAQynB,EAc/L0mB,EAdOl0B,EAAO3Y,KAAM8sC,EAAkBvnB,EAAOzD,EAAY9hB,KAAKiB,QAAQ6gB,UAAWirB,EAAajrB,EAAUirB,WAAYC,EAAcD,EAAa,EAAI,EAAWE,EAAezvC,GAejL,KAdA+nB,EAAQ/nB,EAAE+nB,GACNvlB,KAAK22B,cACApR,EAAMpZ,QAAQ,OAAOlD,SAAS,yBAI/BgkC,EAAejtC,KAAK+M,MAAM3E,SAAS,SAAWmd,EAAMzb,QAAU,KAAKs1B,QAAQ,OAH3E6N,EAAe1nB,EAAM6Z,QAAQ,MAC7B7Z,EAAQvlB,KAAKoS,YAAY7N,KAAK,gBAAkBghB,EAAMzb,QAAU,OAKxEuC,EAAQkZ,EAAMhhB,KAAK,iBAAiB7F,OACpC6mB,EAAMhhB,KAAK,iBAAiBid,SAAS,cAAcwE,YAAY,gBAC/DT,EAAMhhB,KAAK,kCAAoCzB,KAAK,iBAAiB,GAAOyB,KAAK,KAAKzB,KAAKsQ,GAAW4E,IACtGuN,EAAQA,EAAM6Z,QAAQ,MAClByN,KACC9oC,EAAM,EAAGrF,EAAS6mB,EAAM7mB,OAAQqF,EAAMrF,IACvCynB,EAAKZ,EAAMthB,GAAGF,GACd4E,EAASwd,EAAG5hB,KAAK,iBAAiB7F,OAC9BynB,EAAGld,SAAS,kBACZ+jC,IACO7mB,EAAGld,SAAS,mBACnB+jC,MAEArkC,GAAU0D,GAAS8Z,EAAGld,SAAS,mBAAqB+jC,EAAc,IARvBjpC,IAW3CkpC,EAAavuC,QACbmuC,EAAO1uC,KAAK8uC,EAAalpC,IAE7B8oC,EAAO1uC,KAAKgoB,EAAG,GAEnB3oB,GAAEqvC,GAAQrnC,OACNxF,KAAKiB,QAAQ2gB,WAAWuV,SAAWn3B,KAAKqE,SACxC6J,WAAW,WACPyK,EAAKtU,QAAQ49B,SACbtpB,EAAKu0B,iBAAmBJ,KAIpCpW,YAAa,SAAUnR,GACnBA,EAAQ/nB,EAAE+nB,EACV,IAAiElZ,GAAO8Z,EAAIxd,EAA4B5E,EAAKrF,EAAzGia,EAAO3Y,KAAM+sC,EAAap0B,EAAK1X,QAAQ6gB,UAAUirB,WAA+BE,EAAezvC,IAAkB2vC,KAAwBC,EAAc,CAa3J,KAZIptC,KAAK22B,cACApR,EAAMpZ,QAAQ,OAAOlD,SAAS,yBAI/BgkC,EAAejtC,KAAK+M,MAAM3E,SAAS,SAAWmd,EAAMzb,QAAU,KAAKs1B,QAAQ,OAH3E6N,EAAe1nB,EAAM6Z,QAAQ,MAC7B7Z,EAAQvlB,KAAKoS,YAAY7N,KAAK,gBAAkBghB,EAAMzb,QAAU,OAKxEuC,EAAQkZ,EAAMhhB,KAAK,iBAAiB7F,OACpC6mB,EAAMhhB,KAAK,eAAeid,SAAS,gBAAgBwE,YAAY,cAC/DT,EAAMhhB,KAAK,mCAAqCzB,KAAK,iBAAiB,GAAMyB,KAAK,KAAKzB,KAAKsQ,GAAWC,IACtGkS,EAAQA,EAAM6Z,QAAQ,MACjBr7B,EAAM,EAAGrF,EAAS6mB,EAAM7mB,OAAQqF,EAAMrF,IACvCynB,EAAKZ,EAAMthB,GAAGF,GACd4E,EAASwd,EAAG5hB,KAAK,iBAAiB7F,SAC9BiK,GAAU0D,IAHiCtI,IAM3C4E,GAAU0D,EAAQ,GAAM8Z,EAAGld,SAAS,kBACpCkd,EAAGiB,OACH6lB,EAAahpC,GAAGF,GAAKqjB,OACjBjB,EAAGld,SAAS,mBAAqBkd,EAAG5hB,KAAK,WAAW0E,SAAS,iBAC7D0P,EAAK+d,YAAYvQ,GAEjBA,EAAGld,SAAS,iBAAmBkd,EAAG5hB,KAAK,WAAW0E,SAAS,kBAC3Dkd,EAAGtZ,OAAOua,OACV6lB,EAAahpC,GAAGF,EAAM,GAAGqjB,SAG7BjB,EAAGld,SAAS,oBACR8jC,GACAI,EAAkBhvC,KAAKgoB,EAAGtY,GAAG,aAEjCu/B,KAEAjnB,EAAGld,SAAS,oBACR8jC,GACA5mB,EAAG8jB,OAAOkD,EAAkBE,OAEb,GAAfD,GACAjnB,EAAGiB,OACH6lB,EAAahpC,GAAGF,GAAKqjB,QAErBgmB,MAKhB3G,cAAe,SAAUz+B,GACrB,GAAI2Q,GAAO3Y,KAAMyE,EAAYkU,EAAKge,YAAche,EAAKrG,aAAa/N,KAAK,SAAWoU,EAAKjQ,MAAOsiC,EAAcvmC,EAAUF,KAAK,mBAAmBA,KAAK,mBAAmB7F,OAAQA,EAAS+F,EAAUF,KAAK,YAAYA,KAAK,mBAAmB7F,OAAQuJ,EAAOxD,EAAU2D,SAAS,kBAAkB9D,OAAO,WAC7R,OAAQ9G,EAAEwC,MAAMoI,SAAS,YAAY1J,QAEzCsJ,GAAStJ,GACTlB,EAAMyF,MAAM+E,EAAStJ,EAAS,GAAGL,KAAK,iDAAmDsa,EAAK1X,QAAQ8hB,SAASI,2BAA6B,UAAU6S,UAAUvxB,EAAU2D,SAAS,0BAC/KuQ,EAAK3G,QAAQnE,GAAG,aAChB5F,EAAK1D,KAAK,mBAAmBiB,QAE1BwC,EAAStJ,GAChB+F,EAAUF,KAAK,MAAMiiB,KAAK,WACtBhpB,EAAEwC,MAAMuE,KAAK,mBAAmBD,OAAO,OAAS0D,EAAS,SAAgBA,EAAS,KAAKmD,WAG3FnD,EAASgjC,GACTxtC,EAAMyF,MAAM+E,EAASgjC,EAAc,GAAG3sC,KAAK,8DAA8D23B,UAAUvxB,EAAUF,KAAK,mBAG1I+oC,eAAgB,SAAU79B,EAAM89B,GAQ5B,MAPI99B,IAAQ89B,IAEJ99B,EADAA,EAAKC,aACE1P,KAAKstC,eAAe79B,EAAKE,MAAM,GAAI49B,GAEnC99B,EAAKE,MAAM,IAGnBF,GAEX2d,mBAAoB,WAChB,GAAiBV,GAAb/T,EAAO3Y,IACN2Y,GAAKge,cAGVjK,EAASlvB,EAAE,4CAA6Cmb,EAAKiB,SAASpW,IAAImV,EAAKjQ,MAAMwB,UAAU1G,IAAImV,EAAK3L,OACxG2L,EAAK8Q,aAAetZ,GAAWuc,EAAOzoB,GAAG,IACzCyoB,EAAO7tB,MAAM8Z,EAAK8Q,cAClBiD,EAASlvB,EAAE,8CAA+Cmb,EAAKiB,SAASpW,IAAImV,EAAKrG,aAAa/N,KAAK,WAAWf,IAAImV,EAAKvG,aACvHsa,EAAO7tB,MAAMsR,GAAWuc,EAAOzoB,GAAG,OAEtC22B,WAAY,SAAUn1B,GAAV,GACS0B,GAAMulB,EAAQ3oB,EAAK6G,EAAMC,EAAUjC,EAAqB4kC,EAAiB9uC,EAAyN6Q,EA+B/S9K,EA/BAkU,EAAO3Y,KAAmDnB,EAAQ,EAA4BkmB,EAASpM,EAAKoM,QAAUpM,EAAKiB,QAAQrV,KAAK,kBAAmBe,EAAUqT,EAAKrT,QAASunB,EAAgBlU,EAAKrG,aAAe7G,EAAckN,EAAKrG,aAAa/N,KAAK,iBAAiBD,OAAOsC,GAAelI,OAAS,CAYhT,IAVI+G,EADiB,gBAAVA,GACEH,EAAQG,GACVX,GAAcW,GACZsB,GAAKuD,EAAYhF,GAAU,SAAUoJ,GAC1C,MAAOA,KAASjJ,IACjB,GAEMsB,GAAKuD,EAAYhF,GAAU,SAAUoJ,GAC1C,MAAOA,GAAK9I,QAAUH,IACvB,GAEFA,GAAWI,EAAUJ,GAA1B,CAGA,GAAIA,EAAOH,SAAWG,EAAOH,QAAQ5G,OAAQ,CAIzC,IAHAkK,EAAWW,EAAsB9D,EAAQH,GACzCkB,EAAoBf,GAAQ,GAC5BuJ,EAAkB7K,EAAS3G,EAAE,eAAgBmb,EAAKrG,cAAeqG,EAAKjQ,MAAO,UAAYE,EAASO,IAAM,QAASP,EAASzB,MAAM,GAC3HpD,EAAM,EAAGA,EAAM0B,EAAOH,QAAQ5G,OAAQqF,IACvC/D,KAAK46B,WAAWn1B,EAAOH,QAAQvB,GAGnC,OADA4U,GAAKwD,QAAQvG,IAAcnQ,OAAQA,IACnC,EA4BJ,GA1BA8J,EAAcnF,GAAQ3E,EAAQqB,EAAeiC,EAAYzD,KACzDkB,EAAoBf,GAAQ,GAC5BkT,EAAK80B,sBAAsBhoC,GAAQ,GACnCkT,EAAKgI,aACLhI,EAAK8yB,cACL9yB,EAAKozB,oBACDtnC,EAAYkU,EAAKjQ,MACrB8kC,EAAkBj+B,EACdoJ,EAAKrG,cAAgBua,EAAgBtd,EACrC9K,EAAYkU,EAAKrG,aAAa/N,KAAK,gBAEnCipC,GAAmB3gB,EAEvB1lB,EAAOsE,EAAchH,GAAWH,OAAOsC,GAAe3C,GAAGupC,GACzDrmC,EAAK,GAAGlI,MAAM4H,QAAU,OACxBmI,EAAkB7K,EAAS3G,EAAE,eAAgBmb,EAAKrG,cAAeqG,EAAKjQ,MAAO,uBAAwB6G,GAAa,GAC9GwV,EAAO,KACPpM,EAAK8yB,YAAY1mB,EAAOxgB,KAAK,+BAC7BoU,EAAKozB,kBAAkBhnB,EAAOxgB,KAAK,iCACnCyK,EAAkB+V,EAAOxgB,KAAK,yBAA0BgL,GAAa,IAErEoJ,EAAKvG,aAAeya,EAAgBtd,EACpCD,EAAgBqJ,EAAKvG,YAAY7N,KAAK,aAAcgL,GAEpDD,EAAgBqJ,EAAK5L,MAAM3E,WAAYmH,EAAcsd,GAErDlU,EAAKvG,YACLuG,EAAKyU,qBACLzU,EAAKkR,8BACLlR,EAAKmR,2BACLnR,EAAKoR,0BACLpR,EAAKmX,8BACF,CAEH,IADAllB,EAAO+N,EAAKjQ,MAAMyjB,OAAO5nB,KAAK,OACzBR,EAAM,EAAGrF,EAASkM,EAAKlM,OAAQqF,EAAMrF,EAAQqF,GAAO,EAAG,CAExD,GADA8G,EAAWD,EAAK7G,GAAK9E,MAAMJ,OACvBgM,GAAYA,EAASC,QAAQ,SAE1B,CACHjM,EAAQ,CACR,OAHAA,GAASkM,SAASF,EAAU,IAMpC6hB,EAASlvB,EAAE,0DAA2Dmb,EAAKiB,SAASpW,IAAImV,EAAK3L,OAC7F2L,EAAK8Q,aAAe,KAChB5qB,IACA6tB,EAAOlG,KAAK,WACRxmB,KAAKf,MAAMJ,MAAQA,EAAQ,OAE/B8Z,EAAK8Q,aAAe5qB,GAEpBkP,GAAQC,MAA2B,GAAnBD,GAAQE,UACxBye,EAAOjpB,IAAI,UAAW,gBACtByK,WAAW,WACPwe,EAAOjpB,IAAI,UAAW,UACvB,IAGXkV,EAAK0U,0BACL1U,EAAKwD,QAAQvG,IAAcnQ,OAAQA,MAEvCgoC,sBAAuB,SAAUhoC,EAAQgB,GAAlB,GAEf1C,GAEAmG,EACAtB,EACAzB,EACAoF,EANAjH,EAAUtF,KAAKsF,QAEfc,KAKAsnC,EAAYjnC,EAAU,SAAUknC,GAChC,MAAO7mC,GAAe6mC,EAAEroC,SAAS5G,QAAUivC,EAAEjoC,QAC7C,SAAUioC,GACV,OAAQ7mC,EAAe6mC,EAAEroC,SAAS5G,SAAWivC,EAAEjoC,OAEnD,IAAIW,EAAcZ,EAAQH,EAASc,IAAYA,EAAQ1H,OACnD,IAAKqF,EAAMqC,EAAQ1H,OAAS,EAAGqF,GAAO,EAAGA,IACrCmG,EAAS9D,EAAQrC,GACjB6E,EAAWM,EAAegB,EAAQ5E,GAClC6B,EAAOhD,EAAS3G,EAAE,eAAgBwC,KAAKsS,cAAetS,KAAK0I,MAAO,UAAYE,EAASO,IAAM,kDAAkDlF,GAAG2E,EAASzB,MACvJumC,EAAUxjC,KACV1D,EAAoB0D,EAAQzD,GAC5BU,EAAK,GAAGlI,MAAM4H,QAAUJ,EAAU,GAAK,QAEvCU,EAAK7C,OAAO,IAAM5E,GAAMoD,KAAK,WAAa,KAAKpE,SAC/C6N,EAAUxB,SAAS5D,EAAKrE,KAAKpD,GAAMoD,KAAK,YAAa,IACrDqE,EAAK,GAAGoF,QAAUA,EAAU9B,EAAuBP,EAAO5E,UAAY,IAKtFu1B,WAAY,SAAUp1B,GAAV,GACS1B,GAAKrF,EAAQyI,EAAMulB,EAAQ7tB,EAAO2uC,EAAiB5kC,EAAUiC,EAAUD,EAAsM2E,EA+B1R9K,EA/BAkU,EAAO3Y,KAAmFsF,EAAUqT,EAAKrT,QAASyf,EAASpM,EAAKoM,QAAUpM,EAAKiB,QAAQrV,KAAK,kBAAmB87B,EAAqB1nB,EAAKrG,aAAe7G,EAAckN,EAAKrG,aAAa/N,KAAK,iBAAiB7F,OAAS,CAY3R,IAVI+G,EADiB,gBAAVA,GACEH,EAAQG,GACVX,GAAcW,GACZsB,GAAKuD,EAAYhF,GAAU,SAAUoJ,GAC1C,MAAOA,KAASjJ,IACjB,GAEMsB,GAAKuD,EAAYhF,GAAU,SAAUoJ,GAC1C,MAAOA,GAAK9I,QAAUH,IACvB,GAEFA,IAAUI,EAAUJ,GAAzB,CAGA,GAAIA,EAAOH,SAAWG,EAAOH,QAAQ5G,OAAQ,CAIzC,IAHAkK,EAAWM,EAAezD,EAAQH,GAClCkB,EAAoBf,GAAQ,GAC5BuJ,EAAkB7K,EAAS3G,EAAE,eAAgBmb,EAAKrG,cAAeqG,EAAKjQ,MAAO,UAAYE,EAASO,IAAM,QAASP,EAASzB,MAAM,GAC3HpD,EAAM,EAAGA,EAAM0B,EAAOH,QAAQ5G,OAAQqF,IACvC/D,KAAK66B,WAAWp1B,EAAOH,QAAQvB,GAGnC,OADA4U,GAAKwD,QAAQtG,IAAcpQ,OAAQA,IACnC,EA4BJ,GA1BA8J,EAAcnF,GAAQ3E,EAAQsD,EAAYzD,IAC1CkB,EAAoBf,GAAQ,GAC5BkT,EAAK80B,sBAAsBhoC,GAAQ,GACnCkT,EAAKgI,aACLhI,EAAK8yB,cACL9yB,EAAKozB,oBACDtnC,EAAYkU,EAAKjQ,MACrB8kC,EAAkBj+B,EACdoJ,EAAKrG,cAAgB+tB,EAAqB9wB,EAC1C9K,EAAYkU,EAAKrG,aAAa/N,KAAK,gBAEnCipC,GAAmBnN,EAEvBl5B,EAAOsE,EAAchH,GAAWR,GAAGupC,GACnCrmC,EAAK,GAAGlI,MAAM4H,QAAU,GACxBmI,EAAkB7K,EAAS3G,EAAE,eAAgBmb,EAAKrG,cAAeqG,EAAKjQ,MAAO,uBAAwB6G,GAAa,GAC9GwV,EAAO,KACPpM,EAAK8yB,YAAY1mB,EAAOxgB,KAAK,+BAC7BoU,EAAKozB,kBAAkBhnB,EAAOxgB,KAAK,iCACnCyK,EAAkB+V,EAAOxgB,KAAK,yBAA0BgL,GAAa,IAErEoJ,EAAKvG,aAAeiuB,EAAqB9wB,EACzCO,GAAgB6I,EAAKvG,YAAY7N,KAAK,aAAcgL,GAEpDO,GAAgB6I,EAAK5L,MAAM3E,WAAYmH,EAAc8wB,GAErD1nB,EAAKvG,YACLuG,EAAKyU,qBACLzU,EAAKkR,8BACLlR,EAAKmR,2BACLnR,EAAKoR,8BAGL,IADA2C,EAASlvB,EAAE,0DAA2Dmb,EAAKiB,SAASpW,IAAImV,EAAK3L,OACxFvH,EAAO5G,MAEL,CAGH,IAFAA,EAAQ,EACR+L,EAAO+N,EAAKjQ,MAAMyjB,OAAO5nB,KAAK,OACzBR,EAAM,EAAGrF,EAASkM,EAAKlM,OAAQqF,EAAMrF,EAAQqF,GAAO,EAAG,CAExD,GADA8G,EAAWD,EAAK7G,GAAK9E,MAAMJ,MACvBgM,EAASC,QAAQ,QAAW,CAC5BjM,EAAQ,CACR,OAEJA,GAASkM,SAASF,EAAU,IAEhC8N,EAAK8Q,aAAe,KAChB5qB,IACA6tB,EAAOlG,KAAK,WACRxmB,KAAKf,MAAMJ,MAAQA,EAAQ,OAE/B8Z,EAAK8Q,aAAe5qB,OAjBxB6tB,GAAO7tB,MAAM,GAqBrB8Z,GAAK0U,0BACL1U,EAAKwD,QAAQtG,IAAcpQ,OAAQA,MAEvC0+B,UAAW,SAAU8F,GAAV,GACHj4B,GAAUhS,KAAKgS,QACfmlB,EAAUn3B,KAAKiB,QAAQ2gB,YAAc5hB,KAAKiB,QAAQ2gB,WAAWuV,OAC7Dn3B,MAAKiuB,gBAAuC,UAArBjuB,KAAK4tB,YAC5B5b,EAAUhS,KAAKiuB,eACRjuB,KAAKoE,eAAiB+yB,EAC7BnlB,EAAUhS,KAAK4Z,QACR5Z,KAAKgS,QAAQnE,GAAG,SACvBmE,EAAUhS,KAAKgS,QAAQ9H,SAChBlK,KAAKqE,SAAWrE,KAAKqE,QAAQ3F,SACpCsT,EAAUhS,KAAKqE,SAEf8yB,GAAW8S,EACXvqC,GAAM6T,GAAGiL,SAASxM,EAASi4B,GACvBnrC,OAAQkB,KAAKqE,QAAQvF,SACrBse,IAAKpd,KAAKqE,QAAQ,GAAGrC,UACrB23B,SAAS,IAGbj6B,GAAM6T,GAAGiL,SAASxM,EAASi4B,IAGnC2D,QAAS,SAAU7tC,EAAM8tC,GACrB7tC,KAAK8pB,2BACL9pB,KAAK+pB,0BACD/pB,KAAKqE,UACLrE,KAAKijC,mBACLjjC,KAAK0gB,qBAEL1gB,KAAK+hB,oBAAsB8rB,GAAS7tC,KAAK8jC,cACrC+J,IACA7tC,KAAK8jC,WAAa,MAEtB9jC,KAAK+hB,kBAAkBrD,qBAG/BovB,iBAAkB,WACd,GAAI/N,GAASpsB,IACb,SAAKosB,IAGE//B,KAAKgN,MAAM,KAAO+yB,GAAUviC,EAAEwV,SAAShT,KAAKgN,MAAM,GAAI+yB,IAAW//B,KAAK22B,cAAgB32B,KAAKoS,YAAY,KAAO2tB,GAAUviC,EAAEwV,SAAShT,KAAKoS,YAAY,GAAI2tB,MAEnKhnB,QAAS,SAAUxH,GACf,GAAwFugB,GAApFnZ,EAAO3Y,KAAMyP,EAAOkJ,EAAKM,WAAWkb,OAAQthB,EAAc8F,EAAK1X,QAAQ4R,YAA2BzT,EAAU5B,EAAEmb,EAAKvZ,WAAY2uC,GAAoB,EAAOC,IAAsBxwC,EAAEuJ,KAAKgC,EAAY4P,EAAKrT,SAAU,SAAUqjB,GACxN,MAAOA,GAAI9W,aACZnT,OAAQsJ,GAAU2Q,EAAKM,WAAWsM,aAAe7mB,OAAQyU,EAAUnL,EAASwD,EAAmB1E,EAAe6R,EAAKrT,UAAU5G,MACpI,KAAI6S,GAAkB,eAAbA,EAAE2N,SAA2BvG,EAAK7G,SAO3C,MAJIP,IAAkB,WAAbA,EAAE2N,QAAuBvG,EAAK7G,UAAY6G,EAAK7G,SAAS7Q,QAAQ2Q,OAASxH,GAAQuO,EAAK7G,SAAS7Q,QAAQ2Q,MAAOL,EAAE5B,WACrHgJ,EAAK7G,SAAS7Q,QAAQ2Q,MAAMuH,OAAOxD,GAAQgD,EAAK6X,qBAEpDjf,EAAIA,MACAA,EAAE2N,SAAW5I,IAAQqC,EAAKoa,sBAC1Bpa,EAAKsL,mBACLtL,EAAKsW,sBACLtW,EAAKqa,sBACL,IAEAra,EAAKwD,QAAQ,eACT+C,OAAQ3N,EAAE2N,QAAU,SACpBpV,MAAOyH,EAAEzH,MACT6F,MAAO4B,EAAE5B,UAIZgJ,EAAKipB,0BACNjpB,EAAKyK,cAAc,WACfvQ,IAAgB8F,EAAKm1B,oBAAsBn1B,EAAKsV,gBAAkBtV,EAAKsV,eAAexe,KAAK,kBAC3Fs+B,EAAoB3uC,EAAQyO,GAAG,MAC/BikB,EAAetlB,KAAKnD,IAAIsP,EAAK6U,UAAUpuB,GAAU,IAErDuZ,EAAKsL,mBACLtL,EAAK2M,UAEL3M,EAAK1X,QAAQ2gB,YAAcjJ,EAAK1X,QAAQ2gB,WAAWuV,SACnD9a,aAAa1D,EAAKs1B,kBAClBt1B,EAAKs1B,iBAAmB//B,WAAW,WAC1ByK,EAAKipB,yBACNjpB,EAAKwrB,WAAU,IAEpB,MAEHxrB,EAAKwrB,WAAU,GAEnBxrB,EAAKsP,oBACAtP,EAAKrT,QAAQ5G,SACdia,EAAKqzB,aAAarzB,EAAK20B,eAAe79B,EAAK,GAAIzH,IAC/CmL,EAAUnL,EAAS2Q,EAAKrT,QAAQ5G,QAEpCia,EAAK0I,OAASrZ,EAAS,GAAK2Q,EAAK0I,OAC7B1I,EAAK0I,SACL1I,EAAKgI,aACLhI,EAAK8yB,cACL9yB,EAAKozB,oBACLpzB,EAAK8tB,cAAcz+B,GACnB2Q,EAAK0I,OAASrZ,EAAS,EACvB2Q,EAAKuM,WAAa1V,EAAUC,IAEhCkJ,EAAKu1B,eAAez+B,EAAM0D,EAASnL,GACnC2Q,EAAKw1B,qBAAqB1+B,EAAM0D,EAASnL,GACzC2Q,EAAK4I,UACL5I,EAAKoqB,0BACLpqB,EAAKy1B,yBACLz1B,EAAK+H,oBACL/H,EAAKsqB,iBAAiBtqB,EAAKtU,SAAWsU,EAAKtU,QAAQ+M,cAC/CuH,EAAKvG,cACDuG,EAAK1X,QAAQ2gB,WAAWC,QACxBlJ,EAAKtU,QAAQE,KAAK,+BAA+B4X,QAAQ,UAClDxD,EAAKiX,cACZjX,EAAKiX,cAAckS,QAAQ3lB,QAAQ,WAEnCxD,EAAKiB,QAAQnI,IAAI,SAAU,SAAUF,GACjCA,EAAEqd,oBAENjW,EAAKtU,QAAQ8X,QAAQ,YAGxBxD,EAAKipB,yBACNjpB,EAAK01B,gBAAgBvc,EAAcic,GAEnCp1B,EAAKiX,eACLjX,EAAKiX,cAAc0e,iBAEnB31B,EAAK9G,YACL8G,EAAK9G,WAAW08B,mBAEpB51B,EAAK61B,mBAAmB,WACpB71B,EAAKyK,cAAc,aAEnB4qB,GACAr1B,EAAKsiB,yBAAwB,GAE7BtiB,EAAK1X,QAAQohB,mBAAqB1J,EAAK9G,aAAenS,GAAM6T,GAAGukB,WAAWC,aAAapf,EAAK1X,QAAQ4Q,YAAY1K,MAAQ6mC,IACxHr1B,EAAK81B,oBAET91B,EAAKwD,QAAQpG,KA7Eb,IA+EJs4B,gBAAiB,SAAUvc,EAAcic,GAAxB,GAQL1iC,GAMAlC,EAKAskB,CAlBJqE,KAAiBpvB,GAAaovB,EAAe,IAGjD9xB,KAAKs8B,iBACDyR,EACA/tC,KAAK4S,YAAY5S,KAAK0I,MAAMnE,KAAK,yBAAyBN,GAAG6tB,KAEzDzmB,EAAW,EACXrL,KAAKm8B,iBACL9wB,EAAWrL,KAAK+hB,kBAAkBnZ,SAAS5I,KAAKm8B,kBAEhDrK,EAAe,EAEf3oB,EAAM3L,IACNwC,KAAKoS,cACLjJ,EAAMnJ,KAAKoS,YAAY7N,KAAK,aAAaN,GAAGoH,IAEhDlC,EAAMA,EAAI3F,IAAIxD,KAAK+M,MAAM3E,WAAWnE,GAAGoH,IACnCoiB,EAAKtkB,EAAI5E,KAAK,iDAAiDN,GAAG6tB,GACtE9xB,KAAK4S,YAAY6a,IAEjBztB,KAAK47B,UACL3qB,GAAWjR,KAAK47B,SAASzvB,QAAQ,SAAS,IAAI,KAGtDsiC,kBAAmB,WACf,GAAyCC,GAArC/1B,EAAO3Y,KAAMm7B,EAAUxiB,EAAKhJ,OAChC++B,GAAe3nC,GAAKo0B,EAAS,SAAUhyB,GACnC,GAAIwlC,GAAch2B,EAAKmY,SAAS3nB,GAAKwP,EAAKM,WAAWhY,QAAQ42B,OAAOjmB,MAAM1L,GAC1E,IAAIyS,EAAK+K,aAAairB,GAClB,MAAOxlC,KAGfwP,EAAKqb,OAAO0a,IAEhBtrB,cAAe,SAAUwrB,GACrBlvC,GAAM6T,GAAGwM,gBAAgBnH,GAAGwK,cAAcvK,KAAK7Y,KAAM4uC,GACzC,YAARA,GACA5uC,KAAK6uC,sBAET7uC,KAAK8uC,mBAAmBF,GACxB5uC,KAAK+uC,yBAAyBH,IAElCC,oBAAqB,WACjB,GAAIl2B,GAAO3Y,IACP2Y,GAAKgO,gBACLhO,EAAK4N,QAAQ,UAAW,WACpB,OAASpiB,SAAUwU,EAAK5L,MAAM3E,SAAS,oBAE3CuQ,EAAK5L,MAAMxI,KAAK,kBAAkB2I,UAG1C4hC,mBAAoB,SAAUF,GAC1B,GAAIj2B,GAAO3Y,KAAMyE,EAAYkU,EAAK5L,KAC9B4L,GAAKvU,gBACLK,EAAYkU,EAAKvG,YAAY7N,KAAK,UAElCoU,EAAK0I,QACL1I,EAAK4N,QAAQqoB,EAAK,WACd,OACIzqC,SAAUM,EAAU2D,SAAS,mBAC7BqH,KAAMjS,EAAE8C,IAAIkP,EAAUmJ,EAAKM,WAAWkb,QAAS,SAAUrD,GACrD,OAASA,SAAUA,SAMvCie,yBAA0B,SAAUH,GAChC,GAAIj2B,GAAO3Y,KAAMyE,EAAYkU,EAAK5L,KAC9B4L,GAAKvU,gBACLK,EAAYkU,EAAK3G,SAEjB2G,EAAK0I,QAAU1I,EAAKgM,qBACpBhM,EAAK4N,QAAQqoB,EAAK,WACd,OACIzqC,SAAUM,EAAUF,KAAK,mBACzBkL,KAAMjS,EAAE8C,IAAIsP,GAAa+I,EAAKM,WAAWkb,QAAS,SAAUrD,GACxD,OAASA,SAAUA,SAMvCod,eAAgB,SAAUz+B,EAAM0D,EAASnL,GACrC,GAAiBjE,GAAKrF,EAAlBia,EAAO3Y,KAAmBiN,EAAO,GAAIyb,EAAiC,MAAtB/P,EAAKvU,cAAuB4qC,EAAgB,KAAM7C,GAC9F7pB,YAAa3J,EAAK2J,YAClBC,eAAgB5J,EAAK4J,eACrBoC,oBAAqBhM,EAAKgM;CAUlC,IARKhM,EAAKM,WAAWhY,QAAQk2B,UACzBxe,EAAKkpB,wBAA0B,EAC3BlpB,EAAKtU,UACLsU,EAAKtU,QAAQ,GAAG8M,UAAY,IAGpC69B,EAAgBr2B,EAAKkpB,wBAA0B,EAC/C1uB,EAAUuV,EAAWvV,EAAU3H,EAAmBD,EAAqBoN,EAAKrT,UAAU5G,OAASyU,EAC3FnL,EAAS,EAQT,IAPAmL,EAAUuV,EAAWvV,EAAUnL,EAASmL,EACpCwF,EAAKiK,gBACLzP,IAEAwF,EAAKgM,sBACLhM,EAAK+zB,8BAAgC/zB,EAAKM,WAAWpJ,cAEpD9L,EAAM,EAAGrF,EAAS+Q,EAAK/Q,OAAQqF,EAAMrF,EAAQqF,IAC9CkJ,GAAQ0L,EAAKyzB,cAAc38B,EAAK1L,GAAMoP,EAAS,EAAGuV,EAAWpV,GAA+BJ,GAAiBi5B,EAAWzjB,OAG5Hzb,IAAQ0L,EAAKuzB,UAAUz8B,EAAM08B,EAE7B6C,IACAr2B,EAAK5L,MAAMrD,OAAOuD,GAClBiB,WAAW,WACHyK,EAAKu0B,mBACLv0B,EAAK8d,cAAc9d,EAAKu0B,kBACxBv0B,EAAKu0B,iBAAmB,QAGhCv0B,EAAKipB,wBAA0B,MAE/BjpB,EAAK5L,MAAQD,EAAc6L,EAAK5L,MAAO4L,EAAK3L,MAAOC,EAAMjN,KAAKiB,QAAQykB,WAG9EyoB,qBAAsB,SAAU1+B,EAAM0D,EAASnL,GAAzB,GACHjE,GAAKrF,EAMZsO,EANJC,EAAO,GAAiBk/B,GACpB7pB,YAAatiB,KAAKwkB,kBAClBjC,eAAgBviB,KAAKykB,qBACrBE,oBAAqB3kB,KAAK4kB,0BAElC,IAAI5kB,KAAKoE,cAAe,CAEpB,GADI4I,EAAQhN,KAAKoS,YACbpK,EAAS,EAET,IADAmL,GAAoBrM,EAAeiC,EAAYtB,EAAiBzH,KAAKsF,WAAW5G,OAC3EqF,EAAM,EAAGrF,EAAS+Q,EAAK/Q,OAAQqF,EAAMrF,EAAQqF,IAC9CkJ,GAAQjN,KAAKosC,cAAc38B,EAAK1L,GAAMoP,EAAS,EAAGD,GAAiBi5B,OAGvEl/B,GAAOjN,KAAKksC,UAAUz8B,EAAM08B,EAEhCr/B,GAAcE,EAAM5E,SAAS,SAAU4E,EAAOC,EAAMjN,KAAKiB,QAAQykB,UACjE1lB,KAAK8pB,6BAGbskB,uBAAwB,WAChBpuC,KAAKiB,QAAQmhB,SAAS6sB,iBAAkB,GACxCjvC,KAAK4Z,QAAQrV,KAAK,iBAAiB0lC,OAAOjqC,KAAKiZ,WAAWkF,SAAWne,KAAKiZ,WAAWqE,aAG7FuS,kBAAmB,SAAUxf,EAAQC,GAAlB,GACkCvM,GAazC+M,EACAC,EACAjS,EAfJmJ,EAAOoI,EAAO,GAAGpI,KAAMvJ,EAASuJ,EAAKvJ,OAAawwC,EAAQ5+B,EAAO,GAAGrI,KAAMknC,EAAa9+B,EAAO7M,IAAI8M,GAAS8+B,EAAmBD,EAAWzwC,OAAQ2wC,IACrJ,KAAKtrC,EAAM,EAAGA,EAAMrF,GACXwwC,EAAMnrC,GADaA,IAIpBkE,EAAKlE,GAAK9E,MAAMH,SAChBmJ,EAAKlE,GAAK9E,MAAMH,OAASowC,EAAMnrC,GAAK9E,MAAMH,OAAS,GAG3D,KAAKiF,EAAM,EAAGA,EAAMrF,GACXwwC,EAAMnrC,GADaA,IAIpB+M,EAAgB7I,EAAKlE,GAAKhC,aAC1BgP,EAAgBm+B,EAAMnrC,GAAKhC,aAC3BjD,EAAS,EACTgS,EAAgBC,EAChBjS,EAASgS,EACFA,EAAgBC,IACvBjS,EAASiS,GAEbs+B,EAAQlxC,KAAKW,EAEjB,KAAKiF,EAAM,EAAGA,EAAMqrC,EAAkBrrC,IAClCorC,EAAWprC,GAAK9E,MAAM4H,QAAU,MAEpC,KAAK9C,EAAM,EAAGA,EAAMrF,EAAQqF,IACpBsrC,EAAQtrC,KACRkE,EAAKlE,GAAK9E,MAAMH,OAASowC,EAAMnrC,GAAK9E,MAAMH,OAASuwC,EAAQtrC,GAAO,EAAI,KAG9E,KAAKA,EAAM,EAAGA,EAAMqrC,EAAkBrrC,IAClCorC,EAAWprC,GAAK9E,MAAM4H,QAAU,KAIxCnH,IAAM4vC,YACN5vC,GAAM4vC,WAAWzvC,OAAOigB,GAAK5L,WAE7BxU,GAAM6vC,WACN7vC,GAAM6vC,SAAS1vC,OAAOigB,GAAK5L,WAC3B4L,GAAK5L,UAAUs7B,uBAAyB,SAAUhxB,GA8B9C,QAAS+U,KACDkc,GAAYC,IAAiBhtC,GAC7BuW,EAAWxH,IAAI,SAAUk+B,GACzB12B,EAAWmG,KAAKswB,KAEhB1W,EAAKjgB,UACL42B,KAGR,QAASA,KACLC,EAAK1rC,SAASpD,SAASe,KACvB,IAAIZ,GAAUzD,EAAEqC,UAAWm5B,EAAK/3B,QAAQ4e,KACpCgwB,cAAc,EACdrxB,SAAU,SAAUmvB,GAChBnvB,EAASmD,QACLvC,KAAMuuB,EAAEvuB,KACR0wB,WAAYnC,EAAEoC,QACdvxB,SAAU,GAAMmvB,EAAEoC,QAAUpC,EAAE1Y,WAAa,EAC3CA,WAAY0Y,EAAE1Y,eAI1Bv1B,IAAMswC,QAAQC,QAAQC,EAAOjvC,GAASkvC,OAAO,WACzCP,EAAKzkC,WACNilC,KAAK,SAAU7qB,GACdniB,EAAOmwB,QAAQhO,KAChB8qB,KAAK,SAAUC,GACdltC,EAAOiwB,OAAOid,KAGtB,QAASC,KAAT,GACQR,GAAU92B,EAAWmG,OACrB6V,EAAawa,EAAWx2B,EAAWgc,aAAe,CACtDpzB,GAAK6H,OAAO8mC,EAASjsC,KAAK,OACtBwrC,EAAU9a,EACVhc,EAAWmG,KAAK2wB,EAAU,IAE1B92B,EAAWE,OAAO,SAAUo3B,GAC5Bhd,KApE4B,GA4BhC1xB,GACA6tC,EA5BA1W,EAAOh5B,KACPoD,EAAS,GAAI5F,GAAE41B,SACfna,EAAa+f,EAAK/f,WAClBw2B,EAAWzW,EAAK/3B,QAAQ4e,IAAI4vB,SAC5Be,EAAWxX,EAAKpf,QAAQrV,KAAK,8BAC7BqrC,EAAOpyC,EAAE,SAASiG,KAClBmF,SAAU,WACVke,UACA1J,WAEA8yB,EAAQlX,EAAKpf,QAAQs2B,QAAQzsC,KAC7B3E,OAAQ,OACRD,MAAO,SACRqF,SAAS0rC,EA+DZ,OA9DAM,GAAM3rC,KAAK,mBAAmBd,KAC1B3E,OAAQ,OACRD,MAAO,OACPob,SAAU,YAEdi2B,EAAM3rC,KAAK,4CAA4Cd,KACnD3E,OAAQ,OACRD,MAAO,OACPob,SAAU,YAEdi2B,EAAM3rC,KAAK,sDAAsD4G,SACjE+kC,EAAM3rC,KAAK,kCAAkCd,KAAM+mB,aAAc,IACjExqB,KAAKywC,iBAAiBjyB,GAClB3c,EAAOquC,EAAM3rC,KAAK,8BAA8B2I,QAChDwiC,EAAez2B,EAAWmG,OA0C1BqwB,GACAx2B,EAAWG,KAAK,SAAUm3B,GAC1Bt3B,EAAWmG,KAAK,IAEhBmxB,IAEGntC,EAAOkwB,WAElBxT,GAAK5L,UAAUw8B,SAAW,SAAUlyB,GAWhC,QAAS+U,KACDkc,GAAYC,IAAiBhtC,GAC7BuW,EAAWE,OAAO,SAAUw3B,GAC5B13B,EAAWxH,IAAI,SAAU,WACrBrO,EAAOmwB,QAAQqd,KAEnB33B,EAAWmG,KAAKswB,IAEhBtsC,EAAOmwB,QAAQqd,GAGvB,QAASD,KACL3X,EAAK6X,gBAAiBhyC,MAAOm6B,EAAKpf,QAAQ/a,UAAaiyC,WAAY9X,EAAK/3B,QAAQ4e,IAAIixB,aAAcC,KAAK,SAAUxrB,GAAV,GAC/FwqB,GAAU92B,EAAWmG,OACrB6V,EAAawa,EAAWx2B,EAAWgc,aAAe,EAClD+b,GACA5xB,KAAMmG,EACNuqB,WAAYC,EACZvxB,SAAUuxB,EAAU9a,EACpBA,WAAYA,EAEhBzW,GAASmD,OAAOqvB,GAChBJ,EAAIlnC,OAAOsnC,EAAK5xB,MACZ2wB,EAAU9a,EACVhc,EAAWmG,KAAK2wB,EAAU,GAE1Bxc,MAEL8c,KAAK,SAAUC,GACdltC,EAAOiwB,OAAOid,KAxCA,GAKlBltC,GACA6V,EACAw2B,EAEAmB,EACAlB,EATA1W,EAAOh5B,IACX,OAAIg5B,GAAK/3B,QAAQ4e,IAAIoxB,WAA2C,QAA9BjY,EAAK/3B,QAAQ4e,IAAIoxB,UACxCjY,EAAKwW,uBAAuBhxB,IAEnCpb,EAAS,GAAI5F,GAAE41B,SACfna,EAAa+f,EAAK/f,WAClBw2B,EAAWzW,EAAK/3B,QAAQ4e,IAAI4vB,SAChCzvC,KAAKywC,iBAAiBjyB,GAClBoyB,EAAM,GAAIlxC,IAAMswC,QAAQkB,MACxBxB,EAAez2B,EAAWmG,OAiC1BqwB,GACAx2B,EAAWG,KAAK,SAAUu3B,GAC1B13B,EAAWmG,KAAK,IAEhBuxB,IAEGvtC,EAAOkwB,YAElBxT,GAAK5L,UAAUu8B,iBAAmB,SAAUtd,GAAV,GAQ1Bge,GAPAC,EAAU5zC,EAAE,uEAChB4zC,GAAQtjC,QAAQ9N,KAAK4Z,QAAQs2B,QAAQzsC,KACjCmF,SAAU,WACVwU,IAAK,EACL0J,KAAM,KAEV9mB,KAAK4Z,QAAQlQ,OAAO0nC,GAChBD,EAAK3zC,EAAE,wCAA0C0G,SAASktC,GAASC,kBACnE1gB,KAAM,QACN2gB,WAAY,GACZpzB,IAAK,EACL7U,IAAK,EACLhJ,MAAO,IACRoP,KAAK,oBACR0jB,EAAS3U,SAAS,SAAUjN,GACxB4/B,EAAG9wC,MAAMkR,EAAEiN,YACZ2xB,OAAO,WACNzwC,GAAMia,QAAQy3B,GACdA,EAAQjmC,aAyIpBoI,GAAGg+B,OAAOzxB,IACVvM,GAAGg+B,OAAO74B,KACZjZ,OAAOC,MAAM2C,QACR5C,OAAOC,OACE,kBAAVnC,SAAwBA,OAAO+E,IAAM/E,OAAS,SAAUgF,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.grid.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('util/text-metrics', ['kendo.core'], f);\n}(function () {\n (function ($) {\n window.kendo.util = window.kendo.util || {};\n var LRUCache = kendo.Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var map = this._map;\n var entry = {\n key: key,\n value: value\n };\n map[key] = entry;\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 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 get: function (key) {\n var entry = this._map[key];\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = this._tail;\n entry.newer = null;\n this._tail.newer = entry;\n this._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\n var SPACE = ' ';\n function normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\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 return hash >>> 0;\n }\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var DEFAULT_OPTIONS = { baselineMarkerSize: 1 };\n var defaultMeasureBox;\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;' + 'padding: 0 !important; margin: 0 !important; border: 0 !important;' + 'line-height: normal !important; visibility: hidden !important; white-space: pre!important;';\n }\n var TextMetrics = kendo.Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this.options = $.extend({}, DEFAULT_OPTIONS, options);\n },\n measure: function (text, style, options) {\n if (options === void 0) {\n options = {};\n }\n if (!text) {\n return zeroSize();\n }\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (typeof value !== 'undefined') {\n measureBox.style[key] = value;\n }\n }\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\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 if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n var marker = document.createElement('div');\n marker.style.cssText = 'display: inline-block; vertical-align: baseline;width: ' + this.options.baselineMarkerSize + 'px; height: ' + this.options.baselineMarkerSize + 'px;overflow: hidden;';\n return marker;\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\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 }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.grid', [\n 'kendo.data',\n 'kendo.columnsorter',\n 'kendo.editable',\n 'kendo.window',\n 'kendo.filtermenu',\n 'kendo.columnmenu',\n 'kendo.groupable',\n 'kendo.pager',\n 'kendo.selectable',\n 'kendo.sortable',\n 'kendo.reorderable',\n 'kendo.resizable',\n 'kendo.mobile.actionsheet',\n 'kendo.mobile.pane',\n 'kendo.ooxml',\n 'kendo.excel',\n 'kendo.progressbar',\n 'kendo.pdf'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'grid',\n name: 'Grid',\n category: 'web',\n description: 'The Grid widget displays tabular data and offers rich support for interacting with data,including paging, sorting, grouping, and selection.',\n depends: [\n 'data',\n 'columnsorter'\n ],\n features: [\n {\n id: 'grid-editing',\n name: 'Editing',\n description: 'Support for record editing',\n depends: [\n 'editable',\n 'window'\n ]\n },\n {\n id: 'grid-filtering',\n name: 'Filtering',\n description: 'Support for record filtering',\n depends: ['filtermenu']\n },\n {\n id: 'grid-columnmenu',\n name: 'Column menu',\n description: 'Support for header column menu',\n depends: ['columnmenu']\n },\n {\n id: 'grid-grouping',\n name: 'Grouping',\n description: 'Support for grid grouping',\n depends: ['groupable']\n },\n {\n id: 'grid-filtercell',\n name: 'Row filter',\n description: 'Support for grid header filtering',\n depends: ['filtercell']\n },\n {\n id: 'grid-paging',\n name: 'Paging',\n description: 'Support for grid paging',\n depends: ['pager']\n },\n {\n id: 'grid-selection',\n name: 'Selection',\n description: 'Support for row selection',\n depends: ['selectable']\n },\n {\n id: 'grid-column-reorder',\n name: 'Column reordering',\n description: 'Support for column reordering',\n depends: ['reorderable']\n },\n {\n id: 'grid-column-resize',\n name: 'Column resizing',\n description: 'Support for column resizing',\n depends: ['resizable']\n },\n {\n id: 'grid-mobile',\n name: 'Grid adaptive rendering',\n description: 'Support for adaptive rendering',\n depends: [\n 'mobile.actionsheet',\n 'mobile.pane'\n ]\n },\n {\n id: 'grid-excel-export',\n name: 'Excel export',\n description: 'Export grid data as Excel spreadsheet',\n depends: ['excel']\n },\n {\n id: 'grid-pdf-export',\n name: 'PDF export',\n description: 'Export grid data as PDF',\n depends: [\n 'pdf',\n 'drawing',\n 'progressbar'\n ]\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, DataSource = kendo.data.DataSource, ObservableObject = kendo.data.ObservableObject, tbodySupportsInnerHtml = kendo.support.tbodyInnerHtml, activeElement = kendo._activeElement, Widget = ui.Widget, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, keys = kendo.keys, isPlainObject = $.isPlainObject, extend = $.extend, map = $.map, grep = $.grep, isArray = $.isArray, inArray = $.inArray, push = Array.prototype.push, proxy = $.proxy, isFunction = kendo.isFunction, isEmptyObject = $.isEmptyObject, contains = $.contains, math = Math, PROGRESS = 'progress', ERROR = 'error', DATA_CELL = ':not(.k-group-cell):not(.k-hierarchy-cell):visible', SELECTION_CELL_SELECTOR = 'tbody>tr:not(.k-grouping-row):not(.k-detail-row):not(.k-group-footer) > td:not(.k-group-cell):not(.k-hierarchy-cell)', NAVROW = 'tr:not(.k-footer-template):visible', NAVCELL = ':not(.k-group-cell):not(.k-hierarchy-cell):visible', ITEMROW = 'tr:not(.k-grouping-row):not(.k-detail-row):not(.k-footer-template):not(.k-group-footer):visible', FIRSTITEMROW = ITEMROW + ':first', LASTITEMROW = ITEMROW + ':last', FIRSTNAVITEM = NAVROW + ':first>' + NAVCELL + ':first', HEADERCELLS = 'th.k-header:not(.k-group-cell):not(.k-hierarchy-cell)', NS = '.kendoGrid', EDIT = 'edit', BEFOREEDIT = 'beforeEdit', SAVE = 'save', REMOVE = 'remove', DETAILINIT = 'detailInit', FILTERMENUINIT = 'filterMenuInit', COLUMNMENUINIT = 'columnMenuInit', FILTERMENUOPEN = 'filterMenuOpen', COLUMNMENUOPEN = 'columnMenuOpen', CELLCLOSE = 'cellClose', CHANGE = 'change', COLUMNHIDE = 'columnHide', COLUMNSHOW = 'columnShow', SAVECHANGES = 'saveChanges', DATABOUND = 'dataBound', DETAILEXPAND = 'detailExpand', DETAILCOLLAPSE = 'detailCollapse', ITEM_CHANGE = 'itemchange', PAGE = 'page', PAGING = 'paging', SCROLL = 'scroll', SYNC = 'sync', FOCUSED = 'k-state-focused', FOCUSABLE = ':kendoFocusable', SELECTED = 'k-state-selected', CHECKBOX = 'k-checkbox', CHECKBOXINPUT = 'input[data-role=\\'checkbox\\'].' + CHECKBOX, NORECORDSCLASS = 'k-grid-norecords', COLUMNRESIZE = 'columnResize', COLUMNREORDER = 'columnReorder', COLUMNLOCK = 'columnLock', COLUMNUNLOCK = 'columnUnlock', NAVIGATE = 'navigate', CLICK = 'click', HEIGHT = 'height', TABINDEX = 'tabIndex', FUNCTION = 'function', STRING = 'string', BOTTOM = 'bottom', CONTAINER_FOR = 'container-for', FIELD = 'field', INPUT = 'input', INCELL = 'incell', INLINE = 'inline', UNIQUE_ID = 'uid', DELETECONFIRM = 'Are you sure you want to delete this record?', NORECORDS = 'No records available.', CONFIRMDELETE = 'Delete', CANCELDELETE = 'Cancel', COLLAPSE = 'Collapse', EXPAND = 'Expand', ARIALABEL = 'aria-label', formatRegExp = /(\\}|\\#)/gi, templateHashRegExp = /#/gi, whitespaceRegExp = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]', nonDataCellsRegExp = new RegExp('(^|' + whitespaceRegExp + ')' + '(k-group-cell|k-hierarchy-cell)' + '(' + whitespaceRegExp + '|$)'), filterRowRegExp = new RegExp('(^|' + whitespaceRegExp + ')' + '(k-filter-row)' + '(' + whitespaceRegExp + '|$)'), COMMANDBUTTONTMPL = '# if (iconClass) {#' + '#=text#' + '# } else { #' + '#=text#' + '# } #', SELECTCOLUMNTMPL = '', SELECTCOLUMNHEADERTMPL = '', isRtl = false, browser = kendo.support.browser, isIE7 = browser.msie && browser.version == 7, isIE8 = browser.msie && browser.version == 8;\n var VirtualScrollable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._refreshHandler = proxy(that.refresh, that);\n that.setDataSource(options.dataSource);\n that.wrap();\n },\n setDataSource: function (dataSource) {\n var that = this;\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n }\n that.dataSource = dataSource;\n that.dataSource.bind(CHANGE, that._refreshHandler);\n that.dataSource.options.useRanges = true;\n },\n options: {\n name: 'VirtualScrollable',\n itemHeight: $.noop,\n prefetch: true,\n maxScrollHeight: 250000\n },\n events: [\n PAGING,\n PAGE,\n SCROLL\n ],\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n that.wrapper.add(that.verticalScrollbar).off(NS);\n if (that.drag) {\n that.drag.destroy();\n that.drag = null;\n }\n that.wrapper = that.element = that.verticalScrollbar = null;\n that._refreshHandler = null;\n },\n wrap: function () {\n var that = this, scrollbar = kendo.support.scrollbar() + 1, element = that.element, wrapper;\n element.css({\n width: 'auto',\n overflow: 'hidden'\n }).css(isRtl ? 'padding-left' : 'padding-right', scrollbar);\n that.content = element.children().first();\n wrapper = that.wrapper = that.content.wrap('
').parent().bind('DOMMouseScroll' + NS + ' mousewheel' + NS, proxy(that._wheelScroll, that));\n if (kendo.support.kineticScrollNeeded) {\n that.drag = new kendo.UserEvents(that.wrapper, {\n global: true,\n allowSelection: true,\n start: function (e) {\n e.sender.capture();\n },\n move: function (e) {\n that.verticalScrollbar.scrollTop(that.verticalScrollbar.scrollTop() - e.y.delta);\n wrapper.scrollLeft(wrapper.scrollLeft() - e.x.delta);\n e.preventDefault();\n }\n });\n }\n that.verticalScrollbar = $('
').css({ width: scrollbar }).appendTo(element).bind('scroll' + NS, proxy(that._scroll, that));\n },\n _wheelScroll: function (e) {\n if (e.ctrlKey) {\n return;\n }\n var scrollbar = this.verticalScrollbar, scrollTop = scrollbar.scrollTop(), delta = kendo.wheelDeltaY(e);\n if (delta && !(delta > 0 && scrollTop === 0) && !(delta < 0 && scrollTop + scrollbar[0].clientHeight == scrollbar[0].scrollHeight)) {\n e.preventDefault();\n this.verticalScrollbar.scrollTop(scrollTop + -delta);\n }\n },\n _scroll: function (e) {\n var that = this, delayLoading = !that.options.prefetch, scrollTop = e.currentTarget.scrollTop, dataSource = that.dataSource, rowHeight = that.itemHeight, skip = dataSource.skip() || 0, start = that._rangeStart || skip, height = that.element.innerHeight(), isScrollingUp = !!(that._scrollbarTop && that._scrollbarTop > scrollTop), firstItemIndex = math.max(math.floor(scrollTop / rowHeight), 0), lastItemIndex = math.max(firstItemIndex + math.ceil(height / rowHeight), 0);\n if (that._preventScroll) {\n that._preventScroll = false;\n return;\n }\n that._scrollTop = scrollTop - start * rowHeight;\n that._scrollbarTop = scrollTop;\n that._scrolling = delayLoading;\n if (!that._fetch(firstItemIndex, lastItemIndex, isScrollingUp)) {\n that.wrapper[0].scrollTop = that._scrollTop;\n }\n that.trigger(SCROLL);\n if (delayLoading) {\n if (that._scrollingTimeout) {\n clearTimeout(that._scrollingTimeout);\n }\n that._scrollingTimeout = setTimeout(function () {\n that._scrolling = false;\n that._page(that._rangeStart, that.dataSource.take());\n }, 100);\n }\n },\n scrollToTop: function () {\n this._scrollTo(0);\n },\n scrollToBottom: function () {\n var scrollbar = this.verticalScrollbar;\n this._scrollTo(scrollbar[0].scrollHeight - scrollbar.height());\n },\n _scrollWrapperToTop: function () {\n this.wrapper.scrollTop(0);\n },\n _scrollWrapperToBottom: function () {\n this.wrapper.scrollTop(this.wrapper[0].scrollHeight);\n },\n _scrollTo: function (scrollTop) {\n var that = this;\n var scrollbar = that.verticalScrollbar;\n if (scrollbar.scrollTop() !== scrollTop) {\n that._preventScroll = true;\n }\n that.wrapper.scrollTop(scrollTop);\n that._scrollTop = that.wrapper.scrollTop();\n scrollbar.scrollTop(scrollTop);\n that._scrollbarTop = scrollbar.scrollTop();\n },\n _isScrolledToTop: function () {\n return this.verticalScrollbar.scrollTop() === 0;\n },\n _isScrolledToBottom: function () {\n var scrollbar = this.verticalScrollbar;\n var scrollTop = scrollbar.scrollTop();\n return scrollTop > 0 && scrollTop >= parseInt(scrollbar[0].scrollHeight - scrollbar.height(), 10);\n },\n itemIndex: function (rowIndex) {\n var rangeStart = this._rangeStart || this.dataSource.skip() || 0;\n return rangeStart + rowIndex;\n },\n _isElementVisible: function (element) {\n return this._isElementVisibleInWrapper(element);\n },\n _isElementVisibleInWrapper: function (element) {\n var that = this;\n var wrapper = that.wrapper;\n var offsetTop;\n var halfHeight;\n element = $(element);\n if (element[0] && contains(wrapper[0], element[0])) {\n offsetTop = parseInt(element.position().top, 10);\n halfHeight = element.outerHeight() / 2;\n if ((offsetTop >= 0 || math.abs(offsetTop) <= halfHeight) && offsetTop + halfHeight <= wrapper.height()) {\n return true;\n }\n }\n return false;\n },\n position: function (index) {\n var rangeStart = this._rangeStart || this.dataSource.skip() || 0;\n var pageSize = this.dataSource.pageSize();\n var result;\n if (index > rangeStart) {\n result = index - rangeStart + 1;\n } else {\n result = rangeStart - index - 1;\n }\n return result > pageSize ? pageSize : result;\n },\n scrollIntoView: function (row) {\n var container = this.wrapper[0];\n var containerHeight = container.clientHeight;\n var containerScroll = container.scrollTop;\n var elementOffset = row[0].offsetTop;\n var elementHeight = row[0].offsetHeight;\n if (containerScroll > elementOffset) {\n this.verticalScrollbar[0].scrollTop -= containerHeight / 2;\n } else if (elementOffset + elementHeight >= containerScroll + containerHeight) {\n this.verticalScrollbar[0].scrollTop += containerHeight / 2;\n }\n },\n _fetch: function (firstItemIndex, lastItemIndex, scrollingUp) {\n var that = this, dataSource = that.dataSource, itemHeight = that.itemHeight, take = dataSource.take(), rangeStart = that._rangeStart || dataSource.skip() || 0, currentSkip = math.floor(firstItemIndex / take) * take, fetching = false, prefetchAt = 0.33;\n var scrollbar = that.verticalScrollbar;\n var webkitCorrection = browser.webkit ? 1 : 0;\n if (firstItemIndex < rangeStart) {\n fetching = true;\n rangeStart = math.max(0, lastItemIndex - take);\n that._scrollTop = scrollbar.scrollTop() - rangeStart * itemHeight;\n that._page(rangeStart, take);\n } else if (lastItemIndex >= rangeStart + take && !scrollingUp) {\n fetching = true;\n rangeStart = math.min(firstItemIndex, dataSource.total() - take);\n if (scrollbar.scrollTop() >= scrollbar[0].scrollHeight - scrollbar.height() - webkitCorrection) {\n that._scrollTop = that.wrapper[0].scrollHeight - that.wrapper.height();\n } else {\n that._scrollTop = itemHeight;\n }\n that._page(rangeStart, take);\n } else if (!that._fetching && that.options.prefetch) {\n if (firstItemIndex < currentSkip + take - take * prefetchAt && firstItemIndex > take) {\n dataSource.prefetch(currentSkip - take, take, $.noop);\n }\n if (lastItemIndex > currentSkip + take * prefetchAt) {\n dataSource.prefetch(currentSkip + take, take, $.noop);\n }\n }\n return fetching;\n },\n fetching: function () {\n return this._fetching;\n },\n _page: function (skip, take, callback) {\n var that = this, delayLoading = !that.options.prefetch, dataSource = that.dataSource;\n callback = isFunction(callback) ? callback : $.noop;\n if (that.trigger(PAGING, {\n skip: skip,\n take: take\n })) {\n return;\n }\n clearTimeout(that._timeout);\n that._fetching = true;\n that._rangeStart = skip;\n if (dataSource.inRange(skip, take)) {\n kendo.ui.progress($(that.wrapper).parent(), true);\n dataSource.range(skip, take, function () {\n kendo.ui.progress($(that.wrapper).parent(), false);\n callback();\n that.trigger(PAGE);\n });\n } else {\n if (!delayLoading) {\n kendo.ui.progress(that.wrapper.parent(), true);\n }\n that._timeout = setTimeout(function () {\n if (!that._scrolling) {\n if (delayLoading) {\n kendo.ui.progress(that.wrapper.parent(), true);\n }\n dataSource.range(skip, take, function () {\n kendo.ui.progress(that.wrapper.parent(), false);\n callback();\n that.trigger(PAGE);\n });\n }\n }, 100);\n }\n },\n repaintScrollbar: function (shouldScrollWrapper) {\n var that = this, html = '', maxHeight = that.options.maxScrollHeight, dataSource = that.dataSource, scrollbar = !kendo.support.kineticScrollNeeded ? kendo.support.scrollbar() : 0, wrapperElement = that.wrapper[0], totalHeight, idx, itemHeight;\n var wasScrolledToBottom = that._isScrolledToBottom();\n itemHeight = that.itemHeight = that.options.itemHeight() || 0;\n var addScrollBarHeight = wrapperElement.scrollWidth > wrapperElement.offsetWidth ? scrollbar : 0;\n totalHeight = dataSource.total() * itemHeight + addScrollBarHeight;\n for (idx = 0; idx < math.floor(totalHeight / maxHeight); idx++) {\n html += '
';\n }\n if (totalHeight % maxHeight) {\n html += '
';\n }\n that.verticalScrollbar.html(html);\n if (wasScrolledToBottom && !that._isScrolledToBottom()) {\n that.scrollToBottom();\n }\n if (typeof that._scrollTop !== 'undefined' && !!shouldScrollWrapper) {\n wrapperElement.scrollTop = that._scrollTop;\n }\n },\n refresh: function (e) {\n var that = this, dataSource = that.dataSource, rangeStart = that._rangeStart;\n var action = (e || {}).action;\n var shouldScrollWrapper = that._isScrolledToBottom() || !action || action !== ITEM_CHANGE && action !== REMOVE && action !== SYNC;\n kendo.ui.progress(that.wrapper.parent(), false);\n clearTimeout(that._timeout);\n that.repaintScrollbar(shouldScrollWrapper);\n if (that.drag) {\n that.drag.cancel();\n }\n if (typeof rangeStart !== 'undefined' && !that._fetching) {\n if (!action || action !== SYNC && action !== ITEM_CHANGE) {\n that._rangeStart = dataSource.skip();\n }\n if (dataSource.page() === 1 && (!action || action !== SYNC && action !== ITEM_CHANGE)) {\n that.verticalScrollbar[0].scrollTop = 0;\n }\n }\n that._fetching = false;\n }\n });\n function attrEquals(attrName, attrValue) {\n return '[' + kendo.attr(attrName) + '=' + attrValue + ']';\n }\n function groupCells(count) {\n return new Array(count + 1).join(' ');\n }\n function stringifyAttributes(attributes) {\n var attr, result = ' ';\n if (attributes) {\n if (typeof attributes === STRING) {\n return attributes;\n }\n for (attr in attributes) {\n result += attr + '=\"' + attributes[attr] + '\"';\n }\n }\n return result;\n }\n var defaultCommands = {\n create: {\n text: 'Add new record',\n className: 'k-grid-add',\n iconClass: 'k-icon k-i-plus'\n },\n cancel: {\n text: 'Cancel changes',\n className: 'k-grid-cancel-changes',\n iconClass: 'k-icon k-i-cancel'\n },\n save: {\n text: 'Save changes',\n className: 'k-grid-save-changes',\n iconClass: 'k-icon k-i-check'\n },\n destroy: {\n text: 'Delete',\n className: 'k-grid-delete',\n iconClass: 'k-icon k-i-close'\n },\n edit: {\n text: 'Edit',\n className: 'k-grid-edit',\n iconClass: 'k-icon k-i-edit'\n },\n update: {\n text: 'Update',\n className: 'k-primary k-grid-update',\n iconClass: 'k-icon k-i-check'\n },\n canceledit: {\n text: 'Cancel',\n className: 'k-grid-cancel',\n iconClass: 'k-icon k-i-cancel'\n },\n excel: {\n text: 'Export to Excel',\n className: 'k-grid-excel',\n iconClass: 'k-icon k-i-file-excel'\n },\n pdf: {\n text: 'Export to PDF',\n className: 'k-grid-pdf',\n iconClass: 'k-icon k-i-file-pdf'\n }\n };\n function cursor(context, value) {\n $('th, th .k-grid-filter, th .k-link', context).add(document.body).css('cursor', value);\n }\n function reorder(selector, source, dest, before, count) {\n var sourceIndex = source;\n source = $();\n count = count || 1;\n for (var idx = 0; idx < count; idx++) {\n source = source.add(selector.eq(sourceIndex + idx));\n }\n if (typeof dest == 'number') {\n source[before ? 'insertBefore' : 'insertAfter'](selector.eq(dest));\n } else {\n source.appendTo(dest);\n }\n }\n function elements(lockedContent, content, filter) {\n return $(lockedContent).add(content).find(filter);\n }\n function attachCustomCommandEvent(context, container, commands) {\n var idx, length, command, commandName;\n commands = !isArray(commands) ? [commands] : commands;\n for (idx = 0, length = commands.length; idx < length; idx++) {\n command = commands[idx];\n if (isPlainObject(command) && command.click) {\n commandName = command.name || command.text;\n container.on(CLICK + NS, 'a.k-grid-' + (commandName || '').replace(/\\s/g, ''), { commandName: commandName }, proxy(command.click, context));\n }\n }\n }\n function normalizeColumns(columns, encoded, hide) {\n return map(columns, function (column) {\n column = typeof column === STRING ? { field: column } : column;\n var hidden;\n if (!isVisible(column) || hide) {\n column.attributes = addHiddenStyle(column.attributes);\n column.footerAttributes = addHiddenStyle(column.footerAttributes);\n column.headerAttributes = addHiddenStyle(column.headerAttributes);\n hidden = true;\n }\n if (column.columns) {\n column.columns = normalizeColumns(column.columns, encoded, hidden);\n }\n var uid = kendo.guid();\n column.headerAttributes = extend({ id: uid }, column.headerAttributes);\n return extend({\n encoded: encoded,\n hidden: hidden\n }, column);\n });\n }\n function columnParent(column, columns) {\n var parents = [];\n columnParents(column, columns, parents);\n return parents[parents.length - 1];\n }\n function columnParents(column, columns, parents) {\n parents = parents || [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (column === columns[idx]) {\n return true;\n } else if (columns[idx].columns) {\n var inserted = parents.length;\n parents.push(columns[idx]);\n if (!columnParents(column, columns[idx].columns, parents)) {\n parents.splice(inserted, parents.length - inserted);\n } else {\n return true;\n }\n }\n }\n return false;\n }\n function setColumnVisibility(column, visible) {\n var method = visible ? removeHiddenStyle : addHiddenStyle;\n column.hidden = !visible;\n column.attributes = method(column.attributes);\n column.footerAttributes = method(column.footerAttributes);\n column.headerAttributes = method(column.headerAttributes);\n }\n function isCellVisible() {\n return this.style.display !== 'none';\n }\n function isVisible(column) {\n return visibleColumns([column]).length > 0;\n }\n function visibleColumns(columns) {\n return grep(columns, function (column) {\n var result = !column.hidden;\n if (result && column.columns) {\n result = visibleColumns(column.columns).length > 0;\n }\n return result;\n });\n }\n function toJQuery(elements) {\n return $(elements).map(function () {\n return this.toArray();\n });\n }\n function updateCellRowSpan(cell, columns, sourceLockedColumnsCount) {\n var lockedColumnDepth = depth(lockedColumns(columns));\n var nonLockedColumnDepth = depth(nonLockedColumns(columns));\n var rowSpan = cell.rowSpan;\n if (sourceLockedColumnsCount) {\n if (lockedColumnDepth > nonLockedColumnDepth) {\n cell.rowSpan = rowSpan - (lockedColumnDepth - nonLockedColumnDepth) || 1;\n } else {\n cell.rowSpan = rowSpan + (nonLockedColumnDepth - lockedColumnDepth);\n }\n } else {\n if (lockedColumnDepth > nonLockedColumnDepth) {\n cell.rowSpan = rowSpan + (lockedColumnDepth - nonLockedColumnDepth);\n } else {\n cell.rowSpan = rowSpan - (nonLockedColumnDepth - lockedColumnDepth) || 1;\n }\n }\n }\n function moveCellsBetweenContainers(sources, target, leafs, columns, container, destination, groups) {\n var sourcesDepth = depth(sources);\n var targetDepth = depth([target]);\n if (sourcesDepth > targetDepth) {\n var groupCells = new Array(groups + 1).join(' ');\n var rows = destination.children(':not(.k-filter-row)');\n $(new Array(sourcesDepth - targetDepth + 1).join('' + groupCells + '')).insertAfter(rows.last());\n }\n addRowSpanValue(destination, sourcesDepth - targetDepth);\n moveCells(leafs, columns, container, destination);\n }\n function updateCellIndex(thead, columns, offset) {\n offset = offset || 0;\n var position;\n var cell;\n var allColumns = columns;\n columns = leafColumns(columns);\n var cells = {};\n var rows = thead.find('>tr:not(.k-filter-row)');\n var filter = function () {\n var el = $(this);\n return !el.hasClass('k-group-cell') && !el.hasClass('k-hierarchy-cell');\n };\n for (var idx = 0, length = columns.length; idx < length; idx++) {\n position = columnPosition(columns[idx], allColumns);\n if (!cells[position.row]) {\n cells[position.row] = rows.eq(position.row).find('.k-header').filter(filter);\n }\n cell = cells[position.row].eq(position.cell);\n cell.attr(kendo.attr('index'), offset + idx);\n }\n return columns.length;\n }\n function depth(columns) {\n var result = 1;\n var max = 0;\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n var temp = depth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n }\n function moveCells(leafs, columns, container, destination) {\n var sourcePosition = columnVisiblePosition(leafs[0], columns);\n var ths = container.find('>tr:not(.k-filter-row):eq(' + sourcePosition.row + ')>th.k-header');\n var t = $();\n var sourceIndex = sourcePosition.cell;\n var idx;\n for (idx = 0; idx < leafs.length; idx++) {\n t = t.add(ths.eq(sourceIndex + idx));\n }\n destination.find('>tr:not(.k-filter-row)').eq(sourcePosition.row).append(t);\n var children = [];\n for (idx = 0; idx < leafs.length; idx++) {\n if (leafs[idx].columns) {\n children = children.concat(leafs[idx].columns);\n }\n }\n if (children.length) {\n moveCells(children, columns, container, destination);\n }\n }\n function columnPosition(column, columns, row, cellCounts) {\n var result;\n var idx;\n row = row || 0;\n cellCounts = cellCounts || {};\n cellCounts[row] = cellCounts[row] || 0;\n for (idx = 0; idx < columns.length; idx++) {\n if (columns[idx] == column) {\n result = {\n cell: cellCounts[row],\n row: row\n };\n break;\n } else if (columns[idx].columns) {\n result = columnPosition(column, columns[idx].columns, row + 1, cellCounts);\n if (result) {\n break;\n }\n }\n cellCounts[row]++;\n }\n return result;\n }\n function findParentColumnWithChildren(columns, index, source, rtl) {\n var target;\n var locked = source.locked;\n do {\n target = columns[index];\n index += rtl ? 1 : -1;\n } while (target && index > -1 && index < columns.length && target != source && !target.columns && target.locked == locked);\n return target;\n }\n function findReorderTarget(columns, target, source, before) {\n if (target.columns) {\n target = target.columns;\n return target[before ? 0 : target.length - 1];\n } else {\n var parent = columnParent(target, columns);\n var parentColumns;\n if (parent) {\n parentColumns = parent.columns;\n } else {\n parentColumns = columns;\n }\n var index = inArray(target, parentColumns);\n if (index === 0 && before) {\n index++;\n } else if (index == parentColumns.length - 1 && !before) {\n index--;\n } else if (index > 0 || index === 0 && !before) {\n index += before ? -1 : 1;\n }\n var sourceIndex = inArray(source, parentColumns);\n target = findParentColumnWithChildren(parentColumns, index, source, sourceIndex > index);\n if (target && target != source && target.columns) {\n return findReorderTarget(columns, target, source, before);\n }\n }\n return null;\n }\n function columnVisiblePosition(column, columns, row, cellCounts) {\n var result;\n var idx;\n row = row || 0;\n cellCounts = cellCounts || {};\n cellCounts[row] = cellCounts[row] || 0;\n for (idx = 0; idx < columns.length; idx++) {\n if (columns[idx] == column) {\n result = {\n cell: cellCounts[row],\n row: row\n };\n break;\n } else if (columns[idx].columns) {\n result = columnVisiblePosition(column, columns[idx].columns, row + 1, cellCounts);\n if (result) {\n break;\n }\n }\n if (!columns[idx].hidden) {\n cellCounts[row]++;\n }\n }\n return result;\n }\n function flatColumnsInDomOrder(columns) {\n var result = flatColumns(lockedColumns(columns));\n return result.concat(flatColumns(nonLockedColumns(columns)));\n }\n function targetParentContainerIndex(flatColumns, columns, sourceIndex, targetIndex) {\n var column = flatColumns[sourceIndex];\n var target = flatColumns[targetIndex];\n var parent = columnParent(column, columns);\n columns = parent ? parent.columns : columns;\n return inArray(target, columns);\n }\n function flatColumns(columns) {\n var result = [];\n var children = [];\n for (var idx = 0; idx < columns.length; idx++) {\n result.push(columns[idx]);\n if (columns[idx].columns) {\n children = children.concat(columns[idx].columns);\n }\n }\n if (children.length) {\n result = result.concat(flatColumns(children));\n }\n return result;\n }\n function hiddenLeafColumnsCount(columns) {\n var counter = 0;\n var column;\n for (var idx = 0; idx < columns.length; idx++) {\n column = columns[idx];\n if (column.columns) {\n counter += hiddenLeafColumnsCount(column.columns);\n } else if (column.hidden) {\n counter++;\n }\n }\n return counter;\n }\n function columnsWidth(cols) {\n var colWidth, width = 0;\n for (var idx = 0, length = cols.length; idx < length; idx++) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n width += parseInt(colWidth, 10);\n }\n }\n return width;\n }\n function removeRowSpanValue(container, count) {\n var cells = container.find('tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)');\n var rowSpan;\n for (var idx = 0; idx < cells.length; idx++) {\n rowSpan = cells[idx].rowSpan;\n if (rowSpan > 1) {\n cells[idx].rowSpan = rowSpan - count || 1;\n }\n }\n }\n function addRowSpanValue(container, count) {\n var cells = container.find('tr:not(.k-filter-row) th:not(.k-group-cell,.k-hierarchy-cell)');\n for (var idx = 0; idx < cells.length; idx++) {\n cells[idx].rowSpan += count;\n }\n }\n function removeEmptyRows(container) {\n var rows = container.find('tr:not(.k-filter-row)');\n var emptyRowsCount = rows.filter(function () {\n return !$(this).children().length;\n }).remove().length;\n var cells = rows.find('th:not(.k-group-cell,.k-hierarchy-cell)');\n for (var idx = 0; idx < cells.length; idx++) {\n if (cells[idx].rowSpan > 1) {\n cells[idx].rowSpan -= emptyRowsCount;\n }\n }\n return rows.length - emptyRowsCount;\n }\n function mapColumnToCellRows(columns, cells, rows, rowIndex, offset) {\n var idx, row, length, children = [];\n for (idx = 0, length = columns.length; idx < length; idx++) {\n row = rows[rowIndex] || [];\n row.push(cells.eq(offset + idx));\n rows[rowIndex] = row;\n if (columns[idx].columns) {\n children = children.concat(columns[idx].columns);\n }\n }\n if (children.length) {\n mapColumnToCellRows(children, cells, rows, rowIndex + 1, offset + columns.length);\n }\n }\n function lockedColumns(columns) {\n return grep(columns, function (column) {\n return column.locked;\n });\n }\n function nonLockedColumns(columns) {\n return grep(columns, function (column) {\n return !column.locked;\n });\n }\n function visibleNonLockedColumns(columns) {\n return grep(columns, function (column) {\n return !column.locked && isVisible(column);\n });\n }\n function visibleLockedColumns(columns) {\n return grep(columns, function (column) {\n return column.locked && isVisible(column);\n });\n }\n function visibleLeafColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (columns[idx].hidden) {\n continue;\n }\n if (columns[idx].columns) {\n result = result.concat(visibleLeafColumns(columns[idx].columns));\n } else {\n result.push(columns[idx]);\n }\n }\n return result;\n }\n function leafColumns(columns) {\n var result = [];\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n continue;\n }\n result = result.concat(leafColumns(columns[idx].columns));\n }\n return result;\n }\n function leafDataCells(container) {\n var rows = container.find('>tr:not(.k-filter-row)');\n var filter = function () {\n var el = $(this);\n return !el.hasClass('k-group-cell') && !el.hasClass('k-hierarchy-cell');\n };\n var cells = $();\n if (rows.length > 1) {\n cells = rows.find('th').filter(filter).filter(function () {\n return this.rowSpan > 1;\n });\n }\n cells = cells.add(rows.last().find('th').filter(filter));\n var indexAttr = kendo.attr('index');\n cells.sort(function (a, b) {\n a = $(a);\n b = $(b);\n var indexA = a.attr(indexAttr);\n var indexB = b.attr(indexAttr);\n if (indexA === undefined) {\n indexA = $(a).index();\n }\n if (indexB === undefined) {\n indexB = $(b).index();\n }\n indexA = parseInt(indexA, 10);\n indexB = parseInt(indexB, 10);\n return indexA > indexB ? 1 : indexA < indexB ? -1 : 0;\n });\n return cells;\n }\n function parentColumnsCells(cell) {\n var container = cell.closest('table');\n var result = $().add(cell);\n var row = cell.closest('tr');\n var headerRows = container.find('tr:not(.k-filter-row)');\n var level = headerRows.index(row);\n if (level > 0) {\n var parent = headerRows.eq(level - 1);\n var parentCellsWithChildren = parent.find('th:not(.k-group-cell,.k-hierarchy-cell)').filter(function () {\n return !$(this).attr('rowspan');\n });\n var offset = 0;\n var index = row.find('th:not(.k-group-cell,.k-hierarchy-cell)').index(cell);\n var prevCells = cell.prevAll(':not(.k-group-cell,.k-hierarchy-cell)').filter(function () {\n return this.colSpan > 1;\n });\n for (var idx = 0; idx < prevCells.length; idx++) {\n offset += prevCells[idx].colSpan || 1;\n }\n index += Math.max(offset - 1, 0);\n offset = 0;\n for (idx = 0; idx < parentCellsWithChildren.length; idx++) {\n var parentCell = parentCellsWithChildren.eq(idx);\n if (parentCell.attr('data-colspan')) {\n offset += parentCell[0].getAttribute('data-colspan');\n } else {\n offset += 1;\n }\n if (index >= idx && index < offset) {\n result = parentColumnsCells(parentCell).add(result);\n break;\n }\n }\n }\n return result;\n }\n function childColumnsCells(cell) {\n var container = cell.closest('thead');\n var result = $().add(cell);\n var row = cell.closest('tr');\n var headerRows = container.find('tr:not(.k-filter-row)');\n var level = headerRows.index(row) + cell[0].rowSpan;\n var colSpanAttr = kendo.attr('colspan');\n if (level <= headerRows.length - 1) {\n var child = row.next();\n var prevCells = cell.prevAll(':not(.k-group-cell,.k-hierarchy-cell)');\n var idx;\n prevCells = prevCells.filter(function () {\n return !this.rowSpan || this.rowSpan === 1;\n });\n var offset = 0;\n for (idx = 0; idx < prevCells.length; idx++) {\n offset += parseInt(prevCells.eq(idx).attr(colSpanAttr), 10) || 1;\n }\n var cells = child.find('th:not(.k-group-cell,.k-hierarchy-cell)');\n var colSpan = parseInt(cell.attr(colSpanAttr), 10) || 1;\n idx = 0;\n while (idx < colSpan) {\n child = cells.eq(idx + offset);\n result = result.add(childColumnsCells(child));\n var value = parseInt(child.attr(colSpanAttr), 10);\n if (value > 1) {\n colSpan -= value - 1;\n }\n idx++;\n }\n }\n return result;\n }\n function appendContent(tbody, table, html, empty) {\n var placeholder, tmp = tbody;\n if (empty) {\n tbody.empty();\n }\n if (tbodySupportsInnerHtml) {\n tbody[0].innerHTML = html;\n } else {\n placeholder = document.createElement('div');\n placeholder.innerHTML = '' + html + '
';\n tbody = placeholder.firstChild.firstChild;\n table[0].replaceChild(tbody, tmp[0]);\n tbody = $(tbody);\n }\n return tbody;\n }\n function addHiddenStyle(attr) {\n attr = attr || {};\n var style = attr.style;\n if (!style) {\n style = 'display:none';\n } else {\n style = style.replace(/((.*)?display)(.*)?:([^;]*)/i, '$1:none');\n if (style === attr.style) {\n style = style.replace(/(.*)?/i, 'display:none;$1');\n }\n }\n return extend({}, attr, { style: style });\n }\n function removeHiddenStyle(attr) {\n attr = attr || {};\n var style = attr.style;\n if (style) {\n attr.style = style.replace(/(display\\s*:\\s*none\\s*;?)*/gi, '');\n }\n return attr;\n }\n function normalizeCols(table, visibleColumns, hasDetails, groups) {\n var colgroup = table.find('>colgroup'), width, cols = map(visibleColumns, function (column) {\n width = column.width;\n if (width && parseInt(width, 10) !== 0) {\n return kendo.format('', typeof width === STRING ? width : width + 'px');\n }\n return '';\n });\n if (hasDetails || colgroup.find('.k-hierarchy-col').length) {\n cols.splice(0, 0, '');\n }\n if (colgroup.length) {\n colgroup.remove();\n }\n colgroup = $(new Array(groups + 1).join('') + cols.join(''));\n if (!colgroup.is('colgroup')) {\n colgroup = $('').append(colgroup);\n }\n table.prepend(colgroup);\n if (browser.msie && browser.version == 8) {\n table.css('display', 'inline-table');\n window.setTimeout(function () {\n table.css('display', '');\n }, 1);\n }\n }\n function normalizeHeaderCells(container, columns) {\n var lastIndex = 0;\n var idx, len;\n var th = container.find('th:not(.k-group-cell)');\n for (idx = 0, len = columns.length; idx < len; idx++) {\n if (columns[idx].locked) {\n th.eq(idx).insertBefore(th.eq(lastIndex));\n th = container.find('th:not(.k-group-cell)');\n lastIndex++;\n }\n }\n }\n function convertToObject(array) {\n var result = {}, item, idx, length;\n for (idx = 0, length = array.length; idx < length; idx++) {\n item = array[idx];\n result[item.value] = item.text;\n }\n return result;\n }\n function formatGroupValue(value, format, columnValues, encoded) {\n var isForeignKey = columnValues && columnValues.length && isPlainObject(columnValues[0]) && 'value' in columnValues[0], groupValue = isForeignKey ? convertToObject(columnValues)[value] : value;\n groupValue = groupValue != null ? groupValue : '';\n return format ? kendo.format(format, groupValue) : encoded === false ? groupValue : kendo.htmlEncode(groupValue);\n }\n function setCellVisibility(cells, index, visible) {\n var pad = 0, state, cell = cells[pad];\n while (cell) {\n state = visible ? true : cell.style.display !== 'none';\n if (state && !nonDataCellsRegExp.test(cell.className) && --index < 0) {\n cell.style.display = visible ? '' : 'none';\n break;\n }\n cell = cells[++pad];\n }\n }\n function hideColumnCells(rows, columnIndex) {\n var idx = 0, length = rows.length, cell, row;\n for (; idx < length; idx += 1) {\n row = rows.eq(idx);\n if (row.is('.k-grouping-row,.k-detail-row')) {\n cell = row.children(':not(.k-group-cell):first,.k-detail-cell').last();\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) - 1);\n } else {\n if (row.hasClass('k-grid-edit-row') && (cell = row.children('.k-edit-container')[0])) {\n cell = $(cell);\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) - 1);\n cell.find('col').eq(columnIndex).remove();\n row = cell.find('tr:first');\n }\n setCellVisibility(row[0].cells, columnIndex, false);\n }\n }\n }\n function groupRows(data) {\n var result = [];\n var item;\n for (var idx = 0; idx < data.length; idx++) {\n item = data[idx];\n if (!('field' in item && 'value' in item && 'items' in item)) {\n break;\n }\n result.push(item);\n if (item.hasSubgroups) {\n result = result.concat(groupRows(item.items));\n }\n }\n return result;\n }\n function groupFooters(data) {\n var result = [];\n var item;\n for (var idx = 0; idx < data.length; idx++) {\n item = data[idx];\n if (!('field' in item && 'value' in item && 'items' in item)) {\n break;\n }\n if (item.hasSubgroups) {\n result = result.concat(groupFooters(item.items));\n }\n result.push(item.aggregates);\n }\n return result;\n }\n function showColumnCells(rows, columnIndex) {\n var idx = 0, length = rows.length, cell, row, columns;\n for (; idx < length; idx += 1) {\n row = rows.eq(idx);\n if (row.is('.k-grouping-row,.k-detail-row')) {\n cell = row.children(':not(.k-group-cell):first,.k-detail-cell').last();\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) + 1);\n } else {\n if (row.hasClass('k-grid-edit-row') && (cell = row.children('.k-edit-container')[0])) {\n cell = $(cell);\n cell.attr('colspan', parseInt(cell.attr('colspan'), 10) + 1);\n normalizeCols(cell.find('>form>table'), visibleColumns(columns), false, 0);\n row = cell.find('tr:first');\n }\n setCellVisibility(row[0].cells, columnIndex, true);\n }\n }\n }\n function updateColspan(toAdd, toRemove, num) {\n num = num || 1;\n var item, idx, length;\n for (idx = 0, length = toAdd.length; idx < length; idx++) {\n item = toAdd.eq(idx).children().last();\n item.attr('colspan', parseInt(item.attr('colspan'), 10) + num);\n item = toRemove.eq(idx).children().last();\n item.attr('colspan', parseInt(item.attr('colspan'), 10) - num);\n }\n }\n function tableWidth(table) {\n var idx, length, width = 0;\n var cols = table.find('>colgroup>col');\n for (idx = 0, length = cols.length; idx < length; idx += 1) {\n width += parseInt(cols[idx].style.width, 10);\n }\n return width;\n }\n var Grid = kendo.ui.DataBoundWidget.extend({\n init: function (element, options, events) {\n var that = this;\n options = isArray(options) ? { dataSource: options } : options;\n Widget.fn.init.call(that, element, options);\n if (events) {\n that._events = events;\n }\n isRtl = kendo.support.isRtl(element);\n that._element();\n that._aria();\n that._columns(that.options.columns);\n that._dataSource();\n that._tbody();\n that._pageable();\n that._thead();\n that._groupable();\n that._toolbar();\n that._setContentHeight();\n that._templates();\n that._navigatable();\n that._selectable();\n that._clipboard();\n that._details();\n that._editable();\n that._attachCustomCommandsEvent();\n that._minScreenSupport();\n if (that.options.autoBind) {\n that.dataSource.fetch();\n } else {\n that._group = that._groups() > 0;\n that._footer();\n }\n if (that.lockedContent) {\n that.wrapper.addClass('k-grid-lockedcolumns');\n that._resizeHandler = function () {\n that.resize();\n };\n $(window).on('resize' + NS, that._resizeHandler);\n }\n kendo.notify(that);\n },\n events: [\n CHANGE,\n 'dataBinding',\n 'cancel',\n DATABOUND,\n DETAILEXPAND,\n DETAILCOLLAPSE,\n DETAILINIT,\n FILTERMENUINIT,\n FILTERMENUOPEN,\n COLUMNMENUINIT,\n COLUMNMENUOPEN,\n EDIT,\n BEFOREEDIT,\n SAVE,\n REMOVE,\n SAVECHANGES,\n CELLCLOSE,\n COLUMNRESIZE,\n COLUMNREORDER,\n COLUMNSHOW,\n COLUMNHIDE,\n COLUMNLOCK,\n COLUMNUNLOCK,\n NAVIGATE,\n 'page',\n 'sort',\n 'filter',\n 'group',\n 'groupExpand',\n 'groupCollapse'\n ],\n setDataSource: function (dataSource) {\n var that = this;\n var scrollable = that.options.scrollable;\n that.options.dataSource = dataSource;\n that._dataSource();\n that._pageable();\n that._thead();\n if (scrollable) {\n if (scrollable.virtual) {\n that.content.find('>.k-virtual-scrollable-wrap').scrollLeft(0);\n } else {\n that.content.scrollLeft(0);\n }\n }\n if (that.options.groupable) {\n that._groupable();\n }\n if (that.virtualScrollable) {\n that.virtualScrollable.setDataSource(that.options.dataSource);\n }\n if (that.options.navigatable) {\n that._navigatable();\n }\n if (that.options.selectable) {\n that._selectable();\n }\n if (that.options.autoBind) {\n dataSource.fetch();\n }\n },\n options: {\n name: 'Grid',\n columns: [],\n toolbar: null,\n autoBind: true,\n filterable: false,\n scrollable: true,\n sortable: false,\n selectable: false,\n allowCopy: false,\n navigatable: false,\n pageable: false,\n persistSelection: false,\n editable: false,\n groupable: false,\n rowTemplate: '',\n altRowTemplate: '',\n noRecords: false,\n dataSource: {},\n height: null,\n resizable: false,\n reorderable: false,\n columnMenu: false,\n detailTemplate: null,\n columnResizeHandleWidth: 3,\n mobile: '',\n messages: {\n editable: {\n cancelDelete: CANCELDELETE,\n confirmation: DELETECONFIRM,\n confirmDelete: CONFIRMDELETE\n },\n commands: {\n create: defaultCommands.create.text,\n cancel: defaultCommands.cancel.text,\n save: defaultCommands.save.text,\n destroy: defaultCommands.destroy.text,\n edit: defaultCommands.edit.text,\n update: defaultCommands.update.text,\n canceledit: defaultCommands.canceledit.text,\n excel: defaultCommands.excel.text,\n pdf: defaultCommands.pdf.text\n },\n noRecords: NORECORDS,\n expandCollapseColumnHeader: ''\n }\n },\n destroy: function () {\n var that = this, element;\n that._angularItems('cleanup');\n that._destroyColumnAttachments();\n Widget.fn.destroy.call(that);\n this._navigatableTables = null;\n if (that._resizeHandler) {\n $(window).off('resize' + NS, that._resizeHandler);\n }\n if (that.pager && that.pager.element) {\n that.pager.destroy();\n }\n that.pager = null;\n if (that.groupable && that.groupable.element) {\n that.groupable.element.kendoGroupable('destroy');\n }\n that.groupable = null;\n if (that.options.reorderable) {\n that.wrapper.data('kendoReorderable').destroy();\n }\n if (that.selectable && that.selectable.element) {\n that.selectable.destroy();\n that.clearArea();\n if (that.options.persistSelection === true) {\n that._selectedIds = null;\n }\n if (that.copyHandler) {\n that.wrapper.off('keydown', that.copyHandler);\n that.unbind(that.copyHandler);\n }\n if (that.updateClipBoardState) {\n that.unbind(that.updateClipBoardState);\n that.updateClipBoardState = null;\n }\n if (that.clearAreaHandler) {\n that.wrapper.off('keyup', that.clearAreaHandler);\n }\n }\n that.selectable = null;\n if (that.resizable) {\n that.resizable.destroy();\n if (that._resizeUserEvents) {\n if (that._resizeHandleDocumentClickHandler) {\n $(document).off('click', that._resizeHandleDocumentClickHandler);\n }\n that._resizeUserEvents.destroy();\n that._resizeUserEvents = null;\n }\n that.resizable = null;\n }\n that._destroyVirtualScrollable();\n that._destroyEditable();\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler).unbind(PROGRESS, that._progressHandler).unbind(ERROR, that._errorHandler);\n that._refreshHandler = that._progressHandler = that._errorHandler = null;\n }\n element = that.element.add(that.wrapper).add(that.table).add(that.thead).add(that.wrapper.find('>.k-grid-toolbar'));\n if (that.content) {\n element = element.add(that.content).add(that.content.find('>.k-virtual-scrollable-wrap'));\n }\n if (that.lockedHeader) {\n that._removeLockedContainers();\n }\n if (that.pane) {\n that.pane.destroy();\n }\n if (that.minScreenResizeHandler) {\n $(window).off('resize', that.minScreenResizeHandler);\n }\n if (that._draggableInstance && that._draggableInstance.element) {\n that._draggableInstance.destroy();\n }\n that._draggableInstance = null;\n element.off(NS);\n kendo.destroy(that.wrapper);\n that.rowTemplate = that.altRowTemplate = that.lockedRowTemplate = that.lockedAltRowTemplate = that.detailTemplate = that.footerTemplate = that.groupFooterTemplate = that.lockedGroupFooterTemplate = that.noRecordsTemplate = null;\n that.scrollables = that.thead = that.tbody = that.element = that.table = that.content = that.footer = that.wrapper = that.lockedTable = that.lockedContent = that.lockedHeader = that.lockedFooter = that._groupableClickHandler = that._groupRows = that._setContentWidthHandler = null;\n },\n getOptions: function () {\n var options = this.options;\n options.dataSource = null;\n var result = extend(true, {}, this.options);\n result.columns = kendo.deepExtend([], this.columns);\n var dataSource = this.dataSource;\n var initialData = dataSource.options.data && dataSource._data;\n dataSource.options.data = null;\n result.dataSource = $.extend(true, {}, dataSource.options);\n dataSource.options.data = initialData;\n result.dataSource.data = initialData;\n result.dataSource.page = dataSource.page();\n result.dataSource.filter = dataSource.filter();\n result.dataSource.pageSize = dataSource.pageSize();\n result.dataSource.sort = dataSource.sort();\n result.dataSource.group = dataSource.group();\n result.dataSource.aggregate = dataSource.aggregate();\n if (result.dataSource.transport) {\n result.dataSource.transport.dataSource = null;\n }\n if (result.pageable && result.pageable.pageSize) {\n result.pageable.pageSize = dataSource.pageSize();\n }\n result.$angular = undefined;\n return result;\n },\n setOptions: function (options) {\n var currentOptions = this.getOptions();\n kendo.deepExtend(currentOptions, options);\n if (!options.dataSource) {\n currentOptions.dataSource = this.dataSource;\n }\n var wrapper = this.wrapper;\n var events = this._events;\n var element = this.element;\n this.destroy();\n this.options = null;\n if (this._isMobile) {\n var mobileWrapper = wrapper.closest(kendo.roleSelector('pane')).parent();\n mobileWrapper.after(wrapper);\n mobileWrapper.remove();\n wrapper.removeClass('k-grid-mobile');\n }\n if (wrapper[0] !== element[0]) {\n wrapper.before(element);\n wrapper.remove();\n }\n element.empty();\n this.init(element, currentOptions, events);\n this._setEvents(currentOptions);\n },\n items: function () {\n if (this.lockedContent) {\n return this._items(this.tbody).add(this._items(this.lockedTable.children('tbody')));\n } else {\n return this._items(this.tbody);\n }\n },\n _items: function (container) {\n return container.children().filter(function () {\n var tr = $(this);\n return !tr.hasClass('k-grouping-row') && !tr.hasClass('k-detail-row') && !tr.hasClass('k-group-footer');\n });\n },\n dataItems: function () {\n var dataItems = kendo.ui.DataBoundWidget.fn.dataItems.call(this);\n if (this.lockedContent) {\n var n = dataItems.length, tmp = new Array(2 * n);\n for (var i = n; --i >= 0;) {\n tmp[i] = tmp[i + n] = dataItems[i];\n }\n dataItems = tmp;\n }\n return dataItems;\n },\n _destroyColumnAttachments: function () {\n var that = this;\n that.resizeHandle = null;\n if (!that.thead) {\n return;\n }\n this.angular('cleanup', function () {\n return { elements: that.thead.get() };\n });\n that.thead.add(that.lockedHeader).find('th').each(function () {\n var th = $(this), filterMenu = th.data('kendoFilterMenu'), sortable = th.data('kendoColumnSorter'), columnMenu = th.data('kendoColumnMenu');\n if (filterMenu) {\n filterMenu.destroy();\n }\n if (sortable) {\n sortable.destroy();\n }\n if (columnMenu) {\n columnMenu.destroy();\n }\n });\n },\n _attachCustomCommandsEvent: function () {\n var that = this, columns = leafColumns(that.columns || []), command, idx, length;\n for (idx = 0, length = columns.length; idx < length; idx++) {\n command = columns[idx].command;\n if (command) {\n attachCustomCommandEvent(that, that.wrapper, command);\n }\n }\n },\n _aria: function () {\n var id = this.element.attr('id') || 'aria';\n if (id) {\n this._cellId = id + '_active_cell';\n }\n },\n _element: function () {\n var that = this, table = that.element;\n if (!table.is('table')) {\n if (that.options.scrollable) {\n table = that.element.find('> .k-grid-content > table');\n } else {\n table = that.element.children('table');\n }\n if (!table.length) {\n table = $('').appendTo(that.element);\n }\n }\n if (isIE7) {\n table.attr('cellspacing', 0);\n }\n that.table = table.attr('role', that._hasDetails() ? 'treegrid' : 'grid');\n that._wrapper();\n },\n _createResizeHandle: function (container, th) {\n var that = this;\n var indicatorWidth = that.options.columnResizeHandleWidth;\n var scrollable = that.options.scrollable;\n var resizeHandle = that.resizeHandle;\n var groups = this._groups();\n var left;\n if (resizeHandle && that.lockedContent && resizeHandle.data('th')[0] !== th[0]) {\n resizeHandle.off(NS).remove();\n resizeHandle = null;\n }\n if (!resizeHandle) {\n resizeHandle = that.resizeHandle = $('
');\n container.append(resizeHandle);\n }\n if (!isRtl) {\n left = th[0].offsetWidth;\n var cells = leafDataCells(th.closest('thead')).filter(':visible');\n for (var idx = 0; idx < cells.length; idx++) {\n if (cells[idx] == th[0]) {\n break;\n }\n left += cells[idx].offsetWidth;\n }\n if (groups > 0) {\n left += outerWidth(container.find('.k-group-cell:first')) * groups;\n }\n if (that._hasDetails()) {\n left += outerWidth(container.find('.k-hierarchy-cell:first'));\n }\n } else {\n left = th.position().left;\n if (scrollable) {\n var headerWrap = th.closest('.k-grid-header-wrap, .k-grid-header-locked'), ieCorrection = browser.msie ? headerWrap.scrollLeft() : 0, webkitCorrection = browser.webkit ? headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - headerWrap.scrollLeft() : 0, firefoxCorrection = browser.mozilla ? headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - (headerWrap[0].scrollWidth - headerWrap[0].offsetWidth - headerWrap.scrollLeft()) : 0;\n left -= webkitCorrection - firefoxCorrection + ieCorrection;\n }\n }\n resizeHandle.css({\n top: th.position().top,\n left: left - indicatorWidth,\n height: outerHeight(th),\n width: indicatorWidth * 3\n }).data('th', th).show();\n resizeHandle.off('dblclick' + NS).on('dblclick' + NS, function () {\n that._autoFitLeafColumn(th.data('index'));\n });\n },\n _positionColumnResizeHandle: function () {\n var that = this, indicatorWidth = that.options.columnResizeHandleWidth, lockedHead = that.lockedHeader ? that.lockedHeader.find('thead:first') : $();\n that.thead.add(lockedHead).on('mousemove' + NS, 'th', function (e) {\n var th = $(this);\n if (th.hasClass('k-group-cell') || th.hasClass('k-hierarchy-cell')) {\n return;\n }\n function getPageZoomStyle() {\n var docZoom = parseFloat($(document.documentElement).css('zoom'));\n if (isNaN(docZoom)) {\n docZoom = 1;\n }\n var bodyZoom = parseFloat($(document.body).css('zoom'));\n if (isNaN(bodyZoom)) {\n bodyZoom = 1;\n }\n return docZoom * bodyZoom;\n }\n var clientX = e.clientX / getPageZoomStyle(), winScrollLeft = $(window).scrollLeft(), position = th.offset().left + (!isRtl ? this.offsetWidth : 0);\n if (clientX + winScrollLeft > position - indicatorWidth && clientX + winScrollLeft < position + indicatorWidth) {\n that._createResizeHandle(th.closest('div'), th);\n } else if (that.resizeHandle) {\n that.resizeHandle.hide();\n } else {\n cursor(that.wrapper, '');\n }\n });\n },\n _resizeHandleDocumentClick: function (e) {\n if ($(e.target).closest('.k-column-active').length) {\n return;\n }\n $(document).off(e);\n this._hideResizeHandle();\n },\n _hideResizeHandle: function () {\n if (this.resizeHandle) {\n this.resizeHandle.data('th').removeClass('k-column-active');\n if (this.lockedContent && !this._isMobile) {\n this.resizeHandle.off(NS).remove();\n this.resizeHandle = null;\n } else {\n this.resizeHandle.hide();\n }\n }\n },\n _positionColumnResizeHandleTouch: function () {\n var that = this, lockedHead = that.lockedHeader ? that.lockedHeader.find('thead:first') : $();\n that._resizeUserEvents = new kendo.UserEvents(lockedHead.add(that.thead), {\n filter: 'th:not(.k-group-cell):not(.k-hierarchy-cell)',\n threshold: 10,\n hold: function (e) {\n var th = $(e.target);\n e.preventDefault();\n th.addClass('k-column-active');\n that._createResizeHandle(th.closest('div'), th);\n if (!that._resizeHandleDocumentClickHandler) {\n that._resizeHandleDocumentClickHandler = proxy(that._resizeHandleDocumentClick, that);\n }\n $(document).on('click', that._resizeHandleDocumentClickHandler);\n }\n });\n },\n _resizable: function () {\n var that = this, options = that.options, container, columnStart, columnWidth, columnMinWidth, gridWidth, isMobile = this._isMobile, scrollbar = !kendo.support.mobileOS ? kendo.support.scrollbar() : 0, isLocked, col, th;\n if (options.resizable) {\n container = options.scrollable ? that.wrapper.find('.k-grid-header-wrap:first') : that.wrapper;\n if (isMobile) {\n that._positionColumnResizeHandleTouch(container);\n } else {\n that._positionColumnResizeHandle(container);\n }\n if (that.resizable) {\n that.resizable.destroy();\n }\n that.resizable = new ui.Resizable(container.add(that.lockedHeader), {\n handle: (!!options.scrollable ? '' : '>') + '.k-resize-handle',\n hint: function (handle) {\n return $('
').css({ height: outerHeight(handle.data('th')) + that.tbody.attr('clientHeight') });\n },\n start: function (e) {\n th = $(e.currentTarget).data('th');\n if (isMobile) {\n that._hideResizeHandle();\n }\n var header = th.closest('table'), index = $.inArray(th[0], leafDataCells(th.closest('thead')).filter(':visible'));\n isLocked = header.parent().hasClass('k-grid-header-locked');\n var contentTable = isLocked ? that.lockedTable : that.table, footer = that.footer || $();\n if (that.footer && that.lockedContent) {\n footer = isLocked ? that.footer.children('.k-grid-footer-locked') : that.footer.children('.k-grid-footer-wrap');\n }\n cursor(that.wrapper, 'col-resize');\n if (options.scrollable) {\n col = header.find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')').add(contentTable.children('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')')).add(footer.find('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')'));\n } else {\n col = contentTable.children('colgroup').find('col:not(.k-group-col):not(.k-hierarchy-col):eq(' + index + ')');\n }\n columnStart = e.x.location;\n columnWidth = outerWidth(th);\n columnMinWidth = leafColumns(that.columns)[index].minResizableWidth || 10;\n gridWidth = isLocked ? outerWidth(contentTable.children('tbody')) : outerWidth(that.tbody);\n if (browser.webkit) {\n that.wrapper.addClass('k-grid-column-resizing');\n }\n },\n resize: function (e) {\n var rtlMultiplier = isRtl ? -1 : 1, currentWidth = columnWidth + e.x.location * rtlMultiplier - columnStart * rtlMultiplier;\n if (options.scrollable) {\n var footer;\n if (isLocked && that.lockedFooter) {\n footer = that.lockedFooter.children('table');\n } else if (that.footer) {\n footer = that.footer.find('>.k-grid-footer-wrap>table');\n }\n if (!footer || !footer[0]) {\n footer = $();\n }\n var header = th.closest('table');\n var contentTable = isLocked ? that.lockedTable : that.table;\n var constrain = false;\n var totalWidth = that.wrapper.width() - scrollbar;\n var width = currentWidth;\n if (isLocked && gridWidth - columnWidth + width > totalWidth) {\n width = columnWidth + (totalWidth - gridWidth - scrollbar * 2);\n if (width < 0) {\n width = currentWidth;\n }\n constrain = true;\n }\n if (width > 10 && width >= columnMinWidth) {\n col.css('width', width);\n if (gridWidth) {\n if (constrain) {\n width = totalWidth - scrollbar * 2;\n } else {\n width = gridWidth + e.x.location * rtlMultiplier - columnStart * rtlMultiplier;\n }\n contentTable.add(header).add(footer).css('width', width);\n if (!isLocked) {\n that._footerWidth = width;\n }\n }\n }\n } else if (currentWidth > 10 && currentWidth >= columnMinWidth) {\n col.css('width', currentWidth);\n }\n },\n resizeend: function () {\n var newWidth = outerWidth(th), column, header;\n cursor(that.wrapper, '');\n if (browser.webkit) {\n that.wrapper.removeClass('k-grid-column-resizing');\n }\n if (columnWidth != newWidth) {\n header = that.lockedHeader ? that.lockedHeader.find('thead:first tr:first').add(that.thead.find('tr:first')) : th.parent();\n var index = th.attr(kendo.attr('index'));\n if (!index) {\n index = header.find('th:not(.k-group-cell):not(.k-hierarchy-cell)').index(th);\n }\n column = leafColumns(that.columns)[index];\n column.width = newWidth;\n that.trigger(COLUMNRESIZE, {\n column: column,\n oldWidth: columnWidth,\n newWidth: newWidth\n });\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n }\n that._hideResizeHandle();\n th = null;\n }\n });\n }\n },\n _draggable: function () {\n var that = this;\n if (that.options.reorderable) {\n if (that._draggableInstance) {\n that._draggableInstance.destroy();\n }\n var header = that.wrapper.children('.k-grid-header');\n that._draggableInstance = that.wrapper.kendoDraggable({\n group: kendo.guid(),\n autoScroll: true,\n filter: that.content ? '.k-grid-header:first ' + HEADERCELLS : 'table:first>.k-grid-header ' + HEADERCELLS,\n dragstart: function () {\n header.children('.k-grid-header-wrap').unbind('scroll' + NS + 'scrolling').bind('scroll' + NS + 'scrolling', function (e) {\n if (that.virtualScrollable) {\n that.content.find('>.k-virtual-scrollable-wrap').scrollLeft(this.scrollLeft);\n } else {\n that.scrollables.not(e.currentTarget).scrollLeft(this.scrollLeft);\n }\n });\n },\n dragend: function () {\n header.children('.k-grid-header-wrap').unbind('scroll' + NS + 'scrolling');\n },\n drag: function () {\n that._hideResizeHandle();\n },\n hint: function (target) {\n var title = target.attr(kendo.attr('title'));\n if (title) {\n title = kendo.htmlEncode(title);\n }\n return $('
').css({\n width: target.width(),\n paddingLeft: target.css('paddingLeft'),\n paddingRight: target.css('paddingRight'),\n lineHeight: target.height() + 'px',\n paddingTop: target.css('paddingTop'),\n paddingBottom: target.css('paddingBottom')\n }).html(title || target.attr(kendo.attr('field')) || target.text()).prepend('');\n }\n }).data('kendoDraggable');\n }\n },\n _reorderable: function () {\n var that = this;\n if (that.options.reorderable) {\n if (that.wrapper.data('kendoReorderable')) {\n that.wrapper.data('kendoReorderable').destroy();\n }\n that.wrapper.kendoReorderable({\n draggable: that._draggableInstance,\n dragOverContainers: function (sourceIndex, targetIndex) {\n var columns = flatColumnsInDomOrder(that.columns);\n return columns[sourceIndex].lockable !== false && targetParentContainerIndex(columns, that.columns, sourceIndex, targetIndex) > -1;\n },\n inSameContainer: function (e) {\n return $(e.source).parent()[0] === $(e.target).parent()[0] && targetParentContainerIndex(flatColumnsInDomOrder(that.columns), that.columns, e.sourceIndex, e.targetIndex) > -1;\n },\n change: function (e) {\n var columns = flatColumnsInDomOrder(that.columns);\n var column = columns[e.oldIndex];\n var newIndex = targetParentContainerIndex(columns, that.columns, e.oldIndex, e.newIndex);\n that.trigger(COLUMNREORDER, {\n newIndex: newIndex,\n oldIndex: inArray(column, columns),\n column: column\n });\n that.reorderColumn(newIndex, column, e.position === 'before');\n }\n });\n }\n },\n _reorderHeader: function (sources, target, before) {\n var that = this;\n var sourcePosition = columnPosition(sources[0], that.columns);\n var destPosition = columnPosition(target, that.columns);\n var leafs = [];\n for (var idx = 0; idx < sources.length; idx++) {\n if (sources[idx].columns) {\n leafs = leafs.concat(sources[idx].columns);\n }\n }\n var ths = elements(that.lockedHeader, that.thead, 'tr:eq(' + sourcePosition.row + ')>th.k-header:not(.k-group-cell,.k-hierarchy-cell)');\n var sourceLockedColumns = lockedColumns(sources).length;\n var targetLockedColumns = lockedColumns([target]).length;\n if (leafs.length) {\n if (sourceLockedColumns > 0 && targetLockedColumns === 0) {\n moveCellsBetweenContainers(sources, target, leafs, that.columns, that.lockedHeader.find('thead'), that.thead, this._groups());\n } else if (sourceLockedColumns === 0 && targetLockedColumns > 0) {\n moveCellsBetweenContainers(sources, target, leafs, that.columns, that.thead, that.lockedHeader.find('thead'), this._groups());\n }\n if (target.columns || sourcePosition.cell - destPosition.cell > 1 || destPosition.cell - sourcePosition.cell > 1) {\n target = findReorderTarget(that.columns, target, sources[0], before);\n if (target) {\n that._reorderHeader(leafs, target, before);\n }\n }\n } else if (sourceLockedColumns !== targetLockedColumns) {\n updateCellRowSpan(ths[sourcePosition.cell], that.columns, sourceLockedColumns);\n }\n reorder(ths, sourcePosition.cell, destPosition.cell, before, sources.length);\n },\n _reorderContent: function (sources, destination, before) {\n var that = this;\n var lockedRows = $();\n var source = sources[0];\n var visibleSources = visibleColumns(sources);\n var sourceIndex = inArray(source, leafColumns(that.columns));\n var destIndex = inArray(destination, leafColumns(that.columns));\n var colSourceIndex = inArray(source, visibleLeafColumns(that.columns));\n var colDest = inArray(destination, visibleLeafColumns(that.columns));\n var lockedCount = lockedColumns(that.columns).length;\n var isLocked = !!destination.locked;\n var footer = that.footer || that.wrapper.find('.k-grid-footer');\n var headerCol, footerCol;\n headerCol = footerCol = colDest;\n if (destination.hidden) {\n if (isLocked) {\n colDest = that.lockedTable.find('colgroup');\n headerCol = that.lockedHeader.find('colgroup');\n footerCol = $(that.lockedFooter).find('>table>colgroup');\n } else {\n colDest = that.tbody.prev();\n headerCol = that.thead.prev();\n footerCol = footer.find('.k-grid-footer-wrap').find('>table>colgroup');\n }\n }\n if (that._hasFilterRow()) {\n reorder(that.wrapper.find('.k-filter-row th:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n reorder(elements(that.lockedHeader, that.thead.prev(), 'col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, headerCol, before, visibleSources.length);\n if (that.options.scrollable) {\n reorder(elements(that.lockedTable, that.tbody.prev(), 'col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, colDest, before, visibleSources.length);\n }\n if (footer && footer.length) {\n reorder(elements(that.lockedFooter, footer.find('.k-grid-footer-wrap'), '>table>colgroup>col:not(.k-group-col,.k-hierarchy-col)'), colSourceIndex, footerCol, before, visibleSources.length);\n reorder(footer.find('.k-footer-template>td:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n var rows = that.tbody.children(':not(.k-grouping-row,.k-detail-row)');\n if (that.lockedTable) {\n if (lockedCount > destIndex) {\n if (lockedCount <= sourceIndex) {\n updateColspan(that.lockedTable.find('>tbody>tr.k-grouping-row'), that.table.find('>tbody>tr.k-grouping-row'), sources.length);\n }\n } else if (lockedCount > sourceIndex) {\n updateColspan(that.table.find('>tbody>tr.k-grouping-row'), that.lockedTable.find('>tbody>tr.k-grouping-row'), sources.length);\n }\n lockedRows = that.lockedTable.find('>tbody>tr:not(.k-grouping-row,.k-detail-row)');\n }\n for (var idx = 0, length = rows.length; idx < length; idx += 1) {\n reorder(elements(lockedRows[idx], rows[idx], '>td:not(.k-group-cell,.k-hierarchy-cell)'), sourceIndex, destIndex, before, sources.length);\n }\n },\n _autoFitLeafColumn: function (leafIndex) {\n this.autoFitColumn(leafColumns(this.columns)[leafIndex]);\n },\n autoFitColumn: function (column) {\n var that = this, options = that.options, columns = that.columns, index, th, headerTable, isLocked, visibleLocked = that.lockedHeader ? leafDataCells(that.lockedHeader.find('>table>thead')).filter(isCellVisible).length : 0, col, contentDiv, scrollLeft, notGroupOrHierarchyCol = 'col:not(.k-group-col):not(.k-hierarchy-col)', notGroupOrHierarchyVisibleCell = 'td:visible:not(.k-group-cell):not(.k-hierarchy-cell)';\n if (typeof column == 'number') {\n column = columns[column];\n } else if (isPlainObject(column)) {\n column = grep(flatColumns(columns), function (item) {\n return item === column;\n })[0];\n } else {\n column = grep(flatColumns(columns), function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || !isVisible(column)) {\n return;\n }\n index = inArray(column, leafColumns(columns));\n isLocked = column.locked;\n if (isLocked) {\n headerTable = that.lockedHeader.children('table');\n } else {\n headerTable = that.thead.parent();\n }\n th = headerTable.find('[data-index=\\'' + index + '\\']');\n var contentTable = isLocked ? that.lockedTable : that.table, footer = that.footer || $();\n if (that.footer && that.lockedContent) {\n footer = isLocked ? that.footer.children('.k-grid-footer-locked') : that.footer.children('.k-grid-footer-wrap');\n }\n var footerTable = footer.find('table').first();\n if (that.lockedHeader && !isLocked) {\n index -= visibleLocked;\n }\n for (var j = 0; j < columns.length; j++) {\n if (columns[j] === column) {\n break;\n } else {\n if (columns[j].hidden) {\n index--;\n }\n }\n }\n if (options.scrollable) {\n col = headerTable.find(notGroupOrHierarchyCol).eq(index).add(contentTable.children('colgroup').find(notGroupOrHierarchyCol).eq(index)).add(footerTable.find('colgroup').find(notGroupOrHierarchyCol).eq(index));\n if (!isLocked) {\n contentDiv = contentTable.parent();\n scrollLeft = contentDiv.scrollLeft();\n }\n } else {\n col = contentTable.children('colgroup').find(notGroupOrHierarchyCol).eq(index);\n }\n var tables = headerTable.add(contentTable).add(footerTable);\n var oldColumnWidth = outerWidth(th);\n col.width('');\n tables.css('table-layout', 'fixed');\n col.width('auto');\n tables.addClass('k-autofitting');\n tables.css('table-layout', '');\n var newColumnWidth = Math.ceil(Math.max(outerWidth(th), outerWidth(contentTable.find('tr:not(.k-grouping-row)').eq(0).children(notGroupOrHierarchyVisibleCell).eq(index)), outerWidth(footerTable.find('tr').eq(0).children(notGroupOrHierarchyVisibleCell).eq(index)))) + 1;\n col.width(newColumnWidth);\n column.width = newColumnWidth;\n if (options.scrollable) {\n var cols = headerTable.find('col'), colWidth, totalWidth = 0;\n for (var idx = 0, length = cols.length; idx < length; idx += 1) {\n colWidth = cols[idx].style.width;\n if (colWidth && colWidth.indexOf('%') == -1) {\n totalWidth += parseInt(colWidth, 10);\n } else {\n totalWidth = 0;\n break;\n }\n }\n if (totalWidth) {\n tables.each(function () {\n this.style.width = totalWidth + 'px';\n });\n }\n }\n if (browser.msie && browser.version == 8) {\n tables.css('display', 'inline-table');\n setTimeout(function () {\n tables.css('display', 'table');\n }, 1);\n }\n tables.removeClass('k-autofitting');\n if (scrollLeft) {\n contentDiv.scrollLeft(scrollLeft);\n }\n that.trigger(COLUMNRESIZE, {\n column: column,\n oldWidth: oldColumnWidth,\n newWidth: newColumnWidth\n });\n that._applyLockedContainersWidth();\n that._syncLockedContentHeight();\n that._syncLockedHeaderHeight();\n },\n reorderColumn: function (destIndex, column, before) {\n var that = this, parent = columnParent(column, that.columns), columns = parent ? parent.columns : that.columns, sourceIndex = inArray(column, columns), destColumn = columns[destIndex], lockChanged, isLocked = !!destColumn.locked, lockedCount = lockedColumns(that.columns).length;\n if (sourceIndex === destIndex) {\n return;\n }\n if (!column.locked && isLocked && nonLockedColumns(that.columns).length == 1) {\n return;\n }\n if (column.locked && !isLocked && lockedCount == 1) {\n return;\n }\n that._hideResizeHandle();\n if (before === undefined) {\n before = destIndex < sourceIndex;\n }\n var sourceColumns = [column];\n that._reorderHeader(sourceColumns, destColumn, before);\n if (that.lockedHeader) {\n removeEmptyRows(that.thead);\n removeEmptyRows(that.lockedHeader);\n }\n if (destColumn.columns) {\n destColumn = leafColumns(destColumn.columns);\n destColumn = destColumn[before ? 0 : destColumn.length - 1];\n }\n if (column.columns) {\n sourceColumns = leafColumns(column.columns);\n }\n that._reorderContent(sourceColumns, destColumn, before);\n lockChanged = !!column.locked;\n lockChanged = lockChanged != isLocked;\n column.locked = isLocked;\n columns.splice(before ? destIndex : destIndex + 1, 0, column);\n columns.splice(sourceIndex < destIndex ? sourceIndex : sourceIndex + 1, 1);\n that._templates();\n that._updateColumnCellIndex();\n that._updateTablesWidth();\n that._applyLockedContainersWidth();\n that._syncLockedHeaderHeight();\n that._syncLockedContentHeight();\n that._updateFirstColumnClass();\n if (!lockChanged) {\n return;\n }\n if (isLocked) {\n that.trigger(COLUMNLOCK, { column: column });\n } else {\n that.trigger(COLUMNUNLOCK, { column: column });\n }\n },\n _updateColumnCellIndex: function () {\n var header;\n var offset = 0;\n if (this.lockedHeader) {\n header = this.lockedHeader.find('thead');\n offset = updateCellIndex(header, lockedColumns(this.columns));\n }\n updateCellIndex(this.thead, nonLockedColumns(this.columns), offset);\n },\n lockColumn: function (column) {\n var columns = this.columns;\n if (typeof column == 'number') {\n column = columns[column];\n } else {\n column = grep(columns, function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || column.locked || column.hidden) {\n return;\n }\n var index = lockedColumns(columns).length - 1;\n this.reorderColumn(index, column, false);\n },\n unlockColumn: function (column) {\n var columns = this.columns;\n if (typeof column == 'number') {\n column = columns[column];\n } else {\n column = grep(columns, function (item) {\n return item.field === column;\n })[0];\n }\n if (!column || !column.locked || column.hidden) {\n return;\n }\n var index = lockedColumns(columns).length;\n this.reorderColumn(index, column, true);\n },\n cellIndex: function (td) {\n var lockedColumnOffset = 0;\n if (this.lockedTable && !$.contains(this.lockedTable[0], td[0])) {\n lockedColumnOffset = leafColumns(lockedColumns(this.columns)).length;\n }\n return $(td).parent().children('td:not(.k-group-cell,.k-hierarchy-cell)').index(td) + lockedColumnOffset;\n },\n _modelForContainer: function (container) {\n container = $(container);\n if (!container.is('tr') && this._editMode() !== 'popup') {\n container = container.closest('tr');\n }\n var id = container.attr(kendo.attr('uid'));\n return this.dataSource.getByUid(id);\n },\n _editable: function () {\n var that = this, selectable = that.selectable && that.selectable.options.multiple, editable = that.options.editable, handler = function () {\n var target = activeElement(), cell = that._editContainer;\n if (cell && !$.contains(cell[0], target) && cell[0] !== target && !$(target).closest('.k-animation-container').length) {\n if (that.editable.end()) {\n that.closeCell();\n } else {\n that._scrollVirtualWrapper();\n }\n }\n };\n if (editable) {\n this.wrapper.addClass('k-editable');\n var mode = that._editMode();\n if (mode === 'incell') {\n if (editable.update !== false) {\n that.wrapper.on(CLICK + NS, 'tr:not(.k-grouping-row) > td', function (e) {\n var td = $(this), isLockedCell = that.lockedTable && td.closest('table')[0] === that.lockedTable[0];\n if (td.hasClass('k-hierarchy-cell') || td.hasClass('k-detail-cell') || td.hasClass('k-group-cell') || td.hasClass('k-edit-cell') || td.has('a.k-grid-delete').length || td.has('button.k-grid-delete').length || td.closest('tbody')[0] !== that.tbody[0] && !isLockedCell || $(e.target).is(':input')) {\n return;\n }\n if (that.editable) {\n if (that.editable.end()) {\n if (selectable) {\n $(activeElement()).blur();\n }\n that.closeCell();\n that.editCell(td);\n } else {\n that._scrollVirtualWrapper();\n }\n } else {\n that.editCell(td);\n }\n }).on('focusin' + NS, function () {\n if (!$.contains(this, activeElement())) {\n clearTimeout(that.timer);\n that.timer = null;\n }\n }).on('focusout' + NS, function () {\n that.timer = setTimeout(handler, 1);\n });\n }\n } else {\n if (editable.update !== false) {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible a.k-grid-edit', function (e) {\n e.preventDefault();\n that.editRow($(this).closest('tr'));\n });\n if (that._isVirtualInlineEditable()) {\n that.wrapper.on('focusout' + NS, 'tr:not(.k-grouping-row) > td', function () {\n if (that.editable && !that.editable.end()) {\n that._scrollVirtualWrapper();\n }\n });\n }\n }\n }\n if (editable.destroy !== false) {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible .k-grid-delete', function (e) {\n e.preventDefault();\n e.stopPropagation();\n that.removeRow($(this).closest('tr'));\n });\n } else {\n that.wrapper.on(CLICK + NS, 'tbody>tr:not(.k-detail-row,.k-grouping-row):visible button.k-grid-delete', function (e) {\n e.stopPropagation();\n if (!that._confirmation()) {\n e.preventDefault();\n }\n });\n }\n }\n },\n editCell: function (cell) {\n cell = $(cell);\n var that = this, column = leafColumns(that.columns)[that.cellIndex(cell)], model = that._modelForContainer(cell);\n that.closeCell();\n if (model && isColumnEditable(column, model) && !column.command) {\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n that._attachModelChange(model);\n that._editContainer = cell;\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.editable = cell.addClass('k-edit-cell').kendoEditable({\n fields: {\n field: column.field,\n format: column.format,\n editor: column.editor,\n values: column.values\n },\n model: model,\n target: that,\n change: function (e) {\n if (that.trigger(SAVE, {\n values: e.values,\n container: cell,\n model: model\n })) {\n e.preventDefault();\n }\n },\n skipFocus: that._isVirtualIncellEditable() && that._editableState ? true : false\n }).data('kendoEditable');\n var tr = cell.parent().addClass('k-grid-edit-row');\n if (that.lockedContent) {\n adjustRowHeight(tr[0], that._relatedRow(tr).addClass('k-grid-edit-row')[0]);\n }\n that.trigger(EDIT, {\n container: cell,\n model: model\n });\n }\n },\n _adjustLockedHorizontalScrollBar: function () {\n var table = this.table, content = table.parent();\n var scrollbar = table[0].offsetWidth > content[0].clientWidth ? kendo.support.scrollbar() : 0;\n this.lockedContent.height(content.height() - scrollbar);\n },\n _syncLockedContentHeight: function () {\n if (this.lockedTable) {\n if (!this.touchScroller) {\n this._adjustLockedHorizontalScrollBar();\n }\n this._adjustRowsHeight(this.table, this.lockedTable);\n }\n },\n _syncLockedHeaderHeight: function () {\n if (this.lockedHeader) {\n var lockedTable = this.lockedHeader.children('table');\n var table = this.thead.parent();\n this._adjustRowsHeight(lockedTable, table);\n syncTableHeight(lockedTable, table);\n }\n },\n _syncLockedFooterHeight: function () {\n if (this.lockedFooter && this.footer && this.footer.length) {\n this._adjustRowsHeight(this.lockedFooter.children('table'), this.footer.find('.k-grid-footer-wrap > table'));\n }\n },\n _destroyEditable: function () {\n var that = this;\n var destroy = function () {\n if (that.editable) {\n var container = that.editView ? that.editView.element : that._editContainer;\n if (container) {\n container.off(CLICK + NS, 'a.k-grid-cancel', that._editCancelClickHandler);\n container.off(CLICK + NS, 'a.k-grid-update', that._editUpdateClickHandler);\n }\n that._detachModelChange();\n that.editable.destroy();\n that.editable = null;\n that._editContainer = null;\n that._destroyEditView();\n }\n };\n if (that.editable) {\n if (that._editMode() === 'popup' && !that._isMobile) {\n that._editContainer.data('kendoWindow').bind('deactivate', destroy).close();\n } else {\n destroy();\n }\n }\n if (that._actionSheet) {\n that._actionSheet.destroy();\n that._actionSheet = null;\n }\n },\n _destroyEditView: function () {\n if (this.editView) {\n this.editView.purge();\n this.editView = null;\n this.pane.navigate('');\n }\n },\n _attachModelChange: function (model) {\n var that = this;\n that._modelChangeHandler = function (e) {\n that._modelChange({\n field: e.field,\n model: this\n });\n };\n model.bind('change', that._modelChangeHandler);\n },\n _detachModelChange: function () {\n var that = this, container = that._editContainer, model = that._modelForContainer(container);\n if (model) {\n model.unbind(CHANGE, that._modelChangeHandler);\n }\n },\n closeCell: function (isCancel) {\n var that = this, cell = that._editContainer, column, tr, model;\n if (!cell) {\n return;\n }\n model = that._modelForContainer(cell);\n if (isCancel && that.trigger('cancel', {\n container: cell,\n model: model\n })) {\n return;\n }\n that.trigger(CELLCLOSE, {\n type: isCancel ? 'cancel' : 'save',\n model: model,\n container: cell\n });\n cell.removeClass('k-edit-cell');\n column = leafColumns(that.columns)[that.cellIndex(cell)];\n tr = cell.parent().removeClass('k-grid-edit-row');\n that._destroyEditable();\n that._displayCell(cell, column, model);\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.trigger('itemChange', {\n item: tr,\n data: model,\n ns: ui\n });\n if (that.lockedContent) {\n adjustRowHeight(tr.css('height', '')[0], that._relatedRow(tr).css('height', '')[0]);\n }\n },\n _displayCell: function (cell, column, dataItem) {\n var that = this, state = {\n storage: {},\n count: 0\n }, settings = extend({}, kendo.Template, that.options.templateSettings), tmpl = kendo.template(that._cellTmpl(column, state), settings);\n if (state.count > 0) {\n tmpl = proxy(tmpl, state.storage);\n }\n cell.empty().html(tmpl(dataItem));\n that.angular('compile', function () {\n return {\n elements: cell,\n data: [{ dataItem: dataItem }]\n };\n });\n },\n removeRow: function (row) {\n if (!this._confirmation(row)) {\n return;\n }\n this._removeRow(row);\n },\n _removeRow: function (row) {\n var that = this, model, mode = that._editMode();\n if (mode !== 'incell') {\n that.cancelRow();\n }\n row = $(row);\n if (that.lockedContent) {\n row = row.add(that._relatedRow(row));\n }\n row = row.hide();\n model = that._modelForContainer(row);\n if (model && !that.trigger(REMOVE, {\n row: row,\n model: model\n })) {\n that.dataSource.remove(model);\n if (mode === 'inline' || mode === 'popup') {\n that.dataSource.sync();\n }\n } else if (mode === 'incell') {\n that._destroyEditable();\n }\n },\n _editMode: function () {\n var mode = 'incell', editable = this.options.editable;\n if (editable !== true) {\n if (typeof editable == 'string') {\n mode = editable;\n } else {\n mode = editable.mode || mode;\n }\n }\n return mode;\n },\n editRow: function (row) {\n var model;\n var that = this;\n if (row instanceof ObservableObject) {\n model = row;\n } else {\n row = $(row);\n model = that._modelForContainer(row);\n }\n var mode = that._editMode();\n var container;\n that.cancelRow();\n if (model) {\n row = that.tbody.children('[' + kendo.attr('uid') + '=' + model.uid + ']');\n that._attachModelChange(model);\n if (mode === 'popup') {\n that._createPopupEditor(model);\n } else if (mode === 'inline') {\n that._createInlineEditor(row, model);\n } else if (mode === 'incell') {\n $(row).children(DATA_CELL).each(function () {\n var cell = $(this);\n var column = leafColumns(that.columns)[that.cellIndex(cell)];\n model = that._modelForContainer(cell);\n if (model && (!model.editable || model.editable(column.field)) && column.field && !column.selectable) {\n that.editCell(cell);\n return false;\n }\n });\n }\n container = that.editView ? that.editView.element : that._editContainer;\n if (container) {\n if (!this._editCancelClickHandler) {\n this._editCancelClickHandler = proxy(this._editCancelClick, this);\n }\n container.on(CLICK + NS, 'a.k-grid-cancel', this._editCancelClickHandler);\n if (!this._editUpdateClickHandler) {\n this._editUpdateClickHandler = proxy(this._editUpdateClick, this);\n }\n container.on(CLICK + NS, 'a.k-grid-update', this._editUpdateClickHandler);\n }\n }\n },\n _editUpdateClick: function (e) {\n e.preventDefault();\n e.stopPropagation();\n this.saveRow();\n },\n _editCancelClick: function (e) {\n var that = this;\n var navigatable = that.options.navigatable;\n var model = that.editable.options.model;\n var container = that.editView ? that.editView.element : that._editContainer;\n e.preventDefault();\n e.stopPropagation();\n if (that.trigger('cancel', {\n container: container,\n model: model\n })) {\n return;\n }\n var currentIndex = that.items().index($(that.current()).parent());\n that.cancelRow();\n if (navigatable) {\n that._setCurrent(that.items().eq(currentIndex).children().filter(NAVCELL).first());\n focusTable(that.table, true);\n }\n },\n _createPopupEditor: function (model) {\n var that = this;\n var html = '
';\n var column;\n var command;\n var fields = [];\n var idx;\n var length;\n var tmpl;\n var updateText;\n var cancelText;\n var tempCommand;\n var columns = leafColumns(that.columns);\n var attr;\n var editable = that.options.editable;\n var template = editable.template;\n var options = isPlainObject(editable) ? editable.window : {};\n var settings = extend({}, kendo.Template, that.options.templateSettings);\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n options = options || {};\n if (template) {\n if (typeof template === STRING) {\n template = window.unescape(template);\n }\n html += kendo.template(template, settings)(model);\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.command) {\n tempCommand = getCommand(column.command, 'edit');\n if (tempCommand) {\n command = tempCommand;\n }\n }\n }\n } else {\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (column.selectable) {\n continue;\n }\n if (!column.command) {\n html += '
';\n if (isColumnEditable(column, model)) {\n fields.push({\n field: column.field,\n format: column.format,\n editor: column.editor,\n values: column.values\n });\n html += '
';\n } else {\n var state = {\n storage: {},\n count: 0\n };\n tmpl = kendo.template(that._cellTmpl(column, state), settings);\n if (state.count > 0) {\n tmpl = proxy(tmpl, state.storage);\n }\n html += '
' + tmpl(model) + '
';\n }\n } else if (column.command) {\n tempCommand = getCommand(column.command, 'edit');\n if (tempCommand) {\n command = tempCommand;\n }\n }\n }\n }\n if (command) {\n if (isPlainObject(command)) {\n if (command.text && isPlainObject(command.text)) {\n updateText = command.text.update;\n cancelText = command.text.cancel;\n }\n if (command.attr) {\n attr = command.attr;\n }\n }\n }\n var container;\n if (!that._isMobile) {\n html += '
';\n html += that._createButton({\n name: 'update',\n text: updateText,\n attr: attr\n }) + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr\n });\n html += '
';\n container = that._editContainer = $(html).appendTo(that.wrapper).eq(0).kendoWindow(extend({\n modal: true,\n resizable: false,\n draggable: true,\n title: 'Edit',\n visible: false,\n close: function (e) {\n if (e.userTriggered) {\n e.sender.element.focus();\n if (that.trigger('cancel', {\n container: container,\n model: model\n })) {\n e.preventDefault();\n return;\n }\n var currentIndex = that.items().index($(that.current()).parent());\n that.cancelRow();\n if (that.options.navigatable) {\n that._setCurrent(that.items().eq(currentIndex).children().filter(NAVCELL).first());\n focusTable(that.table, true);\n }\n }\n }\n }, options));\n } else {\n html += '
';\n that.editView = that.pane.append('
' + '
' + that._createButton({\n name: 'update',\n text: updateText,\n attr: attr\n }) + (options.title || 'Edit') + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr\n }) + '
' + html + '
');\n container = that._editContainer = that.editView.element.find('.k-popup-edit-form');\n }\n that.editable = that._editContainer.kendoEditable({\n fields: fields,\n model: model,\n clearContainer: false,\n target: that\n }).data('kendoEditable');\n if (that._isMobile) {\n container.find('input[type=checkbox],input[type=radio]').parent('.k-edit-field').addClass('k-check').prev('.k-edit-label').addClass('k-check').click(function () {\n $(this).next().children('input').click();\n });\n }\n that._openPopUpEditor();\n that.trigger(EDIT, {\n container: container,\n model: model\n });\n },\n _openPopUpEditor: function () {\n if (!this._isMobile) {\n this._editContainer.data('kendoWindow').center().open();\n } else {\n this.pane.navigate(this.editView, this._editAnimation);\n }\n },\n _createInlineEditor: function (row, model) {\n var that = this;\n var column;\n var cell;\n var command;\n var fields = [];\n if (that.trigger(BEFOREEDIT, { model: model })) {\n return;\n }\n if (that.lockedContent) {\n row = row.add(that._relatedRow(row));\n }\n row.children(':not(.k-group-cell,.k-hierarchy-cell)').each(function () {\n cell = $(this);\n column = leafColumns(that.columns)[that.cellIndex(cell)];\n if (!column.command && isColumnEditable(column, model)) {\n fields.push({\n field: column.field,\n format: column.format,\n editor: column.editor,\n values: column.values\n });\n cell.attr(kendo.attr('container-for'), column.field);\n cell.empty();\n } else if (column.command) {\n command = getCommand(column.command, 'edit');\n if (command) {\n cell.empty();\n var updateText, cancelText, attr;\n if (isPlainObject(command)) {\n if (command.text && isPlainObject(command.text)) {\n updateText = command.text.update;\n cancelText = command.text.cancel;\n }\n if (command.attr) {\n attr = command.attr;\n }\n }\n $(that._createButton({\n name: 'update',\n text: updateText,\n attr: attr\n }) + that._createButton({\n name: 'canceledit',\n text: cancelText,\n attr: attr\n })).appendTo(cell);\n }\n }\n });\n that._editContainer = row;\n that._editContainer.addClass('k-grid-edit-row');\n if (that._shouldClearEditableState) {\n that._clearEditableState();\n }\n that.editable = new kendo.ui.Editable(that._editContainer, {\n target: that,\n fields: fields,\n model: model,\n skipFocus: that._isVirtualInlineEditable() && that._editableState && that._editableState.field ? true : false,\n clearContainer: false\n });\n if (row.length > 1) {\n adjustRowHeight(row[0], row[1]);\n that._applyLockedContainersWidth();\n }\n that.trigger(EDIT, {\n container: row,\n model: model\n });\n },\n cancelRow: function (notify) {\n var that = this, container = that._editContainer, model;\n var virtualScrollable = that.virtualScrollable;\n var isScrolledToBottom = virtualScrollable && virtualScrollable._isScrolledToBottom();\n if (container) {\n model = that._modelForContainer(container);\n if (notify && that.trigger('cancel', {\n container: container,\n model: model\n })) {\n return;\n }\n that._destroyEditable();\n that.dataSource.cancelChanges(model);\n if (that._isVirtualEditable() && isScrolledToBottom) {\n that._restoreVirtualView();\n }\n that._clearEditableState();\n if (that._editMode() !== 'popup') {\n that._displayRow(container);\n } else {\n that._displayRow(that.tbody.find('[' + kendo.attr('uid') + '=' + model.uid + ']'));\n }\n }\n },\n saveRow: function () {\n var that = this;\n var container = this._editContainer;\n var model = this._modelForContainer(container);\n var deferred = $.Deferred();\n var valid;\n if (!container || !this.editable) {\n return deferred.resolve().promise();\n }\n valid = that.editable && that.editable.end();\n if (!valid || this.trigger(SAVE, {\n container: container,\n model: model\n })) {\n if (!valid) {\n that._scrollVirtualWrapper();\n }\n return deferred.reject().promise();\n }\n that._clearEditableState();\n return this.dataSource.sync();\n },\n _displayRow: function (row) {\n var that = this, model = that._modelForContainer(row), related, newRow, nextRow, isSelected = row.hasClass('k-state-selected'), isAlt = row.hasClass('k-alt');\n if (model) {\n if (that.lockedContent) {\n related = $((isAlt ? that.lockedAltRowTemplate : that.lockedRowTemplate)(model));\n that._relatedRow(row.last()).replaceWith(related);\n }\n that.angular('cleanup', function () {\n return { elements: row.get() };\n });\n newRow = $((isAlt ? that.altRowTemplate : that.rowTemplate)(model));\n if (!row.is(':visible')) {\n newRow.hide();\n }\n row.replaceWith(newRow);\n that.trigger('itemChange', {\n item: newRow,\n data: model,\n ns: ui\n });\n if (related && related.length) {\n that.trigger('itemChange', {\n item: related,\n data: model,\n ns: ui\n });\n }\n var angularElements = newRow;\n var angularData = [{ dataItem: model }];\n if (related && related.length) {\n angularElements = newRow.add(related);\n angularData.push({ dataItem: model });\n }\n that.angular('compile', function () {\n return {\n elements: angularElements.get(),\n data: angularData\n };\n });\n if (isSelected && (that.options.selectable || !!$.grep(leafColumns(that.columns), function (col) {\n return col.selectable;\n }).length)) {\n that.select(newRow.add(related));\n }\n if (related) {\n adjustRowHeight(newRow[0], related[0]);\n }\n nextRow = newRow.next();\n if (nextRow.hasClass('k-detail-row') && nextRow.is(':visible')) {\n newRow.find('.k-hierarchy-cell .k-icon').removeClass('k-i-expand').addClass('k-i-collapse');\n }\n }\n },\n _showMessage: function (messages, row) {\n var that = this;\n if (!that._isMobile) {\n return window.confirm(messages.title);\n }\n var template = kendo.template('');\n var html = $(template(messages)).appendTo(that.view.element);\n var actionSheet = that._actionSheet = new kendo.mobile.ui.ActionSheet(html, {\n cancel: messages.cancelDelete,\n cancelTemplate: '
  • #:cancel#
  • ',\n close: function () {\n this.destroy();\n },\n command: function (e) {\n var item = $(e.currentTarget).parent();\n if (!item.hasClass('km-actionsheet-cancel')) {\n that._removeRow(row);\n }\n },\n popup: that._actionSheetPopupOptions\n });\n actionSheet.open(row);\n return false;\n },\n _confirmation: function (row) {\n var that = this, editable = that.options.editable, confirmation = editable === true || typeof editable === STRING ? that.options.messages.editable.confirmation : editable.confirmation;\n if (isPlainObject(editable) && typeof editable.mode === STRING && typeof confirmation !== STRING && confirmation !== false) {\n confirmation = that.options.messages.editable.confirmation;\n }\n if (confirmation !== false && confirmation != null) {\n if (typeof confirmation === FUNCTION) {\n confirmation = confirmation(that._modelForContainer(row));\n }\n return that._showMessage({\n confirmDelete: editable.confirmDelete || that.options.messages.editable.confirmDelete,\n cancelDelete: editable.cancelDelete || that.options.messages.editable.cancelDelete,\n title: confirmation === true ? that.options.messages.editable.confirmation : confirmation\n }, row);\n }\n return true;\n },\n cancelChanges: function () {\n var that = this;\n that.dataSource.cancelChanges();\n if (that._isVirtualEditable()) {\n that._virtualPageToTop(function () {\n that.virtualScrollable.scrollToTop();\n });\n }\n },\n saveChanges: function () {\n var that = this;\n var valid = that.editable && that.editable.end();\n if ((valid || !that.editable) && !that.trigger(SAVECHANGES)) {\n that.dataSource.sync();\n } else if (!valid) {\n that._scrollVirtualWrapper();\n }\n },\n addRow: function () {\n var that = this, index, dataSource = that.dataSource, mode = that._editMode(), createAt = that.options.editable.createAt || '', pageSize = dataSource.pageSize(), view = dataSource.view() || [];\n var createAtBottom = createAt.toLowerCase() === BOTTOM;\n var model;\n var virtualEditable = that._isVirtualEditable();\n if (that.editable && that.editable.end() || !that.editable) {\n if (mode != 'incell') {\n that.cancelRow();\n }\n index = dataSource.indexOf(view[0]);\n if (createAtBottom) {\n index += view.length;\n if (pageSize && !dataSource.options.serverPaging && pageSize <= view.length) {\n index -= 1;\n }\n }\n if (index < 0) {\n if (dataSource.page() > dataSource.totalPages()) {\n index = (dataSource.page() - 1) * pageSize;\n } else {\n index = 0;\n }\n }\n if (virtualEditable) {\n that._virtualAddRow();\n } else {\n model = dataSource.insert(index, {});\n that._editModel(model);\n }\n } else {\n that._scrollVirtualWrapper();\n }\n },\n _editModel: function (model) {\n var that = this;\n var createAt = that.options.editable.createAt || '';\n var mode = that._editMode();\n if (model) {\n var id = model.uid, table = that.lockedContent ? that.lockedTable : that.table, row = table.find('tr[' + kendo.attr('uid') + '=' + id + ']'), cell = row.children('td:not(.k-group-cell,.k-hierarchy-cell)').eq(that._firstEditableColumnIndex(row));\n if (mode === 'inline' && row.length) {\n that.editRow(row);\n } else if (mode === 'popup') {\n that.editRow(model);\n } else if (cell.length) {\n that.editCell(cell);\n }\n if (createAt.toLowerCase() == 'bottom' && that.lockedContent) {\n that.lockedContent[0].scrollTop = that.content[0].scrollTop = that.table[0].offsetHeight;\n }\n }\n },\n _virtualAddRow: function () {\n var that = this;\n var createAtBottom = (that.options.editable.createAt || '').toLowerCase() === BOTTOM;\n that._clearEditableState();\n if (createAtBottom) {\n that._virtualAddRowAtBottom();\n } else {\n that._virtualAddRowAtTop();\n }\n },\n _virtualAddRowAtTop: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var model;\n if (dataSource.page() === 1) {\n model = dataSource.insert(0, {});\n that._editModel(model);\n virtualScrollable.scrollToTop();\n } else {\n that._virtualPageToTop(function () {\n model = dataSource.insert(0, {});\n that._editModel(model);\n virtualScrollable.scrollToTop();\n });\n }\n },\n _virtualAddRowAtBottom: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var index = dataSource.total();\n var model;\n if (dataSource.at(index - 1) instanceof ObservableObject) {\n model = dataSource.insert(index, {});\n that._virtualPageToBottom(function () {\n that._editModel(model);\n virtualScrollable.scrollToBottom();\n });\n } else {\n that._virtualPageToBottom(function () {\n model = dataSource.insert(index, {});\n that._editModel(model);\n virtualScrollable.scrollToBottom();\n });\n }\n },\n _virtualPageToTop: function (callback) {\n var that = this;\n that._virtualPage(0, that.dataSource.take(), function () {\n callback();\n });\n },\n _virtualPageToBottom: function (callback) {\n var that = this;\n var dataSource = that.dataSource;\n var take = dataSource.take();\n that._virtualPage(dataSource.total() - take, take, function () {\n callback();\n });\n },\n _virtualPage: function (skip, take, callback) {\n var that = this;\n if (that._isVirtualEditable()) {\n that.virtualScrollable._preventScroll = true;\n that.virtualScrollable._page(skip, take, callback);\n }\n },\n _restoreVirtualView: function () {\n var that = this;\n var dataSource = that.dataSource;\n var virtualScrollable = that.virtualScrollable;\n var scrollbar = virtualScrollable.verticalScrollbar;\n var wrapper = virtualScrollable.wrapper;\n var take = dataSource.take();\n var skip = math.min(dataSource.currentRangeStart(), dataSource.total() - take);\n var initialItemHeight = virtualScrollable.itemHeight;\n var scrolledItemsCount = scrollbar.scrollTop() / initialItemHeight;\n that._virtualPage(skip, take, function () {\n var itemHeight = virtualScrollable.itemHeight;\n var newScrollbarTop = scrolledItemsCount * itemHeight;\n if (virtualScrollable._isScrolledToBottom()) {\n virtualScrollable.scrollToBottom();\n } else {\n if (scrollbar.scrollTop() !== newScrollbarTop) {\n virtualScrollable._preventScroll = true;\n } else {\n virtualScrollable._preventScroll = false;\n }\n scrollbar.scrollTop(newScrollbarTop);\n wrapper.scrollTop(scrollbar.scrollTop() - skip * itemHeight);\n }\n });\n },\n _firstEditableColumnIndex: function (container) {\n var that = this, column, columns = leafColumns(that.columns), idx, length, model = that._modelForContainer(container);\n for (idx = 0, length = columns.length; idx < length; idx++) {\n column = columns[idx];\n if (model && (!model.editable || model.editable(column.field)) && !column.command && column.field && column.hidden !== true) {\n return idx;\n }\n }\n return -1;\n },\n _toolbar: function () {\n var that = this, wrapper = that.wrapper, toolbar = that.options.toolbar, editable = that.options.editable, container;\n if (toolbar) {\n container = that.wrapper.find('.k-grid-toolbar');\n if (!container.length) {\n if (!isFunction(toolbar)) {\n toolbar = typeof toolbar === STRING ? toolbar : that._toolbarTmpl(toolbar).replace(templateHashRegExp, '\\\\#');\n toolbar = proxy(kendo.template(toolbar), that);\n }\n container = $('
    ').html(toolbar({})).prependTo(wrapper);\n that.angular('compile', function () {\n return { elements: container.get() };\n });\n }\n if (editable && editable.create !== false) {\n container.on(CLICK + NS, '.k-grid-add', function (e) {\n e.preventDefault();\n that.addRow();\n }).on(CLICK + NS, '.k-grid-cancel-changes', function (e) {\n e.preventDefault();\n that.cancelChanges();\n }).on(CLICK + NS, '.k-grid-save-changes', function (e) {\n e.preventDefault();\n that.saveChanges();\n });\n }\n container.on(CLICK + NS, '.k-grid-excel', function (e) {\n e.preventDefault();\n that.saveAsExcel();\n });\n container.on(CLICK + NS, '.k-grid-pdf', function (e) {\n e.preventDefault();\n that.saveAsPDF();\n });\n }\n },\n _toolbarTmpl: function (commands) {\n var that = this, idx, length, html = '';\n if (isArray(commands)) {\n for (idx = 0, length = commands.length; idx < length; idx++) {\n html += that._createButton(commands[idx]);\n }\n }\n return html;\n },\n _createButton: function (command) {\n var template = command.template || COMMANDBUTTONTMPL, commandName = typeof command === STRING ? command : command.name || command.text, className = defaultCommands[commandName] ? defaultCommands[commandName].className : 'k-grid-' + (commandName || '').replace(/\\s/g, ''), options = {\n className: className,\n text: commandName,\n attr: '',\n iconClass: ''\n }, messages = this.options.messages.commands, attributeClassMatch;\n if (!commandName && !(isPlainObject(command) && command.template)) {\n throw new Error('Custom commands should have name specified');\n }\n if (isPlainObject(command)) {\n command = extend(true, {}, command);\n if (command.className && inArray(options.className, command.className.split(' ')) < 0) {\n command.className += ' ' + options.className;\n } else if (command.className === undefined) {\n command.className = options.className;\n }\n if (commandName === 'edit' && isPlainObject(command.text)) {\n command = extend(true, {}, command);\n command.text = command.text.edit;\n }\n if (command.attr) {\n if (isPlainObject(command.attr)) {\n command.attr = stringifyAttributes(command.attr);\n }\n if (typeof command.attr === STRING) {\n attributeClassMatch = command.attr.match(/class=\"(.+?)\"/);\n if (attributeClassMatch && inArray(attributeClassMatch[1], command.className.split(' ')) < 0) {\n command.className += ' ' + attributeClassMatch[1];\n }\n }\n }\n options = extend(true, options, defaultCommands[commandName], { text: messages[commandName] }, command);\n } else {\n options = extend(true, options, defaultCommands[commandName], { text: messages[commandName] });\n }\n return kendo.template(template)(options);\n },\n _hasFooters: function () {\n return !!this.footerTemplate || !!this.groupFooterTemplate || this.footer && this.footer.length > 0 || this.wrapper.find('.k-grid-footer').length > 0;\n },\n _groupable: function () {\n var that = this;\n if (that._groupableClickHandler) {\n that.table.add(that.lockedTable).off(CLICK + NS, that._groupableClickHandler);\n } else {\n that._groupableClickHandler = function (e) {\n var element = $(this), groupRow = element.closest('tr'), group = that._groupRows[that.wrapper.find('.k-grouping-row').index(groupRow)];\n if (element.hasClass('k-i-collapse')) {\n if (!that.trigger('groupCollapse', {\n group: group,\n element: groupRow\n })) {\n that.collapseGroup(groupRow);\n }\n } else {\n if (!that.trigger('groupExpand', {\n group: group,\n element: groupRow\n })) {\n that.expandGroup(groupRow);\n }\n }\n e.preventDefault();\n e.stopPropagation();\n };\n }\n if (that._isLocked()) {\n that.lockedTable.on(CLICK + NS, '.k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse', that._groupableClickHandler);\n } else {\n that.table.on(CLICK + NS, '.k-grouping-row .k-i-expand, .k-grouping-row .k-i-collapse', that._groupableClickHandler);\n }\n that._attachGroupable();\n },\n _attachGroupable: function () {\n var that = this, wrapper = that.wrapper, groupable = that.options.groupable, draggables = HEADERCELLS + '[' + kendo.attr('field') + ']', filter = that.content ? '.k-grid-header:first ' + draggables : 'table:first>.k-grid-header ' + draggables;\n if (groupable && groupable.enabled !== false) {\n if (!wrapper.has('div.k-grouping-header')[0]) {\n $('
     
    ').addClass('k-grouping-header').prependTo(wrapper);\n }\n if (that.groupable) {\n that.groupable.destroy();\n }\n that.groupable = new ui.Groupable(wrapper, extend({}, groupable, {\n draggable: that._draggableInstance,\n groupContainer: '>div.k-grouping-header',\n dataSource: that.dataSource,\n draggableElements: filter,\n filter: filter,\n allowDrag: that.options.reorderable,\n change: function (e) {\n if (that.trigger('group', { groups: e.groups })) {\n e.preventDefault();\n } else {\n that._clearEditableState();\n if (that.dataSource.options.endless) {\n that.dataSource.options.endless = null;\n that._endlessPageSize = that.dataSource.options.pageSize;\n that.dataSource.pageSize(that.dataSource.options.pageSize);\n }\n }\n }\n }));\n }\n },\n _continuousItems: function (filter, cell) {\n if (!this.lockedContent) {\n return;\n }\n var that = this;\n var elements = that.table.add(that.lockedTable);\n var lockedItems = $(filter, elements[0]);\n var nonLockedItems = $(filter, elements[1]);\n var columns = cell ? lockedColumns(that.columns).length : 1;\n var nonLockedColumns = cell ? that.columns.length - columns : 1;\n var result = [];\n for (var idx = 0; idx < lockedItems.length; idx += columns) {\n push.apply(result, lockedItems.slice(idx, idx + columns));\n push.apply(result, nonLockedItems.splice(0, nonLockedColumns));\n }\n return result;\n },\n _selectable: function () {\n var that = this, multi, cell, notString = [], isLocked = that._isLocked(), selectable = that.options.selectable, dataSourceOptions = that.dataSource.options;\n if (selectable) {\n if (that.selectable) {\n that.selectable.destroy();\n }\n if (that.options.persistSelection === true) {\n if (!dataSourceOptions.schema || !dataSourceOptions.schema.model || !dataSourceOptions.schema.model.id) {\n throw new Error('Selection persistence requires a data source with a model that has e defined id');\n }\n that._selectedIds = {};\n }\n selectable = kendo.ui.Selectable.parseOptions(selectable);\n multi = selectable.multiple;\n cell = selectable.cell;\n if (that._hasDetails()) {\n notString[notString.length] = '.k-detail-row';\n }\n if (that.options.groupable || that._hasFooters()) {\n notString[notString.length] = '.k-grouping-row,.k-group-footer';\n }\n notString = notString.join(',');\n if (notString !== '') {\n notString = ':not(' + notString + ')';\n }\n var elements = that.table;\n if (isLocked) {\n elements = elements.add(that.lockedTable);\n }\n var filter = '>' + (cell ? SELECTION_CELL_SELECTOR : 'tbody>tr' + notString);\n that.selectable = new kendo.ui.Selectable(elements, {\n filter: filter,\n aria: true,\n multiple: multi,\n change: function () {\n if (that.options.persistSelection && !cell) {\n that._persistSelectedRows();\n }\n that.trigger(CHANGE);\n },\n useAllItems: isLocked && multi && cell,\n relatedTarget: function (items) {\n if (cell || !isLocked) {\n return;\n }\n var related;\n var result = $();\n for (var idx = 0, length = items.length; idx < length; idx++) {\n related = that._relatedRow(items[idx]);\n if (inArray(related[0], items) < 0) {\n result = result.add(related);\n }\n }\n return result;\n },\n continuousItems: function () {\n return that._continuousItems(filter, cell);\n }\n });\n if (that.options.navigatable) {\n elements.on('keydown' + NS, function (e) {\n var current = that.current();\n var target = e.target;\n if (e.keyCode === keys.SPACEBAR && !e.shiftKey && $.inArray(target, elements) > -1 && !current.is('.k-edit-cell,.k-header') && current.parent().is(':not(.k-grouping-row,.k-detail-row,.k-group-footer)')) {\n e.preventDefault();\n e.stopPropagation();\n current = cell ? current : current.parent();\n if (isLocked && !cell) {\n current = current.add(that._relatedRow(current));\n }\n if (multi) {\n if (!e.ctrlKey) {\n that.selectable.clear();\n } else {\n if (current.hasClass(SELECTED)) {\n current.removeClass(SELECTED);\n that.trigger(CHANGE);\n return;\n }\n }\n } else {\n that.selectable.clear();\n }\n if (!cell) {\n that.selectable._lastActive = current;\n }\n that.selectable.value(current);\n } else if (!cell && (e.shiftKey && e.keyCode == keys.LEFT || e.shiftKey && e.keyCode == keys.RIGHT || e.shiftKey && e.keyCode == keys.UP || e.shiftKey && e.keyCode == keys.DOWN || e.keyCode === keys.SPACEBAR && e.shiftKey)) {\n e.preventDefault();\n e.stopPropagation();\n current = current.parent();\n if (isLocked) {\n current = current.add(that._relatedRow(current));\n }\n if (multi) {\n if (!that.selectable._lastActive) {\n that.selectable._lastActive = current;\n }\n that.selectable.selectRange(that.selectable._firstSelectee(), current);\n } else {\n that.selectable.clear();\n that.selectable.value(current);\n }\n }\n });\n }\n }\n },\n _clipboard: function () {\n var options = this.options;\n var selectable = options.selectable;\n if (selectable && options.allowCopy) {\n var grid = this;\n if (!options.navigatable) {\n grid.table.add(grid.lockedTable).attr('tabindex', 0).on('mousedown' + NS + ' keydown' + NS, '.k-detail-cell', function (e) {\n if (e.target !== e.currentTarget) {\n e.stopImmediatePropagation();\n }\n }).on('mousedown' + NS, NAVROW + '>' + NAVCELL, proxy(tableClick, grid));\n }\n grid.copyHandler = proxy(grid.copySelection, grid);\n grid.updateClipBoardState = function () {\n if (grid.areaClipBoard) {\n grid.areaClipBoard.val(grid.getTSV()).focus().select();\n }\n };\n grid.bind('change', grid.updateClipBoardState);\n grid.wrapper.on('keydown', grid.copyHandler);\n grid.clearAreaHandler = proxy(grid.clearArea, grid);\n grid.wrapper.on('keyup', grid.clearAreaHandler);\n }\n },\n copySelection: function (e) {\n if (e instanceof jQuery.Event && !(e.ctrlKey || e.metaKey) || $(e.target).is('input:visible,textarea:visible') || window.getSelection && window.getSelection().toString() || document.selection && document.selection.createRange().text) {\n return;\n }\n if (!this.areaClipBoard) {\n this.areaClipBoard = $('