{"version":3,"sources":["date.js","number.js","array.js","string.js","1_constructor.js","enableControls.js","common.js","ajax.js","control_autocomplete.js","control_button.js","control_calendar.js","control_checkbox.js","control_counter.js","control_datepicker.js","control_dropdown.js","control_editor.js","control_excelnavigation.js","control_message.js","control_number.js","control_popover.js","control_radiobutton.js","control_scroll.js","control_select.js","control_sortable.js","control_star.js","control_status.js","control_tabbing.js","control_tablefrozencol.js","control_tablefrozencolumn.js","control_tableinpage.js","control_tableresize.js","control_tabletab.js","control_text.js","control_textarea.js","control_timepicker.js","control_tour.js","control_url.js","control_validate.js","control_websocket.js","jquery.rateyo.js","site_control_element.js","site_leftnav.js","site_search.js","site_toppopover.js","site_userexplorer.js","module_feedback.js","module_learningsubscription.js","Common/Views/Modules/module_applicationhelp.js","Common/Views/Modules/module_favoriteview.js","Common/Views/Modules/module_mediamanager.js","Common/Views/Modules/module_pageaccess.js","Common/Views/Modules/module_report.js","ContactManager/Views/Modules/module_locations.js","IAS/Views/Modules/module_purchaseorder.js","Projects/Views/Modules/module_projectadd.js","Projects/Views/Modules/module_projectedit.js","TimeTracker/Views/Modules/module_timetracker.js","_8D/Views/Modules/module_link8D.js"],"names":["Date","monthAbbreviations","Array","monthFullAbbreviations","dayAbbreviations","dayAbbreviationsLong","OneDay","LZ","x","prototype","getDateFriendly","this","getMonth","getDate","getFullYear","getDateMonth","getMondayDateFriendly","fullDate","setDate","getDay","getMonthYearDateFriendly","getYearFriendly","getFullDateFriendlyLong","getDayAbrFullDateFriendlyLong","getAbrFullDateFriendlyLong","label","getFullDateFriendly","getDayMonthNum","getFullDateTimeFriendly","getHours","getMinutes","getSeconds","getMilliseconds","getMonthDateFriendly","getMonthDateFriendlyFull","getDayAbbreviation","day","isWeekend","isSunday","adjustDayValue","days","xSunday","newDate","adjustMonthValue","months","setMonth","isEqual","testDate","getDaysBetween","Math","floor","getTime","getMonthsBetween","isValid","isAfter","addDay","getlastDayOfMonth","getFirstDayOfMonth","getFirstDayOfWeek","getFirstDayNumber","Number","getP","precision","toPrecision","contains","v","i","length","unique","arr","push","String","getBool","test","capitalizeFirstLetter","charAt","toUpperCase","slice","FD","window","PAGE","$","me","child","getAfterControlEvent","data","getAfterSiteViewChangeEvent","val","getAfterPinStateChangeEvent","getViewProps","init","jQuery","fn","enableControls","options","currentOptions","extend","resetToolTips","CONTROL","setAutoComplete","setButton","setCheckBox","setCounter","setDatePicker","setDropDown","setEditor","setNumber","setPopover","setRadioButton","setSelect","setSortable","setStatus","setTableFrozenColumn","setTableInPage","setTableResize","setScroll","setText","setTextArea","setTimePicker","setUrl","setExcelNavigation","setToolTipDestroy","setToolTip","_typeof","o","Symbol","iterator","constructor","idleTimeout","undoInterval","CALLBACKPREFIX","URL_COMMON","modalLock","mprogress","Mprogress","parent","progressCount","timeSpentOnPageLock","setCallBackByPrefix","prefix","scrollDiv","offset","setPageDimension","SITE","setLeftNavControl","setTopControlElement","setTopPopovers","document","off","on","css","scrollLeft","setSiteSearchControl","setDefaultSiteView","setDisableEmptyATag","setSiteToolCollapse","setUIToTop","setToggleFullScreen","resetBodyContentMarginTop","Highcharts","setOptions","lang","thousandsSep","exporting","enabled","chart","plotShadow","animation","plotOptions","series","APPLICATIONHELP","getApplicationHelpModal","resetTimer","onmousemove","onkeypress","getTimezoneOffset","url","AJAX","setAJAX","e","currentTarget","attr","select","inactiveCount","timeTrackingInterval","visitID","dateOnly","initialOptions","params","model","ViewID","getViewID","PageUrl","location","href","callback","result","updateNotificationCount","notificationCount","recordTimeSpentOnPage","VisitID","setTimeTrackingInterval","setInterval","clearInterval","setDateOnly","resetDateOnly","total","text","toggleClass","startTracking","click","getUserProps","clickSelectsAllText","setUndo","isUndo","clearTimeout","setTimeout","clearUndo","hotkeys","filterInputAcceptingElements","setUndoHandler","siteTopNavigation","fixedTopContent","pageContent","tables","topNavHeight","abs","height","pageTopHeight","marginTop","top","floatThead","each","index","element","refresh","getFuctionFromString","root","string","scope","scopeSplit","split","undefined","getPosition","elem","el","$element","isBody","tagName","elRect","getBoundingClientRect","width","right","left","bottom","elOffset","scroll","documentElement","scrollTop","body","windowscroll","outerDims","getUID","random","getElementById","getWindowHeight","adj","getWindowWidth","setRowStaticHighlightFromTarget","tr","parents","find","removeClass","addClass","setBR2LN","html","trim","replace","setCallBackFromData","props","func","setCallBackPrefix","setPageAccess","PAGEACCESS","showModal","setCloseButton","preventDefault","hide","setComma","value","parts","toString","setControlItemOptions","targetElm","useparent","closest","targetData","callbackprefix","parentid","setDateParse","parseInt","substr","setFeedBack","FEEDBACK","placement","multi","cache","arrow","dismissible","closeable","title","style","content","onHide","onShow","modal","type","webuiPopover","setImpersonating","ishtml","setChangeLog","append","afterHtmlUpdate","remove","setModalLock","is","releaseDate","afterDataPartial","setCookie","setHighlightListGroup","id","container","dataID","children","setHtmlDecode","setHtmlEncode","setInputFocus","highLight","focus","setIsObject","setNoComma","noComma","RegExp","setPopoverOptions","padding","trigger","async","success","that","setTopProgressBar","start","unsetTopProgressBar","fastdom","mutate","end","setConfirmDialogue","message","dataTag","cancelDataTag","callbackPrefix","confirmLabel","cancelLabel","getModalLock","backdrop","keyboard","hideConfirmDialogue","hideCallback","ELEM","hasClass","setScrollTop","animate","setScrollTo","selector","setScrollToHorizontal","setTabIndex","list","tab","setTableOrder","setTableInsertByID","newID","newRow","setTextAreaFocus","setLIInsertByID","scrollHeight","delay","arguments","tooltip","sanitize","jQBrowser","msie","screenfull","toggle","setHighlightTableChange","tableCellList","settings","min","inDelay","outDelay","containerID","containerHoverID","scrollSpeed","easingType","containerIDhash","containerHoverIDHash","opacity","prepend","hover","sd","maxHeight","position","fadeIn","fadeOut","Outdelay","getFormFields","fldList","ctrlAR","fldName","concat","map","toArray","files","elemValue","isNaN","name","global","expires","date","setTime","toUTCString","domain","host","startsWith","cookie","outerHeight","isModalLocked","updateQS","uri","key","re","separator","indexOf","match","toQS","isArray","item","idx","qsString","join","param","pinElements","aa","self","pinTo","logError","application","actionName","capturedInputContent","exceptionMessage","err","Error","cause","details","appInsights","trackException","refreshTableAfterUpdate","tableElem","dataCallback","rowCounters","innerHTML","setLoadingButton","prop","unsetLoadingButton","setSelectOptions","control","valueField","textField","selectedValue","highlightRow","rowSelector","highlightClass","siblings","showChartModal","then","deparam","Title","highcharts","getLabel","setPageLabels","ajaxOutstanding","ajaxScheduled","originalLoadingElements","notify","getAjaxOptions","isloader","tag","cancelprevious","processData","loadingElements","contentType","handleAjaxQueue","ajaxCall","ajaxObj","xhr","readyState","abort","splice","handleAjaxSchedule","timeout","doAJAX","handleLoadingElementReset","elemObj","originalHTML","fixJsFunctions","eval","dataType","defer","Deferred","parseHTML","ajax","JSON","stringify","beforeSend","headers","ClientDateTime","moment","format","ClientTimeZone","done","status","responseText","currenturl","getResponseHeader","Notify","alert","reject","resolve","fail","jqXhR","textStatus","errorThrown","dataError","errorStatus","errorMsg","setAjaxFail","promise","getAJAX","rspnse","AnErrorHasOccurredISTeamNotified","defaults","form","submit","onFailure","setValidateContainer","datepicker","dT","ui","call","valid","validate","focusInvalid","hideModal","updateRow","target","removeRow","parentTable","_defineProperty","obj","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","input","hint","prim","toPrimitive","res","TypeError","_options","LANGUAGETYPE","eventsWired","ACTYPE","NONE","USER","CELL","DIVISION","CR","DIVISIONCELLUSER","DIVISIONCELLCR","DIVISIONCELL","DIVISIONCELLCRUSER","MONTHLYMETRIC","COMPANY","COMPANYLOCATION","UNIVERSALUSER","PROJECTLIST","FOCUSFACTORY","SUPERCELL","MACHINE","STATION","CUSTOMER","VIEWID","CRMENTOR","INNOTECPART","CUSTOMERPART","NONFAILUREINTERVENTION","DOWNTIMEISSUE","MANUALPROCESS","SCRAPDEFECT","TAG","EIGHTD","TECHNICALCR","CONTACT","DOWNTIMEWARNING","SPAREPARTLOCATION","FOXENTITY","USERCOMPLETELIST","PROJECTENTITYLIST","PROJECTMETRICACCOUNTS","OTEACCOUNTS","DIVISIONFOCUSFACTORYCELL","INNOTECDIVISIONCELLCRUSER","TRAININGMATRIXPLAYLIST","DIVISIONGROUPDIVISIONFOCUSFACTORYSUPERCELLCELLMACHINESTATION","MPTUSERS","DIVISIONFOCUSFACTORY","MANUALLABORCOMPANYLOCATION","BOTRESPOSIBILITYPARENT","ONEPPRESPOSIBILITYPARENT","ONEPP_RESPONSIBILITY_ALL","MPTUSERS_WITHCOMPANY","JOB","CONTPAQ_PRODUCTS","USERS_EXCEPT_FULLTIME","UNLINKED_SPARE_PART_PARTS","UNLINKED_CONTPAQ_PRODUCTS","PURCHASED_MATERIAL","NON_CONTPAQ_VENDORS","CONTPAQ_VENDORS_ONLY","TRAINING_MATRIX_TEMPLATE","JOB_EXCLUDE_LINKED","TRAINING_MATRIX_ENTITY","COMPANY_LOCATIONS_WITH_BOM","COMPANY_LOCATIONS_WITH_SALES_ORDER","NON_CUSTOMER_LOCATION","LEARNING_SUITE_RESOURCE_TASKS","CHILD_ACCOUNT","JOB_BY_USER","SHIPTO","COMPANY_LOCATIONS_WITH_BOM_SHIPTO","DIVISON_EXCLUDE_CORPORATE_DIVSISIONS","FOCUS_FACTORY_EXCLUDE_CORPORATE_DIVISIONS","SUPER_CELL_EXCLUDE_CORPORATE_DIVISIONS","NON_SUPPLIER_LOCATION","NON_CUSTOMER_SUPPLIER_LOCATION","INTERNALPARTS_WITHOUT_SAME_CELL","PONUMBER","PDT_PROJECT_NUMBER","SHIPTO_AND_CELL_LIST","PROJECT_COLLECTION","PACKAGING_MATERIAL","MATERIALPO_CONTPAQ_PRODUCTS","INNOTECPART_WITHOUT_CELLNAME","NON_PACKAGING_PURCHASED_MATERIAL","PROJECT_TASK_ENTITY","PURCHASED_MATERIAL_FROM_PACKAGING","COMPANY_WITH_ELECTRONIC_MANUFACTURER","COMPANY_LOCATION_AND_CELLLIST","CR_AND_USER","EIGHTD_WITH_NAME","MACHINE_PART","CUSTOMERPART_WITH_SHIPTO_DESCRIPTION","CUSTOMERPART_BY_SALESORDER","widget","_active","_isSelect","_hiddenItem","_clearItem","noedit","fieldafter","clearexit","usesubpage","_create","_handleFocusClick","_handleBlur","_handleKeyUp","_handleClickClear","initial","removeAttr","after","toLowerCase","parentCallBack","cursor","clearbtn","clearonload","flip","my","at","collision","autocomplete","minLength","autoSelect","autoFocus","source","request","response","term","inputProps","searchTerm","searchParams","searchparams","autoCompleteType","URL","_getDataSourceResult","event","stopPropagation","_activate","raw","acType","entityType","isCustomUserGroup","usertype","guid","isCumulative","close","_renderItem","ul","max-height","overflow-y","overflow-x","entitytype","userImage","appendTo","_setOptions","_super","data-tag","data-noedit","attach","_destroy","which","keyCode","prev","Name","parentID","ID","ParentID","StandardName","UserType","UserImage","ManagedName","ManagedID","DisplayName","EntityType","purchasedMaterialID","PurchasedMaterialID","accountID","AccountID","unitType","UnitType","parentAccountID","ParentAccountID","firmZoneDays","FirmZoneDays","currencyType","CurrencyType","unitPrice","UnitPrice","costerCost","CosterCost","standardCost","StandardCost","PartName","PartID","ID8D","EntityName","EntityID","ParentChildName","ShortDescription","D8DID","LocationName","LocationID","AccountName","contpaqProductID","ContpaqProductID","contpaqName","packageQty","PackageQty","JobName","JobID","PartNumberWithRevision","description","Description","UnitOfMeasureID","vendorPartNumber","VendorPartNumber","CurrencyId","IsContpaqVendor","IsCumulative","IsCustomUserGroup","NameWithParent","translationLabels","LanguageType","JobNameWithType","jobidtype","JobIDType","jobtype","JobType","foxitemid","FOXItemID","PDTProjectNumber","PartNumber","GUID","Initial","salaryType","SalaryType","email","Email","CustomerPartNumber","CustomerPartDescription","autocomplete2","_delay","_buttonItem","_deleteItem","show","showonload","stoppropagation","lockfor","_handleClick","_handleKeyDown","_handleHideDelete","_handleConfirm","_setShowHide","_setFormDelete","_setRowEdit","_setTabMenu","_setControlBarDelete","_setModalConfirm","_setToggle","_setCallback","_hideDelete","button","td","first","gParent","aR","next","lockedBtn","wireEvent","PLUGIN","displayDate","dayHeight","onFoo","dataAR","FDCalendar","_elem","_defaults","_name","_dayAR","_htmlAR","startDate","_buildDayArray","_drawCalendar","_convertData","_initCalendar","firstDate","firstDayNum","temp","curDate","theDate","dayNumber","isTodayClass","dayClass","len","d","DateValueString","utc","toDate","_getIsActive","checkDate","isActive","MakeCalendar","fdCalendar","eventsAreSet","box","locked","reset","resetCheckBox","getCheckBox","NAMESPACE","clickCheckBox","handleKeypress","change","charCode","isFunction","updateCheckbox","enable","max","getCounter","clickCounter","clickedElement","EARLIEST_DATE","LATEST_DATE","allownull","allowclear","mindate","maxdate","showleft","iswhite","getDatePicker","setFormat","colorClass","before","btn","numberOfMonths","minDate","maxDate","defaultDate","buttonImageOnly","buttonText","showOn","onSelect","setCallback","beforeShowDay","dayOfWeek","size","datestring","btnClear","relateditem","setdefaultValue","aVal","getDropDown","isddelem","relatedTarget","table","row","CK_HIGHLIGHT_BUTTON_NAME","CK_IMAGE_BUTTON_NAME","getUserLaguageOrDefault","supportedLangs","userLang","navigator","language","userLanguage","found","some","CKEDITOR","tools","array","zip","array1","array2","limited","strategyoption","removeimageicon","allowimage","customConfig","removePlugins","resize_enabled","removeButtons","forcePasteAsPlainText","removeDialogTabs","enterMode","ENTER_BR","shiftEnterMode","ENTER_P","extraPlugins","autogrow_onstartup","extendedOptions","allowhighlight","allowedContent","toolbarGroups","groups","imageuploaded","youtube_responsive","youtube_related","youtube_privacy","youtube_disabled_fields","strategyOptions","imageOptions","uploadUrl","filebrowserImageUploadUrl","autoGrow_onStartup","ckeditor","editor","_handleFocus","_handleChange","_fileUploadResponse","_changeTimer","_handleChangeDebounce","div","createElement","stop","fileLoader","upload","fileName","lastIndexOf","evt","cancel","arrowNav","enterNav","tabNav","ctrlNav","pageNav","homeEndNav","selectedRowClass","selectedColumnClass","selectedCellClass","selectOnFocus","setOnBlur","columnSelector","inputSelectors","pageSize","_setTarget","UPARROW","DOWNARROW","HOME","ctrlKey","setIndex","getRowIndex","seek","RIGHT","getColumnIndex","DOWN","END","getColumnCount","LEFT","getRowCount","UP","LEFTARROW","RIGHTARROW","TAB","shiftKey","ENTER","PAGEUP","PAGEDOWN","ESC","setSelectionRange","column","rowElm","getRow","colElm","getColumn","_highlightSelected","_handleResize","round","innerHeight","fields","_handelKeyDown","_targetElm","_target","setTarget","seekRow","seekColumn","foundRow","rowCount","foundColumn","columnCount","inputElm","blur","excelNavigation","ControlMessage","setSpinnerOff","setSpinner","setSpinnerDelay","setMessage","setMessageContainer","comma","islocked","getNumber","setFocus","setValidate","inArray","metaKey","setReset","valueOf","Locked","toFixed","getPopover","clickPopover","setHighlightRow","iconClasses","clickRadioButton","radioButtonContainer","setupRadioButtonGroups","updateRadioButtonGroup","radioButtonGroup","color","alwaysVisible","destroy","resize","distance","disablefadeout","fullscreen","axis","wheelstep","getScroll","viewProps","siteView","alwaysvisible","setContainer","slimScroll","vpHeight","clientHeight","childCount","viewListMultiplier","setScrollHeight","scrollDelay","disableFadeOut","wheelStep","display","setScrollAfterSiteView","getSelect","changeSelect","handle","onStart","scrollContainer","afterStop","localName","railVisible","checkSlimScroll","helper","scrollByY","$sortable","sortable","placeholder","forcePlaceholderSize","sort","items","one","getSortable","star","out","in","getStar","clickStar","setStar","nostatus","red","yellow","green","blue","resetStatus","resetType","getStatus","clickStatus","NUMBERTAB","SELECTTAB","TEXTTAB","tbody","tableId","cellList","cellInRow","currentCell","lastElem","inputDefaults","selectDefaults","textDefaults","setTabbing","startCell","tempCellList","not","cell","getCellInRow","rowNumber","setNumberTab","setSelectTab","setTextTab","tempCell","newVal","onTDFocus","getElement","frozencolumns","_this","_fixHeadersAndColumns","ResizeObserver","entries","observe","querySelector","cols","_cols","$table","$hTrs","cTop","_","thTop","zindex","colLeft","$cols","cLeft","outerWidth","$thCols","setTableFrozenCol","tabelFrozenColumns","frozenColumnCount","frozenHeight","frozenTableAfter","pageScroll","scrollTableViewport","frozenTableViewport","scrollHeaderViewport","frozenHeaderViewport","scrollTableContainer","frozenTableContainer","scrollHeaderContainer","useWindowScroll","setWindowScrollFunctionality","frozenTableNotify","displayedTooSmallMessage","recalculateFrozenTableHeadHeight","frozenHeaderRowList","scrollHeaderRowList","frozenHeaderHTMLViewport","scrollHeaderHTMLViewport","resetHeight","newHeaderHeight","thisRowHeight","offsetHeight","recalculateFrozenTableBodyHeight","frozenBodyRowList","scrollBodyRowList","measure","recalculateFrozenTableViewport","tableWidth","innerWidth","headerHeight","scrollbarHeight","handleResize","frozenBodyHTMLViewport","scrollBodyHTMLViewport","parseFloat","frozenColgroup","scrollColgroup","frozenTableWidth","scrollTableWidth","col","headerIndex","cloneNode","dataset","setAttribute","appendChild","colSpan","frozenThead","j","frozenHeaderTableElement","className","frozenHeaderHTMLContainer","scrollThead","k","scrollHeaderTableElement","scrollHeaderHTMLContainer","bodyContent","newRowHeight","cellIndex","frozenTbody","l","frozenBodyTableElement","frozenBodyHTMLContainer","scrollTbody","scrollBodyTableElement","scrollBodyHTMLContainer","syncRight","syncLeft","browser","msedge","addEventListener","deltaMode","deltaY","deltaX","redrawFrozenTableBody","bodyHTML","frozenTableBody","scrollTableBody","frozenRow","scrollRow","redrawTableBody","redrawFrozenTableHead","headHTML","headerHTML","thead","frozenTableHead","scrollTableHead","redrawTableHead","recalculateFrozenTableHeight","showScrollTableColumns","startCol","endCol","useRange","thMainList","_tableWidth","filter","recalculateScrollTableWidth","hideScrollTableColumns","_sortCtrl","none","asc","desc","_scrollDelay","_sortTHList","_currentSortID","collapserow","fixedheader","fixedcontainer","defaultScrollbarWidth","zIndex","_setSortableColumn","offsetParent","_setFixedHeader","_setCollapseRow","_handleColumnSort","_handleCollapseHandle","headerfixset","sizingrow","getSizingRow","$fthCells","support","perfectScrollbar","firstTH","collapseIcon","isrowcollapsed","collapseElem","sorttag","sortid","th","direction","initialdir","sortfield","_setSortColumnIcon","resetFixedTableHeader","tableInPage","_highlightClass","_highlightChild","childid","ishighlight","ishighlightFirstRecord","ishighlightborder","sortabletag","headersort","useheaderrow","childlength","childwrapper","_setHeaderSort","_initChildTable","_setTableResize","_setSortable","_setHighlightRow","_clickColumnSort","_clickCollapseTable","_highLightByTarget","handles","_stopResize","_resizeColGroup","resizable","originalSize","newwidth","diff","_afterStop","_helper","containment","counter","colgroupHTML","showColumns","hideColumns","resetTableWidth","getTableData","tableResize","setEvents","onFocus","setTableTab","hitEnter","repeat","iskeyup","submitevent","getText","setBlur","controlDelay","setKeyUp","autosizeonload","autosize","disableresize","min-height","_hitEnter","textarea","ignoreEvent","timepicker","timeFormat","dropdown","time","calloutManager","tourItem","tour","getTour","stepList","getTourProgress","listHTML","step","hopscotch","startTour","setTopNavTour","onCTA","handleOnCTA","showCTAButton","ctaLabel","showPrevButton","smoothScroll","onClose","handleClose","onEnd","handleEnd","steps","i18n","nextBtn","doneBtn","prevBtn","TourStep","TourCompleted","getCurrStepNum","endTour","removeAllCallouts","getState","setTour","getCalloutManager","console","log","isTrigger","useParent","parentId","BACKSPACE","_triggerCallback","outerWraper","schemaWraper","schemaDropdown","wrap","unwrap","getUrl","REGEX","EMAIL","setValidateEvent","validateInput","cancelBubble","stopImmediatePropagation","validateForm","customMessage","suppressAlert","validateHidden","validSubmit","validateIgnore","regex","jqInput","required","tempRegex","validateAgainst","Validate","hubProxy","hubName","functionList","setWebSocket","userOptions","connection","client","hub","error","getConnectionHub","BASICSTAR","DEFAULTS","starWidth","normalFill","ratedFill","numStars","maxValue","rating","fullStar","halfStar","readOnly","spacing","rtl","multiColor","onInit","onChange","onSet","starSvg","MULTICOLOR_OPTIONS","checkPrecision","minValue","isDefined","hexRegex","hexToRGB","hex","hexValues","exec","r","g","b","getChannelValue","startVal","endVal","percent","RateYo","$node","node","get","empty","percentOfStar","percentOfSpacing","containerWidth","$groupWrapper","$normalGroup","$ratedGroup","currentRating","isInitialized","showRating","ratingVal","numStarsToShow","ceil","setRatedFill","setContainerWidth","setStarWidth","newWidth","starHeight","setSpacing","newSpacing","margin-left","setNormalFill","newFill","fill","percentCovered","colorOpts","startColor","endColor","getColor","setRtl","newValue","setMultiColor","colorOptions","setNumStars","setMaxValue","setRating","setPrecision","setHalfStar","setFullStar","calculateRating","remainder","halfStep","isHalfStar","isFullStar","nodeStartX","nodeEndX","pageX","calculatedRating","calcPrcnt","remPrcnt","setReadOnly","unbindEvents","onMouseEnter","onMouseLeave","onMouseClick","checkBounds","setOnInit","method","setOnSet","setOnChange","a","check","userAgent","vendor","opera","resultantRating","apply","collection","firstPart","secondPart","methodName","args","option","optionName","getInstance","instance","_rateYo","rateYoInstances","$nodes","existingInstance","returnVal","rateYo","topControlClickedElement","DELETE_ELEM","DELETE_CONFIRM","DELETE_CANCEL","SELECT_PREV","SELECT_NEXT","SELECT_ELEM","INPUT_ELEM","INPUTKEYUP_ELEM","BUTTON_ELEM","COLLAPSE_ELEM","TOGGLE_ELEM","DATENAV_SELECT","autocompletetype","autocompleteinitialvalue","DIVISION_CHILD_PREV","DIVISION_CHILD_NEXT","COMBOTYPE","fd","parentTag","activate","isSelect","getControlSet","searchType","getDataSource","iscustomusergroup","setAutoCompleteContainer","onloadvalue","enablearrows","tempDate","handleArrowsAgainstMaxAndMinDate","click.pagectrl_datePickerPrev","datePicker","addedTime","setDatePickerPrev","click.pagectrl_datePickerNext","currentDate","setDatePickerNext","click.pagectrl_datePickerToday","setDatePickerToday","dateInputs","startDateInput","endDateInput","currentInput","endDate","validateDateRange","handleDateRangeUpdate","setDateRange","setInitialValue","setDivisionChildChange","comboType","childCtrl","allCell","enableArrows","ar","labelallcells","labelselectcell","handleArrows","setSelectDivCellComboChange","setSelectDivFFCellComboChange","allSuperCell","labelallsupercells","labelselectsupercell","setSelectDivFFSuperCellComboChange","labelallff","FocusFactoryID","labelselectff","setSelectDivFFComboChange","controlParent","arrowPrev","arrowNext","disableLeftArrow","enableRightArrow","enableLeftArrow","disableRightArrow","setInputBlur","setSelectChange","docElem","focus.pagectrl_input","blur.pagectrl_input","keyup.pagectrl_input","focus.pagectrl_inputkey","keyup.pagectrl_inputkey","input.pagectrl_inputkey","click.pagectrl_btn","click.pagectrl_btncollapse","click.pagectrl_toggle","focus.pagectrl_select","change.pagectrl_select","click.pagectrl_selectPrev","click.pagectrl_selectNext","combotype","click.pagectrl_divisionFFPrev","click.pagectrl_divisionFFNext","click.pagectrl_FFPrev","click.pagectrl_FFNext","click.pagectrl_dateNavPrev","dateNavSelect","selectIndex","eq","click.pagectrl_dateNavNext","click.pagectrl_dateNavToday","todayDate","optionDate","setDateNavToday","focus.pagectrl_dateNavSelect","change.pagectrl_dateNavSelect","enablePrev","enableNext","setDateNavSelect","click.pagectrl_delete","add","ctrl","ctrlName","foxDate","foxDateValue","activeInfo","__activeCtrl","_data","controlName","controlValue","divisionID","cellID","entityID","history","replaceState","updateUrlState","setToggle","setTopControlElementEvents","showTopControl","dontFireResize","hideTopControl","replaceTopControls","isReady","leftNav","triggerIcon","fixedTopContainer","pageContainer","ICONSTATE","CLICKSTATE","pinstate","clickstate","openLeftNav","clickSideNavIcon","setPinStateDB","setUnPin","setPin","resizeEvent","createEvent","initUIEvent","dispatchEvent","applicationCode","getApplicationCode","navIsPinned","LeftNavClose","searchInput","siteSearchType","getSiteSearchResults","curSearch","getSearchFromDB","currentTab","ActiveTab","appsList","CurrentView","teamList","docsList","crList","entityList","historyList","SearchHistoryView","favoriteViewList","FavoriteViewHTML","appsCount","ApplicationCount","teamCount","TeamCount","docsCount","DocumentCount","crCount","CRCount","entityCount","EntityCount","searchTermCount","TotalSearchCount","tabList","setSearchOnload","searchTabs","getTabSearchResults","tabType","tabElem","popoverid","current","poptarget","isinput","popList","elementhash","elementid","hideAll","input_target","activeElement","getSearchResults","originalEvent","setDocumentEvents","offsetTop","pop","currentLocatoin","pathname","scrollBy","showPopover","setGlobal","hideAllButMe","setSiteSearch","setPopoverEvent","SiteView","PinState","updateSiteViewDB","getUserExplorerData","messageModalContainer","MODAL_ELEM","setSaveButton","ForID","IsComplete","AuthorID","Text","CoachText","GrowthType","ShowOnEval","FeedbackType","PeriodID","PerformanceLevel","PerformanceLevelCoach","frmElem","URL_EVALS","handleFeedbackCRUD","loadContainer","LEARNINGSUBSCRIPTION","modalOptions","updateCallback","hideCallBack","handleCRSubscriptionCRUD","containerElem","deletTag","action","handleSubscriptionCRUD","URL_LEARNINGSUITE","deleteTagId","isCR","getSubscriptionList","showLearningSubscriptionModal","handleTagSubscriptionCRUD","PROJECTEDIT","applicationID","viewID","videoList","currentAppID","currentViewID","videojs","controls","autoplay","preload","dispose","languageType","ApplicationInstructions","ApplicationHelpText","ViewInstructions","getApplicationHelpTranslation","FAVORITEVIEW","setFavoriteViewCRUD","appID","getFavoriteViewList","viewLinkInAppList","SS_APPS_CONTENT","handleUserFavoriteViewDeleteCRUD","showLoader","viewOrderList","ApplicationID","OrderBy","viewList","handleUserFavoriteViewOrderCRUD","MEDIA_MANAGER","currentFile","ctx","canvas","pastedImage","origHeight","origWidth","addCallback","deleteCallback","uploadMediaHideFunction","manageMediaHideFunction","mediaList","currentMediaID","permissionType","showTitleAndDescription","showWatermark","URL_MEDIA","UPLOAD_MODAL","MANAGE_MODAL","skipDelete","showArrows","SAVE_MEDIA","CLEAR_MEDIA","CLICK_IMAGE","EDIT_MediaTitle","EDIT_MediaComment","DELETE_IMAGE","CLICK_PREV","CLICK_NEXT","loadMediaUploader","showTitleAndDesc","Dropzone","autoDiscover","opts","maxFilesize","maxFiles","fileParam","userguid","entityname","username","dropzone","dZ","paramName","autoProcessQueue","uploadMultiple","parallelUploads","maxThumbnailFilesize","acceptedFiles","clickable","myDropzone","file","removeAllFiles","clearRect","reader","FileReader","onload","image","Image","maxWidth","drawImage","src","readAsDataURL","handleCallback","accepted","setMediaDropzone","CLIPBOARD_CLASS","getImageDetails","mediaID","clearCanvas","font","fillStyle","fillText","canvas_id","autoresize","_self","getContext","pasteCatcher","paste_mode","ctrl_pressed","on_keyboard_action","on_keyboardup_action","paste_auto","cssText","marginLeft","firstElementChild","paste_createImage","clipboardData","blob","getAsFile","webkitURL","createObjectURL","setAfterControlEvent","originalHtml","fieldData","formData","FormData","MediaTitle","MediaComment","afterData","toDataURL","imageData","mediaTitle","mediaComment","saveImage","mediaItem","MediaID","handleMediaFieldCRUD","handleMediaDeleteCRUD","handleImageNavigation","CLICK_FULLSIZE","viewFullSize","addFunction","hideFunction","tem","ua","M","browserDetect","version","appName","appVersion","displayIncompatibleMessage","closeMediaUploader","loadMediaManager","idList","firstID","deleteFunction","permission","skipDeleteImage","showWatermarks","Images","closeMediaManager","getMediaPermissions","All","Author","ReadOnly","URL_PAGEACCESS","REPORT","recipients","realDateQueryString","entityTypes","frequencyType","relativeDateMode","entityFilterType","COPY_FAVORITE","SAVE_FAVORITE","SELECT_FAVORITE","DELETE_FAVORITE","USE_RELATIVE_DATES","RELATIVE_DATE_MODE","SAVE_SCHEDULE","SELECT_SCHEDULE","DELETE_SCHEDULE","ADD_OWNER","DELETE_OWNER","SELECT_ENTTIY_TYPE","FREQUENCY_TYPE","returnRecipientList","entityFilterList","returnFavoriteListByUserID","selectedID","FAVORITE_REPORTS","FAVORITE_SELECT","returnScheduleListByUserID","returnScheduleByID","parse","returnFavoriteListByApplicationCode","NAV_FAVORITE_LIST","applyRelativeDates","qsElem","UseRelativeDates","qs","today","toDateString","RelativeDateMode","weeks","years","month","removeRelativeDates","QueryString","offsetParts","GetManageFavoriteScheduleModal","getAdditinalData","FavoriteID","confirm","handleFavoriteCRUD","returnFavoriteByID","handleFavoriteActiveCRUD","EntityFilterList","FrequencyDay","FrequencyType","FrequencyDayWeek","FrequencyDayMonth","handleScheduleCRUD","handleScheduleDeleteCRUD","changeFrequencyType","parentBox","formFields","SecondaryEntityID","EntityFilterType","CustomUserGroupName","SecondaryEntityName","handleAddRecipient","handleRemoveRecipient","ulElem","URL_LEARNING","isEnroll","getPlaylistOwnerEntityOptions","SELECT_FILTER_TYPE","secondaryFilterList","getAdditionalFilterOptions","LOCATIONS","isEdit","codeQualifierList","nameInput","URL_CONTACTMANAGER","CODEQUALIFIER_DATA","locationOptions","locationID","editCallback","editAfterAdd","addMultiple","allowExisting","setLocationItem","Phone","Fax","IsActive","IsManualLabor","ParentName","Address1","Address2","Street","ExteriorNumber","InteriorNumber","Colony","City","Municipality","State","ZipCode","CountryType","Country","Notes","HasInnotecLogin","PaymentTermID","ShippingTermID","ShippingAccountID","ShippingAccountNumber","DockNumber","LocationContactType","RequireReturnableToteSetter","IsTrailerNumberRequired","IsTrackingNumberRequired","IsDockNumberRequired","IsPortRequired","IsClassRequired","IsCustomTransitDaysRequired","PackslipNote","DefaultPartLabelTemplateID","DefaultPartLabelPrinterID","HasImporter","TaxID","SendDailyShipmentNotice","BatchingAndSequencing","DisplayIPPTag","handleLocationFieldCRUD","updateItem","currentTag","lastModifiedInfo","LastModifiedBy","userItem","standardName","handleImporterFieldCRUD","resolveAddLocation","newLocationID","isNew","clearAddLocationFields","getEditLocationModal","confirmIsActive","vendorId","returnPurchasedMaterialByVendorModal","returnCodeQualifierByLocation","reload","replaceWith","HTML","LabelList","getParentCompanySearchPopover","WebuiPopovers","setCompanySearchPopover","getAddModal","preSelectedCompanyID","selectedParentCompanyID","PreSelectedCompanyID","selectedParentCompanyName","getAddLocationModal","getEditModal","SupplierNumberList","ShipFromID","SupplierNumber","CodeQualifierList","newLocation","handleLocationAddCRUD","selectParentCompany","parentCompanyButton","handleCompanyAddCRUD","getParentCompanyListBySearch","handleSecondModalClose","locationContactsElem","hideShowMPTEmailReportCheckBoxes","handleCountryTypeChange","WeightType","PlantNumber","DefaultContainerLabelTemplateID","DefaultMasterLabelTemplateID","ReceiveDailyMPTReport","handleContactReceiveDailyMPTReportCRUD","handleContactAccountRepCRUD","ShipToID","handleSupplierNumberCRUD","IDCode","IDQualifier","duplicate","handleLocationCodeQualifierCRUD","clone","handleLocationCodeQualifierDeleteCRUD","IsShipTo","IsBillTo","MaxDaysForDemandCalculation","DiscountPercentage","DiscountWeekStart","DiscountWeeks","UseSkidLabel","DefaultSkidLabelSerialConstant","DefaultSkidLabelTemplateID","DefaultSkidLabelPrinterID","DefaultSkidLabelQuantity","PURCHASEORDER","labelList","approvalUpdateItem","purchaseOrderCoSignersID","lowestPurchaseOrderCoSignerID","isLastCosigner","purchaseOrderOptions","URL_IAS","oldPrice","totalAmount","isdraft","collapseHardCopyDetails","poModulePerspectiveType","iasApprovalStatus","addDefaults","showCallback","showCreateAnotherPOButton","perspectiveType","duplicateDefaults","poID","editDefaults","viewDefaults","approveDefaults","updateApprovalCallback","updateAlignmentCallback","isAlignment","prefillDefaults","prefilledPOItem","disabledFieldsItem","validateLineItem","addNotePopup","lineitemChangeConfirmed","forceSubmitWithoutAttachment","showAttachment","isDirty","resubmitIsRequired","questionsChanged","setPOApprovalUpdateItem","POID","ApprovalStatus","Comment","PurchaseOrderCoSignersID","IsIssued","ApprovalWaitForPreviousApprover","activeControl","hasError","handlePOSubmit","isExport","paymentTerms","innerText","attachmentCounter","showAddNoteModal","getTotalAmount","replaceAll","getOldPrice","checkForAmountLimits","originalAmount","difference","isFinanceCRDR","isResubmitRequired","oldDivision","newDivision","oldParentAccount","newParentAccount","oldAccount","newAccount","oldCoSigner1","newCoSigner1","handleApprovalStatus","URL_IAS_MAIN","trPO","getSinglePORow","consignerID","URL_IAS_COSIGN","CosignerUserID","MANAGE_APPROVER_TABLE","getApprovalRequests","isCommentRequired","getPOModule","UpdatePOModule","modalForm","bind","handlePOModuleCleanup","hideApproveDialogue","showPOModal","preparePopUpPOConfirmation","isLast","waitTag","confirmTag","setPopupDialoge","handleAddNote","note","approvalStatus","handlePurchaserComment","hasWaitingUser","returnRevisionLineList","lineItemList","getLineItemList","purchasedOrderID","POItemID","PartDescription","Quantity","Price","ExpectedDeliveryDate","LineItemType","BeforeUpdatePOModule","isDraftNewOrDuplicate","isAdvisorFixed","Clipboard","handlePurchaseOrderAddCRUD","link","handlePurchaseOrderUpdate","getAddPOModal","getEditPOModal","getViewPOModal","getDuplicatePOModal","getApprovePOModal","handleModalClose","getPrefilledPOModal","getMigratePOModal","placeNewVendorInPO","getEditVendorModal","lineItemElem","deleteLineItem","receivedQty","sectionID","expandCollapseSection","LINE_ITEMS_CONTAINER","handleSaveDraft","parentRow","handlePurchasedMaterialSelect","info","handleContpaqLineItemSelect","handleETAUpdate","invalidFilename","secondarykeyid","File","search","poid","AttachmentType","$modal","uploadFile","deleteFile","addCallBack","vendorID","handleMigratePurchasedMaterialSelect","lineItemsList","handlePurchaseOrderMigrate","purchaserComment","comment","openNewRevisionModal","advisorID","AdvisorID","comments","Comments","createMaterialPurchaseOrderRevision","addRevisionLineItem","addPurchasedMaterial","_this2","addContpaqLineItem","PROJECTADD","projectOptions","showEdit","showAdd","showLink","linkMultiple","metricAccountList","linkCallback","entityTypeEnum","inputParams","newProjectID","projectList","ProjectTitle","OwnerID","StartDate","EndDate","AnnualValue","ProjectScope","DefinitionOfDone","IsTop50","Top50Category","EstimatedHours","Custom","URL_PROJECTS","handleProjectAddCRUD","placeNewJobInProjectModule","callBackData","jobID","NewJobID","data-value","data-initial","getLinkProjectList","linkedProjects","cancelPrevious","handleAddProjectModalCleanup","loadEditProjectModal","showProjectModule","loadAddProjectModal","projectIDList","InputParams","getAddProjectModal","projectTitle","TIMETRACKER","getCreateJobModal","initialTitle","selectRelatedEntity","annualValue","selectedEntityType","validateEntityType","PROJECTADD_MODAL","displayTopCategory","FilterID","SearchTerm","StatusType","setProjectSearch","rows","handleLinkProject","toggleSaveButton","annualValueElem","projectCompletedDate","taskID","metricItem","URL_MODULES","LINK_LIST","callbackFunction","currentProjectID","EDIT_ProjectTitle","EDIT_OwnerID","EDIT_EntityID","EDIT_Priority","EDIT_IsTop50","EDIT_StartDate","EDIT_ForecastedCompletionDate","EDIT_EndDateInitial","EDIT_ActualCompletedDate","EDIT_People","EDIT_Plan","EDIT_Action","EDIT_IsComplete","EDIT_IsComplete_Promote","EDIT_Tasks_IsComplete","EDIT_WasSuccessful","EDIT_Comment","EDIT_ProjectScope","EDIT_DefinitionOfDone","EDIT_Top50Category","CREATE_JOB","EDIT_JobID","EDIT_EstimatedHours","EDIT_Custom","CHECK_COLLECTION_PROJECT","CHECK_METRIC","EDIT_METRIC_IsRequired","EDIT_METRIC_IsRequired_Date","EDIT_IsFMEARPNReduction","EDIT_FMEALineNumber","EDIT_CurrentRPN","EDIT_RPNReduction","EDIT_SafetyType","ADD_ENTITY","DELETE_ENTITY","SAVE_LINK","DELETE_LINK","DELETE_PROJECT","TOGGLE_SECTION","UPLOAD_FILE","REMOVE_FILE","ADD_IMAGE","CLICK_IMAGE_WITH_PREFIX","ADD_TASK","DELETE_TASK","EDIT_TASK_Title","EDIT_TASK_EntityID","EDIT_TASK_OwnerID","EDIT_TASK_ForecastedCompletionDate","EDIT_TASK_ActualCompletionDate","EDIT_TASK_ImpactOffset","EDIT_TASK_ImpactAccountID","EDIT_TASK_ImpactType","EDIT_TASK_CalculationType","EDIT_TASK_PartID","EDIT_TASK_PurchasedMaterialID","EDIT_TASK_PerPieceValue","EDIT_TASK_IsSoftCost","EDIT_TASK_Duration","EDIT_TASK_Probability","EDIT_TASK_IsValidated","EDIT_TASK_IsCompleted","EDIT_TASK_Comment","EDIT_TASK_OneTimeValue","EDIT_TASK_AnnualValue","EDIT_TASK_TaskStatusType","TASK_MONTHLY_METRIC","EDIT_PROJECT_ForecastedCompletionDate","HIDE_MODAL","setProjectItem","People","Action","Plan","IsOTE","Priority","ForecastedCompletionDate","ActualCompletedDate","EndDateInitial","IsLate","Probability","ImplementationCost","AnnualWithImplementation","EffortHour","EffortValue","IsOTEValidated","setProjectCollectionItem","filterID","TaskID","setProjectMetricItem","SafetyType","IsFMEARPNReduction","FMEALineNumber","CurrentRPN","RPNReduction","getEditProjectModal","addTask","showTaskSection","projectID","handleProjectAddTaskCRUD","addFileAttachmentModalElement","removeFileAttachmentModalElement","handleEditProjectModalCleanup","setProjectFieldCRUD","n","projectItem","PROJECTEDIT_MODAL","returnProjectLastUpdatedStatus","handleProjectFieldCRUD","handleProjectForecastCompletionDateCRUD","getForecastDate","getProjectForecastCompletedDate","handleProjectIsCompleteCRUD","CompleteProjectTasks","getProjectCompletedDate","callbackData","initialLI_FINANCIALIMPACT","handleProjectEntityOwnerCRUD","handleProjectCollectionCRUD","handleFilterProjectAddCRUD","handleFilterProjectDeleteCRUD","checkProjectMetric","handleProjectTaskMonthlyMetricCRUD","returnMetricList","handleProjectTaskMonthlyMetricDeleteCRUD","handleProjectIsRequiredCRUD","returnProjectAttachmentList","returnProjectImageList","handleImageUpdateCRUD","removed","handleProjectMediaDeleteCRUD","UPLOAD_MEDIA_MODAL","handleProjectMediaAddCRUD","returnTasksByProject","handleProjectTaskValidation","enableFocus","PROJECT_TASK_TABLE","last","setProjectTaskFieldCRUD","taskItem","ProjectID","ImpactType","ImpactOffset","ImpactAccountID","CalculationType","PerPieceValue","OneTimeValue","Duration","IsValidated","IsCompleted","IsSoftCost","TaskStatusType","setProjectTaskItem","ANNUAL_VALUE","handleProjectTaskCRUD","openTaskMonthlyMetricModal","WasSuccessful","handleProjectTaskStatusCRUD","handleProjectTaskIsComplete","MetricID","IsRequired","openSelectMonthModal","RequiredMonthDate","associateProjectEntity","disassociateProjectEntity","linkInput","linkList","LinkURL","handleLinkAddCRUD","handleLinkDeleteCRUD","documentid","handleProjectAttachmentDeleteCRUD","imageList","handleProjectTaskDeleteCRUD","dateTask","dateProject","URL_TIMETRACKER","editing","jobOptions","subscribedUserList","jobType","createJob","createJobModalItem","JobPoList","getPoList","JobTypeID","IsValid","Message","handleJobAddCRUD","editJobModalItem","subscribersIDList","handleJobFieldCRUD","checkSimilarJobs","jobModalItem","jobName","JobId","showJobModule","handleEditJobModalCleanup","handleCapXPassThruItem","jobTypeID","capXPassThruItemSelect","Option","getAddPDTProjectNumberModal","hasJobs","updateJobPoList","poId","customPoNumber","addSubscribedUser","subscribedUsers","getEditJobModal","handleJobTypeChange","removeSubscribedUser","removeJobPoItem","LINK8D","modalCallback","allowMultiple","loadLink8DModal","_8DIDList","allowMultipleSelections","functionOnUpdate","functionOnHide","URL_8D","getLink8DModal","search8DList","handle8DCheck"],"mappings":"AAAA,aAcAA,KAAKC,mBAAqB,IAAIC,MAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACjHF,KAAKG,uBAAyB,IAAID,MAAM,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACtJF,KAAKI,iBAAmB,IAAIF,MAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC5EF,KAAKK,qBAAuB,IAAIH,MAAM,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACxGF,KAAKM,OAAS,MAOdN,KAAKO,GAAK,SAAUC,GAChB,OAAQA,EAAI,GAAKA,EAAI,EAAI,GAAK,KAAOA,GAazCR,KAAKS,UAAUC,gBAAkB,WAC7B,OAAQV,KAAKO,GAAGI,KAAKC,WAAa,GAAM,IAAMZ,KAAKO,GAAGI,KAAKE,WAAa,IAAMF,KAAKG,eAKvFd,KAAKS,UAAUM,aAAe,WAC1B,OAAQf,KAAKO,GAAGI,KAAKC,WAAa,GAAM,IAAMZ,KAAKO,GAAGI,KAAKE,YAO/Db,KAAKS,UAAUO,sBAAwB,WACnC,IAAIC,EAAW,IAAIjB,KAAKW,KAAKO,QAAQP,KAAKE,UAAYF,KAAKQ,UAA8B,IAAlBR,KAAKQ,UAAkB,EAAI,KAClG,OAAQnB,KAAKO,GAAGU,EAASL,WAAa,GAAM,IAAMZ,KAAKO,GAAGU,EAASJ,WAAa,IAAMI,EAASH,eAKnGd,KAAKS,UAAUW,yBAA2B,WACtC,OAAQpB,KAAKO,GAAGI,KAAKC,WAAa,GAAM,IAAMD,KAAKG,eAIvDd,KAAKS,UAAUY,gBAAkB,WAC7B,OAAOV,KAAKG,eAKhBd,KAAKS,UAAUO,sBAAwB,WACnC,IAAIC,EAAW,IAAIjB,KAAKW,KAAKO,QAAQP,KAAKE,UAAYF,KAAKQ,UAA8B,IAAlBR,KAAKQ,UAAkB,EAAI,KAClG,OAAQnB,KAAKO,GAAGU,EAASL,WAAa,GAAM,IAAMZ,KAAKO,GAAGU,EAASJ,WAAa,IAAMI,EAASH,eAKnGd,KAAKS,UAAUa,wBAA0B,WACrC,OAAOtB,KAAKK,qBAAqBM,KAAKQ,UAAY,KAAOnB,KAAKC,mBAAmBU,KAAKC,YAAc,IAAMZ,KAAKO,GAAGI,KAAKE,WAAa,KAAOF,KAAKG,eAKpJd,KAAKS,UAAUc,8BAAgC,WAC3C,OAAOvB,KAAKI,iBAAiBO,KAAKQ,UAAY,KAAOnB,KAAKC,mBAAmBU,KAAKC,YAAc,IAAMZ,KAAKO,GAAGI,KAAKE,WAAa,KAAOF,KAAKG,eAIhJd,KAAKS,UAAUe,2BAA6B,SAAUC,GAClD,OAAOA,EAAMzB,KAAKC,mBAAmBU,KAAKC,aAAe,IAAMZ,KAAKO,GAAGI,KAAKE,WAAa,KAAOF,KAAKG,eAKzGd,KAAKS,UAAUiB,oBAAsB,WACjC,OAAO1B,KAAKI,iBAAiBO,KAAKQ,UAAY,KAAOnB,KAAKC,mBAAmBU,KAAKC,YAAc,IAAMZ,KAAKO,GAAGI,KAAKE,WAAa,KAAOF,KAAKG,eAKhJd,KAAKS,UAAUkB,eAAiB,WAC5B,OAAO3B,KAAKI,iBAAiBO,KAAKQ,UAAY,KAAOnB,KAAKC,mBAAmBU,KAAKC,YAAc,IAAMZ,KAAKO,GAAGI,KAAKE,YAKvHb,KAAKS,UAAUmB,wBAA0B,WACrC,OAAO5B,KAAKI,iBAAiBO,KAAKQ,UAAY,KAAOnB,KAAKC,mBAAmBU,KAAKC,YAAc,IAAMZ,KAAKO,GAAGI,KAAKE,WAAa,KAAOF,KAAKG,cAAgB,IACxJH,KAAKkB,WAAa,IAAMlB,KAAKmB,aAAe,IAAMnB,KAAKoB,aAAe,IAAMpB,KAAKqB,mBAIzFhC,KAAKS,UAAUc,8BAAgC,WAC3C,OAAOvB,KAAKI,iBAAiBO,KAAKQ,UAAY,KAAOnB,KAAKC,mBAAmBU,KAAKC,YAAc,IAAMZ,KAAKO,GAAGI,KAAKE,WAAa,KAAOF,KAAKG,eAIhJd,KAAKS,UAAUwB,qBAAuB,WAClC,OAAOjC,KAAKC,mBAAmBU,KAAKC,YAAc,KAAOD,KAAKG,eAIlEd,KAAKS,UAAUyB,yBAA2B,WACtC,OAAOlC,KAAKG,uBAAuBQ,KAAKC,YAAc,KAAOD,KAAKG,eAKtEd,KAAKS,UAAU0B,mBAAqB,SAAUC,GAC1C,OAAOpC,KAAKI,iBAAiBgC,IAQjCpC,KAAKS,UAAU4B,UAAY,WACvB,OAAyB,GAAjB1B,KAAKQ,UAAkC,GAAjBR,KAAKQ,UAKvCnB,KAAKS,UAAU6B,SAAW,WACtB,OAAyB,GAAjB3B,KAAKQ,UAKjBnB,KAAKS,UAAU8B,eAAiB,SAAUC,EAAMC,GAC5C,IAAIC,EAAU,IAAI1C,KAAKW,KAAKO,QAAQP,KAAKE,UAAY2B,IAWrD,OATIC,IACwB,GAApBC,EAAQvB,UAAiBqB,EAAO,IAChCE,EAAU,IAAI1C,KAAKW,KAAKO,QAAQP,KAAKE,UAAY,KAG7B,GAApB6B,EAAQvB,UAAiBqB,EAAO,IAChCE,EAAU,IAAI1C,KAAKW,KAAKO,QAAQP,KAAKE,UAAY,MAGlD6B,GAKX1C,KAAKS,UAAUkC,iBAAmB,SAAUC,GAGxC,OAFAjC,KAAKkC,SAASlC,KAAKC,WAAagC,GAChCjC,KAAKO,QAAQ,GACNP,MAIXX,KAAKS,UAAUqC,QAAU,SAAUC,GAC/B,OACIpC,KAAKG,gBAAkBiC,EAASjC,eAChCH,KAAKC,aAAemC,EAASnC,YAC7BD,KAAKE,YAAckC,EAASlC,WAKpCb,KAAKS,UAAUuC,eAAiB,SAAUD,GACtC,OAAOE,KAAKC,MAAM,IAAIlD,KAAKW,KAAOoC,GAAUI,UAAYnD,KAAKM,SAGjEN,KAAKS,UAAU2C,iBAAmB,SAAUL,GACxC,IAAIH,EAIJ,OAHAA,EAAyD,IAA/CjC,KAAKG,cAAgBiC,EAASjC,eACxC8B,GAAUG,EAASnC,WACnBgC,GAAUjC,KAAKC,YAMnBZ,KAAKS,UAAU4C,QAAU,WAGrB,OAAO1C,KAAKwC,WAAcxC,KAAKwC,WAKnCnD,KAAKS,UAAU6C,QAAU,SAAUP,GAC/B,OAAgB,MAAZA,GACIpC,KAAKwC,UAAYJ,EAASI,WAKtCnD,KAAKS,UAAU8C,OAAS,SAAUf,GAE9B,OAAO7B,KAAKO,QAAQP,KAAKE,UAAa2B,IAK1CxC,KAAKS,UAAU+C,kBAAoB,WAC/B,OAAO,GAAK,IAAIxD,KAAKW,KAAKG,cAAeH,KAAKC,WAAY,IAAIC,WAIlEb,KAAKS,UAAUgD,mBAAqB,WAChC,OAAO,IAAIzD,KAAKW,KAAKG,cAAeH,KAAKC,WAAY,IAIzDZ,KAAKS,UAAUiD,kBAAoB,WAC/B,OAAO,IAAI1D,KAAKW,MAAM4B,gBAAgB,EAAI5B,KAAKQ,WAInDnB,KAAKS,UAAUkD,kBAAoB,WAE/B,OADe,IAAI3D,KAAKW,KAAKG,cAAeH,KAAKC,WAAY,GAC7CO;AC5OpB,aAoCAyC,OAAOnD,UAAUoD,KAAO,SAAUC,GAE9B,OADkB,IAAdA,IAAiBA,EAAY,GAC1BnD,KAAKoD,YAAYD;ACtC5B,aAAA5D,MAAMO,UAAUuD,SAAW,SAAUC,GACjC,IAAK,IAAIC,EAAI,EAAGA,EAAIvD,KAAKwD,OAAQD,IAC7B,GAAIvD,KAAKuD,KAAOD,EAAG,OAAO,EAE9B,OAAO,GAGX/D,MAAMO,UAAU2D,OAAS,WAErB,IADA,IAAIC,EAAM,GACDH,EAAI,EAAGA,EAAIvD,KAAKwD,OAAQD,IACxBG,EAAIL,SAASrD,KAAKuD,KACnBG,EAAIC,KAAK3D,KAAKuD,IAGtB,OAAOG;ACdX,aAoCAE,OAAO9D,UAAU+D,QAAU,WACvB,MAAQ,UAAWC,KAAK9D,OAK5B4D,OAAO9D,UAAUiE,sBAAwB,WACrC,OAAO/D,KAAKgE,OAAO,GAAGC,cAAgBjE,KAAKkE,MAAM;AC3CrD,aAgBA,IAAIC,IAEFC,OADS,IAQXD,GAAGE,KAAQ,SAAUC,EAAGC,GAGpB,IAAIC,EAuBEL,GAvBSE,MAAQ,GAsBvB,OAlBAG,EAAMC,qBAAuB,SAAUC,KAIvCF,EAAMG,4BAA8B,SAAUC,KAI9CJ,EAAMK,4BAA8B,aAIpCL,EAAMM,aAAe,aAIrBN,EAAMO,KAAO,aAENP,EAzBA,CA0BTQ;ACnDF,cAAC,SAAUV,EAAGC,GAMVD,EAAEW,GAAGC,eAAiB,SAAUC,GAC5B,IAAMC,EAAiBd,EAAEe,OAAO,CAAEC,eAAe,GAAQH,GAmCzD,OAhCAZ,EAAGgB,QAAQC,gBAAgBxF,MAC3BuE,EAAGgB,QAAQE,WAAU,EAAMzF,MAC3BuE,EAAGgB,QAAQG,aAAY,EAAM1F,MAC7BuE,EAAGgB,QAAQI,YAAW,EAAM3F,MAC5BuE,EAAGgB,QAAQK,cAAc5F,MACzBuE,EAAGgB,QAAQM,aAAY,EAAM7F,MAC7BuE,EAAGgB,QAAQO,UAAU9F,MACrBuE,EAAGgB,QAAQQ,WAAU,EAAM/F,MAC3BuE,EAAGgB,QAAQS,YAAW,EAAMhG,MAC5BuE,EAAGgB,QAAQU,eAAejG,MAC1BuE,EAAGgB,QAAQW,WAAU,EAAMlG,MAC3BuE,EAAGgB,QAAQY,YAAYnG,MAEvBuE,EAAGgB,QAAQa,WAAU,EAAMpG,MAE3BuE,EAAGgB,QAAQc,qBAAqB/B,EAAE,gCAAiCtE,MAAAA,KAAAA,KAAQ,SAC3EuE,EAAGgB,QAAQe,eAAetG,MAC1BuE,EAAGgB,QAAQgB,eAAevG,MAC1BuE,EAAGgB,QAAQiB,UAAUxG,MAErBuE,EAAGgB,QAAQkB,SAAQ,EAAMzG,MACzBuE,EAAGgB,QAAQmB,aAAY,EAAM1G,MAC7BuE,EAAGgB,QAAQoB,cAAc3G,MAEzBuE,EAAGgB,QAAQqB,OAAO5G,MAGlBuE,EAAGgB,QAAQsB,mBAAmB,MAC1BzB,EAAeE,eACff,EAAGuC,oBAEPvC,EAAGwC,WAAW/G,MACPA,MA1Cd,CA4CCgF,OAAQb;AC5CV,aAEA,SAAS6C,QAAQC,GAAgC,OAAOD,QAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAK,cAAcA,GAAO,SAAUA,GAAK,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOpH,UAAY,gBAAkBmH,IAAcA,GAFzT9C,GAAM,SAAUG,EAAGC,GAEf,IAqBI8C,EA+KAC,EApMAC,EAES,EAFTA,EAGa,EAHbA,EAIY,EAJZA,EAKU,EALVA,EAMe,EANfA,EAOY,EAPZA,EAQQ,EARRA,EASc,EATdA,EAUiB,EAVjBA,EAYW,GAZXA,EAaa,GAbbA,EAcgB,GAdhBA,EAeuB,GAfvBA,EAgBQ,GAGRC,EAAa,kBACbC,GAAY,EAGZC,EAAY,IAAIC,UAAU,CAC1BC,OAAQ,kBAERC,EAAgB,EAChBC,GAAsB,EAG1B,SAASC,EAAoBC,GACzB,OAAQA,GACJ,KAAKT,EACD,MAAO,4BACX,KAAKA,EACD,MAAO,mCACX,KAAKA,EACD,MAAO,kCACX,KAAKA,EACD,MAAO,kCACX,KAAKA,EACD,MAAO,gCACX,KAAKA,EACD,MAAO,qCACX,KAAKA,EACD,MAAO,8BACX,KAAKA,EACD,MAAO,oCACX,KAAKA,EACD,MAAO,uCACX,KAAKA,EACD,MAAO,iCACX,KAAKA,EACD,MAAO,mCACX,KAAKA,EACD,MAAO,qCACX,KAAKA,EACD,MAAO,4CACX,KAAKA,EACD,MAAO,8BACX,QACI,MAAO,6BAUnB,SAASxC,IA2YT,IAEQkD,EAyFAC,EACA/C,EApeJgD,IAIA5D,EAAG6D,KAAKC,oBAIR9D,EAAGgB,QAAQiB,UAAU,oBACrBjC,EAAGgB,QAAQiB,UAAU,qBACrBjC,EAAGgB,QAAQiB,UAAU,oBACrBjC,EAAGgB,QAAQiB,UAAU,sBACrBjC,EAAGgB,QAAQiB,UAAU,oBACrBjC,EAAGgB,QAAQiB,UAAU,eAGrBjC,EAAGgB,QAAQE,WAAU,EAAM,sBAC3BlB,EAAGgB,QAAQE,WAAU,EAAM,kBAG3BlB,EAAG6D,KAAKE,uBAGR/D,EAAG6D,KAAKG,iBAmXJN,EAAY3D,EADL,kCAOXA,EAAEkE,UAAUC,IAAI,6BAChBnE,EAAEkE,UAAUE,GAAG,6BALf,WACIT,EAAUU,IAAI,eAAgBrE,EAAEF,QAAQwE,iBAhX5CrE,EAAG6D,KAAKS,uBAGRtE,EAAG6D,KAAKU,qBAGRvE,EAAGwE,sBAGHxE,EAAGyE,sBAGHzE,EAAG0E,aAGH1E,EAAG2E,sBAGH3E,EAAGyB,aAGH1B,EAAE,QAAQY,iBAGVZ,EAAEF,QAAQsE,GAAG,UAAU,WACnBnE,EAAG4E,+BAIPC,WAAWC,WAAW,CAClBC,KAAM,CACFC,aAAc,KAElBC,UAAW,CACPC,SAAS,GAEbC,MAAO,CACHC,YAAY,EACZC,WAAW,GAEfC,YAAa,CACTC,OAAQ,CACJF,WAAW,MAKvBtF,EApIkB,oBAoICmE,MAAMC,GAAG,SAAS,WACjCnE,EAAGwF,gBAAgBC,wBAAwB1F,EAAEtE,MAAM0E,KAAK,iBAAkBJ,EAAEtE,MAAM0E,KAAK,cAG3FuF,IACAzB,SAAS0B,YAAcD,EACvBzB,SAAS2B,WAAaF,EACtB1F,EAAGwC,aAgZCmB,GAAS,IAAI7I,MAAO+K,oBACpBjF,EAAU,CACVkF,IAAK7C,EAAa,0BAA4BU,GAGlD3D,EAAG+F,KAAKC,QAAQpF,GA/YhBb,EAAEkE,UAAUE,GAAG,QAAS,gCAAgC,SAAU8B,GAC9D,GAAIlG,EAAEkG,EAAEC,eAAeC,KAAK,aAAepG,EAAEkG,EAAEC,eAAe/F,KAAK,UAC/D,OAAO,KAKfJ,EAAEkE,UAAUE,GAAG,QAAS,uBAAuB,WAC3CpE,EAAEtE,MAAM2K,YA6JhB,WACI,GAAI7C,EACA,OAEJ,IAAI8C,EAAgB,EAGhBC,EAAuB,KACvBC,EAAU,KACVC,GAAW,EACfjD,GAAsB,EACtB,IAAIkD,EAAiB,CACjBX,IAAK7C,EAAa,wBAClByD,OAAQ,CACJC,MAAO,CACHC,OAAQ5G,EAAG6G,YACXC,QAAS7C,SAAS8C,SAASC,OAGnCC,SAKJ,SAAmBC,GACf3D,GAAsB,EACtBgD,EAAUW,EAAO/G,KAAKoG,QACtBY,EAAwBD,EAAO/G,KAAKiH,qBAGxC,SAASC,EAAsBJ,GAC3B,IAAI1D,EAAJ,CAGAA,GAAsB,EACtB,IAAIoD,EAAQ,CACRC,OAAQ5G,EAAG6G,YACXC,QAAS7C,SAAS8C,SAASC,KAC3BM,QAASf,EACTC,SAAUA,GAGV5F,EAAU,CACVkF,IAAK7C,EAAa,wBAClByD,OAAQ,CACJC,MAAOA,GAEXM,SAMJ,SAA6BC,GACzB3D,GAAsB,EACtB4D,EAAwBD,EAAO/G,KAAKiH,mBAChCH,GAAkC,mBAAdA,GACpBA,EAASC,KAPjBlH,EAAG+F,KAAKC,QAAQpF,IAYpB,SAAS2G,IACL,OAAOC,aAAY,WACf,GA3De,MA2DTnB,EAGF,OAFAoB,cAAcnB,QACdA,EAAuB,MAI3Be,MAhEa,KA4ErB,SAASK,IACLlB,GAAW,EAGf,SAASmB,IACLnB,GAAW,EACXF,EAAuBiB,IAiB3B,SAASJ,EAAwBS,GAC7B7H,EAAE,4BAA4B8H,KAAKD,GACnC7H,EAAE,6BAA6B+H,YAAY,SAAmB,GAATF,GAAYvE,SAASyE,YAAY,QAAkB,GAATF,GArFnG5H,EAAG+F,KAAKC,QAAQS,GAqEhB1G,EAAEF,QAAQsE,GAAG,oDAAoD,WAC7DkC,EAAgB,EACXC,IACGE,GACAF,GAAwB,EACxBe,EAAsBM,IAEtBrB,EAAuBiB,QAGhCpD,GAAG,QAAQ,WAzBVkC,EAAgB,EAChBoB,cAAcnB,GACdA,EAAuB,KACvBe,EAAsBK,MAzO1BK,GAEAhI,EAAE,oBAAoBiI,OAAM,WACxB,GAAIjI,EAAEtE,MAAM0K,KAAK,YACb,OAAO,KAIXnG,EAAGiI,eAAeC,qBAClBnI,EAAEkE,UAAUE,GAAG,QAAS,kBAAkB,WACtCpE,EAAEtE,MAAM2K,YAapB,WAMI,SAAS+B,IACLlE,SAASmE,QAAS,EACdrF,GACAsF,aAAatF,GAGjBA,EAAeuF,WAAWC,EAAW,KAEzC,SAASA,IACDxF,GACAsF,aAAatF,GAEjBkB,SAASmE,QAAS,EAjBtBrI,EAAEyI,QAAQ5H,QAAQ6H,8BAA+B,EAEjD1I,EAAEkE,UAAUE,GAAG,UAAW,KAAM,SAAUgE,GAC1CpI,EAAEkE,UAAUE,GAAG,UAAW,KAAM,eAAgBgE,GAbhDO,GA6PJ,SAAS9E,IACL,IAAI+E,EAAoB5I,EAAE,4BACtB6I,EAAkB7I,EAAE,8BACpB8I,EAAc9I,EAAE,iCAChB+I,EAAS/I,EAAE,mCAEXgJ,EAAehL,KAAKiL,IAAIL,EAAkBM,UAE1CC,EADiBnL,KAAKiL,IAAIJ,EAAgBK,UACTF,EAErCJ,EAAkBvE,IAAI,CAAE+E,UAAW,IACnCP,EAAgBxE,IAAI,CAAEgF,IAAKL,IAC3BF,EAAYzE,IAAI,CAAE+E,UAAWD,EAAgB,IAEzCJ,GAAUA,EAAO7J,OAAS,IAC1B6J,EAAOO,WAAW,WAClBP,EAAOQ,MAAK,SAAUC,EAAOC,GACzBzJ,EAAEyJ,GAASrD,KAAK,qBAAqB,GACrCnG,EAAGgB,QAAQe,eAAehC,EAAEyJ,QA8ExC,SAASC,IACL,IAAI7I,EAAU,CACVkF,IAAK7C,EAAa,QAGtBjD,EAAG+F,KAAKC,QAAQpF,GAEhB8E,IAKJ,SAASA,IACL2C,aAAavF,GACbA,EAAcwF,WAAWmB,EAAS,OAsBtCzJ,EAAG0J,qBAAuB,SAAUC,EAAMC,GAItC,IAHA,IAAIC,EAAQF,EACRG,EAAaF,EAAOG,MAAM,KAErB/K,EAAI,EAAGA,EAAI8K,EAAW7K,OAAS,EAAGD,IAGvC,QAAcgL,KAFdH,EAAQA,EAAMC,EAAW9K,KAEA,OAE7B,OAAO6K,EAAMC,EAAWA,EAAW7K,OAAS,KAKhDe,EAAGiK,YAAc,SAAUC,GACvB,OAxWJ,SAAqBV,GAGjB,IAAIW,GAFJX,EAAUA,GAAW/N,KAAK2O,UAET,GACbC,EAAwB,SAAfF,EAAGG,QAEZC,EAASJ,EAAGK,wBAEK,OAAjBD,EAAOE,QAEPF,EAASxK,EAAEe,OAAO,GAAIyJ,EAAQ,CAAEE,MAAOF,EAAOG,MAAQH,EAAOI,KAAM1B,OAAQsB,EAAOK,OAASL,EAAOnB,OAEtG,IAAIyB,EAAWR,EAAS,CAAEjB,IAAK,EAAGuB,KAAM,GAAMnB,EAAQ7F,SAClDmH,EAAS,CAAEA,OAAQT,EAASpG,SAAS8G,gBAAgBC,WAAa/G,SAASgH,KAAKD,UAAYxB,EAAQwB,aACpGE,EAAe,CAAEA,aAAcnL,EAAEF,QAAQwE,cACzC8G,EAAYd,EAAS,CAAEI,MAAO1K,EAAEF,QAAQ4K,QAASxB,OAAQlJ,EAAEF,QAAQoJ,UAAa,KAEpF,OAAOlJ,EAAEe,OAAO,GAAIyJ,EAAQO,EAAQK,EAAWN,EAAUK,GAuVlDjB,CAAYC,IAKvBlK,EAAGoL,OAAS,SAAU3H,GAClB,OAtXJ,SAAgBA,GACZ,GAAGA,MAA6B,IAAhB1F,KAAKsN,gBACdpH,SAASqH,eAAe7H,IAC/B,OAAOA,EAmXA2H,CAAO3H,IAKlBzD,EAAGuL,gBAAkB,SAAUC,GAC3B,OA9VJ,SAAyBA,GACrB,IAAInL,OAAc2J,IAARwB,EAAoB,EAAIA,EAClC,OAAOzL,EAAEF,QAAQoJ,SAAW5I,EA4VrBkL,CAAgBC,IAK3BxL,EAAGyL,eAAiB,SAAUD,GAC1B,OA7VJ,SAAwBA,GACpB,IAAInL,OAAc2J,IAARwB,EAAoB,EAAIA,EAClC,OAAOzL,EAAEF,QAAQ4K,QAAUpK,EA2VpBoL,CAAeD,IAK1BxL,EAAG0L,gCAAkC,SAAUxB,GAC3C,QAAaF,IAATE,EAAJ,CAEA,IACIyB,EAAKzB,EAAK0B,QAAQ,MACtB,GAAID,EAAG1M,OAAS,EACA0M,EAAGC,QAAQ,SAEjBC,KAAK,MAAMC,YAAY,UAAUA,YAAY,8BACnDH,EAAGI,SAAS,UAAUA,SANL,gCAYzB/L,EAAGgM,SAAW,SAAU9B,GACpB,OAAOA,EAAK+B,OAAOC,OAAOC,QAAQ,eAAgB,SAKtDnM,EAAGoM,oBAAsB,SAAUlC,EAAM/J,GACrC,IAAIkM,EAAQnC,EAAK/J,OAEjB,QAA6B6J,IAAzBE,EAAK/J,OAAO8G,UACc,IAA1BoF,EAAMpF,SAAShI,QAAmC,OAAnBoN,EAAMpF,SAAzC,CAEA,IAAIqF,EAAOtM,EAAG0J,qBAAqB1J,EAAIqM,EAAMpF,UAEzB,mBAATqF,GAAqBA,EAAKnM,KAKzCH,EAAGuM,kBAAoB,SAAU9I,GAC7B,OAAOD,EAAoBC,IAI/BzD,EAAGwM,cAAgB,WACfzM,EAAE,qBAAqBiI,OAAM,WACzBhI,EAAGyM,WAAWC,gBAMtB1M,EAAG2M,eAAiB,WAChB5M,EAAEkE,UAAUE,GAAG,CACX6D,MAAS,SAAU/B,GACfA,EAAE2G,iBACF7M,EAAEtE,MAAMmQ,QAAQ,wBAAwBiB,SAE7C,uBAKP7M,EAAG8M,SAAW,SAAUzM,GACpB,OAtZJ,SAAkB0M,GACd,GAAKA,GAAmB,IAAVA,EAEP,CACH,IAAIC,EAAQD,EAAME,WAAWlD,MAAM,KACnC,OAAOiD,EAAM,GAAGb,QAAQ,wBAAyB,MAAQa,EAAM,GAAK,IAAMA,EAAM,GAAK,IAHrF,OAAOD,EAoZJD,CAASzM,IAKpBL,EAAGkN,sBAAwB,SAAUhD,EAAMtJ,GACvC,OAhZJ,SAA+BsJ,EAAMtJ,GACjCA,EAAQ4I,QAAUU,EAClB,IACIiD,EAAYvM,EAAQwM,UAAYlD,EAAKmD,QAD5B,wBAC8CnD,EACvDoD,EAAa,GACbH,EAAUlO,SACVqO,EAAaH,EAAUhN,QAI3BS,EAAQqG,SAAWzD,EAAoB8J,EAAWC,gBAClD3M,EAAQ4M,SAAWF,EAAWE,UAAY,EAG1CtD,EAAK/J,KAAKS,GAkYHsM,CAAsBhD,EAAMtJ,IAKvCZ,EAAGyN,aAAe,SAAUpN,GACxB,OAAO,IAAIvF,KAAK4S,SAASrN,EAAIsN,OAAO,MAKxC3N,EAAGwE,oBAAsB,WACrBzE,EAAEkE,UAAUE,GAAG,CACX6D,MAAS,SAAU/B,GACfA,EAAE2G,mBAEP,eAMP5M,EAAG4N,YAAc,WACb7N,EAAE,6BAA6BiI,OAAM,WACjChI,EAAG6N,SAASrN,WAKpBR,EAAGyB,WAAa,WACZ1B,EAAEkE,UAAUE,GAAG,QAAS,uBAAuB,WAC3C,IAAIvD,EAAU,CACVkN,UAAW,aACXC,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,aAAa,EACbC,WAAW,EACXC,MAAOrO,EAAEtE,MAAM0E,KAAK,iBACpBkO,MAAOtO,EAAEtE,MAAM0E,KAAK,iBACpBmO,QAAS,WACL,OAAOvO,EAAEtE,MAAM0E,KAAK,gBAAkBJ,EAAEtE,MAAM0E,KAAK,gBAAkBJ,EAAEA,EAAEtE,MAAM0E,KAAK,mBAAmB8L,QAE3GsC,OAAQ,SAAUtI,GACdlG,EAAE,QAAQ+L,YAAY,QAE1BrB,MAAO,MACP+D,OAAQ,SAAUC,GACd1O,EAAE0O,GAAO1C,SAAS,mCAEtB2C,KAAM,QAGL3O,EAAEtE,MAAM0E,KAAK,wBACdJ,EAAEtE,MAAMkT,aAAa/N,GAEzBb,EAAEtE,MAAMkT,aAAa,YAM7B3O,EAAG4O,iBAAmB,WAClB7O,EAAE,+BAA+BiI,OAAM,WACnC,IAAIpH,EAAU,CACVkF,IAAK,wDACLmB,SAMJ,SAAmBC,GACXA,EAAO/G,MACPN,OAAO4J,WAPXoF,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,OAUxBZ,EAAG8O,aAAe,WACd/O,EAAE,yBAAyBiI,OAAM,WAC7B,IAAIpH,EAAU,CACVkF,IAAK,6CACLmB,SAMJ,SAAmBC,GACXA,EAAO/G,MACPJ,EAAE,QAAQgP,OAAO7H,EAAO/G,MAExBJ,EAAE,oBAAoBmE,MAAMC,GAAG,kBAAkB,WAC7C6K,EAAgBjP,EAAEtE,UACnB0I,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EAAE,oBAAoBkP,YACvBR,MAAM,SAETzO,EAAGkP,cAAa,IAhBpBL,QAAQ,GAmBZ,SAASG,EAAgBP,GACrBzO,EAAGgB,QAAQE,WAAU,EAAOuN,GAC5B1O,EAAE,OAAQ0O,GAAOzG,OAAM,WACnB,IAAIjI,EAAEtE,MAAM0T,GAAG,cAAf,CAIA,IAAIvO,EAAU,CACVkF,IAAK,6CACLY,OAAQ,CACJ0I,YAAarP,EAAEtE,MAAM0E,KAAK,UAE9B8G,SAAUoI,EACVR,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,OAGpBZ,EAAGuC,oBACHvC,EAAGkP,cAAa,GAGpB,SAASG,EAAiBnI,GACtBnH,EAAE,oBAAoBkM,KAAKlM,EAAEmH,EAAO/G,MAAM8L,QAC1C+C,EAAgBjP,EAAE,qBAzCtBC,EAAG+F,KAAKC,QAAQpF,MA6CpBb,EAAE,wDAAwDiI,OAAM,WAC5DhI,EAAGsP,UAAU,+BAA+B,EAAM,GAAG,GACrDvP,EAAE,yBAAyBkP,aAMnCjP,EAAGuP,sBAAwB,SAAUrF,EAAMsF,GA1gB3C,IAA+BC,EAAWC,EAAAA,EA2gBVF,EA1gBH,iBADEC,EA2gBLvF,KA1gBauF,EAAY1P,EAAE0P,IAEjDA,EAAUE,SAAS,KAAKrG,MAAK,WACzB,IAAIrD,EAAIlG,EAAEtE,MACN0E,EAAO8F,EAAE9F,OACA,cAATA,GACsB,cAAlBA,EAAKqN,UACDrN,EAAKqN,WAAakC,GAAQzJ,EAAE8F,SAAS,cAwgBzD/L,EAAG4P,cAAgB,SAAUvP,GACzB,OAAON,EAAE,UAAUkM,KAAK5L,GAAKwH,QAKjC7H,EAAG6P,cAAgB,SAAUxP,GACzB,OAAON,EAAE,UAAU8H,KAAKxH,GAAK4L,QAKjCjM,EAAG8P,cAAgB,SAAU5F,EAAM6F,IA3gBnC,SAAuB9J,EAAGG,GACL,iBAANH,IAAgBA,EAAIlG,EAAEkG,IACjC,IAAI5F,EAAM4F,EAAE5F,MACZ4F,EAAE+J,QAAQ3P,IAAI,IAAIA,IAAIA,GAClB+F,GAAQH,EAAEG,SAwgBd0J,CAAc5F,EAAM6F,IAKxB/P,EAAGiQ,YAAc,SAAU/F,GACvB,OAAa,OAATA,IACmB,mBAATA,GAAuC,WAAhBzH,QAAOyH,KAWhDlK,EAAGkQ,WAAa,SAAU7P,GACtB,OAthBgB0M,EAshBE1M,EArhBd8P,EAAU,IAAIC,OAAO,IAAK,KACvBrD,EAAMZ,QAAQgE,EAAS,IAFlC,IAAoBpD,EACZoD,GA0hBRnQ,EAAG4D,iBAAmB,WAClBA,KAKJ5D,EAAGqQ,kBAAoB,SAAUvK,GAC7B,MAAO,CACHgI,UAAW,WACXC,OAAO,EACPuC,SAAS,EACTtC,OAAO,EACPC,OAAO,EACPC,aAAa,EACbC,WAAW,EACXO,KAAM,QACN6B,QAAS,QACTzK,IAAKA,EACLuI,MAAO,UACPmC,MAAO,CACH9B,KAAM,OACN+B,QAAS,SAAUC,EAAMvQ,MAE7BmO,QAAS,SAAUnO,GACf,OAAOA,GAEXoO,OAAQ,SAAUtI,KAClBuI,OAAQ,SAAUvI,OAM1BjG,EAAG2Q,kBAAoB,WACnBrN,IACAH,EAAUyN,SAGd5Q,EAAG6Q,oBAAsB,WACjBvN,EAAgB,GAChBA,IAEkB,IAAlBA,GAEAwN,QAAQC,QAAO,WAAA,OAAM5N,EAAU6N,UAMvChR,EAAGiR,mBAAqB,SAAUC,EAASC,EAASC,EAAeC,EAAgB7D,EAAU8D,EAAcC,GACvG,IAAIvR,EAAGwR,eAAP,CAIAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACVkF,IAAK7C,EAAa,kBAClByD,OAAQ,CACJwK,QAASA,EACTC,QAASA,EACTC,cAAeA,EACfC,eAAgBA,EAChBC,aAAAA,EACAC,YAAAA,GAEJtK,SAMJ,SAAmBC,GACf,IAAIuH,EAAQ1O,EAAE,0DACd0O,EAAMxC,KAAK/E,EAAO/G,MAAM+D,MAAMC,GAAG,kBAAkB,gBACtB,IAAbqJ,GACRzN,EAAE,gBAAiB0O,GAAOtI,KAAK,gBAAiBqH,GAEpDxN,EAAGuC,oBACHvC,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHiM,EAAMQ,YACPR,MAAM,CACLgD,SAAU,SACVC,UAAU,IACXjD,MAAM,SApBTI,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,KAsBpBZ,EAAG2R,oBAAsB,SAAUC,GAC/B7R,EAAE,uBAAuBmE,MAAMC,GAAG,mBAAmB,WACjDpE,EAAE,uBAAuBkP,SACzBjP,EAAGwC,aACCoP,GAAwC,mBAAjBA,GACvBA,OAELnD,MAAM,SAKbzO,EAAGyE,oBAAsB,WACrB,IAAIoN,EAAO,4BACX9R,EAAE,mCAAmCoE,GAAG,SAAS,WAC7C,IAAI8B,EAAIlG,EAAEtE,MACNwK,EAAE6L,SAAS,OACX7L,EAAE6F,YAAY,MACd/L,EAAE8R,GAAM/F,YAAY,UACpB7F,EAAE0J,SAAS,KAAK7D,YAAY,0BAA0BC,SAAS,0BAE/D9F,EAAE8F,SAAS,MACXhM,EAAE8R,GAAM9F,SAAS,UACjB9F,EAAE0J,SAAS,KAAK7D,YAAY,wBAAwBC,SAAS,2BAEjE/L,EAAG4D,uBAMX5D,EAAG+R,aAAe,WACdhS,EAAE,cAAciS,QAAQ,CAAEhH,UAAW,GAAK,SAQ9ChL,EAAGiS,YAAc,SAAUC,EAAUvO,GAC5BA,IACDA,EAAS5D,EAAE,2BAA2BkJ,SAAWlJ,EAAE,wBAAwBkJ,UAG/ElJ,EAAE,cAAciS,QAAQ,CACpBhH,UAAWjL,EAAEmS,GAAUvO,SAASyF,IAAMzF,GACvC,MAKP3D,EAAGmS,sBAAwB,SAAUD,EAAUvO,GAC3CA,EAASA,GAAU,IACnB5D,EAAE,cAAciS,QAAQ,CACpB3N,WAAYtE,EAAEmS,GAAUvO,SAASgH,KAAOhH,GACzC,MAKP3D,EAAGoS,YAAc,WACb,IAAIC,EAAOtS,EAAE,qBACb,GAAoB,IAAhBsS,EAAKpT,OAAT,CACA,IAAIqT,EAAM,IACVD,EAAK/I,MAAK,WACNvJ,EAAEtE,MAAM0K,KAAK,WAAYmM,GACzBA,SAMRtS,EAAGuS,cAAgB,SAAUrI,GACzBnK,EAAEmK,GAAM2B,KAAK,MAAMvC,MAAK,SAAUtK,GACrBe,EAAEtE,MACMoQ,KAAK,gBACdI,KAAKjN,EAAI,OAMzBgB,EAAGwS,mBAAqB,SAAUtI,EAAMuI,GACpC,IAAIC,EAAS3S,EAAE,mBAAqB0S,EAAQ,MACvCC,EAAOzT,QAGZc,EAAE,cAAciS,QAAQ,CAAEhH,UAAW0H,EAAO/O,SAASyF,IAAM,KAAO,KAAM,WACpErJ,EAAE,mBAAqB0S,EAAQ,MAAM1G,SAAS,kCAMtD/L,EAAG2S,iBAAmB,WAClB5S,EAAEkE,UAAUC,IAAI,aAChBnE,EAAEkE,UAAUE,GAAG,YAAa,YAAY,WACpC,IAAI8B,EAAIlG,EAAEtE,MACN4E,EAAM4F,EAAE5F,MACZ4F,EAAE5F,IAAI,IAAIA,IAAIA,OAMtBL,EAAG4S,gBAAkB,SAAU1I,EAAMuI,GACjC1S,EAAEmK,GAAM2B,KAAK,MAAMvC,MAAK,SAAUtK,IACrBe,EAAEtE,MACE0E,KAAK,cAEPsS,GAEP1S,EAAE,aAAaiS,QAAQ,CAAEhH,UAAW/G,SAASgH,KAAK4H,cAAgB,IAAK,cAOnF7S,EAAGwC,WAAa,SAAUiN,GAAwB,IAAbqD,EAAKC,UAAA9T,OAAA,QAAA+K,IAAA+I,UAAA,GAAAA,UAAA,GAAG,IACrCtD,EACIA,aAAqBhP,OACrBV,EAAE,YAAa0P,GAAWuD,QAAQ,CAAEF,MAAOA,EAAOvC,QAAS,QAAS0C,UAAU,IAE9ElT,EAAE,aAAc0P,GAAWuD,QAAQ,CAAEF,MAAOA,EAAOvC,QAAS,QAAS0C,UAAU,IAGnFlT,EAAE,aAAaiT,QAAQ,CAAEF,MAAOA,EAAOvC,QAAS,QAAS0C,UAAU,KAM3EjT,EAAGuC,kBAAoB,SAAUkN,GAC7B1P,EAAE,kBAAkBuJ,MAAK,WACmE,GAApFvJ,EAAEA,EAAEtE,MAAM0E,OAAO,cAAcqJ,SAAS6D,QAAQpJ,SAAS8G,iBAAiB9L,QAC1Ec,EAAEtE,MAAMwT,YAIZQ,EACA1P,EAAE,8BAA+B0P,GAAWuD,QAAQ,QAEpDjT,EAAE,sCAAsCiT,QAAQ,SAMxDhT,EAAG2E,oBAAsB,WACrB,IAAIuF,EAAOnK,EAAE,mCAETF,OAAOqT,UAAUC,KACjBjJ,EAAK6B,SAAS,QAEd7B,EAAK/F,GAAG,SAAS,SAAU8B,GACvBA,EAAE2G,iBAEEwG,WAAWlO,SAEXkO,WAAWC,aAU3BrT,EAAGsT,wBAA0B,SAAUC,GACnC,GAAIA,GAAiBA,EAActU,OAAS,EACxC,IAAK,IAAI3D,EAAI,EAAGA,EAAIiY,EAActU,OAAQ3D,IACtCyE,EAAEwT,EAAcjY,IAAIyQ,SAAS,oBAGrCzD,YAAW,WACPvI,EAAE,qBAAqBgM,SAAS,wBACjC,KACHzD,YAAW,WACPvI,EAAE,qBAAqB+L,YAAY,yCACpC,MAKP9L,EAAG0E,WAAa,WACZ,IAWI8O,EAAWzT,EAAEe,OAAO,GAXT,CACX+G,KAAM,GACN4L,IAAK,IACLC,QAAS,IACTC,SAAU,IACVC,YAAa,QACbC,iBAAkB,aAClBC,YAAa,IACbC,WAAY,WAIZC,EAAkB,IAAMR,EAASI,YACjCK,EAAuB,IAAMT,EAASK,iBAQtC9T,EAAE,sBAAsBgP,OAAO,mBAAqByE,EAASI,YAAc,gBAC3E7T,EAAEiU,GAAiBnH,OAAO1I,GAAG,iBAAiB,WAG1C,OAFApE,EAAE,cAAciS,QAAQ,CAAEhH,UAAW,GAAKwI,EAASM,YAAaN,EAASO,YACzEhU,EAAE,IAAMyT,EAASK,iBAAkBpY,MAAMuW,QAAQ,CAAEkC,QAAW,GAAKV,EAASE,QAASF,EAASO,aACvF,KAENI,QAAQ,aAAeX,EAASK,iBAAmB,0DACnDO,OAAM,WACHrU,EAAEkU,EAAsBxY,MAAMuW,QAAQ,CAClCkC,QAAW,GACZ,IAAK,aACT,WACCnU,EAAEkU,EAAsBxY,MAAMuW,QAAQ,CAClCkC,QAAW,GACZ,IAAK,aAEhBnU,EAAEF,QAAQiL,QAAO,SAAU7E,GACvB,IAAIoO,EAAKtU,EAAEF,QAAQmL,iBAC0B,IAAlC/G,SAASgH,KAAKoD,MAAMiG,WAC3BvU,EAAEiU,GAAiB5P,IAAI,CACnBmQ,SAAY,WACZnL,IAAOiL,EAAKtU,EAAEF,QAAQoJ,SAAW,KAGrCoL,EAAKb,EAASC,IACd1T,EAAEiU,GAAiBQ,OAAOhB,EAASE,SAGnC3T,EAAEiU,GAAiBS,QAAQjB,EAASkB,cAQpD1U,EAAG2U,cAAgB,SAAUlF,GACzB,OA9sBJ,SAAuBA,GACnB,IAAImF,EAEAA,EADAnF,EACU1P,EAAE0P,GAAW5D,KAAK,kBAElB9L,EAAE,kBAGhB,IAAI8U,EAAS,GAEb,OAAuB,IAAnBD,EAAQ3V,OAAqB,IAEjC2V,EAAQtL,MAAK,WACT,IAAIY,EAAOnK,EAAEtE,MACTqZ,EAAU5K,EAAK/J,KAAK,WACpBE,EAAM,KACV,GAAwB,WAApB6J,EAAK/J,KAAK,MACVE,EAAM6J,EAAK7J,WACR,GAAI6J,EAAKiF,GAAG,mBAEf9O,GADAA,KAAM6J,EAAK/J,KAAK,UAAmC,KAAvB+J,EAAK/J,KAAK,WAAkB+J,EAAK/J,KAAK,UACtD,CAAC+J,EAAKmD,QAAQ,sBAAsBlN,KAAK,aAAe,GAEtC,UAA1BsC,QAAOoS,EAAOC,MACdzU,EAAMA,EAAI0U,OAAOF,EAAOC,UAEzB,GAAwB,aAApB5K,EAAK/J,KAAK,MACjBE,KAAM6J,EAAK/J,KAAK,UAAmC,KAAvB+J,EAAK/J,KAAK,WAAkB+J,EAAK/J,KAAK,cAC/D,GAAI+J,EAAKiF,GAAG,eACf9O,EAAMN,EAAE,uBAAwBmK,GAAM8K,KAAI,WACtC,OAAOjV,EAAEtE,MAAM0E,KAAK,SAAWJ,EAAEtE,MAAM0E,KAAK,SAAWJ,EAAEtE,MAAM4E,SAChE4U,UAE2B,UAA1BxS,QAAOoS,EAAOC,MACdzU,EAAMA,EAAI0U,OAAOF,EAAOC,UAEzB,GAAI5K,EAAKiF,GAAG,eACf9O,EAAM6J,EAAK,GAAGgL,WAEd,GAAIhL,EAAK/J,KAAK,SAAU,CAEpB,GADAE,EAAM6J,EAAK/J,KAAK,SACO,UAAnB+J,EAAK/J,KAAK,MACV,IAAIgV,EAAYzW,OAAOwL,EAAK7J,OAC3B+U,MAAMD,IAAc9U,GAAO8U,IAC5B9U,EAAM8U,QAGV9U,EAAM6J,EAAK7J,MAInBwU,EAAOC,GAAWzU,KAGfwU,GAypBAF,CAAclF,IAKzBzP,EAAGsP,UAAY,SAAU+F,EAAMtI,EAAOzP,EAAMgY,GACxC,IAAIC,EACAC,EAAO,IAAI1a,KACfwC,EAAOA,GAAQ,GACfkY,EAAKC,QAAQD,EAAKvX,UAAmB,GAAPX,EAAY,GAAK,GAAK,KACpDiY,EAAU,aAAeC,EAAKE,cAC9B,IAAIC,EAASL,IAAWrR,SAAS8C,SAAS6O,KAAKC,WAAW,aAAe,6BAA+B,GACxG5R,SAAS6R,OAAST,EAAO,IAAMtI,EAAQwI,EAAUI,EAAS,YAI9D3V,EAAG4E,0BAA4B,WAEvB7E,EAAE,0BAA0BqE,IAAI,aAAcrE,EAAE,uBAAuBgW,aAAY,GAAQhW,EAAE,qBAAqBgW,aAAY,KAKtI/V,EAAGkP,aAAe,SAAU8G,GACxB9S,EAAY8S,IAAiB,GAIjChW,EAAGwR,aAAe,WACd,OAAOtO,GAGXlD,EAAGiW,SAAW,SAAUC,EAAKC,EAAKpJ,GAC9B,IAAIqJ,EAAK,IAAIhG,OAAO,SAAW+F,EAAM,YAAa,KAC9CE,GAAkC,IAAtBH,EAAII,QAAQ,KAAc,IAAM,IAChD,OAAIJ,EAAIK,MAAMH,GACHF,EAAI/J,QAAQiK,EAAI,KAAOD,EAAM,IAAMpJ,EAAQ,MAG3CmJ,EAAMG,EAAYF,EAAM,IAAMpJ,GAK7C/M,EAAGwW,KAAO,SAAUL,EAAKhW,GACrB,OAAInF,MAAMyb,QAAQtW,IAASA,EAAKlB,OACN,UAAlBwD,QAAOtC,EAAK,IACLA,EAAK6U,KAAI,SAAU0B,EAAMC,GAC5B,IAAIC,EAAW,GAIf,OAHA7W,EAAEuJ,KAAKoN,GAAM,SAAUrB,GACnBuB,GAAY,IAAMT,EAAM,IAAMQ,EAAM,KAAOtB,EAAO,IAAM5Z,QAErDmb,KACRC,KAAK,IAED1W,EAAK6U,KAAI,SAAU0B,EAAMC,GAC5B,MAAO,IAAMR,EAAM,IAAMO,KAC1BG,KAAK,IAEU,UAAfpU,QAAOtC,GACPJ,EAAE+W,MAAM3W,GACO,gBAARA,EACP,IAAMgW,EAAM,IAAMhW,EAElB,IA8Gf,OAzGAH,EAAG+W,YAAc,SAAUtH,GACvB,IAAI4C,EAAO,GACP5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAPd,eASHwG,EAAOtS,EATJ,cAYPA,EAAEsS,GAAM/I,MAAK,SAAU0N,GACnB,IAAIC,EAAOlX,EAAEtE,MACTyb,EAAQnX,EAAEkX,EAAK9W,KAAK,QACxB,GAAI+W,EAAMjY,OAAS,EAAG,CAClB,IAAI0E,EAASsT,EAAK9W,KAAK,cAAgB8W,EAAK9W,KAAK,cAAgB,EAC7D8W,EAAK1C,WAAWnL,IAAM8N,EAAM3C,WAAWnL,KACvC6N,EAAK7S,IAAI,aAAc8S,EAAM3C,WAAWnL,IAAM6N,EAAK1C,WAAWnL,IAAMzF,QAQpF3D,EAAGmX,SAAW,SAAUC,EAAaC,EAAYC,EAAsBC,GACnE,IAAMC,EAAM,IAAIC,MAAML,EAAc,IAAMC,EACtC,CACIK,MAAOH,EACPI,QAASL,IAGjBzX,OAAO+X,YAAYC,eAAeL,IAItCxX,EAAG8X,wBAA0B,SAAUC,EAAWC,GAC9C,IAAIC,EAAcF,EAAUlM,KAAK,gBACN,IAAvBoM,EAAYhZ,OACZ+Y,IAEAC,EAAY3O,MAAK,SAAUC,GACvB9N,KAAKyc,UAAY3O,EAAQ,MAMrCvJ,EAAGmY,iBAAmB,SAAUjO,IAC5BA,EAAOnK,EAAEmK,IACJO,MAAMP,EAAKO,SAAS2N,KAAK,YAAY,GAAMrM,SAAS,yBAAyBE,KAAK,gDAI3FjM,EAAGqY,mBAAqB,SAAUnO,EAAMrC,IACpCqC,EAAOnK,EAAEmK,IACJkO,KAAK,YAAY,GAAOtM,YAAY,yBAAyBG,KAAKpE,IAG3E7H,EAAGsY,iBAAmB,SAAUC,EAAS3X,EAAS4X,EAAYC,EAAWC,GACrEF,EAAcA,GAAa,KAC3BC,EAAaA,GAAY,OACzBF,EAAQ1M,KAAK,sCAAsCoD,SACnD,IAAK,IAAIjQ,EAAI,EAAGA,EAAI4B,EAAQ3B,OAAQD,IAChCuZ,EAAQxJ,OAAO,kBAAoBnO,EAAQ5B,GAAGwZ,GAAc,KAAO5X,EAAQ5B,GAAGyZ,GAAa,kBAElE,IAAlBC,GACPH,EAAQlY,IAAIqY,IAIpB1Y,EAAG2Y,aAAe,SAAUzO,EAAM0O,EAAaC,GAC3CD,EAAcA,GAA4B,KAC1CC,EAAiBA,GAAkC,6BACnD3O,EAAKmD,QAAQuL,GAAa7M,SAAS8M,GAAgBC,WAAWhN,YAAY+M,IAG9E7Y,EAAG+Y,eAAiB,SAAUjT,GAC1B9F,EAAG+F,KAAKC,QAAQ,CAAEF,IAAAA,IAAOkT,MAAK,SAAA7Y,GAC1B,IAAMuG,EAAS3G,EAAEkZ,QAAQnT,EAAIiE,MAAM,KAAK,IACxChK,EAAE,uBAAuB8H,KAAKnB,EAAOwS,MAAQ,KAAOxS,EAAOwS,MAAQ,IACnEnZ,EAAE,uBAAuBoZ,WAAWhZ,GACpCJ,EAAE,gBAAgB0O,MAAM,YAMhCzO,EAAGQ,KAAO,WACNA,IACQR,EAAGoZ,YAQfpZ,EAAGqZ,cAAgB,aAOZrZ,EA91CL,CA+1CJS,OAAQb;AC/1CV,aAEA,SAAS6C,QAAQC,GAAgC,OAAOD,QAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAK,cAAcA,GAAO,SAAUA,GAAK,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOpH,UAAY,gBAAkBmH,IAAcA,GAFzT9C,GAAGmG,KAAQ,SAAUhG,EAAGC,IAGpB,IAAIC,MAAQ,GACRqZ,gBAAkB,GAClBC,cAAgB,GAChBC,wBAA0B,GAC1BC,OASJ,SAASC,iBACL,MAAO,CACHvZ,KAAM,GACNuG,OAAQ,GACRO,SAAU,GACVnB,IAAK,GACL+I,QAAQ,EACR8K,UAAU,EACVC,IAAK,EACLnJ,SAAS,EACToJ,gBAAgB,EAChB/G,OAAO,EACPgH,aAAa,EACbC,gBAAiB,KACjBC,YAAa,mCAKrB,SAASC,gBAAgBnU,EAAKoU,GAC1B,IAAK,IAAIlb,EAAIsa,gBAAgBra,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAClD,IAAImb,EAAUb,gBAAgBta,GAGC,IAA3Bmb,EAAQC,IAAIC,WAMZF,EAAQrU,MAAQA,IAChBqU,EAAQC,IAAIE,QACZhB,gBAAgBiB,OAAOvb,EAAG,IAP1Bsa,gBAAgBiB,OAAOvb,EAAG,GAWlCsa,gBAAgBla,KAAK,CACjB0G,IAAKA,EACLsU,IAAKF,IAIb,SAASM,mBAAmB5Z,GAGxB,IAFA,IAAI8V,EAEK1X,EAAIua,cAActa,OAAS,EAAGD,GAAK,EAAGA,KAC3C0X,EAAO6C,cAAcva,IAEZqW,OAASzU,EAAQkF,MACtBuC,aAAaqO,EAAK+D,SAClBlB,cAAcgB,OAAOvb,EAAG,IAIhC0X,EAAO,CACHrB,KAAMzU,EAAQkF,IACd2U,QAASnS,YAAW,WAChBoS,OAAO9Z,KACR,MAGP2Y,cAAcna,KAAKsX,GAGvB,SAASiE,4BACL,IAAK,IAAI3b,EAAI,EAAGA,EAAIwa,wBAAwBva,OAAQD,IAChDwa,wBAAwBxa,GAAG4b,QAAQ9O,YAAY,YAAYsM,KAAK,YAAY,GAAOnM,KAAKuN,wBAAwBxa,GAAG6b,cAI3H,SAASC,eAAe3a,MACpBM,OAAO6I,KAAKnJ,MAAM,SAAUoJ,MAAOwD,OACX,UAAhBtK,QAAOsK,OACP+N,eAAe/N,OAEK,iBAATA,OACPA,MAAMuJ,QAAQ,cAAgB,IAC9BnW,KAAKoJ,OAASwR,KAAK,IAAMhO,MAAQ,SAOjD,SAAS2N,OAAO9Z,GACZ,IAAIrE,EAAQyD,GAAGoZ,WACX4B,EAAWpa,EAAQiO,OAAS,OAAS,OACzCjO,EAAQqa,MAAQlb,EAAEmb,WAGdta,EAAQmZ,kBAAoBnZ,EAAQmZ,2BAA2BtZ,QAAUG,EAAQmZ,2BAA2B/e,QAC5G+E,EAAEuJ,KAAK1I,EAAQmZ,iBAAiB,WAC5B,IAAIrD,EAAO,GACXA,EAAKkE,QAAU7a,EAAEtE,MACjBib,EAAKkE,QAAQ/O,KAAK,OAAO1F,KAAK,UAAW,IACzCuQ,EAAKmE,aAAe9a,EAAEob,UAAUzE,EAAKkE,QAAQ3O,QAC7CyK,EAAKkE,QAAQ7O,SAAS,YAAYqM,KAAK,YAAY,GAAMnM,KAAK,+CAC9DuN,wBAAwBpa,KAAKsX,MAIrC,IAAIwD,EAAWna,EAAEqb,KAAK,CAClBtV,IAAKlF,EAAQkF,IACb0K,WAAyBxG,IAAlBpJ,EAAQ4P,OAA6B5P,EAAQ4P,MACpDrQ,KAA+B,oCAAxBS,EAAQoZ,YAAqDqB,KAAKC,UAAU1a,EAAQ8F,QAAU9F,EAAQ8F,OAC7GgI,KAAM,OACNsM,SAAUA,EACVhB,YAAapZ,EAAQoZ,YACrBF,YAAalZ,EAAQkZ,YACrByB,WAAY,WACJ3a,EAAQ+Y,UACR3Z,GAAG2Q,qBAGX6K,QAAS,CACLC,eAAkBC,SAASC,OAAO,2BAClCC,eAAkBF,SAASC,OAAO,QAEvCE,MAAK,SAAU1b,EAAM2b,EAAQ1B,IACvBxZ,EAAQiO,QAAUuL,EAAI2B,aAAazF,QAAQ,eAAkB,GAC9DwE,eAAe3a,GAEnBS,EAAQT,KAAOA,EACfS,EAAQ6P,SAAU,EAClB7P,EAAQ4U,KAAO,IAAI1a,KACnB8F,EAAQob,WAAajV,SAASC,KAC9BpG,EAAQqb,kBAAoB7B,EAAI6B,kBAEnB,UAAT9b,KACAsZ,OAASA,QAAU,IAAIyC,QAChBtb,QAAQkS,MAAQ,KACvB2G,OAAO0C,MAAM5f,EAAoD,8CAEjEyD,GAAGkP,cAAa,IAEhBtO,EAAQ+Y,UACR3Z,GAAG6Q,sBAEyB,mBAArBjQ,EAAQqG,SACfrG,EAAQqG,SAASrG,GAEI,UAAjBA,EAAQT,KACRS,EAAQqa,MAAMmB,OAAOxb,GAErBA,EAAQqa,MAAMoB,QAAQzb,EAAQT,MAGlCS,EAAQmZ,iBACRY,4BAEJ5a,EAAE,kBAAkBuJ,MAAK,WACmE,GAApFvJ,EAAEA,EAAEtE,MAAM0E,OAAO,cAAcqJ,SAAS6D,QAAQpJ,SAAS8G,iBAAiB9L,QAC1Ec,EAAEA,EAAEtE,MAAM0E,OAAO,cAAcqJ,SAASwJ,QAAQ,cAGzDsJ,MAAK,SAAUC,EAAOC,EAAYC,GAqBjC,GApBA7b,EAAQ8b,UAAYH,EACpB3b,EAAQ+b,YAAcH,EACtB5b,EAAQgc,SAAWH,EACnB7b,EAAQ4U,KAAO,IAAI1a,KACnB8F,EAAQT,MAAO,EACfS,EAAQob,WAAajV,SAASC,KAE9BhH,GAAGkP,cAAa,GAEgB,mBAArBtO,EAAQqG,SACfrG,EAAQqG,SAASrG,GAEjBA,EAAQqa,MAAMmB,OAAOxb,GAErBA,EAAQ+Y,UACR3Z,GAAG6Q,sBAEHjQ,EAAQmZ,iBACRY,4BAEuB,mBAAhBkC,iBAAX,CACI,GAAqB,IAAjBN,EAAMT,OACN,OAGJe,YAAYN,EAAO9gB,KAAMmF,OAWjC,OANIA,EAAQiZ,gBACRI,gBAAgBrZ,EAAQkF,IAAKoU,GAEN,mBAAhBtZ,EAAQwZ,KACfxZ,EAAQwZ,IAAIF,GAETtZ,EAAQqa,MAAM6B,UAKzB,SAASC,QAAQnc,GACb,IAAIA,EAAQkS,MAGR,OAAO4H,OAAO9Z,GAFd4Z,mBAAmB5Z,GAQ3B,SAASic,YAAYN,EAAOS,EAAQ7c,GAChC,IAAI5D,EAAQyD,GAAGoZ,WACfK,OAASA,QAAU,IAAIyC,OACvBnc,EAAEtE,MAAM4R,QAAQ,QAAQvB,YAAY,mBAEpC,IAAIoF,EAA0B,KAAhBqL,EAAMT,OAAgBS,EAAMN,kBAAkB,iBAAmB1f,EAAM0gB,iCAErFxD,OAAO0C,MAAMjL,GAyGjB,OA/FAjR,MAAM+F,QAAU,SAAUpF,GACtB,IAAIsc,EAAWxD,iBAEf,OAAOqD,QADIhd,EAAEe,OAAO,GAAIoc,EAAUtc,KAItCb,EAAEkE,UAAUE,GAAG,SAAU,6GAA6G,WAClI,GAA+B,WAA3BpE,EAAEtE,MAAM0E,KAAK,UAAwB,CACrC,IAAIgd,EAAOpd,EAAEtE,MAAM4R,QAAQ,QAC3B/E,YAAW,WAEPvI,EAAE,yBAA0Bod,GAAMhX,KAAK,YAAY,GACnDgX,EAAKC,SACLrd,EAAE,yBAA0Bod,GAAMhX,KAAK,YAAY,KACpD,OAGXpG,EAAEkE,UAAUE,GAAG,QAAS,mDAAmD,WACvE,GAA+B,WAA3BpE,EAAEtE,MAAM0E,KAAK,UAAwB,CACrC,IAAIgd,EAAOpd,EAAEtE,MAAM4R,QAAQ,QAC3BtN,EAAE,yBAA0Bod,GAAMhX,KAAK,YAAY,GACnDmC,YAAW,WACPvI,EAAE,yBAA0Bod,GAAMhX,KAAK,YAAY,KACpD,OAIXlG,MAAMod,UAAYR,YAElB5c,MAAMyM,UAAY,SAAU0N,KACxB,IAAI3L,MAAQ1O,EAAEtE,MAAM0E,KAAK,cAAgBJ,EAAEA,EAAEtE,MAAM0E,KAAK,eAAiBJ,EAAE,aAC3EC,GAAKJ,GAEL6O,MAAMvK,MAAMC,GAAG,kBAAkB,WAC7BnE,GAAGgB,QAAQsc,uBACX7O,MAAM9N,iBAENX,GAAGkP,cAAa,GAEZnP,EAAE,8BAA+B0O,OAAOxP,QACxCc,EAAE,8BAA+B0O,OAAOnF,MAAK,WACzC,IAAI6T,EAAOpd,EAAEtE,MACbsE,EAAE,uBAAwB,aAAauJ,MAAK,WACxC,IAAIgD,EAAOvM,EAAEtE,MAAM8hB,WAAW,SAAU,YACxCxd,EAAEtE,MAAM8hB,WAAW,SAAU,YAAY,SAAUC,EAAIC,GAC/CnR,GACAA,EAAKoR,KAAKjiB,KAAM+hB,EAAIC,GAExB1d,EAAEod,GAAMC,kBAKxBrd,EAAE,OAAQ0O,OAAO2O,QAAO,WACpB,IAAKrd,EAAEtE,MAAMkiB,QAET,OADA5d,EAAEtE,MAAMmiB,WAAWC,gBACZ,QAKhB1Z,GAAG,mBAAmB,WACrBnE,GAAGwC,aACCzC,EAAE,iBAAkB0O,OAAOtO,KAAK,YAChC4a,KAAKhb,EAAE,iBAAkB0O,OAAOtO,KAAK,YAAYud,KAAKjP,UAE3DA,MAAM,SAGbxO,MAAM6d,UAAY,SAAU1D,EAAKoC,EAAYvV,GACzC,IAAIwH,EAAQ1O,EAAEtE,MAAM0E,KAAK,cAAgBJ,EAAEA,EAAEtE,MAAM0E,KAAK,eAAiBJ,EAAE,aAEpD,mBAAZkH,GACPwH,EAAMvK,IAAI,mBAAmBC,GAAG,kBAAmB8C,GAGvDwH,EAAMA,MAAM,SAIhBxO,MAAM8d,UAAY,SAAUC,EAAQ7d,GAChCJ,EAAEie,GAAQ/R,KAAKlM,EAAEI,GAAM8L,QAAQtL,kBAGnCV,MAAMge,UAAY,SAAU7D,GACxB,IAAI8D,EAAcne,EAAEtE,MAAM4R,QAAQ,SAElCtN,EAAEtE,MAAM4R,QAAQ,mBAAmB4B,SACnClP,EAAE,mBAAoBme,GAAapW,YAAY,SAAU/H,EAAE,kBAAmBtE,MAAMwD,OAAS,IAO1FgB,MA/UA,CAgVTQ,OAAQb;AChVV,aAEA,SAAS6C,QAAQC,GAAgC,OAAOD,QAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAK,cAAcA,GAAO,SAAUA,GAAK,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOpH,UAAY,gBAAkBmH,IAAcA,GACzT,SAASyb,gBAAgBC,EAAKjI,EAAKpJ,GAA4L,OAAnLoJ,EAAMkI,eAAelI,MAAiBiI,EAAOE,OAAOC,eAAeH,EAAKjI,EAAK,CAAEpJ,MAAOA,EAAOyR,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBN,EAAIjI,GAAOpJ,EAAgBqR,EACtO,SAASC,eAAeM,GAAO,IAAIxI,EAAMyI,aAAaD,EAAK,UAAW,MAAwB,WAAjBlc,QAAQ0T,GAAoBA,EAAM9W,OAAO8W,GACtH,SAASyI,aAAaC,EAAOC,GAAQ,GAAuB,WAAnBrc,QAAQoc,IAAiC,OAAVA,EAAgB,OAAOA,EAAO,IAAIE,EAAOF,EAAMlc,OAAOqc,aAAc,QAAahV,IAAT+U,EAAoB,CAAE,IAAIE,EAAMF,EAAKrB,KAAKmB,EAAOC,GAAQ,WAAY,GAAqB,WAAjBrc,QAAQwc,GAAmB,OAAOA,EAAK,MAAM,IAAIC,UAAU,gDAAmD,OAAiB,WAATJ,EAAoBzf,OAASX,QAAQmgB,GALpXjf,GAAGoB,QAAW,SAAUjB,EAAGC,EAAEmf,GAGzB,IAAIlf,EAAQD,EAAGgB,SAAW,GAQpB6Q,EAAO,2BAEPuN,EAAe,CACjB,UACA,UACA,UACA,YACA,aAGAC,GAAc,EAEdC,EAAS,CACTC,MAAO,EACPC,KAAM,EACNC,KAAM,EACNC,SAAU,EACVC,GAAI,EACJC,iBAAkB,EAClBC,eAAgB,EAChBC,aAAc,EACdC,mBAAoB,EACpBC,cAAe,EACfC,QAAS,GACTC,gBAAiB,GACjBC,cAAe,GACfC,YAAa,GACbC,aAAc,GACdC,UAAW,GACXC,QAAS,GACTC,QAAS,GACTC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,YAAa,GACbC,aAAc,GACdC,uBAAwB,GACxBC,cAAe,GACfC,cAAe,GACfC,YAAa,GACbC,IAAK,GACLC,OAAQ,GACRC,YAAa,GACbC,QAAS,GACTC,gBAAiB,GACjBC,kBAAmB,GACnBC,UAAW,GACXC,iBAAkB,GAClBC,kBAAmB,GACnBC,sBAAuB,GACvBC,YAAa,GACbC,yBAA0B,GAC1BC,0BAA2B,GAC3BC,uBAAwB,GACxBC,6DAA8D,GAC9DC,SAAU,GACVC,qBAAsB,GACtBC,2BAA4B,GAC5BC,uBAAwB,GACxBC,yBAA0B,GAC1BC,yBAA0B,GAC1BC,qBAAsB,GACtBC,IAAK,GACLC,iBAAkB,GAClBC,sBAAuB,GACvBC,0BAA2B,GAC3BC,0BAA2B,GAC3BC,mBAAoB,GACpBC,oBAAqB,GACrBC,qBAAsB,GACtBC,yBAA0B,GAC1BC,mBAAoB,GACpBC,uBAAwB,GACxBC,2BAA4B,GAC5BC,mCAAoC,GACpCC,sBAAuB,GACvBC,8BAA+B,GAC/BC,cAAe,GACfC,YAAa,GACbC,OAAQ,GACRC,kCAAmC,GACnCC,qCAAsC,GACtCC,0CAA2C,GAC3CC,uCAAwC,GACxCC,sBAAuB,GACvBC,+BAAgC,GAChCC,gCAAiC,GACjCC,SAAU,GACVC,mBAAoB,GACpBC,qBAAsB,GACtBC,mBAAoB,GACpBC,mBAAoB,GACpBC,4BAA6B,GAC7BC,6BAA8B,GAC9BC,iCAAkC,GAClCC,oBAAqB,GACrBC,kCAAmC,GACnCC,qCAAsC,GACtCC,8BAA+B,GAC/BC,YAAa,GACbC,iBAAkB,GAClBC,aAAc,GACdC,qCAAsC,GACtCC,2BAA4B,IAy0BhC,OAt0BAllB,EAAEmlB,OAAO,uBAAwB,CAC7BC,SAAS,EACTC,WAAW,EACXC,YAAa,KACbC,WAAY,KAEZ1kB,SAAOue,EAAA,CACH/R,WAAW,EACXI,UAAW,EACXvG,SAAU,4BACV2S,IAAK,IACL2L,QAAQ,EACRtc,OAAQ,IACRyF,KAAM4Q,EAAOE,KACbgG,WAAY,GACZC,WAAW,EACXC,YAAY,GAAKvH,gBAAAgB,EAAA,aACN,GAAIhB,gBAAAgB,EAAA,QACT,GAAKhB,gBAAAgB,EAAA,UACF,IAAEhB,gBAAAgB,EAAA,YACD,GAAKhB,gBAAAgB,EAAA,eACF,GAAKhB,gBAAAgB,EAAA,eACJ,IAAEhB,gBAAAgB,EAAA,OACV,IAAEA,GAEZwG,QAAS,WAuCL,GAtCA5lB,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QAE/Bkf,IACDtf,EAAEkE,UACGE,GAAG,oBAAqB0N,EAAMpW,KAAKmqB,mBACnCzhB,GAAG,UAAW0N,EAAMpW,KAAKoqB,aACzB1hB,GAAG,WAAY0N,EAAMpW,KAAKqqB,cAC1B3hB,GAAG,QAAS,yBAA0B1I,KAAKsqB,mBAEhD1G,GAAc,GAGlBrf,EAAGkN,sBAAsBzR,KAAK+N,QAAS/N,KAAKmF,SAE5CnF,KAAK4pB,YAActlB,EAAE,WAAWoG,KAAK,CACjCuI,KAAM,SACN2G,KAAM5Z,KAAK+N,QAAQrD,KAAK,QACxB4G,MAAOtR,KAAKmF,QAAQmM,MAAQtR,KAAKmF,QAAQmM,MAAQtR,KAAKmF,QAAQolB,UAK9DvqB,KAAKmF,QAAQyU,KACb5Z,KAAK+N,QAAQrD,KAAK,OAAQ1K,KAAKmF,QAAQyU,MAEvC5Z,KAAK+N,QAAQyc,WAAW,QAG5BxqB,KAAK+N,QAAQrJ,KAAK,SAAU,UAC5B1E,KAAK+N,QAAQ0c,MAAMzqB,KAAK4pB,aACxB5pB,KAAKmF,QAAQ8N,KAAOjT,KAAKmF,QAAQ8N,KAAKyX,cAGlC1qB,KAAKmF,QAAQ8kB,aACbjqB,KAAKmF,QAAQqG,SAAW,qCAIxBxL,KAAKmF,QAAQwM,UAAW,CACxB,IAAI/J,EAAS5H,KAAK+N,QAAQ6D,QAAQ,sBAClC5R,KAAKmF,QAAQ4M,SAAWnK,EAAOlD,KAAK,YACpC,IAAIimB,EAAiBpmB,EAAGuM,kBAAkBlJ,EAAOlD,KAAK,wBAC/B6J,IAAnBoc,IACA3qB,KAAKmF,QAAQqG,SAAWmf,GAI5B3qB,KAAKmF,QAAQ2kB,QACb9pB,KAAK+N,QAAQrD,KAAK,YAAY,GAAM/B,IAAI,CAAEiiB,OAAQ,YAGlD5qB,KAAKmF,QAAQ0lB,WACb7qB,KAAK6pB,WAAavlB,EAAE,OACfgM,SAAS,yCACT3H,IAAI,SAAU,WACnB3I,KAAK+N,QAAQ0c,MAAMzqB,KAAK6pB,aAGxB7pB,KAAKmF,QAAQ2lB,cACb9qB,KAAKmF,QAAQ2lB,aAAc,EAC3B9qB,KAAK+N,QAAQnJ,IAAI,IAAIF,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GACzE1K,KAAK4pB,YAAYhlB,IAAI,KAIzB,IAAIkU,EAAW9Y,KAAKmF,QAAQ4lB,KAAO,CAC/BC,GAAI,cACJC,GAAI,WACJC,UAAW,QACX,CACAF,GAAI,WACJC,GAAI,cACJC,UAAW,QAEX1P,EAAOxb,KAEXA,KAAK+N,QAAQod,aAAa,CACtBC,UAAW,EACX/T,MAjNE,IAkNFgU,YAAY,EACZC,WAAW,EACX/W,MAAO,WAAA,OAAM,GACbgX,OAAQ,SAAUC,EAASC,GACvB,KAAID,EAAQE,KAAKjb,OAAOjN,OAAS,GAAjC,CAIA,IAAImoB,EAAa,CACbC,WAAYrnB,EAAG6P,cAAcoX,EAAQE,KAAKjb,QAC1Cob,aAAcrQ,EAAKrW,QAAQ2mB,aAAetQ,EAAKrW,QAAQ2mB,aAAata,WAAWlD,MAAM,KAAO,GAC5Fyd,iBAAkBlI,EAAOrI,EAAKrW,QAAQ8N,KAAKhP,gBAI/CK,EAAE,QAAQgM,SAAS,OAGnB,IAAInL,EAAU,CACV8F,OAAQ0gB,EACRthB,IAAK2hB,uCACLxgB,SAAU,SAAC9G,GAAI,OAAK8W,EAAKyQ,qBAAqBhK,KAAKzG,EAAM9W,EAAKA,KAAM+mB,IACpEvN,UAAU,GAEd3Z,EAAG+F,KAAKC,QAAQpF,KAEpBwF,OAAQ,SAAUuhB,EAAOlK,GACrBkK,EAAMC,kBACN3Q,EAAK4Q,WAAY,EACjB5Q,EAAKmO,WAAY,EACjBnO,EAAKzN,QAAQnJ,IAAIod,EAAG/G,KAAKna,OAGzB0a,EAAKrW,QAAQmM,MAAQ0Q,EAAG/G,KAAK3J,MAC7BkK,EAAKzN,QAAQrD,KAAK,aAAcsX,EAAG/G,KAAK3J,OACxCkK,EAAKoO,YAAYhlB,IAAIod,EAAG/G,KAAK3J,OAC7B,IAAI7F,EAAS,CACTjB,EAAGgR,EAAKzN,QACRuD,MAAO0Q,EAAG/G,KAAK3J,MACf6M,IAAK3C,EAAKrW,QAAQgZ,IAClB4L,WAAYvO,EAAKrW,QAAQ4kB,WACzBhY,SAAUyJ,EAAKrW,QAAQ4M,SACvBjR,MAAOkhB,EAAG/G,KAAKna,MACfypB,QAAS/O,EAAKrW,QAAQolB,SAAW,KACjC8B,IAAKrK,EAAG/G,MAGZ,OAAQ+G,EAAG/G,KAAKqR,QACZ,KAAKzI,EAAO4D,uBACRhc,EAAO8gB,WAAavK,EAAG/G,KAAKsR,WAC5B9gB,EAAO+gB,kBAAoBxK,EAAG/G,KAAKuR,kBACnC,MACJ,QACI/gB,EAAOghB,SAAWzK,EAAG/G,KAAKwR,UAAY,KACtChhB,EAAOihB,KAAO1K,EAAG/G,KAAKyR,KACtBjhB,EAAOkhB,aAAe3K,EAAG/G,KAAK0R,aAQtC,OALAnR,EAAKzN,QAAQrJ,KAAK8W,EAAKrW,SACvBZ,EAAGoM,oBAAoB6K,EAAKzN,QAAStC,GAErC+P,EAAKzN,QAAQ+G,QAAQ,QACrB0G,EAAKoO,YAAY9U,QAAQ,WAClB,GAEX8X,MAAO,SAAUV,GACb1Q,EAAK4Q,WAAY,EACjB9nB,EAAE,QAAQ+L,YAAY,OACjBmL,EAAKmO,WACNnO,EAAKzN,QAAQnJ,IAAI4W,EAAKrW,QAAQolB,SAElC/O,EAAKmO,WAAY,EAEbnO,EAAKrW,QAAQ6kB,WACbxO,EAAKzN,QAAQnJ,IAAI,IAAI2P,SAG7BuE,SAAUA,IACXqS,aAAa,YAAY0B,YAAc,SAAUC,EAAI7R,GACpD6R,EAAGnkB,IAAI,CACHokB,aAAcvR,EAAKrW,QAAQqI,OAAS,KACpCwf,aAAc,OACdC,aAAc,WAGlB,IAAIV,EAAatR,EAAKiS,WAEtB,GAAIX,IAAe1I,EAAOE,MAAQwI,IAAe1I,EAAOmC,iBAAkB,CACtE,IACIpT,EAAQ,yBADAqI,EAAKkS,UAC8B,KAK/C,YAHkB5e,IAAd0M,EAAKyR,OACL9Z,EAAQ,IAELtO,EAAE,QACJgP,OAAO,4DAA8DV,EAAQ,gCAAkCqI,EAAKna,MAAQ,gBAC5HssB,SAASN,GAGlB,OAAOxoB,EAAE,QACJgP,OAAO,QAAU2H,EAAKna,MAAQ,UAC9BssB,SAASN,IAGlB9sB,KAAK+N,QAAQrJ,KAAK1E,KAAKmF,SACvBnF,KAAK+N,QAAQuC,SAAS,gBACtBtQ,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAK+N,QAAQrJ,KAAKS,GAClBnF,KAAKgO,WAETA,QAAS,WACLhO,KAAK+N,QAAQrD,KAAK,CACd6iB,WAAYvtB,KAAKmF,QAAQgZ,IACzBqP,cAAextB,KAAKmF,QAAQ2kB,SAEhC9pB,KAAK+N,QAAQrD,KAAK,WAAY1K,KAAKmF,QAAQ2kB,SAE/C2D,OAAQ,SAAUjS,GACdxb,KAAK+N,QAAUyN,GAEnBkS,SAAU,aAGVvD,kBAAmB,SAAU+B,GACzB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,uBAC9C8W,EAAKrW,QAAQolB,QAAU/O,EAAKzN,QAAQnJ,MACpC4W,EAAKzN,QAAQnJ,IAAI,KAErBwlB,YAAa,SAAU8B,GACnB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,uBACzC8W,EAAK4Q,WACN5Q,EAAKzN,QAAQnJ,IAAI4W,EAAKrW,QAAQolB,SAElC/O,EAAK4Q,WAAY,GAErB/B,aAAc,SAAU6B,GACpB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,uBAElB,KAAxBzB,OAAOipB,EAAMyB,QAA2C,KAA1B1qB,OAAOipB,EAAM0B,UAC3CpS,EAAKzN,QAAQnJ,IAAI4W,EAAKrW,QAAQolB,UAItCD,kBAAmB,SAAU4B,GACzB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQsL,OAAOnpB,KAAK,uBAMvC,GAJK8W,EAAKrW,QAAQ4M,WACdyJ,EAAKrW,QAAQ4M,SAAWyJ,EAAKzN,QAAQ6D,QAAQ,wBAAwBlN,KAAK,aAG1E8W,EAAKzN,QAAQnJ,MAAO,CACpB4W,EAAKrW,QAAQmM,MAAQ,GACrBkK,EAAKzN,QAAQnJ,IAAI,IAAIF,KAAK,QAAS,IACnC,IAAI+G,EAAS,CACTjB,EAAGgR,EAAKzN,QACRuD,OAAQ,EACRmb,SAAU,KACVC,KAAM,KACNvO,IAAK3C,EAAKrW,QAAQgZ,IAClBpM,SAAUyJ,EAAKrW,QAAQ4M,SACvBgY,WAAYvO,EAAKrW,QAAQ4kB,WACzBQ,QAAS/O,EAAKrW,QAAQolB,QACtBzpB,MAAO,MAEXyD,EAAGoM,oBAAoB6K,EAAKzN,QAAStC,GACrC+P,EAAKzN,QAAQrJ,KAAK8W,EAAKrW,SACvBqW,EAAKoO,YAAYhlB,KAAK,GAAGkQ,QAAQ,UACjC0G,EAAKzN,QAAQ+G,QAAQ,YAI7BmX,qBAAsB,SAAUxgB,EAAQggB,GAEpC,OAAQ5H,EAAO7jB,KAAKmF,QAAQ8N,KAAKhP,gBAC7B,KAAK4f,EAAOW,QACZ,KAAKX,EAAOqF,qCACZ,KAAKrF,EAAO0D,yBACRkE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZb,UAAW,UAGnB,MACJ,KAAKtJ,EAAO6C,2BACR+E,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZb,UAAW,UAGnB,MACJ,KAAKtJ,EAAO8C,uBACZ,KAAK9C,EAAO+C,yBACZ,KAAK/C,EAAO0E,gCACZ,KAAK1E,EAAOiF,6BACR2C,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKiT,aACZxB,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZb,UAAW,UAGnB,MACJ,KAAKtJ,EAAOa,cACR+G,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZvB,SAAUxR,EAAKkT,SACfhB,UAAWlS,EAAKmT,eAGxB,MACJ,KAAKvK,EAAOc,YACR8G,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKoT,YACZ3B,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKqT,UACZ7B,SAAU,KACVU,UAAWlS,EAAKmT,eAGxB,MACJ,KAAKvK,EAAOe,aACZ,KAAKf,EAAOsE,0CACZ,KAAKtE,EAAOgB,UACZ,KAAKhB,EAAOuE,uCACZ,KAAKvE,EAAOiB,QACZ,KAAKjB,EAAOkB,QACZ,KAAKlB,EAAOqB,SACZ,KAAKrB,EAAOsB,YACZ,KAAKtB,EAAOuB,aACZ,KAAKvB,EAAO0B,cACRkG,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKsT,YACZ7B,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKqT,UACZ7B,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOoB,OACRwG,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKsT,YACZ7B,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOoC,kBACZ,KAAKpC,EAAOqC,sBACRuF,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,WAAYjS,EAAKuT,WACjB1tB,MAAOma,EAAKiT,aACZxB,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOwB,uBACZ,KAAKxB,EAAOyB,cACZ,KAAKzB,EAAOgC,gBACZ,KAAKhC,EAAO2B,YACZ,KAAK3B,EAAOsD,0BACZ,KAAKtD,EAAOqD,0BACZ,KAAKrD,EAAO8D,mCACZ,KAAK9D,EAAO2E,SAERiD,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOgF,4BACR4C,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKiT,aACZxB,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,KACXsB,oBAAqBxT,EAAKyT,oBAC1BC,UAAW1T,EAAK2T,UAChBC,SAAU5T,EAAK6T,SACfC,gBAAiB9T,EAAK+T,gBACtBC,aAAchU,EAAKiU,aACnBC,aAAclU,EAAKmU,aACnBC,UAAWpU,EAAKqU,UAChBC,WAAYtU,EAAKuU,WACjBC,aAAcxU,EAAKyU,kBAG3B,MACJ,KAAK7L,EAAOyF,aACRmC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK0U,SACZjD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK2U,OACZnD,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO4B,IACRgG,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKwC,MACZiP,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO6B,OACR+F,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK4U,KACZnD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK4U,KACZpD,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO8B,YACR8F,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6U,WACZpD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK8U,SACZtD,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO+B,QACR6F,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK+U,gBACZtD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOwF,iBACRoC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKgV,iBACZvD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKiV,MACZzD,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOiC,kBACR2F,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKkV,aACZzD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKmV,WACZ3D,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOsC,YACRsF,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKoV,YACZ3D,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK2T,UACZnC,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOyC,uBACRmF,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKwC,MACZiP,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOmD,iBACRyE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKiT,aACZoC,iBAAkBrV,EAAKsV,iBACvBC,YAAavV,EAAK6S,KAClBW,oBAAqBxT,EAAKyT,oBAC1BC,UAAW1T,EAAK2T,UAChBG,gBAAiB9T,EAAK+T,gBACtBK,UAAWpU,EAAKqU,UAChBT,SAAU5T,EAAK6T,SACf2B,WAAYxV,EAAKyV,WACjBnG,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,QAGpB,MACJ,KAAKnK,EAAOkD,IACZ,KAAKlD,EAAO2D,mBACRiE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK0V,QACZjE,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK2V,MACZnE,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOuD,mBACRqE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK4V,uBACZvf,MAAO2J,EAAK+S,GACZ8C,YAAa7V,EAAK8V,YAClBlC,SAAU5T,EAAK+V,gBACfC,iBAAkBhW,EAAKiW,iBACvB/B,cAAelU,EAAKkW,WACpB5B,WAAYtU,EAAKuU,WACjBC,aAAcxU,EAAKyU,kBAG3B,MACJ,KAAK7L,EAAOyD,qBACZ,KAAKzD,EAAOY,gBACZ,KAAKZ,EAAOwD,oBACZ,KAAKxD,EAAO6D,2BACZ,KAAK7D,EAAOoE,kCACZ,KAAKpE,EAAO+D,sBACZ,KAAK/D,EAAOwE,sBACZ,KAAKxE,EAAOyE,+BACRmD,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKsT,YACZ7B,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZvB,SAAUxR,EAAKmW,gBACfjE,UAAWlS,EAAKmT,UAChBzB,aAAc1R,EAAKoW,kBAG3B,MACJ,KAAKxN,EAAOmE,OACRyD,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKsT,YACZ7B,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO4D,uBACRgE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6S,KACZvD,QAAS,KACTjZ,MAAO2J,EAAK+S,GACZd,WAAYjS,EAAKuT,WACjBhC,kBAAmBvR,EAAKqW,kBACxBhF,OAAQzI,EAAO4D,4BAGvB,MACJ,KAAK5D,EAAO6E,qBACR+C,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKsW,eACZjgB,MAAO2J,EAAK+S,GACZd,WAAYjS,EAAKuT,gBAGzB,MACJ,KAAK3K,EAAOgE,8BACR4D,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,IAAIuW,EAAoBjtB,EAAGoZ,WAC3B,MAAO,CACH7c,MAAOma,EAAK6S,KAAO,KAAO0D,EAAkB7N,EAAa1I,EAAKwW,aAAe,IAAM,IACnF/E,KAAM,KACNnC,QAAS,KACTjZ,MAAO2J,EAAK+S,QAGpB,MACJ,KAAKnK,EAAOiE,cACR2D,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKoV,YACZ/e,MAAO2J,EAAK2T,UACZ7c,SAAUkJ,EAAK+T,qBAGvB,MACJ,KAAKnL,EAAOkE,YACR0D,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKyW,gBACZpgB,MAAO2J,EAAK2V,MACZe,UAAW1W,EAAK2W,UAChBC,QAAS5W,EAAK6W,QACdC,UAAW9W,EAAK+W,eAGxB,MACJ,KAAKnO,EAAO4E,mBACRgD,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKgX,iBAAmB,KAAOhX,EAAK6S,KAC3Cxc,MAAO2J,EAAKgX,sBAGpB,MACJ,KAAKpO,EAAO8E,mBACR8C,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6S,KACZxc,MAAO2J,EAAK+S,QAGpB,MACJ,KAAKnK,EAAO+E,mBAQZ,KAAK/E,EAAOkF,iCACR0C,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKiX,WACZ5gB,MAAO2J,EAAK+S,QAGpB,MAEJ,KAAKnK,EAAOmF,oBAQZ,KAAKnF,EAAOoF,kCACRwC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6S,KACZxc,MAAO2J,EAAK+S,QAGpB,MACJ,KAAKnK,EAAOsF,8BACRsC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6S,KACZxc,MAAO2J,EAAK+S,GACZd,WAAYjS,EAAKuT,gBAGzB,MACJ,KAAK3K,EAAOuF,YACRqC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6U,WACZxe,MAAO2J,EAAK8U,SACZ7C,WAAYjS,EAAKuT,gBAGzB,MACJ,KAAK3K,EAAO0F,qCACRkC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6U,WACZxe,MAAO2J,EAAK8U,cAGpB,MACJ,QACItE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,WAAYjS,EAAKuT,WACjB1tB,MAAOma,EAAKiT,aACZxB,KAAMzR,EAAKkX,KACX5H,QAAStP,EAAKmX,QACd9gB,MAAO2J,EAAK+S,GACZb,UAAWlS,EAAKmT,UAChBiE,WAAYpX,EAAKqX,WACjBC,MAAQtX,EAAKuX,WAGrB,MACJ,KAAK3O,EAAO2F,2BACRiC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKwX,mBAAqB,IAAMxX,EAAKyX,wBAC5CphB,MAAO2J,EAAK+S,YAepCxpB,EAAMgB,gBAAkB,SAAUwO,GAC9B,IAAI4C,EAAO,GACO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAGb9R,EAAEsS,GAAM+b,iBAQLnuB,EA37BG,CA47BZQ,OAAQb;AC57BV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAGtB6Q,EAAO,qBACPwN,GAAc,EA4WlB,OA1WAtf,EAAEmlB,OAAO,gBAAiB,CACtBmJ,QAAQ,EACRC,YAAa,KACbC,YAAa,KAEb3tB,QAAS,CACLwM,WAAW,EACXI,UAAW,EACXkB,KAAM,QACNnB,eAAgB,EAChBqM,IAAK,IACLoE,OAAQ,GACRwQ,MAAM,EACNC,YAAY,EACZlJ,QAAQ,EACRmJ,iBAAiB,EACjB3hB,OAAO,EACP4hB,QAAS,KAEbhJ,QAAS,WACL5lB,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QAE/Bkf,IACDtf,EAAEkE,UACGE,GAAG,QAAS0N,EAAMpW,KAAKmzB,cACvBzqB,GAAG,UAAW0N,EAAMpW,KAAKozB,gBACzB1qB,GAAG,QAAS,+CAAgD1I,KAAKqzB,mBACjE3qB,GAAG,QAAS,gDAAiD1I,KAAKszB,gBAEvE1P,GAAc,GAGlBrf,EAAGkN,sBAAsBzR,KAAK+N,QAAS/N,KAAKmF,SAExCnF,KAAKmF,QAAQ2kB,OACb9pB,KAAK+N,QAAQrD,KAAK,YAAY,GAAM/B,IAAI,CAAEiiB,OAAQ,YAElD5qB,KAAK+N,QAAQpF,IAAI,CAAEiiB,OAAQ,YAG3B5qB,KAAKmF,QAAQ6tB,YACbhzB,KAAKuzB,eAGgB,UAArBvzB,KAAKmF,QAAQ8N,OACbjT,KAAK+N,QAAQqC,KAAK,yBAAyBoD,SACJ,GAAnCxT,KAAK+N,QAAQqC,KAAK,OAAO5M,QACzBxD,KAAK+N,QAAQ2K,QAAQpU,EAAE,0BAI/BtE,KAAK+N,QAAQuC,SAAS,UACtBtQ,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAK+N,QAAQrJ,KAAKS,GAClBnF,KAAKgO,WAETA,QAAS,WACLhO,KAAK+N,QAAQrD,KAAK,CACd6iB,WAAYvtB,KAAKmF,QAAQgZ,IACzBqP,cAAextB,KAAKmF,QAAQ2kB,SAEhC9pB,KAAK+N,QAAQrD,KAAK,WAAY1K,KAAKmF,QAAQ2kB,QAClB,UAArB9pB,KAAKmF,QAAQ8N,OACbjT,KAAK+N,QAAQ1B,YAAY,qBAAsBrM,KAAKmF,QAAQmM,OAAOjF,YAAY,iBAAkBrM,KAAKmF,QAAQmM,OAC9GtR,KAAK+N,QAAQqC,KAAK,KAAK/D,YAAY,oBAAqBrM,KAAKmF,QAAQmM,OAAOjF,YAAY,eAAgBrM,KAAKmF,QAAQmM,SAG7Hmc,OAAQ,SAAUjS,GACdxb,KAAK+N,QAAUyN,GAEnBkS,SAAU,aAGVyF,aAAc,SAAUjH,GACpB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,gBAC9C,GAAK8W,KAGDA,EAAKrW,QAAQ2kB,QACbxlB,EAAE4nB,EAAM3J,QAAQ3Q,QAAQ,KAAK8B,GAAG,qBAChC8H,EAAKzN,QAAQ2F,GAAG,qBAAuB8H,EAAKzN,QAAQrD,KAAK,aACzD8Q,EAAKzN,QAAQ2F,GAAG,YAHpB,CAOA,OAAQ8H,EAAKrW,QAAQ8N,MACjB,IAAK,aACDuI,EAAKgY,eAAetH,GACpB,MACJ,IAAK,WACD1Q,EAAK+X,aAAarH,GAClB,MACJ,IAAK,UACD1Q,EAAKiY,YAAYvH,GACjB,MACJ,IAAK,UACD1Q,EAAKkY,YAAYxH,GACjB,MACJ,IAAK,mBACD1Q,EAAKmY,qBAAqBzH,EAAO,MACjC,MACJ,IAAK,WACD1Q,EAAKmY,qBAAqBzH,EAAO,MACjC,MACJ,IAAK,cACD1Q,EAAKoY,iBAAiB1H,EAAO,UAC7B,MACJ,IAAK,eACD1Q,EAAKoY,iBAAiB1H,EAAO,WAC7B,MACJ,IAAK,SACD1Q,EAAKqY,WAAW3H,GAChB,MACJ,QACI1Q,EAAKsY,aAAa5H,GAItB1Q,EAAKrW,QAAQ8tB,iBACb/G,EAAMC,oBAGdiH,eAAgB,SAAUlH,GACF,KAAhBA,EAAMyB,OAAkC,KAAlBzB,EAAM0B,SAC5BtpB,EAAE4nB,EAAM3J,QAAQzN,QAAQ,UAKhC0e,eAAgB,SAAUtH,GACtB,IAAI1Q,EAAOxb,KACP4H,EAAS5H,KAAK+N,QAAQ6D,QAAQ,MAEZ,IAAlBhK,EAAOpE,SAIXxD,KAAK6yB,YAAcjrB,EAAOwI,KAAK,sBAC/BpQ,KAAK8yB,YAAclrB,EAAOwI,KAAK,sBAC/BpQ,KAAK4yB,QAAS,EACd5yB,KAAK6yB,YAAYviB,SAAS,UAC1BtQ,KAAK8yB,YAAYnqB,IAAI,UAAW,GAAG0H,YAAY,UAAUkG,QAAQ,CAAEkC,QAAS,GAAK,KAE7EzY,KAAK4yB,QACLhmB,aAAa5M,KAAK4yB,QAEtB5yB,KAAK4yB,OAAS/lB,YAAW,WACrB2O,EAAKuY,gBACN,OAGPA,YAAa,WACJ/zB,KAAK4yB,SAGe,cAArB5yB,KAAKmF,QAAQ8N,KACbjT,KAAK8yB,YAAYxiB,SAAS,UAE1BtQ,KAAK8yB,YAAYtf,SAErBxT,KAAK6yB,YAAYlqB,IAAI,UAAW,GAAG0H,YAAY,UAAUkG,QAAQ,CAAEkC,QAAS,GAAK,KACjFzY,KAAK4yB,QAAS,IAElBS,kBAAmB,SAAUnH,IACd5nB,EAAE4nB,EAAM3J,QAAQ3Q,QAAQ,wBAAwBpO,OAAS,EAC9Dc,EAAE4nB,EAAM3J,QAAQ3Q,QAAQ,wBAAwBlN,KAAK,gBACpDJ,EAAE4nB,EAAM3J,QAAQ3Q,QAAQ,cAAcpO,OAAS,EAC5Cc,EAAE4nB,EAAM3J,QAAQ3Q,QAAQ,cAAcic,KAAKzX,GAAM1R,KAAK,gBACtDJ,EAAE4nB,EAAM3J,QAAQ3Q,QAAQ,MAAMxB,KAAK,0BAA0B1L,KAAK,iBACvEqvB,eAETT,eAAgB,WACZ,IAAI9X,EAAOlX,EAAE4nB,MAAM3J,QAAQ3Q,QAAQ,wBAAwBpO,OAAS,EAC9Dc,EAAE4nB,MAAM3J,QAAQ3Q,QAAQ,wBAAwBlN,KAAK,gBACpDJ,EAAE4nB,MAAM3J,QAAQ3Q,QAAQ,cAAcpO,OAAS,EAC5Cc,EAAE4nB,MAAM3J,QAAQ3Q,QAAQ,cAAcic,KAAKzX,GAAM1R,KAAK,gBACtDJ,EAAE4nB,MAAM3J,QAAQ3Q,QAAQ,MAAMxB,KAAK,0BAA0B1L,KAAK,gBAC5E8W,EAAKuY,cACLvY,EAAKsY,gBAKTP,aAAc,WACyB,IAA/BvzB,KAAKmF,QAAQod,OAAO/e,SAExBxD,KAAKmF,QAAQod,OAAOlW,YAAY,SAAUrM,KAAKmF,QAAQ4tB,MACvD/yB,KAAKmF,QAAQ4tB,MAAQ/yB,KAAKmF,QAAQ4tB,KAClC/yB,KAAK+N,QAAQrJ,KAAK1E,KAAKmF,SAEvBnF,KAAK+N,QAAQimB,OAAO,SAAU,QAASh0B,KAAKmF,QAAQ4tB,QAIxDU,YAAa,SAAUvH,GACnB,IAAI+H,EAAKj0B,KAAK+N,QAAQ6D,QAAQ,MAClBqiB,EAAGriB,QAAQ,SAEjBxB,KAAK,qBAAqBC,YAAY,gBAC5C4jB,EAAG3jB,SAAS,gBAEZtQ,KAAK8zB,gBAITJ,YAAa,SAAUxH,GACVlsB,KAAK+N,QAAQoC,QAAQ,MAE3B+D,SAAS,MAAM7D,YAAY,UAC9BrQ,KAAK+N,QAAQoC,QAAQ,MAAMG,SAAS,UAEpCtQ,KAAK8zB,gBAITH,qBAAsB,SAAUzH,EAAO3J,GACnC,IAAI/G,EAAOxb,KACP4H,EAAmB,MAAV2a,EAAiBviB,KAAK+N,QAAQ6D,QAAQ2Q,GAAUviB,KAAK+N,QAAQoC,QAAQoS,GAAQ2R,QAC1F,IAAItsB,EAAOyO,SAAS,YAIpBrW,KAAK4yB,QAAS,EAEQ,IAAlBhrB,EAAOpE,QAAX,CAIA,IAAI2wB,EAAUvsB,EAAOA,SACjBwsB,EAAK,GACTA,EAAGzwB,KACC,yCAAqD,MAAV4e,EAAiBviB,KAAK+N,QAAQ6D,QAAQ2Q,GAAQ7X,KAAK,SAAW,IAAM,0BAC/G,oBACA,2CACA,oCACA,OACA,QACA,OACA,yBACA,kCACA,OACA,QACA,SAGJ9C,EAAO0I,SAAS,UACF,MAAViS,EACA3a,EAAO6iB,MAAM2J,EAAGhZ,KAAK,KAErB+Y,EAAQ7gB,OAAO8gB,EAAGhZ,KAAK,KAG3Bpb,KAAK6yB,YAAcjrB,EACnB5H,KAAK8yB,YAAwB,MAAVvQ,EAAiB3a,EAAOysB,OAASF,EAAQ/jB,KAAK,wBACjEpQ,KAAK8yB,YAAYpuB,KAAK,eAAgB1E,MAElCA,KAAK4yB,QACLhmB,aAAa5M,KAAK4yB,QAEtB5yB,KAAK4yB,OAAS/lB,YAAW,WACrB2O,EAAKuY,gBACN,OAIPH,iBAAkB,SAAU1H,EAAOjZ,GAC/B,IAAIuI,EAAOxb,KACP4H,EAAS5H,KAAK+N,QAAQ6D,QAAQ,MAAMsiB,QAGxC,GAFAl0B,KAAK4yB,QAAS,EAEQ,IAAlBhrB,EAAOpE,OAAX,CAGA,IAAI2wB,EAAUvsB,EAAOA,SACjBwsB,EAAK,GACTA,EAAGzwB,KACC,yEACA,OACA,0DACA,kCACA,OACA,QACA,OACA,2BAAqC,WAARsP,EAAoB,cAAgB,cAAgB,wBACjF,iBAA2B,WAARA,EAAoB,oBAAsB,YAAc,eAC3E,OACA,QACA,SAGJrL,EAAO0I,SAAS,UAChB6jB,EAAQ7gB,OAAO8gB,EAAGhZ,KAAK,KAEvBpb,KAAK6yB,YAAcjrB,EACnB5H,KAAK8yB,YAAcqB,EAAQ/jB,KAAK,wBAChCpQ,KAAK8yB,YAAYpuB,KAAK,eAAgB1E,MAElCA,KAAK4yB,QACLhmB,aAAa5M,KAAK4yB,QAEtB5yB,KAAK4yB,OAAS/lB,YAAW,WACrB2O,EAAKuY,gBACN,OAIPF,WAAY,WACR7zB,KAAKmF,QAAQmM,OAAStR,KAAK+N,QAAQsI,SAAS,UAC5CrW,KAAK+N,QAAQrJ,KAAK,QAAS1E,KAAKmF,QAAQmM,OACxCtR,KAAKgO,UAELhO,KAAK8zB,gBAGTA,aAAc,WACV,GAAI9zB,KAAKmF,QAAQ+tB,QAAU,EAAG,CAC1B,IAAMoB,EAAYt0B,KAAK+N,QACvBumB,EAAUhkB,SAAS,UACnBzD,YAAW,WACPynB,EAAUjkB,YAAY,YACvBrQ,KAAKmF,QAAQ+tB,SAGpB3uB,EAAGoM,oBAAoB3Q,KAAK+N,QAAS,CACjCvD,EAAGxK,KAAK+N,QACRuD,MAAOtR,KAAKmF,QAAQmM,MACpB6M,IAAKne,KAAKmF,QAAQgZ,IAClBpM,SAAU/R,KAAKmF,QAAQ4M,cAanCvN,EAAMiB,UAAY,SAAU8uB,EAAWvgB,GACnC,IAAI4C,EAAO,GACO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAGb9R,EAAEsS,GAAMod,UAQLxvB,EAnXG,CAoXZQ,OAAQb;ACpXV,aAWAA,GAAGqwB,OAAU,SAAUlwB,EAAGC,GAGtB,IAEIkd,EAAW,CACXgT,YAAa,IAAIp1B,KACjBq1B,UAAW,OACXC,MAAO,aACPC,OAAQ,IAIZ,SAASC,EAAW9mB,EAAS5I,GACzBnF,KAAK80B,MAAQxwB,EAAEyJ,GACf/N,KAAK+0B,UAAYtT,EACjBzhB,KAAKg1B,MAbQ,aAcbh1B,KAAKi1B,OAAS,GACdj1B,KAAKk1B,QAAU,GAKfl1B,KAAKmF,QAAUb,EAAEe,OAAO,GAAIoc,EAAUtc,GACtCnF,KAAKm1B,UAAYn1B,KAAKmF,QAAQsvB,YAE9Bz0B,KAAKo1B,iBACLp1B,KAAKq1B,gBACLr1B,KAAKs1B,eACLt1B,KAAKu1B,gBAiJT,OA5IAV,EAAW/0B,UAAY,CAGnBs1B,eAAgB,WACZp1B,KAAKi1B,OAAS,GACd,IAAIO,EAAY,IAAIn2B,KAAKW,KAAKm1B,UAAUh1B,cAAeH,KAAKm1B,UAAUl1B,WAAY,GAC9Ew1B,EAAcD,EAAUxyB,oBACR,IAAhByyB,IAAmBA,EAAc,GAIrC,IAFA,IAAIN,EAAYK,EAAUj1B,QAAQi1B,EAAUt1B,UAAYu1B,GAE/ClyB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAImyB,EAAO,IAAIr2B,KAAK81B,GAChBQ,EAAU,IAAIt2B,KAAKq2B,EAAK9yB,OAAOW,IAC/B0X,EAAO,CACP2a,QAASD,EACTE,UAAWF,EAAQz1B,UACnB41B,aAAeH,EAAQxzB,QAAQ,IAAI9C,MAAW,iBAAmB,GACjE02B,SAAWJ,EAAQ11B,aAAeD,KAAKm1B,UAAUl1B,WAAc,iBAAmB,YAGtFD,KAAKi1B,OAAOtxB,KAAKsX,KAMzBoa,cAAe,WACXr1B,KAAKk1B,QAAQvxB,KACT,4BACA,qCACA,6BAGJ3D,KAAKk1B,QAAQvxB,KACT,gCACA,qCACA,gDAAkD3D,KAAKm1B,UAAU5zB,2BAA6B,aAC9F,QACA,sCACA,iJACA,gJACA,gJACA,QACA,SACA,kCAGJvB,KAAKk1B,QAAQvxB,KACT,SACA,SACA,UAGJ3D,KAAK80B,MAAMtkB,KAAKxQ,KAAKk1B,QAAQ9Z,KAAK,MAKtCka,aAAc,WAGV,IAFA,IAAIlB,EAAK,GAEA7wB,EAAI,EAAGyyB,EAAMh2B,KAAKmF,QAAQyvB,OAAOpxB,OAAQD,EAAIyyB,EAAKzyB,IAAK,CAC5D,IAAI0yB,EAAIj2B,KAAKmF,QAAQyvB,OAAOrxB,GAEtBqyB,EADQ3V,OAAOgW,EAAEC,gBAAiB,cAClBC,MAAMC,SAE5BhC,EAAGzwB,KAAKiyB,GAGZ51B,KAAKmF,QAAQyvB,OAASR,GAI1BiC,aAAc,SAAUC,GACpB,IAAK,IAAI/yB,EAAI,EAAGyyB,EAAMh2B,KAAKmF,QAAQyvB,OAAOpxB,OAAQD,EAAIyyB,EAAKzyB,IAAK,CAC5D,IAAI0yB,EAAIj2B,KAAKmF,QAAQyvB,OAAOrxB,GAC5B,GAAI+yB,EAAUV,QAAQzzB,QAAQ8zB,GAAI,OAAO,EAG7C,OAAO,GAKXV,cAAe,WACX,IAAI9pB,EAAS,GACbA,EAAO9H,KAAK,uDAEZ,IAAK,IAAIJ,EAAI,EAAGyyB,EAAMh2B,KAAKi1B,OAAOzxB,OAAQD,EAAIyyB,EAAKzyB,IAAK,CACpD,IAAI0yB,EAAIj2B,KAAKi1B,OAAO1xB,GAChBgzB,EAAYv2B,KAAKq2B,aAAaJ,GAAM,SAAW,GAEnDxqB,EAAO9H,KACH,kBAAoBsyB,EAAEF,SAAW,IAAME,EAAEH,aAAe,IAAMS,EAAW,wCAA0CN,EAAEL,QAAQ71B,kBAAqB,yBAClJ,wBACA,+CAAiDk2B,EAAEJ,UAAY,OAC/D,SACA,SAGRpqB,EAAO9H,KAAK,SAEZW,EAAE,kBAAkBkM,KAAK/E,EAAO2P,KAAK,MAKzCob,aAAc,SAAUZ,EAASlxB,GAC7B1E,KAAKm1B,UAAYS,EACjB51B,KAAKmF,QAAQyvB,OAASlwB,EACtB1E,KAAKo1B,iBACLp1B,KAAKs1B,eACLt1B,KAAKu1B,gBAELjxB,EAAE,kBAAkBkM,KAAKxQ,KAAKm1B,UAAU5zB,8BAMhD+C,EAAEW,GAAa,WAAI,SAAUE,GAWzB,OATanF,KAAK6N,MAAK,WACnB,QAAIU,IAAcjK,EAAEtE,MAAM0E,KA3JjB,cA2JmC,CAExC,IAAI+xB,EAAa,IAAI5B,EAAW70B,KAAMmF,GAEtCb,EAAEtE,MAAM0E,KA/JH,aA+JoB+xB,QAY9BlyB,EA9KE,CA+KXS,OAAQb;AC1LV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,uBACPsgB,GAAe,EAGfC,EACI,oBADJA,EAEK,cAILlV,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,OAAO,EACPwY,QAAQ,EACR8M,QAAQ,GAIRhmB,EAAQ,CACRimB,MAAO,SAAUvlB,GACb,IAAI9G,EAAIlG,EAAEtE,KAAK+N,SACfvD,EAAE9F,OAAO4M,MAAQA,EACjBwlB,EAActsB,KAsBtB,SAASusB,EAAYxC,EAAWvgB,GAC5B,IAXIgjB,EAWApgB,EAAO,IAGO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAIO,IAAhBQ,EAAKpT,UAKL+wB,IAAcmC,IA7BdM,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,iBAAkB2N,GAC7B1N,GAAG,SAAWsuB,EAAW5gB,EAAM6gB,GAC/BvuB,GAAG,YAAcsuB,EAAW5gB,EAAM8gB,GA0BnCR,GAAe,GAInB9f,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,OAAQkM,GAGrB,iBAAlBzL,EAAQmM,QACfnM,EAAQmM,MAAQnM,EAAQmM,MAAMzN,WAIlCU,EAAGkN,sBAAsBhD,EAAMtJ,GAG/BsJ,EAAK+B,KAAK,IAAI8C,OAAO,4BACrBwjB,EAAcroB,GAGdA,EAAKiK,QAAQ,+BAAiCvT,EAAQmM,MAAQ,WAAa7C,EAAK/D,KAAK,QAAU,QAC/F+D,EAAK/D,KAAK,OAAQ,IAIbvF,EAAQ2kB,SACTrb,EAAK9F,IAAI,CAAEiiB,OAAQ,YACnBnc,EAAK/D,KAAK,WAAY,QAOlC,SAASosB,EAActsB,GACdA,EAAE9F,KAAK,SAGR8F,EAAE0J,SAAS,KAAK7D,YAAYsmB,GAASrmB,SAASqmB,GAF9CnsB,EAAE0J,SAAS,KAAK7D,YAAYsmB,GAAQrmB,SAASqmB,GAQrD,SAASM,IACL,IAAIzsB,EAAIlG,EAAEtE,MACN0E,EAAO8F,EAAE9F,OACTA,EAAKolB,SAIJplB,EAAKkyB,SACNlyB,EAAKqJ,QAAUvD,EACf9F,EAAK4M,OAAQ5M,EAAK4M,MAClB9G,EAAE9F,KAAKA,GACP8F,EAAEE,KAAK,aAAchG,EAAK4M,OAC1BwlB,EAActsB,GACdlG,EAAE,QAASkG,GAAG5F,IAAIF,EAAK4M,OAAO6lB,UAGlC5yB,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,YAGlG,SAASmlB,EAAe1sB,GACH,IAAbA,EAAEojB,SAA+B,IAAdpjB,EAAE4sB,UACrBH,EAAchV,KAAKjiB,MAiD3B,OApCAwE,EAAMkB,YAAc,SAAU6uB,EAAWvgB,GACrC+iB,EAAYxC,EAAWvgB,GAGlBhP,OAAOqyB,WAAW/yB,EAAEW,GAAGqyB,iBACvB,SAAUhzB,GACPA,EAAEW,GAAGqyB,eAAiB,SAAUnyB,GAoB5B,YAnBgBoJ,IAAZpJ,IACAA,EAAU,CACNmM,MAAO,KACPimB,OAAQ,OAGhBv3B,KAAK6N,MAAK,WACN,GAA0C,cAArCvJ,EAAEtE,MAAM0E,KAAK,MAAMgmB,cACpB,OAAO1qB,UAEWuO,IAAlBpJ,EAAQmM,OAAyC,OAAlBnM,EAAQmM,OACvChN,EAAEtE,MAAM0E,KAAK,QAASS,EAAQmM,OAAO5G,KAAK,aAAcvF,EAAQmM,YAE7C/C,IAAnBpJ,EAAQoyB,QAA2C,OAAnBpyB,EAAQoyB,QACxCjzB,EAAEtE,MAAM0E,KAAK,UAAWS,EAAQoyB,QAAQ7sB,KAAK,eAAgBvF,EAAQoyB,QAAQ5uB,IAAI,SAAUxD,EAAQoyB,OAAS,UAAY,WAAW7sB,KAAK,WAAYvF,EAAQoyB,OAAS,EAAI,IAG7KT,EAAcxyB,EAAEtE,UAEbA,MArBd,CAuBCgF,SAQHR,EArMG,CAsMZQ,OAAQb;ACtMV,aAaAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,sBAIPqL,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,EACPwY,QAAQ,EACR9R,IAAK,EACLwf,IAAK,GAqBT,SAASC,EAAWlD,EAAWvgB,GAC3B,IAVIgjB,EAUApgB,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IAAwBA,EAAY1P,EAAE0P,IACjD4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAKTme,IAtBAyC,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,QAAS2N,GACzB9R,EAAEkE,UAAUE,GAAG,SAAWsuB,EAAW5gB,EAAMshB,IAsBvB,IAAhB9gB,EAAKpT,QAIToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAI1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAI/BsJ,EAAK/J,KAAKS,GACVsJ,EAAK6B,SAAS,qBAAqBE,KAAK,IAAI8C,OAAO,+BAAiCnO,EAAQmM,MAAQ,WAGhGnM,EAAQ2kB,OACRrb,EAAK9F,IAAI,CAAEiiB,OAAQ,YAEnBnc,EAAK9F,IAAI,CAAEiiB,OAAQ,eAO/B,SAAS8M,IACL,IAAIltB,EAAIlG,EAAEtE,MACVwK,EAAE9F,OAAOqJ,QAAUvD,EAEnB,IAAI9F,EAAO8F,EAAE9F,OAGb,IAAIA,EAAKolB,OAAT,CAEA,IAAIxY,EAAQ5M,EAAK4M,MACb0G,EAAMtT,EAAKsT,IAGX1G,GAFM5M,EAAK8yB,IAGXlmB,EAAQ0G,EAER1G,IAGJ9G,EAAE9F,OAAO4M,MAAQA,EACjB9G,EAAE0J,SAAS,QAAQ1D,KAAKc,GAGxB/M,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,YAsBlG,OAXAvN,EAAMmB,WAAa,SAAU4uB,EAAWvgB,GACpCyjB,EAAWlD,EAAWvgB,IAUnBxP,EAzIG,CA0IZQ,OAAQb;ACvJV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAuCIozB,EAvCAnzB,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,yBAEPwhB,EAAgB,IAAIv4B,KAAK,YACzBw4B,EAAc,IAAIx4B,KAAK,cAIvBoiB,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GAEP4O,OAAQ,WAKRje,OAAQ,EACR61B,WAAW,EACXC,YAAY,EACZC,QAAS,KACTC,QAAS,KACTC,UAAU,EACVC,SAAS,EACTrO,QAAQ,GAaZ,SAASsO,EAAcpkB,GACnB,IAAI4C,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAIO,IAAhBQ,EAAKpT,SAKToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAG1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAG3BA,EAAQ4yB,aACR5yB,EAAQ2yB,WAAY,GAEpB3yB,EAAQ2kB,QACRrb,EAAKkO,KAAK,YAAY,GAI1BlO,EAAK/J,KAAKS,GAalB,SAAiBqF,GACb,IAAI9F,EAAO8F,EAAE9F,OACT4M,EAAQ9G,EAAE5F,MAET0M,GAAmB,KAAVA,IACN5M,EAAKozB,UACLxmB,EAAQ,MAERA,EAAQ,IAAIjS,KACZmL,EAAE5F,IAAI0M,EAAMvR,qBAIpB,GAAIuR,EAAO,CACP,IAAIskB,EAAU,IAAIv2B,KAAKiS,KAElBskB,EAAQlzB,WAAakzB,EAAUgC,GAAiBhC,EAAUiC,KACvDnzB,EAAK4M,OAAS5M,EAAK4M,MAAM9N,OAAS,IAClCoyB,EAAU,IAAIv2B,KAAKqF,EAAK4M,QACrBskB,EAAQlzB,YACXkzB,EAAU,IAAIv2B,OAItBqF,EAAK4M,MAAQskB,EAAQ71B,kBAGrBs4B,EAAU7tB,GAId,IAAK9F,EAAKolB,OAAQ,CACd,IAAIkN,EAAYzyB,EAAGoL,OAAO,SACtB/H,EAAS4C,EAAE5C,SAEX0wB,EAAa5zB,EAAKyzB,QAAU,cAAgB,GAG5CzzB,EAAKwzB,UACLtwB,EAAOwI,KAAK,gBAAgBoD,SAC5B5L,EAAOwI,KAAK,SAASmoB,OAAO,gBAAkBD,EAAa,kCAAoCtB,EAAY,gDAE3GpvB,EAAOwI,KAAK,gBAAgBoD,SAC5B5L,EAAOwI,KAAK,SAASqa,MAAM,iBAAmB6N,EAAa,YAActB,EAAY,+CAIzF,IAAIwB,EAAMl0B,EAAE,IAAM0yB,GAqHlB,GAnHAwB,EAAI7vB,IAAI,CAAEiiB,OAAQ,YAEZpgB,EAAE6L,SAAS,kBAAoB7L,EAAE6L,SAAS,iBAC5C7L,EAAE6F,YAAY,iBAAiByR,WAAW,CACtC2W,eAAgB/zB,EAAKzC,OACrBy2B,QAASh0B,EAAKszB,QACdW,QAASj0B,EAAKuzB,QACdW,YAAal0B,EAAK4M,MAClBunB,iBAAiB,EACjBC,WAAY,GACZC,OAAQ,OACRC,SAAU,SAAUjX,EAAIC,IAChBxX,EAAE9F,KAAK,iBAAgD,IAA3B,IAAIrF,KAAK0iB,GAAKvhB,UAA+C,IAA3B,IAAInB,KAAK0iB,GAAKvhB,WAC5EuhB,EAAKvX,EAAE9F,KAAK,UAEZ8F,EAAE9F,KAAK,gBAA6C,GAA1B,IAAIrF,KAAK0iB,GAAKvhB,WACxCuhB,EAAKvX,EAAE9F,KAAK,UAEZ8F,EAAE9F,KAAK,oBAAkD,GAA3B,IAAIrF,KAAK0iB,GAAK7hB,YAC5C6hB,EAAKvX,EAAE9F,KAAK,UAEhB8F,EAAEsX,WAAW,SAAU,cAAeC,GACtCvX,EAAE5F,IAAImd,GACNvX,EAAE9F,KAAK,QAASqd,GAChBsW,EAAU7tB,GACVyuB,EAAYzuB,GACZA,EAAEsK,QAAQ,WAEdokB,cAAe,SAAUnf,GAEjB,IAQIof,EATR,OAAI3uB,EAAE9F,KAAK,gBAEA,GACa,KAFhBy0B,EAAYpf,EAAKvZ,WAEkB,IAAd24B,GACrB,GACA,IAGJ3uB,EAAE9F,KAAK,eAEA,CACY,KAFfy0B,EAAYpf,EAAKvZ,UAGjB,GACA,IAGJgK,EAAE9F,KAAK,mBAEA,CACa,IAFHqV,EAAK7Z,UAGlB,GACA,IAGD,EAAC,EAAM,GAAI,OAEvBwI,GAAG,QAAQ,SAAUwjB,GACpB,GAA0B,sBAAtByL,EAAe5jB,IAAyF,IAA3DzP,EAAEqzB,GAAgBxnB,QAAQ,sBAAsBipB,OAAc,CAC3G,IAAIxD,EACJ,GAAKprB,EAAE5F,OAAqB,KAAZ4F,EAAE5F,MASdgxB,EAAU,IAAIv2B,KAAKmL,EAAEsX,WAAW,gBATJ,CAC5B,GAAItX,EAAE9F,KAAK,aAGP,OAFA8F,EAAE9F,KAAK,QAAS,WAChBu0B,EAAYzuB,GAGZorB,EAAU,IAAIv2B,KAAKmL,EAAE9F,KAAK,UAKlC,IAAI20B,EAAazD,EAAQ71B,kBAEzB,GAAIs5B,IAAe7uB,EAAE9F,KAAK,SAAU,CAChC,IAAIi0B,EAAUnuB,EAAEsX,WAAW,SAAU,WACjC4W,EAAUluB,EAAEsX,WAAW,SAAU,WAChC6W,GAAW/C,EAAU,IAAIv2B,KAAKs5B,IAAcD,GAAW9C,EAAU,IAAIv2B,KAAKq5B,GAC3E9C,EAAU,IAAIv2B,KAAKmL,EAAE9F,KAAK,WACnB8F,EAAE9F,KAAK,iBAAyC,IAArBkxB,EAAQp1B,UAAuC,IAArBo1B,EAAQp1B,WACpEo1B,EAAU,IAAIv2B,KAAKmL,EAAE9F,KAAK,WAG1B8F,EAAE9F,KAAK,gBAAsC,GAApBkxB,EAAQp1B,WACjCo1B,EAAU,IAAIv2B,KAAKmL,EAAE9F,KAAK,WAE1B8F,EAAE9F,KAAK,oBAA2C,GAArBkxB,EAAQ11B,YACrC01B,EAAU,IAAIv2B,KAAKmL,EAAE9F,KAAK,aAGzBkxB,EAAQlzB,WAAakzB,EAAUgC,GAAiBhC,EAAUiC,KACvDrtB,EAAE9F,KAAK,UAAY8F,EAAE9F,KAAK,SAASlB,OAAS,IAC5CoyB,EAAU,IAAIv2B,KAAKmL,EAAE9F,KAAK,WACvBkxB,EAAQlzB,YACXkzB,EAAU,IAAIv2B,OAKtBg6B,EAAazD,EAAQ71B,kBACrByK,EAAEsX,WAAW,UAAWuX,GACxB7uB,EAAEsX,WAAW,SAAU,cAAeuX,GACtC7uB,EAAE9F,KAAK,QAAS20B,GAChBhB,EAAU7tB,GACVyuB,EAAYzuB,QAEZA,EAAEsX,WAAW,UAAW8T,GACxByC,EAAU7tB,OAM1BguB,EAAI/vB,IAAI,SACR+vB,EAAI9vB,GAAG,YAAY,WACf8B,EAAEsX,WAAW,WAGbpd,EAAKqzB,WAAY,CACjBnwB,EAAOwI,KAAK,WAAWoD,SACvB5L,EAAOwI,KAAK,gBAAgBqa,MAAM,wCAA0CuM,EAAY,yCAExF,IAAIsC,EAAWh1B,EAAE,MAAQ0yB,GAEzBsC,EAAS3wB,IAAI,CAAEiiB,OAAQ,YAEvB0O,EAAS7wB,IAAI,SACb6wB,EAAS5wB,GAAG,aAAa,WACrB8B,EAAE9F,KAAK,QAAS,MAChB8F,EAAEsX,WAAW,UAAW,MACxBtX,EAAEsK,QAAQ,UACVmkB,EAAYzuB,QA3LpBjK,CAAQkO,MAGZnK,EAAEkE,UAAUC,IAAI,oCAAoCC,GAAG,oCAAoC,SAAU8B,GACjGmtB,EAAiBntB,EAAE+X,WA+L3B,SAAS8V,EAAU7tB,GACf,IAAI9F,EAAO8F,EAAE9F,OACTwb,EAASxb,EAAKwb,OAAOwK,cACrBkL,EAAU,IAAIv2B,KAAKmL,EAAE9F,KAAK,UAC1B+J,EAAO/J,EAAKqJ,QAEhB,OAAQmS,GACJ,IAAK,WAAYzR,EAAK7J,IAAIgxB,EAAQ71B,mBAC9B,MACJ,IAAK,cAAe0O,EAAK7J,IAAIgxB,EAAQ70B,uBACjC,MACJ,IAAK,qBAAsB0N,EAAK7J,IAAIgxB,EAAQt0B,wBACxC,MACJ,IAAK,kBAAmBmN,EAAK7J,IAAIgxB,EAAQ50B,kBACrC,MACJ,QAASyN,EAAK7J,IAAIgxB,EAAQ71B,oBAMlC,SAASk5B,EAAYzuB,GACjB,IAAI9F,EAAO8F,EAAE9F,OAGbH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,WAuBlG,OATAvN,EAAMoB,cAAgB,SAAUoO,GAC5BokB,EAAcpkB,IAQXxP,EA9UG,CA+UZQ,OAAQb;AC/UV,aAWAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAQtB6Q,EAAO,uBAKPqL,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GACPioB,YAAa,GACbzP,QAAQ,EAER0P,gBAAiB,WACb,IAAIhvB,EAAIlG,EAAEtE,KAAK+N,SACXuD,EAAQ9G,EAAE9F,KAAK,SAEnB8F,EAAE0J,SAAS,MAAMrG,MAAK,WAClB,IACI4rB,EADIn1B,EAAEtE,MAAMoQ,KAAK,KACR1L,KAAK,cAEL6J,IAATkrB,GACInoB,IAAUmoB,GAAMn1B,EAAEtE,MAAMsQ,SAAS,eAsErD,SAASopB,EAAYnF,EAAWvgB,GAC5B,IAzDIgjB,EAyDApgB,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IAAwBA,EAAY1P,EAAE0P,IACjD4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAKTme,IArEAyC,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,QAAS,6BACzBnE,EAAEkE,UAAUE,GAAG,SAAWsuB,EAAW,6BAA6B,SAAUxsB,GACxE,IAAIiE,EAAOnK,EAAEtE,MACT4H,EAAS6G,EAAK0B,QAAQ,MAAM+jB,QAC5BxvB,EAAOkD,EAAOlD,OAElB,QAAa6J,IAAT7J,QAEa6J,IADF7J,EAAKi1B,SACQ,CACpB,IAAIvtB,EAAOqC,EAAK+B,OACZc,EAAQ7C,EAAK/J,KAAK,UAAY,KAGlCA,EAAK60B,YAAY/oB,KAAKpE,GAEtBxE,EAAOsM,SAAS,MAAM7D,YAAY,UAClC5B,EAAK7G,OAAO,MAAM0I,SAAS,UAG3B5L,EAAK4M,MAAQA,EACb1J,EAAOlD,KAAKA,GAGZH,EAAGoM,oBAAoB/I,EAAQ,CAAE4C,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,eAO/GzN,EAAEkE,UAAUE,GAAG,oBAAoB,SAASwjB,GACxC,IAAIzd,EAAOnK,EAAE4nB,EAAM0N,eAGnB,GAFSnrB,EAAK0B,QAAQ,MAAM+jB,QAErB1wB,OAAQ,CACX,IAAIq2B,EAAQprB,EAAK0B,QAAQ,SAAS+jB,QAElC,GAAI2F,EAAMr2B,OAAS,EAAG,CAClB,IAAIs2B,EAAMrrB,EAAK0B,QAAQ,MACvB0pB,EAAMzpB,KAAK,MAAMC,YAAY,8BAE7BypB,EAAIxpB,SAAS,mCAKzBhM,EAAEF,QAAQiL,QAAO,WACb/K,EAAE,aAAa+L,YAAY,YAuBX,IAAhBuG,EAAKpT,QAIToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAG1CS,EAAQo0B,YAAc9qB,EAAKof,KAAK,oBAAoBzd,KAAK,mBACzDjL,EAAQw0B,UAAW,EAInBp1B,EAAGkN,sBAAsBhD,EAAMtJ,GAI/BsJ,EAAK/J,KAAKS,GAGLA,EAAQ2kB,QAAQrb,EAAK9F,IAAI,CAAEiiB,OAAQ,YAGxCnc,EAAK/J,OAAO80B,qBA4BpB,OATAh1B,EAAMqB,YAAc,SAAU0uB,EAAWvgB,GACrC0lB,EAAYnF,EAAWvgB,IAQpBxP,EA/KG,CAgLZQ,OAAQb;AC3LV,aAUAA,GAAGoB,QAAW,SAAUjB,EAAGC,IAGvB,IAAIC,MAAQD,GAAGgB,SAAW,GAOtB6Q,KAAO,qBACP2jB,yBAA2B,UAC3BC,qBAAuB,QAgM3B,SAASC,0BACL,IAAIC,EAAiB,CAAC,KAAM,KAAM,QAAS,KAAM,KAAM,KAAM,SACzDC,GAAYC,UAAUC,UAAYD,UAAUE,cAAgB,MAAM5P,cAClE6P,EAAQL,EAAeM,MAAK,SAAU/rB,GAAQ,OAAOA,GAAQ0rB,KAKjE,OAJKI,GAASJ,EAAS32B,OAAS,IAC5B22B,EAAWA,EAAS7rB,MAAM,KAAK,GAC/BisB,EAAQL,EAAeM,MAAK,SAAU/rB,GAAQ,OAAOA,GAAQ0rB,MAE1DI,EAAQJ,EAAW,KA2B9B,OAjOAM,SAASC,MAAMC,MAAMC,IAAM,SAAUC,EAAQC,GACzC,OAAOL,SAASC,MAAMC,MAAMphB,IAAIshB,GAAQ,SAAUvpB,EAAOxD,GACrD,MAAO,CAACwD,EAAOwpB,EAAOhtB,QAI9BxJ,EAAEmlB,OAAO,gBAAiB,CACtBtkB,QAAS,CACL41B,SAAS,EACTC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAY,EACZvpB,WAAW,EACXI,UAAW,EACXvE,OAAQ,IACR+c,QAAS,GACTpM,IAAK,IACLgd,cAAc,EACdC,cAAe,0BACfC,gBAAgB,EAChBC,cAAe,+NACfC,uBAAuB,EACvBC,iBAAkB,4BAClBC,UAAWhB,SAASiB,SACpBC,eAAgBlB,SAASmB,QACzBC,aAAc,WACdC,oBAAoB,GAExBC,gBAAiB,CACbC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAe,CACX,CAAEtiB,KAAM,YAAauiB,OAAQ,CAAC,YAAa,SAC3C,CAAEviB,KAAM,UAAWuiB,OAAQ,CAAC,OAAQ,YAAa,eAAgB,YACjE,CAAEviB,KAAM,QAASuiB,OAAQ,CAAC,UAC1B,CAAEviB,KAAM,cAAeuiB,OAAQ,CAAC,cAAe,YAC/C,CAAEviB,KAAM,SAAUuiB,OAAQ,CAAC,WAC3B,CAAEviB,KAAM,YAAauiB,OAAQ,CAAC,OAAQ,SAAU,SAAU,QAAS,OAAQ,cAC3E,CAAEviB,KAAM,QAASuiB,OAAQ,CAAC,UAC1B,CAAEviB,KAAM,SAAUuiB,OAAQ,CAAC,WAC3B,CAAEviB,KAAM,SAAUuiB,OAAQ,CAAC,WAC3B,CAAEviB,KAAM,QAASuiB,OAAQ,CAAC,UAC1B,CAAEviB,KAAM,WAAYuiB,OAAQ,CAAC,OAAQ,WAAY,aACjD,CAAEviB,KAAM,SAAUuiB,OAAQ,CAAC,WAC3B,CAAEviB,KAAM,QAASuiB,OAAQ,CAAC,WAE9Bb,cAAe,+MACfc,cAAe,KACfP,aAAc,sFACdQ,oBAAoB,EACpBC,iBAAiB,EACjBC,iBAAiB,EACjBC,wBAAyB,CAAC,eAC1BV,oBAAoB,GAExBW,gBAAiB,CACbP,cAAe,CACX,CAAEtiB,KAAM,cAAeuiB,OAAQ,CAAC,cAAe,YAC/C,CAAEviB,KAAM,SAAUuiB,OAAQ,CAAC,WAC3B,CAAEviB,KAAM,YAAauiB,OAAQ,CAAC,SAAU,SAAU,QAAS,OAAQ,cACnE,CAAEviB,KAAM,QAASuiB,OAAQ,CAAC,UAC1B,CAAEviB,KAAM,SAAUuiB,OAAQ,CAAC,YAE/Bb,cAAe,+NACfO,aAAc,6BAElBa,aAAc,CACVb,aAAc,qHACdc,UAAW,2BACXC,0BAA2B,4BAE/B1S,QAAS,WACLlqB,KAAKmF,QAAQk1B,SAAWJ,0BACxB31B,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QACpC1E,KAAKmF,QAAQ03B,mBAAqB78B,KAAKmF,QAAQ22B,0BACxC97B,KAAKmF,QAAQ,iBAEfnF,KAAKmF,QAAQ41B,SACdz2B,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+7B,iBAG5B/7B,KAAKmF,QAAQ61B,gBACb12B,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAKy8B,iBAGhCl4B,GAAGkN,sBAAsBzR,KAAK+N,QAAS/N,KAAKmF,SAEvCnF,KAAKmF,QAAQ62B,iBACdh8B,KAAKmF,QAAQm2B,eAAiB,IAAMvB,0BAEpC/5B,KAAKmF,QAAQ81B,kBACbj7B,KAAKmF,QAAQm2B,eAAiB,IAAMtB,sBAEpCh6B,KAAKmF,QAAQ+1B,aAAel7B,KAAKmF,QAAQ41B,SACzCz2B,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK08B,cAGhC18B,KAAK+N,QAAQ+uB,SAAS98B,KAAKmF,SAC3BnF,KAAK+N,QAAQ6D,QAAQ,UAAU4Y,WAAW,YAE1CxqB,KAAK+N,QAAQgvB,OAAOr0B,GAAG,QAAS1I,KAAKg9B,cACrCh9B,KAAK+N,QAAQgvB,OAAOr0B,GAAG,SAAU1I,KAAKi9B,eAClCj9B,KAAKmF,QAAQ+1B,aAAel7B,KAAKmF,QAAQ41B,SACzC/6B,KAAK+N,QAAQgvB,OAAOr0B,GAAG,qBAAsB1I,KAAKk9B,qBAEtD,IAAI1hB,EAAOxb,KACPA,KAAK+N,QAAQ2F,GAAG,YAChB1T,KAAK+N,QAAQgvB,OAAOr0B,GAAG,iBAAiB,SAAUwjB,GAC9C1Q,EAAKzN,QAAQsmB,OAAO/jB,SAAS,aAIrCtQ,KAAK+N,QAAQuC,SAAS,UACtBtQ,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAK+N,QAAQrJ,KAAKS,GAClBnF,KAAKgO,WAETA,QAAS,aAET0f,SAAU,aAGVsP,aAAc,SAAU9Q,GACpB,IAAI1Q,EAAOlX,EAAE4nB,EAAM6Q,OAAOhvB,QAAQzJ,GAAGI,KAAK,gBAC1C8W,EAAKrW,QAAQolB,QAAU/O,EAAKzN,QAAQnJ,OAExCq4B,cAAe,SAAU/Q,GACrB,IAAI1Q,EAAOlX,EAAE4nB,EAAM6Q,OAAOhvB,QAAQzJ,GAAGI,KAAK,gBAE1CkI,aAAa4O,EAAK2hB,cAClB3hB,EAAK2hB,aAAetwB,YAAW,WAC3B2O,EAAK4hB,0BACN,MAEPA,sBAAuB,WACnB,IAAIx4B,EAAM5E,KAAK+N,QAAQnJ,MACnBy4B,EAAM70B,SAAS80B,cAAc,OACjCh5B,EAAE+4B,GAAK7sB,KAAK5L,GAAKwL,KAAK,KAAK1F,KAAK,SAAU,UAC1C9F,EAAMN,EAAE+4B,GAAK7sB,OACblM,EAAE+4B,GAAK7pB,SAEHxT,KAAKmF,QAAQolB,SAAW3lB,IACxB5E,KAAKmF,QAAQmM,MAAQ1M,EACrB5E,KAAK8zB,eACL9zB,KAAKmF,QAAQolB,QAAUvqB,KAAKmF,QAAQmM,QAI5C4rB,oBAAqB,SAAAA,oBAAUhR,OAC3B,IAAI1Q,KAAOlX,EAAE4nB,MAAM6Q,OAAOhvB,QAAQzJ,GAAGI,KAAK,gBAE1CwnB,MAAMqR,OAEN,IAAI74B,KAAOwnB,MAAMxnB,KACbia,IAAMja,KAAK84B,WAAW7e,IACtB8M,SAAW9M,IAAI2B,aAEdmL,UAGD/mB,KAAK2F,IAAMsU,IAAI6B,kBAAkB,YACjC9b,KAAK+4B,OAAS,EACd/4B,KAAKg5B,SAAWh5B,KAAK2F,IAAI6H,OAAOxN,KAAK2F,IAAIszB,YAAY,KAAO,IAJ5DC,IAAIC,SAMJriB,KAAKrW,QAAQi3B,eACb9c,KAAK9D,KAAKrW,QAAQi3B,cAAgB,IAAM3Q,SAAW,MAI3DqI,aAAc,WACVvvB,GAAGoM,oBAAoB3Q,KAAK+N,QAAS,CACjCvD,EAAGxK,KAAK+N,QACRuD,MAAOtR,KAAKmF,QAAQmM,MACpBiZ,QAASvqB,KAAKmF,QAAQolB,QACtB/mB,OAAQxD,KAAKmF,QAAQmM,MAAM9N,OAC3B2a,IAAKne,KAAKmF,QAAQgZ,IAClBpM,SAAU/R,KAAKmF,QAAQ4M,cA4BnCvN,MAAMsB,UAAY,SAAUkO,GACxB,IAAI4C,EAAO,GACO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAUN,GAAG0C,MAAQpC,EAAYA,EAAU5D,KAAKgG,OAEvDQ,EAAOtS,EAAE8R,MAEb9R,EAAEsS,GAAMmmB,UAQLv4B,MA/OG,CAgPZQ,OAAQb;AC1PV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAmTEL,GAnTSoB,SAAW,GAQ1BjB,EAAEmlB,OAAO,yBAA0B,CAC/BtkB,QAAS,CACL24B,UAAU,EACVC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,YAAY,EACZC,iBAAkB,0CAClBC,oBAAqB,kBACrBC,kBAAmB,gBACnBC,eAAe,EACfC,WAAW,EACXrhB,YAAa,kBACbshB,eAAgB,KAChBC,eAAgB,mDAChBC,SAAU,GAEdvL,eAAgB,SAAUlH,GACtB,IAAI1Q,EAAO0Q,EAAMxnB,KAIjB,GAHA8W,EAAKojB,WAAW1S,EAAM3J,SAGlBje,EAAE4nB,EAAM3J,QAAQ7O,GAAG,4BAA6BpP,EAAE4nB,EAAM3J,QAAQ4I,aAAa,UAAUzX,GAAG,aAAgBwY,EAAM0B,SAAWA,EAAQiR,SAAW3S,EAAM0B,SAAWA,EAAQkR,UAA3K,CAIA,OAAQ5S,EAAM0B,SACV,KAAKA,EAAQmR,KACLvjB,EAAKrW,QAAQg5B,aAAejS,EAAM8S,SAClCxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAe,EAAGC,EAAKrb,KAAMqb,EAAKC,OACrD5jB,EAAKrW,QAAQg5B,YAAcjS,EAAM8S,UACjCxjB,EAAKyjB,SAAS,EAAGzjB,EAAK6jB,iBAAkBF,EAAKG,KAAMH,EAAKrb,MACxDtI,EAAKyjB,SAASzjB,EAAK0jB,cAAe,EAAGC,EAAKrb,KAAMqb,EAAKC,QAEzD,MACJ,KAAKxR,EAAQ2R,IACL/jB,EAAKrW,QAAQg5B,aAAejS,EAAM8S,SAClCxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAe1jB,EAAKgkB,iBAAmB,EAAGL,EAAKrb,KAAMqb,EAAKM,MAC7EjkB,EAAKrW,QAAQg5B,YAAcjS,EAAM8S,UACjCxjB,EAAKyjB,SAASzjB,EAAKkkB,cAAgB,EAAGlkB,EAAK6jB,iBAAkBF,EAAKQ,GAAIR,EAAKrb,MAC3EtI,EAAKyjB,SAASzjB,EAAK0jB,cAAe1jB,EAAKgkB,iBAAmB,EAAGL,EAAKrb,KAAMqb,EAAKM,OAEjF,MACJ,KAAK7R,EAAQiR,QACLrjB,EAAKrW,QAAQ24B,WAAa5R,EAAM8S,SAChCxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAgB,EAAG1jB,EAAK6jB,iBAAkBF,EAAKQ,GAAIR,EAAKrb,MAC3EtI,EAAKrW,QAAQ84B,SAAW/R,EAAM8S,SAC9BxjB,EAAKyjB,SAAS,EAAGzjB,EAAK6jB,iBAAkBF,EAAKG,KAAMH,EAAKrb,MAC5D,MACJ,KAAK8J,EAAQkR,UACLtjB,EAAKrW,QAAQ24B,WAAa5R,EAAM8S,SAChCxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAgB,EAAG1jB,EAAK6jB,iBAAkBF,EAAKG,KAAMH,EAAKrb,MAC7EtI,EAAKrW,QAAQ84B,SAAW/R,EAAM8S,SAC9BxjB,EAAKyjB,SAASzjB,EAAKkkB,cAAgB,EAAGlkB,EAAK6jB,iBAAkBF,EAAKQ,GAAIR,EAAKrb,MAC/E,MACJ,KAAK8J,EAAQgS,UACLpkB,EAAKrW,QAAQ24B,WAAa5R,EAAM8S,SAChCxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAe1jB,EAAK6jB,iBAAmB,EAAGF,EAAKrb,KAAMqb,EAAKM,MAC7EjkB,EAAKrW,QAAQ84B,SAAW/R,EAAM8S,SAC9BxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAe,EAAGC,EAAKrb,KAAMqb,EAAKC,OACzD,MACJ,KAAKxR,EAAQiS,WACLrkB,EAAKrW,QAAQ24B,WAAa5R,EAAM8S,SAChCxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAe1jB,EAAK6jB,iBAAmB,EAAGF,EAAKrb,KAAMqb,EAAKC,OAC7E5jB,EAAKrW,QAAQ84B,SAAW/R,EAAM8S,SAC9BxjB,EAAKyjB,SAASzjB,EAAK0jB,cAAe1jB,EAAKgkB,iBAAmB,EAAGL,EAAKrb,KAAMqb,EAAKM,MACjF,MACJ,KAAK7R,EAAQkS,IACLtkB,EAAKrW,QAAQ64B,SAAW9R,EAAM6T,UAC9BvkB,EAAKyjB,SAASzjB,EAAK0jB,cAAe1jB,EAAK6jB,kBACvC7jB,EAAKrW,QAAQ64B,QAAU9R,EAAM6T,UAC7BvkB,EAAKyjB,SAASzjB,EAAK0jB,cAAe1jB,EAAK6jB,kBAC3C,MACJ,KAAKzR,EAAQoS,MACLxkB,EAAKrW,QAAQ44B,WAAa7R,EAAM6T,UAChCvkB,EAAKyjB,SAASzjB,EAAK0jB,cAAgB,EAAG1jB,EAAK6jB,iBAAkBF,EAAKG,KAAMH,EAAKrb,MAC7EtI,EAAKrW,QAAQ44B,UAAY7R,EAAM6T,UAC/BvkB,EAAKyjB,SAASzjB,EAAK0jB,cAAgB,EAAG1jB,EAAK6jB,iBAAkBF,EAAKQ,GAAIR,EAAKrb,MAC/E,MACJ,KAAK8J,EAAQqS,OACLzkB,EAAKrW,QAAQ+4B,SACb1iB,EAAKyjB,SAAS38B,KAAKk1B,IAAIhc,EAAK0jB,cAAgB1jB,EAAKrW,QAAQw5B,SAAU,GAAInjB,EAAK6jB,iBAAkBF,EAAKG,KAAMH,EAAKrb,MAClH,MACJ,KAAK8J,EAAQsS,SACL1kB,EAAKrW,QAAQ+4B,SACb1iB,EAAKyjB,SAAS38B,KAAK0V,IAAIwD,EAAK0jB,cAAgB1jB,EAAKrW,QAAQw5B,SAAUnjB,EAAKkkB,cAAgB,GAAIlkB,EAAK6jB,iBAAkBF,EAAKQ,GAAIR,EAAKrb,MACrI,MACJ,KAAK8J,EAAQuS,IACL3kB,EAAKrW,QAAQq5B,YACbl6B,EAAE4nB,EAAM3J,QAAQ3d,IAAIN,EAAE4nB,EAAM3J,QAAQ7d,KAAK,YACrC8W,EAAKrW,QAAQo5B,eAAiBj6B,EAAE4nB,EAAM3J,QAAQ7O,GAAG,mBACjDwY,EAAM3J,OAAO6d,kBAAkB,EAAG97B,EAAE4nB,EAAM3J,QAAQ3d,MAAMpB,UAMpEc,EAAE4nB,EAAM3J,QAAQ7O,GAAG,WAAcwY,EAAM0B,SAAWA,EAAQgS,WAAa1T,EAAM0B,SAAWA,EAAQiS,YAAc3T,EAAM0B,SAAWA,EAAQiR,SAAW3S,EAAM0B,SAAWA,EAAQkR,WAC3K5S,EAAM/a,mBAGd6rB,aAAc,SAAU9Q,GACpB,IAAI1Q,EAAO0Q,EAAMxnB,KACjB8W,EAAKojB,WAAW1S,EAAMzhB,eACtB,IAAIqvB,EAAMte,EAAK0jB,cACXmB,EAAS7kB,EAAK6jB,iBAEdiB,EAAS9kB,EAAK+kB,OAAOzG,GACrB0G,EAAShlB,EAAKilB,UAAUJ,EAAQC,GACpC9kB,EAAKklB,mBAAmBJ,EAAQE,GAE5BhlB,EAAKrW,QAAQo5B,eAAiBj6B,EAAE4nB,EAAM3J,QAAQ7O,GAAG,mBACjDwY,EAAM3J,OAAO6d,kBAAkB,EAAG97B,EAAE4nB,EAAM3J,QAAQ3d,MAAMpB,SAEhE4mB,YAAa,WACT9lB,EAAEtE,MAAM0E,KAAK,UAAWJ,EAAEtE,MAAM4E,QAEpC+7B,cAAe,SAAUzU,GACrB,IAAI1Q,EAAO0Q,EAAMxnB,KACjB8W,EAAKrW,QAAQw5B,SAAWr8B,KAAKs+B,OAAOx8B,OAAOy8B,YAAc5uB,SAAS3N,EAAE,uBAAuBqE,IAAI,gBAAkBrE,EAAE,iBAAkBkX,EAAKzN,SAASP,UAAY,GAEnK0c,QAAS,WACLlqB,KAAK+N,QAAQuC,SAAS,oBACXtQ,KAGDmF,QAAQw5B,WAHP3+B,KAIFmF,QAAQw5B,SAAWr8B,KAAKs+B,OAAOx8B,OAAOy8B,YAAc5uB,SAAS3N,EAAE,uBAAuBqE,IAAI,gBAAkBrE,EAAE,iBAJ5GtE,KAImI+N,SAASP,UAAY,EAC/JlJ,EAAEF,QAAQsE,GAAG,SAAU1I,KAAMA,KAAK2gC,gBAGtC,IAAIG,EAASx8B,EARFtE,KAQSmF,QAAQu5B,eAAgB1+B,KAAK+N,SARtC/N,KASFmF,QAAQq5B,YACbsC,EAAOjzB,MAAK,SAAUtK,GAClBe,EAAEtE,MAAM0E,KAAK,UAAWJ,EAAEtE,MAAM4E,UAEpC5E,KAAK+N,QAAQrF,GAAG,OAbT1I,KAasBmF,QAAQu5B,eAAgB1+B,KAAMA,KAAKoqB,cAEpEpqB,KAAK+N,QACArF,GAAG,UAhBG1I,KAgBamF,QAAQu5B,eAAgB1+B,KAAMA,KAAKozB,gBACtD1qB,GAAG,QAjBG1I,KAiBWmF,QAAQu5B,eAAgB1+B,KAAMA,KAAKg9B,cACzDh9B,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAKgO,WAETA,QAAS,aAGT0f,SAAU,WACN1tB,KAAK+N,QAAQsC,YAAY,oBACzBrQ,KAAK+N,QACAtF,IAAI,UAAWzI,KAAKmF,QAAQu5B,eAAgB1+B,KAAK+gC,gBACjDt4B,IAAI,QAASzI,KAAKmF,QAAQu5B,eAAgB1+B,KAAKg9B,cAC/Cv0B,IAAI,OAAQzI,KAAKmF,QAAQu5B,eAAgB1+B,KAAKoqB,aACnD9lB,EAAEF,QAAQqE,IAAI,SAAUzI,KAAMA,KAAK2gC,gBAEvCD,mBAAoB,SAAUJ,EAAQE,GACvBxgC,KACFmF,QAAQi5B,mBACb95B,EAFOtE,KAEAmF,QAAQgY,YAFRnd,KAE0B+N,SAASsC,YAFnCrQ,KAEoDmF,QAAQi5B,kBACnEkC,EAAOhwB,SAHAtQ,KAGcmF,QAAQi5B,mBAHtBp+B,KAKFmF,QAAQk5B,sBACb/5B,EANOtE,KAMAmF,QAAQs5B,eANRz+B,KAM6B+N,SAASsC,YANtCrQ,KAMuDmF,QAAQk5B,qBACtE/5B,EAPOtE,KAOAmF,QAAQgY,YAPRnd,KAO0B+N,SAASqC,KAPnCpQ,KAO6CmF,QAAQs5B,eAAiB,OAAS+B,EAAO1yB,QAAU,KAAKwC,SAPrGtQ,KAOmHmF,QAAQk5B,sBAP3Hr+B,KASFmF,QAAQm5B,oBACbh6B,EAVOtE,KAUAmF,QAAQs5B,eAVRz+B,KAU6B+N,SAASsC,YAVtCrQ,KAUuDmF,QAAQm5B,mBACtEkC,EAAOlwB,SAXAtQ,KAWcmF,QAAQm5B,qBAGrCM,WAAY,SAAUrc,GAClBviB,KAAKghC,WAAa18B,EAAEie,IAExB0e,QAAS,WACL,OAA0B1yB,MAAnBvO,KAAKghC,WAA0B18B,EAAE,UAAYtE,KAAKghC,YAE7D3B,eAAgB,WACZ,OAAOr/B,KAAKihC,UAAUrvB,QAAQ5R,KAAKmF,QAAQs5B,gBAAgB3wB,SAE/DoxB,YAAa,WACT,OAAOl/B,KAAKihC,UAAUrvB,QAAQ5R,KAAKmF,QAAQgY,aAAarP,SAE5D4xB,YAAa,WACT,OAAO1/B,KAAKihC,UAAUrvB,QAAQ5R,KAAKmF,QAAQgY,aAAaE,SAASrd,KAAKmF,QAAQgY,aAAa3Z,OAAS,GAExGg8B,eAAgB,WACZ,OAAOx/B,KAAKihC,UAAUrvB,QAAQ5R,KAAKmF,QAAQs5B,gBAAgBphB,SAASrd,KAAKmF,QAAQs5B,gBAAgBj7B,OAAS,GAE9G+8B,OAAQ,SAAUzG,GACd,OAAO95B,KAAK+N,QAAQqC,KAAKpQ,KAAKmF,QAAQgY,YAAc,OAAS2c,EAAM,MAEvE2G,UAAW,SAAUJ,EAAQC,GACzB,OAAOA,EAAOlwB,KAAKpQ,KAAKmF,QAAQs5B,eAAiB,OAAS4B,EAAS,MAEvEa,UAAW,SAAU3e,GACjBviB,KAAK4+B,WAAWrc,GAChBviB,KAAKi/B,SAASj/B,KAAKk/B,cAAel/B,KAAKq/B,mBAE3CJ,SAAU,SAAUnF,EAAKuG,EAAQc,EAASC,GAEtCtH,EAAMx3B,KAAKk1B,IAAIl1B,KAAK0V,IAAI8hB,EADb95B,KACuB0/B,cAAgB,GAAI,GACtDW,EAAS/9B,KAAKk1B,IAAIl1B,KAAK0V,IAAIqoB,EAFhBrgC,KAE6Bw/B,iBAAmB,GAAI,GAC/D2B,EAAUA,GAAW,EACrBC,EAAaA,GAAc,EAE3B,IAAId,EANOtgC,KAMOugC,OAAOzG,GACrB0G,EAPOxgC,KAOOygC,UAAUJ,EAAQC,GACpC,GAAqD,GAAjDh8B,EAROtE,KAQAmF,QAAQu5B,eAAgB8B,GAAQh9B,QAA0B,GAAX29B,EAAc,CAGpE,IAFA,IAAIE,GAAW,EACXC,EAVGthC,KAUa0/B,cACXn8B,EAAIu2B,EAAMqH,EAAS59B,EAAI+9B,EAAW,GAAK/9B,EAAI,EAAGA,GAAK49B,EAGxD,GAFAb,EAZGtgC,KAYWugC,OAAOh9B,GACrBi9B,EAbGxgC,KAaWygC,UAAUJ,EAAQC,GAC5Bh8B,EAdDtE,KAcQmF,QAAQu5B,eAAgB8B,GAAQh9B,OAAS,EAAG,CACnDs2B,EAAMv2B,EACN89B,GAAW,EACX,MAGHA,IACDvH,EArBG95B,KAqBQk/B,cACXoB,EAtBGtgC,KAsBWugC,OAAOzG,GACrB0G,EAvBGxgC,KAuBWygC,UAAUJ,EAAQC,IAIxC,GAAqD,GAAjDh8B,EA3BOtE,KA2BAmF,QAAQu5B,eAAgB8B,GAAQh9B,QAA6B,GAAd49B,EAAiB,CACvE,IAAIG,GAAc,EACdC,EA7BGxhC,KA6BgBw/B,iBACvB,IAASj8B,EAAI88B,EAASe,EAAY79B,EAAIi+B,EAAc,GAAKj+B,EAAI,EAAGA,GAAK69B,EAEjE,GADAZ,EA/BGxgC,KA+BWygC,UAAUl9B,EAAG+8B,GACvBh8B,EAhCDtE,KAgCQmF,QAAQu5B,eAAgB8B,GAAQh9B,OAAS,EAAG,CACnD68B,EAAS98B,EACTg+B,GAAc,EACd,MAGHA,IACDlB,EAvCGrgC,KAuCWq/B,iBACdmB,EAxCGxgC,KAwCWygC,UAAUJ,EAAQC,IAIxC,IAAImB,EAAWn9B,EA5CJtE,KA4CWmF,QAAQu5B,eAAgB8B,GA5CnCxgC,KA6CFihC,UAAU,IAAMQ,EAAS,IAC9BA,EAASC,OA9CF1hC,KAiDN0gC,mBAAmBJ,EAAQE,GAChCiB,EAASltB,QAlDEvU,KAoDFmF,QAAQo5B,eAAiBkD,EAAS/tB,GAAG,mBAC1C7G,YAAW,WACP40B,EAAS,GAAGrB,kBAAkB,EAAGqB,EAAS78B,MAAMpB,UACjD,MAQf,IAAI27B,EAAO,CACPrb,KAAM,EACN2b,MAAO,EACPL,MAAO,EACPO,IAAK,EACLL,KAAM,GAGN1R,EAAU,CACVkR,UAAW,GACXD,QAAS,GACTgB,WAAY,GACZD,UAAW,GACXE,IAAK,EACLE,MAAO,GACPG,IAAK,GACLF,OAAQ,GACRC,SAAU,GACVnB,KAAM,GACNQ,IAAK,IAaT,OAJA/6B,EAAMqC,mBAAqB,SAAUmN,EAAWyN,IAhChD,SAA4BzN,GACxB1P,EAzQO,+BAyQC0P,GAAW2tB,kBAgCnB96B,CAAmBmN,IAGhBxP,EArTG,CAsTZQ;ACtTF,aAAAb,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAO1B,SAASq8B,KAwCT,OAtCAA,EAAe9hC,UAAY,CACvB+hC,cAAe,WACXh1B,YAAW,WACPtI,EAAG6Q,wBACJ,MAEP0sB,WAAY,WACRv9B,EAAG2Q,qBAEP6sB,gBAAiB,SAAS1qB,GACtBrX,KAAK8hC,aAELj1B,YAAW,WACPtI,EAAG6Q,wBACJiC,IAEP2qB,WAAY,SAAUv2B,EAAQgK,GAC1BlR,EAAG6Q,wBAWX5Q,EAAMy9B,oBAAsB,WACxB,OAAO,IAAIL,GASRp9B,EAlDG,CAmDZQ,OAAQb;ACnDV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,qBAEPsgB,GAAe,EAIfjV,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GAEPiZ,QAAS,GACTiN,IAAK,KACLxf,KAAM,KACN7U,UAAW,KACX0zB,MAAO,OACPqL,OAAO,EACP3tB,OAAO,EACPujB,WAAW,EACXhO,QAAQ,EACRgB,aAAa,EACbqX,UAAU,GA2Ed,SAASC,EAAU7N,EAAWvgB,GAC1B,IA/DIgjB,EA+DApgB,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAITme,IAAcmC,IA5EdM,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,2BAA4B2N,GACvC1N,GAAG,SAAWsuB,EAAW5gB,EAAMisB,GAC/B35B,GAAG,QAAUsuB,EAAW5gB,EAAMksB,GAC9B55B,GAAG,SAAWsuB,EAAW5gB,GAAM,SAAU8V,GACtC,IAAI1hB,EAAIlG,EAAEtE,MACN0E,EAAO8F,EAAE9F,OAGb,GAAoB,KAAhBwnB,EAAMyB,OAAkC,KAAlBzB,EAAM0B,QAG5B,OAFApjB,EAAE5F,IAAIF,EAAK6lB,cACXhmB,EAAG8P,cAAc7J,GAAG,GAKpBA,EAAEoH,QAAQ,qBAAqBpO,OAAS,GAGxB,KAAhB0oB,EAAMyB,OAAkC,KAAlBzB,EAAM0B,SAC5BpjB,EAAEk3B,UAGTh5B,GAAG,WAAasuB,EAAW5gB,GAAM,SAAU8V,GAKxC,GAJQ5nB,EAAEtE,MACG0E,OAGJy9B,SACL,OAAO,EAIX,MAAoE,IAAhE79B,EAAEi+B,QAAQrW,EAAM0B,QAAS,CAAC,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAEnC,KAAlB1B,EAAM0B,WAAqC,IAAlB1B,EAAM8S,UAAsC,IAAlB9S,EAAMsW,UAEvC,KAAlBtW,EAAM0B,WAAqC,IAAlB1B,EAAM8S,UAAsC,IAAlB9S,EAAMsW,UAEvC,KAAlBtW,EAAM0B,WAAqC,IAAlB1B,EAAM8S,UAAsC,IAAlB9S,EAAMsW,UAEvC,KAAlBtW,EAAM0B,WAAqC,IAAlB1B,EAAM8S,UAAsC,IAAlB9S,EAAMsW,UAEzDtW,EAAM0B,SAAW,IAAM1B,EAAM0B,SAAW,MAMxC1B,EAAM6T,UAAa7T,EAAM0B,QAAU,IAAM1B,EAAM0B,QAAU,MAAS1B,EAAM0B,QAAU,IAAM1B,EAAM0B,QAAU,KAAM,CAC/G,GAAuB,MAAlB1B,EAAM0B,SAAqC,MAAlB1B,EAAM0B,SAAqC,MAAlB1B,EAAM0B,QACzD,OAEJ1B,EAAM/a,qBAuBdulB,GAAe,GAIC,IAAhB9f,EAAKpT,QAKToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QACtCS,EAAQ2lB,cACR3lB,EAAQ2lB,aAAc,EACtBrc,EAAK7J,IAAI6J,EAAK/D,KAAK,iBAAiBA,KAAK,oBAAoB,IAIjEvF,EAAQg9B,SAAWh9B,EAAQg9B,WAAY,EAGvC,IACIzwB,EAAYvM,EAAQwM,UAAYlD,EAAKmD,QAD5B,wBAC8CnD,EACvDoD,EAAa,GACbH,EAAUlO,SACVqO,EAAaH,EAAUhN,QAI3BS,EAAQqG,SAAWjH,EAAGuM,kBAAkBe,EAAWC,gBACnD3M,EAAQ4M,SAAWF,EAAWE,UAAY,EAG1CtD,EAAK/J,KAAKS,GAGNA,EAAQ2kB,QACRrb,EAAK/D,KAAK,YAAY,GAI1B+3B,EAASh0B,MAMjB,SAAS4zB,IACL,IAAI5zB,EAAOnK,EAAEtE,MACT0E,EAAO+J,EAAK/J,OACZ8D,SAASmE,OACTnE,SAASmE,QAAS,EAGlBjI,EAAKolB,SAILplB,EAAKozB,WAA4B,KAAfrpB,EAAK7J,MACvBF,EAAK6lB,QAAU,KAEf7lB,EAAK6lB,QAAW,IAAItnB,OAAOwL,EAAK7J,MAAM8L,QAAQ,eAAgB,KAAMgyB,UAGpEh+B,EAAKy9B,UACL1zB,EAAK7J,IAAIL,EAAGoZ,WAAWglB,QAGvBj+B,EAAK6P,OACL9F,EAAK9D,UAMb,SAAS83B,EAASj4B,GACd,IAAI9F,EAAO8F,EAAE9F,OACT4M,EAAQ9G,EAAE5F,MAOA,MAHd0M,EAAQ/M,EAAGkQ,WAAWnD,KAGF5M,EAAKozB,WACrBxmB,EAAQ,KACR9G,EAAE9F,KAAK,QAAS,QAEhB4M,EAAQ,IAAIrO,OAAOqO,GAEfqI,MAAMrI,KACNA,EAAQqI,OAAOnP,EAAE9F,KAAK,YAAc,IAAIzB,QAAYuH,EAAE9F,KAAK,YAG3D4M,EAAQ5M,EAAKsT,IACb1G,EAAQ5M,EAAKsT,IACN1G,EAAQ5M,EAAK8yB,MACpBlmB,EAAQ5M,EAAK8yB,KAGM,OAAnB9yB,EAAKvB,YAAuBuB,EAAKvB,WAAa,IAC9CmO,EAAQA,EAAMsxB,QAAQl+B,EAAKvB,YAG/BqH,EAAE9F,KAAK,QAAS4M,GAEZ5M,EAAKw9B,QACL5wB,EAAQ/M,EAAG8M,SAASC,KAI5B9G,EAAE5F,IAAI0M,GAKV,SAASgxB,IACL,IAAI93B,EAAIlG,EAAEtE,MACN0E,EAAO8F,EAAE9F,OAEb+9B,EAASj4B,GAEL9F,EAAKolB,QAEEplB,EAAKy9B,UASpB,SAAqB1zB,GACjB,IAAI/J,EAAO+J,EAAK/J,OAEhB,GAAmB,OAAfA,EAAK4M,OACL,GAAqB,OAAjB5M,EAAK6lB,QACL,YAED,IAAK7lB,EAAK4M,QAAU5M,EAAK6lB,QAC5B,OAGJ,IAAI3lB,EAAqB,OAAfF,EAAK4M,MAAiB,KAAO5M,EAAK4M,MAAMoxB,UAElDn+B,EAAGoM,oBAAoBlC,EAAM,CAAEjE,EAAGiE,EAAM6C,MAAO1M,EAAK2lB,QAAS7lB,EAAK6lB,QAASpM,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,WACzGtD,EAAK/J,KAAK,UAAWA,EAAK4M,OAnB1B2nB,CAAYzuB,GAwChB,OAVAhG,EAAMuB,UAAY,SAAUwuB,EAAWvgB,GACnCouB,EAAU7N,EAAWvgB,IASlBxP,EAxSG,CAySZQ,OAAQb;ACzSV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,sBAGPqL,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXkB,KAAM,QACNnB,eAAgB,EAChBqM,IAAK,GACL2L,QAAQ,GAkBZ,SAAS+Y,EAAWtO,EAAWvgB,GAC3B,IARIgjB,EAQApgB,EAAO,GAEO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAGTme,IAnBAyC,EAAYzyB,EAAGoL,OAAO,SAE1BrL,EAAEkE,UAAUC,IAAI,QAAS2N,GACzB9R,EAAEkE,UAAUE,GAAG,SAAWsuB,EAAW5gB,EAAM0sB,IAqBvB,IAAhBlsB,EAAKpT,QAIToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAETrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAE1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAE3BA,EAAQ2kB,QACRrb,EAAK/D,KAAK,YAAY,GACtB+D,EAAK9F,IAAI,CAAEiiB,OAAQ,aAEnBnc,EAAK9F,IAAI,CAAEiiB,OAAQ,eAM/B,SAASkY,EAAa5W,GAClBA,EAAMC,kBAEN,IAAI3hB,EAAIlG,EAAEtE,MAEVwK,EAAE9F,OAAOqJ,QAAUvD,EAEnB,IAAI9F,EAAO8F,EAAE9F,OAETA,EAAKolB,SAgBb,SAAyBplB,GACrB,IAEIwL,EADOxL,EAAKqJ,QACFoC,QAAQ,MAEtB,GAAID,EAAG1M,OAAS,EAAG,CACH0M,EAAGC,QAAQ,SAEjBC,KAAK,MAAMC,YAAY,UAAUA,YAAY,8BACnDH,EAAGI,SAAS,UAAUA,SARL,+BAbrByyB,CAAgBr+B,GA0BpB,SAAqB8F,GACjB,IAAI9F,EAAO8F,EAAE9F,OAEbH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,OAAO,EAAM6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,WA3BxFknB,CAAYzuB,IAyChB,OAJAhG,EAAMwB,WAAa,SAAUuuB,EAAWvgB,GACpC6uB,EAAWtO,EAAWvgB,IAGnBxP,EArIG,CAsIZQ,OAAQb;ACtIV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,0BAEP4sB,EAAc,CACd,cACA,mBAGAvhB,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBR,OAAQ,EACRwY,QAAQ,EACRS,QAAS,MAuCb,SAAS0Y,IACL,IAAIx0B,EAAOnK,EAAEtE,MAAOkjC,EAAuB5+B,EAAEtE,MAAM4R,QAAQwE,GACvD1R,EAAOw+B,EAAqBx+B,OAChC,IAAIA,EAAKolB,OAAT,CAIA,IAAIxY,EAAQ7C,EAAK/J,KAAK,cAClB4M,IAAU4xB,EAAqBx+B,KAAK,WACpCw+B,EAAqBx+B,KAAK,QAAS4M,GAAO5G,KAAK,aAAc4G,GAAOlB,KAAK,IAAM4yB,EA5DrE,IA4DsF3yB,YAAY2yB,EA5DlG,IA4DmH1yB,SAAS0yB,EA5DpI,IA6DFv0B,EAAK4B,YAAY2yB,EA7Df,IA6DiC1yB,SAAS0yB,EA7DlC,IA+DVz+B,EAAGoM,oBAAoBuyB,EAAsB,CAAE14B,EAAGiE,EAAM6C,MAAOA,EAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,aA4C5G,OAjCAvN,EAAMyB,eAAiB,SAAU+N,IAnDjC,SAAgCA,GAC5B,IAAI4C,EAAO,IAEPA,EADA5C,EACOA,aAAqBhP,OAASgP,EAAU5D,KAAKgG,GAAQ9R,EAAE0P,GAAW5D,KAAKgG,GAEvE9R,EAAE8R,IAEH5S,SAIVc,EAAEkE,UAAUC,IAAI,QAAS2N,EAAO,qBAChC9R,EAAEkE,UAAUE,GAAG,QAAS0N,EAAO,oBAAqB6sB,GAEpDrsB,EAAK/I,MAAK,SAAUC,EAAOW,GACvBA,EAAOnK,EAAEtE,MACT,IAAImF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAC1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAC1BA,EAAQ2kB,QACTrb,EAAK2B,KAAK,oBAAoBzH,IAAI,CAAEiiB,OAAQ,iBAExBrc,IAApBpJ,EAAQolB,SAA6C,OAApBplB,EAAQolB,SACzC9b,EAAK/J,KAAK,QAASS,EAAQolB,SAAS7f,KAAK,aAAcvF,EAAQolB,SAASna,KAAK,qCAAuCjL,EAAQolB,QAAU,MAAMla,YAAY2yB,EA7C1J,IA6C4K1yB,SAAS0yB,EA7C7K,QA2EdG,CAAuBnvB,IAS3BxP,EAAM4+B,uBAAyB,SAAUC,EAAkBl+B,GACnB,gBAAhCk+B,EAAiB3+B,KAAK,aAIJ6J,IAAlBpJ,EAAQmM,OAAyC,OAAlBnM,EAAQmM,QACvC+xB,EAAiBjzB,KAAK,IAAM4yB,EA1FlB,IA0FmC3yB,YAAY2yB,EA1F/C,IA0FgE1yB,SAAS0yB,EA1FjF,IA2FFK,EAAiB3+B,KAAK,QAASS,EAAQmM,OAAO5G,KAAK,aAAcvF,EAAQmM,OAAOlB,KAAK,qCAAuCjL,EAAQmM,MAAQ,MAAMjB,YAAY2yB,EA3F5J,IA2F8K1yB,SAAS0yB,EA3F/K,UA6FSz0B,IAAnBpJ,EAAQ2kB,QAA2C,OAAnB3kB,EAAQ2kB,SACxCuZ,EAAiB3+B,KAAK,SAAUS,EAAQ2kB,QAAQpf,KAAK,cAAevF,EAAQ2kB,QACxE3kB,EAAQ2kB,OACRuZ,EAAiBjzB,KAAK,oBAAoBzH,IAAI,CAAEiiB,OAAQ,YAExDyY,EAAiBjzB,KAAK,oBAAoBzH,IAAI,CAAEiiB,OAAQ,eAS7DpmB,EAxHG,CAyHZQ,OAAQb;ACzHV,aAaAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAUtB6Q,EAAO,qBAKPqL,EAAW,CACX1T,QAAS,GACTP,OAAQ,IACR81B,MAAO,UACPlK,KAAM,EACNpqB,MAAO,OACPu0B,eAAe,EACfC,SAAS,EACTC,QAAQ,EACRv7B,OAAQ,EACR4Q,SAAU,QACV4qB,SAAU,MACVC,gBAAgB,EAChBC,YAAY,EACZC,KAAM,IACNC,UAAW,IAUf,SAASC,EAAU/vB,EAAWgwB,GAC1B,IAAIptB,EAAO,GAGO,OAAd5C,GAAmCzF,MAAbyF,GACG,iBAAdA,IAAwBA,EAAY1P,EAAE0P,IACjD4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAIb,IAAI6tB,EAAW,YACG11B,IAAdy1B,IAAyBC,EAAWD,EAAUC,UAG9B,IAAhBrtB,EAAKpT,QAEToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAC1CS,EAAQ4I,QAAUU,EAElBtJ,EAAQo+B,eAA2C,IAA1Bp+B,EAAQ++B,cAQzC,SAASC,EAAah/B,EAAS8+B,GAC3B,IAAIz5B,EAAIrF,EAAQ4I,QAEhB,GAAU,OAANvD,EAAY,OAGZrF,EAAQq+B,UACRh5B,EAAE5C,SAASwI,KAAK,kBAAkBoD,SAClChJ,EAAE5C,SAASwI,KAAK,mBAAmBoD,SACnChJ,EAAE45B,WAAW,CAAEZ,SAAS,IACxBh5B,EAAEE,KAAK,QAAS,KAGpB,IAAI8C,EAASrI,EAAQqI,OAEjBA,EADArI,EAAQs+B,OACCl/B,EAAGuL,gBAAgB3K,EAAQ+C,QAuC5C,SAAyB/C,EAAS8+B,GAE9B,GAAI9+B,EAAQy+B,WAAY,CACpB,IAAIS,EAAW77B,SAAS8G,gBAAgBg1B,aAAe,IAGnDC,EAAajgC,EA1HN,kBA0HsB4P,WAAW1Q,QAAU,EAClDghC,EAAqB,GACR,SAAbP,IAAqBO,EAAqB,IAC7B,YAAbP,IAAwBO,EAAqB,IACjD,IAAIh3B,EAAUg3B,EAAqBD,EAKnC,OAHI/2B,EAAS62B,IAAU72B,EAAS62B,GAC5BA,EAAW,MAAK72B,EAAS,KAEtBA,EAGX,OAAOrI,EAAQqI,OAvDFi3B,CAAgBt/B,EAAS8+B,GAGjB,iBAAVz2B,GAAsBA,EAAOqN,QAAQ,QAC5CrN,EAAS,QAAUA,EAAS,MAAQlJ,EAAE,sBAAsBqE,IAAI,cAAgB,MAIhFxD,EAAQs+B,QAAUt+B,EAAQy+B,aAC1Bt/B,EAAEF,QAAQq/B,QAAO,WACTzjC,KAAK0kC,aAAa93B,aAAa5M,KAAK0kC,aACxC1kC,KAAK0kC,YAAc73B,YAAW,WAC1Bs3B,EAAah/B,EAAS8+B,KACvB,QAKXz5B,EAAE45B,WAAW,CACT52B,OAAQA,EACRwB,MAAO7J,EAAQ6J,MACfs0B,MAAOn+B,EAAQm+B,MACflK,KAAMj0B,EAAQi0B,KACdtgB,SAAU3T,EAAQ2T,SAClB4qB,SAAUv+B,EAAQu+B,SAClBH,cAAep+B,EAAQo+B,cACvBoB,eAAgBx/B,EAAQw+B,eACxBE,KAAM1+B,EAAQ0+B,KACde,UAAWz/B,EAAQ2+B,YAGlB3+B,EAAQo+B,eACTj/B,EAAE,kBAAkBqE,IAAI,CAAEk8B,QAAS,SAxDnCV,CAAah/B,EAAS8+B,MAwG9B,OAhBAz/B,EAAMgC,UAAY,SAAUwN,GAGxB+vB,EAAU/vB,EAFMzP,EAAGiI,iBAMvBhI,EAAMsgC,uBAAyB,SAAUd,GACrCD,EAAU,KAAMC,IAQbx/B,EA7KG,CA8KZQ,OAAQb;AC3LV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAQtB6Q,EAAO,qBACPsgB,GAAe,EAGfjV,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GACPwY,QAAQ,EACRgB,aAAa,EACbP,QAAS,MAqBb,SAASwa,EAAUxQ,EAAWvgB,GAC1B,IATIgjB,EASApgB,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IAAwBA,EAAY1P,EAAE0P,IACjD4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAKTme,IAAcmC,IArBdM,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,SAAU2N,GAAM1N,GAAG,UAAYsuB,EAAW5gB,EAAM4uB,GAoB5DtO,GAAe,GAKC,IAAhB9f,EAAKpT,QAMToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAG1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAG/BsJ,EAAK/J,KAAKS,GAENA,EAAQ2lB,cACJ3lB,EAAQolB,QACR9b,EAAK7J,IAAIO,EAAQolB,SAEjB9b,EAAK7J,IAAI6J,EAAK2B,KAAK,UAAU,GAAGkB,OAEpCnM,EAAQ2lB,aAAc,EACtBrc,EAAK/J,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,IAIzDvF,EAAQ2kB,QACRrb,EAAKkO,KAAK,YAAY,MAOlC,SAASqoB,IACL,IAAIx6B,EAAIlG,EAAEtE,MAEVwK,EAAE9F,OAAOqJ,QAAUvD,EAEnB,IAAI9F,EAAO8F,EAAE9F,OACTE,EAAM4F,EAAE5F,MACR2lB,EAAU7lB,EAAK4M,MAEnB9G,EAAE9F,OAAO4M,MAAQ1M,EAEbF,EAAKolB,SAITtf,EAAE9F,KAAKA,GAGPA,EAAO8F,EAAE9F,OACTH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,SAAUwY,QAASA,KAoBrH,OATA/lB,EAAM0B,UAAY,SAAUquB,EAAWvgB,GACnC+wB,EAAUxQ,EAAWvgB,IAQlBxP,EA5IG,CA6IZQ,OAAQb;AC7IV,aAYAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,uBAIPqL,EAAW,CACXwjB,OAAQ,UACRpB,KAAM,IACNjZ,OAAQ,YAGRzM,IAAK,GACL7M,MAAO,GACPK,WAAW,EACXI,UAAW,EACXD,eAAgB,GAkEpB,SAASozB,EAAQhZ,EAAOlK,GACpB,IAAIvT,EAAOuT,EAAG/G,KACDxM,EAAK0B,QAAQ,SAEf3M,OAAS,GAChBe,EAAG0L,gCAAgCxB,GAEvC,IAAI02B,EAAkBnjB,EAAG/G,KAAKrJ,QAAQ,sBAClCuzB,GACAA,EAAgBf,WAAW,CACvBb,eAAe,EACfoB,gBAAgB,IAK5B,SAASS,EAAUlZ,EAAOlK,GACtB,IAEI9N,EAFA+G,EAAO+G,EAAG/G,KACVzQ,EAAIlG,EAAE0d,EAAG/G,MAAMrJ,QAAQ,MAEvBnG,EAAS,GAITyI,EAFY,GAAZ1J,EAAEhH,QAAoC,MAArByX,EAAK,GAAGoqB,WACzB76B,EAAIlG,EAAE0d,EAAG/G,MAAMrJ,QAAQ,UACVsC,SAAS,MAEX1J,EAAE0J,SAAS,MAEV,GAAZ1J,EAAEhH,QAAoC,OAArByX,EAAK,GAAGoqB,YAEzBnxB,GADA1J,EAAIlG,EAAE0d,EAAG/G,MAAMrJ,QAAQ,uBACVsC,SAAS,oBAG1BA,EAASrG,MAAK,SAAStK,GACnB,IAAImB,EAAOJ,EAAEtE,MAAM0E,OACnB,GAAY,aAARA,GACIA,EAAKqN,UAA6B,aAAjBrN,EAAKqN,SAAyB,CAC/C,IAAIgC,EAAKrP,EAAKqN,SACdtG,GAAUsI,EAAK,QAK3BvJ,EAAE9F,OAAO4M,MAAQ7F,EAGjB,IAAI/G,EAAO8F,EAAE9F,OACbH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,WAE9F,IAAIozB,EAAkBnjB,EAAG/G,KAAKrJ,QAAQ,sBAClCuzB,GACAA,EAAgBf,WAAW,CACvBb,eAAe,EACfoB,gBAAgB,EAChBW,aAAa,IAMzB,SAASC,EAAgBrZ,EAAOlK,GAC5B,IAAImjB,EAAkBnjB,EAAGwjB,OAAO5zB,QAAQ,sBACpCuzB,IACInjB,EAAGlJ,SAASnL,IAAM,GAClBw3B,EAAgBf,WAAW,CAAEqB,UAAW,QAASlC,eAAe,EAAMoB,gBAAgB,IAC/E3iB,EAAGlJ,SAASnL,IAAMw3B,EAAgB33B,SAAW,IACpD23B,EAAgBf,WAAW,CAAEqB,UAAW,OAAQlC,eAAe,EAAMoB,gBAAgB,KA8BjG,OATAngC,EAAM2B,YAAc,SAAU6N,IA5I9B,SAAqBA,GACjB,IAAI4C,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IAAwBA,EAAY1P,EAAE0P,IACjD4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAIb9R,EAAE,WAAWqE,IAAI,CAAEiiB,OAAQ,YAIP,IAAhBhU,EAAKpT,QAIToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAG1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAG/BsJ,EAAK/J,KAAKS,GAGV,IAAIugC,EAAYj3B,EAAKk3B,SAAS,CAC1B9B,KAAM1+B,EAAQ0+B,KACdjZ,OAAQzlB,EAAQylB,OAChBqa,OAAQ9/B,EAAQ8/B,OAChBW,YAAa,2BACbC,sBAAsB,EACtBtI,KAAM6H,EACNjwB,MAAO+vB,EACPY,KAAMP,EACNQ,MAAO,wBAGXL,EAAUxxB,SAAS,SAAS8xB,IAAI,cAAc,WAC1C1hC,EAAEtE,MAAMsQ,SAAS,sBACjBo1B,EAAUC,SAAS,iBA8F3BM,CAAYjyB,IAQTxP,EA5LG,CA6LZQ,OAAQb;ACzMV,aAYAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAQtB6Q,EAAO,mBAKPqL,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GACPwY,QAAQ,EACRwZ,MAAO,GAEPzM,MAAO,SAAUvlB,GACb,IAAI9G,EAAIlG,EAAEtE,KAAK+N,SACfvD,EAAE9F,OAAO4M,MAAQA,EAEbA,EACA9G,EAAE0J,SAAS,KAAK7D,YAAY61B,EAAI,IAAK71B,YAAY61B,EAAKC,KAAK71B,SAAS41B,EAAI,IAExE17B,EAAE0J,SAAS,KAAK7D,YAAY61B,EAAI,IAAK71B,YAAY61B,EAAKC,KAAK71B,SAAS41B,EAAKC,OAOjFD,EAAO,CACPE,GAAI,UACJD,IAAK,aAqBT,SAASE,EAAQ9R,EAAWvgB,GACxB,IAVIgjB,EAUApgB,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IAAwBA,EAAY1P,EAAE0P,IACjD4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAKTme,IAtBAyC,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,QAAS2N,GACzB9R,EAAEkE,UAAUE,GAAG,SAAWsuB,EAAW5gB,EAAMkwB,IAsBvB,IAAhB1vB,EAAKpT,QAIToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAI1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAIF,iBAAlBA,EAAQmM,QAAoBnM,EAAQmM,MAAQnM,EAAQmM,MAAMzN,WAIrE4K,EAAK/J,KAAKS,GAIVsJ,EAAK+B,KAAK,IAAI8C,OAAO,sBAAwBnO,EAAQm+B,MAAQ,UAC7Dn+B,EAAQ0xB,MAAM1xB,EAAQmM,OAIjBnM,EAAQ2kB,QAAQrb,EAAK9F,IAAI,CAAEiiB,OAAQ,eAUhD,SAAS0b,IACL,IAAI97B,EAAIlG,EAAEtE,MACVwK,EAAE9F,OAAOqJ,QAAUvD,EAEnB,IAAI9F,EAAO8F,EAAE9F,OAETA,EAAKolB,SAEGplB,EAAK4M,OAGb5M,EAAK4M,OAAQ,EACb9G,EAAE0J,SAAS,KAAK7D,YAAY61B,EAAI,IAAK51B,SAAS41B,EAAKC,OAEnDzhC,EAAK4M,OAAQ,EACb9G,EAAE0J,SAAS,KAAK7D,YAAY61B,EAAKC,KAAK71B,SAAS41B,EAAI,KAGvD17B,EAAE9F,KAAKA,GAGPA,EAAO8F,EAAE9F,OACTH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,YAwBlG,OATAvN,EAAM+hC,QAAU,SAAUhS,EAAWvgB,GACjCqyB,EAAQ9R,EAAWvgB,IAQhBxP,EApKG,CAqKZQ,OAAQb;ACjLV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStB6Q,EAAO,qBACPsgB,GAAe,EAIf4M,EAAQ,CACRkD,SAAU,oBACVC,IAAK,YACLC,OAAQ,eACRC,MAAO,cACPC,KAAM,cAKNjQ,EACI,YADJA,EAEK,cAKLlV,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,WACPwY,QAAQ,EACR7W,KAAM,QAEN4jB,MAAO,SAAUvlB,GACb,IAAI9G,EAAIlG,EAAEtE,KAAK+N,SACfvD,EAAE9F,OAAO4M,MAAQA,EACjBu1B,EAAYr8B,IAEhBs8B,UAAW,SAAUx1B,EAAO2B,GACxB,IAAIzI,EAAIlG,EAAEtE,KAAK+N,SACfvD,EAAE9F,OAAO4M,MAAQA,EACjB9G,EAAE9F,OAAOuO,KAAOA,EAChB4zB,EAAYr8B,KAqBpB,SAASu8B,EAAUxS,EAAWvgB,GAC1B,IATIgjB,EASApgB,EAAO,GAGO,OAAd5C,GACyB,iBAAdA,IAAwBA,EAAY1P,EAAE0P,IACjD4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAKTme,IAAcmC,IArBdM,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,QAAS2N,GAAM1N,GAAG,SAAWsuB,EAAW5gB,EAAM4wB,GAoB1DtQ,GAAe,GAKC,IAAhB9f,EAAKpT,QAMToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAI1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAI/BsJ,EAAK/J,KAAKS,GAIVsJ,EAAK+B,KAAK,IAAI8C,OAAO,oEAAsE7E,EAAK/D,KAAK,QAAU,YAAc+D,EAAK/J,KAAK,SAAW,OAClJS,EAAQ0xB,MAAM1xB,EAAQmM,OACtB7C,EAAK+b,WAAW,QAGXrlB,EAAQ2kB,QACTrb,EAAK9F,IAAI,CAAEiiB,OAAQ,eAO/B,SAASic,EAAYr8B,GACjB,IAAI9F,EAAO8F,EAAE9F,OACT4M,EAAQ5M,EAAK4M,MAAMoZ,cAiBvB,OAdAlgB,EAAE6F,YAAYizB,EAAMkD,UACfn2B,YAAYizB,EAAMmD,KAClBp2B,YAAYizB,EAAMoD,QAClBr2B,YAAYizB,EAAMqD,OAClBt2B,YAAYizB,EAAMsD,MAET,aAAVt1B,EACA9G,EAAE0J,SAAS,KAAK7D,YAAYsmB,GAAQrmB,SAASqmB,GAE7CnsB,EAAE0J,SAAS,KAAK7D,YAAYsmB,GAASrmB,SAASqmB,GAGlDnsB,EAAE8F,SAASgzB,EAAMhyB,IAETA,GACJ,IAAK,WACD5M,EAAK4M,MAAQ,WACb,MACJ,IAAK,MACD5M,EAAK4M,MAAQ,MACb,MACJ,IAAK,SACD5M,EAAK4M,MAAQ,SACb,MACJ,IAAK,QACD5M,EAAK4M,MAAQ,QACb,MACJ,IAAK,OACD5M,EAAK4M,MAAQ,OACb,MACJ,QACI5M,EAAK4M,MAAQ,WAErB9G,EAAE4F,KAAK,SAAS1F,KAAK,QAAShG,EAAK4M,OAMvC,SAAS01B,IACL,IAAIx8B,EAAIlG,EAAEtE,MACVwK,EAAE9F,OAAOqJ,QAAUvD,EAEnB,IAAI9F,EAAO8F,EAAE9F,OAEb,IAAIA,EAAKolB,OAAT,CAEA,IAAIxY,EAAQ5M,EAAK4M,MAAMoZ,cACnBzX,EAAOvO,EAAKuO,KAAKyX,cAGrB,GAAa,UAATzX,EACA,OAAQ3B,GACJ,IAAK,WACD5M,EAAK4M,MAAQ,MACb,MACJ,IAAK,MACD5M,EAAK4M,MAAQ,SACb,MACJ,IAAK,SACD5M,EAAK4M,MAAQ,QACb,MACJ,IAAK,QACD5M,EAAK4M,MAAQ,OACb,MACJ,IAAK,OACD5M,EAAK4M,MAAQ,WACb,MACJ,QACI5M,EAAK4M,MAAQ,WAIzB,GAAa,SAAT2B,EACA,OAAQ3B,GACJ,IAAK,WACD5M,EAAK4M,MAAQ,MACb,MACJ,IAAK,MACD5M,EAAK4M,MAAQ,SACb,MACJ,IAAK,SACD5M,EAAK4M,MAAQ,QACb,MACJ,IAAK,QACD5M,EAAK4M,MAAQ,WACb,MACJ,QACI5M,EAAK4M,MAAQ,WAIzB,GAAa,SAAT2B,EACA,OAAQ3B,GACJ,IAAK,WACD5M,EAAK4M,MAAQ,MACb,MACJ,IAAK,MACD5M,EAAK4M,MAAQ,SACb,MACJ,IAAK,SACD5M,EAAK4M,MAAQ,QACb,MACJ,IAAK,QACD5M,EAAK4M,MAAQ,OACb,MACJ,IAAK,OACD5M,EAAK4M,MAAQ,MACb,MACJ,QACI5M,EAAK4M,MAAQ,WAIzB,GAAa,QAAT2B,EACA,OAAQ3B,GACJ,IAAK,WACD5M,EAAK4M,MAAQ,SACb,MACJ,IAAK,SACD5M,EAAK4M,MAAQ,OACb,MACJ,IAAK,OACD5M,EAAK4M,MAAQ,WACb,MACJ,QACI5M,EAAK4M,MAAQ,WAIzB,GAAa,OAAT2B,EACA,OAAQ3B,GACJ,IAAK,WACD5M,EAAK4M,MAAQ,OACb,MACJ,IAAK,OACD5M,EAAK4M,MAAQ,WACb,MACJ,QACI5M,EAAK4M,MAAQ,WAIzB,GAAa,SAAT2B,EACA,OAAQ3B,GACJ,IAAK,WACD5M,EAAK4M,MAAQ,QACb,MACJ,IAAK,QACD5M,EAAK4M,MAAQ,SACb,MACJ,IAAK,SACD5M,EAAK4M,MAAQ,MACb,MACJ,IAAK,MACD5M,EAAK4M,MAAQ,WACb,MACJ,QACI5M,EAAK4M,MAAQ,WAIzB9G,EAAE4F,KAAK,SAAS1F,KAAK,QAAShG,EAAK4M,OAAOwD,QAAQ,UAElDtK,EAAE9F,KAAKA,GAGPmiC,EAAYr8B,GAGZ9F,EAAO8F,EAAE9F,OACTH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,YAoBlG,OARAvN,EAAM4B,UAAY,SAASmuB,EAAWvgB,GAClC+yB,EAAUxS,EAAWvgB,IAOlBxP,EApUG,CAqUZQ,OAAQb;ACrUV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAQtByxB,EAAYzyB,EAAGoL,OAAO,UACtBs3B,EAAY,wBACZC,EAAY,wBACZC,EAAU,sBAEVC,EAAQ,KACRC,EAAU,KACVC,EAAW,GACXC,EAAY,EAEZ/P,EAAM,EACNgQ,EAAc,EACdC,EAAW,KAEX/sB,EACM,GADNA,EAEI,GAFJA,EAGO,GAHPA,EAIM,GAJNA,EAKK,EALLA,EAMO,GANPA,EAOK,GAILgtB,EAAgB,CAChB/1B,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GACPiZ,QAAS,GACT2X,OAAO,EACP3tB,OAAO,EACPuV,QAAQ,EACRqY,UAAU,GAIVwF,EAAiB,CACjBh2B,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GACPiZ,QAAS,GACTT,QAAQ,GAIR8d,EAAe,CACfj2B,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GACPiZ,QAAS,GACTT,QAAQ,GAKZ,SAAS+d,EAAW7zB,EAAW8zB,GAW3B,GATkB,OAAd9zB,EACyB,iBAAdA,IACPozB,EAAQ9iC,EAAE0P,IAGdozB,EAAQ9iC,EAAE0P,GAIO,IAAjBozB,EAAM5jC,OAAV,CAGA6jC,EAAUD,EAAMj3B,QAAQ,SAAS+jB,QAAQxpB,KAAK,MAE9C48B,EAAW,GACX,IACIS,EADSX,EAAMh3B,KAAK,MAAM43B,IAAI,cAAcA,IAAI,WAAWA,IAAI,cACzC53B,KAAK,MAAM43B,IAAI,gBAAgBA,IAAI,WAGjC,IAAxBD,EAAavkC,SAIjBukC,EAAal6B,MAAK,SAAUtK,GACxB,IAAI0wB,EAAK3vB,EAAEtE,MACP+T,EAAKxP,EAAGoL,OAAO,MACnBskB,EAAGvpB,KAAK,KAAMqJ,GACdkgB,EAAGvpB,KAAK,WAAYnH,GACpB,IAAI0kC,EAAO,CACPl0B,GAAIA,EACJk0B,KAAMhU,GAEVqT,EAAS3jC,KAAKskC,MAIlBzQ,EAAM8P,EAAS9jC,OAIG,KADlB+jC,EAqHJ,SAASW,EAAaC,GAClB,IACI,IAAIZ,EAAYH,EAAMh3B,KAAK,gBAAkB+3B,EAAY,KAAKj0B,SAAS,MAAM8zB,IAAI,gBAAgBxkC,OACjG,OAAkB,IAAd+jC,EACOW,EAAaC,EAAY,GAE7BZ,EACT,MAAO/8B,GACL,OAAO,GA7HC09B,CAAa,MAMP,OAAdJ,GAAoC,KAAdA,GAAqBnuB,MAAMmuB,KACjDN,EAAcM,GAWtB,WACI,IAAIlxB,EAAOtS,EAAE2iC,GACb,GAAoB,IAAhBrwB,EAAKpT,OACL,OAGJoT,EAAK/I,MAAK,WACN,IAAIY,EAAOnK,EAAEtE,MACTmF,EAAUb,EAAEe,OAAO,GAAIqiC,EAAej5B,EAAK/J,QAG/CS,EAAQg9B,SAAWh9B,EAAQg9B,SAG3B59B,EAAGkN,sBAAsBhD,EAAMtJ,GAG/BsJ,EAAK/J,KAAKS,GAGNA,EAAQ2kB,QACRrb,EAAK/D,KAAK,YAAY,GAG1B,IAAI4G,EAAQ7C,EAAK7J,MACjB0M,EAAQ/M,EAAGkQ,WAAWnD,GAEtBA,EAAQrO,OAAOqO,GAEXqI,MAAMrI,KACNA,EAASqI,MAAM1W,OAAOwL,EAAK/J,KAAK,aAAgBzB,SAAWA,OAAOwL,EAAK/J,KAAK,aAGhF+J,EAAK/J,OAAO4M,MAAQA,EAEhBnM,EAAQ+8B,QACR5wB,EAAQ/M,EAAG8M,SAASC,IAGxB7C,EAAK7J,IAAI0M,MA/Cb82B,GAoDJ,WACI,IAAIxxB,EAAOtS,EAAE4iC,GACb,GAAoB,IAAhBtwB,EAAKpT,OACL,OAGJoT,EAAK/I,MAAK,WACN,IAAIY,EAAOnK,EAAEtE,MACTmF,EAAUb,EAAEe,OAAO,GAAIsiC,EAAgBl5B,EAAK/J,QAGhDS,EAAQg9B,SAAWh9B,EAAQg9B,SAG3B59B,EAAGkN,sBAAsBhD,EAAMtJ,GAG/BsJ,EAAK/J,KAAKS,GAGNA,EAAQ2kB,QACRrb,EAAK/D,KAAK,YAAY,MAxE9B29B,GA8EJ,WACI,IAAIzxB,EAAOtS,EAAE6iC,GACb,GAAoB,IAAhBvwB,EAAKpT,OACL,OAGJoT,EAAK/I,MAAK,WACN,IAAIY,EAAOnK,EAAEtE,MACTmF,EAAUb,EAAEe,OAAO,GAAIuiC,EAAcn5B,EAAK/J,QAG9CS,EAAQg9B,SAAWh9B,EAAQg9B,SAG3B59B,EAAGkN,sBAAsBhD,EAAMtJ,GAG/BsJ,EAAK/J,KAAKS,GAGNA,EAAQ2kB,QACRrb,EAAK/D,KAAK,YAAY,MAlG9B49B,GAgLAlB,EAAM3+B,IAAI,WAAauuB,GACvBoQ,EAAM1+B,GAAG,WAAasuB,GAAW,SAAU9K,GACvC,IAAIqc,EACAhmB,EAASje,EAAE4nB,EAAM3J,QACjBqL,EAAU3qB,OAAOipB,EAAM0B,UAAY3qB,OAAOipB,EAAMyB,OAEpD,GAAIC,IAAYlT,EAAS,CACrB,IAAIhW,EAAO6d,EAAO7d,OAElB,GAAI6d,EAAO7O,GAAG,yBAA0B,CACpC,IAAI80B,EAASjkC,EAAG8M,SAAS3M,EAAK6lB,SAC9BhI,EAAO3d,IAAI4jC,QAEXjmB,EAAO3d,IAAIF,EAAK6lB,SAIpB,OADAhmB,EAAG8P,cAAckO,GAAQ,IAClB,EAGX,OAAIA,EAAO7O,GAAG,2BAIyB,IAFpB,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1G,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACzDmH,QAAQ+S,IACjB1B,EAAM/a,kBACC,GAIXyc,IAAYlT,IACZ6tB,EAAYf,EAAc,IAzT5B,GA0TyBe,EAAW/Q,GAC9BgQ,EAAce,EACdE,KACO,IAIX7a,IAAYlT,IACZ6tB,EAAYf,EAAcD,IAlU5B,GAmUyBgB,EAAW/Q,IAC9BgQ,EAAce,EACdE,KAIJ7a,IAAYlT,IACZ6tB,EAAYf,EAAc,IA1U5B,GA4UyBe,GAAY/Q,GAOnCtL,EAAM6T,UAAYnS,IAAYlT,IAC9B6tB,EAAYf,EAAc,IApV5B,GAsVyBe,GAAY/Q,GAT/BgQ,EAAce,EACdE,KACO,IAcX7a,IAAYlT,IACZwR,EAAM/a,kBACNo3B,EAAYf,EAAcD,IA/V5B,GAiWyBgB,EAAW/Q,IAC9BgQ,EAAce,EACdE,MAIJ7a,IAAYlT,IACZwR,EAAM/a,kBACNo3B,EAAYf,EAAcD,IAzW5B,GA2WyBgB,GAAY/Q,IAC/BgQ,EAAce,EACdE,MAIJ7a,IAAYlT,IACZ6tB,EAAYf,EAAc,IAlX5B,GAoXyBe,EAAW/Q,GAC9BgQ,EAAce,EACdE,KACO,QANf,OAYJrB,EAAM3+B,IAAI,SAAWuuB,GACrBoQ,EAAM1+B,GAAG,SAAWsuB,GAAW,SAAU9K,GACrC,IAAI3J,EAASje,EAAE4nB,EAAM3J,QACjB7d,EAAO6d,EAAO7d,OAEd6d,EAAO7O,GAAG,0BACNhP,EAAKy9B,WACL5f,EAAO3d,IAAI,UACX2d,EAAO5X,aAMnBy8B,EAAM3+B,IAAI,SAAWuuB,GACrBoQ,EAAM1+B,GAAG,SAAWsuB,EAAW,MAAM,WAIjC,IAHA,IACIjjB,EADOzP,EAAEtE,MACC0K,KAAK,MAEVnH,EAAI,EAAGyyB,EAAMsR,EAAS9jC,OAAQD,EAAIyyB,EAAKzyB,IAE5C,GADQ+jC,EAAS/jC,GACXwQ,KAAOA,EAAI,CACbyzB,EAAcjkC,EACdklC,IACA,UAMZnkC,EAAEkE,UAAUC,IAAI,wBAChBnE,EAAEkE,UAAUE,GAAG,wBAAwB,SAAUwjB,IAChC5nB,EAAE4nB,EAAM3J,QAETpS,QAAQ,IAAMk3B,GAAS7jC,OAAS,IAyGhD4jC,EAAMh3B,KAAK,MAAMC,YAAY,8BACZ,OAAbo3B,GACAnjC,EAAEmjC,GAAUvzB,WAAW7D,YAAY,UArGvC/L,EAAEkE,UAAUC,IAAI,UAAYuuB,EAAW,IAAMqQ,EAAU,IAAMH,GAC7D5iC,EAAEkE,UAAUE,GAAG,UAAYsuB,EAAW,IAAMqQ,EAAU,IAAMH,GAAW,WACnE,IAAI18B,EAAIlG,EAAEtE,MACVwK,EAAE9F,OAAOqJ,QAAUvD,EACnB,IAAI9F,EAAO8F,EAAE9F,OACTE,EAAM4F,EAAE5F,MAEZ4F,EAAE9F,OAAO4M,MAAQ1M,EACjB4F,EAAE9F,KAAKA,GAEPA,EAAO8F,EAAE9F,OACTH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAO6M,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,cAIlGzN,EAAEkE,UAAUC,IAAI,SAAWuuB,EAAW,IAAMqQ,EAAU,IAAMJ,GAC5D3iC,EAAEkE,UAAUE,GAAG,SAAWsuB,EAAW,IAAMqQ,EAAU,IAAMJ,GAAW,WAClE,IAAIz8B,EAAIlG,EAAEtE,MACN4E,EAAM3B,OAAOuH,EAAE5F,MAAM8L,QAAQ,eAAgB,KAC7ChM,EAAO8F,EAAE9F,OAEb,IAAIA,EAAKolB,OAAT,CAIAplB,EAAK6lB,QAAU3lB,EAAI89B,UAGnB,IAAI5hC,EAAQyD,EAAGoZ,WACXjZ,EAAKy9B,UACL33B,EAAE5F,IAAI9D,EAAM6hC,QAGhBn4B,EAAEG,aAINrG,EAAEkE,UAAUC,IAAI,QAAUuuB,EAAW,IAAMqQ,EAAU,IAAMJ,GAC3D3iC,EAAEkE,UAAUE,GAAG,QAAUsuB,EAAW,IAAMqQ,EAAU,IAAMJ,GAAW,WACjE,IAAIz8B,EAAIlG,EAAEtE,MACN0E,EAAO8F,EAAE9F,OACb8F,EAAE9F,OAAOqJ,QAAUvD,EAEnB,IAAI8G,EAAQ9G,EAAE5F,MACd0M,EAAQ/M,EAAGkQ,WAAWnD,GACtBA,EAAQrO,OAAOqO,GAEXqI,MAAMrI,KACNA,EAASqI,MAAM1W,OAAOuH,EAAE9F,KAAK,aAAgBzB,SAAWA,OAAOuH,EAAE9F,KAAK,aAG1E8F,EAAE9F,OAAO4M,MAAQA,EAEb5M,EAAKw9B,QACL5wB,EAAQ/M,EAAG8M,SAASC,IAGxB9G,EAAE5F,IAAI0M,GAGF5M,EAAKolB,SAKLplB,EAAKy9B,SACL33B,EAAE5F,IAAIL,EAAG8M,SAAS3M,EAAK6lB,UAK3B0O,EAAYzuB,OAIhBlG,EAAEkE,UAAUC,IAAI,SAAWuuB,EAAW,IAAMqQ,EAAU,IAAMF,GAC5D7iC,EAAEkE,UAAUE,GAAG,SAAWsuB,EAAW,IAAMqQ,EAAU,IAAMF,GAAS,WAChE,IAAI38B,EAAIlG,EAAEtE,MACN4E,EAAM4F,EAAE5F,MACZ4F,EAAE9F,OAAO6lB,QAAU3lB,EACnB4F,EAAEG,YAINrG,EAAEkE,UAAUC,IAAI,QAAUuuB,EAAW,IAAMqQ,EAAU,IAAMF,GAC3D7iC,EAAEkE,UAAUE,GAAG,QAAUsuB,EAAW,IAAMqQ,EAAU,IAAMF,GAAS,WAC/D,IAAI38B,EAAIlG,EAAEtE,MACVwK,EAAE9F,OAAOqJ,QAAUvD,EACnB,IAAI5F,EAAM4F,EAAE5F,MACZ4F,EAAE5F,IAAIA,GACN4F,EAAE9F,OAAO4M,MAAQ1M,EAEjBq0B,EAAYzuB,MArZhBi+B,OAqHJ,SAASA,IACL,GAAwB,IAApBnB,EAAS9jC,OAAb,CAGiB,OAAbikC,GACAnjC,EAAEmjC,GAAUvzB,WAAW7D,YAAY,MAIvC/L,EAAE,gCAAgC+L,YAAY,MAE1Ci3B,EAAS9jC,QAAUgkC,IACnBA,EAAc,GAGlB,IAAIvT,EAAK3vB,EAAE,IAAMgjC,EAASE,GAAazzB,IAWvC,GAVkB,IAAdkgB,EAAGzwB,SACHgkC,EAAc,GAIlBJ,EAAMh3B,KAAK,MAAMC,YAAY,8BAC7B4jB,EAAGrsB,OAAO,MAAM0I,SAAS,8BAEzBm3B,EAAW,IAAMH,EAASE,GAAazzB,IAEnCkgB,EAAG5d,SAAS,aAAhB,CAGA4d,EAAG/f,WAAW5D,SAAS,MAEvB,IAAI9F,EAAI,KACR,GAAIypB,EAAG/f,SAAS,SAAS1Q,OAAS,EAG9B,IAFAgH,EAAIypB,EAAG/f,SAAS,SAASggB,SAEnBxgB,GAAG,cACLugB,EAAG1f,YACA,CACH,GAAI/J,EAAEkJ,GAAG,UACL,OAEJlJ,EAAEsK,QAAQ,SAIlB,GAAImf,EAAG/f,SAAS,UAAU1Q,OAAS,EAAG,CAElC,IADAgH,EAAIypB,EAAG/f,SAAS,UAAUggB,SACpBxgB,GAAG,UACL,OAEJlJ,EAAE+J,WA6PV,SAAS0kB,EAAYzuB,GACjB,IAAI9F,EAAO8F,EAAE9F,OAGTA,EAAKy9B,UAKLz9B,EAAK4M,OAAS5M,EAAK6lB,SAKvBhmB,EAAGoM,oBAAoBnG,EAAG,CACtBA,EAAG9F,EAAKqJ,QACRuD,MAAO5M,EAAK4M,MAAMoxB,UAClBnY,QAAS7lB,EAAK6lB,QACdpM,IAAKzZ,EAAKyZ,IACVpM,SAAUrN,EAAKqN,SACfvO,OAAQkB,EAAKlB,QAAU,IAe/B,OAJAgB,EAAMqjC,WAAa,SAAU7zB,EAAW8zB,GACpCD,EAAW7zB,EAAW8zB,IAGnBtjC,EAvkBG,CAwkBZQ,OAAQb;ACxkBV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EA8GEL,GA9GSoB,SAAW,GAGtB6Q,EAAO,oCAGX,SAASsyB,IACL,OAAOpkC,EAAE8R,GAAM5S,OAAS,EAAI4S,EAHT,gCAyGvB,OAnGA9R,EAAEmlB,OAAO,4BAA6B,CAClCtkB,QAAS,CACL4I,QAAS,GACT46B,cAAe,GAEnBze,QAAS,WAAY,IAAA0e,EAAA5oC,KACjBsE,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QACpC1E,KAAK+N,QAAQuC,SAAS,iBACtBtQ,KAAK6oC,sBAAsB7oC,KAAKmF,QAAQwjC,eACxC3oC,KAAKgO,UAEkB,IAAI86B,gBAAe,SAAAC,GACtCH,EAAK56B,UACL1J,EAAEokC,KAAct3B,OAAO2hB,KAAK,MAEjBiW,QAAQxgC,SAASygC,cAAcP,OAElDG,sBAAuB,SAAUK,GAAM,IAAAC,EACnCD,EAAW,QAAPC,EAAGD,SAAI,IAAAC,EAAAA,EAAI,EACf,IAAMC,EAAS9kC,EAAEokC,KACXW,EAAQD,EAAOh5B,KAAK,YACtBk5B,EAAOhlC,EAAE,2BAA2BkJ,SAAWlJ,EAAE,wBAAwBkJ,SAC7E67B,EAAMx7B,MAAK,SAAU07B,GACjBjlC,EAAEtE,MAAMoQ,KAAK,MAAMvC,MAAK,WACpB,IAAMC,EAAQxJ,EAAEtE,MAAM8N,QAEhB07B,EAAQF,EACRG,EAFc37B,EAASo7B,EAEA,GAAK,GAClC5kC,EAAEtE,MAAM2I,IAAI,WAAY,UAAUA,IAAI,MAAO6gC,GAAO7gC,IAAI,UAAW8gC,MAGvEH,GAAQhlC,EAAEtE,MAAMsa,iBAEpB,IAAIovB,EAAU,GACRC,EAAQP,EAAOh5B,KAAK,YAAYA,KAAK,SAAW84B,EAAO,YAAcA,EAAO,KAC9EU,EAAQ,GACZ,IAAID,EAAMtzB,SAAS,gBAAiBszB,EAAMj/B,KAAK,WAA/C,CAGAi/B,EAAM97B,MAAK,WACP,IAAMC,EAAQxJ,EAAEtE,MAAM8N,QACtB47B,EAAQ57B,GAAS47B,EAAQ57B,GAAS47B,EAAQ57B,GAAS87B,EAEnDtlC,EAAEtE,MAAM2I,IAAI,WAAY,UAAUA,IAAI,OAAQ+gC,EAAQ57B,IAAQnF,IAAI,UADnD,IAEfihC,GAAStlC,EAAEtE,MAAM6pC,gBAGrB,IAAMC,EAAUV,EAAOh5B,KAAK,YAAYA,KAAK,SAAW84B,EAAO,KAC/DU,EAAQ,GACRE,EAAQj8B,MAAK,WACT,IAAMC,EAAQxJ,EAAEtE,MAAM8N,QACtB47B,EAAQ57B,GAAS47B,EAAQ57B,GAAS47B,EAAQ57B,GAAS87B,EACnDtlC,EAAEtE,MAAM2I,IAAI,OAAQ+gC,EAAQ57B,IAC5B87B,GAAStlC,EAAEtE,MAAM6pC,kBAIzBxc,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAK+N,QAAQrJ,KAAKS,GAClBnF,KAAKgO,WAETA,QAAS,WACLhO,KAAK6oC,sBAAsB7oC,KAAKmF,QAAQwjC,gBAE5Clb,OAAQ,SAAUjS,GACdxb,KAAK+N,QAAUyN,GAEnBkS,SAAU,eAYdlpB,EAAMulC,kBAAoB,SAAU/1B,EAAWyN,GAC3C,IAAI7K,EAAO,GAUX,OATI5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAUN,GAAGg1B,KAAgB10B,EAAYA,EAAU5D,KAAKs4B,MAE/D9xB,EAAOtS,EAAEokC,KAGNpkC,EAAEsS,GAAMozB,mBAAmBvoB,IAQ/Bjd,EAhHG,CAiHZQ;ACjHF,aAAAb,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAaI0lC,EACAC,EACAC,EACAC,EAGAC,EAAqBC,EAAqBC,EAAsBC,EAChEC,EAAsBC,EAAsBC,EApB5CnmC,EAAQD,EAAGgB,SAAW,GAiBtBqlC,GAAkB,EAClBC,GAA+B,EAG/BC,EAAoB,IAAIrqB,OACxBsqB,GAA2B,EAyD/B,SAASC,EAAiCC,EAAqBC,EAAqBC,EAA0BC,EAA0BC,GACpI,IAAIC,EAAkB,EAkBtB,OAjBID,IACA/mC,EAAE2mC,GAAqBtiC,IAAI,SAAU,IACrCrE,EAAE4mC,GAAqBviC,IAAI,SAAU,KAEzCrE,EAAE2mC,GAAqBp9B,MAAK,SAAShO,GACjC,IAAI0rC,EAAiBN,EAAoBprC,GAAG2rC,aAAeN,EAAoBrrC,GAAG2rC,aAC9EP,EAAoBprC,GAAG2rC,aAAeN,EAAoBrrC,GAAG2rC,aACjEF,GAAmBC,EACnBl2B,QAAQC,QAAO,WACX41B,EAAoBrrC,GAAG+S,MAAMpF,OAAS+9B,EAAgB,KACtDN,EAAoBprC,GAAG+S,MAAMpF,OAAS+9B,EAAgB,WAG9Dl2B,QAAQC,QAAO,WACX61B,EAAyBv4B,MAAMpF,OAAS89B,EAAkB,KAC1DF,EAAyBx4B,MAAMpF,OAAS89B,EAAkB,QAEvDA,EAIX,SAASG,EAAiCC,EAAmBC,EAAmBN,GACxEA,IACA/mC,EAAEonC,GAAmB/iC,IAAI,SAAU,IACnCrE,EAAEqnC,GAAmBhjC,IAAI,SAAU,KAEvCrE,EAAEonC,GAAmB79B,MAAK,SAAUhO,GAChCwV,QAAQu2B,SAAQ,WACZ,IAAIL,EAAgBG,EAAkB7rC,GAAG2rC,aAAeG,EAAkB9rC,GAAG2rC,aACzEE,EAAkB7rC,GAAG2rC,aAAeG,EAAkB9rC,GAAG2rC,aAC7Dn2B,QAAQC,QAAO,WACXq2B,EAAkB9rC,GAAG+S,MAAMpF,OAAS+9B,EAAgB,KACpDG,EAAkB7rC,GAAG+S,MAAMpF,OAAS+9B,EAAgB,cAOpE,SAASM,IACLx2B,QAAQu2B,SAAQ,WACZ,IAAIE,EAnFD1nC,OAAO2nC,WAAazB,EAAoBT,YAAW,GAAQvlC,EAAE,yBAAyBulC,YAAW,GAAQ,EAAIzlC,OAAO2nC,WAAazB,EAAoBT,aAAevlC,EAAE,yBAAyBulC,YAAW,GAoFzMmC,EAAe3B,EAAoB1hC,IAAI,OACvCsjC,EAAkB3nC,EAAE,0BAA0BkJ,SAAWlJ,EAAE,0BAA0B,GAAGggC,aAE5FjvB,QAAQC,QAAO,WACX+0B,EAAoBr7B,MAAM88B,GAC1BvB,EAAqBv7B,MAAM88B,EAAa,IACxCzB,EAAoB1hC,IAAI,SAAU,QAAUuhC,EAAe,QAAU8B,EAAe,KACpF1B,EAAoB3hC,IAAI,SAAU,QAAUuhC,EAAe,QAAU8B,EAAe,KACpF7B,EAAiBxhC,IAAI,aAAcuhC,EAAe,MAE9C5lC,EAAE,2BAA2BkJ,SAAWlJ,EAAE,0BAA0BkJ,UACpElJ,EAAE,0BAA0BkJ,OAAOlJ,EAAE,0BAA0BkJ,SAAWy+B,SAwD1F,SAASC,IACL,IAAIf,EAA2BX,EAAqB,GAChDY,EAA2Bb,EAAqB,GAChD4B,EAAyB7B,EAAoB,GAC7C8B,EAAyB/B,EAAoB,GAMjD,GALAc,EAAyBv4B,MAAMjF,IAAOrJ,EAAE,wBAAwBgW,aAAY,GAAQhW,EAAE,4BAA4BgW,aAAY,GAAS,KACvI8wB,EAAyBx4B,MAAMjF,IAAOrJ,EAAE,wBAAwBgW,aAAY,GAAQhW,EAAE,4BAA4BgW,aAAY,GAAS,KACvI6xB,EAAuBv5B,MAAMjF,IAAO0+B,WAAWlB,EAAyBv4B,MAAMjF,KAAO0+B,WAAWlB,EAAyBv4B,MAAMpF,QAAW,KAC1I4+B,EAAuBx5B,MAAMjF,IAAO0+B,WAAWlB,EAAyBv4B,MAAMjF,KAAO0+B,WAAWlB,EAAyBv4B,MAAMpF,QAAW,KAC1Iq+B,IACoC,IAAhCxB,EAAoBr7B,SACpB,IAAK+7B,EAA0B,CAC3B,IAAIjqC,EAAQyD,EAAGoZ,WACfmtB,EAAkBpqB,MAAM5f,EAAqB,eAC7CiqC,GAA2B,QAG/BA,GAA2B,EAgXnC,OArWAvmC,EAAM6B,qBAAuB,SAAUwzB,GAInC,GAHMA,aAAiB70B,SACnB60B,EAAgBv1B,EAARu1B,GApNL,oCAsNFA,EAAMr2B,OAAX,CAIAymC,GAAqBpQ,EAAMn1B,KAAK,eAChCwlC,GAAgBrQ,EAAMn1B,KAAK,gBAAkB,GAAKm1B,EAAMn1B,KAAK,gBAAkB,IAC/EylC,EAAmB7lC,EAAE,uBACrB8lC,OAA0C77B,IAA7BsrB,EAAMn1B,KAAK,eAAqCm1B,EAAMn1B,KAAK,cAIxE,IAAIumC,EAAsB,GACtBC,EAAsB,GACtBoB,EAAiB9jC,SAAS80B,cAAc,YACxCiP,EAAiB/jC,SAAS80B,cAAc,YACxCkP,EAAmB,EACnBC,EAAmB,EAEvBnoC,EAAEuJ,KAAKgsB,EAAMzpB,KAAK,aAAa,SAAUtC,EAAOW,GAC5C,IAAqBi+B,EAAjBC,EAAc,EAGlB,IAFA1B,EAAoBtnC,KAAK8K,EAAKm+B,WAAU,IACxC1B,EAAoBvnC,KAAK8K,EAAKm+B,WAAU,IACjCD,EAAc1C,GACbx7B,EAAKyF,SAAS,GAAG24B,QAAQ79B,SACzB09B,EAAMlkC,SAAS80B,cAAc,QACzBwP,aAAa,QAASr+B,EAAKyF,SAAS,GAAG24B,QAAQ79B,OACnDs9B,EAAeS,YAAYL,GAC3BF,IAAqB/9B,EAAKyF,SAAS,GAAG24B,QAAQ79B,OAElD29B,GAAel+B,EAAKyF,SAAS,GAAG84B,QAChC/B,EAAoBn9B,GAAOi/B,YAAYt+B,EAAKyF,SAAS,IAEzD,KAAOzF,EAAKyF,SAAS1Q,QACbiL,EAAKyF,SAAS,GAAG24B,QAAQ79B,SACzB09B,EAAMlkC,SAAS80B,cAAc,QACzBwP,aAAa,QAASr+B,EAAKyF,SAAS,GAAG24B,QAAQ79B,OACnDu9B,EAAeQ,YAAYL,GAC3BD,IAAqBh+B,EAAKyF,SAAS,GAAG24B,QAAQ79B,OAElDk8B,EAAoBp9B,GAAOi/B,YAAYt+B,EAAKyF,SAAS,OAM7D,IADA,IAAI+4B,EAAczkC,SAAS80B,cAAc,SAChC4P,EAAI,EAAGA,EAAIjC,EAAoBznC,OAAQ0pC,IAC5CD,EAAYF,YAAY9B,EAAoBiC,IAGhD,IAAIC,EAA2B3kC,SAAS80B,cAAc,SACtD6P,EAAyBC,UAAY,gBACrCD,EAAyBJ,YAAYT,EAAeM,WAAU,IAC9DO,EAAyBJ,YAAYE,GAErC,IAAII,EAA4B7kC,SAAS80B,cAAc,OACvD+P,EAA0BD,UAAY,0BACtCC,EAA0Bz6B,MAAMjF,IAAM,EACtC0/B,EAA0Bz6B,MAAM1D,KAAO,EACvCm+B,EAA0Bz6B,MAAM5D,MAAQw9B,EAAmB,KAC3Da,EAA0BN,YAAYI,GAEtC,IAAIhC,EAA2B3iC,SAAS80B,cAAc,OACtD6N,EAAyBiC,UAAY,yBACrCjC,EAAyBv4B,MAAMjF,IAAOrJ,EAAE,wBAAwBgW,aAAY,GAAQhW,EAAE,4BAA4BgW,aAAY,GAAS,KACvI6wB,EAAyBv4B,MAAM1D,KAAO,IACtCi8B,EAAyBv4B,MAAM5D,MAAQw9B,EAAmB,KAC1DrB,EAAyB4B,YAAYM,GAIrC,IADA,IAAIC,EAAc9kC,SAAS80B,cAAc,SAChCiQ,EAAI,EAAGA,EAAIrC,EAAoB1nC,OAAQ+pC,IAC5CD,EAAYP,YAAY7B,EAAoBqC,IAEhD,IAAIC,EAA2BhlC,SAAS80B,cAAc,SACtDkQ,EAAyBJ,UAAY,gBACrCI,EAAyBT,YAAYR,EAAeK,WAAU,IAC9DY,EAAyBT,YAAYO,GAErC,IAAIG,EAA4BjlC,SAAS80B,cAAc,OACvDmQ,EAA0BL,UAAY,0BACtCK,EAA0B76B,MAAMjF,IAAM,EACtC8/B,EAA0B76B,MAAM1D,KAAO,EACvCu+B,EAA0B76B,MAAM5D,MAAQy9B,EAAmB,KAC3DgB,EAA0BV,YAAYS,GAEtC,IAAIpC,EAA2B5iC,SAAS80B,cAAc,OACtD8N,EAAyBgC,UAAY,yBACrChC,EAAyBx4B,MAAMjF,IAAOrJ,EAAE,wBAAwBgW,aAAY,GAAQhW,EAAE,4BAA4BgW,aAAY,GAAS,KACvI8wB,EAAyBx4B,MAAM1D,KAAOi8B,EAAyBv4B,MAAM5D,MACrEo8B,EAAyBx4B,MAAM5D,MAAQy9B,EAAmB,KAE1DrB,EAAyB2B,YAAYU,GAGrC,IAAIC,EAAcppC,EAAE,sBAAsB,GAC1CopC,EAAYX,YAAY5B,GACxBuC,EAAYX,YAAY3B,GAExB,IAAIuC,EAAe3C,EAAiCC,EAAqBC,EAAqBC,EAA0BC,GAGpHM,EAAoB,GACpBC,EAAoB,GAExBrnC,EAAEuJ,KAAKgsB,EAAMzpB,KAAK,aAAa,SAAUtC,EAAOW,GAC5C,IAAIm/B,EAAY,EAKhB,GAJAlC,EAAkB/nC,KAAK8K,EAAKm+B,WAAU,IACtCjB,EAAkBhoC,KAAK8K,EAAKm+B,WAAU,IAGT,IAAzBn+B,EAAKyF,SAAS1Q,OACdkoC,EAAkB59B,GAAOi/B,YAAYt+B,EAAKyF,SAAS,GAAG04B,WAAU,IAChEjB,EAAkB79B,GAAOi/B,YAAYt+B,EAAKyF,SAAS,QAChD,CACH,KAAO05B,EAAY3D,GACf2D,GAAan/B,EAAKyF,SAAS,GAAG84B,QAC9BtB,EAAkB59B,GAAOi/B,YAAYt+B,EAAKyF,SAAS,IAEvD,KAAOzF,EAAKyF,SAAS1Q,QACjBmoC,EAAkB79B,GAAOi/B,YAAYt+B,EAAKyF,SAAS,QAO/D,IADA,IAAI25B,EAAcrlC,SAAS80B,cAAc,SAChCwQ,EAAI,EAAGA,EAAIpC,EAAkBloC,OAAQsqC,IAC1CD,EAAYd,YAAYrB,EAAkBoC,IAG9C,IAAIC,EAAyBvlC,SAAS80B,cAAc,SACpDyQ,EAAuBX,UAAY,gBACnCW,EAAuBhB,YAAYT,GACnCyB,EAAuBhB,YAAYc,GAEnC,IAAIG,EAA0BxlC,SAAS80B,cAAc,OACrD0Q,EAAwBZ,UAAY,yBACpCY,EAAwBp7B,MAAMjF,IAAM,EACpCqgC,EAAwBp7B,MAAM1D,KAAO,EACrC8+B,EAAwBp7B,MAAM5D,MAAQw9B,EAAmB,KACzDwB,EAAwBjB,YAAYgB,GAEpC,IAAI5B,EAAyB3jC,SAAS80B,cAAc,OACpD6O,EAAuBiB,UAAY,wBACnCjB,EAAuBv5B,MAAMjF,IAAO0+B,WAAWlB,EAAyBv4B,MAAMjF,KAAOggC,EAAgB,KACrGxB,EAAuBv5B,MAAM1D,KAAO,IACpCi9B,EAAuBv5B,MAAM5D,MAAQw9B,EAAmB,KAExDL,EAAuBY,YAAYiB,GAGnC,IAAIC,EAAczlC,SAAS80B,cAAc,SACJ,qBAAjCh5B,EAAE,QAASu1B,GAAOn1B,KAAK,OACvBJ,EAAE2pC,GAAavjC,KAAK,UAAW,oBAEnC,IAAK,IAAI7K,EAAI,EAAGA,EAAI8rC,EAAkBnoC,OAAQ3D,IAC1CouC,EAAYlB,YAAYpB,EAAkB9rC,IAG9C,IAAIquC,EAAyB1lC,SAAS80B,cAAc,SACpD4Q,EAAuBd,UAAY,gBACnCc,EAAuBnB,YAAYR,GACnC2B,EAAuBnB,YAAYkB,GAEnC,IAAIE,EAA0B3lC,SAAS80B,cAAc,OACrD6Q,EAAwBf,UAAY,yBACpCe,EAAwBv7B,MAAMjF,IAAM,EACpCwgC,EAAwBv7B,MAAM1D,KAAO,EACrCi/B,EAAwBv7B,MAAM5D,MAAQy9B,EAAmB,KACzD0B,EAAwBpB,YAAYmB,GAEpC,IA2BIE,EAAWC,EA3BXjC,EAAyB5jC,SAAS80B,cAAc,OACpD8O,EAAuBgB,UAAY,wBACnChB,EAAuBx5B,MAAMjF,IAAO0+B,WAAWlB,EAAyBv4B,MAAMjF,KAAOggC,EAAgB,KACrGvB,EAAuBx5B,MAAM1D,KAAOi8B,EAAyBv4B,MAAM5D,MAEnEo9B,EAAuBW,YAAYoB,GAEnCT,EAAYX,YAAYZ,GACxBuB,EAAYX,YAAYX,GAExBX,EAAiCC,EAAmBC,GAEpDrnC,EAAEu1B,GAAOrmB,SAGT+2B,EAAuBjmC,EAAE,2BACzBqmC,EAAwBJ,EAAqBn6B,KAAK,OAClDi6B,EAAsB/lC,EAAE,0BACxBmmC,EAAuBJ,EAAoBj6B,KAAK,OAChDo6B,EAAuBlmC,EAAE,2BACDkmC,EAAqBp6B,KAAK,OAClDk6B,EAAsBhmC,EAAE,0BACxBomC,EAAuBJ,EAAoBl6B,KAAK,OAEhDy7B,IAIAvnC,EAAE,0BAA0BmE,IAAI,UAAUC,GAAG,UAAU,WACnD,IAAK0lC,EAAW,CACZC,GAAW,EACX,IAAI1gC,EAAMrJ,EAAEtE,MAAMuP,YACdL,EAAO5K,EAAEtE,MAAM4I,aAEnB,GAAItE,EAAEgqC,QAAQC,QAAUjqC,EAAEgqC,QAAQ52B,KAAM,CACpC,IAAIiL,EAAMre,EAAEtE,MAAM,GAGd2N,GAAO,IAFSgV,EAAIpT,WAAaoT,EAAIvL,aAAeuL,EAAI2hB,eAMhEgG,EAAoB/6B,UAAU5B,GAC9B48B,EAAqB3hC,WAAWsG,GAEpCk/B,GAAY,KAEhB9pC,EAAE,0BAA0BmE,IAAI,UAAUC,GAAG,UAAU,WACnD,IAAK2lC,EAAU,CACXD,GAAY,EACZ,IAAIzgC,EAAMrJ,EAAEtE,MAAMuP,YAElB,GAAIjL,EAAEgqC,QAAQC,QAAUjqC,EAAEgqC,QAAQ52B,KAAM,CACpC,IAAIiL,EAAMre,EAAEtE,MAAM,GAGd2N,GAAO,IAFSgV,EAAIpT,WAAaoT,EAAIvL,aAAeuL,EAAI2hB,eAMhE+F,EAAoB96B,UAAU5B,GAElC0gC,GAAW,KAEXjE,IACA9lC,EAAE,iDAAiDoE,GAAG,cAAc,SAAUwjB,GAC1E0e,GAAkB,KACnBliC,GAAG,cAAc,WAChBkiC,GAAkB,KAEtBtmC,EAAE,gCAAgCoE,GAAG,cAAc,WAC/CkiC,GAAkB,KACnBliC,GAAG,cAAc,WAChBkiC,GAAkB,MAIrBC,IACDzmC,OAAOoqC,iBAAiB,SAAS,SAAUtiB,GACnCke,GAAcQ,GAA4E,IAAzDtmC,EAAE4nB,EAAM3J,QAAQpS,QAAQ,sBAAsB3M,SAEvD,IAApB0oB,EAAMuiB,UACNpE,EACK96B,UAAUjN,KAAKC,MAAM8nC,EAAoB96B,YAA6B,GAAf2c,EAAMwiB,SAC7D9lC,WAAWtG,KAAKC,MAAM8nC,EAAoBzhC,aAAesjB,EAAMyiB,SAASt/B,SAE7Eg7B,EACK96B,UAAUjN,KAAKC,MAAM8nC,EAAoB96B,YAAc2c,EAAMwiB,SAC7D9lC,WAAWtG,KAAKC,MAAM8nC,EAAoBzhC,aAAesjB,EAAMyiB,SAASt/B,aAKzFw7B,GAA+B,GAGnCvmC,EAAEF,QAAQqE,IAAI,qBAAsByjC,GAAcxjC,GAAG,qBAAsBwjC,KAI/E1nC,EAAMoqC,sBAAwB,SAAUC,IA/VxC,SAAyBA,GACrB,IAAIzH,EAAQ5+B,SAAS80B,cAAc,SACnC8J,EAAM3qB,UAAYoyB,EAASp+B,OAE3B,IAAIq+B,EAAkBxqC,EAAE,iCACpByqC,EAAkBzqC,EAAE,iCAExBwqC,EAAgBt+B,KAAK,IACrBu+B,EAAgBv+B,KAAK,IAErBlM,EAAEuJ,KAAKu5B,EAAMlzB,UAAU,SAAUpG,EAAOW,GACpC,IAAIm/B,EAAY,EACZoB,EAAYvgC,EAAKm+B,WAAU,GAC3BqC,EAAYxgC,EAAKm+B,WAAU,GAG/B,GAA6B,IAAzBn+B,EAAKyF,SAAS1Q,OACdwrC,EAAUjC,YAAYt+B,EAAKyF,SAAS,GAAG04B,WAAU,IACjDqC,EAAUlC,YAAYt+B,EAAKyF,SAAS,QACjC,CACH,KAAO05B,EAAY3D,GACf2D,GAAan/B,EAAKyF,SAAS,GAAG84B,QAC9BgC,EAAUjC,YAAYt+B,EAAKyF,SAAS,IAExC,KAAOzF,EAAKyF,SAAS1Q,QACjByrC,EAAUlC,YAAYt+B,EAAKyF,SAAS,IAG5C46B,EAAgBx7B,OAAO07B,GACvBD,EAAgBz7B,OAAO27B,MAG3BxD,EAAiCqD,EAAgB56B,WAAY66B,EAAgB76B,YAC7E23B,IAEAvnC,EAAE,gCAAgCoE,GAAG,cAAc,WAC/CkiC,GAAkB,KACnBliC,GAAG,cAAc,WAChBkiC,GAAkB,KA0TtBsE,CAAgBL,IAIpBrqC,EAAM2qC,sBAAwB,SAAUC,IAtcxC,SAAyBC,GACrB,IAAIC,EAAQ9mC,SAAS80B,cAAc,SACnCgS,EAAM7yB,UAAY4yB,EAAW5+B,OAE7B,IAAI8+B,EAAkBjrC,EAAE,kCAAkC,GACtDkrC,EAAkBlrC,EAAE,kCAAkC,GAC1DA,EAAEirC,GAAiB/+B,KAAK,IACxBlM,EAAEkrC,GAAiBh/B,KAAK,IAExBlM,EAAEuJ,KAAKyhC,EAAMp7B,UAAU,SAAUpG,EAAOW,GACpC,IAAIm/B,EAAY,EACZoB,EAAYvgC,EAAKm+B,WAAU,GAC3BqC,EAAYxgC,EAAKm+B,WAAU,GAG/B,GAA6B,IAAzBn+B,EAAKyF,SAAS1Q,OACdwrC,EAAUjC,YAAYt+B,EAAKyF,SAAS,GAAG04B,WAAU,IACjDqC,EAAUlC,YAAYt+B,EAAKyF,SAAS,QACjC,CACH,KAAO05B,EAAY3D,GACf2D,GAAan/B,EAAKyF,SAAS,GAAG84B,QAC9BgC,EAAUjC,YAAYt+B,EAAKyF,SAAS,IAExC,KAAOzF,EAAKyF,SAAS1Q,QACjByrC,EAAUlC,YAAYt+B,EAAKyF,SAAS,IAG5Cq7B,EAAgBxC,YAAYiC,GAC5BQ,EAAgBzC,YAAYkC,MAGhCjE,EAAiCuE,EAAgBr7B,SAAUs7B,EAAgBt7B,SAAUs2B,EAAqB,GAAID,EAAqB,IAwanIkF,CAAgBL,IAKpB5qC,EAAMkrC,6BAA+B,WACjC,IAAIZ,EAAkBpE,EAAqBt6B,KAAK,SAAS,GACrD2+B,EAAkBtE,EAAqBr6B,KAAK,SAAS,GACrDm/B,EAAkBjrC,EAAE,kCAAkC,GACtDkrC,EAAkBlrC,EAAE,kCAAkC,GAE1D0mC,EAAiCuE,EAAgBr7B,SAAUs7B,EAAgBt7B,SAAUs2B,EAAqB,GAAID,EAAqB,IAAI,GACvIkB,EAAiCqD,EAAgB56B,SAAU66B,EAAgB76B,UAAU,GAErF23B,KAIJrnC,EAAMmrC,uBAAyB,SAAUC,EAAUC,GAC/C,IAAIr0B,EAAOxb,KACP8vC,EAAYF,GAAY,GAAKC,GAAU,EAGvCE,EAAapF,EAAsBv6B,KAAK,gBAC5C2/B,EAAWliC,MAAK,SAAUtK,KACjBusC,GAAa9vC,KAAK4tC,WAAagC,GAAY5vC,KAAK4tC,WAAaiC,IAC9DvrC,EAAEtE,MAAMqQ,YAAY,UAGnB/L,EAAEtE,MAAMqW,SAAS,YAClBmF,EAAKw0B,aAAe/9B,SAAS3N,EAAEtE,MAAMgP,SACrCy7B,EAAqBr6B,KAAK,oBAAsBpQ,KAAK4tC,UAAY,GAAK,KAAKv9B,YAAY,UACvFs6B,EAAsBv6B,KAAK,2BAA6BpQ,KAAK4tC,UAAY,GAAK,KAAKv9B,YAAY,cAGvG/L,EAAE,2BAA4BmmC,GAAsB//B,KAAK,UAAWqlC,EAAWE,OAAO,YAAYzsC,QAElGgB,EAAM0rC,+BAGV1rC,EAAM2rC,uBAAyB,SAAUP,EAAUC,GAC/C,IAEIE,EAAapF,EAAsBv6B,KAAK,gBAC5C2/B,EAAWliC,MAAK,SAAUtK,GAClBA,GAAKqsC,GAAYrsC,GAAKssC,IACtBvrC,EAAEtE,MAAMsQ,SAAS,UACjBm6B,EAAqBr6B,KAAK,oBAAsBpQ,KAAK4tC,UAAY,GAAK,KAAKt9B,SAAS,UACpFq6B,EAAsBv6B,KAAK,2BAA6BpQ,KAAK4tC,UAAY,GAAK,KAAKt9B,SAAS,cAGpGhM,EAAE,2BAA4BmmC,GAAsB//B,KAAK,UAAWqlC,EAAWE,OAAO,YAAYzsC,QAElGgB,EAAM0rC,+BAGV1rC,EAAM0rC,4BAA8B,WAChC,IAAIzD,EAAmB,EACvB9B,EAAsBv6B,KAAK,6BAA6BvC,MAAK,WACzD4+B,IAAqBzsC,KAAK6sC,QAAQ79B,SAEtC27B,EAAsB,GAAG/3B,MAAM5D,MAAQy9B,EAAmB,KAC1DhC,EAAqB,GAAG73B,MAAM5D,MAAQy9B,EAAmB,MAK7DjoC,EAAMqnC,+BAAiC,WACnCK,KAQG1nC,EAlkBG,CAmkBZQ,OAAQb;ACnkBV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAEtB6Q,EAAO,YAyQX,OAvQA9R,EAAEmlB,OAAO,qBAAsB,CAC3B2mB,UAAW,CACPC,KAAM,6EACNC,IAAK,kFACLC,KAAM,oFAEVC,aAAc,KACdC,YAAa,KACbC,eAAgB,KAEhBvrC,QAAS,CACLwrC,aAAa,EACbC,aAAa,EACbC,eAAgB,KAChB/K,MAAM,EACNgL,sBAAuB,GACvBC,OAAQ,KAEZ7mB,QAAS,WACL5lB,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QAEhC1E,KAAKmF,QAAQ2gC,MACb9lC,KAAKgxC,qBAGLhxC,KAAKmF,QAAQyrC,aAAe5wC,KAAK+N,QAAQ,GAAGkjC,cAC5CjxC,KAAKkxC,kBAELlxC,KAAKmF,QAAQwrC,aACb3wC,KAAKmxC,kBAGTnxC,KAAK+N,QAAQuC,SAAS,iBACtBtQ,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAKgO,WAETA,QAAS,aAGT0f,SAAU,WACN1tB,KAAK+N,QAAQsC,YAAY,gBAEzB/L,EAAEkE,UAAUC,IAAI,aAAc,gBAAiBzI,KAAKoxC,mBAEpD,IAAIr9B,EAAKxP,EAAGoL,OAAO,QACnBrL,EAAE,IAAMyP,GAAItL,IAAI,QAAS,GAAIzI,KAAKqxC,uBAClCrxC,KAAK+N,QAAQqC,KAAK,mBAAmBoD,SAErCxT,KAAK+N,QAAQH,WAAW,WACxB5N,KAAKywC,YAAYrgC,KAAK,cAAcoD,SAEhCxT,KAAKwwC,cACL5jC,aAAa5M,KAAKwwC,eAK1BU,gBAAiB,WACb,IAAI11B,EAAOxb,MAEPA,KAAKmF,QAAQmsC,eAA8C,IAA9BtxC,KAAKmF,QAAQmsC,eAC1CtxC,KAAK+N,QAAQH,WAAW,WAExB5N,KAAKmF,QAAQ0rC,iBACR7wC,KAAK+N,QAAQsI,SAAS,WAAarW,KAAK+N,QAAQ6D,QAAQ5R,KAAKmF,QAAQ0rC,gBAAgB7hC,QAAUhP,KAAK+N,QAAQ87B,cAAgB7pC,KAAKmF,QAAQ2rC,uBAC1I9wC,KAAK+N,QAAQ6D,QAAQ5R,KAAKmF,QAAQ0rC,gBAAgBloC,IAAI,aAAc,eAEzC4F,IAA3BvO,KAAKmF,QAAQosC,UACbvxC,KAAK+N,QAAQH,WAAW,CACpBu3B,gBAAiB,SAAUiE,GACvB,OAAOA,EAAOx3B,QAAQ4J,EAAKrW,QAAQ0rC,iBAEvCW,aAAc,SAAUpI,EAAQO,EAAO8H,GACnC,OAAOrI,EAAOh5B,KAAK,eAAiBoL,EAAKrW,QAAQ,aAAe,SAEpE4rC,OAAQ/wC,KAAKmF,QAAQ4rC,OACrBW,QAAS,CACLC,kBAAkB,KAI1B3xC,KAAK+N,QAAQH,WAAW,CACpBu3B,gBAAiB,SAAUiE,GACvB,OAAOA,EAAOx3B,QAAQ4J,EAAKrW,QAAQ0rC,iBAEvCE,OAAQ/wC,KAAKmF,QAAQ4rC,UAI7B/wC,KAAK+N,QAAQH,WAAW,CACpBD,IAAKrJ,EAAE,2BAA2BkJ,SAAWlJ,EAAE,wBAAwBkJ,SAAW,EAClFujC,OAAQ/wC,KAAKmF,QAAQ4rC,SAG7B/wC,KAAKmF,QAAQmsC,cAAe,EAC5BtxC,KAAK+N,QAAQrD,KAAK,qBAAqB,IAK3CymC,gBAAiB,WACb,IAAIS,EAAU5xC,KAAK+N,QAAQqC,KAAK,kBAC5ByhC,EAAgB7xC,KAAKmF,QAAQ2sC,eAAkB,YAAc,cAC7D/9B,EAAKxP,EAAGoL,OAAO,QACfoiC,EAAe,uCAAyCh+B,EAAK,iDAAmD89B,EAAe,mBAEnI7xC,KAAK+N,QAAQqC,KAAK,mBAAmBoD,SACrCo+B,EAAQt+B,OAAOy+B,GACfztC,EAAE,IAAMyP,GAAIrL,GAAG,QAAS,GAAI1I,KAAMA,KAAKqxC,wBAE3CA,sBAAuB,SAAUnlB,GAC7BA,EAAM/a,iBACN,IAAIqK,EAAO0Q,EAAMxnB,KAEb8W,EAAKzN,QAAQsI,SAAS,WACtBmF,EAAKzN,QAAQsC,YAAY,UACzB/L,EAAEtE,MAAMkU,SAAS,KAAK7D,YAAY,aAAaC,SAAS,eACxDvC,QAAQrJ,KAAK,kBAAkB,GAAOgG,KAAK,kBAAkB,KAE7D8Q,EAAKzN,QAAQuC,SAAS,UACtBhM,EAAEtE,MAAMkU,SAAS,KAAK7D,YAAY,eAAeC,SAAS,aAC1DkL,EAAKzN,QAAQrJ,KAAK,kBAAkB,GAAMgG,KAAK,kBAAkB,KAMzEsmC,mBAAoB,WAChB,IAAIx1B,EAAOxb,KACPmF,EAAU,CACVgZ,IAAKne,KAAKmF,QAAQ6sC,SAAW,GAC7BxmC,SAAUjH,EAAGuM,kBAAkB9Q,KAAKmF,QAAQ2M,gBAAkB,GAC9DmgC,OAAQ,GAEZjyC,KAAKywC,YAAczwC,KAAK+N,QAAQqC,KAAK,wBACjCpQ,KAAKywC,YAAYjtC,SACjBxD,KAAKywC,YAAY5iC,MAAK,SAAUtK,GAC5B,IAAI2uC,EAAK5tC,EAAEtE,MACiBuO,MAAxB2jC,EAAGxtC,KAAK,cACRS,EAAQgtC,UAAYD,EAAGxtC,KAAK,aAAa8M,WACzCrM,EAAQitC,WAAaF,EAAGxtC,KAAK,gBAE7BS,EAAQgtC,UAAY,OACpBhtC,EAAQitC,WAAaF,EAAGxtC,KAAK,eAEjCS,EAAQktC,UAAYH,EAAGxtC,KAAK,cAAgB,YAE5CwtC,EAAGxtC,KAAKS,GAASuF,KAAK,KAAMnG,EAAGoL,OAAO,SAEtC6L,EAAK82B,mBAAmBJ,EAAI/sC,EAAQgtC,cAGxC7tC,EAAEkE,UAAUE,GAAG,aAAc,gBAAiB1I,KAAMA,KAAKoxC,qBAGjEkB,mBAAoB,SAAUJ,EAAIC,GAI9B,OAHAA,EAAYA,EAAUznB,cACtBwnB,EAAG7hC,YAAY,gBAAgBD,KAAK,cAAcoD,SAE1C2+B,GACJ,IAAK,IACL,IAAK,MACL,IAAK,YACDD,EAAGx5B,QAAQ1Y,KAAKowC,UAAUE,KAAKhgC,SAAS,gBAAgBA,SAAS,MAAM5L,KAAK,SAAU,GACtF,MACJ,IAAK,IACL,IAAK,OACL,IAAK,aACDwtC,EAAGx5B,QAAQ1Y,KAAKowC,UAAUG,MAAMjgC,SAAS,gBAAgBA,SAAS,MAAM5L,KAAK,SAAU,GACvF,MACJ,QACIwtC,EAAGx5B,QAAQ1Y,KAAKowC,UAAUC,MAAM//B,SAAS,gBAAgBD,YAAY,MAAM3L,KAAK,UAAW,KAIvG0sC,kBAAmB,SAAUllB,GACzB,IAAI5nB,EAAE4nB,EAAM3J,QAAQ7O,GAAG,wBAAvB,CAGAwY,EAAM/a,iBAEN,IAAIqK,EAAO0Q,EAAMxnB,KAEbwtC,EAAK5tC,EAAEtE,MACP0E,EAAOwtC,EAAGxtC,OAEc,OAAxB8W,EAAKk1B,gBAA2Bl1B,EAAKk1B,iBAAmBwB,EAAGxnC,KAAK,OAChE8Q,EAAKi1B,YAAYzI,IAAIhoC,MAAM6N,MAAK,SAAUtK,GACtC,IAAIiB,EAAQF,EAAEtE,MACdwb,EAAK82B,mBAAmB9tC,EAAO,WAInCxE,KAAKwwC,cACL5jC,aAAa5M,KAAKwwC,cAEtBxwC,KAAKwwC,aAAe3jC,YAAW,WAG3B,OAFAqlC,EAAG9hC,KAAK,cAAcoD,SAEd9O,EAAKutC,QACT,KAAK,EACDC,EAAGx5B,QAAQ8C,EAAK40B,UAAUG,MAAMjgC,SAAS,MACzC4hC,EAAGxtC,KAAK,SAAU,GAClB,MACJ,KAAK,EACDwtC,EAAGx5B,QAAQ8C,EAAK40B,UAAUE,KAAKhgC,SAAS,MACxC4hC,EAAGxtC,KAAK,SAAU,GAClB,MACJ,QAC2B,GAAnBA,EAAK0tC,YAA+C,iBAApB1tC,EAAK0tC,YAA2B1tC,EAAK0tC,WAAW1nB,cAActQ,WAAW,QACzG83B,EAAGx5B,QAAQ8C,EAAK40B,UAAUE,KAAKhgC,SAAS,MACxC4hC,EAAGxtC,KAAK,SAAU,KAElBwtC,EAAGx5B,QAAQ8C,EAAK40B,UAAUG,MAAMjgC,SAAS,MACzC4hC,EAAGxtC,KAAK,SAAU,IAK9BA,EAAOwtC,EAAGxtC,OACVH,EAAGoM,oBAAoBuhC,EAAI,CAAE1nC,EAAG0nC,EAAI5gC,MAAO5M,EAAKutC,OAAQ9zB,IAAKzZ,EAAKyZ,IAAKk0B,UAAW3tC,EAAK2tC,UAAWtgC,SAAU,SAC7G,OAGPwgC,sBAAuB,WACfvyC,KAAKmF,QAAQ0rC,eACb7wC,KAAK+N,QAAQH,WAAW,WAExB5N,KAAK+N,QAAQH,WAAW,WACxB5N,KAAK+N,QAAQH,WAAW,CACpBD,IAAKrJ,EAAE,2BAA2BkJ,SAAWlJ,EAAE,wBAAwBkJ,SAAW,EAClFujC,OAAQ/wC,KAAKmF,QAAQ4rC,UAG7B/wC,KAAK+N,QAAQrD,KAAK,qBAAqB,MAO/ClG,EAAM8B,eAAiB,SAAU0N,EAAWyN,GACxC,IAAI7K,EAAO,GAUX,OATkB,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAUN,GAAG0C,GAAQpC,EAAYA,EAAU5D,KAAKgG,IAEvDQ,EAAOtS,EAAE8R,GAGN9R,EAAEsS,GAAM47B,YAAY/wB,IAQxBjd,EA9QG,CA+QZQ,OAAQb;AC/QV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAGtB6Q,EAAO,2BA+eX,OA5eA9R,EAAEmlB,OAAO,qBAAsB,CAC3B2mB,UAAW,CACPC,KAAM,6EACNC,IAAK,kFACLC,KAAM,oFAEVC,aAAc,KACdC,YAAa,KACbC,eAAgB,KAChBV,YAAa,EACbyC,gBAAiB,KACjBC,gBAAiB,KACjBvtC,QAAS,CACL4I,QAAS,GACTvJ,MAAO,KACPmuC,QAAS,GACTlP,QAAQ,EACRkN,aAAa,EACbmB,gBAAgB,EAChBc,aAAa,EACbC,wBAAwB,EACxBC,mBAAmB,EACnBnN,UAAU,EACVoN,YAAa,IACbC,YAAY,EACZhB,QAAS,GACTiB,aAAc,KACdhO,OAAQ,UACRz5B,SAAU,4BACVsG,eAAgB,GAEpBoY,QAAS,WASL,GARA5lB,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QAEpC1E,KAAK+N,QAAQuC,SAAS,gBAEY,OAA9BtQ,KAAKmF,QAAQ8tC,eACbjzC,KAAKmF,QAAQ8tC,aAAejzC,KAAK+N,QAAQqC,KAAK,YAAY5M,OAAS,GAG5C,OAAvBxD,KAAKmF,QAAQX,MAAgB,CAC7B,IAAIA,EAAQF,EAAEtE,KAAKmF,QAAQX,OACvBA,EAAMhB,OAAS,GACfxD,KAAKmF,QAAQX,MAAQA,EACrBxE,KAAKmF,QAAQ+tC,YAAc1uC,EAAMhB,OACjCxD,KAAKmF,QAAQwtC,QAAU,IAAMnuC,EAAM,GAAGuP,KAEtC/T,KAAKmF,QAAQX,MAAQ,KACrBxE,KAAKmF,QAAQ+tC,YAAc,EAC3BlzC,KAAKmF,QAAQguC,aAAe,WAGhCnzC,KAAKmF,QAAQX,MAAQxE,KAAK+N,QAG9B/N,KAAK+N,QAAQrJ,KAAK1E,KAAKmF,SAEnBnF,KAAKmF,QAAQwrC,aACb3wC,KAAKmxC,kBAGLnxC,KAAKmF,QAAQ6tC,YACbhzC,KAAKozC,iBAETpzC,KAAKqzC,kBAEDrzC,KAAKmF,QAAQs+B,QACbzjC,KAAKszC,kBAGLtzC,KAAKmF,QAAQwgC,UACb3lC,KAAKuzC,eAGLvzC,KAAKmF,QAAQytC,aACb5yC,KAAKwzC,mBAETxzC,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAKgO,WAETA,QAAS,aAET0f,SAAU,WACN,IAAIsJ,EAAYzyB,EAAGoL,OAAO,SAE1B3P,KAAK+N,QAAQsC,YAAY,gBACzBrQ,KAAK+N,QACAtF,IAAI,aAAc,gBAAiBzI,KAAKyzC,kBACxChrC,IAAI,SAAWuuB,EAAW,iBAAkBh3B,KAAK0zC,qBACjDlpB,WAAW,SAChBlmB,EAAEtE,KAAKmF,QAAQX,OACViE,IAAI,0BAA2B,GAAIzI,KAAK2zC,oBACxClrC,IAAI,0BAA2B,GAAIzI,KAAK2zC,oBACxCnpB,WAAW,SAECxqB,KAAK+N,QAAQqC,KAAK,SAAWpQ,KAAKmF,QAAQ8tC,aAAe,QAC/DplC,MAAK,WACZvJ,EAAEtE,MAAMsQ,SAAShM,EAAEtE,MAAM0E,KAAK,kBAGlCJ,EAAE,WAAYtE,KAAK+N,SAASyF,SAC5BlP,EAAE,WAAYtE,KAAKmF,QAAQX,OAAOgP,UAOtC4/B,eAAgB,WACZ,IAAI53B,EAAOxb,KACPmF,EAAU,CACVgZ,IAAKne,KAAKmF,QAAQ6sC,QAClBxmC,SAAUjH,EAAGuM,kBAAkB9Q,KAAKmF,QAAQ2M,gBAC5CmgC,OAAQ,GAGZjyC,KAAKywC,YAAczwC,KAAK+N,QAAQqC,KAAK,wBACjCpQ,KAAKywC,YAAYjtC,SACjBxD,KAAKywC,YAAY5iC,MAAK,SAAUtK,GAC5B,IAAI2uC,EAAK5tC,EAAEtE,MACiBuO,MAAxB2jC,EAAGxtC,KAAK,cACRS,EAAQgtC,UAAYD,EAAGxtC,KAAK,aAAa8M,WACzCrM,EAAQitC,WAAajtC,EAAQgtC,YAE7BhtC,EAAQgtC,UAAY,OACpBhtC,EAAQitC,WAAaF,EAAGxtC,KAAK,eAGjCS,EAAQktC,UAAYH,EAAGxtC,KAAK,cAAgB,YAE5CwtC,EAAGxtC,KAAKS,GACR+sC,EAAGxnC,KAAK,KAAMnG,EAAGoL,OAAO,SAExB6L,EAAK82B,mBAAmBJ,EAAI/sC,EAAQgtC,cAGxC7tC,EAAEtE,KAAK+N,SAASrF,GAAG,aAAc,gBAAiB1I,KAAMA,KAAKyzC,oBAGrEnB,mBAAoB,SAAUJ,EAAIC,GAM9B,OALAA,EAAYA,EAAUznB,cAEtBwnB,EAAG7hC,YAAY,gBACf6hC,EAAG9hC,KAAK,cAAcoD,SAEd2+B,GACJ,IAAK,IACL,IAAK,MACL,IAAK,YACDD,EAAGx5B,QAAQ1Y,KAAKowC,UAAUE,KAAKhgC,SAAS,gBAAgBA,SAAS,MACjE4hC,EAAGxtC,KAAK,SAAU,GAClB,MACJ,IAAK,IACL,IAAK,OACL,IAAK,aACDwtC,EAAGx5B,QAAQ1Y,KAAKowC,UAAUG,MAAMjgC,SAAS,gBAAgBA,SAAS,MAClE4hC,EAAGxtC,KAAK,SAAU,GAClB,MACJ,QACIwtC,EAAGx5B,QAAQ1Y,KAAKowC,UAAUC,MAAM//B,SAAS,gBAAgBD,YAAY,MACrE6hC,EAAGxtC,KAAK,UAAW,KAI/B+uC,iBAAkB,SAAUvnB,GACxBA,EAAM/a,iBACN,IAAIqK,EAAO0Q,EAAMxnB,KACbwtC,EAAK5tC,EAAEtE,MACP0E,EAAOwtC,EAAGxtC,OACVutC,EAASvtC,EAAKutC,OACdl+B,EAAKm+B,EAAGxnC,KAAK,MAEW,OAAxB8Q,EAAKk1B,gBAA2Bl1B,EAAKk1B,iBAAmB38B,GACxDyH,EAAKi1B,YAAYzI,IAAIhoC,MAAM6N,MAAK,SAAUtK,GACtCiY,EAAK82B,mBAAmBJ,EAAI,WAIhC12B,EAAKg1B,cACL5jC,aAAa4O,EAAKg1B,cAEtBh1B,EAAKg1B,aAAe3jC,YAAW,WAE3B,OADAqlC,EAAG9hC,KAAK,cAAcoD,SACdy+B,GACJ,KAAK,EACDC,EAAGx5B,QAAQ8C,EAAK40B,UAAUG,MAAMjgC,SAAS,MACzC4hC,EAAGxtC,KAAK,SAAU,GAClB,MACJ,KAAK,EACDwtC,EAAGx5B,QAAQ8C,EAAK40B,UAAUE,KAAKhgC,SAAS,MACxC4hC,EAAGxtC,KAAK,SAAU,GAClB,MACJ,KAAM,EACqB,GAAnBA,EAAK0tC,YAA+C,iBAApB1tC,EAAK0tC,YAA2B1tC,EAAK0tC,WAAW1nB,cAActQ,WAAW,QACzG83B,EAAGx5B,QAAQ8C,EAAK40B,UAAUE,KAAKhgC,SAAS,MACxC4hC,EAAGxtC,KAAK,SAAU,KAElBwtC,EAAGx5B,QAAQ8C,EAAK40B,UAAUG,MAAMjgC,SAAS,MACzC4hC,EAAGxtC,KAAK,SAAU,IAK9BA,EAAOwtC,EAAGxtC,OACVH,EAAGoM,oBAAoBuhC,EAAI,CAAE1nC,EAAG0nC,EAAI5gC,MAAO5M,EAAKutC,OAAQ9zB,IAAKzZ,EAAKyZ,IAAKk0B,UAAW3tC,EAAK2tC,UAAWtgC,SAAU,SAC7G,MAOPuhC,gBAAiB,WACb,IAAInuC,EAAU,CACVyuC,QAAS,IACTrW,KAAMv9B,KAAK6zC,YACXpQ,OAAQzjC,KAAK8zC,gBACbtO,OAAQ,uBAEZxlC,KAAK+N,QAAQqC,KAAK,SAAWpQ,KAAKmF,QAAQ8tC,aAAxB,kCAA0Ec,UAAU5uC,IAE1G0uC,YAAa,SAAU3nB,EAAOlK,GAC1B,IAAIxG,EAAOlX,EAAEtE,MAAM4R,QAAQ,SAASlN,KAAK,sBACrC+J,EAAOnK,EAAEtE,MACT4Q,EAAQ,CACR87B,IAAKj+B,EACL7G,OAAQ6G,EAAK0B,QAAQ,SACrBrC,MAAOW,EAAKX,QAAU,EACtBkB,MAAOgT,EAAGgyB,aAAahlC,MACvBilC,SAAUjyB,EAAGoX,KAAKpqB,MAClBklC,KAAOlyB,EAAGoX,KAAKpqB,MAAQgT,EAAGgyB,aAAahlC,OAE3C1K,EAAE,WAAYkX,EAAKzN,SAASqC,KAAK,UAAY3B,EAAK,GAAGm/B,UAAY,KAAKljC,KAAK,QAASkG,EAAMqjC,UAC1Fz4B,EAAKw0B,YAAcx0B,EAAKw0B,YAAep/B,EAAMsjC,KAE7C14B,EAAKzN,QAAQpF,IAAI,QAAS6S,EAAKw0B,aAC/Bx0B,EAAKrW,QAAQX,MAAMmE,IAAI,QAAS6S,EAAKw0B,aAErCzrC,EAAG4D,oBAEP2rC,gBAAiB,SAAU5nB,EAAOlK,GAC9B,IAAIxG,EAAOlX,EAAEtE,MAAM4R,QAAQ,SAASlN,KAAK,sBACzCJ,EAAE,WAAYkX,EAAKrW,QAAQX,OAAO4L,KAAK,UAAY4R,EAAGjU,QAAQ,GAAG6/B,UAAY,KAAKljC,KAAK,QAASsX,EAAGoX,KAAKpqB,OACpGwM,EAAKrW,QAAQX,OAASgX,EAAKzN,SAC3BzJ,EAAE,WAAYkX,EAAKzN,SAASqC,KAAK,UAAY4R,EAAGjU,QAAQ,GAAG6/B,UAAY,KAAKljC,KAAK,QAASsX,EAAGoX,KAAKpqB,QAQ1GwkC,iBAAkB,WACdxzC,KAAKyyC,gBAAkBzyC,KAAKmF,QAAQ2tC,kBAAoB,6BAA+B,kBACvF9yC,KAAK0yC,gBAAkB1yC,KAAKmF,QAAQX,MAAQF,EAAE,QAAStE,KAAKmF,QAAQX,OAASF,EAAE,QAAStE,KAAK+N,SAEzF/N,KAAKmF,QAAQ0tC,wBACb7yC,KAAK0yC,gBAAgBtiC,KAAK,YAAYE,SAAStQ,KAAKyyC,iBAGxDnuC,EAAEtE,KAAKmF,QAAQX,OACVkE,GAAG,0BAA2B,GAAI1I,KAAMA,KAAK2zC,oBAC7CjrC,GAAG,0BAA2B,GAAI1I,KAAMA,KAAK2zC,qBAEtDA,mBAAoB,SAAUznB,GAC1B,IAAI5nB,EAAE4nB,EAAM3J,QAAQ7O,GAAG,SAAvB,CAGA,IAAI8H,EAAO0Q,EAAMxnB,KACjB,GAAI8W,EAAKk3B,gBAAgBtiC,KAAK8b,EAAM3J,QAAQ/e,OAAQ,CAChD,IAAI0M,EAAK5L,EAAE4nB,EAAM3J,QAAQpS,QAAQ,MAEjC,GADAqL,EAAKk3B,gBAAgBtiC,KAAK,MAAMC,YAAYmL,EAAKi3B,kBAClB,IAA3BviC,EAAGxL,KAAK,eACR,OAGJwL,EAAGI,SAASkL,EAAKi3B,sBAEjBj3B,EAAKk3B,gBAAgBtiC,KAAK,MAAM43B,IAAI,WAAW33B,YAAYmL,EAAKi3B,mBAQxEc,aAAc,WACV,IAAIpuC,EAAUnF,KAAKmF,QACfigC,EAAYplC,KAAKm0C,WAIrBn0C,KAAKmF,QAAQX,MAAM4L,KAAK,SAASu1B,SAAS,CACtC9B,KAAM,IACN2B,OAAQxlC,KAAKo0C,QACbxpB,OAAQ,YACRypB,YAAa,SACbpP,OAAQjlC,KAAKmF,QAAQ8/B,OACrB1H,KATe,SAAUrR,GACzB,OAAOkZ,EAAUlZ,EAAO/mB,OAWhCivC,QAAS,SAAU5pC,EAAGwX,GAIlB,OAHAA,EAAG9N,WAAWrG,MAAK,WACfvJ,EAAEtE,MAAMgP,MAAM1K,EAAEtE,MAAMgP,YAEnBgT,GAEXmyB,WAAY,SAAUjoB,EAAO/mB,GACzB,IAAI00B,EAAQv1B,EAAE4nB,EAAM3J,QAChB9W,EAAS,GACbouB,EAAMzpB,KAAK,MAAMvC,MAAK,SAAUtK,GAC5B,IAAIkL,EAAOnK,EAAEtE,MACTs0C,EAAU7lC,EAAK2B,KAAK,gBACpB2D,EAAKtF,EAAK/J,KAAK,YAEnB4vC,EAAQ9jC,KAAKjN,EAAI,QAENgL,IAAPwF,IACAtI,GAAUsI,EAAK,QAGvBtI,EAASA,EAAOiF,QAAQ,MAAO,IAC/BmpB,EAAMnvB,KAAK,iBAAkBe,GAAQ/G,KAAK,YAAa+G,GACvDlH,EAAGoM,oBAAoBxL,EAAQ,sBAAsB4I,QAAS,CAAEvD,EAAGqvB,EAAOvoB,MAAO7F,EAAQ0S,IAAKhZ,EAAQ4tC,cAAgB,EAAGhhC,UAAW,KAOxIo/B,gBAAiB,WACb,IAAIS,EAAU5xC,KAAK+N,QAAQqC,KAAK,iCAC5ByhC,EAAgB7xC,KAAKmF,QAAQ2sC,eAAkB,YAAc,cACjExtC,EAAE,kBAAmBtE,KAAK+N,SAASyF,SAEnC,IAAIu+B,EAAe,gGAAkGF,EAAe,mBACpID,EAAQt+B,OAAOy+B,GAEf,IAAI/a,EAAYzyB,EAAGoL,OAAO,SAEtB3P,KAAKmF,QAAQ2sC,gBACb9xC,KAAKmF,QAAQX,MAAM8L,SAAS,UAGhChM,EAAEtE,KAAK+N,SAASrF,GAAG,SAAWsuB,EAAW,iBAAkBh3B,KAAMA,KAAK0zC,sBAE1EA,oBAAqB,SAAUxnB,GAC3B,IAAIzd,EAAOnK,EAAEtE,MACTwb,EAAO0Q,EAAMxnB,KAEb8W,EAAKrW,QAAQX,MAAM6R,SAAS,WAC5BmF,EAAKrW,QAAQX,MAAM6L,YAAY,UAC/B5B,EAAKyF,SAAS,KAAK7D,YAAY,aAAaC,SAAS,iBAErDkL,EAAKrW,QAAQX,MAAM8L,SAAS,UAC5B7B,EAAKyF,SAAS,KAAK7D,YAAY,eAAeC,SAAS,eAQ/D+iC,gBAAiB,WACb,IAAItD,EAAa/vC,KAAK+N,QAAQqC,KAAK,SAAWpQ,KAAKmF,QAAQ8tC,aAAe,QACtEsB,EAAe,aACnBxE,EAAWliC,MAAK,WACZ,IAAIqkC,EAAK5tC,EAAEtE,MACXkyC,EAAGxtC,KAAK,eAAgBwtC,EAAGxnC,KAAK,UAAY,IAAIoQ,MAAM,iBAAmB,IAAI,IAC7E,IAAI9L,EAAQ/L,SAASivC,EAAGxnC,KAAK,UAAY,IAAIoQ,MAAM,iBAAmB,IAAIM,KAAK,KAAK1K,QAAQ,KAAM,KAClG6jC,GAAgB,eAAiBvlC,EAAQ,OACzChP,KAAKgwC,aAAgBkC,EAAG77B,SAAS,UAAa,EAAIrH,EAGlDkjC,EAAG7hC,aAAY,SAAUvC,EAAOnF,GAC5B,OAAQA,EAAImS,MAAM,iBAAmB,IAAIM,KAAK,WAGtDm5B,GAAgB,cAChBjwC,EAAE,WAAYtE,KAAK+N,SAASyF,SAC5BxT,KAAK+N,QAAQpF,IAAI,QAAS3I,KAAKgwC,aAAat3B,QAAQ67B,GACjDv0C,KAAKmF,QAAQX,QACZF,EAAE,WAAYtE,KAAKmF,QAAQX,OAAOgP,SAClCxT,KAAKmF,QAAQX,MAAMmE,IAAI,QAAS3I,KAAKgwC,aAAat3B,QAAQ67B,GAC1Dv0C,KAAKmF,QAAQX,MAAM6L,YAAY,WAEnC9L,EAAG4D,oBAQPqsC,YAAa,SAAU5E,EAAUC,GAC7B,IAAIr0B,EAAOxb,KACP8vC,EAAYF,GAAY,GAAKC,GAAU,EAC3C7vC,KAAKgwC,YAAc,EAGnB,IAAID,EAAa/vC,KAAK+N,QAAQqC,KAAK,SAAWpQ,KAAKmF,QAAQ8tC,aAAe,QAC1ElD,EAAWliC,MAAK,SAAUtK,KACjBusC,GAAa9vC,KAAK4tC,WAAagC,GAAY5vC,KAAK4tC,WAAaiC,IAC9DvrC,EAAEtE,MAAMqQ,YAAY,UAGnB/L,EAAEtE,MAAMqW,SAAS,YAClBmF,EAAKw0B,aAAe/9B,SAAS3N,EAAEtE,MAAMgP,SACrCwM,EAAKrW,QAAQX,MAAM4L,KAAK,oBAAsBpQ,KAAK4tC,UAAY,GAAK,KAAKv9B,YAAY,UACrFmL,EAAKzN,QAAQqC,KAAK,2BAA6BpQ,KAAK4tC,UAAY,GAAK,KAAKv9B,YAAY,cAG9F/L,EAAE,2BAA4BtE,KAAKmF,QAAQX,OAAOkG,KAAK,UAAWqlC,EAAWE,OAAO,YAAYzsC,QAEhGxD,KAAK+N,QAAQpF,IAAI,QAAS3I,KAAKgwC,aAC/BhwC,KAAKmF,QAAQX,MAAMmE,IAAI,QAAS3I,KAAKgwC,aACrCzrC,EAAG4D,oBAGPssC,YAAa,SAAU7E,EAAUC,GAC7B,IAAIr0B,EAAOxb,KACXA,KAAKgwC,YAAc,EAEnB,IAAID,EAAa/vC,KAAK+N,QAAQqC,KAAK,SAAWpQ,KAAKmF,QAAQ8tC,aAAe,QAC1ElD,EAAWliC,MAAK,SAAUtK,GAClBA,GAAKqsC,GAAYrsC,GAAKssC,GACtBvrC,EAAEtE,MAAMsQ,SAAS,UACjBkL,EAAKrW,QAAQX,MAAM4L,KAAK,oBAAsBpQ,KAAK4tC,UAAY,GAAK,KAAKt9B,SAAS,UAClFkL,EAAKzN,QAAQqC,KAAK,2BAA6BpQ,KAAK4tC,UAAY,GAAK,KAAKt9B,SAAS,WAEnFkL,EAAKw0B,aAAe/9B,SAAS3N,EAAEtE,MAAMgP,YAG7C1K,EAAE,2BAA4BtE,KAAKmF,QAAQX,OAAOkG,KAAK,UAAWqlC,EAAWE,OAAO,YAAYzsC,QAEhGxD,KAAK+N,QAAQpF,IAAI,QAAS3I,KAAKgwC,aAC/BhwC,KAAKmF,QAAQX,MAAMmE,IAAI,QAAS3I,KAAKgwC,aACrCzrC,EAAG4D,oBAEPusC,gBAAiB,WACb,IAAIl5B,EAAOxb,KACXA,KAAKgwC,YAAc,EACFhwC,KAAK+N,QAAQqC,KAAK,SAAWpQ,KAAKmF,QAAQ8tC,aAAe,QAE/DplC,MAAK,WACZ,IAAIqkC,EAAK5tC,EAAEtE,MACXwb,EAAKw0B,aAAgBkC,EAAG77B,SAAS,UAAa,EAAI67B,EAAGljC,WAGzDhP,KAAK+N,QAAQpF,IAAI,QAAS3I,KAAKgwC,aAC/BhwC,KAAKmF,QAAQX,MAAMmE,IAAI,QAAS3I,KAAKgwC,cAEzC2E,aAAc,WACV,OAAO30C,KAAK+N,QAAQrJ,UAI5BF,EAAM+B,eAAiB,SAAUyN,EAAWyN,GACxC,IAAI7K,EAAqB,OAAd5C,GAAsB1P,EAAE0P,GAAWN,GAAG0C,GAAQ9R,EAAE0P,GAAa1P,EAAE8R,EAAMpC,GAChF4C,EAAKq5B,QAAO,SAAC1sC,EAAGiY,GAAI,OAAKlX,EAAEkX,GAAMnF,SAAS,mBAAiBu+B,YAAY,WACvEh+B,EAAKg+B,YAAYnzB,IAIrBjd,EAAMmwC,aAAe,WACjB,OAAOrwC,EAAE8R,GAAMw+B,YAAY,iBAM/BpwC,EAAMkwC,gBAAkB,WACpBpwC,EAAE8R,GAAMw+B,YAAY,oBAMxBpwC,EAAMgwC,YAAc,SAAU5E,EAAUC,GACpCvrC,EAAE8R,GAAMw+B,YAAY,cAAehF,EAAUC,IAMjDrrC,EAAMiwC,YAAc,SAAU7E,EAAUC,GACpCvrC,EAAE8R,GAAMw+B,YAAY,cAAehF,EAAUC,IAG1CrrC,EArfG,CAsfZQ,OAAQb;ACtfV,aAWAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAWtByxB,EAAYzyB,EAAGoL,OAAO,UAGtBkqB,EAAQ,KACRyN,EAAW,GACXC,EAAY,EAEZ/P,EAAM,EACNgQ,EAAc,EAGdC,EAAW,KAEX/sB,EACM,GADNA,EAEI,GAFJA,EAGO,GAHPA,EAIM,GAJNA,EAKK,EAUT,SAASm6B,IACLhb,EAAMpxB,IAAI,WAAauuB,GACvB6C,EAAMnxB,GAAG,WAAasuB,GAAW,SAAU9K,GACvC,IAAIqc,EACA3a,EAAU1B,EAAM0B,SAAW1B,EAAMyB,MAErC,OAAIzB,EAAM6T,UAAYnS,GAAWlT,IAC7B6tB,EAAYf,EAAc,IA7B5B,GA+ByBe,GAAY/Q,GAC/BgQ,EAAce,EACduM,KAEO,IAIXlnB,GAAWlT,IACX6tB,EAAYf,EAAcD,IAxC5B,GA0CyBgB,EAAW/Q,IAC9BgQ,EAAce,EACduM,KAIJlnB,GAAWlT,IACX6tB,EAAYf,EAAcD,IAjD5B,GAmDyBgB,GAAY/Q,IAC/BgQ,EAAce,EACduM,MAIJlnB,GAAWlT,GAAakT,GAAWlT,KACnC6tB,EAAYf,EAAc,IA1D5B,GA4DyBe,EAAW/Q,GAQlC5J,GAAWlT,IACX6tB,EAAYf,EAAc,IArE5B,GAuEyBe,GAAY/Q,GAV/BgQ,EAAce,EACduM,KAEO,QAIf,MAYJjb,EAAMpxB,IAAI,SAAWuuB,GACrB6C,EAAMnxB,GAAG,SAAWsuB,EAAW,MAAM,SAAU9K,GAI3C,IAHA,IACInY,EADOzP,EAAEtE,MACC0K,KAAK,MAEVnH,EAAI,EAAGyyB,EAAMsR,EAAS9jC,OAAQD,EAAIyyB,EAAKzyB,IAAK,CAEjD,GADQ+jC,EAAS/jC,GACXwQ,KAAOA,EAAI,CACbyzB,EAAcjkC,EACduxC,IACA,WAKZxwC,EAAEkE,UAAUE,GAAG,wBAAwB,SAAUwjB,IAChC5nB,EAAE4nB,EAAM3J,QAETpS,QAvGN,SAuGuB3M,OAAS,IAqF1Cq2B,EAAMzpB,KAAK,MAAMC,YAAY,8BACZ,OAAbo3B,GAAmBnjC,EAAEmjC,GAAUvzB,WAAW7D,YAAY,UAjC9D,SAASykC,IACL,GAAwB,IAApBxN,EAAS9jC,OAAb,CAEiB,OAAbikC,GAAmBnjC,EAAEmjC,GAAUvzB,WAAW7D,YAAY,MAG1D/L,EAAE,gCAAgC+L,YAAY,MAE1Ci3B,EAAS9jC,QAAUgkC,IAAaA,EAAc,GAGzB,IADTljC,EAAE,IAAMgjC,EAASE,GAAazzB,IAChCvQ,SAAcgkC,EAAc,GAE1C,IAAI/4B,EAAOnK,EAAE,IAAMgjC,EAASE,GAAazzB,IAMzC,GALA8lB,EAAMzpB,KAAK,MAAMC,YAAY,8BAC7B5B,EAAK7G,OAAO,MAAM0I,SAAS,8BAE3Bm3B,EAAW,IAAMH,EAASE,GAAazzB,IAEnCtF,EAAK4H,SAAS,eAElB5H,EAAKyF,WAAW5D,SAAS,MACrB7B,EAAKyF,SAAS,SAAS1Q,OAAS,GAAG,CACnC,IAAIgH,EAAIiE,EAAKyF,SAAS,SAASggB,QAC/B,GAAI1pB,EAAEkJ,GAAG,UAAW,OACpBlJ,EAAE+J,UA2BV,OAVA/P,EAAMuwC,YAAc,SAAU/gC,EAAW8zB,GACpB,OAAbL,GAAmBnjC,EAAEmjC,GAAUvzB,WAAW7D,YAAY,MA1F9D,SAAqB2D,EAAW8zB,GAS5B,GAPkB,OAAd9zB,EACyB,iBAAdA,IAAwB6lB,EAAQv1B,EAAE0P,IAE7C6lB,EAAQv1B,EAAE0P,GAIO,IAAjB6lB,EAAMr2B,OAAV,CAEA8jC,EAAW,GACX,IACIS,EADSlO,EAAMzpB,KAAK,MAAM43B,IAAI,cAAcA,IAAI,WAAWA,IAAI,eACzC53B,KAAK,MAAM43B,IAAI,gBAAgBA,IAAI,cAGjC,IAAxBD,EAAavkC,SAEjBukC,EAAal6B,MAAK,WACd,IAAIrD,EAAIlG,EAAEtE,MACN+T,EAAKxP,EAAGoL,OAAO,MACnBnF,EAAEE,KAAK,KAAMqJ,GACb,IAAIk0B,EAAO,CACPl0B,GAAIA,EACJk0B,KAAMz9B,GAEV88B,EAAS3jC,KAAKskC,MAGlBzQ,EAAM8P,EAAS9jC,OAMG,KAHlB+jC,EAAY1N,EAAMzpB,KAAK,mBAAmB8D,SAAS,MAAM8zB,IAAI,gBAAgBA,IAAI,cAAcxkC,UAG1E+jC,EAAY1N,EAAMzpB,KAAK,mBAAmB8D,SAAS,MAAM8zB,IAAI,gBAAgBA,IAAI,cAAcxkC,QAGlG,OAAdskC,GAAoC,KAAdA,IAAkBN,EAAcM,GAE1DgN,IAEAD,MAiDAE,CAAY/gC,EAAW8zB,IAQpBtjC,EA/NG,CAgOZQ,OAAQb;AC3OV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAQtB6Q,EAAO,mBAEPsgB,GAAe,EACfse,GAAW,EAGXvzB,EAAW,CACX9P,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GAEPiZ,QAAS,GACTiN,IAAK,IACLxf,IAAK,EACLxU,OAAQ,EACRyxC,QAAQ,EACR1gC,OAAO,EACP2gC,SAAS,EACTprB,QAAQ,EACRgB,aAAa,EACbqqB,YAAa,QAIbvnB,EACO,GADPA,EAEW,EAFXA,EAGK,GAHLA,EAIK,EAoFT,SAASwnB,EAAQ7gB,EAAWvgB,GACxB,IA1EIgjB,EA0EApgB,EAAO,GAEO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAGTme,IAAcmC,IArFdM,EAAYzyB,EAAGoL,OAAO,SAG1BrL,EAAEkE,UAAUC,IAAI,2BAA4B2N,GACvC1N,GAAG,SAAWsuB,EAAW5gB,EAAMisB,GAC/B35B,GAAG,QAAUsuB,EAAW5gB,EAAMi/B,GAC9B3sC,GAAG,SAAWsuB,EAAW5gB,GAAM,SAAU5L,IAClCA,EAAIlG,EAAEtE,OACG0E,OAGJwwC,UACDl1C,KAAKs1C,eACL1oC,aAAa5M,KAAKs1C,cAClBt1C,KAAKs1C,kBAAe/mC,GAGxBvO,KAAKs1C,aAAezoC,YAAW,WAC3B0oC,EAAS/qC,KA1DjB,SA8DH9B,GAAG,SAAWsuB,EAAW5gB,GAAM,SAAU8V,GACtC,IAAI1hB,EAAIlG,EAAEtE,MACN0E,EAAO8F,EAAE9F,OAEb,GAAIzB,OAAOipB,EAAMyB,SAAWC,GAAe3qB,OAAOipB,EAAM0B,WAAaA,EAGjE,OAFApjB,EAAE5F,IAAIF,EAAK6lB,cACXhmB,EAAG8P,cAAc7J,GAAG,GAKpB9F,EAAKwwC,UACDl1C,KAAKs1C,eACL1oC,aAAa5M,KAAKs1C,cAClBt1C,KAAKs1C,kBAAe/mC,GAGxBvO,KAAKs1C,aAAezoC,YAAW,WAC3B0oC,EAAS/qC,KAhFjB,SAoFH9B,GAAG,WAAasuB,EAAW5gB,GAAM,SAAU8V,GAExC,OAAIjpB,OAAOipB,EAAMyB,SAAWC,GAAqB3qB,OAAOipB,EAAM0B,WAAaA,GAAqB3qB,OAAOipB,EAAMyB,SAAWC,GAAe3qB,OAAOipB,EAAM0B,WAAaA,KAI7JtpB,EAAEtE,MAAM4E,MAAMpB,OAASP,OAAOqB,EAAEtE,MAAM0E,KAAK,eAA/C,KAIHgE,GAAG,YAAcsuB,EAAW5gB,GAAM,SAAU8V,GACzC,IAAI1hB,EAAIlG,EAAEtE,MACN0E,EAAO8F,EAAE9F,OAEb,GAAIzB,OAAOipB,EAAMyB,SAAWC,GAAiB3qB,OAAOipB,EAAM0B,WAAaA,EAQnE,OAPAonB,GAAW,EACXxqC,EAAEk3B,YAGEh9B,EAAKuwC,QAAUvwC,EAAKywC,YAAYt6B,QAAQ,UAAY,GACpDrQ,EAAE+J,YAuBdmiB,GAAe,GAGC,IAAhB9f,EAAKpT,QAIToT,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAETrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAC1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAC/BsJ,EAAK/J,KAAKS,GAENA,EAAQ2lB,cACRrc,EAAK7J,IAAI,IACTO,EAAQ2lB,aAAc,EACtBrc,EAAK/J,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,IAGzDvF,EAAQ2kB,QACRrb,EAAK/D,KAAK,YAAY,MAMlC,SAAS23B,IACL,IAAI73B,EAAIlG,EAAEtE,MAENwI,SAASmE,OACTnE,SAASmE,QAAS,GAGtBnC,EAAE9F,KAAK,UAAW8F,EAAE5F,OACpBowC,GAAW,GAEa,IAApBxqC,EAAE9F,KAAK,UACP8F,EAAEG,UAKV,SAAS4qC,EAAS/qC,GACd,GAAIA,EAAE5F,QAAU4F,EAAE9F,KAAK,WAAvB,CAIA8F,EAAE9F,KAAK,UAAW8F,GAClB,IAAI5F,EAAM4F,EAAE5F,MACRA,EAAIpB,QAAUgH,EAAE9F,KAAK,SACrBE,EAAM4F,EAAE9F,KAAK,WACb8F,EAAE5F,IAAIA,IAGV4F,EAAE9F,KAAK,QAASE,GAAKF,KAAK,SAAUE,EAAIpB,QAExCy1B,EAAYzuB,IAIhB,SAAS6qC,IACL,IAAI7qC,EAAIlG,EAAEtE,MAEV,GAAKwK,EAAE9F,KAAK,gBAAkB8F,EAAE9F,KAAK,eAAemW,QAAQ,UAAY,IAAMm6B,IAAsD,GAA1CxqC,EAAE9F,KAAK,eAAemW,QAAQ,SAAmBrQ,EAAE9F,KAAK,gBAAkB8F,EAAE9F,KAAK,eAAemW,QAAQ,QAAU,GAAKm6B,EAC7MxqC,EAAE9F,KAAK,UAAW8F,EAAE5F,YAIxB,IAAI4F,EAAE9F,KAAK,aAEA8F,EAAE5F,QAAU4F,EAAE9F,KAAK,YAAeswC,GAAtC,CAIPxqC,EAAE9F,KAAK,UAAW8F,GAClB,IAAI5F,EAAM4F,EAAE5F,MAERA,EAAIpB,OAASgH,EAAE9F,KAAK,SACpBE,EAAM4F,EAAE9F,KAAK,WACb8F,EAAE5F,IAAIA,IAGV4F,EAAE9F,KAAK,QAASE,GAAKF,KAAK,SAAUE,EAAIpB,QAEpCgH,EAAE9F,KAAK,WACP8F,EAAE5F,IAAI,IAEVq0B,EAAYzuB,IAIhB,SAASyuB,EAAYzuB,GACjB,IAAI9F,EAAO8F,EAAE9F,OAEbH,EAAGoM,oBAAoBnG,EAAG,CAAEA,EAAG9F,EAAKqJ,QAASuD,MAAO5M,EAAK4M,MAAOiZ,QAAS7lB,EAAK6lB,QAASpM,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,SAAUvO,OAAQkB,EAAKlB,QAAU,IACtJgH,EAAE9F,KAAK,UAAWA,EAAK4M,OAmB3B,OATA9M,EAAMiC,QAAU,SAAU8tB,EAAWvgB,GACjCohC,EAAQ7gB,EAAWvgB,IAQhBxP,EA9PG,CA+PZQ,OAAQb;AC/PV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAGtB6Q,EAAO,uBACPwN,GAAc,EAuMlB,OArMAtf,EAAEmlB,OAAO,kBAAmB,CACxBtkB,QAAS,CACLwM,WAAW,EACXI,UAAW,EACXD,eAAgB,EAChBqM,IAAK,GACL7M,MAAO,GACPwY,QAAQ,EACRS,QAAS,GACTirB,gBAAgB,EAChBC,UAAU,EACV3qB,aAAa,EACbmqB,QAAQ,EACRE,YAAa,OACbO,eAAe,GAEnBxrB,QAAS,WAAY,IAAA0e,EAAA5oC,KACjBsE,EAAEe,OAAOrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QAE/Bkf,IACDtf,EAAEkE,UACGE,GAAG,QAAS0N,EAAMpW,KAAKg9B,cACvBt0B,GAAG,OAAQ0N,EAAMpW,KAAKoqB,aACtB1hB,GAAG,gBAAiB0N,EAAMpW,KAAKozB,gBAC/B1qB,GAAG,QAAS0N,EAAMpW,KAAKqqB,cAC5BzG,GAAc,GAGlBrf,EAAGkN,sBAAsBzR,KAAK+N,QAAS/N,KAAKmF,SAExCnF,KAAKmF,QAAQ2lB,cACb9qB,KAAKmF,QAAQ2lB,aAAc,EAC3B9qB,KAAK+N,QAAQnJ,IAAI,IAAIF,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,IAGzE1K,KAAKmF,QAAQ2kB,QACb9pB,KAAK+N,QAAQrD,KAAK,YAAY,GAG9B1K,KAAKmF,QAAQswC,UACbz1C,KAAK+N,QAAQpF,IAAI,CACbgtC,aAAc,OACdlS,OAAQ,SAIZzjC,KAAKmF,QAAQswC,UAAYz1C,KAAKmF,QAAQqwC,gBACtCngC,QAAQu2B,SAAQ,WACZ,IAAIx0B,EAAewxB,EAAK76B,QAAQ4O,KAAK,gBACjCvF,EAAe,GACf/B,QAAQC,QAAO,WACXszB,EAAK76B,QAAQpF,IAAI,SAAUyO,EAAe,SAMtDpX,KAAKmF,QAAQuwC,cACb11C,KAAK+N,QAAQpF,IAAI,SAAU,QAE3B3I,KAAK+N,QAAQpF,IAAI,SAAU,QAG/B3I,KAAK+N,QAAQuC,SAAS,YACtBtQ,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAK+N,QAAQrJ,KAAKS,GAClBnF,KAAKgO,WAETA,QAAS,WACLhO,KAAK+N,QAAQrD,KAAK,CACd6iB,WAAYvtB,KAAKmF,QAAQgZ,IACzBqP,cAAextB,KAAKmF,QAAQ2kB,SAEhC9pB,KAAK+N,QAAQrD,KAAK,WAAY1K,KAAKmF,QAAQ2kB,SAE/C2D,OAAQ,SAAUjS,GACdxb,KAAK+N,QAAUyN,GAEnBkS,SAAU,aAGVsP,aAAc,SAAU9Q,GACpB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,kBAC9C8W,EAAKo6B,WAAY,EAEbp6B,EAAKrW,QAAQ8vC,QACbz5B,EAAKzN,QAAQpF,IAAI,SAAU,QAE3BH,SAASmE,OACTnE,SAASmE,QAAS,EAIlB6O,EAAKrW,QAAQ2kB,QAAUtO,EAAKrW,QAAQgwC,YAAYt6B,QAAQ,UAAY,IAIxEW,EAAKrW,QAAQolB,QAAU/O,EAAKzN,QAAQnJ,QAExCwlB,YAAa,SAAU8B,GACnB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,kBAE1C8W,EAAKrW,QAAQ2kB,QAIbtO,EAAKrW,QAAQgwC,YAAYt6B,QAAQ,UAAY,IAAMW,EAAKo6B,YAI5Dp6B,EAAKrW,QAAQmM,MAAQkK,EAAKzN,QAAQnJ,MAAM6L,OAExC+K,EAAKsY,aAAa5H,KAEtBkH,eAAgB,SAAUlH,GACtB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,kBAE9C,GAAI8W,EAAKrW,QAAQswC,SAAU,CACvB,IAAIvtC,EAASsT,EAAKzN,QAAQ4O,KAAK,gBAAkBnB,EAAKzN,QAAQ4O,KAAK,gBACnEnB,EAAKzN,QAAQpF,IAAI,SAAU,QACtBA,IAAI,SAAU6S,EAAKzN,QAAQ4O,KAAK,gBAAkBzU,GAGtC,KAAhBgkB,EAAMyB,OAAkC,KAAlBzB,EAAM0B,SAAoB1B,EAAM6T,UACnDvkB,EAAKrW,QAAQgwC,YAAYt6B,QAAQ,UAAY,IAC7CqR,EAAM/a,iBACNqK,EAAKo6B,WAAY,EACjBp6B,EAAKzN,QAAQ2zB,OAGTlmB,EAAKrW,QAAQ8vC,QACbz5B,EAAKzN,QAAQwG,UAK7B8V,aAAc,SAAU6B,GACpB,IAAI1Q,EAAOlX,EAAE4nB,EAAM3J,QAAQ3Q,QAAQwE,GAAM1R,KAAK,kBAE1B,KAAhBwnB,EAAMyB,OAAkC,KAAlBzB,EAAM0B,UAC5BpS,EAAKzN,QAAQnJ,IAAI4W,EAAKrW,QAAQolB,SAC9BhmB,EAAG8P,cAAcmH,EAAKzN,SAAS,GAC/ByN,EAAK4X,eAAelH,KAI5B4H,aAAc,WACN9zB,KAAKmF,QAAQmM,QAAUtR,KAAKmF,QAAQolB,UAIxChmB,EAAGoM,oBAAoB3Q,KAAK+N,QAAS,CACjCvD,EAAGxK,KAAK+N,QACRuD,MAAOtR,KAAKmF,QAAQmM,MACpB6M,IAAKne,KAAKmF,QAAQgZ,IAClBpM,SAAU/R,KAAKmF,QAAQ4M,WAGvB/R,KAAKmF,QAAQ8vC,SACbj1C,KAAKmF,QAAQmM,MAAQ,GACrBtR,KAAK+N,QAAQnJ,IAAI,KAGrB5E,KAAKmF,QAAQolB,QAAUvqB,KAAKmF,QAAQmM,MACpCtR,KAAK+N,QAAQrJ,KAAK,UAAW1E,KAAKmF,QAAQmM,WAWlD9M,EAAMkC,YAAc,SAAU6tB,EAAWvgB,GACrC,IAAI4C,EAAO,GACO,OAAd5C,GACyB,iBAAdA,IACPA,EAAY1P,EAAE0P,IAElB4C,EAAO5C,EAAU5D,KAAKgG,IAEtBQ,EAAOtS,EAAE8R,GAGb9R,EAAEsS,GAAMi/B,YAQLrxC,EA9MG,CA+MZQ,OAAQb;AC/MV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAMtB6Q,EAAO,uBACPqL,EAAW,CACX9P,WAAW,GAEXmkC,GAAc,EA8ClB,OAJAtxC,EAAMmC,cAAgB,SAAUqN,IAxChC,SAAuBA,GACnB1P,EAAE8R,EAAMpC,GAAWnG,MAAK,SAAUtK,EAAGiH,GACjC,IAAIiE,EAAOnK,EAAEkG,GACTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAC1CH,EAAGkN,sBAAsBhD,EAAMtJ,GAC/BsJ,EAAK/J,KAAK,CAAE6lB,QAAS9b,EAAK7J,WAG9BN,EAAE8R,EAAMpC,GAAW+hC,WAAW,CAC1BC,WAAY,SACZC,UAAU,EACV9e,OAAQ,SAAU+e,GACd,GAAIJ,EACAA,GAAc,MADlB,CAIA,IAAIC,EAAa/1C,KAAK+1C,aACtB,GAAIG,EAAM,CACNl2C,KAAK0E,KAAK,CAAE4M,MAAO4kC,EAAM3rB,QAASwrB,EAAW71B,OAAOg2B,KACpD,IAAIxxC,EAAO1E,KAAK0E,OAChBH,EAAGoM,oBAAoB3Q,KAAM,CAAEwK,EAAGxK,KAAMsR,MAAO5M,EAAK4M,MAAOiZ,QAAS7lB,EAAK6lB,QAASpM,IAAKzZ,EAAKyZ,IAAKpM,SAAUrN,EAAKqN,SAAUvO,OAAQkB,EAAKlB,QAAU,SAGjJsyC,GAAc,EACdC,EAAW/7B,QAAQha,KAAK0E,KAAK,YACD,IAAxB1E,KAAK0E,KAAK,YACV1E,KAAK4E,IAAI,IAEbkxC,GAAc,MAa1BnvC,CAAcqN,IAGXxP,EA3DG,CA4DZQ,OAAQb;AC5DV,aAWAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAKI4xC,EACAC,EACAC,EAPA7xC,EAAQD,EAAGgB,SAAW,GA6B1B,SAAS+wC,EAAQC,GACb,IAAIz1C,EAAQyD,EAAGoZ,WACfy4B,EAAW7xC,EAAGiyC,kBAkDlB,SAAuBD,GAGnB,IAFA,IAAIE,EAAW,GAEN52C,EAAI,EAAGA,EAAI02C,EAAS/yC,OAAQ3D,IACjC42C,EAAS9yC,KAAK,yCAA2C9D,EAAI,OAASA,EAAI,GAAK,KAAO02C,EAAS12C,GAAG8S,MAAQ,UAG9GrO,EAtFiB,cAsFCkM,KAAKimC,EAASr7B,KAAK,KAErC9W,EAxFiB,cAwFC8L,KAAK,KAAK1H,GAAG,SAAS,SAAUwjB,GAC9CA,EAAM/a,iBACN,IAAIulC,GAAQpyC,EAAEtE,MAAM0E,KAAK,QACzBJ,EA1Fa,cA0FK4O,aAAa,QAC/ByjC,UAAUC,UAAUP,EAAMK,MA9D9BG,CAAcN,GAEd,IAAK,IAAI12C,EAAI,EAAGA,EAAI02C,EAAS/yC,OAAS,EAAG3D,IACrC02C,EAAS12C,GAAGi3C,MAAQC,EACpBR,EAAS12C,GAAGm3C,eAAgB,EAC5BT,EAAS12C,GAAGo3C,SAAWn2C,EAAe,QAG1Cu1C,EAAO,CACHtiC,GAAI,iBACJmjC,gBAAgB,EAChBC,cAAc,EACdC,QAASC,EACTC,MAAOC,EACPC,MAAOjB,EACPkB,KAAM,CACFC,QAAS52C,EAAY,KACrB62C,QAAS72C,EAAY,KACrB82C,QAAS92C,EAAY,OAO7BwD,EArDkB,eAqDCmE,MAAMC,GAAG,SAAS,WACjCpE,EAvDa,cAuDK4O,aAAa,QAE/ByjC,UAAUC,UAAUP,EAAM,GAE1BD,EAASyB,SAAW,EACpBzB,EAAS0B,eAAgB,EAEzB,IAAI3yC,EAAU,CACVkF,IAAK,oCACLY,OAAQ,CACJmrC,SAAUA,GAEd5qC,SAKJ,SAAmB9G,MAFnBH,EAAG+F,KAAKC,QAAQpF,MA8CxB,SAAS4xC,IACLX,EAASyB,SAAWlB,UAAUoB,iBAC9B3B,EAAS0B,eAAgB,EAEzB,IAAI3yC,EAAU,CACVkF,IAAK,oCACLY,OAAQ,CACJmrC,SAAUA,GAEd5qC,SAKJ,SAAmB9G,GACfiyC,UAAUqB,YAHdzzC,EAAG+F,KAAKC,QAAQpF,GAQpB,SAASkyC,IACL/yC,EAAE,6CAA6C+L,YAAY,UAC3D8lC,EAAe8B,oBACf7B,EAASyB,SAAWlB,UAAUoB,iBAC9B3B,EAAS0B,eAAgB,EAEzB,IAAI3yC,EAAU,CACVkF,IAAK,oCACLY,OAAQ,CACJmrC,SAAUA,GAEd5qC,SAKJ,SAAmB9G,MAFnBH,EAAG+F,KAAKC,QAAQpF,GAOpB,SAASoyC,IACLjzC,EAAE,6CAA6C+L,YAAY,UACvDsmC,UAAUuB,YACV9B,EAASyB,UAAYlB,UAAUuB,WAAW5pC,MAAM,KAAK,GACjD8nC,EAASyB,UAAY,KAAIzB,EAAS0B,eAAgB,KAEtD1B,EAASyB,SAAWlB,UAAUoB,iBAC9B3B,EAAS0B,eAAgB,GAE7B3B,EAAe8B,oBACf3zC,EAAE,QAAQmE,IAAI,SACd,IAAItD,EAAU,CACVkF,IAAK,oCACLY,OAAQ,CACJmrC,SAAUA,GAEd5qC,SAKJ,SAAmB9G,MAFnBH,EAAG+F,KAAKC,QAAQpF,GAkDpB,OApCAX,EAAM2zC,QAAU,SAAU5B,GAClBjyC,EA/La,cA+LKd,OAAS,GAAK+yC,GAAYA,EAAS/yC,OAAS,GACzD2yC,IACDA,EAAiBQ,UAAUyB,qBAE/B9B,EAAQC,IAERnyC,OAAOi0C,SAAWA,QAAQC,IAAI,kEAMtC9zC,EAAMoyC,UAAY,WACVR,IAAYA,EAAS0B,gBACrBxzC,EAAE,QAAQmE,MAAMC,GAAG,SAAS,SAAU8B,GAC5BA,EAAE+tC,WAAa/tC,EAAE+tC,UAAY,GAAQj0C,EAAEkG,EAAE+X,QAAQlM,SAAS,yBAC5DsgC,UAAUqB,SAAQ,MAG1BrB,UAAUC,UAAUP,EAAMD,EAASyB,YAK3CrzC,EAAM4zC,kBAAoB,WAItB,OAHKjC,IACDA,EAAiBQ,UAAUyB,qBAExBjC,GAOJ3xC,EAxOG,CAyOZQ,OAAQb;ACpPV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAAIC,EAAQD,EAAGgB,SAAW,GAStByvC,GAAW,EAEf1wC,EAAEmlB,OAAO,aAAc,CACnBtkB,QAAS,CACLqzC,WAAW,EACXC,UAAW,EACXnnC,MAAO,GACPiZ,QAAS,GACTiN,IAAK,IACLxf,IAAK,EACLxU,OAAQ,EACRyxC,QAAQ,EACR1gC,OAAO,EACPuV,QAAQ,EACRgB,aAAa,EACbqqB,YAAa,OACb99B,MAAO,KAEXgT,aAAc,SAAU6B,GACpB,IAAI1Q,EAAO0Q,EAAMxnB,KAGjB,OAAIzB,OAAOipB,EAAMyB,SAAWC,EAAQuS,KAAOl9B,OAAOipB,EAAM0B,WAAaA,EAAQuS,KACzE3kB,EAAKzN,QAAQnJ,IAAI4W,EAAKrW,QAAQolB,cAC9BhmB,EAAG8P,cAAcmH,EAAKzN,SAAS,IAK/B9K,OAAOipB,EAAMyB,SAAWC,EAAQoS,OAAS/8B,OAAOipB,EAAM0B,WAAaA,EAAQoS,OAC3EgV,GAAW,EACXx5B,EAAKzN,QAAQ2zB,YAGTlmB,EAAKrW,QAAQ8vC,QAAuC,UAA7Bz5B,EAAKrW,QAAQgwC,aACpC35B,EAAKzN,QAAQwG,eANrB,GAWJ6e,eAAgB,SAAUlH,GACtB,IAAI1Q,EAAO0Q,EAAMxnB,KACjB,OAAIzB,OAAOipB,EAAMyB,SAAWC,EAAQ8qB,WAAaz1C,OAAOipB,EAAM0B,WAAaA,EAAQ8qB,WAAaz1C,OAAOipB,EAAMyB,SAAWC,EAAQkS,KAAO78B,OAAOipB,EAAM0B,WAAaA,EAAQkS,OAIrKtkB,EAAKzN,QAAQnJ,MAAMpB,OAASgY,EAAKrW,QAAQqyB,WAA7C,GAIJwF,aAAc,SAAU9Q,GACpB,IAAI1Q,EAAO0Q,EAAMxnB,KAEjB8W,EAAKrW,QAAQolB,QAAU/O,EAAKzN,QAAQnJ,OAET,IAAvB4W,EAAKrW,QAAQoP,OACbiH,EAAKzN,QAAQpD,UAGrByf,YAAa,SAAU8B,GACnB,IAAI1Q,EAAO0Q,EAAMxnB,KAEiB,UAA7B8W,EAAKrW,QAAQgwC,cAA4BH,GAA2C,QAA7Bx5B,EAAKrW,QAAQgwC,aAAyBH,EAC9Fx5B,EAAKrW,QAAQolB,QAAU/O,EAAKzN,QAAQnJ,OAGpC4W,EAAKzN,QAAQnJ,QAAU4W,EAAKrW,QAAQolB,SAAYyqB,KAGpDA,GAAW,EACXx5B,EAAKm9B,qBAET1b,cAAe,SAAU/Q,GACVA,EAAMxnB,KACZi0C,oBAETA,iBAAkB,WACd34C,KAAKmiB,WACL5d,EAAGoM,oBAAoB3Q,KAAK+N,QAAS,CAAEvD,EAAGxK,KAAK+N,QAASuD,MAAOtR,KAAKmF,QAAQmM,MAAOiZ,QAASvqB,KAAKmF,QAAQolB,QAASpM,IAAKne,KAAKmF,QAAQgZ,IAAKpM,SAAU/R,KAAKmF,QAAQ4M,SAAUvO,OAAQxD,KAAKmF,QAAQ3B,QAAU,IACzMxD,KAAKmF,QAAQolB,QAAUvqB,KAAKmF,QAAQmM,OAExC4Y,QAAS,WACLlqB,KAAKmF,QAAUb,EAAEe,OAAO,GAAIrF,KAAKmF,QAASnF,KAAK+N,QAAQrJ,QACvDH,EAAGkN,sBAAsBzR,KAAK+N,QAAS/N,KAAKmF,SAE5CnF,KAAK+N,QAAQuC,SAAS,OACtBtQ,KAAK44C,YAAct0C,EAAE,SACrBtE,KAAK64C,aAAev0C,EAAE,0JAMtBtE,KAAK84C,eAAiBx0C,EAAE,SAAUtE,KAAK64C,cACvC74C,KAAK84C,eAAepwC,GAAG,SAAU1I,KAAMA,KAAKi9B,eAE5Cj9B,KAAK+N,QAAQgrC,KAAK/4C,KAAK44C,aACvB54C,KAAK+N,QAAQwqB,OAAOv4B,KAAK64C,cAEzB74C,KAAK+N,QACArF,GAAG,QAAS1I,KAAMA,KAAKqqB,cACvB3hB,GAAG,UAAW1I,KAAMA,KAAKozB,gBACzB1qB,GAAG,QAAS1I,KAAMA,KAAKg9B,cACvBt0B,GAAG,OAAQ1I,KAAMA,KAAKoqB,aAEvBpqB,KAAKmF,QAAQ2lB,cACb9qB,KAAK+N,QAAQnJ,IAAI,IACjB5E,KAAKmF,QAAQ2lB,aAAc,EAC3B9qB,KAAKmF,QAAQ2lB,aAAc,EAC3B9qB,KAAK+N,QAAQrD,KAAK,oBAAoB,IAGtC1K,KAAKmF,QAAQ2kB,SACb9pB,KAAK+N,QAAQrD,KAAK,YAAY,GAC9B1K,KAAKg0B,OAAOtpB,KAAK,YAAY,IAEjC1K,KAAKmiB,WACLniB,KAAKgO,WAETqf,YAAa,SAAUloB,GACnBnF,KAAKstB,OAAOnoB,GACZnF,KAAKgO,WAETA,QAAS,aAGT0f,SAAU,WACN1tB,KAAK+N,QAAQsC,YAAY,OACzBrQ,KAAK+N,QACAtF,IAAI,QAASzI,KAAKqqB,cAClB5hB,IAAI,UAAWzI,KAAK+gC,gBACpBt4B,IAAI,QAASzI,KAAKg9B,cAClBv0B,IAAI,OAAQzI,KAAKoqB,aACtBpqB,KAAK+N,QAAQirC,OAAOh5C,KAAK44C,aACzB54C,KAAK64C,aAAarlC,UAEtB2O,SAAU,WACN,IAAIvd,EAAM5E,KAAK+N,QAAQnJ,MAAM6L,OAEzB7L,EAAIwV,WAAW,aACfpa,KAAK84C,eAAel0C,IAAI,WACxBA,EAAMA,EAAIsN,OAAO,IAEjBtN,EAAIwV,WAAW,cACfpa,KAAK84C,eAAel0C,IAAI,YACxBA,EAAMA,EAAIsN,OAAO,IAGjBtN,EAAIpB,OAASxD,KAAKmF,QAAQ6S,MAC1BpT,EAAM5E,KAAKmF,QAAQolB,SAGvBvqB,KAAK+N,QAAQnJ,IAAIA,GACC,GAAdA,EAAIpB,OACJxD,KAAKmF,QAAQmM,MAAQ,GAErBtR,KAAKmF,QAAQmM,MAAQtR,KAAK84C,eAAel0C,MAAQA,EACrD5E,KAAKmF,QAAQ3B,OAASoB,EAAIpB,OAEtBxD,KAAKmF,QAAQ8vC,QACbj1C,KAAK+N,QAAQnJ,IAAI,KAGzB0M,MAAO,SAAUA,GAKb,OAJa/C,MAAT+C,IACAtR,KAAK+N,QAAQnJ,IAAI0M,GACjBtR,KAAK24C,oBAEF34C,KAAKmF,QAAQmM,SAI5B,IAAIsc,EAAU,CACVoS,MAAO,GACP0Y,UAAW,EACXvY,IAAK,GACLL,IAAK,GA6BT,OATAt7B,EAAMoC,OAAS,SAAUoN,IAVzB,SAAgBA,GACZ1P,EA5LO,kBA4LC0P,GAAW3J,MAUnB4uC,CAAOjlC,IAQJxP,EAzNG,CA0NZQ,OAAQb;AC1NV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IAIIzD,EAJA0D,EAAQD,EAAGgB,SAAW,GAGtByY,EAAS,IAAIyC,OAIby4B,EAAQ,CACRC,MAAO,IAAIxkC,OAAO,uEAClBqX,IAAK,IAAIrX,OAAO,8BAAiC,MASjDykC,EAAmB,SAAUplC,IAGzBA,GACAA,EAAY1P,EAAE0P,IACW5D,KAAK,cAEf9L,EAAE,eAGRuJ,MAAK,SAAUC,EAAOW,GAC/BnK,EAAEmK,GAAMmD,QAAQ,MAAMtB,SAAS,eAInChM,EA/BsB,2BA+BC+L,YAAY,cAAcuB,QAAQ,MAAMvB,YAAY,YAC3E/L,EAAE,sBAAuB0P,GAAWpC,QAAQ,eAAetB,SAAS,YAOpEhM,EAAEkE,UAAUE,GAAG,OAxCC,0BAwCsB,SAAU8B,GAC5C,IAAI6uC,EAAcr5C,MAQd,OALAsE,EAAEtE,MAAMsQ,SAAS,cACjB9F,EAAE2hB,kBACF3hB,EAAE2G,iBACF3G,EAAE8uC,cAAe,EACjB9uC,EAAE+uC,4BACK,EAPPj1C,EAAEtE,MAAMqQ,YAAY,kBAahC,SAASmpC,EAAaxlC,EAAWylC,EAAeC,EAAeC,GAC3D,IAAI/iC,EACAgjC,GAAc,EAElB,GAAI5lC,EAAW,CAEX4C,GADA5C,EAAY1P,EAAE0P,IACG5D,KA7DL,0BA+DZ,IAAIypC,EAAiB7lC,EAAUtP,KAAK,mBAChCm1C,IACAjjC,EAAOtS,EAAEsS,GAAMq5B,QAAO,WAClB,OAAiD,GAA1C3rC,EAAEtE,MAAM4R,QAAQioC,GAAgBr2C,WAG1Cm2C,IACD/iC,EAAOtS,EAAEsS,GAAMq5B,QAAO,WAClB,OAAO3rC,EAAEtE,MAAM0T,GAAG,qBAI1BkD,EAAOtS,EA3EK,0BA2FhB,OAbAsS,EAAK/I,MAAK,SAAUC,EAAOW,GAClB4qC,EAAc5qC,GAIfnK,EAAEmK,GAAM4B,YAAY,eAHpBupC,GAAc,EACdt1C,EAAEmK,GAAM6B,SAAS,kBAMpBspC,GAAgBF,GACjB17B,EAAO0C,MAAM+4B,GAAgC34C,EAAuC,iCAGjF84C,EAIX,SAASP,EAAcj2B,GACnB,IAII02B,EAJAC,EAAUz1C,EAAE8e,GACZ9R,EAAQ8R,EAAM9R,MACdwJ,EAAQi/B,EAAQr1C,KAAK,SACrBs1C,EAAWD,EAAQrvC,KAAK,YAG5B,GAAIqvC,EAAQrmC,GAAG,SAAU,CAErB,GAAgC,iBAA5BqmC,EAAQrvC,KAAK,WACb,SAAKqvC,EAAQr1C,KAAK,aAAeq1C,EAAQr1C,KAAK,UAIlD,IAAK4M,IAAUA,EAAMb,OACjB,OAAOupC,EAGX,IAAIC,EAAYf,EAAMa,EAAQrvC,KAAK,QAAQzG,eAO3C,OALIg2C,EACAH,EAAQG,EACDn/B,IACPg/B,EAAQ,IAAInlC,OAAOmG,KAEnBg/B,IAC2C,QAAvCC,EAAQrvC,KAAK,QAAQzG,eAA4BqN,EAAMwJ,MAAMg/B,GAG1DxoC,EAAMwJ,MAAMg/B,IAFP,UAAYxoC,GAAOwJ,MAAMg/B,IAMtC,GAAIC,EAAQrmC,GAAG,UAAW,CAC7B,IAAIwmC,EAAkBH,EAAQr1C,KAAK,iBAInC,YAHwB6J,IAApB2rC,IACAA,GAAmB,KAElBF,KAAa1oC,GAASrO,OAAOqO,KAAWrO,OAAOi3C,KAKjD,GAAIH,EAAQrmC,GAAG,YAClB,OAAKpC,GAAUA,EAAMb,QAGbqK,IACAg/B,EAAQ,IAAInlC,OAAOmG,GACZxJ,EAAMwJ,MAAMg/B,KAJfE,EAyCpB,OArBAx1C,EAAMqd,qBAAuB,SAAU7N,GACnClT,EAAQA,GAASyD,EAAGoZ,WAEpBy7B,EAAiBplC,IAIrBxP,EAAM21C,SAAW,SAAUnmC,EAAWylC,EAAeC,EAAeC,GAChE,OAAOH,EAAaxlC,EAAWylC,EAAeC,EAAeC,IAIjEn1C,EAAM2d,SAAW,SAAUnO,EAAWylC,EAAeC,EAAeC,GAChE,OAAOH,EAAaxlC,EAAWylC,EAAeC,EAAeC,IAQ1Dn1C,EAzLG,CA0LZQ,OAAQb;AC1LV,aAAAA,GAAGoB,QAAW,SAAUjB,EAAGC,GAGvB,IACI61C,EADA51C,EAiDEL,GAjDSoB,SAAW,GAEtBJ,EAAU,GACVsc,EAAW,CACX44B,QAAS,KACTC,aAAc,MA2ClB,OA3BA91C,EAAM+1C,aAAe,SAAUC,GAE3B,IADAr1C,EAAUb,EAAEe,OAAO,GAAIoc,EAAU+4B,IACpBH,QAAb,CAGO,GAAKl1C,EAAQm1C,cAAiBn1C,EAAQm1C,aAAa92C,OAAnD,CAIP42C,EAAW91C,EAAEm2C,WAAWt1C,EAAQk1C,SAChC,IAAK,IAAIx6C,EAAI,EAAGA,EAAIsF,EAAQm1C,aAAa92C,OAAQ3D,IAC7Cu6C,EAASM,OAAOv1C,EAAQm1C,aAAaz6C,GAAG+Z,MAAQzU,EAAQm1C,aAAaz6C,GAAE,SAG3E,OAAOyE,EAAEm2C,WAAWE,IAAIxlC,QARpB/Q,OAAOi0C,SAAWA,QAAQuC,MAAM,0DAHhCx2C,OAAOi0C,SAAWA,QAAQuC,MAAM,2DAoBxCp2C,EAAMq2C,iBAAmB,WACrB,OAAOT,GAGJ51C,EAnDG,CAoDZQ;ACpDF,aAEA,SAASgC,QAAQC,GAAgC,OAAOD,QAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAK,cAAcA,GAAO,SAAUA,GAAK,OAAOA,GAAK,mBAAqBC,QAAUD,EAAEG,cAAgBF,QAAUD,IAAMC,OAAOpH,UAAY,gBAAkBmH,IAAcA,IAIvT,SAAU3C,GAIV,IAAIw2C,EAAY,gVAeZC,EAAW,CAEbC,UAAY,OACZC,WAAY,OACZC,UAAY,UACZC,SAAY,EACZC,SAAY,EACZj4C,UAAY,EACZk4C,OAAY,EACZC,UAAY,EACZC,UAAY,EACZC,UAAY,EACZC,QAAY,MACZC,KAAY,EACZC,WAAY,KACZC,OAAY,KACZC,SAAY,KACZC,MAAY,KACZC,QAAY,MAIVC,EAEU,UAFVA,EAGU,UAYd,SAASC,EAAgB3qC,EAAO4qC,EAAUd,GAgBxC,OATI9pC,IAAU4qC,EAEZ5qC,EAAQ4qC,EAEF5qC,IAAU8pC,IAEhB9pC,EAAQ8pC,GAGH9pC,EAoBT,SAAS6qC,EAAU7qC,GAGjB,YAAwB,IAAVA,EAIhB,IAAI8qC,EAAW,8CAEXC,EAAW,SAAUC,GAOvB,IAAKF,EAASt4C,KAAKw4C,GAEjB,OAAO,KAGT,IAAIC,EAAYH,EAASI,KAAKF,GAK9B,MAAO,CAACG,EAJPxqC,SAASsqC,EAAU,GAAI,IAIXG,EAHZzqC,SAASsqC,EAAU,GAAI,IAGNI,EAFjB1qC,SAASsqC,EAAU,GAAI,MAK1B,SAASK,EAAgBC,EAAUC,EAAQC,GAMzC,IAAIvU,EAA8BuU,EAAQ,KAA5BD,EAASD,GASvB,OALsB,KAFtBrU,EAASlmC,KAAKs+B,MAAMic,EAAWrU,GAAQh3B,SAAS,KAErChO,SAEdglC,EAAS,IAAMA,GAGLA,EA4BR,SAASwU,EAAQC,EAAO93C,GAOvBnF,KAAKk9C,KAAOD,EAAME,IAAI,GAEtB,IAAIloC,EAAOjV,KAGXi9C,EAAMG,QAAQ9sC,SAAS,mBAcvB,IAuBIomC,EAAMsE,EAAWqC,EAAe5B,EAChC6B,EAAkBC,EAxBlBC,EAAgBl5C,EAAE,UAAUgM,SAAS,uBACT8c,SAAS6vB,GAErCQ,EAAen5C,EAAE,UAAUgM,SAAS,sBACTA,SAAS,eACT8c,SAASowB,GAEpCE,EAAcp5C,EAAE,UAAUgM,SAAS,qBACTA,SAAS,eACT8c,SAASowB,GAyBnCG,EAAgBx4C,EAAQk2C,OAGxBuC,GAAgB,EAEpB,SAASC,EAAYC,GAOd3B,EAAU2B,KAEbA,EAAY34C,EAAQk2C,QAItBsC,EAAgBG,EAEhB,IAAIC,EAAiBD,EAAUpH,EAG3BqG,EAAUgB,EAAeV,EAEzBU,EAAiB,IAGnBhB,IAAYz6C,KAAK07C,KAAKD,GAAkB,GAAGT,GAG7CW,EAAa94C,EAAQ+1C,WAErB6B,EAAU53C,EAAQu2C,IAAM,IAAMqB,EAAUA,EAExCW,EAAY/0C,IAAI,QAASo0C,EAAU,KAGrC,SAASmB,IAOPX,EAAiBvC,EAAU71C,EAAQg2C,SAAWM,GAASt2C,EAAQg2C,SAAW,GAE1EkC,EAAiBrC,EAAUuC,EAAgB,IAE3CD,EAAoB7B,EAAQ8B,EAAgB,IAE5CN,EAAMjuC,MAAMuuC,GAEZM,IAGF,SAASM,EAAcC,GAQrB,IAAIC,EAAal5C,EAAQ61C,UAAYoD,EAcrC,OAZApD,EAAY52C,OAAOioC,WAAWlnC,EAAQ61C,UAAUtqC,QAAQ,KAAM,KAE9D+sC,EAAartC,KAAK,OACL1F,KAAK,CAACsE,MAAQ7J,EAAQ61C,UAChBxtC,OAAQ6wC,IAE3BX,EAAYttC,KAAK,OACL1F,KAAK,CAACsE,MAAQ7J,EAAQ61C,UAChBxtC,OAAQ6wC,IAE1BH,IAEOjB,EAGT,SAASqB,EAAYC,GAmBnB,OAZAp5C,EAAQs2C,QAAU8C,EAElB9C,EAAUpP,WAAWlnC,EAAQs2C,QAAQ/qC,QAAQ,KAAM,KAEnD+sC,EAAartC,KAAK,yBACLzH,IAAI,CAAC61C,cAAeD,IAEjCb,EAAYttC,KAAK,yBACLzH,IAAI,CAAC61C,cAAeD,IAEhCL,IAEOjB,EAGT,SAASwB,EAAeC,GAatB,OANAv5C,EAAQ81C,WAAayD,GAERv5C,EAAQu2C,IAAMgC,EAAcD,GAAcrtC,KAAK,OAEtD1F,KAAK,CAACi0C,KAAMx5C,EAAQ81C,aAEnBgC,EAQT,IAAI/B,EAAY/1C,EAAQ+1C,UAExB,SAAS+C,EAAcS,GAUrB,GAAIv5C,EAAQw2C,WAAY,CAEtB,IACIiD,GADajB,EApJ4B,GAqJZx4C,EAAQi2C,SAAU,IAE/CyD,EAAa15C,EAAQw2C,YAAc,GAIvC+C,EAtON,SAAmBI,EAAYC,EAAUhC,GAQvC,IAAK+B,IAAeC,EAElB,OAAO,KAGThC,EAAUZ,EAAUY,GAAUA,EAAU,EAExC+B,EAAazC,EAASyC,GACtBC,EAAW1C,EAAS0C,GAEpB,IAAItC,EAAIG,EAAgBkC,EAAWrC,EAAGsC,EAAStC,EAAGM,GAC9CJ,EAAIC,EAAgBkC,EAAWnC,EAAGoC,EAASpC,EAAGI,GAGlD,MAAO,IAAMN,EAFLG,EAAgBkC,EAAWpC,EAAGqC,EAASrC,EAAGK,GAE7BJ,EAgNPqC,CAHOH,EAAUC,YAAc9C,EACxB6C,EAAUE,UAAY/C,EAEE4C,QAGzC1D,EAAYwD,EASd,OANAv5C,EAAQ+1C,UAAYwD,GAEPv5C,EAAQu2C,IAAM+B,EAAeC,GAAattC,KAAK,OAEtD1F,KAAK,CAACi0C,KAAMx5C,EAAQ+1C,YAEnB+B,EAGT,SAASgC,EAAQC,GAEfA,IAAaA,EAEb/5C,EAAQu2C,IAAMwD,EAEdT,EAAct5C,EAAQ81C,YACtB4C,IAGF,SAASsB,EAAeC,GAMtBj6C,EAAQw2C,WAAayD,EAGrBnB,EAAamB,GAA8BlE,GAG7C,SAASmE,EAAaH,GAOpB/5C,EAAQg2C,SAAW+D,EAEnBxI,EAAOvxC,EAAQi2C,SAASj2C,EAAQg2C,SAEhCsC,EAAaL,QACbM,EAAYN,QAEZ,IAAK,IAAI75C,EAAE,EAAGA,EAAE4B,EAAQg2C,SAAU53C,IAEhCk6C,EAAanqC,OAAOhP,EAAEa,EAAQ42C,SAAWjB,IACzC4C,EAAYpqC,OAAOhP,EAAEa,EAAQ42C,SAAWjB,IAS1C,OANAqD,EAAah5C,EAAQ61C,WACrByD,EAAct5C,EAAQ81C,YACtBqD,EAAWn5C,EAAQs2C,SAEnBoC,IAEOZ,EAGT,SAASqC,EAAaJ,GAkBpB,OAXA/5C,EAAQi2C,SAAW8D,EAEnBxI,EAAOvxC,EAAQi2C,SAASj2C,EAAQg2C,SAE5Bh2C,EAAQk2C,OAAS6D,GAEnBK,EAAUL,GAGZrB,IAEOZ,EAGT,SAASuC,EAAcN,GAWrB,OAJA/5C,EAAQhC,UAAY+7C,EAEpBK,EAAUp6C,EAAQk2C,QAEX4B,EAGT,SAASwC,EAAaP,GAQpB,OAFA/5C,EAAQo2C,SAAW2D,EAEZjC,EAGT,SAASyC,EAAaR,GAQpB,OAFA/5C,EAAQm2C,SAAW4D,EAEZjC,EAmCT,SAAS0C,EAAiBn1C,GAOxB,IAvCc8G,EAMVsuC,EACAC,EACAC,EACAC,EA+BAC,EADWvC,EAAav1C,SACFgH,KACtB+wC,EAAWD,EAAavC,EAAazuC,QAErCosC,EAAWj2C,EAAQi2C,SAGnB8E,EAAQ11C,EAAE01C,MAEVC,EAAmB,EAGvB,GAAGD,EAAQF,EAETG,EA3U6C,OA4UzC,GAAID,EAAQD,EAEhBE,EAAmB/E,MACf,CAMJ,IAAIgF,GAAcF,EAAQF,IAAaC,EAAWD,GAElD,GAAIvE,EAAU,EAaZ,IAFA,IAAI4E,EAFJD,GAAa,IAINC,EAAW,GAEZA,EAAWhD,GAEb8C,GAAoBzJ,EACpB2J,GAAahD,EAAgBC,IAG7B6C,GAAoBE,EAAShD,EAAc3G,EAC3C2J,EAAW,QASfF,EAAmBC,EAAaj7C,EAAQi2C,SA1FxCwE,GANUtuC,EAoGa6uC,GA9FLzJ,EAClBmJ,EAAWnJ,EAAK,EAChBoJ,EAAa36C,EAAQo2C,SA4FvB4E,GA3FEJ,EAAa56C,EAAQm2C,WAELwE,GAKhBC,GAAeD,GAAcF,EAAYC,EAE3CvuC,GAASolC,EAAOkJ,GAGhBtuC,GAAgBsuC,EAEZA,EAAY,IAEdtuC,GAASuuC,IAINvuC,GAhBEA,EA+FT,OALInM,EAAQu2C,MAEVyE,EAAmB/E,EAAW+E,GAGzBA,EAGT,SAASG,EAAapB,GAoBpB,OAbA/5C,EAAQq2C,SAAW0D,EAEnBjC,EAAMvyC,KAAK,YAAY,GAEvB61C,IAEKrB,IAEHjC,EAAMzyB,WAAW,YAgTnByyB,EAAMv0C,GAAG,YAAa83C,GAChB93C,GAAG,aAAc83C,GACjB93C,GAAG,aAAc+3C,GACjB/3C,GAAG,QAASg4C,GACZh4C,GAAG,cAAekzC,GAClBlzC,GAAG,gBAAiBmzC,GACpBnzC,GAAG,aAAcozC,IAjThBmB,EAGT,SAASsC,EAAWL,GAOlB,IAAI7D,EAAS6D,EAET9D,EAAWj2C,EAAQi2C,SA+BvB,MA7BsB,iBAAXC,IAGyB,MAA9BA,EAAOA,EAAO73C,OAAS,KAEzB63C,EAASA,EAAOnpC,OAAO,EAAGmpC,EAAO73C,OAAS,GAG1C87C,EAFAlE,EAAW,MAKbC,EAAShP,WAAWgP,IA7jB1B,SAAsB/pC,EAAO4qC,EAAUd,GAQrC,KAFc9pC,GAAS4qC,GAAY5qC,GAAS8pC,GAIxC,MAAMp/B,MAAM,0CAA2CkgC,EAC3C,QAAUd,GAqjBxBuF,CAAYtF,EArbmC,EAqbjBD,GAE9BC,EAAShP,WAAWgP,EAAOzY,QAAQz9B,EAAQhC,YAE3C84C,EAAe5P,WAAWgP,GAzbqB,EAybFD,GAE7Cj2C,EAAQk2C,OAASA,EAEjBwC,IAEID,GAEFX,EAAMnoC,QAAQ,aAAc,CAACumC,OAAQA,IAGhC4B,EAGT,SAAS2D,EAAWC,GAQlB,OAFA17C,EAAQy2C,OAASiF,EAEV5D,EAGT,SAAS6D,EAAUD,GAQjB,OAFA17C,EAAQ22C,MAAQ+E,EAET5D,EAGT,SAAS8D,EAAaF,GAQpB,OAFA17C,EAAQ02C,SAAWgF,EAEZ5D,EAoJT,SAASuD,EAAch2C,GAOrB,IAAI6wC,EAASsE,EAAgBn1C,GAAGo4B,QAAQz9B,EAAQhC,WAE5Ci4C,EAAWj2C,EAAQi2C,SAIvByC,EAFAxC,EAASY,EAAe5P,WAAWgP,GApoBY,EAooBOD,IAItD6B,EAAMnoC,QAAQ,gBAAiB,CAACumC,OAAQA,IAG1C,SAASoF,IAjzBX,IAGYO,EAFNC,GAAAA,GAAQ,EAEFD,EAAk9D5mB,UAAU8mB,WAAW9mB,UAAU+mB,QAAQ/8C,OAAOg9C,OAA1/D,sVAAsVt9C,KAAKk9C,IAAI,0kDAA0kDl9C,KAAKk9C,EAAE9uC,OAAO,EAAE,OAAI+uC,GAAQ,GAE98DA,KAuzBLpD,IAEAZ,EAAMnoC,QAAQ,gBAAiB,CAACumC,OAAQl2C,EAAQk2C,UAGlD,SAASqF,EAAcl2C,GAMrB,IAAI62C,EAAkB1B,EAAgBn1C,GAAGo4B,QAAQz9B,EAAQhC,WACzDk+C,EAAkBhV,WAAWgV,GAE7BpsC,EAAKomC,OAAOgG,GAGd,SAASzF,EAAOpxC,EAAG9F,GAEdS,EAAQy2C,QAAoC,mBAAnBz2C,EAAQy2C,QAGlCz2C,EAAQy2C,OAAO0F,MAAMthD,KAAM,CAAC0E,EAAK22C,OAAQpmC,IAI7C,SAAS4mC,EAAUrxC,EAAG9F,GAEjBS,EAAQ02C,UAAwC,mBAArB12C,EAAQ02C,UAGpC12C,EAAQ02C,SAASyF,MAAMthD,KAAM,CAAC0E,EAAK22C,OAAQpmC,IAI/C,SAAS6mC,EAAOtxC,EAAG9F,GAEdS,EAAQ22C,OAAkC,mBAAlB32C,EAAQ22C,OAGjC32C,EAAQ22C,MAAMwF,MAAMthD,KAAM,CAAC0E,EAAK22C,OAAQpmC,IAe5C,SAASsrC,IAEPtD,EAAMx0C,IAAI,YAAa+3C,GACjB/3C,IAAI,aAAc+3C,GAClB/3C,IAAI,aAAcg4C,GAClBh4C,IAAI,QAASi4C,GACbj4C,IAAI,cAAemzC,GACnBnzC,IAAI,gBAAiBozC,GACrBpzC,IAAI,aAAcqzC,GA7O1B97C,KAAKq7C,OAAS,SAAU6D,GAMtB,OAAK/C,EAAU+C,IAKfK,EAAUL,GAEHjC,GALE93C,EAAQk2C,QAQnBr7C,KAAKwjC,QAAU,WAuQjB,IAAyB0Z,EAAMqE,EAvP3B,OAVKp8C,EAAQq2C,UAEX+E,IAGFvD,EAAOl9C,UAAUyhD,YA4PIrE,EA5PwBD,EAAME,IAAI,GA4P5BoE,EA3PkBvhD,KAAKuhD,WAmQpDj9C,EAAEuJ,KAAK0zC,GAAY,SAAUzzC,GAE3B,GAAIovC,IAASl9C,KAAKk9C,KAAM,CAEtB,IAAIsE,EAAYD,EAAWr9C,MAAM,EAAG4J,GAChC2zC,EAAaF,EAAWr9C,MAAM4J,EAAM,EAAGyzC,EAAW/9C,QAItD,OAFA+9C,EAAaC,EAAUloC,OAAOmoC,IAEvB,MAIJF,GA9QLtE,EAAM5sC,YAAY,mBAAmB6D,WAAWV,SAEzCypC,GAGTj9C,KAAK6gD,OAAS,SAAUa,GAMtB,IAAKA,EAEH,MAAM1lC,MAAM,8BAGd,IAAKmgC,EAAUn8C,KAAK0hD,IAElB,MAAM1lC,MAAM,UAAY0lC,EAAa,mBAGvC,IAAIC,EAAOpiD,MAAMO,UAAUoE,MAAMo9C,MAAMhqC,UAAW,IAC9CrM,EAAS02C,EAAKz9C,MAAM,GACpB28C,EAAS7gD,KAAK0hD,GAElB,OAAOb,EAAOS,MAAMthD,KAAMiL,IAG5BjL,KAAK4hD,OAAS,SAAUC,EAAYxmC,GAMlC,IAAK8gC,EAAU0F,GAEb,OAAO18C,EAGT,IAAI07C,EAEJ,OAAQgB,GAEN,IAAK,YAEHhB,EAAS1C,EACT,MACF,IAAK,WAEH0C,EAASxB,EACT,MACF,IAAK,aAEHwB,EAASpC,EACT,MACF,IAAK,YAEHoC,EAAS5C,EACT,MACF,IAAK,aAEH4C,EAAS1B,EACT,MACF,IAAK,WAEH0B,EAASvB,EACT,MACF,IAAK,YAEHuB,EAASrB,EACT,MACF,IAAK,SAEHqB,EAAStB,EACT,MACF,IAAK,WAEHsB,EAASpB,EACT,MACF,IAAK,WAEHoB,EAASnB,EACT,MACF,IAAK,WAEHmB,EAASP,EACT,MACF,IAAK,UAEHO,EAASvC,EACT,MACT,IAAK,MAEIuC,EAAS5B,EAChB,MACK,IAAK,SAEH4B,EAASD,EACT,MACF,IAAK,QAEHC,EAASC,EACT,MACF,IAAK,WAEHD,EAASE,EACT,MACF,QAEE,MAAM/kC,MAAM,qBAAuB6lC,GAGvC,OAAO1F,EAAU9gC,GAASwlC,EAAOxlC,GAASlW,EAAQ08C,IAkGpDxC,EAAYl6C,EAAQg2C,UACpBmF,EAAYn7C,EAAQq2C,UAEhBr2C,EAAQu2C,KAEVuD,EAAO95C,EAAQu2C,KAGjB17C,KAAKuhD,WAAW59C,KAAK3D,MACrBA,KAAKq7C,OAAOl2C,EAAQk2C,QAAQ,GAE5BuC,GAAgB,EAChBX,EAAMnoC,QAAQ,cAAe,CAACumC,OAAQl2C,EAAQk2C,SAKhD,SAASyG,EAAa5E,EAAMqE,GAQ1B,IAAIQ,EAWJ,OATAz9C,EAAEuJ,KAAK0zC,GAAY,WAEjB,GAAGrE,IAASl9C,KAAKk9C,KAGf,OADA6E,EAAW/hD,MACJ,KAIJ+hD,EA2BT,SAASC,EAAS78C,GAEhB,IAAI88C,EAAkBjF,EAAOl9C,UAAUyhD,WAGnCW,EAAS59C,EAAEtE,MAEf,GAAqB,IAAlBkiD,EAAO1+C,OAER,OAAO0+C,EAGT,IAAIP,EAAOpiD,MAAMO,UAAUoE,MAAMo9C,MAAMhqC,UAAW,IAElD,GAAoB,IAAhBqqC,EAAKn+C,OAGP2B,EAAUw8C,EAAK,GAAK,OAChB,CAAA,GAAoB,IAAhBA,EAAKn+C,QAAmC,WAAnBwD,QAAO26C,EAAK,IAIrC,CAAA,GAAIA,EAAKn+C,QAAU,GAAwB,iBAAZm+C,EAAK,GAAiB,CAQzD,IAAID,EAAaC,EAAK,GAClB12C,EAAS02C,EAAKz9C,MAAM,GAEpBuH,EAAS,GA6Bb,OA3BAnH,EAAEuJ,KAAKq0C,GAAQ,SAAU3+C,EAAG25C,GAE1B,IAAIiF,EAAmBL,EAAY5E,EAAM+E,GAEzC,IAAIE,EAEF,MAAMnmC,MAAM,oDAGd,IAAI6kC,EAASsB,EAAiBT,GAE9B,IAAKb,EAEH,MAAM7kC,MAAM,UAAY0lC,EAAa,oBAGvC,IAAIU,EAAYvB,EAAOS,MAAMa,EAAkBl3C,GAE/CQ,EAAO9H,KAAKy+C,MAOd32C,EAA2B,IAAlBA,EAAOjI,OAAciI,EAAO,GAAIA,EAKzC,MAAMuQ,MAAM,qBA5CZ7W,EAAUw8C,EAAK,GAqDjB,OAFAx8C,EAAUb,EAAEe,OAAO,GAAI01C,EAAU51C,GAE1Bb,EAAEuJ,KAAKq0C,GAAQ,WAIX,IAFuBJ,EAAY9hD,KAAMiiD,GAIvC,OAAO,IAAIjF,EAAO14C,EAAEtE,MAAOsE,EAAEe,OAAO,GAAIF,OAhIvD63C,EAAOl9C,UAAUyhD,WAAa,GA2I9Bn9C,OAAO44C,OAASA,EAChB14C,EAAEW,GAAGo9C,OAPL,WAGE,OAAOL,EAAQV,MAAMthD,KAAMT,MAAMO,UAAUoE,MAAMo9C,MAAMhqC,UAAW,MArkCpE,CA2kCAlT,OAAOY;ACjlCT,aAAAb,GAAGiE,KAAQ,SAAU9D,EAAGC,GAGpB,IAyCI+9C,EAzCA99C,EAAQD,EAAG6D,MAAQ,GAUnBgO,EAAO,0BAMPmsC,EAAc,+BACdC,EAAiB,sCACjBC,EAAgB,qCAIhBC,EAAc,2BACdC,EAAc,2BACdC,EAAc,+BACdhrB,EAAgB,IAAIv4B,KAAK,YACzBw4B,EAAc,IAAIx4B,KAAK,cACvBwjD,EAAa,8BACbC,EAAkB,mCAClBC,EAAc,+BACdC,EAAgB,uCAChBC,EAAc,+BAEdC,EAAiB,wDAMjBtsC,GADOtS,EAAE,QACF,IAKPmd,EAAW,CACX1T,QAAS,GACTuD,MAAO,GACPsI,KAAM,SACNupC,iBAAkB,GAClBC,yBAA0B,GAG1B53C,SAAU,4BACV2S,IAAK,GA2BLklC,EAAsB,kCACtBC,EAAsB,kCAItBC,EACe,EADfA,EAE+B,EAF/BA,EAGoC,EAHpCA,EAI2B,EAJ3BA,EAK2B,EAU3B1/B,EAAS,CACTC,MAAO,EACPC,KAAM,EACNC,KAAM,EACNC,SAAU,EACVC,GAAI,EACJC,iBAAkB,EAClBC,eAAgB,EAChBC,aAAc,EACdC,mBAAoB,EACpBC,cAAe,EACfC,QAAS,GACTC,gBAAiB,GACjBC,cAAe,GACfC,YAAa,GACbC,aAAc,GACdC,UAAW,GACXC,QAAS,GACTC,QAAS,GACTC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,YAAa,GACbC,aAAc,GACdC,uBAAwB,GACxBC,cAAe,GACfC,cAAe,GACfC,YAAa,GACbC,IAAK,GACLC,OAAQ,GACRC,YAAa,GACbC,QAAS,GACTC,gBAAiB,GACjBC,kBAAmB,GACnBC,UAAW,GACXC,iBAAkB,GAClBC,kBAAmB,GACnBC,sBAAuB,GACvBC,YAAa,GACbC,yBAA0B,GAC1BC,0BAA2B,GAC3BC,uBAAwB,GACxBC,6DAA8D,GAC9DC,SAAU,GACVC,qBAAsB,GACtBC,2BAA4B,GAC5BC,uBAAwB,GACxBC,yBAA0B,GAC1BC,yBAA0B,GAC1BC,qBAAsB,GACtBC,IAAK,GACLC,iBAAkB,GAClBC,sBAAuB,GACvBC,0BAA2B,GAC3BC,0BAA2B,GAC3BC,mBAAoB,GACpBC,oBAAqB,GACrBC,qBAAsB,GACtBC,yBAA0B,GAC1BC,mBAAoB,GACpBC,uBAAwB,GACxBC,2BAA4B,GAC5BC,mCAAoC,GACpCC,sBAAuB,GACvBE,cAAe,GACfE,OAAQ,GACRC,kCAAmC,GACnCQ,mBAAoB,GACpBC,qBAAsB,GACtBI,6BAA8B,GAC9BK,8BAA+B,GAC/BC,YAAa,GACbC,iBAAkB,GAClBE,qCAAsC,IAY1C,SAASjhB,IAGe,KAFpBsO,EAAOtS,EAAE8R,IAEA5S,SAITqxC,IAEAj+B,EAAK/I,MAAK,SAAUtK,EAAGiH,GACnB,IAAIiE,EAAOnK,EAAEkG,GAGTrF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAC1CS,EAAQ4I,QAAUU,EAGlBtJ,EAAQ8N,KAAO9N,EAAQq+C,GAAGl1C,MAAM,KAAK,GAGrC,IAAI1G,EAAS6G,EAAK0B,QAlMb,wBAmMDwa,EAAiB/iB,EAAOlD,KAAK,YAC7B++C,EAAY77C,EAAOlD,KAAK,OAS5B,QARuB6J,IAAnBoc,IACAxlB,EAAQqG,SAAW5D,EAAOlD,KAAK,kBAEjB6J,IAAdk1C,IACAt+C,EAAQgZ,IAAMvW,EAAOlD,KAAK,QAIT,WAAjBS,EAAQ8N,KAAmB,CAC3B,IAAIkL,EAAM1P,EAAK/J,KAAK,YACR6J,IAAR4P,IAAmBhZ,EAAQgZ,IAAMA,GAGrC1P,EAAK/J,KAAK,SAAU,IAGxB+J,EAAK/J,KAAKS,GAEU,qBAAhBA,EAAQ8N,MACR9N,EAAQg+C,iBAAmBh+C,EAAQg+C,iBAAiBl/C,cACpDwK,EAAK/J,KAAKS,GACNA,EAAQ2lB,cACRrc,EAAK/J,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAI6J,EAAK/J,KAAK,gBAC9ES,EAAQ2lB,aAAc,GA8etC,SAAkCtgB,GAC9B,GAAiB,IAAbA,EAAEhH,OACF,OAEJ,IAAIkB,EAAO8F,EAAE9F,OAGTA,EAAK0+C,yBAAyB5/C,OAAS,GACvCgH,EAAE5F,IAAIF,EAAK0+C,0BAGf54C,EAAE9F,KAAK,UAAW8F,EAAE5F,OAGpB,IAAI8+C,GAAW,EACXC,GAAW,EAGf,GAFiBn5C,EAAE9F,KAAK,cAAgB8F,EAAE9F,KAAK,eAE7B8F,EAAE6pB,OAAOhe,SAAS,UAAW,CAC3C7L,EAAEigB,MAAM,2DACKjgB,EAAE5C,SACRwI,KAAK,WAAW3H,MAAMC,GAAG,SAAS,WACrC8B,EAAE5F,IAAI,IAAIF,KAAK,SAAU,GACzBk/C,EAAcp5C,GACdA,EAAE9F,KAAK,UAAW,OAK1B8F,EAAE2gB,aAAa,CACXC,UAAW,EACX/T,MAhtBI,IAitBJgU,YAAY,EACZC,WAAW,EACX/W,MAAO,WACH,OAAO,GAEXgX,OAsFJ,SAAyBC,EAASC,GAC9B,KAAID,EAAQE,KAAKjb,OAAOjN,OAAS,GAAjC,CAIA,IAAIqgD,EAAahgC,EAAOnf,EAAKy+C,iBAAiBl/C,eAE1C0nB,EAAa,CACbC,WAAYrnB,EAAG6P,cAAcoX,EAAQE,KAAKjb,QAC1Csb,iBAAkB83B,GAItBv/C,EAAE,QAAQgM,SAAS,OAO3B,SAAuBmb,EAAU7a,GAC7B,IAAIzL,EAAU,CACV8F,OAAQ2F,EACRvG,IAAK2hB,uCACLxgB,SAKJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElB,OAAQkM,EAAMmb,kBACV,KAAKlI,EAAOW,QACZ,KAAKX,EAAO0D,yBACRkE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZb,UAAW,UAGnB,MACJ,KAAKtJ,EAAO6C,2BACR+E,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZb,UAAW,UAGnB,MACJ,KAAKtJ,EAAO8C,uBACZ,KAAK9C,EAAO+C,yBACR6E,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKiT,aACZxB,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZb,UAAW,UAGnB,MACJ,KAAKtJ,EAAOa,cACR+G,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZvB,SAAUxR,EAAKkT,SACfhB,UAAWlS,EAAKmT,eAGxB,MACJ,KAAKvK,EAAOc,YACZ,KAAKd,EAAOiF,6BACR2C,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKoT,YACZ3B,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKqT,UACZ7B,SAAU,KACVU,UAAWlS,EAAKmT,eAGxB,MACJ,KAAKvK,EAAOe,aACZ,KAAKf,EAAOgB,UACZ,KAAKhB,EAAOiB,QACZ,KAAKjB,EAAOkB,QACZ,KAAKlB,EAAOqB,SACZ,KAAKrB,EAAOsB,YACZ,KAAKtB,EAAOuB,aACZ,KAAKvB,EAAO0B,cACRkG,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKsT,YACZ7B,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKqT,UACZ7B,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOoB,OACRwG,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKsT,YACZ7B,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOoC,kBACZ,KAAKpC,EAAOqC,sBACRuF,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKiT,aACZxB,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOwB,uBACZ,KAAKxB,EAAOyB,cACZ,KAAKzB,EAAOgC,gBACZ,KAAKhC,EAAO2B,YACZ,KAAK3B,EAAOsD,0BACZ,KAAKtD,EAAOqD,0BACZ,KAAKrD,EAAO4B,IACZ,KAAK5B,EAAO8D,mCACR8D,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKwC,MACZiP,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO6B,OACR+F,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK4U,KACZnD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK4U,KACZpD,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOwF,iBACRoC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKgV,iBACZvD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKiV,MACZzD,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO8B,YACR8F,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK6U,WACZpD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK8U,SACZtD,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOiC,kBACR2F,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKkV,aACZzD,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAKmV,WACZ3D,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOsC,YACRsF,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKoV,YACZ3D,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK2T,UACZnC,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOyC,uBACRmF,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKwC,MACZiP,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOkD,IACZ,KAAKlD,EAAO2D,mBACRiE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAK0V,QACZjE,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK2V,MACZnE,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOmD,iBACRyE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,YAAa,EACbpsB,MAAOma,EAAKiT,aACZoC,iBAAkBrV,EAAKsV,iBACvBC,YAAavV,EAAK6S,KAClBvD,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAOuD,mBACRqE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKiX,WAAa,MAAQjX,EAAK8V,YACtCzf,MAAO2J,EAAK+S,QAGpB,MACJ,KAAKnK,EAAOyD,qBACZ,KAAKzD,EAAOY,gBACZ,KAAKZ,EAAOwD,oBACZ,KAAKxD,EAAO6D,2BACZ,KAAK7D,EAAOoE,kCACZ,KAAKpE,EAAO+D,sBACR6D,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKsT,YACZ7B,KAAM,KACNnC,QAAS,KACTwD,SAAU9S,EAAKgT,SACf3c,MAAO2J,EAAK+S,GACZvB,SAAUxR,EAAKmW,gBACfjE,UAAWlS,EAAKmT,UAChBzB,aAAc1R,EAAKoW,kBAG3B,MACJ,KAAKxN,EAAOmE,OACRyD,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6S,KACZpB,KAAM,KACNnC,QAAS,KACTwD,SAAU,KACVzc,MAAO2J,EAAK+S,GACZvB,SAAU,KACVU,UAAW,UAGnB,MACJ,KAAKtJ,EAAO4D,uBACRgE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6S,KACZvD,QAAS,KACTjZ,MAAO2J,EAAK+S,GACZd,WAAYjS,EAAKuT,WACjBhC,kBAAmBvR,EAAKqW,kBACxBhF,OAAQzI,EAAO4D,4BAGvB,MACJ,KAAK5D,EAAOiE,cACR2D,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKoV,YACZ/e,MAAO2J,EAAK2T,UACZ7c,SAAUkJ,EAAK+T,qBAGvB,MAEJ,KAAKnL,EAAO4E,mBACRgD,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKgX,iBAAmB,KAAOhX,EAAK6S,KAC3Cxc,MAAO2J,EAAKgX,sBAGpB,MACJ,KAAKpO,EAAO6E,qBACR+C,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6S,KACZxc,MAAO2J,EAAK+S,QAGpB,MACJ,KAAKnK,EAAOsF,8BACRsC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAKsW,eACZjgB,MAAO2J,EAAK+S,GACZd,WAAYjS,EAAKuT,gBAGzB,MACJ,KAAK3K,EAAOuF,YACRqC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6U,WACZxe,MAAO2J,EAAK8U,SACZ7C,WAAYjS,EAAKuT,gBAGzB,MACJ,KAAK3K,EAAO0F,qCACRkC,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHna,MAAOma,EAAK6U,WACZxe,MAAO2J,EAAK8U,cAGpB,MACJ,QACItE,EAASnnB,EAAEiV,IAAI9N,GAAQ,SAAUwP,GAC7B,MAAO,CACHiS,WAAYjS,EAAKuT,WACjB1tB,MAAOma,EAAKiT,aACZxB,KAAMzR,EAAKkX,KACX5H,QAAStP,EAAKmX,QACd9gB,MAAO2J,EAAK+S,GACZb,UAAWlS,EAAKmT,UAChBiE,WAAYpX,EAAKqX,kBAxXjCpU,UAAU,GAEd3Z,EAAG+F,KAAKC,QAAQpF,GAZZ2+C,CAAcr4B,EAAUE,KApGxBhhB,OAAQ,SAAUuhB,EAAOlK,GAarB,OAZA0hC,GAAW,EACXC,GAAW,EACXr/C,EAAE4nB,EAAM3J,QAAQ3d,IAAIod,EAAG/G,KAAKna,OAC5B0J,EAAE9F,KAAK,UAAWsd,EAAG/G,KAAKna,OAE1B0J,EAAE9F,OAAO4M,MAAQ0Q,EAAG/G,KAAK3J,MACrB0Q,EAAG/G,KAAKwR,UACRjiB,EAAE9F,KAAK,WAAYsd,EAAG/G,KAAKwR,UAE3BzK,EAAG/G,KAAKiS,YACR1iB,EAAE9F,KAAK,aAAcsd,EAAG/G,KAAKiS,YAEzBlL,EAAG/G,KAAKqR,QACZ,KAAKzI,EAAO4D,uBACRjd,EAAE9F,KAAK,CACHwoB,WAAYlL,EAAG/G,KAAKsR,WACpBw3B,kBAAmB/hC,EAAG/G,KAAKuR,oBAOvC,OAFAo3B,EAAcp5C,IAEP,GAEXoiB,MAAO,SAAUV,EAAOlK,GACpB0hC,GAAW,EACXp/C,EAAE,QAAQ+L,YAAY,OACjBszC,GACDr/C,EAAE4nB,EAAM3J,QAAQ3d,IAAI4F,EAAE9F,KAAK,YAE/Bi/C,GAAW,EAEPj/C,EAAKslB,YACL1lB,EAAE4nB,EAAM3J,QAAQ3d,IAAI,IACpBN,EAAE4nB,EAAM3J,QAAQhO,YAGzB4W,aAAa,YAAY0B,YAAc,SAAUC,EAAI7R,GAEpD6R,EAAGnkB,IAAI,CAAEokB,aAAcroB,EAAK8I,OAAS,KAAMwf,aAAc,OAAQC,aAAc,WAE/E,IAAIV,EAAatR,EAAKiS,WAEtB,IAAKX,IAAe1I,EAAOE,MAAQwI,IAAe1I,EAAOmC,mBAAqB/K,EAAKqR,SAAWzI,EAAO4D,uBAAwB,CACzH,IACI7U,EAAQ,yBADAqI,EAAKkS,UAC8B,KAK/C,YAHkB5e,IAAd0M,EAAKyR,OACL9Z,EAAQ,IAELtO,EAAE,QACJgP,OAAO,4DAA8DV,EAAQ,gCAAkCqI,EAAKna,MAAQ,gBAC5HssB,SAASN,GAElB,OAAOxoB,EAAE,QACJgP,OAAO,QAAU2H,EAAKna,MAAQ,UAC9BssB,SAASN,IAIlBtiB,EAAE/B,IAAI,sCACDC,GAAG,YAAY,WACZpE,EAAEtE,MAAM4E,IAAI,OAEf8D,GAAG,YAAY,WACZpE,EAAEtE,MAAM4E,IAAI,OAEf8D,GAAG,WAAW,WACNg7C,EAGDA,GAAW,EAFXp/C,EAAEtE,MAAM4E,IAAI4F,EAAE9F,KAAK,eAK1BgE,GAAG,YAAY,SAAUwjB,GAED,KAAhBA,EAAMyB,OAAmC,KAAlBzB,EAAM0B,SAC9BpjB,EAAE5F,IAAI4F,EAAE9F,KAAK,eAjmBjBs/C,CAAyBv1C,IACF,aAAhBtJ,EAAQ8N,MACfxE,EAAK2B,KAAK,SAAS1L,KAAK,WAAYS,EAAQqG,UAAU9G,KAAK,MAAOS,EAAQgZ,KAsDtF,SAAyB3T,GACrB,IAAI9F,EAAO8F,EAAE9F,OAEb,OAAQA,EAAKuO,MACT,IAAK,SACDvO,EAAK4M,QAAQ9G,EAAE6L,SAAS,UACxB,MACJ,IAAK,SACL,IAAK,SACD3R,EAAK4M,OAAQ,EACb,MACJ,IAAK,QACL,IAAK,aACG5M,EAAKomB,cACLpmB,EAAKomB,aAAc,EACnBtgB,EAAE9F,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAIF,EAAKu/C,cAE1Ev/C,EAAK4M,MAAQ9G,EAAE5F,MACf,MACJ,IAAK,SAKD,GAJIF,EAAKomB,cACLpmB,EAAKomB,aAAc,EACnBtgB,EAAE9F,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAIF,EAAKu/C,cAEtEv/C,EAAKw/C,aAEQ,IADTp2C,EAAQtD,EAAE4F,KAAK,mBAAmBtC,SAElCtD,EAAEoH,QAAQ,YAAYxB,KAAKsyC,GAAah4C,KAAK,YAAY,GAAM0F,KAAK,KAAKC,YAAY,iBAC9EvC,GAAStD,EAAE4F,KAAK,UAAU5M,OAAS,GAC1CgH,EAAEoH,QAAQ,YAAYxB,KAAKuyC,GAAaj4C,KAAK,YAAY,GAAM0F,KAAK,KAAKC,YAAY,kBAG7F3L,EAAK4M,MAAQ9G,EAAE5F,MACf,MACJ,IAAK,gBAKD,GAJIF,EAAKomB,cACLpmB,EAAKomB,aAAc,EACnBtgB,EAAE9F,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAIF,EAAKu/C,cAEtEv/C,EAAKw/C,aAEQ,IADTp2C,EAAQtD,EAAE4F,KAAK,mBAAmBtC,SAElCtD,EAAEoH,QAAQ,YAAYxB,KAAKizC,GAAqB34C,KAAK,YAAY,GAAM0F,KAAK,KAAKC,YAAY,iBACtFvC,GAAStD,EAAE4F,KAAK,UAAU5M,OAAS,GAC1CgH,EAAEoH,QAAQ,YAAYxB,KAAKkzC,GAAqB54C,KAAK,YAAY,GAAM0F,KAAK,KAAKC,YAAY,kBAGrG3L,EAAK4M,MAAQ9G,EAAE5F,MACf,MACJ,IAAK,yBAMG,IAAIkJ,EADR,GAJIpJ,EAAKomB,cACLpmB,EAAKomB,aAAc,EACnBtgB,EAAE9F,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAIF,EAAKu/C,cAEtEv/C,EAAKw/C,aAEQ,IADTp2C,EAAQtD,EAAE4F,KAAK,mBAAmBtC,SAElCtD,EAAEoH,QAAQ,YAAYxB,KAxQZ,uCAwQ0C1F,KAAK,YAAY,GAAM0F,KAAK,KAAKC,YAAY,iBAC1FvC,GAAStD,EAAE4F,KAAK,UAAU5M,OAAS,GAC1CgH,EAAEoH,QAAQ,YAAYxB,KAzQZ,uCAyQ0C1F,KAAK,YAAY,GAAM0F,KAAK,KAAKC,YAAY,kBAGzG3L,EAAK4M,MAAQ9G,EAAE5F,MACf,MACJ,IAAK,aACG4F,EAAEkJ,GAAG,WACDhP,EAAKomB,cACLpmB,EAAKomB,aAAc,EACnBtgB,EAAE9F,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAIF,EAAKu/C,cAkG1F,SAAuBz5C,GACnB,IAAI9F,EAAO8F,EAAE9F,OACT4M,EAAQ9G,EAAE5F,MAEA,KAAV0M,GAAAA,MAAgBA,IAChBA,EAAQ,IAAIjS,MAGhB,IAAIu2B,EAAU,IAAIv2B,KAAKiS,GAElBskB,EAAQlzB,YACTkzB,EAAU,IAAIv2B,MAGlBmL,EAAE5F,IAAIgxB,EAAQ71B,mBACd2E,EAAK4M,MAAQ9G,EAAE5F,MACf4F,EAAE9F,KAAK,QAASkxB,EAAQ71B,mBAExBs4B,EAAU7tB,GAEMjG,EAAGoL,OAAO,SACbnF,EAAE5C,SAEf4C,EAAE6F,YAAY,iBAAiB3H,GAAG,gBAC9B,SAAUwjB,GAEN,GADAA,EAAMC,mBACc,KAAhBD,EAAMyB,OAAkC,KAAlBzB,EAAM0B,SAAiC,SAAf1B,EAAMjZ,OACjB,qBAA/BqvC,EAAyBvuC,IAC2C,GAApEzP,EAAEg+C,GAA0BnyC,QAAQ,sBAAsBipB,OAAa,CACvE,IAAI+qB,EAAW,IAAI9kD,KAAKmL,EAAE5F,OACtBy0B,EAAa8qB,EAASpkD,kBAE1B,GAAIs5B,IAAe7uB,EAAE9F,KAAK,SAGtB,OAFA8F,EAAEsX,WAAW,UAAWqiC,QACxB9rB,EAAU7tB,KAIT25C,EAASzhD,WAAayhD,EAAWvsB,GAAiBusB,EAAWtsB,KAC1DrtB,EAAE9F,KAAK,UAAY8F,EAAE9F,KAAK,SAASlB,OAAS,IAC5C2gD,EAAW,IAAI9kD,KAAKmL,EAAE9F,KAAK,WAE1By/C,EAASzhD,YACVyhD,EAAW,IAAI9kD,OAIvB,IAAIs5B,EAAUnuB,EAAEsX,WAAW,SAAU,WACjC4W,EAAUluB,EAAEsX,WAAW,SAAU,WAChC6W,GAAWwrB,EAAW,IAAI9kD,KAAKs5B,IAAcD,GAAWyrB,EAAW,IAAI9kD,KAAKq5B,GAC7EyrB,EAAW,IAAI9kD,KAAKmL,EAAE9F,KAAK,WACpB8F,EAAE9F,KAAK,iBAA0C,IAAtBy/C,EAAS3jD,UAAoD,IAAlC,IAAInB,KAAKqF,EAAK4M,OAAO9Q,SAE3EgK,EAAE9F,KAAK,gBAAwC,GAArBy/C,EAAS3jD,WAC1C2jD,EAAW,IAAI9kD,KAAKmL,EAAE9F,KAAK,WAF3By/C,EAAW,IAAI9kD,KAAKmL,EAAE9F,KAAK,UAK/B20B,EAAa8qB,EAASpkD,kBACtByK,EAAEsX,WAAW,UAAWuX,GACxB7uB,EAAEsX,WAAW,SAAU,cAAeuX,GACtC7uB,EAAE9F,KAAK,QAAS20B,GAChBhB,EAAU7tB,GACVo5C,EAAcp5C,GACd45C,EAAiC55C,OAG1CsX,WAAW,CACV2W,eAAgB,EAChBG,YAAal0B,EAAK4M,MAClBunB,iBAAiB,EACjBH,QAASh0B,EAAKszB,QACdW,QAASj0B,EAAKuzB,QACda,WAAY,GACZC,OAAQ,OACRC,SAAU,SAAUjX,EAAIC,IAChBxX,EAAE9F,KAAK,iBAAgD,IAA3B,IAAIrF,KAAK0iB,GAAKvhB,UAA+C,IAA3B,IAAInB,KAAK0iB,GAAKvhB,WAC5EuhB,EAAKvX,EAAE9F,KAAK,UAEZ8F,EAAE9F,KAAK,gBAA6C,GAA1B,IAAIrF,KAAK0iB,GAAKvhB,WACxCuhB,EAAKvX,EAAE9F,KAAK,UAEhB8F,EAAEsX,WAAW,SAAU,cAAeC,GACtCvX,EAAE5F,IAAImd,GACDrd,KAAK,QAASqd,GACnBsW,EAAU7tB,GACVo5C,EAAcp5C,GACd45C,EAAiC55C,IAErC0uB,cAAe,SAAUnf,GAEjB,IAQIof,EATR,OAAI3uB,EAAE9F,KAAK,gBAEA,GACa,KAFhBy0B,EAAYpf,EAAKvZ,WAEkB,IAAd24B,GACrB,GACA,IAGJ3uB,EAAE9F,KAAK,eAEA,CACY,KAFfy0B,EAAYpf,EAAKvZ,UAGjB,GACA,IAGD,EAAC,EAAM,GAAI,OAK9B8D,EAAEkE,UAAUC,IAAI,gCAliBE,gCAmiBbA,IAAI,gCAliBS,gCAmiBbA,IAAI,iCAliBU,iCAmiBdC,GAAG,CACA27C,gCAAiC,YApK7C,SAA2B75C,EAAG85C,GAC1B,IAAIC,EAAYD,EAAW5/C,KAAK,eAAkB,OAA2B,MACzE3C,EAAU,IAAI1C,KAAM,IAAIA,KAAKilD,EAAW5/C,KAAK,UAAWlC,UAAY+hD,GACpE7rB,EAAU,IAAIr5B,KAAKilD,EAAWxiC,WAAW,SAAU,YACvD,GAAgB,OAAZ4W,GAAoB32B,EAAU22B,EAC9B,OAEJ4rB,EAAWxiC,WAAW,SAAU,cAAe/f,GAAS+f,WAAW,UAAW/f,GAC9EuiD,EAAW5/C,KAAK,QAAS3C,EAAQhC,mBACjCs4B,EAAUisB,GACVV,EAAcU,GACdF,EAAiCE,GA0JrBE,CAAkBlgD,EAAEtE,MAAOwK,KAviBrB,gCA0iBb9B,GAAG,CACA+7C,gCAAiC,YAzJ7C,SAA2Bj6C,EAAG85C,GAC1B,IAAIC,EAAYD,EAAW5/C,KAAK,eAAkB,OAA2B,MACzEggD,EAAc,IAAIrlD,KAAKilD,EAAW5/C,KAAK,UACvC3C,EAAU,IAAI1C,KAAMqlD,EAAaliD,UAAY+hD,GAC7CG,EAAYlkD,WAAauB,EAAQvB,WACjCuB,EAAU,IAAI1C,KAAM0C,EAASS,UAAY,OAE7C,IAAIm2B,EAAU2rB,EAAWxiC,WAAW,SAAU,WAC9C,GAAgB,OAAZ6W,GAAoB52B,EAAU42B,EAC9B,OAEJ2rB,EAAWxiC,WAAW,SAAU,cAAe/f,GAAS+f,WAAW,UAAW/f,GAC9EuiD,EAAW5/C,KAAK,QAAS3C,EAAQhC,mBACjCs4B,EAAUisB,GACVV,EAAcU,GACdF,EAAiCE,GA2IrBK,CAAkBrgD,EAAEtE,MAAOwK,KA3iBrB,gCA8iBb9B,GAAG,CACAk8C,iCAAkC,YA1I9C,SAA4Bp6C,EAAG85C,GAC3B,IAAIviD,EAAU,IAAI1C,KAClB,GAAIilD,EAAW5/C,KAAK,eAAgB,CAChC,IAAIjD,EAAMM,EAAQvB,SACd0zC,EAAOnyC,EAAQ7B,UAAYuB,GAAc,GAAPA,GAAY,EAAI,GACtDM,EAAU,IAAI1C,KAAK0C,EAAQxB,QAAQ2zC,IAEvCoQ,EAAWxiC,WAAW,SAAU,cAAe/f,GAAS+f,WAAW,UAAW/f,GAC9EuiD,EAAW5/C,KAAK,QAAS3C,EAAQhC,mBACjCs4B,EAAUisB,GACVV,EAAcU,GAiIFO,CAAmBvgD,EAAEtE,MAAOwK,KA/iBrB,iCAkVP5E,CAAc4E,IAElB,MACJ,IAAK,aAsOb,SAAsBiE,GAIlB,IAHA,IAAIq2C,EAAar2C,EAAK2B,KAAK,SACvB20C,EAAiBzgD,EAAEwgD,EAAW,IAC9BE,EAAe1gD,EAAEwgD,EAAW,IACvBjlD,EAAI,EAAGA,EAAIilD,EAAWthD,OAAQ3D,IAAK,CACxC,IAAIolD,EAAe3gD,EAAEwgD,EAAWjlD,IAC5BolD,EAAavgD,KAAK,gBAClBugD,EAAavgD,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAIqgD,EAAavgD,KAAK,gBAElG,IAAI4M,EAAQ2zC,EAAavgD,KAAK,SAChB,KAAV4M,GAAAA,MAAgBA,IAChBA,EAAQ,IAAIjS,MAEhB,IAAIu2B,EAAU,IAAIv2B,KAAKiS,GAElBskB,EAAQlzB,YACTkzB,EAAU,IAAIv2B,MAGlB4lD,EAAavgD,KAAK,QAASkxB,EAAQ71B,mBACnCs4B,EAAU4sB,GAIdF,EAAe10C,YAAY,iBAAiByR,WAAW,CACnD2W,eAAgB,EAChBG,YAAamsB,EAAergD,KAAK,SACjCq0B,OAAQ,OACRC,SAAU,SAAUjX,EAAIC,GACpB+iC,EAAerjB,UAKvBsjB,EAAa30C,YAAY,iBAAiByR,WAAW,CACjD2W,eAAgB,EAChBG,YAAaosB,EAAatgD,KAAK,SAC/Bq0B,OAAQ,OACRC,SAAU,SAAUjX,EAAIC,GACpBgjC,EAAatjB,UAIrBojB,EAAWp8C,GAAG,QAAQ,SAAUwjB,GAC5BA,EAAMC,kBAed,SAA+B84B,EAAcF,EAAgBC,GACzD,IAAIb,EAAW,IAAI9kD,KAAK4lD,EAAanjC,WAAW,YAEhD,GAAmC,qBAA/BwgC,EAAyBvuC,IAC2C,GAApEzP,EAAEg+C,GAA0BnyC,QAAQ,sBAAsBipB,OAAa,CAIvE,GAHA+qB,EAAW,IAAI9kD,KAAK4lD,EAAargD,QAC7By0B,EAAa8qB,EAASpkD,oBAERklD,EAAavgD,KAAK,SAGhC,OAFAugD,EAAanjC,WAAW,UAAWqiC,QACnC9rB,EAAU4sB,QAGX,GAAI,IAAI5lD,KAAK4lD,EAAargD,OAAO7E,mBAAqBklD,EAAavgD,KAAK,SAC3E,OAGCy/C,EAASzhD,WAA0C,GAA7BuiD,EAAargD,MAAMpB,SACtCyhD,EAAavgD,KAAK,UAAYugD,EAAavgD,KAAK,SAASlB,OAAS,IAClE2gD,EAAW,IAAI9kD,KAAK4lD,EAAavgD,KAAK,WACnCy/C,EAASzhD,YACZyhD,EAAW,IAAI9kD,OAIvB,IAAIg6B,EAAa8qB,EAASpkD,kBAC1BklD,EAAanjC,WAAW,WACxBmjC,EAAanjC,WAAW,UAAWuX,GACnC4rB,EAAanjC,WAAW,SAAU,cAAeuX,GACjD4rB,EAAavgD,KAAK,QAAS20B,GAAYz0B,IAAIy0B,GAC3C4rB,EAAanjC,WAAW,UACxBuW,EAAU4sB,GASd,SAA2BF,EAAgBC,GACvC,IAAI7vB,EAAa4vB,EAAengD,MAAMpB,OAAS,EAAK,IAAInE,KAAK0lD,EAAejjC,WAAW,YAAc,IAAIziB,KAAK0lD,EAAergD,KAAK,UAC9HwgD,EAAWF,EAAapgD,MAAMpB,OAAS,EAAK,IAAInE,KAAK2lD,EAAaljC,WAAW,YAAc,IAAIziB,KAAK2lD,EAAatgD,KAAK,WAEtHywB,EAAYyC,GAAiBzC,EAAY0C,KACzC1C,EAAY,IAAI91B,KAAK0lD,EAAergD,KAAK,UACzCqgD,EAAejjC,WAAW,UAAWqT,GACrC4vB,EAAejjC,WAAW,SAAU,cAAeqT,GACnD4vB,EAAergD,KAAK,QAASywB,EAAUp1B,mBAAmB6E,IAAIuwB,EAAUp1B,mBACxEs4B,EAAU0sB,KAEVG,EAAUttB,GAAiBstB,EAAUrtB,KACrCqtB,EAAU,IAAI7lD,KAAK2lD,EAAatgD,KAAK,UACrCsgD,EAAaljC,WAAW,UAAWojC,GACnCF,EAAaljC,WAAW,SAAU,cAAeojC,GACjDF,EAAatgD,KAAK,QAASwgD,EAAQnlD,mBAAmB6E,IAAIsgD,EAAQnlD,mBAClEs4B,EAAU2sB,IAEV7vB,EAAY+vB,IACZH,EAAejjC,WAAW,UAAWojC,GACrCH,EAAejjC,WAAW,SAAU,cAAeojC,GACnDH,EAAergD,KAAK,QAASwgD,EAAQnlD,mBAAmB6E,IAAIsgD,EAAQnlD,mBACpEs4B,EAAU0sB,IA7BdI,CAAkBJ,EAAgBC,GAElCpB,EAAcqB,GAjDVG,CAAsB9gD,EAAE4nB,EAAM3J,QAASwiC,EAAgBC,MACxDt8C,GAAG,SAAS,SAAUwjB,GACrB,IAAIzd,EAAOnK,EAAEtE,MAEM,IAAfksB,EAAMyB,OAAgC,IAAjBzB,EAAM0B,QAGL,IAAf1B,EAAMyB,OAAgC,IAAjBzB,EAAM0B,SAClCnf,EAAKizB,OAHLjzB,EAAKqT,WAAW,UAAWrT,EAAK/J,KAAK,aAvRrC2gD,CAAa76C,GACb,MACJ,IAAK,UACiB,kBAAd9F,EAAKkV,OACDlV,EAAKomB,cACLpmB,EAAKomB,aAAc,EACnBtgB,EAAE9F,KAAK,eAAe,GAAOgG,KAAK,oBAAoB,GAAO9F,IAAIF,EAAKu/C,cAE1Ev/C,EAAK4M,MAAsB,iBAAb5M,EAAKkV,MAA2BpP,EAAE5F,OAI5D4F,EAAE9F,KAAKA,GAzIH4gD,CAAgB72C,OAmJxB,SAAS4pB,EAAU5pB,GACf,IACIyR,EADOzR,EAAK/J,OACEwb,OAAOwK,cACrBkL,EAAU,IAAIv2B,KAAKoP,EAAK/J,KAAK,UAEjC,OAAQwb,GACJ,IAAK,WAAYzR,EAAK7J,IAAIqb,OAAO2V,GAAS1V,OAAO,iBAC7C,MACJ,IAAK,cAAezR,EAAK7J,IAAIgxB,EAAQ70B,uBACjC,MACJ,IAAK,qBAAsB0N,EAAK7J,IAAIgxB,EAAQt0B,wBACxC,MACJ,IAAK,kBAAmBmN,EAAK7J,IAAIgxB,EAAQ50B,kBACrC,MACJ,QAASyN,EAAK7J,IAAIgxB,EAAQ71B,oBAq9BlC,SAASwlD,EAAuB/6C,EAAGg7C,GAC/B,OAAQvzC,SAASuzC,IACb,KAAKjC,GA0Fb,SAAqC/4C,GACjCA,EAAE9F,KAAK,QAAS8F,EAAE5F,OAAO8F,KAAK,aAAcF,EAAE5F,OACnC4F,EAAE9F,OAAb,IAII+gD,EADgBj7C,EAAEoH,QAAQ,YACAxB,KAAK,uBAC/B4pC,EAAWyL,EAAU/gD,KAAK,gBAC1BghD,EAAUD,EAAU/gD,KAAK,WACzBihD,EAAeF,EAAU/gD,KAAK,gBAK9BS,GADWZ,EAAGiI,eACJ,CACVvB,OAAQ,CAAE+iB,IAAKxjB,EAAE9F,OAAO4M,OACxBjH,IALM,yCAMNmB,SAIJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACdkhD,EAAK,GAELF,GAA8B,IAAlBl7C,EAAE9F,OAAO4M,OAA+B,GAAjB7F,EAAOjI,QAC1CoiD,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAOmhD,cAAgB,aACjEJ,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OACNo1C,GAKRyL,EAAU/gD,OAAO4M,MAAQ7F,EAAO,GAAGuiB,GACnCy3B,EAAU7gD,IAAI6G,EAAO,GAAGuiB,MALxB43B,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAOohD,gBAAkB,aACnEL,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OAKlB,IAAK,IAAIrB,EAAI,EAAGyyB,EAAMvqB,EAAOjI,OAAQD,EAAIyyB,EAAKzyB,IAAK,CAC/C,IAAI0yB,EAAIxqB,EAAOlI,GACfqiD,EAAGjiD,KACC,kBAAoBsyB,EAAEjI,GAAK,KAAOiI,EAAE/H,aAAe,aAI3Du3B,EAAUj1C,KAAKo1C,EAAGxqC,KAAK,KACnBuqC,GAAcI,EAAav7C,EAAGo7C,EAAGpiD,QAErCogD,EAAcp5C,MA5BlBjG,EAAG+F,KAAKC,QAAQpF,GA5GR6gD,CAA4Bx7C,GAC5B,MACJ,KAAK+4C,EACD0C,EAA8Bz7C,GAC9B,MACJ,KAAK+4C,GAgPb,SAA4C/4C,GACxCA,EAAE9F,KAAK,QAAS8F,EAAE5F,OAAO8F,KAAK,aAAcF,EAAE5F,OACnC4F,EAAE9F,OAAb,IAII+gD,EADgBj7C,EAAEoH,QAAQ,YACAxB,KAAK,uBAC/B4pC,EAAWyL,EAAU/gD,KAAK,qBAC1BwhD,EAAeT,EAAU/gD,KAAK,gBAC9BihD,EAAeF,EAAU/gD,KAAK,gBAK9BS,GADWZ,EAAGiI,eACJ,CACVvB,OAAQ,CAAE+iB,IAAKxjB,EAAE9F,OAAO4M,OACxBjH,IALM,0DAMNmB,SAIJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACdkhD,EAAK,GAELM,GAAmC,IAAlB17C,EAAE9F,OAAO4M,OAC1Bs0C,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAOyhD,mBAAqB,aACtEV,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OACNo1C,GAA6B,GAAjBvuC,EAAOjI,QAK3BiiD,EAAU/gD,OAAO4M,MAAQ7F,EAAO,GAAGuiB,GACnCy3B,EAAU7gD,IAAI6G,EAAO,GAAGuiB,MALxB43B,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAO0hD,qBAAuB,aACxEX,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OAKlB,IAAK,IAAIrB,EAAI,EAAGyyB,EAAMvqB,EAAOjI,OAAQD,EAAIyyB,EAAKzyB,IAAK,CAC/C,IAAI0yB,EAAIxqB,EAAOlI,GACfqiD,EAAGjiD,KACC,kBAAoBsyB,EAAEjI,GAAK,KAAOiI,EAAE/H,aAAe,aAI3Du3B,EAAUj1C,KAAKo1C,EAAGxqC,KAAK,KAEnBuqC,GAAcI,EAAav7C,EAAGo7C,EAAGpiD,QAErCogD,EAAcp5C,MA7BlBjG,EAAG+F,KAAKC,QAAQpF,GAlQRkhD,CAAmC77C,GACnC,MACJ,KAAK+4C,EACD0C,EAA8Bz7C,GAwL1C,SAAmCA,GAC/BA,EAAE9F,KAAK,QAAS8F,EAAE5F,OAAO8F,KAAK,aAAcF,EAAE5F,OACnC4F,EAAE9F,OAAb,IAII+gD,EADgBj7C,EAAEoH,QAAQ,YACAxB,KAAK,8CAC/B4pC,EAAWyL,EAAU/gD,KAAK,cAC1BghD,EAAUD,EAAU/gD,KAAK,SACzBihD,EAAeF,EAAU/gD,KAAK,gBAK9BS,GADWZ,EAAGiI,eACJ,CACVvB,OAAQ,CAAE+iB,IAAKxjB,EAAE9F,OAAO4M,OACxBjH,IALM,0CAMNmB,SAIJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACdkhD,EAAK,GAELF,GAA8B,IAAlBl7C,EAAE9F,OAAO4M,OACrBs0C,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAO4hD,WAAa,aAC9Db,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OACNo1C,GAA6B,GAAjBvuC,EAAOjI,QAK3BiiD,EAAU/gD,OAAO4M,MAAQ7F,EAAO,GAAG86C,eACnCd,EAAU7gD,IAAI6G,EAAO,GAAG86C,kBALxBX,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAO8hD,cAAgB,aACjEf,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OAKlB,IAAK,IAAIrB,EAAI,EAAGyyB,EAAMvqB,EAAOjI,OAAQD,EAAIyyB,EAAKzyB,IAAK,CAC/C,IAAI0yB,EAAIxqB,EAAOlI,GACfqiD,EAAGjiD,KAAK,kBAAoBsyB,EAAEswB,eAAiB,KAAOtwB,EAAE/H,aAAe,aAG3Eu3B,EAAUj1C,KAAKo1C,EAAGxqC,KAAK,KAEnBuqC,GAAcI,EAAav7C,EAAGo7C,EAAGpiD,QAErCogD,EAAcp5C,MA3BlBjG,EAAG+F,KAAKC,QAAQpF,GA1MRshD,CAA0Bj8C,GAC1B,MACJ,KAAK+4C,EACD0C,EAA8Bz7C,IAK1C,SAASu7C,EAAav7C,EAAG+5B,GACrB,IAAImiB,EAAgBl8C,EAAEoH,QAAQ,YAC1B9D,EAAQtD,EAAE4F,KAAK,iBAAmB5F,EAAE9F,OAAO4M,MAAQ,MAAMxD,QACzD64C,EAAYD,EAAct2C,KAAKizC,EAAAA,wCAC/BuD,EAAYF,EAAct2C,KAAKkzC,EAAAA,wCAEtB,GAATx1C,GACA+4C,EAAiBF,GACjBG,EAAiBF,IACV94C,GAAStD,EAAE4F,KAAK,UAAU5M,OAAS,GAC1CujD,EAAgBJ,GAChBK,EAAkBJ,KAElBG,EAAgBJ,GAChBG,EAAiBF,IAIrB,IAAI/4B,EAAOrjB,EAAEoH,QAAQ,YAAYxB,KAAKsyC,GAClCruB,EAAO7pB,EAAEoH,QAAQ,YAAYxB,KAAKuyC,GACtCkE,EAAiBh5B,GACb0W,GAAc,EACdyiB,EAAkB3yB,GAElByyB,EAAiBzyB,GAIzB,SAAS+vB,EAAiCtiC,GAEtC,IAAI4iC,EAAc,IAAIrlD,KAAKyiB,EAAWpd,KAAK,UACvCgiD,EAAgB5kC,EAAWlQ,QAAQ,YACnC+0C,EAAYD,EAAct2C,KAt4CZ,gCAu4Cdw2C,EAAYF,EAAct2C,KAt4CZ,gCAw4CduoB,EAAU7W,EAAWA,WAAW,SAAU,WAC1C6W,GAAW+rB,EAAY9hD,OAAO,GAAK,IAAIvD,KAAKs5B,GAC5CquB,EAAkBJ,GAElBE,EAAiBF,GAGrB,IAAIluB,EAAU5W,EAAWA,WAAW,SAAU,WAC1C4W,GAAWgsB,EAAY9hD,QAAQ,GAAK,IAAIvD,KAAKq5B,GAC7CmuB,EAAiBF,GAEjBI,EAAgBJ,GAIxB,SAASI,EAAgBv8C,GACrBA,EAAEE,KAAK,YAAY,GAAOiS,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,iBAIzE,SAASu2C,EAAiBr8C,GACtBA,EAAEE,KAAK,YAAY,GAAMiS,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,iBAI1E,SAASy2C,EAAiBt8C,GACtBA,EAAEE,KAAK,YAAY,GAAOiS,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,kBAIzE,SAAS02C,EAAkBx8C,GACvBA,EAAEE,KAAK,YAAY,GAAMiS,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,kBA0D1E,SAAS41C,EAA8Bz7C,GACnCA,EAAE9F,KAAK,QAAS8F,EAAE5F,OAAO8F,KAAK,aAAcF,EAAE5F,OACnC4F,EAAE9F,OAAb,IAII+gD,EADgBj7C,EAAEoH,QAAQ,YACAxB,KAAK,uBAC/B4pC,EAAWyL,EAAU/gD,KAAK,gBAC1BghD,EAAUD,EAAU/gD,KAAK,WACzBihD,EAAeF,EAAU/gD,KAAK,gBAK9BS,GADWZ,EAAGiI,eACJ,CACVvB,OAAQ,CAAE+iB,IAAKxjB,EAAE9F,OAAO4M,OACxBjH,IALM,qDAMNmB,SAIJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACdkhD,EAAK,GAELF,GAA8B,IAAlBl7C,EAAE9F,OAAO4M,OACrBs0C,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAOmhD,cAAgB,aACjEJ,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OACNo1C,GAA6B,GAAjBvuC,EAAOjI,QAK3BiiD,EAAU/gD,OAAO4M,MAAQ7F,EAAO,GAAGuiB,GACnCy3B,EAAU7gD,IAAI6G,EAAO,GAAGuiB,MALxB43B,EAAGjiD,KAAK,sBAAwB8hD,EAAU/gD,OAAOohD,gBAAkB,aACnEL,EAAU/gD,OAAO4M,MAAQ,KACzBm0C,EAAU7gD,IAAI,OAKlB,IAAK,IAAIrB,EAAI,EAAGyyB,EAAMvqB,EAAOjI,OAAQD,EAAIyyB,EAAKzyB,IAAK,CAC/C,IAAI0yB,EAAIxqB,EAAOlI,GACfqiD,EAAGjiD,KAAK,kBAAoBsyB,EAAEjI,GAAK,KAAOiI,EAAE/H,aAAe,aAG/Du3B,EAAUj1C,KAAKo1C,EAAGxqC,KAAK,KAEnBuqC,GAAcI,EAAav7C,EAAGo7C,EAAGpiD,QAErCogD,EAAcp5C,MA3BlBjG,EAAG+F,KAAKC,QAAQpF,GAqMpB,SAASk9B,EAAS73B,GACdA,EAAE9F,OAAO6lB,QAAU/f,EAAE5F,MAKzB,SAASqiD,EAAaz8C,GAClB,IAAI5F,EAAM4F,EAAE5F,MAAM6L,OAElBjG,EAAE9F,OAAO4M,MAAQ1M,EACb4F,EAAE9F,OAAO4M,QAAU9G,EAAE9F,OAAO6lB,UAC5B/f,EAAE9F,OAAO6lB,QAAU3lB,EACnBg/C,EAAcp5C,IAgDtB,SAAS08C,EAAgB18C,GAErB,GADAA,EAAE9F,KAAK,QAAS8F,EAAE5F,OACd4F,EAAE9F,KAAK,gBAAiB,CACxB,IACIoJ,EADUtD,EAAE4F,KAAK,UACDtC,MAAMxJ,EAAEkG,EAAE4F,KAAK,qBAC/Byd,EAAOrjB,EAAEoH,QAAQ,YAAYxB,KAAKsyC,GAClCruB,EAAO7pB,EAAEoH,QAAQ,YAAYxB,KAAKuyC,GACzB,GAAT70C,GACA+f,EAAKnjB,KAAK,YAAY,GAAMiS,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,iBACzEgkB,EAAK3pB,KAAK,YAAY,GAAOiS,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,mBACjExC,GAAStD,EAAE4F,KAAK,UAAU5M,OAAS,GAC1CqqB,EAAKnjB,KAAK,YAAY,GAAOiS,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,iBACxE+jB,EAAK3pB,KAAK,YAAY,GAAMiS,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,oBAEzEwd,EAAKnjB,KAAK,YAAY,GAAOiS,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,iBACxE+jB,EAAK3pB,KAAK,YAAY,GAAOiS,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,mBAIhFszC,EAAcp5C,GA4BlB,SAASqqC,IAEL,IAAIsS,EAAU7iD,EAAEkE,UACZlE,EAAEu+C,GAAYr/C,QACd2jD,EAAQ1+C,IAAI,gEAAiEo6C,GACxEn6C,GAAG,CACA0+C,uBAAwB,WACpB/kB,EAAS/9B,EAAEtE,QAEfqnD,sBAAuB,WACnBJ,EAAa3iD,EAAEtE,QAEnBsnD,uBAAwB,SAAUp7B,GACT,KAAhBA,EAAMyB,OAAmC,KAAlBzB,EAAM0B,SAC9BtpB,EAAEtE,MAAM0hC,SAGjBmhB,GAEPv+C,EAAEw+C,GAAiBt/C,QACnB2jD,EAAQ1+C,IAAI,0EAA2Eq6C,GAClFp6C,GAAG,CACA6+C,0BAA2B,WACvBllB,EAAS/9B,EAAEtE,QAEfwnD,0BAA2B,SAAUt7B,GACd,IAAfA,EAAMyB,OAAgC,IAAjBzB,EAAM0B,SAAeq5B,EAAa3iD,EAAEtE,QAEjEynD,0BAA2B,WACvB,IAAIh5C,EAAOnK,EAAEtE,MACTA,KAAKs1C,eACL1oC,aAAa5M,KAAKs1C,cAClBt1C,KAAKs1C,kBAAe/mC,GAExBvO,KAAKs1C,aAAezoC,YAAW,WAC3Bo6C,EAAax4C,KAvzDzB,OA0zDGq0C,GAEPx+C,EAAEy+C,GAAav/C,QACf2jD,EAAQ1+C,IAAI,qBAAsBs6C,GAC7Br6C,GAAG,CACAg/C,qBAAsB,WApItC,IAAwBl9C,GAAAA,EAqIWlG,EAAEtE,OApI/B0E,OAAO4M,OAAQ,EACb9G,EAAE9F,KAAK,WAGXk/C,EAAcp5C,KAkIHu4C,GAKPz+C,EAAE0+C,GAAex/C,QACjB2jD,EAAQ1+C,IAAI,6BAA8Bu6C,GACrCt6C,GAAG,CACAi/C,6BAA8B,WArI9C,IAAgCn9C,GAAAA,EAsIWlG,EAAEtE,OArIlCqW,SAAS,cACR7L,EAAE0J,SAAS,KAAKmC,SAAS,cACzB7L,EAAE9F,OAAO4M,OAAQ,EACjB9G,EAAE0J,SAAS,KAAK7D,YAAY,aAAaC,SAAS,iBAElD9F,EAAE9F,OAAO4M,OAAQ,EACjB9G,EAAE0J,SAAS,KAAK7D,YAAY,eAAeC,SAAS,cAExDszC,EAAcp5C,MA+HPw4C,GAKP1+C,EAAE2+C,GAAaz/C,SACf2jD,EAAQ1+C,IAAI,wBAAyBw6C,GACrCkE,EAAQz+C,GAAG,CACPk/C,wBAAyB,WAjIrC,IAAwBp9C,GAAAA,EAkIOlG,EAAEtE,OAjI3B0E,OAAO4M,OAAS9G,EAAE9F,OAAO4M,MAC3B9G,EAAE6B,YAAY,qBAAsB7B,EAAE9F,OAAO4M,OAAOjF,YAAY,iBAAkB7B,EAAE9F,OAAO4M,OAC3F9G,EAAE4F,KAAK,KAAK/D,YAAY,oBAAqB7B,EAAE9F,OAAO4M,OAAOjF,YAAY,eAAgB7B,EAAE9F,OAAO4M,OAClGsyC,EAAcp5C,KAgIPy4C,IAIH3+C,EAAEs+C,GAAap/C,QACf2jD,EAAQ1+C,IAAI,+CAAgDm6C,GACvDn6C,IAAI,4BAA6Bi6C,GACjCj6C,IAAI,4BAA6Bk6C,GACjCj6C,GAAG,CACAm/C,wBAAyB,WACrBxlB,EAAS/9B,EAAEtE,QAEf8nD,yBAA0B,WACtBZ,EAAgB5iD,EAAEtE,SAEvB4iD,GACFl6C,GAAG,CACAq/C,4BAA6B,WA5G7C,IAAuBv9C,EACfG,EACAxF,EACA2I,EAHetD,EA6GWlG,EAAEtE,MA5G5B2K,EAASH,EAAEoH,QAAQ,YAAYxB,KAAKwyC,GACpCz9C,EAAUwF,EAAOyF,KAAK,UAEb,IADTtC,EAAQ3I,EAAQ2I,MAAMxJ,EAAEqG,EAAOyF,KAAK,wBAEpCzF,EAAO/F,IAAIO,EAAQ2I,EAAQ,GAAGwD,OAC9B41C,EAAgBv8C,MAyGT+3C,GACFh6C,GAAG,CACAs/C,4BAA6B,WArG7C,IAAuBx9C,EACfG,EACAxF,EACA2I,EAHetD,EAsGWlG,EAAEtE,MArG5B2K,EAASH,EAAEoH,QAAQ,YAAYxB,KAAKwyC,GACpCz9C,EAAUwF,EAAOyF,KAAK,WACtBtC,EAAQ3I,EAAQ2I,MAAMxJ,EAAEqG,EAAOyF,KAAK,uBAC3BjL,EAAQ3B,OAAS,IAC1BmH,EAAO/F,IAAIO,EAAQ2I,EAAQ,GAAGwD,OAC9B41C,EAAgBv8C,MAkGTg4C,GAKPr+C,EA50D+B,uCA40DKd,QACpC2jD,EAAQ1+C,IAAI,+CA70DmB,uCA80D1BA,IAAI,gCAAiC46C,GACrC56C,IAAI,gCAAiC66C,GACrC56C,GAAG,CACAm/C,wBAAyB,WACrBxlB,EAAS/9B,EAAEtE,QAEf8nD,yBAA0B,WACtB,IACItC,EADOlhD,EAAEtE,MACQ0E,OAAOujD,UAC5B1C,EAAuBjhD,EAAEtE,MAAOwlD,KAv1Db,uCA01D1B98C,GAAG,CACAw/C,gCAAiC,WAvRjD,IAA8B19C,EACtBG,EACA66C,EACA13C,EACA3I,EAJsBqF,EAwRWlG,EAAEtE,MAvRnC2K,EAASH,EAAEoH,QAAQ,YAAYxB,KArkDA,uCAskD/Bo1C,EAAY76C,EAAOjG,OAAOujD,UAC1Bn6C,EAAQnD,EAAOyF,KAAK,mBAAmBtC,QACvC3I,EAAUwF,EAAOyF,KAAK,UACb,GAATtC,IACAnD,EAAO/F,IAAIO,EAAQ2I,EAAQ,GAAGwD,OAC9Bi0C,EAAuB56C,EAAQ66C,MAmRxBnC,GACF36C,GAAG,CACAy/C,gCAAiC,WA/QjD,IAA8B39C,EACtBG,EACA66C,EACA13C,EACA3I,EAJsBqF,EAgRWlG,EAAEtE,MA/QnC2K,EAASH,EAAEoH,QAAQ,YAAYxB,KAllDA,uCAmlD/Bo1C,EAAY76C,EAAOjG,OAAOujD,UAC1Bn6C,EAAQnD,EAAOyF,KAAK,mBAAmBtC,QACvC3I,EAAUwF,EAAOyF,KAAK,UAEtBtC,GAAS3I,EAAQ3B,OAAS,IAC1BmH,EAAO/F,IAAIO,EAAQ2I,EAAQ,GAAGwD,OAC9Bi0C,EAAuB56C,EAAQ66C,MA0QxBlC,GAIPh/C,EAt2DmC,gDAs2DKd,QACxC2jD,EAAQ1+C,IAAI,+CAv2DuB,gDAw2D9BA,IAAI,wBAr2Da,uCAs2DjBA,IAAI,wBAr2Da,uCAs2DjBC,GAAG,CACAm/C,wBAAyB,WACrBxlB,EAAS/9B,EAAEtE,QAEf8nD,yBAA0B,WACtB,IACItC,EADOlhD,EAAEtE,MACQ0E,OAAOujD,UAC5B1C,EAAuBjhD,EAAEtE,MAAOwlD,KAj3DT,gDAo3D9B98C,GAAG,CACA0/C,wBAAyB,WAxRzC,IAAkC59C,EAC1BG,EACA66C,EACA13C,EACA3I,EAJ0BqF,EAyRWlG,EAAEtE,MAxRvC2K,EAASH,EAAEoH,QAAQ,YAAYxB,KA9lDI,gDA+lDnCo1C,EAAY76C,EAAOjG,OAAOujD,UAC1Bn6C,EAAQnD,EAAOyF,KAAK,mBAAmBtC,QACvC3I,EAAUwF,EAAOyF,KAAK,UACb,GAATtC,IACAnD,EAAO/F,IAAIO,EAAQ2I,EAAQ,GAAGwD,OAC9Bi0C,EAAuB56C,EAAQ66C,MAjmDT,uCAs3DjB98C,GAAG,CACA2/C,wBAAyB,WAhRzC,IAAkC79C,EAC1BG,EACA66C,EACA13C,EACA3I,EAJ0BqF,EAiRWlG,EAAEtE,MAhRvC2K,EAASH,EAAEoH,QAAQ,YAAYxB,KA3mDI,gDA4mDnCo1C,EAAY76C,EAAOjG,OAAOujD,UAC1Bn6C,EAAQnD,EAAOyF,KAAK,mBAAmBtC,QACvC3I,EAAUwF,EAAOyF,KAAK,UAEtBtC,GAAS3I,EAAQ3B,OAAS,IAC1BmH,EAAO/F,IAAIO,EAAQ2I,EAAQ,GAAGwD,OAC9Bi0C,EAAuB56C,EAAQ66C,MA9mDT,uCA83DtBlhD,EAAE4+C,GAAgB1/C,QAClB2jD,EAAQ1+C,IAAI,6BAl7DD,6BAm7DNA,IAAI,6BAj7DE,6BAk7DNA,IAAI,8BAj7DG,8BAk7DPA,IAAI,6DAA8Dy6C,GAClEx6C,GAAG,CACA4/C,6BAA8B,WA3sB9C,IAAwB99C,EAChB+9C,EACAC,EAFgBh+C,EA4sBWlG,EAAEtE,MA3sB7BuoD,EAAgB/9C,EAAE5C,SAASwI,KAAK,UAChCo4C,EAAcD,EAAcn4C,KAAK,mBAAmBtC,QACxDy6C,EAAcn4C,KAAK,UAAUq4C,GAAGD,GAAa7rC,KAAK,YAAY,GAC9D4rC,EAAcn4C,KAAK,UAAUq4C,GAAGD,EAAc,GAAG7rC,KAAK,YAAY,GAE/C,GAAf6rC,EACAh+C,EAAEmS,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,iBACxCm4C,GAAeD,EAAcr0C,WAAW1Q,OAAS,GACxDc,EAAEkG,EAAE5C,SAASsM,WAAW,IAAIyI,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,kBAE3E9F,EAAE9F,KAAK,QAAS6jD,EAAc3jD,OAC9B2jD,EAAc7jD,KAAK,QAAS6jD,EAAc3jD,OAE1Cg/C,EAAc2E,KA1vCC,6BA27DN7/C,GAAG,CACAggD,6BAA8B,WA7rB9C,IAAwBl+C,EAChB+9C,EACAC,EAFgBh+C,EA8rBWlG,EAAEtE,MA7rB7BuoD,EAAgB/9C,EAAE5C,SAASwI,KAAK,UAChCo4C,EAAcD,EAAcn4C,KAAK,mBAAmBtC,QACxDy6C,EAAcn4C,KAAK,UAAUq4C,GAAGD,GAAa7rC,KAAK,YAAY,GAC9D4rC,EAAcn4C,KAAK,UAAUq4C,GAAGD,EAAc,GAAG7rC,KAAK,YAAY,GAE/C,GAAf6rC,EACAlkD,EAAEkG,EAAE5C,SAASsM,WAAW,IAAIyI,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,iBAChEk4C,GAAeD,EAAcr0C,WAAW1Q,OAAS,GACxDgH,EAAEmS,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,kBAEnD7F,EAAE9F,KAAK,QAAS6jD,EAAc3jD,OAC9B2jD,EAAc7jD,KAAK,QAAS6jD,EAAc3jD,OAE1Cg/C,EAAc2E,KA3wCC,6BA87DN7/C,GAAG,CACAigD,8BAA+B,YA/qB/C,SAAyBn+C,GACrB,IAAI+9C,EAAgB/9C,EAAE5C,SAASwI,KAAK,UAChCo4C,EAAcD,EAAcn4C,KAAK,mBAAmBtC,QACxDy6C,EAAcn4C,KAAK,UAAUq4C,GAAGD,GAAa7rC,KAAK,YAAY,GAK9D,IAJA,IAAIxX,EAAUojD,EAAcn4C,KAAK,UAC7Bw4C,EAAY,IAAIvpD,KAChBwpD,EAAa,IAAIxpD,KAAKiF,EAAEa,EAAQ,IAAIP,OACpCkJ,EAAQ,EACL+6C,EAAWrmD,UAAYomD,EAAUpmD,WACpCqmD,EAAa,IAAIxpD,KAAKiF,EAAEa,IAAU2I,IAAQlJ,OAG9C2jD,EAAcn4C,KAAK,UAAUq4C,GAAG36C,EAAQ,GAAG6O,KAAK,YAAY,GAE5DnS,EAAE9F,KAAK,QAAS6jD,EAAc3jD,OAC9B2jD,EAAc7jD,KAAK,QAAS6jD,EAAc3jD,OAC1CN,EAAEkG,EAAE5C,SAASsM,WAAW,IAAIyI,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,iBACvEhM,EAAEkG,EAAE5C,SAASsM,WAAW,IAAIyI,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,kBAEvEszC,EAAc2E,GA6pBEO,CAAgBxkD,EAAEtE,SA/7DlB,8BAk8DP0I,GAAG,CACAqgD,+BAAgC,WAC5B1mB,EAAS/9B,EAAEtE,QAEfgpD,gCAAiC,YA/pBjD,SAA0Bx+C,GACtBA,EAAE9F,OAAO4M,MAAQ9G,EAAE5F,MACnB,IAAI4jD,EAAch+C,EAAE4F,KAAK,mBAAmBtC,QACxCm7C,GAAa,EACbC,GAAa,EACE,GAAfV,GACAS,GAAa,EACb3kD,EAAEkG,EAAE5C,SAASimB,QAAQlR,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,kBAC3Dm4C,GAAelkD,EAr0CJ,uDAq0C2B4P,WAAW1Q,OAAS,IACjE0lD,GAAa,EACb5kD,EAAEkG,EAAE5C,SAASysB,OAAOA,QAAQ1X,KAAK,YAAY,GAAMvM,KAAK,KAAKC,YAAY,mBAEzE44C,GAAY3kD,EAAEkG,EAAE5C,SAASimB,QAAQlR,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,iBAC5E44C,GAAY5kD,EAAEkG,EAAE5C,SAASysB,OAAOA,QAAQ1X,KAAK,YAAY,GAAOvM,KAAK,KAAKE,SAAS,kBAEvFszC,EAAcp5C,GAipBE2+C,CAAiB7kD,EAAEtE,SAExBkjD,IAKP5+C,EAAEi+C,GAAa/+C,QAAUc,EAAEk+C,GAAgBh/C,QAAUc,EAAEm+C,GAAej/C,SACtE2jD,EAAQ1+C,IAAI,wBAAyB85C,GAChC75C,GAAG,CACA0gD,wBAAyB,WACX9kD,EAAEtE,MArwB1BsQ,SAAS,UACXhM,EAAEk+C,GAAgBnyC,YAAY,UAC9B/L,EAAEm+C,GAAepyC,YAAY,YAqwBlBkyC,GACF95C,IAAI,+BAAgC+5C,GACpC95C,GAAG,CACA0gD,wBAAyB,WAlwBzC,IAA0B5+C,GAAAA,EAmwBWlG,EAAEtE,OAlwBjC0E,OAAO4M,OAAQ,EACjBsyC,EAAcp5C,KAmwBHg4C,GACF/5C,IAAI,8BAA+Bg6C,GACnC/5C,GAAG,CACA0gD,wBAAyB,WACL9kD,EAAEtE,MAjwBhCsQ,SAAS,UACXhM,EAAEk+C,GAAgBlyC,SAAS,UAC3BhM,EAAEi+C,GAAalyC,YAAY,YAiwBhBoyC,GAMX0E,EAAQ1+C,IAAI,uCACPC,GAAG,uCAAuC,SAAU8B,GACjD83C,EAA2B93C,EAAE+X,UAUzC,SAASqhC,EAAcp5C,GACnB,IAAI9F,EAAO8F,EAAE9F,OACT0U,EAAS,IAGbxC,EAAOtS,EAAE8R,GAAMizC,IAAI,wBAEdx7C,MAAK,WACN,IAAIy7C,EAAOhlD,EAAEtE,MACb,IAAIspD,EAAK13C,QAAQ,MAAMyE,SAAS,UAAhC,CAGA,IAAIkzC,EAAWD,EAAK5kD,OAAOkV,KAE3B,GAAgB,aAAZ2vC,EAAyB,CACzB,IAAIzE,EAAawE,EAAKl5C,KAAK,SAC3BgJ,EAAO9U,EAAEwgD,EAAW,IAAIpgD,KAAK,SAAWJ,EAAEwgD,EAAW,IAAIpgD,KAAK,SAC9D0U,EAAO9U,EAAEwgD,EAAW,IAAIpgD,KAAK,SAAWJ,EAAEwgD,EAAW,IAAIpgD,KAAK,aAC3D,CACH,IAAIuxB,EAAIqzB,EAAK5kD,OACb0U,EAAOmwC,GAAYtzB,EAAE3kB,MACrB8H,EAAOmwC,EAAW,WAAatzB,OAItB,eAAbvxB,EAAKkV,MAAsC,eAAblV,EAAKkV,MAAsC,gBAAblV,EAAKkV,OACjElV,EAAKkV,KAAO,iBAKhB,IAAI4vC,EAAU,CAGVC,aAAc/kD,EAAK4M,OAInBo4C,EAAa,CACbC,aAAcjlD,EAAKkV,KACnBuE,IAAKzZ,EAAKyZ,KAGV1S,EAASnH,EAAEe,OAAO,GAAI+T,EAAQswC,EAAYF,GAG5B,WAAd9kD,EAAKuO,OACLzI,EAAE9F,OAAO4M,OAAQ,GAh1DzB,SAAwB7C,EAAM/J,GAAM,IAAAklD,EAC5BC,EAAcp7C,EAAK/J,KAAK,QACxBolD,EAAeplD,EAAKmlD,GACpBt9B,EAA0C,QAAhCq9B,EAAGllD,EAAKmlD,EAAc,kBAAU,IAAAD,OAAA,EAA7BA,EAA+B18B,WAC5C7iB,EAAM7B,SAAS8C,SAASC,KAE5B,GAAKs+C,IAKDp7C,EAAKiF,GAAG,yBAAZ,CAmBA,GAdmB,UAAfm2C,GACInlD,EAAKqlD,aACL1/C,EAAM9F,EAAGiW,SAASnQ,EAAK,aAAc3F,EAAKqlD,aAK/B,cAAfF,GACInlD,EAAKslD,SACL3/C,EAAM9F,EAAGiW,SAASnQ,EAAK,SAAU3F,EAAKslD,SAK3B,cAAfH,GAA8C,UAAfA,EAAyB,CACxD,IAAII,EAtLM,IAsLKhnD,OAAOyB,EAAKqlD,aAA+B,OAA2B,IAAfrlD,EAAKslD,SAAkD,IAAzB/mD,OAAOyB,EAAKslD,QAAiBtlD,EAAKqlD,WAAarlD,EAAKslD,OACxJ3/C,EAAM9F,EAAGiW,SAASnQ,EAAK,WAAY4/C,GAGnC19B,IACAliB,EAAM9F,EAAGiW,SAASnQ,EAAK,aAAckiB,IAIzCliB,EAAM9F,EAAGiW,SAASnQ,EAAKw/C,EAAaC,GACpC1lD,OAAO8lD,QAAQC,aAAa,GAAI3hD,SAASmK,MAAOtI,IAyyDhD+/C,CAAe5/C,EAAGiB,GAClBlH,EAAGoM,oBAAoBnG,EAAGiB,GA4B9B,OApWAjH,EAAM6lD,UAAY,SAAU7/C,EAAG8G,GACvB9G,GAAKA,EAAEhH,SACPgH,EAAE9F,OAAO4M,MAAQA,EACjB9G,EAAE6B,YAAY,qBAAsB7B,EAAE9F,OAAO4M,OAAOjF,YAAY,iBAAkB7B,EAAE9F,OAAO4M,OAC3F9G,EAAE4F,KAAK,KAAK/D,YAAY,oBAAqB7B,EAAE9F,OAAO4M,OAAOjF,YAAY,eAAgB7B,EAAE9F,OAAO4M,SA8U1G9M,EAAM8D,qBAAuB,WACzBA,KAKJ9D,EAAM8lD,2BAA6B,WAC/BzV,KAGJrwC,EAAM6zB,UAAY,SAAUtqB,GACxBsqB,EAAUtqB,IAOPvJ,EAtmEA,CAumETQ,OAAQb,IAEVA,GAAGoB,QAAW,SAAUjB,EAAGC,GACvB,IAAIC,EA8CEL,GA9CSoB,SAAW,GA6C1B,OAtCAf,EAAM+lD,eAAiB,SAAU97C,EAAM+7C,GAC7B/7C,aAAgBzJ,SAClByJ,EAAOnK,EAAEmK,IAEbA,EAAK4B,YAAY,UAEZm6C,GACDlmD,EAAEF,QAAQ0Q,QAAQ,WAU1BtQ,EAAMimD,eAAiB,SAAUh8C,EAAM+7C,GAC7B/7C,aAAgBzJ,SAClByJ,EAAOnK,EAAEmK,IAEbA,EAAK6B,SAAS,UAETk6C,GACDlmD,EAAEF,QAAQ0Q,QAAQ,WAQ1BtQ,EAAMkmD,mBAAqB,SAAUl6C,GACjClM,EAAE,sBAAsBkM,KAAKA,GAE7BlM,EAAEF,QAAQ0Q,QAAQ,WAGftQ,EA9CG,CA+CZQ;ACxpEF,aAYAb,GAAGiE,KAAQ,SAAU9D,EAAGC,GAGpB,IAAIC,EAAQD,EAAG6D,MAAQ,GAanBuiD,GAAU,EACVC,EAAU,GACVC,EAAcvmD,EAPK,6BAQnBwmD,EAAoBxmD,EAPJ,8BAQhBymD,EAAgBzmD,EAPG,iCASnB0mD,EACM,yBADNA,EAEM,6BAFNA,EAIQ,gBAGRC,EAEI,EAFJA,EAGQ,EAHRA,EAIO,EAGPC,EAAW,KACXC,EAPK,EAwCT,SAASC,IAEL,GADA9mD,EAAE,YAAYiT,QAAQ,QAClBozC,GAAWQ,IAAeF,EAE1B,OAuDJJ,EAAYz6C,KAAK,KAAKC,YAAY26C,GAAgB16C,SAAS06C,GAC3DJ,EAAQt6C,SAAS,UAAUD,YAAY,uBACvCu6C,EAAQniD,IAAI,iBACZoiD,EAAYpiD,IAAI,qBAAqBC,GAAG,oBAAqB2iD,GAC7DF,EAAaF,EACbN,GAAU,OAEVrmD,EAAEkE,UAAUC,IAAI,mBAAmBC,GAAG,mBAAmB,SAAUwjB,GAsBvE,IAA4B3J,GAAAA,EArBIje,EAAE4nB,EAAM3J,SAsBtBpS,QArJC,6BAqJqB3M,OAAS,GACF,SAApC+e,EAAO7X,KAAK,qBACZ6X,EAAOlM,SAAS,YAChBkM,EAAOlM,SAAS,uBAChBkM,EAAOlM,SAAS,wBAzBfw0C,EAAYz6C,KAAK,KAAKC,YAAY26C,GAAkB16C,SAAS06C,GAC7DJ,EAAQt6C,SAAS,uBAAuBD,YAAY,UACpDu6C,EAAQniD,IAAI,iBAAiBC,GAAG,gBAAiB0iD,GACjDP,EAAYz6C,KAAK,KAAKC,YAAY26C,GAAgB16C,SAAS06C,GAC3DH,EAAYpiD,IAAI,qBACZmiD,EAAQv0C,SAAS,aACjB00C,EAAc16C,YAAY,eAAeC,SAAS,MAClDw6C,EAAkBz6C,YAAY,eAAeC,SAAS,QAEtDy6C,EAAc16C,YAAY,UAAUC,SAAS,MAC7Cw6C,EAAkBz6C,YAAY,UAAUC,SAAS,OAErD66C,EAAaF,EACbN,GAAU,MA1ElBA,GAAU,EAId,SAASU,EAAiB58C,GAItB,GAHAA,EAAK0d,kBACL7nB,EAAE,YAAYiT,QAAQ,QAElBozC,GASA,GARAA,GAAU,EACNQ,IAAeF,EAmB3B,WACIJ,EAAYz6C,KAAK,KAAKC,YAAY26C,GAAkB16C,SAAS06C,GAC7DJ,EAAQt6C,SAAS,uBAAuBD,YAAY,UACpDu6C,EAAQniD,IAAI,iBAAiBC,GAAG,gBAAiB0iD,GAC7CR,EAAQv0C,SAAS,aACjB00C,EAAc16C,YAAY,eAAeC,SAAS,MAClDw6C,EAAkBz6C,YAAY,eAAeC,SAAS,QAEtDy6C,EAAc16C,YAAY,UAAUC,SAAS,MAC7Cw6C,EAAkBz6C,YAAY,UAAUC,SAAS,OAErD66C,EAAaF,EACbJ,EAAYpiD,IAAI,qBAChBkiD,GAAU,EAEVpmD,EAAGF,KAAKQ,8BAERymD,IAnCQC,GACOJ,IAAeF,GA+ElC,WACIJ,EAAYz6C,KAAK,KAAKC,YAAY26C,GAAgB16C,SAAS06C,GAC3DJ,EAAQt6C,SAAS,UAAUD,YAAY,uBAAuB5H,IAAI,iBAC9DmiD,EAAQv0C,SAAS,aACjB00C,EAAc16C,YAAY,MAAMC,SAAS,eACzCw6C,EAAkBz6C,YAAY,MAAMC,SAAS,iBAE7Cy6C,EAAc16C,YAAY,MAAMC,SAAS,UACzCw6C,EAAkBz6C,YAAY,MAAMC,SAAS,WAEjD66C,EAAaF,EACbN,GAAU,EAEVrmD,EAAEkE,UAAUC,IAAI,mBAGhBoiD,EAAYpiD,IAAI,qBAAqBC,GAAG,oBAAqB2iD,GAE7D9mD,EAAGF,KAAKQ,8BAERymD,IAlGQE,GAIAlnD,EAAE,sBAAsBd,OAAS,GAAKc,EAAE,yBAAyBd,OAAS,EAAG,CAC7E,IAAIioD,EAAcrnD,OAAOoE,SAASkjD,YAAY,YAC9CD,EAAYE,YAAY,UAAU,GAAM,EAAOvnD,OAAQ,GACvDA,OAAOwnD,cAAcH,SAGzBd,GAAU,EA6FlB,SAASW,IACL,IAAInmD,EAAU,CACVkF,IAAK,sDACLY,OAAQ,CACJ4gD,gBAAiBtnD,EAAGunD,qBACpBC,YAA4B,IAAfZ,IAIrB5mD,EAAG+F,KAAKC,QAAQpF,GA0CpB,OA/BAX,EAAM6D,kBAAoB,WAtKC,KADvBuiD,EAAUtmD,EApCK,8BAqCHd,SAIRonD,EAAQv0C,SAAS,MACjB60C,EAAW,KACJN,EAAQv0C,SAAS,YACxB60C,EAAW,UAGE,OAAbA,GACAL,EAAYz6C,KAAK,KAAKE,SAAS06C,GAC/BG,EAAaF,EACbL,EAAQt6C,SAAS,oBACjBs6C,EAAQniD,IAAI,iBAAiBC,GAAG,gBAAiB0iD,IAC7B,WAAbF,IACPL,EAAYz6C,KAAK,KAAKE,SAAS06C,GAC/BH,EAAYpiD,IAAI,qBAAqBC,GAAG,oBAAqB2iD,GAC7DF,EAAaF,KA2JrBzmD,EAAMwnD,aAAe,WACbb,IAAeF,IACfJ,EAAYz6C,KAAK,KAAKC,YAAY26C,GAAkB16C,SAAS06C,GAC7DJ,EAAQt6C,SAAS,uBAAuBD,YAAY,UACpDu6C,EAAQniD,IAAI,iBAAiBC,GAAG,gBAAiB0iD,GACjDP,EAAYz6C,KAAK,KAAKC,YAAY26C,GAAgB16C,SAAS06C,GAC3DH,EAAYpiD,IAAI,qBACZmiD,EAAQv0C,SAAS,aACjB00C,EAAc16C,YAAY,eAAeC,SAAS,MAClDw6C,EAAkBz6C,YAAY,eAAeC,SAAS,QAEtDy6C,EAAc16C,YAAY,UAAUC,SAAS,MAC7Cw6C,EAAkBz6C,YAAY,UAAUC,SAAS,OAErD66C,EAAaF,EACbN,GAAU,IASXnmD,EApPA,CAqPTQ,OAAQb;ACjQV,aAWAA,GAAGiE,KAAQ,SAAU9D,EAAGC,GAGpB,IAAIC,EAAQD,EAAG6D,MAAQ,GAQnB6jD,EAAc3nD,EAAE,gBAIhBmK,EAAO,GACPy9C,EAEa,EAFbA,EAGM,EAHNA,EAIU,EAJVA,EAKI,EALJA,EAMQ,EAiEZ,SAASC,IAEL,IAAIvnD,EAAMqnD,EAAYrnD,MAEtBA,GADAA,EAAML,EAAG6P,cAAcxP,IACb6L,OAGNhC,EAAK29C,YAAcxnD,IAGvB6J,EAAK29C,UAAYxnD,EAIjBynD,KAkDJ,SAASA,IACL,IAAK59C,IAASA,EAAKmd,WACf,OAAO,EAGX,IAOIzmB,EAAU,CACV8F,OANa,CACb2gB,WAAYnd,EAAK29C,UACjBvI,WAAYp1C,EAAK69C,YAKjBjiD,IATM,+BAUNmB,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElB,OAAQ+G,EAAO8gD,WACX,KAAKL,EACDz9C,EAAK+9C,SAASh8C,KAAK/E,EAAOghD,aAC1B,MACJ,KAAKP,EACDz9C,EAAKi+C,SAASl8C,KAAK/E,EAAOghD,aAC1B,MACJ,KAAKP,EACDz9C,EAAKk+C,SAASn8C,KAAK/E,EAAOghD,aAC1B,MACJ,KAAKP,EACDz9C,EAAKm+C,OAAOp8C,KAAK/E,EAAOghD,aACxB,MACJ,KAAKP,EACDz9C,EAAKo+C,WAAWr8C,KAAK/E,EAAOghD,aAIpCh+C,EAAKq+C,YAAYt8C,KAAK/E,EAAOshD,mBAC7Bt+C,EAAKu+C,iBAAiBx8C,KAAK/E,EAAOwhD,kBAElCx+C,EAAKy+C,UAAU18C,KAAK,IAAM/E,EAAO0hD,iBAAmB,KACpD1+C,EAAK2+C,UAAU58C,KAAK,IAAM/E,EAAO4hD,UAAY,KAC7C5+C,EAAK6+C,UAAU98C,KAAK,IAAM/E,EAAO8hD,cAAgB,KACjD9+C,EAAK++C,QAAQh9C,KAAK,IAAM/E,EAAOgiD,QAAU,KACzCh/C,EAAKi/C,YAAYl9C,KAAK,IAAM/E,EAAOkiD,YAAc,KACjDl/C,EAAKm/C,gBAAgBp9C,KAAK,IAAM/E,EAAOoiD,iBAAmB,KAG1D,IAAK,IAAIhuD,EAAI,EAAGA,EAAI4O,EAAKq/C,QAAQtqD,OAAQ3D,IACjC4O,EAAKq/C,QAAQjuD,IACb4O,EAAKq/C,QAAQjuD,GAAGuQ,KAAK,KAAK1L,KAAK,UAAU,GAAOgG,KAAK,eAAe,GAIxEe,EAAO8gD,WAAa99C,EAAK69C,aACzB79C,EAAK69C,WAAa7gD,EAAO8gD,gBAGSh+C,IAAlCE,EAAKq/C,QAAQr/C,EAAK69C,aAClB79C,EAAKq/C,QAAQr/C,EAAK69C,YAAYl8C,KAAK,KAAK1L,KAAK,UAAU,GAAMgG,KAAK,eAAe,GAAMmM,IAAI,QAI/FtS,EAAGgB,QAAQY,YAAY,sBACvB5B,EAAGgB,QAAQE,WAAU,EAAM,iBArD/BlB,EAAG+F,KAAKC,QAAQpF,GAGhBsJ,EAAKmd,WAAWpb,KAAK/B,EAAK29C,WAkG9B,OAjCA5nD,EAAMupD,gBAAkB,WACpBt/C,EAAK29C,UAAY,GACjBC,KAKJ7nD,EAAMqE,qBAAuB,WApN7B,IACQmuB,EACAg3B,EAmNuB,IAAvB/B,EAAYzoD,SApNZwzB,EAAYzyB,EAAGoL,OAAO,OACtBq+C,EAAa1pD,EArBC,qBAqBkB4P,SAAS,OAG7CzF,EAAO,CACHw9C,YAAaA,EACba,YAAaxoD,EAAE,uBACf0oD,iBAAkB1oD,EAAE,yBACpBsnB,WAAYtnB,EAAE,kBACdspD,gBAAiBtpD,EAAE,wBACnB4oD,UAAW5oD,EAAE,kBACb8oD,UAAW9oD,EAAE,kBACbgpD,UAAWhpD,EAAE,kBACbkpD,QAASlpD,EAAE,gBACXopD,YAAappD,EAAE,oBACfkoD,SAAUloD,EAAE,oBACZooD,SAAUpoD,EAAE,oBACZqoD,SAAUroD,EAAE,oBACZsoD,OAAQtoD,EAAE,kBACVuoD,WAAYvoD,EAAE,sBACd8nD,UAAW,GACXE,WAAYJ,EACZ4B,QAAS,CACL,KACAxpD,EAAE0pD,EAAW,IACb1pD,EAAE0pD,EAAW,IACb1pD,EAAE0pD,EAAW,IACb1pD,EAAE0pD,EAAW,IACb1pD,EAAE0pD,EAAW,OAehBlB,YAAYpkD,GAAG,iBAAmBsuB,EAAW,QARlD,SAAwB9K,GACpBA,EAAM/a,iBACN,IAAIvM,EAAMN,EAAEtE,MAAMoM,OAClBqC,EAAKw9C,YAAYrnD,IAAIA,GAErBunD,SAkLR3nD,EAAM2nD,qBAAuB,WACzBA,KAGJ3nD,EAAMypD,oBAAsB,SAAUC,EAASC,GArJ/C,IAQQhpD,EA8IJsJ,EAAK69C,WAAa4B,EACbC,EAAQzpD,KAAK,UAGdypD,EAAQt3C,IAAI,SAlJZ1R,EAAU,CACV8F,OANa,CACb2gB,WAAYnd,EAAK29C,UACjBvI,WAAYp1C,EAAK69C,YAKjBjiD,IATM,kCAUNmB,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElB,OAAQ+J,EAAK69C,YACT,KAAKJ,EACDz9C,EAAK+9C,SAASh8C,KAAK/E,GACnB,MACJ,KAAKygD,EACDz9C,EAAKi+C,SAASl8C,KAAK/E,GACnB,MACJ,KAAKygD,EACDz9C,EAAKk+C,SAASn8C,KAAK/E,GACnB,MACJ,KAAKygD,EACDz9C,EAAKm+C,OAAOp8C,KAAK/E,GACjB,MACJ,KAAKygD,EACDz9C,EAAKo+C,WAAWr8C,KAAK/E,GAI7BgD,EAAKq/C,QAAQr/C,EAAK69C,YAAYl8C,KAAK,KAAK1L,KAAK,UAAU,GAAMgG,KAAK,eAAe,GAAMmM,IAAI,SA1B3FzD,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,KAqJbX,EA7QA,CA8QTQ,OAAQb;ACzRV,aAcAA,GAAGiE,KAAQ,SAAU9D,EAAGC,GAGpB,IAAIC,EAAQD,EAAG6D,MAAQ,GAYnBwO,EAAO,GAEP6K,EAAW,CACX2sC,UAAW,GACX5gD,OAAQ,IACRwB,MAAO,KAGPq/C,EAAU,CACVt7B,MAAM,EACNhf,GAAI,GACJwO,OAAQ,GACR+rC,UAAW,GACXC,SAAS,GAWb,SAAShmD,IACL,IAAIimD,EAAUlqD,EA7BC,8BA+Bf,GAAuB,IAAnBkqD,EAAQhrD,OAAZ,CAEAgrD,EAAQ3gD,MAAK,WACT,IAAIY,EAAOnK,EAAEtE,MAGTmF,EAAUb,EAAEe,OAAO,GAAIoc,EAAUhT,EAAK/J,QAC1CS,EAAQ4I,QAAUU,EAClBtJ,EAAQspD,YAAc,IAAMhgD,EAAK,GAAGsF,GACpC5O,EAAQupD,UAAYjgD,EAAK,GAAGsF,GAG5BtF,EAAK/J,KAAKS,GAGVyR,EAAKjT,KAAK8K,MAGd,IAAK,IAAI5O,EAAI,EAAGm2B,EAAMpf,EAAKpT,OAAQ3D,EAAIm2B,EAAKn2B,IACxCmG,EAAW4Q,EAAK/W,KA+IxB,WAGI,SAAS8uD,IACL,IAAK,IAAI9uD,EAAI,EAAGm2B,EAAMpf,EAAKpT,OAAQ3D,EAAIm2B,EAAKn2B,IAAK,CACrC+W,EAAK/W,GACXqT,aAAa,SAkDvB5O,EAAEkE,UAAUE,GAAG,kBA5Cf,SAAkBwjB,GAEd,GAAKmiC,EAAQt7B,KAAb,CAEA,IAAIxQ,EAASje,EAAE4nB,EAAM3J,QACjBqsC,EAAersC,EAAO,GAAGxO,GAG6B,IAAtDwO,EAAOpS,QAAQ,OAASk+C,EAAQC,WAAW9qD,QAnNzB,gBAmN0CorD,GAC5DD,QAoCRrqD,EAAEkE,UAAUE,GAAG,kBA9Bf,SAAgBwjB,GAEZ,GAAKmiC,EAAQt7B,KAAb,CAGA,GAAmB,IAAf7G,EAAMyB,OAAgC,IAAjBzB,EAAM0B,QAAe,CAE7BtpB,EAAEkE,SAASqmD,eAAe,GAAG96C,GAG1C46C,IAIe,IAAfziC,EAAMyB,OAAgC,IAAjBzB,EAAM0B,SAxOT,gBAyOdygC,EAAQt6C,IAAgC+6C,QAiBpDxqD,EAAEF,QAAQsE,GAAG,mBAVb,SAAgB8B,GACRA,EAAEukD,eACFJ,OA9LRK,IAKJ,SAAShpD,EAAWwE,GAChB,IAAI9F,EAAO8F,EAAE9F,OAGTS,EAAU,CACV8N,KAAM,OACN5I,IAAK3F,EAAK0pD,UACV/7C,UAAW,eACXzI,UAAW,MACX8I,WAAW,EACXJ,OAAO,EACPM,MAAO,UACPq8C,UAA+B,gBAAnBvqD,EAAK0pD,WAAgC,GAAK,EACtDt5C,QAAS,SACTd,UAAW,wBAGfxJ,EAAE0I,aAAa,WAAWA,aAAa/N,GAClCuD,GAAG,sBAAsB,SAAU+F,EAAMygD,GACtC,IAAI1kD,EAAIlG,EAAEtE,MACVquD,EAAQC,UAAYhqD,EAAE4qD,GAAK/R,IAAI,GAAGppC,GAClCs6C,EAAQE,QAA6C,SAAlC/jD,EAAE2yC,IAAI,GAAGtuC,QAAQ6b,cACpC2jC,EAAQt7B,MAAO,KAElBrqB,GAAG,uBAAuB,SAAU+F,EAAMygD,GACvC,IAAI/pB,EAAkB7gC,EAAE,kBAAkBsN,QAAQ,sBAC9Cu9C,EAAkB/qD,OAAOkH,SAAS8jD,UACtC3gD,EAAOnK,EAAE,kBAAkB8L,KAAK,YAAc++C,EAAkB,QACpD1gD,EAAKjL,OAAS,GAAKiL,EAAKylB,QAAQhsB,UACxCi9B,EAAgBf,WAAW,CAAEirB,SAAW5gD,EAAKylB,QAAQhsB,SAASyF,IAAMrJ,EAAE,kBAAkB4D,SAASyF,IAAO,UAG/GjF,GAAG,sBAAsB,SAAU+F,EAAMygD,GACtCb,EAAQC,UAAY,GACpBD,EAAQE,SAAU,EAClBF,EAAQt7B,MAAO,EAEfzuB,EA/FW,gBA+FS+L,YAAY,SAS5C,SAAyB7F,GACrB,IAAI9F,EAAO8F,EAAE9F,OACTsyB,EAAYzyB,EAAGoL,OAAO,QAI1B,SAAS2/C,EAAY9kD,GACjBqC,YAAW,WACPrC,EAAE0I,aAAa,UALX,KAkCZ5O,EAAEkE,UAAUE,GAAG,cAAgBsuB,EAAWtyB,EAAK+pD,aAxB/C,WACI,IAAIjkD,EAAIlG,EAAEtE,MAKV,GAHAwK,EAAE8F,SAAS,OAGN+9C,EAAQt7B,KAGT,OAFAw8B,EAAU/kD,QACV8kD,EAAY9kD,GAMhB,GAAI6jD,EAAQt7B,MAAQvoB,EAAE9F,OAAO+pD,cAAgBJ,EAAQt6C,GAIjD,OAuCZ,SAAsBvJ,GAElB,IADA,IAAI9F,EAAO8F,EAAE9F,OACJ7E,EAAI,EAAGm2B,EAAMpf,EAAKpT,OAAQ3D,EAAIm2B,EAAKn2B,IAAK,CAC7C,IAAIo2B,EAAIrf,EAAK/W,GACTo2B,EAAE,GAAGliB,IAAMrP,EAAKgqD,WACpBz4B,EAAE/iB,aAAa,SA/CXs8C,CAAahlD,GACb+kD,EAAU/kD,QACV8kD,EAAY9kD,MAtID,iBAiJf9F,EAAK+pD,aACLnqD,EAAEkE,UAAUE,GAAG,oBAAsBsuB,EAAWtyB,EAAK+pD,YAAagB,GAGtEnrD,EAAE,oBAAoBmE,MAAMC,GAAG,SAAS,SAAUwjB,GAC9C,IAAIzd,EAAOnK,EAAEtE,MACRyO,EAAKiF,GAAG,OACTjF,EAAOA,EAAK7G,UAGL6G,EAAK/J,OACX+J,EAAK/J,KAAK,WACXJ,EAAEmK,EAAK/D,KAAK,SAAS0F,KAAK,mBAAmBI,KAAK,qFAItDjM,EAAG6D,KAAK6lD,oBAAoB3pD,EAAEtE,MAAM4H,SAASkG,QAAU,EAAGW,MA9D9DihD,CAAgBllD,GAsFpB,SAAS+kD,EAAU/kD,GACf6jD,EAAQt6C,GAAKvJ,EAAE9F,OAAO+pD,YACtBJ,EAAQ9rC,OAAS/X,EAAE9F,OAAO0pD,UAqE9B,SAASqB,IACDzvD,KAAKqX,OAAOzK,aAAa5M,KAAKqX,OAClCrX,KAAKqX,MAAQxK,YAAW,WACpBiiD,MACD,KAKP,SAASA,IACLvqD,EAAG6D,KAAK+jD,uBAyBZ,OATA3nD,EAAM+D,eAAiB,WACnBA,KAQG/D,EA/SA,CAgTTQ,OAAQb;AC9TV,aAeAA,GAAGiE,KAAQ,SAAU9D,EAAGC,GAGpB,IAAIC,EAAQD,EAAG6D,MAAQ,GAsCvB,SAASU,IACL,IAAIsN,EAAO,uBACPoiB,EAAMl0B,EAAE8R,GAiDZ9R,EAAEkE,UAAUE,GAAG,QAAS0N,GAjBxB,WACI,IAAI5L,EAAIlG,EAAEtE,MACN4E,EAAM4F,EAAE9F,OAAO4M,MAEnBknB,EAAItkB,SAAS,KAAK7D,YAAY,qBAAqBC,SAAS,eAC5D9F,EAAE0J,SAAS,KAAK7D,YAAY,eAAeC,SAAS,qBAEpDhM,EAAE,QAAQ+L,YAAY,QAAQA,YAAY,WAAWA,YAAY,WAAWC,SAAS1L,GAGrFL,EAAG4D,mBAxCP,SAA0BvD,GACtB,IACI+mB,EAAa,CACbwG,KAFW5tB,EAAGiI,eAECkgB,KACfijC,SAAU/qD,EACVgrD,SAAU,MAIVzqD,EAAU,CACV8F,OAAQ0gB,EACRthB,IAHM,yCAINmB,SAKJ,SAAmB9G,GACfH,EAAGF,KAAKM,4BAA4BC,GAChCN,EAAE,2BAA2Bd,OAAS,IACtCe,EAAGgB,QAAQmqC,+BACXnrC,EAAGgB,QAAQ2qC,8BAEXrjC,WAAWtI,EAAGgB,QAAQsmC,+BAAgC,IAE1DtnC,EAAGgB,QAAQu/B,uBAAuB,CAACb,SAAUtY,EAAWgkC,aAX5DprD,EAAG+F,KAAKC,QAAQpF,GA6BhB0qD,CAAiBjrD,MAgCzB,OAfAJ,EAAMsE,mBAAqB,WACvBA,KAMJtE,EAAMsrD,oBAAsB,WA7F5B,IAGQ3qD,EAAAA,EAAU,CACV8F,OAAQ,GACRZ,IAJM,iCAKN+I,QAAQ,EACR5H,SAIJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAAE,8BAA8BkM,KAAK/E,KAJzClH,EAAG+F,KAAKC,QAAQpF,IA4FbX,EAxHA,CAyHTQ,OAAQb;ACxIV,aAIAA,GAAGiO,SAAY,SAAU9N,EAAGC,GAGxB,IAcIyO,EACA+8C,EAfAvrD,EAAQD,EAAG6N,UAAY,GAWvB49C,EAAa,kBAmBb7xC,EACU,GA4Ed,SAAS8xC,EAAcvrD,GACnB,GAAIH,EAAGgB,QAAQ40C,SAAS6V,GAAa,CACjC,IAAI/0C,EArED,CACH+S,GAAI,KACJkiC,MAAO,KACPC,WAAY,KACZC,SAAU,KACVC,KAAM,KACNC,UAAW,KACXC,WAAY,KACZC,WAAY,KACZC,aAAc,EACdC,SAAU,KACVC,iBAAkB,KAClBC,sBAAuB,MA0DnBC,EAAUtsD,EAAG2U,cAAc82C,GAC/B/0C,EAAKo1C,KAAOQ,EAAQR,KACpBp1C,EAAKy1C,SAAWG,EAAQH,SACxBz1C,EAAKi1C,MAAQW,EAAQX,MACrBj1C,EAAKs1C,WAAaM,EAAQN,WAUlC,SAA4Bt1C,GACxB80C,EAAsBjuB,aAEtB,IAAI38B,EAAU,CACVkF,IAAKymD,2CACL7lD,OAAQ,CACJgQ,KAAMA,GAEVzP,SAKJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBqrD,EAAsB/tB,WAAWv2B,EAAQ,QAJ7ClH,EAAG+F,KAAKC,QAAQpF,GAnBZ4rD,CAAmB91C,GAEnB3W,EAAE0rD,GAAY5/C,KAAK,YAAYxL,IAAI,IAAIwH,KAAK,KAiDpD,OAdA5H,EAAMO,KAAO,YA/Fb,WACI,IAAIR,EAAGwR,eAAP,CAIAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACV8F,OAAQ,GACRZ,IAAKymD,uCACLtlD,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,IAEjBuH,EAAQ1O,EAAE0rD,IAEJvnD,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGuC,oBACHvC,EAAGgB,QAAQsc,qBAAqB7O,GAChCzO,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGgB,QAAQC,gBAAgBwN,GAC3BzO,EAAGgB,QAAQ08B,oBA7EM,8BA8EjB19B,EAAGgB,QAAQmB,aAAY,EAAMsM,GAC7BzO,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EAAE0rD,GAAYx8C,YACfR,MAAM,QAET+8C,EAAwBzrD,EArFH,8BAsFrByrD,EAAwBxrD,EAAGgB,QAAQ08B,oBAtFd,+BA2DrB7uB,QAAQ,EACRgL,gBAAgB,GAGpB7Z,EAAG+F,KAAKC,QAAQpF,IAkFhB6rD,IAMJxsD,EAAMC,qBAAuB,SAAUC,GACtBA,EAGFyZ,MAAQA,GAAc8xC,KAG9BzrD,EA1KI,CA2KbQ,OAAQb;AC/KV,aAIAA,GAAG8sD,qBAAwB,SAAU3sD,EAAGC,GAGpC,IAWIyO,EACAgL,EAZAxZ,EAAQD,EAAG0sD,sBAAwB,GAgBnCC,EAAe,GACfzvC,EAAW,CACX0vC,eAAgB,KAChBC,aAAc,MAQdjzC,EACS,GADTA,EAEY,GAFZA,EAIc,IAJdA,EAKgB,IAiCpB,SAASkzC,EAAyB3sD,GAC9BA,EAAK4sD,cAxDuB,6BAyD5B5sD,EAAK6sD,SAAWpzC,EAChBzZ,EAAK8sD,QAAwB,IAAf9sD,EAAK4M,MAAiB,8BAAgC,kCACjD,IAAf5M,EAAK4M,OAAkBhN,EAAE,kBAAoBI,EAAK4M,MAAQ,IA3DlC,8BA2DkE9N,OAAS,EACnGkB,EAAK8F,EAAE9F,KAAK,CACR6lB,QAAS,KACTjZ,MAAO,OACR1M,IAAI,IAGX6sD,EAAuB/sD,GAI3B,SAAS+sD,EAAuB/sD,GAC5B,IAAIS,EAAU,CACVkF,IA3EgB,kBA2ES3F,EAAK8sD,OAC9BvmD,OAAQ,CACJ+iB,GAAI/b,UAAwB,IAAfvN,EAAK4M,MAAiB5M,EAAK4M,MAAQ5M,EAAKqN,WAEzDvG,SAMJ,SAAmBC,GACXA,EAAO/G,QAiEnB,SAA6BA,GACzB,IAAIS,EAAU,CACVkF,IAAKqnD,qCACLzmD,OAAQ,CACJ0mD,YAAajtD,EAAK6sD,SAClBK,KAAMltD,EAAK6sD,WAAapzC,GAE5BD,UAAU,EACV9K,QAAQ,EACR5H,SAGJ,SAAmBC,GACXA,EAAO/G,OACPJ,EAAEI,EAAK4sD,eAAe9gD,KAAK/E,EAAO/G,MAClCH,EAAGgB,QAAQE,WAAU,EAAMnB,EAAEI,EAAK4sD,mBAJ1C/sD,EAAG+F,KAAKC,QAAQpF,GA3ER0sD,CAAoBntD,GACpBA,EAAK8F,EAAE9F,KAAK,CACR6lB,QAAS,KACTjZ,MAAO,OACR1M,IAAI,IAEHssD,EAAaC,gBAAyD,mBAAhCD,EAAaC,gBACnDD,EAAaC,eAAezsD,KAdpCwZ,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAiIpB,OA5BAX,EAAMO,KAAO,aAMbP,EAAMstD,8BAAgC,SAAU3sD,GAC5C+rD,EAAe5sD,EAAEe,OAAO,GAAIoc,EAAUtc,GAnF1C,WACI,IAAIZ,EAAGwR,eAAP,CAIAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACV8F,OAAQ,GACRZ,IAAKqnD,8CACLlmD,SAQJ,SAAmBC,GAEfnH,EAAE,QAAQgP,OAAO7H,EAAO/G,OAExBsO,EAAQ1O,EAhIC,iCAkIHmE,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGgB,QAAQW,WAAU,EAAM8M,GAC3BzO,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGgB,QAAQC,gBAAgBwN,GACZ,OAAXgL,IACAA,EAAS,IAAIyC,QAETlc,EAAGoZ,WACXpZ,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EA7IK,gCA6ISkP,SACV09C,EAAa/6C,cAAqD,mBAA9B+6C,EAAa/6C,cACjD+6C,EAAa/6C,kBAElBnD,MAAM,SA5BTI,QAAQ,EACRgL,gBAAgB,EAChBF,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IAqEhB2sD,IAGJttD,EAAM6sD,yBAA2B,SAAUlsD,GACvCksD,EAAyBlsD,IAG7BX,EAAMC,qBAAuB,SAAUC,GACnC,OAAQA,EAAKyZ,KACT,KAAKA,EACL,KAAKA,GA/Jb,SAAmCzZ,GAC/BA,EAAK4sD,cA1CwB,8BA2C7B5sD,EAAK6sD,SAAWpzC,EAChBzZ,EAAK8sD,QAAwB,IAAf9sD,EAAK4M,MAAiB,+BAAiC,mCAClD,IAAf5M,EAAK4M,OAAkBhN,EAAE,kBAAoBI,EAAK4M,MAAQ,IA7CjC,+BA6CkE9N,OAAS,EACpGkB,EAAK8F,EAAE9F,KAAK,CACR6lB,QAAS,KACTjZ,MAAO,OACR1M,IAAI,IAGX6sD,EAAuB/sD,GAqJfqtD,CAA0BrtD,GAC1B,MACJ,KAAKyZ,EACL,KAAKA,EACDkzC,EAAyB3sD,KAK9BF,EA9NgB,CA+NzBQ,OAAQb;ACnOV,aAIAA,GAAG4F,gBAAmB,SAAUzF,EAAGC,GAG/B,IAAIC,EAAQD,EAAGytD,aAAe,GAc1BhC,EAAa,yBAIbiC,GADwB3tD,EARC,+BASR,GACjB4tD,GAAU,EACVC,EAAY,GAOZh0C,EACiB,IAwHrB,OAnBA3Z,EAAMO,KAAO,aAEbP,EAAMwF,wBAA0B,SAAUooD,EAAcC,GACpDJ,EAAgBG,EAChBF,EAASG,EA7Fb,WACI,IAAI9tD,EAAGwR,eAAP,CAIAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACV8F,OAAQ,CACJgnD,cAAeA,EACfC,OAAQA,GAEZ7nD,IAAK7C,yCACLgE,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,GAETnH,EAAE0rD,GAEJvnD,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGuC,oBACHvC,EAAGgB,QAAQW,WAAU,EAAM8pD,GAC3B1rD,EAAE,aAAauJ,MAAK,WAChBskD,EAAUxuD,KAAK2uD,QAAQtyD,KAAM,CACzBuyD,UAAU,EACVC,UAAU,EACVC,QAAS,SACV,WACCzyD,KAAKqQ,YAAY,iBAGzB9L,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EAAE0rD,GAAYx8C,SACd,IAAK,IAAI3T,EAAI,EAAGA,EAAIsyD,EAAU3uD,OAAQ3D,IAClCsyD,EAAUtyD,GAAG6yD,aAElB1/C,MAAM,QAEe1O,EA9EH,8BA+EGC,EAAGgB,QAAQ08B,oBA/Ed,+BA4CrB7uB,QAAQ,EACRgL,gBAAgB,GAGpB7Z,EAAG+F,KAAKC,QAAQpF,IA6EhB6E,IAIJxF,EAAMC,qBAAuB,SAAUC,GACnC,IAAI+G,EAAS/G,EAEb,OAAQ+G,EAAO0S,KACX,KAAKA,GAhDb,SAAuCzZ,GACnC,IAAIS,EAAU,CACV8F,OAAQ,CACJgnD,cAAeA,EACfC,OAAQA,EACRS,cAAejuD,EAAK4M,OAExBjH,IAAK7C,+CACLgE,SAKJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAjGuB,6BAiGKkM,KAAK/E,EAAOmnD,wBAAwBC,qBAChEvuD,EAjGgB,sBAiGKkM,KAAK/E,EAAOqnD,iBAAiBD,uBALtDtuD,EAAG+F,KAAKC,QAAQpF,GAsCR4tD,CAA8BtnD,KAKnCjH,EAvJW,CAwJpBQ,OAAQb;AC5JV,aAIAA,GAAG6uD,aAAgB,SAAU1uD,EAAGC,GAG5B,IAeIyZ,EAfAxZ,EAAQD,EAAGyuD,cAAgB,GAsB3B70C,EACc,GADdA,EAEe,GAFfA,EAGiB,GAHjBA,EAIe,GASnB,SAAS80C,EAAoBvuD,GAY7B,IAAuCwtD,EAAQgB,EACvC/tD,EAZAT,EAAK8F,EAAE6L,SAAS,kBAChB3R,EAAK8F,EAAE6F,YAAY,iBAAiBC,SAAS,eAUd4hD,GATAxtD,EAAKqN,SASGmhD,GATQxuD,EAAK8F,EAAEoH,QAAQ,iBAAiBlN,KAAK,SAUpFS,EAAU,CACVkF,IAAK7C,+CACLyD,OAAQ,CACJinD,OAAQA,EACRgB,MAAOA,GAEX1nD,SAKJ,SAAmB9G,GAEf,GADaA,EAAKA,KACN,CACRyuD,GAAoB,GACpB,IAAIC,EAAoB9uD,EAlDhB,oBAkDiC8L,KAAK,mBAAqB8hD,EAAS,MACxEkB,EAAkB5vD,OAAS,GAC3B4vD,EAAkBhjD,KAAK,kBAAkBC,YAAY,iBAAiBC,SAAS,oBAGnF0N,EAASA,GAAU,IAAIyC,QAChBC,MAAM,qEAZrBnc,EAAG+F,KAAKC,QAAQpF,KAjBZT,EAAK8F,EAAE6F,YAAY,eAAeC,SAAS,iBAoCnD,SAA0C4hD,EAAQgB,GAC9C,IAAI/tD,EAAU,CACVkF,IAAK7C,kDACLyD,OAAQ,CACJinD,OAAQA,EACRgB,MAAOA,GAEX1nD,SAKJ,SAAmB9G,GACFA,EAAKA,MAEdyuD,GAAoB,GACpB7uD,EA/EQ,oBA+ES8L,KAAK,mBAAqB8hD,EAAS,mBAAmB7hD,YAAY,eAAeC,SAAS,iBAC3GhM,EAAE+uD,iBAAiBjjD,KAAK,mBAAqB8hD,EAAS,kBAAoBgB,EAAQ,mBAAmB7iD,YAAY,eAAeC,SAAS,mBAEzI0N,EAASA,GAAU,IAAIyC,QAChBC,MAAM,qFAVrBnc,EAAG+F,KAAKC,QAAQpF,GA7CZmuD,EAAkC5uD,EAAKqN,UAAWrN,EAAK8F,EAAEoH,QAAQ,iBAAiBlN,KAAK,WAiG/F,SAASyuD,EAAoBI,GACzB,IAAIpuD,EAAU,CACVkF,IAAK7C,qCACLyD,OAAQ,GACRO,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClB,GAAI+G,EAAQ,CACR,IAAIuI,EAAY1P,EA7IL,yBA8IP0P,EAAUxQ,OAAS,IACnBwQ,EAAUxD,KAAK/E,GACflH,EAAGgB,QAAQE,WAAU,EA/IZ,sBAgJTlB,EAAGgB,QAAQY,YAhJF,4BAmJb6X,EAASA,GAAU,IAAIyC,QAChBC,MAAM,+EAjBjBtN,QAAQ,EACR8K,SAAUq1C,IAAc,GAG5BhvD,EAAG+F,KAAKC,QAAQpF,GA4CpB,OApBAX,EAAMO,KAAO,aAKbP,EAAMC,qBAAuB,SAAUC,GACnC,IAAI+G,EAAS/G,EAEb,OAAQA,EAAKyZ,KACT,KAAKA,EACL,KAAKA,EACL,KAAKA,EACD80C,EAAoBxnD,GACpB,MACJ,KAAK0S,GAlFb,SAAyCzZ,GACrC,IAAI8uD,EAAgB,GACpBlvD,EA9FmB,yBA8FC8L,KAAK,iBAAiBvC,MAAK,SAAUC,EAAOW,GAC5D+kD,EAAc7vD,KAAK,CACfwH,OAAQ7G,EAAEtE,MAAM0E,KAAK,YACrB+uD,cAAenvD,EAAEtE,MAAM0E,KAAK,SAC5BgvD,QAAS5lD,OAGjB,IAAI3I,EAAU,CACVkF,IAAK7C,iDACLyD,OAAQ,CACJ0oD,SAAUH,GAEdhoD,SAKJ,SAAmB9G,GACFA,EAAKA,OAEdsZ,EAASA,GAAU,IAAIyC,QAChBC,MAAM,oEANrBnc,EAAG+F,KAAKC,QAAQpF,GAkERyuD,KAKLpvD,EAlMQ,CAmMjBQ,OAAQb;ACvMV,aAAAA,GAAG0vD,cAAiB,SAAUvvD,EAAGC,GAG7B,IAaIgpC,EACAumB,EAEWC,EAAKC,EAEhBC,EACAC,EACAC,EACAC,EACAC,EAEAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGA9zD,EAjCA0D,EAAQD,EAAGsvD,eAAiB,GAO5BgB,EAAY,iBAEZC,EAAe,sBACfC,EAAe,sBAafC,GAAa,EAQbC,GAAa,EACbj3C,EAAS,IAAIyC,OAQbtC,EAAM,CACN+2C,WAAY,IACZC,YAAa,KACbC,YAAa,KACbC,gBAAiB,KACjBC,kBAAmB,KACnBC,aAAc,KACdC,WAAY,KACZC,WAAY,MA4DhB,SAASC,EAAkBC,GACvB,IAAIpxD,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACVkF,IAAKwqD,EAAY,gBACjB5pD,OAAQ,CAAE0qD,sBAA+C,IAArBA,GAA2CA,GAC/EnqD,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,GACjB,IAAIuH,EAAQ1O,EAAEwwD,GAEd9hD,EAAMvK,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGuC,oBACH,IAAI3B,EAAU,CACV6O,UAAW,uBACX3J,IAAKwqD,EAAY,eAEjB7hD,EAAM5C,KAAK,wBAAwB5M,OAAS,KAiL5D,SAA0B2B,GAGtBywD,SAASC,cAAe,EAGxB,IAcIC,EAAOxxD,EAAEe,OAAO,GAdL,CACX0wD,YAAa,GACbC,SAAU,EACV3rD,IAAK,GACLmB,SAAU,GACVyqD,UAAW,QACXjiD,UAAW,GACXkiD,SAAU,GACVC,WAAY,GACZC,SAAU,GACVC,UAAU,GAIoBlxD,GAClC2wD,EAAK9gD,SAAU,EAEe,iBAAnB8gD,EAAK9hD,YACZ8hD,EAAK9hD,UAAY1P,EAAEwxD,EAAK9hD,YAG5B,IAAIsiD,EAAKR,EAAK9hD,UACd,GAAkB,IAAdsiD,EAAG9yD,OACH,OAsCJ8yD,EAAGD,SAAS,CACRE,UAAWT,EAAKG,UAChBF,YAAaD,EAAKC,YAClBS,kBAAkB,EAClBC,gBAAgB,EAChBC,gBAAiB,EACjBV,SAAUF,EAAKE,SACfW,qBAAsB,EACtBC,cAAe,UACfC,WAAW,EACXxsD,IAAKyrD,EAAKzrD,IACVtF,KAAM,WACF,IAAI+xD,EAAa92D,KAEjBA,KAAK0I,GAAG,WAAW,SAAUquD,EAAMtrC,GAC/BqrC,EAAWE,eAAeD,GAjDtC,SAAwBt9C,EAAOgS,GAC3BsoC,EAAIkD,UAAU,EAAG,EAAGjD,EAAOhlD,MAAOglD,EAAOxmD,QACzCsmD,EAAcr6C,EACdnV,EAjVS,eAiVK+L,YAAY,wBAAwBC,SAAS,eAAeqM,KAAK,WAAY,MAE3F,IAAIu6C,EAAS,IAAIC,WACjBD,EAAOE,OAAS,SAAUlrC,GACtB,IAAImrC,EAAQ,IAAIC,MAChBD,EAAMD,OAAS,WAEX,IAAIG,EAAWj1D,KAAK0V,IAAI1T,EAAEF,QAAQ4K,QAAS1K,EAAEwwD,GAAc9lD,SAlV/D,GAmVQ6J,EAAYvW,KAAK0V,IAAI1T,EAAEF,QAAQoJ,SAAUlJ,EAAEwwD,GAActnD,UAI7D,IAHAwmD,EAAOhlD,MAAQqoD,EAAMroD,MACrBglD,EAAOxmD,OAAS6pD,EAAM7pD,OAEfwmD,EAAOhlD,MAAQuoD,GAClBvD,EAAOhlD,MAAuB,IAAfglD,EAAOhlD,MACtBglD,EAAOxmD,OAAyB,IAAhBwmD,EAAOxmD,OAE3B,KAAOwmD,EAAOxmD,OAASqL,GACnBm7C,EAAOhlD,MAAuB,IAAfglD,EAAOhlD,MACtBglD,EAAOxmD,OAAyB,IAAhBwmD,EAAOxmD,OAE3BumD,EAAIyD,UAAUH,EAAO,EAAG,EAAGrD,EAAOhlD,MAAOglD,EAAOxmD,SAGpD6pD,EAAMI,IAAMz3D,KAAKyL,QAGrByrD,EAAOQ,cAAcj+C,GAqBbk+C,CAAeZ,MAChBruD,GAAG,YAAY,SAAUquD,GACnBA,EAAKa,WACD92D,IACDA,EAAQyD,EAAGoZ,YAEfK,EAAO0C,MAAM5f,EAAoC,qCAzQrD+2D,CAAiB1yD,GAkRjB,IAAI2yD,EAAgB,gBAjRP,IAEjBvzD,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGgB,QAAQkB,SAAQ,EAAMuM,GACzBzO,EAAGgB,QAAQmB,aAAY,EAAMsM,GAC7B1O,EAnIK,eAmISqY,KAAK,YAAY,GAC/BpY,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EAAEwwD,GAActhD,SACZ8gD,GAA8D,mBAA5BA,GAClCA,OAELthD,MAAM,SAjCTI,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IAmEpB,SAAS4yD,EAAgBrzD,GACjBA,IACA+vD,GAAkB/vD,EAAKqN,UAE3B,IAAI5M,EAAU,CACVkF,IAAKwqD,EAAY,kBACjB5pD,OAAQ,CACJ+sD,QAASvD,EACTC,eAAgBA,EAChBO,WAAYA,EACZU,iBAAkBhB,EAClBC,cAAeA,GAEnBppD,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAAE,cAAckM,KAAK/E,EAAO,IAC5BnH,EAAEywD,GAAc3kD,KAAK,iBAAiBI,KAAK/E,EAAO,IAClDnH,EAAE,eAAeoG,KAAK,OAAQpG,EAAE,gBAAgBI,KAAK,QACrDH,EAAGgB,QAAQE,WAAU,EAAM,MAC3BlB,EAAGgB,QAAQkB,SAAQ,EAAM,MACzBlC,EAAGgB,QAAQmB,aAAY,EAAM,MACJ,IAArB8tD,EAAUhxD,SACVc,EAAE,mBAAmBsD,SAAS4L,SAC9BlP,EAAE,cAAc+L,YAAY,aAAaC,SAAS,eAftD4N,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GA0QpB,SAAS8yD,IACLnE,EAAc,KACdxvD,EA9ca,eA8cC+L,YAAY,eAAeC,SAAS,wBAAwBqM,KAAK,YAAY,GAE3Fo3C,EAAIkD,UAAU,EAAG,EAAGjD,EAAOhlD,MAAOglD,EAAOxmD,QACzCwmD,EAAOhlD,MAAQmlD,EACfH,EAAOxmD,OAAS0mD,EAChBH,EAAImE,KAAO,iBACXnE,EAAIoE,UAAY,UAChBpE,EAAIqE,SAAS,8BAA+B,GAAI,GAAIpE,EAAOhlD,MAAQ,KACnE+kD,EAAIqE,SAAS,wCAAyC,GAAI,GAAIpE,EAAOhlD,MAAQ,KAC7E+kD,EAAIqE,SAAS,6CAA8C,GAAI,IAAKpE,EAAOhlD,MAAQ,KACnF+kD,EAAIqE,SAAS,0CAA2C,GAAI,IAAKpE,EAAOhlD,MAAQ,KAUpF,SAAS8oD,EAAgBO,EAAWC,GAChC,IAAIC,EAAQv4D,KACZg0D,EAASxrD,SAASqH,eAAewoD,GACjClE,EAAYH,EAAOhlD,MACnBklD,EAAaF,EAAOxmD,QACpBumD,EAAMvrD,SAASqH,eAAewoD,GAAWG,WAAW,OAChDN,KAAO,iBACXnE,EAAIoE,UAAY,UAChBpE,EAAIqE,SAAS,8BAA+B,GAAI,GAAIpE,EAAOhlD,MAAQ,KACnE+kD,EAAIqE,SAAS,wCAAyC,GAAI,GAAIpE,EAAOhlD,MAAQ,KAC7E+kD,EAAIqE,SAAS,6CAA8C,GAAI,IAAKpE,EAAOhlD,MAAQ,KACnF+kD,EAAIqE,SAAS,0CAA2C,GAAI,IAAKpE,EAAOhlD,MAAQ,KAChF,IAGIypD,EACAC,EAJAC,GAAe,EAOnBnwD,SAASgmC,iBAAiB,WAAW,SAAUhkC,GAC3C+tD,EAAMK,mBAAmBpuD,MAC1B,GACHhC,SAASgmC,iBAAiB,SAAS,SAAUhkC,GACzC+tD,EAAMM,qBAAqBruD,MAC5B,GACHhC,SAASgmC,iBAAiB,SAAS,SAAUhkC,GACzC+tD,EAAMO,WAAWtuD,MAClB,GAGHxK,KAAK+E,UAOGT,EAAE,aAAad,OACfi1D,EAAen0D,EAAE,aAAa,KAGlCm0D,EAAejwD,SAAS80B,cAAc,QACzBwP,aAAa,KAAM,YAChC2rB,EAAa3rB,aAAa,kBAAmB,IAC7C2rB,EAAa7lD,MAAMmmD,QAAU,6CAC7BN,EAAa7lD,MAAMomD,WAAa,QAChCP,EAAa7lD,MAAM5D,MAAQ,OAC3BxG,SAASgH,KAAKu9B,YAAY0rB,GAC1BjwD,SAASqH,eAAe,YAAY2+B,iBAAiB,sBAAsB,WACvE,GAAkB,QAAdkqB,GAAwC,GAAhBC,EACxB,OAAO,EAEyB,GAAhCF,EAAavkD,SAAS1Q,QACoB+K,MAAtCkqD,EAAaQ,kBAAkBxB,KAE/Bc,EAAMW,kBAAkBT,EAAaQ,kBAAkBxB,KAI/D5qD,YAAW,WACP4rD,EAAah8C,UAAY,KAC1B,OACJ,KAGPzc,KAAK84D,WAAa,SAAUtuD,GACxBkuD,EAAa,GACbD,EAAah8C,UAAY,GAEzB,GAAIjS,EAAE2uD,cAAe,CACjB,IAAIpzB,EAAQv7B,EAAE2uD,cAAcpzB,MAC5B,GAAIA,EAAO,CACP2yB,EAAa,OAEb,IAAK,IAAIn1D,EAAI,EAAGA,EAAIwiC,EAAMviC,OAAQD,IAC9B,IAAwC,IAApCwiC,EAAMxiC,GAAG0P,KAAK4H,QAAQ,SAAiB,CAEvC,IAAIu+C,EAAOrzB,EAAMxiC,GAAG81D,YAEhB9tC,GADSnnB,OAAO4nB,KAAO5nB,OAAOk1D,WACdC,gBAAgBH,GACpCp5D,KAAKk5D,kBAAkB3tC,GAG/B/gB,EAAE2G,oBASdnR,KAAK44D,mBAAqB,SAAU1sC,GAQhC,IALS,KAFTqhB,EAAIrhB,EAAM0B,UAEK1B,EAAMsW,SAAWtW,EAAM8S,UACd,GAAhB25B,IACAA,GAAe,GAGd,IAALprB,EAAS,CACT,GAA8Bh/B,MAA1B/F,SAASqmD,eAA6D,QAA/BrmD,SAASqmD,cAAc57C,KAE9D,OAAO,EAGS,GAAhB0lD,GACAF,EAAalkD,UAIzBvU,KAAK64D,qBAAuB,SAAU3sC,IAGzB,KAFTqhB,EAAIrhB,EAAM0B,UAEK1B,EAAMsW,SAAWtW,EAAM8S,SAAwB,QAAb9S,EAAMxR,OACnDi+C,GAAe,IAGvB34D,KAAKk5D,kBAAoB,SAAU3tC,IAC/B0oC,EAAc,IAAIqD,OACNF,OAAS,WACjB,GAAkB,GAAdkB,EAAoB,CAEpB,IAAIf,EAAWj1D,KAAK0V,IAAI1T,EAAEF,QAAQ4K,QAAS1K,EAAEwwD,GAAc9lD,SAvlB/D,GAwlBQ6J,EAAYvW,KAAK0V,IAAI1T,EAAEF,QAAQoJ,SAAUlJ,EAAEwwD,GAActnD,UAG7D,IAFAwmD,EAAOhlD,MAAQilD,EAAYjlD,MAC3BglD,EAAOxmD,OAASymD,EAAYzmD,OACrBwmD,EAAOhlD,MAAQuoD,GAClBvD,EAAOhlD,MAAuB,IAAfglD,EAAOhlD,MACtBglD,EAAOxmD,OAAyB,IAAhBwmD,EAAOxmD,OAE3B,KAAOwmD,EAAOxmD,OAASqL,GACnBm7C,EAAOhlD,MAAuB,IAAfglD,EAAOhlD,MACtBglD,EAAOxmD,OAAyB,IAAhBwmD,EAAOxmD,YAK3BumD,EAAIkD,UAAU,EAAG,EAAGjD,EAAOhlD,MAAOglD,EAAOxmD,QAE7CumD,EAAIyD,UAAUvD,EAAa,EAAG,EAAGD,EAAOhlD,MAAOglD,EAAOxmD,QACtDlJ,EA/mBK,eA+mBS+L,YAAY,wBAAwBC,SAAS,eAAeqM,KAAK,WAAY,OAE/Fs3C,EAAYwD,IAAMlsC,GAwB1B,SAASiuC,EAAqB90D,GAC1B,IAAI+G,EAAS/G,EAGT+G,EAAO0S,MAAQA,EAAI+2C,YAzP3B,SAAmBxwD,GACfA,EAAK8F,EAAE4F,KAAK,OAAO1F,KAAK,UAAW,MACnC,IAAI+uD,EAAen1D,EAAEob,UAAUhb,EAAK8F,EAAEgG,QACtC9L,EAAK8F,EAAE8F,SAAS,YAAYqM,KAAK,YAAY,GAAMnM,KAAK,+CACxD,IAAIkpD,EAAYn1D,EAAG2U,cAAcxU,EAAK8F,EAAEoH,QAAQ,WAChD,GAAIkiD,EAAa,CACb,IAAI6F,EAAW,IAAIC,SACnBD,EAASrmD,OAAO,QAASwgD,GACzB6F,EAASrmD,OAAO,aAAcomD,EAAUG,YACxCF,EAASrmD,OAAO,eAAgBomD,EAAUI,cAE1C,IAAI30D,EAAU,CACVkF,IAAKwqD,EAAY,oBACjB5pD,OAAQ0uD,EACRnuD,SAAUuuD,EACV77C,UAAU,EACVG,aAAa,EACbE,aAAa,GAGjBha,EAAG+F,KAAKC,QAAQpF,OACb,CACH,IAAIkyD,EAAQrD,EAAOgG,UAAU,cAC7B3C,EAAQA,EAAM3mD,QAAQ,0BAA2B,IAE7CvL,EAAU,CACVkF,IAAKwqD,EAAY,yBACjB5pD,OAAQ,CACJgvD,UAAW5C,EACXroD,MAAOilD,EAAYjlD,MACnBxB,OAAQymD,EAAYzmD,OACpB0sD,WAAYR,EAAUG,WACtBM,aAAcT,EAAUI,cAE5BtuD,SAAUuuD,EACV77C,UAAU,EACVK,YAAa,mCAGjBha,EAAG+F,KAAKC,QAAQpF,GAGpB,SAAS40D,EAAUtuD,GACXA,EAAO/G,OACPovD,EAAc,KACdM,EAAY3oD,EAAO/G,KAAM+G,EAAO+U,kBAAkB,cAClDlc,EAAE,+BAA+BM,IAAI,IACrCN,EAAE,iCAAiCM,IAAI,IACvCqzD,KAEJvzD,EAAK8F,EAAE6F,YAAY,YAAYsM,KAAK,WAAY,MAAMnM,KAAKipD,IAuM5BW,CAAU3uD,GAGzCA,EAAO0S,MAAQA,EAAIg3C,aAAa8C,IAGhCxsD,EAAO0S,MAAQA,EAAIi3C,aAAa2C,EAAgBtsD,GAGhDA,EAAO0S,MAAQA,EAAIk3C,iBACnB5pD,EAAO0S,MAAQA,EAAIm3C,mBA1a3B,SAA8B5wD,GAC1B,IAAI21D,EAVG,CACHC,QASyB51D,EAAKqN,SAR9B8nD,WAAY,KACZC,aAAc,MAQdp1D,EAAKyZ,MAAQA,EAAIk3C,gBACjBgF,EAAUR,WAAan1D,EAAK4M,MAE5B+oD,EAAUP,aAAep1D,EAAK4M,MAGlC,IAAInM,EAAU,CACVkF,IAAKwqD,EAAY,uBACjB5pD,OAAQ,CACJgQ,KAAMo/C,GAEVn8C,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GA0Z0Bo1D,CAAqB9uD,GAG3DA,EAAO0S,MAAQA,EAAIo3C,cAxZ3B,SAA+B7wD,GAC3B,IAAIS,EAAU,CACVkF,IAAKwqD,EAAY,wBACjB5pD,OAAQ,CACJ+sD,QAASvD,GAEbjpD,SAAUuuD,EACV77C,UAAU,GASd,SAAS67C,EAAUtuD,GACf,GAAIA,EAAO/G,KAAM,CACb,IAAIoJ,EAAQ9I,OAAOu9B,QAAQkyB,EAAgBD,GAGvCA,EAAUhxD,OAAS,GACnB6wD,EAAeI,GACfnwD,EAAE,uBAAuBmkD,GAAG36C,GAAO0F,SACnCghD,EAAU11C,OAAOhR,EAAO,GACxBA,EAAkB,IAAVA,GAAeA,IAAU0mD,EAAUhxD,OAASgxD,EAAUhxD,OAAS,EAAIsK,EAC3E2mD,EAAiBD,EAAU1mD,GAC3BmnD,EAAkC,IAArBT,EAAUhxD,OACvBu0D,MAEA1D,EAAeI,GACfnwD,EAAEywD,GAAc/hD,MAAM,UArB9BgiD,EACA+E,EAAU,CAAEr1D,MAAM,IAElBH,EAAG+F,KAAKC,QAAQpF,GA2YiBq1D,GAGjC/uD,EAAO0S,MAAQA,EAAIq3C,YACnB/pD,EAAO0S,MAAQA,EAAIs3C,YAzc3B,SAA+B/wD,GAC3B,IAAIoJ,EAAQ9I,OAAOu9B,QAAQkyB,EAAgBD,GAEvC1mD,EADApJ,EAAKyZ,MAAQA,EAAIq3C,WACC,IAAV1nD,EAAc0mD,EAAUhxD,OAAS,EAAIsK,EAAQ,GAE5CA,EAAQ,GAAK0mD,EAAUhxD,OAGpCixD,EAAiBD,EAAU1mD,GAC3BiqD,IAgcmC0C,CAAsBhvD,GAGrDA,EAAO0S,MAAQA,EAAIu8C,gBAAgBC,aAAalvD,GAoExD,OAzDAjH,EAAMkxD,kBAAoB,SAAUkF,EAAaC,EAAclF,GAC3DvB,EAAcwG,EACdtG,EAA0BuG,EAE1B,IAzD8BC,EAA1BC,EACJC,EAwDIC,GAzDAF,EAAK3gC,UAAU8mB,UACnB8Z,EAAID,EAAGjgD,MAAM,iEAAmE,GAC5E,WAAWhX,KAAKk3D,EAAE,IAEX,CAAEphD,KAAM,KAAMshD,SADrBJ,EAAM,kBAAkBte,KAAKue,IAAO,IACD,IAAM,IAEhC,WAATC,EAAE,IAES,OADXF,EAAMC,EAAGjgD,MAAM,wBACS,CAAElB,KAAMkhD,EAAI,GAAGpqD,QAAQ,MAAO,SAAUwqD,QAASJ,EAAI,KAEjFE,EAAIA,EAAE,GAAK,CAACA,EAAE,GAAIA,EAAE,IAAM,CAAC5gC,UAAU+gC,QAAS/gC,UAAUghC,WAAY,MACzB,OAAtCN,EAAMC,EAAGjgD,MAAM,qBAA6BkgD,EAAEl8C,OAAO,EAAG,EAAGg8C,EAAI,IAC7D,CAAElhD,KAAMohD,EAAE,GAAIE,QAASF,EAAE,MA8CL,SAAvBC,EAAcrhD,OAAoBqhD,EAAcC,QAAU,GAjiBlE,WACI,IAAI32D,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACVkF,IAAKwqD,EAAY,sBACjB5pD,OAAQ,GACRO,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,GAELnH,EAAEwwD,GAERrsD,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGuC,oBACHvC,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EAAEwwD,GAActhD,YACjBR,MAAM,SAlBTI,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,IAshBZk2D,GAEA3F,EAAkBC,IAK1BnxD,EAAM82D,mBAAqB,WACvBh3D,EAAEwwD,GAAc9hD,MAAM,SAY1BxO,EAAM+2D,iBAAmB,SAAUC,EAAQC,EAASC,EAAgBb,EAAcc,EAAYhG,EAAkBiG,EAAiBC,GAC7HxH,EAAiBqH,EACjB1G,EAAa4G,EACbrH,EAA0BsG,EAC1BnG,EAAkBiH,GAA2B,EAC7ChH,EAA+C,MAApBgB,GAAmCA,EAC9Df,EAAgBiH,EA5pBpB,SAA0BL,EAAQC,GAC9B,IAAIl3D,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB+gD,EAAYgH,EACZvG,EAAauG,EAAOh4D,OAAS,EAC7B,IAAI2B,EAAU,CACVkF,IAAKwqD,EAAY,eACjB5pD,OAAQ,CACJ6wD,OAAQN,EACRC,QAASA,EACT/G,eAAgBA,EAChBiB,iBAAkBhB,EAClBC,cAAeA,GAEnBppD,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,EAAO,IACxBgpD,GAAkBhpD,EAAO,GAEzB,IAAIuH,EAAQ1O,EAAEywD,GAEd/hD,EAAMvK,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGuC,oBACHvC,EAAGgB,QAAQkB,SAAQ,EAAMuM,GACzBzO,EAAGgB,QAAQmB,aAAY,EAAMsM,GAC7BzO,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGgB,QAAQiB,UAAUwM,GACrBzO,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EAAEywD,GAAcvhD,SACZ+gD,GAA8D,mBAA5BA,GAClCA,OAELvhD,MAAM,SA1BTkL,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IAyoBhBo2D,CAAiBC,EAAQC,IAI7Bj3D,EAAMu3D,kBAAoB,WACtBz3D,EAAEywD,GAAc/hD,MAAM,SAI1BxO,EAAMw3D,oBAAsB,WACxB,MAAO,CACHC,IAAK,EACLC,OAAQ,EACRC,SAAU,IAOlB33D,EAAMC,qBAAuB,SAAUC,GACnC80D,EAAqB90D,IAGlBF,EAnvBS,CAovBlBQ,OAAQb;ACpvBV,aAIAA,GAAG6M,WAAc,SAAU1M,EAAGC,GAG1B,IAWIyO,EAXAxO,EAAQD,EAAGyM,YAAc,GAgD7B,OARAxM,EAAMyM,UA3BN,WACI,IACI9L,EAAU,CACV8F,OAAQ,CAAEinD,OAFC5tD,EAAE,qBAAqBI,KAAK,WAGvC2F,IAAK+xD,2CACL5wD,SAMJ,SAAmBC,IACfuH,EAAQ1O,EAhBM,qBAkBRkM,KAAK/E,EAAO/G,MAAMQ,iBACxB8N,EAAMA,MAAM,SATZI,QAAQ,EACRgL,gBAAgB,GAEpB7Z,EAAG+F,KAAKC,QAAQpF,IAsBpBX,EAAMC,qBAAuB,SAAUC,KAIhCF,EAnDM,CAoDfQ,OAAQb;ACxDV,aAIAA,GAAGk4D,OAAU,SAAU/3D,EAAGC,GAGtB,IAAIC,EAAQD,EAAG83D,QAAU,GAOrB70D,EAAa,kBAiBb80D,EAAa,GACbt+C,EAAS,IAAIyC,OACb3f,EAAQ,GACRy7D,EAAsB,GAEtBC,GAgBoB,EAIpBC,EACQ,EADRA,EAES,EAGTC,EACQ,EADRA,EAES,EAFTA,EAGU,EAHVA,EAKS,EAGTC,EAMU,EANVA,EAWc,GAXdA,EAcgB,GAShBx+C,EAAM,CACNy+C,cAAe,GACfC,cAAe,GACfC,gBAAiB,GACjBC,gBAAiB,GACjBC,mBAAoB,GACpBC,mBAAoB,GAEpBC,cAAe,GACfC,gBAAiB,GACjBC,gBAAiB,GACjBC,UAAW,IACXC,aAAc,IACdC,mBAAoB,IACpBC,eAAgB,IA2OpB,SAASC,IAEL,IAAIt4D,EAAU,CACVkF,IAAK7C,EAAa,sBAClByD,OAAQ,CACJyyD,iBAAkBpB,GAEtB9wD,SAOJ,SAAmBC,GACXA,EAAO/G,OACPJ,EA1UK,eA0USkM,KAAK/E,EAAO/G,MAC1BH,EAAGgB,QAAQE,WAAU,EAAMnB,EA3UtB,gBA4ULA,EAAE,iCAlVe,2BAkV2CM,IAAI,IAAIF,KAAK,QAAS,MAAMA,KAAK,UAAW,QAV5G0O,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAiBpB,SAASw4D,EAA2BC,GAChCA,EAAaA,GAAct5D,EAAE,0BA3VV,qBA2VuDI,KAAK,YAE/E,IAAIS,EAAU,CACVkF,IAAK7C,EAAa,6BAClByD,OAAQ,CACJinD,OAAQ5tD,EAAE,gBA3VL,aA2VkCI,KAAK,aAEhD8G,SAMJ,SAAmBC,GACXA,EAAO/G,OACPJ,EA1WW,qBA0WSkM,KAAK/E,EAAO/G,KAAKm5D,kBACrCt5D,EAAGgB,QAAQE,WAAU,EA3WV,qBA6WNnB,EA/WK,oBA+WcI,KAAK,YACzBJ,EAAE,oBAhXI,oBAgXkCkP,SACxClP,EAAEuJ,KAAKpC,EAAO/G,KAAKo5D,iBAAiB,WAChCx5D,EAlXE,oBAkXiBgP,OAAOhP,EAAE,YAAYM,IAAI5E,KAAKguB,IAAI5hB,KAAKpM,KAAK8tB,WAIvExpB,EAAE,mBApXS,qBAoX6B+L,YAAY,UACpD/L,EAAE,kCAAoCs5D,EAAa,IArXxC,qBAqX+DttD,SAAS,UACnFhM,EAxXU,oBAwXSM,IAAIg5D,KAnB3B1/C,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAwDpB,SAAS44D,EAA2BH,GAChCA,EAAaA,GAAct5D,EAAE,0BAhaT,sBAgauDI,KAAK,YAEhF,IAAIS,EAAU,CACVkF,IAAK7C,EAAa,6BAClByD,OAAQ,CACJinD,OAAQ5tD,EAAE,gBA/ZL,aA+ZkCI,KAAK,aAEhD8G,SAOJ,SAAmBC,GACXA,EAAO/G,OACPJ,EAhbY,sBAgbSkM,KAAK/E,EAAO/G,MACjCH,EAAGgB,QAAQE,WAAU,EAjbT,sBAmbZnB,EAAE,mBAnbU,sBAmb6B+L,YAAY,UACrD/L,EAAE,kCAAoCs5D,EAAa,IApbvC,sBAob+DttD,SAAS,YAZxF4N,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAcpB,SAAS64D,EAAmBt5D,GACxB,IAAIS,EAAU,CACVkF,IAAK7C,EAAa,qBAClByD,OAAQ,CACJ+iB,GAAItpB,EAAKqN,SACTmgD,OAAQ5tD,EAAE,gBAzbL,aAybkCI,KAAK,aAEhD8G,SAOJ,SAAmBC,GACXA,EAAO/G,OACPJ,EA5ciB,2BA4cSkM,KAAK/E,EAAO/G,MACtC43D,EAAa18C,KAAKq+C,MAAMxyD,EAAO+U,kBAAkB,kBAEjDlc,EAAE,mBA7cU,sBA6c6B+L,YAAY,UACjD3L,EAAK8F,GACL9F,EAAK8F,EAAEoH,QAAQ,oBAAoBtB,SAAS,UAGhD/L,EAAGgB,QAAQsc,qBA5cN,aA6cLtd,EAAGgB,QAAQE,WAAU,EArdJ,2BAsdjBlB,EAAGgB,QAAQW,WAAU,EAtdJ,6BAocrBgY,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAmBpB,SAAS+4D,IACL,IAAI/4D,EAAU,CACVkF,IAAK7C,EAAa,sCAClByD,OAAQ,CACJ4gD,gBAAiBvnD,EAAE65D,mBAAmBz5D,KAAK,YAE/C8G,SAQJ,SAAmBC,GACXA,EAAO/G,MACPJ,EAAE65D,mBAAmB3tD,KAAK/E,EAAO/G,OATrC0O,QAAQ,EACRgL,gBAAgB,EAChB/G,OAAO,GAGX9S,EAAG+F,KAAKC,QAAQpF,GAUpB,SAASi5D,IACO,IAAI/+D,KAAhB,IACIwxD,EAAUtsD,EAAG2U,cArfO,0BAsfpBmlD,EAAS/5D,EAAE,6BAtfS,0BAwfxB,GAAIusD,EAAQyN,iBAAkB,CAC1B,IAAIC,EAAKj6D,EAAEi4D,EAAoBjuD,MAAM,MAAMiL,KAAI,WAC3C,IAAIhI,EAAQvR,KAAKsO,MAAM,KACnByL,EAAO,IAAI1a,KAAKkS,EAAM,IACtBitD,EAAQ,IAAIn/D,MAAK,IAAIA,MAAOo/D,gBAChC,GAAIltD,EAAM,GAAGmZ,cAAc7P,QAAQ,SAAW,GAAKtJ,EAAM,GAAGsJ,QAAQ,MAAQ,EACxE,OAAQ5I,SAAS4+C,EAAQ6N,mBACrB,KAAKhC,EACDnrD,EAAM,GAAKwI,EAAK1X,eAAem8D,GAC/B,MACJ,KAAK9B,EACD,IAAIiC,EAAQr8D,KAAKC,MAAMwX,EAAKhX,oBAAoBV,eAAem8D,EAAMz7D,qBAAuB,GACxFmF,EAAS6R,EAAKvZ,SAClB+Q,EAAM,GAAKotD,EAAQ,IAAMz2D,EACzB,MACJ,KAAKw0D,EACD,IAAIz6D,EAAS8X,EAAKjX,qBAAqBL,iBAAiB+7D,EAAM17D,uBAC1DrB,EAAMsY,EAAK7Z,YACJ6Z,EAAKlX,sBACZpB,EAAM,IAEV8P,EAAM,GAAKtP,EAAS,IAAMR,EAC1B,MACJ,KAAKi7D,EACD,IAEIj7D,EAFAm9D,EAAQ7kD,EAAKrZ,kBAAoB89D,EAAM99D,kBACvCm+D,EAAQ9kD,EAAK9Z,WAAa,GAC1BwB,EAAMsY,EAAK7Z,YACJ6Z,EAAKlX,sBACZpB,EAAM,IAEV8P,EAAM,GAAKqtD,EAAQ,IAAMC,EAAQ,IAAMp9D,EAInD,OAAO8P,EAAM6J,KAAK,QAEtBijD,EAAOz5D,IAAI25D,EAAG/kD,UAAU4B,KAAK,WAE7BijD,EAAOz5D,IAAI23D,GAInB,SAASuC,IACL,IAAIjO,EAAUtsD,EAAG2U,cAniBO,0BAoiBxB,GAAI23C,EAAQyN,iBAAkB,CAC1B,IAAIC,EAAKj6D,EAAEusD,EAAQkO,YAAYzwD,MAAM,MAAMiL,KAAI,WAC3C,IAAIhI,EAAQvR,KAAKsO,MAAM,KACvB,GAAIiD,EAAM,GAAGmZ,cAAc7P,QAAQ,SAAW,IAA+B,GAA1BtJ,EAAM,GAAGsJ,QAAQ,KAAY,CAC5E,IAAImkD,EAAcztD,EAAM,GAAGjD,MAAM,KAAKiL,KAAI,SAAU0B,GAAQ,OAAOhJ,SAASgJ,MAE5E,OAAQhJ,SAAS4+C,EAAQ6N,mBACrB,KAAKhC,EACDnrD,EAAM,IAAK,IAAIlS,MAAOuC,eAAeo9D,EAAY,IAAIj/D,kBACrD,MACJ,KAAK28D,EACDnrD,EAAM,IAAK,IAAIlS,MAAO0D,oBAAoBnB,eAAgC,EAAjBo9D,EAAY,GAASA,EAAY,IAAIj/D,kBAC9F,MACJ,KAAK28D,EACDnrD,EAAM,IAAK,IAAIlS,MAAO2C,iBAAiBg9D,EAAY,IAAIp9D,eAAeo9D,EAAY,IAAIj/D,kBACtF,MACJ,KAAK28D,EACDnrD,EAAM,GAAK,IAAIlS,MAAK,IAAIA,MAAOqB,kBAAoBs+D,EAAY,GAAIA,EAAY,GAAK,EAAGA,EAAY,IAAIj/D,mBAInH,OAAOwR,EAAM6J,KAAK,QAEtBmhD,EAAsBgC,EAAG/kD,UAAU4B,KAAK,UAExCmhD,EAAsB1L,EAAQkO,YA4EtC,OAjEAv6D,EAAMO,KAAO,aAEbP,EAAMy6D,+BAAiC,SAAUtgD,GAC7C7d,EAAQyD,EAAGoZ,WAEXmhD,IACAV,IAEuC,mBAA5B75D,EAAGF,KAAK66D,kBACf56D,EAAE,2BAjlBkB,0BAilBiCM,IAAIgb,KAAKC,UAAU1b,GAAGE,KAAK66D,qBAEpF5C,EAAa,GACb/3D,EAAG+F,KAAK2G,UAAU0N,IAItBna,EAAMC,qBAAuB,SAAUC,GACnC,OAAQA,EAAKyZ,KACT,KAAKA,EAAIy+C,cACT,KAAKz+C,EAAI0+C,eAnfjB,SAA4Bn4D,GACxB,GAAKH,EAAGgB,QAAQ40C,SAzGQ,0BAyGxB,CAIA,IAAI0W,EAAUtsD,EAAG2U,cA7GO,0BA8GxB23C,EAAQ1lD,OAASzG,EAAK8F,EAAEoH,QAAQ,sBAAsBhK,SAASgK,QAAQ,sBAAsBlN,KAAK,YAC9FA,EAAKyZ,KAAOA,EAAI0+C,gBAChBhM,EAAQsO,WAAaz6D,EAAKqN,UAG9B,IAAI5M,EAAU,CACVkF,IAAK7C,EAAa,qBAClByD,OAAQ,CACJgQ,KAAO41C,GAEXrlD,SAMJ,SAAmBC,GACXA,EAAO/G,OACPi5D,EAA2BlyD,EAAO/G,MAClCq5D,IACAG,IAEAlgD,EAAOohD,QAAQt+D,EAAiC,6BAXpDod,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IAgeRk6D,CAAmB36D,GACnB,MACJ,KAAKyZ,EAAI2+C,iBA7NjB,SAA4Bp4D,GACxB,IAAIS,EAAU,CACVkF,IAAK7C,EAAa,qBAClByD,OAAQ,CACJ+iB,GAAItpB,EAAKqN,SACTmgD,OAAQ5tD,EAAE,gBA5XL,aA4XkCI,KAAK,aAEhD8G,SAOJ,SAAmBC,GACXA,EAAO/G,OACPJ,EAjZgB,0BAiZSkM,KAAK/E,EAAO/G,MAErCA,EAAK8F,EAAEoH,QAAQ,oBAAoByL,WAAWhN,YAAY,UAC1D3L,EAAK8F,EAAEoH,QAAQ,oBAAoBtB,SAAS,UAE5C/L,EAAGgB,QAAQsc,qBA5YN,aA6YLtd,EAAGgB,QAAQE,WAAU,EAvZL,0BAwZhBlB,EAAGgB,QAAQW,WAAU,EAxZL,0BAyZhB3B,EAAGgB,QAAQkB,SAAQ,EAzZH,0BA0ZhBlC,EAAGgB,QAAQG,aAAY,EA1ZP,0BA2ZhBnB,EAAGwC,aAEH+3D,MApBJ5gD,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAkNRm6D,CAAmB56D,GACnB,MACJ,KAAKyZ,EAAI4+C,iBAxdjB,SAAkCr4D,GAC9B,IAAIS,EAAU,CACVkF,IAAK7C,EAAa,2BAClByD,OAAQ,CACJ+iB,GAAItpB,EAAKqN,SACTwkB,UAAU,GAEd/qB,SAMJ,SAAmBC,GACXA,EAAO/G,OACPi5D,IACAI,IACAG,MATJhgD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GA8cRo6D,CAAyB76D,GACzB,MACJ,KAAKyZ,EAAI++C,eApcjB,SAA4Bx4D,GAExB,GAAKH,EAAGgB,QAAQ40C,SAhKS,2BAmKzB,GAAyB,GAArBmiB,EAAW94D,OAAf,CAKA,IAAIqtD,EAAUtsD,EAAG2U,cAxKQ,2BAyKzB23C,EAAQ2O,iBAAmBlD,EAC3BzL,EAAQ4O,aAAextD,SAA4C,GAAnCA,SAAS4+C,EAAQ6O,eAAsB7O,EAAQ8O,iBAAmB9O,EAAQ+O,mBAC1G/O,EAAQ7iC,GAAKtpB,EAAKqN,SAElB,IAAI5M,EAAU,CACVkF,IAAK7C,EAAa,qBAClByD,OAAQ,CACJgQ,KAAM41C,GAEVrlD,SAMJ,SAAmBC,GACXA,EAAO/G,OACPw5D,IACAH,EAA2BtyD,EAAO/G,MAClCsZ,EAAOohD,QAAQt+D,EAAqC,iCATxDod,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,QAlBZ6Y,EAAO0C,MAAM5f,EAAwC,kCA+bjD++D,CAAmBn7D,GACnB,MACJ,KAAKyZ,EAAIg/C,gBACLa,EAAmBt5D,GACnB,MACJ,KAAKyZ,EAAIi/C,iBAvajB,SAAkC14D,GAC9B,IAAIS,EAAU,CACVkF,IAAK7C,EAAa,2BAClByD,OAAQ,CACJ+iB,GAAItpB,EAAKqN,UAEbvG,SAMJ,SAAmBC,GACXA,EAAO/G,OACPq5D,IACAC,EAAmB,CAAEjsD,SAAU,IAC/BmsD,MATJhgD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GA8ZR26D,CAAyBp7D,GACzB,MACJ,KAAKyZ,EAAIq/C,gBApZjB,SAA6B94D,GACzB,OAAQuN,SAASvN,EAAK4M,QAClB,KAAKmrD,EACDn4D,EAAE,kCA3Nc,0BA2N4C+H,YAAY,UAAU,GAClF/H,EAAE,mCA5Nc,0BA4N6C+H,YAAY,UAAU,GAAMzH,IAAI,GAC7FN,EAxNQ,iBALQ,0BA6NwB+H,YAAY,UAAU,GAC9D,MACJ,KAAKowD,EACDn4D,EAAE,kCAhOc,0BAgO4C+H,YAAY,UAAU,GAClF/H,EAAE,mCAjOc,0BAiO6C+H,YAAY,UAAU,GACnF/H,EA7NQ,iBALQ,0BAkOwB+H,YAAY,UAAU,GAC9D,MACJ,QACI/H,EAhOQ,iBALQ,0BAqOwB+H,YAAY,UAAU,GAC9D/H,EAAE,mEAtOc,0BAsO6E+H,YAAY,UAAU,IAuYnH0zD,CAAoBr7D,GACpB,MACJ,KAAKyZ,EAAI6+C,mBACL14D,EAxmBa,uBAwmBSoG,KAAK,YAAahG,EAAK4M,OAC7C8sD,IACA,MACJ,KAAKjgD,EAAI8+C,mBACLmB,IACA,MAIJ,KAAKjgD,EAAIk/C,WAvVjB,SAA4B34D,GACxB,IAAIs7D,EAAYt7D,EAAK8F,EAAEoH,QAAQ,QAC/B,GAAKrN,EAAGgB,QAAQ40C,SAAS6lB,GAAzB,CAGA,IAAIC,EAAa17D,EAAG2U,cAAc8mD,GAClCC,EAAWC,mBAAqBD,EAAWE,mBAAqBxD,IAC3DsD,EAAWE,mBAAqBxD,IAChCsD,EAAWE,mBAAqBxD,EAAkCsD,EAAWC,kBAAoB,KAElGD,EAAWzxC,YAAcguC,EACzByD,EAAWG,oBAAsB97D,EAAE,qDAAsD07D,GAAW5zD,OAEpG6zD,EAAWnyC,KAAOxpB,EAAE,sBAAuB07D,GAAWp7D,MAE1Dq7D,EAAWI,oBAAsB/7D,EAAE,oDAAqD07D,GAAW5zD,OAEnGkwD,EAAW34D,KAAKs8D,GAEhBxC,KAqUQ6C,CAAmB57D,GACnB,MACJ,KAAKyZ,EAAIm/C,cAnUjB,SAA+B54D,GAC3B,IAAIwW,EAAMxW,EAAK8F,EAAEoH,QAAQ,oBAAoB9D,QAC7CwuD,EAAWx9C,OAAO5D,EAAK,GAEvBuiD,IAgUQ8C,CAAsB77D,GACtB,MACJ,KAAKyZ,EAAIo/C,oBAnZjB,SAAuC74D,GACnC,IAAI87D,EAASl8D,EAAE,uBAvOC,kBAwOhB,GAAoB,IAAfI,EAAK4M,MAGN,OAFAkvD,EAAOhwD,KAAK,SACZlM,EAAE,aAAe6Z,EAAIk/C,UAAY,KAAK/sD,SAAS,YAInD,IAAInL,EAAU,CACVkF,IAAKo2D,+CACLx1D,OAAQ,CACJshB,YAAa7nB,EAAK4M,MAClBovD,SAAUh8D,EAAK8F,EAAE9F,KAAK,aAE1B8G,SAOJ,SAAmBC,GACXA,EAAO/G,OACP87D,EAAOhwD,KAAK/E,EAAO/G,MACnBH,EAAGgB,QAAQsc,qBAAqB2+C,GAChCj8D,EAAGgB,QAAQC,gBAAgBg7D,GAC3Bj8D,EAAGgB,QAAQW,WAAU,EAAMs6D,GAC3Bj8D,EAAGgB,QAAQG,aAAY,EAAM86D,GAC7Bj8D,EAAGwC,aACHzC,EAAE,aAAe6Z,EAAIk/C,UAAY,KAAKhtD,YAAY,cAdtD+C,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAiYRw7D,CAA8Bj8D,GAC9B,MACJ,KAAKyZ,EAAIyiD,oBAnXjB,SAAoCl8D,GAChC,IAAIm8D,EAAsBn8D,EAAK8F,EAAEoH,QAAQ,gBAAgBxB,KAAK,8BAC9D,QAAS1L,EAAK4M,OACV,KAAKqrD,EACL,KAAKA,EACL,KAAKA,EACDr4D,EAAE,8BAA8B+L,YAAY,UAC5C/L,EAAE,qCAAqCI,KAAK,YAAY,GACxDH,EAAGgB,QAAQsc,qBAAqBg/C,GAChC,MACJ,QACIv8D,EAAE,8BAA8BgM,SAAS,UACzChM,EAAE,qCAAqCI,KAAK,YAAY,GACxDH,EAAGgB,QAAQsc,qBAAqBg/C,IAuWhCC,CAA2Bp8D,KAKhCF,EAxpBE,CAypBXQ,OAAQb;AC7pBV,aAIAA,GAAG48D,UAAa,SAAUz8D,EAAGC,GAGzB,IAuCIy8D,EACAC,EACAC,EAzCA18D,EAAQD,EAAGw8D,WAAa,GAOxBI,EAAqB,kCAGrBnR,EAAa,yBAOboR,EAAqB,sBAUrBpjD,EAAS,IAAIyC,OACb3f,EAAQ,GACRugE,EAAkB,GAClB5/C,EAAW,CACX6/C,WAAY,KACZlN,YAAa,KACbj+C,aAAc,KACdorD,aAAc,KACdC,cAAc,EACdC,aAAa,EACbC,eAAe,GAqBfvjD,EACuB,GADvBA,EAEkB,GAFlBA,EAIuB,GAJvBA,EAKqB,GALrBA,EAMkB,GANlBA,EAOW,GAPXA,EAQY,GARZA,EASU,GATVA,EAUY,GAVZA,EAWe,GAXfA,EAYoB,GAZpBA,EAae,GAbfA,EAce,GAdfA,EAee,GAffA,EAgBW,GAhBXA,EAiBY,GAjBZA,EAkBc,GAlBdA,EAmBc,GAnBdA,EAoBY,GApBZA,EAqBU,GArBVA,EAsBsB,GAtBtBA,EAuBmB,GAvBnBA,EAwBoB,GAxBpBA,EAyBe,GAzBfA,EA0Be,GA1BfA,EA2B2B,GA3B3BA,EA4BqC,GA5BrCA,EA6BkB,GA7BlBA,EA8B4B,GA9B5BA,EA+BoB,GA/BpBA,EAgCY,GAhCZA,EAkC8B,GAlC9BA,EAmC+B,GAnC/BA,EAoC2B,GApC3BA,EAqCqB,GArCrBA,EAsCsB,GAtCtBA,EAuCkC,GAvClCA,EAwCmB,GAxCnBA,EAyCiC,GAzCjCA,EA0CgC,GA1ChCA,EA4CwB,GA5CxBA,GA6CuB,GA7CvBA,GA8CoB,GA9CpBA,GA+CsB,GA/CtBA,GAkDa,GAlDbA,GAmDqB,GAnDrBA,GAoDqB,GApDrBA,GAqDa,GArDbA,GAsDmB,GAtDnBA,GAyDiB,GAzDjBA,GA0DkB,GA1DlBA,GA2DsC,GA3DtCA,GA4DmC,GA5DnCA,GA6DqB,GA7DrBA,GA8DwB,GA9DxBA,GA+D4B,GA/D5BA,GAiEoB,GAjEpBA,GAkE2B,GAlE3BA,GAmEuB,GAnEvBA,GAoE0B,GApE1BA,GAqEsC,GArEtCA,GAsEqC,GAtErCA,GAwEyB,IAxEzBA,GAyEwB,IAzExBA,GA0EoB,IA1EpBA,GA4EiB,GA5EjBA,GA8EoB,GA9EpBA,GA+Ea,GA/EbA,GAiFmB,IAjFnBA,GAkFqC,IAlFrCA,GAmFiC,IAnFjCA,GAoFgC,IApFhCA,GAqF+B,IArF/BA,GAuF8B,IAvF9BA,GAwFoB,IAxFpBA,GA2FoB,IA3FpBA,GA4FuB,IA5FvBA,GA6FwB,IA7FxBA,GA8FwB,IA9FxBA,GA+FsB,IA/FtBA,GAgG8B,IAhG9BA,GAiG8B,IAjG9BA,GAkGsB,IAlGtBA,GAmGoB,IAnGpBA,GAoG4B,IApG5BA,GAqGqB,IArGrBA,GAsGuB,IAtGvBA,GAuGqB,IAvGrBA,GAwGqB,IAWzB,SAASwjD,KACL,MAAO,CACH3zC,GAAIqzC,EAAgBC,WACpBxzC,KAAM,KACN8zC,MAAO,KACPC,IAAK,KACLrvC,MAAO,KACPsvC,SAAU,KACVC,cAAe,KACf9zC,SAAU,KACV+zC,WAAY,KACZC,SAAU,KACVC,SAAU,KACVC,OAAQ,KACRC,eAAgB,KAChBC,eAAgB,KAChBC,OAAQ,KACRC,KAAM,KACNC,aAAc,KACdC,MAAO,KACPC,QAAS,KACTC,YAAa,KACbC,QAAS,KACTC,MAAO,KACP72C,IAAK,KACL82C,gBAAiB,KACjBC,cAAe,KACfC,eAAgB,KAChBC,kBAAmB,KACnBC,sBAAuB,KACvBC,WAAY,KACZC,oBAAqB,KACrBC,4BAA6B,KAC7BC,wBAAyB,KACzBC,yBAA0B,KAC1BC,qBAAsB,KACtBC,eAAgB,KAChBC,gBAAiB,KACjBC,4BAA6B,KAC7BC,aAAc,KACdC,2BAA4B,KAC5BC,0BAA2B,KAC3BC,YAAa,KACbC,MAAO,KACPC,wBAAyB,KACzBC,sBAAuB,KACvBC,cAAe,MAWvB,SAASC,GAAwBC,EAAYC,GAGzC,IAAIn/D,EAAU,CACV8F,OAAQ,CACJgQ,KAJRopD,EAAa//D,EAAEe,OAAO,GAAIs8D,KAAmB0C,IAMzCh6D,IAAK82D,EAAqB,0BAC1B31D,SAOJ,SAAmBC,GACf,GAAIA,EAAQ,CAKR,GAJI41D,EAAgBE,cAChBF,EAAgBE,aAAaF,EAAgBC,YAG7C71D,GAAUnH,EAzOQ,gCAyOuBd,OAAS,EAAG,CACrD,IAAI+gE,EAAmBzjE,EAAM0jE,eAAiB,KACxCC,EAASC,aAAe,MAAQzkD,SAASC,OAAO,KACtD5b,EA5OkB,gCA4Oa8H,KAAKm4D,GAGpCD,IAAenmD,GACf7Z,EA/OW,yBA+Oa8H,KAAKi4D,EAAWv2C,QAnBhD5P,UAAU,GAEVumD,EAAWlgE,EAAGiI,eAElBjI,EAAG+F,KAAKC,QAAQpF,GAqBpB,SAASw/D,GAAwBN,EAAYC,GAGzC,IAAIn/D,EAAU,CACV8F,OAAQ,CACJgQ,KAJRopD,EAAa//D,EAAEe,OAAO,GAAIs8D,KAAmB0C,IAMzCh6D,IAAK82D,EAAqB,0BAC1B31D,SAOJ,SAAmBC,GACf,GAAIA,GACIA,GAAUnH,EAvQQ,gCAuQuBd,OAAS,EAAG,CACrD,IAAI+gE,EAAmBzjE,EAAM0jE,eAAiB,KACxCC,EAASC,aAAe,MAAQzkD,SAASC,OAAO,KACtD5b,EA1QkB,gCA0Qa8H,KAAKm4D,KAX5CrmD,UAAU,GAEVumD,EAAWlgE,EAAGiI,eAElBjI,EAAG+F,KAAKC,QAAQpF,GAmFpB,SAASy/D,GAAmBC,EAAeC,GACnCzD,EAAgBjN,aAChBiN,EAAgBjN,YAAYyQ,GAE5BxD,EAAgBI,YA4axB,WACI,IAAIzuD,EAAQ1O,EAAE0rD,GACdh9C,EAAM5C,KAAK,SAASxL,IAAI,MAAMF,KAAK,QAAS,MAAMA,KAAK,UAAW,MAClEsO,EAAM5C,KAAK,YAAYxL,IAAI,MAAMF,KAAK,QAAS,MAAMA,KAAK,UAAW,MACrEsO,EAAM5C,KAAK,wBAAwBknB,eAAe,CAAEhmB,OAAO,IA/avDyzD,IAEI1D,EAAgBG,eAChBH,EAAgBC,WAAauD,EAC7BvgE,EAAE0rD,GAAYtnD,GAAG,mBAAmB,WAChCs8D,SAGR1gE,EAAE0rD,GAAYh9C,MAAM,SAyC5B,SAASiyD,GAAgBvgE,GACjBJ,EAAEI,EAAK8F,GAAG9F,KAAK,sBAAsC,GAAdA,EAAK4M,OAC5C5M,EAAK8F,EAAE8sB,eAAe,CAAEhmB,OAAO,IASvC,SAA8C5M,GAC1C,IAAIS,EAAU,CACVkF,IAAK82D,EAAqB,kCAC1Bl2D,OAAQ,CACJi6D,SAAUxgE,EAAKqN,SACf6D,eAAgBlR,EAAK8F,EAAEoH,QAAQ,yBAAyBlN,KAAK,mBAEjE8G,SAMJ,SAAmBC,GACf,IAAIuH,EAAQ1O,EAAE,0DACd0O,EAAMxC,KAAK/E,EAAO/G,MAAM+D,MAAMC,GAAG,mBAAmB,WAChDsK,EAAMQ,YACPR,MAAM,CACLgD,SAAU,SACVC,UAAU,IACXjD,MAAM,QAAQ9N,kBAZjBkO,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAnBZggE,CAAqCzgE,IAC9BJ,EAAEI,EAAK8F,GAAG9F,KAAK,yBAAyC,GAAdA,EAAK4M,MACtD/M,EAAGiR,mBAAmBjR,EAAGoZ,WAAwC,4BAAGQ,GAAwBA,GAAiBzZ,EAAK8F,EAAEoH,QAAQ,yBAAyBlN,KAAK,mBAE1J0/D,GAAwB,CAAEtC,SAAUp9D,EAAK4M,QAyIjD,SAAS8zD,GAA8BC,GACnC,IAAIlgE,EAAU,CACV8F,OAAQ,CACJq2D,WAAYD,EAAgBC,YAEhCj3D,IAAK82D,EAAqB,gCAC1B31D,SAOJ,SAAmBC,GACf,GAAI45D,EACA/gE,EAAE88D,GAAoB5wD,KAAK/E,EAAO/G,UAC/B,CACH,IAAIoJ,EAAQxJ,EAAE,SAAU88D,GAAoBxvD,QAAQ,MAAM9D,QACtD8L,EAAOtV,EAAE,SAAU88D,GAAoB12D,KAAK,QAEhDpG,EAAEmH,EAAO/G,MAAMmJ,MAAK,WACZvJ,EAAEtE,MAAM0T,GAAG,8DAEPpP,EAAE,kBAAoBA,EAAEtE,MAAM0E,KAAK,YAAc,IAAK08D,GAAoB59D,OAAS,EACnFc,EAAE,kBAAoBA,EAAEtE,MAAM0E,KAAK,YAAc,IAAK08D,GAAoBkE,YAAYtlE,MAEtFsE,EAAE,qBAAsB88D,GAAoB7oC,OAAOv4B,UAI/DsE,EAAE,6EAA6EkP,SAC/ElP,EAAE,SAAWsV,EAAO,QAAU9L,EAAQ,IAAKszD,GAAoBz2D,SAGnEpG,EAAGgB,QAAQkB,SAAQ,EAAM26D,GACzB78D,EAAGgB,QAAQE,WAAU,EAAM27D,IA5B3BljD,UAAU,EACVE,gBAAgB,EAChBhL,QAAQ,GAEZ7O,EAAG+F,KAAKC,QAAQpF,GA6BpB,SAAS6/D,KACL,IAAIzgE,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACV8F,OAAQ,CACJ8I,GAAIstD,EAAgBC,YAExBj3D,IAAK82D,EAAqB,uBAC1B31D,SAMJ,SAAmBC,GACfnH,EAAE,QAAQgP,OAAO7H,EAAO/G,KAAK6gE,MAC7BzkE,EAAQ8e,KAAKq+C,MAAMxyD,EAAO/G,KAAK8gE,WAC/B,IAAIxyD,EAAQ1O,EAAE0rD,GACdh9C,EAAMvK,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGuC,oBAEHvC,EAAGgB,QAAQsc,uBACXtd,EAAGgB,QAAQkB,SAAQ,EAAMuM,GACzBzO,EAAGgB,QAAQmB,aAAY,EAAMsM,GAC7BzO,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGgB,QAAQG,aAAY,EAAMsN,GAC7BzO,EAAGgB,QAAQW,WAAU,EAAM8M,GAC3BzO,EAAGgB,QAAQC,gBAAgBwN,GAC3BzO,EAAGgB,QAAQQ,WAAU,EAAMiN,GAC3BzO,EAAGgB,QAAQiB,UAAUwM,GACrBzO,EAAGwC,aAEHxC,EAAGkP,cAAa,GAChButD,GAAS,KACVt4D,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHiM,EAAMQ,SACF6tD,EAAgBlrD,cAChBkrD,EAAgBlrD,kBAErBnD,MAAM,SA/BTkL,UAAU,EACVE,gBAAgB,GAEpB7Z,EAAG+F,KAAKC,QAAQpF,IAqFpB,SAASsgE,GAA8B/gE,GACnC,IAAIS,EAAU,CACVkF,IAAK82D,EAAqB,gCAC1Bl2D,OAAQ,GACRO,SAMJ,SAAmBC,GACXA,EAAO/G,MAOnB,SAAiC+J,EAAM+B,GACnC,IAAIrL,EAAU,CACVkN,UAAW,QACXC,OAAO,EACPuC,SAAS,EACTtC,OAAO,EACPC,OAAO,EACPC,aAAa,EACbI,QAAS,WACL,OAAOrC,GAEXsC,OAAQ,SAAUtI,GACdlG,EAAE,QAAQ+L,YAAY,QAE1BrB,MAAO,MACP+D,OAAQ,WACJxO,EAAGgB,QAAQE,WAAU,EAAM,MAC3BlB,EAAGgB,QAAQkB,SAAQ,EAAM,MACzBnC,EAjtBgC,0CAitBSiQ,SAE7CtB,KAAM,QAGVyyD,cAAc/W,UACdlgD,EAAKyE,aAAa,WAAWA,aAAa/N,GAAS+N,aAAa,QA9BxDyyD,CAAwBjhE,EAAK8F,EAAGiB,EAAO/G,OAP3C0O,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAycpB,OAtUAX,EAAMO,KAAO,aAGbP,EAAMohE,YAAc,SAAUprB,IAC1B6mB,EAAkB/8D,EAAEe,OAAO,GAAIoc,EAAU+4B,IACzB8mB,WAAa,KApMjC,WACI,IAAI/8D,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GACJnP,EAAE0rD,GAAd,IAEI7qD,EAAU,CACV8F,OAAQ,CACJy2D,cAAeL,EAAgBK,cAC/BmE,qBAAsBxE,EAAgByE,yBAE1Cz7D,IAAK82D,EAAqB,sBAC1B31D,SAMJ,SAAmBC,GACfnH,EAAE,QAAQgP,OAAO7H,EAAO/G,KAAK6gE,MAC7BzkE,EAAQ8e,KAAKq+C,MAAMxyD,EAAO/G,KAAK8gE,WAC/B,IAAIxyD,EAAQ1O,EAAE0rD,GACdh9C,EAAMvK,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGgB,QAAQsc,uBACXtd,EAAGgB,QAAQkB,SAAQ,EAAMuM,GACzBzO,EAAGgB,QAAQmB,aAAY,EAAMsM,GAC7BzO,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGgB,QAAQG,aAAY,EAAMsN,GAC7BzO,EAAGgB,QAAQW,WAAU,EAAM8M,GAC3BzO,EAAGgB,QAAQC,gBAAgBwN,GAEvBvH,EAAO/G,KAAKqhE,sBAAwB,GACpC/yD,EAAM5C,KAAK,cAAgB+N,EAA6B,MACnDzZ,KAAK,QAAS28D,EAAgByE,yBAC9B11D,KAAK,QAAQhE,KAAKi1D,EAAgB2E,2BAG3CzhE,EAAGuC,oBACHvC,EAAGkP,cAAa,GAChButD,GAAS,KACVt4D,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHiM,EAAMQ,SACF6tD,EAAgBlrD,cAChBkrD,EAAgBlrD,kBAErBnD,MAAM,SAjCTkL,UAAU,EACVE,gBAAgB,GAEpB7Z,EAAG+F,KAAKC,QAAQpF,IAoLhB8gE,IAIJzhE,EAAM0hE,aAAe,SAAU1rB,IAC3B6mB,EAAkB/8D,EAAEe,OAAO,GAAIoc,EAAU+4B,IACpB8mB,WAIrB0D,KAHI5gE,OAAOi0C,SAAWA,QAAQuC,MAAM,gCAQxCp2C,EAAMC,qBAAuB,SAAUC,GACnC,IAAI+G,EAAS/G,EACb,OAAQ+G,EAAO0S,KAEX,KAAKA,EACDymD,IAAoBn5D,EAAO6F,OAC3B,MACJ,KAAK6M,GAhiBb,SAA+BzZ,GAC3B,GAAKH,EAAGgB,QAAQ40C,SAAS6V,GAAY,GAAO,GAAO,GAAnD,CAIA,IAAIjiC,GAAYzpB,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAA6B,MAAMzZ,KAAK,SAC3F,GAAIqpB,GAAY,EACZ/P,EAAO0C,MAAMnc,EAAGoZ,WAA4C,qCADhE,CAKA,IAAIrS,EAAWhH,EAAEe,OAAO,GAAIs8D,KAAqBp9D,EAAG2U,cAAc82C,IAClE1kD,EAAS2iB,SAAWF,EACpBziB,EAAS66D,mBAAqB,GAC9B7hE,EAAE,mBA9TwB,4BA8TqBuJ,MAAK,WAC5CvJ,EAAEtE,MAAM4E,OACR0G,EAAS66D,mBAAmBxiE,KAAK,CAAEyiE,WAAYnjE,OAAOqB,EAAEtE,MAAM4R,QAAQ,iBAAiBlN,KAAK,aAAc2hE,eAAgB/hE,EAAEtE,MAAM4E,WAG1I0G,EAASg7D,kBAAoBrF,EAE7B,IAAI97D,EAAU,CACV8F,OAAQ,CACJs7D,YAAaj7D,GAEjBjB,IAAK82D,EAAqB,wBAC1B31D,SAOJ,SAAmBC,GACfm5D,GAAmBn5D,EAAO/G,MAAM,IAPhCwZ,UAAU,EACVI,gBAAiB5Z,EAAK8F,GAG1BjG,EAAG+F,KAAKC,QAAQpF,KAkgBRqhE,CAAsB/6D,GACtB,MAGJ,KAAK0S,EACDsnD,GAA8Bh6D,GAC9B,MACJ,KAAK0S,IA7eb,SAA6BzZ,GACGJ,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAA6B,MAAMzZ,KAAK,SAAUA,EAAKqN,UAAU3B,KAAK,QAAQhE,KAAK1H,EAAK8F,EAAE4B,QACzJs5D,cAAc/W,UACdjqD,EAAK8F,EAAE0I,aAAa,WAChBmuD,EAAgBC,YAChB8C,GAAwB,CAAEn2C,UAAWvpB,EAAKqN,WAyetC00D,CAAoBh7D,GACpB,MACJ,KAAK0S,IAteb,SAA8BzZ,GAC1B,IAAIS,EAAU,CACVkF,IAAK82D,EAAqB,uBAC1Bl2D,OAAQ,CACJ6iB,KAAMppB,EAAK8F,EAAE9F,KAAK,gBAEtB8G,SAMJ,SAAmBC,GACf,GAAIA,EAAO/G,KAAO,EAAG,CACjB,IAAIgiE,EAAsBpiE,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAA6B,MAC1FuoD,EAAoBhiE,KAAK,QAAS+G,EAAO/G,MAAM0L,KAAK,QAAQhE,KAAK1H,EAAK8F,EAAE9F,KAAK,gBAC7EghE,cAAc/W,UACd+X,EAAoBxzD,aAAa,WAC7BmuD,EAAgBC,YAChB8C,GAAwB,CAAEn2C,SAAUxiB,EAAO/G,SAZnDwZ,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GA6dRwhE,CAAqBl7D,GACrB,MACJ,KAAK0S,IAvIb,SAAsCzZ,GAClC,IAAIS,EAAU,CACVkF,IAAK82D,EAAqB,+BAC1Bl2D,OAAQ,CACJ2gB,WAAYlnB,EAAK4M,OAErB9F,SAMJ,SAAmBC,GACXA,EAAO/G,OACPJ,EA1uB8B,wCA0uBSkM,KAAK/E,EAAO/G,MACnDH,EAAGgB,QAAQE,WAAU,EA3uBS,0CAmuBlC2N,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GA8HRyhE,CAA6Bn7D,GAC7B,MAGJ,KAAK0S,EACD+iD,EAAYx8D,EACZH,EAAGiR,mBAAmBjR,EAAGoZ,WAAqC,yBAAGQ,EAAyBA,EAAsBzZ,EAAK8F,EAAEoH,QAAQ,yBAAyBlN,KAAK,mBAC7J,MACJ,KAAKyZ,EACD5Z,EAAG2R,oBAAoB1R,EAAMqiE,wBAC7BzC,GAAwB,CAAEt2C,KAAMozC,EAAU5vD,OAAS4vD,EAAU/iD,KAC7D,MACJ,KAAKA,EACD5Z,EAAG2R,oBAAoB1R,EAAMqiE,wBAC7B3F,EAAU12D,EAAE5F,IAAIs8D,EAAU32C,SAC1B,MACJ,KAAKpM,EACDimD,GAAwB,CAAEt2C,KAAMppB,EAAK4M,OAAS5M,EAAKyZ,KACnD,MACJ,KAAKA,EACDimD,GAAwB,CAAExC,MAAOl9D,EAAK4M,QACtC,MACJ,KAAK6M,EACDimD,GAAwB,CAAEvC,IAAKn9D,EAAK4M,QACpC,MACJ,KAAK6M,EACDimD,GAAwB,CAAE5xC,MAAO9tB,EAAK4M,QACtC,MACJ,KAAK6M,EACD8mD,GAAgBvgE,GAChB,MACJ,KAAKyZ,EACDimD,GAAwB,CAAErC,cAAer9D,EAAK4M,QAhG1D,SAA0C5M,GACtC,IAAIoiE,EAAuBxiE,EAnyBP,sBAoyBhBI,EAAK4M,OACLw1D,EAAqB12D,KApyBD,0BAoyB6BE,SAAS,UAC1Dw2D,EAAqB12D,KApyBJ,uBAoyB6BC,YAAY,UAC1Dy2D,EAAqB12D,KAAK,cAAgB+N,GAAgC,MAAMmZ,eAAe,CAAEC,QAAQ,MAEzGuvC,EAAqB12D,KAxyBD,0BAwyB6BC,YAAY,UAC7Dy2D,EAAqB12D,KAxyBJ,uBAwyB6BE,SAAS,UACvDw2D,EAAqB12D,KAAK,cAAgB+N,GAAgC,MAAMmZ,eAAe,CAAEC,QAAQ,KAwFrGwvC,CAAiCriE,GACjC,MACJ,KAAKyZ,EACDimD,GAAwB,CAAEn2C,SAAUvpB,EAAK4M,QACzC,MACJ,KAAK6M,EACDimD,GAAwB,CAAEhB,oBAAqB1+D,EAAK4M,QACpD,MACJ,KAAK6M,EACDimD,GAAwB,CAAEf,4BAA6B3+D,EAAK4M,QAC5D,MACJ,KAAK6M,GA3Hb,SAAiCzZ,GACV,WAAfA,EAAK4M,OACLhN,EAAE,qBAAqBgM,SAAS,UAChChM,EAAE,mBAAmB+L,YAAY,YAEjC/L,EAAE,qBAAqB+L,YAAY,UACnC/L,EAAE,mBAAmBgM,SAAS,WAG9B0wD,GACAoD,GAAwB,CAAExB,QAASl+D,EAAK4M,QAkHpC01D,CAAwBtiE,GACxB,MACJ,KAAKyZ,EACDimD,GAAwB,CAAEnC,SAAUv9D,EAAK4M,QACzC,MACJ,KAAK6M,EACDimD,GAAwB,CAAElC,SAAUx9D,EAAK4M,QACzC,MACJ,KAAK6M,GACDimD,GAAwB,CAAEjC,OAAQz9D,EAAK4M,QACvC,MACJ,KAAK6M,GACDimD,GAAwB,CAAEhC,eAAgB19D,EAAK4M,QAC/C,MACJ,KAAK6M,GACDimD,GAAwB,CAAE/B,eAAgB39D,EAAK4M,QAC/C,MACJ,KAAK6M,GACDimD,GAAwB,CAAE9B,OAAQ59D,EAAK4M,QACvC,MACJ,KAAK6M,EACDimD,GAAwB,CAAE7B,KAAM79D,EAAK4M,QACrC,MACJ,KAAK6M,GACDimD,GAAwB,CAAE5B,aAAc99D,EAAK4M,QAC7C,MACJ,KAAK6M,EACDimD,GAAwB,CAAE3B,MAAO/9D,EAAK4M,QACtC,MACJ,KAAK6M,EACDimD,GAAwB,CAAE1B,QAASh+D,EAAK4M,QACxC,MACJ,KAAK6M,EACDimD,GAAwB,CAAEvB,MAAOn+D,EAAK4M,QACtC,MACJ,KAAK6M,EACDimD,GAAwB,CAAEp4C,IAAKtnB,EAAK4M,QACpC,MACJ,KAAK6M,EACDimD,GAAwB,CAAEJ,MAAOt/D,EAAK4M,QACtC,MACJ,KAAK6M,EACD7Z,EAl7BmB,6BAk7BS+H,YAAY,UAAW3H,EAAK4M,OACxDhN,EAl7Be,yBAk7BS+H,YAAY,UAAW3H,EAAK4M,OACpD8yD,GAAwB,CAAEL,YAAar/D,EAAK4M,QAC5C,MACJ,KAAK6M,EACDimD,GAAwB,CAAEF,sBAAuBx/D,EAAK4M,QACtD,MACJ,KAAK6M,EACDimD,GAAwB,CAAED,cAAez/D,EAAK4M,QAC9C,MACJ,KAAK6M,EACDimD,GAAwB,CAAEtB,gBAAiBp+D,EAAK4M,QAChD,MACJ,KAAK6M,EACDimD,GAAwB,CAAErB,cAAer+D,EAAK4M,QAC9C,MACJ,KAAK6M,EACDimD,GAAwB,CAAEpB,eAAgBt+D,EAAK4M,QAC/C,MACJ,KAAK6M,GACDzZ,EAAK8F,EAAE4F,KAAK,sBAAsBoD,SAClC4wD,GAAwB,CAAE6C,WAAYviE,EAAK4M,QAC3C,MACJ,KAAK6M,GACDimD,GAAwB,CAAE8C,YAAaxiE,EAAK4M,QAC5C,MACJ,KAAK6M,GACDimD,GAAwB,CAAE+C,gCAAiCziE,EAAK4M,QAChE,MACJ,KAAK6M,GACDimD,GAAwB,CAAEgD,6BAA8B1iE,EAAK4M,QAC7D,MACJ,KAAK6M,GACDimD,GAAwB,CAAEnB,kBAAmBhgE,OAAOyB,EAAK4M,SACzD,MACJ,KAAK6M,GACDimD,GAAwB,CAAElB,sBAAuBx+D,EAAK4M,QACtD,MACJ,KAAK6M,IAzsBb,SAAgDzZ,GAC5C,IAAIS,EAAU,CACV8F,OAAQ,CACJ+iB,GAAItpB,EAAKqN,SACTs1D,sBAAuB3iE,EAAK4M,OAEhCjH,IAAK82D,EAAqB,yBAC1BjjD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAgsBRmiE,CAAuC5iE,GACvC,MACJ,KAAKyZ,IA9rBb,SAAqCzZ,GACjCJ,EAAE,uBAAuBgzB,eAAe,CAAEhmB,OAAO,IACjD5M,EAAK8F,EAAE8sB,eAAe,CAAEhmB,OAAO,IAC/B,IAAInM,EAAU,CACV8F,OAAQ,CACJ8I,GAAIrP,EAAKqN,UAEb1H,IAAK82D,EAAqB,8BAC1BjjD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAorBRoiE,CAA4B7iE,GAC5B,MACJ,KAAKyZ,IAjjBb,SAAkCzZ,GAC9B,IAAIS,EAAU,CACVkF,IAAK82D,EAAqB,2BAC1Bl2D,OAAQ,CACJm7D,WAAYnjE,OAAOyB,EAAKqN,UACxBy1D,SAAUnG,EAAgBC,WAC1B+E,eAAgB3hE,EAAK4M,OAEzB4M,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAuiBRsiE,CAAyB/iE,GACzB,MACJ,KAAKyZ,IAriBb,SAAyCzZ,GAYrC,GAXAu8D,EAAoB38D,EAAE,2DAA4D88D,GAAoB7nD,KAAI,WACtG,MAAO,CACHyU,GAAI1pB,EAAEtE,MAAM4R,QAAQ,sBAAsBlN,KAAK,YAC/CgjE,OAAQpjE,EAAE,gBAAiBtE,MAAM4E,MACjC+iE,YAAarjE,EAAE,qBAAsBtE,MAAM4E,UAEhDqrC,QAAO,WACN,OAAOjwC,KAAK0nE,QAAU1nE,KAAK2nE,eAC5BnuD,UAGE6nD,EAAgBC,WAArB,CAIA,IAAIn8D,EAAU,CACVkF,IAAK82D,EAAqB,kCAC1Bl2D,OAAQ,CACJq2D,WAAYD,EAAgBC,WAC5BL,kBAAmBA,GAGvBz1D,SAMJ,SAAmBC,GACfw1D,EAAoB,GACfx1D,EAAO/G,KAAK+G,SACTA,EAAO/G,KAAKkjE,UACZ5pD,EAAO0C,MAAMnc,EAAGoZ,WAAwC,4BAAI,SAAWlS,EAAO/G,KAAKkjE,UAAUF,OAAS,IAAMj8D,EAAO/G,KAAKkjE,UAAUD,YAAc,cAAgBl8D,EAAO/G,KAAKkjE,UAAUz3C,cAGtLnS,EAAO0C,MAAMnc,EAAGoZ,WAAwC,8BAGhEynD,IAA+B35D,EAAO/G,OAftCwZ,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IA2gBR0iE,GACA,MACJ,KAAK1pD,GA3fT7Z,EAAE,qBAAsB88D,GAAoB7oC,OAAOj0B,EAAE,qBAAsB88D,GAAoB0G,QAAQz3D,YAAY,UAAU3F,KAAK,cAAe,OACjJnG,EAAGgB,QAAQkB,SAAQ,EAAM26D,GACzB78D,EAAGgB,QAAQE,WAAU,EAAM27D,GAC3B98D,EAAE,wBAAyB88D,GAAoB9wD,SAAS,UA0fhD,MACJ,KAAK6N,IAvfb,SAA+CzZ,GAC3C,GAA6B,GAAzBzB,OAAOyB,EAAKqN,UAKZ,OAJArN,EAAK8F,EAAEoH,QAAQ,MAAM4B,cAC2E,GAA5FlP,EAAE,2DAA4D88D,GAAoB59D,QAClFc,EAAE,wBAAyB88D,GAAoB/wD,YAAY,WAKnE,GAAKgxD,EAAgBC,WAArB,CAKA,IAAIn8D,EAAU,CACVkF,IAAK82D,EAAqB,wCAC1Bl2D,OAAQ,CACJ+iB,GAAI/qB,OAAOyB,EAAKqN,WAEpBvG,SAMJ,SAAmBC,GACXA,EAAO/G,OACHJ,EAAE,2DAA4D88D,GAAoB59D,OAAS,EAC3FkB,EAAK8F,EAAEoH,QAAQ,MAAM4B,SAErB4xD,IAA8B,KAVtClnD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,QAbZT,EAAK8F,EAAEoH,QAAQ,MAAM4B,SA8ejBu0D,CAAsCrjE,GACtC,MACJ,KAAKyZ,EACD7Z,EAx+BQ,kBAw+BS+H,YAAY,UAAW3H,EAAK4M,OAC7C8yD,GAAwB,CAAE4D,SAAUtjE,EAAK4M,QACzC,MACJ,KAAK6M,EACDimD,GAAwB,CAAE6D,SAAUvjE,EAAK4M,QACzC,MACJ,KAAK6M,GACDimD,GAAwB,CAAE8D,4BAA4C,OAAfxjE,EAAK4M,OAAkB,EAAI5M,EAAK4M,QACvF,MACJ,KAAK6M,GACDimD,GAAwB,CAAE+D,mBAAmC,OAAfzjE,EAAK4M,OAAkB,EAAI5M,EAAK4M,QAC9E,MACJ,KAAK6M,GACDimD,GAAwB,CAAEgE,kBAAkC,OAAf1jE,EAAK4M,OAAkB,EAAI5M,EAAK4M,QAC7E,MACJ,KAAK6M,GACDimD,GAAwB,CAAEiE,cAA8B,OAAf3jE,EAAK4M,OAAkB,EAAI5M,EAAK4M,QACzE,MACJ,KAAK6M,GACDimD,GAAwB,CAAEjB,WAAYz+D,EAAK4M,QAC3C,MACJ,KAAK6M,GACDimD,GAAwB,CAAEtC,UAAU,IACpCv9D,EAAG2R,sBACH,MACJ,KAAKiI,GACD5Z,EAAG2R,sBACH5R,EAAE,aAAe6Z,EAAoB,KAAKmZ,eAAe,CAAEhmB,OAAO,IAClE,MACJ,KAAK6M,EACDimD,GAAwB,CAAEd,wBAAyB5+D,EAAK4M,QACxD,MACJ,KAAK6M,EACDimD,GAAwB,CAAEb,yBAA0B7+D,EAAK4M,QACzD,MACJ,KAAK6M,EACDimD,GAAwB,CAAEZ,qBAAsB9+D,EAAK4M,QACrD,MACJ,KAAK6M,EACDimD,GAAwB,CAAEX,eAAgB/+D,EAAK4M,QAC/C,MACJ,KAAK6M,EACDimD,GAAwB,CAAEV,gBAAiBh/D,EAAK4M,QAChD,MACJ,KAAK6M,EACDimD,GAAwB,CAAET,4BAA6Bj/D,EAAK4M,QAC5D,MACJ,KAAK6M,EACDimD,GAAwB,CAAER,aAAcl/D,EAAK4M,QAC7C,MACJ,KAAK6M,EACDimD,GAAwB,CAAEP,2BAA4Bn/D,EAAK4M,QAC3D,MACJ,KAAK6M,EACDimD,GAAwB,CAAEN,0BAA2Bp/D,EAAK4M,QAC1D,MAEJ,KAAK6M,GACDimD,GAAwB,CAAEp2C,GAAItpB,EAAKqN,SAAUu2D,aAAc5jE,EAAK4M,QAChEhN,EApiCM,gBAoiCS+H,YAAY,UAAW3H,EAAK4M,OAC3C,MACJ,KAAK6M,GACDimD,GAAwB,CAAEp2C,GAAItpB,EAAKqN,SAAUw2D,+BAAgC7jE,EAAK4M,QAClF,MACJ,KAAK6M,GACDimD,GAAwB,CAAEp2C,GAAItpB,EAAKqN,SAAUy2D,2BAA4B9jE,EAAK4M,QAC9E,MACJ,KAAK6M,GACDimD,GAAwB,CAAEp2C,GAAItpB,EAAKqN,SAAU02D,0BAA2B/jE,EAAK4M,QAC7E,MACJ,KAAK6M,GACDimD,GAAwB,CAAEp2C,GAAItpB,EAAKqN,SAAU22D,yBAA0BhkE,EAAK4M,QAC5E,MACJ,KAAK6M,GACD7Z,EAjjCyB,mCAijCS+H,YAAY,UAAW3H,EAAK4M,OAC9D8yD,GAAwB,CAAEp2C,GAAItpB,EAAKqN,SAAUkyD,wBAAyBv/D,EAAK4M,QAC3E,MACJ,KAAK6M,GACDimD,GAAwB,CAAEp2C,GAAItpB,EAAKqN,SAAUygB,MAAO9tB,EAAK4M,QACzD,MAGJ,KACI6M,GACAwmD,GAAwB,CAAE72C,KAAMppB,EAAK4M,QACrC,MACJ,KAAK6M,GACkB,WAAfzZ,EAAK4M,OACLhN,EAlkCW,yBAkkCa8L,KAAK,qBAAqBE,SAAS,UAC3DhM,EAnkCW,yBAmkCa8L,KAAK,mBAAmBC,YAAY,YAE5D/L,EArkCW,yBAqkCa8L,KAAK,qBAAqBC,YAAY,UAC9D/L,EAtkCW,yBAskCa8L,KAAK,mBAAmBE,SAAS,WAE7Dq0D,GAAwB,CAAE/B,QAASl+D,EAAK4M,QACxC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAE1C,SAAUv9D,EAAK4M,QACzC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAEzC,SAAUx9D,EAAK4M,QACzC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAExC,OAAQz9D,EAAK4M,QACvC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAEvC,eAAgB19D,EAAK4M,QAC/C,MACJ,KAAK6M,GACDwmD,GAAwB,CAAEtC,eAAgB39D,EAAK4M,QAC/C,MACJ,KAAK6M,GACDwmD,GAAwB,CAAErC,OAAQ59D,EAAK4M,QACvC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAEpC,KAAM79D,EAAK4M,QACrC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAEnC,aAAc99D,EAAK4M,QAC7C,MACJ,KAAK6M,GACDwmD,GAAwB,CAAElC,MAAO/9D,EAAK4M,QACtC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAEjC,QAASh+D,EAAK4M,QACxC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAEX,MAAOt/D,EAAK4M,QACtC,MACJ,KAAK6M,GACDwmD,GAAwB,CAAE9B,MAAOn+D,EAAK4M,UAKlD9M,EAAMqiE,uBAAyB,WAC3BviE,EAAE,QAAQgM,SAAS,eAGhB9L,EA7oCK,CA8oCdQ,OAAQb;AClpCV,aACAA,GAAGwkE,cAAiB,SAAUrkE,EAAGC,GAG7B,IAkCIyZ,EACA4qD,EACAC,EAEAC,EACAC,EACAC,EAqGAC,EA7IAzkE,EAAQD,EAAGokE,eAAiB,GAS5BO,EAAU,gBAGVlZ,EAAa,uBA8BbmZ,EAAW,EACXC,EAAc,EACdtE,GAAQ,EACRuE,GAAU,EACVC,GAA0B,EAG1BC,EACK,MADLA,EAEM,OAFNA,EAGW,YAHXA,EAIM,OAJNA,EAKS,UALTA,EAMS,UAETC,EACgB,EADhBA,EAEU,EAFVA,EAGsB,EAHtBA,EAIU,EAJVA,EAKS,EA2BTC,EAAc,CACdC,aAAc,KACdtV,YAAa,KACbj+C,aAAc,KACdmI,gBAAiB,KACjBqrD,0BAA2B,KAC3BC,gBAAiBL,GAEjBM,EAAoB,CACpBH,aAAc,KACdtV,YAAa,KACbj+C,aAAc,KACd2zD,KAAM,KACNxrD,gBAAiB,KACjBqrD,0BAA2B,KAC3BC,gBAAiBL,GAEjBQ,EAAe,CACfD,KAAM,KACNJ,aAAc,KACdvY,eAAgB,KAChBh7C,aAAc,KACdmI,gBAAiB,KACjBqrD,0BAA2B,KAC3BC,gBAAiBL,GAEjBS,EAAe,CACfF,KAAM,KACNJ,aAAc,KACdvzD,aAAc,KACdmI,gBAAiB,KACjBsrD,gBAAiBL,GAEjBU,EAAkB,CAClBP,aAAc,KACdQ,uBAAwB,KACxBC,wBAAyB,KACzBh0D,aAAc,KACdmI,gBAAiB,KACjB8rD,aAAa,EACbR,gBAAiBL,GAEjBc,EAAkB,CAClBX,aAAc,KACdtV,YAAa,KACbj+C,aAAc,KACdmI,gBAAiB,KACjBqrD,0BAA2B,KAC3BC,gBAAiBL,EACjBe,gBAAiB,GACjBC,mBAAoB,IAGpBC,GAAmB,EACnBC,GAAe,EACfC,GAA0B,EAC1BC,GAA+B,EAC/BC,GAAiB,EACjBC,GAAU,EACVC,GAAqB,EACrBC,GAAmB,EAQnB5sD,EACmB,GADnBA,EAEoB,GAFpBA,EAIU,GAJVA,EAKM,GALNA,EAOK,GAPLA,EAQc,GARdA,EASS,GATTA,EAUc,GAVdA,EAYe,GAZfA,EAaS,GAbTA,EAciB,GAdjBA,EAeU,GAfVA,GAiBQ,GAjBRA,GAoBY,GApBZA,GAsBK,GAtBLA,GAuBgB,GAvBhBA,GA0BY,GA1BZA,GA2Ba,GA3BbA,GA6Be,GA7BfA,GA8BkB,GA9BlBA,GA+Be,GA/BfA,GAiCqB,GAjCrBA,GAkCY,GAlCZA,GAmCS,GAnCTA,GAoCQ,GApCRA,GAsCS,GAtCTA,GAuCY,GAvCZA,GAwCe,GAxCfA,GAyCW,GAzCXA,GA4Ce,GA5CfA,GA6CkB,GA7ClBA,GA+Ca,GA/CbA,GAiDgB,GAjDhBA,GAkDkB,GAlDlBA,GAmDU,GAnDVA,GAoDS,GApDTA,GAqDiB,GArDjBA,GAuDW,GAvDXA,GAwDuB,GAxDvBA,GAyDU,GAzDVA,GA0De,GA1DfA,GA4DgB,IA5DhBA,GA6DoB,IA7DpBA,GA8De,IA9DfA,GA+DiB,IA/DjBA,GAiEuB,IAjEvBA,GAqEsB,IArEtBA,GAuEoB,IAvEpBA,GAyE4B,IAzE5BA,GA0EoB,IA1EpBA,GA2EgB,IA3EhBA,GAgFa,IAhFbA,GAkF4B,IAlF5BA,GAmF4B,IAnF5BA,GAoFuB,IApFvBA,GAsFqB,IAtFrBA,GAuFsB,IAvFtBA,GAyFuB,IAzFvBA,GA0F0B,IA1F1BA,GA4FkB,IA5FlBA,GA6FiB,IA7FjBA,GA8FkB,IA9FlBA,GAgGkB,IAhGlBA,GAkGwB,IAlGxBA,GAmG2B,IAnG3BA,GAqGsB,IArGtBA,GAsGmB,IAtGnBA,GAuG2B,IAvG3BA,GAwGwB,IAW5B,SAAS6sD,KACL,MAAO,CACHC,KAAMhC,EAAqBa,KAC3BoB,eAAgB,KAChBC,QAAS,KACTC,yBAA0B,KAC1BC,UAAU,EACVC,iCAAiC,GA8DzC,IAsrBIC,GAtrBAC,IAAW,EACf,SAASC,GAAe/mE,EAAMgnE,GAC1BlB,GAAoBE,EACpBpmE,EAAE0rD,EAAa,+BAA+B1/C,SAAS,YAAY5L,KAAK,UAAU,GAAMgG,KAAK,eAAe,GAC5G8gE,IAAW,EAENjnE,EAAGgB,QAAQ40C,SAAS6V,KACrBwb,IAAW,IAGVA,IAAYlnE,EAAE,4BAA6B0rD,GAAYxsD,OAAS,GAAyD,QAApDc,EAAE,4BAA6B0rD,GAAYprD,QACjHoZ,EAAO0C,MAAMkoD,EAAkD,wCAC/D4C,IAAW,GAGVA,IAAgG,IAApFlnE,EAAE,gDArVI,yBAqVmEd,SACtFwa,EAAO0C,MAAMkoD,EAAsE,4DACnF4C,IAAW,GAGf,IAAIG,EAAernE,EA/UH,kBA+UoB,GAAGsnE,UAClCJ,IAAsE,QAA1DlnE,EAAE,iCAAiCM,MAAM8lB,eAAkD,GAAvBihD,EAAanoE,SAC9Fwa,EAAO0C,MAAMkoD,EAAqC,2BAClD4C,IAAW,GAGf,IAAIK,EAAoBvnE,EAtVY,sCAsVyBI,KAAK,WAC7D8mE,IAAkF,QAAtElnE,EAAE,6CAA6CM,MAAM8lB,eAC9DigD,GAAsD,GAArBkB,GAA+C,MAArBA,GACf,QAA5CvnE,EAAE,mBAAmBM,MAAM8lB,eAA0D,OAA/BpmB,EAAE,oBAAoBM,OAAiD,aAA/BN,EAAE,oBAAoBM,QAExH4mE,IAAW,EACXjnE,EAAGiR,mBAAmBozD,EAAgD,qCAAGzqD,GAA4BA,GAA+B,iBAAkB,KAAMyqD,EAAyC,8BAAGA,EAAgD,uCAGvP4C,KAAYV,GACmC,SAA5CxmE,EAAE,mBAAmBM,MAAM8lB,eAA4D,QAA/BpmB,EAAE,oBAAoBM,OAAkD,QAA/BN,EAAE,oBAAoBM,QAC3HL,EAAGiR,mBAAmBozD,EAA0D,+CAAGzqD,GAAsBA,GAAqB,kBAC9HqtD,IAAW,GAGVA,KAAYX,GACmC,SAA5CvmE,EAAE,mBAAmBM,MAAM8lB,eAA4D,QAA/BpmB,EAAE,oBAAoBM,OAAkD,QAA/BN,EAAE,oBAAoBM,QAC3HknE,GAAiB,kBACjBN,IAAW,GAGfb,GAA+B,EAE3Ba,IACAlnE,EAAE0rD,EAAa,+BAA+B3/C,YAAY,YAAY3L,KAAK,UAAU,GAAOgG,KAAK,eAAe,GAIxH,SAASqhE,KACL,OAAO1/B,WAAW/nC,EArXH,iBAqXmBkM,OAAOw7D,WAAW,IAAK,KAG7D,SAASC,KACL,OAAO5/B,WAAW/nC,EAAE,iBAAiBM,MAAMonE,WAAW,IAAK,KAS/D,SAASE,KACL9C,EAAc2C,KACd5C,EAAW8C,KACX,IAAIE,EAAiB9/B,WAAW/nC,EAAE,0BAA0BM,MAAMonE,WAAW,IAAK,KAC9EI,EAAchD,EAAc+C,EAAkB/C,EAAc+C,EAAmBA,EAAiB/C,EAChGiD,EAA2C,QAA3B/nE,EAAE,gBAAgBM,MAQtC,OAHI6lE,IAHArB,GAAeD,GAAauB,GAA4B5F,GAAUuE,GAAWJ,EAAqBW,iBAAmBL,GAMrHH,GAAe+C,GAAkB/C,GAAeD,GAAYF,EAAqBW,iBAAmBL,MAG/F8C,IAIDD,GAAc,KAAOnD,EAAqBW,iBAAmBL,GAEtD6C,GAAe,GAAMD,GAAmBC,GAAc,KAAOnD,EAAqBW,iBAAmBL,IAQxH,SAAS+C,KACL,IAAIC,EAAclgC,WAAW/nC,EAAE,kBAAkBM,OAC7C4nE,EAAcngC,WAAW/nC,EAAE,+BAA+BM,OAE1D6nE,EAAmBpgC,WAAW/nC,EAAE,uBAAuBM,OACvD8nE,EAAmBrgC,WAAW/nC,EAAE,oCAAoCM,OAEpE+nE,EAAatgC,WAAW/nC,EAAE,iBAAiBM,OAC3CgoE,EAAavgC,WAAW/nC,EAAE,8BAA8BM,OAExDioE,EAAexgC,WAAW/nC,EAAE,iBAAiBM,OAC7CkoE,EAAezgC,WAAW/nC,EAAE,8BAA8BI,KAAK,UAEnE,OAAO6nE,GAAeC,GAAeC,GAAoBC,GAAoBC,GAAcC,GAAcC,GAAgBC,EAQ7H,SAASC,GAAqBroE,GAC1B,IAAIsO,EAAQ1O,EAAE0rD,IACd6Y,EAAqBmC,MACFI,yBAA2BtC,EAC9CD,EAAmBsC,QAAU7mE,EAAE,kCAAoCwkE,EAA2B,KAAKlkE,MAE/FF,EAAKyZ,KAAOA,IAAezZ,EAAKyZ,KAAOA,IACvC0qD,EAAmBqC,eAAiB1B,EACd,QAAlBR,IACAH,EAAmBwC,UAAW,IAE3B3mE,EAAKyZ,KAAOA,GACnB0qD,EAAmBqC,eAAiB1B,EAC7B9kE,EAAKyZ,KAAOA,IACnB0qD,EAAmBqC,eAAiB1B,EACpCX,EAAmByC,iCAAkC,GAErDzC,EAAmBqC,eAAiB1B,EAGxC,IAAIrkE,EAAU,CACVkF,IAAK6+D,EAAU,wCACfj+D,OAAQ,CACJgQ,KAAM4tD,EACN1qD,IAAKzZ,EAAKyZ,KAEd3S,SAcJ,SAAmBC,GACXA,GACAnH,EAleQ,kBAkeSkM,KAAK/E,EAAO/G,MAAMQ,iBAEnC+jE,EAAqBW,iBAAmBL,GAmCpD,WAEI,IAAIpkE,EAAU,CACVkF,IAAK2iE,0BACL/hE,OAAQ,CACJ6+D,KAAMb,EAAqBa,MAE/Bt+D,SAOJ,SAAmBC,GACf,GAAIA,EAAO/G,KAAM,CACb,IAAIuoE,EAAO3oE,EAAE,qBAAuB2kE,EAAqBa,KAAO,MAC5DmD,EAAKzpE,OAAS,IACdypE,EAAK3H,YAAY75D,EAAO/G,OACxBuoE,EAAO3oE,EAAE,qBAAuB2kE,EAAqBa,KAAO,OACvD15D,KAAK,oBAAoBI,KAAKy8D,EAAKn/D,QAAU,IAEtDxJ,EAphBY,iBAohBSY,iBAM7BZ,EAAE,yBALyB2oE,GAKc,QAAQ/5D,aAAa,CAC1D4B,QAAS,QACT7B,KAAM,QACN8B,MAAO,CACH9B,KAAM,QAEV4B,SAAS,MA1BTzB,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GA9CR+nE,GAEAjE,EAAqBW,iBAAmBL,GAMpD,WACI,IAAIxf,EAAazlD,EAAE,sCAAsCM,MACrDolD,EAAS1lD,EAAE,sBAAsBM,MACjCqlD,GAA+B,IAApBhnD,OAAO+mD,GAAiBD,EAAaC,EAChDmjB,EAAc7oE,EAAE,0BAA0BM,MAE1CO,EAAU,CACVkF,IAAK+iE,2CACLniE,OAAQ,CACJ8kB,SAAUk6B,EACVojB,eAAgBF,GAEpB3hE,SAMJ,SAAmBC,GACXA,IACAnH,EAAEgpE,uBAAuB98D,KAAK/E,EAAO/G,MACrCH,EAAGgB,QAAQE,WAAU,EAAM6nE,yBAR/BpvD,UAAU,EACV9K,QAAQ,GAEZ7O,EAAG+F,KAAKC,QAAQpF,GArBRooE,IArBJrvD,UAAU,EACV9K,QAAQ,GAIRo6D,EAFczB,KACK1/B,WAAW/nC,EAAE,4BAA4BM,MAAMonE,WAAW,IAAK,KAEpD,IAA9BnD,EAAmBsC,SAAiBqC,EACpCxvD,EAAO0C,MAAMkoD,EAA6B,mBAE1CrkE,EAAG+F,KAAKC,QAAQpF,GAEpB6N,EAAMA,MAAM,QA8HhB,SAASy6D,KACL,IAAIlpE,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACVkF,IAAK6+D,EAAU,cACfj+D,OAAQ,CACJ6+D,KAAMb,EAAqBa,KAC3BF,gBAAiBX,EAAqBW,gBACtCU,gBAAiBrB,EAAqBqB,iBAAmB,KACzDC,mBAAoBtB,EAAqBsB,oBAAsB,MAGnE/+D,SASJ,SAAmBC,GACf,IAAKA,EAAO/G,KACR,OAEJkkE,EAAYrkE,EAAGoZ,WAEfrZ,EAAE,QAAQgP,OAAO7H,EAAO/G,MACxB,IAAIsO,EAAQ1O,EAAE0rD,GACdh9C,EAAMvK,MAAMC,GAAG,kBAAkB,WAC7BlE,EAAMkpE,iBACN16D,EAAM9N,iBAENslE,GAAmB,EACnBE,GAA0B,EAC1BD,GAAe,EACfI,GAAU,EACVC,GAAqB,EACrBC,GAAmB,EAEnBxmE,EAAGkP,cAAa,GACZw1D,EAAqBS,cAA6D,mBAAtCT,EAAqBS,cACjET,EAAqBS,eAEzB,IAAMiE,EAAY36D,EAAM5C,KAAK,QAC7Bu9D,EAAUC,KAAK,UAAU,WACrBtpE,EAAEtE,MAAMoQ,KAAK,gBAAgBuM,KAAK,YAAY,MAGlDgxD,EAAUjlE,GAAG,kBAAkB,SAAU8B,GAErC,GAAgB,MADFA,EAAEojB,SAAWpjB,EAAEmjB,OAGzB,OADAnjB,EAAE2G,kBACK,QAIhBzI,GAAG,kBAAmBmlE,IAAuB76D,MAAM,SA5CtDoL,gBAAgB,EAChBF,UAAU,EACVI,gBAAiB2qD,EAAqB3qD,gBACtClL,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,IA2DpB,SAAS2oE,GAAoB33D,GACzB7R,EA3qBgB,uBA2qBCmE,MAAMC,GAAG,mBAAmB,WACzCpE,EA5qBY,uBA4qBKkP,SACjBjP,EAAGwC,gBAEJiM,MAAM,QAoDb,SAAS+6D,KACLzpE,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,kBAAmBmlE,IAAuB76D,MAAM,QAa5F,SAAS66D,KACLtpE,EAAGwC,aACHzC,EAAE0rD,GAAYx8C,SACdlP,EArvBoB,sBAqvBCkP,SACM,KACvBy1D,EAAqB9yD,cAA6D,mBAAtC8yD,EAAqB9yD,cACjE8yD,EAAqB9yD,eAW7B,SAAS63D,KACL,IAAIC,EAAS3pE,EAAE,yBAA2BwkE,EAA2B,KAAKlkE,MAC1EN,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,YAxN/D,SAAyB+M,EAASy4D,EAASC,EAAYF,EAAQr4D,GAC3D,IAAIrR,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACVkF,IAAK6+D,EAAU,gBACfj+D,OAAQ,CACJwK,QAASA,EACTy4D,QAASA,EACTt4D,eAAgBA,EAChBu4D,WAAYA,EACZF,OAAQA,GAEZziE,SAMJ,SAAmBC,GACf,IAAIuH,EAAQ1O,EAAE,0DACd0O,EAAMxC,KAAK/E,EAAO/G,MAAM+D,MAAMC,GAAG,kBAAkB,WACtB,oBAAbqJ,UACRzN,EAAE,gBAAiB0O,GAAOtI,KAAK,gBAAiBqH,UAEpDxN,EAAGuC,oBACHvC,EAAGgB,QAAQE,WAAU,EAAMuN,GAC3BzO,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHiM,EAAMQ,YACPR,MAAM,CACLgD,SAAU,SACVC,UAAU,IACXjD,MAAM,SApBTI,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,IAuMZipE,CAAgBxF,EAA0B,eAAGzqD,GAAmBA,GAAsB8vD,EAAQ,qBAC/Fj7D,MAAM,QA2eb,SAAS84D,GAAiBl2D,GACtB,IAAIrR,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACVkF,IAAK6+D,EAAU,eACfj+D,OAAQ,CACJ2K,eAAgBA,GAEpBpK,SAMJ,SAAmBC,GACf,IAAIuH,EAAQ1O,EAAE,0DACd0O,EAAMxC,KAAK/E,EAAO/G,MAAM+D,MAAMC,GAAG,kBAAkB,WACtB,oBAAbqJ,UACRzN,EAAE,gBAAiB0O,GAAOtI,KAAK,gBAAiBqH,UAEpDiB,EAAM9N,iBACNX,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHiM,EAAMQ,YACPR,MAAM,CACLgD,SAAU,SACVC,UAAU,IACXjD,MAAM,SAnBTI,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,IAoBpB,SAASkpE,GAAcC,EAAMC,GACzBhqE,EAAG2R,uBACH2yD,EAAqBmC,MACFI,yBAA2B,KAC9CvC,EAAmBsC,QAAUmD,EAC7BzF,EAAmBqC,eAAiBqD,EAEpC,IAAIppE,EAAU,CACVkF,IAAK6+D,EAAU,wCACfj+D,OAAQ,CAAEgQ,KAAM4tD,GAChB3qD,UAAU,EACV9K,QAAQ,EACR5H,SAKJ,WACIi/D,GAAe,EACfI,GAAU,EACVL,GAAmB,EACnBM,GAAqB,EACrBJ,GAA0B,EAC1BpmE,EAAE0rD,GAAY5/C,KAAK,mBAAmB0E,QAAQ,WARlDvQ,EAAG+F,KAAKC,QAAQpF,GA6BpB,SAASqpE,GAAuB9pE,EAAM+pE,IAClC5F,EAAqBmC,MACFI,yBAA2BtC,EAC9CD,EAAmBsC,QAAU7mE,EAAE,kCAAoCwkE,EAA2B,KAAKlkE,MACnGikE,EAAmBqC,eAAiB1B,EAEpC,IAAIrkE,EAAU,CACVkF,IAAK6+D,EAAU,yBACfj+D,OAAQ,CACJgQ,KAAM4tD,EACN4F,eAAAA,GAEJvwD,UAAU,EACV9K,QAAQ,EACR5H,SASJ,SAAmBC,GACfnH,EAz1CY,kBAy1CKkM,KAAK/E,EAAO/G,MAAMQ,mBAPL,IAA9B2jE,EAAmBsC,QACnBntD,EAAO0C,MAAMkoD,EAA6B,mBAE1CrkE,EAAG+F,KAAKC,QAAQpF,GAwDxB,SAASupE,KACL,IAAIC,EAAeC,KAEfzpE,EAAU,CACVkF,IAAK6+D,EAAU,yBACfj+D,OAAQ,CACJ4jE,iBAAkB5F,EAAqBa,KACvC6E,aAAcA,GAElBzwD,UAAU,EACV9K,QAAQ,EACR5H,SAKJ,SAAmBC,GACfnH,EAp5C2B,iCAo5CKkM,KAAK/E,EAAO/G,MAAMQ,mBAHtDX,EAAG+F,KAAKC,QAAQpF,GA4BpB,SAASypE,KACL,IAAID,EAAe,GAyBnB,OAxBArqE,EAAEuJ,KAAKvJ,EA/6CwB,iCA+6CQ8L,KAAK,oBAAoB,SAAUsK,EAAKO,GAC3E,IAAI/K,EAAK5L,EAAE2W,GAEX0zD,EAAahrE,KACT,CACImrE,SAAU5+D,EAAGE,KAAK,kCAAkCxL,MACpD2rB,iBAAkBrgB,EAAGE,KAAK,0CAA0CxL,MACpEwqB,aAAclf,EAAGE,KAAK,sCAAsCxL,MAC5DstB,WAAYhiB,EAAGE,KAAK,oCAAoCxL,MACxDssB,iBAAkBhhB,EAAGE,KAAK,0CAA0CxL,MACpEmqE,gBAAiB7+D,EAAGE,KAAK,yCAAyCxL,MAClEoqE,SAAU9+D,EAAGE,KAAK,kCAAkCxL,MACpDosB,gBAAiB9gB,EAAGE,KAAK,0CAA0CxL,MACnEqqE,MAAO/+D,EAAGE,KAAK,+BAA+BxL,MAC9C4qB,WAAYtf,EAAGE,KAAK,oCAAoCxL,MACxD8qB,aAAcxf,EAAGE,KAAK,sCAAsCxL,MAC5DsqE,qBAAsBh/D,EAAGE,KAAK,8CAA8CxL,MAC5EuqE,aAAcj/D,EAAGE,KAAK,sCAAsCxL,MAC5D8pB,oBAAqBxe,EAAGE,KAAK,6CAA6CxL,MAC1EsqB,aAAchf,EAAGE,KAAK,sCAAsCxL,WAKjE+pE,EAsUX,OA9xBAnqE,EAAM4qE,qBAAuB,SAAU1qE,EAAMia,GACzC0qD,EAAwC,QAA9B/kE,EAAE,mBAAmBM,MAC/BkgE,EAAQmE,EAAqBW,iBAAmBL,GAA+BN,EAAqBW,iBAAmBL,EAEvH,IAAM8F,EAAwBhG,GAAWvE,GAASmE,EAAqBW,iBAAmBL,EAC1F,IAAKmB,GAA2BF,IAAqB0B,OAA2BmD,EAG5E,OAFA/qE,EAAE,0BAA0BM,IAAI,QAChCL,EAAGiR,mBAAmBozD,EAA0D,+CAAGzqD,GAAsBA,GAAqB,mBACvH,EA2BX,GAxBImuD,OAAyB+C,IACzB/qE,EAAE,0BAA0BM,IAAI,QAChCkmE,GAAqB,GAGrBC,IAAqBsE,IACrB/qE,EAAE,0BAA0BM,IAAI,QAChCkmE,GAAqB,GAGrBiB,MAAoBE,MAAkBoD,GACtC/qE,EAAE,0BAA0BM,IAAI,QAG/B8lE,IAA2BF,IAAoB0B,MAA2BnB,GAAqBuB,MAAyB+C,GACzH/qE,EAAE,0BAA0BM,IAAI,UAIPyqE,GAAyBtD,MAvpB/C1/B,WAAW/nC,EAAE,6BAA6BM,MAAMonE,WAAW,IAAK,MAypBnE1nE,EAAE,0BAA0BM,IAAI,QAGhCkmE,EAAoB,CACpB,IAAIwE,EAAiBjjC,WAAW/nC,EAAE,iBAAiBM,QAAUynC,WAAW/nC,EAAE,8BAA8BI,KAAK,WACvE,YAA/BJ,EAAE,oBAAoBM,MAC7BN,EAAE,0BAA0BM,IAAI0qE,QAEhChrE,EAAE,0BAA0BM,IAAI,SAGpC,OAAI6lE,GACAqB,GAAiB,mBACV,GAGPN,IACAA,IAAW,GACJ,IAGXlnE,EAAEtE,MAAMsQ,SAAS,mBACjBi7D,GAAgBjnE,EAAE,SAAUtE,MAAM0K,KAAK,aAEvCnG,EAAG2Q,sBAGP1Q,EAAMkpE,eAAiB,SAAUhpE,EAAM+G,EAAQkT,GAC3C,IAAI3L,EAAQ1O,EAAE0rD,GAEd,GAAItrD,EAAM,CAeN,GAbAP,GAAGiR,sBAGS,GAAR1Q,IACAJ,EApkCa,uBAokCS,GAAGmY,UAAY,GACrCnY,EArkCa,uBAqkCSkM,KAAK9L,GACI,GAA3B4kE,IACAhlE,EAAE,2BAA4BA,EApkCtB,uBAokC4C+L,YAAY,UAChE/L,EArkCQ,sBAqkCa8L,KAAK,KAAKC,YAAY,kBAAkBC,SAAS,iBACtE/L,EAAGgB,QAAQmB,aAAY,EAtkCf,wBA0kC8B,QAA1CiY,EAAI6B,kBAAkB,kBAAwE,SAA1C7B,EAAI6B,kBAAkB,kBAAuC,GAAR9b,EACnE,QAAlCia,EAAI6B,kBAAkB,UACtByoD,EAAqBa,KAAO73D,SAAS0M,EAAI6B,kBAAkB,SACvDyoD,EAAqB7U,aAA2D,mBAArC6U,EAAqB7U,cAChE6U,EAAqB7U,YAAY6U,EAAqBa,MACtDxlE,EAAE0rD,EAAa,+BAA+BtlD,KAAK,YAAY,GAAOiS,KAAK,YAAY,KAGvFssD,EAAqB9X,gBAAiE,mBAAxC8X,EAAqB9X,gBACnE8X,EAAqB9X,eAAe8X,EAAqBa,MAInB,QAA1CnrD,EAAI6B,kBAAkB,mBAGtBxN,EAAMvK,IAAI,mBAAmBC,GAAG,mBAAmB,WAAA,OAAMmlE,QACzD76D,EAAMA,MAAM,cAGhB,GAAI2L,EAAI6B,kBAAkB,QAEtB,OADAyoD,EAAqBa,KAAO73D,SAAS0M,EAAI6B,kBAAkB,SACrB,QAAlC7B,EAAI6B,kBAAkB,SA70B1C,SAAoC9b,GAChC,IAAIsO,EAAQ1O,EAAE0rD,GAEViZ,EAAqB7U,aAA2D,mBAArC6U,EAAqB7U,cAChE6U,EAAqB7U,YAAY6U,EAAqBa,MACtDxlE,EAAE0rD,EAAa,+BAA+BtlD,KAAK,YAAY,GAAOiS,KAAK,YAAY,IAE3F3J,EAAMvK,IAAI,mBAAmBC,GAAG,mBAAmB,WAC/CsK,EAAMvK,MAAM+H,KAAK9L,GAAMgE,GAAG,kBAAkB,WAExC,GADAsK,EAAM9N,iBACFZ,EAAE,WAAY0rD,GAAYxsD,OACV,IAAI+rE,UAAUvf,EAAa,gBAEhDtnD,GAAG,kBAAmBmlE,IAAuB76D,MAAM,WAE1DA,EAAMA,MAAM,QA+zBWw8D,CAA2B9qE,GA1zBtD,SAAmCgnE,EAAUhnE,GACzC,IAAIsO,EAAQ1O,EAAE0rD,GAKd,GAHIiZ,EAAqB9X,gBAAiE,mBAAxC8X,EAAqB9X,gBACnE8X,EAAqB9X,eAAe8X,EAAqBa,MAEzD4B,EAAU,CACV,IAAI+D,EAAOjnE,SAAS80B,cAAc,KAClCmyC,EAAK17D,GAAK,YACV07D,EAAKltD,OAAS,SACdktD,EAAKlkE,KAAO29D,EAAU,6BAA+BD,EAAqBa,KAC1EthE,SAASgH,KAAKu9B,YAAY0iC,GAC1BA,EAAKljE,QACLjI,EAAEmrE,GAAMj8D,SAEZjP,EAAGkP,cAAa,GACJ,GAAR/O,GACAsO,EAAMvK,IAAI,mBAAmBC,GAAG,mBAAmB,WAC/CsK,EAAMxC,KAAK9L,GAAM+D,MAAMC,GAAG,kBAAkB,WACxCsK,EAAM9N,iBACU,IAAIqqE,UAAUvf,EAAa,aAC3CzrD,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBmlE,QACD76D,MAAM,WACVA,MAAM,QAmyBU08D,CAA+D,QAArC/wD,EAAI6B,kBAAkB,YAAuB9b,GAK1FJ,EAAE,UAAYinE,GAAgB,KAAMvrE,MAAMuU,QAC1CjQ,EAAEtE,MAAMqQ,YAAY,mBAMxB,GAHA/L,EA/mCqB,uBA+mCCY,iBACtBX,EAAGgB,QAAQsc,qBAAqB7O,GAE5Bi2D,EAAqBW,kBAAoBL,GAAgCN,EAAqBW,kBAAoBL,EAClG,IAAIgG,UAAUvf,EAAa,aAE/CzrD,EAAG+W,YAAYtI,GAEf1O,EAAE,qCAAsCtE,MAAM4E,IAAI,IAC9CgmE,IACAA,GAAiB,EACjBtmE,EAAE0rD,GAAY5/C,KAAK,2CAAkD0E,QAAQ,WASrFtQ,EAAMmrE,cAAgB,SAAUn1B,GAC5Bx8B,EAASA,GAAU,IAAIyC,OACvBwoD,EAAuB3kE,EAAEe,OAAO,GAAIokE,EAAajvB,GACjDizB,MAUJjpE,EAAMorE,eAAiB,SAAUp1B,GAC7Bx8B,EAASA,GAAU,IAAIyC,OACvBwoD,EAAuB3kE,EAAEe,OAAO,GAAI0kE,EAAcvvB,GAClDizB,MASJjpE,EAAMqrE,eAAiB,SAAUr1B,GAC7Bx8B,EAASA,GAAU,IAAIyC,OACvBwoD,EAAuB3kE,EAAEe,OAAO,GAAI2kE,EAAcxvB,GAClDizB,MAUJjpE,EAAMsrE,oBAAsB,SAAUt1B,GAClCx8B,EAASA,GAAU,IAAIyC,OACvBwoD,EAAuB3kE,EAAEe,OAAO,GAAIwkE,EAAmBrvB,GACvDizB,MAWJjpE,EAAMurE,kBAAoB,SAAUv1B,GAChCx8B,EAASA,GAAU,IAAIyC,OACvBwoD,EAAuB3kE,EAAEe,OAAO,GAAI4kE,EAAiBzvB,GACrDizB,MAIJjpE,EAAMwrE,iBAAmB,WACrB1rE,EAAE,QAAQgM,SAAS,eAYvB9L,EAAMyrE,oBAAsB,SAAUz1B,EAAa8vB,EAAiBC,GAChEvsD,EAASA,GAAU,IAAIyC,QACvBwoD,EAAuB3kE,EAAEe,OAAO,GAAIglE,EAAiB7vB,IAChC8vB,gBAAkBA,EACvCrB,EAAqBsB,mBAAqBA,EAC1CkD,MAIJjpE,EAAM0rE,kBAAoB,SAAUpG,EAAM3Y,GACtC,IAAI5sD,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAEhB,IAAItO,EAAU,CACVkF,IAAK6+D,EAAU,oBACfj+D,OAAQ,CACJ6+D,KAAMA,GAEVt+D,SAOJ,SAAmBC,GACXA,EAAO/G,MACPJ,EAAE,QAAQgP,OAAO,sFAAwFw2D,EAAxF,qCACjBxlE,EAAE0rD,GAAYvnD,MAAM+H,KAAK/E,EAAO/G,MAAMgE,GAAG,kBAAkB,WACvDnE,EAAGkP,cAAa,GAChBlP,EAAGgB,QAAQE,WAAU,EAAMuqD,GAC3BzrD,EAAGgB,QAAQC,gBAAgBwqD,MAC5BtnD,GAAG,mBAAmB,SAAU8B,GAC3BlG,EAAE0rD,GAAYtrD,KAAK,YACnBysD,EAAelvC,KAAKjiB,MAExBsE,EAAE0rD,GAAYx8C,YACfR,MAAM,SAETzO,EAAGkP,cAAa,IApBpBL,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,KAgWpBX,EAAMC,qBAAuB,SAAUC,GACnC,OAAQA,EAAKyZ,KAET,KAAKA,GAr2BT7Z,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDnE,EAAGw8D,UAAU6E,YAAY,CACrBlE,eAAe,EACfvrD,aAAc43D,GACd3Z,YAAa+b,wBAElBn9D,MAAM,QAi2BD,MACJ,KAAKmL,IAh6Bb,SAA4BzZ,GACxBJ,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDnE,EAAGw8D,UAAUmF,aAAa,CACtB5E,WAAYr+D,OAAOyB,EAAK8F,EAAE9F,KAAK,aAC/ByR,aAAc43D,QAEnB/6D,MAAM,QA25BDo9D,CAAmB1rE,GACnB,MAGJ,KAAKyZ,GA91BT7Z,EAAE,qBAAsB0rD,GAAYprD,IAAI,QAAQuyB,SAg2BxC,MACJ,KAAKhZ,IA91Bb,SAAwBzZ,GACpB,IAAI2rE,EAAe3rE,EAAK8F,EAAEoH,QAAQ,aAClCtN,EAAE,iBAAkB+rE,GAAczrE,IAAI,QAAQuyB,SA61BtCm5C,CAAe5rE,GACf,MACJ,KAAKyZ,GACD,IAAIoyD,EAAclkC,WAAW3nC,EAAK8F,EAAE9F,KAAK,oBAAoB8M,WAAWw6D,WAAW,IAAK,KAC9E3/B,WAAW3nC,EAAK4M,MAAME,WAAWw6D,WAAW,IAAK,KACjDuE,IACN7rE,EAAK8F,EAAE5F,IAAIF,EAAK8F,EAAE9F,KAAK,oBACvBsZ,EAAO0C,MAAMkoD,EAAoD,yCAAI,IAAM2H,IAEnF,KAAKpyD,EACDqsD,GAAmB,EACnBC,GAAe,EACf,MACJ,KAAKtsD,GACL,KAAKA,EACL,KAAKA,EACL,KAAKA,EACL,KAAKA,EACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,EACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACD0sD,GAAU,EACV,MACJ,KAAK1sD,EACL,KAAKA,EACL,KAAKA,EACL,KAAKA,EACD4sD,GAAmB,EACnBF,GAAU,EACV,MAGJ,KAAK1sD,GACD2qD,EAA2BpkE,EAAK8F,EAAE9F,KAAK,WACvCskE,EAAiB1kE,EAAE,yBAA2BwkE,EAA2B,KAAKlkE,MAC9EmoE,GAAqBroE,GACrB,MACJ,KAAKyZ,GACD2qD,EAA2BpkE,EAAK8F,EAAE9F,KAAK,WACvCskE,EAAiB1kE,EAAE,yBAA2BwkE,EAA2B,KAAKlkE,MAC9EopE,KACA,MACJ,KAAK7vD,GAKL,KAAKA,GACD2qD,EAA2BpkE,EAAK8F,EAAE9F,KAAK,WACvCskE,EAAiB1kE,EAAE,yBAA2BwkE,EAA2B,KAAKlkE,MAC9EmoE,GAAqBroE,GACrB,MACJ,KAAKyZ,GACD2vD,KACAf,GAAqBroE,GACrB,MACJ,KAAKyZ,GACD4uD,GAAqBroE,GACrBopE,KACA,MACJ,KAAK3vD,IA54Bb,SAA+BzZ,GAC3B,IAAI8rE,EAAY9rE,EAAK8F,EAAE2F,UAAUzF,KAAK,MAClChG,EAAK8F,EAAE4F,KAAK,KAAKiG,SAAS,mBAC1B/R,EAAE,2BAA4BI,EAAK8F,EAAEoH,QAAQ,gBAAgBvB,YAAY,UACzE3L,EAAK8F,EAAE4F,KAAK,KAAKC,YAAY,kBAAkBC,SAAS,iBACxD/L,EAAGgB,QAAQmB,aAAY,EApxBP,sBAqxBC,qBAAb8pE,IACAlH,GAA0B,KAG9BhlE,EAAE,2BAA4BI,EAAK8F,EAAEoH,QAAQ,gBAAgBtB,SAAS,UACtE5L,EAAK8F,EAAE4F,KAAK,KAAKC,YAAY,iBAAiBC,SAAS,kBACtC,qBAAbkgE,IACAlH,GAA0B,IAg4B1BmH,CAAsB/rE,GACtB,MACJ,KAAKyZ,IAvuCb,SAAyBzZ,GACjBH,EAAGgB,QAAQ40C,SAASu2B,0CACpBpsE,EAAE,uBAAwB0rD,GAAYprD,IAAIF,EAAK4M,OAAO6lB,SAsuClDw5C,CAAgBjsE,GAChB,MACJ,KAAKyZ,GACDstD,KACA,MACJ,KAAKttD,GACL,KAAKA,GACDstD,KACA,MAEJ,KAAKttD,IAl4Bb,SAAuCzZ,GACnC,IAAMyqB,EAAeld,SAAS3N,EAAE,sDAAsDM,OACtF,GAAoB,GAAhBuqB,GACAA,GAAgBzqB,EAAK2nB,IAAI8C,aAIzB,OAHAzqB,EAAK8F,EAAE9F,KAAK,UAAW,MAAMA,KAAK,QAAS,MAAME,IAAI,IACrDN,EAAE,8BAA+BI,EAAK8F,EAAEoH,QAAQ,cAAchN,IAAI,WAClEoZ,EAAO0C,MAAMkoD,EAAwC,8BAGzD,IAAIgI,EAAYlsE,EAAK8F,EAAEoH,QAAQ,aAC/BtN,EAAE,gBAAiBssE,GAAWhsE,IAAI,GAClCN,EAAE,0BAA2BssE,GAAWhsE,IAAIF,EAAK2nB,IAAIwC,UACrDvqB,EAAE,mBAAoBssE,GAAWhsE,IAAI,IACrCN,EAAE,0BAA2BssE,GAAWhsE,IAAIF,EAAK2nB,IAAIyE,aACrDxsB,EAAE,2BAA4BssE,GAAWhsE,IAAIF,EAAK2nB,IAAI4E,kBACtD3sB,EAAE,uBAAwBssE,GAAWhsE,IAAIF,EAAK2nB,IAAI8C,cAClD7qB,EAAE,uBAAwBssE,GAAWhsE,IAAIF,EAAK2nB,IAAIoD,cAClDnrB,EAAE,qBAAsBssE,GAAWhsE,IAAIF,EAAK2nB,IAAIkD,YAChDjrB,EAAE,uBAAwBssE,GAAWhsE,IAAI,MAi3BjCisE,CAA8BnsE,GAC9B,MACJ,KAAKyZ,IAh3Bb,SAAqCzZ,GAAM,IAAAkkC,EAAA5oC,KACvC,GAAK0E,EAAK2nB,IAAIoC,oBAAd,CAIA,IAAMU,EAAeld,SAAS3N,EAAE,sDAAsDM,OACtF,GAAoB,GAAhBuqB,GACAA,GAAgBzqB,EAAK2nB,IAAI8C,aAIzB,OAHAzqB,EAAK8F,EAAE9F,KAAK,UAAW,MAAMA,KAAK,QAAS,MAAME,IAAI,IACrDN,EAAE,8BAA+BI,EAAK8F,EAAEoH,QAAQ,cAAchN,IAAI,WAClEoZ,EAAO0C,MAAMkoD,EAAwC,8BAIzD,IAAI9uC,EAAMp1B,EAAK8F,EAAEoH,QAAQ,aAEzBtN,EAAE,mBAAoBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIoE,YACxCnsB,EAAE,0BAA2Bw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIwC,UAC/CvqB,EAAE,gBAAiBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIgD,WACrC/qB,EAAE,uBAAwBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAI4C,cAC5C3qB,EAAE,uBAAwBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAI8C,cAC5C7qB,EAAE,uBAAwBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIoD,cAC5CnrB,EAAE,qBAAsBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIkD,YAEtC7qB,EAAK2nB,IAAIsC,WAAa1c,SAAS3N,EAAE,wBAAwBM,SACrDk1B,EAAIzc,SAAS,aAAa4yB,QAAO,WAAA,OAAM3rC,EAAE,2BAA4BskC,GAAMhkC,MAAQ,KAAGpB,QACtFwa,EAAO0C,MAAMkoD,EAA0E,gEACvFlkE,EAAK8F,EAAE9F,KAAK,CAAE4M,MAAS,KAAMiZ,QAAW,OAAQ3lB,IAAI,QAEpDN,EAAE,2BAA2BM,IAAIF,EAAK2nB,IAAI0C,iBACtCzqB,EAAE,qCAAuCI,EAAK2nB,IAAIsC,UAAY,KAAKnrB,OACnEc,EAAE,wBAAwBM,IAAIF,EAAK2nB,IAAIsC,WAEvCrqB,EAAE,wBAAwBgP,OAAO,kBAAoB5O,EAAK2nB,IAAIsC,UAAY,gBAE9E3Q,EAAO8yD,KAAKlI,EAAuE,oEAjCvF5qD,EAAO0C,MAAMkoD,EAAyD,+CA+2BlEmI,CAA4BrsE,GAC5B,MACJ,KAAKyZ,GACD0sD,GAAU,EA94BtB,SAAyBnmE,GACrBJ,EAAE,+BApyBqB,yBAoyBiCM,IAAIF,EAAK4M,OA84BzD0/D,CAAgBtsE,GAChB,MAGJ,KAAKyZ,IA7vBb,SAAoBzZ,GAEhB,GAAKH,EAAGgB,QAAQ40C,SAr7BI,sBAq7BpB,CAGA,IAAIl/B,EAAO1W,EAAG2U,cAx7BM,sBA07BhBygD,EAAW,IAAIC,SACfqX,GAAkB,EAClBC,EAAiBxsE,EAAK8F,EAAEoH,QAAQ,iBAAiBlN,KAAK,kBAS1D,GAPAJ,EAAEuJ,KAAKoN,EAAKk2D,MAAM,SAAUz2D,EAAKpJ,GACzBtR,KAAK4Z,KAAKw3D,OAAO,MAAQ,IACzBH,GAAkB,GAEtBtX,EAASrmD,OAAOtT,KAAK4Z,KAAMtI,MAG3B2/D,EACAjzD,EAAO0C,MAAM5f,MAA2B,yBAD5C,CAIA,IAAMuwE,EAAO/sE,EAAE,cAAcM,MAC7B+0D,EAASrmD,OAAO,WAAY+9D,GAC5B1X,EAASrmD,OAAO,cAAe,GAC/BqmD,EAASrmD,OAAO,iBAAkB2H,EAAKq2D,gBACvC3X,EAASrmD,OAAO,iBAAkB49D,GAElC,IAAI/rE,EAAU,CACVkF,IAAK6+D,EAAU,aACfj+D,OAAQ0uD,EACRnuD,SAQJ,SAAmBC,GACXA,EAAO/G,MACPJ,EA59BY,sBA49BSmE,IAAI,mBAAmBC,GAAG,mBAAmB,WAC9D,IAAM6oE,EAASjtE,EAAE,OAAQ0rD,GACzBuhB,EAAOnhE,KAAK,gBAAgBuM,KAAK,YAAY,GAC7C40D,EAAO5vD,SACPrd,EAAE,QAAQgM,SAAS,iBACpB0C,MAAM,SAdbkL,UAAU,EACVG,aAAa,EACbE,aAAa,GAGjBha,EAAG+F,KAAKC,QAAQpF,KAytBRqsE,CAAW9sE,GACX,MACJ,KAAKyZ,IA7sBb,SAAoBzZ,GAChB,IAAI2rE,EAAe3rE,EAAK8F,EAAEoH,QAAQ,MAClCtN,EAAE,iBAAkB+rE,GAAczrE,IAAI,QAAQuyB,SA4sBtCs6C,CAAW/sE,GACX,MAEJ,KAAKyZ,EACD7Z,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDmlE,KACA5E,EAAqBa,KAAO7mE,OAAOyB,EAAKqN,UACxCk3D,EAAqB9X,eAAiB8X,EAAqByI,YAC3DzI,EAAqBW,gBAAkBL,EACvCkE,QACDz6D,MAAM,QACT,MACJ,KAAKmL,EACD7Z,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDmlE,KACA5E,EAAqBW,gBAAkBL,EACvCN,EAAqBa,KAAO,KAC5B2D,QACDz6D,MAAM,QACT,MACJ,KAAKmL,IArhCb,SAA2BzZ,GACvB,IAAIH,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAEhB,IAAItO,EAAU,CACVkF,IAAK6+D,EAAU,oBACfj+D,OAAQ,CACJ6+D,KAAM7mE,OAAOyB,EAAKqN,WAEtBvG,SAOJ,SAAmBC,GACXA,EAAO/G,KACPJ,EAAE0rD,GAAYvnD,MAAMC,GAAG,mBAAmB,WACtCpE,EAAE0rD,GAAYvnD,MAAM+H,KAAK/E,EAAO/G,MAAMgE,GAAG,kBAAkB,WACvDnE,EAAGgB,QAAQE,WAAU,EAAMuqD,GAC3BzrD,EAAGgB,QAAQC,gBAAgBwqD,GAC3BzrD,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBpE,EAAE0rD,GAAYx8C,SACdjP,EAAGkP,cAAa,GAChBg6D,QACDz6D,MAAM,WACVA,MAAM,QAETzO,EAAGkP,cAAa,IApBpBL,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IAsgCR+qE,CAAkBxrE,GAClB,MACJ,KAAKyZ,IA32Bb,SAA8CzZ,GAC1C,IAAIS,EAAU,CACVkF,IAAK6+D,EAAU,gCACfj+D,OAAQ,CACJ+iB,GAAI/qB,OAAOyB,EAAK4M,OAChBqgE,UAAW,GAEfnmE,SAMJ,SAAmBC,GACf,GAAIA,EAAO/G,KAAM,CACbA,EAAK8F,EAAE5F,IAAI6G,EAAO/G,KAAKwtB,YAAYxtB,KAAK,QAAS+G,EAAO/G,KAAKqN,UAAUrN,KAAK,UAAW+G,EAAO/G,KAAKwtB,YACnG,IAAI0+C,EAAYlsE,EAAK8F,EAAEoH,QAAQ,aAC/BtN,EAAE,iCAAkCssE,GAAWhsE,IAAI6G,EAAO/G,KAAKqqE,mBATnE7wD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAi2BRysE,CAAqCltE,GACrC,MACJ,KAAKyZ,IAv1Bb,SAAoCzZ,GAChC,GAAKH,EAAGgB,QAAQ40C,SAAS6V,GAAzB,CAIA,IAAI6hB,EAAgBvtE,EAAE,YAAa0rD,GAAYz2C,KAAI,WAC/C,IAAI0B,EAAO1W,EAAG2U,cAAclZ,MAE5B,OADAib,EAAKiX,WAAa5tB,EAAE,qCAAsCtE,MAAM4E,MACzDqW,KACRzB,UAECrU,EAAU,CACVkF,IAAK6+D,EAAU,6BACfj+D,OAAQ,CACJ6+D,KAAMplE,EAAKqN,SACX8/D,cAAeA,GAEnBrmE,SAMJ,SAAmBC,GACXA,EAAO/G,MACPJ,EAAE0rD,GAAYtrD,KAAK,WAAW,GAAMsO,MAAM,SAP9CkL,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IAm0BR2sE,CAA2BptE,GAC3B,MACJ,KAAKyZ,GApuBTkwD,GADW,sBAAwBlF,EAAW,OAASC,EACnCI,GAsuBZ,MACJ,KAAKrrD,GACD5Z,EAAG2R,sBACH41D,GAAiB,kBACjB,MACJ,KAAK3tD,GACD5Z,EAAG2R,qBAAoB,WACnB5R,EAAE,QAAQgM,SAAS,iBAEvB,MACJ,KAAK6N,GACD,IAAImwD,EAAOhqE,EAAE,2BAA2BM,MAC5B,MAAR0pE,GAAwB,IAARA,EAChBtwD,EAAO0C,MAAMkoD,EAAuB,cAEhC6B,IACA6D,GAAQ,yBAA2BnF,EAAW,OAASC,GAE3DiF,GAAcC,EAAM9E,IAExB,MACJ,KAAKrrD,GAxbT5Z,EAAG2R,sBACoC,GAAnCjE,SAAS3N,EAAE,cAAcM,QACzBgmE,GAAiB,EACjBtmE,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,GAAiB,MAAM+V,QAAQpf,QAAQ,UAE1ExQ,EAAE0rD,GAAY5/C,KAAK,2CAAkD0E,QAAQ,SAqbzE,MACJ,KAAKqJ,GAhbT5Z,EAAG2R,sBACHy0D,GAA+B,EAC/BrmE,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,GAA0B,MAAMrJ,QAAQ,SAgbnE,MAEJ,KAAKqJ,GACD2qD,EAA2BpkE,EAAK8F,EAAE9F,KAAK,WACvC8pE,GAAuB9pE,GAAM,GAC7B,MACJ,KAAKyZ,GACD2qD,EAA2BpkE,EAAK8F,EAAE9F,KAAK,WACvCqkE,EAAgCrkE,EAAK8F,EAAE9F,KAAK,iBAxZhDqtE,EAAmBztE,EAAE,kCAAoCwkE,EAA2B,KAAKlkE,MACzFO,EAAU,CACVkF,IAAK6+D,EAAU,+BACfj+D,OAAQ,CACJ69D,yBAAAA,EACAC,8BAAAA,EACAe,KAAMb,EAAqBa,KAC3BkI,QAASD,GAEb7zD,UAAU,EACV9K,QAAQ,EACR5H,SASJ,SAAmBC,GACfnH,EAn3CY,kBAm3CKkM,KAAK/E,EAAO/G,MAAMQ,mBAPf,IAApB6sE,EACA/zD,EAAO0C,MAAMkoD,EAA6B,mBAE1CrkE,EAAG+F,KAAKC,QAAQpF,GAyYZ,MACJ,KAAKgZ,GACD2qD,EAA2BpkE,EAAK8F,EAAE9F,KAAK,WACvC8pE,GAAuB9pE,GAAM,GAC7B,MAEJ,KAAKyZ,IAvYb,WACI,IAAIhZ,EAAU,CACVkF,IAAK6+D,EAAU,uBACfj+D,OAAQ,CACJ6+D,KAAMb,EAAqBa,KAC3Bl0D,eAAgB,kBAEpBpK,SAMJ,SAAmBC,GACHnH,EAAE,0DACRkM,KAAK/E,EAAO/G,MAAMsO,MAAM,CAC1BgD,SAAU,SACVC,UAAU,IACXjD,MAAM,QAAQ9N,kBAVjBkO,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GA6XR8sE,GACA,MACJ,KAAK9zD,IA3Ob,SAA6CzZ,GACzC,GAAKH,EAAGgB,QAAQ40C,SAAS,uBAAzB,CAGA,IAAIl/B,EAAO1W,EAAG2U,cAAc,uBAExBy1D,EAAeC,KAEfzpE,EAAU,CACVkF,IAAK6+D,EAAU,sCACfj+D,OAAQ,CACJ4jE,iBAAkB5F,EAAqBa,KACvCoI,UAAWj3D,EAAKk3D,UAChBC,SAAUn3D,EAAKo3D,SACf1D,aAAcA,GAElBnjE,SAKJ,SAAmBC,GACXA,EAAO/G,KACY,GAAf+G,EAAO/G,KACPsZ,EAAO0C,MAAMkoD,EAA4D,kDACnD,GAAfn9D,EAAO/G,KACdsZ,EAAO0C,MAAMkoD,EAAiC,uBACxB,GAAfn9D,EAAO/G,KACdsZ,EAAO0C,MAAMkoD,EAAmC,yBAEhDxkE,OAAOkH,SAASC,KAAO,iBAAmBE,EAAO/G,KAGrDsZ,EAAO0C,MAAMkoD,EAAiD,yCAdtErkE,EAAG+F,KAAKC,QAAQpF,IAyNRmtE,GACA,MACJ,KAAKn0D,GACG7Z,EA1vDE,gBA0vDad,OAAS,EACxBkB,EAAK8F,EAAE2F,QAAQ,MAAMqD,SAErBwK,EAAO0C,MAAMkoD,EAA4D,kDAE7E,MACJ,KAAKzqD,IAzWb,WACI,IAAIwwD,EAAeC,KAEfzpE,EAAU,CACVkF,IAAK6+D,EAAU,sBACfj+D,OAAQ,CACJ4jE,iBAAkB5F,EAAqBa,KACvC6E,aAAcA,GAElBzwD,UAAU,EACV9K,QAAQ,EACR5H,SAKJ,SAAmBC,GACfnH,EAz6C2B,iCAy6CKkM,KAAK/E,EAAO/G,MAAMQ,mBAHtDX,EAAG+F,KAAKC,QAAQpF,GA4VRotE,GACA,MACJ,KAAKp0D,IA1Tb,SAA8BzZ,GAC1B,IAAMyqB,EAAeld,SAAS3N,EAAE,sDAAsDM,OACtF,GAAoB,GAAhBuqB,GACAA,GAAgBzqB,EAAK2nB,IAAI8C,aAIzB,OAHAzqB,EAAK8F,EAAE9F,KAAK,UAAW,MAAMA,KAAK,QAAS,MAAME,IAAI,IACrDN,EAAE,8BAA+BI,EAAK8F,EAAEoH,QA98C9B,iBA88CoDhN,IAAI,WAClEoZ,EAAO0C,MAAMkoD,EAAwC,8BAGzD,IAAIgI,EAAYlsE,EAAK8F,EAAEoH,QAl9CT,gBAm9CdtN,EAAE,gBAAiBssE,GAAWhsE,IAAI,GAClCN,EAAE,0BAA2BssE,GAAWhsE,IAAIF,EAAK2nB,IAAIwC,UACrDvqB,EAAE,mBAAoBssE,GAAWhsE,IAAI,IACrCN,EAAE,0BAA2BssE,GAAWhsE,IAAIF,EAAK2nB,IAAIyE,aACrDxsB,EAAE,2BAA4BssE,GAAWhsE,IAAIF,EAAK2nB,IAAI4E,kBACtD3sB,EAAE,uBAAwBssE,GAAWhsE,IAAIF,EAAK2nB,IAAI8C,cAClD7qB,EAAE,uBAAwBssE,GAAWhsE,IAAIF,EAAK2nB,IAAIoD,cAClDnrB,EAAE,qBAAsBssE,GAAWhsE,IAAIF,EAAK2nB,IAAIkD,YAChDjrB,EAAE,8BAA+BssE,GAAWhsE,IAAIF,EAAK2nB,IAAI/a,OACzDhN,EAAE,uBAAwBssE,GAAWhsE,IAAI,MAEzC8pE,KAsSQ8D,CAAqB9tE,GACrB,MACJ,KAAKyZ,IArSb,SAA4BzZ,GAAM,IAAA+tE,EAAAzyE,KAC9B,GAAK0E,EAAK2nB,IAAIoC,oBAAd,CAIA,IAAMU,EAAeld,SAAS3N,EAAE,sDAAsDM,OACtF,GAAoB,GAAhBuqB,GACAA,GAAgBzqB,EAAK2nB,IAAI8C,aAIzB,OAHAzqB,EAAK8F,EAAE9F,KAAK,UAAW,MAAMA,KAAK,QAAS,MAAME,IAAI,IACrDN,EAAE,8BAA+BI,EAAK8F,EAAEoH,QA1+C9B,iBA0+CoDhN,IAAI,WAClEoZ,EAAO0C,MAAMkoD,EAAwC,8BAIzD,IAAI9uC,EAAMp1B,EAAK8F,EAAEoH,QA/+CH,gBAi/CdtN,EAAE,mBAAoBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIoE,YACxCnsB,EAAE,0BAA2Bw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIwC,UAC/CvqB,EAAE,gBAAiBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIgD,WACrC/qB,EAAE,uBAAwBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAI4C,cAC5C3qB,EAAE,uBAAwBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAI8C,cAC5C7qB,EAAE,uBAAwBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIoD,cAC5CnrB,EAAE,qBAAsBw1B,GAAKl1B,IAAIF,EAAK2nB,IAAIkD,YAC1CjrB,EAAE,2BAA4Bw1B,GAAKl1B,IAAIF,EAAK2nB,IAAI/a,OAE5C5M,EAAK2nB,IAAIsC,WAAa1c,SAAS3N,EAAE,wBAAwBM,SACrDk1B,EAAIzc,SA3/CE,gBA2/CoB4yB,QAAO,WAAA,OAAM3rC,EAAE,2BAA4BmuE,GAAM7tE,MAAQ,KAAGpB,QACtFwa,EAAO0C,MAAMkoD,EAA0E,gEACvFlkE,EAAK8F,EAAE9F,KAAK,CAAE4M,MAAS,KAAMiZ,QAAW,OAAQ3lB,IAAI,QAEpDN,EAAE,2BAA2BM,IAAIF,EAAK2nB,IAAI0C,iBACtCzqB,EAAE,qCAAuCI,EAAK2nB,IAAIsC,UAAY,KAAKnrB,OACnEc,EAAE,wBAAwBM,IAAIF,EAAK2nB,IAAIsC,WAEvCrqB,EAAE,wBAAwBgP,OAAO,kBAAoB5O,EAAK2nB,IAAIsC,UAAY,gBAE9E3Q,EAAO8yD,KAAKlI,EAAuE,+DAG3F8F,UArCI1wD,EAAO0C,MAAMkoD,EAAyD,+CAoSlE8J,CAAmBhuE,GArb/B,IACQqtE,EACA5sE,GAwbDX,EA9yDS,CA+yDlBQ,OAAQb;AChzDV,aAIAA,GAAGwuE,WAAc,SAAUruE,EAAGC,GAG1B,IAAIC,EAAQD,EAAGouE,YAAc,GAUzB3iB,EAAa,oBAGbhyC,EAAS,IAAIyC,OACb3f,EAAQ,KAIR8xE,EAAiB,GAEjBnxD,EAAW,CACXoxD,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,cAAc,EACd/oB,SAAU,KACVgpB,kBAAmB,KACnB7e,YAAa,KACb8e,aAAc,KACdrmB,WAAY,IAGZsmB,EACM,EADNA,EAEI,GAGJC,EAAc,GAEdC,GAAgB,EAChBC,EAAc,GAQdn1D,EAEsB,GAFtBA,EAGU,GAHVA,EAIc,GAJdA,EAMS,GANTA,EAOe,GAPfA,EAQe,GARfA,EAWe,GAXfA,EAYQ,GAZRA,EAagB,GAbhBA,EAcc,GAddA,EAiBY,GAjBZA,EAoBU,GApBVA,EAqBS,GAyCb,SAAS8xC,EAAcvrD,GACnB,GAAIH,EAAGgB,QAAQ40C,SAAS6V,GAAa,CACjC,IAAIa,EAAUtsD,EAAG2U,cAAc82C,GAC3B/0C,EA/BD,CACHs4D,aAAc,KACdC,QAAS,KACTzjD,SAAU,KACVnB,UAAW,KACX6kD,UAAW,KACXC,QAAS,KACTC,YAAa,KACbvkD,aAAc,KACdwB,MAAO,KACPgjD,aAAc,KACdC,iBAAkB,KAClBC,QAAS,KACTC,cAAe,KACfC,eAAgB,KAChBC,OAAQ,OAiBRh5D,EAAO3W,EAAEe,OAAO,GAAI4V,EAAM41C,IAChBijB,UACN74D,EAAK84D,cAAgB,MASjC,SAA8B94D,GAC1B,IAAI9V,EAAU,CACVkF,IAAK6pE,yCACLjpE,OAAQ,CACJgQ,KAAMA,EACN43D,SAAUD,EAAeC,UAE7BrnE,SAMJ,SAAmBC,GACXA,EAAO/G,MAAQ+G,EAAO/G,KAAO,IAC7B2uE,EAAe5nE,EAAO/G,KAClBkuE,EAAexe,aAAqD,mBAA/Bwe,EAAexe,aACpDwe,EAAexe,YAAY3oD,GAE/BnH,EAAE0rD,GAAYh9C,MAAM,UAXxBkL,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAjBZgvE,CAAqBl5D,IAkH7B,SAASm5D,EAA2BC,GAChC,IAAIlvE,EAAU,CACVkF,IAAK6pE,kCACLjpE,OAAQ,CACJqpE,MAAOD,EAAaE,UAExB/oE,SAKJ,SAAmBC,GACXA,EAAO/G,MACPJ,EAAE0rD,EAAa,2BAA2BtrD,KAAK,CAC3C4M,MAAO+iE,EAAaE,SACpBhqD,QAAS9e,EAAO/G,KAAKisB,UACtBjmB,KAAK,CACJ8pE,aAAcH,EAAaE,SAC3BE,eAAgBhpE,EAAO/G,KAAKisB,UAC7B/rB,IAAI6G,EAAO/G,KAAKisB,WAV3BpsB,EAAG+F,KAAKC,QAAQpF,GAmCpB,SAASuvE,IACL,IAAIvvE,EAAU,CACVkF,IAAK6pE,uCACLjpE,OAAQ,CACJmoE,YAAaA,EACbuB,eAAgBrB,GAEpB9nE,SASJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAAE,wBAAwBkM,KAAK/E,GAC/BlH,EAAGgB,QAAQE,WAAU,EAAMuqD,GAC3BzrD,EAAGgB,QAAQa,WAAU,EAAM4pD,IAZ3B58C,QAAQ,EACRwhE,gBAAgB,EAChBv9D,OAAO,EACP6G,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GA0EpB,SAAS0vE,IACLtwE,EAAGwC,aACHzC,EAAE0rD,GAAYx8C,SACVo/D,EAAeC,UAAYQ,EAAe,GAC1C9uE,EAAGytD,YAAY8iB,qBAAqBzB,EAAcT,EAAexe,aAErEif,GAAgB,EAChBC,EAAc,GAIlB,SAASyB,IACLzwE,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDmsE,OACD7hE,MAAM,QA4Db,OAnDAxO,EAAMO,KAAO,aAKbP,EAAMwwE,oBAAsB,SAAU7vE,EAAS8vE,GAE3C,GADArC,EAAiBtuE,EAAEe,OAAO,GAAIoc,EAAUtc,GACpC8vE,EACA,IAAK,IAAIp1E,EAAI,EAAGA,EAAIo1E,EAAczxE,OAAQ3D,IACtCyzE,EAAY3vE,KAAKsxE,EAAcp1E,KAhN3C,WACIiB,EAAQA,GAASyD,EAAGoZ,WACpB,IAAIxY,EAAU,CACV8F,OAAQ,CACJ9F,QAASytE,GAEbvoE,IAAK6pE,uCACL1oE,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,EAAO85D,MACxB6N,EAAc3nE,EAAOypE,YAEb5wE,EAAE0rD,GAEJtnD,GAAG,kBAAkB,WACvBpE,EAAE,iCAAiCiQ,QAC/Bq+D,EAAeG,UACf2B,OAELhsE,GAAG,mBAAmB,WACrBmsE,OACD7hE,MAAM,QAAQ9N,kBApBjBkZ,gBAAgB,EAChBF,UAAU,GAEd3Z,EAAG+F,KAAKC,QAAQpF,GAwMhBgwE,IAKJ3wE,EAAMC,qBAAuB,SAAUC,GACnC,IAxLuB0wE,EAwLnB3pE,EAAS/G,EAET+G,EAAO0S,MAAQA,GACfy0D,EAAeC,UAAW,EAC1B5iB,KAEKxkD,EAAO0S,MAAQA,GACpBy0D,EAAeC,UAAW,EAC1B5iB,KAGKxkD,EAAO0S,MAAQA,GAnMDi3D,EAoMD9wE,EAAE0rD,EAAa,kCAAkCprD,MAnMvEN,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDnE,EAAG8wE,YAAYC,kBAAkB,CAC7BlhB,YAAaggB,EACbj+D,aAAc4+D,EACdQ,aAAcH,OAEnBpiE,MAAM,SAiMAvH,EAAO0S,MAAQA,EApG5B,SAA6BzZ,GAlTL,KAmTfA,EAAK8F,EAAE4F,KAAK,mBAAmB1L,KAAK,cACrCJ,EAAE0rD,EAAa,uBAAuB3/C,YAAY,UAElD/L,EAAE0rD,EAAa,uBAAuB1/C,SAAS,UAgGDklE,CAAoB/pE,GAG7DA,EAAO0S,MAAQA,EA7F5B,SAA4BzZ,GACxB,IAAI+wE,EAAcnxE,EAAE0rD,EAAa,iCAAiCprD,MAElE,GAAI6wE,GAAexyE,OAAOwyE,GAAe,QADrCC,IACiEvC,EAWjE,OAVA7uE,EAAE0rD,EAAa,8BAA8BtrD,KAAK,CAC9C4M,MAAO5M,EAAK8F,EAAE9F,KAAK,gBACnB6lB,QAAS7lB,EAAK6lB,UACf7f,KAAK,CACJ8pE,aAAc9vE,EAAK8F,EAAE9F,KAAK,gBAC1B+vE,eAAgB/vE,EAAK6lB,UACtB3lB,IAAIF,EAAK6lB,cAEZvM,EAAO0C,MAAM5f,EAAyC,wCAVtD40E,EAgBJpxE,EAAE0rD,EAAa,8BAA8BtrD,KAAK,eAAgBA,EAAK4M,OACvEhN,EApVkB,oBAoVC+H,YAAY,cAjB3BqpE,IAiB4DvC,GA0EtBwC,CAAmBlqE,GACpDA,EAAO0S,MAAQA,EAxE5B,SAA4BzZ,GACxBJ,EAAE0rD,EAAa,yBAAyB3jD,YAAY,UAAW3H,EAAK4M,OACpEhN,EAAE0rD,EAAa,iBAAiB3jD,YAAY,SAAU3H,EAAK4M,OACtD5M,EAAK4M,OACNhN,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAAoB,KAAMy3D,kBAAkBhxE,KAAK,GAoEnDixE,CAAmBpqE,GAG/CA,EAAO0S,MAAQA,GACpB1S,EAAO0S,MAAQA,GACf1S,EAAO0S,MAAQA,EA5KvB,SAA0BzZ,GACtB,OAAQA,EAAKyZ,KACT,KAAKA,EACDi1D,EAAY0C,SAAWpxE,EAAK4M,MAC5B,MACJ,KAAK6M,EACDi1D,EAAY2C,WAAarxE,EAAK4M,MAC9B,MACJ,KAAK6M,EACDi1D,EAAY4C,WAAatxE,EAAK4M,MAItCojE,IA+JuCuB,CAAiBxqE,GAC/CA,EAAO0S,MAAQA,EAzR5B,SAA2BzZ,GAgBvB,GAfA2uE,GAAgB3uE,EAAKqN,SACjB6gE,EAAeI,aACfM,EAAY3vE,KAAK0vE,GAEjBC,EAAc,CAACD,GAIfT,EAAeM,cAAuD,mBAAhCN,EAAeM,cACrDN,EAAeM,aAAaG,GAM3BT,EAAeI,aAEb,GAAI1uE,EAAE0rD,GAAY5/C,KAAK,MAAM5M,OAAS,EACzCkxE,QACG,CACHhwE,EAAK8F,EAAEoH,QAAQ,MAAM4B,SAErB,IADA,IAAI0iE,EAAO5xE,EAAE0rD,GAAY5/C,KAAK,gBACrBvQ,EAAI,EAAGA,GAAKq2E,EAAK1yE,OAAQ3D,IAC9Bq2E,EAAKr2E,EAAI,GAAG4c,UAAY5c,OAP5ByE,EAAE0rD,GAAYh9C,MAAM,QAwQkBmjE,CAAkB1qE,GAGnDA,EAAO0S,MAAQA,GACpB1S,EAAO0S,MAAQA,GA9HvB,SAA0BzZ,GAClBA,EAAKyZ,MAAQA,GACb7Z,EAAE0rD,EAAa,eAAiB7xC,EAAe,MAAM9N,YAAY,UACjE/L,EAAE0rD,EAAa,eAAiB7xC,EAAoB,MAAM9N,YAAY,YAEtE/L,EAAE0rD,EAAa,eAAiB7xC,EAAe,MAAM7N,SAAS,UAC9DhM,EAAE0rD,EAAa,eAAiB7xC,EAAoB,MAAM7N,SAAS,WAwHtC8lE,CAAiB3qE,IAG/CjH,EA1bM,CA2bfQ,OAAQb;AC/bV,aAIAA,GAAG6tD,YAAe,SAAU1tD,EAAGC,GAG3B,IA8BIyO,EAcAqjE,EAEAC,EAOAC,EACAC,EAtDAhyE,EAAQD,EAAGytD,aAAe,GAO1BykB,EAAc,qBAMdzmB,EAAa,qBAEb0mB,EAAY,yBAaZ51E,EAAQ,KAOR61E,GAJwBryE,EArBC,8BAyBN,MACnBsyE,GAAoB,EACpB54D,EAAS,IAAIyC,OAmBb0yD,EACM,EADNA,EAEI,GAQJh1D,EAAM,CAGN04D,kBAAmB,GACnBC,aAAc,GACdC,cAAe,GACfC,cAAe,GACfC,aAAc,GACdC,eAAgB,GAChBC,8BAA+B,GAC/BC,oBAAqB,GACrBC,yBAA0B,GAC1BC,YAAa,GACbC,UAAW,GACXC,YAAa,GACbC,gBAAiB,GACjBC,wBAAyB,GACzBC,sBAAuB,GACvBC,mBAAoB,GACpBC,aAAc,GACdC,kBAAmB,GACnBC,sBAAuB,GACvBC,mBAAoB,GACpBC,WAAY,GACZC,WAAY,GACZC,oBAAqB,GACrBC,YAAa,GAGbC,yBAA0B,GAG1BC,aAAc,GACdC,uBAAwB,GACxBC,4BAA6B,GAC7BC,wBAAyB,GACzBC,oBAAqB,GACrBC,gBAAiB,GACjBC,kBAAmB,GACnBC,gBAAiB,GAGjBC,WAAY,GACZC,cAAe,GAEfC,UAAW,GACXC,YAAa,GAGbC,eAAgB,GAEhBC,eAAgB,GAEhBC,YAAa,IACbC,YAAa,IAEbC,UAAW,IACXlkB,YAAa,IACbmkB,wBAAyB,KAGzBC,SAAU,IACVC,YAAa,IACbC,gBAAiB,IACjBC,mBAAoB,IACpBC,kBAAmB,IACnBC,mCAAoC,IACpCC,+BAAgC,IAChCC,uBAAwB,IACxBC,0BAA2B,IAC3BC,qBAAsB,IACtBC,0BAA2B,IAC3BC,iBAAkB,IAClBC,8BAA+B,IAC/BC,wBAAyB,IACzBC,qBAAsB,IACtBC,mBAAoB,IACpBC,sBAAuB,IACvBC,sBAAuB,IACvBC,sBAAuB,IACvBC,kBAAmB,IACnBC,uBAAwB,IACxBC,sBAAuB,IACvBC,yBAA0B,IAE1BC,oBAAqB,IAErBC,sCAAuC,IACvCC,WAAY,KAUhB,SAASC,IACL,MAAO,CACHltD,GAAI4oD,EACJrD,aAAc,KACdC,QAAS,KACTzjD,SAAU,KACVnB,UAAW,KACX6kD,UAAW,KACXC,QAAS,KACTC,YAAa,KACbvkD,aAAc,KACd+7C,QAAS,KACT8I,OAAQ,KACRkH,OAAQ,KACRC,OAAQ,KACRC,KAAM,KACNvH,QAAS,KACTwH,MAAO,KACPC,SAAU,KACVprB,WAAY,KACZqrB,yBAA0B,KAC1BC,oBAAqB,KACrBC,eAAgB,KAChBC,OAAQ,KACRC,YAAa,KACbC,mBAAoB,KACpBC,yBAA0B,KAC1BC,WAAY,KACZC,YAAa,KACbpI,aAAc,KACdC,iBAAkB,KAClBE,cAAe,KACfnjD,MAAO,KACPojD,eAAgB,KAChBiI,eAAgB,MA+BxB,SAASC,EAAyBC,GAC9B,MAAO,CACHC,OAAQxF,EACRd,SAAUqG,GAKlB,SAASE,EAAqBruD,GAC1B,MAAO,CACHA,GAAIA,EACJuoD,OAAQA,EACR+F,WAAY,KACZC,mBAAoB,KACpBC,eAAgB,KAChBC,WAAY,KACZC,aAAc,MAYtB,SAASC,IAA8D,IAA1CC,EAAOtlE,UAAA9T,OAAA,QAAA+K,IAAA+I,UAAA,IAAAA,UAAA,GAAUulE,EAAevlE,UAAA9T,OAAA,QAAA+K,IAAA+I,UAAA,IAAAA,UAAA,GAEzD,GADAxW,EAAQA,GAASyD,EAAGoZ,YAChBpZ,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACV8F,OAAQ,CACJ6xE,UAAWlG,EACXiG,gBAAiBD,GAAWC,GAEhCxyE,IAAKosE,EAAc,sBACnBjrE,SAAUuuD,EACV3mD,QAAQ,EACRgL,gBAAgB,EAChBF,UAAU,GAEd3Z,EAAG+F,KAAKC,QAAQpF,GAEhB,SAAS40D,EAAUr1D,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,IAEjBuH,EAAQ1O,EAAE0rD,IAEJvnD,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGgB,QAAQsc,qBAAqB,MAChC7O,EAAM9N,iBAGa8N,EAAM5C,KAAK,iBACL4C,EAAM5C,KAAK,wBACpCimE,EAAkBrjE,EAAM5C,KAAK,iBACO4C,EAAM5C,KAAK,+BAE/C,IAAIq/D,EAAOnrE,EAAE,IA/QA,uBAgRTA,EAhRS,uBAgRa+R,SAAS,aAC/Bo5D,EAAK/mE,GAAG,SAAS,WACb,OAAO,KAGXk0E,GACAG,IAEJC,IAEAz4E,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBu0E,IACAC,OACDlqE,MAAM,SAKjB,SAASgqE,IACW14E,EAzSI,sBA0SRd,OAAS,GACjBc,EA3SgB,sBA2SKkP,SAEzBlP,EAAE,QAAQgP,OAAO,mHAGrB,SAAS2pE,IACL34E,EAjToB,sBAiTCkP,SASzB,SAAS2pE,EAAoBz4E,GACzB,IACI2U,EAEJ,IAAK,IAAI+jE,KAAKj/D,EACV,GAAIA,EAAIi/D,KAAO14E,EAAKyZ,IAAK,CACrB9E,EAAU+jE,EAAE1sE,QALH,QAKuB,IAChC,MAIR,IAAI2sE,EAAcnC,IAGlB,GAFAmC,EAAYhkE,GAAW3U,EAAK4M,MAExB5M,EAAKyZ,MAAQA,EAAI84D,aAAc,CAE/B,GADA3yE,EAAE0rD,GAAY5/C,KAAK,kBAAkB/D,YAAY,UAAW3H,EAAK4M,OAC5D5M,EAAK4M,MAIN,OAHAhN,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAAI65D,mBAAqB,KAAMsF,mBAAmB14E,KAAK,GAC1Fy4E,EAAYtJ,eAAiB,EAMrC,IAAKxvE,EAAGgB,QAAQ4c,SAASm7D,kBAAmB,KAAM54E,EAAKyZ,MAAQA,EAAI84D,cAC/D,OAAO,EAKPvyE,EAAKyZ,MAAQA,EAAI65D,qBACjBqF,EAAYvJ,QAAUxvE,EAAE,aAAe6Z,EAAI84D,aAAe,IAAKqG,mBAAmB54E,KAAK,UAS/F,SAAgC24E,GAC5B,IAAIl4E,EAAU,CACVkF,IAAKosE,EAAc,yBACnBxrE,OAAQ,CACJgQ,KAAMoiE,GAEV7xE,SAMJ,SAAmB9G,GACXA,EAAKA,MACL64E,KAPJr/D,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAfhBq4E,CAAuBH,GA0B3B,SAASI,IAAiE,IAAzBC,EAAepmE,UAAA9T,OAAA,QAAA+K,IAAA+I,UAAA,IAAAA,UAAA,GACxD2D,EAAOigE,IACXjgE,EAAKugE,yBAA2BlF,EAEhC,IAAInxE,EAAU,CACVkF,IAAKosE,EAAc,0CACnBxrE,OAAQ,CACJgQ,KAAMA,GAEVzP,SAAUuuD,EACV77C,UAAU,GAKd,SAAS67C,EAAUr1D,GACfJ,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAAI07D,mCAAqC,MAAMn1E,KAAK,wBAAyB4xE,GAChHiH,IACIG,GACAC,IANRp5E,EAAG+F,KAAKC,QAAQpF,GAmDpB,SAASy4E,EAA4Bl5E,GACjC,IAAIuW,EAAOigE,IACXjgE,EAAKk1C,WAAazrD,EAAK4M,MACvB2J,EAAK4iE,sBAAuB,EAE5B,IAAI14E,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJgQ,KAAMA,GAEVzP,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,IACAnH,EApbS,6BAobSI,KAAK,QAAS+G,GAChClH,EAAGgB,QAAQa,WAAU,EAAM4pD,GACvB/0C,EAAKk1C,WA2CrB,WACI,IAAIhrD,EAAU,CACVkF,IAAKosE,EAAc,0BACnBxrE,OAAQ,CACJ+iB,GAAI4oD,GAERprE,SAKJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAAIk5D,yBAA2B,MAAMzyE,IAAI6G,KAJhFlH,EAAG+F,KAAKC,QAAQpF,GAnDJ24E,IAEAx5E,EAAE,aAAe6Z,EAAIy5D,mBAAqB,KAAKtgD,eAAe,CAAEhmB,OAAO,IACvEhN,EAAE,+BAA+BM,IAAI,KAGzCN,EAAE,aAAe6Z,EAAIy5D,mBAAqB,KACrCtgD,eAAe,CAAEC,OAAQtc,EAAKk1C,aAC9Bv+C,QAAQ,MAAMvF,YAAY,OAAQ4O,EAAKk1C,YAC5C7rD,EAAE,qBAAqB+H,YAAY,UAAW4O,EAAKk1C,YACnDotB,MArBJr/D,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAmEpB,SAASw4E,IACL,IAAIx4E,EAAU,CACVkF,IAAKosE,EAAc,kCACnBxrE,OAAQ,CACJ+iB,GAAI4oD,GAERprE,SAKJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAAIg5D,8BAAgC,MAAMvyE,IAAI6G,KAJrFlH,EAAG+F,KAAKC,QAAQpF,GAoBpB,SAASivE,EAA2B2J,GAChC,IAAI54E,EAAU,CACVkF,IAAKosE,EAAc,gBACnBxrE,OAAQ,CACJqpE,MAAOyJ,EAAaxJ,UAExB/oE,SAKJ,SAAmBC,GACXA,EAAO/G,OACPJ,EAAE0rD,EAAa,2BAA2BtrD,KAAK,CAC3C4M,MAAOysE,EAAaxJ,SACpBhqD,QAAS9e,EAAO/G,KAAKisB,UACtBjmB,KAAK,CACJ8pE,aAAcuJ,EAAaxJ,SAC3BE,eAAgBhpE,EAAO/G,KAAKisB,UAC7B/rB,IAAI6G,EAAO/G,KAAKisB,SAEnBwsD,EAAoB,CAAEh/D,IAAKA,EAAI+5D,WAAY5mE,MAAOysE,EAAaxJ,cAZvEhwE,EAAG+F,KAAKC,QAAQpF,GAiBpB,SAASwwE,EAAmBjxE,GACxB,IAAI+wE,EAAcppC,WAAWgqC,EAAgBjqE,OAAOsE,QAAQ,KAAM,KAC9DglE,EAAqBhxE,EAAK2nB,IAAIa,WAClC,GAAmB,GAAfuoD,GAAoBC,IAAuBvC,EAU3C,OATA7uE,EA/jBc,oBA+jBKI,KAAK,CACpB4M,MAAO5M,EAAK8F,EAAE9F,KAAK,gBACnB6lB,QAAS7lB,EAAK6lB,UACf7f,KAAK,CACJ8pE,aAAc9vE,EAAK8F,EAAE9F,KAAK,gBAC1B+vE,eAAgB/vE,EAAKs5E,4BACtBp5E,IAAIF,EAAK6lB,cACZvM,EAAO0C,MAAM5f,EAAgD,0CAKjEwD,EA1kBqB,uBA0kBC+H,YAAY,WAAYqpE,IAAuBvC,GACrE,IAAI1D,EAAOnrE,EAAE,IA3kBQ,uBA4kBjBoxE,IAAuBvC,GACvB7uE,EA7kBiB,uBA6kBK+H,YAAY,YAAY,GAC9CojE,EAAK/kE,KAAK,OAAQ+kE,EAAK/qE,KAAK,SAC5B+qE,EAAKhnE,IAAI,WAETnE,EAjlBiB,uBAilBK+H,YAAY,YAAY,GAC9CojE,EAAK/kE,KAAK,OAAQ,IAClB+kE,EAAK/mE,GAAG,SAAS,WACb,OAAO,MAIfpE,EAAE0rD,EAAa,8BAA8BtrD,KAAK,eAAgBA,EAAK4M,OACvEhN,EAjmBkB,oBAimBC+H,YAAY,SAAUqpE,IAAuBvC,GAKpE,SAAsCzuE,GAClC,IAAIuW,EAAOigE,IACXjgE,EAAK8U,SAAWrrB,EAAK4M,MAErB,IAAInM,EAAU,CACVkF,IAAKosE,EAAc,+BACnBxrE,OAAQ,CACJgQ,KAAMA,GAEVzP,SAMJ,SAAmB9G,GACXA,EAAKA,MACL64E,KAPJr/D,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAjBhB84E,CAA6Bv5E,GA4BjC,SAASw5E,EAA4Bx5E,GAC7BA,EAAK4M,MASb,SAAoC5M,GAChC,IAAIuW,EAAOihE,EAAyBx3E,EAAKqN,UAErC5M,EAAU,CACVkF,IAAK6pE,oDACLjpE,OAAQ,CACJmoE,YAAan4D,GAEjBiD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAnBZg5E,CAA2Bz5E,GAwBnC,SAAuCA,GACnC,IAAIuW,EAAOihE,EAAyBx3E,EAAKqN,UAErC5M,EAAU,CACVkF,IAAK6pE,uDACLjpE,OAAQ,CACJmoE,YAAan4D,GAEjBiD,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAjCZi5E,CAA8B15E,GAsCtC,SAAS25E,EAAmB35E,GACpBA,EAAK4M,MACLgtE,EAAmC55E,GA+B3C,SAAkDA,GAC9C,IAAIuW,EAAOohE,EAAqB33E,EAAKqN,UAEjC5M,EAAU,CACVkF,IAAKosE,EAAc,2CACnBxrE,OAAQ,CACJgQ,KAAMA,GAEVzP,SAMJ,SAAmB9G,GACf65E,KANArgE,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAzCZq5E,CAAyC95E,GAKjD,SAAS65E,IACL,IAAIp5E,EAAU,CACVkF,IAAKosE,EAAc,mBACnBxrE,OAAQ,CACJsrE,OAAAA,GAEJ/qE,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,GACAnH,EAnsBa,uBAmsBSmE,IAAI,mBAAmB+H,KAAK/E,GAAQ/C,GAAG,mBAAmB,WAC5EpE,EAAE,QAAQgM,SAAS,iBACpBpL,kBAXPgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAiCpB,SAASm5E,EAAmC55E,GACxC,IAAIuW,EAAOohE,EAAqB33E,EAAKqN,UACrC,OAAQrN,EAAKyZ,KACT,KAAKA,EAAIs6D,wBACLx9D,EAAKshE,mBAAqB73E,EAAK4M,MAC/B,MACJ,KAAK6M,EAAIu6D,oBACLz9D,EAAKuhE,eAAiB93E,EAAK4M,MAC3B,MACJ,KAAK6M,EAAIw6D,gBACL19D,EAAKwhE,WAAa/3E,EAAK4M,MACvB,MACJ,KAAK6M,EAAIy6D,kBACL39D,EAAKyhE,aAAeh4E,EAAK4M,MACzB,MACJ,KAAK6M,EAAI06D,gBACL59D,EAAKqhE,WAAa53E,EAAK4M,MAI/B,IAAInM,EAAU,CACVkF,IAAKosE,EAAc,qCACnBxrE,OAAQ,CACJgQ,KAAMA,GAEVzP,SAMJ,SAAmB9G,GACf65E,KANArgE,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAOpB,SAASs5E,EAA4BxjE,GAEjC,IAAI9V,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJo5D,WAAYppD,GAEhBzP,SAMJ,SAAmB9G,GACf65E,KANArgE,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAyPpB,SAASu5E,IACL,IAAIv5E,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJ6xE,UAAWlG,GAEfprE,SAOJ,SAAmBC,GACXA,EAAO/G,MACPJ,EA3gC4B,sCA2gCSkM,KAAK/E,EAAO/G,MAAMQ,kBAR3DgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GASpB,SAASw5E,IACL,IAAIx5E,EAAU,CACVkF,IAAKosE,EAAc,yBACnBxrE,OAAQ,CACJ6xE,UAAWlG,GAEfprE,SAOJ,SAAmBC,GACXA,EAAO/G,MACPJ,EA9hCQ,kBA8hCSkM,KAAK/E,EAAO/G,MAAMQ,kBARvCgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GASpB,SAASy5E,EAAsBl6E,EAAMm6E,GACjC,OAAO,SAAU7mB,GACR6mB,EA8Bb,SAAsC7mB,GAClC,IAAI7yD,EAAU,CACVkF,IAAKosE,EAAc,+BACnBxrE,OAAQ,CACJ6xE,UAAWlG,EACXtc,QAAStC,GAEb95C,UAAU,EACV1S,SAKJ,SAAmBC,GACXA,EAAO/G,MACPi6E,MAJRp6E,EAAG+F,KAAKC,QAAQpF,GArCR25E,CAA6B9mB,IAH7B1zD,EAAEy6E,oBAAoB/rE,MAAM,QAQxC,SAAmCglD,GAC/B,IAAI7yD,EAAU,CACVkF,IAAKosE,EAAc,4BACnBxrE,OAAQ,CACJ6xE,UAAWlG,EACXtc,QAAStC,GAEb95C,UAAU,EACV1S,SAKJ,SAAmBC,GACXA,EAAO/G,MACPi6E,MAJRp6E,EAAG+F,KAAKC,QAAQpF,GAlBR65E,CAA0BhnB,KAgDtC,SAAS+kB,IAEL,IAAI53E,EAAU,CACVkF,IAAKosE,EAAc,wBACnBxrE,OAAQ,CACJ6xE,UAAWlG,GAEfprE,SAOJ,SAAmB9G,GACFA,EAAKA,OAEdu6E,GAAqB,GACrBC,MAVJhhE,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAgCpB,SAAS85E,IAA0C,IAArBE,EAAW7nE,UAAA9T,OAAA,QAAA+K,IAAA+I,UAAA,IAAAA,UAAA,GAEjCnS,EAAU,CACVkF,IAAKosE,EAAc,uBACnBxrE,OAAQ,CACJ6xE,UAAWlG,GAEfprE,SAAUuuD,EACV77C,UAAU,EACV9K,QAAQ,GAKZ,SAAS2mD,EAAUr1D,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,IACAnH,EAnpCa,uBAmpCSkM,KAAK/E,GAAQvG,iBAC/Bi6E,GACA76E,EAAE86E,0BAA4Bp3C,IAAI,WAAWq3C,OAAOjvE,KAAK,WAAW8jB,QAAQ9jB,KAAK,YAAYmE,QAAQA,SAPjHhQ,EAAG+F,KAAKC,QAAQpF,GAcpB,SAASm6E,EAAwB56E,GAC7B,IACI2U,EAEJ,IAAK,IAAI+jE,KAAKj/D,EACV,GAAIA,EAAIi/D,KAAO14E,EAAKyZ,IAAK,CACrB9E,EAAU+jE,EAAE1sE,QALH,aAKuB,IAChC,MAIR,IAAI6uE,EAt/BR,SAA4BhJ,GACxB,MAAO,CACHvoD,GAAIuoD,EACJiJ,UAAW5I,EACXn5D,MAAO,KACPsS,SAAU,KACVyjD,QAAS,KACTgI,yBAA0B,KAC1BiE,WAAY,KACZC,aAAc,KACdC,gBAAiB,KACjBC,gBAAiB,KACjBhwD,OAAQ,KACRlB,oBAAqB,KACrBmxD,cAAe,KACfC,aAAc,KACdnM,YAAa,KACboM,SAAU,KACVnE,YAAa,KACboE,YAAa,KACbC,YAAa,KACbC,WAAY,KACZ/U,QAAS,KACTgV,eAAgB,MA+9BLC,CAAmB17E,EAAKqN,UACvCwtE,EAASlmE,GAAW3U,EAAK4M,MAK7B,SAA+B5M,GAE3B,IAAIS,EAAU,CACVkF,IAAKosE,EAAc,wBACnBxrE,OAAQ,CACJgQ,KAAMvW,GAEV8G,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,EAAOA,SACPnH,EAAE+7E,cAAc7vE,KAAK/E,EAAOkoE,aAC5BsL,GAAqB,GACrBC,MAVJhhE,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAdhBm7E,CAAsBf,GA0B1B,SAASL,IAEL,IAAI/5E,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJ6xE,UAAWlG,GAEfprE,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,GACAnH,EAptCoB,8BAotCSkM,KAAK/E,GAAQvG,kBAT9CgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAUpB,SAASo7E,EAA2B77E,GAChC6xE,EAAS7xE,EAAKqN,SACd,IAAI5M,EAAU,CACVkF,IAAKosE,EAAc,mBACnBxrE,OAAQ,CACJsrE,OAAAA,GAEJ/qE,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,GACAnH,EAxvCa,uBAwvCSkM,KAAK/E,GAAQ/C,GAAG,mBAAmB,WACrDpE,EAAE,QAAQgM,SAAS,iBACpB0C,MAAM,QAAQ9N,kBAXrBgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAYpB,SAASo4E,IACL,IAAIp4E,EAAU,CACVkF,IAAKosE,EAAc,iCACnBxrE,OAAQ,CACJ6xE,UAAWlG,GAEfprE,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,GACAnH,EAhwCa,uBAgwCSkM,KAAK/E,GAAQvG,kBATvCgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAgBpB,SAAS+3E,IACL34E,EAAGwC,aACHzC,EAAE0rD,GAAYx8C,SACVmjE,GAAgD,mBAArBA,GAC3BA,IAKR,SAAS5B,IACLzwE,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDw0E,OACDlqE,MAAM,QAsMb,OA7LAxO,EAAMO,KAAO,aAIbP,EAAMswE,qBAAuB,SAAUgI,EAAWtxE,GAAoD,IAA1CoxE,EAAOtlE,UAAA9T,OAAA,QAAA+K,IAAA+I,UAAA,IAAAA,UAAA,GAAUulE,EAAevlE,UAAA9T,OAAA,QAAA+K,IAAA+I,UAAA,IAAAA,UAAA,GACxFq/D,EAAmBnrE,EACnBorE,EAAmBkG,EACnBH,EAAoBC,EAASC,IAGjCr4E,EAAMqiE,uBAAyB,WAC3BviE,EAAE,QAAQgM,SAAS,eAIvB9L,EAAMC,qBAAuB,SAAUC,GACnC,IA3dIS,EArUmBiwE,EAgyBnB3pE,EAAS/G,EACb,OAAQ+G,EAAO0S,KAEX,KAAKA,EAAI85D,WAnyBU7C,EAoyBG9wE,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAAI04D,kBAAoB,MAAMjyE,MAnyB3FN,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDnE,EAAG8wE,YAAYC,kBAAkB,CAC7BlhB,YAAaggB,EACbj+D,aAAc4+D,EACdQ,aAAcH,OAEnBpiE,MAAM,QA8xBD,MAEJ,KAAKmL,EAAI04D,kBACT,KAAK14D,EAAI05D,aACT,KAAK15D,EAAIi5D,oBACT,KAAKj5D,EAAI+4D,eACT,KAAK/4D,EAAIk5D,yBACT,KAAKl5D,EAAI24D,aACT,KAAK34D,EAAI64D,cACT,KAAK74D,EAAI84D,aACT,KAAK94D,EAAI25D,kBACT,KAAK35D,EAAI45D,sBACT,KAAK55D,EAAI65D,mBACT,KAAK75D,EAAI+5D,WACT,KAAK/5D,EAAIg6D,oBACT,KAAKh6D,EAAIi6D,YACL+E,EAAoB1xE,GACpB,MACJ,KAAK0S,EAAI44D,cACLpB,EAAmBlqE,GACnB,MACJ,KAAK0S,EAAIg5D,8BACLb,EAAuB7qE,EAAO6F,MAC9BmsE,GAAwC,GACxC,MAGJ,KAAKt/D,EAAIm5D,YACT,KAAKn5D,EAAIo5D,UACT,KAAKp5D,EAAIq5D,YACT,KAAKr5D,EAAIy5D,oBA78BjB,SAAqClzE,GACjC,IAAIuW,EAAOigE,IACX,OAAQx2E,EAAKyZ,KACT,KAAKA,EAAIm5D,YACLr8D,EAAKkgE,OAASz2E,EAAK4M,MACnB,MACJ,KAAK6M,EAAIo5D,UACLt8D,EAAKogE,KAAO32E,EAAK4M,MACjB,MACJ,KAAK6M,EAAIq5D,YACLv8D,EAAKmgE,OAAS12E,EAAK4M,MACnB,MACJ,KAAK6M,EAAIy5D,mBACL38D,EAAKulE,cAAgB97E,EAAK4M,MAIlC,IAAInM,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJgQ,KAAMA,GAEVzP,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,IACAnH,EAzZS,6BAyZSI,KAAK,QAAS+G,GAChClH,EAAGgB,QAAQa,WAAU,EAAM4pD,KAT/B9xC,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAo7BRs7E,CAA4Bh1E,GAC5B,MACJ,KAAK0S,EAAIs5D,gBACLmG,EAA4BnyE,GAC5B,MACJ,KAAK0S,EAAIu5D,wBACLkG,EAA4BnyE,GACxBA,EAAO6F,OACP/M,EAAGiR,mBAAmB1U,EAA0C,mCAAGqd,EAAIw5D,sBAAuBx5D,EAAI88D,WAC9Fv2E,EAAK8F,EAAEoH,QAAQ,yBAAyBlN,KAAK,kBAAmB,KAAM5D,EAAW,IAAGA,EAAU,IAEtG,MACJ,KAAKqd,EAAIw5D,sBACLpzE,EAAG2R,oBAAoB1R,EAAMqiE,wBA/4BzC,WACI,IAAI5rD,EAAOigE,IACXjgE,EAAKk1C,YAAa,EAClBl1C,EAAK4iE,sBAAuB,EAE5B,IAAI14E,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJgQ,KAAMA,GAEVzP,SAMJ,SAAmB9G,GACFA,EAAKA,OAEdu6E,IACA1B,MATJr/D,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAk4BRu7E,GACA,MAEJ,KAAKviE,EAAIk6D,yBACL6F,EAA4BzyE,GAC5B,MAGJ,KAAK0S,EAAIm6D,aACL+F,EAAmB5yE,GACnB,MACJ,KAAK0S,EAAIo6D,uBACL,GAAI9sE,EAAO6F,OAxmBvB,SAA8B5M,GAC1B8xE,EAAa,CACTmK,SAAUj8E,EAAKqN,SACf6uE,WAAYl8E,EAAK4M,MACjB8qE,OAAQ7F,GAGZ,IAAIpxE,EAAU,CACVkF,IAAKosE,EAAc,uBACnBjrE,SAOJ,SAAmB9G,GACXA,EAAKA,MACLJ,EAvyBa,uBAuyBSkM,KAAK9L,EAAKA,MAAMgE,GAAG,mBAAmB,WAIxD63E,EAHW,CACPxuE,SAAUwkE,OAGfrxE,kBAbPgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GA2lBJ07E,CAAqBp1E,QAOrBgzE,EALW,CACPkC,SAAUl1E,EAAOsG,SACjB6uE,WAAYn1E,EAAO6F,MACnB8qE,OAAQ7F,IAIhB,MACJ,KAAKp4D,EAAIq6D,4BACLhC,EAAWsK,kBAAoBx8E,EAAE,8BAA8BM,MAC/D65E,EAA4BjI,GAC5B,MACJ,KAAKr4D,EAAIs6D,wBACT,KAAKt6D,EAAIu6D,oBACT,KAAKv6D,EAAIw6D,gBACT,KAAKx6D,EAAIy6D,kBACT,KAAKz6D,EAAI06D,gBACLyF,EAAmC7yE,GACnC,MAGJ,KAAK0S,EAAI26D,YAlmBjB,SAAgCp0E,GAC5B,IAAIS,EAAU,CACVkF,IAAKosE,EAAc,kCACnBxrE,OAAQ,CACJ6xE,UAAWlG,EACX3sB,SAAUvlD,EAAK4M,OAEnB9F,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAAE0rD,GAAY5/C,KAAK,6BAA6BI,KAAK/E,GACrDnH,EAAE0rD,GAAY5/C,KAAK,cAAgB+N,EAAI26D,WAAa,MAAMl0E,IAAI,IAC9DL,EAAGgB,QAAQE,WAAU,EAAM,MAC3B83E,KAXAnqE,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAulBR47E,CAAuBt1E,GACvB,MACJ,KAAK0S,EAAI46D,eA5kBjB,SAAmCr0E,GAC/B,IAAIS,EAAU,CACVkF,IAAKosE,EAAc,qCACnBxrE,OAAQ,CACJ6xE,UAAWlG,EACX3sB,SAAUvlD,EAAKqN,UAEnBvG,SAOJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAClBJ,EAAE0rD,GAAY5/C,KAAK,6BAA6BI,KAAK/E,GACrDlH,EAAGgB,QAAQE,WAAU,EAAM,MAC3B83E,KAVAnqE,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAikBR67E,CAA0Bv1E,GAC1B,MAGJ,KAAK0S,EAAI+6D,eAzjBT/zE,EAAU,CACVkF,IAAKosE,EAAc,0BACnBxrE,OAAQ,CACJ+iB,GAAI4oD,GAERprE,SAMJ,SAAmB9G,GACFA,EAAKA,MAEdJ,EAAE0rD,GAAYh9C,MAAM,SARxBkL,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAkjBR,MACJ,KAAKgZ,EAAI66D,WAxiBjB,SAA2Bt0E,GACvB,IAAIu8E,EAAY38E,EAAE0rD,GAAY5/C,KAAK,iBAC/B8wE,EAAW58E,EAAEoyE,GAAWtmE,KAAK,kBAEjC,GAAI6wE,EAAUr8E,MAAMpB,OAAS,EACzBy9E,EAAU3wE,SAAS,kBADvB,CAII2wE,EAAU5wE,YAAY,cAE1B,IAAK,IAAI9M,EAAI,EAAGA,EAAI29E,EAAS19E,OAAQD,IACjC,GAAIe,EAAE0rD,GAAY5/C,KAAK,mBAAmBxL,MAAQq8E,EAAUr8E,MAAM6L,OAAOia,gBAAkBpmB,EAAE48E,EAAS39E,IAAI6I,OAAOqE,OAAOia,cAEpH,YADA1M,EAAO0C,MAAM5f,EAAwB,kBAI7C,IAAIqE,EAAU,CACVkF,IAAKosE,EAAc,2BACnBxrE,OAAQ,CACJ6xE,UAAWlG,EACXuK,QAAS78E,EAAE0rD,GAAY5/C,KAAK,mBAAmBxL,MAAQq8E,EAAUr8E,MAAM6L,QAE3EjF,SAOJ,SAAmBC,GACXA,EAAO/G,OACPJ,EAAEoyE,GAAWlmE,KAAK/E,EAAO/G,MACzBJ,EAAE0rD,GAAY5/C,KAAK,iBAAiBxL,IAAI,IACxCL,EAAGgB,QAAQE,WAAU,EAAMixE,KAV/BtjE,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IA8gBRi8E,GACA,MACJ,KAAKjjE,EAAI86D,aApgBjB,SAA8Bv0E,GAC1B,IAAIS,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJ6xE,UAAWlG,EACXuK,QAASz8E,EAAK8F,EAAEoH,QAAQ,oBAAoBxB,KAAK,kBAAkBhE,QAEvEZ,SAOJ,SAAmBC,GACXA,EAAO/G,OACPJ,EAAEoyE,GAAWlmE,KAAK/E,EAAO/G,MACzBH,EAAGgB,QAAQE,WAAU,EAAMixE,KAT/BtjE,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAyfRk8E,CAAqB51E,GACrB,MAEJ,KAAK0S,EAAIg7D,gBAlfjB,SAA+Bz0E,GACvBA,EAAK8F,EAAE4F,KAAK,KAAKiG,SAAS,mBAC1B/R,EAAE,2BAA4BI,EAAK8F,EAAEoH,QAAQ,gBAAgBvB,YAAY,UACzE3L,EAAK8F,EAAE4F,KAAK,KAAKC,YAAY,kBAAkBC,SAAS,mBAExDhM,EAAE,2BAA4BI,EAAK8F,EAAEoH,QAAQ,gBAAgBtB,SAAS,UACtE5L,EAAK8F,EAAE4F,KAAK,KAAKC,YAAY,iBAAiBC,SAAS,mBA6enDmgE,CAAsB/rE,GACtB,MAEJ,KAAKyZ,EAAIi7D,aA5ejB,SAAoB10E,GAEhB,GAAKH,EAAGgB,QAAQ40C,SA57BI,sBA47BpB,CAGA,IAAIl/B,EAAO1W,EAAG2U,cA/7BM,sBAi8BhBygD,EAAW,IAAIC,SACfqX,GAAkB,EAClBC,EAAiBxsE,EAAK8F,EAAEoH,QAAQ,iBAAiBlN,KAAK,kBAS1D,GAPAJ,EAAEuJ,KAAKoN,EAAKk2D,MAAM,SAAUz2D,EAAKpJ,GACzBtR,KAAK4Z,KAAKw3D,OAAO,MAAQ,IACzBH,GAAkB,GAEtBtX,EAASrmD,OAAOtT,KAAK4Z,KAAMtI,MAG3B2/D,EACAjzD,EAAO0C,MAAM5f,EAA2B,yBAD5C,CAMA64D,EAASrmD,OAAO,WAAYsjE,GAC5Bjd,EAASrmD,OAAO,eAFU,KAG1BqmD,EAASrmD,OAAO,cAAe,GAC/BqmD,EAASrmD,OAAO,iBAAkB2H,EAAKq2D,gBACvC3X,EAASrmD,OAAO,iBAAkB49D,GAElC,IAAI/rE,EAAU,CACVkF,IAAKosE,EAAc,aACnBxrE,OAAQ0uD,EACRnuD,SASJ,SAAmBC,GACXA,EAAO/G,OACPg6E,IACAp6E,EAv+BY,sBAu+BS0O,MAAM,UAX/BkL,UAAU,EACVG,aAAa,EACbE,aAAa,EACbnL,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,KAqcRqsE,CAAW/lE,GACX,MACJ,KAAK0S,EAAIk7D,aA5bjB,SAA2C30E,GACvC,IAAIS,EAAU,CACVkF,IAAKosE,EAAc,oCACnBxrE,OAAQ,CACJ8I,GAAIrP,EAAKqN,SACTuvE,WAAY58E,EAAK4M,OAErB9F,SAMJ,SAAmBC,GACXA,EAAO/G,MACPg6E,KAPJxgE,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAkbRo8E,CAAkC91E,GAClC,MAEJ,KAAK0S,EAAIm7D,UACL/0E,EAAGsvD,cAAc6B,kBAAkBkpB,IAA6Bp6E,EAAMqiE,wBACtE,MACJ,KAAK1oD,EAAIi3C,YACL,IAAIosB,EAAYl9E,EAAE,aAAe6Z,EAAIo7D,wBAA0B,KAAKhgE,KAAI,WAAc,OAAOjV,EAAEtE,MAAM0E,KAAK,eAAe8U,UACzHjV,EAAGsvD,cAAc0H,iBAAiBimB,EAAW98E,EAAKqN,SAAU6sE,EAAsBl6E,GAAM,GAAOF,EAAMqiE,wBAAwB,GAAM,GAAM,GACzI,MACJ,KAAK1oD,EAAIq7D,SACLuD,IACA,MACJ,KAAK5+D,EAAIs7D,aAlUjB,SAAqC/0E,GACjC,IAAIS,EAAU,CACVkF,IAAKosE,EAAc,8BACnBxrE,OAAQ,CACJsrE,OAAQ7xE,EAAK4M,OAEjB9F,SAMJ,SAAmB9G,GACFA,EAAKA,OAEdu6E,GAAqB,GACrBC,MATJhhE,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAyTRs8E,CAA4Bh2E,GAC5B,MACJ,KAAK0S,EAAIu7D,gBACT,KAAKv7D,EAAIw7D,mBACT,KAAKx7D,EAAIy7D,kBACT,KAAKz7D,EAAI47D,uBACT,KAAK57D,EAAI67D,0BACT,KAAK77D,EAAI87D,qBACT,KAAK97D,EAAI+7D,0BACT,KAAK/7D,EAAIg8D,iBACT,KAAKh8D,EAAIi8D,8BACT,KAAKj8D,EAAIk8D,wBACT,KAAKl8D,EAAIy8D,uBACT,KAAKz8D,EAAI08D,sBACT,KAAK18D,EAAIq8D,sBACT,KAAKr8D,EAAIo8D,mBACT,KAAKp8D,EAAIm8D,qBACT,KAAKn8D,EAAIu8D,sBACT,KAAKv8D,EAAIs8D,sBACT,KAAKt8D,EAAIw8D,kBACT,KAAKx8D,EAAI27D,+BACT,KAAK37D,EAAI28D,yBACLwE,EAAwB7zE,GACxB,MACJ,KAAK0S,EAAI07D,mCACLyF,EAAwB7zE,GACxB,IAAMi2E,EAAWzhE,OAAOxU,EAAO6F,MAAO,cAChCqwE,EAAc1hE,OAAO3b,EAAE,mBAAqB6Z,EAAIg5D,8BAAgC,MAAMvyE,MAAO,cAC/F88E,EAAS/+E,QAAQg/E,KACjBrL,EAAuB7qE,EAAO6F,MAC9B/M,EAAGiR,mBAAmB1U,EAAsD,+CAAGqd,EAAI68D,sCAAuC78D,EAAI88D,WAC1Hv2E,EAAK8F,EAAEoH,QAAQ,yBAAyBlN,KAAK,kBAAmB,KAAM5D,EAAW,IAAGA,EAAU,KAEtG,MACJ,KAAKqd,EAAI68D,sCACLz2E,EAAG2R,oBAAoB1R,EAAMqiE,wBAC7B4W,GAAwC,GACxC,MACJ,KAAKt/D,EAAI88D,WACL12E,EAAG2R,oBAAoB1R,EAAMqiE,wBAC7B,MACJ,KAAK1oD,EAAI48D,oBACLwF,EAA2B77E,KAKhCF,EA3/CO,CA4/ChBQ,OAAQb;AChgDV,aAIAA,GAAGkxE,YAAe,SAAU/wE,EAAGC,GAG3B,IAoBIyO,EACAgL,EACAld,EAtBA0D,EAAQD,EAAG8wE,aAAe,GAO1BuM,EAAkB,wBAIlB5xB,EAAa,sBAYb6xB,GAAU,EACV/E,EAAY,KAEZgF,EAAa,GACbrgE,EAAW,CACX2yC,YAAa,KACbj+C,aAAc,KACdo/D,aAAc,MAEdwM,EAAqB,GAOrB5jE,EACY,GADZA,EAEU,GAFVA,EAGU,GAHVA,EAIU,GAJVA,EAKa,GALbA,EAMc,GANdA,EAQc,GARdA,EASkB,GATlBA,EAUa,GAVbA,EAWe,GAXfA,EAYe,GAZfA,EAaW,GAbXA,EAcoB,IAUpB6jE,EAEO,EAFPA,EAGW,EAUf,SAAS/xB,EAAcvrD,EAAMu9E,GACrB19E,EAAGgB,QAAQ40C,SAAS6V,KAChBiyB,EAiBZ,WACI,IAAIC,EAAqB39E,EAAG2U,cAAc82C,GAC1CkyB,EAAmB3rD,UAAW,EAC9B2rD,EAAmBC,UAAYC,KAC1BF,EAAmBG,YAAcL,IAAkBE,EAAmBG,YAAcL,IACrFE,EAAmBlwD,WAAa,GAEpC,IAAI7sB,EAAU,CACV8F,OAAQ,CACJgQ,KAAMinE,GAEV73E,IAAKu3E,EAAkB,mBACvBp2E,SAOJ,SAAmBC,GACXA,EAAO/G,MAAQ+G,EAAO/G,KAAK6vE,SAAW,GAClCuN,EAAW1tB,aAAiD,mBAA3B0tB,EAAW1tB,aAC5C0tB,EAAW1tB,YAAY3oD,EAAO/G,MAElCJ,EAAE0rD,GAAYh9C,MAAM,SACU,GAAvBvH,EAAO/G,KAAK49E,SAA4C,KAAxB72E,EAAO/G,KAAK69E,QACnDvkE,EAAO0C,MAAMjV,EAAO/G,KAAK69E,UACM,IAAxB92E,EAAO/G,KAAK49E,SACnBtkE,EAAO0C,MAAM5f,EAAuC,kCAfxDod,UAAU,EACV7G,OAAO,GAGX9S,EAAG+F,KAAKC,QAAQpF,GAjCRq9E,GAiDZ,SAA4B99E,GACxB,IAAKm9E,EACD,OAEJ,IACIY,EADal+E,EAAG2U,cAAc82C,GAElCyyB,EAAiB7xD,MAAQlsB,EAAKqN,SAC9B0wE,EAAiBN,UAAYC,KACxBK,EAAiBJ,YAAcL,IAAkBS,EAAiBJ,YAAcL,IACjFS,EAAiBzwD,WAAa,GAElCywD,EAAiBC,kBAAoB,GACrC,IAAK,IAAI7iF,EAAI,EAAGA,EAAIkiF,EAAmBv+E,OAAQ3D,IAC3C4iF,EAAiBC,kBAAkB/+E,KAAKo+E,EAAmBliF,GAAGmuB,IAGlE,IAAI7oB,EAAU,CACV8F,OAAQw3E,EACRp4E,IAAKu3E,EAAkB,qBACvBp2E,SAMJ,SAAmBC,GACY,GAAvBA,EAAO/G,KAAK49E,SAA4C,KAAxB72E,EAAO/G,KAAK69E,QAC5CvkE,EAAO0C,MAAMjV,EAAO/G,KAAK69E,UAEI,IAAxB92E,EAAO/G,KAAK49E,QACjBtkE,EAAO0C,MAAM5f,EAAuC,iCAEpDwD,EAAE0rD,GAAYh9C,MAAM,SAZxBkL,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAtERw9E,CAAmBj+E,IAkN/B,SAASk+E,EAAiBl+E,GACtB,IAAIsO,EAAQ1O,EAAE0rD,GACV6yB,EAAet+E,EAAG2U,cAAc82C,GAChC/0C,EAAO,CACP6nE,QAASD,EAAalyD,QACtBqxD,SAAUa,EAAaR,UACvBU,MAAOr+E,EAAKqN,UAAYrN,EAAKqN,UAAY,GAE7C,GAAqB,KAAjBkJ,EAAK6nE,QAAT,CAIA,IAAI39E,EAAU,CACVkF,IAAKu3E,EAAkB,mBACvB32E,OAAQgQ,EACRzP,SAOJ,SAAmBC,GACXA,EAAO/G,MACPsO,EAAM5C,KA1SC,iBA0SkBwB,QAAQ,MAAMvB,YAAY,UAAUgkB,OAAOhkB,YAAY,UAChF2C,EAAM5C,KA3SC,iBA2SkBI,KAAK/E,EAAO/G,OAErCsO,EAAM5C,KA7SC,iBA6SkBwB,QAAQ,MAAMtB,SAAS,UAAU+jB,OAAO/jB,SAAS,WAX9E8C,QAAQ,EACR8K,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,QAXZb,EA3RW,iBA2RKsN,QAAQ,MAAMtB,SAAS,UAAU+jB,OAAO/jB,SAAS,UAiCzE,SAAS0yE,IACL,IAAI5N,EAAe9wE,EAAE0rD,EAAa,kBAClColB,EAAa9hE,OAAO,+CAEpB,IAAInO,EAAU,CACVkF,IAAKu3E,EAAkB,kBACvB32E,OAAQ,CACJ6xE,UAAWA,EACXxI,MAAOwN,EAAW9zD,IAEtBxiB,SAMJ,SAAmBC,GACXA,EAAO/G,KACP0wE,EAAahpE,KAAKX,EAAO/G,MAAM0L,KAAK,KAAKoD,SAEzC4hE,EAAaxjE,QAAQ,iBAAiBlN,KAAK,WAAY,MAAM8L,KAAK1P,EAAuB,iBAE7Fg8E,EAAY,MAXZ5+D,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,GAUhBb,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDu6E,OACDjwE,MAAM,QAIb,SAASkwE,EAAuBC,GAC5B,IAAInwE,EAAQ1O,EAAE0rD,GAEVozB,EAAyBpwE,EAAM5C,KAAK,8BAExC,GAAI+yE,IAAcnB,GAAqBmB,IAAcnB,EAAe,CAIhE,GAHAhvE,EACK5C,KAAK,sBAAsBC,YAAY,UAAUkF,MACjDnF,KAAK,8BAA8BuM,KAAK,YAAY,GAAMjS,KAAK,iBAAiB,KACjFsI,EAAM5C,KAAK,2BAA2B1L,KAAK,SAAW,GAKtD,OAFA0+E,EAAuBhzE,KAAK,gBAAgBoD,cAC5C4vE,EAAuBhzE,KAAK,sBAAsBhE,KAAKtL,EAAkB,YAHzEsiF,EAAuBhzE,KAAK,sBAAsBhE,KAAKtL,EAAc,QAMzE,IAAIqE,EAAU,CACVkF,IAAKu3E,EAAkB,+BACvB32E,OAAQ,CACJ+2E,QAASmB,EACTn5B,QAASh3C,EAAM5C,KAAK,2BAA2B1L,KAAK,UAExD8G,SAYR,SAAmBC,GACf,GAAIA,EAAO/G,KAAM,CACb0+E,EAAuBhzE,KAAK,gBAAgBoD,SAAS9O,KAAK,SAAU,GAAGE,KAAK,GAC5E,IAAK,IAAI/E,EAAI,EAAGA,EAAI4L,EAAO/G,KAAKlB,OAAQ3D,IACpCujF,EAAuB9vE,OAAO,IAAI+vE,OAAO53E,EAAO/G,KAAK7E,GAAGiuB,KAAMriB,EAAO/G,KAAK7E,GAAGmuB,OAfjF9P,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,QAEhB6N,EACK5C,KAAK,sBAAsBE,SAAS,UAAUiF,MAC9CnF,KAAK,8BAA8BuM,KAAK,YAAY,GAAOjS,KAAK,iBAAiB,GACtF04E,EAAuBhzE,KAAK,gBAAgBoD,SAiCpD,SAAS8vE,IArVT,IACUC,IAAAA,EAAUj/E,EAAE,wCA1ED,mBA0E0Dd,OAAS,IAEhFwa,EAAO0C,MAAM5f,EAAwC,kCAElDyD,EAAGgB,QAAQ40C,SAAS6V,IAAeuzB,KAqV1Cj/E,EAAE,kCApae,mBAoaoCM,IAAI,IACzDN,EAraiB,mBAqaCY,iBAAiB8N,MAAM,QACpCvK,IAAI,YACJC,GAAG,mBAAmB,WACnBpE,EAAE,QAAQgM,SAAS,kBAI/B,SAASkzE,EAAgB9+E,GACrB,IAAIuG,EAAS,CACTC,MAAO,CACHi3E,UAAWC,MAInB,OAAQ19E,EAAKyZ,KACT,KAAKA,EACDlT,EAAOw4E,KAAO/+E,EAAK4M,MACnBrG,EAAOy4E,eAAiBh/E,EAAK2nB,IAAIvrB,MAAMwN,MAAM,KAAK,GAClD,MACJ,KAAK6P,EAED,GADAlT,EAAOy4E,eAAiBh/E,EAAK8F,EAAEqjB,OAAOjpB,MACT,IAAzBqG,EAAOy4E,eACP,OAKZ,IAAIv+E,EAAU,CACVkF,IAAKu3E,EAAkB,kBACvB32E,OAAQA,EACRO,SAOJ,SAAmBC,GAGf,OAFAnH,EA1ca,mBA0cKkM,KAAK/E,EAAO/G,MAAMQ,iBAE5BR,EAAKyZ,KACT,KAAKA,EACDzZ,EAAK8F,EAAE5F,IAAI,IACX,MACJ,KAAKuZ,EACDzZ,EAAK8F,EAAEqjB,OAAOjpB,IAAI,MAd1BsZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GA6BpB,SAAS89E,IACL1+E,EAAGwC,aACHzC,EAAE0rD,GAAYx8C,SACdlP,EAxeiB,mBAweCkP,SAClBquE,GAAU,EACNC,EAAW3rE,cAAmD,mBAA5B2rE,EAAW3rE,cAC7C2rE,EAAW3rE,eAInB,SAASwtE,EAAkBj/E,GACvB,IAAK,IAAI7E,EAAI,EAAGA,EAAIkiF,EAAmBv+E,OAAQ3D,IAC3C,GAAIkiF,EAAmBliF,GAAGmuB,MAAQtpB,EAAK4M,MAEnC,YADA0M,EAAO8yD,KAAKhwE,EAAiC,2BAtGzD,IACQqE,EA0GJ48E,EAAmBp+E,KAAK,CACpBqqB,IAAKtpB,EAAK4M,MACV4c,aAAcxpB,EAAK5D,QAEvB4D,EAAK8F,EAAE5F,IAAI,IAAIF,KAAK,CAAE4M,MAAO,KAAMiZ,QAAS,OAAQ7f,KAAK,CAAE8pE,aAAc,KAAMC,eAAgB,OA9G3FtvE,EAAU,CACVkF,IAAKu3E,EAAkB,gDACvB32E,OAAQ,CACP24E,gBAAiB7B,GAElBv2E,SAOJ,SAAmBC,GACfnH,EApZiB,uBAoZKkM,KAAK/E,EAAO/G,MAAMQ,kBAPxCgZ,UAAU,EACV9K,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAgIpB,SAASi9E,IACL,OAAO99E,EAAE,wCAvhBQ,mBAuhBiDiV,KAAI,SAAC2B,EAAKM,GAAI,OAAKjX,EAAG2U,cAAcsC,MAAOhC,UAwEjH,OAzDAhV,EAAMO,KAAO,aAKbP,EAAM8wE,kBAAoB,SAAUnwE,GAChC28E,EAAax9E,EAAEe,OAAO,GAAIoc,EAAUtc,GA5YxC,WACI,IAAIZ,EAAGwR,eAAP,CAKA8rE,GAAU,EAEVt9E,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACV8F,OAAQ,CACJsqE,aAAcuM,EAAWvM,cAE7BlrE,IAAKu3E,EAAkB,oBACvBp2E,SAQJ,SAAmBC,GAEfnH,EAAE,QAAQgP,OAAO7H,EAAO/G,OAExBsO,EAAQ1O,EAAE0rD,IAEJvnD,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGgB,QAAQsc,qBAAqB,MAChC7O,EAAM9N,iBACS,OAAX8Y,IACAA,EAAS,IAAIyC,QAEjB3f,EAAQyD,EAAGoZ,WAEPmkE,EAAWvM,cAAgBuM,EAAWvM,aAAa/xE,OAAS,GAC5Do/E,EAAiB,CAAEl+E,KAAM,OAG7BH,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACHzC,EAAE0rD,GAAYx8C,SACdlP,EA7MS,mBA6MSkP,SACdsuE,EAAW3rE,cAAmD,mBAA5B2rE,EAAW3rE,cAC7C2rE,EAAW3rE,kBAEhBnD,MAAM,SAjCTI,QAAQ,EACRgL,gBAAgB,EAChBF,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,IAyXhBmwE,IAEJ9wE,EAAMq/E,gBA1VN,SAAyB71D,EAAIxiB,GACzB,IAAIjH,EAAGwR,eAAP,CAGAxR,EAAGkP,cAAa,GAChBqpE,EAAY,KACZ+E,GAAU,EACVC,EAAa,CACT3rE,aAAc3K,EACdwiB,GAAIA,GAGRhb,EAAQ1O,EAAE0rD,GACV,IAAI7qD,EAAU,CACVkF,IAAKu3E,EAAkB,kBACvB32E,OAAQ,CACJqpE,MAAOtmD,GAEXxiB,SAQJ,SAAmBC,GACfnH,EAAE,QAAQgP,OAAO7H,EAAO/G,MAExBsO,EAAQ1O,EAAE0rD,GA2Rd+xB,EAAmB,GACnBz9E,EAxgBwB,0BAwgBC8L,KAAK,iBAAiBvC,MAAK,WAChDk0E,EAAmBp+E,KAAK,CACpBqqB,GAAI1pB,EAAEtE,MAAM0E,KAAK,YACjBwpB,aAAc5pB,EAAEtE,MAAM0E,KAAK,aA5R/BsO,EAAMvK,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGgB,QAAQsc,qBAAqB,MAChC7O,EAAM9N,iBACN8Y,EAASA,GAAU,IAAIyC,OACvB3f,EAAQyD,EAAGoZ,WACXpZ,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBu6E,OACDjwE,MAAM,SArBTI,QAAQ,EACRgL,gBAAgB,EAChBF,UAAU,GAGd3Z,EAAG+F,KAAKC,QAAQpF,KAoUpBX,EAAMC,qBAAuB,SAAUC,GACnC,IAAI+G,EAAS/G,EAEb,OAAQ+G,EAAO0S,KACX,KAAKA,EACD8xC,EAAcxkD,GAAQ,GACtB,MACJ,KAAK0S,EACD8xC,EAAcxkD,GAAQ,GACtB,MACJ,KAAK0S,EACDmlE,IACA,MACJ,KAAKnlE,EAnCT7Z,EAAE,mBAAmBkP,SACrBlP,EAAE,kCAAmC0rD,GAAYprD,IAAIN,EAAE,kCA7hBtC,mBA6hByFI,KAAK,UAC/GJ,EAAE,aAAe6Z,EAAe,eAAiBA,EAAiB,IAAK6xC,GAAYzjD,QAmC3E,MACJ,KAAK4R,GA/Tb,SAA6BzZ,GACzB,IAAIsO,EAAQ1O,EAAE0rD,GACd,QAAStrD,EAAK4M,OACV,KAAK0wE,EACDhvE,EAAM5C,KApQF,cAoQkBC,YAAY,UAClC2C,EAAM5C,KApQN,UAoQkBE,SAAS,UAC3B,MACJ,KAAK0xE,EACDhvE,EAAM5C,KAxQF,cAwQkBE,SAAS,UAC/B0C,EAAM5C,KAxQN,UAwQkBC,YAAY,UAC9B,MAEJ,QACI2C,EAAM5C,KA7QF,cA6QkBE,SAAS,UAC/B0C,EAAM5C,KA7QN,UA6QkBE,SAAS,UAEnC4yE,GAAwBx+E,EAAK4M,OAgTrBwyE,CAAoBr4E,GACpBm3E,EAAiBn3E,GACjB,MACJ,KAAK0S,EACDykE,EAAiBn3E,GACjB,MACJ,KAAK0S,EACD+kE,GAAwB5+E,EAAE0rD,EAAa,6BAA6BprD,OACpE,MACJ,KAAKuZ,GApRb,SAA6BzZ,GACzBo4E,GAAap4E,EAAKqN,SAClBrN,EAAK8F,EAAE+M,QAAQ,QACfjT,EAAE0rD,GAAYvnD,IAAI,mBAAmBC,GAAG,mBAAmB,WACvDnE,EAAGytD,YAAY8iB,qBAAqBgI,EAAWkG,MAChDhwE,MAAM,QAgRD2pE,CAAoBlxE,GACpB,MACJ,KAAK0S,EACDwlE,EAAkBl4E,GAClB,MACJ,KAAK0S,GAjFb,SAA8BzZ,GAC1B,IAAK,IAAI7E,EAAI,EAAGA,EAAIkiF,EAAmBv+E,OAAQ3D,IAC3C,GAAIkiF,EAAmBliF,GAAGmuB,MAAQtpB,EAAKqN,SAAU,CAC7CgwE,EAAmBjjE,OAAOjf,EAAG,GAC7B,MAIR6E,EAAK8F,EAAEoH,QAAQ,iBAAiB4B,SA0ExBuwE,CAAqBt4E,GACrB,MACJ,KAAK0S,EACL,KAAKA,EACDqlE,EAAgB/3E,GAChB,MACJ,KAAK0S,GAhIb,SAAyBzZ,GACrBA,EAAK8F,EAAEoH,QAAQ,MAAM4B,SAErBgwE,EAAgB9+E,GA8HRs/E,CAAgBv4E,KAMrBjH,EA/mBO,CAgnBhBQ,OAAQb;ACpnBV,aAIAA,GAAG8/E,OAAU,SAAU3/E,EAAGC,GAGtB,IAaIyO,EAbAxO,EAAQD,EAAG0/E,QAAU,GAWrBj0B,EAAa,gBAGbD,EAAwBzrD,EALC,8BAMzB4/E,EAAgB,KAChB/yB,EAAiB,KACjBqK,EAAS,GACT2oB,GAAgB,EAChBv4D,EAAa,GACbvL,EAAS,EAOTlC,EAEa,GAFbA,EAGe,GAHfA,EAKU,GAuLd,OAnCA3Z,EAAMO,KAAO,aAKbP,EAAM4/E,gBAAkB,SAAUC,EAAWC,EAAyBC,EAAkBC,GACpFN,EAAgBM,EAChBrzB,EAAiBozB,EACjB/oB,EAAS6oB,GAAa,GACtBF,EAAgBG,IAA2B,EAG3C,IAAK,IAAIzkF,EAAI,EAAGA,EAAIwkF,EAAU7gF,OAAQ3D,IAClC27D,EAAO37D,IAAM27D,EAAO37D,IA9I5B,WACI,IAAI0E,EAAGwR,eAAP,CAIAxR,EAAGkP,cAAa,GAChB,IAAItO,EAAU,CACV8F,OAAQ,CACJuwD,OAAQA,EACR2oB,cAAeA,GAEnB95E,IAAKo6E,8BACLj5E,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KAElBJ,EAAE,QAAQgP,OAAO7H,IAEjBuH,EAAQ1O,EAAE0rD,IAEJvnD,MAAMC,GAAG,kBAAkB,WAC7BnE,EAAGuC,oBACHvC,EAAGgB,QAAQE,WAAU,EAAMuqD,GAC3BzrD,EAAGgB,QAAQW,WAAU,EAAM8pD,GAC3BzrD,EAAGgB,QAAQG,aAAY,EAAMsqD,GAC7BzrD,EAAGgB,QAAQkB,SAAQ,EAAMupD,GACzBzrD,EAAGgB,QAAQe,eAAe0M,EAAM5C,KAAK,uBACrC7L,EAAGgB,QAAQiB,UAAUwpD,GACrBzrD,EAAGkP,cAAa,MACjB/K,GAAG,mBAAmB,WACrBnE,EAAGwC,aACCm9E,GAA0C,mBAAlBA,GACxBA,EAAc1oB,GAElBl3D,EAAE0rD,GAAYx8C,YACfR,MAAM,QAET+8C,EAAwBzrD,EApFH,8BAqFrByrD,EAAwBxrD,EAAGgB,QAAQ08B,oBArFd,+BAuDrB7uB,QAAQ,EACRgL,gBAAgB,GAEpB7Z,EAAG+F,KAAKC,QAAQpF,IAgIhBu/E,IAMJlgF,EAAMC,qBAAuB,SAAUC,GACnC,IAAI+G,EAAS/G,EAEb,OAAQ+G,EAAO0S,KACX,KAAKA,EACL,KAAKA,GArGb,SAAsBzZ,GAClBqrD,EAAsBjuB,aAClBp9B,EAAKyZ,MAAQA,EACbyN,EAAalnB,EAAK4M,MAElB+O,GAAU3b,EAAK4M,MAGnB,IAAInM,EAAU,CACVkF,IAAKo6E,mCACLx5E,OAAQ,CACJuwD,OAAQA,EACR5vC,WAAYA,EACZvL,OAAQA,GAEZ7U,SAMJ,SAAmB9G,GACf,IAAI+G,EAAS/G,EAAKA,KACd+G,GACAnH,EAAE0rD,GAAY5/C,KAAK,wBAAwBI,KAAK/E,GAChDlH,EAAGgB,QAAQG,aAAY,EAAMsqD,GAC7BD,EAAsBluB,iBAEtBkuB,EAAsB/tB,cAZ1B5uB,QAAQ,GAGZ7O,EAAG+F,KAAKC,QAAQpF,GAmFRw/E,CAAal5E,GACb,MACJ,KAAK0S,GA/Db,SAAuBzZ,GACnBqrD,EAAsBjuB,aAClBqiD,GACIz/E,EAAK4M,MACLkqD,EAAO73D,MAAMe,EAAKqN,UAElBypD,EAAO18C,OAAO08C,EAAO3gD,SAASnW,EAAKqN,UAAW,GAG9Co/C,GAA4C,mBAAnBA,GACzBA,EAAeqK,GAAS92D,EAAKqN,YAG7BypD,EAAOh4D,OAAS,GAChBc,EAAE0rD,GAAY5/C,KAAK,mBAAqBorD,EAAO,GAAK,MAAMprD,KAAK,wBAAwBknB,eAAe,CAAEhmB,OAAO,IAEnHkqD,EAAS92D,EAAK4M,MAAQ,EAAE5M,EAAKqN,UAAY,GAErCo/C,GAA4C,mBAAnBA,GACzBA,EAAeqK,IAGvBzL,EAAsBluB,gBA0Cd+iD,CAAcn5E,KAKnBjH,EA1NE,CA2NXQ,OAAQb","file":"FDJavaScript.min.js","sourcesContent":["/* ========================================================================\r\n * FD: dates\r\n * Child: --\r\n * Version: 1.0\r\n * ========================================================================\r\n * ========================================================================\r\n * 2/22/2016: creation\r\n*/\r\n\r\n\r\n/* ========================================================================\r\n * vars\r\n * ========================================================================\r\n*/\r\nDate.monthAbbreviations = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');\r\nDate.monthFullAbbreviations = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');\r\nDate.dayAbbreviations = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat');\r\nDate.dayAbbreviationsLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');\r\nDate.OneDay = 1000 * 60 * 60 * 24;\r\n\r\n/* ========================================================================\r\n * date clean up\r\n * ========================================================================\r\n*/\r\n// leading zero\r\nDate.LZ = function (x) {\r\n return (x < 0 || x > 9 ? \"\" : \"0\") + x;\r\n};\r\n\r\n\r\n\r\n\r\n/* ========================================================================\r\n * display\r\n * ========================================================================\r\n*/\r\n\r\n\r\n// display date in mm/dd/yyyy format\r\nDate.prototype.getDateFriendly = function () {\r\n return (Date.LZ(this.getMonth() + 1)) + \"/\" + Date.LZ(this.getDate()) + '/' + this.getFullYear();\r\n}\r\n\r\n\r\n// display date in mm/dd format\r\nDate.prototype.getDateMonth = function () {\r\n return (Date.LZ(this.getMonth() + 1)) + \"/\" + Date.LZ(this.getDate());\r\n}\r\n\r\n\r\n\r\n\r\n// display monday in mm/dd/yyyy format\r\nDate.prototype.getMondayDateFriendly = function () {\r\n var fullDate = new Date(this.setDate(this.getDate() - this.getDay() + (this.getDay() === 0 ? -6 : 1))); // adjust when day is sunday\r\n return (Date.LZ(fullDate.getMonth() + 1)) + \"/\" + Date.LZ(fullDate.getDate()) + \"/\" + fullDate.getFullYear();\r\n}\r\n\r\n\r\n// display date in mm/yyyy format\r\nDate.prototype.getMonthYearDateFriendly = function () {\r\n return (Date.LZ(this.getMonth() + 1)) + \"/\" + this.getFullYear();\r\n}\r\n\r\n// display year\r\nDate.prototype.getYearFriendly = function () {\r\n return this.getFullYear();\r\n}\r\n\r\n\r\n// display monday in mm/dd/yyyy format\r\nDate.prototype.getMondayDateFriendly = function () {\r\n var fullDate = new Date(this.setDate(this.getDate() - this.getDay() + (this.getDay() === 0 ? -6 : 1))); // adjust when day is sunday\r\n return (Date.LZ(fullDate.getMonth() + 1)) + \"/\" + Date.LZ(fullDate.getDate()) + \"/\" + fullDate.getFullYear();\r\n}\r\n\r\n\r\n// display date in DayName, Month Abr, Day, yy\r\nDate.prototype.getFullDateFriendlyLong = function () {\r\n return Date.dayAbbreviationsLong[this.getDay()] + ', ' + Date.monthAbbreviations[this.getMonth()] + ' ' + Date.LZ(this.getDate()) + ', ' + this.getFullYear();\r\n}\r\n\r\n\r\n// display date in Day Abr, Month Abr, Day, yy\r\nDate.prototype.getDayAbrFullDateFriendlyLong = function () {\r\n return Date.dayAbbreviations[this.getDay()] + ', ' + Date.monthAbbreviations[this.getMonth()] + ' ' + Date.LZ(this.getDate()) + ', ' + this.getFullYear();\r\n}\r\n\r\n// display date in Month Abr, Day, yy\r\nDate.prototype.getAbrFullDateFriendlyLong = function (label) {\r\n return label[Date.monthAbbreviations[this.getMonth()]] + ' ' + Date.LZ(this.getDate()) + ', ' + this.getFullYear();\r\n}\r\n\r\n\r\n// display date in DayName, Month Abr, Day, yy\r\nDate.prototype.getFullDateFriendly = function () {\r\n return Date.dayAbbreviations[this.getDay()] + ', ' + Date.monthAbbreviations[this.getMonth()] + ' ' + Date.LZ(this.getDate()) + ', ' + this.getFullYear();\r\n}\r\n\r\n\r\n// display date in DayName, Month Abr, Day\r\nDate.prototype.getDayMonthNum = function () {\r\n return Date.dayAbbreviations[this.getDay()] + ', ' + Date.monthAbbreviations[this.getMonth()] + ' ' + Date.LZ(this.getDate());\r\n}\r\n\r\n\r\n// display date in DayName, Month Abr, Day, yy hh mm ss mm\r\nDate.prototype.getFullDateTimeFriendly = function () {\r\n return Date.dayAbbreviations[this.getDay()] + ', ' + Date.monthAbbreviations[this.getMonth()] + ' ' + Date.LZ(this.getDate()) + ', ' + this.getFullYear() + ' ' +\r\n this.getHours() + \":\" + this.getMinutes() + \":\" + this.getSeconds() + \":\" + this.getMilliseconds();\r\n}\r\n\r\n// display date in Day Abr, Month Abr, Day, yy\r\nDate.prototype.getDayAbrFullDateFriendlyLong = function () {\r\n return Date.dayAbbreviations[this.getDay()] + ', ' + Date.monthAbbreviations[this.getMonth()] + ' ' + Date.LZ(this.getDate()) + ', ' + this.getFullYear();\r\n}\r\n\r\n// display date in Month Abr, yy\r\nDate.prototype.getMonthDateFriendly = function () {\r\n return Date.monthAbbreviations[this.getMonth()] + ', ' + this.getFullYear();\r\n}\r\n\r\n// display date in Month Full, yy\r\nDate.prototype.getMonthDateFriendlyFull = function () {\r\n return Date.monthFullAbbreviations[this.getMonth()] + ', ' + this.getFullYear();\r\n}\r\n\r\n\r\n// get day abbr\r\nDate.prototype.getDayAbbreviation = function (day) {\r\n return Date.dayAbbreviations[day];\r\n}\r\n\r\n\r\n\r\n\r\n\r\n// is weekend\r\nDate.prototype.isWeekend = function () {\r\n return (this.getDay() == 6 || this.getDay() == 0) ? true : false;\r\n}\r\n\r\n\r\n// is sunday\r\nDate.prototype.isSunday = function () {\r\n return (this.getDay() == 0) ? true : false;\r\n}\r\n\r\n\r\n// adjust day value\r\nDate.prototype.adjustDayValue = function (days, xSunday) {\r\n var newDate = new Date(this.setDate(this.getDate() + days));\r\n // xclude sunday\r\n if (xSunday) {\r\n if (newDate.getDay() == 0 && days < 0) {\r\n newDate = new Date(this.setDate(this.getDate() - 1));\r\n }\r\n\r\n if (newDate.getDay() == 0 && days > 0) {\r\n newDate = new Date(this.setDate(this.getDate() + 1));\r\n }\r\n }\r\n return newDate;\r\n}\r\n\r\n\r\n// adjust month value\r\nDate.prototype.adjustMonthValue = function (months) {\r\n this.setMonth(this.getMonth() + months);\r\n this.setDate(1);\r\n return this;\r\n}\r\n\r\n// is date equal: ignores time\r\nDate.prototype.isEqual = function (testDate) {\r\n return (\r\n this.getFullYear() === testDate.getFullYear() &&\r\n this.getMonth() === testDate.getMonth() &&\r\n this.getDate() === testDate.getDate()\r\n );\r\n}\r\n\r\n// Get # days between two dates\r\nDate.prototype.getDaysBetween = function (testDate) {\r\n return Math.floor(new Date(this - testDate).getTime() / Date.OneDay);\r\n}\r\n\r\nDate.prototype.getMonthsBetween = function (testDate) {\r\n var months;\r\n months = (this.getFullYear() - testDate.getFullYear()) * 12;\r\n months -= testDate.getMonth();\r\n months += this.getMonth();\r\n return months;\r\n}\r\n\r\n\r\n// is valid date\r\nDate.prototype.isValid = function () {\r\n // An invalid date object returns NaN for getTime() and NaN is the only\r\n // object not strictly equal to itself.\r\n return this.getTime() === this.getTime();\r\n};\r\n\r\n\r\n// is after\r\nDate.prototype.isAfter = function (testDate) {\r\n if (testDate == null) return false;\r\n return (this.getTime() > testDate.getTime());\r\n};\r\n\r\n\r\n// add day\r\nDate.prototype.addDay = function (days) {\r\n // var d = new Date(this);\r\n return this.setDate(this.getDate() + (days));\r\n}\r\n\r\n\r\n// get last day of month\r\nDate.prototype.getlastDayOfMonth = function () {\r\n return 32 - new Date(this.getFullYear(), this.getMonth(), 32).getDate();\r\n}\r\n\r\n// get first day of month\r\nDate.prototype.getFirstDayOfMonth = function () {\r\n return new Date(this.getFullYear(), this.getMonth(), 1);\r\n}\r\n\r\n// get first day of week\r\nDate.prototype.getFirstDayOfWeek = function () {\r\n return new Date(this).adjustDayValue(-1 * this.getDay());\r\n}\r\n\r\n// get first day number of month\r\nDate.prototype.getFirstDayNumber = function () {\r\n var firstDay = new Date(this.getFullYear(), this.getMonth(), 1);\r\n return firstDay.getDay();\r\n}\r\n","/* ========================================================================\r\n * FD: number\r\n * Child: --\r\n * Version: 1.0\r\n * ========================================================================\r\n * ======================================================================== \r\n * 2/22/2016: creation\r\n*/\r\n\r\n\r\n/* ========================================================================\r\n * vars\r\n * ========================================================================\r\n*/\r\n\r\n\r\n/* ========================================================================\r\n * functions\r\n * ========================================================================\r\n*/\r\n//// function \r\n//Number.FN = function (x) {\r\n \r\n//};\r\n\r\n\r\n\r\n\r\n/* ========================================================================\r\n * display\r\n * ========================================================================\r\n*/\r\n\r\n\r\n// get precision\r\n// pass in precision > 0\r\nNumber.prototype.getP = function (precision) {\r\n if (precision === 0) precision = 1;\r\n return this.toPrecision(precision);\r\n}\r\n\r\n","Array.prototype.contains = function (v) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (this[i] === v) return true;\r\n }\r\n return false;\r\n};\r\n\r\nArray.prototype.unique = function () {\r\n var arr = [];\r\n for (var i = 0; i < this.length; i++) {\r\n if (!arr.contains(this[i])) {\r\n arr.push(this[i]);\r\n }\r\n }\r\n return arr;\r\n}","/* ========================================================================\r\n * FD: string\r\n * Child: --\r\n * Version: 1.0\r\n * ========================================================================\r\n * ======================================================================== \r\n * 2/22/2016: creation\r\n*/\r\n\r\n\r\n/* ========================================================================\r\n * vars\r\n * ========================================================================\r\n*/\r\n\r\n\r\n\r\n/* ========================================================================\r\n * functions\r\n * ========================================================================\r\n*/\r\n//// function \r\n//String.FN = function (x) {\r\n \r\n//};\r\n\r\n\r\n\r\n\r\n\r\n/* ========================================================================\r\n * display\r\n * ========================================================================\r\n*/\r\n\r\n// get bool\r\nString.prototype.getBool = function () {\r\n return (/^true$/i).test(this);\r\n}\r\n\r\n\r\n// capital 1st letter\r\nString.prototype.capitalizeFirstLetter = function () {\r\n return this.charAt(0).toUpperCase() + this.slice(1);\r\n}\r\n\r\n\r\n","/* ========================================================================\r\n * FD: constructor\r\n * Child: --\r\n * Version: 1.0\r\n * ========================================================================\r\n * must be first to load\r\n * pattern: module\r\n * ======================================================================== \r\n * 12/01/2015: creation\r\n*/\r\n\r\n\r\n/* ========================================================================\r\n * FD\r\n * ========================================================================\r\n*/\r\nvar FD = (function (w) {\r\n return {};\r\n}(window));\r\n\r\n\r\n/* ========================================================================\r\n * initialize the page\r\n * ========================================================================\r\n*/\r\nFD.PAGE = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.PAGE || {};\r\n\r\n\r\n // after control event \r\n child.getAfterControlEvent = function (data) { };\r\n\r\n\r\n // after site view change event\r\n child.getAfterSiteViewChangeEvent = function (val) { };\r\n\r\n\r\n // after pin state change event\r\n child.getAfterPinStateChangeEvent = function () { };\r\n\r\n\r\n // get view props\r\n child.getViewProps = function () { };\r\n\r\n\r\n // init\r\n child.init = function () { };\r\n\r\n return child;\r\n}(jQuery, FD));\r\n","(function ($, me) {\r\n /**\r\n * enable fd controls at the page or element level\r\n *\r\n * @param { boolean } resetToolTips {resetToolTips:true} destroys page toolTips, default is true\r\n */\r\n $.fn.enableControls = function (options) {\r\n const currentOptions = $.extend({ resetToolTips: true }, options);\r\n //me.CONTROL.setValidateContainer(this); // Has to be run manually as it may target child elements.\r\n\r\n me.CONTROL.setAutoComplete(this);\r\n me.CONTROL.setButton(true, this);\r\n me.CONTROL.setCheckBox(true, this);\r\n me.CONTROL.setCounter(true, this);\r\n me.CONTROL.setDatePicker(this);\r\n me.CONTROL.setDropDown(true, this);\r\n me.CONTROL.setEditor(this);\r\n me.CONTROL.setNumber(true, this);\r\n me.CONTROL.setPopover(true, this);\r\n me.CONTROL.setRadioButton(this);\r\n me.CONTROL.setSelect(true, this);\r\n me.CONTROL.setSortable(this);\r\n //me.CONTROL.setStar(true, this); // Unused\r\n me.CONTROL.setStatus(true, this);\r\n //me.CONTROL.setTabbing(this, 0); // StartCell needs to be moved to attr.\r\n me.CONTROL.setTableFrozenColumn($('[data-fd=table-frozen-column]', this ?? 'body'));\r\n me.CONTROL.setTableInPage(this);\r\n me.CONTROL.setTableResize(this);\r\n me.CONTROL.setScroll(this); // Must be after tables.\r\n //me.CONTROL.setTableTab(this); // Unused\r\n me.CONTROL.setText(true, this);\r\n me.CONTROL.setTextArea(true, this);\r\n me.CONTROL.setTimePicker(this);\r\n //me.CONTROL.setTour(getTourSteps()); // Only used once\r\n me.CONTROL.setUrl(this);\r\n //me.CONTROL.setWebSocket(...) // This needs to be done explicitly in pages as the rules change.\r\n\r\n me.CONTROL.setExcelNavigation(null);\r\n if (currentOptions.resetToolTips) {\r\n me.setToolTipDestroy();\r\n }\r\n me.setToolTip(this);\r\n return this;\r\n };\r\n}(jQuery, FD));","FD = (function ($, me) {\r\n // callback prefix\r\n var CALLBACKPREFIX = {\r\n NONE: 0,\r\n DEFAULT: 1,\r\n PROJECTEDIT: 2,\r\n PAGEACCESS: 3,\r\n FEEDBACK: 4,\r\n MEDIA_MANAGER: 5,\r\n PROJECTADD: 6,\r\n LINK8D: 7,\r\n FAVORITEVIEW: 8,\r\n APPLICATIONHELP: 9,\r\n CALCULATOR: 10,\r\n LOCATIONS: 11,\r\n TIMETRACKER: 12,\r\n PURCHASE_ORDER: 13,\r\n LEARNING_SUBSCRIPTION: 14,\r\n REPORT: 15\r\n };\r\n var APP_HELP_BUTTON = '#APP_HELP_BUTTON';\r\n var URL_COMMON = '/Common/Common/';\r\n var modalLock = false;\r\n var idleTimeout;\r\n var label;\r\n var mprogress = new Mprogress({\r\n parent: '#PROGRESS-TOP'\r\n });\r\n var progressCount = 0;\r\n var timeSpentOnPageLock = false;\r\n\r\n // set callback by prefix\r\n function setCallBackByPrefix(prefix) {\r\n switch (prefix) {\r\n case CALLBACKPREFIX.DEFAULT:\r\n return 'PAGE.getAfterControlEvent';\r\n case CALLBACKPREFIX.PROJECTEDIT:\r\n return 'PROJECTEDIT.getAfterControlEvent';\r\n case CALLBACKPREFIX.PROJECTADD:\r\n return 'PROJECTADD.getAfterControlEvent';\r\n case CALLBACKPREFIX.PAGEACCESS:\r\n return 'PAGEACCESS.getAfterControlEvent';\r\n case CALLBACKPREFIX.FEEDBACK:\r\n return 'FEEDBACK.getAfterControlEvent';\r\n case CALLBACKPREFIX.MEDIA_MANAGER:\r\n return 'MEDIA_MANAGER.getAfterControlEvent';\r\n case CALLBACKPREFIX.LINK8D:\r\n return 'LINK8D.getAfterControlEvent';\r\n case CALLBACKPREFIX.FAVORITEVIEW:\r\n return 'FAVORITEVIEW.getAfterControlEvent';\r\n case CALLBACKPREFIX.APPLICATIONHELP:\r\n return 'APPLICATIONHELP.getAfterControlEvent';\r\n case CALLBACKPREFIX.LOCATIONS:\r\n return 'LOCATIONS.getAfterControlEvent';\r\n case CALLBACKPREFIX.TIMETRACKER:\r\n return 'TIMETRACKER.getAfterControlEvent';\r\n case CALLBACKPREFIX.PURCHASE_ORDER:\r\n return 'PURCHASEORDER.getAfterControlEvent';\r\n case CALLBACKPREFIX.LEARNING_SUBSCRIPTION:\r\n return 'LEARNINGSUBSCRIPTION.getAfterControlEvent';\r\n case CALLBACKPREFIX.REPORT:\r\n return 'REPORT.getAfterControlEvent';\r\n default:\r\n return 'PAGE.getAfterControlEvent';\r\n }\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * init\r\n * ========================================================================\r\n */\r\n function init() {\r\n\r\n // set the page dimensions [ get the top starting point ]\r\n setPageDimension();\r\n\r\n\r\n // set left navigation\r\n me.SITE.setLeftNavControl();\r\n\r\n\r\n // set scroll container\r\n me.CONTROL.setScroll(\"#LEFT_NAVIGATION\");\r\n me.CONTROL.setScroll(\"#POP_USEREXPLORER\");\r\n me.CONTROL.setScroll(\"#POP_APPLICATION\");\r\n me.CONTROL.setScroll(\"#SS_FAVORITES_LIST\");\r\n me.CONTROL.setScroll(\"#SS_HISTORY_LIST\");\r\n me.CONTROL.setScroll(\"#POP_SEARCH\");\r\n\r\n // Set favorite view related buttons\r\n me.CONTROL.setButton(true, \"#SS_FAVORITES_LIST\");\r\n me.CONTROL.setButton(true, \"#SITE_APP_LIST\");\r\n\r\n // enable top controls\r\n me.SITE.setTopControlElement();\r\n\r\n // set top popovers\r\n me.SITE.setTopPopovers();\r\n\r\n // set horizonalscroll\r\n setHorizontalScroll();\r\n\r\n // set site search control\r\n me.SITE.setSiteSearchControl();\r\n\r\n // default site view [ comfort, cozy ...]\r\n me.SITE.setDefaultSiteView();\r\n\r\n // set disable empty A tags\r\n me.setDisableEmptyATag();\r\n\r\n // set site tool collapse\r\n me.setSiteToolCollapse();\r\n\r\n // set top scroll\r\n me.setUIToTop();\r\n\r\n // set toggle full screen\r\n me.setToggleFullScreen();\r\n\r\n // Enable data-popover attribute.\r\n me.setPopover();\r\n\r\n // Enable all controls (must happen after global setup)\r\n $('body').enableControls();\r\n\r\n // reset body content top margin on screen resize\r\n $(window).on('resize', function () {\r\n me.resetBodyContentMarginTop();\r\n });\r\n\r\n // by default, disable highcharts export context menu\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: ','\r\n },\r\n exporting: {\r\n enabled: false\r\n },\r\n chart: {\r\n plotShadow: false,\r\n animation: false\r\n },\r\n plotOptions: {\r\n series: {\r\n animation: false\r\n }\r\n }\r\n });\r\n\r\n $(APP_HELP_BUTTON).off().on('click', function () {\r\n me.APPLICATIONHELP.getApplicationHelpModal($(this).data('applicationid'), $(this).data('viewid'));\r\n });\r\n\r\n resetTimer();\r\n document.onmousemove = resetTimer;\r\n document.onkeypress = resetTimer;\r\n me.setToolTip();\r\n\r\n // Send client timezone to server\r\n sendClientTimeZone();\r\n\r\n // Stop click's on disabled links.\r\n $(document).on(\"click\", \"a[href][href!='#'][href!='']\", function (e) {\r\n if ($(e.currentTarget).attr('disabled') || $(e.currentTarget).data('noedit')) {\r\n return false;\r\n }\r\n });\r\n\r\n // Enable select-all on controls.\r\n $(document).on(\"click\", \"textarea.select-all\", function () {\r\n $(this).select();\r\n })\r\n\r\n startTracking();\r\n\r\n $(\"[data-ajax=true]\").click(function () {\r\n if ($(this).attr('disabled')) {\r\n return false;\r\n }\r\n });\r\n\r\n if (me.getUserProps().clickSelectsAllText) {\r\n $(document).on('focus', \"input,textarea\", function () {\r\n $(this).select();\r\n })\r\n }\r\n\r\n setUndoHandler();\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n var undoInterval;\r\n function setUndoHandler() {\r\n $.hotkeys.options.filterInputAcceptingElements = false;\r\n\r\n $(document).on('keydown', null, 'ctrl+z', setUndo);\r\n $(document).on('keydown', null, 'crtl+shift+z', setUndo);\r\n\r\n function setUndo() {\r\n document.isUndo = true;\r\n if (undoInterval) {\r\n clearTimeout(undoInterval);\r\n }\r\n // Being extra safe so a dangling isUndo doesn't cause problems.\r\n undoInterval = setTimeout(clearUndo, 100);\r\n }\r\n function clearUndo() {\r\n if (undoInterval) {\r\n clearTimeout(undoInterval);\r\n }\r\n document.isUndo = false;\r\n }\r\n }\r\n\r\n // get unique id\r\n function getUID(prefix) {\r\n do prefix += ~~(Math.random() * 1000000);\r\n while (document.getElementById(prefix));\r\n return prefix;\r\n }\r\n\r\n\r\n // get element position\r\n function getPosition(element) {\r\n element = element || this.$element;\r\n\r\n var el = element[0];\r\n var isBody = el.tagName === 'BODY';\r\n\r\n var elRect = el.getBoundingClientRect();\r\n\r\n if (elRect.width === null) {\r\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\r\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top });\r\n }\r\n var elOffset = isBody ? { top: 0, left: 0 } : element.offset();\r\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : element.scrollTop() };\r\n var windowscroll = { windowscroll: $(window).scrollLeft() };\r\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null;\r\n\r\n return $.extend({}, elRect, scroll, outerDims, elOffset, windowscroll);\r\n }\r\n\r\n\r\n // get window height\r\n function getWindowHeight(adj) {\r\n var val = adj === undefined ? 0 : adj;\r\n return $(window).height() + val;\r\n }\r\n\r\n\r\n // get window width\r\n function getWindowWidth(adj) {\r\n var val = adj === undefined ? 0 : adj;\r\n return $(window).width() + val;\r\n }\r\n\r\n\r\n // set comma\r\n function setComma(value) {\r\n if (!value || value === 0) {\r\n return value;\r\n } else {\r\n var parts = value.toString().split(\".\");\r\n return parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + (parts[1] ? \".\" + parts[1] : \"\");\r\n }\r\n //return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n\r\n // set control item options\r\n function setControlItemOptions(elem, options) {\r\n options.element = elem;\r\n var PARENT = '[data-parent=\"true\"]';\r\n var targetElm = options.useparent ? elem.closest(PARENT) : elem;\r\n var targetData = {};\r\n if (targetElm.length) {\r\n targetData = targetElm.data();\r\n }\r\n\r\n // update data\r\n options.callback = setCallBackByPrefix(targetData.callbackprefix);\r\n options.parentid = targetData.parentid || 0;\r\n\r\n // set data\r\n elem.data(options);\r\n }\r\n\r\n\r\n // set hightlight on listgroup\r\n function setHighlightListGroup(container, dataID) {\r\n if (typeof container === 'string') container = $(container);\r\n\r\n container.children('a').each(function () {\r\n var e = $(this);\r\n var data = e.data();\r\n if (data !== 'undefined') {\r\n if (data.parentid !== 'undefined') {\r\n if (data.parentid === dataID) e.addClass('active');\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n // set input focus\r\n function setInputFocus(e, select) {\r\n if (typeof e === 'string') e = $(e);\r\n var val = e.val();\r\n e.focus().val('').val(val);\r\n if (select) e.select();\r\n }\r\n\r\n\r\n // set no comma\r\n function setNoComma(value) {\r\n var noComma = new RegExp(',', 'g');\r\n return value.replace(noComma, '');\r\n }\r\n\r\n\r\n // configure tracking code\r\n function startTracking() {\r\n if (timeSpentOnPageLock) {\r\n return;\r\n }\r\n var inactiveCount = 0,\r\n maxInactiveCount = 10, // Mark user as inactive after 5 minutes\r\n intervalPeriod = 300000,\r\n timeTrackingInterval = null,\r\n visitID = null,\r\n dateOnly = false;\r\n timeSpentOnPageLock = true;\r\n var initialOptions = {\r\n url: URL_COMMON + 'RecordTimeSpentOnPage',\r\n params: {\r\n model: {\r\n ViewID: me.getViewID(),\r\n PageUrl: document.location.href\r\n }\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(initialOptions);\r\n\r\n function afterData(result) {\r\n timeSpentOnPageLock = false;\r\n visitID = result.data.visitID;\r\n updateNotificationCount(result.data.notificationCount);\r\n }\r\n\r\n function recordTimeSpentOnPage(callback) {\r\n if (timeSpentOnPageLock) {\r\n return;\r\n }\r\n timeSpentOnPageLock = true;\r\n var model = {\r\n ViewID: me.getViewID(),\r\n PageUrl: document.location.href,\r\n VisitID: visitID,\r\n dateOnly: dateOnly\r\n };\r\n\r\n var options = {\r\n url: URL_COMMON + 'RecordTimeSpentOnPage',\r\n params: {\r\n model: model\r\n },\r\n callback: afterRecordCallback\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n\r\n function afterRecordCallback(result) {\r\n timeSpentOnPageLock = false;\r\n updateNotificationCount(result.data.notificationCount);\r\n if (callback && typeof (callback) === 'function') {\r\n callback(result);\r\n }\r\n }\r\n }\r\n\r\n function setTimeTrackingInterval() {\r\n return setInterval(function () {\r\n if (++inactiveCount === maxInactiveCount) {\r\n clearInterval(timeTrackingInterval);\r\n timeTrackingInterval = null;\r\n return;\r\n }\r\n\r\n recordTimeSpentOnPage();\r\n }, intervalPeriod);\r\n }\r\n\r\n // log the time we left, save a bit so that next time we record data we only record the enddate\r\n function handleTimeoutBlur() {\r\n inactiveCount = 0;\r\n clearInterval(timeTrackingInterval);\r\n timeTrackingInterval = null;\r\n recordTimeSpentOnPage(setDateOnly);\r\n }\r\n\r\n function setDateOnly() {\r\n dateOnly = true;\r\n }\r\n\r\n function resetDateOnly() {\r\n dateOnly = false;\r\n timeTrackingInterval = setTimeTrackingInterval();\r\n }\r\n\r\n $(window).on('mousedown click scroll keypress focus touchstart', function () {\r\n inactiveCount = 0;\r\n if (!timeTrackingInterval) {\r\n if (dateOnly) {\r\n timeTrackingInterval = -1; // Temporary value to prevent duplicate calls given the attached events can easily fire multiple times\r\n recordTimeSpentOnPage(resetDateOnly);\r\n } else {\r\n timeTrackingInterval = setTimeTrackingInterval();\r\n }\r\n }\r\n }).on('blur', function () {\r\n handleTimeoutBlur();\r\n });\r\n\r\n function updateNotificationCount(total) {\r\n $('#SITE_NOTIFICATION_COUNT').text(total);\r\n $('#SITE_NOTIFICATION_BUTTON').toggleClass('hidden', total == 0).parent().toggleClass('hover', total != 0);\r\n }\r\n }\r\n\r\n\r\n // set page dimensions\r\n function setPageDimension() {\r\n var siteTopNavigation = $('[data-sitetopnav=\"true\"]');\r\n var fixedTopContent = $('[data-sitefixedtop=\"true\"]');\r\n var pageContent = $('[data-sitepagecontent=\"true\"]');\r\n var tables = $(\"table[data-headerfixset='true']\");\r\n\r\n var topNavHeight = Math.abs(siteTopNavigation.height());\r\n var fixedTopHeight = Math.abs(fixedTopContent.height());\r\n var pageTopHeight = fixedTopHeight + topNavHeight;\r\n\r\n siteTopNavigation.css({ marginTop: 0 });\r\n fixedTopContent.css({ top: topNavHeight });\r\n pageContent.css({ marginTop: pageTopHeight - 1 });\r\n\r\n if (tables && tables.length > 0) {\r\n tables.floatThead('destroy');\r\n tables.each(function (index, element) {\r\n $(element).attr('data-headerfixset', false);\r\n me.CONTROL.setTableInPage($(element));\r\n });\r\n }\r\n }\r\n\r\n\r\n // set horizontal scroll\r\n function setHorizontalScroll() {\r\n var ELEM = '[data-horizontalscroll=\"true\"]'; // inner div\r\n var scrollDiv = $(ELEM);\r\n\r\n function scrollHorizontal() {\r\n scrollDiv.css('margin-left', -$(window).scrollLeft());\r\n }\r\n\r\n $(document).off('scroll.horizontalscroller');\r\n $(document).on('scroll.horizontalscroller', scrollHorizontal);\r\n }\r\n\r\n\r\n // pulls the value from all form fields on page\r\n function getFormFields(container) {\r\n var fldList;\r\n if (container) {\r\n fldList = $(container).find('[data-fldname]');\r\n } else {\r\n fldList = $('[data-fldname]');\r\n }\r\n\r\n var ctrlAR = {};\r\n\r\n if (fldList.length === 0) return {};\r\n\r\n fldList.each(function () {\r\n var elem = $(this);\r\n var fldName = elem.data('fldname');\r\n let val = null;\r\n if (elem.data('fd') === 'select') {\r\n val = elem.val();\r\n } else if (elem.is(\".checkbox-group\")) {\r\n val = elem.data('value') && elem.data('value') !== \"\" ? elem.data('value') : false;\r\n val = val ? [elem.closest('[data-parent=true]').data('parentid')] : [];\r\n // Merge with other control's of the same name.\r\n if (typeof ctrlAR[fldName] == 'object') {\r\n val = val.concat(ctrlAR[fldName]);\r\n }\r\n } else if (elem.data('fd') === 'checkbox') {\r\n val = elem.data('value') && elem.data('value') !== \"\" ? elem.data('value') : false;\r\n } else if (elem.is(\".list-group\")) {\r\n val = $(\".active:not(.hidden)\", elem).map(function () {\r\n return $(this).data('value') ? $(this).data('value') : $(this).val();\r\n }).toArray();\r\n // Merge with other control's of the same name.\r\n if (typeof ctrlAR[fldName] == 'object') {\r\n val = val.concat(ctrlAR[fldName]);\r\n }\r\n } else if (elem.is(\"[type=file]\")) {\r\n val = elem[0].files;\r\n } else {\r\n if (elem.data('value')) {\r\n val = elem.data('value');\r\n if (elem.data('fd') == 'number')\r\n var elemValue = Number(elem.val());\r\n if (!isNaN(elemValue) && val != elemValue) {\r\n val = elemValue;\r\n }\r\n } else {\r\n val = elem.val();\r\n }\r\n }\r\n\r\n ctrlAR[fldName] = val;\r\n });\r\n\r\n return ctrlAR;\r\n }\r\n\r\n\r\n function refresh() {\r\n var options = {\r\n url: URL_COMMON + 'Ping'\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n resetTimer();\r\n }\r\n\r\n\r\n // We refresh the page if sitting idle for 3 hours to prevent session expiration\r\n function resetTimer() {\r\n clearTimeout(idleTimeout);\r\n idleTimeout = setTimeout(refresh, 10800000);\r\n }\r\n\r\n\r\n // Send client time zone to server\r\n function sendClientTimeZone() {\r\n var offset = new Date().getTimezoneOffset();\r\n var options = {\r\n url: URL_COMMON + 'SetClientOffset?offset=' + offset\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // get function from string\r\n me.getFuctionFromString = function (root, string) {\r\n var scope = root;\r\n var scopeSplit = string.split('.');\r\n\r\n for (var i = 0; i < scopeSplit.length - 1; i++) {\r\n scope = scope[scopeSplit[i]];\r\n\r\n if (scope === undefined) return;\r\n }\r\n return scope[scopeSplit[scopeSplit.length - 1]];\r\n };\r\n\r\n\r\n // get position\r\n me.getPosition = function (elem) {\r\n return getPosition(elem);\r\n };\r\n\r\n\r\n // get uniqueid\r\n me.getUID = function (prefix) {\r\n return getUID(prefix);\r\n };\r\n\r\n\r\n // get window height\r\n me.getWindowHeight = function (adj) {\r\n return getWindowHeight(adj);\r\n };\r\n\r\n\r\n // get window width\r\n me.getWindowWidth = function (adj) {\r\n return getWindowWidth(adj);\r\n };\r\n\r\n\r\n // set static class on row to prevent background from changing when in popover or other\r\n me.setRowStaticHighlightFromTarget = function (elem) {\r\n if (elem === undefined) return;\r\n\r\n var highlightClass = \"highlight-child-withborder\";\r\n var tr = elem.parents('tr');\r\n if (tr.length > 0) {\r\n var table = tr.parents('table');\r\n\r\n table.find('tr').removeClass('static').removeClass('highlight-child-withborder');\r\n tr.addClass('static').addClass(highlightClass);\r\n }\r\n };\r\n\r\n\r\n // set BR 2 LN\r\n me.setBR2LN = function (elem) {\r\n return elem.html().trim().replace(/<\\s*\\/?br>/ig, \"\\r\\n\");\r\n };\r\n\r\n\r\n // set global callback\r\n me.setCallBackFromData = function (elem, data) {\r\n var props = elem.data();\r\n\r\n if (elem.data().callback === undefined) return;\r\n if (props.callback.length === 0 || props.callback === null) return;\r\n\r\n var func = me.getFuctionFromString(me, props.callback);\r\n\r\n if (typeof func === 'function') func(data);\r\n };\r\n\r\n\r\n // set callback prefix\r\n me.setCallBackPrefix = function (prefix) {\r\n return setCallBackByPrefix(prefix);\r\n };\r\n\r\n\r\n me.setPageAccess = function () {\r\n $('#PAGEACESS_BUTTON').click(function () {\r\n me.PAGEACCESS.showModal();\r\n });\r\n };\r\n\r\n\r\n // set close button\r\n me.setCloseButton = function () {\r\n $(document).on({\r\n 'click': function (e) {\r\n e.preventDefault();\r\n $(this).parents('[data-parent=\"true\"]').hide();\r\n }\r\n }, '[data-btn=\"close\"]');\r\n };\r\n\r\n\r\n // set comma\r\n me.setComma = function (val) {\r\n return setComma(val);\r\n };\r\n\r\n\r\n // set control item options\r\n me.setControlItemOptions = function (elem, options) {\r\n return setControlItemOptions(elem, options);\r\n };\r\n\r\n\r\n // set date parse\r\n me.setDateParse = function (val) {\r\n return new Date(parseInt(val.substr(6)));\r\n };\r\n\r\n\r\n // set disable empty A tags\r\n me.setDisableEmptyATag = function () {\r\n $(document).on({\r\n 'click': function (e) {\r\n e.preventDefault();\r\n }\r\n }, '[href=\"#\"]');\r\n };\r\n\r\n\r\n\r\n // set feedback\r\n me.setFeedBack = function () {\r\n $('[data-feedbackbtn=\"true\"]').click(function () {\r\n me.FEEDBACK.init();\r\n });\r\n };\r\n\r\n\r\n me.setPopover = function () {\r\n $(document).on(\"click\", \"[data-popover=true]\", function () {\r\n var options = {\r\n placement: 'horizontal',\r\n multi: false,\r\n cache: false,\r\n arrow: false,\r\n dismissible: true,\r\n closeable: true,\r\n title: $(this).data('popover-title'),\r\n style: $(this).data('popover-style'),\r\n content: function () {\r\n return $(this).data('popover-html') ? $(this).data('popover-html') : $($(this).data('popover-target')).html();\r\n },\r\n onHide: function (e) {\r\n $('body').removeClass('out');\r\n },\r\n width: '600',\r\n onShow: function (modal) {\r\n $(modal).addClass(\"popover-border popover-primary\");\r\n },\r\n type: 'html'\r\n };\r\n\r\n if (!$(this).data('plugin_webuiPopover')) {\r\n $(this).webuiPopover(options);\r\n }\r\n $(this).webuiPopover('show');\r\n });\r\n }\r\n\r\n\r\n\r\n me.setImpersonating = function () {\r\n $('[data-impersonating=\"true\"]').click(function () {\r\n var options = {\r\n url: '/SiteAdmin/SwitchUserAccount/HandleAbortImpersonation',\r\n callback: afterData,\r\n ishtml: false\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n window.refresh();\r\n }\r\n };\r\n });\r\n }\r\n\r\n me.setChangeLog = function () {\r\n $('[data-changelog=true]').click(function () {\r\n var options = {\r\n url: '/SiteAdmin/ChangeLog/GetViewChangeLogModal',\r\n callback: afterData,\r\n ishtml: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n $('body').append(result.data);\r\n\r\n $('#CHANGELOG_MODAL').off().on('shown.bs.modal', function () {\r\n afterHtmlUpdate($(this));\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n $('#CHANGELOG_MODAL').remove();\r\n }).modal('show');\r\n } else {\r\n me.setModalLock(false);\r\n }\r\n }\r\n function afterHtmlUpdate(modal) {\r\n me.CONTROL.setButton(false, modal);\r\n $(\".btn\", modal).click(function () {\r\n if ($(this).is(\"[disabled]\")) {\r\n return;\r\n }\r\n\r\n var options = {\r\n url: '/SiteAdmin/ChangeLog/GetViewChangeLogModal',\r\n params: {\r\n releaseDate: $(this).data('value')\r\n },\r\n callback: afterDataPartial,\r\n ishtml: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n });\r\n\r\n me.setToolTipDestroy();\r\n me.setModalLock(false);\r\n }\r\n\r\n function afterDataPartial(result) {\r\n $('#CHANGELOG_MODAL').html($(result.data).html());\r\n afterHtmlUpdate($('#CHANGELOG_MODAL'));\r\n }\r\n });\r\n\r\n $('#RELEASE_NOTIFICATION [data-changelog-suppress=true]').click(function () {\r\n me.setCookie('SuppressReleaseNotification', true, 1, true);\r\n $('#RELEASE_NOTIFICATION').remove();\r\n });\r\n }\r\n\r\n\r\n // set highlight list group\r\n me.setHighlightListGroup = function (elem, id) {\r\n setHighlightListGroup(elem, id);\r\n };\r\n\r\n\r\n // set htmldecode\r\n me.setHtmlDecode = function (val) {\r\n return $('
').html(val).text();\r\n };\r\n\r\n\r\n // set htmlencode\r\n me.setHtmlEncode = function (val) {\r\n return $('
').text(val).html();\r\n };\r\n\r\n\r\n // set input focus\r\n me.setInputFocus = function (elem, highLight) {\r\n setInputFocus(elem, highLight);\r\n };\r\n\r\n\r\n // set is object\r\n me.setIsObject = function (elem) {\r\n if (elem === null) { return false; }\r\n return typeof elem === 'function' || typeof elem === 'object';\r\n };\r\n\r\n\r\n //// set LN 2 BR\r\n //me.setLN2BR = function (val) {\r\n // return val.replace(new RegExp('\\r?\\n', 'g'), '
');\r\n //};\r\n\r\n\r\n // set no comma\r\n me.setNoComma = function (val) {\r\n return setNoComma(val);\r\n };\r\n\r\n\r\n // set page dimensions\r\n me.setPageDimension = function () {\r\n setPageDimension();\r\n };\r\n\r\n\r\n // set popover options\r\n me.setPopoverOptions = function (url) {\r\n return {\r\n placement: 'vertical',\r\n multi: false,\r\n padding: false,\r\n cache: false,\r\n arrow: false,\r\n dismissible: true,\r\n closeable: false,\r\n type: 'async',\r\n trigger: 'click',\r\n url: url,\r\n style: 'inverse',\r\n async: {\r\n type: 'POST',\r\n success: function (that, data) { }\r\n },\r\n content: function (data) {\r\n return data;\r\n },\r\n onHide: function (e) { },\r\n onShow: function (e) { }\r\n };\r\n };\r\n\r\n\r\n // top progress bar\r\n me.setTopProgressBar = function () {\r\n progressCount++;\r\n mprogress.start();\r\n };\r\n\r\n me.unsetTopProgressBar = function () {\r\n if (progressCount > 0) {\r\n progressCount--;\r\n }\r\n if (progressCount === 0) {\r\n // Ui shouldn't wait for progressBar chagnes\r\n fastdom.mutate(() => mprogress.end());\r\n }\r\n };\r\n\r\n\r\n // confirm dialogue\r\n me.setConfirmDialogue = function (message, dataTag, cancelDataTag, callbackPrefix, parentid, confirmLabel, cancelLabel) {\r\n if (me.getModalLock()) {\r\n return;\r\n }\r\n\r\n me.setModalLock(true);\r\n var options = {\r\n url: URL_COMMON + 'ConfirmDialogue',\r\n params: {\r\n message: message,\r\n dataTag: dataTag,\r\n cancelDataTag: cancelDataTag,\r\n callbackPrefix: callbackPrefix,\r\n confirmLabel,\r\n cancelLabel\r\n },\r\n callback: afterData,\r\n ishtml: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n var modal = $('
');\r\n modal.html(result.data).off().on('shown.bs.modal', function () {\r\n if (typeof (parentid) != \"undefined\") {\r\n $(\".modal-dialog\", modal).attr(\"data-parentid\", parentid);\r\n }\r\n me.setToolTipDestroy();\r\n me.CONTROL.setButton(true, modal);\r\n me.setModalLock(false);\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n modal.remove();\r\n }).modal({\r\n backdrop: 'static',\r\n keyboard: false\r\n }).modal('show');\r\n }\r\n };\r\n\r\n\r\n me.hideConfirmDialogue = function (hideCallback) {\r\n $('#CONFIRMATION_MODAL').off().on('hidden.bs.modal', function () {\r\n $('#CONFIRMATION_MODAL').remove();\r\n me.setToolTip();\r\n if (hideCallback && typeof hideCallback === 'function') {\r\n hideCallback();\r\n }\r\n }).modal('hide');\r\n };\r\n\r\n\r\n // set site tool collapse\r\n me.setSiteToolCollapse = function () {\r\n var ELEM = '[data-sitecontrol=\"true\"]';\r\n $('[data-sitetogglecontrol=\"true\"]').on('click', function () {\r\n var e = $(this);\r\n if (e.hasClass('in')) {\r\n e.removeClass('in');\r\n $(ELEM).removeClass('hidden');\r\n e.children('i').removeClass('fa-caret-square-o-down').addClass('fa-caret-square-o-up');\r\n } else {\r\n e.addClass('in');\r\n $(ELEM).addClass('hidden');\r\n e.children('i').removeClass('fa-caret-square-o-up').addClass('fa-caret-square-o-down');\r\n }\r\n me.setPageDimension();\r\n });\r\n };\r\n\r\n\r\n // set scrolltop\r\n me.setScrollTop = function () {\r\n $('html, body').animate({ scrollTop: 0 }, 'fast');\r\n };\r\n\r\n\r\n\r\n // scroll to element referenced by provided selector\r\n // If no offset is provided, the height of the fixed top content will be calculated and added to the\r\n // scroll top offset value\r\n me.setScrollTo = function (selector, offset) {\r\n if (!offset) {\r\n offset = $('.site-fixed-top-content').height() + $('.site-top-navigation').height();\r\n }\r\n\r\n $('html, body').animate({\r\n scrollTop: $(selector).offset().top - offset\r\n }, 1000);\r\n };\r\n\r\n\r\n // scroll to element referenced by provided selector\r\n me.setScrollToHorizontal = function (selector, offset) {\r\n offset = offset || 500;\r\n $('html, body').animate({\r\n scrollLeft: $(selector).offset().left - offset\r\n }, 1000);\r\n };\r\n\r\n\r\n // set tabindex\r\n me.setTabIndex = function () {\r\n var list = $('[data-tab=\"true\"]');\r\n if (list.length === 0) return;\r\n var tab = 1000;\r\n list.each(function () {\r\n $(this).attr('tabindex', tab);\r\n tab++;\r\n });\r\n };\r\n\r\n\r\n // set table order\r\n me.setTableOrder = function (elem) {\r\n $(elem).find('tr').each(function (i) {\r\n var tr = $(this);\r\n var counter = tr.find('.row-counter');\r\n counter.html(i + 1);\r\n });\r\n };\r\n\r\n\r\n // set table insert by ID\r\n me.setTableInsertByID = function (elem, newID) {\r\n var newRow = $('[data-parentid=\"' + newID + '\"]');\r\n if (!newRow.length) {\r\n return;\r\n }\r\n $('html, body').animate({ scrollTop: newRow.offset().top - 200 }, 2000, function () {\r\n $('[data-parentid=\"' + newID + '\"]').addClass('highlight-child-withborder'); // can't use newRow inside here\r\n });\r\n };\r\n\r\n\r\n // set textarea focus\r\n me.setTextAreaFocus = function () {\r\n $(document).off('focus.taf');\r\n $(document).on('focus.taf', 'textarea', function () {\r\n var e = $(this);\r\n var val = e.val();\r\n e.val('').val(val);\r\n });\r\n };\r\n\r\n\r\n // set li insert by ID\r\n me.setLIInsertByID = function (elem, newID) {\r\n $(elem).find('li').each(function (i) {\r\n var li = $(this);\r\n var id = +li.data('parentid');\r\n\r\n if (id === newID) {\r\n //li.addClass('highlight-child-withborder');\r\n $('html,body').animate({ scrollTop: document.body.scrollHeight }, 800, 'linear');\r\n }\r\n });\r\n };\r\n\r\n\r\n // set tooltip\r\n me.setToolTip = function (container, delay = 300) {\r\n if (container) {\r\n if (container instanceof jQuery) {\r\n $('[data-tt]', container).tooltip({ delay: delay, trigger: 'hover', sanitize: false });\r\n } else {\r\n $(' [data-tt]', container).tooltip({ delay: delay, trigger: 'hover', sanitize: false });\r\n }\r\n } else {\r\n $('[data-tt]').tooltip({ delay: delay, trigger: 'hover', sanitize: false });\r\n }\r\n };\r\n\r\n\r\n // set tooltip destroy\r\n me.setToolTipDestroy = function (container) {\r\n $(\"[role=tooltip]\").each(function () {\r\n if ($($(this).data()['bs.tooltip'].element).closest(document.documentElement).length == 0) {\r\n $(this).remove()\r\n }\r\n });\r\n\r\n if (container) {\r\n $('[data-tt][aria-describedby]', container).tooltip('hide');\r\n } else {\r\n $('[data-tt=\"true\"][aria-describedby]').tooltip('hide');\r\n }\r\n };\r\n\r\n\r\n // set toggle full screen\r\n me.setToggleFullScreen = function () {\r\n var elem = $('[data-toggle-fullscreen=\"true\"]');\r\n // Not supported under IE (requires jQuery Browser)\r\n if (window.jQBrowser.msie) {\r\n elem.addClass('hide');\r\n } else {\r\n elem.on('click', function (e) {\r\n e.preventDefault();\r\n\r\n if (screenfull.enabled) {\r\n\r\n screenfull.toggle();\r\n\r\n } else {\r\n // Fullscreen not enabled ;\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n me.setHighlightTableChange = function (tableCellList) {\r\n if (tableCellList && tableCellList.length > 0) {\r\n for (var x = 0; x < tableCellList.length; x++) {\r\n $(tableCellList[x]).addClass('highlight-change');\r\n }\r\n }\r\n setTimeout(function () {\r\n $('.highlight-change').addClass('unhighlight-change');\r\n }, 1000);\r\n setTimeout(function () {\r\n $('.highlight-change').removeClass('highlight-change unhighlight-change');\r\n }, 2000);\r\n };\r\n\r\n\r\n // set UItoTop\r\n me.setUIToTop = function () {\r\n var defaults = {\r\n text: '',\r\n min: 250,\r\n inDelay: 500,\r\n outDelay: 400,\r\n containerID: 'toTop',\r\n containerHoverID: 'toTopHover',\r\n scrollSpeed: 700,\r\n easingType: 'linear'\r\n };\r\n\r\n var settings = $.extend({}, defaults),\r\n containerIDhash = '#' + settings.containerID,\r\n containerHoverIDHash = '#' + settings.containerHoverID,\r\n kill;\r\n\r\n kill ? 1 : 0;\r\n\r\n if (kill === 1) {\r\n return;\r\n } else {\r\n $('.site-body-content').append(' ');\r\n $(containerIDhash).hide().on('click.UItoTop', function () {\r\n $('html, body').animate({ scrollTop: 0 }, settings.scrollSpeed, settings.easingType);\r\n $('#' + settings.containerHoverID, this).animate({ 'opacity': 0 }, settings.inDelay, settings.easingType);\r\n return false;\r\n })\r\n .prepend('')\r\n .hover(function () {\r\n $(containerHoverIDHash, this).animate({\r\n 'opacity': 1\r\n }, 600, 'linear');\r\n }, function () {\r\n $(containerHoverIDHash, this).animate({\r\n 'opacity': 1\r\n }, 700, 'linear');\r\n });\r\n $(window).scroll(function (e) {\r\n var sd = $(window).scrollTop();\r\n if (typeof document.body.style.maxHeight === \"undefined\") {\r\n $(containerIDhash).css({\r\n 'position': 'absolute',\r\n 'top': sd + $(window).height() - 50\r\n });\r\n }\r\n if (sd > settings.min) {\r\n $(containerIDhash).fadeIn(settings.inDelay);\r\n }\r\n else {\r\n $(containerIDhash).fadeOut(settings.Outdelay);\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n // set validate form\r\n me.getFormFields = function (container) {\r\n return getFormFields(container);\r\n };\r\n\r\n\r\n // set cookie\r\n me.setCookie = function (name, value, days, global) {\r\n var expires = \"\";\r\n var date = new Date();\r\n days = days || 31;\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n expires = \"; expires=\" + date.toUTCString();\r\n var domain = global && !document.location.host.startsWith('localhost') ? \"; domain=.innotecgroup.com\" : '';\r\n document.cookie = name + \"=\" + value + expires + domain + \"; path=/\";\r\n };\r\n\r\n\r\n me.resetBodyContentMarginTop = function () {\r\n var topMargin =\r\n $('[data-sitepagecontent]').css('margin-top', $('[data-sitefixedtop]').outerHeight(true) + $('[data-sitetopnav]').outerHeight(true));\r\n };\r\n\r\n\r\n // Global variable and public accessor/setter to avoid issue where modal tries to open itself twice\r\n me.setModalLock = function (isModalLocked) {\r\n modalLock = isModalLocked || false;\r\n };\r\n\r\n\r\n me.getModalLock = function () {\r\n return modalLock;\r\n };\r\n\r\n me.updateQS = function (uri, key, value) {\r\n var re = new RegExp(\"([?&])\" + key + \"=.*?(&|$)\", \"i\");\r\n var separator = uri.indexOf('?') !== -1 ? \"&\" : \"?\";\r\n if (uri.match(re)) {\r\n return uri.replace(re, '$1' + key + \"=\" + value + '$2');\r\n }\r\n else {\r\n return uri + separator + key + \"=\" + value;\r\n }\r\n };\r\n\r\n\r\n me.toQS = function (key, data) {\r\n if (Array.isArray(data) && data.length) {\r\n if (typeof data[0] == 'object') {\r\n return data.map(function (item, idx) {\r\n var qsString = '';\r\n $.each(item, function (name) {\r\n qsString += \"&\" + key + \"[\" + idx + \"].\" + name + \"=\" + this;\r\n });\r\n return qsString;\r\n }).join('')\r\n } else {\r\n return data.map(function (item, idx) {\r\n return \"&\" + key + \"=\" + item;\r\n }).join('')\r\n }\r\n } else if (typeof data == 'object') {\r\n return $.param(data);\r\n } else if (typeof data != 'array') {\r\n return '&' + key + '=' + data;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n var ELEM = '[data-pin]';\r\n me.pinElements = function (container) {\r\n var list = '';\r\n if (container) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n $(list).each(function (aa) {\r\n var self = $(this);\r\n var pinTo = $(self.data('pin'));\r\n if (pinTo.length > 0) {\r\n var offset = self.data('pin-offset') ? self.data('pin-offset') : 0;\r\n if (self.position().top < pinTo.position().top) {\r\n self.css('margin-top', pinTo.position().top - self.position().top + offset);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n //capturedInputContent is a string version of your input parameters, you can achieve this easily using JSON.stringify([your input parameter object])\r\n me.logError = function (application, actionName, capturedInputContent, exceptionMessage) {\r\n const err = new Error(application + ':' + actionName,\r\n {\r\n cause: exceptionMessage,\r\n details: capturedInputContent\r\n });\r\n\r\n window.appInsights.trackException(err);\r\n };\r\n\r\n\r\n me.refreshTableAfterUpdate = function (tableElem, dataCallback) {\r\n var rowCounters = tableElem.find('.row-counter');\r\n if (rowCounters.length === 0) {\r\n dataCallback();\r\n } else {\r\n rowCounters.each(function (index) {\r\n this.innerHTML = index + 1;\r\n });\r\n }\r\n };\r\n\r\n\r\n me.setLoadingButton = function (elem) {\r\n elem = $(elem);\r\n elem.width(elem.width()).prop('disabled', true).addClass('disabled btn-disabled').html('');\r\n };\r\n\r\n\r\n me.unsetLoadingButton = function (elem, text) {\r\n elem = $(elem);\r\n elem.prop('disabled', false).removeClass('disabled btn-disabled').html(text);\r\n };\r\n\r\n me.setSelectOptions = function (control, options, valueField, textField, selectedValue) {\r\n valueField = !valueField ? 'ID' : valueField;\r\n textField = !textField ? 'Name' : textField;\r\n control.find('option:not([data-persistant=true])').remove();\r\n for (var i = 0; i < options.length; i++) {\r\n control.append('');\r\n }\r\n if (typeof selectedValue !== 'undefined') {\r\n control.val(selectedValue);\r\n }\r\n };\r\n\r\n me.highlightRow = function (elem, rowSelector, highlightClass) {\r\n rowSelector = rowSelector ? rowSelector : 'tr';\r\n highlightClass = highlightClass ? highlightClass : 'highlight-child-withborder';\r\n elem.closest(rowSelector).addClass(highlightClass).siblings().removeClass(highlightClass);\r\n };\r\n\r\n me.showChartModal = function (url) {\r\n me.AJAX.setAJAX({ url }).then(data => {\r\n const params = $.deparam(url.split('?')[1]);\r\n $(\"#CHART_MODAL .title\").text(params.Title ? \": \" + params.Title : \"\")\r\n $(\"#CHART_MODAL .chart\").highcharts(data);\r\n $(\"#CHART_MODAL\").modal('show');\r\n })\r\n }\r\n\r\n\r\n // init\r\n me.init = function () {\r\n init();\r\n label = me.getLabel();\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * override in doc ready\r\n * ========================================================================\r\n */\r\n me.setPageLabels = function () { };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return me;\r\n}(jQuery, FD));\r\n\r\n","FD.AJAX = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = {};\r\n var ajaxOutstanding = [];\r\n var ajaxScheduled = [];\r\n var originalLoadingElements = [];\r\n var notify;\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // get ajax options\r\n function getAjaxOptions() {\r\n return {\r\n data: '',\r\n params: {},\r\n callback: '',\r\n url: \"\",\r\n ishtml: false,\r\n isloader: false,\r\n tag: 0,\r\n success: false,\r\n cancelprevious: false,\r\n delay: false,\r\n processData: true,\r\n loadingElements: null, // can be jquery object of element(s), or array of elements\r\n contentType: 'application/json; charset=utf-8' // for form submits, we want to use 'application/x-www-form-urlencoded; charset=UTF-8'\r\n };\r\n }\r\n\r\n\r\n function handleAjaxQueue(url, ajaxCall) {\r\n for (var i = ajaxOutstanding.length - 1; i >= 0; i--) {\r\n var ajaxObj = ajaxOutstanding[i];\r\n\r\n // remove any done calls\r\n if (ajaxObj.xhr.readyState === 4) {\r\n ajaxOutstanding.splice(i, 1);\r\n continue;\r\n }\r\n\r\n // if there's a repeat, kill the previous\r\n if (ajaxObj.url === url) {\r\n ajaxObj.xhr.abort();\r\n ajaxOutstanding.splice(i, 1);\r\n }\r\n }\r\n\r\n ajaxOutstanding.push({\r\n url: url,\r\n xhr: ajaxCall\r\n });\r\n }\r\n\r\n function handleAjaxSchedule(options) {\r\n var item;\r\n\r\n for (var i = ajaxScheduled.length - 1; i >= 0; i--) {\r\n item = ajaxScheduled[i];\r\n\r\n if (item.name === options.url) {\r\n clearTimeout(item.timeout);\r\n ajaxScheduled.splice(i, 1);\r\n }\r\n }\r\n\r\n item = {\r\n name: options.url,\r\n timeout: setTimeout(function () {\r\n doAJAX(options);\r\n }, 500)\r\n };\r\n\r\n ajaxScheduled.push(item);\r\n }\r\n\r\n function handleLoadingElementReset() {\r\n for (var i = 0; i < originalLoadingElements.length; i++) {\r\n originalLoadingElements[i].elemObj.removeClass('disabled').prop('disabled', false).html(originalLoadingElements[i].originalHTML);\r\n }\r\n }\r\n\r\n function fixJsFunctions(data) {\r\n jQuery.each(data, function (index, value) {\r\n if (typeof value == 'object') {\r\n fixJsFunctions(value);\r\n }\r\n else if(typeof value == 'string') {\r\n if (value.indexOf(\"function(\") > -1)\r\n data[index] = eval(\"(\" + value + \")\");\r\n }\r\n });\r\n };\r\n\r\n\r\n // do ajax\r\n function doAJAX(options) {\r\n var label = me.getLabel();\r\n var dataType = options.ishtml ? \"html\" : \"json\";\r\n options.defer = $.Deferred();\r\n\r\n // loading elements\r\n if (options.loadingElements && (options.loadingElements instanceof jQuery || options.loadingElements instanceof Array)) {\r\n $.each(options.loadingElements, function () {\r\n var item = {};\r\n item.elemObj = $(this);\r\n item.elemObj.find('img').attr('onerror', ''); // avoid possible script execution \r\n item.originalHTML = $.parseHTML(item.elemObj.html());\r\n item.elemObj.addClass('disabled').prop('disabled', true).html('');\r\n originalLoadingElements.push(item);\r\n });\r\n }\r\n\r\n var ajaxCall = $.ajax({\r\n url: options.url,\r\n async: options.async === undefined ? true : options.async,\r\n data: (options.contentType === 'application/json; charset=utf-8') ? JSON.stringify(options.params) : options.params,\r\n type: 'POST',\r\n dataType: dataType,\r\n contentType: options.contentType,\r\n processData: options.processData,\r\n beforeSend: function () {\r\n if (options.isloader) {\r\n me.setTopProgressBar();\r\n }\r\n },\r\n headers: {\r\n \"ClientDateTime\": moment().format(\"YYYY-MM-DD HH:mm:ss.SSS\"),\r\n \"ClientTimeZone\": moment().format(\"z\")\r\n }\r\n }).done(function (data, status, xhr) {\r\n if (!options.ishtml && xhr.responseText.indexOf(\"\\\"function(\") > -1) {\r\n fixJsFunctions(data);\r\n }\r\n options.data = data;\r\n options.success = true;\r\n options.date = new Date();\r\n options.currenturl = location.href;\r\n options.getResponseHeader = xhr.getResponseHeader;\r\n\r\n if (data === 'false') {\r\n notify = notify || new Notify();\r\n notify.options.delay = 2500;\r\n notify.alert(label[\"YourRequestCouldNotBeCompletedPleaseTryAgain\"]);\r\n\r\n me.setModalLock(false);\r\n }\r\n if (options.isloader) {\r\n me.unsetTopProgressBar();\r\n }\r\n if (typeof options.callback === 'function') {\r\n options.callback(options);\r\n } else {\r\n if (options.data === 'false') {\r\n options.defer.reject(options);\r\n } else {\r\n options.defer.resolve(options.data)\r\n }\r\n }\r\n if (options.loadingElements) {\r\n handleLoadingElementReset();\r\n }\r\n $(\"[role=tooltip]\").each(function () {\r\n if ($($(this).data()['bs.tooltip'].element).closest(document.documentElement).length == 0) {\r\n $($(this).data()['bs.tooltip'].element).tooltip('hide');\r\n }\r\n });\r\n }).fail(function (jqXhR, textStatus, errorThrown) {\r\n options.dataError = jqXhR;\r\n options.errorStatus = textStatus;\r\n options.errorMsg = errorThrown;\r\n options.date = new Date();\r\n options.data = false;\r\n options.currenturl = location.href;\r\n\r\n me.setModalLock(false);\r\n\r\n if (typeof options.callback === 'function') {\r\n options.callback(options);\r\n } else {\r\n options.defer.reject(options);\r\n }\r\n if (options.isloader) {\r\n me.unsetTopProgressBar();\r\n }\r\n if (options.loadingElements) {\r\n handleLoadingElementReset();\r\n }\r\n if (typeof setAjaxFail === 'function') {\r\n if (jqXhR.status === 0) {\r\n return;\r\n }\r\n\r\n setAjaxFail(jqXhR, this, options);\r\n return;\r\n }\r\n });\r\n\r\n if (options.cancelprevious) {\r\n handleAjaxQueue(options.url, ajaxCall);\r\n }\r\n if (typeof options.xhr === 'function') {\r\n options.xhr(ajaxCall);\r\n }\r\n return options.defer.promise();\r\n }\r\n\r\n\r\n // get ajax\r\n function getAJAX(options) {\r\n if (options.delay) {\r\n handleAjaxSchedule(options);\r\n } else {\r\n return doAJAX(options);\r\n }\r\n }\r\n\r\n\r\n // set ajax fail\r\n function setAjaxFail(jqXhR, rspnse, data) {\r\n var label = me.getLabel();\r\n notify = notify || new Notify();\r\n $(this).closest('form').removeClass('form-processing');\r\n\r\n var message = jqXhR.status == 400 ? jqXhR.getResponseHeader('error-message') : label.AnErrorHasOccurredISTeamNotified;\r\n\r\n notify.alert(message);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set ajax [ used in all data cases]\r\n child.setAJAX = function (options) {\r\n var defaults = getAjaxOptions(),\r\n opts = $.extend({}, defaults, options);\r\n return getAJAX(opts);\r\n };\r\n\r\n $(document).on(\"change\", \"[data-update=OnFieldChange] input,[data-update=OnFieldChange] select,[data-update=OnFieldChange] textarea\", function () {\r\n if ($(this).data(\"update\") !== \"ignore\") {\r\n var form = $(this).closest(\"form\");\r\n setTimeout(function () {\r\n // Delay posting the form a tic so that field event handlers can run.\r\n $('[data-disabled=ignore]', form).attr('disabled', false);\r\n form.submit();\r\n $('[data-disabled=ignore]', form).attr('disabled', true);\r\n }, 1);\r\n }\r\n });\r\n $(document).on(\"click\", \"[data-update=OnFieldChange] button[type=submit]\", function () {\r\n if ($(this).data(\"update\") !== \"ignore\") {\r\n var form = $(this).closest(\"form\");\r\n $('[data-disabled=ignore]', form).attr('disabled', false);\r\n setTimeout(function () {\r\n $('[data-disabled=ignore]', form).attr('disabled', true);\r\n }, 1);\r\n }\r\n });\r\n\r\n child.onFailure = setAjaxFail;\r\n\r\n child.showModal = function (xhr) {\r\n var modal = $(this).data(\"ajaxUpdate\") ? $($(this).data(\"ajaxUpdate\")) : $('#IS_MODAL');\r\n me = FD;\r\n\r\n modal.off().on('shown.bs.modal', function () {\r\n me.CONTROL.setValidateContainer();\r\n modal.enableControls();\r\n\r\n me.setModalLock(false);\r\n\r\n if ($(\"[data-update=OnFieldChange]\", modal).length) {\r\n $(\"[data-update=OnFieldChange]\", modal).each(function () {\r\n var form = $(this);\r\n $(\"[data-fd=datepicker]\", \"#IS_MODAL\").each(function () {\r\n var func = $(this).datepicker(\"option\", \"onSelect\");\r\n $(this).datepicker(\"option\", \"onSelect\", function (dT, ui) {\r\n if (func) {\r\n func.call(this, dT, ui);\r\n }\r\n $(form).submit();\r\n });\r\n });\r\n });\r\n }\r\n $(\"form\", modal).submit(function () {\r\n if (!$(this).valid()) {\r\n $(this).validate().focusInvalid();\r\n return false;\r\n }\r\n });\r\n\r\n\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n if ($(\"[data-onclose]\", modal).data('onclose')) {\r\n eval($(\"[data-onclose]\", modal).data('onclose')).call(modal);\r\n }\r\n }).modal('show');\r\n };\r\n\r\n child.hideModal = function (xhr, textStatus, callback) {\r\n var modal = $(this).data(\"ajaxUpdate\") ? $($(this).data(\"ajaxUpdate\")) : $('#IS_MODAL');\r\n\r\n if (typeof callback == \"function\") {\r\n modal.off('hidden.bs.modal').on('hidden.bs.modal', callback);\r\n }\r\n\r\n modal.modal('hide');\r\n };\r\n\r\n //child.addRow\r\n child.updateRow = function (target, data) {\r\n $(target).html($(data).html()).enableControls();\r\n };\r\n\r\n child.removeRow = function (xhr) {\r\n var parentTable = $(this).closest(\"table\");\r\n\r\n $(this).closest(\"[data-parentid]\").remove();\r\n $(\"[data-noresults]\", parentTable).toggleClass(\"hidden\", $(\"[data-parentid]\", this).length > 0);\r\n };\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n const ELEM = '[data-fd=\"autocomplete\"]';\r\n const DELAY = 800; // Milliseconds\r\n const LANGUAGETYPE = [\r\n \"English\",\r\n \"Spanish\",\r\n \"Chinese\",\r\n \"Hungarian\",\r\n \"Slovakian\"\r\n ]\r\n const URL = \"/Common/Common/\";\r\n var eventsWired = false;\r\n\r\n var ACTYPE = {\r\n NONE: -1,\r\n USER: 1,\r\n CELL: 2,\r\n DIVISION: 3,\r\n CR: 4,\r\n DIVISIONCELLUSER: 5,\r\n DIVISIONCELLCR: 6,\r\n DIVISIONCELL: 7,\r\n DIVISIONCELLCRUSER: 8,\r\n MONTHLYMETRIC: 9,\r\n COMPANY: 10,\r\n COMPANYLOCATION: 11,\r\n UNIVERSALUSER: 12,\r\n PROJECTLIST: 13,\r\n FOCUSFACTORY: 14,\r\n SUPERCELL: 15,\r\n MACHINE: 16,\r\n STATION: 17,\r\n CUSTOMER: 18,\r\n VIEWID: 19,\r\n CRMENTOR: 20,\r\n INNOTECPART: 21,\r\n CUSTOMERPART: 22,\r\n NONFAILUREINTERVENTION: 23,\r\n DOWNTIMEISSUE: 24,\r\n MANUALPROCESS: 25,\r\n SCRAPDEFECT: 26,\r\n TAG: 27,\r\n EIGHTD: 28,\r\n TECHNICALCR: 29,\r\n CONTACT: 30,\r\n DOWNTIMEWARNING: 31,\r\n SPAREPARTLOCATION: 32,\r\n FOXENTITY: 33,\r\n USERCOMPLETELIST: 34,\r\n PROJECTENTITYLIST: 35,\r\n PROJECTMETRICACCOUNTS: 36,\r\n OTEACCOUNTS: 37,\r\n DIVISIONFOCUSFACTORYCELL: 38,\r\n INNOTECDIVISIONCELLCRUSER: 39,\r\n TRAININGMATRIXPLAYLIST: 40,\r\n DIVISIONGROUPDIVISIONFOCUSFACTORYSUPERCELLCELLMACHINESTATION: 41,\r\n MPTUSERS: 42,\r\n DIVISIONFOCUSFACTORY: 43,\r\n MANUALLABORCOMPANYLOCATION: 44,\r\n BOTRESPOSIBILITYPARENT: 45,\r\n ONEPPRESPOSIBILITYPARENT: 46,\r\n ONEPP_RESPONSIBILITY_ALL: 47,\r\n MPTUSERS_WITHCOMPANY: 48,\r\n JOB: 49,\r\n CONTPAQ_PRODUCTS: 50,\r\n USERS_EXCEPT_FULLTIME: 51,\r\n UNLINKED_SPARE_PART_PARTS: 52,\r\n UNLINKED_CONTPAQ_PRODUCTS: 53,\r\n PURCHASED_MATERIAL: 55,\r\n NON_CONTPAQ_VENDORS: 56,\r\n CONTPAQ_VENDORS_ONLY: 57,\r\n TRAINING_MATRIX_TEMPLATE: 59,\r\n JOB_EXCLUDE_LINKED: 60,\r\n TRAINING_MATRIX_ENTITY: 61,\r\n COMPANY_LOCATIONS_WITH_BOM: 62,\r\n COMPANY_LOCATIONS_WITH_SALES_ORDER: 63,\r\n NON_CUSTOMER_LOCATION: 64,\r\n LEARNING_SUITE_RESOURCE_TASKS: 65,\r\n CHILD_ACCOUNT: 66,\r\n JOB_BY_USER: 68,\r\n SHIPTO: 69,\r\n COMPANY_LOCATIONS_WITH_BOM_SHIPTO: 70,\r\n DIVISON_EXCLUDE_CORPORATE_DIVSISIONS: 71,\r\n FOCUS_FACTORY_EXCLUDE_CORPORATE_DIVISIONS: 72,\r\n SUPER_CELL_EXCLUDE_CORPORATE_DIVISIONS: 73,\r\n NON_SUPPLIER_LOCATION: 74,\r\n NON_CUSTOMER_SUPPLIER_LOCATION: 75,\r\n INTERNALPARTS_WITHOUT_SAME_CELL: 76,\r\n PONUMBER: 77,\r\n PDT_PROJECT_NUMBER: 78,\r\n SHIPTO_AND_CELL_LIST: 79,\r\n PROJECT_COLLECTION: 80,\r\n PACKAGING_MATERIAL: 81,\r\n MATERIALPO_CONTPAQ_PRODUCTS: 82,\r\n INNOTECPART_WITHOUT_CELLNAME: 83,\r\n NON_PACKAGING_PURCHASED_MATERIAL: 84,\r\n PROJECT_TASK_ENTITY: 85,\r\n PURCHASED_MATERIAL_FROM_PACKAGING: 86,\r\n COMPANY_WITH_ELECTRONIC_MANUFACTURER: 87,\r\n COMPANY_LOCATION_AND_CELLLIST: 88,\r\n CR_AND_USER: 89,\r\n EIGHTD_WITH_NAME: 92,\r\n MACHINE_PART: 93,\r\n CUSTOMERPART_WITH_SHIPTO_DESCRIPTION: 94,\r\n CUSTOMERPART_BY_SALESORDER: 95,\r\n };\r\n\r\n $.widget(\"custom.autocomplete2\", {\r\n _active: false,\r\n _isSelect: false,\r\n _hiddenItem: null,\r\n _clearItem: null,\r\n\r\n options: {\r\n useparent: true,\r\n parentid: -1,\r\n callback: 'PAGE.getAfterControlEvent', // default\r\n tag: 500,\r\n noedit: false,\r\n height: 200, // height of the dropdown\r\n type: ACTYPE.USER, // actype\r\n fieldafter: '', // field to put value after change\r\n clearexit: false,\r\n usesubpage: false,\r\n useparent: true,\r\n flip: false,\r\n initial: \"\",\r\n clearbtn: false,\r\n clearonload: false,\r\n searchparams: '', // extra filter to apply on search\r\n name: '' // Add a hidden filed with the string value (for form postbacks)\r\n },\r\n _create: function () {\r\n $.extend(this.options, this.element.data());\r\n\r\n if (!eventsWired) {\r\n $(document)\r\n .on('focus.ac,click.ac', ELEM, this._handleFocusClick)\r\n .on('blur.ac', ELEM, this._handleBlur)\r\n .on('keyup.ac', ELEM, this._handleKeyUp)\r\n .on('click', '.autocomplete-clearbtn', this._handleClickClear);\r\n\r\n eventsWired = true;\r\n }\r\n\r\n me.setControlItemOptions(this.element, this.options);\r\n\r\n this._hiddenItem = $(\"\").attr({\r\n type: \"hidden\",\r\n name: this.element.attr('name'),\r\n value: this.options.value ? this.options.value : this.options.initial\r\n });\r\n\r\n\r\n // Use the original import to post the string value for postbacks.\r\n if (this.options.name) {\r\n this.element.attr(\"name\", this.options.name);\r\n } else {\r\n this.element.removeAttr(\"name\");\r\n }\r\n\r\n this.element.data('update', 'ignore');\r\n this.element.after(this._hiddenItem);\r\n this.options.type = this.options.type.toLowerCase();\r\n\r\n\r\n if (this.options.usesubpage) {\r\n this.options.callback = 'PAGE.SUBPAGE.getAfterControlEvent';\r\n }\r\n\r\n // if use parent\r\n if (this.options.useparent) {\r\n var parent = this.element.closest('[data-parent=true]');\r\n this.options.parentid = parent.data(\"parentid\");\r\n var parentCallBack = me.setCallBackPrefix(parent.data('callbackprefix'));\r\n if (parentCallBack !== undefined) {\r\n this.options.callback = parentCallBack;\r\n }\r\n }\r\n\r\n if (this.options.noedit) {\r\n this.element.attr('readonly', true).css({ cursor: 'default' });\r\n }\r\n\r\n if (this.options.clearbtn) {\r\n this._clearItem = $('')\r\n .addClass('fa fa-fw fa-ban autocomplete-clearbtn')\r\n .css(\"cursor\", \"pointer\");\r\n this.element.after(this._clearItem);\r\n }\r\n\r\n if (this.options.clearonload) {\r\n this.options.clearonload = false;\r\n this.element.val(\"\").data(\"clearonload\", false).attr(\"data-clearonload\", false);\r\n this._hiddenItem.val(\"\");\r\n }\r\n\r\n // Create the autocomplete\r\n var position = this.options.flip ? {\r\n my: \"left bottom\",\r\n at: \"left top\",\r\n collision: \"flip\"\r\n } : {\r\n my: \"left top\",\r\n at: \"left bottom\",\r\n collision: \"flip\"\r\n };\r\n var self = this;\r\n\r\n this.element.autocomplete({\r\n minLength: 1,\r\n delay: DELAY,\r\n autoSelect: true,\r\n autoFocus: true,\r\n focus: () => false, // dont fill input with highlighted value\r\n source: function (request, response) {\r\n if (request.term.trim().length < 2) {\r\n return;\r\n }\r\n\r\n var inputProps = {\r\n searchTerm: me.setHtmlEncode(request.term.trim()),\r\n searchParams: self.options.searchparams ? self.options.searchparams.toString().split(',') : [],\r\n autoCompleteType: ACTYPE[self.options.type.toUpperCase()]\r\n };\r\n\r\n // lock screen [prevent page scroll]\r\n $('body').addClass('out');\r\n\r\n // get source\r\n var options = {\r\n params: inputProps,\r\n url: URL + 'GetAutoCompleteByType',\r\n callback: (data) => self._getDataSourceResult.call(self, data.data, response),\r\n isloader: true\r\n };\r\n me.AJAX.setAJAX(options);\r\n },\r\n select: function (event, ui) {\r\n event.stopPropagation();\r\n self._activate = true;\r\n self._isSelect = true;\r\n self.element.val(ui.item.label);\r\n\r\n // callback\r\n self.options.value = ui.item.value;\r\n self.element.attr(\"data-value\", ui.item.value);\r\n self._hiddenItem.val(ui.item.value);\r\n var result = {\r\n e: self.element,\r\n value: ui.item.value,\r\n tag: self.options.tag,\r\n fieldafter: self.options.fieldafter,\r\n parentid: self.options.parentid,\r\n label: ui.item.label,\r\n initial: self.options.initial || null,\r\n raw: ui.item\r\n };\r\n\r\n switch (ui.item.acType) {\r\n case ACTYPE.TRAINING_MATRIX_ENTITY:\r\n result.entityType = ui.item.entityType;\r\n result.isCustomUserGroup = ui.item.isCustomUserGroup;\r\n break;\r\n default:\r\n result.usertype = ui.item.usertype || null;\r\n result.guid = ui.item.guid;\r\n result.isCumulative = ui.item.isCumulative;\r\n break;\r\n }\r\n self.element.data(self.options);\r\n me.setCallBackFromData(self.element, result);\r\n // Make sure the update happens on initial selection.\r\n self.element.trigger('blur');\r\n self._hiddenItem.trigger('change')\r\n return false;\r\n },\r\n close: function (event) {\r\n self._activate = true;\r\n $('body').removeClass('out');\r\n if (!self._isSelect) {\r\n self.element.val(self.options.initial);\r\n }\r\n self._isSelect = false;\r\n\r\n if (self.options.clearexit) {\r\n self.element.val('').focus();\r\n }\r\n },\r\n position: position\r\n }).autocomplete(\"instance\")._renderItem = function (ul, item) {\r\n ul.css({\r\n 'max-height': self.options.height + 'px',\r\n 'overflow-y': 'auto',\r\n 'overflow-x': 'hidden'\r\n });\r\n\r\n var entityType = item.entitytype;\r\n\r\n if (entityType === ACTYPE.USER || entityType === ACTYPE.USERCOMPLETELIST) {\r\n var image = item.userImage;\r\n var style = \" background-image:url(\" + image + \");\";\r\n\r\n if (item.guid === undefined) {\r\n style = '';\r\n }\r\n return $(\"
  • \")\r\n .append(\"
    \" + item.label + \"
    \")\r\n .appendTo(ul);\r\n }\r\n\r\n return $(\"
  • \")\r\n .append(\"
    \" + item.label + \"
    \")\r\n .appendTo(ul);\r\n };\r\n\r\n this.element.data(this.options);\r\n this.element.addClass(\"autocomplete\");\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.element.data(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n this.element.attr({\r\n 'data-tag': this.options.tag,\r\n 'data-noedit': this.options.noedit\r\n });\r\n this.element.attr('disabled', this.options.noedit);\r\n },\r\n attach: function (self) {\r\n this.element = self;\r\n },\r\n _destroy: function () {\r\n },\r\n\r\n _handleFocusClick: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customAutocomplete2');\r\n self.options.initial = self.element.val();\r\n self.element.val('');\r\n },\r\n _handleBlur: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customAutocomplete2');\r\n if (!self._activate) {\r\n self.element.val(self.options.initial);\r\n }\r\n self._activate = false;\r\n },\r\n _handleKeyUp: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customAutocomplete2');\r\n\r\n if (Number(event.which) === 27 || Number(event.keyCode) === 27) {\r\n self.element.val(self.options.initial);\r\n return;\r\n }\r\n },\r\n _handleClickClear: function (event) {\r\n var self = $(event.target).prev().data('customAutocomplete2');\r\n\r\n if (!self.options.parentid) {\r\n self.options.parentid = self.element.closest('[data-parent=\"true\"]').data('parentid');\r\n }\r\n\r\n if (self.element.val()) {\r\n self.options.value = '';\r\n self.element.val('').data('value', '');\r\n var result = {\r\n e: self.element,\r\n value: -1,\r\n usertype: null,\r\n guid: null,\r\n tag: self.options.tag,\r\n parentid: self.options.parentid,\r\n fieldafter: self.options.fieldafter,\r\n initial: self.options.initial,\r\n label: null\r\n };\r\n me.setCallBackFromData(self.element, result);\r\n self.element.data(self.options);\r\n self._hiddenItem.val(-1).trigger('change');\r\n self.element.trigger('change');\r\n }\r\n },\r\n\r\n _getDataSourceResult: function (result, response) {\r\n\r\n switch (ACTYPE[this.options.type.toUpperCase()]) {\r\n case ACTYPE.COMPANY:\r\n case ACTYPE.COMPANY_WITH_ELECTRONIC_MANUFACTURER:\r\n case ACTYPE.TRAINING_MATRIX_TEMPLATE:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.MANUALLABORCOMPANYLOCATION:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.BOTRESPOSIBILITYPARENT:\r\n case ACTYPE.ONEPPRESPOSIBILITYPARENT:\r\n case ACTYPE.INTERNALPARTS_WITHOUT_SAME_CELL:\r\n case ACTYPE.INNOTECPART_WITHOUT_CELLNAME:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.StandardName,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.UNIVERSALUSER:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n usertype: item.UserType,\r\n userImage: item.UserImage\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PROJECTLIST:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.ManagedName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ManagedID,\r\n usertype: null,\r\n userImage: item.UserImage\r\n };\r\n }));\r\n break;\r\n case ACTYPE.FOCUSFACTORY:\r\n case ACTYPE.FOCUS_FACTORY_EXCLUDE_CORPORATE_DIVISIONS:\r\n case ACTYPE.SUPERCELL:\r\n case ACTYPE.SUPER_CELL_EXCLUDE_CORPORATE_DIVISIONS:\r\n case ACTYPE.MACHINE:\r\n case ACTYPE.STATION:\r\n case ACTYPE.CRMENTOR:\r\n case ACTYPE.INNOTECPART:\r\n case ACTYPE.CUSTOMERPART:\r\n case ACTYPE.MANUALPROCESS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.DisplayName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ManagedID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.VIEWID:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.DisplayName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PROJECTENTITYLIST: // custom entity list in Projects application\r\n case ACTYPE.PROJECTMETRICACCOUNTS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: item.EntityType,\r\n label: item.StandardName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.NONFAILUREINTERVENTION:\r\n case ACTYPE.DOWNTIMEISSUE:\r\n case ACTYPE.DOWNTIMEWARNING:\r\n case ACTYPE.SCRAPDEFECT:\r\n case ACTYPE.UNLINKED_CONTPAQ_PRODUCTS:\r\n case ACTYPE.UNLINKED_SPARE_PART_PARTS:\r\n case ACTYPE.COMPANY_LOCATIONS_WITH_SALES_ORDER:\r\n case ACTYPE.PONUMBER:\r\n \r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.MATERIALPO_CONTPAQ_PRODUCTS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.StandardName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null,\r\n purchasedMaterialID: item.PurchasedMaterialID,\r\n accountID: item.AccountID,\r\n unitType: item.UnitType,\r\n parentAccountID: item.ParentAccountID,\r\n firmZoneDays: item.FirmZoneDays,\r\n currencyType: item.CurrencyType,\r\n unitPrice: item.UnitPrice,\r\n costerCost: item.CosterCost,\r\n standardCost: item.StandardCost,\r\n };\r\n }));\r\n break;\r\n case ACTYPE.MACHINE_PART:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.PartName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.PartID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.TAG:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Title,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.EIGHTD:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.ID8D,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID8D,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.TECHNICALCR:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.EntityName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.EntityID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CONTACT:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.ParentChildName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.EIGHTD_WITH_NAME:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.ShortDescription,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.D8DID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.SPAREPARTLOCATION:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.LocationName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.LocationID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.OTEACCOUNTS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.AccountName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.AccountID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.TRAININGMATRIXPLAYLIST:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Title,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CONTPAQ_PRODUCTS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.StandardName,\r\n contpaqProductID: item.ContpaqProductID,\r\n contpaqName: item.Name,\r\n purchasedMaterialID: item.PurchasedMaterialID,\r\n accountID: item.AccountID,\r\n parentAccountID: item.ParentAccountID,\r\n unitPrice: item.UnitPrice,\r\n unitType: item.UnitType,\r\n packageQty: item.PackageQty,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n };\r\n }));\r\n break;\r\n case ACTYPE.JOB:\r\n case ACTYPE.JOB_EXCLUDE_LINKED:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.JobName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.JobID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PURCHASED_MATERIAL:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.PartNumberWithRevision,\r\n value: item.ID,\r\n description: item.Description,\r\n unitType: item.UnitOfMeasureID,\r\n vendorPartNumber: item.VendorPartNumber,\r\n currencyType: +item.CurrencyId,\r\n costerCost: item.CosterCost,\r\n standardCost: item.StandardCost,\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CONTPAQ_VENDORS_ONLY:\r\n case ACTYPE.COMPANYLOCATION:\r\n case ACTYPE.NON_CONTPAQ_VENDORS:\r\n case ACTYPE.COMPANY_LOCATIONS_WITH_BOM:\r\n case ACTYPE.COMPANY_LOCATIONS_WITH_BOM_SHIPTO:\r\n case ACTYPE.NON_CUSTOMER_LOCATION:\r\n case ACTYPE.NON_SUPPLIER_LOCATION:\r\n case ACTYPE.NON_CUSTOMER_SUPPLIER_LOCATION:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.DisplayName,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n usertype: item.IsContpaqVendor,\r\n userImage: item.UserImage,\r\n isCumulative: item.IsCumulative\r\n };\r\n }));\r\n break;\r\n case ACTYPE.SHIPTO:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.DisplayName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null,\r\n };\r\n }));\r\n break;\r\n case ACTYPE.TRAINING_MATRIX_ENTITY:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n initial: null,\r\n value: item.ID,\r\n entitytype: item.EntityType,\r\n isCustomUserGroup: item.IsCustomUserGroup,\r\n acType: ACTYPE.TRAINING_MATRIX_ENTITY\r\n };\r\n }));\r\n break;\r\n case ACTYPE.SHIPTO_AND_CELL_LIST:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.NameWithParent,\r\n value: item.ID,\r\n entitytype: item.EntityType\r\n };\r\n }));\r\n break;\r\n case ACTYPE.LEARNING_SUITE_RESOURCE_TASKS:\r\n response($.map(result, function (item) {\r\n var translationLabels = me.getLabel();\r\n return {\r\n label: item.Name + ' [' + translationLabels[LANGUAGETYPE[item.LanguageType - 1]] + ']',\r\n guid: null,\r\n initial: null,\r\n value: item.ID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CHILD_ACCOUNT:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.AccountName,\r\n value: item.AccountID,\r\n parentid: item.ParentAccountID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.JOB_BY_USER:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.JobNameWithType,\r\n value: item.JobID,\r\n jobidtype: item.JobIDType,\r\n jobtype: item.JobType,\r\n foxitemid: item.FOXItemID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PDT_PROJECT_NUMBER:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.PDTProjectNumber + \": \" + item.Name,\r\n value: item.PDTProjectNumber\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PROJECT_COLLECTION:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n value: item.ID\r\n };\r\n }));\r\n break; \r\n case ACTYPE.PACKAGING_MATERIAL:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.PartNumber,\r\n value: item.ID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.NON_PACKAGING_PURCHASED_MATERIAL:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.PartNumber,\r\n value: item.ID\r\n };\r\n }));\r\n break;\r\n\r\n case ACTYPE.PROJECT_TASK_ENTITY:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n value: item.ID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PURCHASED_MATERIAL_FROM_PACKAGING:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n value: item.ID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.COMPANY_LOCATION_AND_CELLLIST:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n value: item.ID,\r\n entitytype: item.EntityType\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CR_AND_USER:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.EntityName,\r\n value: item.EntityID,\r\n entitytype: item.EntityType\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CUSTOMERPART_WITH_SHIPTO_DESCRIPTION:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.EntityName,\r\n value: item.EntityID\r\n };\r\n }));\r\n break;\r\n default:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: item.EntityType,\r\n label: item.StandardName,\r\n guid: item.GUID,\r\n initial: item.Initial,\r\n value: item.ID,\r\n userImage: item.UserImage,\r\n salaryType: item.SalaryType,\r\n email : item.Email\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CUSTOMERPART_BY_SALESORDER:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.CustomerPartNumber + ' ' + item.CustomerPartDescription,\r\n value: item.ID,\r\n };\r\n }));\r\n break;\r\n }\r\n }\r\n });\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set autocomplete\r\n child.setAutoComplete = function (container) {\r\n var list = '';\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n $(list).autocomplete2();\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n // element\r\n var ELEM = '[data-fd=\"button\"]';\r\n var eventsWired = false;\r\n\r\n $.widget(\"custom.button\", {\r\n _delay: false,\r\n _buttonItem: null,\r\n _deleteItem: null,\r\n\r\n options: {\r\n useparent: true,\r\n parentid: -1,\r\n type: 'click', // click, formdelete, rowedit, tabmenu, controlbardelete, lidelete, modaldelete, modalconfirm, toggle, showhide\r\n callbackprefix: 1,\r\n tag: 700,\r\n target: '', // used in show/hide\r\n show: true, // used in show/hide\r\n showonload: false, // used in show/hide\r\n noedit: false,\r\n stoppropagation: false,\r\n value: true,\r\n lockfor: 1000\r\n },\r\n _create: function () {\r\n $.extend(this.options, this.element.data());\r\n\r\n if (!eventsWired) {\r\n $(document)\r\n .on('click', ELEM, this._handleClick)\r\n .on('keydown', ELEM, this._handleKeyDown)\r\n .on('click', '[data-type=cancel-delete],[data-cancel=true]', this._handleHideDelete)\r\n .on('click', '[data-type=confirm-delete],[data-delete=true]', this._handleConfirm);\r\n\r\n eventsWired = true;\r\n }\r\n\r\n me.setControlItemOptions(this.element, this.options);\r\n\r\n if (this.options.noedit) {\r\n this.element.attr('disabled', true).css({ cursor: 'default' });\r\n } else {\r\n this.element.css({ cursor: 'pointer' });\r\n }\r\n\r\n if (this.options.showonload) {\r\n this._setShowHide();\r\n }\r\n\r\n if (this.options.type == 'toggle') {\r\n this.element.find('.btn-toggle-indicator').remove();\r\n if (this.element.find('.fa').length == 0) {\r\n this.element.prepend($(\"\"));\r\n }\r\n }\r\n\r\n this.element.addClass(\"button\");\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.element.data(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n this.element.attr({\r\n 'data-tag': this.options.tag,\r\n 'data-noedit': this.options.noedit\r\n });\r\n this.element.attr('disabled', this.options.noedit);\r\n if (this.options.type == 'toggle') {\r\n this.element.toggleClass(\"active btn-success\", this.options.value).toggleClass(\"btn-secondary\", !this.options.value);\r\n this.element.find('i').toggleClass(\"fa-check-square-o\", this.options.value).toggleClass(\"fa-square-o\", !this.options.value);\r\n }\r\n },\r\n attach: function (self) {\r\n this.element = self;\r\n },\r\n _destroy: function () {\r\n },\r\n\r\n _handleClick: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customButton');\r\n if (!self )\r\n return;\r\n\r\n if (self.options.noedit ||\r\n $(event.target).closest('a').is(\"[data-ajax=true]\") ||\r\n self.element.is(\"[data-ajax=true]\") || self.element.attr('disabled') ||\r\n self.element.is('.locked')) {\r\n return;\r\n }\r\n\r\n switch (self.options.type) {\r\n case 'formdelete':\r\n self._setFormDelete(event);\r\n break;\r\n case 'showhide':\r\n self._setShowHide(event);\r\n break;\r\n case 'rowedit':\r\n self._setRowEdit(event);\r\n break;\r\n case 'tabmenu':\r\n self._setTabMenu(event);\r\n break;\r\n case 'controlbardelete':\r\n self._setControlBarDelete(event, 'ul');\r\n break;\r\n case 'lidelete':\r\n self._setControlBarDelete(event, 'li');\r\n break;\r\n case 'modaldelete':\r\n self._setModalConfirm(event, 'delete');\r\n break;\r\n case 'modalconfirm':\r\n self._setModalConfirm(event, 'confirm');\r\n break;\r\n case 'toggle':\r\n self._setToggle(event);\r\n break;\r\n default:\r\n self._setCallback(event);\r\n break;\r\n }\r\n\r\n if (self.options.stoppropagation) {\r\n event.stopPropagation();\r\n }\r\n },\r\n _handleKeyDown: function (event) {\r\n if (event.which === 13 || event.keyCode === 13) {\r\n $(event.target).trigger('click');\r\n }\r\n },\r\n\r\n // type=formdelete\r\n _setFormDelete: function (event) {\r\n var self = this;\r\n var parent = this.element.closest(\"ul\");\r\n\r\n if (parent.length === 0) {\r\n return;\r\n }\r\n\r\n this._buttonItem = parent.find('[data-row1=\"true\"]');\r\n this._deleteItem = parent.find('[data-row2=\"true\"]');\r\n this._delay = false;\r\n this._buttonItem.addClass('hidden');\r\n this._deleteItem.css('opacity', 0).removeClass('hidden').animate({ opacity: 1 }, 600);\r\n\r\n if (this._delay) {\r\n clearTimeout(this._delay);\r\n }\r\n this._delay = setTimeout(function () {\r\n self._hideDelete();\r\n }, 6000);\r\n },\r\n\r\n _hideDelete: function () {\r\n if (!this._delay) {\r\n return;\r\n }\r\n if (this.options.type == 'formdelete') {\r\n this._deleteItem.addClass('hidden');\r\n } else {\r\n this._deleteItem.remove();\r\n }\r\n this._buttonItem.css('opacity', 0).removeClass('hidden').animate({ opacity: 1 }, 600);\r\n this._delay = false;\r\n },\r\n _handleHideDelete: function (event) {\r\n var self = $(event.target).closest('[data-cbhelper=true]').length > 0\r\n ? $(event.target).closest(\"[data-cbhelper=true]\").data('customButton')\r\n : ($(event.target).closest(\".btn-group\").length > 0\r\n ? $(event.target).closest(\".btn-group\").prev(ELEM).data('customButton')\r\n : $(event.target).closest('ul').find('[data-type=formdelete]').data('customButton'));\r\n self._hideDelete();\r\n },\r\n _handleConfirm: function () {\r\n var self = $(event.target).closest('[data-cbhelper=true]').length > 0\r\n ? $(event.target).closest(\"[data-cbhelper=true]\").data('customButton')\r\n : ($(event.target).closest(\".btn-group\").length > 0\r\n ? $(event.target).closest(\".btn-group\").prev(ELEM).data('customButton')\r\n : $(event.target).closest('ul').find('[data-type=formdelete]').data('customButton'));\r\n self._hideDelete();\r\n self._setCallback();\r\n },\r\n\r\n\r\n // type=showhide\r\n _setShowHide: function () {\r\n if (this.options.target.length === 0) return;\r\n\r\n this.options.target.toggleClass('hidden', this.options.show);\r\n this.options.show = !this.options.show;\r\n this.element.data(this.options);\r\n\r\n this.element.button('option', 'show', !this.options.show);\r\n },\r\n\r\n // type=rowedit\r\n _setRowEdit: function (event) {\r\n var td = this.element.closest('td');\r\n var table = td.closest('table');\r\n\r\n table.find('tr td:first-child').removeClass('bg-highlight');\r\n td.addClass('bg-highlight');\r\n\r\n this._setCallback();\r\n },\r\n\r\n // type=tabmenu\r\n _setTabMenu: function (event) {\r\n var ul = this.element.parents('ul');\r\n\r\n ul.children('li').removeClass('active');\r\n this.element.parents('li').addClass('active');\r\n\r\n this._setCallback();\r\n },\r\n\r\n // type=conrolbardelete|lidelete\r\n _setControlBarDelete: function (event, target) {\r\n var self = this;\r\n var parent = target == 'li' ? this.element.closest(target) : this.element.parents(target).first();\r\n if (parent.hasClass(\"hidden\")) {\r\n return;\r\n }\r\n\r\n this._delay = false;\r\n\r\n if (parent.length === 0) {\r\n return;\r\n }\r\n\r\n var gParent = parent.parent();\r\n var aR = [];\r\n aR.push(\r\n \"\"\r\n );\r\n\r\n parent.addClass('hidden');\r\n if (target == 'li') {\r\n parent.after(aR.join(''));\r\n } else {\r\n gParent.append(aR.join(''));\r\n }\r\n\r\n this._buttonItem = parent;\r\n this._deleteItem = target == 'li' ? parent.next() : gParent.find('[data-cbhelper=true]');\r\n this._deleteItem.data('customButton', this);\r\n\r\n if (this._delay) {\r\n clearTimeout(this._delay);\r\n }\r\n this._delay = setTimeout(function () {\r\n self._hideDelete();\r\n }, 6000);\r\n },\r\n\r\n // type=modaldelete|modalconfirm\r\n _setModalConfirm: function (event, type) {\r\n var self = this;\r\n var parent = this.element.closest('ul').first();\r\n this._delay = false;\r\n\r\n if (parent.length === 0) {\r\n return;\r\n }\r\n var gParent = parent.parent();\r\n var aR = [];\r\n aR.push(\r\n \"\"\r\n );\r\n\r\n parent.addClass('hidden');\r\n gParent.append(aR.join(''));\r\n\r\n this._buttonItem = parent;\r\n this._deleteItem = gParent.find('[data-cbhelper=true]');\r\n this._deleteItem.data('customButton', this);\r\n\r\n if (this._delay) {\r\n clearTimeout(this._delay);\r\n }\r\n this._delay = setTimeout(function () {\r\n self._hideDelete();\r\n }, 6000);\r\n },\r\n\r\n // type=set toggle\r\n _setToggle: function () {\r\n this.options.value = !this.element.hasClass('active');\r\n this.element.data('value', this.options.value);\r\n this.refresh();\r\n\r\n this._setCallback();\r\n },\r\n\r\n _setCallback: function () {\r\n if (this.options.lockfor > 0) {\r\n const lockedBtn = this.element;\r\n lockedBtn.addClass('locked');\r\n setTimeout(() => {\r\n lockedBtn.removeClass('locked');\r\n }, this.options.lockfor);\r\n }\r\n\r\n me.setCallBackFromData(this.element, {\r\n e: this.element,\r\n value: this.options.value,\r\n tag: this.options.tag,\r\n parentid: this.options.parentid\r\n });\r\n }\r\n });\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set button\r\n child.setButton = function (wireEvent, container) {\r\n var list = '';\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n $(list).button();\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: --\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * calendar plugin\r\n * ======================================================================== \r\n * 7/20/2016: creation\r\n*/\r\n\r\nFD.PLUGIN = (function ($, me) {\r\n 'use strict';\r\n\r\n var pluginName = 'FDCalendar';\r\n\r\n var defaults = {\r\n displayDate: new Date(),\r\n dayHeight: '80px',\r\n onFoo: function () { },\r\n dataAR: []\r\n };\r\n\r\n // object fdCalendar\r\n function FDCalendar(element, options) {\r\n this._elem = $(element); \r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n this._dayAR = [];\r\n this._htmlAR = [];\r\n\r\n // handle options\r\n if (options) { }\r\n\r\n this.options = $.extend({}, defaults, options);\r\n this.startDate = this.options.displayDate;\r\n\r\n this._buildDayArray();\r\n this._drawCalendar();\r\n this._convertData();\r\n this._initCalendar();\r\n }\r\n\r\n\r\n // the calendar\r\n FDCalendar.prototype = {\r\n\r\n // build the day array for the month showing\r\n _buildDayArray: function () {\r\n this._dayAR = [];\r\n var firstDate = new Date(this.startDate.getFullYear(), this.startDate.getMonth(), 1);\r\n var firstDayNum = firstDate.getFirstDayNumber();\r\n if (firstDayNum === 0) firstDayNum = 7;\r\n\r\n var startDate = firstDate.setDate(firstDate.getDate() - firstDayNum);\r\n\r\n for (var i = 0; i < 42; i++) {\r\n var temp = new Date(startDate);\r\n var curDate = new Date(temp.addDay(i));\r\n var item = {\r\n theDate: curDate,\r\n dayNumber: curDate.getDate(),\r\n isTodayClass: (curDate.isEqual(new Date())) ? \"day-cell-today\" : \"\",\r\n dayClass: (curDate.getMonth() !== this.startDate.getMonth()) ? \"day-cell-extra\" : \"day-cell\"\r\n };\r\n\r\n this._dayAR.push(item);\r\n }\r\n },\r\n\r\n\r\n // draw the calendar\r\n _drawCalendar: function(){\r\n this._htmlAR.push(\r\n \"
    \",\r\n \"
    \",\r\n \"
    \"\r\n );\r\n\r\n this._htmlAR.push(\r\n \"
    \",\r\n \"
      \",\r\n \"
    • \" + this.startDate.getMonthDateFriendlyFull() + \"

    • \",\r\n \"
    \",\r\n \"
      \",\r\n \"
    • \",\r\n \"
    • \",\r\n \"
    • \",\r\n \"
    \",\r\n \"
    \",\r\n \"
    \"\r\n );\r\n\r\n this._htmlAR.push(\r\n \"
    \",\r\n \"
    \",\r\n \"
    \"\r\n );\r\n\r\n this._elem.html(this._htmlAR.join(''));\r\n },\r\n\r\n\r\n // convert the dates from SQL\r\n _convertData: function () {\r\n var aR = [];\r\n\r\n for (var i = 0, len = this.options.dataAR.length; i < len; i++) {\r\n var d = this.options.dataAR[i];\r\n const mDate = moment(d.DateValueString, 'MM-DD-YYYY');\r\n const theDate = mDate.utc().toDate();\r\n\r\n aR.push(theDate);\r\n }\r\n\r\n this.options.dataAR = aR;\r\n },\r\n\r\n // find if date is active\r\n _getIsActive: function (checkDate) { \r\n for (var i = 0, len = this.options.dataAR.length; i < len; i++) {\r\n var d = this.options.dataAR[i]; \r\n if (checkDate.theDate.isEqual(d)) return true; \r\n }\r\n\r\n return false;\r\n },\r\n\r\n\r\n // init calendar\r\n _initCalendar: function () {\r\n var result = [];\r\n result.push(\"
      \");\r\n\r\n for (var i = 0, len = this._dayAR.length; i < len; i++) {\r\n var d = this._dayAR[i];\r\n var isActive = (this._getIsActive(d)) ? 'active' : '';\r\n\r\n result.push(\r\n \"
    • \",\r\n \"
      \",\r\n \"\" + d.dayNumber + \"\",\r\n \"
      \",\r\n \"
    • \"\r\n );\r\n }\r\n result.push(\"
    \");\r\n\r\n $('#CALENDAR_DATA').html(result.join(''));\r\n },\r\n\r\n\r\n // \r\n MakeCalendar: function (theDate, data) {\r\n this.startDate = theDate;\r\n this.options.dataAR = data;\r\n this._buildDayArray();\r\n this._convertData();\r\n this._initCalendar();\r\n \r\n $('#CALENDAR_DATE').html(this.startDate.getMonthDateFriendlyFull());\r\n }\r\n };\r\n\r\n\r\n // attach plugin\r\n $.fn[pluginName] = function (options) {\r\n \r\n var result = this.each(function () {\r\n if (undefined === $(this).data(pluginName)) {\r\n\r\n var fdCalendar = new FDCalendar(this, options);\r\n\r\n $(this).data(pluginName, fdCalendar);\r\n }\r\n });\r\n\r\n return result;\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return me;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"checkbox\"]';\r\n var eventsAreSet = false;\r\n\r\n // box\r\n var box = {\r\n in: 'fa-check-square-o',\r\n out: 'fa-square-o'\r\n };\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 95,\r\n value: false,\r\n noedit: false,\r\n locked: false\r\n };\r\n\r\n // props\r\n var props = {\r\n reset: function (value) {\r\n var e = $(this.element);\r\n e.data().value = value;\r\n resetCheckBox(e);\r\n }\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set event\r\n $(document).off('click keypress', ELEM)\r\n .on('click.' + NAMESPACE, ELEM, clickCheckBox)\r\n .on('keypress.' + NAMESPACE, ELEM, handleKeypress);\r\n }\r\n\r\n\r\n // get status\r\n function getCheckBox(wireEvent, container) {\r\n var list = [];\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n // bail\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n // wire events\r\n if (wireEvent && !eventsAreSet) {\r\n setEvents();\r\n eventsAreSet = true;\r\n }\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data(), props);\r\n\r\n // custom options\r\n if (typeof options.value === 'string') {\r\n options.value = options.value.getBool();\r\n }\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n // reset\r\n elem.html('').append(\"\");\r\n resetCheckBox(elem);\r\n\r\n // Add hidden input\r\n elem.prepend(\"\");\r\n elem.attr('name', '');\r\n\r\n\r\n // set cursor\r\n if (!options.noedit) {\r\n elem.css({ cursor: 'pointer' });\r\n elem.attr('tabindex', 0);\r\n }\r\n });\r\n }\r\n\r\n\r\n // reset checkbox\r\n function resetCheckBox(e) {\r\n if (!e.data('value')) {\r\n e.children('i').removeClass(box.in).addClass(box.out);\r\n } else {\r\n e.children('i').removeClass(box.out).addClass(box.in);\r\n }\r\n }\r\n\r\n\r\n // click checkbox\r\n function clickCheckBox() {\r\n var e = $(this);\r\n var data = e.data();\r\n if (data.noedit) {\r\n return;\r\n }\r\n\r\n if (!data.locked) {\r\n data.element = e;\r\n data.value = data.value ? false : true;\r\n e.data(data);\r\n e.attr('data-value', data.value);\r\n resetCheckBox(e);\r\n $(\"input\", e).val(data.value).change();\r\n }\r\n\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n }\r\n\r\n function handleKeypress(e) {\r\n if (e.keyCode == 32 || e.charCode == 32) {\r\n clickCheckBox.call(this);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setCheckBox = function (wireEvent, container) {\r\n getCheckBox(wireEvent, container);\r\n\r\n // create update checkbox function\r\n if (!jQuery.isFunction($.fn.updateCheckbox)) {\r\n (function ($) {\r\n $.fn.updateCheckbox = function (options) {\r\n if (options === undefined) {\r\n options = {\r\n value: null,\r\n enable: null\r\n };\r\n }\r\n this.each(function () {\r\n if (!$(this).data('fd').toLowerCase() === \"checkbox\") {\r\n return this;\r\n }\r\n if (options.value !== undefined && options.value !== null) {\r\n $(this).data('value', options.value).attr('data-value', options.value);\r\n }\r\n if (options.enable !== undefined && options.enable !== null) {\r\n $(this).data('noedit', !options.enable).attr('data-noedit', !options.enable).css('cursor', options.enable ? 'pointer' : 'default').attr('tabindex', options.enable ? 0 : \"\");\r\n }\r\n\r\n resetCheckBox($(this));\r\n });\r\n return this;\r\n };\r\n }(jQuery));\r\n }\r\n };\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: CONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * counter box\r\n * ======================================================================== \r\n * 1/15/2016: creation\r\n * 5/2/2016: new parent handler\r\n*/\r\n\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"counter\"]';\r\n\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 52,\r\n value: 1,\r\n noedit: false,\r\n min: 1,\r\n max: 3 \r\n };\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set event\r\n $(document).off('click', ELEM);\r\n $(document).on('click.' + NAMESPACE, ELEM, clickCounter);\r\n }\r\n\r\n\r\n // get counter box\r\n function getCounter(wireEvent, container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') container = $(container);\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n \r\n\r\n // wire events\r\n if (wireEvent) setEvents();\r\n\r\n\r\n // bail\r\n if (list.length === 0) return;\r\n\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n\r\n // set data\r\n elem.data(options);\r\n elem.addClass('counter-container').html('').append(\"\" + options.value + \"\");\r\n\r\n // no edit\r\n if (options.noedit) {\r\n elem.css({ cursor: 'default' });\r\n } else {\r\n elem.css({ cursor: 'pointer' });\r\n }\r\n });\r\n }\r\n\r\n\r\n // click counter\r\n function clickCounter() {\r\n var e = $(this);\r\n e.data().element = e;\r\n\r\n var data = e.data();\r\n\r\n // no edit\r\n if (data.noedit) return;\r\n\r\n var value = data.value;\r\n var min = data.min;\r\n var max = data.max;\r\n \r\n if (value >= max) {\r\n value = min;\r\n } else {\r\n value++;\r\n }\r\n \r\n e.data().value = value;\r\n e.children('span').html(value);\r\n\r\n // callback\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set counter\r\n child.setCounter = function (wireEvent, container) { \r\n getCounter(wireEvent, container);\r\n }\r\n\r\n\r\n \r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));\r\n\r\n","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"datepicker\"]';\r\n var PARENT = '[data-parent=\"true\"]';\r\n var EARLIEST_DATE = new Date('1/1/1753');\r\n var LATEST_DATE = new Date('12/31/9999');\r\n\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 80,\r\n value: '',\r\n\r\n format: 'DateFull',\r\n // 'DateFull': 03/18/2016 \r\n // 'DateVerbose': Fri, Mar 18, 2016 \r\n // 'DateShortMonthYear': Jan, 2016\r\n // 'DateDayMonthNum' : Fri, Mar 18\r\n months: 1,\r\n allownull: false, // datepicker can be empty on load\r\n allowclear: false, // show the button to clear the datepicker\r\n mindate: null, // null | data\r\n maxdate: null, // null | data\r\n showleft: false,\r\n iswhite: false, // uses 'color-white'\r\n noedit: false\r\n };\r\n\r\n var selected = false;\r\n var clickedElement;\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // get datepicker\r\n function getDatePicker(container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n // bail\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n // if allow clear is enabled, allow null needs to be as well\r\n if (options.allowclear) {\r\n options.allownull = true;\r\n }\r\n if (options.noedit) {\r\n elem.prop('disabled', true);\r\n }\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n // set value\r\n setDate(elem);\r\n });\r\n\r\n $(document).off('mousedown.DatepickerElementCheck').on('mousedown.DatepickerElementCheck', function (e) {\r\n clickedElement = e.target;\r\n });\r\n }\r\n\r\n\r\n // set date\r\n function setDate(e) {\r\n var data = e.data();\r\n var value = e.val();\r\n\r\n if (!value || value === \"\") {\r\n if (data.allownull) {\r\n value = null;\r\n } else {\r\n value = new Date();\r\n e.val(value.getDateFriendly());\r\n }\r\n }\r\n\r\n if (value) {\r\n var theDate = new Date(value);\r\n\r\n if (!theDate.isValid() || theDate < EARLIEST_DATE || theDate > LATEST_DATE) {\r\n if (data.value && data.value.length > 0) {\r\n theDate = new Date(data.value);\r\n } if (!theDate.isValid()) {\r\n theDate = new Date();\r\n }\r\n }\r\n\r\n data.value = theDate.getDateFriendly();\r\n\r\n // set date format\r\n setFormat(e);\r\n }\r\n\r\n\r\n if (!data.noedit) {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n var parent = e.parent();\r\n\r\n var colorClass = data.iswhite ? 'color-white' : '';\r\n\r\n // trigger\r\n if (data.showleft) {\r\n parent.find('.fa-calendar').remove();\r\n parent.find('input').before(\"\");\r\n } else {\r\n parent.find('.fa-calendar').remove();\r\n parent.find('input').after(\" \");\r\n }\r\n\r\n\r\n var btn = $('#' + NAMESPACE);\r\n\r\n btn.css({ cursor: 'pointer' });\r\n // set picker\r\n if (!(e.hasClass('hasDatepicker') && e.hasClass('inline-block'))) { // If we're using the inline-block datepicker, we need to prevent the calendar from being drawn twice\r\n e.removeClass('hasDatepicker').datepicker({\r\n numberOfMonths: data.months,\r\n minDate: data.mindate,\r\n maxDate: data.maxdate,\r\n defaultDate: data.value, // sk added 5/11\r\n buttonImageOnly: true,\r\n buttonText: \"\",\r\n showOn: \"both\",\r\n onSelect: function (dT, ui) {\r\n if (e.data('weekdaysonly') && ((new Date(dT)).getDay() === 0 || ((new Date(dT)).getDay() === 6))) {\r\n dT = e.data('value');\r\n }\r\n if (e.data('mondaysonly') && (new Date(dT)).getDay() != 1 ) {\r\n dT = e.data('value');\r\n }\r\n if (e.data('firstdayofmonth') && (new Date(dT)).getDate() != 1) {\r\n dT = e.data('value');\r\n }\r\n e.datepicker('option', 'defaultDate', dT);\r\n e.val(dT);\r\n e.data('value', dT);\r\n setFormat(e);\r\n setCallback(e);\r\n e.trigger('change');\r\n },\r\n beforeShowDay: function (date) {\r\n if (e.data('weekdaysonly')) {\r\n var dayOfWeek = date.getDay();\r\n return [\r\n !(dayOfWeek === 0 || dayOfWeek === 6),\r\n \"\",\r\n \"\"\r\n ];\r\n }\r\n if (e.data('mondaysonly')) {\r\n var dayOfWeek = date.getDay();\r\n return [\r\n (dayOfWeek === 1),\r\n \"\",\r\n \"\"\r\n ];\r\n }\r\n if (e.data('firstdayofmonth')) {\r\n var dayOfMonth = date.getDate();\r\n return [\r\n (dayOfMonth === 1),\r\n \"\",\r\n \"\"\r\n ];\r\n }\r\n return [true, \"\", \"\"];\r\n }\r\n }).on('blur', function (event) {\r\n if (clickedElement.id !== 'ui-datepicker-div' && $(clickedElement).parents(\"#ui-datepicker-div\").size() === 0) {\r\n var theDate;\r\n if (!e.val() || e.val() === \"\") {\r\n if (e.data('allownull')) {\r\n e.data('value', null);\r\n setCallback(e);\r\n return;\r\n } else {\r\n theDate = new Date(e.data('value'));\r\n }\r\n } else {\r\n theDate = new Date(e.datepicker(\"getDate\"));\r\n }\r\n var datestring = theDate.getDateFriendly();\r\n\r\n if (datestring !== e.data('value')) {\r\n var maxDate = e.datepicker(\"option\", \"maxDate\");\r\n var minDate = e.datepicker(\"option\", \"minDate\");\r\n if ((maxDate && theDate > new Date(maxDate)) || (minDate && theDate < new Date(minDate))) {\r\n theDate = new Date(e.data('value'));\r\n } else if (e.data('weekdaysonly') && (theDate.getDay() === 0 || theDate.getDay() === 6)) {\r\n theDate = new Date(e.data('value'));\r\n }\r\n\r\n if (e.data('mondaysonly') && theDate.getDay() != 1) {\r\n theDate = new Date(e.data('value'));\r\n }\r\n if (e.data('firstdayofmonth') && theDate.getDate() != 1) {\r\n theDate = new Date(e.data('value'));\r\n }\r\n\r\n if (!theDate.isValid() || theDate < EARLIEST_DATE || theDate > LATEST_DATE) {\r\n if (e.data('value') && e.data('value').length > 0) {\r\n theDate = new Date(e.data('value'));\r\n } if (!theDate.isValid()) {\r\n theDate = new Date();\r\n }\r\n }\r\n\r\n\r\n datestring = theDate.getDateFriendly();\r\n e.datepicker('setDate', datestring);\r\n e.datepicker('option', 'defaultDate', datestring);\r\n e.data('value', datestring);\r\n setFormat(e);\r\n setCallback(e);\r\n } else {\r\n e.datepicker(\"setDate\", theDate);\r\n setFormat(e);\r\n }\r\n }\r\n });\r\n }\r\n\r\n btn.off('click');\r\n btn.on('click.dp', function () {\r\n e.datepicker('show');\r\n });\r\n\r\n if (data.allowclear) {\r\n parent.find('.fa-ban').remove();\r\n parent.find('.fa-calendar').after(\"\");\r\n\r\n var btnClear = $('#C_' + NAMESPACE);\r\n\r\n btnClear.css({ cursor: 'pointer' });\r\n\r\n btnClear.off('click');\r\n btnClear.on('click.dpc', function () {\r\n e.data('value', null);\r\n e.datepicker('setDate', null);\r\n e.trigger('change');\r\n setCallback(e);\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n // format\r\n function setFormat(e) {\r\n var data = e.data();\r\n var format = data.format.toLowerCase();\r\n var theDate = new Date(e.data('value'));\r\n var elem = data.element;\r\n\r\n switch (format) {\r\n case 'datefull': elem.val(theDate.getDateFriendly());\r\n break;\r\n case 'dateverbose': elem.val(theDate.getFullDateFriendly());\r\n break;\r\n case 'dateshortmonthyear': elem.val(theDate.getMonthDateFriendly());\r\n break;\r\n case 'datedaymonthnum': elem.val(theDate.getDayMonthNum());\r\n break;\r\n default: elem.val(theDate.getDateFriendly());\r\n }\r\n }\r\n\r\n\r\n // set callback\r\n function setCallback(e) {\r\n var data = e.data();\r\n\r\n // callback\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set datepicker\r\n child.setDatePicker = function (container) {\r\n getDatePicker(container);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: CONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * dropdown \r\n * ======================================================================== \r\n * 8/6/2016: creation\r\n*/\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"dropdown\"]';\r\n var PARENT = '[data-parent=\"true\"]';\r\n\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 79,\r\n value: '',\r\n relateditem: '',\r\n noedit: false,\r\n\r\n setdefaultValue: function () {\r\n var e = $(this.element);\r\n var value = e.data('value');\r\n\r\n e.children('li').each(function () {\r\n var a = $(this).find('a');\r\n var aVal = a.data('value');\r\n \r\n if (aVal !== undefined) {\r\n if (value === aVal) $(this).addClass('active');\r\n } \r\n });\r\n }\r\n };\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set event li a\r\n $(document).off('click', '[data-fd=\"dropdown\"] li a');\r\n $(document).on('click.' + NAMESPACE, '[data-fd=\"dropdown\"] li a', function (e) {\r\n var elem = $(this);\r\n var parent = elem.parents('ul').first();\r\n var data = parent.data();\r\n\r\n if (data !== undefined) {\r\n var isDD = data.isddelem;\r\n if (isDD !== undefined) {\r\n var text = elem.html();\r\n var value = elem.data('value') || null;\r\n\r\n // set choice text\r\n data.relateditem.html(text);\r\n\r\n parent.children('li').removeClass('active');\r\n elem.parent('li').addClass('active');\r\n\r\n // value\r\n data.value = value;\r\n parent.data(data);\r\n\r\n // callback\r\n me.setCallBackFromData(parent, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n }\r\n } \r\n });\r\n\r\n\r\n // hidhlight row\r\n $(document).on(\"show.bs.dropdown\", function(event){\r\n var elem = $(event.relatedTarget)\r\n var td = elem.parents('td').first();\r\n\r\n if (td.length) {\r\n var table = elem.parents('table').first();\r\n\r\n if (table.length > 0) {\r\n var row = elem.parents('tr');\r\n table.find('tr').removeClass('highlight-child-withborder');\r\n\r\n row.addClass('highlight-child-withborder');\r\n }\r\n }\r\n });\r\n\r\n $(window).scroll(function () {\r\n $('.dropdown').removeClass('open');\r\n });\r\n }\r\n\r\n\r\n // get dropdown\r\n function getDropDown(wireEvent, container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') container = $(container);\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n\r\n // wire events\r\n if (wireEvent) setEvents();\r\n\r\n\r\n // bail\r\n if (list.length === 0) return;\r\n\r\n \r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n // find related item\r\n options.relateditem = elem.prev('.dropdown-toggle').find('.dropdown-title');\r\n options.isddelem = true; // used in case we have other dd that don't use FD\r\n\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n // set cursor\r\n if (!options.noedit) elem.css({ cursor: 'pointer' });\r\n\r\n // set default value\r\n elem.data().setdefaultValue();\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n \r\n // set dropdonw\r\n child.setDropDown = function (wireEvent, container) {\r\n getDropDown(wireEvent, container);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: CONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * editor\r\n * http://docs.ckeditor.com/#!/guide/dev_jquery\r\n*/\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n var ELEM = '[data-fd=\"editor\"]';\r\n var CK_HIGHLIGHT_BUTTON_NAME = 'BGColor';\r\n var CK_IMAGE_BUTTON_NAME = 'Image';\r\n\r\n CKEDITOR.tools.array.zip = function (array1, array2) {\r\n return CKEDITOR.tools.array.map(array1, function (value, index) {\r\n return [value, array2[index]];\r\n });\r\n }\r\n\r\n $.widget(\"custom.editor\", {\r\n options: {\r\n limited: false,\r\n strategyoption: false,\r\n removeimageicon: false,\r\n allowimage: true,\r\n useparent: true,\r\n parentid: -1,\r\n height: 150,\r\n initial: '',\r\n tag: 300,\r\n customConfig: false,\r\n removePlugins: 'sourcearea,about,iframe',\r\n resize_enabled: false,\r\n removeButtons: 'Image,Undo,Redo,ShowBlocks,SpecialChar,Anchor,Strike,Subscript,Superscript,Save,Paste,PasteText,Cut,Copy,SelectAll,Outdent,Indent,JustifyBlock,JustifyRight,JustifyCenter,JustifyLeft,CopyFormatting,Language,Print,Maximize',\r\n forcePasteAsPlainText: true,\r\n removeDialogTabs: 'link:advanced;link:target',\r\n enterMode: CKEDITOR.ENTER_BR,\r\n shiftEnterMode: CKEDITOR.ENTER_P,\r\n extraPlugins: 'autogrow',\r\n autogrow_onstartup: false\r\n },\r\n extendedOptions: {\r\n allowhighlight: true,\r\n allowedContent: true,\r\n toolbarGroups: [\r\n { name: 'clipboard', groups: ['clipboard', 'undo'] },\r\n { name: 'editing', groups: ['find', 'selection', 'spellchecker', 'editing'] },\r\n { name: 'forms', groups: ['forms'] },\r\n { name: 'basicstyles', groups: ['basicstyles', 'cleanup'] },\r\n { name: 'colors', groups: ['colors'] },\r\n { name: 'paragraph', groups: ['list', 'indent', 'blocks', 'align', 'bidi', 'paragraph'] },\r\n { name: 'links', groups: ['links'] },\r\n { name: 'insert', groups: ['insert'] },\r\n { name: 'styles', groups: ['styles'] },\r\n { name: 'tools', groups: ['tools'] },\r\n { name: 'document', groups: ['mode', 'document', 'doctools'] },\r\n { name: 'others', groups: ['others'] },\r\n { name: 'about', groups: ['about'] }\r\n ],\r\n removeButtons: 'ShowBlocks,SpecialChar,Anchor,Strike,Subscript,Superscript,Save,Paste,PasteText,Cut,Copy,SelectAll,Outdent,Indent,JustifyBlock,JustifyRight,JustifyCenter,JustifyLeft,CopyFormatting,Language,Print,Maximize',\r\n imageuploaded: null,\r\n extraPlugins: 'colorbutton,colordialog,youtube,font,richcombo,listblock,table,tableresize,autogrow',\r\n youtube_responsive: true,\r\n youtube_related: false,\r\n youtube_privacy: true,\r\n youtube_disabled_fields: ['chkAutoplay'],\r\n autogrow_onstartup: false\r\n },\r\n strategyOptions: {\r\n toolbarGroups: [\r\n { name: 'basicstyles', groups: ['basicstyles', 'cleanup'] },\r\n { name: 'colors', groups: ['colors'] },\r\n { name: 'paragraph', groups: ['indent', 'blocks', 'align', 'bidi', 'paragraph'] },\r\n { name: 'links', groups: ['links'] },\r\n { name: 'styles', groups: ['styles'] },\r\n ],\r\n removeButtons: 'Image,Undo,Redo,ShowBlocks,SpecialChar,Anchor,Strike,Subscript,Superscript,Save,Paste,PasteText,Cut,Copy,SelectAll,Outdent,Indent,JustifyBlock,JustifyRight,JustifyCenter,JustifyLeft,CopyFormatting,Language,Print,Maximize',\r\n extraPlugins: 'colorbutton,font,autogrow',\r\n },\r\n imageOptions: {\r\n extraPlugins: 'colorbutton,colordialog,youtube,image2,uploadimage,filebrowser,font,richcombo,listblock,table,tableresize,autogrow',\r\n uploadUrl: '/Media/HandleImageUpload',\r\n filebrowserImageUploadUrl: '/Media/HandleImageUpload',\r\n },\r\n _create: function () {\r\n this.options.language = getUserLaguageOrDefault();\r\n $.extend(this.options, this.element.data());\r\n this.options.autoGrow_onStartup = this.options.autogrow_onstartup;\r\n delete this.options['custom-editor'];\r\n\r\n if (!this.options.limited) {\r\n $.extend(this.options, this.extendedOptions);\r\n }\r\n\r\n if (this.options.strategyoption) {\r\n $.extend(this.options, this.strategyOptions);\r\n }\r\n\r\n me.setControlItemOptions(this.element, this.options);\r\n\r\n if (!this.options.allowhighlight) {\r\n this.options.removeButtons += ',' + CK_HIGHLIGHT_BUTTON_NAME;\r\n }\r\n if (this.options.removeimageicon) {\r\n this.options.removeButtons += ',' + CK_IMAGE_BUTTON_NAME;\r\n }\r\n if (this.options.allowimage && !this.options.limited) {\r\n $.extend(this.options, this.imageOptions);\r\n }\r\n\r\n this.element.ckeditor(this.options);\r\n this.element.closest('.modal').removeAttr('tabindex');\r\n\r\n this.element.editor.on('focus', this._handleFocus);\r\n this.element.editor.on('change', this._handleChange);\r\n if (this.options.allowimage && !this.options.limited) {\r\n this.element.editor.on('fileUploadResponse', this._fileUploadResponse);\r\n }\r\n var self = this;\r\n if (this.element.is('.hidden')) {\r\n this.element.editor.on(\"instanceReady\", function (event) {\r\n self.element.next().addClass('hidden');\r\n });\r\n }\r\n\r\n this.element.addClass(\"editor\");\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.element.data(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n },\r\n _destroy: function () {\r\n },\r\n\r\n _handleFocus: function (event) {\r\n var self = $(event.editor.element.$).data('customEditor');\r\n self.options.initial = self.element.val();\r\n },\r\n _handleChange: function (event) {\r\n var self = $(event.editor.element.$).data('customEditor');\r\n\r\n clearTimeout(self._changeTimer);\r\n self._changeTimer = setTimeout(function () {\r\n self._handleChangeDebounce()\r\n }, 750);\r\n },\r\n _handleChangeDebounce: function () {\r\n var val = this.element.val();\r\n var div = document.createElement('div');\r\n $(div).html(val).find('a').attr('target', '_blank');\r\n val = $(div).html();\r\n $(div).remove();\r\n\r\n if (this.options.initial != val) {\r\n this.options.value = val;\r\n this._setCallback();\r\n this.options.initial = this.options.value;\r\n }\r\n },\r\n\r\n _fileUploadResponse: function (event) {\r\n var self = $(event.editor.element.$).data('customEditor');\r\n // Prevent the default response handler.\r\n event.stop();\r\n\r\n var data = event.data,\r\n xhr = data.fileLoader.xhr,\r\n response = xhr.responseText;\r\n\r\n if (!response) {\r\n evt.cancel();\r\n } else {\r\n data.url = xhr.getResponseHeader('MediaURL');\r\n data.upload = 1;\r\n data.fileName = data.url.substr(data.url.lastIndexOf(\"/\") + 1);\r\n }\r\n if (self.options.imageuploaded) {\r\n eval(self.options.imageuploaded + \"(\" + response + \")\")\r\n }\r\n },\r\n\r\n _setCallback: function () {\r\n me.setCallBackFromData(this.element, {\r\n e: this.element,\r\n value: this.options.value,\r\n initial: this.options.initial,\r\n length: this.options.value.length,\r\n tag: this.options.tag,\r\n parentid: this.options.parentid\r\n });\r\n }\r\n });\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n function getUserLaguageOrDefault() {\r\n var supportedLangs = ['en', 'es', 'es-mx', 'hu', 'sk', 'zh', 'zh-cn'];\r\n var userLang = (navigator.language || navigator.userLanguage || 'en').toLowerCase();\r\n var found = supportedLangs.some(function (elem) { return elem == userLang; });\r\n if (!found && userLang.length > 2) {\r\n userLang = userLang.split('-')[0];\r\n found = supportedLangs.some(function (elem) { return elem == userLang; });\r\n }\r\n return found ? userLang : \"en\";\r\n }\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // get editor options\r\n child.setEditor = function (container) {\r\n var list = '';\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.is(ELEM) ? container : container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n $(list).editor();\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n var ELEM = '[data-fd=\"excel-navigation\"]';\r\n\r\n $.widget(\"custom.excelNavigation\", {\r\n options: {\r\n arrowNav: true,\r\n enterNav: true,\r\n tabNav: true,\r\n ctrlNav: true,\r\n pageNav: true,\r\n homeEndNav: true,\r\n selectedRowClass: \"selected-row highlight-child-withborder\",\r\n selectedColumnClass: \"selected-column\",\r\n selectedCellClass: \"selected-cell\",\r\n selectOnFocus: true,\r\n setOnBlur: false,\r\n rowSelector: \"tr:not(.footer)\",\r\n columnSelector: \"td\",\r\n inputSelectors: \"input:not(:hidden),select,span[data-fd=checkbox]\",\r\n pageSize: 0\r\n },\r\n _handleKeyDown: function (event) {\r\n var self = event.data;\r\n self._setTarget(event.target);\r\n\r\n // Suppress navigation when an auto-complete is open.\r\n if ($(event.target).is('[data-fd=autocomplete]') && $(event.target).autocomplete('widget').is(':visible') && (event.keyCode == keyCode.UPARROW || event.keyCode == keyCode.DOWNARROW)) {\r\n return;\r\n }\r\n\r\n switch (event.keyCode) {\r\n case keyCode.HOME:\r\n if (self.options.homeEndNav && !event.ctrlKey)\r\n self.setIndex(self.getRowIndex(), 0, seek.NONE, seek.RIGHT);\r\n if (self.options.homeEndNav && event.ctrlKey) {\r\n self.setIndex(0, self.getColumnIndex(), seek.DOWN, seek.NONE);\r\n self.setIndex(self.getRowIndex(), 0, seek.NONE, seek.RIGHT);\r\n }\r\n break;\r\n case keyCode.END:\r\n if (self.options.homeEndNav && !event.ctrlKey)\r\n self.setIndex(self.getRowIndex(), self.getColumnCount() - 1, seek.NONE, seek.LEFT);\r\n if (self.options.homeEndNav && event.ctrlKey) {\r\n self.setIndex(self.getRowCount() - 1, self.getColumnIndex(), seek.UP, seek.NONE);\r\n self.setIndex(self.getRowIndex(), self.getColumnCount() - 1, seek.NONE, seek.LEFT);\r\n }\r\n break;\r\n case keyCode.UPARROW:\r\n if (self.options.arrowNav && !event.ctrlKey)\r\n self.setIndex(self.getRowIndex() - 1, self.getColumnIndex(), seek.UP, seek.NONE);\r\n if (self.options.ctrlNav && event.ctrlKey)\r\n self.setIndex(0, self.getColumnIndex(), seek.DOWN, seek.NONE);\r\n break;\r\n case keyCode.DOWNARROW:\r\n if (self.options.arrowNav && !event.ctrlKey)\r\n self.setIndex(self.getRowIndex() + 1, self.getColumnIndex(), seek.DOWN, seek.NONE);\r\n if (self.options.ctrlNav && event.ctrlKey)\r\n self.setIndex(self.getRowCount() - 1, self.getColumnIndex(), seek.UP, seek.NONE);\r\n break;\r\n case keyCode.LEFTARROW:\r\n if (self.options.arrowNav && !event.ctrlKey)\r\n self.setIndex(self.getRowIndex(), self.getColumnIndex() - 1, seek.NONE, seek.LEFT);\r\n if (self.options.ctrlNav && event.ctrlKey)\r\n self.setIndex(self.getRowIndex(), 0, seek.NONE, seek.RIGHT);\r\n break;\r\n case keyCode.RIGHTARROW:\r\n if (self.options.arrowNav && !event.ctrlKey)\r\n self.setIndex(self.getRowIndex(), self.getColumnIndex() + 1, seek.NONE, seek.RIGHT);\r\n if (self.options.ctrlNav && event.ctrlKey)\r\n self.setIndex(self.getRowIndex(), self.getColumnCount() - 1, seek.NONE, seek.LEFT);\r\n break;\r\n case keyCode.TAB:\r\n if (self.options.tabNav && !event.shiftKey)\r\n self.setIndex(self.getRowIndex(), self.getColumnIndex()); // +1 Default browser code already moved focuse.\r\n if (self.options.tabNav && event.shiftKey)\r\n self.setIndex(self.getRowIndex(), self.getColumnIndex()); // -1 Default browser code already moved focuse.\r\n break;\r\n case keyCode.ENTER:\r\n if (self.options.enterNav && !event.shiftKey)\r\n self.setIndex(self.getRowIndex() + 1, self.getColumnIndex(), seek.DOWN, seek.NONE);\r\n if (self.options.enterNav && event.shiftKey)\r\n self.setIndex(self.getRowIndex() - 1, self.getColumnIndex(), seek.UP, seek.NONE);\r\n break;\r\n case keyCode.PAGEUP:\r\n if (self.options.pageNav)\r\n self.setIndex(Math.max(self.getRowIndex() - self.options.pageSize, 0), self.getColumnIndex(), seek.DOWN, seek.NONE);\r\n break;\r\n case keyCode.PAGEDOWN:\r\n if (self.options.pageNav)\r\n self.setIndex(Math.min(self.getRowIndex() + self.options.pageSize, self.getRowCount() - 1), self.getColumnIndex(), seek.UP, seek.NONE);\r\n break;\r\n case keyCode.ESC:\r\n if (self.options.setOnBlur) {\r\n $(event.target).val($(event.target).data(\"initial\"));\r\n if (self.options.selectOnFocus && $(event.target).is('input,textarea'))\r\n event.target.setSelectionRange(0, $(event.target).val().length)\r\n }\r\n break;\r\n }\r\n\r\n // Suppress arrow key's on dropdown and navigate instead. (User can press space or enter to get the list)\r\n if ($(event.target).is('select') && (event.keyCode == keyCode.LEFTARROW || event.keyCode == keyCode.RIGHTARROW || event.keyCode == keyCode.UPARROW || event.keyCode == keyCode.DOWNARROW)) {\r\n event.preventDefault();\r\n }\r\n },\r\n _handleFocus: function (event) {\r\n var self = event.data;\r\n self._setTarget(event.currentTarget);\r\n var row = self.getRowIndex();\r\n var column = self.getColumnIndex();\r\n\r\n var rowElm = self.getRow(row);\r\n var colElm = self.getColumn(column, rowElm);\r\n self._highlightSelected(rowElm, colElm);\r\n\r\n if (self.options.selectOnFocus && $(event.target).is('input,textarea'))\r\n event.target.setSelectionRange(0, $(event.target).val().length)\r\n },\r\n _handleBlur: function () {\r\n $(this).data(\"initial\", $(this).val());\r\n },\r\n _handleResize: function (event) {\r\n var self = event.data;\r\n self.options.pageSize = Math.round((window.innerHeight - parseInt($(\".site-body-content \").css(\"margin-top\"))) / $(\"tr:first-child\", self.element).height()) - 1;\r\n },\r\n _create: function () {\r\n this.element.addClass(\"excel-navigation\");\r\n var self = this;\r\n\r\n // Default page size rule.\r\n if (!self.options.pageSize) {\r\n self.options.pageSize = Math.round((window.innerHeight - parseInt($(\".site-body-content \").css(\"margin-top\"))) / $(\"tr:first-child\", self.element).height()) - 1;\r\n $(window).on(\"resize\", this, this._handleResize);\r\n }\r\n \r\n var fields = $(self.options.inputSelectors, this.element);\r\n if (self.options.setOnBlur) {\r\n fields.each(function (i) {\r\n $(this).data(\"initial\", $(this).val());\r\n });\r\n this.element.on(\"blur\", self.options.inputSelectors, this, this._handleBlur);\r\n }\r\n this.element\r\n .on(\"keydown\", self.options.inputSelectors, this, this._handleKeyDown)\r\n .on(\"focus\", self.options.inputSelectors, this, this._handleFocus);\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n \r\n },\r\n _destroy: function () {\r\n this.element.removeClass(\"excel-navigation\");\r\n this.element\r\n .off(\"keydown\", this.options.inputSelectors, this._handelKeyDown)\r\n .off(\"focus\", this.options.inputSelectors, this._handleFocus)\r\n .off(\"blur\", this.options.inputSelectors, this._handleBlur);\r\n $(window).off(\"resize\", this, this._handleResize);\r\n },\r\n _highlightSelected: function (rowElm, colElm) {\r\n var self = this;\r\n if (self.options.selectedRowClass) {\r\n $(self.options.rowSelector, self.element).removeClass(self.options.selectedRowClass);\r\n rowElm.addClass(self.options.selectedRowClass);\r\n }\r\n if (self.options.selectedColumnClass) {\r\n $(self.options.columnSelector, self.element).removeClass(self.options.selectedColumnClass);\r\n $(self.options.rowSelector, self.element).find(self.options.columnSelector + \":eq(\" + colElm.index() + \")\").addClass(self.options.selectedColumnClass);\r\n }\r\n if (self.options.selectedCellClass) {\r\n $(self.options.columnSelector, self.element).removeClass(self.options.selectedCellClass);\r\n colElm.addClass(self.options.selectedCellClass)\r\n }\r\n },\r\n _setTarget: function (target) {\r\n this._targetElm = $(target);\r\n },\r\n _target: function () {\r\n return this._targetElm == undefined ? $(':focus') : this._targetElm;\r\n },\r\n getColumnIndex: function () {\r\n return this._target().closest(this.options.columnSelector).index();\r\n },\r\n getRowIndex: function () {\r\n return this._target().closest(this.options.rowSelector).index();\r\n },\r\n getRowCount: function () {\r\n return this._target().closest(this.options.rowSelector).siblings(this.options.rowSelector).length + 1;\r\n },\r\n getColumnCount: function () {\r\n return this._target().closest(this.options.columnSelector).siblings(this.options.columnSelector).length + 1;\r\n },\r\n getRow: function (row) {\r\n return this.element.find(this.options.rowSelector + \":eq(\" + row + \")\");\r\n },\r\n getColumn: function (column, rowElm) {\r\n return rowElm.find(this.options.columnSelector + \":eq(\" + column + \")\");\r\n },\r\n setTarget: function (target) {\r\n this._setTarget(target);\r\n this.setIndex(this.getRowIndex(), this.getColumnIndex());\r\n },\r\n setIndex: function (row, column, seekRow, seekColumn) {\r\n var self = this;\r\n row = Math.max(Math.min(row, self.getRowCount() - 1), 0);\r\n column = Math.max(Math.min(column, self.getColumnCount() - 1), 0);\r\n seekRow = seekRow || 0;\r\n seekColumn = seekColumn || 0;\r\n\r\n var rowElm = self.getRow(row);\r\n var colElm = self.getColumn(column, rowElm);\r\n if ($(self.options.inputSelectors, colElm).length == 0 && seekRow != 0) {\r\n var foundRow = false;\r\n var rowCount = self.getRowCount();\r\n for (var i = row + seekRow; i < rowCount - 1 && i > 0; i += seekRow) {\r\n rowElm = self.getRow(i);\r\n colElm = self.getColumn(column, rowElm);\r\n if ($(self.options.inputSelectors, colElm).length > 0) {\r\n row = i;\r\n foundRow = true;\r\n break;\r\n }\r\n }\r\n if (!foundRow) {\r\n row = self.getRowIndex();\r\n rowElm = self.getRow(row);\r\n colElm = self.getColumn(column, rowElm);\r\n }\r\n }\r\n\r\n if ($(self.options.inputSelectors, colElm).length == 0 && seekColumn != 0) {\r\n var foundColumn = false;\r\n var columnCount = self.getColumnCount();\r\n for (var i = column + seekColumn; i < columnCount - 1 && i > 0; i += seekColumn) {\r\n colElm = self.getColumn(i, rowElm)\r\n if ($(self.options.inputSelectors, colElm).length > 0) {\r\n column = i;\r\n foundColumn = true;\r\n break;\r\n }\r\n }\r\n if (!foundColumn) {\r\n column = self.getColumnIndex();\r\n colElm = self.getColumn(column, rowElm);\r\n }\r\n }\r\n\r\n var inputElm = $(self.options.inputSelectors, colElm);\r\n if (self._target()[0] == inputElm[0]) {\r\n inputElm.blur();\r\n }\r\n\r\n self._highlightSelected(rowElm, colElm);\r\n inputElm.focus();\r\n\r\n if (self.options.selectOnFocus && inputElm.is('input,textarea'))\r\n setTimeout(function () { // Workaround for other code causing conflicts.\r\n inputElm[0].setSelectionRange(0, inputElm.val().length);\r\n }, 1);\r\n }\r\n });\r\n \r\n function setExcelNavigation(container) {\r\n $(ELEM, container).excelNavigation();\r\n }\r\n\r\n var seek = {\r\n NONE: 0,\r\n LEFT: -1,\r\n RIGHT: 1,\r\n UP: -1,\r\n DOWN: 1\r\n };\r\n\r\n var keyCode = {\r\n DOWNARROW: 40,\r\n UPARROW: 38,\r\n RIGHTARROW: 39,\r\n LEFTARROW: 37,\r\n TAB: 9,\r\n ENTER: 13,\r\n ESC: 27,\r\n PAGEUP: 33,\r\n PAGEDOWN: 34,\r\n HOME: 36,\r\n END: 35\r\n };\r\n \r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setExcelNavigation = function (container, defaults) {\r\n setExcelNavigation(container, defaults);\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n function ControlMessage() {}\r\n\r\n ControlMessage.prototype = {\r\n setSpinnerOff: function () {\r\n setTimeout(function () {\r\n me.unsetTopProgressBar();\r\n }, 300);\r\n },\r\n setSpinner: function () {\r\n me.setTopProgressBar();\r\n },\r\n setSpinnerDelay: function(delay){\r\n this.setSpinner();\r\n var that = this;\r\n setTimeout(function () {\r\n me.unsetTopProgressBar();\r\n }, delay);\r\n },\r\n setMessage: function (result, message) {\r\n me.unsetTopProgressBar();\r\n }\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set message\r\n child.setMessageContainer = function () {\r\n return new ControlMessage();\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"number\"]';\r\n var PARENT = '[data-parent=\"true\"]';\r\n var eventsAreSet = false;\r\n\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 55,\r\n value: '',\r\n\r\n initial: '',\r\n max: 10000000000000, // max value of number\r\n min: -10000000000000, // min value of number\r\n precision: null, // number of digits to show after decimal point\r\n reset: 'zero', // zero, initial\r\n comma: true, // use comma on display\r\n focus: false, // set focus\r\n allownull: false,\r\n noedit: false,\r\n clearonload: false,\r\n islocked: false\r\n };\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set events\r\n $(document).off('focus blur keyup keydown', ELEM)\r\n .on('focus.' + NAMESPACE, ELEM, setFocus)\r\n .on('blur.' + NAMESPACE, ELEM, setValidate)\r\n .on('keyup.' + NAMESPACE, ELEM, function (event) {\r\n var e = $(this);\r\n var data = e.data();\r\n\r\n // esc\r\n if (event.which === 27 || event.keyCode === 27) {\r\n e.val(data.initial);\r\n me.setInputFocus(e, true);\r\n return;\r\n }\r\n\r\n // Prevent Blur() on excel-navigation or the table will lose track fo it's location.\r\n if (e.closest(\".excel-navigation\").length > 0)\r\n return;\r\n // enter\r\n if (event.which === 13 || event.keyCode === 13) {\r\n e.blur();\r\n }\r\n })\r\n .on('keydown.' + NAMESPACE, ELEM, function (event) {\r\n var e = $(this);\r\n var data = e.data();\r\n\r\n // data locked\r\n if (data.islocked) {\r\n return false;\r\n }\r\n\r\n // Allow: backspace, delete, tab, escape, enter and shift.\r\n if ($.inArray(event.keyCode, [46, 8, 9, 27, 13, 110, 190, 16]) !== -1 ||\r\n // Allow: Ctrl/cmd+A\r\n (event.keyCode === 65 && (event.ctrlKey === true || event.metaKey === true)) ||\r\n // Allow: Ctrl/cmd+C\r\n (event.keyCode === 67 && (event.ctrlKey === true || event.metaKey === true)) ||\r\n // Allow: Ctrl/cmd+X\r\n (event.keyCode === 88 && (event.ctrlKey === true || event.metaKey === true)) ||\r\n // Allow: Ctrl/cmd+V\r\n (event.keyCode === 86 && (event.ctrlKey === true || event.metaKey === true)) ||\r\n // Allow: home, end, left, right\r\n (event.keyCode >= 35 && event.keyCode <= 39)) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress // - key\r\n if ((event.shiftKey || (event.keyCode < 48 || event.keyCode > 57)) && (event.keyCode < 96 || event.keyCode > 105)) {\r\n if ((event.keyCode === 173 || event.keyCode === 109 || event.keyCode === 189)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n\r\n // get number \r\n function getNumber(wireEvent, container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n // wire events\r\n if (wireEvent && !eventsAreSet) {\r\n setEvents();\r\n eventsAreSet = true;\r\n }\r\n\r\n // bail\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n if (options.clearonload) {\r\n options.clearonload = false;\r\n elem.val(elem.attr('data-initial')).attr('data-clearonload', false);\r\n }\r\n\r\n // set islocked (used in FOX, for focus event)\r\n options.islocked = options.islocked || false;\r\n\r\n // set elem data\r\n var PARENT = '[data-parent=\"true\"]';\r\n var targetElm = options.useparent ? elem.closest(PARENT) : elem;\r\n var targetData = {};\r\n if (targetElm.length) {\r\n targetData = targetElm.data();\r\n }\r\n\r\n // udpate data\r\n options.callback = me.setCallBackPrefix(targetData.callbackprefix);\r\n options.parentid = targetData.parentid || 0; \r\n\r\n // set data\r\n elem.data(options);\r\n\r\n // no edit\r\n if (options.noedit) {\r\n elem.attr('readonly', true);\r\n }\r\n\r\n // reset\r\n setReset(elem);\r\n });\r\n }\r\n\r\n\r\n // set focus\r\n function setFocus() {\r\n var elem = $(this);\r\n var data = elem.data();\r\n if (document.isUndo) {\r\n document.isUndo = false;\r\n return;\r\n }\r\n if (data.noedit) {\r\n return;\r\n }\r\n\r\n if (data.allownull && elem.val() === '') {\r\n data.initial = null;\r\n } else {\r\n data.initial = (new Number(elem.val().replace(/[^0-9\\.\\-]+/g, \"\"))).valueOf();\r\n }\r\n\r\n if (data.islocked) {\r\n elem.val(me.getLabel().Locked);\r\n }\r\n\r\n if (data.focus) {\r\n elem.select();\r\n }\r\n }\r\n\r\n\r\n // set reset\r\n function setReset(e) {\r\n var data = e.data();\r\n var value = e.val();\r\n var isnull = false;\r\n\r\n // remove comma\r\n value = me.setNoComma(value);\r\n\r\n\r\n if (value === '' && data.allownull) {\r\n value = null;\r\n e.data('value', null);\r\n } else {\r\n value = new Number(value);\r\n\r\n if (isNaN(value)) {\r\n value = isNaN(+e.data('initial')) ? new Number() : +e.data('initial');\r\n }\r\n\r\n if (value < data.min) {\r\n value = data.min;\r\n } else if (value > data.max) {\r\n value = data.max;\r\n }\r\n\r\n if (data.precision !== null && +data.precision >= 0) {\r\n value = value.toFixed(data.precision);\r\n }\r\n\r\n e.data('value', value);\r\n\r\n if (data.comma) {\r\n value = me.setComma(value);\r\n }\r\n }\r\n\r\n e.val(value);\r\n }\r\n\r\n\r\n // set validate\r\n function setValidate() {\r\n var e = $(this);\r\n var data = e.data();\r\n\r\n setReset(e);\r\n\r\n if (data.noedit) {\r\n return;\r\n } else if (data.islocked) {\r\n return;\r\n }\r\n\r\n setCallback(e);\r\n }\r\n\r\n\r\n // set callback\r\n function setCallback(elem) {\r\n var data = elem.data();\r\n\r\n if (data.value === null) {\r\n if (data.initial === null) {\r\n return;\r\n }\r\n } else if (+data.value === data.initial) {\r\n return\r\n }\r\n\r\n var val = data.value === null ? null : data.value.valueOf();\r\n\r\n me.setCallBackFromData(elem, { e: elem, value: val, initial: data.initial, tag: data.tag, parentid: data.parentid });\r\n elem.data('initial', data.value);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set number\r\n child.setNumber = function (wireEvent, container) {\r\n getNumber(wireEvent, container);\r\n };\r\n\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n\r\n var ELEM = '[data-fd=\"popover\"]';\r\n\r\n\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n type: 'click',\r\n callbackprefix: 1,\r\n tag: 47,\r\n noedit: false\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n $(document).off('click', ELEM);\r\n $(document).on('click.' + NAMESPACE, ELEM, clickPopover);\r\n }\r\n\r\n\r\n function getPopover(wireEvent, container) {\r\n var list = '';\r\n\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n if (wireEvent) {\r\n setEvents();\r\n }\r\n\r\n\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n me.setControlItemOptions(elem, options);\r\n\r\n if (options.noedit) {\r\n elem.attr('readonly', true);\r\n elem.css({ cursor: 'default' });\r\n } else {\r\n elem.css({ cursor: 'pointer' });\r\n }\r\n });\r\n }\r\n\r\n\r\n function clickPopover(event) {\r\n event.stopPropagation();\r\n\r\n var e = $(this);\r\n\r\n e.data().element = e;\r\n\r\n var data = e.data();\r\n\r\n if (data.noedit) {\r\n return;\r\n }\r\n\r\n setHighlightRow(data);\r\n\r\n setCallback(e);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * set highlight\r\n * ========================================================================\r\n */\r\n\r\n\r\n function setHighlightRow(data) {\r\n var highlightClass = \"highlight-child-withborder\";\r\n var elem = data.element;\r\n var tr = elem.parents('tr');\r\n\r\n if (tr.length > 0) {\r\n var table = tr.parents('table');\r\n\r\n table.find('tr').removeClass('static').removeClass('highlight-child-withborder');\r\n tr.addClass('static').addClass(highlightClass);\r\n }\r\n }\r\n\r\n\r\n function setCallback(e) {\r\n var data = e.data();\r\n\r\n me.setCallBackFromData(e, { e: data.element, value: true, tag: data.tag, parentid: data.parentid });\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setPopover = function (wireEvent, container) {\r\n getPopover(wireEvent, container);\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n \r\n /* \r\n * ========================================================================\r\n * Private Variables\r\n * ========================================================================\r\n */\r\n\r\n\r\n var ELEM = '[data-fd=\"radiobutton\"]';\r\n var OFF = 0, ON = 1;\r\n var iconClasses = [\r\n 'fa-circle-o',\r\n 'fa-dot-circle-o'\r\n ];\r\n \r\n var defaults = {\r\n useparent: true, \r\n parentid: -1,\r\n callbackprefix: 1,\r\n value: -1, \r\n noedit: false,\r\n initial: null\r\n };\r\n\r\n\r\n /* \r\n * ========================================================================\r\n * Private Methods\r\n * ========================================================================\r\n */\r\n\r\n \r\n function setupRadioButtonGroups(container) {\r\n var list = [];\r\n if (container) {\r\n list = container instanceof jQuery ? container.find(ELEM) : $(container).find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n if (!list.length) {\r\n return;\r\n }\r\n\r\n $(document).off('click', ELEM + ' .radioButtonIcon');\r\n $(document).on('click', ELEM + ' .radioButtonIcon', clickRadioButton);\r\n\r\n list.each(function (index, elem) {\r\n elem = $(this);\r\n var options = $.extend({}, defaults, elem.data());\r\n me.setControlItemOptions(elem, options);\r\n if (!options.noedit) {\r\n elem.find('.radioButtonIcon').css({ cursor: 'pointer' });\r\n }\r\n if (options.initial !== undefined && options.initial !== null) {\r\n elem.data('value', options.initial).attr('data-value', options.initial).find('.radioButtonIcon[data-radiovalue=\"' + options.initial + '\"]').removeClass(iconClasses[OFF]).addClass(iconClasses[ON]);\r\n }\r\n });\r\n }\r\n\r\n\r\n function clickRadioButton() {\r\n var elem = $(this), radioButtonContainer = $(this).closest(ELEM);\r\n var data = radioButtonContainer.data();\r\n if (data.noedit) {\r\n return;\r\n }\r\n\r\n var value = elem.data('radiovalue');\r\n if (value !== radioButtonContainer.data('value')) {\r\n radioButtonContainer.data('value', value).attr('data-value', value).find('.' + iconClasses[ON]).removeClass(iconClasses[ON]).addClass(iconClasses[OFF]);\r\n elem.removeClass(iconClasses[OFF]).addClass(iconClasses[ON]);\r\n\r\n me.setCallBackFromData(radioButtonContainer, { e: elem, value: value, tag: data.tag, parentid: data.parentid });\r\n }\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setRadioButton = function (container) {\r\n setupRadioButtonGroups(container);\r\n };\r\n\r\n\r\n /*\r\n * Options:\r\n * value: set a new selected value for this radio button group programmatically\r\n * noedit: enable/disable editing\r\n */\r\n child.updateRadioButtonGroup = function (radioButtonGroup, options) {\r\n if (radioButtonGroup.data('fd') !== 'radiobutton') {\r\n return;\r\n }\r\n\r\n if (options.value !== undefined && options.value !== null) {\r\n radioButtonGroup.find('.' + iconClasses[ON]).removeClass(iconClasses[ON]).addClass(iconClasses[OFF]);\r\n radioButtonGroup.data('value', options.value).attr('data-value', options.value).find('.radioButtonIcon[data-radiovalue=\"' + options.value + '\"]').removeClass(iconClasses[OFF]).addClass(iconClasses[ON]);\r\n }\r\n if (options.noedit !== undefined && options.noedit !== null) {\r\n radioButtonGroup.data('noedit', options.noedit).attr('data-noedit', options.noedit);\r\n if (options.noedit) {\r\n radioButtonGroup.find('.radioButtonIcon').css({ cursor: 'default' });\r\n } else {\r\n radioButtonGroup.find('.radioButtonIcon').css({ cursor: 'pointer' });\r\n }\r\n }\r\n }\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: CONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * slim scroll\r\n * ======================================================================== \r\n * 11/11/2015: creation\r\n * 5/2/2016: new parent handler\r\n * 6/29/2016: innosuite 2016\r\n*/\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"scroll\"]';\r\n var APPLIST_ELEM = '#SITE_APP_LIST';\r\n\r\n\r\n // defaults\r\n var defaults = {\r\n element: '',\r\n height: 200,\r\n color: '#444444',\r\n size: 7,\r\n width: 'none',\r\n alwaysVisible: false,\r\n destroy: true,\r\n resize: false,\r\n offset: 0,\r\n position: 'right',\r\n distance: '1px',\r\n disablefadeout: true,\r\n fullscreen: false,\r\n axis: 'y',\r\n wheelstep: 10,\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n // get slimscroll\r\n function getScroll(container, viewProps) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null && container != undefined) {\r\n if (typeof container === 'string') container = $(container);\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n // get site view\r\n var siteView = 'cozy';\r\n if (viewProps !== undefined) siteView = viewProps.siteView;\r\n\r\n // bail\r\n if (list.length === 0) return;\r\n\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n options.element = elem;\r\n\r\n options.alwaysVisible = (options.alwaysvisible === true) ? true : false;\r\n setContainer(options, siteView);\r\n }); \r\n }\r\n\r\n\r\n\r\n // set the containers\r\n function setContainer(options, siteView) {\r\n var e = options.element;\r\n\r\n if (e === null) return;\r\n\r\n // destroy first\r\n if (options.destroy) {\r\n e.parent().find('.slimScrollBar').remove();\r\n e.parent().find('.slimScrollRail').remove();\r\n e.slimScroll({ destroy: true });\r\n e.attr('style', '');\r\n } \r\n // set on resize\r\n var height = options.height;\r\n if (options.resize) {\r\n height = me.getWindowHeight(options.offset);\r\n } else {\r\n height = setScrollHeight(options, siteView) \r\n }\r\n\r\n if (typeof height == 'string' && height.indexOf(\"vh\")) {\r\n height = \"calc(\" + height + \" - \" + $(\".site-body-content\").css(\"margin-top\") + \")\";\r\n }\r\n\r\n // set on fullscreen || resize\r\n if (options.resize || options.fullscreen) {\r\n $(window).resize(function () {\r\n if (this.scrollDelay) clearTimeout(this.scrollDelay);\r\n this.scrollDelay = setTimeout(function () {\r\n setContainer(options, siteView);\r\n }, 500);\r\n });\r\n }\r\n\r\n // set slimscroll object\r\n e.slimScroll({\r\n height: height,\r\n width: options.width,\r\n color: options.color,\r\n size: options.size,\r\n position: options.position,\r\n distance: options.distance,\r\n alwaysVisible: options.alwaysVisible,\r\n disableFadeOut: options.disablefadeout,\r\n axis: options.axis,\r\n wheelStep: options.wheelstep,\r\n });\r\n\r\n if (!options.alwaysVisible) {\r\n $('.slimScrollBar').css({ display: 'none' });\r\n }\r\n }\r\n\r\n\r\n function setScrollHeight(options, siteView) {\r\n\r\n if (options.fullscreen) {\r\n var vpHeight = document.documentElement.clientHeight - 150;\r\n\r\n // children count\r\n var childCount = $(APPLIST_ELEM).children().length || 1;\r\n var viewListMultiplier = 30;\r\n if (siteView === 'cozy') viewListMultiplier = 26;\r\n if (siteView === 'compact') viewListMultiplier = 24;\r\n var height = (viewListMultiplier * childCount);\r\n\r\n if (height > vpHeight) height = vpHeight;\r\n if (vpHeight < 220) height = 220;\r\n\r\n return height;\r\n }\r\n \r\n return options.height;\r\n }\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set scroll\r\n child.setScroll = function (container) {\r\n var viewProps = me.getUserProps();\r\n\r\n getScroll(container, viewProps);\r\n };\r\n\r\n\r\n child.setScrollAfterSiteView = function (viewProps) {\r\n getScroll(null, viewProps);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"select\"]';\r\n var eventsAreSet = false;\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 95,\r\n value: '',\r\n noedit: false,\r\n clearonload: false,\r\n initial: null\r\n };\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set event\r\n $(document).off('change', ELEM).on('change.' + NAMESPACE, ELEM, changeSelect);\r\n }\r\n\r\n\r\n // get select\r\n function getSelect(wireEvent, container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') container = $(container);\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n\r\n // wire events\r\n if (wireEvent && !eventsAreSet) {\r\n setEvents();\r\n eventsAreSet = true;\r\n }\r\n\r\n\r\n // bail\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n if (options.clearonload) {\r\n if (options.initial) {\r\n elem.val(options.initial);\r\n } else {\r\n elem.val(elem.find('option')[0].value);\r\n }\r\n options.clearonload = false;\r\n elem.data('clearonload', false).attr('data-clearonload', false);\r\n }\r\n\r\n // no edit\r\n if (options.noedit) {\r\n elem.prop('disabled', true);\r\n }\r\n });\r\n }\r\n\r\n\r\n // change select\r\n function changeSelect() {\r\n var e = $(this);\r\n \r\n e.data().element = e;\r\n\r\n var data = e.data();\r\n var val = e.val();\r\n var initial = data.value;\r\n\r\n e.data().value = val;\r\n\r\n if (data.noedit) {\r\n return;\r\n }\r\n\r\n e.data(data);\r\n\r\n // callback\r\n data = e.data();\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid, initial: initial });\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n \r\n // set select\r\n child.setSelect = function (wireEvent, container) {\r\n getSelect(wireEvent, container);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: SORTABLE\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * sortable\r\n * ======================================================================== \r\n * 2/13/2016: creation\r\n * 5/2/2016: new parent handler\r\n*/\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"sortable\"]';\r\n var PARENT = '[data-parent=\"true\"]';\r\n\r\n // defaults\r\n var defaults = {\r\n handle: '.handle',\r\n axis: 'y',\r\n cursor: \"ns-resize\",\r\n // ns-resize\r\n // move\r\n tag: 30,\r\n value: '',\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n\r\n\r\n // get sortable\r\n function getSortable(container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') container = $(container);\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n\r\n $('.handle').css({ cursor: 'pointer' });\r\n\r\n\r\n // bail\r\n if (list.length === 0) return;\r\n\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n\r\n var $sortable = elem.sortable({\r\n axis: options.axis,\r\n cursor: options.cursor,\r\n handle: options.handle,\r\n placeholder: \"ui-state-highlight-table\",\r\n forcePlaceholderSize: true,\r\n stop: afterStop,\r\n start: onStart,\r\n sort: checkSlimScroll,\r\n items: \".sorting-initialize\"\r\n });\r\n\r\n $sortable.children(\"li,tr\").one(\"mouseenter\", function () {\r\n $(this).addClass(\"sorting-initialize\");\r\n $sortable.sortable('refresh');\r\n });\r\n });\r\n }\r\n\r\n\r\n function onStart(event, ui) {\r\n var elem = ui.item;\r\n var parent = elem.parents('table');\r\n \r\n if (parent.length > 0) {\r\n me.setRowStaticHighlightFromTarget(elem);\r\n }\r\n var scrollContainer = ui.item.closest('[data-fd=\"scroll\"]');\r\n if (scrollContainer) {\r\n scrollContainer.slimScroll({\r\n alwaysVisible: true,\r\n disableFadeOut: true,\r\n });\r\n }\r\n }\r\n\r\n function afterStop(event, ui) {\r\n var item = ui.item;\r\n var e = $(ui.item).closest('ul');\r\n var children;\r\n var result = '';\r\n\r\n if (e.length == 0 || item[0].localName == 'tr') {\r\n e = $(ui.item).closest('tbody');\r\n children = e.children('tr');\r\n } else {\r\n children = e.children('li');\r\n }\r\n if (e.length == 0 && item[0].localName == 'div') {\r\n e = $(ui.item).closest('[data-fd=sortable]');\r\n children = e.children('[data-parentid]');\r\n }\r\n\r\n children.each(function(i) {\r\n var data = $(this).data();\r\n if (data != 'undefined') {\r\n if (data.parentid && data.parentid != 'undefined') {\r\n var id = data.parentid;\r\n result += id + '|';\r\n }\r\n }\r\n });\r\n\r\n e.data().value = result;\r\n\r\n // callback\r\n var data = e.data();\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n\r\n var scrollContainer = ui.item.closest('[data-fd=\"scroll\"]');\r\n if (scrollContainer) {\r\n scrollContainer.slimScroll({\r\n alwaysVisible: false,\r\n disableFadeOut: false,\r\n railVisible: false\r\n });\r\n }\r\n }\r\n\r\n\r\n function checkSlimScroll(event, ui) {\r\n var scrollContainer = ui.helper.closest('[data-fd=\"scroll\"]');\r\n if (scrollContainer) {\r\n if (ui.position.top < 50) {\r\n scrollContainer.slimScroll({ scrollByY: '-25px', alwaysVisible: true, disableFadeOut: true });\r\n } else if (ui.position.top > scrollContainer.height() - 50) {\r\n scrollContainer.slimScroll({ scrollByY: '25px', alwaysVisible: true, disableFadeOut: true });\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n\r\n\r\n // set sortable\r\n child.setSortable = function (container) {\r\n getSortable(container);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: CONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * star \r\n * ======================================================================== \r\n * 1/15/2016: creation\r\n * 5/2/2016: new parent handler\r\n*/\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"star\"]';\r\n var PARENT = '[data-parent=\"true\"]';\r\n\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 75,\r\n value: '',\r\n noedit: false,\r\n color: '', // pass class in\r\n\r\n reset: function (value) {\r\n var e = $(this.element);\r\n e.data().value = value;\r\n\r\n if (value) {\r\n e.children('i').removeClass(star.in).removeClass(star.out).addClass(star.in);\r\n } else {\r\n e.children('i').removeClass(star.in).removeClass(star.out).addClass(star.out);\r\n }\r\n }\r\n };\r\n\r\n\r\n // star\r\n var star = {\r\n in: 'fa-star',\r\n out: 'fa-star-o'\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set event\r\n $(document).off('click', ELEM);\r\n $(document).on('click.' + NAMESPACE, ELEM, clickStar);\r\n }\r\n\r\n\r\n // get star\r\n function getStar(wireEvent, container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') container = $(container);\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n\r\n // wire events\r\n if (wireEvent) setEvents();\r\n\r\n\r\n // bail\r\n if (list.length === 0) return;\r\n\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n\r\n // reset string -> bool\r\n if (typeof options.value === 'string') options.value = options.value.getBool();\r\n\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n\r\n // reset\r\n elem.html('').append(\"\");\r\n options.reset(options.value);\r\n\r\n\r\n // set cursor\r\n if (!options.noedit) elem.css({ cursor: 'pointer' });\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n // click star\r\n function clickStar() {\r\n var e = $(this);\r\n e.data().element = e;\r\n\r\n var data = e.data();\r\n\r\n if (data.noedit) return;\r\n\r\n var value = data.value;\r\n\r\n if (value) {\r\n data.value = false;\r\n e.children('i').removeClass(star.in).addClass(star.out);\r\n } else {\r\n data.value = true;\r\n e.children('i').removeClass(star.out).addClass(star.in);\r\n }\r\n\r\n e.data(data);\r\n\r\n // callback\r\n data = e.data();\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n \r\n // set star\r\n child.setStar = function (wireEvent, container) {\r\n getStar(wireEvent, container);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var ELEM = '[data-fd=\"status\"]';\r\n var eventsAreSet = false;\r\n\r\n\r\n // color\r\n var color = {\r\n nostatus: 'color-transparent',\r\n red: 'color-red', //#FB4C4C\r\n yellow: 'color-yellow', //#F0EE45\r\n green: 'color-green', //#3AD832\r\n blue: 'color-blue', //#0072BC\r\n };\r\n\r\n\r\n // box\r\n var box = {\r\n in: 'fa-square',\r\n out: 'fa-square-o'\r\n };\r\n\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 80,\r\n value: 'nostatus',\r\n noedit: false,\r\n type: 'trygb', // trygb, rygb, tb, tyb\r\n\r\n reset: function (value) {\r\n var e = $(this.element);\r\n e.data().value = value;\r\n resetStatus(e);\r\n },\r\n resetType: function (value, type) {\r\n var e = $(this.element);\r\n e.data().value = value;\r\n e.data().type = type;\r\n resetStatus(e);\r\n }\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set event\r\n $(document).off('click', ELEM).on('click.' + NAMESPACE, ELEM, clickStatus);\r\n }\r\n\r\n\r\n // get status\r\n function getStatus(wireEvent, container) {\r\n var list = '';\r\n\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') container = $(container);\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n\r\n // wire events\r\n if (wireEvent && !eventsAreSet) {\r\n setEvents();\r\n eventsAreSet = true;\r\n }\r\n\r\n\r\n // bail\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n\r\n // element\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n\r\n // reset\r\n elem.html('').append(\"\");\r\n options.reset(options.value);\r\n elem.removeAttr('name');\r\n\r\n // set cursor\r\n if (!options.noedit) {\r\n elem.css({ cursor: 'pointer' });\r\n }\r\n });\r\n }\r\n\r\n\r\n // reset status\r\n function resetStatus(e) {\r\n var data = e.data();\r\n var value = data.value.toLowerCase();\r\n\r\n // remove class\r\n e.removeClass(color.nostatus)\r\n .removeClass(color.red)\r\n .removeClass(color.yellow)\r\n .removeClass(color.green)\r\n .removeClass(color.blue);\r\n\r\n if (value === 'nostatus') {\r\n e.children('i').removeClass(box.in).addClass(box.out);\r\n } else {\r\n e.children('i').removeClass(box.out).addClass(box.in);\r\n }\r\n\r\n e.addClass(color[value]);\r\n\r\n switch (value) {\r\n case 'nostatus':\r\n data.value = 'NoStatus';\r\n break;\r\n case 'red':\r\n data.value = 'Red';\r\n break;\r\n case 'yellow':\r\n data.value = 'Yellow';\r\n break;\r\n case 'green':\r\n data.value = 'Green';\r\n break;\r\n case 'blue':\r\n data.value = 'Blue';\r\n break;\r\n default:\r\n data.value = 'NoStatus';\r\n }\r\n e.find('input').attr('value', data.value);\r\n }\r\n\r\n\r\n\r\n // click status\r\n function clickStatus() {\r\n var e = $(this);\r\n e.data().element = e;\r\n\r\n var data = e.data();\r\n\r\n if (data.noedit) return;\r\n\r\n var value = data.value.toLowerCase();\r\n var type = data.type.toLowerCase();\r\n\r\n // trygb\r\n if (type === 'trygb') {\r\n switch (value) {\r\n case 'nostatus':\r\n data.value = 'Red';\r\n break;\r\n case 'red':\r\n data.value = 'Yellow';\r\n break;\r\n case 'yellow':\r\n data.value = 'Green';\r\n break;\r\n case 'green':\r\n data.value = 'Blue';\r\n break;\r\n case 'blue':\r\n data.value = 'NoStatus';\r\n break;\r\n default:\r\n data.value = 'NoStatus';\r\n }\r\n }\r\n\r\n if (type === 'tryg') {\r\n switch (value) {\r\n case 'nostatus':\r\n data.value = 'Red';\r\n break;\r\n case 'red':\r\n data.value = 'Yellow';\r\n break;\r\n case 'yellow':\r\n data.value = 'Green';\r\n break;\r\n case 'green':\r\n data.value = 'NoStatus';\r\n break;\r\n default:\r\n data.value = 'NoStatus';\r\n }\r\n }\r\n\r\n if (type === 'rygb') {\r\n switch (value) {\r\n case 'nostatus':\r\n data.value = 'Red';\r\n break;\r\n case 'red':\r\n data.value = 'Yellow';\r\n break;\r\n case 'yellow':\r\n data.value = 'Green';\r\n break;\r\n case 'green':\r\n data.value = 'Blue';\r\n break;\r\n case 'blue':\r\n data.value = 'Red';\r\n break;\r\n default:\r\n data.value = 'NoStatus';\r\n }\r\n }\r\n\r\n if (type === 'tyb') {\r\n switch (value) {\r\n case 'nostatus':\r\n data.value = 'Yellow';\r\n break;\r\n case 'yellow':\r\n data.value = 'Blue';\r\n break;\r\n case 'blue':\r\n data.value = 'NoStatus';\r\n break;\r\n default:\r\n data.value = 'NoStatus';\r\n }\r\n }\r\n\r\n if (type === 'tb') {\r\n switch (value) {\r\n case 'nostatus':\r\n data.value = 'Blue';\r\n break;\r\n case 'blue':\r\n data.value = 'NoStatus';\r\n break;\r\n default:\r\n data.value = 'NoStatus';\r\n }\r\n }\r\n\r\n if (type === 'tgyr') {\r\n switch (value) {\r\n case 'nostatus':\r\n data.value = 'Green';\r\n break;\r\n case 'green':\r\n data.value = 'Yellow';\r\n break;\r\n case 'yellow':\r\n data.value = 'Red';\r\n break;\r\n case 'red':\r\n data.value = 'NoStatus';\r\n break;\r\n default:\r\n data.value = 'NoStatus';\r\n }\r\n }\r\n\r\n e.find('input').attr('value', data.value).trigger('change');\r\n\r\n e.data(data);\r\n\r\n // reset\r\n resetStatus(e);\r\n\r\n // callback\r\n data = e.data();\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n }\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setStatus = function(wireEvent, container) {\r\n getStatus(wireEvent, container);\r\n }\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n // element\r\n var NAMESPACE = me.getUID('TBODY_');\r\n var NUMBERTAB = '[data-fd=\"numbertab\"]';\r\n var SELECTTAB = '[data-fd=\"selecttab\"]';\r\n var TEXTTAB = '[data-fd=\"texttab\"]';\r\n\r\n var tbody = null;\r\n var tableId = null;\r\n var cellList = [];\r\n var cellInRow = 0;\r\n var min = 0;\r\n var max = 0;\r\n var currentCell = 2;\r\n var lastElem = null;\r\n\r\n var key = {\r\n DOWN: 40,\r\n UP: 38,\r\n RIGHT: 39,\r\n LEFT: 37,\r\n TAB: 9,\r\n ENTER: 13,\r\n ESC: 27\r\n };\r\n\r\n\r\n var inputDefaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 55,\r\n value: '',\r\n initial: '',\r\n comma: true,\r\n focus: false,\r\n noedit: false,\r\n islocked: false\r\n };\r\n\r\n\r\n var selectDefaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 95,\r\n value: '',\r\n initial: '',\r\n noedit: false\r\n };\r\n\r\n\r\n var textDefaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 60,\r\n value: '',\r\n initial: '',\r\n noedit: false\r\n };\r\n\r\n\r\n // set tabbing\r\n function setTabbing(container, startCell) {\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n tbody = $(container);\r\n }\r\n } else {\r\n tbody = $(container);\r\n }\r\n\r\n // bail\r\n if (tbody.length === 0) {\r\n return;\r\n }\r\n tableId = tbody.parents('table').first().attr('id');\r\n\r\n cellList = [];\r\n var trList = tbody.find('tr').not('.topheader').not('.footer').not('.no-tabrow');\r\n var tempCellList = trList.find('td').not('.no-tabcount').not('.hidden');\r\n\r\n //console.log(tempCellList.length)\r\n if (tempCellList.length === 0) {\r\n return;\r\n }\r\n\r\n tempCellList.each(function (i) {\r\n var td = $(this);\r\n var id = me.getUID('C_');\r\n td.attr('id', id);\r\n td.attr('tabindex', i);\r\n var cell = {\r\n id: id,\r\n cell: td\r\n };\r\n cellList.push(cell);\r\n });\r\n\r\n // set max\r\n max = cellList.length;\r\n\r\n // change to grab second tr on main tbody\r\n cellInRow = getCellInRow(1); // not zero based\r\n if (cellInRow === 0) {\r\n return;\r\n }\r\n\r\n // start cell\r\n if (startCell !== null && startCell !== '' && !isNaN(startCell)) {\r\n currentCell = startCell;\r\n }\r\n \r\n setNumberTab();\r\n setSelectTab();\r\n setTextTab(); \r\n setEvents();\r\n onTDFocus();\r\n }\r\n\r\n\r\n function setNumberTab() {\r\n var list = $(NUMBERTAB);\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n list.each(function () {\r\n var elem = $(this);\r\n var options = $.extend({}, inputDefaults, elem.data());\r\n\r\n // set islocked (used in FOX, for focus event)\r\n options.islocked = options.islocked;\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n // no edit\r\n if (options.noedit) {\r\n elem.attr('readonly', true);\r\n }\r\n\r\n var value = elem.val();\r\n value = me.setNoComma(value);\r\n\r\n value = Number(value);\r\n\r\n if (isNaN(value)) {\r\n value = (isNaN(Number(elem.data('initial')))) ? Number() : Number(elem.data('initial'));\r\n }\r\n\r\n elem.data().value = value;\r\n\r\n if (options.comma) {\r\n value = me.setComma(value);\r\n }\r\n\r\n elem.val(value);\r\n });\r\n }\r\n\r\n\r\n function setSelectTab() {\r\n var list = $(SELECTTAB);\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n list.each(function () {\r\n var elem = $(this);\r\n var options = $.extend({}, selectDefaults, elem.data());\r\n\r\n // set islocked (used in FOX, for focus event)\r\n options.islocked = options.islocked;\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n // no edit\r\n if (options.noedit) {\r\n elem.attr('readonly', true);\r\n }\r\n });\r\n }\r\n\r\n\r\n function setTextTab() {\r\n var list = $(TEXTTAB);\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n list.each(function () {\r\n var elem = $(this);\r\n var options = $.extend({}, textDefaults, elem.data());\r\n\r\n // set islocked (used in FOX, for focus event)\r\n options.islocked = options.islocked;\r\n\r\n // set elem data\r\n me.setControlItemOptions(elem, options);\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n // no edit\r\n if (options.noedit) {\r\n elem.attr('readonly', true);\r\n }\r\n });\r\n }\r\n\r\n\r\n // get count of cells in row\r\n function getCellInRow(rowNumber) {\r\n try {\r\n var cellInRow = tbody.find(\"tr:nth-child(\" + rowNumber + \")\").children('td').not('.no-tabcount').length; // not zero based\r\n if (cellInRow === 0) {\r\n return getCellInRow(rowNumber + 1);\r\n }\r\n return cellInRow;\r\n } catch (e) {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n // on focus of td\r\n function onTDFocus() {\r\n if (cellList.length === 0) {\r\n return;\r\n }\r\n if (lastElem !== null) {\r\n $(lastElem).children().removeClass('in');\r\n }\r\n\r\n // remove other input highlights (used in part forecast top row)\r\n $('[data-inputhighlight=\"true\"]').removeClass('in');\r\n\r\n if (cellList.length <= currentCell) {\r\n currentCell = 0;\r\n }\r\n // get current td\r\n var td = $('#' + cellList[currentCell].id);\r\n if (td.length === 0) {\r\n currentCell = 0;\r\n }\r\n\r\n // add hightlight to row\r\n tbody.find('tr').removeClass('highlight-child-withborder');\r\n td.parent('tr').addClass('highlight-child-withborder');\r\n\r\n lastElem = '#' + cellList[currentCell].id;\r\n\r\n if (td.hasClass('no-select')) {\r\n return;\r\n }\r\n td.children().addClass('in');\r\n\r\n var e = null;\r\n if (td.children('input').length > 0) {\r\n e = td.children('input').first();\r\n\r\n if (e.is('[readonly]')) {\r\n td.focus();\r\n } else {\r\n if (e.is(\":focus\")) {\r\n return;\r\n }\r\n e.trigger('focus');\r\n }\r\n }\r\n\r\n if (td.children('select').length > 0) {\r\n e = td.children('select').first();\r\n if (e.is(\":focus\")) {\r\n return;\r\n }\r\n e.focus();\r\n }\r\n }\r\n\r\n\r\n // set events\r\n function setEvents() {\r\n tbody.off('keydown.' + NAMESPACE);\r\n tbody.on('keydown.' + NAMESPACE, function (event) {\r\n var tempCell;\r\n var target = $(event.target);\r\n var keyCode = Number(event.keyCode) || Number(event.which);\r\n\r\n if (keyCode === key.ESC) {\r\n var data = target.data();\r\n\r\n if (target.is('[data-fd=\"numbertab\"]')) {\r\n var newVal = me.setComma(data.initial);\r\n target.val(newVal);\r\n } else {\r\n target.val(data.initial);\r\n }\r\n \r\n me.setInputFocus(target, true);\r\n return false;\r\n }\r\n\r\n if (target.is('[data-fd=\"numbertab\"]')) {\r\n // allowed key strokes for numbers\r\n var numarray = [8, 9, 13, 27, 35, 36, 37, 38, 39, 40, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 67, 88, 86,\r\n 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 109, 110, 188, 189, 190];\r\n if (numarray.indexOf(keyCode) === -1) { //|| event.shiftKey\r\n event.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n if (keyCode === key.RIGHT) {\r\n tempCell = (currentCell + 1);\r\n if (tempCell >= min && tempCell < max) {\r\n currentCell = tempCell;\r\n onTDFocus();\r\n return false;\r\n }\r\n }\r\n\r\n if (keyCode === key.ENTER) {\r\n tempCell = (currentCell + cellInRow);\r\n if (tempCell >= min && tempCell < max) {\r\n currentCell = tempCell;\r\n onTDFocus();\r\n }\r\n }\r\n\r\n if (keyCode === key.LEFT) {\r\n tempCell = (currentCell - 1);\r\n\r\n if (tempCell >= min && tempCell <= max) {\r\n currentCell = tempCell;\r\n onTDFocus();\r\n return false;\r\n }\r\n }\r\n\r\n if (event.shiftKey && keyCode === key.TAB) {\r\n tempCell = (currentCell - 1);\r\n\r\n if (tempCell >= min && tempCell <= max) {\r\n currentCell = tempCell;\r\n onTDFocus();\r\n return false;\r\n }\r\n }\r\n\r\n if (keyCode === key.DOWN) {\r\n event.preventDefault();\r\n tempCell = (currentCell + cellInRow);\r\n\r\n if (tempCell >= min && tempCell < max) {\r\n currentCell = tempCell;\r\n onTDFocus();\r\n }\r\n }\r\n\r\n if (keyCode === key.UP) {\r\n event.preventDefault();\r\n tempCell = (currentCell - cellInRow);\r\n\r\n if (tempCell >= min && tempCell <= max) {\r\n currentCell = tempCell;\r\n onTDFocus();\r\n }\r\n }\r\n\r\n if (keyCode === key.TAB) {\r\n tempCell = (currentCell + 1);\r\n\r\n if (tempCell >= min && tempCell < max) {\r\n currentCell = tempCell;\r\n onTDFocus();\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n\r\n tbody.off('keyup.' + NAMESPACE);\r\n tbody.on('keyup.' + NAMESPACE, function (event) {\r\n var target = $(event.target);\r\n var data = target.data();\r\n\r\n if (target.is('[data-fd=\"numbertab\"]')) {\r\n if (data.islocked) {\r\n target.val('Locked');\r\n target.select();\r\n }\r\n }\r\n });\r\n\r\n\r\n tbody.off('click.' + NAMESPACE);\r\n tbody.on('click.' + NAMESPACE, 'td', function () {\r\n var elem = $(this);\r\n var id = elem.attr('id');\r\n\r\n for (var i = 0, len = cellList.length; i < len; i++) {\r\n var d = cellList[i];\r\n if (d.id === id) {\r\n currentCell = i;\r\n onTDFocus();\r\n break;\r\n }\r\n }\r\n });\r\n\r\n\r\n $(document).off('click.tbodynremovehl');\r\n $(document).on('click.tbodynremovehl', function (event) {\r\n var target = $(event.target);\r\n\r\n if (!target.parents('#' + tableId).length > 0) {\r\n removeHighLight();\r\n }\r\n });\r\n\r\n\r\n $(document).off('change.' + NAMESPACE, '#' + tableId + ' ' + SELECTTAB);\r\n $(document).on('change.' + NAMESPACE, '#' + tableId + ' ' + SELECTTAB, function () {\r\n var e = $(this);\r\n e.data().element = e;\r\n var data = e.data();\r\n var val = e.val();\r\n\r\n e.data().value = val;\r\n e.data(data);\r\n\r\n data = e.data();\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, tag: data.tag, parentid: data.parentid });\r\n });\r\n\r\n\r\n $(document).off('focus.' + NAMESPACE, '#' + tableId + ' ' + NUMBERTAB);\r\n $(document).on('focus.' + NAMESPACE, '#' + tableId + ' ' + NUMBERTAB, function () {\r\n var e = $(this);\r\n var val = Number(e.val().replace(/[^0-9\\.\\-]+/g, \"\"));\r\n var data = e.data();\r\n\r\n if (data.noedit) {\r\n return;\r\n }\r\n\r\n data.initial = val.valueOf();\r\n\r\n // set locked\r\n var label = me.getLabel();\r\n if (data.islocked) {\r\n e.val(label.Locked);\r\n }\r\n\r\n e.select();\r\n });\r\n\r\n\r\n $(document).off('blur.' + NAMESPACE, '#' + tableId + ' ' + NUMBERTAB);\r\n $(document).on('blur.' + NAMESPACE, '#' + tableId + ' ' + NUMBERTAB, function () {\r\n var e = $(this);\r\n var data = e.data();\r\n e.data().element = e; \r\n\r\n var value = e.val();\r\n value = me.setNoComma(value);\r\n value = Number(value);\r\n\r\n if (isNaN(value)) {\r\n value = (isNaN(Number(e.data('initial')))) ? Number() : Number(e.data('initial'));\r\n }\r\n\r\n e.data().value = value;\r\n\r\n if (data.comma) {\r\n value = me.setComma(value);\r\n }\r\n\r\n e.val(value);\r\n\r\n // noedit\r\n if (data.noedit) {\r\n return;\r\n }\r\n\r\n // trap for locked\r\n if (data.islocked) {\r\n e.val(me.setComma(data.initial));\r\n return;\r\n }\r\n\r\n // callback\r\n setCallback(e);\r\n });\r\n\r\n\r\n $(document).off('focus.' + NAMESPACE, '#' + tableId + ' ' + TEXTTAB);\r\n $(document).on('focus.' + NAMESPACE, '#' + tableId + ' ' + TEXTTAB, function () {\r\n var e = $(this);\r\n var val = e.val();\r\n e.data().initial = val;\r\n e.select();\r\n });\r\n\r\n\r\n $(document).off('blur.' + NAMESPACE, '#' + tableId + ' ' + TEXTTAB);\r\n $(document).on('blur.' + NAMESPACE, '#' + tableId + ' ' + TEXTTAB, function () {\r\n var e = $(this);\r\n e.data().element = e;\r\n var val = e.val();\r\n e.val(val);\r\n e.data().value = val;\r\n\r\n setCallback(e);\r\n });\r\n }\r\n\r\n\r\n // remove tbody highlight\r\n function removeHighLight() {\r\n tbody.find('tr').removeClass('highlight-child-withborder');\r\n if (lastElem !== null) {\r\n $(lastElem).children().removeClass('in');\r\n }\r\n }\r\n\r\n\r\n // set callback\r\n function setCallback(e) {\r\n var data = e.data();\r\n\r\n // data locked\r\n if (data.islocked) {\r\n return;\r\n }\r\n\r\n // value == value\r\n if (data.value == data.initial) {\r\n return;\r\n }\r\n\r\n // callback\r\n me.setCallBackFromData(e, {\r\n e: data.element,\r\n value: data.value.valueOf(),\r\n initial: data.initial,\r\n tag: data.tag,\r\n parentid: data.parentid,\r\n length: data.length || 0\r\n });\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setTabbing = function (container, startCell) {\r\n setTabbing(container, startCell);\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n // element\r\n var ELEM = 'table[data-fd=\"tblfrozencolumns\"]',\r\n ALTERNATIVE_ELEM = '[data-fd2=\"tblfrozencolumns\"]';\r\n\r\n function getElement(){\r\n return $(ELEM).length > 0 ? ELEM : ALTERNATIVE_ELEM;\r\n }\r\n\r\n $.widget(\"custom.tabelFrozenColumns\", {\r\n options: {\r\n element: '',\r\n frozencolumns: 1\r\n },\r\n _create: function () {\r\n $.extend(this.options, this.element.data());\r\n this.element.addClass(\"table-in-page\");\r\n this._fixHeadersAndColumns(this.options.frozencolumns);\r\n this.refresh();\r\n\r\n const resizeObserver = new ResizeObserver(entries => {\r\n this.refresh();\r\n $(getElement()).hide().show(0);\r\n });\r\n resizeObserver.observe(document.querySelector(getElement()));\r\n },\r\n _fixHeadersAndColumns: function (cols) {\r\n cols = cols ?? 1;\r\n const $table = $(getElement());\r\n const $hTrs = $table.find(\"thead>tr\");\r\n let cTop = $(\".site-fixed-top-content\").height() + $(\".site-top-navigation\").height();\r\n $hTrs.each(function (_) {\r\n $(this).find(\"th\").each(function () {\r\n const index = $(this).index();\r\n const isStickyCol = index < (cols);\r\n const thTop = cTop;\r\n const zindex = isStickyCol ? 11 : 10;\r\n $(this).css(\"position\", \"sticky\").css(\"top\", thTop).css(\"z-index\", zindex);\r\n });\r\n\r\n cTop += $(this).outerHeight();\r\n });\r\n let colLeft = [];\r\n const $cols = $table.find(\"tbody>tr\").find(\"th:lt(\" + cols + \"), td:lt(\" + cols + \")\");\r\n let cLeft = 16;\r\n if ($cols.hasClass(\"text-muted\") && $cols.attr('colspan')) {\r\n return;\r\n }\r\n $cols.each(function () { \r\n const index = $(this).index();\r\n colLeft[index] = colLeft[index] ? colLeft[index] : cLeft;\r\n const zindex = 10;\r\n $(this).css(\"position\", \"sticky\").css(\"left\", colLeft[index]).css(\"z-index\", zindex);\r\n cLeft += $(this).outerWidth();\r\n });\r\n\r\n const $thCols = $table.find(\"thead>tr\").find(\"th:lt(\" + cols + \")\");\r\n cLeft = 16; // Padding\r\n $thCols.each(function () {\r\n const index = $(this).index();\r\n colLeft[index] = colLeft[index] ? colLeft[index] : cLeft;\r\n $(this).css(\"left\", colLeft[index]);\r\n cLeft += $(this).outerWidth();\r\n });\r\n // Only observe the second box \r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.element.data(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n this._fixHeadersAndColumns(this.options.frozencolumns);\r\n },\r\n attach: function (self) {\r\n this.element = self;\r\n },\r\n _destroy: function () {\r\n }\r\n });\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // global setter\r\n child.setTableFrozenCol = function (container, defaults) {\r\n var list = '';\r\n if (container) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.is(getElement()) ? container : container.find(getElement());\r\n } else {\r\n list = $(getElement());\r\n }\r\n\r\n return $(list).tabelFrozenColumns(defaults);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /*\r\n * ========================================================================\r\n * Private Variables\r\n * ========================================================================\r\n */\r\n \r\n var ELEM = '[data-fd=\"table-frozen-column\"]';\r\n\r\n var thead;\r\n var tbody;\r\n var container;\r\n var frozenColumnCount;\r\n var frozenHeight;\r\n var frozenTableAfter;\r\n var pageScroll;\r\n var useWindowScroll = true;\r\n var setWindowScrollFunctionality = false;\r\n var scrollTableViewport, frozenTableViewport, scrollHeaderViewport, frozenHeaderViewport;\r\n var scrollTableContainer, frozenTableContainer, scrollHeaderContainer, frozenHeaderContainer;\r\n var frozenTableNotify = new Notify();\r\n var displayedTooSmallMessage = false;\r\n\r\n /*\r\n * ========================================================================\r\n * Private Methods\r\n * ========================================================================\r\n */\r\n\r\n function calculateTableHeight() {\r\n var maxSize = getMaxVerticalSize();\r\n var scrollTableContainer = $('.scroll-table-container')[0];\r\n\r\n return scrollTableContainer.clientHeight < maxSize ? scrollTableContainer.clientHeight : maxSize;\r\n }\r\n\r\n\r\n function calculateTableWidth() {\r\n return window.innerWidth < frozenTableViewport.outerWidth(true) + $('.site-left-navigation').outerWidth(true) ? 0 : window.innerWidth - frozenTableViewport.outerWidth() - $('.site-left-navigation').outerWidth(true);\r\n }\r\n\r\n\r\n // Only use if number of columns hasn't changed\r\n function redrawTableHead(headerHTML) {\r\n var thead = document.createElement('thead');\r\n thead.innerHTML = headerHTML.trim();\r\n\r\n var frozenTableHead = $('.frozen-header-container thead')[0];\r\n var scrollTableHead = $('.scroll-header-container thead')[0];\r\n $(frozenTableHead).html('');\r\n $(scrollTableHead).html('');\r\n\r\n $.each(thead.children, function (index, elem) {\r\n var cellIndex = 0, currentCell;\r\n var frozenRow = elem.cloneNode(false);\r\n var scrollRow = elem.cloneNode(false);\r\n // Check to see if the entire row is made up\r\n // of a single cell. If so, copy it into both tables\r\n if (elem.children.length === 1) {\r\n frozenRow.appendChild(elem.children[0].cloneNode(true));\r\n scrollRow.appendChild(elem.children[0]);\r\n } else {\r\n while (cellIndex < frozenColumnCount) {\r\n cellIndex += elem.children[0].colSpan;\r\n frozenRow.appendChild(elem.children[0]);\r\n }\r\n while (elem.children.length) {\r\n scrollRow.appendChild(elem.children[0]);\r\n }\r\n }\r\n frozenTableHead.appendChild(frozenRow);\r\n scrollTableHead.appendChild(scrollRow);\r\n });\r\n\r\n recalculateFrozenTableHeadHeight(frozenTableHead.children, scrollTableHead.children, frozenHeaderViewport[0], scrollHeaderViewport[0]);\r\n }\r\n\r\n\r\n function recalculateFrozenTableHeadHeight(frozenHeaderRowList, scrollHeaderRowList, frozenHeaderHTMLViewport, scrollHeaderHTMLViewport, resetHeight) {\r\n var newHeaderHeight = 0;\r\n if (resetHeight) {\r\n $(frozenHeaderRowList).css(\"height\", \"\");\r\n $(scrollHeaderRowList).css(\"height\", \"\");\r\n }\r\n $(frozenHeaderRowList).each(function(x) {\r\n var thisRowHeight = frozenHeaderRowList[x].offsetHeight > scrollHeaderRowList[x].offsetHeight ?\r\n frozenHeaderRowList[x].offsetHeight : scrollHeaderRowList[x].offsetHeight;\r\n newHeaderHeight += thisRowHeight;\r\n fastdom.mutate(function () {\r\n scrollHeaderRowList[x].style.height = thisRowHeight + \"px\";\r\n frozenHeaderRowList[x].style.height = thisRowHeight + \"px\";\r\n });\r\n });\r\n fastdom.mutate(function() {\r\n frozenHeaderHTMLViewport.style.height = newHeaderHeight + 'px';\r\n scrollHeaderHTMLViewport.style.height = newHeaderHeight + 'px';\r\n });\r\n return newHeaderHeight;\r\n }\r\n\r\n\r\n function recalculateFrozenTableBodyHeight(frozenBodyRowList, scrollBodyRowList, resetHeight) {\r\n if (resetHeight) {\r\n $(frozenBodyRowList).css(\"height\", \"\");\r\n $(scrollBodyRowList).css(\"height\", \"\");\r\n }\r\n $(frozenBodyRowList).each(function (x) {\r\n fastdom.measure(function () {\r\n var thisRowHeight = frozenBodyRowList[x].offsetHeight > scrollBodyRowList[x].offsetHeight ?\r\n frozenBodyRowList[x].offsetHeight : scrollBodyRowList[x].offsetHeight;\r\n fastdom.mutate(function () {\r\n scrollBodyRowList[x].style.height = thisRowHeight + \"px\";\r\n frozenBodyRowList[x].style.height = thisRowHeight + \"px\";\r\n });\r\n });\r\n });\r\n }\r\n\r\n\r\n function recalculateFrozenTableViewport() {\r\n fastdom.measure(function () {\r\n var tableWidth = calculateTableWidth(),\r\n headerHeight = scrollTableViewport.css(\"top\");\r\n var scrollbarHeight = $('.scroll-table-viewport').height() - $('.scroll-table-viewport')[0].clientHeight;\r\n\r\n fastdom.mutate(function () {\r\n scrollTableViewport.width(tableWidth);\r\n scrollHeaderViewport.width(tableWidth - 16);\r\n scrollTableViewport.css(\"height\", \"calc(\" + frozenHeight + \"vh - \" + headerHeight + \")\");\r\n frozenTableViewport.css(\"height\", \"calc(\" + frozenHeight + \"vh - \" + headerHeight + \")\");\r\n frozenTableAfter.css(\"margin-top\", frozenHeight + \"vh\");\r\n\r\n if ($(\".scroll-table-container\").height() > $('.scroll-table-viewport').height()) {\r\n $('.frozen-table-viewport').height($('.scroll-table-viewport').height() + scrollbarHeight);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n // Only use if number of columns hasn't changed\r\n function redrawTableBody(bodyHTML) { \r\n var tbody = document.createElement('tbody');\r\n tbody.innerHTML = bodyHTML.trim();\r\n\r\n var frozenTableBody = $('.frozen-table-container tbody'),\r\n scrollTableBody = $('.scroll-table-container tbody');\r\n\r\n frozenTableBody.html('');\r\n scrollTableBody.html('');\r\n\r\n $.each(tbody.children, function (index, elem) {\r\n var cellIndex = 0;\r\n var frozenRow = elem.cloneNode(false);\r\n var scrollRow = elem.cloneNode(false);\r\n // Check to see if the entire row is a single cell. If so, it needs to be copied\r\n // into both table panes (usually this is the \"No records found\" row).\r\n if (elem.children.length === 1) {\r\n frozenRow.appendChild(elem.children[0].cloneNode(true));\r\n scrollRow.appendChild(elem.children[0]);\r\n } else {\r\n while (cellIndex < frozenColumnCount) {\r\n cellIndex += elem.children[0].colSpan;\r\n frozenRow.appendChild(elem.children[0]);\r\n }\r\n while (elem.children.length) {\r\n scrollRow.appendChild(elem.children[0]);\r\n }\r\n }\r\n frozenTableBody.append(frozenRow);\r\n scrollTableBody.append(scrollRow);\r\n });\r\n\r\n recalculateFrozenTableBodyHeight(frozenTableBody.children(), scrollTableBody.children());\r\n recalculateFrozenTableViewport();\r\n \r\n $('.scroll-table-viewport input').on('mouseenter', function () {\r\n useWindowScroll = true;\r\n }).on('mouseleave', function () {\r\n useWindowScroll = false;\r\n });\r\n }\r\n\r\n\r\n function getMaxVerticalSize() {\r\n return window.innerHeight - $('.site-top-navigation').outerHeight(true) - $('.site-fixed-top-content ').outerHeight(true) - scrollHeaderViewport.outerHeight(true) - 3;\r\n }\r\n\r\n\r\n function handleResize() {\r\n var frozenHeaderHTMLViewport = frozenHeaderViewport[0],\r\n scrollHeaderHTMLViewport = scrollHeaderViewport[0],\r\n frozenBodyHTMLViewport = frozenTableViewport[0],\r\n scrollBodyHTMLViewport = scrollTableViewport[0];\r\n frozenHeaderHTMLViewport.style.top = ($('.site-top-navigation').outerHeight(true) + $('.site-fixed-top-content ').outerHeight(true)) + 'px';\r\n scrollHeaderHTMLViewport.style.top = ($('.site-top-navigation').outerHeight(true) + $('.site-fixed-top-content ').outerHeight(true)) + 'px';\r\n frozenBodyHTMLViewport.style.top = (parseFloat(frozenHeaderHTMLViewport.style.top) + parseFloat(frozenHeaderHTMLViewport.style.height)) + 'px';\r\n scrollBodyHTMLViewport.style.top = (parseFloat(frozenHeaderHTMLViewport.style.top) + parseFloat(frozenHeaderHTMLViewport.style.height)) + 'px';\r\n recalculateFrozenTableViewport();\r\n if (scrollTableViewport.width() === 0) {\r\n if (!displayedTooSmallMessage) {\r\n var label = me.getLabel();\r\n frozenTableNotify.alert(label['ScreenToSmall']);\r\n displayedTooSmallMessage = true;\r\n }\r\n } else {\r\n displayedTooSmallMessage = false;\r\n }\r\n }\r\n\r\n /*\r\n * ========================================================================\r\n * Public Methods\r\n * ========================================================================\r\n */\r\n\r\n // set table resize\r\n child.setTableFrozenColumn = function (table) {\r\n if (!(table instanceof jQuery)) {\r\n table = table ? $(table) : $(ELEM);\r\n }\r\n if (!table.length) {\r\n return;\r\n }\r\n\r\n frozenColumnCount = +table.data('frozencount');\r\n frozenHeight = +table.data('frozenheight') > 0 ? +table.data('frozenheight') : 100;\r\n frozenTableAfter = $(\".table-frozen-after\");\r\n pageScroll = table.data(\"pagescroll\") === undefined ? true : table.data(\"pagescroll\");\r\n \r\n // Step 1: Size Table Correctly\r\n // Split up headers into frozen and scrollable tables\r\n var frozenHeaderRowList = [],\r\n scrollHeaderRowList = [],\r\n frozenColgroup = document.createElement('colgroup'),\r\n scrollColgroup = document.createElement('colgroup'),\r\n frozenTableWidth = 0,\r\n scrollTableWidth = 0;\r\n\r\n $.each(table.find('thead tr'), function (index, elem) {\r\n var headerIndex = 0, col, currentHeader;\r\n frozenHeaderRowList.push(elem.cloneNode(false));\r\n scrollHeaderRowList.push(elem.cloneNode(false));\r\n for (; headerIndex < frozenColumnCount;) {\r\n if (elem.children[0].dataset.width) {\r\n col = document.createElement('col');\r\n col.setAttribute('width', elem.children[0].dataset.width);\r\n frozenColgroup.appendChild(col);\r\n frozenTableWidth += +elem.children[0].dataset.width;\r\n }\r\n headerIndex += elem.children[0].colSpan;\r\n frozenHeaderRowList[index].appendChild(elem.children[0]);\r\n }\r\n while (elem.children.length) {\r\n if (elem.children[0].dataset.width) {\r\n col = document.createElement('col');\r\n col.setAttribute('width', elem.children[0].dataset.width);\r\n scrollColgroup.appendChild(col);\r\n scrollTableWidth += +elem.children[0].dataset.width;\r\n }\r\n scrollHeaderRowList[index].appendChild(elem.children[0]);\r\n }\r\n });\r\n\r\n // Upper left corner - frozen table headers\r\n var frozenThead = document.createElement('thead');\r\n for (var j = 0; j < frozenHeaderRowList.length; j++) {\r\n frozenThead.appendChild(frozenHeaderRowList[j]);\r\n }\r\n\r\n var frozenHeaderTableElement = document.createElement('table');\r\n frozenHeaderTableElement.className = 'fd-table pr-0';\r\n frozenHeaderTableElement.appendChild(frozenColgroup.cloneNode(true));\r\n frozenHeaderTableElement.appendChild(frozenThead);\r\n\r\n var frozenHeaderHTMLContainer = document.createElement('div');\r\n frozenHeaderHTMLContainer.className = 'frozen-header-container';\r\n frozenHeaderHTMLContainer.style.top = 0;\r\n frozenHeaderHTMLContainer.style.left = 0;\r\n frozenHeaderHTMLContainer.style.width = frozenTableWidth + 'px';\r\n frozenHeaderHTMLContainer.appendChild(frozenHeaderTableElement);\r\n\r\n var frozenHeaderHTMLViewport = document.createElement('div');\r\n frozenHeaderHTMLViewport.className = 'frozen-header-viewport';\r\n frozenHeaderHTMLViewport.style.top = ($('.site-top-navigation').outerHeight(true) + $('.site-fixed-top-content ').outerHeight(true)) + 'px';\r\n frozenHeaderHTMLViewport.style.left = '0';\r\n frozenHeaderHTMLViewport.style.width = frozenTableWidth + 'px';\r\n frozenHeaderHTMLViewport.appendChild(frozenHeaderHTMLContainer);\r\n\r\n // Upper right corner - scrollable table headers\r\n var scrollThead = document.createElement('thead');\r\n for (var k = 0; k < scrollHeaderRowList.length; k++) {\r\n scrollThead.appendChild(scrollHeaderRowList[k]);\r\n }\r\n var scrollHeaderTableElement = document.createElement('table');\r\n scrollHeaderTableElement.className = 'fd-table pr-0';\r\n scrollHeaderTableElement.appendChild(scrollColgroup.cloneNode(true));\r\n scrollHeaderTableElement.appendChild(scrollThead);\r\n\r\n var scrollHeaderHTMLContainer = document.createElement('div');\r\n scrollHeaderHTMLContainer.className = 'scroll-header-container';\r\n scrollHeaderHTMLContainer.style.top = 0;\r\n scrollHeaderHTMLContainer.style.left = 0;\r\n scrollHeaderHTMLContainer.style.width = scrollTableWidth + 'px';\r\n scrollHeaderHTMLContainer.appendChild(scrollHeaderTableElement);\r\n\r\n var scrollHeaderHTMLViewport = document.createElement('div');\r\n scrollHeaderHTMLViewport.className = 'scroll-header-viewport';\r\n scrollHeaderHTMLViewport.style.top = ($('.site-top-navigation').outerHeight(true) + $('.site-fixed-top-content ').outerHeight(true)) + 'px';\r\n scrollHeaderHTMLViewport.style.left = frozenHeaderHTMLViewport.style.width;\r\n scrollHeaderHTMLViewport.style.width = scrollTableWidth + \"px\";\r\n // width is caluclated farther down based on screen size\r\n scrollHeaderHTMLViewport.appendChild(scrollHeaderHTMLContainer);\r\n\r\n // Add headers to page so we can calculate their height now that column sizes are different\r\n var bodyContent = $('.site-body-content')[0];\r\n bodyContent.appendChild(frozenHeaderHTMLViewport);\r\n bodyContent.appendChild(scrollHeaderHTMLViewport);\r\n\r\n var newRowHeight = recalculateFrozenTableHeadHeight(frozenHeaderRowList, scrollHeaderRowList, frozenHeaderHTMLViewport, scrollHeaderHTMLViewport)\r\n\r\n // Body\r\n var frozenBodyRowList = [],\r\n scrollBodyRowList = [];\r\n\r\n $.each(table.find('tbody tr'), function (index, elem) {\r\n var cellIndex = 0, currentCell;\r\n frozenBodyRowList.push(elem.cloneNode(false));\r\n scrollBodyRowList.push(elem.cloneNode(false));\r\n // Check to see if the entire row is a single cell. If so, it needs to be copied\r\n // into both table panes (usually this is the \"No records found\" row).\r\n if (elem.children.length === 1) {\r\n frozenBodyRowList[index].appendChild(elem.children[0].cloneNode(true));\r\n scrollBodyRowList[index].appendChild(elem.children[0]);\r\n } else {\r\n while (cellIndex < frozenColumnCount) {\r\n cellIndex += elem.children[0].colSpan;\r\n frozenBodyRowList[index].appendChild(elem.children[0]);\r\n }\r\n while (elem.children.length) {\r\n scrollBodyRowList[index].appendChild(elem.children[0]);\r\n }\r\n }\r\n });\r\n\r\n // Bottom left corner - frozen table columns\r\n var frozenTbody = document.createElement('tbody');\r\n for (var l = 0; l < frozenBodyRowList.length; l++) {\r\n frozenTbody.appendChild(frozenBodyRowList[l]);\r\n }\r\n\r\n var frozenBodyTableElement = document.createElement('table');\r\n frozenBodyTableElement.className = 'fd-table pr-0';\r\n frozenBodyTableElement.appendChild(frozenColgroup);\r\n frozenBodyTableElement.appendChild(frozenTbody);\r\n\r\n var frozenBodyHTMLContainer = document.createElement('div');\r\n frozenBodyHTMLContainer.className = 'frozen-table-container';\r\n frozenBodyHTMLContainer.style.top = 0;\r\n frozenBodyHTMLContainer.style.left = 0;\r\n frozenBodyHTMLContainer.style.width = frozenTableWidth + 'px';\r\n frozenBodyHTMLContainer.appendChild(frozenBodyTableElement);\r\n\r\n var frozenBodyHTMLViewport = document.createElement('div');\r\n frozenBodyHTMLViewport.className = 'frozen-table-viewport';\r\n frozenBodyHTMLViewport.style.top = (parseFloat(frozenHeaderHTMLViewport.style.top) + newRowHeight) + 'px';\r\n frozenBodyHTMLViewport.style.left = '0';\r\n frozenBodyHTMLViewport.style.width = frozenTableWidth + 'px';\r\n // Height gets calculated farther down based on window size\r\n frozenBodyHTMLViewport.appendChild(frozenBodyHTMLContainer);\r\n\r\n // Bottom right corner - scrollable table columns\r\n var scrollTbody = document.createElement('tbody');\r\n if ($('tbody', table).data('fd') === 'excel-navigation') {\r\n $(scrollTbody).attr('data-fd', 'excel-navigation');\r\n }\r\n for (var x = 0; x < scrollBodyRowList.length; x++) {\r\n scrollTbody.appendChild(scrollBodyRowList[x]);\r\n }\r\n\r\n var scrollBodyTableElement = document.createElement('table');\r\n scrollBodyTableElement.className = 'fd-table pr-0';\r\n scrollBodyTableElement.appendChild(scrollColgroup);\r\n scrollBodyTableElement.appendChild(scrollTbody);\r\n\r\n var scrollBodyHTMLContainer = document.createElement('div');\r\n scrollBodyHTMLContainer.className = 'scroll-table-container';\r\n scrollBodyHTMLContainer.style.top = 0;\r\n scrollBodyHTMLContainer.style.left = 0;\r\n scrollBodyHTMLContainer.style.width = scrollTableWidth + 'px';\r\n scrollBodyHTMLContainer.appendChild(scrollBodyTableElement);\r\n\r\n var scrollBodyHTMLViewport = document.createElement('div');\r\n scrollBodyHTMLViewport.className = 'scroll-table-viewport';\r\n scrollBodyHTMLViewport.style.top = (parseFloat(frozenHeaderHTMLViewport.style.top) + newRowHeight) + 'px';\r\n scrollBodyHTMLViewport.style.left = frozenHeaderHTMLViewport.style.width;\r\n // Height and width get calculated farther down\r\n scrollBodyHTMLViewport.appendChild(scrollBodyHTMLContainer);\r\n\r\n bodyContent.appendChild(frozenBodyHTMLViewport);\r\n bodyContent.appendChild(scrollBodyHTMLViewport);\r\n\r\n recalculateFrozenTableBodyHeight(frozenBodyRowList, scrollBodyRowList);\r\n\r\n $(table).remove();\r\n\r\n // Save frequently referenced elements\r\n scrollHeaderViewport = $('.scroll-header-viewport');\r\n scrollHeaderContainer = scrollHeaderViewport.find('div');\r\n scrollTableViewport = $('.scroll-table-viewport');\r\n scrollTableContainer = scrollTableViewport.find('div');\r\n frozenHeaderViewport = $('.frozen-header-viewport');\r\n frozenHeaderContainer = frozenHeaderViewport.find('div');\r\n frozenTableViewport = $('.frozen-table-viewport');\r\n frozenTableContainer = frozenTableViewport.find('div');\r\n\r\n recalculateFrozenTableViewport();\r\n\r\n // Setup event listeners\r\n var syncRight, syncLeft;\r\n $('.scroll-table-viewport').off('scroll').on('scroll', function () {\r\n if (!syncRight) {\r\n syncLeft = true;\r\n var top = $(this).scrollTop();\r\n var left = $(this).scrollLeft();\r\n\r\n if ($.browser.msedge || $.browser.msie) {\r\n var obj = $(this)[0];\r\n var scrollPercent = obj.scrollTop / (obj.scrollHeight - obj.clientHeight);\r\n if (true) {\r\n top += 10 * scrollPercent;\r\n }\r\n }\r\n\r\n frozenTableViewport.scrollTop(top);\r\n scrollHeaderViewport.scrollLeft(left);\r\n }\r\n syncRight = false;\r\n });\r\n $('.frozen-table-viewport').off('scroll').on('scroll', function () {\r\n if (!syncLeft) {\r\n syncRight = true;\r\n var top = $(this).scrollTop();\r\n\r\n if ($.browser.msedge || $.browser.msie) {\r\n var obj = $(this)[0];\r\n var scrollPercent = obj.scrollTop / (obj.scrollHeight - obj.clientHeight);\r\n if (true) {\r\n top -= 10 * scrollPercent;\r\n }\r\n }\r\n\r\n scrollTableViewport.scrollTop(top);\r\n }\r\n syncLeft = false;\r\n });\r\n if (pageScroll) {\r\n $('.scroll-table-viewport,.frozen-table-viewport').on('mouseenter', function (event) {\r\n useWindowScroll = false;\r\n }).on('mouseleave', function () {\r\n useWindowScroll = true;\r\n });\r\n $('.scroll-table-viewport input').on('mouseenter', function () {\r\n useWindowScroll = true;\r\n }).on('mouseleave', function () {\r\n useWindowScroll = false;\r\n });\r\n }\r\n\r\n if (!setWindowScrollFunctionality) {\r\n window.addEventListener('wheel', function (event) {\r\n if (pageScroll && useWindowScroll && $(event.target).parents('[data-fd=\"scroll\"]').length === 0) {\r\n // Firefox reports deltaY in lines instead of pixels\r\n if (event.deltaMode === 1) {\r\n scrollTableViewport\r\n .scrollTop(Math.floor(scrollTableViewport.scrollTop() + event.deltaY * 40))\r\n .scrollLeft(Math.floor(scrollTableViewport.scrollLeft() + event.deltaX)).scroll();\r\n } else {\r\n scrollTableViewport\r\n .scrollTop(Math.floor(scrollTableViewport.scrollTop() + event.deltaY))\r\n .scrollLeft(Math.floor(scrollTableViewport.scrollLeft() + event.deltaX)).scroll();\r\n }\r\n }\r\n });\r\n\r\n setWindowScrollFunctionality = true;\r\n }\r\n\r\n $(window).off('resize.frozentable', handleResize).on('resize.frozentable', handleResize);\r\n };\r\n\r\n\r\n child.redrawFrozenTableBody = function (bodyHTML) {\r\n redrawTableBody(bodyHTML);\r\n };\r\n\r\n\r\n child.redrawFrozenTableHead = function (headHTML) {\r\n redrawTableHead(headHTML);\r\n };\r\n\r\n\r\n // Recalculate total height of table (usually after adding/removing rows) to see if the horizontal scroll bar needs to be repositioned\r\n child.recalculateFrozenTableHeight = function () {\r\n var frozenTableBody = frozenTableContainer.find('tbody')[0],\r\n scrollTableBody = scrollTableContainer.find('tbody')[0],\r\n frozenTableHead = $('.frozen-header-container thead')[0],\r\n scrollTableHead = $('.scroll-header-container thead')[0];\r\n\r\n recalculateFrozenTableHeadHeight(frozenTableHead.children, scrollTableHead.children, frozenHeaderViewport[0], scrollHeaderViewport[0], true);\r\n recalculateFrozenTableBodyHeight(frozenTableBody.children, scrollTableBody.children, true);\r\n\r\n recalculateFrozenTableViewport();\r\n };\r\n\r\n \r\n child.showScrollTableColumns = function (startCol, endCol) {\r\n var self = this;\r\n var useRange = (startCol >= 0 && endCol >= 0);\r\n\r\n // get width of table\r\n var thMainList = scrollHeaderContainer.find('[data-width]');\r\n thMainList.each(function (i) {\r\n if (!useRange || (this.cellIndex >= startCol && this.cellIndex <= endCol)) {\r\n $(this).removeClass('hidden');\r\n }\r\n\r\n if (!$(this).hasClass('hidden')) {\r\n self._tableWidth += parseInt($(this).width());\r\n scrollTableContainer.find(\"tr td:nth-child(\" + (this.cellIndex + 1) + \")\").removeClass('hidden');\r\n scrollHeaderContainer.find(\"colgroup col:nth-child(\" + (this.cellIndex + 1) + \")\").removeClass('hidden');\r\n }\r\n });\r\n $('[data-noresults=true] td', scrollTableContainer).attr('colspan', thMainList.filter(\":visible\").length);\r\n\r\n child.recalculateScrollTableWidth();\r\n };\r\n // Hide columns in range\r\n child.hideScrollTableColumns = function (startCol, endCol) {\r\n var self = this;\r\n\r\n var thMainList = scrollHeaderContainer.find('[data-width]');\r\n thMainList.each(function (i) {\r\n if (i >= startCol && i <= endCol) {\r\n $(this).addClass('hidden');\r\n scrollTableContainer.find(\"tr td:nth-child(\" + (this.cellIndex + 1) + \")\").addClass('hidden');\r\n scrollHeaderContainer.find(\"colgroup col:nth-child(\" + (this.cellIndex + 1) + \")\").addClass('hidden');\r\n }\r\n });\r\n $('[data-noresults=true] td', scrollTableContainer).attr('colspan', thMainList.filter(\":visible\").length);\r\n\r\n child.recalculateScrollTableWidth();\r\n };\r\n // Recalculate width of scrolling table container (usually after hiding/showing columns) to see if the horizontal scroll bar should be adjusted\r\n child.recalculateScrollTableWidth = function () {\r\n var scrollTableWidth = 0;\r\n scrollHeaderContainer.find('[data-width]:not(.hidden)').each(function () {\r\n scrollTableWidth += +this.dataset.width;\r\n });\r\n scrollHeaderContainer[0].style.width = scrollTableWidth + \"px\";\r\n scrollTableContainer[0].style.width = scrollTableWidth + \"px\";\r\n };\r\n\r\n\r\n // Recalcualte the table frames, viewport, and scrollbars.\r\n child.recalculateFrozenTableViewport = function () {\r\n handleResize();\r\n }\r\n \r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n var ELEM = '.fd-table';\r\n\r\n $.widget(\"custom.tableInPage\", {\r\n _sortCtrl: {\r\n none: \"\",\r\n asc: \"\",\r\n desc: \"\",\r\n },\r\n _scrollDelay: null,\r\n _sortTHList: null,\r\n _currentSortID: null,\r\n\r\n options: {\r\n collapserow: false,\r\n fixedheader: false,\r\n fixedcontainer: null,\r\n sort: false,\r\n defaultScrollbarWidth: 17,\r\n zIndex: 112\r\n },\r\n _create: function () {\r\n $.extend(this.options, this.element.data());\r\n\r\n if (this.options.sort) {\r\n this._setSortableColumn();\r\n }\r\n \r\n if (this.options.fixedheader && this.element[0].offsetParent) {\r\n this._setFixedHeader();\r\n }\r\n if (this.options.collapserow) {\r\n this._setCollapseRow();\r\n }\r\n\r\n this.element.addClass(\"table-in-page\");\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n\r\n },\r\n _destroy: function () {\r\n this.element.removeClass(\"table-resize\");\r\n\r\n $(document).off('click.sort', '.sort-control', this._handleColumnSort);\r\n\r\n var id = me.getUID('TBL_');\r\n $('#' + id).off('click', '', this._handleCollapseHandle);\r\n this.element.find(\".COLLAPSEHANDLE\").remove();\r\n\r\n this.element.floatThead(\"destroy\");\r\n this._sortTHList.find('.sort-ctrl').remove();\r\n\r\n if (this._scrollDelay) {\r\n clearTimeout(this._scrollDelay);\r\n }\r\n },\r\n\r\n \r\n _setFixedHeader: function () {\r\n var self = this;\r\n\r\n if (this.options.headerfixset || this.options.headerfixset === true) {\r\n this.element.floatThead(\"destroy\");\r\n }\r\n if (this.options.fixedcontainer) {\r\n if (!this.element.hasClass('wp-100') && this.element.closest(this.options.fixedcontainer).width() - this.element.outerWidth() >= this.options.defaultScrollbarWidth) {\r\n this.element.closest(this.options.fixedcontainer).css('overflow-y', 'scroll'); // Necessary to correctly set width in Internet Explorer\r\n }\r\n if (this.options.sizingrow !== undefined) {\r\n this.element.floatThead({\r\n scrollContainer: function ($table) {\r\n return $table.closest(self.options.fixedcontainer);\r\n },\r\n getSizingRow: function ($table, $cols, $fthCells) {\r\n return $table.find('tbody tr:eq(' + self.options('sizingrow') + ') td');\r\n },\r\n zIndex: this.options.zIndex,\r\n support: {\r\n perfectScrollbar: true\r\n }\r\n });\r\n } else {\r\n this.element.floatThead({\r\n scrollContainer: function ($table) {\r\n return $table.closest(self.options.fixedcontainer);\r\n },\r\n zIndex: this.options.zIndex\r\n });\r\n }\r\n } else {\r\n this.element.floatThead({\r\n top: $('.site-fixed-top-content').height() + $('.site-top-navigation').height() - 1,\r\n zIndex: this.options.zIndex\r\n });\r\n }\r\n this.options.headerfixset = true;\r\n this.element.attr('data-headerfixset', true);\r\n },\r\n\r\n\r\n // Enable ability to collapse rows so that text doesn't wrap (hides overflow)\r\n _setCollapseRow: function() {\r\n var firstTH = this.element.find(\"th:first-child\");\r\n var collapseIcon = (this.options.isrowcollapsed) ? \"fa-expand\" : \"fa-compress\";\r\n var id = me.getUID('TBL_');\r\n var collapseElem = \"
    \";\r\n\r\n this.element.find(\".COLLAPSEHANDLE\").remove();\r\n firstTH.append(collapseElem);\r\n $('#' + id).on('click', '', this, this._handleCollapseHandle);\r\n },\r\n _handleCollapseHandle: function (event) {\r\n event.preventDefault();\r\n var self = event.data;\r\n\r\n if (self.element.hasClass('nowrap')) {\r\n self.element.removeClass('nowrap');\r\n $(this).children('i').removeClass('fa-expand').addClass('fa-compress');\r\n element.data('isrowcollapsed', false).attr('isrowcollapsed', false);\r\n } else {\r\n self.element.addClass('nowrap');\r\n $(this).children('i').removeClass('fa-compress').addClass('fa-expand');\r\n self.element.data('isrowcollapsed', true).attr('isrowcollapsed', true);\r\n }\r\n },\r\n\r\n\r\n // sortable column\r\n _setSortableColumn: function () {\r\n var self = this;\r\n var options = {\r\n tag: this.options.sorttag || 82,\r\n callback: me.setCallBackPrefix(this.options.callbackprefix || 1),\r\n sortid: 0\r\n };\r\n this._sortTHList = this.element.find(\"th[data-fd='thsort']\");\r\n if (this._sortTHList.length) {\r\n this._sortTHList.each(function (i) {\r\n var th = $(this);\r\n if (th.data('direction') != undefined) {\r\n options.direction = th.data('direction').toString();\r\n options.initialdir = th.data('initialdir');\r\n } else {\r\n options.direction = 'none';\r\n options.initialdir = th.data('initialdir');\r\n }\r\n options.sortfield = th.data('sortfield') || 'noFldName';\r\n\r\n th.data(options).attr('id', me.getUID('SRT_'));\r\n\r\n self._setSortColumnIcon(th, options.direction);\r\n });\r\n\r\n $(document).on('click.sort', '.sort-control', this, this._handleColumnSort);\r\n }\r\n },\r\n _setSortColumnIcon: function (th, direction) {\r\n direction = direction.toLowerCase();\r\n th.removeClass('sort-control').find('.sort-ctrl').remove();\r\n\r\n switch (direction) {\r\n case '0':\r\n case 'asc':\r\n case 'ascending':\r\n th.prepend(this._sortCtrl.asc).addClass('sort-control').addClass('in').data('sortid', 0);\r\n break;\r\n case '1':\r\n case 'desc':\r\n case 'descending':\r\n th.prepend(this._sortCtrl.desc).addClass('sort-control').addClass('in').data('sortid', 1);\r\n break;\r\n default:\r\n th.prepend(this._sortCtrl.none).addClass('sort-control').removeClass('in').data('sortid', -1);\r\n break;\r\n }\r\n },\r\n _handleColumnSort: function (event) {\r\n if ($(event.target).is(\"input,select,textara\")) {\r\n return;\r\n }\r\n event.preventDefault();\r\n\r\n var self = event.data;\r\n\r\n var th = $(this);\r\n var data = th.data();\r\n\r\n if (self._currentSortID !== null || self._currentSortID !== th.attr('id')) {\r\n self._sortTHList.not(this).each(function (i) {\r\n var child = $(this);\r\n self._setSortColumnIcon(child, 'none');\r\n });\r\n }\r\n\r\n if (this._scrollDelay) {\r\n clearTimeout(this._scrollDelay);\r\n }\r\n this._scrollDelay = setTimeout(function () {\r\n th.find('.sort-ctrl').remove();\r\n\r\n switch (data.sortid) {\r\n case 0:\r\n th.prepend(self._sortCtrl.desc).addClass('in');\r\n th.data('sortid', 1);\r\n break;\r\n case 1:\r\n th.prepend(self._sortCtrl.asc).addClass('in');\r\n th.data('sortid', 0)\r\n break;\r\n default:\r\n if (data.initialdir == 0 || (typeof data.initialdir === 'string' && data.initialdir.toLowerCase().startsWith('asc'))) {\r\n th.prepend(self._sortCtrl.asc).addClass('in');\r\n th.data('sortid', 0);\r\n } else {\r\n th.prepend(self._sortCtrl.desc).addClass('in');\r\n th.data('sortid', 1);\r\n }\r\n break;\r\n }\r\n\r\n data = th.data();\r\n me.setCallBackFromData(th, { e: th, value: data.sortid, tag: data.tag, sortfield: data.sortfield, parentid: null });\r\n }, 300);\r\n }, \r\n\r\n resetFixedTableHeader: function () {\r\n if (this.options.fixedcontainer) {\r\n this.element.floatThead('reflow');\r\n } else {\r\n this.element.floatThead('destroy');\r\n this.element.floatThead({\r\n top: $('.site-fixed-top-content').height() + $('.site-top-navigation').height() - 1,\r\n zIndex: this.options.zIndex\r\n });\r\n }\r\n this.element.attr('data-headerfixset', true);\r\n }\r\n\r\n });\r\n\r\n\r\n // set table in page\r\n child.setTableInPage = function (container, defaults) {\r\n var list = '';\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.is(ELEM) ? container : container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n return $(list).tableInPage(defaults);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n // Constants\r\n var ELEM = '[data-fd=\"table-resize\"]',\r\n NORESIZE_ELEM = '[data-fd=\"noresize\"]';\r\n\r\n $.widget(\"custom.tableResize\", {\r\n _sortCtrl: {\r\n none: \"\",\r\n asc: \"\",\r\n desc: \"\",\r\n },\r\n _scrollDelay: null,\r\n _sortTHList: null,\r\n _currentSortID: null,\r\n _tableWidth: 0,\r\n _highlightClass: null,\r\n _highlightChild: null,\r\n options: {\r\n element: '',\r\n child: null,\r\n childid: '',\r\n resize: true,\r\n collapserow: false,\r\n isrowcollapsed: false,\r\n ishighlight: true,\r\n ishighlightFirstRecord: true,\r\n ishighlightborder: true,\r\n sortable: false,\r\n sortabletag: 901,\r\n headersort: false,\r\n sorttag: 82,\r\n useheaderrow: null,\r\n handle: '.handle',\r\n callback: 'PAGE.getAfterControlEvent',\r\n callbackprefix: 1\r\n },\r\n _create: function () {\r\n $.extend(this.options, this.element.data());\r\n\r\n this.element.addClass(\"table-resize\");\r\n // If use header row isn't defined, assume the last header row is the master one\r\n if (this.options.useheaderrow === null) {\r\n this.options.useheaderrow = this.element.find('thead tr').length - 1;\r\n }\r\n\r\n if (this.options.child !== null) {\r\n var child = $(this.options.child);\r\n if (child.length > 0) {\r\n this.options.child = child;\r\n this.options.childlength = child.length;\r\n this.options.childid = '#' + child[0].id;\r\n } else {\r\n this.options.child = null;\r\n this.options.childlength = 0;\r\n this.options.childwrapper = null;\r\n }\r\n } else {\r\n this.options.child = this.element;\r\n }\r\n\r\n this.element.data(this.options); // NOTE: This should eventualy be removed.\r\n\r\n if (this.options.collapserow) {\r\n this._setCollapseRow();\r\n }\r\n\r\n if (this.options.headersort) {\r\n this._setHeaderSort();\r\n }\r\n this._initChildTable();\r\n\r\n if (this.options.resize) {\r\n this._setTableResize();\r\n }\r\n\r\n if (this.options.sortable) {\r\n this._setSortable();\r\n }\r\n\r\n if (this.options.ishighlight) {\r\n this._setHighlightRow();\r\n }\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n },\r\n _destroy: function () {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n this.element.removeClass(\"table-resize\");\r\n this.element\r\n .off('click.sort', '.sort-control', this._clickColumnSort)\r\n .off('click.' + NAMESPACE, '#COLLAPSETABLE', this._clickCollapseTable)\r\n .removeAttr(\"style\");\r\n $(this.options.child)\r\n .off('click.highlighttablerow', '', this._highLightByTarget)\r\n .off('keyup.highlighttablerow', '', this._highLightByTarget)\r\n .removeAttr(\"style\");\r\n\r\n var thMainList = this.element.find(\"tr:eq(\" + this.options.useheaderrow + \") th\");\r\n thMainList.each(function () {\r\n $(this).addClass($(this).data(\"widthClass\"));\r\n });\r\n\r\n $('colgroup', this.element).remove();\r\n $('colgroup', this.options.child).remove();\r\n },\r\n\r\n /* ========================================================================\r\n * header sort\r\n * ========================================================================*/\r\n\r\n _setHeaderSort: function () {\r\n var self = this;\r\n var options = {\r\n tag: this.options.sorttag,\r\n callback: me.setCallBackPrefix(this.options.callbackprefix),\r\n sortid: 0\r\n };\r\n\r\n this._sortTHList = this.element.find(\"th[data-fd='thsort']\");\r\n if (this._sortTHList.length) {\r\n this._sortTHList.each(function (i) {\r\n var th = $(this);\r\n if (th.data('direction') != undefined) {\r\n options.direction = th.data('direction').toString();\r\n options.initialdir = options.direction;\r\n } else {\r\n options.direction = 'none';\r\n options.initialdir = th.data('initialdir');\r\n }\r\n\r\n options.sortfield = th.data('sortfield') || 'noFldName';\r\n\r\n th.data(options);\r\n th.attr('id', me.getUID('SRT_'));\r\n\r\n self._setSortColumnIcon(th, options.direction);\r\n });\r\n\r\n $(this.element).on('click.sort', '.sort-control', this, this._clickColumnSort);\r\n }\r\n },\r\n _setSortColumnIcon: function (th, direction) {\r\n direction = direction.toLowerCase();\r\n\r\n th.removeClass('sort-control');\r\n th.find('.sort-ctrl').remove();\r\n\r\n switch (direction) {\r\n case '0':\r\n case 'asc':\r\n case 'ascending':\r\n th.prepend(this._sortCtrl.asc).addClass('sort-control').addClass('in');\r\n th.data('sortid', 0);\r\n break;\r\n case '1':\r\n case 'desc':\r\n case 'descending':\r\n th.prepend(this._sortCtrl.desc).addClass('sort-control').addClass('in');\r\n th.data('sortid', 1);\r\n break;\r\n default:\r\n th.prepend(this._sortCtrl.none).addClass('sort-control').removeClass('in');\r\n th.data('sortid', -1);\r\n break;\r\n }\r\n },\r\n _clickColumnSort: function (event) {\r\n event.preventDefault();\r\n var self = event.data;\r\n var th = $(this);\r\n var data = th.data();\r\n var sortid = data.sortid;\r\n var id = th.attr('id');\r\n\r\n if (self._currentSortID !== null || self._currentSortID !== id) {\r\n self._sortTHList.not(this).each(function (i) {\r\n self._setSortColumnIcon(th, 'none');\r\n });\r\n }\r\n\r\n if (self._scrollDelay) {\r\n clearTimeout(self._scrollDelay);\r\n }\r\n self._scrollDelay = setTimeout(function () {\r\n th.find('.sort-ctrl').remove();\r\n switch (sortid) {\r\n case 0:\r\n th.prepend(self._sortCtrl.desc).addClass('in');\r\n th.data('sortid', 1);\r\n break;\r\n case 1:\r\n th.prepend(self._sortCtrl.asc).addClass('in');\r\n th.data('sortid', 0)\r\n break;\r\n case -1:\r\n if (data.initialdir == 0 || (typeof data.initialdir === 'string' && data.initialdir.toLowerCase().startsWith('asc'))) {\r\n th.prepend(self._sortCtrl.asc).addClass('in');\r\n th.data('sortid', 0);\r\n } else {\r\n th.prepend(self._sortCtrl.desc).addClass('in');\r\n th.data('sortid', 1);\r\n }\r\n break;\r\n }\r\n\r\n data = th.data();\r\n me.setCallBackFromData(th, { e: th, value: data.sortid, tag: data.tag, sortfield: data.sortfield, parentid: null });\r\n }, 300);\r\n },\r\n\r\n /* ========================================================================\r\n * resize\r\n * ========================================================================*/\r\n\r\n _setTableResize: function () {\r\n var options = {\r\n handles: 'e',\r\n stop: this._stopResize,\r\n resize: this._resizeColGroup,\r\n helper: \"ui-resizable-handle\"\r\n };\r\n this.element.find(\"tr:eq(\" + this.options.useheaderrow + \") th:not(\" + NORESIZE_ELEM + \")\").resizable(options);\r\n },\r\n _stopResize: function (event, ui) {\r\n var self = $(this).closest(\"table\").data(\"custom-tableResize\");\r\n var elem = $(this);\r\n var props = {\r\n col: elem,\r\n parent: elem.parents('table'),\r\n index: elem.index() + 1,\r\n width: ui.originalSize.width,\r\n newwidth: ui.size.width,\r\n diff: (ui.size.width - ui.originalSize.width)\r\n };\r\n $('colgroup', self.element).find('col:eq(' + elem[0].cellIndex + ')').attr('width', props.newwidth);\r\n self._tableWidth = self._tableWidth + (props.diff);\r\n\r\n self.element.css('width', self._tableWidth);\r\n self.options.child.css('width', self._tableWidth);\r\n\r\n me.setPageDimension();\r\n },\r\n _resizeColGroup: function (event, ui) {\r\n var self = $(this).closest(\"table\").data(\"custom-tableResize\");\r\n $('colgroup', self.options.child).find('col:eq(' + ui.element[0].cellIndex + ')').attr('width', ui.size.width);\r\n if (self.options.child != self.element) {\r\n $('colgroup', self.element).find('col:eq(' + ui.element[0].cellIndex + ')').attr('width', ui.size.width);\r\n }\r\n },\r\n\r\n /* ========================================================================\r\n * highlight\r\n * ========================================================================*/\r\n\r\n _setHighlightRow: function () {\r\n this._highlightClass = this.options.ishighlightborder ? \"highlight-child-withborder\" : \"highlight-child\";\r\n this._highlightChild = this.options.child ? $(\"tbody\", this.options.child) : $(\"tbody\", this.element);\r\n // add highlight to 1st row\r\n if (this.options.ishighlightFirstRecord) {\r\n this._highlightChild.find('tr:eq(0)').addClass(this._highlightClass);\r\n }\r\n\r\n $(this.options.child)\r\n .on('click.highlighttablerow', '', this, this._highLightByTarget)\r\n .on('keyup.highlighttablerow', '', this, this._highLightByTarget);\r\n },\r\n _highLightByTarget: function (event) {\r\n if ($(event.target).is(\"table\")) {\r\n return;\r\n }\r\n var self = event.data;\r\n if (self._highlightChild.find(event.target).length) {\r\n var tr = $(event.target).parents('tr');\r\n self._highlightChild.find('tr').removeClass(self._highlightClass);\r\n if (tr.data('nohighlight') === true) {\r\n return;\r\n }\r\n\r\n tr.addClass(self._highlightClass);\r\n } else {\r\n self._highlightChild.find('tr').not('.static').removeClass(self._highlightClass);\r\n }\r\n },\r\n\r\n /* ========================================================================\r\n * sortable\r\n * ========================================================================*/\r\n\r\n _setSortable: function () {\r\n var options = this.options;\r\n var afterStop = this._afterStop\r\n var stopCallback = function (event) {\r\n return afterStop(event, options);\r\n }\r\n this.options.child.find('tbody').sortable({\r\n axis: 'y',\r\n helper: this._helper,\r\n cursor: 'ns-resize',\r\n containment: 'parent',\r\n handle: this.options.handle,\r\n stop: stopCallback // call a function \r\n });\r\n },\r\n _helper: function (e, ui) {\r\n ui.children().each(function () {\r\n $(this).width($(this).width());\r\n });\r\n return ui;\r\n },\r\n _afterStop: function (event, options) {\r\n var table = $(event.target);\r\n var result = '';\r\n table.find('tr').each(function (i) {\r\n var elem = $(this);\r\n var counter = elem.find('.row-counter');\r\n var id = elem.data('parentid');\r\n\r\n counter.html(i + 1);\r\n\r\n if (id !== undefined) {\r\n result += id + '|';\r\n }\r\n });\r\n result = result.replace(/\\|$/, \"\");\r\n table.attr('data-sortedids', result).data(\"sortedids\", result);\r\n me.setCallBackFromData(options[\"custom-tableResize\"].element, { e: table, value: result, tag: options.sortabletag || -1, parentid: -1 });\r\n },\r\n\r\n /* ========================================================================\r\n * collapseable\r\n * ========================================================================*/\r\n\r\n _setCollapseRow: function() {\r\n var firstTH = this.element.find(\"tr:first-child th:first-child\");\r\n var collapseIcon = (this.options.isrowcollapsed) ? \"fa-expand\" : \"fa-compress\";\r\n $('#COLLAPSEHANDLE', this.element).remove();\r\n\r\n var collapseElem = \"
    \";\r\n firstTH.append(collapseElem);\r\n\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n if (this.options.isrowcollapsed) {\r\n this.options.child.addClass('nowrap');\r\n }\r\n\r\n $(this.element).on('click.' + NAMESPACE, '#COLLAPSETABLE', this, this._clickCollapseTable);\r\n },\r\n _clickCollapseTable: function (event) {\r\n var elem = $(this);\r\n var self = event.data;\r\n\r\n if (self.options.child.hasClass('nowrap')) {\r\n self.options.child.removeClass('nowrap');\r\n elem.children('i').removeClass('fa-expand').addClass('fa-compress');\r\n } else {\r\n self.options.child.addClass('nowrap');\r\n elem.children('i').removeClass('fa-compress').addClass('fa-expand');\r\n }\r\n },\r\n\r\n /* ========================================================================\r\n * child table\r\n * ========================================================================*/\r\n\r\n _initChildTable: function() {\r\n var thMainList = this.element.find(\"tr:eq(\" + this.options.useheaderrow + \") th\");\r\n var colgroupHTML = '';\r\n thMainList.each(function () {\r\n var th = $(this);\r\n th.data(\"widthClass\", ((th.attr('class') || '').match(/(^|\\s)w-\\S+/g) || [])[0]);\r\n var width = Number(((th.attr('class') || '').match(/(^|\\s)w-\\S+/g) || []).join(' ').replace(\"w-\", ''));\r\n colgroupHTML += '';\r\n this._tableWidth += (th.hasClass('hidden')) ? 0 : width;\r\n\r\n // remove width class\r\n th.removeClass(function (index, css) {\r\n return (css.match(/(^|\\s)w-\\S+/g) || []).join(' ');\r\n });\r\n });\r\n colgroupHTML += '';\r\n $('colgroup', this.element).remove(); // Sizes will reset, but avoids scenario where header and child might get out of sync\r\n this.element.css('width', this._tableWidth).prepend(colgroupHTML);\r\n if(this.options.child) {\r\n $('colgroup', this.options.child).remove();\r\n this.options.child.css('width', this._tableWidth).prepend(colgroupHTML);\r\n this.options.child.removeClass('hidden');\r\n }\r\n me.setPageDimension();\r\n },\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================*/\r\n\r\n // Show hidden columns. If a range isn't provided, it will show any column with the class 'hidden'\r\n showColumns: function (startCol, endCol) {\r\n var self = this;\r\n var useRange = (startCol >= 0 && endCol >= 0);\r\n this._tableWidth = 0;\r\n\r\n // get width of table\r\n var thMainList = this.element.find(\"tr:eq(\" + this.options.useheaderrow + \") th\");\r\n thMainList.each(function (i) {\r\n if (!useRange || (this.cellIndex >= startCol && this.cellIndex <= endCol)) {\r\n $(this).removeClass('hidden');\r\n }\r\n\r\n if (!$(this).hasClass('hidden')) {\r\n self._tableWidth += parseInt($(this).width());\r\n self.options.child.find(\"tr td:nth-child(\" + (this.cellIndex + 1) + \")\").removeClass('hidden');\r\n self.element.find(\"colgroup col:nth-child(\" + (this.cellIndex + 1) + \")\").removeClass('hidden');\r\n }\r\n });\r\n $('[data-noresults=true] td', this.options.child).attr('colspan', thMainList.filter(\":visible\").length);\r\n\r\n this.element.css('width', this._tableWidth);\r\n this.options.child.css('width', this._tableWidth);\r\n me.setPageDimension();\r\n },\r\n // Hide columns in range\r\n hideColumns: function (startCol, endCol) {\r\n var self = this;\r\n this._tableWidth = 0;\r\n\r\n var thMainList = this.element.find(\"tr:eq(\" + this.options.useheaderrow + \") th\");\r\n thMainList.each(function (i) {\r\n if (i >= startCol && i <= endCol) {\r\n $(this).addClass('hidden');\r\n self.options.child.find(\"tr td:nth-child(\" + (this.cellIndex + 1) + \")\").addClass('hidden');\r\n self.element.find(\"colgroup col:nth-child(\" + (this.cellIndex + 1) + \")\").addClass('hidden');\r\n } else {\r\n self._tableWidth += parseInt($(this).width());\r\n }\r\n });\r\n $('[data-noresults=true] td', this.options.child).attr('colspan', thMainList.filter(\":visible\").length);\r\n\r\n this.element.css('width', this._tableWidth);\r\n this.options.child.css('width', this._tableWidth);\r\n me.setPageDimension();\r\n },\r\n resetTableWidth: function () {\r\n var self = this;\r\n this._tableWidth = 0;\r\n var thMainList = this.element.find(\"tr:eq(\" + this.options.useheaderrow + \") th\");\r\n\r\n thMainList.each(function () {\r\n var th = $(this);\r\n self._tableWidth += (th.hasClass('hidden')) ? 0 : th.width();\r\n });\r\n\r\n this.element.css('width', this._tableWidth);\r\n this.options.child.css('width', this._tableWidth);\r\n },\r\n getTableData: function () {\r\n return this.element.data();\r\n }\r\n });\r\n\r\n child.setTableResize = function (container, defaults) {\r\n var list = container !== null && $(container).is(ELEM) ? $(container) : $(ELEM, container);\r\n list.filter((i, self) => $(self).hasClass(\"table-resize\")).tableResize(\"destroy\");\r\n list.tableResize(defaults);\r\n };\r\n\r\n\r\n child.getTableData = function () {\r\n return $(ELEM).tableResize(\"getTableData\");\r\n };\r\n\r\n\r\n // Recalculate table width\r\n // This function will normally be used after any custom show/hide column function\r\n child.resetTableWidth = function () {\r\n $(ELEM).tableResize(\"resetTableWidth\");\r\n };\r\n\r\n\r\n // Show hidden columns. If a range isn't provided, all hidden columns will be shown.\r\n // Note: this function only works if you have a single header row\r\n child.showColumns = function (startCol, endCol) {\r\n $(ELEM).tableResize(\"showColumns\", startCol, endCol);\r\n };\r\n\r\n\r\n // Hide columns (range is inclusive)\r\n // Note: this function only works if you have a single header row\r\n child.hideColumns = function (startCol, endCol) {\r\n $(ELEM).tableResize(\"hideColumns\", startCol, endCol);\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: CONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * button\r\n * ======================================================================== \r\n * 1/2/2017: creation\r\n*/\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * use no-tabcount class to not count in cell total count\r\n * ========================================================================\r\n */\r\n\r\n // defaults\r\n var NAMESPACE = me.getUID('TABLE_');\r\n var TABLEID = '#MAIN';\r\n\r\n var table = null;\r\n var cellList = [];\r\n var cellInRow = 0;\r\n var min = 0;\r\n var max = 0;\r\n var currentCell = 2;\r\n\r\n\r\n var lastElem = null;\r\n\r\n var key = {\r\n DOWN: 40,\r\n UP: 38,\r\n RIGHT: 39,\r\n LEFT: 37,\r\n TAB: 9,\r\n ENTER: 13,\r\n }\r\n \r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n // set events\r\n function setEvents() {\r\n table.off('keydown.' + NAMESPACE);\r\n table.on('keydown.' + NAMESPACE, function (event) {\r\n var tempCell;\r\n var keyCode = event.keyCode || event.which;\r\n\r\n if (event.shiftKey && keyCode == key.TAB) {\r\n tempCell = (currentCell - 1);\r\n\r\n if (tempCell >= min && tempCell <= max) {\r\n currentCell = tempCell;\r\n onFocus();\r\n\r\n return false;\r\n }\r\n }\r\n //console.log(keyCode)\r\n if (keyCode == key.DOWN /*|| keyCode == key.ENTER*/) {\r\n tempCell = (currentCell + cellInRow);\r\n\r\n if (tempCell >= min && tempCell < max) {\r\n currentCell = tempCell;\r\n onFocus();\r\n }\r\n }\r\n\r\n if (keyCode == key.UP) {\r\n tempCell = (currentCell - cellInRow);\r\n\r\n if (tempCell >= min && tempCell <= max) {\r\n currentCell = tempCell;\r\n onFocus();\r\n }\r\n }\r\n\r\n if (keyCode == key.RIGHT || keyCode == key.TAB) {\r\n tempCell = (currentCell + 1);\r\n\r\n if (tempCell >= min && tempCell < max) {\r\n currentCell = tempCell;\r\n onFocus();\r\n\r\n return false;\r\n }\r\n }\r\n\r\n if (keyCode == key.LEFT) {\r\n tempCell = (currentCell - 1);\r\n\r\n if (tempCell >= min && tempCell <= max) {\r\n currentCell = tempCell;\r\n onFocus();\r\n\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n table.off('click.' + NAMESPACE);\r\n table.on('click.' + NAMESPACE, 'td', function (event) {\r\n var elem = $(this);\r\n var id = elem.attr('id');\r\n\r\n for (var i = 0, len = cellList.length; i < len; i++) {\r\n var d = cellList[i];\r\n if (d.id === id) {\r\n currentCell = i;\r\n onFocus();\r\n break;\r\n }\r\n }\r\n });\r\n\r\n $(document).on('click.tablenremovehl', function (event) {\r\n var target = $(event.target);\r\n\r\n if (!target.parents(TABLEID).length > 0) removeHighLight();\r\n });\r\n }\r\n\r\n\r\n // set table tab\r\n function setTableTab(container, startCell) {\r\n // set list\r\n if (container !== null) {\r\n if (typeof container === 'string') table = $(container);\r\n } else {\r\n table = $(container);\r\n }\r\n\r\n // bail\r\n if (table.length === 0) return;\r\n\r\n cellList = [];\r\n var trList = table.find('tr').not('.topheader').not('.footer').not('.border-row');\r\n var tempCellList = trList.find('td').not('.no-tabcount').not('.no-select');\r\n\r\n //console.log(tempCellList.length)\r\n if (tempCellList.length === 0) return;\r\n\r\n tempCellList.each(function () {\r\n var e = $(this);\r\n var id = me.getUID('C_');\r\n e.attr('id', id);\r\n var cell = {\r\n id: id,\r\n cell: e\r\n };\r\n cellList.push(cell);\r\n });\r\n\r\n max = cellList.length;\r\n\r\n // change to grab second tr on main table\r\n cellInRow = table.find('tr:nth-child(2)').children('td').not('.no-tabcount').not('.no-select').length; // not zero based\r\n\r\n // might have a spacer/header row try row 3\r\n if (cellInRow === 0) cellInRow = table.find('tr:nth-child(3)').children('td').not('.no-tabcount').not('.no-select').length;\r\n\r\n // start cell\r\n if (startCell !== null && startCell !== '') currentCell = startCell;\r\n\r\n onFocus();\r\n\r\n setEvents();\r\n }\r\n\r\n\r\n // on focus\r\n function onFocus() {\r\n if (cellList.length === 0) return;\r\n\r\n if (lastElem !== null) $(lastElem).children().removeClass('in');\r\n\r\n // remove other input highlights (used in part forecast top row)\r\n $('[data-inputhighlight=\"true\"]').removeClass('in');\r\n\r\n if (cellList.length <= currentCell) currentCell = 0;\r\n\r\n var elemCheck = $('#' + cellList[currentCell].id);\r\n if (elemCheck.length === 0) currentCell = 0;\r\n\r\n var elem = $('#' + cellList[currentCell].id);\r\n table.find('tr').removeClass('highlight-child-withborder');\r\n elem.parent('tr').addClass('highlight-child-withborder');\r\n\r\n lastElem = '#' + cellList[currentCell].id;\r\n\r\n if (elem.hasClass('no-select')) return;\r\n\r\n elem.children().addClass('in');\r\n if (elem.children('input').length > 0) {\r\n var e = elem.children('input').first();\r\n if (e.is(\":focus\")) return;\r\n e.focus();\r\n }\r\n }\r\n\r\n\r\n // remove table highlight\r\n function removeHighLight() {\r\n table.find('tr').removeClass('highlight-child-withborder');\r\n if (lastElem !== null) $(lastElem).children().removeClass('in');\r\n }\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set tabletab\r\n child.setTableTab = function (container, startCell) {\r\n if (lastElem !== null) $(lastElem).children().removeClass('in');\r\n setTableTab(container, startCell);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n var ELEM = '[data-fd=\"text\"]';\r\n var DELAY = 800; // Milliseconds\r\n var eventsAreSet = false;\r\n var hitEnter = false;\r\n\r\n // defaults\r\n var defaults = {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 60,\r\n value: '',\r\n\r\n initial: '',\r\n max: 200, // max length\r\n min: 0, // min length\r\n length: 0, // length\r\n repeat: false, // repeat input\r\n focus: false,\r\n iskeyup: false,\r\n noedit: false,\r\n clearonload: false,\r\n submitevent: 'blur' //Other options include: enter, tab, blur\r\n };\r\n\r\n\r\n var keyCode = {\r\n ENTER: 13,\r\n BACKSPACE: 8,\r\n ESC: 27,\r\n TAB: 9\r\n };\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // set events\r\n function setEvents() {\r\n var NAMESPACE = me.getUID('CTRL_');\r\n\r\n // set events\r\n $(document).off('focus blur keyup keydown', ELEM)\r\n .on('focus.' + NAMESPACE, ELEM, setFocus)\r\n .on('blur.' + NAMESPACE, ELEM, setBlur)\r\n .on('paste.' + NAMESPACE, ELEM, function (e) {\r\n var e = $(this);\r\n var data = e.data();\r\n\r\n // check for keyup\r\n if (data.iskeyup) {\r\n if (this.controlDelay) {\r\n clearTimeout(this.controlDelay);\r\n this.controlDelay = undefined;\r\n }\r\n\r\n this.controlDelay = setTimeout(function () {\r\n setKeyUp(e);\r\n }, DELAY);\r\n }\r\n })\r\n .on('keyup.' + NAMESPACE, ELEM, function (event) {\r\n var e = $(this);\r\n var data = e.data();\r\n // esc\r\n if (Number(event.which) === keyCode.ESC || Number(event.keyCode) === keyCode.ESC) {\r\n e.val(data.initial);\r\n me.setInputFocus(e, false);\r\n return;\r\n }\r\n\r\n // check for keyup\r\n if (data.iskeyup) {\r\n if (this.controlDelay) {\r\n clearTimeout(this.controlDelay);\r\n this.controlDelay = undefined;\r\n }\r\n\r\n this.controlDelay = setTimeout(function () {\r\n setKeyUp(e);\r\n }, DELAY);\r\n }\r\n })\r\n .on('keydown.' + NAMESPACE, ELEM, function (event) {\r\n // backspace\r\n if (Number(event.which) === keyCode.BACKSPACE || Number(event.keyCode) === keyCode.BACKSPACE || Number(event.which) === keyCode.TAB || Number(event.keyCode) === keyCode.TAB) {\r\n return true;\r\n }\r\n\r\n if ($(this).val().length > Number($(this).data('max'))) {\r\n return false;\r\n }\r\n })\r\n .on('keypress.' + NAMESPACE, ELEM, function (event) {\r\n var e = $(this);\r\n var data = e.data();\r\n\r\n if (Number(event.which) === keyCode.ENTER || Number(event.keyCode) === keyCode.ENTER) {\r\n hitEnter = true;\r\n e.blur();\r\n\r\n // repeat \r\n if (data.repeat && data.submitevent.indexOf('enter') > -1) {\r\n e.focus();\r\n }\r\n return;\r\n }\r\n });\r\n }\r\n\r\n\r\n // get text \r\n function getText(wireEvent, container) {\r\n var list = [];\r\n\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n if (wireEvent && !eventsAreSet) {\r\n setEvents();\r\n eventsAreSet = true;\r\n }\r\n\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n var options = $.extend({}, defaults, elem.data());\r\n me.setControlItemOptions(elem, options);\r\n elem.data(options);\r\n\r\n if (options.clearonload) {\r\n elem.val('');\r\n options.clearonload = false;\r\n elem.data('clearonload', false).attr('data-clearonload', false);\r\n }\r\n\r\n if (options.noedit) {\r\n elem.attr('readonly', true);\r\n }\r\n });\r\n }\r\n\r\n\r\n function setFocus() {\r\n var e = $(this);\r\n\r\n if (document.isUndo) {\r\n document.isUndo = false;\r\n return;\r\n }\r\n e.data('initial', e.val());\r\n hitEnter = false;\r\n\r\n if (e.data('focus') === true) {\r\n e.select();\r\n }\r\n }\r\n\r\n\r\n function setKeyUp(e) {\r\n if (e.val() === e.data('initial')) {\r\n return;\r\n }\r\n\r\n e.data('element', e);\r\n var val = e.val();\r\n if (val.length < +e.data('min')) {\r\n val = e.data('initial');\r\n e.val(val);\r\n }\r\n\r\n e.data('value', val).data('length', val.length);\r\n\r\n setCallback(e);\r\n }\r\n\r\n\r\n function setBlur() {\r\n var e = $(this);\r\n \r\n if ((e.data('submitevent') && e.data('submitevent').indexOf('enter') > -1 && !hitEnter && e.data('submitevent').indexOf('blur') == -1) || (e.data('submitevent') && e.data('submitevent').indexOf('tab') > -1 && hitEnter)) {\r\n e.data('initial', e.val());\r\n return;\r\n }\r\n\r\n if (e.data('iskeyup')) {\r\n return;\r\n } else if (e.val() === e.data('initial') && !hitEnter) {\r\n return;\r\n }\r\n\r\n e.data('element', e);\r\n var val = e.val();\r\n\r\n if (val.length < e.data('min')) {\r\n val = e.data('initial');\r\n e.val(val);\r\n }\r\n\r\n e.data('value', val).data('length', val.length);\r\n\r\n if (e.data('repeat')) {\r\n e.val('');\r\n }\r\n setCallback(e);\r\n }\r\n\r\n\r\n function setCallback(e) {\r\n var data = e.data();\r\n\r\n me.setCallBackFromData(e, { e: data.element, value: data.value, initial: data.initial, tag: data.tag, parentid: data.parentid, length: data.length || 0 });\r\n e.data('initial', data.value);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setText = function (wireEvent, container) {\r\n getText(wireEvent, container);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n // element\r\n var ELEM = '[data-fd=\"textarea\"]';\r\n var eventsWired = false;\r\n\r\n $.widget(\"custom.textarea\", {\r\n options: {\r\n useparent: true,\r\n parentid: -1,\r\n callbackprefix: 1,\r\n tag: 92,\r\n value: '',\r\n noedit: false,\r\n initial: '',\r\n autosizeonload: true,\r\n autosize: true,\r\n clearonload: false,\r\n repeat: false, // repeat input\r\n submitevent: 'blur', //Other options include: enter, tab, blur\r\n disableresize: true //Disable Resizing the textarea\r\n },\r\n _create: function () {\r\n $.extend(this.options, this.element.data());\r\n\r\n if (!eventsWired) {\r\n $(document)\r\n .on('focus', ELEM, this._handleFocus)\r\n .on('blur', ELEM, this._handleBlur)\r\n .on('keydown input', ELEM, this._handleKeyDown)\r\n .on('keyup', ELEM, this._handleKeyUp);\r\n eventsWired = true;\r\n }\r\n\r\n me.setControlItemOptions(this.element, this.options);\r\n\r\n if (this.options.clearonload) {\r\n this.options.clearonload = false;\r\n this.element.val(\"\").data(\"clearonload\", false).attr(\"data-clearonload\", false);\r\n }\r\n\r\n if (this.options.noedit) {\r\n this.element.attr('readonly', true);\r\n }\r\n\r\n if (this.options.autosize) {\r\n this.element.css({\r\n 'min-height': '16px',\r\n resize: 'none'\r\n });\r\n }\r\n\r\n if (this.options.autosize && this.options.autosizeonload) {\r\n fastdom.measure(() => {\r\n var scrollHeight = this.element.prop('scrollHeight');\r\n if (scrollHeight > 0) {\r\n fastdom.mutate(() => {\r\n this.element.css('height', scrollHeight + 2);\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (this.options.disableresize) {\r\n this.element.css('resize', 'none');\r\n } else {\r\n this.element.css('resize', 'both');\r\n }\r\n\r\n this.element.addClass(\"textarea\");\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.element.data(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n this.element.attr({\r\n 'data-tag': this.options.tag,\r\n 'data-noedit': this.options.noedit\r\n });\r\n this.element.attr('disabled', this.options.noedit);\r\n },\r\n attach: function (self) {\r\n this.element = self;\r\n },\r\n _destroy: function () {\r\n },\r\n\r\n _handleFocus: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customTextarea');\r\n self._hitEnter = false;\r\n\r\n if (self.options.repeat) {\r\n self.element.css('height', 'auto');\r\n }\r\n if (document.isUndo) {\r\n document.isUndo = false;\r\n return;\r\n }\r\n\r\n if (self.options.noedit || self.options.submitevent.indexOf('enter') > -1) {\r\n return;\r\n }\r\n\r\n self.options.initial = self.element.val();\r\n },\r\n _handleBlur: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customTextarea');\r\n\r\n if (self.options.noedit) {\r\n return;\r\n }\r\n\r\n if (self.options.submitevent.indexOf('enter') > -1 && !self._hitEnter) {\r\n return;\r\n }\r\n\r\n self.options.value = self.element.val().trim();\r\n\r\n self._setCallback(event);\r\n },\r\n _handleKeyDown: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customTextarea');\r\n\r\n if (self.options.autosize) {\r\n var offset = self.element.prop('offsetHeight') - self.element.prop('clientHeight');\r\n self.element.css('height', 'auto')\r\n .css('height', self.element.prop('scrollHeight') + offset);\r\n }\r\n\r\n if ((event.which === 13 || event.keyCode === 13) && !event.shiftKey) {\r\n if (self.options.submitevent.indexOf('enter') > -1) {\r\n event.preventDefault();\r\n self._hitEnter = true;\r\n self.element.blur();\r\n\r\n // repeat \r\n if (self.options.repeat) {\r\n self.element.focus();\r\n }\r\n }\r\n }\r\n },\r\n _handleKeyUp: function (event) {\r\n var self = $(event.target).closest(ELEM).data('customTextarea');\r\n\r\n if (event.which === 27 || event.keyCode === 27) { // Escape Key\r\n self.element.val(self.options.initial);\r\n me.setInputFocus(self.element, false);\r\n self._handleKeyDown(event);\r\n }\r\n },\r\n\r\n _setCallback: function () {\r\n if (this.options.value === this.options.initial) {\r\n return;\r\n }\r\n\r\n me.setCallBackFromData(this.element, {\r\n e: this.element,\r\n value: this.options.value,\r\n tag: this.options.tag,\r\n parentid: this.options.parentid\r\n });\r\n\r\n if (this.options.repeat) {\r\n this.options.value = '';\r\n this.element.val('');\r\n }\r\n\r\n this.options.initial = this.options.value;\r\n this.element.data('initial', this.options.value);\r\n }\r\n });\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set button\r\n child.setTextArea = function (wireEvent, container) {\r\n var list = '';\r\n if (container !== null) {\r\n if (typeof container === 'string') {\r\n container = $(container);\r\n }\r\n list = container.find(ELEM);\r\n } else {\r\n list = $(ELEM);\r\n }\r\n\r\n $(list).textarea();\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n var ELEM = '[data-fd=timepicker]';\r\n var defaults = {\r\n useparent: true\r\n };\r\n var ignoreEvent = false;\r\n\r\n function setTimePicker(container) {\r\n $(ELEM, container).each(function (i, e) {\r\n var elem = $(e);\r\n var options = $.extend({}, defaults, elem.data());\r\n me.setControlItemOptions(elem, options);\r\n elem.data({ initial: elem.val() });\r\n });\r\n\r\n $(ELEM, container).timepicker({\r\n timeFormat: 'h:mm p',\r\n dropdown: false,\r\n change: function (time) {\r\n if (ignoreEvent) {\r\n ignoreEvent = false;\r\n return;\r\n }\r\n var timepicker = this.timepicker();\r\n if (time) {\r\n this.data({ value: time, initial: timepicker.format(time) });\r\n var data = this.data();\r\n me.setCallBackFromData(this, { e: this, value: data.value, initial: data.initial, tag: data.tag, parentid: data.parentid, length: data.length || 0 });\r\n } else {\r\n // Prevent callback on reset.\r\n ignoreEvent = true;\r\n timepicker.setTime(this.data(\"initial\"));\r\n if (this.data(\"initial\") == \"\") {\r\n this.val(\"\");\r\n }\r\n ignoreEvent = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setTimePicker = function (container) {\r\n setTimePicker(container);\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: CONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * manage a hopscotch tour\r\n * ======================================================================== \r\n * 3/2/2017: creation\r\n*/\r\n\r\nFD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n var TOUR_LIST_ELEM = '#TOUR_LIST';\r\n var SITE_TOUR_ELEM = '#SITE_TOUR';\r\n var START_TOUR_ELEM = '#START_TOUR';\r\n var calloutManager;\r\n var tourItem;\r\n var tour;\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n \r\n\r\n // defaults\r\n var defaults = { };\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n \r\n\r\n // get tour \r\n function getTour(stepList) {\r\n var label = me.getLabel();\r\n tourItem = me.getTourProgress();\r\n setTopNavTour(stepList);\r\n\r\n for (var x = 0; x < stepList.length - 1; x++) {\r\n stepList[x].onCTA = handleOnCTA;\r\n stepList[x].showCTAButton = true;\r\n stepList[x].ctaLabel = label[\"EndTour\"];\r\n }\r\n\r\n tour = {\r\n id: \"hopscotch-tour\",\r\n showPrevButton: true,\r\n smoothScroll: true,\r\n onClose: handleClose,\r\n onEnd: handleEnd,\r\n steps: stepList,\r\n i18n: {\r\n nextBtn: label['Next'],\r\n doneBtn: label['Done'],\r\n prevBtn: label['Back']\r\n },\r\n };\r\n\r\n\r\n\r\n // restart site tour\r\n $(START_TOUR_ELEM).off().on('click', function () {\r\n $(SITE_TOUR_ELEM).webuiPopover('hide');\r\n\r\n hopscotch.startTour(tour, 0);\r\n\r\n tourItem.TourStep = 0;\r\n tourItem.TourCompleted = false;\r\n\r\n var options = {\r\n url: \"/Common/Common/UpdateTourProgress\",\r\n params: {\r\n tourItem: tourItem\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) { }\r\n });\r\n }\r\n\r\n\r\n // populate the steps in the site tour popover\r\n function setTopNavTour(stepList) {\r\n var listHTML = [];\r\n\r\n for (var x = 0; x < stepList.length; x++) {\r\n listHTML.push(\"(\" + (x + 1) + \") \" + stepList[x].title + \"
  • \");\r\n }\r\n\r\n $(TOUR_LIST_ELEM).html(listHTML.join(''));\r\n\r\n $(TOUR_LIST_ELEM).find('a').on('click', function (event) {\r\n event.preventDefault();\r\n var step = +$(this).data('step');\r\n $(SITE_TOUR_ELEM).webuiPopover('hide');\r\n hopscotch.startTour(tour, step);\r\n });\r\n }\r\n\r\n\r\n // save user's progress when a new step is shown\r\n function handleOnShow() {\r\n tourItem.TourStep = hopscotch.getCurrStepNum();\r\n tourItem.TourCompleted = false;\r\n\r\n var options = {\r\n url: \"/Common/Common/UpdateTourProgress\",\r\n params: {\r\n tourItem: tourItem\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) { }\r\n }\r\n\r\n\r\n // enable user to complete the tour early\r\n function handleOnCTA() {\r\n tourItem.TourStep = hopscotch.getCurrStepNum();\r\n tourItem.TourCompleted = true;\r\n\r\n var options = {\r\n url: \"/Common/Common/UpdateTourProgress\",\r\n params: {\r\n tourItem: tourItem\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n hopscotch.endTour();\r\n }\r\n }\r\n\r\n\r\n function handleClose() {\r\n $('.site-control li:not([data-alwaysactive])').removeClass('active');\r\n calloutManager.removeAllCallouts();\r\n tourItem.TourStep = hopscotch.getCurrStepNum();\r\n tourItem.TourCompleted = false;\r\n\r\n var options = {\r\n url: \"/Common/Common/UpdateTourProgress\",\r\n params: {\r\n tourItem: tourItem\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) { }\r\n }\r\n\r\n\r\n // save tour completion\r\n function handleEnd() {\r\n $('.site-control li:not([data-alwaysactive])').removeClass('active');\r\n if (hopscotch.getState()) {\r\n tourItem.TourStep = +hopscotch.getState().split(\":\")[1];\r\n if (tourItem.TourStep >= 16) tourItem.TourCompleted = true;\r\n } else {\r\n tourItem.TourStep = hopscotch.getCurrStepNum();\r\n tourItem.TourCompleted = true;\r\n }\r\n calloutManager.removeAllCallouts();\r\n $('body').off('click');\r\n var options = {\r\n url: \"/Common/Common/UpdateTourProgress\",\r\n params: {\r\n tourItem: tourItem\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) { }\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // prepare the tour\r\n child.setTour = function (stepList) {\r\n if ($(SITE_TOUR_ELEM).length > 0 && stepList && stepList.length > 0) {\r\n if (!calloutManager) {\r\n calloutManager = hopscotch.getCalloutManager();\r\n }\r\n getTour(stepList);\r\n } else {\r\n window.console && console.log(\"The tour functionality is not currently enabled on this page.\");\r\n }\r\n }\r\n\r\n\r\n // start the tour\r\n child.startTour = function () {\r\n if (tourItem &&!tourItem.TourCompleted) {\r\n $('body').off().on('click', function (e) {\r\n if (!(e.isTrigger && e.isTrigger > 1) && !($(e.target).hasClass('hopscotch-nav-button'))) {\r\n hopscotch.endTour(false);\r\n }\r\n })\r\n hopscotch.startTour(tour, tourItem.TourStep);\r\n }\r\n }\r\n\r\n\r\n child.getCalloutManager = function() {\r\n if (!calloutManager) {\r\n calloutManager = hopscotch.getCalloutManager();\r\n }\r\n return calloutManager;\r\n }\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n var ELEM = '[data-fd=\"url\"]';\r\n var hitEnter = false;\r\n\r\n $.widget(\"custom.url\", {\r\n options: {\r\n useParent: true,\r\n parentId: -1,\r\n value: '',\r\n initial: '',\r\n max: 200, // max length\r\n min: 0, // min length\r\n length: 0, // length\r\n repeat: false, // repeat input\r\n focus: false,\r\n noedit: false,\r\n clearonload: false,\r\n submitevent: 'blur',\r\n delay: 800\r\n },\r\n _handleKeyUp: function (event) {\r\n var self = event.data;\r\n \r\n // esc\r\n if (Number(event.which) === keyCode.ESC || Number(event.keyCode) === keyCode.ESC) {\r\n self.element.val(self.options.initial);\r\n me.setInputFocus(self.element, false);\r\n return;\r\n }\r\n\r\n // enter\r\n if (Number(event.which) === keyCode.ENTER || Number(event.keyCode) === keyCode.ENTER) {\r\n hitEnter = true;\r\n self.element.blur();\r\n\r\n // repeat \r\n if (self.options.repeat && self.options.submitevent === 'enter') {\r\n self.element.focus();\r\n }\r\n return;\r\n }\r\n },\r\n _handleKeyDown: function (event) {\r\n var self = event.data;\r\n if (Number(event.which) === keyCode.BACKSPACE || Number(event.keyCode) === keyCode.BACKSPACE || Number(event.which) === keyCode.TAB || Number(event.keyCode) === keyCode.TAB) {\r\n return true;\r\n }\r\n\r\n if (self.element.val().length > self.options.max) {\r\n return false;\r\n }\r\n },\r\n _handleFocus: function (event) {\r\n var self = event.data;\r\n\r\n self.options.initial = self.element.val();\r\n\r\n if (self.options.focus === true) {\r\n self.element.select();\r\n }\r\n },\r\n _handleBlur: function (event) {\r\n var self = event.data;\r\n\r\n if ((self.options.submitevent === 'enter' && !hitEnter) || (self.options.submitevent === 'tab' && hitEnter)) {\r\n self.options.initial = self.element.val();\r\n return;\r\n }\r\n if (self.element.val() === self.options.initial && !hitEnter) {\r\n return;\r\n }\r\n hitEnter = false;\r\n self._triggerCallback();\r\n },\r\n _handleChange: function (event) {\r\n var self = event.data;\r\n self._triggerCallback();\r\n },\r\n _triggerCallback: function () {\r\n this.validate();\r\n me.setCallBackFromData(this.element, { e: this.element, value: this.options.value, initial: this.options.initial, tag: this.options.tag, parentid: this.options.parentid, length: this.options.length || 0 });\r\n this.options.initial = this.options.value;\r\n },\r\n _create: function () {\r\n this.options = $.extend({}, this.options, this.element.data());\r\n me.setControlItemOptions(this.element, this.options);\r\n\r\n this.element.addClass(\"url\");\r\n this.outerWraper = $('
    ');\r\n this.schemaWraper = $('
    \\\r\n \\\r\n
    ');\r\n this.schemaDropdown = $(\"select\", this.schemaWraper);\r\n this.schemaDropdown.on(\"change\", this, this._handleChange);\r\n\r\n this.element.wrap(this.outerWraper);\r\n this.element.before(this.schemaWraper);\r\n\r\n this.element\r\n .on(\"keyup\", this, this._handleKeyUp)\r\n .on(\"keydown\", this, this._handleKeyDown)\r\n .on(\"focus\", this, this._handleFocus)\r\n .on(\"blur\", this, this._handleBlur);\r\n\r\n if (this.options.clearonload) {\r\n this.element.val('');\r\n this.options.clearonload = false;\r\n this.options.clearonload = false;\r\n this.element.attr('data-clearonload', false);\r\n }\r\n\r\n if (this.options.noedit) {\r\n this.element.attr('readonly', true);\r\n this.button.attr('readonly', true);\r\n }\r\n this.validate();\r\n this.refresh();\r\n },\r\n _setOptions: function (options) {\r\n this._super(options);\r\n this.refresh();\r\n },\r\n refresh: function () {\r\n\r\n },\r\n _destroy: function () {\r\n this.element.removeClass(\"url\");\r\n this.element\r\n .off(\"keyup\", this._handleKeyUp)\r\n .off(\"keydown\", this._handelKeyDown)\r\n .off(\"focus\", this._handleFocus)\r\n .off(\"blur\", this._handleBlur);\r\n this.element.unwrap(this.outerWraper);\r\n this.schemaWraper.remove();\r\n },\r\n validate: function () {\r\n var val = this.element.val().trim();\r\n\r\n if (val.startsWith(\"http://\")) {\r\n this.schemaDropdown.val(\"http://\");\r\n val = val.substr(7);\r\n }\r\n if (val.startsWith(\"https://\")) {\r\n this.schemaDropdown.val(\"https://\");\r\n val = val.substr(8);\r\n }\r\n\r\n if (val.length < this.options.min) {\r\n val = this.options.initial;\r\n }\r\n\r\n this.element.val(val);\r\n if (val.length == 0)\r\n this.options.value = \"\";\r\n else\r\n this.options.value = this.schemaDropdown.val() + val;\r\n this.options.length = val.length;\r\n\r\n if (this.options.repeat) {\r\n this.element.val('');\r\n }\r\n },\r\n value: function (value) {\r\n if (value != undefined) {\r\n this.element.val(value);\r\n this._triggerCallback();\r\n }\r\n return this.options.value;\r\n }\r\n });\r\n \r\n var keyCode = {\r\n ENTER: 13,\r\n BACKSPACE: 8,\r\n ESC: 27,\r\n TAB: 9\r\n };\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n \r\n // get text \r\n function getUrl(container) {\r\n $(ELEM, container).url();\r\n }\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setUrl = function (container) {\r\n getUrl(container);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n var VALIDATE_ELEM = '[data-validate=\"true\"]';\r\n var VALIDATE_ELEM_FALSE = '[data-validate=\"false\"]';\r\n var notify = new Notify();\r\n var label;\r\n\r\n // Default Regex Strings\r\n var REGEX = {\r\n EMAIL: new RegExp(\"^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+\\.(?:[a-zA-Z0-9-]+)*$\"),\r\n URL: new RegExp('^(ftp|http|https):\\/\\/[^ \"]+$', \"i\")\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n var setValidateEvent = function (container) {\r\n var requiredList;\r\n\r\n if (container) {\r\n container = $(container);\r\n requiredList = container.find('[required]');\r\n } else {\r\n requiredList = $('[required]');\r\n }\r\n\r\n requiredList.each(function (index, elem) {\r\n $(elem).closest('li').addClass('required');\r\n });\r\n\r\n // this removes the required class from any parent li of elements that were required before, but are not anymore\r\n $(VALIDATE_ELEM_FALSE).removeClass('form-error').closest('li').removeClass('required');\r\n $(\".required:not(span)\", container).closest(\".form-group\").addClass(\"required\");\r\n\r\n setValidateOnBlur();\r\n };\r\n\r\n\r\n function setValidateOnBlur() {\r\n $(document).on('blur', VALIDATE_ELEM, function (e) {\r\n if (validateInput(this)) {\r\n $(this).removeClass('form-error');\r\n } else {\r\n $(this).addClass('form-error');\r\n e.stopPropagation();\r\n e.preventDefault();\r\n e.cancelBubble = true;\r\n e.stopImmediatePropagation();\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n\r\n function validateForm(container, customMessage, suppressAlert, validateHidden) {\r\n var list,\r\n validSubmit = true;\r\n\r\n if (container) {\r\n container = $(container);\r\n list = container.find(VALIDATE_ELEM);\r\n\r\n var validateIgnore = container.data(\"validate-ignore\");\r\n if (validateIgnore) {\r\n list = $(list).filter(function () {\r\n return $(this).closest(validateIgnore).length == 0;\r\n });\r\n }\r\n if (!validateHidden) {\r\n list = $(list).filter(function () {\r\n return $(this).is(\":visible\");\r\n });\r\n }\r\n } else {\r\n list = $(VALIDATE_ELEM);\r\n }\r\n\r\n list.each(function (index, elem) {\r\n if (!validateInput(elem)) {\r\n validSubmit = false;\r\n $(elem).addClass('form-error');\r\n } else {\r\n $(elem).removeClass('form-error');\r\n }\r\n });\r\n\r\n if (!validSubmit && !suppressAlert) {\r\n notify.alert(customMessage ? customMessage : label['YouMustAddressAllRequiredFields']);\r\n }\r\n\r\n return validSubmit;\r\n }\r\n\r\n\r\n function validateInput(input) {\r\n var jqInput = $(input),\r\n value = input.value,\r\n match = jqInput.data('match'),\r\n required = jqInput.attr('required'),\r\n regex;\r\n \r\n if (jqInput.is('input')) {\r\n\r\n if (jqInput.attr('data-fd') === 'autocomplete') {\r\n if (!jqInput.data('initial') && !jqInput.data('value')) return false;\r\n else return true;\r\n }\r\n\r\n if (!value || !value.trim()) { // input is empty\r\n return required ? false : true;\r\n }\r\n\r\n var tempRegex = REGEX[jqInput.attr('type').toUpperCase()];\r\n\r\n if (tempRegex) {\r\n regex = tempRegex;\r\n } else if (match) {\r\n regex = new RegExp(match);\r\n }\r\n if (regex) {\r\n if (jqInput.attr('type').toUpperCase() === 'URL' && !value.match(regex)) {\r\n return ('http://' + value).match(regex);\r\n } \r\n return value.match(regex);\r\n } else { // just checking to make sure field isn't empty\r\n return true;\r\n }\r\n } else if (jqInput.is('select')) {\r\n var validateAgainst = jqInput.data('validatevalue');\r\n if (validateAgainst === undefined) {\r\n validateAgainst = -1;\r\n }\r\n if (!required || (value && Number(value) !== Number(validateAgainst))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else if (jqInput.is('textarea')) {\r\n if (!value || !value.trim()) { // check if empty\r\n return !required;\r\n } else {\r\n if (match) {\r\n regex = new RegExp(match);\r\n return value.match(regex);\r\n } else { // field has text\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n \r\n\r\n\r\n /* ========================================================================\r\n * Public Methods\r\n * ========================================================================\r\n */\r\n\r\n \r\n child.setValidateContainer = function (container) {\r\n label = label || me.getLabel();\r\n\r\n setValidateEvent(container);\r\n };\r\n\r\n\r\n child.Validate = function (container, customMessage, suppressAlert, validateHidden) {\r\n return validateForm(container, customMessage, suppressAlert, validateHidden);\r\n };\r\n\r\n\r\n child.validate = function (container, customMessage, suppressAlert, validateHidden) {\r\n return validateForm(container, customMessage, suppressAlert, validateHidden);\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","FD.CONTROL = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.CONTROL || {};\r\n var hubProxy;\r\n var options = {};\r\n var defaults = {\r\n hubName: null,\r\n functionList: null\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * Private Methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n /* ========================================================================\r\n * Public Methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.setWebSocket = function (userOptions) {\r\n options = $.extend({}, defaults, userOptions);\r\n if (!options.hubName) {\r\n window.console && console.error(\"Error opening web socket: connection name is required.\");\r\n return;\r\n } else if (!options.functionList || !options.functionList.length) {\r\n window.console && console.error(\"Error opening web socket: function list is empty.\");\r\n return;\r\n }\r\n hubProxy = $.connection[options.hubName];\r\n for (var x = 0; x < options.functionList.length; x++) {\r\n hubProxy.client[options.functionList[x].name] = options.functionList[x].function;\r\n }\r\n\r\n return $.connection.hub.start();\r\n };\r\n\r\n\r\n // Should only call this once we're sure the connection is open.\r\n // Usually - this will look something like:\r\n // me.CONTROL.setWebSocket(options).done(function () {\r\n // localHubVariable = me.CONTROL.getConnectionHub();\r\n // });\r\n child.getConnectionHub = function () {\r\n return hubProxy;\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","/*****\r\n* rateYo - v2.2.0\r\n* http://prrashi.github.io/rateyo/\r\n* Copyright (c) 2014 Prashanth Pamidi; Licensed MIT\r\n*****/\r\n\r\n;(function ($) {\r\n \"use strict\";\r\n\r\n // The basic svg string required to generate stars\r\n var BASICSTAR = \"\"+\r\n \"\"+\r\n \"\"+\r\n \"\";\r\n\r\n // The Default values of different options available in the Plugin\r\n var DEFAULTS = {\r\n\r\n starWidth : \"32px\",\r\n normalFill: \"gray\",\r\n ratedFill : \"#f39c12\",\r\n numStars : 5,\r\n maxValue : 5,\r\n precision : 1,\r\n rating : 0,\r\n fullStar : false,\r\n halfStar : false,\r\n readOnly : false,\r\n spacing : \"0px\",\r\n rtl : false,\r\n multiColor: null,\r\n onInit : null,\r\n onChange : null,\r\n onSet : null,\r\n starSvg : null\r\n };\r\n\r\n //Default colors for multi-color rating\r\n var MULTICOLOR_OPTIONS = {\r\n\r\n startColor: \"#c0392b\", //red\r\n endColor : \"#f1c40f\" //yellow\r\n };\r\n\r\n // http://stackoverflow.com/questions/11381673/detecting-a-mobile-browser\r\n function isMobileBrowser () {\r\n var check = false;\r\n /* jshint ignore:start */\r\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\r\n /* jshint ignore:end */\r\n return check;\r\n }\r\n\r\n function checkPrecision (value, minValue, maxValue) {\r\n\r\n /*\r\n * This function removes the unnecessary precision, at Min and Max Values\r\n */\r\n\r\n // Its like comparing 0.0 with 0, which is true\r\n if (value === minValue) {\r\n\r\n value = minValue;\r\n }\r\n else if(value === maxValue) {\r\n\r\n value = maxValue;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function checkBounds (value, minValue, maxValue) {\r\n\r\n /*\r\n * Check if the value is between min and max values, if not, throw an error\r\n */\r\n\r\n var isValid = value >= minValue && value <= maxValue;\r\n\r\n if(!isValid){\r\n\r\n throw Error(\"Invalid Rating, expected value between \"+ minValue +\r\n \" and \" + maxValue);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function isDefined(value) {\r\n\r\n // Better way to check if a variable is defined or not\r\n return typeof value !== \"undefined\";\r\n }\r\n\r\n // Regex to match Colors in Hex Format like #FF00FF\r\n var hexRegex = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i;\r\n\r\n var hexToRGB = function (hex) {\r\n\r\n /*\r\n * Extracts and returns the Red, Blue, Green Channel values,\r\n * in the form of decimals\r\n */\r\n\r\n if (!hexRegex.test(hex)) {\r\n\r\n return null;\r\n }\r\n\r\n var hexValues = hexRegex.exec(hex),\r\n\tr = parseInt(hexValues[1], 16),\r\n\tg = parseInt(hexValues[2], 16),\r\n\tb = parseInt(hexValues[3], 16);\r\n\r\n return {r:r, g:g, b:b};\r\n };\r\n\r\n function getChannelValue(startVal, endVal, percent) {\r\n\r\n /*\r\n * Returns a value between `startVal` and `endVal` based on the percent\r\n */\r\n\r\n var newVal = (endVal - startVal)*(percent/100);\r\n\r\n newVal = Math.round(startVal + newVal).toString(16);\r\n\r\n if (newVal.length === 1) {\r\n\r\n\tnewVal = \"0\" + newVal;\r\n }\r\n\r\n return newVal;\r\n }\r\n\r\n function getColor (startColor, endColor, percent) {\r\n\r\n /*\r\n * Given the percentage( `percent` ) of `endColor` to be mixed\r\n * with the `startColor`, returns the mixed color.\r\n * Colors should be only in Hex Format\r\n */\r\n\r\n if (!startColor || !endColor) {\r\n\r\n return null;\r\n }\r\n\r\n percent = isDefined(percent)? percent : 0;\r\n\r\n startColor = hexToRGB(startColor);\r\n endColor = hexToRGB(endColor);\r\n\r\n var r = getChannelValue(startColor.r, endColor.r, percent),\r\n b = getChannelValue(startColor.b, endColor.b, percent),\r\n g = getChannelValue(startColor.g, endColor.g, percent);\r\n\r\n return \"#\" + r + g + b;\r\n }\r\n\r\n function RateYo ($node, options) {\r\n\r\n /*\r\n * The Contructor, whose instances are used by plugin itself\r\n */\r\n\r\n // Storing the HTML element as a property, for future access\r\n this.node = $node.get(0);\r\n\r\n var that = this;\r\n\r\n // Remove any stuff that is present inside the container, and add the plugin class\r\n $node.empty().addClass(\"jq-ry-container\");\r\n\r\n /*\r\n * Basically the plugin displays the rating using two rows of stars lying one above\r\n * the other, the row that is on the top represents the actual rating, and the one\r\n * behind acts just like a background.\r\n *\r\n * `$groupWrapper`: is an element that wraps both the rows\r\n * `$normalGroup`: is the container for row of stars thats behind and\r\n * acts as background\r\n * `$ratedGroup`: is the container for row of stars that display the actual rating.\r\n *\r\n * The rating is displayed by adjusting the width of `$ratedGroup`\r\n */\r\n var $groupWrapper = $(\"
    \").addClass(\"jq-ry-group-wrapper\")\r\n .appendTo($node);\r\n\r\n var $normalGroup = $(\"
    \").addClass(\"jq-ry-normal-group\")\r\n .addClass(\"jq-ry-group\")\r\n .appendTo($groupWrapper);\r\n\r\n var $ratedGroup = $(\"
    \").addClass(\"jq-ry-rated-group\")\r\n .addClass(\"jq-ry-group\")\r\n .appendTo($groupWrapper);\r\n\r\n /*\r\n * Variable `step`: store the value of the rating for each star\r\n * eg: if `maxValue` is 5 and `numStars` is 5, value of each star\r\n * is 1.\r\n * Variable `starWidth`: stores the decimal value of width of star in units of px\r\n * Variable `percentOfStar`: stores the percentage of width each star takes w.r.t\r\n * the container\r\n * Variable `spacing`: stores the decimal value of the spacing between stars\r\n * in the units of px\r\n * Variable `percentOfSpacing`: stores the percentage of width of the spacing\r\n * between stars w.r.t the container\r\n */\r\n var step, starWidth, percentOfStar, spacing,\r\n percentOfSpacing, containerWidth, minValue = 0;\r\n\r\n /*\r\n * `currentRating` contains rating that is being displayed at the latest point of\r\n * time.\r\n *\r\n * When ever you hover over the plugin UI, the rating value changes\r\n * according to the place where you point the cursor, currentRating contains\r\n * the current value of rating that is being shown in the UI\r\n */\r\n var currentRating = options.rating;\r\n\r\n // A flag to store if the plugin is already being displayed in the UI\r\n var isInitialized = false;\r\n\r\n function showRating (ratingVal) {\r\n\r\n /*\r\n * The function is responsible for displaying the rating by changing\r\n * the width of `$ratedGroup`\r\n */\r\n\r\n if (!isDefined(ratingVal)) {\r\n\r\n ratingVal = options.rating;\r\n }\r\n\r\n // Storing the value that is being shown in `currentRating`.\r\n currentRating = ratingVal;\r\n\r\n var numStarsToShow = ratingVal/step;\r\n\r\n // calculating the percentage of width of $ratedGroup with respect to its parent\r\n var percent = numStarsToShow*percentOfStar;\r\n\r\n if (numStarsToShow > 1) {\r\n\r\n // adding the percentage of space that is taken by the gap the stars\r\n percent += (Math.ceil(numStarsToShow) - 1)*percentOfSpacing;\r\n }\r\n\r\n setRatedFill(options.ratedFill);\r\n\r\n percent = options.rtl ? 100 - percent : percent;\r\n\r\n $ratedGroup.css(\"width\", percent + \"%\");\r\n }\r\n\r\n function setContainerWidth () {\r\n\r\n /*\r\n * Set the width of the `this.node` based on the width of each star and\r\n * the space between them\r\n */\r\n\r\n containerWidth = starWidth*options.numStars + spacing*(options.numStars - 1);\r\n\r\n percentOfStar = (starWidth/containerWidth)*100;\r\n\r\n percentOfSpacing = (spacing/containerWidth)*100;\r\n\r\n $node.width(containerWidth);\r\n\r\n showRating();\r\n }\r\n\r\n function setStarWidth (newWidth) {\r\n\r\n /*\r\n * Set the width and height of each SVG star, called whenever one changes the\r\n * `starWidth` option\r\n */\r\n\r\n // The width and height of the star should be the same\r\n var starHeight = options.starWidth = newWidth;\r\n\r\n starWidth = window.parseFloat(options.starWidth.replace(\"px\", \"\"));\r\n\r\n $normalGroup.find(\"svg\")\r\n .attr({width : options.starWidth,\r\n height: starHeight});\r\n\r\n $ratedGroup.find(\"svg\")\r\n .attr({width : options.starWidth,\r\n height: starHeight});\r\n\r\n setContainerWidth();\r\n\r\n return $node;\r\n }\r\n\r\n function setSpacing (newSpacing) {\r\n\r\n /*\r\n * Set spacing between the SVG stars, called whenever one changes\r\n * the `spacing` option\r\n */\r\n\r\n options.spacing = newSpacing;\r\n\r\n spacing = parseFloat(options.spacing.replace(\"px\", \"\"));\r\n\r\n $normalGroup.find(\"svg:not(:first-child)\")\r\n .css({\"margin-left\": newSpacing});\r\n\r\n $ratedGroup.find(\"svg:not(:first-child)\")\r\n .css({\"margin-left\": newSpacing});\r\n\r\n setContainerWidth();\r\n\r\n return $node;\r\n }\r\n\r\n function setNormalFill (newFill) {\r\n\r\n /*\r\n * Set the background fill of the Stars, called whenever one changes the\r\n * `normalFill` option\r\n */\r\n\r\n options.normalFill = newFill;\r\n\r\n var $svgs = (options.rtl ? $ratedGroup : $normalGroup).find(\"svg\");\r\n\r\n $svgs.attr({fill: options.normalFill});\r\n\r\n return $node;\r\n }\r\n\r\n /*\r\n * Store the recent `ratedFill` option in a variable\r\n * so that if multiColor is unset, we can use the perviously set `ratedFill`\r\n * from this variable\r\n */\r\n var ratedFill = options.ratedFill;\r\n\r\n function setRatedFill (newFill) {\r\n\r\n /*\r\n * Set ratedFill of the stars, called when one changes the `ratedFill` option\r\n */\r\n\r\n /*\r\n * If `multiColor` option is set, `newFill` variable is dynamically set\r\n * based on the rating, what ever set as parameter will be discarded\r\n */\r\n if (options.multiColor) {\r\n\r\n var ratingDiff = currentRating - minValue,\r\n percentCovered = (ratingDiff/options.maxValue)*100;\r\n\r\n var colorOpts = options.multiColor || {},\r\n startColor = colorOpts.startColor || MULTICOLOR_OPTIONS.startColor,\r\n endColor = colorOpts.endColor || MULTICOLOR_OPTIONS.endColor;\r\n\r\n newFill = getColor(startColor, endColor, percentCovered);\r\n } else {\r\n\r\n ratedFill = newFill;\r\n }\r\n\r\n options.ratedFill = newFill;\r\n\r\n var $svgs = (options.rtl ? $normalGroup : $ratedGroup).find(\"svg\");\r\n\r\n $svgs.attr({fill: options.ratedFill});\r\n\r\n return $node;\r\n }\r\n\r\n function setRtl (newValue) {\r\n\r\n newValue = !!newValue;\r\n\r\n options.rtl = newValue;\r\n\r\n setNormalFill(options.normalFill);\r\n showRating();\r\n }\r\n\r\n function setMultiColor (colorOptions) {\r\n\r\n /*\r\n * called whenever one changes the `multiColor` option\r\n */\r\n\r\n options.multiColor = colorOptions;\r\n\r\n // set the recently set `ratedFill` option, if multiColor Options are unset\r\n setRatedFill(colorOptions ? colorOptions : ratedFill);\r\n }\r\n\r\n function setNumStars (newValue) {\r\n\r\n /*\r\n * Set the number of stars to use to display the rating, called whenever one\r\n * changes the `numStars` option\r\n */\r\n\r\n options.numStars = newValue;\r\n\r\n step = options.maxValue/options.numStars;\r\n\r\n $normalGroup.empty();\r\n $ratedGroup.empty();\r\n\r\n for (var i=0; i newValue) {\r\n\r\n setRating(newValue);\r\n }\r\n\r\n showRating();\r\n\r\n return $node;\r\n }\r\n\r\n function setPrecision (newValue) {\r\n\r\n /*\r\n * Set the precision of the rating value, called if one changes the\r\n * `precision` option\r\n */\r\n\r\n options.precision = newValue;\r\n\r\n setRating(options.rating);\r\n\r\n return $node;\r\n }\r\n\r\n function setHalfStar (newValue) {\r\n\r\n /*\r\n * This function will be called if one changes the `halfStar` option\r\n */\r\n\r\n options.halfStar = newValue;\r\n\r\n return $node;\r\n }\r\n\r\n function setFullStar (newValue) {\r\n\r\n /*\r\n * This function will be called if one changes the `fullStar` option\r\n */\r\n\r\n options.fullStar = newValue;\r\n\r\n return $node;\r\n }\r\n\r\n function round (value) {\r\n\r\n /*\r\n * Rounds the value of rating if `halfStar` or `fullStar` options are chosen\r\n */\r\n\r\n var remainder = value%step,\r\n halfStep = step/2,\r\n isHalfStar = options.halfStar,\r\n isFullStar = options.fullStar;\r\n\r\n if (!isFullStar && !isHalfStar) {\r\n\r\n return value;\r\n }\r\n\r\n if (isFullStar || (isHalfStar && remainder > halfStep)) {\r\n\r\n value += step - remainder;\r\n } else {\r\n\r\n value = value - remainder;\r\n\r\n if (remainder > 0) {\r\n\r\n value += halfStep;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function calculateRating (e) {\r\n\r\n /*\r\n * Calculates and returns the rating based on the position of cursor w.r.t the\r\n * plugin container\r\n */\r\n\r\n var position = $normalGroup.offset(),\r\n nodeStartX = position.left,\r\n nodeEndX = nodeStartX + $normalGroup.width();\r\n\r\n var maxValue = options.maxValue;\r\n\r\n // The x-coordinate(position) of the mouse pointer w.r.t page\r\n var pageX = e.pageX;\r\n\r\n var calculatedRating = 0;\r\n\r\n // If the mouse pointer is to the left of the container\r\n if(pageX < nodeStartX) {\r\n\r\n calculatedRating = minValue;\r\n }else if (pageX > nodeEndX) { // If the mouse pointer is right of the container\r\n\r\n calculatedRating = maxValue;\r\n }else { // If the mouse pointer is inside the continer\r\n\r\n /*\r\n * The fraction of width covered by the pointer w.r.t to the total width\r\n * of the container.\r\n */\r\n var calcPrcnt = ((pageX - nodeStartX)/(nodeEndX - nodeStartX));\r\n\r\n if (spacing > 0) {\r\n\r\n\t /*\r\n * If there is spacing between stars, take the percentage of width covered\r\n * and subtract the percentage of width covered by stars and spacing, to find\r\n * how many stars are covered, the number of stars covered is the rating\r\n *\r\n * TODO: I strongly feel that this logic can be improved!, Please help!\r\n */\r\n calcPrcnt *= 100;\r\n\r\n var remPrcnt = calcPrcnt;\r\n\r\n while (remPrcnt > 0) {\r\n\r\n if (remPrcnt > percentOfStar) {\r\n\r\n calculatedRating += step;\r\n remPrcnt -= (percentOfStar + percentOfSpacing);\r\n } else {\r\n\r\n calculatedRating += remPrcnt/percentOfStar*step;\r\n remPrcnt = 0;\r\n }\r\n }\r\n } else {\r\n\r\n /*\r\n * If there is not spacing between stars, the fraction of width covered per\r\n * `maxValue` is the rating\r\n */\r\n calculatedRating = calcPrcnt * (options.maxValue);\r\n }\r\n\r\n // Round the rating if `halfStar` or `fullStar` options are chosen\r\n calculatedRating = round(calculatedRating);\r\n }\r\n\r\n if (options.rtl) {\r\n\r\n calculatedRating = maxValue - calculatedRating;\r\n }\r\n\r\n return calculatedRating;\r\n }\r\n\r\n function setReadOnly (newValue) {\r\n\r\n /*\r\n * UnBinds mouse event handlers, called when whenever one changes the\r\n * `readOnly` option\r\n */\r\n\r\n options.readOnly = newValue;\r\n\r\n $node.attr(\"readonly\", true);\r\n\r\n unbindEvents();\r\n\r\n if (!newValue) {\r\n\r\n $node.removeAttr(\"readonly\");\r\n\r\n bindEvents();\r\n }\r\n\r\n return $node;\r\n }\r\n\r\n function setRating (newValue) {\r\n\r\n /*\r\n * Sets the rating of the Plugin, Called when option `rating` is changed\r\n * or, when `rating` method is called\r\n */\r\n\r\n var rating = newValue;\r\n\r\n var maxValue = options.maxValue;\r\n\r\n if (typeof rating === \"string\") {\r\n\r\n // If rating is given in percentage, maxValue should be 100\r\n if (rating[rating.length - 1] === \"%\") {\r\n\r\n rating = rating.substr(0, rating.length - 1);\r\n maxValue = 100;\r\n\r\n setMaxValue(maxValue);\r\n }\r\n\r\n rating = parseFloat(rating);\r\n }\r\n\r\n checkBounds(rating, minValue, maxValue);\r\n\r\n rating = parseFloat(rating.toFixed(options.precision));\r\n\r\n checkPrecision(parseFloat(rating), minValue, maxValue);\r\n\r\n options.rating = rating;\r\n\r\n showRating();\r\n\r\n if (isInitialized) {\r\n\r\n $node.trigger(\"rateyo.set\", {rating: rating});\r\n }\r\n\r\n return $node;\r\n }\r\n\r\n function setOnInit (method) {\r\n\r\n /*\r\n * set what method to be called on Initialization\r\n */\r\n\r\n options.onInit = method;\r\n\r\n return $node;\r\n }\r\n\r\n function setOnSet (method) {\r\n\r\n /*\r\n * set what method to be called when rating is set\r\n */\r\n\r\n options.onSet = method;\r\n\r\n return $node;\r\n }\r\n\r\n function setOnChange (method) {\r\n\r\n /*\r\n * set what method to be called rating in the UI is changed\r\n */\r\n\r\n options.onChange = method;\r\n\r\n return $node;\r\n }\r\n\r\n this.rating = function (newValue) {\r\n\r\n /*\r\n * rating getter/setter\r\n */\r\n\r\n if (!isDefined(newValue)) {\r\n\r\n return options.rating;\r\n }\r\n\r\n setRating(newValue);\r\n\r\n return $node;\r\n };\r\n\r\n this.destroy = function () {\r\n\r\n /*\r\n * Removes the Rating UI by clearing the content, and removing the custom classes\r\n */\r\n\r\n if (!options.readOnly) {\r\n\r\n unbindEvents();\r\n }\r\n\r\n RateYo.prototype.collection = deleteInstance($node.get(0),\r\n this.collection);\r\n\r\n $node.removeClass(\"jq-ry-container\").children().remove();\r\n\r\n return $node;\r\n };\r\n\r\n this.method = function (methodName) {\r\n\r\n /*\r\n * Method to call the methods of RateYo Instance\r\n */\r\n\r\n if (!methodName) {\r\n\r\n throw Error(\"Method name not specified!\");\r\n }\r\n\r\n if (!isDefined(this[methodName])) {\r\n\r\n throw Error(\"Method \" + methodName + \" doesn't exist!\");\r\n }\r\n\r\n var args = Array.prototype.slice.apply(arguments, []),\r\n params = args.slice(1),\r\n method = this[methodName];\r\n\r\n return method.apply(this, params);\r\n };\r\n\r\n this.option = function (optionName, param) {\r\n\r\n /*\r\n * Method to get/set Options\r\n */\r\n\r\n if (!isDefined(optionName)) {\r\n\r\n return options;\r\n }\r\n\r\n var method;\r\n\r\n switch (optionName) {\r\n\r\n case \"starWidth\":\r\n\r\n method = setStarWidth;\r\n break;\r\n case \"numStars\":\r\n\r\n method = setNumStars;\r\n break;\r\n case \"normalFill\":\r\n\r\n method = setNormalFill;\r\n break;\r\n case \"ratedFill\":\r\n\r\n method = setRatedFill;\r\n break;\r\n case \"multiColor\":\r\n\r\n method = setMultiColor;\r\n break;\r\n case \"maxValue\":\r\n\r\n method = setMaxValue;\r\n break;\r\n case \"precision\":\r\n\r\n method = setPrecision;\r\n break;\r\n case \"rating\":\r\n\r\n method = setRating;\r\n break;\r\n case \"halfStar\":\r\n\r\n method = setHalfStar;\r\n break;\r\n case \"fullStar\":\r\n\r\n method = setFullStar;\r\n break;\r\n case \"readOnly\":\r\n\r\n method = setReadOnly;\r\n break;\r\n case \"spacing\":\r\n\r\n method = setSpacing;\r\n break;\r\n\tcase \"rtl\":\r\n\r\n method = setRtl;\r\n\t break;\r\n case \"onInit\":\r\n\r\n method = setOnInit;\r\n break;\r\n case \"onSet\":\r\n\r\n method = setOnSet;\r\n break;\r\n case \"onChange\":\r\n\r\n method = setOnChange;\r\n break;\r\n default:\r\n\r\n throw Error(\"No such option as \" + optionName);\r\n }\r\n\r\n return isDefined(param) ? method(param) : options[optionName];\r\n };\r\n\r\n function onMouseEnter (e) {\r\n\r\n /*\r\n * If the Mouse Pointer is inside the container, calculate and show the rating\r\n * in UI\r\n */\r\n\r\n var rating = calculateRating(e).toFixed(options.precision);\r\n\r\n var maxValue = options.maxValue;\r\n\r\n rating = checkPrecision(parseFloat(rating), minValue, maxValue);\r\n\r\n showRating(rating);\r\n\r\n $node.trigger(\"rateyo.change\", {rating: rating});\r\n }\r\n\r\n function onMouseLeave () {\r\n if (isMobileBrowser()) {\r\n return;\r\n }\r\n\r\n /*\r\n * If mouse leaves, revert the rating in UI to previously set rating,\r\n * when empty value is passed to showRating, it will take the previously set\r\n * rating\r\n */\r\n\r\n showRating();\r\n\r\n $node.trigger(\"rateyo.change\", {rating: options.rating});\r\n }\r\n\r\n function onMouseClick (e) {\r\n\r\n /*\r\n * On clicking the mouse inside the container, calculate and set the rating\r\n */\r\n\r\n var resultantRating = calculateRating(e).toFixed(options.precision);\r\n resultantRating = parseFloat(resultantRating);\r\n\r\n that.rating(resultantRating);\r\n }\r\n\r\n function onInit(e, data) {\r\n\r\n if(options.onInit && typeof options.onInit === \"function\") {\r\n\r\n /* jshint validthis:true */\r\n options.onInit.apply(this, [data.rating, that]);\r\n }\r\n }\r\n\r\n function onChange (e, data) {\r\n\r\n if(options.onChange && typeof options.onChange === \"function\") {\r\n\r\n /* jshint validthis:true */\r\n options.onChange.apply(this, [data.rating, that]);\r\n }\r\n }\r\n\r\n function onSet (e, data) {\r\n\r\n if(options.onSet && typeof options.onSet === \"function\") {\r\n\r\n /* jshint validthis:true */\r\n options.onSet.apply(this, [data.rating, that]);\r\n }\r\n }\r\n\r\n function bindEvents () {\r\n\r\n $node.on(\"mousemove\", onMouseEnter)\r\n .on(\"mouseenter\", onMouseEnter)\r\n .on(\"mouseleave\", onMouseLeave)\r\n .on(\"click\", onMouseClick)\r\n .on(\"rateyo.init\", onInit)\r\n .on(\"rateyo.change\", onChange)\r\n .on(\"rateyo.set\", onSet);\r\n }\r\n\r\n function unbindEvents () {\r\n\r\n $node.off(\"mousemove\", onMouseEnter)\r\n .off(\"mouseenter\", onMouseEnter)\r\n .off(\"mouseleave\", onMouseLeave)\r\n .off(\"click\", onMouseClick)\r\n .off(\"rateyo.init\", onInit)\r\n .off(\"rateyo.change\", onChange)\r\n .off(\"rateyo.set\", onSet);\r\n }\r\n\r\n setNumStars(options.numStars);\r\n setReadOnly(options.readOnly);\r\n\r\n if (options.rtl) {\r\n\r\n setRtl(options.rtl);\r\n }\r\n\r\n this.collection.push(this);\r\n this.rating(options.rating, true);\r\n\r\n isInitialized = true;\r\n $node.trigger(\"rateyo.init\", {rating: options.rating});\r\n }\r\n\r\n RateYo.prototype.collection = [];\r\n\r\n function getInstance (node, collection) {\r\n\r\n /*\r\n * Given a HTML element (node) and a collection of RateYo instances,\r\n * this function will search through the collection and return the matched\r\n * instance having the node\r\n */\r\n\r\n var instance;\r\n\r\n $.each(collection, function () {\r\n\r\n if(node === this.node){\r\n\r\n instance = this;\r\n return false;\r\n }\r\n });\r\n\r\n return instance;\r\n }\r\n\r\n function deleteInstance (node, collection) {\r\n\r\n /*\r\n * Given a HTML element (node) and a collection of RateYo instances,\r\n * this function will search through the collection and delete the\r\n * instance having the node, and return the modified collection\r\n */\r\n\r\n $.each(collection, function (index) {\r\n\r\n if (node === this.node) {\r\n\r\n var firstPart = collection.slice(0, index),\r\n secondPart = collection.slice(index+1, collection.length);\r\n\r\n collection = firstPart.concat(secondPart);\r\n\r\n return false;\r\n }\r\n });\r\n\r\n return collection;\r\n }\r\n\r\n function _rateYo (options) {\r\n\r\n var rateYoInstances = RateYo.prototype.collection;\r\n\r\n /* jshint validthis:true */\r\n var $nodes = $(this);\r\n\r\n if($nodes.length === 0) {\r\n\r\n return $nodes;\r\n }\r\n\r\n var args = Array.prototype.slice.apply(arguments, []);\r\n\r\n if (args.length === 0) {\r\n\r\n //If args length is 0, Initialize the UI with default settings\r\n options = args[0] = {};\r\n }else if (args.length === 1 && typeof args[0] === \"object\") {\r\n\r\n //If an Object is specified as first argument, it is considered as options\r\n options = args[0];\r\n }else if (args.length >= 1 && typeof args[0] === \"string\") {\r\n\r\n /*\r\n * if there is only one argument, and if its a string, it is supposed to be a\r\n * method name, if more than one argument is specified, the remaining arguments\r\n * except the first argument, will be passed as a params to the specified method\r\n */\r\n\r\n var methodName = args[0],\r\n params = args.slice(1);\r\n\r\n var result = [];\r\n\r\n $.each($nodes, function (i, node) {\r\n\r\n var existingInstance = getInstance(node, rateYoInstances);\r\n\r\n if(!existingInstance) {\r\n\r\n throw Error(\"Trying to set options before even initialization\");\r\n }\r\n\r\n var method = existingInstance[methodName];\r\n\r\n if (!method) {\r\n\r\n throw Error(\"Method \" + methodName + \" does not exist!\");\r\n }\r\n\r\n var returnVal = method.apply(existingInstance, params);\r\n\r\n result.push(returnVal);\r\n });\r\n\r\n /*\r\n * If the plugin in being called on only one jQuery Element, return only the\r\n * first value, to support chaining.\r\n */\r\n result = result.length === 1? result[0]: result;\r\n\r\n return result;\r\n }else {\r\n\r\n throw Error(\"Invalid Arguments\");\r\n }\r\n\r\n /*\r\n * if only options are passed, extend default options, and if the plugin is not\r\n * initialized on a particular jQuery element, initalize RateYo on it\r\n */\r\n options = $.extend({}, DEFAULTS, options);\r\n\r\n return $.each($nodes, function () {\r\n\r\n var existingInstance = getInstance(this, rateYoInstances);\r\n\r\n if (!existingInstance) {\r\n\r\n return new RateYo($(this), $.extend({}, options));\r\n }\r\n });\r\n }\r\n\r\n function rateYo () {\r\n\r\n /* jshint validthis:true */\r\n return _rateYo.apply(this, Array.prototype.slice.apply(arguments, []));\r\n }\r\n\r\n window.RateYo = RateYo;\r\n $.fn.rateYo = rateYo;\r\n\r\n}(window.jQuery));\r\n","FD.SITE = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.SITE || {};\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n var ELEM = '[data-fd*=\"page-ctrl-\"]';\r\n var PARENT = '[data-parent=\"true\"]';\r\n var DATERANGE_ELEM = 'DATERANGE';\r\n var DATENAV_SELECT_ELEM = '[data-name=dateNavSelect],[data-type=dateNavSelect]';\r\n var DATENAV_NEXT_ELEM = '[data-name=\"dateNavNext\"]';\r\n var DATENAV_PREV_ELEM = '[data-name=\"dateNavPrev\"]';\r\n var DELETE_ELEM = '[data-fd=\"page-ctrl-delete\"]';\r\n var DELETE_CONFIRM = '[data-fd=\"page-ctrl-confirmdelete\"]';\r\n var DELETE_CANCEL = '[data-fd=\"page-ctrl-canceldelete\"]';\r\n var DATEPICKER_PREV = '[data-name=\"datePickerPrev\"]';\r\n var DATEPICKER_NEXT = '[data-name=\"datePickerNext\"]';\r\n var DATEPICKER_TODAY = '[data-name=\"datePickerToday\"]';\r\n var SELECT_PREV = '[data-name=\"selectPrev\"]';\r\n var SELECT_NEXT = '[data-name=\"selectNext\"]';\r\n var SELECT_ELEM = '[data-fd=\"page-ctrl-select\"]';\r\n var EARLIEST_DATE = new Date('1/1/1753');\r\n var LATEST_DATE = new Date('12/31/9999');\r\n var INPUT_ELEM = '[data-fd=\"page-ctrl-input\"]';\r\n var INPUTKEYUP_ELEM = '[data-fd=\"page-ctrl-inputkeyup\"]';\r\n var BUTTON_ELEM = '[data-fd=\"page-ctrl-button\"]';\r\n var COLLAPSE_ELEM = '[data-fd=\"page-ctrl-expandcollapse\"]';\r\n var TOGGLE_ELEM = '[data-fd=\"page-ctrl-toggle\"]';\r\n var DATENAV_PREV = '[data-name=\"dateNavPrev\"]';\r\n var DATENAV_SELECT = '[data-name=\"dateNavSelect\"],[data-type=dateNavSelect]';\r\n var DATENAV_NEXT = '[data-name=\"dateNavNext\"]';\r\n var DATENAV_TODAY = '[data-name=\"dateNavToday\"]';\r\n var DELAY = 800;\r\n\r\n var body = $('body');\r\n var list = []; // all ctrls\r\n var selectedDate = false; // Used to avoid redundant datepicker calls\r\n var topControlClickedElement; // Used to allow for typing in top control datepicker\r\n\r\n // defaults\r\n var defaults = {\r\n element: '',\r\n value: '',\r\n name: 'noname',\r\n autocompletetype: '', // only ac\r\n autocompleteinitialvalue: '',\r\n\r\n // note: these come from the row\r\n callback: 'PAGE.getAfterControlEvent', // default\r\n tag: 0\r\n };\r\n\r\n /* ========================================================================\r\n * handles\r\n * INPUT : input\r\n * INPUTKEYUP: inputkeyup\r\n * BUTTON : button\r\n * TOGGLE [T/F]: toggle\r\n * SELECT : select\r\n * COMBO: combodivcell, combodivfocusfactorycell, combodivfocusfactorysupercell\r\n * AUTOCOMPLETE,\r\n * DATERANGE\r\n * COLLPASE/EXPAND: collapse\r\n * DATEPICKER\r\n * DATENAV datenav\r\n * ========================================================================\r\n */\r\n\r\n\r\n /* ========================================================================\r\n * div child combo vars\r\n * ========================================================================\r\n */\r\n\r\n var SELECT_DIVISION_CHILD_COMBO_ELEM = '[data-fd=\"page-ctrl-combodivchild\"]';\r\n var SELECT_FOCUSFACTORY_CHILD_COMBO_ELEM = '[data-fd=\"page-ctrl-combofocusfactorychild\"]';\r\n var DIVISION_CHILD_PREV = '[data-name=\"divisionChildPrev\"]';\r\n var DIVISION_CHILD_NEXT = '[data-name=\"divisionChildNext\"]';\r\n var FOCUSFACTORY_CHILD_PREV = '[data-name=\"focusfactoryChildPrev\"]';\r\n var FOCUSFACTORY_CHILD_NEXT = '[data-name=\"focusfactoryChildNext\"]';\r\n\r\n var COMBOTYPE = {\r\n DIVISION_CELL: 1,\r\n DIVISIONWITHFOCUSFACTORY_CELL: 2,\r\n DIVISIONWITHFOCUSFACTORY_SUPERCELL: 3,\r\n DIVISION_FOCUSFACTORYCELL: 4,\r\n DIVISIONFOCUSFACTORY_CELL: 5\r\n }\r\n\r\n var ALL_INNOTEC = 1;\r\n\r\n /* ========================================================================\r\n * autocomplete vars\r\n * ========================================================================\r\n */\r\n // autocomplete type\r\n var ACTYPE = {\r\n NONE: -1,\r\n USER: 1,\r\n CELL: 2,\r\n DIVISION: 3,\r\n CR: 4,\r\n DIVISIONCELLUSER: 5,\r\n DIVISIONCELLCR: 6,\r\n DIVISIONCELL: 7,\r\n DIVISIONCELLCRUSER: 8,\r\n MONTHLYMETRIC: 9,\r\n COMPANY: 10,\r\n COMPANYLOCATION: 11,\r\n UNIVERSALUSER: 12,\r\n PROJECTLIST: 13,\r\n FOCUSFACTORY: 14,\r\n SUPERCELL: 15,\r\n MACHINE: 16,\r\n STATION: 17,\r\n CUSTOMER: 18,\r\n VIEWID: 19,\r\n CRMENTOR: 20,\r\n INNOTECPART: 21,\r\n CUSTOMERPART: 22,\r\n NONFAILUREINTERVENTION: 23,\r\n DOWNTIMEISSUE: 24,\r\n MANUALPROCESS: 25,\r\n SCRAPDEFECT: 26,\r\n TAG: 27,\r\n EIGHTD: 28,\r\n TECHNICALCR: 29,\r\n CONTACT: 30,\r\n DOWNTIMEWARNING: 31,\r\n SPAREPARTLOCATION: 32,\r\n FOXENTITY: 33,\r\n USERCOMPLETELIST: 34,\r\n PROJECTENTITYLIST: 35,\r\n PROJECTMETRICACCOUNTS: 36,\r\n OTEACCOUNTS: 37,\r\n DIVISIONFOCUSFACTORYCELL: 38,\r\n INNOTECDIVISIONCELLCRUSER: 39,\r\n TRAININGMATRIXPLAYLIST: 40,\r\n DIVISIONGROUPDIVISIONFOCUSFACTORYSUPERCELLCELLMACHINESTATION: 41,\r\n MPTUSERS: 42,\r\n DIVISIONFOCUSFACTORY: 43,\r\n MANUALLABORCOMPANYLOCATION: 44,\r\n BOTRESPOSIBILITYPARENT: 45,\r\n ONEPPRESPOSIBILITYPARENT: 46,\r\n ONEPP_RESPONSIBILITY_ALL: 47,\r\n MPTUSERS_WITHCOMPANY: 48,\r\n JOB: 49,\r\n CONTPAQ_PRODUCTS: 50,\r\n USERS_EXCEPT_FULLTIME: 51,\r\n UNLINKED_SPARE_PART_PARTS: 52,\r\n UNLINKED_CONTPAQ_PRODUCTS: 53,\r\n PURCHASED_MATERIAL: 55,\r\n NON_CONTPAQ_VENDORS: 56,\r\n CONTPAQ_VENDORS_ONLY: 57,\r\n TRAINING_MATRIX_TEMPLATE: 59,\r\n JOB_EXCLUDE_LINKED: 60,\r\n TRAINING_MATRIX_ENTITY: 61,\r\n COMPANY_LOCATIONS_WITH_BOM: 62,\r\n COMPANY_LOCATIONS_WITH_SALES_ORDER: 63,\r\n NON_CUSTOMER_LOCATION: 64,\r\n CHILD_ACCOUNT: 66,\r\n SHIPTO: 69,\r\n COMPANY_LOCATIONS_WITH_BOM_SHIPTO: 70,\r\n PDT_PROJECT_NUMBER: 78,\r\n SHIPTO_AND_CELL_LIST: 79,\r\n INNOTECPART_WITHOUT_CELLNAME: 83,\r\n COMPANY_LOCATION_AND_CELLLIST: 88,\r\n CR_AND_USER: 89,\r\n EIGHTD_WITH_NAME: 92,\r\n CUSTOMERPART_WITH_SHIPTO_DESCRIPTION: 94\r\n };\r\n\r\n var URL = \"/Common/Common/\";\r\n\r\n\r\n /* ========================================================================\r\n * row methods\r\n * ========================================================================\r\n */\r\n\r\n // set top control element\r\n function setTopControlElement() {\r\n list = $(ELEM);\r\n\r\n if (list.length === 0) {\r\n return;\r\n }\r\n\r\n setEvents();\r\n\r\n list.each(function (i, e) {\r\n var elem = $(e);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n options.element = elem;\r\n\r\n // type\r\n options.type = options.fd.split(\"-\")[2];\r\n\r\n // set callback, tag\r\n var parent = elem.parents(PARENT);\r\n var parentCallBack = parent.data('callback');\r\n var parentTag = parent.data('tag');\r\n if (parentCallBack !== undefined) {\r\n options.callback = parent.data(\"callback\");\r\n }\r\n if (parentTag !== undefined) {\r\n options.tag = parent.data(\"tag\");\r\n }\r\n\r\n // override tag if button type\r\n if (options.type === 'button') {\r\n var tag = elem.data('tag');\r\n if (tag !== undefined) options.tag = tag;\r\n\r\n // remove popover if exist\r\n elem.data('target', '');\r\n }\r\n\r\n elem.data(options);\r\n\r\n if (options.type == 'inputautocomplete') {\r\n options.autocompletetype = options.autocompletetype.toUpperCase();\r\n elem.data(options);\r\n if (options.clearonload) {\r\n elem.data('clearonload', false).attr('data-clearonload', false).val(elem.data('onloadvalue'));\r\n options.clearonload = false;\r\n }\r\n setAutoCompleteContainer(elem);\r\n } else if (options.type == 'daterange') {\r\n elem.find('input').data('callback', options.callback).data('tag', options.tag);\r\n }\r\n\r\n setInitialValue(elem);\r\n });\r\n\r\n\r\n }\r\n\r\n function updateUrlState(elem, data) {\r\n var controlName = elem.data('name'),\r\n controlValue = data[controlName],\r\n entityType = data[controlName + \"RawData\"]?.entitytype,\r\n url = document.location.href;\r\n\r\n if (!controlName) {\r\n return;\r\n }\r\n\r\n // Ignore non-toggle buttons.\r\n if (elem.is(\".btn:not(.btn-toggle)\")) {\r\n return;\r\n }\r\n\r\n // Set dependent settings\r\n if (controlName == 'cellID') {\r\n if (data.divisionID) {\r\n url = me.updateQS(url, 'divisionID', data.divisionID);\r\n }\r\n }\r\n\r\n // Clear dependent settings\r\n if (controlName == 'divisionID') {\r\n if (data.cellID) {\r\n url = me.updateQS(url, 'cellID', data.cellID);\r\n }\r\n }\r\n\r\n // Use lowest level setting for entityID\r\n if (controlName == 'divisionID' || controlName == 'cellID') {\r\n var entityID = Number(data.divisionID) === ALL_INNOTEC ? -1 : (typeof data.cellID == 'undefined' || Number(data.cellID) === -1 ? data.divisionID : data.cellID);\r\n url = me.updateQS(url, 'entityID', entityID);\r\n }\r\n\r\n if (entityType) {\r\n url = me.updateQS(url, 'entityType', entityType);\r\n }\r\n\r\n // Update URL\r\n url = me.updateQS(url, controlName, controlValue);\r\n window.history.replaceState({}, document.title, url);\r\n }\r\n\r\n\r\n function setInitialValue(e) {\r\n var data = e.data();\r\n\r\n switch (data.type) {\r\n case 'toggle':\r\n data.value = e.hasClass('active') ? true : false;\r\n break;\r\n case 'button':\r\n case 'delete':\r\n data.value = false;\r\n break;\r\n case 'input':\r\n case 'inputkeyup':\r\n if (data.clearonload) {\r\n data.clearonload = false;\r\n e.data('clearonload', false).attr('data-clearonload', false).val(data.onloadvalue)\r\n }\r\n data.value = e.val();\r\n break;\r\n case 'select':\r\n if (data.clearonload) {\r\n data.clearonload = false;\r\n e.data('clearonload', false).attr('data-clearonload', false).val(data.onloadvalue)\r\n }\r\n if (data.enablearrows) {\r\n var index = e.find('option:selected').index();\r\n if (index == 0) {\r\n e.closest('.control').find(SELECT_PREV).attr('disabled', true).find('i').removeClass('fa-angle-left');\r\n } else if (index == e.find('option').length - 1) {\r\n e.closest('.control').find(SELECT_NEXT).attr('disabled', true).find('i').removeClass('fa-angle-right');\r\n }\r\n }\r\n data.value = e.val();\r\n break;\r\n case 'combodivchild':\r\n if (data.clearonload) {\r\n data.clearonload = false;\r\n e.data('clearonload', false).attr('data-clearonload', false).val(data.onloadvalue)\r\n }\r\n if (data.enablearrows) {\r\n var index = e.find('option:selected').index();\r\n if (index == 0) {\r\n e.closest('.control').find(DIVISION_CHILD_PREV).attr('disabled', true).find('i').removeClass('fa-angle-left');\r\n } else if (index == e.find('option').length - 1) {\r\n e.closest('.control').find(DIVISION_CHILD_NEXT).attr('disabled', true).find('i').removeClass('fa-angle-right');\r\n }\r\n }\r\n data.value = e.val();\r\n break;\r\n case 'combofocusfactorychild':\r\n if (data.clearonload) {\r\n data.clearonload = false;\r\n e.data('clearonload', false).attr('data-clearonload', false).val(data.onloadvalue)\r\n }\r\n if (data.enablearrows) {\r\n var index = e.find('option:selected').index();\r\n if (index == 0) {\r\n e.closest('.control').find(FOCUSFACTORY_CHILD_PREV).attr('disabled', true).find('i').removeClass('fa-angle-left');\r\n } else if (index == e.find('option').length - 1) {\r\n e.closest('.control').find(FOCUSFACTORY_CHILD_NEXT).attr('disabled', true).find('i').removeClass('fa-angle-right');\r\n }\r\n }\r\n data.value = e.val();\r\n break;\r\n case 'datepicker':\r\n if (e.is('input')) {\r\n if (data.clearonload) {\r\n data.clearonload = false;\r\n e.data('clearonload', false).attr('data-clearonload', false).val(data.onloadvalue);\r\n }\r\n setDatePicker(e);\r\n }\r\n break;\r\n case 'daterange':\r\n setDateRange(e);\r\n break;\r\n case 'datenav':\r\n if (data.name === 'dateNavSelect') {\r\n if (data.clearonload) {\r\n data.clearonload = false;\r\n e.data('clearonload', false).attr('data-clearonload', false).val(data.onloadvalue)\r\n }\r\n data.value = (data.name == 'dateNavSelect') ? e.val() : false;\r\n }\r\n break;\r\n }\r\n e.data(data);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * date picker\r\n * ========================================================================\r\n */\r\n\r\n\r\n function setFormat(elem) {\r\n var data = elem.data();\r\n var format = data.format.toLowerCase();\r\n var theDate = new Date(elem.data('value'));\r\n\r\n switch (format) {\r\n case 'datefull': elem.val(moment(theDate).format(\"MMM DD, YYYY\"));\r\n break;\r\n case 'dateverbose': elem.val(theDate.getFullDateFriendly());\r\n break;\r\n case 'dateshortmonthyear': elem.val(theDate.getMonthDateFriendly());\r\n break;\r\n case 'datedaymonthnum': elem.val(theDate.getDayMonthNum());\r\n break;\r\n default: elem.val(theDate.getDateFriendly());\r\n }\r\n }\r\n\r\n\r\n // previous day button\r\n function setDatePickerPrev(e, datePicker) {\r\n var addedTime = datePicker.data('mondaysonly') ? (86400000 * 7) /*1 week*/ : 86400000;\r\n var newDate = new Date((new Date(datePicker.data('value'))).getTime() - addedTime);\r\n var minDate = new Date(datePicker.datepicker(\"option\", \"minDate\"));\r\n if (minDate !== null && newDate < minDate) {\r\n return;\r\n }\r\n datePicker.datepicker('option', 'defaultDate', newDate).datepicker('setDate', newDate);\r\n datePicker.data('value', newDate.getDateFriendly());\r\n setFormat(datePicker);\r\n getControlSet(datePicker);\r\n handleArrowsAgainstMaxAndMinDate(datePicker);\r\n }\r\n\r\n\r\n // next day button\r\n function setDatePickerNext(e, datePicker) {\r\n var addedTime = datePicker.data('mondaysonly') ? (86400000 * 7) /*1 week*/ : 86400000;\r\n var currentDate = new Date(datePicker.data('value'));\r\n var newDate = new Date((currentDate).getTime() + addedTime);\r\n if (currentDate.getDay() === newDate.getDay()) {\r\n newDate = new Date((newDate).getTime() + 3600000);//fix day time saving issue\r\n }\r\n var maxDate = datePicker.datepicker(\"option\", \"maxDate\");\r\n if (maxDate !== null && newDate > maxDate) {\r\n return;\r\n }\r\n datePicker.datepicker('option', 'defaultDate', newDate).datepicker('setDate', newDate);\r\n datePicker.data('value', newDate.getDateFriendly());\r\n setFormat(datePicker);\r\n getControlSet(datePicker);\r\n handleArrowsAgainstMaxAndMinDate(datePicker);\r\n }\r\n\r\n\r\n // current day button\r\n function setDatePickerToday(e, datePicker) {\r\n var newDate = new Date();\r\n if (datePicker.data('mondaysonly')) {\r\n var day = newDate.getDay();\r\n var diff = newDate.getDate() - day + (day == 0 ? -6 : 1); // adjust when day is sunday\r\n newDate = new Date(newDate.setDate(diff));\r\n } \r\n datePicker.datepicker('option', 'defaultDate', newDate).datepicker('setDate', newDate);\r\n datePicker.data('value', newDate.getDateFriendly());\r\n setFormat(datePicker);\r\n getControlSet(datePicker);\r\n }\r\n\r\n\r\n function setDatePicker(e) {\r\n var data = e.data();\r\n var value = e.val();\r\n\r\n if (value === \"\" || value === undefined || value === null) {\r\n value = new Date();\r\n }\r\n\r\n var theDate = new Date(value);\r\n\r\n if (!theDate.isValid()) {\r\n theDate = new Date();\r\n }\r\n\r\n e.val(theDate.getDateFriendly());\r\n data.value = e.val();\r\n e.data('value', theDate.getDateFriendly());\r\n\r\n setFormat(e);\r\n\r\n var NAMESPACE = me.getUID('CTRL_');\r\n var parent = e.parent();\r\n // set datepicker\r\n e.removeClass('hasDatepicker').on('blur keydown',\r\n function (event) {\r\n event.stopPropagation();\r\n if (event.which === 13 || event.keyCode === 13 || event.type === 'blur') {\r\n if (topControlClickedElement.id != 'ui-datepicker-div' &&\r\n $(topControlClickedElement).parents(\"#ui-datepicker-div\").size() == 0) {\r\n var tempDate = new Date(e.val());\r\n var datestring = tempDate.getDateFriendly();\r\n\r\n if (datestring === e.data('value')) {\r\n e.datepicker(\"setDate\", tempDate);\r\n setFormat(e);\r\n return;\r\n }\r\n\r\n if (!tempDate.isValid() || tempDate < EARLIEST_DATE || tempDate > LATEST_DATE) {\r\n if (e.data('value') && e.data('value').length > 0) {\r\n tempDate = new Date(e.data('value'));\r\n }\r\n if (!tempDate.isValid()) {\r\n tempDate = new Date();\r\n }\r\n }\r\n\r\n var maxDate = e.datepicker(\"option\", \"maxDate\");\r\n var minDate = e.datepicker(\"option\", \"minDate\");\r\n if ((maxDate && tempDate > new Date(maxDate)) || (minDate && tempDate < new Date(minDate))) {\r\n tempDate = new Date(e.data('value'));\r\n } else if (e.data('weekdaysonly') && (tempDate.getDay() === 0 || new Date(data.value).getDay() === 6)) {\r\n tempDate = new Date(e.data('value'));\r\n } else if (e.data('mondaysonly') && (tempDate.getDay() != 1)) {\r\n tempDate = new Date(e.data('value'));\r\n }\r\n\r\n datestring = tempDate.getDateFriendly();\r\n e.datepicker('setDate', datestring);\r\n e.datepicker('option', 'defaultDate', datestring);\r\n e.data('value', datestring);\r\n setFormat(e);\r\n getControlSet(e);\r\n handleArrowsAgainstMaxAndMinDate(e);\r\n }\r\n }\r\n }).datepicker({\r\n numberOfMonths: 2,\r\n defaultDate: data.value,\r\n buttonImageOnly: true,\r\n minDate: data.mindate,\r\n maxDate: data.maxdate,\r\n buttonText: \"\",\r\n showOn: \"both\",\r\n onSelect: function (dT, ui) {\r\n if (e.data('weekdaysonly') && ((new Date(dT)).getDay() === 0 || ((new Date(dT)).getDay() === 6))) {\r\n dT = e.data('value');\r\n }\r\n if (e.data('mondaysonly') && (new Date(dT)).getDay() != 1) {\r\n dT = e.data('value');\r\n }\r\n e.datepicker('option', 'defaultDate', dT);\r\n e.val(dT)\r\n .data('value', dT);\r\n setFormat(e);\r\n getControlSet(e);\r\n handleArrowsAgainstMaxAndMinDate(e);\r\n },\r\n beforeShowDay: function (date) {\r\n if (e.data('weekdaysonly')) {\r\n var dayOfWeek = date.getDay();\r\n return [\r\n !(dayOfWeek === 0 || dayOfWeek === 6),\r\n \"\",\r\n \"\"\r\n ];\r\n }\r\n if (e.data('mondaysonly')) {\r\n var dayOfWeek = date.getDay();\r\n return [\r\n (dayOfWeek === 1),\r\n \"\",\r\n \"\"\r\n ];\r\n }\r\n return [true, \"\", \"\"];\r\n }\r\n });\r\n\r\n // set surrounding buttons\r\n $(document).off('click.pagectrl_datePickerPrev', DATEPICKER_PREV)\r\n .off('click.pagectrl_datePickerNext', DATEPICKER_NEXT)\r\n .off('click.pagectrl_datePickerToday', DATEPICKER_TODAY)\r\n .on({\r\n 'click.pagectrl_datePickerPrev': function () {\r\n setDatePickerPrev($(this), e);\r\n }\r\n }, DATEPICKER_PREV)\r\n .on({\r\n 'click.pagectrl_datePickerNext': function () {\r\n setDatePickerNext($(this), e);\r\n }\r\n }, DATEPICKER_NEXT)\r\n .on({\r\n 'click.pagectrl_datePickerToday': function () {\r\n setDatePickerToday($(this), e);\r\n }\r\n }, DATEPICKER_TODAY);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * date range\r\n * ========================================================================\r\n */\r\n\r\n // setup date range control\r\n function setDateRange(elem) {\r\n var dateInputs = elem.find('input');\r\n var startDateInput = $(dateInputs[0]);\r\n var endDateInput = $(dateInputs[1]);\r\n for (var x = 0; x < dateInputs.length; x++) {\r\n var currentInput = $(dateInputs[x]);\r\n if (currentInput.data('clearonload')) {\r\n currentInput.data('clearonload', false).attr('data-clearonload', false).val(currentInput.data('onloadvalue'));\r\n }\r\n var value = currentInput.data(\"value\");\r\n if (value === \"\" || value === undefined || value === null) {\r\n value = new Date();\r\n }\r\n var theDate = new Date(value);\r\n\r\n if (!theDate.isValid()) {\r\n theDate = new Date();\r\n }\r\n\r\n currentInput.data('value', theDate.getDateFriendly());\r\n setFormat(currentInput);\r\n }\r\n\r\n // Start Date\r\n startDateInput.removeClass('hasDatepicker').datepicker({\r\n numberOfMonths: 2,\r\n defaultDate: startDateInput.data('value'),\r\n showOn: \"both\",\r\n onSelect: function (dT, ui) {\r\n startDateInput.blur();\r\n }\r\n });\r\n\r\n // End Date\r\n endDateInput.removeClass('hasDatepicker').datepicker({\r\n numberOfMonths: 2,\r\n defaultDate: endDateInput.data('value'),\r\n showOn: \"both\",\r\n onSelect: function (dT, ui) {\r\n endDateInput.blur();\r\n }\r\n });\r\n\r\n dateInputs.on('blur', function (event) {\r\n event.stopPropagation();\r\n handleDateRangeUpdate($(event.target), startDateInput, endDateInput);\r\n }).on('keyup', function (event) {\r\n var elem = $(this);\r\n\r\n if (event.which == 27 || event.keyCode == 27) { // Escape Key\r\n elem.datepicker('setDate', elem.data('value'))\r\n return;\r\n } else if (event.which == 13 || event.keyCode == 13) { // Enter Key\r\n elem.blur();\r\n }\r\n });\r\n }\r\n\r\n\r\n function handleDateRangeUpdate(currentInput, startDateInput, endDateInput) {\r\n var tempDate = new Date(currentInput.datepicker(\"getDate\"));\r\n\r\n if (topControlClickedElement.id != 'ui-datepicker-div' &&\r\n $(topControlClickedElement).parents(\"#ui-datepicker-div\").size() == 0) {\r\n tempDate = new Date(currentInput.val());\r\n var datestring = tempDate.getDateFriendly();\r\n\r\n if (datestring == currentInput.data('value')) {\r\n currentInput.datepicker(\"setDate\", tempDate);\r\n setFormat(currentInput);\r\n return;\r\n }\r\n } else if (new Date(currentInput.val()).getDateFriendly() == currentInput.data('value')) {\r\n return;\r\n }\r\n\r\n if (!tempDate.isValid() || currentInput.val().length == 0) {\r\n if (currentInput.data('value') && currentInput.data('value').length > 0) {\r\n tempDate = new Date(currentInput.data('value'));\r\n } if (!tempDate.isValid()) {\r\n tempDate = new Date();\r\n }\r\n }\r\n\r\n var datestring = tempDate.getDateFriendly();\r\n currentInput.datepicker('disable');\r\n currentInput.datepicker('setDate', datestring);\r\n currentInput.datepicker('option', 'defaultDate', datestring);\r\n currentInput.data('value', datestring).val(datestring);\r\n currentInput.datepicker('enable');\r\n setFormat(currentInput);\r\n\r\n validateDateRange(startDateInput, endDateInput);\r\n\r\n getControlSet(currentInput);\r\n }\r\n\r\n\r\n // Ensure start date is earlier and end date, and make sure the date is valid\r\n function validateDateRange(startDateInput, endDateInput) {\r\n var startDate = (startDateInput.val().length > 0) ? new Date(startDateInput.datepicker('getDate')) : new Date(startDateInput.data('value'));\r\n var endDate = (endDateInput.val().length > 0) ? new Date(endDateInput.datepicker('getDate')) : new Date(endDateInput.data('value'));\r\n\r\n if (startDate < EARLIEST_DATE || startDate > LATEST_DATE) {\r\n startDate = new Date(startDateInput.data('value'));\r\n startDateInput.datepicker('setDate', startDate);\r\n startDateInput.datepicker('option', 'defaultDate', startDate);\r\n startDateInput.data('value', startDate.getDateFriendly()).val(startDate.getDateFriendly());\r\n setFormat(startDateInput);\r\n }\r\n if (endDate < EARLIEST_DATE || endDate > LATEST_DATE) {\r\n endDate = new Date(endDateInput.data('value'));\r\n endDateInput.datepicker('setDate', endDate);\r\n endDateInput.datepicker('option', 'defaultDate', endDate);\r\n endDateInput.data('value', endDate.getDateFriendly()).val(endDate.getDateFriendly());\r\n setFormat(endDateInput);\r\n }\r\n if (startDate > endDate) {\r\n startDateInput.datepicker('setDate', endDate);\r\n startDateInput.datepicker('option', 'defaultDate', endDate);\r\n startDateInput.data('value', endDate.getDateFriendly()).val(endDate.getDateFriendly());\r\n setFormat(startDateInput);\r\n }\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * autocomplete\r\n * ========================================================================\r\n */\r\n\r\n // set the containers\r\n function setAutoCompleteContainer(e) {\r\n if (e.length === 0) {\r\n return;\r\n }\r\n var data = e.data()\r\n\r\n // set initial value (text value)\r\n if (data.autocompleteinitialvalue.length > 1) {\r\n e.val(data.autocompleteinitialvalue);\r\n }\r\n\r\n e.data('initial', e.val());\r\n\r\n // initial\r\n var activate = false;\r\n var isSelect = false;\r\n var allowNull = (e.data('allownull')) ? e.data('allownull') : false;\r\n\r\n if (allowNull && !e.next().hasClass('fa-ban')) {\r\n e.after('');\r\n var parent = e.parent();\r\n parent.find('.fa-ban').off().on('click', function () {\r\n e.val('').data('value', -1);\r\n getControlSet(e);\r\n e.data('initial', '');\r\n });\r\n }\r\n\r\n // set autocomplete\r\n e.autocomplete({\r\n minLength: 1,\r\n delay: DELAY,\r\n autoSelect: true,\r\n autoFocus: true,\r\n focus: function () {\r\n return false; // dont fill input with highlighted value\r\n },\r\n source: getSourceByType,\r\n select: function (event, ui) {\r\n activate = true;\r\n isSelect = true;\r\n $(event.target).val(ui.item.label);\r\n e.data('initial', ui.item.label);\r\n // set data\r\n e.data().value = ui.item.value;\r\n if (ui.item.usertype) {\r\n e.data('usertype', ui.item.usertype);\r\n }\r\n if (ui.item.entitytype) {\r\n e.data('entitytype', ui.item.entitytype);\r\n } \r\n switch (ui.item.acType) {\r\n case ACTYPE.TRAINING_MATRIX_ENTITY:\r\n e.data({\r\n entitytype: ui.item.entityType,\r\n iscustomusergroup: ui.item.isCustomUserGroup\r\n });\r\n break;\r\n }\r\n\r\n getControlSet(e);\r\n\r\n return false;\r\n },\r\n close: function (event, ui) {\r\n activate = false;\r\n $('body').removeClass('out');\r\n if (!isSelect) {\r\n $(event.target).val(e.data('initial'));\r\n }\r\n isSelect = false;\r\n\r\n if (data.clearexit) {\r\n $(event.target).val('');\r\n $(event.target).focus();\r\n }\r\n }\r\n }).autocomplete(\"instance\")._renderItem = function (ul, item) {\r\n // set scroll\r\n ul.css({ 'max-height': data.height + 'px', 'overflow-y': 'auto', 'overflow-x': 'hidden' });\r\n\r\n var entityType = item.entitytype;\r\n\r\n if ((entityType === ACTYPE.USER || entityType === ACTYPE.USERCOMPLETELIST) && item.acType !== ACTYPE.TRAINING_MATRIX_ENTITY) {\r\n var image = item.userImage;\r\n var style = \" background-image:url(\" + image + \");\";\r\n\r\n if (item.guid === undefined) {\r\n style = '';\r\n }\r\n return $(\"
  • \")\r\n .append(\"
    \" + item.label + \"
    \")\r\n .appendTo(ul);\r\n }\r\n return $(\"
  • \")\r\n .append(\"
    \" + item.label + \"
    \")\r\n .appendTo(ul);\r\n };\r\n\r\n // set element events\r\n e.off('focus.ac click.ac blur.ac keyup.ac')\r\n .on('focus.ac', function () {\r\n $(this).val('');\r\n })\r\n .on('click.ac', function () {\r\n $(this).val('');\r\n })\r\n .on('blur.ac', function () {\r\n if (!activate) {\r\n $(this).val(e.data('initial'));\r\n } else {\r\n activate = false;\r\n }\r\n })\r\n .on('keyup.ac', function (event) {\r\n // esc\r\n if (+event.which === 27 || +event.keyCode === 27) {\r\n e.val(e.data('initial'));\r\n return;\r\n }\r\n });\r\n\r\n\r\n function getSourceByType(request, response) {\r\n if (request.term.trim().length < 3) {\r\n return;\r\n }\r\n\r\n var searchType = ACTYPE[data.autocompletetype.toUpperCase()];\r\n\r\n var inputProps = {\r\n searchTerm: me.setHtmlEncode(request.term.trim()),\r\n autoCompleteType: searchType\r\n };\r\n\r\n // lock screen [prevent page scroll]\r\n $('body').addClass('out');\r\n\r\n getDataSource(response, inputProps);\r\n }\r\n }\r\n\r\n\r\n function getDataSource(response, props) {\r\n var options = {\r\n params: props,\r\n url: URL + 'GetAutoCompleteByType',\r\n callback: afterData,\r\n isloader: true\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n\r\n switch (props.autoCompleteType) {\r\n case ACTYPE.COMPANY:\r\n case ACTYPE.TRAINING_MATRIX_TEMPLATE:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.MANUALLABORCOMPANYLOCATION:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.BOTRESPOSIBILITYPARENT:\r\n case ACTYPE.ONEPPRESPOSIBILITYPARENT:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.StandardName,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.UNIVERSALUSER:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n usertype: item.UserType,\r\n userImage: item.UserImage\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PROJECTLIST:\r\n case ACTYPE.INNOTECPART_WITHOUT_CELLNAME:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.ManagedName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ManagedID,\r\n usertype: null,\r\n userImage: item.UserImage\r\n };\r\n }));\r\n break;\r\n case ACTYPE.FOCUSFACTORY:\r\n case ACTYPE.SUPERCELL:\r\n case ACTYPE.MACHINE:\r\n case ACTYPE.STATION:\r\n case ACTYPE.CRMENTOR:\r\n case ACTYPE.INNOTECPART:\r\n case ACTYPE.CUSTOMERPART:\r\n case ACTYPE.MANUALPROCESS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.DisplayName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ManagedID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.VIEWID:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.DisplayName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PROJECTENTITYLIST: // custom entity list in Projects application\r\n case ACTYPE.PROJECTMETRICACCOUNTS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.StandardName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.NONFAILUREINTERVENTION:\r\n case ACTYPE.DOWNTIMEISSUE:\r\n case ACTYPE.DOWNTIMEWARNING:\r\n case ACTYPE.SCRAPDEFECT:\r\n case ACTYPE.UNLINKED_CONTPAQ_PRODUCTS:\r\n case ACTYPE.UNLINKED_SPARE_PART_PARTS:\r\n case ACTYPE.TAG:\r\n case ACTYPE.COMPANY_LOCATIONS_WITH_SALES_ORDER:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Title,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.EIGHTD:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.ID8D,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID8D,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.EIGHTD_WITH_NAME:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.ShortDescription,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.D8DID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.TECHNICALCR:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.EntityName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.EntityID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.SPAREPARTLOCATION:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.LocationName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.LocationID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.OTEACCOUNTS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.AccountName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.AccountID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.TRAININGMATRIXPLAYLIST:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.Title,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.JOB:\r\n case ACTYPE.JOB_EXCLUDE_LINKED:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.JobName,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.JobID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CONTPAQ_PRODUCTS:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: -1,\r\n label: item.StandardName,\r\n contpaqProductID: item.ContpaqProductID,\r\n contpaqName: item.Name,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null\r\n };\r\n }));\r\n break;\r\n case ACTYPE.PURCHASED_MATERIAL:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.PartNumber + ' - ' + item.Description,\r\n value: item.ID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CONTPAQ_VENDORS_ONLY:\r\n case ACTYPE.COMPANYLOCATION:\r\n case ACTYPE.NON_CONTPAQ_VENDORS:\r\n case ACTYPE.COMPANY_LOCATIONS_WITH_BOM:\r\n case ACTYPE.COMPANY_LOCATIONS_WITH_BOM_SHIPTO:\r\n case ACTYPE.NON_CUSTOMER_LOCATION:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.DisplayName,\r\n guid: null,\r\n initial: null,\r\n parentID: item.ParentID,\r\n value: item.ID,\r\n usertype: item.IsContpaqVendor,\r\n userImage: item.UserImage,\r\n isCumulative: item.IsCumulative\r\n };\r\n }));\r\n break;\r\n case ACTYPE.SHIPTO:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n guid: null,\r\n initial: null,\r\n parentID: null,\r\n value: item.ID,\r\n usertype: null,\r\n userImage: null,\r\n };\r\n }));\r\n break;\r\n case ACTYPE.TRAINING_MATRIX_ENTITY:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n initial: null,\r\n value: item.ID,\r\n entitytype: item.EntityType,\r\n isCustomUserGroup: item.IsCustomUserGroup,\r\n acType: ACTYPE.TRAINING_MATRIX_ENTITY\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CHILD_ACCOUNT:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.AccountName,\r\n value: item.AccountID,\r\n parentid: item.ParentAccountID\r\n };\r\n }));\r\n break;\r\n\r\n case ACTYPE.PDT_PROJECT_NUMBER:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.PDTProjectNumber + \": \" + item.Name,\r\n value: item.PDTProjectNumber\r\n };\r\n }));\r\n break;\r\n case ACTYPE.SHIPTO_AND_CELL_LIST:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.Name,\r\n value: item.ID\r\n };\r\n }));\r\n break;\r\n case ACTYPE.COMPANY_LOCATION_AND_CELLLIST:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.NameWithParent,\r\n value: item.ID,\r\n entitytype: item.EntityType\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CR_AND_USER:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.EntityName,\r\n value: item.EntityID,\r\n entitytype: item.EntityType\r\n };\r\n }));\r\n break;\r\n case ACTYPE.CUSTOMERPART_WITH_SHIPTO_DESCRIPTION:\r\n response($.map(result, function (item) {\r\n return {\r\n label: item.EntityName,\r\n value: item.EntityID\r\n };\r\n }));\r\n break;\r\n default:\r\n response($.map(result, function (item) {\r\n return {\r\n entitytype: item.EntityType,\r\n label: item.StandardName,\r\n guid: item.GUID,\r\n initial: item.Initial,\r\n value: item.ID,\r\n userImage: item.UserImage,\r\n salaryType: item.SalaryType\r\n };\r\n }));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * delete confirmation\r\n * ========================================================================\r\n */\r\n // set delete\r\n function setDelete(e) {\r\n e.addClass('hidden');\r\n $(DELETE_CONFIRM).removeClass('hidden');\r\n $(DELETE_CANCEL).removeClass('hidden');\r\n\r\n }\r\n\r\n\r\n // set confirm delete button\r\n function setDeleteConfirm(e) {\r\n e.data().value = true;\r\n getControlSet(e);\r\n }\r\n\r\n\r\n // set cancel delete button\r\n function setDeleteCancel(e) {\r\n e.addClass('hidden');\r\n $(DELETE_CONFIRM).addClass('hidden');\r\n $(DELETE_ELEM).removeClass('hidden');\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * date nav\r\n * ========================================================================\r\n */\r\n\r\n // date nav previous button\r\n function setDateNavPrev(e) {\r\n var dateNavSelect = e.parent().find('select');\r\n var selectIndex = dateNavSelect.find('option:selected').index();\r\n dateNavSelect.find('option').eq(selectIndex).prop('selected', false);\r\n dateNavSelect.find('option').eq(selectIndex - 1).prop('selected', true);\r\n\r\n if (selectIndex == 1) {\r\n e.prop('disabled', true).find('i').removeClass('fa-angle-left');\r\n } else if (selectIndex == dateNavSelect.children().length - 1) {\r\n $(e.parent().children()[3]).prop(\"disabled\", false).find('i').addClass('fa-angle-right');\r\n }\r\n e.data('value', dateNavSelect.val());\r\n dateNavSelect.data('value', dateNavSelect.val())\r\n\r\n getControlSet(dateNavSelect);\r\n }\r\n\r\n\r\n // date nav next button\r\n function setDateNavNext(e) {\r\n var dateNavSelect = e.parent().find('select');\r\n var selectIndex = dateNavSelect.find('option:selected').index();\r\n dateNavSelect.find('option').eq(selectIndex).prop('selected', false);\r\n dateNavSelect.find('option').eq(selectIndex + 1).prop('selected', true);\r\n\r\n if (selectIndex == 0) {\r\n $(e.parent().children()[0]).prop(\"disabled\", false).find('i').addClass('fa-angle-left');\r\n } else if (selectIndex == dateNavSelect.children().length - 2) {\r\n e.prop('disabled', true).find('i').removeClass('fa-angle-right');\r\n }\r\n e.data('value', dateNavSelect.val());\r\n dateNavSelect.data('value', dateNavSelect.val())\r\n\r\n getControlSet(dateNavSelect);\r\n }\r\n\r\n\r\n // date nav today button\r\n function setDateNavToday(e) {\r\n var dateNavSelect = e.parent().find('select');\r\n var selectIndex = dateNavSelect.find('option:selected').index();\r\n dateNavSelect.find('option').eq(selectIndex).prop('selected', false);\r\n var options = dateNavSelect.find('option');\r\n var todayDate = new Date();\r\n var optionDate = new Date($(options[0]).val());\r\n var index = 0;\r\n while (optionDate.getTime() < todayDate.getTime()) {\r\n optionDate = new Date($(options[++index]).val());\r\n }\r\n\r\n dateNavSelect.find('option').eq(index - 1).prop('selected', true);\r\n\r\n e.data('value', dateNavSelect.val());\r\n dateNavSelect.data('value', dateNavSelect.val())\r\n $(e.parent().children()[0]).prop(\"disabled\", false).find('i').addClass('fa-angle-left');\r\n $(e.parent().children()[3]).prop(\"disabled\", false).find('i').addClass('fa-angle-right');\r\n\r\n getControlSet(dateNavSelect);\r\n }\r\n\r\n\r\n // change\r\n function setDateNavSelect(e) {\r\n e.data().value = e.val();\r\n var selectIndex = e.find('option:selected').index();\r\n var enablePrev = true;\r\n var enableNext = true;\r\n if (selectIndex == 0) {\r\n enablePrev = false;\r\n $(e.parent().prev()).prop('disabled', true).find('i').removeClass('fa-angle-left');\r\n } else if (selectIndex == $(DATENAV_SELECT_ELEM).children().length - 1) {\r\n enableNext = false;\r\n $(e.parent().next().next()).prop('disabled', true).find('i').removeClass('fa-angle-right');\r\n }\r\n if (enablePrev) $(e.parent().prev()).prop('disabled', false).find('i').addClass('fa-angle-left');\r\n if (enableNext) $(e.parent().next().next()).prop('disabled', false).find('i').addClass('fa-angle-right');\r\n\r\n getControlSet(e);\r\n }\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * division & child combo control\r\n * ========================================================================\r\n */\r\n\r\n function setDivisionChildChange(e, comboType) {\r\n switch (parseInt(comboType)) {\r\n case COMBOTYPE.DIVISION_CELL:\r\n setSelectDivCellComboChange(e);\r\n break;\r\n case COMBOTYPE.DIVISIONWITHFOCUSFACTORY_CELL:\r\n setSelectDivFFCellComboChange(e);\r\n break;\r\n case COMBOTYPE.DIVISIONWITHFOCUSFACTORY_SUPERCELL:\r\n setSelectDivFFSuperCellComboChange(e);\r\n break;\r\n case COMBOTYPE.DIVISION_FOCUSFACTORYCELL:\r\n setSelectDivFFCellComboChange(e);\r\n setSelectDivFFComboChange(e);\r\n break;\r\n case COMBOTYPE.DIVISIONFOCUSFACTORY_CELL:\r\n setSelectDivFFCellComboChange(e);\r\n break;\r\n }\r\n }\r\n\r\n function handleArrows(e, childCount) {\r\n var controlParent = e.closest('.control');\r\n var index = e.find('option[value=\"' + e.data().value + '\"]').index();\r\n var arrowPrev = controlParent.find(DIVISION_CHILD_PREV + \",\" + FOCUSFACTORY_CHILD_PREV);\r\n var arrowNext = controlParent.find(DIVISION_CHILD_NEXT + \",\" + FOCUSFACTORY_CHILD_NEXT);\r\n\r\n if (index == 0) {\r\n disableLeftArrow(arrowPrev);\r\n enableRightArrow(arrowNext);\r\n } else if (index == e.find('option').length - 1) {\r\n enableLeftArrow(arrowPrev);\r\n disableRightArrow(arrowNext);\r\n } else {\r\n enableLeftArrow(arrowPrev);\r\n enableRightArrow(arrowNext);\r\n }\r\n\r\n // since we start with the first option selected, always disable the previous cell arrow\r\n var prev = e.closest('.control').find(SELECT_PREV);\r\n var next = e.closest('.control').find(SELECT_NEXT);\r\n disableLeftArrow(prev);\r\n if (childCount <= 1) {\r\n disableRightArrow(next);\r\n } else {\r\n enableRightArrow(next);\r\n }\r\n }\r\n\r\n function handleArrowsAgainstMaxAndMinDate(datepicker) {\r\n\r\n var currentDate = new Date(datepicker.data('value'));\r\n var controlParent = datepicker.closest('.control');\r\n var arrowPrev = controlParent.find(DATEPICKER_PREV);\r\n var arrowNext = controlParent.find(DATEPICKER_NEXT);\r\n\r\n var maxDate = datepicker.datepicker(\"option\", \"maxDate\");\r\n if (maxDate && currentDate.addDay(1) > new Date(maxDate)) {\r\n disableRightArrow(arrowNext);\r\n } else {\r\n enableRightArrow(arrowNext);\r\n }\r\n\r\n var minDate = datepicker.datepicker(\"option\", \"minDate\");\r\n if (minDate && currentDate.addDay(-1) < new Date(minDate)) {\r\n disableLeftArrow(arrowPrev);\r\n } else {\r\n enableLeftArrow(arrowPrev);\r\n }\r\n }\r\n\r\n function enableLeftArrow(e) {\r\n e.attr('disabled', false).prop('disabled', false).find('i').addClass('fa-angle-left');\r\n }\r\n\r\n\r\n function disableLeftArrow(e) {\r\n e.attr('disabled', true).prop('disabled', true).find('i').removeClass('fa-angle-left');\r\n }\r\n\r\n\r\n function enableRightArrow(e) {\r\n e.attr('disabled', false).prop('disabled', false).find('i').addClass('fa-angle-right');\r\n }\r\n\r\n\r\n function disableRightArrow(e) {\r\n e.attr('disabled', true).prop('disabled', true).find('i').removeClass('fa-angle-right');\r\n }\r\n\r\n\r\n // change division cell combo\r\n function setSelectDivCellComboChange(e) {\r\n e.data('value', e.val()).attr('data-value', e.val());\r\n var data = e.data();\r\n\r\n // get cell list\r\n var controlParent = e.closest('.control');\r\n var childCtrl = controlParent.find('#TOPCTRL_COMBOCHILD');\r\n var required = childCtrl.data('requiredcell');\r\n var allCell = childCtrl.data('allcell');\r\n var enableArrows = childCtrl.data('enablearrows');\r\n\r\n var URL = \"/Common/Common/GetCellListByDivisionID\";\r\n\r\n var userItem = me.getUserProps();\r\n var options = {\r\n params: { ID: +e.data().value },\r\n url: URL,\r\n callback: afterData\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n var ar = [];\r\n\r\n if (allCell || +e.data().value == 1 || result.length == 0) { // Check to see if \"All Divisions\" is selected\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else if (!required) {\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else {\r\n childCtrl.data().value = result[0].ID;\r\n childCtrl.val(result[0].ID);\r\n }\r\n for (var i = 0, len = result.length; i < len; i++) {\r\n var d = result[i];\r\n ar.push(\r\n \"\"\r\n );\r\n }\r\n\r\n childCtrl.html(ar.join(''));\r\n if (enableArrows) handleArrows(e, ar.length);\r\n\r\n getControlSet(e);\r\n }\r\n }\r\n\r\n\r\n // change division ff cell combo\r\n function setSelectDivFFCellComboChange(e) {\r\n e.data('value', e.val()).attr('data-value', e.val());\r\n var data = e.data();\r\n\r\n // get cell list\r\n var controlParent = e.closest('.control');\r\n var childCtrl = controlParent.find('#TOPCTRL_COMBOCHILD');\r\n var required = childCtrl.data('requiredcell');\r\n var allCell = childCtrl.data('allcell');\r\n var enableArrows = childCtrl.data('enablearrows');\r\n\r\n var URL = \"/Common/Common/GetCellListByDivisionFocusFactoryID\";\r\n\r\n var userItem = me.getUserProps();\r\n var options = {\r\n params: { ID: +e.data().value },\r\n url: URL,\r\n callback: afterData\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n var ar = [];\r\n\r\n if (allCell || +e.data().value == 1) { // Check to see if \"All Divisions\" is selected\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else if (!required || result.length == 0) {\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else {\r\n childCtrl.data().value = result[0].ID;\r\n childCtrl.val(result[0].ID);\r\n }\r\n for (var i = 0, len = result.length; i < len; i++) {\r\n var d = result[i];\r\n ar.push(\"\");\r\n }\r\n\r\n childCtrl.html(ar.join(''));\r\n\r\n if (enableArrows) handleArrows(e, ar.length);\r\n\r\n getControlSet(e);\r\n }\r\n }\r\n\r\n // change division ff combo\r\n function setSelectDivFFComboChange(e) {\r\n e.data('value', e.val()).attr('data-value', e.val());\r\n var data = e.data();\r\n\r\n // get cell list\r\n var controlParent = e.closest('.control');\r\n var childCtrl = controlParent.find('[data-fd=page-ctrl-combofocusfactorychild]');\r\n var required = childCtrl.data('requiredff');\r\n var allCell = childCtrl.data('allff');\r\n var enableArrows = childCtrl.data('enablearrows');\r\n\r\n var URL = \"/Common/Common/ReturnSearchFocusFactory\";\r\n\r\n var userItem = me.getUserProps();\r\n var options = {\r\n params: { ID: +e.data().value },\r\n url: URL,\r\n callback: afterData\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n var ar = [];\r\n\r\n if (allCell || +e.data().value == 1) { // Check to see if \"All Divisions\" is selected\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else if (!required || result.length == 0) {\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else {\r\n childCtrl.data().value = result[0].FocusFactoryID;\r\n childCtrl.val(result[0].FocusFactoryID);\r\n }\r\n for (var i = 0, len = result.length; i < len; i++) {\r\n var d = result[i];\r\n ar.push(\"\");\r\n }\r\n\r\n childCtrl.html(ar.join(''));\r\n\r\n if (enableArrows) handleArrows(e, ar.length);\r\n\r\n getControlSet(e);\r\n }\r\n }\r\n\r\n\r\n // change division ff supercell combo\r\n function setSelectDivFFSuperCellComboChange(e) {\r\n e.data('value', e.val()).attr('data-value', e.val());\r\n var data = e.data();\r\n\r\n // get cell list\r\n var controlParent = e.closest('.control');\r\n var childCtrl = controlParent.find('#TOPCTRL_COMBOCHILD');\r\n var required = childCtrl.data('requiredsupercell');\r\n var allSuperCell = childCtrl.data('allsupercell');\r\n var enableArrows = childCtrl.data('enablearrows');\r\n\r\n var URL = \"/Common/Common/GetSuperCellListByDivisionFocusFactoryID\";\r\n\r\n var userItem = me.getUserProps();\r\n var options = {\r\n params: { ID: +e.data().value },\r\n url: URL,\r\n callback: afterData\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n var ar = [];\r\n\r\n if (allSuperCell || +e.data().value == 1) { // Check to see if \"All Divisions\" is selected\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else if (!required || result.length == 0) {\r\n ar.push(\"\");\r\n childCtrl.data().value = '-1';\r\n childCtrl.val(\"-1\");\r\n } else {\r\n childCtrl.data().value = result[0].ID;\r\n childCtrl.val(result[0].ID);\r\n }\r\n for (var i = 0, len = result.length; i < len; i++) {\r\n var d = result[i];\r\n ar.push(\r\n \"\"\r\n );\r\n }\r\n\r\n childCtrl.html(ar.join(''));\r\n\r\n if (enableArrows) handleArrows(e, ar.length);\r\n\r\n getControlSet(e);\r\n }\r\n }\r\n\r\n\r\n // click previous division/child arrow\r\n function setDivisionChildPrev(e) {\r\n var select = e.closest('.control').find(SELECT_DIVISION_CHILD_COMBO_ELEM);\r\n var comboType = select.data().combotype;\r\n var index = select.find('option:selected').index();\r\n var options = select.find('option');\r\n if (index != 0) {\r\n select.val(options[index - 1].value);\r\n setDivisionChildChange(select, comboType);\r\n }\r\n }\r\n\r\n\r\n // click next division/child arrow\r\n function setDivisionChildNext(e) {\r\n var select = e.closest('.control').find(SELECT_DIVISION_CHILD_COMBO_ELEM);\r\n var comboType = select.data().combotype;\r\n var index = select.find('option:selected').index();\r\n var options = select.find('option');\r\n\r\n if (index != options.length - 1) {\r\n select.val(options[index + 1].value);\r\n setDivisionChildChange(select, comboType);\r\n }\r\n }\r\n\r\n // click previous division/child arrow\r\n function setFocusFactoryChildPrev(e) {\r\n var select = e.closest('.control').find(SELECT_FOCUSFACTORY_CHILD_COMBO_ELEM);\r\n var comboType = select.data().combotype;\r\n var index = select.find('option:selected').index();\r\n var options = select.find('option');\r\n if (index != 0) {\r\n select.val(options[index - 1].value);\r\n setDivisionChildChange(select, comboType);\r\n }\r\n }\r\n\r\n\r\n // click next division/child arrow\r\n function setFocusFactoryChildNext(e) {\r\n var select = e.closest('.control').find(SELECT_FOCUSFACTORY_CHILD_COMBO_ELEM);\r\n var comboType = select.data().combotype;\r\n var index = select.find('option:selected').index();\r\n var options = select.find('option');\r\n\r\n if (index != options.length - 1) {\r\n select.val(options[index + 1].value);\r\n setDivisionChildChange(select, comboType);\r\n }\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * events\r\n * ========================================================================\r\n */\r\n\r\n // focus\r\n function setFocus(e) {\r\n e.data().initial = e.val();\r\n }\r\n\r\n\r\n // blur\r\n function setInputBlur(e) {\r\n var val = e.val().trim();\r\n\r\n e.data().value = val;\r\n if (e.data().value !== e.data().initial) {\r\n e.data().initial = val;\r\n getControlSet(e);\r\n }\r\n }\r\n\r\n\r\n // click\r\n function setButtonClick(e) {\r\n e.data().value = true;\r\n if (e.data('noedit')) {\r\n return;\r\n }\r\n getControlSet(e);\r\n }\r\n\r\n\r\n // collpase / expand\r\n function setButtonCollapseClick(e) {\r\n if (!e.hasClass('disabled')) {\r\n if (e.children('i').hasClass('fa-expand')) {\r\n e.data().value = false;\r\n e.children('i').removeClass('fa-expand').addClass('fa-compress');\r\n } else {\r\n e.data().value = true;\r\n e.children('i').removeClass('fa-compress').addClass('fa-expand');\r\n }\r\n getControlSet(e);\r\n }\r\n }\r\n\r\n\r\n // toggle\r\n function setToggleClick(e) {\r\n e.data().value = !e.data().value;\r\n e.toggleClass(\"active btn-success\", e.data().value).toggleClass(\"btn-secondary\", !e.data().value);\r\n e.find('i').toggleClass(\"fa-check-square-o\", e.data().value).toggleClass(\"fa-square-o\", !e.data().value);\r\n getControlSet(e);\r\n }\r\n\r\n child.setToggle = function (e, value) {\r\n if (e && e.length) {\r\n e.data().value = value;\r\n e.toggleClass(\"active btn-success\", e.data().value).toggleClass(\"btn-secondary\", !e.data().value);\r\n e.find('i').toggleClass(\"fa-check-square-o\", e.data().value).toggleClass(\"fa-square-o\", !e.data().value);\r\n }\r\n }\r\n\r\n\r\n // change\r\n function setSelectChange(e) {\r\n e.data('value', e.val());\r\n if (e.data('enablearrows')) {\r\n var options = e.find('option');\r\n var index = options.index($(e.find('option:selected')));\r\n var prev = e.closest('.control').find(SELECT_PREV);\r\n var next = e.closest('.control').find(SELECT_NEXT);\r\n if (index == 0) {\r\n prev.attr('disabled', true).prop('disabled', true).find('i').removeClass('fa-angle-left');\r\n next.attr('disabled', false).prop('disabled', false).find('i').addClass('fa-angle-right');\r\n } else if (index == e.find('option').length - 1) {\r\n prev.attr('disabled', false).prop('disabled', false).find('i').addClass('fa-angle-left');\r\n next.attr('disabled', true).prop('disabled', true).find('i').removeClass('fa-angle-right');\r\n } else {\r\n prev.attr('disabled', false).prop('disabled', false).find('i').addClass('fa-angle-left');\r\n next.attr('disabled', false).prop('disabled', false).find('i').addClass('fa-angle-right');\r\n }\r\n }\r\n\r\n getControlSet(e);\r\n }\r\n\r\n\r\n // previous select arrow\r\n function setSelectPrev(e) {\r\n var select = e.closest('.control').find(SELECT_ELEM);\r\n var options = select.find('option');\r\n var index = options.index($(select.find('option:selected')));\r\n if (index != 0) {\r\n select.val(options[index - 1].value);\r\n setSelectChange(select);\r\n }\r\n }\r\n\r\n\r\n // next select arrow\r\n function setSelectNext(e) {\r\n var select = e.closest('.control').find(SELECT_ELEM);\r\n var options = select.find('option');\r\n var index = options.index($(select.find('option:selected')));\r\n if (index != options.length - 1) {\r\n select.val(options[index + 1].value);\r\n setSelectChange(select);\r\n }\r\n }\r\n\r\n\r\n function setEvents() {\r\n // set input\r\n var docElem = $(document);\r\n if ($(INPUT_ELEM).length) {\r\n docElem.off('focus.pagectrl_input blur.pagectrl_input keyup.pagectrl_input', INPUT_ELEM)\r\n .on({\r\n 'focus.pagectrl_input': function () {\r\n setFocus($(this));\r\n },\r\n 'blur.pagectrl_input': function () {\r\n setInputBlur($(this));\r\n },\r\n 'keyup.pagectrl_input': function (event) {\r\n if (+event.which === 13 || +event.keyCode === 13) {\r\n $(this).blur();\r\n }\r\n }\r\n }, INPUT_ELEM);\r\n }\r\n if ($(INPUTKEYUP_ELEM).length) {\r\n docElem.off('focus.pagectrl_inputkey keyup.pagectrl_inputkey input.pagectrl_inputkey', INPUTKEYUP_ELEM)\r\n .on({\r\n 'focus.pagectrl_inputkey': function () {\r\n setFocus($(this));\r\n },\r\n 'keyup.pagectrl_inputkey': function (event) {\r\n if (event.which == 13 || event.keyCode == 13) setInputBlur($(this));\r\n },\r\n 'input.pagectrl_inputkey': function () {\r\n var elem = $(this);\r\n if (this.controlDelay) {\r\n clearTimeout(this.controlDelay);\r\n this.controlDelay = undefined;\r\n }\r\n this.controlDelay = setTimeout(function () {\r\n setInputBlur(elem);\r\n }, DELAY);\r\n }\r\n }, INPUTKEYUP_ELEM);\r\n }\r\n if ($(BUTTON_ELEM).length) {\r\n docElem.off('click.pagectrl_btn', BUTTON_ELEM)\r\n .on({\r\n 'click.pagectrl_btn': function () {\r\n setButtonClick($(this));\r\n }\r\n }, BUTTON_ELEM);\r\n }\r\n\r\n\r\n // set button collapse/expand\r\n if ($(COLLAPSE_ELEM).length) {\r\n docElem.off('click.pagectrl_btncollapse', COLLAPSE_ELEM)\r\n .on({\r\n 'click.pagectrl_btncollapse': function () {\r\n setButtonCollapseClick($(this));\r\n }\r\n }, COLLAPSE_ELEM);\r\n }\r\n\r\n\r\n // set toggle\r\n if ($(TOGGLE_ELEM).length) {\r\n docElem.off('click.pagectrl_toggle', TOGGLE_ELEM);\r\n docElem.on({\r\n 'click.pagectrl_toggle': function () {\r\n setToggleClick($(this));\r\n }\r\n }, TOGGLE_ELEM);\r\n }\r\n\r\n\r\n if ($(SELECT_ELEM).length) {\r\n docElem.off('focus.pagectrl_select change.pagectrl_select', SELECT_ELEM)\r\n .off('click.pagectrl_selectPrev', SELECT_PREV)\r\n .off('click.pagectrl_selectNext', SELECT_NEXT)\r\n .on({\r\n 'focus.pagectrl_select': function () {\r\n setFocus($(this));\r\n },\r\n 'change.pagectrl_select': function () {\r\n setSelectChange($(this));\r\n }\r\n }, SELECT_ELEM)\r\n .on({\r\n 'click.pagectrl_selectPrev': function () {\r\n setSelectPrev($(this));\r\n }\r\n }, SELECT_PREV)\r\n .on({\r\n 'click.pagectrl_selectNext': function () {\r\n setSelectNext($(this));\r\n }\r\n }, SELECT_NEXT);\r\n }\r\n\r\n\r\n // select div/child combo\r\n if ($(SELECT_DIVISION_CHILD_COMBO_ELEM).length) {\r\n docElem.off('focus.pagectrl_select change.pagectrl_select', SELECT_DIVISION_CHILD_COMBO_ELEM)\r\n .off('click.pagectrl_divisionFFPrev', DIVISION_CHILD_PREV)\r\n .off('click.pagectrl_divisionFFNext', DIVISION_CHILD_NEXT)\r\n .on({\r\n 'focus.pagectrl_select': function () {\r\n setFocus($(this));\r\n },\r\n 'change.pagectrl_select': function () {\r\n var elem = $(this);\r\n var comboType = elem.data().combotype;\r\n setDivisionChildChange($(this), comboType);\r\n }\r\n }, SELECT_DIVISION_CHILD_COMBO_ELEM)\r\n .on({\r\n 'click.pagectrl_divisionFFPrev': function () {\r\n setDivisionChildPrev($(this));\r\n }\r\n }, DIVISION_CHILD_PREV)\r\n .on({\r\n 'click.pagectrl_divisionFFNext': function () {\r\n setDivisionChildNext($(this));\r\n }\r\n }, DIVISION_CHILD_NEXT);\r\n }\r\n\r\n // select focusfactory/child combo\r\n if ($(SELECT_FOCUSFACTORY_CHILD_COMBO_ELEM).length) {\r\n docElem.off('focus.pagectrl_select change.pagectrl_select', SELECT_FOCUSFACTORY_CHILD_COMBO_ELEM)\r\n .off('click.pagectrl_FFPrev', FOCUSFACTORY_CHILD_PREV)\r\n .off('click.pagectrl_FFNext', FOCUSFACTORY_CHILD_NEXT)\r\n .on({\r\n 'focus.pagectrl_select': function () {\r\n setFocus($(this));\r\n },\r\n 'change.pagectrl_select': function () {\r\n var elem = $(this);\r\n var comboType = elem.data().combotype;\r\n setDivisionChildChange($(this), comboType);\r\n }\r\n }, SELECT_FOCUSFACTORY_CHILD_COMBO_ELEM)\r\n .on({\r\n 'click.pagectrl_FFPrev': function () {\r\n setFocusFactoryChildPrev($(this));\r\n }\r\n }, FOCUSFACTORY_CHILD_PREV)\r\n .on({\r\n 'click.pagectrl_FFNext': function () {\r\n setFocusFactoryChildNext($(this));\r\n }\r\n }, FOCUSFACTORY_CHILD_NEXT);\r\n }\r\n\r\n\r\n // datenav control\r\n if ($(DATENAV_SELECT).length) {\r\n docElem.off('click.pagectrl_dateNavPrev', DATENAV_PREV)\r\n .off('click.pagectrl_dateNavNext', DATENAV_NEXT)\r\n .off('click.pagectrl_dateNavToday', DATENAV_TODAY)\r\n .off('focus.pagectrl_dateNavSelect change.pagectrl_dateNavSelect', DATENAV_SELECT)\r\n .on({\r\n 'click.pagectrl_dateNavPrev': function () {\r\n setDateNavPrev($(this));\r\n }\r\n }, DATENAV_PREV)\r\n .on({\r\n 'click.pagectrl_dateNavNext': function () {\r\n setDateNavNext($(this));\r\n }\r\n }, DATENAV_NEXT)\r\n .on({\r\n 'click.pagectrl_dateNavToday': function () {\r\n setDateNavToday($(this));\r\n }\r\n }, DATENAV_TODAY)\r\n .on({\r\n 'focus.pagectrl_dateNavSelect': function () {\r\n setFocus($(this));\r\n },\r\n 'change.pagectrl_dateNavSelect': function () {\r\n setDateNavSelect($(this));\r\n }\r\n }, DATENAV_SELECT);\r\n }\r\n\r\n\r\n // set delete\r\n if ($(DELETE_ELEM).length || $(DELETE_CONFIRM).length || $(DELETE_CANCEL).length) {\r\n docElem.off('click.pagectrl_delete', DELETE_ELEM)\r\n .on({\r\n 'click.pagectrl_delete': function () {\r\n setDelete($(this));\r\n }\r\n }, DELETE_ELEM)\r\n .off('click.pagectrl_confirmdelete', DELETE_CONFIRM)\r\n .on({\r\n 'click.pagectrl_delete': function () {\r\n setDeleteConfirm($(this));\r\n }\r\n }, DELETE_CONFIRM)\r\n .off('click.pagectrl_canceldelete', DELETE_CANCEL)\r\n .on({\r\n 'click.pagectrl_delete': function () {\r\n setDeleteCancel($(this));\r\n }\r\n }, DELETE_CANCEL);\r\n }\r\n\r\n\r\n // save clicked element so that the top control datepicker will\r\n // function correctly\r\n docElem.off('mousedown.topControlDatePickerCheck')\r\n .on('mousedown.topControlDatePickerCheck', function (e) {\r\n topControlClickedElement = e.target;\r\n });\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * callback\r\n * ========================================================================\r\n */\r\n // get control set\r\n function getControlSet(e) {\r\n var data = e.data();\r\n var ctrlAR = {};\r\n\r\n // reset\r\n list = $(ELEM).add(\"[data-range='true']\");\r\n\r\n list.each(function () {\r\n var ctrl = $(this);\r\n if (ctrl.closest('li').hasClass('hidden')) {\r\n return;\r\n }\r\n var ctrlName = ctrl.data().name;\r\n\r\n if (ctrlName == 'daterange') {\r\n var dateInputs = ctrl.find('input');\r\n ctrlAR[$(dateInputs[0]).data('name')] = $(dateInputs[0]).data('value');\r\n ctrlAR[$(dateInputs[1]).data('name')] = $(dateInputs[1]).data('value');\r\n } else {\r\n let d = ctrl.data();\r\n ctrlAR[ctrlName] = d.value;\r\n ctrlAR[ctrlName + \"RawData\"] = d;\r\n }\r\n });\r\n\r\n if (data.name == \"dateNavPrev\" || data.name == \"dateNavNext\" || data.name == \"dateNavToday\") {\r\n data.name = \"dateNavSelect\";\r\n }\r\n\r\n // fix for FOX\r\n // sk 5/7\r\n var foxDate = {\r\n //foxDateValue: data.value, // these two dates don't match\r\n //datenavselect: ctrlAR.dateNavSelect, // these two dates don't match\r\n foxDateValue: data.value\r\n };\r\n\r\n\r\n var activeInfo = {\r\n __activeCtrl: data.name,\r\n tag: data.tag\r\n };\r\n\r\n var result = $.extend({}, ctrlAR, activeInfo, foxDate);\r\n\r\n // reset buttons\r\n if (data.type === 'button') {\r\n e.data().value = false;\r\n }\r\n updateUrlState(e, result);\r\n me.setCallBackFromData(e, result);\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set top control element\r\n child.setTopControlElement = function () {\r\n setTopControlElement();\r\n };\r\n\r\n\r\n // set top control events\r\n child.setTopControlElementEvents = function () {\r\n setEvents();\r\n };\r\n\r\n child.setFormat = function (element) {\r\n setFormat(element);\r\n }\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));\r\n\r\nFD.CONTROL = (function ($, me) {\r\n var child = me.CONTROL || {};\r\n\r\n /*\r\n * Helper function to help re-position tables after showing new top controls\r\n * dontFireResize should only be used if you're calling this function multiple times in a row\r\n * and don't want to fire the resize event until the final control is shown/hidden\r\n */\r\n child.showTopControl = function (elem, dontFireResize) {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n elem.removeClass('hidden');\r\n\r\n if (!dontFireResize) {\r\n $(window).trigger('resize');\r\n }\r\n };\r\n\r\n\r\n /*\r\n * Helper function to help re-position tables after hiding top controls\r\n * dontFireResize should only be used if you're calling this function multiple times in a row\r\n * and don't want to fire the resize event until the final control is shown/hidden\r\n */\r\n child.hideTopControl = function (elem, dontFireResize) {\r\n if (!(elem instanceof jQuery)) {\r\n elem = $(elem);\r\n }\r\n elem.addClass('hidden');\r\n\r\n if (!dontFireResize) {\r\n $(window).trigger('resize');\r\n }\r\n };\r\n\r\n\r\n /*\r\n * Helper function to help re-position tables after replacing top controls\r\n */\r\n child.replaceTopControls = function (html) {\r\n $('[data-sitecontrol]').html(html);\r\n\r\n $(window).trigger('resize');\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: SITE\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * Controls hiding/showing/pinning the left navigation on any page\r\n * ======================================================================== \r\n * 12/21/2015: creation\r\n * 09/04/2018: Fix issues around setting/unsetting tooltips\r\n*/\r\n\r\nFD.SITE = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.SITE || {};\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n var LEFTNAV_ELEM = '[data-siteleftnav=\"true\"]';\r\n var LEFTNAVICON_ELEM = '[data-sitepinicon=\"true\"]';\r\n var FIXEDTOP_ELEM = '[data-sitefixedtop=\"true\"]';\r\n var PAGECONTENT_ELEM = '[data-sitepagecontent=\"true\"]';\r\n\r\n // vars\r\n var isReady = true;\r\n var leftNav = '';\r\n var triggerIcon = $(LEFTNAVICON_ELEM);\r\n var fixedTopContainer = $(FIXEDTOP_ELEM);\r\n var pageContainer = $(PAGECONTENT_ELEM);\r\n\r\n var ICONSTATE = {\r\n menu: 'fa-arrow-circle-right ',\r\n tack: 'fa-thumb-tack fa-rotate-90',\r\n rotate: 'fa-rotate-90',\r\n pinned: 'fa-thumb-tack'\r\n };\r\n\r\n var CLICKSTATE = {\r\n out: 0,\r\n in: 1,\r\n pinned: 2,\r\n hover: 3\r\n };\r\n\r\n var pinstate = null; // \"\", \"in\", \"pinned\"\r\n var clickstate = CLICKSTATE.out;\r\n\r\n /* ========================================================================\r\n * Private Methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n function setLeftNavControl() {\r\n leftNav = $(LEFTNAV_ELEM);\r\n if (leftNav.length === 0) {\r\n return;\r\n }\r\n\r\n if (leftNav.hasClass('in')) {\r\n pinstate = \"in\";\r\n } else if (leftNav.hasClass('pinned')) {\r\n pinstate = \"pinned\";\r\n }\r\n \r\n if (pinstate === 'in') {\r\n triggerIcon.find('i').addClass(ICONSTATE.menu);\r\n clickstate = CLICKSTATE.in;\r\n leftNav.addClass('cursor-clickable');\r\n leftNav.off('click.sidenav').on('click.sidenav', openLeftNav);\r\n } else if (pinstate === 'pinned') {\r\n triggerIcon.find('i').addClass(ICONSTATE.pinned);\r\n triggerIcon.off('click.sidenavicon').on('click.sidenavicon', clickSideNavIcon);\r\n clickstate = CLICKSTATE.pinned;\r\n } \r\n }\r\n\r\n\r\n function openLeftNav() {\r\n $('.tooltip').tooltip('hide');\r\n if (isReady && clickstate === CLICKSTATE.in) {\r\n setHover();\r\n return;\r\n }\r\n\r\n isReady = true;\r\n }\r\n\r\n\r\n function clickSideNavIcon(elem) {\r\n elem.stopPropagation();\r\n $('.tooltip').tooltip('hide');\r\n\r\n if (isReady) {\r\n isReady = false;\r\n if (clickstate === CLICKSTATE.pinned) {\r\n setUnPin();\r\n } else if (clickstate === CLICKSTATE.hover) {\r\n setPin();\r\n }\r\n\r\n // Fake a resize event so that highcharts/fixed table headers will readjust\r\n if ($('[data-fixedheader]').length > 0 || $('.highcharts-container').length > 0) {\r\n var resizeEvent = window.document.createEvent('UIEvents');\r\n resizeEvent.initUIEvent('resize', true, false, window, 0);\r\n window.dispatchEvent(resizeEvent);\r\n }\r\n } else {\r\n isReady = true;\r\n }\r\n }\r\n\r\n\r\n // set unpin -- left nav collapsed\r\n function setUnPin() {\r\n triggerIcon.find('i').removeClass(ICONSTATE.pinned).addClass(ICONSTATE.menu);\r\n leftNav.addClass('in cursor-clickable').removeClass('pinned');\r\n leftNav.off('click.sidenav').on('click.sidenav', openLeftNav);\r\n if (leftNav.hasClass('wide-nav')) {\r\n pageContainer.removeClass('pinned-wide').addClass('in');\r\n fixedTopContainer.removeClass('pinned-wide').addClass('in');\r\n } else {\r\n pageContainer.removeClass('pinned').addClass('in');\r\n fixedTopContainer.removeClass('pinned').addClass('in');\r\n }\r\n clickstate = CLICKSTATE.in;\r\n triggerIcon.off('click.sidenavicon');\r\n isReady = true;\r\n \r\n me.PAGE.getAfterPinStateChangeEvent();\r\n\r\n setPinStateDB();\r\n }\r\n\r\n\r\n // set hover -- left nav open but not pinned\r\n function setHover() {\r\n triggerIcon.find('i').removeClass(ICONSTATE.menu).addClass(ICONSTATE.tack);\r\n leftNav.addClass('pinned').removeClass('in cursor-clickable');\r\n leftNav.off('click.sidenav');\r\n triggerIcon.off('click.sidenavicon').on('click.sidenavicon', clickSideNavIcon);\r\n clickstate = CLICKSTATE.hover;\r\n isReady = true;\r\n\r\n $(document).off('click.hoverleft').on('click.hoverleft', function (event) {\r\n if (!ignoreHideNavEvent($(event.target))) {\r\n triggerIcon.find('i').removeClass(ICONSTATE.pinned).addClass(ICONSTATE.tack);\r\n leftNav.addClass('in cursor-clickable').removeClass('pinned');\r\n leftNav.off('click.sidenav').on('click.sidenav', openLeftNav);\r\n triggerIcon.find('i').removeClass(ICONSTATE.tack).addClass(ICONSTATE.menu);\r\n triggerIcon.off('click.sidenavicon');\r\n if (leftNav.hasClass('wide-nav')) {\r\n pageContainer.removeClass('pinned-wide').addClass('in');\r\n fixedTopContainer.removeClass('pinned-wide').addClass('in');\r\n } else {\r\n pageContainer.removeClass('pinned').addClass('in');\r\n fixedTopContainer.removeClass('pinned').addClass('in');\r\n }\r\n clickstate = CLICKSTATE.in;\r\n isReady = true;\r\n }\r\n });\r\n }\r\n\r\n\r\n // Check to see if we should ignore an event that might normally hide the left nav\r\n function ignoreHideNavEvent(target) {\r\n return target.parents(LEFTNAV_ELEM).length > 0\r\n || target.attr('data-siteleftnav') === 'true'\r\n || target.hasClass('ui-icon') // Added to prevent left nav from closing when using a datepicker element inside of it\r\n || target.hasClass('ui-datepicker-prev')\r\n || target.hasClass('ui-datepicker-next');\r\n }\r\n\r\n\r\n // set pin -- left nav pinned to page\r\n function setPin() {\r\n triggerIcon.find('i').removeClass(ICONSTATE.tack).addClass(ICONSTATE.pinned);\r\n leftNav.addClass('pinned').removeClass('in cursor-clickable').off('click.sidenav');\r\n if (leftNav.hasClass('wide-nav')) {\r\n pageContainer.removeClass('in').addClass('pinned-wide');\r\n fixedTopContainer.removeClass('in').addClass('pinned-wide');\r\n } else {\r\n pageContainer.removeClass('in').addClass('pinned');\r\n fixedTopContainer.removeClass('in').addClass('pinned');\r\n }\r\n clickstate = CLICKSTATE.pinned;\r\n isReady = true;\r\n\r\n $(document).off('click.hoverleft');\r\n\r\n // once left nav is open, only pin icon should be active\r\n triggerIcon.off('click.sidenavicon').on('click.sidenavicon', clickSideNavIcon);\r\n \r\n me.PAGE.getAfterPinStateChangeEvent();\r\n\r\n setPinStateDB();\r\n }\r\n\r\n\r\n // set pin state in DB\r\n function setPinStateDB() {\r\n var options = {\r\n url: \"/Common/Common/HandleUserApplicationNavPinStateCRUD\",\r\n params: {\r\n applicationCode: me.getApplicationCode(),\r\n navIsPinned: clickstate === 2\r\n }\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set left navigation\r\n child.setLeftNavControl = function () {\r\n setLeftNavControl();\r\n };\r\n\r\n\r\n // close left nav\r\n // closes if user has hover out and a link is clicked\r\n child.LeftNavClose = function () {\r\n if (clickstate === CLICKSTATE.hover) {\r\n triggerIcon.find('i').removeClass(ICONSTATE.pinned).addClass(ICONSTATE.tack);\r\n leftNav.addClass('in cursor-clickable').removeClass('pinned');\r\n leftNav.off('click.sidenav').on('click.sidenav', openLeftNav);\r\n triggerIcon.find('i').removeClass(ICONSTATE.tack).addClass(ICONSTATE.menu);\r\n triggerIcon.off('click.sidenavicon');\r\n if (leftNav.hasClass('wide-nav')) {\r\n pageContainer.removeClass('pinned-wide').addClass('in');\r\n fixedTopContainer.removeClass('pinned-wide').addClass('in');\r\n } else {\r\n pageContainer.removeClass('pinned').addClass('in');\r\n fixedTopContainer.removeClass('pinned').addClass('in');\r\n }\r\n clickstate = CLICKSTATE.in;\r\n isReady = true;\r\n }\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: SITESEARCH\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * handle site search\r\n * ======================================================================== \r\n * 12/18/2015: creation\r\n*/\r\n\r\nFD.SITE = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.SITE || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n var ELEM = 'SITE_SEARCH';\r\n var searchInput = $('#' + ELEM); // the search input box\r\n var ELEM_SEARCH_TAB = '#SITE_SEARCH_TABS';\r\n\r\n // set in contructor [ all refererences to specific elements ]\r\n var elem = {};\r\n var siteSearchType = {\r\n Undefined: 0,\r\n Application: 1,\r\n Team: 2,\r\n Document: 3,\r\n CR: 4,\r\n Entity: 5,\r\n }\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n // set site search control\r\n function setSiteSearchcontrol() {\r\n var NAMESPACE = me.getUID('NS_');\r\n var searchTabs = $(ELEM_SEARCH_TAB).children('li');\r\n\r\n // set all the search containers\r\n elem = {\r\n searchInput: searchInput,\r\n historyList: $('#SS_HISTORY_CONTENT'),\r\n favoriteViewList: $('#SS_FAVORITES_CONTENT'),\r\n searchTerm: $('#SS_SEARCHTERM'),\r\n searchTermCount: $('#SS_SEARCHTERM_COUNT'), \r\n appsCount: $('#SS_APPS_COUNT'),\r\n teamCount: $('#SS_TEAM_COUNT'),\r\n docsCount: $('#SS_DOCS_COUNT'),\r\n crCount: $('#SS_CR_COUNT'),\r\n entityCount: $('#SS_ENTITY_COUNT'),\r\n appsList: $('#SS_APPS_CONTENT'),\r\n teamList: $('#SS_TEAM_CONTENT'),\r\n docsList: $('#SS_DOCS_CONTENT'),\r\n crList: $('#SS_CR_CONTENT'),\r\n entityList: $('#SS_ENTITY_CONTENT'),\r\n curSearch: '',\r\n currentTab: siteSearchType.Application,\r\n tabList: [\r\n null,\r\n $(searchTabs[0]),\r\n $(searchTabs[1]),\r\n $(searchTabs[2]),\r\n $(searchTabs[3]),\r\n $(searchTabs[4]),\r\n ]\r\n };\r\n\r\n\r\n\r\n // set the search history event\r\n function onClickHistory(event) {\r\n event.preventDefault();\r\n var val = $(this).text();\r\n elem.searchInput.val(val);\r\n\r\n getSiteSearchResults();\r\n }\r\n\r\n elem.historyList.on('click.shistory' + NAMESPACE, 'li a', onClickHistory);\r\n }\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * get search results\r\n * ========================================================================\r\n */\r\n\r\n // get search results\r\n function getSiteSearchResults() {\r\n // do the search for all\r\n var val = searchInput.val();\r\n val = me.setHtmlEncode(val);\r\n val = val.trim();\r\n\r\n // bail if input same\r\n if (elem.curSearch === val) return;\r\n\r\n // set search term\r\n elem.curSearch = val;\r\n\r\n\r\n // get search\r\n getSearchFromDB();\r\n }\r\n\r\n\r\n function getTabSearchResults(tabType) {\r\n var URL = \"/Common/Common/GetSiteSearchTab\";\r\n\r\n var inputProps = {\r\n searchTerm: elem.curSearch,\r\n searchType: elem.currentTab\r\n };\r\n\r\n var options = {\r\n params: inputProps,\r\n url: URL,\r\n callback: afterData,\r\n ishtml: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n\r\n switch (elem.currentTab) {\r\n case siteSearchType.Application:\r\n elem.appsList.html(result);\r\n break;\r\n case siteSearchType.Team:\r\n elem.teamList.html(result);\r\n break;\r\n case siteSearchType.Document:\r\n elem.docsList.html(result);\r\n break;\r\n case siteSearchType.CR:\r\n elem.crList.html(result);\r\n break;\r\n case siteSearchType.Entity:\r\n elem.entityList.html(result);\r\n break;\r\n }\r\n\r\n elem.tabList[elem.currentTab].find('a').data('loaded', true).attr('data-loaded', true).tab('show');\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // get actual search results from db\r\n function getSearchFromDB() {\r\n if (!elem || !elem.searchTerm) {\r\n return false;\r\n }\r\n \r\n var URL = \"/Common/Common/GetSiteSearch\";\r\n\r\n var inputProps = {\r\n searchTerm: elem.curSearch,\r\n searchType: elem.currentTab\r\n };\r\n\r\n var options = {\r\n params: inputProps,\r\n url: URL,\r\n callback: afterData\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n // set search title\r\n elem.searchTerm.html(elem.curSearch);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n\r\n switch (result.ActiveTab) {\r\n case siteSearchType.Application:\r\n elem.appsList.html(result.CurrentView);\r\n break;\r\n case siteSearchType.Team:\r\n elem.teamList.html(result.CurrentView);\r\n break;\r\n case siteSearchType.Document:\r\n elem.docsList.html(result.CurrentView);\r\n break;\r\n case siteSearchType.CR:\r\n elem.crList.html(result.CurrentView);\r\n break;\r\n case siteSearchType.Entity:\r\n elem.entityList.html(result.CurrentView);\r\n break;\r\n }\r\n\r\n elem.historyList.html(result.SearchHistoryView);\r\n elem.favoriteViewList.html(result.FavoriteViewHTML);\r\n\r\n elem.appsCount.html('(' + result.ApplicationCount + ')');\r\n elem.teamCount.html('(' + result.TeamCount + ')');\r\n elem.docsCount.html('(' + result.DocumentCount + ')');\r\n elem.crCount.html('(' + result.CRCount + ')');\r\n elem.entityCount.html('(' + result.EntityCount + ')');\r\n elem.searchTermCount.html('(' + result.TotalSearchCount + ')');\r\n\r\n // reset loaded status\r\n for (var x = 0; x < elem.tabList.length; x++) {\r\n if (elem.tabList[x]) {\r\n elem.tabList[x].find('a').data('loaded', false).attr('data-loaded', false);\r\n }\r\n }\r\n\r\n if (result.ActiveTab != elem.currentTab) {\r\n elem.currentTab = result.ActiveTab;\r\n }\r\n\r\n if (elem.tabList[elem.currentTab] !== undefined) {\r\n elem.tabList[elem.currentTab].find('a').data('loaded', true).attr('data-loaded', true).tab('show');\r\n }\r\n\r\n\r\n me.CONTROL.setSortable(\"#SS_FAVORITES_LIST\");\r\n me.CONTROL.setButton(true, \"#POP_SEARCH\");\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set seach on load\r\n child.setSearchOnload = function () {\r\n elem.curSearch = '';\r\n getSearchFromDB();\r\n };\r\n\r\n\r\n // set site search control\r\n child.setSiteSearchControl = function () {\r\n if (searchInput.length === 0) return;\r\n setSiteSearchcontrol();\r\n };\r\n\r\n\r\n // get search results\r\n child.getSiteSearchResults = function () {\r\n getSiteSearchResults();\r\n };\r\n\r\n child.getTabSearchResults = function (tabType, tabElem) {\r\n elem.currentTab = tabType;\r\n if (!tabElem.data('loaded')) {\r\n getTabSearchResults(tabType);\r\n } else {\r\n tabElem.tab('show');\r\n }\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: SITE\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * handle top navigation popovers\r\n * https://github.com/sandywalker/webui-popover\r\n * ======================================================================== \r\n * 12/18/2015: creation\r\n * 4/10/16: reworked for new CSS\r\n * 6/29/2016: innosuite 2016 rework\r\n*/\r\n\r\nFD.SITE = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.SITE || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n var POPOVER_ELEM = '[data-site-popover=\"true\"]'; // all the top popover buttons // all the valid popovers to handle\r\n var SEARCHINPUT_ELEM = '#SITE_SEARCH'; // used to trap the search box for special click/hover events\r\n var SEARCHINPUT_NOHASH_ELEM = 'SITE_SEARCH';\r\n\r\n var list = [];\r\n\r\n var defaults = {\r\n popoverid: '',\r\n height: 300,\r\n width: 200\r\n };\r\n\r\n var current = {\r\n show: false,\r\n id: '',\r\n target: '',\r\n poptarget: '',\r\n isinput: false\r\n };\r\n\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n // set top popover\r\n function setTopPopovers() {\r\n var popList = $(POPOVER_ELEM);\r\n\r\n if (popList.length === 0) return;\r\n\r\n popList.each(function () {\r\n var elem = $(this);\r\n\r\n // set options\r\n var options = $.extend({}, defaults, elem.data());\r\n options.element = elem;\r\n options.elementhash = '#' + elem[0].id;\r\n options.elementid = elem[0].id;\r\n\r\n // set data\r\n elem.data(options);\r\n\r\n // add to array\r\n list.push(elem);\r\n });\r\n\r\n for (var x = 0, len = list.length; x < len; x++) {\r\n setPopover(list[x]);\r\n }\r\n\r\n // set document events\r\n setDocumentEvents();\r\n }\r\n\r\n\r\n // set popover\r\n function setPopover(e) {\r\n var data = e.data();\r\n\r\n // options\r\n var options = {\r\n type: 'html',\r\n url: data.popoverid,\r\n placement: 'bottom-right', //auto-bottom\r\n animation: 'pop',\r\n closeable: true,\r\n multi: false,\r\n style: 'inverse',\r\n offsetTop: (data.popoverid === '#POP_SEARCH') ? -3 : -8,\r\n trigger: 'manual',\r\n container: '.site-top-navigation'\r\n };\r\n\r\n e.webuiPopover('destroy').webuiPopover(options)\r\n .on('show.webui.popover', function (elem, pop) {\r\n var e = $(this);\r\n current.poptarget = $(pop).get(0).id;\r\n current.isinput = (e.get(0).tagName.toLowerCase() == 'input') ? true : false;\r\n current.show = true;\r\n })\r\n .on('shown.webui.popover', function (elem, pop) { \r\n var scrollContainer = $(\"#SITE_APP_LIST\").closest('[data-fd=\"scroll\"]');\r\n var currentLocatoin = window.location.pathname;\r\n elem = $(\"#SITE_APP_LIST\").find('a[href*=\"' + currentLocatoin + '\"]'); \r\n if (elem && elem.length > 0 && elem.first().offset()) {\r\n scrollContainer.slimScroll({ scrollBy: (elem.first().offset().top - $(\"#SITE_APP_LIST\").offset().top) + 'px' });\r\n } \r\n })\r\n .on('hide.webui.popover', function (elem, pop) {\r\n current.poptarget = '';\r\n current.isinput = false;\r\n current.show = false;\r\n\r\n $(SEARCHINPUT_ELEM).removeClass('in');\r\n });\r\n\r\n // set event\r\n setPopoverEvent(e);\r\n }\r\n\r\n\r\n // set popover event\r\n function setPopoverEvent(e) {\r\n var data = e.data();\r\n var NAMESPACE = me.getUID('POP_');\r\n var DELAY = 200;\r\n\r\n\r\n function showPopover(e) {\r\n setTimeout(function () {\r\n e.webuiPopover('show');\r\n }, DELAY);\r\n }\r\n\r\n\r\n function attemptOpen() {\r\n var e = $(this);\r\n\r\n e.addClass('in');\r\n\r\n // nothing open\r\n if (!current.show) {\r\n setGlobal(e);\r\n showPopover(e);\r\n return;\r\n }\r\n\r\n // open but not me \r\n // close first\r\n if (current.show && e.data().elementhash !== current.id) {\r\n hideAllButMe(e);\r\n setGlobal(e);\r\n showPopover(e);\r\n return;\r\n }\r\n }\r\n\r\n\r\n // set element click\r\n $(document).on('click.sitep' + NAMESPACE, data.elementhash, attemptOpen);\r\n\r\n\r\n // set site search input\r\n if (data.elementhash === SEARCHINPUT_ELEM) {\r\n $(document).on('input.searchinput' + NAMESPACE, data.elementhash, setSiteSearch);\r\n }\r\n\r\n $('.site-search-tab').off().on('click', function (event) {\r\n var elem = $(this);\r\n if (!elem.is('a')) {\r\n elem = elem.parent();\r\n }\r\n\r\n var data = elem.data();\r\n if (!elem.data('loaded')) {\r\n $(elem.attr('href')).find('div > div > div').html('
    ');\r\n // the tab index, since it's zero-based, is 1 off from the search type enum\r\n }\r\n\r\n me.SITE.getTabSearchResults($(this).parent().index() + 1, elem);\r\n })\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * global methods\r\n * ========================================================================\r\n */\r\n // hide all but me\r\n function hideAllButMe(e) {\r\n var data = e.data();\r\n for (var x = 0, len = list.length; x < len; x++) {\r\n var d = list[x];\r\n if (d[0].id == data.elementid) continue;\r\n d.webuiPopover('hide');\r\n }\r\n }\r\n\r\n\r\n // set global popover\r\n function setGlobal(e) {\r\n current.id = e.data().elementhash;\r\n current.target = e.data().popoverid;\r\n }\r\n\r\n\r\n // set document events\r\n function setDocumentEvents() {\r\n\r\n // hide all\r\n function hideAll() {\r\n for (var x = 0, len = list.length; x < len; x++) {\r\n var d = list[x];\r\n d.webuiPopover('hide');\r\n }\r\n }\r\n\r\n\r\n // click\r\n function clickPop(event) {\r\n // not in show\r\n if (!current.show) return;\r\n\r\n var target = $(event.target);\r\n var input_target = target[0].id;\r\n\r\n // target off popover but in input box\r\n if (target.parents('div#' + current.poptarget).length === 0 && (input_target !== SEARCHINPUT_NOHASH_ELEM)) {\r\n hideAll();\r\n }\r\n }\r\n\r\n\r\n // key\r\n function keyPop(event) {\r\n // not in show\r\n if (!current.show) return;\r\n\r\n // esc\r\n if (event.which == 27 || event.keyCode == 27) {\r\n\r\n var active = $(document.activeElement)[0].id || '_'; // added for chrome bug\r\n\r\n // if not focus in input\r\n hideAll();\r\n }\r\n\r\n // enter in search box\r\n if (event.which == 13 || event.keyCode == 13) {\r\n if (current.id === SEARCHINPUT_NOHASH_ELEM) getSearchResults();\r\n }\r\n\r\n }\r\n\r\n\r\n // Hide all on manual resize but not $().resize for redraws.\r\n function resize(e) {\r\n if (e.originalEvent) {\r\n hideAll();\r\n }\r\n }\r\n\r\n\r\n $(document).on('click.sitepxxx', clickPop);\r\n $(document).on('keyup.sitepxxx', keyPop); // kill if out of bounds\r\n\r\n $(window).on('resize.sitepxxx', resize); // kill on resize site\r\n }\r\n\r\n\r\n // set site search\r\n function setSiteSearch() {\r\n if (this.delay) clearTimeout(this.delay);\r\n this.delay = setTimeout(function () {\r\n getSearchResults();\r\n }, 850);\r\n }\r\n\r\n\r\n // get search\r\n function getSearchResults() {\r\n me.SITE.getSiteSearchResults();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // set top navigation popovers\r\n child.setTopPopovers = function () {\r\n setTopPopovers();\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * FD: FD\r\n * Child: USERCONTROL\r\n * Version: 1.0\r\n * ======================================================================== \r\n * Description:\r\n * user controls\r\n * top navigation, notification, feedback, app search\r\n * \r\n * Reference: \r\n * ======================================================================== \r\n * 1/2/2016: creation\r\n * 6/29/2016: innosuite 2016\r\n*/\r\n\r\nFD.SITE = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.SITE || {};\r\n\r\n\r\n /* ========================================================================\r\n * private vars\r\n * ========================================================================\r\n */\r\n\r\n\r\n /* ========================================================================\r\n * private methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // get user explorer data\r\n function getUserExplorerData() {\r\n var URL = \"/Common/Common/GetUserExplorer\";\r\n\r\n var options = {\r\n params: {},\r\n url: URL,\r\n ishtml: true,\r\n callback: afterData \r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n $('[data-userexplorer=\"true\"]').html(result);\r\n\r\n // me.setControlLabel();\r\n }\r\n }\r\n\r\n\r\n\r\n // set default site view\r\n function setDefaultSiteView() {\r\n var ELEM = '[data-fd=\"siteview\"]';\r\n var btn = $(ELEM);\r\n\r\n function updateSiteViewDB(val) {\r\n var userItem = me.getUserProps();\r\n var inputProps = {\r\n GUID: userItem.guid,\r\n SiteView: val,\r\n PinState: null\r\n };\r\n\r\n var URL = \"/Common/Common/HandleUserItemFieldCRUD\";\r\n var options = {\r\n params: inputProps,\r\n url: URL,\r\n callback: afterData\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n // call view siteview change\r\n function afterData(data) {\r\n me.PAGE.getAfterSiteViewChangeEvent(val);\r\n if ($('.frozen-header-viewport').length > 0) {\r\n me.CONTROL.recalculateFrozenTableHeight();\r\n me.CONTROL.recalculateScrollTableWidth();\r\n // This need to wait for the next screen paint.\r\n setTimeout(me.CONTROL.recalculateFrozenTableViewport, 1);\r\n }\r\n me.CONTROL.setScrollAfterSiteView({siteView: inputProps.SiteView});\r\n }\r\n }\r\n\r\n\r\n function setSiteView() {\r\n var e = $(this);\r\n var val = e.data().value;\r\n\r\n btn.children('i').removeClass('fa-check-square-o').addClass('fa-square-o');\r\n e.children('i').removeClass('fa-square-o').addClass('fa-check-square-o');\r\n\r\n $('body').removeClass('cozy').removeClass('compact').removeClass('comfort').addClass(val);\r\n\r\n // reset page dimension\r\n me.setPageDimension();\r\n\r\n // update db\r\n updateSiteViewDB(val);\r\n }\r\n\r\n\r\n $(document).on('click', ELEM, setSiteView);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * public methods\r\n * ========================================================================\r\n */\r\n\r\n // default site view\r\n child.setDefaultSiteView = function () {\r\n setDefaultSiteView();\r\n }\r\n\r\n\r\n\r\n // get user explorer data\r\n child.getUserExplorerData = function () {\r\n getUserExplorerData();\r\n }\r\n\r\n /* ========================================================================\r\n * return\r\n * ========================================================================\r\n */\r\n return child;\r\n}(jQuery, FD));\r\n\r\n","/* ========================================================================\r\n * module feedback\r\n * ========================================================================\r\n*/\r\nFD.FEEDBACK = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.FEEDBACK || {};\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n var URL_EVALS = '/Evals/Feedback/';\r\n\r\n var MESSAGE_CONTAINER_ELEM = '[data-modalmessage=\"true\"]';\r\n var PARENT_ELEM = '[data-parent=\"true\"]';\r\n var MODAL_ELEM = '#FEEDBACK_MODAL';\r\n\r\n var feedback;\r\n var modal;\r\n var messageModalContainer;\r\n var feedbackType = {\r\n PeerFeedback: 1,\r\n SummarySentence: 2,\r\n HitsAndMisses: 3,\r\n Overview: 4,\r\n PerformanceLevel: 5\r\n }\r\n\r\n \r\n /* ========================================================================\r\n * tags\r\n * ========================================================================\r\n */\r\n\r\n var tag = {\r\n SAVE_BTN: 10\r\n };\r\n\r\n\r\n /************************************************************\r\n * Objects\r\n ************************************************************/\r\n\r\n function setFeedbackItem() {\r\n return {\r\n ID: null,\r\n ForID: null,\r\n IsComplete: null,\r\n AuthorID: null,\r\n Text: null,\r\n CoachText: null,\r\n GrowthType: null,\r\n ShowOnEval: null,\r\n FeedbackType: 1, // Peer Feedback\r\n PeriodID: null,\r\n PerformanceLevel: null,\r\n PerformanceLevelCoach: null\r\n }\r\n }\r\n\r\n\r\n // load container\r\n function loadContainer() {\r\n if (me.getModalLock()) {\r\n return;\r\n }\r\n\r\n me.setModalLock(true);\r\n var options = {\r\n params: {},\r\n url: URL_EVALS + 'GetSiteFeedbackModal',\r\n callback: afterData,\r\n ishtml: true,\r\n cancelprevious: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n \r\n $('body').append(result);\r\n\r\n modal = $(MODAL_ELEM);\r\n\r\n modal.off().on('shown.bs.modal', function () {\r\n me.setToolTipDestroy();\r\n me.CONTROL.setValidateContainer(modal); // MUST BE FIRST\r\n me.CONTROL.setButton(true, modal);\r\n me.CONTROL.setAutoComplete(modal);\r\n me.CONTROL.setMessageContainer(MESSAGE_CONTAINER_ELEM);\r\n me.CONTROL.setTextArea(true, modal);\r\n me.setModalLock(false);\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n $(MODAL_ELEM).remove();\r\n }).modal('show');\r\n\r\n messageModalContainer = $(MESSAGE_CONTAINER_ELEM);\r\n messageModalContainer = me.CONTROL.setMessageContainer(MESSAGE_CONTAINER_ELEM);\r\n } \r\n }\r\n\r\n\r\n /* ========================================================================\r\n * feedback methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n // save new piece of feedback\r\n function setSaveButton(data) {\r\n if (me.CONTROL.Validate(MODAL_ELEM)) {\r\n var item = setFeedbackItem(null, feedbackType.PeerFeedback);\r\n var frmElem = me.getFormFields(MODAL_ELEM);\r\n item.Text = frmElem.Text;\r\n item.PeriodID = frmElem.PeriodID;\r\n item.ForID = frmElem.ForID;\r\n item.GrowthType = frmElem.GrowthType;\r\n\r\n handleFeedbackCRUD(item);\r\n\r\n $(MODAL_ELEM).find('textarea').val('').text('');\r\n }\r\n }\r\n\r\n\r\n // submit update to server\r\n function handleFeedbackCRUD(item) {\r\n messageModalContainer.setSpinner();\r\n\r\n var options = {\r\n url: URL_EVALS + \"HandleFeedbackUpdateCRUD\",\r\n params: {\r\n item: item\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n messageModalContainer.setMessage(result, null);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * page init\r\n * ========================================================================\r\n */\r\n\r\n\r\n // init\r\n child.init = function () {\r\n loadContainer();\r\n };\r\n\r\n\r\n\r\n // after control event\r\n child.getAfterControlEvent = function (data) {\r\n var result = data;\r\n\r\n // save button\r\n if (result.tag === tag.SAVE_BTN) setSaveButton();\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));\r\n\r\n\r\n\r\n","/* ========================================================================\r\n * module Learning Subscription\r\n * ========================================================================\r\n*/\r\nFD.LEARNINGSUBSCRIPTION = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.LEARNINGSUBSCRIPTION || {};\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n var URL_LEARNINGSUITE = '/LearningSuite/';\r\n var MODAL_ELEM = '#LEARNING_SUBSCRIPTION_MODAL';\r\n var SUBSCRIPTION_TAG_CONTAINER = '#SUBSCRIPTION_TAG_CONTAINER';\r\n var SUBSCRIPTION_CR_CONTAINER = '#SUBSCRIPTION_CR_CONTAINER';\r\n var modal;\r\n var notify;\r\n var label;\r\n var editing = false;\r\n\r\n var modalOptions = {};\r\n var defaults = {\r\n updateCallback: null,\r\n hideCallBack: null\r\n };\r\n\r\n /* ========================================================================\r\n * tags\r\n * ========================================================================\r\n */\r\n\r\n var tag = {\r\n ADD_TAG: 12,\r\n DELETE_TAG: 13, \r\n \r\n SUBSCRIBE_CR: 500,\r\n UNSUBSCRIBE_CR: 501\r\n };\r\n\r\n\r\n /*\r\n * ========================================================================\r\n * Objects\r\n * ========================================================================\r\n */\r\n\r\n\r\n\r\n\r\n /* ========================================================================\r\n * CRUD Functions\r\n * ========================================================================\r\n */\r\n\r\n function handleTagSubscriptionCRUD(data) {\r\n data.containerElem = SUBSCRIPTION_TAG_CONTAINER;\r\n data.deletTag = tag.DELETE_TAG;\r\n data.action = data.value !== true ? \"HandleTagSubscriptionAddCRUD\" : \"HandleTagSubscriptionDeleteCRUD\";\r\n if (data.value !== true && $(\"[data-parentid=\" + data.value + \"]\", SUBSCRIPTION_TAG_CONTAINER).length > 0) {\r\n data.e.data({\r\n initial: null,\r\n value: null\r\n }).val('');\r\n return;\r\n }\r\n handleSubscriptionCRUD(data);\r\n }\r\n\r\n\r\n function handleCRSubscriptionCRUD(data) { \r\n data.containerElem = SUBSCRIPTION_CR_CONTAINER;\r\n data.deletTag = tag.UNSUBSCRIBE_CR;\r\n data.action = data.value !== true ? \"HandleCRSubscriptionAddCRUD\" : \"HandleCRSubscriptionDeleteCRUD\";\r\n if (data.value !== true && $(\"[data-parentid=\" + data.value + \"]\", SUBSCRIPTION_CR_CONTAINER).length > 0) {\r\n data.e.data({\r\n initial: null,\r\n value: null\r\n }).val('');\r\n return;\r\n } \r\n handleSubscriptionCRUD(data);\r\n }\r\n\r\n\r\n function handleSubscriptionCRUD(data) {\r\n var options = {\r\n url: URL_LEARNINGSUITE + data.action,\r\n params: {\r\n ID: parseInt(data.value !== true ? data.value : data.parentid)\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n getSubscriptionList(data);\r\n data.e.data({\r\n initial: null,\r\n value: null\r\n }).val('');\r\n\r\n if (modalOptions.updateCallback && typeof modalOptions.updateCallback === 'function') {\r\n modalOptions.updateCallback(data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n /*\r\n * ========================================================================\r\n * Partial Views\r\n * ========================================================================\r\n */\r\n\r\n // load modal\r\n function showLearningSubscriptionModal() {\r\n if (me.getModalLock()) {\r\n return;\r\n }\r\n\r\n me.setModalLock(true);\r\n var options = {\r\n params: {},\r\n url: URL_LEARNINGSUITE + 'GetLearningSubscriptionModal',\r\n callback: afterData,\r\n ishtml: true,\r\n cancelprevious: true,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n\r\n $('body').append(result.data);\r\n\r\n modal = $(MODAL_ELEM);\r\n\r\n modal.off().on('shown.bs.modal', function () {\r\n me.CONTROL.setSelect(true, modal);\r\n me.CONTROL.setButton(true, modal);\r\n me.CONTROL.setAutoComplete(modal);\r\n if (notify !== null) {\r\n notify = new Notify();\r\n }\r\n label = me.getLabel();\r\n me.setModalLock(false);\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n $(MODAL_ELEM).remove();\r\n if (modalOptions.hideCallback && typeof modalOptions.hideCallback === 'function') {\r\n modalOptions.hideCallback();\r\n }\r\n }).modal('show');\r\n }\r\n }\r\n\r\n\r\n function getSubscriptionList(data) {\r\n var options = {\r\n url: URL_LEARNINGSUITE + \"GetSubscriptionList\",\r\n params: {\r\n deleteTagId: data.deletTag,\r\n isCR: data.deletTag === tag.UNSUBSCRIBE_CR\r\n },\r\n isloader: true,\r\n ishtml: true,\r\n callback: afterData\r\n };\r\n me.AJAX.setAJAX(options);\r\n function afterData(result) {\r\n if (result.data) {\r\n $(data.containerElem).html(result.data);\r\n me.CONTROL.setButton(true, $(data.containerElem));\r\n }\r\n }\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * Helper Methods\r\n * ========================================================================\r\n */\r\n\r\n\r\n /* ========================================================================\r\n * page init\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.init = function () { };\r\n\r\n // Display update learning subscription modal\r\n // options: learning subscription modal options\r\n // updateCallback: This is used to fire a callback from the function passed in\r\n // hideCallback: This is called when the modal is hidden.\r\n child.showLearningSubscriptionModal = function (options) {\r\n modalOptions = $.extend({}, defaults, options);\r\n showLearningSubscriptionModal();\r\n };\r\n\r\n child.handleCRSubscriptionCRUD = function (options) { \r\n handleCRSubscriptionCRUD(options);\r\n };\r\n // after control event\r\n child.getAfterControlEvent = function (data) {\r\n switch (data.tag) {\r\n case tag.ADD_TAG:\r\n case tag.DELETE_TAG:\r\n handleTagSubscriptionCRUD(data);\r\n break;\r\n case tag.UNSUBSCRIBE_CR:\r\n case tag.SUBSCRIBE_CR:\r\n handleCRSubscriptionCRUD(data);\r\n break;\r\n }\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));","/* ========================================================================\r\n * module application help\r\n * ========================================================================\r\n*/\r\nFD.APPLICATIONHELP = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.PROJECTEDIT || {};\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n var URL_COMMON = '/Common/Common/';\r\n\r\n var MESSAGE_CONTAINER_ELEM = '[data-modalmessage=\"true\"]';\r\n var PARENT_ELEM = '[data-parent=\"true\"]';\r\n var APP_INSTRUCTIONS = '#APP_INSTRUCTIONS';\r\n var APP_INSTRUCTIONS_CONTENT = '#APP_INSTRUCTIONS_CONTENT';\r\n var VIEW_INSTRUCTIONS = '#VIEW_INSTRUCTIONS';\r\n var MODAL_ELEM = '#APPLICATIONHELP_MODAL';\r\n\r\n var modal;\r\n var messageModalContainer = $(MESSAGE_CONTAINER_ELEM);\r\n var applicationID = -1;\r\n var viewID = -1;\r\n var videoList = [];\r\n\r\n /* ========================================================================\r\n * tags\r\n * ========================================================================\r\n */\r\n\r\n var tag = {\r\n SELECT_LANGUAGE: 1000\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * object functions\r\n * ========================================================================\r\n */\r\n \r\n \r\n \r\n // load modal\r\n function getApplicationHelpModal() {\r\n if (me.getModalLock()) {\r\n return;\r\n }\r\n\r\n me.setModalLock(true);\r\n var options = {\r\n params: {\r\n applicationID: applicationID,\r\n viewID: viewID\r\n },\r\n url: URL_COMMON + 'GetApplicationHelpModal',\r\n callback: afterData,\r\n ishtml: true,\r\n cancelprevious: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n\r\n $('body').append(result);\r\n\r\n modal = $(MODAL_ELEM);\r\n\r\n modal.off().on('shown.bs.modal', function () {\r\n me.setToolTipDestroy();\r\n me.CONTROL.setSelect(true, MODAL_ELEM);\r\n $('.video-js').each(function () {\r\n videoList.push(videojs(this, {\r\n controls: true,\r\n autoplay: false,\r\n preload: 'auto'\r\n }, function () {\r\n this.removeClass('hidden');\r\n }));\r\n })\r\n me.setModalLock(false);\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n $(MODAL_ELEM).remove();\r\n for (var x = 0; x < videoList.length; x++) {\r\n videoList[x].dispose();\r\n }\r\n }).modal('show');\r\n\r\n messageModalContainer = $(MESSAGE_CONTAINER_ELEM);\r\n messageModalContainer = me.CONTROL.setMessageContainer(MESSAGE_CONTAINER_ELEM);\r\n }\r\n }\r\n\r\n\r\n // Get translation\r\n function getApplicationHelpTranslation(data) {\r\n var options = {\r\n params: {\r\n applicationID: applicationID,\r\n viewID: viewID,\r\n languageType: +data.value\r\n },\r\n url: URL_COMMON + 'GetApplicationHelpTranslation',\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n $(APP_INSTRUCTIONS_CONTENT).html(result.ApplicationInstructions.ApplicationHelpText);\r\n $(VIEW_INSTRUCTIONS).html(result.ViewInstructions.ApplicationHelpText);\r\n }\r\n }\r\n\r\n\r\n /* ========================================================================\r\n * CRUD Functions\r\n * ========================================================================\r\n */\r\n \r\n\r\n\r\n\r\n /* ========================================================================\r\n * page init\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.init = function () { };\r\n \r\n child.getApplicationHelpModal = function (currentAppID, currentViewID) {\r\n applicationID = currentAppID;\r\n viewID = currentViewID;\r\n getApplicationHelpModal();\r\n };\r\n \r\n // after control event\r\n child.getAfterControlEvent = function (data) {\r\n var result = data;\r\n\r\n switch (result.tag) {\r\n case tag.SELECT_LANGUAGE:\r\n getApplicationHelpTranslation(result);\r\n break;\r\n }\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));\r\n\r\n\r\n\r\n","/* ========================================================================\r\n * module feedback\r\n * ========================================================================\r\n*/\r\nFD.FAVORITEVIEW = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.FAVORITEVIEW || {};\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n var URL_COMMON = '/Common/Common/';\r\n\r\n var PARENT_ELEM = '[data-parent=\"true\"]';\r\n\r\n var FAVORITE_CONTENT = '#SS_FAVORITES_CONTENT';\r\n var FAVORITE_CONTAINER = '#SS_FAVORITES_LIST';\r\n var APP_VIEW_LIST = \"#POP_APPLICATION\";\r\n var SITE_APPS_LIST = '#SS_APPS_CONTENT';\r\n var notify;\r\n \r\n /* ========================================================================\r\n * tags\r\n * ========================================================================\r\n */\r\n\r\n var tag = {\r\n FAVORITE_APP: 10,\r\n FAVORITE_VIEW: 11,\r\n DELETE_FAVORITE: 12,\r\n SORT_FAVORITE: 13\r\n };\r\n\r\n /* ========================================================================\r\n * CRUD Functions\r\n * ========================================================================\r\n */\r\n\r\n // Determine which CRUD function should be called and update the bookmark icon\r\n function setFavoriteViewCRUD(data) {\r\n if (data.e.hasClass('fa-bookmark-o')) {\r\n data.e.removeClass('fa-bookmark-o').addClass('fa-bookmark');\r\n handleUserFavoriteViewAddCRUD(+data.parentid, +data.e.closest('[data-parent]').data('appid'));\r\n } else {\r\n data.e.removeClass('fa-bookmark').addClass('fa-bookmark-o');\r\n handleUserFavoriteViewDeleteCRUD(+data.parentid, +data.e.closest('[data-parent]').data('appid'));\r\n }\r\n }\r\n\r\n\r\n // Save a view as a favorite\r\n function handleUserFavoriteViewAddCRUD(viewID, appID) {\r\n var options = {\r\n url: URL_COMMON + \"HandleUserFavoriteViewAddCRUD\",\r\n params: {\r\n viewID: viewID,\r\n appID: appID\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n if (result) {\r\n getFavoriteViewList(true);\r\n var viewLinkInAppList = $(APP_VIEW_LIST).find('[data-parentid=\"' + viewID + '\"]');\r\n if (viewLinkInAppList.length > 0) {\r\n viewLinkInAppList.find('.fa-bookmark-o').removeClass('fa-bookmark-o').addClass('fa-bookmark');\r\n }\r\n } else {\r\n notify = notify || new Notify();\r\n notify.alert(\"An error occurred while trying to save this page as a favorite.\");\r\n }\r\n }\r\n }\r\n\r\n\r\n // Remove a view from the favorites list\r\n function handleUserFavoriteViewDeleteCRUD(viewID, appID) {\r\n var options = {\r\n url: URL_COMMON + \"HandleUserFavoriteViewDeleteCRUD\",\r\n params: {\r\n viewID: viewID,\r\n appID: appID\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n if (result) {\r\n getFavoriteViewList(true);\r\n $(APP_VIEW_LIST).find('[data-parentid=\"' + viewID + '\"] .fa-bookmark').removeClass('fa-bookmark').addClass('fa-bookmark-o');\r\n $(SS_APPS_CONTENT).find('[data-parentid=\"' + viewID + '\"][data-appid=\"' + appID + '\"] .fa-bookmark').removeClass('fa-bookmark').addClass('fa-bookmark-o');\r\n } else {\r\n notify = notify || new Notify();\r\n notify.alert(\"An error occurred while trying to remove this page from your list of favorites.\");\r\n }\r\n }\r\n }\r\n\r\n\r\n // Reorder the user's favorite views\r\n function handleUserFavoriteViewOrderCRUD(data) {\r\n var viewOrderList = [];\r\n $(FAVORITE_CONTENT).find('[data-parent]').each(function (index, elem) {\r\n viewOrderList.push({\r\n ViewID: $(this).data('parentid'),\r\n ApplicationID: $(this).data('appid'),\r\n OrderBy: index\r\n });\r\n });\r\n var options = {\r\n url: URL_COMMON + \"HandleUserFavoriteViewOrderCRUD\",\r\n params: {\r\n viewList: viewOrderList\r\n },\r\n callback: afterData\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n if (!result) {\r\n notify = notify || new Notify();\r\n notify.alert(\"An error occurred while trying to reorder your favorites list.\");\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n /* ========================================================================\r\n * View Functions\r\n * ========================================================================\r\n */\r\n\r\n function getFavoriteViewList(showLoader) {\r\n var options = {\r\n url: URL_COMMON + 'GetFavoriteViewList',\r\n params: {},\r\n callback: afterData,\r\n ishtml: true,\r\n isloader: showLoader || false\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n if (result) {\r\n var container = $(FAVORITE_CONTENT);\r\n if (container.length > 0) {\r\n container.html(result);\r\n me.CONTROL.setButton(true, FAVORITE_CONTAINER);\r\n me.CONTROL.setSortable(FAVORITE_CONTAINER);\r\n }\r\n } else {\r\n notify = notify || new Notify();\r\n notify.alert(\"An error occurred while trying to refresh the list of your favorite pages.\");\r\n }\r\n }\r\n }\r\n\r\n /* ========================================================================\r\n * page init\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.init = function () { };\r\n\r\n\r\n\r\n // after control event\r\n child.getAfterControlEvent = function (data) {\r\n var result = data;\r\n\r\n switch (data.tag) {\r\n case tag.FAVORITE_APP:\r\n case tag.FAVORITE_VIEW:\r\n case tag.DELETE_FAVORITE:\r\n setFavoriteViewCRUD(result);\r\n break;\r\n case tag.SORT_FAVORITE:\r\n handleUserFavoriteViewOrderCRUD(result);\r\n break;\r\n }\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));\r\n\r\n\r\n\r\n","FD.MEDIA_MANAGER = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.MEDIA_MANAGER || {};\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n var URL_MEDIA = '/Common/Media/';\r\n\r\n var UPLOAD_MODAL = '#UPLOAD_MEDIA_MODAL';\r\n var MANAGE_MODAL = '#MANAGE_MEDIA_MODAL';\r\n var MEDIA_SAVE = '#MEDIA_SAVE';\r\n\r\n var k; // used for keyboard events\r\n var currentFile;\r\n\r\n var clipboard, ctx, canvas;\r\n var lrPad = 30;\r\n var pastedImage;\r\n var origHeight;\r\n var origWidth;\r\n var addCallback;\r\n var deleteCallback;\r\n var skipDelete = false;\r\n var uploadMediaHideFunction;\r\n var manageMediaHideFunction;\r\n var mediaList;\r\n var currentMediaID;\r\n var permissionType;\r\n var showTitleAndDescription;\r\n var showWatermark;\r\n var showArrows = false;\r\n var notify = new Notify();\r\n var label;\r\n\r\n /* ========================================================================\r\n * tags\r\n * ========================================================================\r\n */\r\n\r\n var tag = {\r\n SAVE_MEDIA: 1000,\r\n CLEAR_MEDIA: 1001,\r\n CLICK_IMAGE: 1002,\r\n EDIT_MediaTitle: 1003,\r\n EDIT_MediaComment: 1004,\r\n DELETE_IMAGE: 1005,\r\n CLICK_PREV: 1006,\r\n CLICK_NEXT: 1007\r\n }; \r\n\r\n\r\n /* ========================================================================\r\n * object\r\n * ========================================================================\r\n */\r\n\r\n\r\n // load media manager\r\n function loadMediaManager(idList, firstID) {\r\n if (me.getModalLock()) {\r\n return;\r\n }\r\n me.setModalLock(true);\r\n mediaList = idList;\r\n showArrows = idList.length > 1;\r\n var options = {\r\n url: URL_MEDIA + \"MediaManager\",\r\n params: {\r\n Images: idList,\r\n firstID: firstID,\r\n permissionType: permissionType,\r\n showTitleAndDesc: showTitleAndDescription,\r\n showWatermark: showWatermark\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n\r\n $('body').append(result[0]);\r\n currentMediaID = +result[1];\r\n\r\n var modal = $(MANAGE_MODAL);\r\n\r\n modal.off().on('shown.bs.modal', function () {\r\n me.setToolTipDestroy();\r\n me.CONTROL.setText(true, modal);\r\n me.CONTROL.setTextArea(true, modal);\r\n me.CONTROL.setButton(true, modal);\r\n me.CONTROL.setScroll(modal);\r\n me.setModalLock(false);\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n $(MANAGE_MODAL).remove();\r\n if (manageMediaHideFunction && typeof manageMediaHideFunction === 'function') {\r\n manageMediaHideFunction();\r\n }\r\n }).modal('show');\r\n }\r\n }\r\n\r\n\r\n // load media manager\r\n function loadMediaUploader(showTitleAndDesc) {\r\n if (me.getModalLock()) {\r\n return;\r\n }\r\n me.setModalLock(true);\r\n var options = {\r\n url: URL_MEDIA + \"MediaUploader\",\r\n params: { showTitleAndDesc: typeof (showTitleAndDesc) == 'undefined' ? false : showTitleAndDesc },\r\n callback: afterData,\r\n ishtml: true,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n\r\n $('body').append(result);\r\n var modal = $(UPLOAD_MODAL);\r\n\r\n modal.off().on('shown.bs.modal', function () {\r\n me.setToolTipDestroy(); \r\n var options = { // dropzone\r\n container: '[data-fd=\"dropzone\"]',\r\n url: URL_MEDIA + 'VerifyImage'\r\n };\r\n if (modal.find('[data-fd=\"dropzone\"]').length > 0) {\r\n setMediaDropzone(options);\r\n setClipboard(true);\r\n }\r\n me.CONTROL.setButton(true, modal);\r\n me.CONTROL.setText(true, modal);\r\n me.CONTROL.setTextArea(true, modal);\r\n $(MEDIA_SAVE).prop('disabled', true);\r\n me.setModalLock(false);\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n $(UPLOAD_MODAL).remove();\r\n if (uploadMediaHideFunction && typeof uploadMediaHideFunction === 'function') {\r\n uploadMediaHideFunction();\r\n }\r\n }).modal('show');\r\n }\r\n }\r\n\r\n\r\n function displayIncompatibleMessage() {\r\n if (me.getModalLock()) {\r\n return;\r\n }\r\n me.setModalLock(true);\r\n var options = {\r\n url: URL_MEDIA + \"IncompatibleBrowser\",\r\n params: {},\r\n callback: afterData,\r\n ishtml: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n\r\n $('body').append(result);\r\n\r\n var modal = $(UPLOAD_MODAL);\r\n\r\n modal.off().on('shown.bs.modal', function () {\r\n me.setToolTipDestroy();\r\n me.setModalLock(false);\r\n }).on('hidden.bs.modal', function () {\r\n me.setToolTip();\r\n $(UPLOAD_MODAL).remove();\r\n }).modal('show');\r\n }\r\n }\r\n\r\n\r\n // get larger-size image and title/comment information\r\n function getImageDetails(data) {\r\n if (data) {\r\n currentMediaID = +data.parentid;\r\n }\r\n var options = {\r\n url: URL_MEDIA + \"GetImageDetails\",\r\n params: {\r\n mediaID: currentMediaID,\r\n permissionType: permissionType,\r\n showArrows: showArrows,\r\n showTitleAndDesc: showTitleAndDescription,\r\n showWatermark: showWatermark\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(data) {\r\n var result = data.data;\r\n $('#IMAGE_DIV').html(result[0]);\r\n $(MANAGE_MODAL).find('.modal-footer').html(result[1]);\r\n $('#IMAGE_LINK').attr('href', $('#MEDIA_IMAGE').data('url'));\r\n me.CONTROL.setButton(true, null);\r\n me.CONTROL.setText(true, null);\r\n me.CONTROL.setTextArea(true, null);\r\n if (mediaList.length === 1) {\r\n $(\"#THUMBNAIL_LIST\").parent().remove();\r\n $(\"#IMAGE_DIV\").removeClass('col-xs-10').addClass('col-xs-12');\r\n }\r\n }\r\n }\r\n\r\n\r\n // click the previous or next button\r\n function handleImageNavigation(data) {\r\n var index = jQuery.inArray(currentMediaID, mediaList);\r\n if (data.tag === tag.CLICK_PREV) {\r\n index = index === 0 ? mediaList.length - 1 : index - 1;\r\n } else {\r\n index = (index + 1) % mediaList.length;\r\n }\r\n\r\n currentMediaID = mediaList[index];\r\n getImageDetails();\r\n }\r\n\r\n\r\n // create a media item object\r\n function setMediaItem(ID) {\r\n return {\r\n MediaID: ID,\r\n MediaTitle: null,\r\n MediaComment: null\r\n };\r\n }\r\n\r\n\r\n // update the title/comment information for a media item\r\n function handleMediaFieldCRUD(data) {\r\n var mediaItem = setMediaItem(data.parentid);\r\n if (data.tag === tag.EDIT_MediaTitle) {\r\n mediaItem.MediaTitle = data.value;\r\n } else {\r\n mediaItem.MediaComment = data.value;\r\n }\r\n\r\n var options = {\r\n url: URL_MEDIA + \"HandleMediaFieldCRUD\",\r\n params: {\r\n item: mediaItem\r\n },\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n }\r\n\r\n\r\n // delete an image\r\n function handleMediaDeleteCRUD(data) {\r\n var options = {\r\n url: URL_MEDIA + \"HandleMediaDeleteCRUD\",\r\n params: {\r\n mediaID: currentMediaID\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n if (skipDelete) {\r\n afterData({ data: true });\r\n } else {\r\n me.AJAX.setAJAX(options);\r\n }\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n var index = jQuery.inArray(currentMediaID, mediaList);\r\n \r\n //If there's at least one image left, update the thumbnail list and display the next image\r\n if (mediaList.length > 1) {\r\n deleteCallback(currentMediaID);\r\n $('#THUMBNAIL_LIST>div').eq(index).remove();\r\n mediaList.splice(index, 1);\r\n index = index === 0 || index === mediaList.length ? mediaList.length - 1 : index;\r\n currentMediaID = mediaList[index];\r\n showArrows = mediaList.length !== 1;\r\n getImageDetails();\r\n } else { // No images left - close the modal\r\n deleteCallback(currentMediaID);\r\n $(MANAGE_MODAL).modal('hide');\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n //-------------------------------------------------------------\r\n // Image Upload Functions (paste/drag/browse)\r\n //-------------------------------------------------------------var clipboard, ctx, canvas;\r\n\r\n // set dropzone\r\n function setMediaDropzone(options) {\r\n\r\n // don't load dz on init\r\n Dropzone.autoDiscover = false;\r\n\r\n // set options\r\n var defaults = {\r\n maxFilesize: 20, // MB\r\n maxFiles: 1,\r\n url: '',\r\n callback: '',\r\n fileParam: 'image',\r\n container: '',\r\n userguid: '',\r\n entityname: '',\r\n username: '',\r\n dropzone: true\r\n };\r\n\r\n // set options\r\n var opts = $.extend({}, defaults, options);\r\n opts.success = false;\r\n\r\n if (typeof opts.container === 'string') {\r\n opts.container = $(opts.container);\r\n }\r\n\r\n var dZ = opts.container;\r\n if (dZ.length === 0) {\r\n return;\r\n }\r\n\r\n // callback\r\n function handleCallback(files, response) {\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n currentFile = files;\r\n $(MEDIA_SAVE).removeClass('disabled btn-default').addClass('btn-primary').prop(\"disabled\", null);\r\n\r\n var reader = new FileReader();\r\n reader.onload = function (event) {\r\n var image = new Image();\r\n image.onload = function () {\r\n //resize canvas\r\n var maxWidth = Math.min($(window).width(), $(UPLOAD_MODAL).width()) - lrPad;\r\n var maxHeight = Math.min($(window).height(), $(UPLOAD_MODAL).height());\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n\r\n while (canvas.width > maxWidth) {\r\n canvas.width = canvas.width * .75;\r\n canvas.height = canvas.height * .75;\r\n }\r\n while (canvas.height > maxHeight) {\r\n canvas.width = canvas.width * .75;\r\n canvas.height = canvas.height * .75;\r\n }\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n };\r\n\r\n image.src = this.result;\r\n };\r\n\r\n reader.readAsDataURL(files);\r\n }\r\n\r\n\r\n // init\r\n dZ.dropzone({\r\n paramName: opts.fileParam,\r\n maxFilesize: opts.maxFilesize,\r\n autoProcessQueue: true,\r\n uploadMultiple: false,\r\n parallelUploads: 1,\r\n maxFiles: opts.maxFiles,\r\n maxThumbnailFilesize: 1,\r\n acceptedFiles: \"image/*\",\r\n clickable: true,\r\n url: opts.url,\r\n init: function () {\r\n var myDropzone = this;\r\n\r\n this.on(\"success\", function (file, response) {\r\n myDropzone.removeAllFiles(file);\r\n handleCallback(file, response);\r\n }).on('complete', function (file) {\r\n if (!file.accepted) {\r\n if (!label) {\r\n label = me.getLabel();\r\n }\r\n notify.alert(label[\"ImageExceedsMaximumSizeAlert\"]);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n function setClipboard(autoresize) {\r\n clipboard = new CLIPBOARD_CLASS('MEDIA_CANVAS', autoresize);\r\n }\r\n\r\n\r\n // save pasted/dragged/uploaded image\r\n function saveImage(data) {\r\n data.e.find('img').attr('onerror', null);\r\n var originalHtml = $.parseHTML(data.e.html());\r\n data.e.addClass('disabled').prop('disabled', true).html('');\r\n var fieldData = me.getFormFields(data.e.closest(\".modal\"));\r\n if (currentFile) { \r\n var formData = new FormData();\r\n formData.append(\"image\", currentFile);\r\n formData.append(\"MediaTitle\", fieldData.MediaTitle);\r\n formData.append(\"MediaComment\", fieldData.MediaComment);\r\n\r\n var options = {\r\n url: URL_MEDIA + \"HandleImageUpload\",\r\n params: formData,\r\n callback: afterData,\r\n isloader: true,\r\n processData: false,\r\n contentType: false,\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n } else {\r\n var image = canvas.toDataURL(\"image/jpeg\");\r\n image = image.replace('data:image/jpeg;base64,', '');\r\n\r\n var options = {\r\n url: URL_MEDIA + \"HandleScreenshotUpload\",\r\n params: {\r\n imageData: image,\r\n width: pastedImage.width,\r\n height: pastedImage.height,\r\n mediaTitle: fieldData.MediaTitle,\r\n mediaComment: fieldData.MediaComment\r\n },\r\n callback: afterData,\r\n isloader: true,\r\n contentType: 'application/json; charset=utf-8',\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n }\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n currentFile = null;\r\n addCallback(result.data, result.getResponseHeader('MediaGUID'));\r\n $('[data-fldname=\"MediaTitle\"]').val('');\r\n $('[data-fldname=\"MediaComment\"]').val('');\r\n clearCanvas();\r\n }\r\n data.e.removeClass('disabled').prop('disabled', null).html(originalHtml);\r\n }\r\n }\r\n\r\n\r\n // remove current file, clear canvas, and restore it to original size\r\n function clearCanvas() {\r\n currentFile = null;\r\n $(MEDIA_SAVE).removeClass('btn-primary').addClass('disabled btn-default').prop(\"disabled\", true);\r\n\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n canvas.width = origWidth;\r\n canvas.height = origHeight;\r\n ctx.font = \"16px Noto Sans\";\r\n ctx.fillStyle = \"#466174\";\r\n ctx.fillText(\"You can upload an image by:\", 25, 50, canvas.width - 100);\r\n ctx.fillText(\"1. Dragging an image onto this canvas\", 50, 90, canvas.width - 100);\r\n ctx.fillText(\"2. Pressing [Ctrl+V] to paste a screenshot\", 50, 120, canvas.width - 100);\r\n ctx.fillText(\"3. Clicking this box to upload an image\", 50, 150, canvas.width - 100);\r\n }\r\n\r\n\r\n /**\r\n * image pasting into canvas\r\n * \r\n * @param string canvas_id canvas id\r\n * @param boolean autoresize if canvas will be resized\r\n */\r\n function CLIPBOARD_CLASS(canvas_id, autoresize) {\r\n var _self = this;\r\n canvas = document.getElementById(canvas_id);\r\n origWidth = canvas.width;\r\n origHeight = canvas.height;\r\n ctx = document.getElementById(canvas_id).getContext(\"2d\");\r\n ctx.font = \"16px Noto Sans\";\r\n ctx.fillStyle = \"#466174\";\r\n ctx.fillText(\"You can upload an image by:\", 25, 50, canvas.width - 100);\r\n ctx.fillText(\"1. Dragging an image onto this canvas\", 50, 90, canvas.width - 100);\r\n ctx.fillText(\"2. Pressing [Ctrl+V] to paste a screenshot\", 50, 120, canvas.width - 100);\r\n ctx.fillText(\"3. Clicking this box to upload an image\", 50, 150, canvas.width - 100);\r\n var ctrl_pressed = false;\r\n var reading_dom = false;\r\n var text_top = 15;\r\n var pasteCatcher;\r\n var paste_mode;\r\n\r\n //handlers\r\n document.addEventListener('keydown', function (e) {\r\n _self.on_keyboard_action(e);\r\n }, false); //firefox fix\r\n document.addEventListener('keyup', function (e) {\r\n _self.on_keyboardup_action(e);\r\n }, false); //firefox fix\r\n document.addEventListener('paste', function (e) {\r\n _self.paste_auto(e);\r\n }, false); //official paste handler\r\n\r\n //constructor - prepare\r\n this.init = function () {\r\n //if using auto\r\n //if (window.Clipboard)\r\n // return true;\r\n // Greg took out the above lines on 6/9/2017, because the universal inclusion of clipboard.js for the IAS PO Modal\r\n // ended up causing this statement the always return true. Since we aren't currently using the clipboard.js\r\n // functionality on any page that also uses the media manager right now, I think we should be ok.\r\n if ($('#paste_ff').length) {\r\n pasteCatcher = $('#paste_ff')[0];\r\n return;\r\n }\r\n pasteCatcher = document.createElement(\"div\");\r\n pasteCatcher.setAttribute(\"id\", \"paste_ff\");\r\n pasteCatcher.setAttribute(\"contenteditable\", \"\");\r\n pasteCatcher.style.cssText = 'opacity:0;position:fixed;top:0px;left:0px;';\r\n pasteCatcher.style.marginLeft = \"-20px\";\r\n pasteCatcher.style.width = \"10px\";\r\n document.body.appendChild(pasteCatcher);\r\n document.getElementById('paste_ff').addEventListener('DOMSubtreeModified', function () {\r\n if (paste_mode == 'auto' || ctrl_pressed == false)\r\n return true;\r\n //if paste handle failed - capture pasted object manually\r\n if (pasteCatcher.children.length == 1) {\r\n if (pasteCatcher.firstElementChild.src != undefined) {\r\n //image\r\n _self.paste_createImage(pasteCatcher.firstElementChild.src);\r\n }\r\n }\r\n //register cleanup after some time.\r\n setTimeout(function () {\r\n pasteCatcher.innerHTML = '';\r\n }, 20);\r\n }, false);\r\n }();\r\n //default paste action\r\n this.paste_auto = function (e) {\r\n paste_mode = '';\r\n pasteCatcher.innerHTML = '';\r\n var plain_text_used = false;\r\n if (e.clipboardData) {\r\n var items = e.clipboardData.items;\r\n if (items) {\r\n paste_mode = 'auto';\r\n //access data directly\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i].type.indexOf(\"image\") !== -1) {\r\n //image\r\n var blob = items[i].getAsFile();\r\n var URLObj = window.URL || window.webkitURL;\r\n var source = URLObj.createObjectURL(blob);\r\n this.paste_createImage(source);\r\n }\r\n }\r\n e.preventDefault();\r\n }\r\n else {\r\n //wait for DOMSubtreeModified event\r\n //https://bugzilla.mozilla.org/show_bug.cgi?id=891247\r\n }\r\n }\r\n };\r\n //on keyboard press - \r\n this.on_keyboard_action = function (event) {\r\n k = event.keyCode;\r\n //ctrl\r\n if (k == 17 || event.metaKey || event.ctrlKey) {\r\n if (ctrl_pressed == false)\r\n ctrl_pressed = true;\r\n }\r\n //c\r\n if (k == 86) {\r\n if (document.activeElement != undefined && document.activeElement.type == 'text') {\r\n //let user paste into some input\r\n return false;\r\n }\r\n\r\n if (ctrl_pressed == true)// && !window.Clipboard) Taken out due to inclusion of cliboard.js\r\n pasteCatcher.focus();\r\n }\r\n };\r\n //on kaybord release\r\n this.on_keyboardup_action = function (event) {\r\n k = event.keyCode;\r\n //ctrl\r\n if (k == 17 || event.metaKey || event.ctrlKey || event.key == 'Meta')\r\n ctrl_pressed = false;\r\n };\r\n //draw image\r\n this.paste_createImage = function (source) {\r\n pastedImage = new Image();\r\n pastedImage.onload = function () {\r\n if (autoresize == true) {\r\n //resize canvas\r\n var maxWidth = Math.min($(window).width(), $(UPLOAD_MODAL).width()) - lrPad;\r\n var maxHeight = Math.min($(window).height(), $(UPLOAD_MODAL).height());\r\n canvas.width = pastedImage.width;\r\n canvas.height = pastedImage.height;\r\n while (canvas.width > maxWidth) {\r\n canvas.width = canvas.width * .75;\r\n canvas.height = canvas.height * .75;\r\n }\r\n while (canvas.height > maxHeight) {\r\n canvas.width = canvas.width * .75;\r\n canvas.height = canvas.height * .75;\r\n }\r\n }\r\n else {\r\n //clear canvas\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n }\r\n ctx.drawImage(pastedImage, 0, 0, canvas.width, canvas.height);\r\n $(MEDIA_SAVE).removeClass('disabled btn-default').addClass('btn-primary').prop(\"disabled\", null);\r\n };\r\n pastedImage.src = source;\r\n };\r\n }\r\n\r\n\r\n function getBrowserVersion() {\r\n var ua = navigator.userAgent, tem,\r\n M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'IE', version: (tem[1] || '') };\r\n }\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if (tem != null) return { name: tem[1].replace('OPR', 'Opera'), version: tem[2] };\r\n }\r\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) M.splice(1, 1, tem[1]);\r\n return { name: M[0], version: M[1] };\r\n }\r\n\r\n\r\n // set after control event\r\n // handle all interface events here\r\n function setAfterControlEvent(data) {\r\n var result = data;\r\n\r\n // save pasted/dragged/uploaded image\r\n if (result.tag === tag.SAVE_MEDIA) saveImage(result);\r\n\r\n // clear canvas\r\n if (result.tag === tag.CLEAR_MEDIA) clearCanvas();\r\n\r\n // click image\r\n if (result.tag === tag.CLICK_IMAGE) getImageDetails(result);\r\n\r\n // edit title or comment\r\n if (result.tag === tag.EDIT_MediaTitle ||\r\n result.tag === tag.EDIT_MediaComment) handleMediaFieldCRUD(result);\r\n\r\n // delete image\r\n if (result.tag === tag.DELETE_IMAGE) handleMediaDeleteCRUD(result);\r\n\r\n // prev/next button\r\n if (result.tag === tag.CLICK_PREV ||\r\n result.tag === tag.CLICK_NEXT) handleImageNavigation(result);\r\n\r\n // view full size image\r\n if (result.tag === tag.CLICK_FULLSIZE) viewFullSize(result);\r\n \r\n }\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n\r\n\r\n child.loadMediaUploader = function (addFunction, hideFunction, showTitleAndDesc) {\r\n addCallback = addFunction;\r\n uploadMediaHideFunction = hideFunction;\r\n\r\n var browserDetect = getBrowserVersion();\r\n if (browserDetect.name === \"MSIE\" && +browserDetect.version < 11) {\r\n displayIncompatibleMessage();\r\n } else {\r\n loadMediaUploader(showTitleAndDesc);\r\n }\r\n };\r\n\r\n\r\n child.closeMediaUploader = function () {\r\n $(UPLOAD_MODAL).modal(\"hide\");\r\n }\r\n\r\n /*\r\n Load the media manager.\r\n Parameters:\r\n idList: the list of media IDs that need to be shown\r\n firstID: the ID of the image that should be shown first\r\n deleteFunction: callback for when the user deletes a picture. Provides a single ID parameter\r\n hideFunction: callback for when the user hides the media modal.\r\n permission: used to determine if the picture can be edited/deleted. Use me.MEDIA_MANAGER.getMediaPermissions() to see the available options.\r\n */\r\n child.loadMediaManager = function (idList, firstID, deleteFunction, hideFunction, permission, showTitleAndDesc, skipDeleteImage, showWatermarks) {\r\n deleteCallback = deleteFunction;\r\n skipDelete = skipDeleteImage;\r\n manageMediaHideFunction = hideFunction;\r\n permissionType = (permission) ? permission : 1;\r\n showTitleAndDescription = (showTitleAndDesc == null) ? true : showTitleAndDesc;\r\n showWatermark = showWatermarks;\r\n loadMediaManager(idList, firstID);\r\n };\r\n\r\n\r\n child.closeMediaManager = function () {\r\n $(MANAGE_MODAL).modal(\"hide\");\r\n }\r\n\r\n\r\n child.getMediaPermissions = function () {\r\n return {\r\n All: 1,\r\n Author: 2,\r\n ReadOnly: 3\r\n };\r\n };\r\n\r\n\r\n\r\n // after control event\r\n child.getAfterControlEvent = function (data) {\r\n setAfterControlEvent(data);\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));\r\n\r\n\r\n\r\n","/* ========================================================================\r\n * module call me\r\n * ========================================================================\r\n*/\r\nFD.PAGEACCESS = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.PAGEACCESS || {};\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n var URL_PAGEACCESS = '/Common/PageAccess/';\r\n\r\n var PAGEACESS_MODAL = '#PAGEACESS_MODAL';\r\n\r\n var modal;\r\n\r\n function showModal() {\r\n const viewID = $(\"#PAGEACESS_BUTTON\").data(\"viewid\");\r\n var options = {\r\n params: { viewID },\r\n url: URL_PAGEACCESS + 'ReturnPageAccessModal',\r\n callback: afterData,\r\n ishtml: true,\r\n cancelprevious: true\r\n };\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n modal = $(PAGEACESS_MODAL);\r\n\r\n modal.html(result.data).enableControls();\r\n modal.modal('show');\r\n }\r\n }\r\n\r\n // set after control event\r\n // handle all interface events here\r\n function setAfterControlEvent(data) {\r\n\r\n }\r\n\r\n\r\n // init\r\n child.showModal = showModal;\r\n\r\n\r\n // after control event\r\n child.getAfterControlEvent = function (data) {\r\n setAfterControlEvent(data);\r\n };\r\n\r\n return child;\r\n}(jQuery, FD));\r\n\r\n\r\n\r\n","/* ========================================================================\r\n * module application help\r\n * ========================================================================\r\n*/\r\nFD.REPORT = (function ($, me) {\r\n 'use strict';\r\n\r\n var child = me.REPORT || {};\r\n\r\n\r\n /* ========================================================================\r\n * vars\r\n * ========================================================================\r\n */\r\n var URL_COMMON = '/Common/Report/';\r\n var URL_LEARNING = '/LearningSuite/';\r\n\r\n var MESSAGE_CONTAINER_ELEM = '[data-modalmessage=\"true\"]';\r\n var FAVORITE_REPORTS_TAB = '#FAVORITE_REPORTS_TAB';\r\n var FAVORITE_REPORTS_FORM = '#FAVORITE_REPORTS_FORM';\r\n var SCHEDULED_REPORTS_TAB = '#SCHEDULED_REPORTS_TAB';\r\n var SCHEDULED_REPORTS_FORM = '#SCHEDULED_REPORTS_FORM';\r\n var FAVORITE_SELECT = '#FAVORITE_SELECT';\r\n var SCHEDULED_REPORTS = '#SCHEDULED_REPORTS';\r\n var FAVORITE_REPORTS = '#FAVORITE_REPORTS';\r\n var FREQUENCY_DAY = '#FREQUENCY_DAY';\r\n var ADD_OWNER_BOX = '#ADD_OWNER_BOX';\r\n var OWNER_LIST = '#OWNER_LIST';\r\n var RELATIVE_DATE_MODE = '#RELATIVE_DATE_MODE';\r\n var MODAL_ELEM = '#IS_MODAL';\r\n\r\n var recipients = [];\r\n var notify = new Notify();\r\n var label = '';\r\n var realDateQueryString = '';\r\n\r\n var entityTypes = {\r\n Cell: 2,\r\n Division: 3,\r\n Machine: 6,\r\n Part: 7,\r\n Station: 23,\r\n Substation: 24,\r\n ManualProcess: 25,\r\n FocusFactory: 36,\r\n Employee: 202,\r\n Company: 203,\r\n Origin: 301,\r\n ScrapIssue: 302,\r\n DowntimeIssue: 303,\r\n CR: 4,\r\n Building: 40,\r\n CUSTOM_USER_GROUP: -1,\r\n Playlist: -2\r\n };\r\n\r\n var frequencyType = {\r\n WEEKLY: 1,\r\n MONTHLY: 2\r\n };\r\n\r\n var relativeDateMode = {\r\n BY_DAY: 0,\r\n BY_WEEK: 1,\r\n BY_MONTH: 2,\r\n BY_QUARTER: 3,\r\n BY_YEAR: 4\r\n }\r\n\r\n var entityFilterType = {\r\n ALL_DIVISION_USERS: 1,\r\n ALL_CELL_USERS: 2,\r\n ALL_CR_USERS: 3,\r\n SINGLE_USER: 4,\r\n CR_OWNER: 5,\r\n DR_OWNER: 6,\r\n CELL_LEAD: 7,\r\n CUSTOM_USER_GROUP: 8,\r\n ALL_BOT_USERS: 9,\r\n BOT_CORPORATE: 10,\r\n BOT_DIVISION: 11,\r\n ALL_1PP_USERS: 12,\r\n ONEPP_CORPORATE: 13,\r\n ONEPP_DIVISION: 14,\r\n ALL_INNOTEC: 15\r\n };\r\n\r\n /* ========================================================================\r\n * tags\r\n * ========================================================================\r\n */\r\n\r\n var tag = {\r\n COPY_FAVORITE: 19,\r\n SAVE_FAVORITE: 20,\r\n SELECT_FAVORITE: 21,\r\n DELETE_FAVORITE: 22,\r\n USE_RELATIVE_DATES: 23,\r\n RELATIVE_DATE_MODE: 24,\r\n\r\n SAVE_SCHEDULE: 25,\r\n SELECT_SCHEDULE: 26,\r\n DELETE_SCHEDULE: 27,\r\n ADD_OWNER: 340,\r\n DELETE_OWNER: 341,\r\n SELECT_ENTTIY_TYPE: 345,\r\n FREQUENCY_TYPE: 28,\r\n };\r\n\r\n\r\n /* ========================================================================\r\n * object functions\r\n * ========================================================================\r\n */\r\n \r\n \r\n\r\n /* ========================================================================\r\n * CRUD Functions\r\n * ========================================================================\r\n */\r\n\r\n // save current settings as a favorite report\r\n function handleFavoriteCRUD(data) {\r\n if (!me.CONTROL.Validate(FAVORITE_REPORTS_FORM)) {\r\n return;\r\n }\r\n\r\n var frmElem = me.getFormFields(FAVORITE_REPORTS_FORM);\r\n frmElem.ViewID = data.e.closest(\"[data-parent=true]\").parent().closest(\"[data-parent=true]\").data(\"parentid\");\r\n if (data.tag == tag.SAVE_FAVORITE) {\r\n frmElem.FavoriteID = data.parentid;\r\n }\r\n\r\n var options = {\r\n url: URL_COMMON + \"HandleFavoriteCRUD\",\r\n params: {\r\n item : frmElem\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n returnFavoriteListByUserID(result.data);\r\n returnScheduleListByUserID();\r\n returnFavoriteListByApplicationCode();\r\n\r\n notify.confirm(label[\"FavoriteSuccessfullySaved\"]);\r\n }\r\n }\r\n }\r\n\r\n function handleFavoriteActiveCRUD(data) {\r\n var options = {\r\n url: URL_COMMON + \"HandleFavoriteActiveCRUD\",\r\n params: {\r\n ID: data.parentid,\r\n isActive: false\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n returnFavoriteListByUserID();\r\n returnScheduleListByUserID();\r\n returnFavoriteListByApplicationCode();\r\n }\r\n }\r\n }\r\n\r\n\r\n function handleScheduleCRUD(data) {\r\n\r\n if (!me.CONTROL.Validate(SCHEDULED_REPORTS_FORM)) {\r\n return;\r\n }\r\n if (recipients.length == 0) {\r\n notify.alert(label['YouMustSelectAtLeastOneRecipient']);\r\n return;\r\n }\r\n\r\n var frmElem = me.getFormFields(SCHEDULED_REPORTS_FORM);\r\n frmElem.EntityFilterList = recipients;\r\n frmElem.FrequencyDay = parseInt(parseInt(frmElem.FrequencyType) == 1 ? frmElem.FrequencyDayWeek : frmElem.FrequencyDayMonth);\r\n frmElem.ID = data.parentid;\r\n \r\n var options = {\r\n url: URL_COMMON + \"HandleScheduleCRUD\",\r\n params: {\r\n item: frmElem\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n returnFavoriteListByApplicationCode();\r\n returnScheduleListByUserID(result.data);\r\n notify.confirm(label[\"FavoriteSuccessfullyScheduled\"]);\r\n }\r\n }\r\n }\r\n\r\n function handleScheduleDeleteCRUD(data) {\r\n var options = {\r\n url: URL_COMMON + \"HandleScheduleDeleteCRUD\",\r\n params: {\r\n ID: data.parentid\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n returnScheduleListByUserID();\r\n returnScheduleByID({ parentid: 0 });\r\n returnFavoriteListByApplicationCode();\r\n }\r\n }\r\n }\r\n\r\n\r\n function changeFrequencyType(data) {\r\n switch (parseInt(data.value)) {\r\n case frequencyType.WEEKLY:\r\n $(\"[data-fldname=FrequencyDayWeek]\", SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", false);\r\n $(\"[data-fldname=FrequencyDayMonth]\", SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", true).val(1);\r\n $(FREQUENCY_DAY, SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", false);\r\n break;\r\n case frequencyType.MONTHLY:\r\n $(\"[data-fldname=FrequencyDayWeek]\", SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", true);\r\n $(\"[data-fldname=FrequencyDayMonth]\", SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", false);\r\n $(FREQUENCY_DAY, SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", false);\r\n break;\r\n default:\r\n $(FREQUENCY_DAY, SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", true);\r\n $(\"[data-fldname=FrequencyDayWeek],[data-fldname=FrequencyDayMonth]\", SCHEDULED_REPORTS_TAB).toggleClass(\"hidden\", true);\r\n break;\r\n }\r\n }\r\n\r\n\r\n function getPlaylistOwnerEntityOptions(data) {\r\n var ulElem = $('[data-filteroptions]', ADD_OWNER_BOX);\r\n if (+data.value === 0) {\r\n ulElem.html('');\r\n $(\"[data-tag=\" + tag.ADD_OWNER + \"]\").addClass(\"disabled\");\r\n return;\r\n }\r\n\r\n var options = {\r\n url: URL_LEARNING + \"GetPlaylistOwnerEntityOptions\",\r\n params: {\r\n entityType: +data.value,\r\n isEnroll: data.e.data('isenroll')\r\n },\r\n callback: afterData,\r\n ishtml: true,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n ulElem.html(result.data);\r\n me.CONTROL.setValidateContainer(ulElem);\r\n me.CONTROL.setAutoComplete(ulElem);\r\n me.CONTROL.setSelect(true, ulElem);\r\n me.CONTROL.setCheckBox(true, ulElem);\r\n me.setToolTip();\r\n $(\"[data-tag=\" + tag.ADD_OWNER + \"]\").removeClass(\"disabled\");\r\n }\r\n }\r\n }\r\n\r\n\r\n function getAdditionalFilterOptions(data) {\r\n var secondaryFilterList = data.e.closest('.box-content').find('[data-secondaryfilterlist]');\r\n switch (+data.value) {\r\n case entityFilterType.DR_OWNER:\r\n case entityFilterType.BOT_DIVISION:\r\n case entityFilterType.ONEPP_DIVISION:\r\n $('[data-secondaryfilterlist]').removeClass('hidden');\r\n $('[data-secondaryfilterlist] select').data('validate', true);\r\n me.CONTROL.setValidateContainer(secondaryFilterList);\r\n break;\r\n default:\r\n $('[data-secondaryfilterlist]').addClass('hidden');\r\n $('[data-secondaryfilterlist] select').data('validate', false);\r\n me.CONTROL.setValidateContainer(secondaryFilterList);\r\n break;\r\n }\r\n }\r\n\r\n\r\n function handleAddRecipient(data) {\r\n var parentBox = data.e.closest('.box');\r\n if (!me.CONTROL.Validate(parentBox)) {\r\n return;\r\n }\r\n var formFields = me.getFormFields(parentBox);\r\n formFields.SecondaryEntityID = +formFields.EntityFilterType === entityFilterType.DR_OWNER ||\r\n +formFields.EntityFilterType === entityFilterType.BOT_DIVISION ||\r\n +formFields.EntityFilterType === entityFilterType.ONEPP_DIVISION ? formFields.SecondaryEntityID : null;\r\n\r\n if (formFields.EntityType == entityTypes.CUSTOM_USER_GROUP) {\r\n formFields.CustomUserGroupName = $('[data-fldname=\"CustomUserGroupID\"] option:selected', parentBox).text();\r\n } else {\r\n formFields.Name = $('[data-fldname=\"ID\"]', parentBox).val();\r\n }\r\n formFields.SecondaryEntityName = $('[data-fldname=\"EntityFilterType\"] option:selected', parentBox).text()\r\n\r\n recipients.push(formFields);\r\n\r\n returnRecipientList();\r\n }\r\n\r\n\r\n function handleRemoveRecipient(data) {\r\n var idx = data.e.closest('.list-group-item').index()\r\n recipients.splice(idx, 1);\r\n\r\n returnRecipientList();\r\n }\r\n\r\n\r\n function returnRecipientList() {\r\n\r\n var options = {\r\n url: URL_COMMON + \"ReturnRecipientList\",\r\n params: {\r\n entityFilterList: recipients,\r\n },\r\n callback: afterData,\r\n ishtml: true,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n $(OWNER_LIST).html(result.data);\r\n me.CONTROL.setButton(true, $(OWNER_LIST));\r\n $('input[data-fldname=EntityType]', SCHEDULED_REPORTS_FORM).val('').data('value', null).data('initial', null);\r\n }\r\n }\r\n }\r\n\r\n /* ========================================================================\r\n * Partial Functions\r\n * ========================================================================\r\n */\r\n\r\n\r\n function returnFavoriteListByUserID(selectedID) {\r\n selectedID = selectedID || $(\".list-group-item.active\", FAVORITE_REPORTS).data(\"parentid\");\r\n\r\n var options = {\r\n url: URL_COMMON + \"ReturnFavoriteListByUserID\",\r\n params: {\r\n viewID: $(\".modal-dialog\", MODAL_ELEM).data(\"parentid\")\r\n },\r\n callback: afterData,\r\n isloader: true\r\n };\r\n\r\n me.AJAX.setAJAX(options);\r\n\r\n function afterData(result) {\r\n if (result.data) {\r\n $(FAVORITE_REPORTS).html(result.data.FAVORITE_REPORTS);\r\n me.CONTROL.setButton(true, FAVORITE_REPORTS);\r\n\r\n if (!$(FAVORITE_SELECT).data('noedit')) {\r\n $(\"option[value!='']\", FAVORITE_SELECT).remove();\r\n $.each(result.data.FAVORITE_SELECT, function () {\r\n $(FAVORITE_SELECT).append($(\"