{"version":3,"sources":["app.js"],"names":["require","r","e","n","t","o","i","f","c","u","a","Error","code","p","exports","call","length","@toolkit/backend","module","ajaxProxy_1","ProxyHttp","BinaryTransferObject","Dto","Api","Pdf","./src/backend/ajaxProxy","./src/backend/dtos","./src/backend/pdf","./src/backend/webapis","@toolkit/changeTracking","__export","m","hasOwnProperty","./src/changeTracking/decorators","./src/changeTracking/main","@toolkit/components","currencySelector_1","CurrencySelectorComponent","languageSelector_1","LanguageSelectorComponent","loadingIndicator_1","LoadingIndicator","multiLevelMenu_1","MultiLevelMenuComponent","progressIndicator_1","ProgressIndicatorComponent","industryMix_1","IndustryMixComponent","strategySelector_1","StrategySelectorComponent","stickyTable_1","StickyTableComponent","columnSelector_1","ColumnSelectorComponent","ColumnSelectorImplementation","customModel_1","CustomModal","customModalDeselect_1","CustomModalDeselect","./src/components/columnSelector","./src/components/currencySelector","./src/components/customModalDeselect","./src/components/customModel","./src/components/industryMix","./src/components/languageSelector","./src/components/loadingIndicator","./src/components/multiLevelMenu","./src/components/progressIndicator","./src/components/stickyTable","./src/components/strategySelector","@toolkit/directives","tab_1","tabs_1","TabsControl","numberFormat_1","localenumberFormat_1","trimFormat_1","TAB_DIRECTIVE","Tab","dateValueAccessor_1","checkedObjectAccessor_1","CUSTOM_VALUE_ACCESSORS","FormattedNumbersAccessor","FormattedLocaleNumbersAccessor","TrimAccessor","DateValueAccessor","CheckedValueAccessor","MultiCheckedValueAccessor","SelectValueAccessor","SelectOption","clickInput_1","CLICK_INPUT_DIRECTIVE","validation_1","VALIDATORS","scrollIntoView_1","ScrollDirective","pdfLink_1","PdfLinkDirective","autocomplete_1","AUTOCOMPLETE","AutocompleteComponent","slider_1","SLIDER","expander_1","ExpanderComponent","clickOutside_1","ClickOutsideDirective","tooltip_1","TOOLTIP","readOnlyInputs_1","READONLY_DIRECTIVES","toggle_1","Toggle","navigationChevron_1","NavigationChevronDirective","ExtHighcharts","tab_2","CHART_DIRECTIVES","concat","TabChartResizer","axisAlign_1","ALIGN_TO_AXIS","clickAndHold_1","ClickAndHoldDirective","./src/directives/autocomplete","./src/directives/axisAlign","./src/directives/checkedObjectAccessor","./src/directives/clickAndHold","./src/directives/clickInput","./src/directives/clickOutside","./src/directives/dateValueAccessor","./src/directives/expander","./src/directives/localenumberFormat","./src/directives/navigationChevron","./src/directives/numberFormat","./src/directives/pdfLink","./src/directives/readOnlyInputs","./src/directives/scrollIntoView","./src/directives/slider","./src/directives/tab","./src/directives/tabs","./src/directives/toggle","./src/directives/tooltip","./src/directives/trimFormat","./src/directives/validation","angular2-highcharts","@toolkit/interfaces","__extends","this","d","b","__","constructor","prototype","Object","create","ng2_toastr_1","ToastDefinition","_super","message","type","title","Toast","NavigationDirection","ng2-toastr","@toolkit/pipes","intPercentPipe_1","IntPercentPipe","yesNoPipe_1","YesNoPipe","casingPipes_1","CamelPipe","PascalPipe","uniqueIdPipe_1","UniqueIdPipe","safeDatePipe_1","SafeDatePipe","shortNumberPipe_1","ShortNumberPipe","enumKeysPipe_1","KeysPipe","thresholdPipe_1","ThresholdPipe","ordinalPipe_1","OrdinalPipe","localeOrdinalPipe_1","LocaleOrdinalPipe","isoDateOnlyPipe_1","IsoDateOnlyPipe","localeNumberPipe_1","LocaleNumberPipe","LocaleDatePipe_1","LocaleDatePipe","LocalePercentPipe_1","LocalePercentPipe","LocaleIntPercentPipe_1","LocaleIntPercentPipe","LocaleShortNumberPipe_1","LocaleShortNumberPipe","formatDatePipe_1","FormatDatePipe","CUSTOM_PIPES","./src/pipes/LocaleDatePipe","./src/pipes/LocaleIntPercentPipe","./src/pipes/LocalePercentPipe","./src/pipes/LocaleShortNumberPipe","./src/pipes/casingPipes","./src/pipes/enumKeysPipe","./src/pipes/formatDatePipe","./src/pipes/intPercentPipe","./src/pipes/isoDateOnlyPipe","./src/pipes/localeNumberPipe","./src/pipes/localeOrdinalPipe","./src/pipes/ordinalPipe","./src/pipes/safeDatePipe","./src/pipes/shortNumberPipe","./src/pipes/thresholdPipe","./src/pipes/uniqueIdPipe","./src/pipes/yesNoPipe","@toolkit/reactiveComponent","dynamicFormDirectiveProvider","provide","forms_1","ControlContainer","useExisting","core_1","forwardRef","QueryList","Rx","ReactiveComponent","_subscriptions","__viewInit","ReplaySubject","_viewInit","ngOnDestroy","forEach","s","unsubscribe","ngAfterViewInit","next","complete","defineProperty","get","enumerable","configurable","DynamicFormComponent","_form","path","@angular/core","@angular/forms","rxjs","@toolkit/services","userService_1","UserService","sharedDataService_1","SharedDataService","clientService_1","ClientService","runService_1","RunService","siteHeaderService_1","SiteHeaderService","configService_1","ConfigService","pageService_1","PageService","applicationInsightsService_1","ApplicationInsightsService","LanguageFormatterService_1","LanguageFormatterService","navigationService_1","NavigationService","referenceTranslationService_1","ReferenceTranslationService","translation_1","ExtendedTranslateService","TranslateService","WindowRef","window","INTERNAL_SHARED_SERVICES","TRANSLATIONS","READONLY_PROVIDER","./src/services/LanguageFormatterService","./src/services/applicationInsightsService","./src/services/clientService","./src/services/configService","./src/services/navigationService","./src/services/pageService","./src/services/referenceTranslationService","./src/services/runService","./src/services/sharedDataService","./src/services/siteHeaderService","./src/services/translation","./src/services/userService","1","global","factory","define","amd","moment","hooks","hookCallback","apply","arguments","isArray","input","Array","toString","isObject","isObjectEmpty","obj","k","isNumber","isDate","Date","map","arr","fn","res","push","hasOwnProp","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","some$1","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","isUndefined","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","config","updateInProgress","updateOffset","isMoment","absFloor","number","Math","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","compareArrays","array1","array2","dontConvert","len","min","lengthDiff","abs","diffs","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","key","slice","join","stack","deprecateSimple","name","deprecations","isFunction","Function","set","_config","_ordinalParseLenient","RegExp","_ordinalParse","source","mergeConfigs","parentConfig","childConfig","Locale","calendar","mom","now","output","_calendar","longDateFormat","_longDateFormat","formatUpper","toUpperCase","replace","invalidDate","_invalidDate","ordinal","_ordinal","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priority","priorities","getPrioritizedUnits","unitsObj","sort","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","max","substr","addFormatToken","token","padded","callback","func","formatTokenFunctions","localeData","removeFormattingTokens","match","makeFormatFunction","array","formattingTokens","formatMoment","expandFormat","formatFunctions","replaceLongDateFormatTokens","localFormattingTokens","lastIndex","test","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","addParseToken","tokens","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","year","month","UTC","getUTCDate","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","months","indexOf$1","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","date","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","isLeapYear","getIsLeapYear","createDate","y","h","M","ms","getFullYear","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseInt","parseIsoWeekday","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","weekdays","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","localeMeridiem","isLower","normalizeLocale","chooseLocale","names","j","split","loadLocale","oldLocale","locales","globalLocale","_abbr","getSetGlobalLocale","values","data","getLocale","defineLocale","baseConfig","abbr","parentLocale","localeFamilies","x","updateLocale","listLocales","keys$1","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","extendedIsoRegex","exec","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","w","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","curWeek","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","indexOf","_meridiem","meridiemFixWrap","hour","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","duration","years","quarters","quarter","weeks","days","seconds","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","matcher","matches","chunk","parts","chunkOffset","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","matchShortOffset","_changeInProgress","addSubtract","createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","other","toArray","isLocal","isUtcOffset","isUtc","ret","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","parseFloat","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","isAdding","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","delta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","toISOString","toDate","inspect","zone","prefix","suffix","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","isoWeekday","unix","toObject","toJSON","isValid$1","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","get$2","makeGetter","substituteTimeAgo","relativeTime$1","posNegDuration","thresholds","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","withSuffix","toISOString$1","abs$1","Y","D","total","asSeconds","some","fun","keys","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","ordinalParse","meridiemParse","prototypeMin","prototypeMax","lang","isoWeekYear","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","proto","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","proto$2","toIsoString","version","invalid","relativeTimeRounding","relativeTimeThreshold","2","dup","3","__decorate","decorators","target","desc","getOwnPropertyDescriptor","Reflect","decorate","__metadata","v","metadata","ClientsProxy","_http","search","term","encodeURIComponent","json","originalResponse","clientSearch","post","id","getDetails","Injectable","./ajaxProxy","4","CurrencyProxy","list","modelName","changeCurrency","5","ErrorProxy","error","6","NavigationType","7","http_1","ModulesProxy","modules","Http","@angular/http","8","PdfProxy","downloadReport_url","runId","pdfName","language","parameter","method","url","9","ProxyProxy","authenticateWindowsAuth","useWindowsAuth","login","logonDetails","proxy","proxyDetails","binary","body","binaryUpload","fwdUri","redirector_url","backendUri","binary_url","10","ReferenceTranslationProxy","getReferenceTranslationValues","culture","11","RunsProxy","createRun","countRuns","clientId","options","delete","updateRunInfo","info","put","updateRunJson","run","updateRunStage","execute","execution","createShare","manageShares","getFinalRunIds","policyYear","setRunStatus","isFinalized","setProspectStatus","isProspect","getLobsFromRun","getFinalRunsForYear","modelId","setMultipleRunAsFinal","finalRuns","deselectFinalRunWithLob","lob","getFullFinalRuns","getLobsFromFinalRun","updateFinalRunDetails","displayName","deleteFinalRun","createIntegrationRun_url","executeIntegrationRun_url","getIntegrationRunDetail_url","12","SettingsProxy","13","UserProxy","verify","find","14","rx_1","ProxyController_1","_proxy","_userService","makeRequest","request","_this","catch","status","unauthorized","reauthorized","take","flatMap","Observable","throw","binaryRequest","verb","ArrayBuffer","serialize","JSON","stringify","utf8","toByteArray","str","byteArray","charCodeAt","parse","String","fromCharCode","decodeURIComponent","binaries","contents","numToArr","num","lengthArr","Uint8Array","lengths","bytes","dataLength","totalLength","reduce","acc","item","buffer","../services/userService","./ProxyController","15","./ModelDescription","16","PdfContext","client","currencies","pdfIdentifier","ready","17","ModulesController_1","ClientsController_1","RunsController_1","UserController_1","CurrencyController_1","ErrorController_1","ReferenceTranslationController_1","SettingsController_1","WEBAPI_PROVIDERS","./ClientsController","./CurrencyController","./ErrorController","./ModulesController","./PdfController","./ReferenceTranslationController","./RunsController","./SettingsController","./UserController","18","TrackChanges","$$trackedObjects","assign","$key","ChangeTracker","targetProto","ngDoCheck","$$changeTracker","changes","main_1","Changes","original","interval","subj","Subject","sampleTime","subscribe","performChecks","./main","19","union_arrays","subject","_isChanged","ignoreTrackSet","changed","updateChanges","active","itemKey","left_1","right_1","allKeys","itemChanges_1","active_1","itemDiff","items","hasDifference","trackSet","directDiff_1","splitItem","className","methodName","findIndex","direct","directDiff","getTokens","filter","getAffectedDiffs","change","every","_doLogic","action","aggregation","results","isChangedAt","rpath","hits","commit","tokens_1","obj_1","ppath","patches","applyChange","lhs_1","rhs_1","splice","undo","tokens_2","obj_2","revertChange","lhs_2","rhs_2","isChanged","deep-diff","20","angular2_modal_1","backend_1","services_1","FinalRunModalDeselect","dialog","_runs","_sharedDataService","_translate","ngOnInit","currentRunId","getOption","getLobsForSelectedRun","close","deSelectFinalRun","flag","context","defaultResult","cancel","dismiss","beforeDismiss","beforeClose","lobs","currentLob","onLobSelectionChange","selectedLob","Component","selector","template","moduleId","DialogRef","../../../@toolkit/services","../../backend","./finalRunModalDeselect.html","angular2-modal","21","FinalRunModalSelect","_applicationInsightsService","currentYear","currentModelId","runName","policyYearArr","getPolicyYear","markRunAsFinal","arraySize","arrYears","existingFinalRuns","filteredExistingFinalRuns","copyExistingRuns","getFinalRunsforYear","changeExistingFinalRun","finalrun","isfinal","selectedRun","send","eventCategory","eventAction","onPolicyYearChange","directives","../services/applicationInsightsService","../services/configService","./finalRunModalSelect.html","./loadingIndicator","22","23","directives_1","ColumnSelectorHandle","reference","Directive","ElementRef","renderer","_toastr","minimumColumns","columnsChanged","EventEmitter","isOpen","configError","init","initTable","table","nativeElement","rerenderColumns","columnSelectorClicked","event","stopPropagation","rbClicked","column","visible","hasMinimumColumnCountError","count","showOrHideColumn","columns","rebuild","sticky","selectorColumns","hide","setElementClass","thEl","tdEls","emit","children","child","tagName","grandChild","greatgrandChild","this_1","attributes","attr","sc","innerHTML","this_2","classList","contains","Input","Number","Output","ContentChild","styles","Renderer","ToastsManager","Column","../../directives","../services/translation","./columnSelector.html","24","25","services","reactiveComponent_1","_api","_runService","preferredCurrencies","selectedCurrencyChange","_runModel","isReadonly","currencyInfo","currency","exchange","rates","selectedCurrency","originalCurrency","change_1","oldCode","oldRate","rate","newCode","newRate","currentModel","uiSignal","debugInfo","uiLabel","instant","currentSelectedCurrency","currencyConverted","preferred","currencySettings","preferredCodes","curr","activeRun","rm","../../reactiveComponent","../../services","../backend/webapis","./currencySelector.html","26","27","./customModalDeselect.html","28","29","./customModel.html","30","31","32","33","form","selectedIndustriesChange","showBaselineSector","baselineSectorChange","industryList","flatIntoIndustries","industryGroupList","validateIndustries","mg","perckeys","endsWith","sum","industry100","industryMissing","industries","uniq","duplicates","duplicateIndustry","calculateTotalIndustryPercent","percentage","defaultIndustryGroup","baselineSector","selectedIndustries","parentId","updateBaselineSector","remove","itemIndex","totalPercentage","remainingPercentage","onIndustryChange","newIndustryId","updatedIndustry","hist","reg","sortable","reverse","prevalentSectorId","previousBaselineSector","currentBaselineSector","ind","industryGroupArray","industryArray","industry","Boolean","viewProviders","NgForm","./industryMix.html","34","35","_translation","_userLanguage","use","languages","langs","userLanguage","setLocale","useMultilingualFeature","host","[hidden]","./languageSelector.html","36","vex_1","modal","translate","counter","_this_1","label","signal","observable","information","do","err","alert","okBtn","open","Modal","fireAndForget","angular2-modal/plugins/vex","37","38","router_1","_clientService","_pageService","_navigationService","_router","pages","homeUrl","ngAfterContentInit","runSnapshot","getSnapshot","events","NavigationEnd","currentClientChanged","pageStateChanged","runPages","calculateWidth","itemList","pageItem","getLongestPageTitleLength","navigateTo","navigateByUrl","makeChildrenVisible","pagetItem","currentPageItemVisible","makeMenuInvisible","currentPageItem","level","displayTitle","ROUTER_DIRECTIVES","Router","./multiLevelMenu.html","@angular/router","39","40","explicitRun","_explicitRun","buildRunPages","canNavigate","./progressIndicator.html","41","StickyHandle","QuickStickyComponent","element","scrolling","headerRefs","notifyOnChanges","recalculate","currentWidth","lastChild","clientWidth","lastWidth","ngOnChanges","sync","owner","width","syncedWidth","scroll","scrollHandle","scrollLeft","scrollWidth","debounceTime","setTimeout","calculated","maxWidth","stickyWidth","setElementStyle","onResize","ViewChild","ContentChildren","descendants","HostListener","42","43","_user","_modal","maximumStrategies","minimumStrategies","collapse","strategiesChanged","strategySelected","strategyAdded","strategyRemoved","strategyCloned","height","document","documentElement","clientHeight","innerHeight","valid","newStrategyInput","getNewStrategyName","strategyId","strategies","selectStrategy","structure","beforeRemove","retResult","confirm","cancelBtn","then","result","deletedStructure","selected","strategy","canAdd","currentUserInfo","role","areNamesUnique","option","optionNames","optionNames_1","state_1","trim","select","srcElClass","srcElement","stategy","formValidCheck","isChangedDueToAdd","read","TemplateRef","./strategySelector.html","44","throttle","resultsChange","autoClear","busy","_selectionIndex","enterPressed","dataSource","of","concatAll","handleSelection","move","changeSelection","activate","clear","old","$selected","focus","inputRef","./clickOutside","45","measure","chartHandler","native","getBoundingClientRect","elements","querySelectorAll","boxes","xAxis","yAxis","log","left","top","angular2_highcharts_1","AlignToXAxis","redraw","update","ChartComponent","HostBinding","AlignToYAxis","46","equalityByKey","right","keyName","equality","kn","sorter_1","__param","paramIndex","decorator","CHECKED_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","multi","_renderer","_elementRef","onChange","onTouched","writeValue","setElementProperty","objectValue","clicked","checked","registerOnChange","registerOnTouched","providers","MULTICHECKED_VALUE_ACCESSOR","contained","existing","arrayValue","without","SELECT_VALUE_ACCESSOR","cnt","$$options","selection","register","unregister","_element","_select","_other","Optional","Host","NgSelectOption","47","mouseUp","mouseDown","onMouseUp","onMouseDown","setup","subscription","skip","takeUntil","48","BlurJacker","parent","blurred","modelChange","invokeElementMethod","(blur)","(click)","Inject","ClickInputDirective","noop","opened","_initialized","_hasFocus","text","_value","force","_lastVm","viewModel","accessor_1","valueAccessor","transformation","displayPropertyName","formatToString","_placeholder","forceInvalid","blurJacker","show","disabled","_forceInvalid","NgModel","[class.invalid]","49","clickOutside","localClick","globalClick","(document:click)","50","pipes_1","DATE_VALUE_ACCESSOR","_","datePipe","real","isHtml5Supported","compatibility","instance","writeAsString","setDisabledState","isDisabled","../../pipes","moment/moment","51","initialized","isFloaty","clickable","wasOpen","headerClick","52","precision","round_number","decimals","common_1","CUSTOM_VALUE_ACCESSOR","Provider","_NUMBER_FORMAT_REGEXP","_NUMBER_MATCH_REGEXP","_numberHelper","parseFormat","digits","minInt","minFraction","maxFraction","_parsedFormat","pipe","DecimalPipe","PercentPipe","toFixed","numbers","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","raw","displayText","transform","removeFormatting","parseToNumber","formatDisplayValue","localeNumber","inputType","getFormattedNumber","parentElement","lastElementChild","innerHtml","defaultValue","../pipes/intPercentPipe","../services/LanguageFormatterService","@angular/common","53","interfaces_1","router","activated","headerService","navigation","currentIndex","current","snapshot","full","runPage","navigationLevel","identifier","rp","pageList","reeval","mode","forward","backward","onClick","navigate","originalIndex","relativeTo","[class.quick-button]","ActivatedRoute","../../interfaces","54","55","has","webapis_1","preventDefault","beforeGenerate","goToPdfUrl","encode","currentLang","[class.pdf-button]","[title]","56","OpaqueToken","ReadOnlyInputsDirective","provider","[disabled]","ReadOnlyElementsDirective","addEventListener","alwaysEnabled","alwaysDisabled","alwaysDisabled2","stopImmediatePropagation","[class.disabled]","ReadOnlyCustomComponentsDirective","component","ReadOnlySliderDirective","SliderComponent","ReadOnlyClickInputDirective","./clickInput","./slider","57","platform_browser_1","handleClick","getElementById","scrollIntoViewIfNeeded","scrollIntoView","delay","DOCUMENT","Document","@angular/platform-browser","58","SliderAccessor","sanitizer","relativeValue","_sampler","_held","_lastKnownWidth","_stops","_max","_step","_min","valueChanged","calculateValue","hold","button","$$container","prev","getSizePixel","calculateView","release","wasHeld","mouseEventToRelative","$$viewPosition","bypassSecurityTrustStyle","getEventPixel","getGlobalOffsetPixel","jump","snap","percent","relativeValueReal","stepReal","stepExact","calculateStops","stops","el","offsetLeft","offsetParent","offsetWidth","pageX","[attr.disabled]","DomSanitizationService","VerticalSliderComponent","offsetTop","offsetHeight","pageY","_slider","changing","(mouseup)","(valueChanged)","59","_active","activating","appearing","_invisible","tab","chartComponent","chart","reflow","60","tabSelection","initialised","activeTabs","tabs","first","invisible","selectTab","_activeTab","all","currentIndex_1","./tab","61","INTERACTIVE_TAGS","toggle","currentTarget","checkEventTarget","toogleFor","final","style","backgroundColor","MouseEvent","62","defaultSettings","ratio","topSpacing","bottomSpacing","TooltipDirective","container","resolver","resolveComponent","TooltipContainer","stick","content","_stuck","SomebodyClicked","ref","_visible","_reference","createComponent","settings","unstick","destroy","(mouseenter)","(mouseleave)","(window:scroll)","[style.cursor]","ViewContainerRef","ComponentResolver","styleObj","opacity","textContent","createEmbeddedView","pxIfNotNull","hostInfo","viewPort","tooltipInfo","area","tooltipCalculated","sqrt","bottom","z-index","getPositionValues","globalHeight","globalWidth","parent_1","63","trimmed","(input)","64","getNumber","GenericValidatorDirective","validate","NG_VALIDATORS","ConditionalMinMaxValidator","control","updateValueAndValidity","validateMinMax","validationParams","minFail","maxFail","isRequired","hasValue","requiredFail","ConditionalRequiredValidator","MinValidatorDirective","minValue","exclusiveMinValue","isExclusive","minExclusive","MaxValidatorDirective","maxValue","exclusiveMaxValue","maxExclusive","MaxDateValidatorDirective","MinDateValidatorDirective","NotBlankValidatorDirective","not-blank","65","Translation","_date","DatePipe","opts","Pipe","66","translation","pattern","currentLocale","Intl","NumberFormat","getFractionDigits","fractionDigits","67","68","decimal","currentValue","69","lastMatch","letter","g0","g1","g2","70","enumMember","71","72","_percent","73","74","75","getSuffix","currentLanguage","last","specialLast","76","77","78","79","origValue","match_1","lowerBound","upperBound","default","80","WeakMap","81","cdr","innerPipe","TranslatePipe","pure","ChangeDetectorRef","82","languageNumberDecoratores","setupLanguageNumberDecoratores","dispalyValue","currentlocale","getPlatformSupportedLanguages","getFormattedLangugageCode","langCode","83","_clients","_siteHeaderService","_configService","appInsights","instrumentationKey","configImpl","analyticsSendInput","isRunIdRequired","sendImpl","paramsObj","eventLabel","ClientID","currentClient","ClientName","UserUpn","username","UserDisplayName","fullName","RunId","addtionalFields","trackEvent","./clientService","./configService","./siteHeaderService","./userService","84","runCountChanged","_currentClient","loadById","obs","85","_settingsApi","currentModelChanged","models","_subdomain","subdomain","_currentModel","86","_location","injector","_errorProxy","_headerServiceTEMPORARY","navigationChanged","currentRun","triggerNavigationAction","navigationAction","stage","hideOverlay","persist","success","toPromise","persistAndProcess","processUrl","persistAndExecute","trigger","param","triggerParameter","executeTrigger","params","inProgress","op","backUrl","currentStage","getStageIdentifier","prevInstruction","nextInstruction","runServiceInteraction","prepare","Promise","resolve","updateStage","forwardNextStage_1","onForwardNavigation","runServicePromise","moveToTarget","loadingScreenItems","replaceState","originalException","ExceptionHandler","exceptionToString","canNavigateTo","runModel","stageData","history","startsWith","isUnordered","unorderedChildren","targetIdentifier","customCanNavigateCheck","customRuleCheck","toastResource","ix","state_2","ident","previous","alternativeIdentifier","h_index","description","$$module","getCurrentPath","Location","Injector","./runService","./translation","87","urlAfterRedirects","pageUrls","buildPageLinks","populateNavigatablePages","pageLinks","canParentNavigatable","pl","activeRunId","currentPath","pagelink","displayResourceKey","ancestorOfCurrent","./navigationService","88","refDataTranslation","setRefDataTranslation","89","_runInfoChanged","_persisted","_activeRun","_activeRunObs","runInfoChanged","persisted","lastSnapshot","cancelled","NavigationStart","load","NavigationCancel","share","setSnapshot","stageOverride","noSignal","processAction","runModelData","processedModel","runOptions","triggerNo","triggerParam","90","setOption","91","previousClicked","nextClicked","_preset","combineLatest","preset","setTo","_index","92","mergeDeep","_b","defaultTranslation","collect","runPageDefaults","i2","ix2","CURRENT_MODEL","TITLE","RUN_PAGES","ng2_translate_1","TranslateLoader","ModelAwareLoader","getTranslation","main","fromPromise","System","import","supportedLanguages","fromModel","fromPlatform","referenceTranslationProxy","currentLoader","missingTranslationHandler","languageFormatterService","refTranslationService","getLangs","reloadLang","modelLanguages","known","languagesSnapshot","setDefaultLang","userLang","navigator","browserLang_1","userLanguageSnapshot","fullLanguage","selectedLocale","MissingTranslationHandler","useClass","PLATFORM_PIPES","useValue","./LanguageFormatterService","./referenceTranslationService","ng2-translate","93","userInfo","BehaviorSubject","loggedOn","determined","_onUnauthorized","onUnauthorized","throttleTime","_userInfo","details","94","loginPage_1","LoginPage","noRolePage_1","NoRolePage","HasRolesGuard","canActivate","route","state","noRole","../@toolkit/services","./loginPage","./noRolePage","95","core_2","AuthProvider","_cookies","_window","logout","manuallyLoggedOut","domain","location","hostname","windowsAuthentication","passwordAuthentication","refreshUser","CookieService","../@toolkit/backend","angular2-cookie/core","96","97","authProvider_1","_auth","_activatedRoute","loginModel","userName","password","_from","email","contactEmail","logon","failed","../@toolkit/directives","../@toolkit/reactiveComponent","./authProvider","./loginPage.html","98","99","./noRolePage.html","100","101","ReactiveComponent_1","siteHeader_1","components_1","clientSearch_1","AppComponent","viewContainer","_titleService","isMainHeader","defaultViewContainer","selectModel","routerState","setTitle","oneTrustCookieConsentNotice","dataDomainScript","scriptTag","createElement","src","charset","setAttribute","appendChild","scriptFunctionTag","oneTrustCookieDataDomainScript","SiteHeaderComponent","SiteFooterComponent","ClientSearch","Title","./@toolkit/ReactiveComponent","./@toolkit/components","./@toolkit/services","./app.html","./models/clientSearch","./siteHeader","102","platform_browser_dynamic_1","app_1","core_3","errorHandler_1","enableProdMode","getJSON","xhr","XMLHttpRequest","responseType","onload","response","loaded_1","loadScript","cb","substring","script","async","onerror","getElementsByTagName","cache","reject","modelsettings","appName","toastOptions","autoDismiss","MODULE_PROVIDER","RouteGenerator","APP_ROUTER_PROVIDERS","provideRouter","routes","enableTracing","bootstrap","HTTP_PROVIDERS","ANGULAR2_COOKIE_PROVIDERS","MODAL_BROWSER_PROVIDERS","VEX_MODAL_PROVIDERS","ToastOptions","disableDeprecatedForms","provideForms","PlatformErrorHandler","GUARDS","./@toolkit/backend","./@toolkit/pipes","./account/authProvider","./app","./errorHandler","./models/main","@angular/platform-browser-dynamic","angular2-modal/platform-browser","103","createDynamicChild","position","resolvedDependencies","ReflectiveInjector","fromResolvedProviders","parentInjector","CreateDynamicChildDirective","_viewContainer","templateRef","componentResolver","componentType","cf","Type","104","exception","stackTrace","reason","105","rootForm","interfaces","services_2","ActiveRunPage","_headerService","_navigation","ModalState","ProgressionGuard","_service","modalOpen","Closed","canDeactivate","definition","haltNavigationCheckImpl","haltNavigation","hn","toast","stop","formValidationCheckImpl","zip","changeTracker","applyChanges","skipWhile","Open","Rejected","promise","addButton","cmp","rets","JumpGuard","runs","toastr","navigateAway","../@toolkit/interfaces","106","107","searchTerm","showClientSelector","displaySelector","_autoComplete","./clientSearch.html","108","109","LoadingStepComponent","_route","_page","page","isResource","itemLabel","done","milisecDelay","timer","BlankTransitionComponent","./loadingStep.html","110","srcs","srcUrl","indexComponents","promises","transitionPages","ModelPages","transformRoutes","rps","activeRun_1","terminal","redirectTo","ModuleLandingComponent","RunsPage","AccountPages","notFoundPage_1","NotFoundPage","RouterOutletComponet","gaInit","BlankComponent","DummyComponent","../@toolkit/ReactiveComponent","../account/accountPages","../notFoundPage","./activeRun","./modelPages","111","newRun_1","NewRunPage","runsPage_1","runList_1","RunListPage","loadingStep_1","./loadingStep","./newRun","./runList","./runsPage","112","113","dynamicChild_1","_users","referenceTranslationService","componentOptions","editedOptions","camelCase","editedRun","clientDetails","userAssignedClientDetails","_requiredFields","requiredClientDetails","fields","fieldName","runOptionsSrcUrl","runOptionsType","originalDetails","expander","tooltipKey","requiredFields","../@toolkit/src/pipes/casingPipes","../dynamicChild","./newRun.html","114","115","CT2","FinalRunModalSelect_1","FinalRunModalDeselect_1","LIMITSIZE_COOKIENAME","_resolver","theme","isDemoClient","isUnmarkFinalRunSelected","sharingOptions","searchUser","descending","filterValues","_userFilter","dateFilter","limitValue","_limit","_underlyingRuns","applyFilters","opt","hasOptions","runOptionsListDisplaySrcUrl","_component","runOptionsView","demoClient","useMultipleFinalRun","currentUser","modell","onLangChange","prevlimitSize","limitSize","isMultipleFinalRuns","demoClientIds","ok","removed","initial","newName","multipleFinalRun","DialogPresetBuilder","saveDate","userDisplayName","isFinalRunSelected","refreshData","finalCoverages","deselectFinalRun","commitSaveDateChanges","filteredRuns","mapFinalRunsToFilteredRuns","runId_1","runIds","updateRunStatus","prospect","gaMsg","save","runInfo","sharedWith","changeRow","row","addShare","user","fresh","shareDate","addedUsers","removedUsers","userSearchTerm","deleting","removeShare","hideSharing","saveSharing","id_1","itemTemplate","_sortBy","_searchExp","exp","clearFilters","userFilter","searchExp","sortBy","pipeline","userFilter_1","me_1","creatorUserName","from_1","to_1","creation","exp_1","nullsafeToLower_1","sort_1","shown","setInterval","checkIfFinalRun","currentCoverages","checkRunIsFinal","../@toolkit/changeTracking","../@toolkit/components","../@toolkit/src/components/FinalRunModalDeselect","../@toolkit/src/components/FinalRunModalSelect","./runList.html","116","117","DIRECTIVES","_toasts","tabsState","newRun","runCount","dynamicPages","managementPages","displayResourceName","tabName","./clientSearch","./runsPage.html","118","119","./@toolkit/reactiveComponent","./notFoundPage.html","120","121","122","findMode","NAVIGATION_MODE","start","MAIN_MODE","components_2","header","isNavHeader","showMLMenu","canSearch","toggleMultiLevelMenu","verification","attemptAuth","showMenu","optionalUiFeatures","navigationMenu","redirectToLoginPage","remember","instruction","pathname","includes","logoutClicked","logonClicked","closeMenu","currentRunInfo","showCookieConsent","./siteFooter.html","./siteHeader.html"],"mappings":"AAAAA,QAAQ,WAAY,QAASC,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAE,kBAAmBR,UAASA,OAAQ,KAAIO,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGG,EAAE,MAAOA,GAAEH,GAAE,EAAI,IAAII,GAAE,GAAIC,OAAM,uBAAuBL,EAAE,IAAK,MAAMI,GAAEE,KAAK,mBAAmBF,EAAE,GAAIG,GAAEV,EAAEG,IAAIQ,WAAYZ,GAAEI,GAAG,GAAGS,KAAKF,EAAEC,QAAQ,SAASb,GAAoB,MAAOI,GAAlBH,EAAEI,GAAG,GAAGL,IAAeA,IAAIY,EAAEA,EAAEC,QAAQb,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGQ,QAAQ,IAAI,GAAIL,GAAE,kBAAmBT,UAASA,QAAQM,EAAE,EAAEA,EAAEF,EAAEY,OAAOV,IAAID,EAAED,EAAEE,GAAI,OAAOD,GAAE,MAAOJ,OAAOgB,oBAAoB,SAASjB,EAAQkB,EAAOJ,GACjgB,YACA,IAAIK,GAAcnB,EAAQ,0BAC1Bc,GAAQM,UAAYD,EAAYC,UAChCN,EAAQO,qBAAuBF,EAAYE,oBAC3C,IAAIC,GAAMtB,EAAQ,qBAClBc,GAAQQ,IAAMA,CACd,IAAIC,GAAMvB,EAAQ,wBAClBc,GAAQS,IAAMA,CACd,IAAIC,GAAMxB,EAAQ,oBAClBc,GAAQU,IAAMA,IAIXC,0BAA0B,GAAGC,qBAAqB,GAAGC,oBAAoB,GAAGC,wBAAwB,KAAKC,2BAA2B,SAAS7B,EAAQkB,EAAOJ,GAC/J,YACA,SAASgB,GAASC,GACd,IAAK,GAAIlB,KAAKkB,GAAQjB,EAAQkB,eAAenB,KAAIC,EAAQD,GAAKkB,EAAElB,IAEpEiB,EAAS9B,EAAQ,oCACjB8B,EAAS9B,EAAQ,gCAIdiC,kCAAkC,GAAGC,4BAA4B,KAAKC,uBAAuB,SAASnC,EAAQkB,EAAOJ,GACxH,YACA,IAAIsB,GAAqBpC,EAAQ,oCACjCc,GAAQuB,0BAA4BD,EAAmBC,yBACvD,IAAIC,GAAqBtC,EAAQ,oCACjCc,GAAQyB,0BAA4BD,EAAmBC,yBACvD,IAAIC,GAAqBxC,EAAQ,oCACjCc,GAAQ2B,iBAAmBD,EAAmBC,gBAC9C,IAAIC,GAAmB1C,EAAQ,kCAC/Bc,GAAQ6B,wBAA0BD,EAAiBC,uBACnD,IAAIC,GAAsB5C,EAAQ,qCAClCc,GAAQ+B,2BAA6BD,EAAoBC,0BACzD,IAAIC,GAAgB9C,EAAQ,+BAC5Bc,GAAQiC,qBAAuBD,EAAcC,oBAC7C,IAAIC,GAAqBhD,EAAQ,oCACjCc,GAAQmC,0BAA4BD,EAAmBC,yBACvD,IAAIC,GAAgBlD,EAAQ,+BAC5Bc,GAAQqC,qBAAuBD,EAAcC,oBAC7C,IAAIC,GAAmBpD,EAAQ,kCAC/Bc,GAAQuC,wBAA0BD,EAAiBC,wBACnDvC,EAAQwC,6BAA+BF,EAAiBE,4BACxD,IAAIC,GAAgBvD,EAAQ,+BAC5Bc,GAAQ0C,YAAcD,EAAcC,WACpC,IAAIC,GAAwBzD,EAAQ,uCACpCc,GAAQ4C,oBAAsBD,EAAsBC,sBAIjDC,kCAAkC,GAAGC,oCAAoC,GAAGC,uCAAuC,GAAGC,+BAA+B,GAAGC,+BAA+B,GAAGC,oCAAoC,GAAGC,oCAAoC,GAAGC,kCAAkC,GAAGC,qCAAqC,GAAGC,+BAA+B,GAAGC,oCAAoC,KAAKC,uBAAuB,SAAStE,EAAQkB,EAAOJ,GACld,YACA,IAAIyD,GAAQvE,EAAQ,wBAChBwE,EAASxE,EAAQ,wBACrBc,GAAQ2D,YAAcD,EAAOC,WAC7B,IAAIC,GAAiB1E,EAAQ,iCACzB2E,EAAuB3E,EAAQ,uCAC/B4E,EAAe5E,EAAQ,8BAC3Bc,GAAQ+D,eAAiBL,EAAOC,YAAaF,EAAMO,IACnD,IAAIC,GAAsB/E,EAAQ,sCAC9BgF,EAA0BhF,EAAQ,yCACtCc,GAAQmE,wBAA0BP,EAAeQ,yBAA0BP,EAAqBQ,+BAAgCP,EAAaQ,aAAcL,EAAoBM,kBAAmBL,EAAwBM,qBAAsBN,EAAwBO,0BAA2BP,EAAwBQ,oBAAqBR,EAAwBS,aACxW,IAAIC,GAAe1F,EAAQ,8BAC3Bc,GAAQ6E,sBAAwBD,EAAaC,qBAC7C,IAAIC,GAAe5F,EAAQ,8BAC3Bc,GAAQ+E,WAAaD,EAAaC,UAClC,IAAIC,GAAmB9F,EAAQ,kCAC/Bc,GAAQiF,gBAAkBD,EAAiBC,eAC3C,IAAIC,GAAYhG,EAAQ,2BACxBc,GAAQmF,iBAAmBD,EAAUC,gBACrC,IAAIC,GAAiBlG,EAAQ,gCAC7Bc,GAAQqF,aAAeD,EAAeC,aACtCrF,EAAQsF,sBAAwBF,EAAeE,qBAC/C,IAAIC,GAAWrG,EAAQ,0BACvBc,GAAQwF,OAASD,EAASC,MAC1B,IAAIC,GAAavG,EAAQ,4BACzBc,GAAQ0F,kBAAoBD,EAAWC,iBACvC,IAAIC,GAAiBzG,EAAQ,gCAC7Bc,GAAQ4F,sBAAwBD,EAAeC,qBAC/C,IAAIC,GAAY3G,EAAQ,2BACxBc,GAAQ8F,QAAUD,EAAUC,OAC5B,IAAIC,GAAmB7G,EAAQ,kCAC/Bc,GAAQgG,oBAAsBD,EAAiBC,mBAC/C,IAAIC,GAAW/G,EAAQ,0BACvBc,GAAQkG,OAASD,EAASC,MAC1B,IAAIC,GAAsBjH,EAAQ,qCAClCc,GAAQoG,2BAA6BD,EAAoBC,0BACzD,IAAIC,GAAgBnH,EAAQ,uBACxBoH,EAAQpH,EAAQ,uBACpBc,GAAQuG,iBAAmBF,EAAcE,iBAAiBC,QAAQF,EAAMG,iBACxE,IAAIC,GAAcxH,EAAQ,6BAC1Bc,GAAQ2G,cAAgBD,EAAYC,aACpC,IAAIC,GAAiB1H,EAAQ,gCAC7Bc,GAAQ6G,sBAAwBD,EAAeC,wBAI5CC,gCAAgC,GAAGC,6BAA6B,GAAGC,yCAAyC,GAAGC,gCAAgC,GAAGC,8BAA8B,GAAGC,gCAAgC,GAAGC,qCAAqC,GAAGC,4BAA4B,GAAGC,sCAAsC,GAAGC,qCAAqC,GAAGC,gCAAgC,GAAGC,2BAA2B,GAAGC,kCAAkC,GAAGC,kCAAkC,GAAGC,0BAA0B,GAAGC,uBAAuB,GAAGC,wBAAwB,GAAGC,0BAA0B,GAAGC,2BAA2B,GAAGC,8BAA8B,GAAGC,8BAA8B,GAAGC,sBAAsB,wBAAwBC,uBAAuB,SAASlJ,EAAQkB,EAAOJ,GACxyB,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/EK,EAAe5J,EAAQ,cACvB6J,EAAmB,SAAUC,GAE7B,QAASD,GAAgBE,EAASC,EAAMC,GACpCH,EAAO/I,KAAKqI,KAAMY,GAAQ,OAAQD,EAASE,GAE/C,MAJAd,GAAUU,EAAiBC,GAIpBD,GACTD,EAAaM,MACfpJ,GAAQ+I,gBAAkBA,EAC1B,SAAWM,GACPA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA8B,UAAK,GAAK,WAC5DA,EAAoBA,EAA8B,SAAI,KAAO,YAC9DrJ,EAAQqJ,sBAAwBrJ,EAAQqJ,wBACjBrJ,GAAQqJ,sBAI/BC,aAAa,eAAeC,kBAAkB,SAASrK,EAAQkB,EAAOJ,GACzE,YACA,IAAIwJ,GAAmBtK,EAAQ,6BAC/Bc,GAAQyJ,eAAiBD,EAAiBC,cAC1C,IAAIC,GAAcxK,EAAQ,wBAC1Bc,GAAQ2J,UAAYD,EAAYC,SAChC,IAAIC,GAAgB1K,EAAQ,0BAC5Bc,GAAQ6J,UAAYD,EAAcC,UAClC7J,EAAQ8J,WAAaF,EAAcE,UACnC,IAAIC,GAAiB7K,EAAQ,2BAC7Bc,GAAQgK,aAAeD,EAAeC,YACtC,IAAIC,GAAiB/K,EAAQ,2BAC7Bc,GAAQkK,aAAeD,EAAeC,YACtC,IAAIC,GAAoBjL,EAAQ,8BAChCc,GAAQoK,gBAAkBD,EAAkBC,eAC5C,IAAIC,GAAiBnL,EAAQ,2BAC7Bc,GAAQsK,SAAWD,EAAeC,QAClC,IAAIC,GAAkBrL,EAAQ,4BAC9Bc,GAAQwK,cAAgBD,EAAgBC,aACxC,IAAIC,GAAgBvL,EAAQ,0BAC5Bc,GAAQ0K,YAAcD,EAAcC,WACpC,IAAIC,GAAsBzL,EAAQ,gCAClCc,GAAQ4K,kBAAoBD,EAAoBC,iBAChD,IAAIC,GAAoB3L,EAAQ,8BAChCc,GAAQ8K,gBAAkBD,EAAkBC,eAC5C,IAAIC,GAAqB7L,EAAQ,+BACjCc,GAAQgL,iBAAmBD,EAAmBC,gBAC9C,IAAIC,GAAmB/L,EAAQ,6BAC/Bc,GAAQkL,eAAiBD,EAAiBC,cAC1C,IAAIC,GAAsBjM,EAAQ,gCAClCc,GAAQoL,kBAAoBD,EAAoBC,iBAChD,IAAIC,GAAyBnM,EAAQ,mCACrCc,GAAQsL,qBAAuBD,EAAuBC,oBACtD,IAAIC,GAA0BrM,EAAQ,oCACtCc,GAAQwL,sBAAwBD,EAAwBC,qBACxD,IAAIC,GAAmBvM,EAAQ,6BAC/Bc,GAAQ0L,eAAiBD,EAAiBC,eAC1C1L,EAAQ2L,cAAgBnC,EAAiBC,eAAgBC,EAAYC,UAAWC,EAAcE,WAAYF,EAAcC,UAAWE,EAAeC,aAAcC,EAAeC,aAAcC,EAAkBC,gBAAiBC,EAAeC,SAAUG,EAAcC,YAAaH,EAAgBC,cAAeK,EAAkBC,gBAAiBC,EAAmBC,iBAAkBC,EAAiBC,eAAgBC,EAAoBC,kBAAmBC,EAAuBC,qBAAsBC,EAAwBC,sBAAuBb,EAAoBC,kBAAmBa,EAAiBC,kBAIplBE,6BAA6B,GAAGC,mCAAmC,GAAGC,gCAAgC,GAAGC,oCAAoC,GAAGC,0BAA0B,GAAGC,2BAA2B,GAAGC,6BAA6B,GAAGC,6BAA6B,GAAGC,8BAA8B,GAAGC,+BAA+B,GAAGC,gCAAgC,GAAGC,0BAA0B,GAAGC,2BAA2B,GAAGC,8BAA8B,GAAGC,4BAA4B,GAAGC,2BAA2B,GAAGC,wBAAwB,KAAKC,8BAA8B,SAAS3N,EAAQkB,EAAOJ,GAChmB,YAkCA,SAAS8M,GAA6B5D,GAClC,OACI6D,QAASC,EAAQC,iBACjBC,YAAaC,EAAOC,WAAWlE,IApCvC,GAAIb,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/E0E,EAASjO,EAAQ,gBACrBc,GAAQqN,UAAYF,EAAOE,SAC3B,IAAIL,GAAU9N,EAAQ,kBAClBoO,EAAKpO,EAAQ,QACbqO,EAAqB,WACrB,QAASA,KACLjF,KAAKkF,kBACLlF,KAAKmF,WAAa,GAAIH,GAAGI,cAAc,GACvCpF,KAAKqF,UAAYrF,KAAKmF,WAiB1B,MAfAF,GAAkB5E,UAAUiF,YAAc,WAClCtF,KAAKkF,gBACLlF,KAAKkF,eAAeK,QAAQ,SAAUC,GAAK,MAAOA,GAAEC,iBAE5DR,EAAkB5E,UAAUqF,gBAAkB,WAC1C1F,KAAKmF,WAAWQ,KAAK,MACrB3F,KAAKmF,WAAWS,YAEpBtF,OAAOuF,eAAeZ,EAAkB5E,UAAW,aAC/CyF,IAAK,WACD,MAAO9F,OAEX+F,YAAY,EACZC,cAAc,IAEXf,IAEXvN,GAAQuN,kBAAoBA,EAO5BvN,EAAQ8M,6BAA+BA,CACvC,IAAIyB,GAAwB,SAAUvF,GAElC,QAASuF,GAAqBC,GAC1BxF,EAAO/I,KAAKqI,MACZA,KAAKkG,MAAQA,EACblG,KAAKkF,kBACLlF,KAAKmF,WAAa,GAAIH,GAAGI,cAAc,GACvCpF,KAAKqF,UAAYrF,KAAKmF,WA2B1B,MAjCApF,GAAUkG,EAAsBvF,GAQhCJ,OAAOuF,eAAeI,EAAqB5F,UAAW,iBAClDyF,IAAK,WAAc,MAAO9F,MAAKkG,OAC/BH,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAeI,EAAqB5F,UAAW,QAClDyF,IAAK,WAAc,MAAO9F,MAAKkG,MAAMC,MACrCJ,YAAY,EACZC,cAAc,IAElBC,EAAqB5F,UAAUiF,YAAc,WACrCtF,KAAKkF,gBACLlF,KAAKkF,eAAeK,QAAQ,SAAUC,GAAK,MAAOA,GAAEC,iBAE5DQ,EAAqB5F,UAAUqF,gBAAkB,WAC7C1F,KAAKmF,WAAWQ,KAAK,MACrB3F,KAAKmF,WAAWS,YAEpBtF,OAAOuF,eAAeI,EAAqB5F,UAAW,aAClDyF,IAAK,WACD,MAAO9F,OAEX+F,YAAY,EACZC,cAAc,IAEXC,GACTvB,EAAQC,iBACVjN,GAAQuO,qBAAuBA,IAI5BG,gBAAgB,gBAAgBC,iBAAiB,iBAAiBC,KAAO,SAASC,qBAAqB,SAAS3P,EAAQkB,EAAOJ,GAClI,YACA,IAAI8O,GAAgB5P,EAAQ,6BAC5Bc,GAAQ+O,YAAcD,EAAcC,WACpC,IAAIC,GAAsB9P,EAAQ,mCAClCc,GAAQiP,kBAAoBD,EAAoBC,iBAChD,IAAIC,GAAkBhQ,EAAQ,+BAC9Bc,GAAQmP,cAAgBD,EAAgBC,aACxC,IAAIC,GAAelQ,EAAQ,4BAC3Bc,GAAQqP,WAAaD,EAAaC,UAClC,IAAIC,GAAsBpQ,EAAQ,mCAClCc,GAAQuP,kBAAoBD,EAAoBC,iBAChD,IAAIC,GAAkBtQ,EAAQ,+BAC9Bc,GAAQyP,cAAgBD,EAAgBC,aACxC,IAAIC,GAAgBxQ,EAAQ,6BAC5Bc,GAAQ2P,YAAcD,EAAcC,WACpC,IAAIC,GAA+B1Q,EAAQ,4CAC3Cc,GAAQ6P,2BAA6BD,EAA6BC,0BAClE,IAAIC,GAA6B5Q,EAAQ,0CACzCc,GAAQ+P,yBAA2BD,EAA2BC,wBAC9D,IAAIC,GAAsB9Q,EAAQ,mCAClCc,GAAQiQ,kBAAoBD,EAAoBC,iBAChD,IAAIC,GAAgChR,EAAQ,6CAC5Cc,GAAQmQ,4BAA8BD,EAA8BC,2BACpE,IAAIpK,GAAmB7G,EAAQ,mCAC3BkR,EAAgBlR,EAAQ,6BAC5Bc,GAAQqQ,yBAA2BD,EAAcC,yBACjDrQ,EAAQsQ,iBAAmBF,EAAcE,gBACzC,IAAIC,GAAa,WACb,QAASA,MAOT,MALA3H,QAAOuF,eAAeoC,EAAU5H,UAAW,iBACvCyF,IAAK,WAAc,MAAOoC,SAC1BnC,YAAY,EACZC,cAAc,IAEXiC,IAEXvQ,GAAQuQ,UAAYA,EACpBvQ,EAAQyQ,0BACJjB,EAAgBC,cAChBP,EAAgBC,cAChBG,EAAoBC,kBACpBT,EAAcC,YACdC,EAAoBC,kBACpBG,EAAaC,WACbO,EAA6BC,2BAC7BH,EAAcC,YACdG,EAA2BC,yBAC3BQ,GACF/J,OAAO4J,EAAcM,eACjB3D,QAAShH,EAAiB4K,kBAAmBzD,YAAakC,EAAaC,YACzEW,EAAoBC,kBACpBC,EAA8BC,gCAK/BzI,kCAAkC,GAAGkJ,0CAA0C,GAAGC,4CAA4C,GAAGC,+BAA+B,GAAGC,+BAA+B,GAAGC,mCAAmC,GAAGC,6BAA6B,GAAGC,6CAA6C,GAAGC,4BAA4B,GAAGC,mCAAmC,GAAGC,mCAAmC,GAAGC,6BAA6B,GAAGC,6BAA6B,KAAKC,GAAG,SAAStS,EAAQkB,EAAOJ,IAOpgB,SAAUyR,EAAQC,GACG,gBAAZ1R,QAA0C,KAAXI,EAAyBA,EAAOJ,QAAU0R,IAC9D,kBAAXC,SAAyBA,OAAOC,IAAMD,OAAOD,GACpDD,EAAOI,OAASH,KAClBpJ,KAAM,WAAe,YAIvB,SAASwJ,KACL,MAAOC,IAAaC,MAAM,KAAMC,WASpC,QAASC,GAAQC,GACb,MAAOA,aAAiBC,QAAmD,mBAA1CxJ,OAAOD,UAAU0J,SAASpS,KAAKkS,GAGpE,QAASG,GAASH,GAGd,MAAgB,OAATA,GAA2D,oBAA1CvJ,OAAOD,UAAU0J,SAASpS,KAAKkS,GAG3D,QAASI,GAAcC,GACnB,GAAIC,EACJ,KAAKA,IAAKD,GAEN,OAAO,CAEX,QAAO,EAGX,QAASE,GAASP,GACd,MAAwB,gBAAVA,IAAgE,oBAA1CvJ,OAAOD,UAAU0J,SAASpS,KAAKkS,GAGvE,QAASQ,GAAOR,GACZ,MAAOA,aAAiBS,OAAkD,kBAA1ChK,OAAOD,UAAU0J,SAASpS,KAAKkS,GAGnE,QAASU,GAAIC,EAAKC,GACd,GAAcvT,GAAVwT,IACJ,KAAKxT,EAAI,EAAGA,EAAIsT,EAAI5S,SAAUV,EAC1BwT,EAAIC,KAAKF,EAAGD,EAAItT,GAAIA,GAExB,OAAOwT,GAGX,QAASE,GAAWtT,EAAG4I,GACnB,MAAOI,QAAOD,UAAUzH,eAAejB,KAAKL,EAAG4I,GAGnD,QAAS2K,GAAOvT,EAAG4I,GACf,IAAK,GAAIhJ,KAAKgJ,GACN0K,EAAW1K,EAAGhJ,KACdI,EAAEJ,GAAKgJ,EAAEhJ,GAYjB,OARI0T,GAAW1K,EAAG,cACd5I,EAAEyS,SAAW7J,EAAE6J,UAGfa,EAAW1K,EAAG,aACd5I,EAAEwT,QAAU5K,EAAE4K,SAGXxT,EAGX,QAASyT,GAAWlB,EAAOmB,EAAQC,EAAQC,GACvC,MAAOC,IAAiBtB,EAAOmB,EAAQC,EAAQC,GAAQ,GAAME,MAGjE,QAASC,KAEL,OACIC,OAAkB,EAClBC,gBACAC,eACAC,UAAmB,EACnBC,cAAkB,EAClBC,WAAkB,EAClBC,aAAkB,KAClBC,eAAkB,EAClBC,iBAAkB,EAClBC,KAAkB,EAClBC,mBACAC,SAAkB,MAI1B,QAASC,GAAgBvT,GAIrB,MAHa,OAATA,EAAEwT,MACFxT,EAAEwT,IAAMd,KAEL1S,EAAEwT,IAuBb,QAASC,GAAQzT,GACb,GAAkB,MAAdA,EAAE0T,SAAkB,CACpB,GAAIC,GAAQJ,EAAgBvT,GACxB4T,EAAcC,GAAO7U,KAAK2U,EAAMN,gBAAiB,SAAU9U,GAC3D,MAAY,OAALA,IAEPuV,GAAcC,MAAM/T,EAAEgU,GAAGC,YACzBN,EAAMb,SAAW,IAChBa,EAAMhB,QACNgB,EAAMV,eACNU,EAAMO,iBACNP,EAAMX,YACNW,EAAMT,gBACNS,EAAMR,mBACLQ,EAAML,UAAaK,EAAML,UAAYM,EAS3C,IAPI5T,EAAEmU,UACFL,EAAaA,GACe,IAAxBH,EAAMZ,eACwB,IAA9BY,EAAMf,aAAa3T,YACDmV,KAAlBT,EAAMU,SAGS,MAAnB1M,OAAO2M,UAAqB3M,OAAO2M,SAAStU,GAI5C,MAAO8T,EAHP9T,GAAE0T,SAAWI,EAMrB,MAAO9T,GAAE0T,SAGb,QAASa,GAAeZ,GACpB,GAAI3T,GAAIoS,EAAUoC,IAQlB,OAPa,OAATb,EACAzB,EAAOqB,EAAgBvT,GAAI2T,GAG3BJ,EAAgBvT,GAAGmT,iBAAkB,EAGlCnT,EAGX,QAASyU,GAAYvD,GACjB,WAAiB,KAAVA,EAOX,QAASwD,GAAWC,EAAIC,GACpB,GAAIrW,GAAGsW,EAAMC,CAiCb,IA/BKL,EAAYG,EAAKG,oBAClBJ,EAAGI,iBAAmBH,EAAKG,kBAE1BN,EAAYG,EAAKI,MAClBL,EAAGK,GAAKJ,EAAKI,IAEZP,EAAYG,EAAKK,MAClBN,EAAGM,GAAKL,EAAKK,IAEZR,EAAYG,EAAKM,MAClBP,EAAGO,GAAKN,EAAKM,IAEZT,EAAYG,EAAKT,WAClBQ,EAAGR,QAAUS,EAAKT,SAEjBM,EAAYG,EAAKO,QAClBR,EAAGQ,KAAOP,EAAKO,MAEdV,EAAYG,EAAKQ,UAClBT,EAAGS,OAASR,EAAKQ,QAEhBX,EAAYG,EAAKS,WAClBV,EAAGU,QAAUT,EAAKS,SAEjBZ,EAAYG,EAAKpB,OAClBmB,EAAGnB,IAAMD,EAAgBqB,IAExBH,EAAYG,EAAKU,WAClBX,EAAGW,QAAUV,EAAKU,SAGlBC,GAAiBtW,OAAS,EAC1B,IAAKV,IAAKgX,IACNV,EAAOU,GAAiBhX,GACxBuW,EAAMF,EAAKC,GACNJ,EAAYK,KACbH,EAAGE,GAAQC,EAKvB,OAAOH,GAMX,QAASa,GAAOC,GACZf,EAAWrN,KAAMoO,GACjBpO,KAAK2M,GAAK,GAAIrC,MAAkB,MAAb8D,EAAOzB,GAAayB,EAAOzB,GAAGC,UAAYO,KACxDnN,KAAKoM,YACNpM,KAAK2M,GAAK,GAAIrC,MAAK6C,OAIE,IAArBkB,KACAA,IAAmB,EACnB7E,EAAM8E,aAAatO,MACnBqO,IAAmB,GAI3B,QAASE,GAAUrE,GACf,MAAOA,aAAeiE,IAAkB,MAAPjE,GAAuC,MAAxBA,EAAIwD,iBAGxD,QAASc,GAAUC,GACf,MAAIA,GAAS,EAEFC,KAAKC,KAAKF,IAAW,EAErBC,KAAKE,MAAMH,GAI1B,QAASI,GAAMC,GACX,GAAIC,IAAiBD,EACjBE,EAAQ,CAMZ,OAJsB,KAAlBD,GAAuBE,SAASF,KAChCC,EAAQR,EAASO,IAGdC,EAIX,QAASE,GAAcC,EAAQC,EAAQC,GACnC,GAGInY,GAHAoY,EAAMZ,KAAKa,IAAIJ,EAAOvX,OAAQwX,EAAOxX,QACrC4X,EAAad,KAAKe,IAAIN,EAAOvX,OAASwX,EAAOxX,QAC7C8X,EAAQ,CAEZ,KAAKxY,EAAI,EAAGA,EAAIoY,EAAKpY,KACZmY,GAAeF,EAAOjY,KAAOkY,EAAOlY,KACnCmY,GAAeR,EAAMM,EAAOjY,MAAQ2X,EAAMO,EAAOlY,MACnDwY,GAGR,OAAOA,GAAQF,EAGnB,QAASG,GAAKC,IACgC,IAAtCpG,EAAMqG,6BACmB,mBAAbC,UAA6BA,QAAQH,MACjDG,QAAQH,KAAK,wBAA0BC,GAI/C,QAASG,GAAUH,EAAKnF,GACpB,GAAIuF,IAAY,CAEhB,OAAOnF,GAAO,WAIV,GAHgC,MAA5BrB,EAAMyG,oBACNzG,EAAMyG,mBAAmB,KAAML,GAE/BI,EAAW,CAGX,IAAK,GADDE,GADAC,KAEKjZ,EAAI,EAAGA,EAAIyS,UAAU/R,OAAQV,IAAK,CAEvC,GADAgZ,EAAM,GACsB,gBAAjBvG,WAAUzS,GAAiB,CAClCgZ,GAAO,MAAQhZ,EAAI,IACnB,KAAK,GAAIkZ,KAAOzG,WAAU,GACtBuG,GAAOE,EAAM,KAAOzG,UAAU,GAAGyG,GAAO,IAE5CF,GAAMA,EAAIG,MAAM,GAAI,OAEpBH,GAAMvG,UAAUzS,EAEpBiZ,GAAKxF,KAAKuF,GAEdP,EAAKC,EAAM,gBAAkB9F,MAAMzJ,UAAUgQ,MAAM1Y,KAAKwY,GAAMG,KAAK,IAAM,MAAO,GAAK/Y,QAASgZ,OAC9FP,GAAY,EAEhB,MAAOvF,GAAGf,MAAM1J,KAAM2J,YACvBc,GAKP,QAAS+F,GAAgBC,EAAMb,GACK,MAA5BpG,EAAMyG,oBACNzG,EAAMyG,mBAAmBQ,EAAMb,GAE9Bc,GAAaD,KACdd,EAAKC,GACLc,GAAaD,IAAQ,GAO7B,QAASE,GAAW9G,GAChB,MAAOA,aAAiB+G,WAAsD,sBAA1CtQ,OAAOD,UAAU0J,SAASpS,KAAKkS,GAGvE,QAASgH,GAAKzC,GACV,GAAIZ,GAAMtW,CACV,KAAKA,IAAKkX,GACNZ,EAAOY,EAAOlX,GACVyZ,EAAWnD,GACXxN,KAAK9I,GAAKsW,EAEVxN,KAAK,IAAM9I,GAAKsW,CAGxBxN,MAAK8Q,QAAU1C,EAGfpO,KAAK+Q,qBAAuB,GAAIC,QAAOhR,KAAKiR,cAAcC,OAAS,IAAM,UAAYA,QAGzF,QAASC,GAAaC,EAAcC,GAChC,GAAoC7D,GAAhC9C,EAAMG,KAAWuG,EACrB,KAAK5D,IAAQ6D,GACLzG,EAAWyG,EAAa7D,KACpBxD,EAASoH,EAAa5D,KAAUxD,EAASqH,EAAY7D,KACrD9C,EAAI8C,MACJ3C,EAAOH,EAAI8C,GAAO4D,EAAa5D,IAC/B3C,EAAOH,EAAI8C,GAAO6D,EAAY7D,KACF,MAArB6D,EAAY7D,GACnB9C,EAAI8C,GAAQ6D,EAAY7D,SAEjB9C,GAAI8C,GAIvB,KAAKA,IAAQ4D,GACLxG,EAAWwG,EAAc5D,KACpB5C,EAAWyG,EAAa7D,IACzBxD,EAASoH,EAAa5D,MAE1B9C,EAAI8C,GAAQ3C,KAAWH,EAAI8C,IAGnC,OAAO9C,GAGX,QAAS4G,GAAOlD,GACE,MAAVA,GACApO,KAAK6Q,IAAIzC,GA+BjB,QAASmD,GAAUnB,EAAKoB,EAAKC,GACzB,GAAIC,GAAS1R,KAAK2R,UAAUvB,IAAQpQ,KAAK2R,UAAoB,QAC7D,OAAOhB,GAAWe,GAAUA,EAAO/Z,KAAK6Z,EAAKC,GAAOC,EAYxD,QAASE,GAAgBxB,GACrB,GAAIpF,GAAShL,KAAK6R,gBAAgBzB,GAC9B0B,EAAc9R,KAAK6R,gBAAgBzB,EAAI2B,cAE3C,OAAI/G,KAAW8G,EACJ9G,GAGXhL,KAAK6R,gBAAgBzB,GAAO0B,EAAYE,QAAQ,mBAAoB,SAAUvE,GAC1E,MAAOA,GAAI4C,MAAM,KAGdrQ,KAAK6R,gBAAgBzB,IAKhC,QAAS6B,KACL,MAAOjS,MAAKkS,aAMhB,QAASC,GAAS1D,GACd,MAAOzO,MAAKoS,SAASJ,QAAQ,KAAMvD,GAmBvC,QAAS4D,GAAc5D,EAAQ6D,EAAeC,EAAQC,GAClD,GAAId,GAAS1R,KAAKyS,cAAcF,EAChC,OAAQ5B,GAAWe,GACfA,EAAOjD,EAAQ6D,EAAeC,EAAQC,GACtCd,EAAOM,QAAQ,MAAOvD,GAG9B,QAASiE,GAAYC,EAAMjB,GACvB,GAAI1G,GAAShL,KAAKyS,cAAcE,EAAO,EAAI,SAAW,OACtD,OAAOhC,GAAW3F,GAAUA,EAAO0G,GAAU1G,EAAOgH,QAAQ,MAAON,GAKvE,QAASkB,GAAcC,EAAMC,GACzB,GAAIC,GAAYF,EAAKG,aACrBC,IAAQF,GAAaE,GAAQF,EAAY,KAAOE,GAAQH,GAAaD,EAGzE,QAASK,GAAeC,GACpB,MAAwB,gBAAVA,GAAqBF,GAAQE,IAAUF,GAAQE,EAAMH,mBAAiBjG,GAGxF,QAASqG,GAAqBC,GAC1B,GACIC,GACA9F,EAFA+F,IAIJ,KAAK/F,IAAQ6F,GACLzI,EAAWyI,EAAa7F,KACxB8F,EAAiBJ,EAAe1F,MAE5B+F,EAAgBD,GAAkBD,EAAY7F,GAK1D,OAAO+F,GAKX,QAASC,GAAgBX,EAAMY,GAC3BC,GAAWb,GAAQY,EAGvB,QAASE,GAAoBC,GACzB,GAAIT,KACJ,KAAK,GAAI9b,KAAKuc,GACVT,EAAMxI,MAAMkI,KAAMxb,EAAGoc,SAAUC,GAAWrc,IAK9C,OAHA8b,GAAMU,KAAK,SAAUvc,EAAG4I,GACpB,MAAO5I,GAAEmc,SAAWvT,EAAEuT,WAEnBN,EAGX,QAASW,GAAYjB,EAAMkB,GACvB,MAAO,UAAU/E,GACb,MAAa,OAATA,GACAgF,EAAMhU,KAAM6S,EAAM7D,GAClBxF,EAAM8E,aAAatO,KAAM+T,GAClB/T,MAEA8F,EAAI9F,KAAM6S,IAK7B,QAAS/M,GAAK0L,EAAKqB,GACf,MAAOrB,GAAIpF,UACPoF,EAAI7E,GAAG,OAAS6E,EAAIzD,OAAS,MAAQ,IAAM8E,KAAU1F,IAG7D,QAAS6G,GAAOxC,EAAKqB,EAAM7D,GACnBwC,EAAIpF,WACJoF,EAAI7E,GAAG,OAAS6E,EAAIzD,OAAS,MAAQ,IAAM8E,GAAM7D,GAMzD,QAASiF,GAAWd,GAEhB,MADAA,GAAQD,EAAeC,GACnBxC,EAAW3Q,KAAKmT,IACTnT,KAAKmT,KAETnT,KAIX,QAASkU,GAAWf,EAAOnE,GACvB,GAAqB,gBAAVmE,GAAoB,CAC3BA,EAAQC,EAAqBD,EAE7B,KAAK,GADDgB,GAAcR,EAAoBR,GAC7Bjc,EAAI,EAAGA,EAAIid,EAAYvc,OAAQV,IACpC8I,KAAKmU,EAAYjd,GAAG2b,MAAMM,EAAMgB,EAAYjd,GAAG2b,WAInD,IADAM,EAAQD,EAAeC,GACnBxC,EAAW3Q,KAAKmT,IAChB,MAAOnT,MAAKmT,GAAOnE,EAG3B,OAAOhP,MAGX,QAASoU,GAAS3F,EAAQ4F,EAAcC,GACpC,GAAIC,GAAY,GAAK7F,KAAKe,IAAIhB,GAC1B+F,EAAcH,EAAeE,EAAU3c,MAE3C,QADW6W,GAAU,EACL6F,EAAY,IAAM,GAAM,KACpC5F,KAAK+F,IAAI,GAAI/F,KAAKgG,IAAI,EAAGF,IAAczK,WAAW4K,OAAO,GAAKJ,EAetE,QAASK,GAAgBC,EAAOC,EAAQ3C,EAAS4C,GAC7C,GAAIC,GAAOD,CACa,iBAAbA,KACPC,EAAO,WACH,MAAOhV,MAAK+U,OAGhBF,IACAI,GAAqBJ,GAASG,GAE9BF,IACAG,GAAqBH,EAAO,IAAM,WAC9B,MAAOV,GAASY,EAAKtL,MAAM1J,KAAM2J,WAAYmL,EAAO,GAAIA,EAAO,MAGnE3C,IACA8C,GAAqB9C,GAAW,WAC5B,MAAOnS,MAAKkV,aAAa/C,QAAQ6C,EAAKtL,MAAM1J,KAAM2J,WAAYkL,KAK1E,QAASM,GAAuBtL,GAC5B,MAAIA,GAAMuL,MAAM,YACLvL,EAAMmI,QAAQ,WAAY,IAE9BnI,EAAMmI,QAAQ,MAAO,IAGhC,QAASqD,GAAmBrK,GACxB,GAA4C9T,GAAGU,EAA3C0d,EAAQtK,EAAOoK,MAAMG,GAEzB,KAAKre,EAAI,EAAGU,EAAS0d,EAAM1d,OAAQV,EAAIU,EAAQV,IACvC+d,GAAqBK,EAAMpe,IAC3Boe,EAAMpe,GAAK+d,GAAqBK,EAAMpe,IAEtCoe,EAAMpe,GAAKie,EAAuBG,EAAMpe,GAIhD,OAAO,UAAUsa,GACb,GAAiBta,GAAbwa,EAAS,EACb,KAAKxa,EAAI,EAAGA,EAAIU,EAAQV,IACpBwa,GAAU4D,EAAMpe,YAAc0Z,UAAW0E,EAAMpe,GAAGS,KAAK6Z,EAAKxG,GAAUsK,EAAMpe,EAEhF,OAAOwa,IAKf,QAAS8D,GAAa7c,EAAGqS,GACrB,MAAKrS,GAAEyT,WAIPpB,EAASyK,EAAazK,EAAQrS,EAAEuc,cAChCQ,GAAgB1K,GAAU0K,GAAgB1K,IAAWqK,EAAmBrK,GAEjE0K,GAAgB1K,GAAQrS,IANpBA,EAAEuc,aAAajD,cAS9B,QAASwD,GAAazK,EAAQC,GAG1B,QAAS0K,GAA4B9L,GACjC,MAAOoB,GAAO2G,eAAe/H,IAAUA,EAH3C,GAAI3S,GAAI,CAOR,KADA0e,GAAsBC,UAAY,EAC3B3e,GAAK,GAAK0e,GAAsBE,KAAK9K,IACxCA,EAASA,EAAOgH,QAAQ4D,GAAuBD,GAC/CC,GAAsBC,UAAY,EAClC3e,GAAK,CAGT,OAAO8T,GA8BX,QAAS+K,GAAelB,EAAOmB,EAAOC,GAClCC,GAAQrB,GAASlE,EAAWqF,GAASA,EAAQ,SAAUG,EAAUjB,GAC7D,MAAQiB,IAAYF,EAAeA,EAAcD,GAIzD,QAASI,GAAuBvB,EAAOzG,GACnC,MAAKxD,GAAWsL,GAASrB,GAIlBqB,GAAQrB,GAAOzG,EAAOtB,QAASsB,EAAOH,SAHlC,GAAI+C,QAAOqF,GAAexB,IAOzC,QAASwB,IAAe7Q,GACpB,MAAO8Q,IAAY9Q,EAAEwM,QAAQ,KAAM,IAAIA,QAAQ,sCAAuC,SAAUuE,EAASC,EAAIC,EAAIC,EAAIC,GACjH,MAAOH,IAAMC,GAAMC,GAAMC,KAIjC,QAASL,IAAY9Q,GACjB,MAAOA,GAAEwM,QAAQ,yBAA0B,QAK/C,QAAS4E,IAAe/B,EAAOE,GAC3B,GAAI7d,GAAG8d,EAAOD,CASd,KARqB,gBAAVF,KACPA,GAASA,IAETzK,EAAS2K,KACTC,EAAO,SAAUnL,EAAOyL,GACpBA,EAAMP,GAAYlG,EAAMhF,KAG3B3S,EAAI,EAAGA,EAAI2d,EAAMjd,OAAQV,IAC1B2f,GAAOhC,EAAM3d,IAAM8d,EAI3B,QAAS8B,IAAmBjC,EAAOE,GAC/B6B,GAAc/B,EAAO,SAAUhL,EAAOyL,EAAOlH,EAAQyG,GACjDzG,EAAO2I,GAAK3I,EAAO2I,OACnBhC,EAASlL,EAAOuE,EAAO2I,GAAI3I,EAAQyG,KAI3C,QAASmC,IAAwBnC,EAAOhL,EAAOuE,GAC9B,MAATvE,GAAiBe,EAAWiM,GAAQhC,IACpCgC,GAAOhC,GAAOhL,EAAOuE,EAAO6I,GAAI7I,EAAQyG,GAiChD,QAASqC,IAAYC,EAAMC,GACvB,MAAO,IAAI9M,MAAKA,KAAK+M,IAAIF,EAAMC,EAAQ,EAAG,IAAIE,aAsDlD,QAASC,IAAc5e,EAAGqS,GACtB,MAAKrS,GAGEiR,EAAQ5J,KAAKwX,SAAWxX,KAAKwX,QAAQ7e,EAAEye,SAC1CpX,KAAKwX,SAASxX,KAAKwX,QAAQC,UAAYC,IAAkB5B,KAAK9K,GAAU,SAAW,cAAcrS,EAAEye,SAH5FpX,KAAKwX,QAOpB,QAASG,IAAmBhf,EAAGqS,GAC3B,MAAKrS,GAGEiR,EAAQ5J,KAAK4X,cAAgB5X,KAAK4X,aAAajf,EAAEye,SACpDpX,KAAK4X,aAAaF,GAAiB5B,KAAK9K,GAAU,SAAW,cAAcrS,EAAEye,SAHtEpX,KAAK4X,aAMpB,QAASC,IAAkBC,EAAW9M,EAAQE,GAC1C,GAAIhU,GAAG6gB,EAAIvG,EAAKwG,EAAMF,EAAUG,mBAChC,KAAKjY,KAAKkY,aAKN,IAHAlY,KAAKkY,gBACLlY,KAAKmY,oBACLnY,KAAKoY,qBACAlhB,EAAI,EAAGA,EAAI,KAAMA,EAClBsa,EAAMzG,GAAW,IAAM7T,IACvB8I,KAAKoY,kBAAkBlhB,GAAK8I,KAAKqY,YAAY7G,EAAK,IAAIyG,oBACtDjY,KAAKmY,iBAAiBjhB,GAAK8I,KAAKsY,OAAO9G,EAAK,IAAIyG,mBAIxD,OAAI/M,GACe,QAAXF,GACA+M,EAAKQ,GAAU5gB,KAAKqI,KAAKoY,kBAAmBJ,IAC7B,IAARD,EAAYA,EAAK,OAExBA,EAAKQ,GAAU5gB,KAAKqI,KAAKmY,iBAAkBH,IAC5B,IAARD,EAAYA,EAAK,MAGb,QAAX/M,GAEY,KADZ+M,EAAKQ,GAAU5gB,KAAKqI,KAAKoY,kBAAmBJ,IAEjCD,GAEXA,EAAKQ,GAAU5gB,KAAKqI,KAAKmY,iBAAkBH,IAC5B,IAARD,EAAYA,EAAK,OAGZ,KADZA,EAAKQ,GAAU5gB,KAAKqI,KAAKmY,iBAAkBH,IAEhCD,GAEXA,EAAKQ,GAAU5gB,KAAKqI,KAAKoY,kBAAmBJ,IAC7B,IAARD,EAAYA,EAAK,MAKpC,QAASS,IAAmBV,EAAW9M,EAAQE,GAC3C,GAAIhU,GAAGsa,EAAKwE,CAEZ,IAAIhW,KAAKyY,kBACL,MAAOZ,IAAkBlgB,KAAKqI,KAAM8X,EAAW9M,EAAQE,EAY3D,KATKlL,KAAKkY,eACNlY,KAAKkY,gBACLlY,KAAKmY,oBACLnY,KAAKoY,sBAMJlhB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAYrB,GAVAsa,EAAMzG,GAAW,IAAM7T,IACnBgU,IAAWlL,KAAKmY,iBAAiBjhB,KACjC8I,KAAKmY,iBAAiBjhB,GAAK,GAAI8Z,QAAO,IAAMhR,KAAKsY,OAAO9G,EAAK,IAAIQ,QAAQ,IAAK,IAAM,IAAK,KACzFhS,KAAKoY,kBAAkBlhB,GAAK,GAAI8Z,QAAO,IAAMhR,KAAKqY,YAAY7G,EAAK,IAAIQ,QAAQ,IAAK,IAAM,IAAK,MAE9F9G,GAAWlL,KAAKkY,aAAahhB,KAC9B8e,EAAQ,IAAMhW,KAAKsY,OAAO9G,EAAK,IAAM,KAAOxR,KAAKqY,YAAY7G,EAAK,IAClExR,KAAKkY,aAAahhB,GAAK,GAAI8Z,QAAOgF,EAAMhE,QAAQ,IAAK,IAAK,MAG1D9G,GAAqB,SAAXF,GAAqBhL,KAAKmY,iBAAiBjhB,GAAG4e,KAAKgC,GAC7D,MAAO5gB,EACJ,IAAIgU,GAAqB,QAAXF,GAAoBhL,KAAKoY,kBAAkBlhB,GAAG4e,KAAKgC,GACpE,MAAO5gB,EACJ,KAAKgU,GAAUlL,KAAKkY,aAAahhB,GAAG4e,KAAKgC,GAC5C,MAAO5gB,IAOnB,QAASwhB,IAAUlH,EAAKxC,GACpB,GAAI2J,EAEJ,KAAKnH,EAAIpF,UAEL,MAAOoF,EAGX,IAAqB,gBAAVxC,GACP,GAAI,QAAQ8G,KAAK9G,GACbA,EAAQH,EAAMG,OAId,IAFAA,EAAQwC,EAAI0D,aAAa0D,YAAY5J,IAEhC5E,EAAS4E,GACV,MAAOwC,EAOnB,OAFAmH,GAAajK,KAAKa,IAAIiC,EAAIqH,OAAQ3B,GAAY1F,EAAI2F,OAAQnI,IAC1DwC,EAAI7E,GAAG,OAAS6E,EAAIzD,OAAS,MAAQ,IAAM,SAASiB,EAAO2J,GACpDnH,EAGX,QAASsH,IAAa9J,GAClB,MAAa,OAATA,GACA0J,GAAS1Y,KAAMgP,GACfxF,EAAM8E,aAAatO,MAAM,GAClBA,MAEA8F,EAAI9F,KAAM,SAIzB,QAAS+Y,MACL,MAAO7B,IAAYlX,KAAKmX,OAAQnX,KAAKoX,SAIzC,QAAS4B,IAAkB7C,GACvB,MAAInW,MAAKyY,mBACA7N,EAAW5K,KAAM,iBAClBiZ,GAAmBthB,KAAKqI,MAExBmW,EACOnW,KAAKkZ,wBAELlZ,KAAKmZ,oBAGXvO,EAAW5K,KAAM,uBAClBA,KAAKmZ,kBAAoBC,IAEtBpZ,KAAKkZ,yBAA2B/C,EACnCnW,KAAKkZ,wBAA0BlZ,KAAKmZ,mBAKhD,QAASE,IAAalD,GAClB,MAAInW,MAAKyY,mBACA7N,EAAW5K,KAAM,iBAClBiZ,GAAmBthB,KAAKqI,MAExBmW,EACOnW,KAAKsZ,mBAELtZ,KAAKuZ,eAGX3O,EAAW5K,KAAM,kBAClBA,KAAKuZ,aAAeC,IAEjBxZ,KAAKsZ,oBAAsBnD,EAC9BnW,KAAKsZ,mBAAqBtZ,KAAKuZ,cAI3C,QAASN,MACL,QAASQ,GAAUniB,EAAG4I,GAClB,MAAOA,GAAEtI,OAASN,EAAEM,OAGxB,GACIV,GAAGsa,EADHkI,KAAkBC,KAAiBC,IAEvC,KAAK1iB,EAAI,EAAGA,EAAI,GAAIA,IAEhBsa,EAAMzG,GAAW,IAAM7T,IACvBwiB,EAAY/O,KAAK3K,KAAKqY,YAAY7G,EAAK,KACvCmI,EAAWhP,KAAK3K,KAAKsY,OAAO9G,EAAK,KACjCoI,EAAYjP,KAAK3K,KAAKsY,OAAO9G,EAAK,KAClCoI,EAAYjP,KAAK3K,KAAKqY,YAAY7G,EAAK,IAO3C,KAHAkI,EAAY7F,KAAK4F,GACjBE,EAAW9F,KAAK4F,GAChBG,EAAY/F,KAAK4F,GACZviB,EAAI,EAAGA,EAAI,GAAIA,IAChBwiB,EAAYxiB,GAAKof,GAAYoD,EAAYxiB,IACzCyiB,EAAWziB,GAAKof,GAAYqD,EAAWziB,GAE3C,KAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB0iB,EAAY1iB,GAAKof,GAAYsD,EAAY1iB,GAG7C8I,MAAKuZ,aAAe,GAAIvI,QAAO,KAAO4I,EAAYtJ,KAAK,KAAO,IAAK,KACnEtQ,KAAKmZ,kBAAoBnZ,KAAKuZ,aAC9BvZ,KAAKsZ,mBAAqB,GAAItI,QAAO,KAAO2I,EAAWrJ,KAAK,KAAO,IAAK,KACxEtQ,KAAKkZ,wBAA0B,GAAIlI,QAAO,KAAO0I,EAAYpJ,KAAK,KAAO,IAAK,KA+ClF,QAASuJ,IAAW1C,GAChB,MAAO2C,IAAW3C,GAAQ,IAAM,IAGpC,QAAS2C,IAAW3C,GAChB,MAAQA,GAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAalE,QAAS4C,MACL,MAAOD,IAAW9Z,KAAKmX,QAG3B,QAAS6C,IAAYC,EAAGthB,EAAGsH,EAAGia,EAAGC,EAAG3U,EAAG4U,GAGnC,GAAIvB,GAAO,GAAIvO,MAAK2P,EAAGthB,EAAGsH,EAAGia,EAAGC,EAAG3U,EAAG4U,EAMtC,OAHIH,GAAI,KAAOA,GAAK,GAAKhL,SAAS4J,EAAKwB,gBACnCxB,EAAKyB,YAAYL,GAEdpB,EAGX,QAAS0B,IAAeN,GACpB,GAAIpB,GAAO,GAAIvO,MAAKA,KAAK+M,IAAI3N,MAAM,KAAMC,WAMzC,OAHIsQ,GAAI,KAAOA,GAAK,GAAKhL,SAAS4J,EAAK2B,mBACnC3B,EAAK4B,eAAeR,GAEjBpB,EAIX,QAAS6B,IAAgBvD,EAAMwD,EAAKC,GAChC,GACIC,GAAM,EAAIF,EAAMC,CAIpB,SAFa,EAAIL,GAAcpD,EAAM,EAAG0D,GAAKC,YAAcH,GAAO,EAElDE,EAAM,EAI1B,QAASE,IAAmB5D,EAAM6D,EAAMC,EAASN,EAAKC,GAClD,GAGIM,GAASC,EAHTC,GAAgB,EAAIH,EAAUN,GAAO,EACrCU,EAAaX,GAAgBvD,EAAMwD,EAAKC,GACxCU,EAAY,EAAI,GAAKN,EAAO,GAAKI,EAAeC,CAcpD,OAXIC,IAAa,GACbJ,EAAU/D,EAAO,EACjBgE,EAAetB,GAAWqB,GAAWI,GAC9BA,EAAYzB,GAAW1C,IAC9B+D,EAAU/D,EAAO,EACjBgE,EAAeG,EAAYzB,GAAW1C,KAEtC+D,EAAU/D,EACVgE,EAAeG,IAIfnE,KAAM+D,EACNI,UAAWH,GAInB,QAASI,IAAW/J,EAAKmJ,EAAKC,GAC1B,GAEIY,GAASN,EAFTG,EAAaX,GAAgBlJ,EAAI2F,OAAQwD,EAAKC,GAC9CI,EAAOtM,KAAKE,OAAO4C,EAAI8J,YAAcD,EAAa,GAAK,GAAK,CAchE,OAXIL,GAAO,GACPE,EAAU1J,EAAI2F,OAAS,EACvBqE,EAAUR,EAAOS,GAAYP,EAASP,EAAKC,IACpCI,EAAOS,GAAYjK,EAAI2F,OAAQwD,EAAKC,IAC3CY,EAAUR,EAAOS,GAAYjK,EAAI2F,OAAQwD,EAAKC,GAC9CM,EAAU1J,EAAI2F,OAAS,IAEvB+D,EAAU1J,EAAI2F,OACdqE,EAAUR,IAIVA,KAAMQ,EACNrE,KAAM+D,GAId,QAASO,IAAYtE,EAAMwD,EAAKC,GAC5B,GAAIS,GAAaX,GAAgBvD,EAAMwD,EAAKC,GACxCc,EAAiBhB,GAAgBvD,EAAO,EAAGwD,EAAKC,EACpD,QAAQf,GAAW1C,GAAQkE,EAAaK,GAAkB,EAiC9D,QAASC,IAAYnK,GACjB,MAAO+J,IAAW/J,EAAKxR,KAAK4b,MAAMjB,IAAK3a,KAAK4b,MAAMhB,KAAKI,KAQ3D,QAASa,MACL,MAAO7b,MAAK4b,MAAMjB,IAGtB,QAASmB,MACL,MAAO9b,MAAK4b,MAAMhB,IAKtB,QAASmB,IAAYlS,GACjB,GAAImR,GAAOhb,KAAKkV,aAAa8F,KAAKhb,KAClC,OAAgB,OAAT6J,EAAgBmR,EAAOhb,KAAKgc,IAAqB,GAAhBnS,EAAQmR,GAAW,KAG/D,QAASiB,IAAepS,GACpB,GAAImR,GAAOO,GAAWvb,KAAM,EAAG,GAAGgb,IAClC,OAAgB,OAATnR,EAAgBmR,EAAOhb,KAAKgc,IAAqB,GAAhBnS,EAAQmR,GAAW,KAgE/D,QAASkB,IAAarS,EAAOoB,GACzB,MAAqB,gBAAVpB,GACAA,EAGN6C,MAAM7C,IAIXA,EAAQoB,EAAOkR,cAActS,GACR,gBAAVA,GACAA,EAGJ,MARIuS,SAASvS,EAAO,IAW/B,QAASwS,IAAgBxS,EAAOoB,GAC5B,MAAqB,gBAAVpB,GACAoB,EAAOkR,cAActS,GAAS,GAAK,EAEvC6C,MAAM7C,GAAS,KAAOA,EAMjC,QAASyS,IAAgB3jB,EAAGqS,GACxB,MAAKrS,GAGEiR,EAAQ5J,KAAKuc,WAAavc,KAAKuc,UAAU5jB,EAAE6jB,OAC9Cxc,KAAKuc,UAAUvc,KAAKuc,UAAU9E,SAAS3B,KAAK9K,GAAU,SAAW,cAAcrS,EAAE6jB,OAH1Exc,KAAKuc,UAOpB,QAASE,IAAqB9jB,GAC1B,MAAO,GAAMqH,KAAK0c,eAAe/jB,EAAE6jB,OAASxc,KAAK0c,eAIrD,QAASC,IAAmBhkB,GACxB,MAAO,GAAMqH,KAAK4c,aAAajkB,EAAE6jB,OAASxc,KAAK4c,aAGnD,QAASC,IAAoBC,EAAa9R,EAAQE,GAC9C,GAAIhU,GAAG6gB,EAAIvG,EAAKwG,EAAM8E,EAAY7E,mBAClC,KAAKjY,KAAK+c,eAKN,IAJA/c,KAAK+c,kBACL/c,KAAKgd,uBACLhd,KAAKid,qBAEA/lB,EAAI,EAAGA,EAAI,IAAKA,EACjBsa,EAAMzG,GAAW,IAAM,IAAIyR,IAAItlB,GAC/B8I,KAAKid,kBAAkB/lB,GAAK8I,KAAKkd,YAAY1L,EAAK,IAAIyG,oBACtDjY,KAAKgd,oBAAoB9lB,GAAK8I,KAAKmd,cAAc3L,EAAK,IAAIyG,oBAC1DjY,KAAK+c,eAAe7lB,GAAK8I,KAAKod,SAAS5L,EAAK,IAAIyG,mBAIxD,OAAI/M,GACe,SAAXF,GACA+M,EAAKQ,GAAU5gB,KAAKqI,KAAK+c,eAAgB/E,IAC1B,IAARD,EAAYA,EAAK,MACN,QAAX/M,GACP+M,EAAKQ,GAAU5gB,KAAKqI,KAAKgd,oBAAqBhF,IAC/B,IAARD,EAAYA,EAAK,OAExBA,EAAKQ,GAAU5gB,KAAKqI,KAAKid,kBAAmBjF,IAC7B,IAARD,EAAYA,EAAK,MAGb,SAAX/M,GAEY,KADZ+M,EAAKQ,GAAU5gB,KAAKqI,KAAK+c,eAAgB/E,IAE9BD,GAGC,KADZA,EAAKQ,GAAU5gB,KAAKqI,KAAKgd,oBAAqBhF,IAEnCD,GAEXA,EAAKQ,GAAU5gB,KAAKqI,KAAKid,kBAAmBjF,IAC7B,IAARD,EAAYA,EAAK,MACN,QAAX/M,GAEK,KADZ+M,EAAKQ,GAAU5gB,KAAKqI,KAAKgd,oBAAqBhF,IAEnCD,GAGC,KADZA,EAAKQ,GAAU5gB,KAAKqI,KAAK+c,eAAgB/E,IAE9BD,GAEXA,EAAKQ,GAAU5gB,KAAKqI,KAAKid,kBAAmBjF,IAC7B,IAARD,EAAYA,EAAK,OAGZ,KADZA,EAAKQ,GAAU5gB,KAAKqI,KAAKid,kBAAmBjF,IAEjCD,GAGC,KADZA,EAAKQ,GAAU5gB,KAAKqI,KAAK+c,eAAgB/E,IAE9BD,GAEXA,EAAKQ,GAAU5gB,KAAKqI,KAAKgd,oBAAqBhF,IAC/B,IAARD,EAAYA,EAAK,MAKpC,QAASsF,IAAqBP,EAAa9R,EAAQE,GAC/C,GAAIhU,GAAGsa,EAAKwE,CAEZ,IAAIhW,KAAKsd,oBACL,MAAOT,IAAoBllB,KAAKqI,KAAM8c,EAAa9R,EAAQE,EAU/D,KAPKlL,KAAK+c,iBACN/c,KAAK+c,kBACL/c,KAAKid,qBACLjd,KAAKgd,uBACLhd,KAAKud,uBAGJrmB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAcpB,GAXAsa,EAAMzG,GAAW,IAAM,IAAIyR,IAAItlB,GAC3BgU,IAAWlL,KAAKud,mBAAmBrmB,KACnC8I,KAAKud,mBAAmBrmB,GAAK,GAAI8Z,QAAO,IAAMhR,KAAKod,SAAS5L,EAAK,IAAIQ,QAAQ,IAAK,MAAS,IAAK,KAChGhS,KAAKgd,oBAAoB9lB,GAAK,GAAI8Z,QAAO,IAAMhR,KAAKmd,cAAc3L,EAAK,IAAIQ,QAAQ,IAAK,MAAS,IAAK,KACtGhS,KAAKid,kBAAkB/lB,GAAK,GAAI8Z,QAAO,IAAMhR,KAAKkd,YAAY1L,EAAK,IAAIQ,QAAQ,IAAK,MAAS,IAAK,MAEjGhS,KAAK+c,eAAe7lB,KACrB8e,EAAQ,IAAMhW,KAAKod,SAAS5L,EAAK,IAAM,KAAOxR,KAAKmd,cAAc3L,EAAK,IAAM,KAAOxR,KAAKkd,YAAY1L,EAAK,IACzGxR,KAAK+c,eAAe7lB,GAAK,GAAI8Z,QAAOgF,EAAMhE,QAAQ,IAAK,IAAK,MAG5D9G,GAAqB,SAAXF,GAAqBhL,KAAKud,mBAAmBrmB,GAAG4e,KAAKgH,GAC/D,MAAO5lB,EACJ,IAAIgU,GAAqB,QAAXF,GAAoBhL,KAAKgd,oBAAoB9lB,GAAG4e,KAAKgH,GACtE,MAAO5lB,EACJ,IAAIgU,GAAqB,OAAXF,GAAmBhL,KAAKid,kBAAkB/lB,GAAG4e,KAAKgH,GACnE,MAAO5lB,EACJ,KAAKgU,GAAUlL,KAAK+c,eAAe7lB,GAAG4e,KAAKgH,GAC9C,MAAO5lB,IAOnB,QAASsmB,IAAiB3T,GACtB,IAAK7J,KAAKoM,UACN,MAAgB,OAATvC,EAAgB7J,KAAOmN,GAElC,IAAIqP,GAAMxc,KAAK+N,OAAS/N,KAAK2M,GAAGmO,YAAc9a,KAAK2M,GAAG8Q,QACtD,OAAa,OAAT5T,GACAA,EAAQqS,GAAarS,EAAO7J,KAAKkV,cAC1BlV,KAAKgc,IAAInS,EAAQ2S,EAAK,MAEtBA,EAIf,QAASkB,IAAuB7T,GAC5B,IAAK7J,KAAKoM,UACN,MAAgB,OAATvC,EAAgB7J,KAAOmN,GAElC,IAAI8N,IAAWjb,KAAKwc,MAAQ,EAAIxc,KAAKkV,aAAa0G,MAAMjB,KAAO,CAC/D,OAAgB,OAAT9Q,EAAgBoR,EAAUjb,KAAKgc,IAAInS,EAAQoR,EAAS,KAG/D,QAAS0C,IAAoB9T,GACzB,IAAK7J,KAAKoM,UACN,MAAgB,OAATvC,EAAgB7J,KAAOmN,GAOlC,IAAa,MAATtD,EAAe,CACf,GAAIoR,GAAUoB,GAAgBxS,EAAO7J,KAAKkV,aAC1C,OAAOlV,MAAKwc,IAAIxc,KAAKwc,MAAQ,EAAIvB,EAAUA,EAAU,GAErD,MAAOjb,MAAKwc,OAAS,EAK7B,QAASoB,IAAezH,GACpB,MAAInW,MAAKsd,qBACA1S,EAAW5K,KAAM,mBAClB6d,GAAqBlmB,KAAKqI,MAE1BmW,EACOnW,KAAK8d,qBAEL9d,KAAK+d,iBAGXnT,EAAW5K,KAAM,oBAClBA,KAAK+d,eAAiBC,IAEnBhe,KAAK8d,sBAAwB3H,EAChCnW,KAAK8d,qBAAuB9d,KAAK+d,gBAK7C,QAASE,IAAoB9H,GACzB,MAAInW,MAAKsd,qBACA1S,EAAW5K,KAAM,mBAClB6d,GAAqBlmB,KAAKqI,MAE1BmW,EACOnW,KAAKke,0BAELle,KAAKme,sBAGXvT,EAAW5K,KAAM,yBAClBA,KAAKme,oBAAsBC,IAExBpe,KAAKke,2BAA6B/H,EACrCnW,KAAKke,0BAA4Ble,KAAKme,qBAKlD,QAASE,IAAkBlI,GACvB,MAAInW,MAAKsd,qBACA1S,EAAW5K,KAAM,mBAClB6d,GAAqBlmB,KAAKqI,MAE1BmW,EACOnW,KAAKse,wBAELte,KAAKue,oBAGX3T,EAAW5K,KAAM,uBAClBA,KAAKue,kBAAoBC,IAEtBxe,KAAKse,yBAA2BnI,EACnCnW,KAAKse,wBAA0Bte,KAAKue,mBAKhD,QAASV,MACL,QAASpE,GAAUniB,EAAG4I,GAClB,MAAOA,GAAEtI,OAASN,EAAEM,OAGxB,GACIV,GAAGsa,EAAKiN,EAAMC,EAAQC,EADtBC,KAAgBlF,KAAkBC,KAAiBC,IAEvD,KAAK1iB,EAAI,EAAGA,EAAI,EAAGA,IAEfsa,EAAMzG,GAAW,IAAM,IAAIyR,IAAItlB,GAC/BunB,EAAOze,KAAKkd,YAAY1L,EAAK,IAC7BkN,EAAS1e,KAAKmd,cAAc3L,EAAK,IACjCmN,EAAQ3e,KAAKod,SAAS5L,EAAK,IAC3BoN,EAAUjU,KAAK8T,GACf/E,EAAY/O,KAAK+T,GACjB/E,EAAWhP,KAAKgU,GAChB/E,EAAYjP,KAAK8T,GACjB7E,EAAYjP,KAAK+T,GACjB9E,EAAYjP,KAAKgU,EAQrB,KAJAC,EAAU/K,KAAK4F,GACfC,EAAY7F,KAAK4F,GACjBE,EAAW9F,KAAK4F,GAChBG,EAAY/F,KAAK4F,GACZviB,EAAI,EAAGA,EAAI,EAAGA,IACfwiB,EAAYxiB,GAAKof,GAAYoD,EAAYxiB,IACzCyiB,EAAWziB,GAAKof,GAAYqD,EAAWziB,IACvC0iB,EAAY1iB,GAAKof,GAAYsD,EAAY1iB,GAG7C8I,MAAK+d,eAAiB,GAAI/M,QAAO,KAAO4I,EAAYtJ,KAAK,KAAO,IAAK,KACrEtQ,KAAKme,oBAAsBne,KAAK+d,eAChC/d,KAAKue,kBAAoBve,KAAK+d,eAE9B/d,KAAK8d,qBAAuB,GAAI9M,QAAO,KAAO2I,EAAWrJ,KAAK,KAAO,IAAK,KAC1EtQ,KAAKke,0BAA4B,GAAIlN,QAAO,KAAO0I,EAAYpJ,KAAK,KAAO,IAAK,KAChFtQ,KAAKse,wBAA0B,GAAItN,QAAO,KAAO4N,EAAUtO,KAAK,KAAO,IAAK,KAKhF,QAASuO,MACL,MAAO7e,MAAK8e,QAAU,IAAM,GAGhC,QAASC,MACL,MAAO/e,MAAK8e,SAAW,GAyB3B,QAAS7S,IAAU4I,EAAOmK,GACtBpK,EAAeC,EAAO,EAAG,EAAG,WACxB,MAAO7U,MAAKkV,aAAajJ,SAASjM,KAAK8e,QAAS9e,KAAKif,UAAWD,KAgBxE,QAASE,IAAe/I,EAAUlL,GAC9B,MAAOA,GAAOkU,eAqDlB,QAASC,IAAYvV,GAGjB,MAAiD,OAAxCA,EAAQ,IAAImJ,cAAcqM,OAAO,GAI9C,QAASC,IAAgBR,EAAOG,EAASM,GACrC,MAAIT,GAAQ,GACDS,EAAU,KAAO,KAEjBA,EAAU,KAAO,KA0ChC,QAASC,IAAgBpP,GACrB,MAAOA,GAAMA,EAAI4C,cAAchB,QAAQ,IAAK,KAAO5B,EAMvD,QAASqP,IAAaC,GAGlB,IAFA,GAAWC,GAAGha,EAAMsF,EAAQ2U,EAAxB1oB,EAAI,EAEDA,EAAIwoB,EAAM9nB,QAAQ,CAKrB,IAJAgoB,EAAQJ,GAAgBE,EAAMxoB,IAAI0oB,MAAM,KACxCD,EAAIC,EAAMhoB,OACV+N,EAAO6Z,GAAgBE,EAAMxoB,EAAI,IACjCyO,EAAOA,EAAOA,EAAKia,MAAM,KAAO,KACzBD,EAAI,GAAG,CAEV,GADA1U,EAAS4U,GAAWD,EAAMvP,MAAM,EAAGsP,GAAGrP,KAAK,MAEvC,MAAOrF,EAEX,IAAItF,GAAQA,EAAK/N,QAAU+nB,GAAKzQ,EAAc0Q,EAAOja,GAAM,IAASga,EAAI,EAEpE,KAEJA,KAEJzoB,IAEJ,MAAO,MAGX,QAAS2oB,IAAWpP,GAChB,GAAIqP,GAAY,IAEhB,KAAKC,GAAQtP,QAA4B,KAAX3Y,GACtBA,GAAUA,EAAOJ,QACrB,IACIooB,EAAYE,GAAaC,MACzBrpB,EAAQ,YAAc6Z,GAGtByP,GAAmBJ,GACrB,MAAOhpB,IAEb,MAAOipB,IAAQtP,GAMnB,QAASyP,IAAoB9P,EAAK+P,GAC9B,GAAIC,EAeJ,OAdIhQ,KAEIgQ,EADAhT,EAAY+S,GACLE,GAAUjQ,GAGVkQ,GAAalQ,EAAK+P,MAKzBH,GAAeI,GAIhBJ,GAAaC,MAGxB,QAASK,IAAc7P,EAAMrC,GACzB,GAAe,OAAXA,EAAiB,CACjB,GAAIgD,GAAemP,EAEnB,IADAnS,EAAOoS,KAAO/P,EACO,MAAjBsP,GAAQtP,GACRD,EAAgB,uBACR,2OAIRY,EAAe2O,GAAQtP,GAAMK,YAC1B,IAA2B,MAAvB1C,EAAOqS,aAAsB,CACpC,GAAoC,MAAhCV,GAAQ3R,EAAOqS,cAUf,MAPKC,IAAetS,EAAOqS,gBACvBC,GAAetS,EAAOqS,kBAE1BC,GAAetS,EAAOqS,cAAc9V,MAChC8F,KAAMA,EACNrC,OAAQA,IAEL,IATPgD,GAAe2O,GAAQ3R,EAAOqS,cAAc3P,QA0BpD,MAdAiP,IAAQtP,GAAQ,GAAIa,GAAOH,EAAaC,EAAchD,IAElDsS,GAAejQ,IACfiQ,GAAejQ,GAAMlL,QAAQ,SAAUob,GACnCL,GAAaK,EAAElQ,KAAMkQ,EAAEvS,UAO/B8R,GAAmBzP,GAGZsP,GAAQtP,GAIf,aADOsP,IAAQtP,GACR,KAIf,QAASmQ,IAAanQ,EAAMrC,GACxB,GAAc,MAAVA,EAAgB,CAChB,GAAInD,GAAQmG,EAAemP,EAEN,OAAjBR,GAAQtP,KACRW,EAAe2O,GAAQtP,GAAMK,SAEjC1C,EAAS+C,EAAaC,EAAchD,GACpCnD,EAAS,GAAIqG,GAAOlD,GACpBnD,EAAOwV,aAAeV,GAAQtP,GAC9BsP,GAAQtP,GAAQxF,EAGhBiV,GAAmBzP,OAGE,OAAjBsP,GAAQtP,KAC0B,MAA9BsP,GAAQtP,GAAMgQ,aACdV,GAAQtP,GAAQsP,GAAQtP,GAAMgQ,aACN,MAAjBV,GAAQtP,UACRsP,IAAQtP,GAI3B,OAAOsP,IAAQtP,GAInB,QAAS4P,IAAWjQ,GAChB,GAAInF,EAMJ,IAJImF,GAAOA,EAAInC,SAAWmC,EAAInC,QAAQgS,QAClC7P,EAAMA,EAAInC,QAAQgS,QAGjB7P,EACD,MAAO4P,GAGX,KAAKpW,EAAQwG,GAAM,CAGf,GADAnF,EAAS4U,GAAWzP,GAEhB,MAAOnF,EAEXmF,IAAOA,GAGX,MAAOqP,IAAarP,GAGxB,QAASyQ,MACL,MAAOC,IAAOf,IAGlB,QAASgB,IAAepoB,GACpB,GAAI8S,GACAnU,EAAIqB,EAAEse,EAyBV,OAvBI3f,KAAsC,IAAjC4U,EAAgBvT,GAAG8S,WACxBA,EACInU,EAAE0pB,IAAe,GAAK1pB,EAAE0pB,IAAe,GAAMA,GAC7C1pB,EAAE2pB,IAAe,GAAK3pB,EAAE2pB,IAAe/J,GAAY5f,EAAE4pB,IAAO5pB,EAAE0pB,KAAUC,GACxE3pB,EAAE6pB,IAAe,GAAK7pB,EAAE6pB,IAAe,IAAmB,KAAZ7pB,EAAE6pB,MAA+B,IAAd7pB,EAAE8pB,KAA+B,IAAd9pB,EAAE+pB,KAAoC,IAAnB/pB,EAAEgqB,KAAuBH,GAChI7pB,EAAE8pB,IAAe,GAAK9pB,EAAE8pB,IAAe,GAAMA,GAC7C9pB,EAAE+pB,IAAe,GAAK/pB,EAAE+pB,IAAe,GAAMA,GAC7C/pB,EAAEgqB,IAAe,GAAKhqB,EAAEgqB,IAAe,IAAMA,IAC5C,EAEDpV,EAAgBvT,GAAG4oB,qBAAuB9V,EAAWyV,IAAQzV,EAAWwV,MACxExV,EAAWwV,IAEX/U,EAAgBvT,GAAG6oB,iBAAgC,IAAd/V,IACrCA,EAAWgW,IAEXvV,EAAgBvT,GAAG+oB,mBAAkC,IAAdjW,IACvCA,EAAWkW,IAGfzV,EAAgBvT,GAAG8S,SAAWA,GAG3B9S,EAyCX,QAASipB,IAAcxT,GACnB,GAAIlX,GAAG2qB,EAGHC,EAAWC,EAAYC,EAAYC,EAFnC1P,EAASnE,EAAOT,GAChByH,EAAQ8M,GAAiBC,KAAK5P,IAAW6P,GAAcD,KAAK5P,EAGhE,IAAI6C,EAAO,CAGP,IAFAlJ,EAAgBkC,GAAQrC,KAAM,EAEzB7U,EAAI,EAAG2qB,EAAIQ,GAASzqB,OAAQV,EAAI2qB,EAAG3qB,IACpC,GAAImrB,GAASnrB,GAAG,GAAGirB,KAAK/M,EAAM,IAAK,CAC/B2M,EAAaM,GAASnrB,GAAG,GACzB4qB,GAA+B,IAAnBO,GAASnrB,GAAG,EACxB,OAGR,GAAkB,MAAd6qB,EAEA,YADA3T,EAAO/B,UAAW,EAGtB,IAAI+I,EAAM,GAAI,CACV,IAAKle,EAAI,EAAG2qB,EAAIS,GAAS1qB,OAAQV,EAAI2qB,EAAG3qB,IACpC,GAAIorB,GAASprB,GAAG,GAAGirB,KAAK/M,EAAM,IAAK,CAE/B4M,GAAc5M,EAAM,IAAM,KAAOkN,GAASprB,GAAG,EAC7C,OAGR,GAAkB,MAAd8qB,EAEA,YADA5T,EAAO/B,UAAW,GAI1B,IAAKyV,GAA2B,MAAdE,EAEd,YADA5T,EAAO/B,UAAW,EAGtB,IAAI+I,EAAM,GAAI,CACV,IAAImN,GAAQJ,KAAK/M,EAAM,IAInB,YADAhH,EAAO/B,UAAW,EAFlB4V,GAAW,IAMnB7T,EAAOR,GAAKmU,GAAcC,GAAc,KAAOC,GAAY,IAC3DO,GAA0BpU,OAE1BA,GAAO/B,UAAW,EAK1B,QAASoW,IAAiBrU,GACtB,GAAImI,GAAUmM,GAAgBP,KAAK/T,EAAOT,GAE1C,IAAgB,OAAZ4I,EAEA,YADAnI,EAAOzB,GAAK,GAAIrC,OAAMiM,EAAQ,IAIlCqL,IAAcxT,IACU,IAApBA,EAAO/B,iBACA+B,GAAO/B,SACd7C,EAAMmZ,wBAAwBvU,IAetC,QAASwU,IAAStrB,EAAG4I,EAAG9I,GACpB,MAAS,OAALE,EACOA,EAEF,MAAL4I,EACOA,EAEJ9I,EAGX,QAASyrB,IAAiBzU,GAEtB,GAAI0U,GAAW,GAAIxY,MAAKd,EAAMiI,MAC9B,OAAIrD,GAAO2U,SACCD,EAAStI,iBAAkBsI,EAASE,cAAeF,EAASxL,eAEhEwL,EAASzI,cAAeyI,EAASG,WAAYH,EAASI,WAOlE,QAASC,IAAiB/U,GACtB,GAAIlX,GAAG2hB,EAAkBuK,EAAaC,EAAzBxZ,IAEb,KAAIuE,EAAOzB,GAAX,CA6BA,IAzBAyW,EAAcP,GAAiBzU,GAG3BA,EAAO2I,IAAyB,MAAnB3I,EAAO6I,GAAGgK,KAAqC,MAApB7S,EAAO6I,GAAG+J,KAClDsC,GAAsBlV,GAItBA,EAAOmV,aACPF,EAAYT,GAASxU,EAAO6I,GAAGiK,IAAOkC,EAAYlC,KAE9C9S,EAAOmV,WAAa1J,GAAWwJ,KAC/BnX,EAAgBkC,GAAQmT,oBAAqB,GAGjD1I,EAAO0B,GAAc8I,EAAW,EAAGjV,EAAOmV,YAC1CnV,EAAO6I,GAAG+J,IAASnI,EAAKmK,cACxB5U,EAAO6I,GAAGgK,IAAQpI,EAAKvB,cAQtBpgB,EAAI,EAAGA,EAAI,GAAqB,MAAhBkX,EAAO6I,GAAG/f,KAAcA,EACzCkX,EAAO6I,GAAG/f,GAAK2S,EAAM3S,GAAKksB,EAAYlsB,EAI1C,MAAOA,EAAI,EAAGA,IACVkX,EAAO6I,GAAG/f,GAAK2S,EAAM3S,GAAsB,MAAhBkX,EAAO6I,GAAG/f,GAAqB,IAANA,EAAU,EAAI,EAAKkX,EAAO6I,GAAG/f,EAI7D,MAApBkX,EAAO6I,GAAGkK,KACgB,IAAtB/S,EAAO6I,GAAGmK,KACY,IAAtBhT,EAAO6I,GAAGoK,KACiB,IAA3BjT,EAAO6I,GAAGqK,MACdlT,EAAOoV,UAAW,EAClBpV,EAAO6I,GAAGkK,IAAQ,GAGtB/S,EAAOzB,IAAMyB,EAAO2U,QAAUxI,GAAgBP,IAAYtQ,MAAM,KAAMG,GAGnD,MAAfuE,EAAON,MACPM,EAAOzB,GAAG8W,cAAcrV,EAAOzB,GAAG+W,gBAAkBtV,EAAON,MAG3DM,EAAOoV,WACPpV,EAAO6I,GAAGkK,IAAQ,KAI1B,QAASmC,IAAsBlV,GAC3B,GAAIuV,GAAGC,EAAU5I,EAAMC,EAASN,EAAKC,EAAKiJ,EAAMC,CAGhD,IADAH,EAAIvV,EAAO2I,GACC,MAAR4M,EAAEI,IAAqB,MAAPJ,EAAEK,GAAoB,MAAPL,EAAEM,EACjCtJ,EAAM,EACNC,EAAM,EAMNgJ,EAAWhB,GAASe,EAAEI,GAAI3V,EAAO6I,GAAGiK,IAAO3F,GAAW2I,KAAe,EAAG,GAAG/M,MAC3E6D,EAAO4H,GAASe,EAAEK,EAAG,KACrB/I,EAAU2H,GAASe,EAAEM,EAAG,IACV,GAAKhJ,EAAU,KACzB6I,GAAkB,OAEnB,CACHnJ,EAAMvM,EAAOH,QAAQ2N,MAAMjB,IAC3BC,EAAMxM,EAAOH,QAAQ2N,MAAMhB,GAE3B,IAAIuJ,GAAU5I,GAAW2I,KAAevJ,EAAKC,EAE7CgJ,GAAWhB,GAASe,EAAES,GAAIhW,EAAO6I,GAAGiK,IAAOiD,EAAQhN,MAGnD6D,EAAO4H,GAASe,EAAEA,EAAGQ,EAAQnJ,MAElB,MAAP2I,EAAE1jB,IAEFgb,EAAU0I,EAAE1jB,GACE,GAAKgb,EAAU,KACzB6I,GAAkB,GAER,MAAPH,EAAE7sB,GAETmkB,EAAU0I,EAAE7sB,EAAI6jB,GACZgJ,EAAE7sB,EAAI,GAAK6sB,EAAE7sB,EAAI,KACjBgtB,GAAkB,IAItB7I,EAAUN,EAGdK,EAAO,GAAKA,EAAOS,GAAYmI,EAAUjJ,EAAKC,GAC9C1O,EAAgBkC,GAAQoT,gBAAiB,EACf,MAAnBsC,EACP5X,EAAgBkC,GAAQsT,kBAAmB,GAE3CmC,EAAO9I,GAAmB6I,EAAU5I,EAAMC,EAASN,EAAKC,GACxDxM,EAAO6I,GAAGiK,IAAQ2C,EAAK1M,KACvB/I,EAAOmV,WAAaM,EAAKvI,WAQjC,QAASkH,IAA0BpU,GAE/B,GAAIA,EAAOR,KAAOpE,EAAM6a,SAEpB,WADAzC,IAAcxT,EAIlBA,GAAO6I,MACP/K,EAAgBkC,GAAQ9C,OAAQ,CAGhC,IACIpU,GAAGotB,EAAazN,EAAQhC,EAAO0P,EAD/BhS,EAAS,GAAKnE,EAAOT,GAErB6W,EAAejS,EAAO3a,OACtB6sB,EAAyB,CAI7B,KAFA5N,EAASpB,EAAarH,EAAOR,GAAIQ,EAAOH,SAASmH,MAAMG,QAElDre,EAAI,EAAGA,EAAI2f,EAAOjf,OAAQV,IAC3B2d,EAAQgC,EAAO3f,GACfotB,GAAe/R,EAAO6C,MAAMgB,EAAsBvB,EAAOzG,SAAgB,GAGrEkW,IACAC,EAAUhS,EAAOoC,OAAO,EAAGpC,EAAOmS,QAAQJ,IACtCC,EAAQ3sB,OAAS,GACjBsU,EAAgBkC,GAAQ5C,YAAYb,KAAK4Z,GAE7ChS,EAASA,EAAOlC,MAAMkC,EAAOmS,QAAQJ,GAAeA,EAAY1sB,QAChE6sB,GAA0BH,EAAY1sB,QAGtCqd,GAAqBJ,IACjByP,EACApY,EAAgBkC,GAAQ9C,OAAQ,EAGhCY,EAAgBkC,GAAQ7C,aAAaZ,KAAKkK;iDAE9CmC,GAAwBnC,EAAOyP,EAAalW,IAEvCA,EAAOtB,UAAYwX,GACxBpY,EAAgBkC,GAAQ7C,aAAaZ,KAAKkK,EAKlD3I,GAAgBkC,GAAQ1C,cAAgB8Y,EAAeC,EACnDlS,EAAO3a,OAAS,GAChBsU,EAAgBkC,GAAQ5C,YAAYb,KAAK4H,GAIzCnE,EAAO6I,GAAGkK,KAAS,KACiB,IAApCjV,EAAgBkC,GAAQpB,SACxBoB,EAAO6I,GAAGkK,IAAQ,IAClBjV,EAAgBkC,GAAQpB,YAAUD,IAGtCb,EAAgBkC,GAAQpC,gBAAkBoC,EAAO6I,GAAG5G,MAAM,GAC1DnE,EAAgBkC,GAAQnC,SAAWmC,EAAOuW,UAE1CvW,EAAO6I,GAAGkK,IAAQyD,GAAgBxW,EAAOH,QAASG,EAAO6I,GAAGkK,IAAO/S,EAAOuW,WAE1ExB,GAAgB/U,GAChB2S,GAAc3S,GAIlB,QAASwW,IAAiB3Z,EAAQ4Z,EAAM5Y,GACpC,GAAI6Y,EAEJ,OAAgB,OAAZ7Y,EAEO4Y,EAEgB,MAAvB5Z,EAAO8Z,aACA9Z,EAAO8Z,aAAaF,EAAM5Y,GACX,MAAfhB,EAAO+Z,MAEdF,EAAO7Z,EAAO+Z,KAAK/Y,GACf6Y,GAAQD,EAAO,KACfA,GAAQ,IAEPC,GAAiB,KAATD,IACTA,EAAO,GAEJA,GAGAA,EAKf,QAASI,IAAyB7W,GAC9B,GAAI8W,GACAC,EAEAC,EACAluB,EACAmuB,CAEJ,IAAyB,IAArBjX,EAAOR,GAAGhW,OAGV,MAFAsU,GAAgBkC,GAAQvC,eAAgB,OACxCuC,EAAOzB,GAAK,GAAIrC,MAAK6C,KAIzB,KAAKjW,EAAI,EAAGA,EAAIkX,EAAOR,GAAGhW,OAAQV,IAC9BmuB,EAAe,EACfH,EAAa7X,KAAee,GACN,MAAlBA,EAAO2U,UACPmC,EAAWnC,QAAU3U,EAAO2U,SAEhCmC,EAAWtX,GAAKQ,EAAOR,GAAG1W,GAC1BsrB,GAA0B0C,GAErB9Y,EAAQ8Y,KAKbG,GAAgBnZ,EAAgBgZ,GAAYxZ,cAG5C2Z,GAAkE,GAAlDnZ,EAAgBgZ,GAAY3Z,aAAa3T,OAEzDsU,EAAgBgZ,GAAYI,MAAQD,GAEjB,MAAfD,GAAuBC,EAAeD,KACtCA,EAAcC,EACdF,EAAaD,GAIrBra,GAAOuD,EAAQ+W,GAAcD,GAGjC,QAASK,IAAiBnX,GACtB,IAAIA,EAAOzB,GAAX,CAIA,GAAIzV,GAAIkc,EAAqBhF,EAAOT,GACpCS,GAAO6I,GAAK1M,GAAKrT,EAAEigB,KAAMjgB,EAAEkgB,MAAOlgB,EAAEslB,KAAOtlB,EAAE2hB,KAAM3hB,EAAE2tB,KAAM3tB,EAAEsuB,OAAQtuB,EAAEuuB,OAAQvuB,EAAEwuB,aAAc,SAAUxb,GACrG,MAAOA,IAAOkS,SAASlS,EAAK,MAGhCiZ,GAAgB/U,IAGpB,QAASuX,IAAkBvX,GACvB,GAAI1D,GAAM,GAAIyD,GAAO4S,GAAc6E,GAAcxX,IAOjD,OANI1D,GAAI8Y,WAEJ9Y,EAAIsR,IAAI,EAAG,KACXtR,EAAI8Y,aAAWzW,IAGZrC,EAGX,QAASkb,IAAexX,GACpB,GAAIvE,GAAQuE,EAAOT,GACf3C,EAASoD,EAAOR,EAIpB,OAFAQ,GAAOH,QAAUG,EAAOH,SAAWoS,GAAUjS,EAAOP,IAEtC,OAAVhE,OAA8BkD,KAAX/B,GAAkC,KAAVnB,EACpCqD,GAAevB,WAAW,KAGhB,gBAAV9B,KACPuE,EAAOT,GAAK9D,EAAQuE,EAAOH,QAAQ4X,SAAShc,IAG5C0E,EAAS1E,GACF,GAAIsE,GAAO4S,GAAclX,KACzBQ,EAAOR,GACduE,EAAOzB,GAAK9C,EACLD,EAAQoB,GACfia,GAAyB7W,GAClBpD,EACPwX,GAA0BpU,GAE1B0X,GAAgB1X,GAGfhC,EAAQgC,KACTA,EAAOzB,GAAK,MAGTyB,IAGX,QAAS0X,IAAgB1X,GACrB,GAAIvE,GAAQuE,EAAOT,OACLZ,KAAVlD,EACAuE,EAAOzB,GAAK,GAAIrC,MAAKd,EAAMiI,OACpBpH,EAAOR,GACduE,EAAOzB,GAAK,GAAIrC,MAAKT,EAAMiB,WACH,gBAAVjB,GACd4Y,GAAiBrU,GACVxE,EAAQC,IACfuE,EAAO6I,GAAK1M,EAAIV,EAAMwG,MAAM,GAAI,SAAUnG,GACtC,MAAOkS,UAASlS,EAAK,MAEzBiZ,GAAgB/U,IACS,gBAAZ,GACbmX,GAAiBnX,GACVhE,EAASP,GAEhBuE,EAAOzB,GAAK,GAAIrC,MAAKT,GAErBL,EAAMmZ,wBAAwBvU,GAItC,QAASjD,IAAkBtB,EAAOmB,EAAQC,EAAQC,EAAQ6a,GACtD,GAAI3uB,KAoBJ,QAlBe,IAAX6T,IAA8B,IAAXA,IACnBC,EAASD,EACTA,MAAS8B,KAGR/C,EAASH,IAAUI,EAAcJ,IAC7BD,EAAQC,IAA2B,IAAjBA,EAAMjS,UAC7BiS,MAAQkD,IAIZ3V,EAAEsW,kBAAmB,EACrBtW,EAAE2rB,QAAU3rB,EAAE2W,OAASgY,EACvB3uB,EAAEyW,GAAK5C,EACP7T,EAAEuW,GAAK9D,EACPzS,EAAEwW,GAAK5C,EACP5T,EAAE0V,QAAU5B,EAELya,GAAiBvuB,GAG5B,QAAS8sB,IAAara,EAAOmB,EAAQC,EAAQC,GACzC,MAAOC,IAAiBtB,EAAOmB,EAAQC,EAAQC,GAAQ,GAgC3D,QAAS8a,IAAOvb,EAAIwb,GAChB,GAAIvb,GAAKxT,CAIT,IAHuB,IAAnB+uB,EAAQruB,QAAgBgS,EAAQqc,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQruB,OACT,MAAOssB,KAGX,KADAxZ,EAAMub,EAAQ,GACT/uB,EAAI,EAAGA,EAAI+uB,EAAQruB,SAAUV,EACzB+uB,EAAQ/uB,GAAGkV,YAAa6Z,EAAQ/uB,GAAGuT,GAAIC,KACxCA,EAAMub,EAAQ/uB,GAGtB,OAAOwT,GAIX,QAAS6E,MAGL,MAAOyW,IAAO,cAFA3V,MAAM1Y,KAAKgS,UAAW,IAKxC,QAAS+K,MAGL,MAAOsR,IAAO,aAFA3V,MAAM1Y,KAAKgS,UAAW,IASxC,QAASuc,IAAUC,GACf,GAAI5S,GAAkBH,EAAqB+S,GACvCC,EAAQ7S,EAAgB4D,MAAQ,EAChCkP,EAAW9S,EAAgB+S,SAAW,EACtChO,EAAS/E,EAAgB6D,OAAS,EAClCmP,EAAQhT,EAAgByH,MAAQ,EAChCwL,EAAOjT,EAAgBiJ,KAAO,EAC9BsC,EAAQvL,EAAgBsR,MAAQ,EAChC5F,EAAU1L,EAAgBiS,QAAU,EACpCiB,EAAUlT,EAAgBkS,QAAU,EACpCiB,EAAenT,EAAgBmS,aAAe,CAGlD1lB,MAAK2mB,eAAiBD,EACR,IAAVD,EACU,IAAVxH,EACQ,IAARH,EAAe,GAAK,GAGxB9e,KAAK4mB,OAASJ,EACF,EAARD,EAIJvmB,KAAKwX,SAAWc,EACD,EAAX+N,EACQ,GAARD,EAEJpmB,KAAK6mB,SAEL7mB,KAAKiO,QAAUoS,KAEfrgB,KAAK8mB,UAGT,QAASC,IAAY7c,GACjB,MAAOA,aAAegc,IAG1B,QAASc,IAAUvY,GACf,MAAIA,GAAS,GACyB,EAA3BC,KAAKuY,OAAO,EAAIxY,GAEhBC,KAAKuY,MAAMxY,GAM1B,QAASyY,IAAQrS,EAAOsS,GACpBvS,EAAeC,EAAO,EAAG,EAAG,WACxB,GAAIqS,GAASlnB,KAAKonB,YACdC,EAAO,GAKX,OAJIH,GAAS,IACTA,GAAUA,EACVG,EAAO,KAEJA,EAAOjT,KAAY8S,EAAS,IAAK,GAAKC,EAAY/S,IAAW,EAAW,GAAI,KAuB3F,QAASkT,IAAiBC,EAAShV,GAC/B,GAAIiV,IAAWjV,GAAU,IAAI6C,MAAMmS,EAEnC,IAAgB,OAAZC,EACA,MAAO,KAGX,IAAIC,GAAUD,EAAQA,EAAQ5vB,OAAS,OACnC8vB,GAAWD,EAAQ,IAAIrS,MAAMuS,MAAiB,IAAK,EAAG,GACtD1I,EAAuB,GAAXyI,EAAM,GAAW7Y,EAAM6Y,EAAM,GAE7C,OAAmB,KAAZzI,EACL,EACa,MAAbyI,EAAM,GAAazI,GAAWA,EAIpC,QAAS2I,IAAgB/d,EAAOge,GAC5B,GAAInd,GAAKiI,CACT,OAAIkV,GAAM9Z,QACNrD,EAAMmd,EAAMC,QACZnV,GAAQpE,EAAS1E,IAAUQ,EAAOR,GAASA,EAAMiB,UAAYoZ,GAAYra,GAAOiB,WAAaJ,EAAII,UAEjGJ,EAAIiC,GAAGob,QAAQrd,EAAIiC,GAAG7B,UAAY6H,GAClCnJ,EAAM8E,aAAa5D,GAAK,GACjBA,GAEAwZ,GAAYra,GAAOme,QAIlC,QAASC,IAAetvB,GAGpB,MAAoD,KAA5C+V,KAAKuY,MAAMtuB,EAAEgU,GAAGub,oBAAsB,IAqBlD,QAASC,IAActe,EAAOue,GAC1B,GACIC,GADAnB,EAASlnB,KAAKgO,SAAW,CAE7B,KAAKhO,KAAKoM,UACN,MAAgB,OAATvC,EAAgB7J,KAAOmN,GAElC,IAAa,MAATtD,EAAe,CACf,GAAqB,gBAAVA,IAEP,GAAc,QADdA,EAAQyd,GAAiBgB,GAAkBze,IAEvC,MAAO7J,UAEJ0O,MAAKe,IAAI5F,GAAS,KACzBA,GAAgB,GAmBpB,QAjBK7J,KAAK+N,QAAUqa,IAChBC,EAAcJ,GAAcjoB,OAEhCA,KAAKgO,QAAUnE,EACf7J,KAAK+N,QAAS,EACK,MAAfsa,GACAroB,KAAKgc,IAAIqM,EAAa,KAEtBnB,IAAWrd,KACNue,GAAiBpoB,KAAKuoB,kBACvBC,GAAYxoB,KAAMyoB,GAAe5e,EAAQqd,EAAQ,KAAM,GAAG,GAClDlnB,KAAKuoB,oBACbvoB,KAAKuoB,mBAAoB,EACzB/e,EAAM8E,aAAatO,MAAM,GACzBA,KAAKuoB,kBAAoB,OAG1BvoB,KAEP,MAAOA,MAAK+N,OAASmZ,EAASe,GAAcjoB,MAIpD,QAAS0oB,IAAY7e,EAAOue,GACxB,MAAa,OAATve,GACqB,gBAAVA,KACPA,GAASA,GAGb7J,KAAKonB,UAAUvd,EAAOue,GAEfpoB,OAECA,KAAKonB,YAIrB,QAASuB,IAAgBP,GACrB,MAAOpoB,MAAKonB,UAAU,EAAGgB,GAG7B,QAASQ,IAAkBR,GASvB,MARIpoB,MAAK+N,SACL/N,KAAKonB,UAAU,EAAGgB,GAClBpoB,KAAK+N,QAAS,EAEVqa,GACApoB,KAAK6oB,SAASZ,GAAcjoB,MAAO,MAGpCA,KAGX,QAAS8oB,MACL,GAAiB,MAAb9oB,KAAK8N,KACL9N,KAAKonB,UAAUpnB,KAAK8N,UACjB,IAAuB,gBAAZ9N,MAAK2N,GAAiB,CACpC,GAAIob,GAAQzB,GAAiB0B,GAAahpB,KAAK2N,GAClC,OAATob,EACA/oB,KAAKonB,UAAU2B,GAGf/oB,KAAKonB,UAAU,GAAG,GAG1B,MAAOpnB,MAGX,QAASipB,IAAsBpf,GAC3B,QAAK7J,KAAKoM,YAGVvC,EAAQA,EAAQqa,GAAYra,GAAOud,YAAc,GAEzCpnB,KAAKonB,YAAcvd,GAAS,IAAO,GAG/C,QAASqf,MACL,MACIlpB,MAAKonB,YAAcpnB,KAAK8nB,QAAQ1Q,MAAM,GAAGgQ,aACzCpnB,KAAKonB,YAAcpnB,KAAK8nB,QAAQ1Q,MAAM,GAAGgQ,YAIjD,QAAS+B,MACL,IAAK/b,EAAYpN,KAAKopB,eAClB,MAAOppB,MAAKopB,aAGhB,IAAIhyB,KAKJ,IAHAiW,EAAWjW,EAAG4I,MACd5I,EAAIwuB,GAAcxuB,GAEdA,EAAE6f,GAAI,CACN,GAAIoS,GAAQjyB,EAAE2W,OAAShD,EAAU3T,EAAE6f,IAAMiN,GAAY9sB,EAAE6f,GACvDjX,MAAKopB,cAAgBppB,KAAKoM,WACtB8C,EAAc9X,EAAE6f,GAAIoS,EAAMC,WAAa,MAE3CtpB,MAAKopB,eAAgB,CAGzB,OAAOppB,MAAKopB,cAGhB,QAASG,MACL,QAAOvpB,KAAKoM,YAAapM,KAAK+N,OAGlC,QAASyb,MACL,QAAOxpB,KAAKoM,WAAYpM,KAAK+N,OAGjC,QAAS0b,MACL,QAAOzpB,KAAKoM,YAAYpM,KAAK+N,QAA2B,IAAjB/N,KAAKgO,SAWhD,QAASya,IAAgB5e,EAAOuG,GAC5B,GAGIiX,GACAqC,EACAC,EALAxD,EAAWtc,EAEXuL,EAAQ,IAuDZ,OAlDI2R,IAAWld,GACXsc,GACI/L,GAAKvQ,EAAM8c,cACX1mB,EAAK4J,EAAM+c,MACXzM,EAAKtQ,EAAM2N,SAERpN,EAASP,IAChBsc,KACI/V,EACA+V,EAAS/V,GAAOvG,EAEhBsc,EAASO,aAAe7c,IAElBuL,EAAQwU,GAAYzH,KAAKtY,KACnCwd,EAAqB,MAAbjS,EAAM,IAAe,EAAI,EACjC+Q,GACIlM,EAAK,EACLha,EAAK4O,EAAMuG,EAAM6L,KAAiCoG,EAClDnN,EAAKrL,EAAMuG,EAAM+L,KAAiCkG,EAClD1uB,EAAKkW,EAAMuG,EAAMgM,KAAiCiG,EAClD7hB,EAAKqJ,EAAMuG,EAAMiM,KAAiCgG,EAClDjN,GAAKvL,EAAMmY,GAA8B,IAArB5R,EAAMkM,MAAwB+F,KAE5CjS,EAAQyU,GAAS1H,KAAKtY,KAChCwd,EAAqB,MAAbjS,EAAM,IAAe,EAAI,EACjC+Q,GACIlM,EAAI6P,GAAS1U,EAAM,GAAIiS,GACvBlN,EAAI2P,GAAS1U,EAAM,GAAIiS,GACvB1D,EAAImG,GAAS1U,EAAM,GAAIiS,GACvBpnB,EAAI6pB,GAAS1U,EAAM,GAAIiS,GACvBnN,EAAI4P,GAAS1U,EAAM,GAAIiS,GACvB1uB,EAAImxB,GAAS1U,EAAM,GAAIiS,GACvB7hB,EAAIskB,GAAS1U,EAAM,GAAIiS,KAER,MAAZlB,EACPA,KAC2B,gBAAbA,KAA0B,QAAUA,IAAY,MAAQA,MACtEwD,EAAUI,GAAkB7F,GAAYiC,EAAS5Y,MAAO2W,GAAYiC,EAAS7Y,KAE7E6Y,KACAA,EAAS/L,GAAKuP,EAAQjD,aACtBP,EAAShM,EAAIwP,EAAQrR,QAGzBoR,EAAM,GAAIxD,IAASC,GAEfY,GAAWld,IAAUe,EAAWf,EAAO,aACvC6f,EAAIzb,QAAUpE,EAAMoE,SAGjByb,EAKX,QAASI,IAAUE,EAAK3C,GAIpB,GAAI3c,GAAMsf,GAAOC,WAAWD,EAAIhY,QAAQ,IAAK,KAE7C,QAAQtF,MAAMhC,GAAO,EAAIA,GAAO2c,EAGpC,QAAS6C,IAA0BC,EAAMd,GACrC,GAAI3e,IAAOgc,aAAc,EAAGpO,OAAQ,EAUpC,OARA5N,GAAI4N,OAAS+Q,EAAMjS,QAAU+S,EAAK/S,QACC,IAA9BiS,EAAMlS,OAASgT,EAAKhT,QACrBgT,EAAKrC,QAAQ9L,IAAItR,EAAI4N,OAAQ,KAAK8R,QAAQf,MACxC3e,EAAI4N,OAGV5N,EAAIgc,cAAgB2C,GAAUc,EAAKrC,QAAQ9L,IAAItR,EAAI4N,OAAQ,KAEpD5N,EAGX,QAASqf,IAAkBI,EAAMd,GAC7B,GAAI3e,EACJ,OAAMyf,GAAK/d,WAAaid,EAAMjd,WAI9Bid,EAAQzB,GAAgByB,EAAOc,GAC3BA,EAAKE,SAAShB,GACd3e,EAAMwf,GAA0BC,EAAMd,IAEtC3e,EAAMwf,GAA0Bb,EAAOc,GACvCzf,EAAIgc,cAAgBhc,EAAIgc,aACxBhc,EAAI4N,QAAU5N,EAAI4N,QAGf5N,IAZKgc,aAAc,EAAGpO,OAAQ,GAgBzC,QAASgS,IAAYC,EAAW9Z,GAC5B,MAAO,UAAUhD,EAAK+c,GAClB,GAAIC,GAAKC,CAWT,OATe,QAAXF,GAAoB9d,OAAO8d,KAC3Bha,EAAgBC,EAAM,YAAcA,EAAQ,uDAAyDA,EAAO,kGAE5Gia,EAAMjd,EAAKA,EAAM+c,EAAQA,EAASE,GAGtCjd,EAAqB,gBAARA,IAAoBA,EAAMA,EACvCgd,EAAMhC,GAAehb,EAAK+c,GAC1BhC,GAAYxoB,KAAMyqB,EAAKF,GAChBvqB,MAIf,QAASwoB,IAAahX,EAAK2U,EAAUwE,EAAUrc,GAC3C,GAAIoY,GAAeP,EAASQ,cACxBH,EAAOQ,GAASb,EAASS,OACzBtO,EAAS0O,GAASb,EAAS3O,QAE1BhG,GAAIpF,YAKTkC,EAA+B,MAAhBA,GAA8BA,EAEzCoY,GACAlV,EAAI7E,GAAGob,QAAQvW,EAAI7E,GAAG7B,UAAY4b,EAAeiE,GAEjDnE,GACAxS,EAAMxC,EAAK,OAAQ1L,EAAI0L,EAAK,QAAUgV,EAAOmE,GAE7CrS,GACAI,GAASlH,EAAK1L,EAAI0L,EAAK,SAAW8G,EAASqS,GAE3Crc,GACA9E,EAAM8E,aAAakD,EAAKgV,GAAQlO,IAOxC,QAASsS,IAAkBC,EAAUpZ,GACjC,GAAIkB,GAAOkY,EAASlY,KAAKlB,EAAK,QAAQ,EACtC,OAAOkB,IAAQ,EAAI,WACXA,GAAQ,EAAI,WACZA,EAAO,EAAI,UACXA,EAAO,EAAI,UACXA,EAAO,EAAI,UACXA,EAAO,EAAI,WAAa,WAGpC,QAASmY,IAAYC,EAAMC,GAGvB,GAAIvZ,GAAMsZ,GAAQ7G,KACd+G,EAAMrD,GAAgBnW,EAAKzR,MAAMkrB,QAAQ,OACzClgB,EAASxB,EAAM2hB,eAAenrB,KAAMirB,IAAQ,WAE5CvZ,EAASsZ,IAAYra,EAAWqa,EAAQhgB,IAAWggB,EAAQhgB,GAAQrT,KAAKqI,KAAMyR,GAAOuZ,EAAQhgB,GAEjG,OAAOhL,MAAKgL,OAAO0G,GAAU1R,KAAKkV,aAAa3D,SAASvG,EAAQhL,KAAMkkB,GAAYzS,KAGtF,QAASqW,MACL,MAAO,IAAI3Z,GAAOnO,MAGtB,QAASoqB,IAASvgB,EAAOsJ,GACrB,GAAIiY,GAAa7c,EAAS1E,GAASA,EAAQqa,GAAYra,EACvD,UAAM7J,KAAKoM,YAAagf,EAAWhf,aAGnC+G,EAAQD,EAAgB9F,EAAY+F,GAAiB,cAARA,GAC/B,gBAAVA,EACOnT,KAAK8K,UAAYsgB,EAAWtgB,UAE5BsgB,EAAWtgB,UAAY9K,KAAK8nB,QAAQoD,QAAQ/X,GAAOrI,WAIlE,QAASuf,IAAUxgB,EAAOsJ,GACtB,GAAIiY,GAAa7c,EAAS1E,GAASA,EAAQqa,GAAYra,EACvD,UAAM7J,KAAKoM,YAAagf,EAAWhf,aAGnC+G,EAAQD,EAAgB9F,EAAY+F,GAAiB,cAARA,GAC/B,gBAAVA,EACOnT,KAAK8K,UAAYsgB,EAAWtgB,UAE5B9K,KAAK8nB,QAAQuD,MAAMlY,GAAOrI,UAAYsgB,EAAWtgB,WAIhE,QAASwgB,IAAW/d,EAAMD,EAAI6F,EAAOoY,GAEjC,MADAA,GAAcA,GAAe,MACF,MAAnBA,EAAY,GAAavrB,KAAKoqB,QAAQ7c,EAAM4F,IAAUnT,KAAKqqB,SAAS9c,EAAM4F,MAC1D,MAAnBoY,EAAY,GAAavrB,KAAKqqB,SAAS/c,EAAI6F,IAAUnT,KAAKoqB,QAAQ9c,EAAI6F,IAG/E,QAASqY,IAAQ3hB,EAAOsJ,GACpB,GACIsY,GADAL,EAAa7c,EAAS1E,GAASA,EAAQqa,GAAYra,EAEvD,UAAM7J,KAAKoM,YAAagf,EAAWhf,aAGnC+G,EAAQD,EAAeC,GAAS,eAClB,gBAAVA,EACOnT,KAAK8K,YAAcsgB,EAAWtgB,WAErC2gB,EAAUL,EAAWtgB,UACd9K,KAAK8nB,QAAQoD,QAAQ/X,GAAOrI,WAAa2gB,GAAWA,GAAWzrB,KAAK8nB,QAAQuD,MAAMlY,GAAOrI,YAIxG,QAAS4gB,IAAe7hB,EAAOsJ,GAC3B,MAAOnT,MAAKwrB,OAAO3hB,EAAOsJ,IAAUnT,KAAKoqB,QAAQvgB,EAAMsJ,GAG3D,QAASwY,IAAgB9hB,EAAOsJ,GAC5B,MAAOnT,MAAKwrB,OAAO3hB,EAAOsJ,IAAUnT,KAAKqqB,SAASxgB,EAAMsJ,GAG5D,QAASR,IAAM9I,EAAOsJ,EAAOyY,GACzB,GAAIC,GACAC,EACAC,EAAOra,CAEX,OAAK1R,MAAKoM,WAIVyf,EAAOjE,GAAgB/d,EAAO7J,MAEzB6rB,EAAKzf,WAIV0f,EAAoD,KAAvCD,EAAKzE,YAAcpnB,KAAKonB,aAErCjU,EAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAA+B,YAAVA,GACzCzB,EAASsa,GAAUhsB,KAAM6rB,GACX,YAAV1Y,EACAzB,GAAkB,EACD,SAAVyB,IACPzB,GAAkB,MAGtBqa,EAAQ/rB,KAAO6rB,EACfna,EAAmB,WAAVyB,EAAqB4Y,EAAQ,IACxB,WAAV5Y,EAAqB4Y,EAAQ,IACnB,SAAV5Y,EAAmB4Y,EAAQ,KACjB,QAAV5Y,GAAmB4Y,EAAQD,GAAa,MAC9B,SAAV3Y,GAAoB4Y,EAAQD,GAAa,OACzCC,GAEDH,EAAUla,EAASlD,EAASkD,IAvBxBvE,KANAA,IAgCf,QAAS6e,IAAW10B,EAAG4I,GAEnB,GAGI+rB,GAASC,EAHTC,EAA0C,IAAvBjsB,EAAEiX,OAAS7f,EAAE6f,SAAiBjX,EAAEkX,QAAU9f,EAAE8f,SAE/DgV,EAAS90B,EAAEwwB,QAAQ9L,IAAImQ,EAAgB,SAc3C,OAXIjsB,GAAIksB,EAAS,GACbH,EAAU30B,EAAEwwB,QAAQ9L,IAAImQ,EAAiB,EAAG,UAE5CD,GAAUhsB,EAAIksB,IAAWA,EAASH,KAElCA,EAAU30B,EAAEwwB,QAAQ9L,IAAImQ,EAAiB,EAAG,UAE5CD,GAAUhsB,EAAIksB,IAAWH,EAAUG,MAI9BD,EAAiBD,IAAW,EAMzC,QAASniB,MACL,MAAO/J,MAAK8nB,QAAQ7c,OAAO,MAAMD,OAAO,oCAG5C,QAASqhB,MACL,GAAI1zB,GAAIqH,KAAK8nB,QAAQ1c,KACrB,OAAI,GAAIzS,EAAEwe,QAAUxe,EAAEwe,QAAU,KACxBxG,EAAWrG,KAAKjK,UAAUgsB,aAEnBrsB,KAAKssB,SAASD,cAEd7W,EAAa7c,EAAG,gCAGpB6c,EAAa7c,EAAG,kCAU/B,QAAS4zB,MACL,IAAKvsB,KAAKoM,UACN,MAAO,qBAAuBpM,KAAK2N,GAAK,MAE5C,IAAIqH,GAAO,SACPwX,EAAO,EACNxsB,MAAKupB,YACNvU,EAA4B,IAArBhV,KAAKonB,YAAoB,aAAe,mBAC/CoF,EAAO,IAEX,IAAIC,GAAS,IAAMzX,EAAO,MACtBmC,EAAQ,EAAInX,KAAKmX,QAAUnX,KAAKmX,QAAU,KAAQ,OAAS,SAE3DuV,EAASF,EAAO,MAEpB,OAAOxsB,MAAKgL,OAAOyhB,EAAStV,EAHb,wBAG+BuV,GAGlD,QAAS1hB,IAAQ2hB,GACRA,IACDA,EAAc3sB,KAAKypB,QAAUjgB,EAAMojB,iBAAmBpjB,EAAMqjB,cAEhE,IAAInb,GAAS8D,EAAaxV,KAAM2sB,EAChC,OAAO3sB,MAAKkV,aAAa4X,WAAWpb,GAGxC,QAASnE,IAAMwd,EAAMzY,GACjB,MAAItS,MAAKoM,YACCmC,EAASwc,IAASA,EAAK3e,WACxB8X,GAAY6G,GAAM3e,WAChBqc,IAAgBnb,GAAItN,KAAMuN,KAAMwd,IAAO9f,OAAOjL,KAAKiL,UAAU8hB,UAAUza,GAEvEtS,KAAKkV,aAAajD,cAIjC,QAAS+a,IAAS1a,GACd,MAAOtS,MAAKuN,KAAK2W,KAAe5R,GAGpC,QAAShF,IAAIyd,EAAMzY,GACf,MAAItS,MAAKoM,YACCmC,EAASwc,IAASA,EAAK3e,WACxB8X,GAAY6G,GAAM3e,WAChBqc,IAAgBlb,KAAMvN,KAAMsN,GAAIyd,IAAO9f,OAAOjL,KAAKiL,UAAU8hB,UAAUza,GAEvEtS,KAAKkV,aAAajD,cAIjC,QAASgb,IAAO3a,GACZ,MAAOtS,MAAKsN,GAAG4W,KAAe5R,GAMlC,QAASrH,IAAQmF,GACb,GAAI8c,EAEJ,YAAYngB,KAARqD,EACOpQ,KAAKiO,QAAQgS,OAEpBiN,EAAgB7M,GAAUjQ,GACL,MAAjB8c,IACAltB,KAAKiO,QAAUif,GAEZltB,MAef,QAASkV,MACL,MAAOlV,MAAKiO,QAGhB,QAASid,IAAS/X,GAId,OAHAA,EAAQD,EAAeC,IAInB,IAAK,OACDnT,KAAKoX,MAAM,EAEf,KAAK,UACL,IAAK,QACDpX,KAAK6Y,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACL,IAAK,OACD7Y,KAAK8e,MAAM,EAEf,KAAK,OACD9e,KAAKif,QAAQ,EAEjB,KAAK,SACDjf,KAAKymB,QAAQ,EAEjB,KAAK,SACDzmB,KAAK0mB,aAAa,GAgB1B,MAZc,SAAVvT,GACAnT,KAAKib,QAAQ,GAEH,YAAV9H,GACAnT,KAAKmtB,WAAW,GAIN,YAAVha,GACAnT,KAAKoX,MAAqC,EAA/B1I,KAAKE,MAAM5O,KAAKoX,QAAU,IAGlCpX,KAGX,QAASqrB,IAAOlY,GAEZ,WAAcpG,MADdoG,EAAQD,EAAeC,KACc,gBAAVA,EAChBnT,MAIG,SAAVmT,IACAA,EAAQ,OAGLnT,KAAKkrB,QAAQ/X,GAAO6I,IAAI,EAAc,YAAV7I,EAAsB,OAASA,GAAQ0V,SAAS,EAAG,OAG1F,QAAS/d,MACL,MAAO9K,MAAK2M,GAAG7B,UAAmC,KAArB9K,KAAKgO,SAAW,GAGjD,QAASof,MACL,MAAO1e,MAAKE,MAAM5O,KAAK8K,UAAY,KAGvC,QAASwhB,MACL,MAAO,IAAIhiB,MAAKtK,KAAK8K,WAGzB,QAASwe,MACL,GAAI3wB,GAAIqH,IACR,QAAQrH,EAAEwe,OAAQxe,EAAEye,QAASze,EAAEkgB,OAAQlgB,EAAEksB,OAAQlsB,EAAE6sB,SAAU7sB,EAAE8sB,SAAU9sB,EAAE+sB,eAG/E,QAAS2H,MACL,GAAI10B,GAAIqH,IACR,QACIomB,MAAOztB,EAAEwe,OACTmB,OAAQ3f,EAAEye,QACVyB,KAAMlgB,EAAEkgB,OACRiG,MAAOnmB,EAAEmmB,QACTG,QAAStmB,EAAEsmB,UACXwH,QAAS9tB,EAAE8tB,UACXC,aAAc/tB,EAAE+tB,gBAIxB,QAAS4G,MAEL,MAAOttB,MAAKoM,UAAYpM,KAAKqsB,cAAgB,KAGjD,QAASkB,MACL,MAAOnhB,GAAQpM,MAGnB,QAASwtB,MACL,MAAO3iB,MAAWqB,EAAgBlM,OAGtC,QAASytB,MACL,MAAOvhB,GAAgBlM,MAAMyL,SAGjC,QAASiiB,MACL,OACI7jB,MAAO7J,KAAK2N,GACZ3C,OAAQhL,KAAK4N,GACb3C,OAAQjL,KAAKiO,QACb8X,MAAO/lB,KAAK+N,OACZ7C,OAAQlL,KAAK8M,SAcrB,QAAS6gB,IAAwB9Y,EAAO+Y,GACpChZ,EAAe,GAAIC,EAAOA,EAAMjd,QAAS,EAAGg2B,GAwChD,QAASC,IAAgBhkB,GACrB,MAAOikB,IAAqBn2B,KAAKqI,KACzB6J,EACA7J,KAAKgb,OACLhb,KAAKib,UACLjb,KAAKkV,aAAa0G,MAAMjB,IACxB3a,KAAKkV,aAAa0G,MAAMhB,KAGpC,QAASmT,IAAmBlkB,GACxB,MAAOikB,IAAqBn2B,KAAKqI,KACzB6J,EAAO7J,KAAKguB,UAAWhuB,KAAKmtB,aAAc,EAAG,GAGzD,QAASc,MACL,MAAOxS,IAAYzb,KAAKmX,OAAQ,EAAG,GAGvC,QAAS+W,MACL,GAAIC,GAAWnuB,KAAKkV,aAAa0G,KACjC,OAAOH,IAAYzb,KAAKmX,OAAQgX,EAASxT,IAAKwT,EAASvT,KAG3D,QAASkT,IAAqBjkB,EAAOmR,EAAMC,EAASN,EAAKC,GACrD,GAAIwT,EACJ,OAAa,OAATvkB,EACO0R,GAAWvb,KAAM2a,EAAKC,GAAKzD,MAElCiX,EAAc3S,GAAY5R,EAAO8Q,EAAKC,GAClCI,EAAOoT,IACPpT,EAAOoT,GAEJC,GAAW12B,KAAKqI,KAAM6J,EAAOmR,EAAMC,EAASN,EAAKC,IAIhE,QAASyT,IAAWzK,EAAU5I,EAAMC,EAASN,EAAKC,GAC9C,GAAI0T,GAAgBvT,GAAmB6I,EAAU5I,EAAMC,EAASN,EAAKC,GACjE/B,EAAO0B,GAAc+T,EAAcnX,KAAM,EAAGmX,EAAchT,UAK9D,OAHAtb,MAAKmX,KAAK0B,EAAK2B,kBACfxa,KAAKoX,MAAMyB,EAAKmK,eAChBhjB,KAAK6Y,KAAKA,EAAKvB,cACRtX,KAwBX,QAASuuB,IAAe1kB,GACpB,MAAgB,OAATA,EAAgB6E,KAAKC,MAAM3O,KAAKoX,QAAU,GAAK,GAAKpX,KAAKoX,MAAoB,GAAbvN,EAAQ,GAAS7J,KAAKoX,QAAU,GAsD3G,QAASoX,IAAiB3kB,GACtB,GAAIyR,GAAY5M,KAAKuY,OAAOjnB,KAAK8nB,QAAQoD,QAAQ,OAASlrB,KAAK8nB,QAAQoD,QAAQ,SAAW,OAAS,CACnG,OAAgB,OAATrhB,EAAgByR,EAAYtb,KAAKgc,IAAKnS,EAAQyR,EAAY,KAiGrE,QAASmT,IAAQ5kB,EAAOyL,GACpBA,EAAMgM,IAAezS,EAAuB,KAAhB,KAAOhF,IAiBvC,QAAS6kB,MACL,MAAO1uB,MAAK+N,OAAS,MAAQ,GAGjC,QAAS4gB,MACL,MAAO3uB,MAAK+N,OAAS,6BAA+B,GA2GxD,QAAS6gB,IAAY/kB,GACjB,MAAOqa,IAAoB,IAARra,GAGvB,QAASglB,MACL,MAAO3K,IAAYxa,MAAM,KAAMC,WAAWmlB,YAG9C,QAASC,IAAoBxc,GACzB,MAAOA,GAyCX,QAASyc,IAAOhkB,EAAQikB,EAAOC,EAAOC,GAClC,GAAIlkB,GAASoV,KACTjV,EAAML,IAAY8F,IAAIse,EAAQF,EAClC,OAAOhkB,GAAOikB,GAAO9jB,EAAKJ,GAG9B,QAASokB,IAAgBpkB,EAAQikB,EAAOC,GAQpC,GAPI9kB,EAASY,KACTikB,EAAQjkB,EACRA,MAAS+B,IAGb/B,EAASA,GAAU,GAEN,MAATikB,EACA,MAAOD,IAAMhkB,EAAQikB,EAAOC,EAAO,QAGvC,IAAIh4B,GACAm4B,IACJ,KAAKn4B,EAAI,EAAGA,EAAI,GAAIA,IAChBm4B,EAAIn4B,GAAK83B,GAAMhkB,EAAQ9T,EAAGg4B,EAAO,QAErC,OAAOG,GAWX,QAASC,IAAkBC,EAAcvkB,EAAQikB,EAAOC,GACxB,iBAAjBK,IACHnlB,EAASY,KACTikB,EAAQjkB,EACRA,MAAS+B,IAGb/B,EAASA,GAAU,KAEnBA,EAASukB,EACTN,EAAQjkB,EACRukB,GAAe,EAEXnlB,EAASY,KACTikB,EAAQjkB,EACRA,MAAS+B,IAGb/B,EAASA,GAAU,GAGvB,IAAIC,GAASoV,KACTmP,EAAQD,EAAetkB,EAAO2Q,MAAMjB,IAAM,CAE9C,IAAa,MAATsU,EACA,MAAOD,IAAMhkB,GAASikB,EAAQO,GAAS,EAAGN,EAAO,MAGrD,IAAIh4B,GACAm4B,IACJ,KAAKn4B,EAAI,EAAGA,EAAI,EAAGA,IACfm4B,EAAIn4B,GAAK83B,GAAMhkB,GAAS9T,EAAIs4B,GAAS,EAAGN,EAAO,MAEnD,OAAOG,GAGX,QAASI,IAAYzkB,EAAQikB,GACzB,MAAOG,IAAepkB,EAAQikB,EAAO,UAGzC,QAASS,IAAiB1kB,EAAQikB,GAC9B,MAAOG,IAAepkB,EAAQikB,EAAO,eAGzC,QAASU,IAAcJ,EAAcvkB,EAAQikB,GACzC,MAAOK,IAAiBC,EAAcvkB,EAAQikB,EAAO,YAGzD,QAASW,IAAmBL,EAAcvkB,EAAQikB,GAC9C,MAAOK,IAAiBC,EAAcvkB,EAAQikB,EAAO,iBAGzD,QAASY,IAAiBN,EAAcvkB,EAAQikB,GAC5C,MAAOK,IAAiBC,EAAcvkB,EAAQikB,EAAO,eAqBzD,QAASxf,MACL,GAAI2Q,GAAiBpgB,KAAK6mB,KAa1B,OAXA7mB,MAAK2mB,cAAgBmJ,GAAQ9vB,KAAK2mB,eAClC3mB,KAAK4mB,MAAgBkJ,GAAQ9vB,KAAK4mB,OAClC5mB,KAAKwX,QAAgBsY,GAAQ9vB,KAAKwX,SAElC4I,EAAKsG,aAAgBoJ,GAAQ1P,EAAKsG,cAClCtG,EAAKqG,QAAgBqJ,GAAQ1P,EAAKqG,SAClCrG,EAAKnB,QAAgB6Q,GAAQ1P,EAAKnB,SAClCmB,EAAKtB,MAAgBgR,GAAQ1P,EAAKtB,OAClCsB,EAAK9H,OAAgBwX,GAAQ1P,EAAK9H,QAClC8H,EAAKgG,MAAgB0J,GAAQ1P,EAAKgG,OAE3BpmB,KAGX,QAAS+vB,IAAe5J,EAAUtc,EAAOmF,EAAOub,GAC5C,GAAIlB,GAAQZ,GAAe5e,EAAOmF,EAMlC,OAJAmX,GAASQ,eAAiB4D,EAAYlB,EAAM1C,cAC5CR,EAASS,OAAiB2D,EAAYlB,EAAMzC,MAC5CT,EAAS3O,SAAiB+S,EAAYlB,EAAM7R,QAErC2O,EAASW,UAIpB,QAASkJ,IAAOnmB,EAAOmF,GACnB,MAAO+gB,IAAc/vB,KAAM6J,EAAOmF,EAAO,GAI7C,QAASihB,IAAYpmB,EAAOmF,GACxB,MAAO+gB,IAAc/vB,KAAM6J,EAAOmF,GAAQ,GAG9C,QAASkhB,IAASzhB,GACd,MAAIA,GAAS,EACFC,KAAKE,MAAMH,GAEXC,KAAKC,KAAKF,GAIzB,QAAS0hB,MACL,GAII1J,GAASxH,EAASH,EAAOsH,EAAOgK,EAJhC1J,EAAe1mB,KAAK2mB,cACpBH,EAAexmB,KAAK4mB,MACpBtO,EAAetY,KAAKwX,QACpB4I,EAAepgB,KAAK6mB,KAwCxB,OAnCOH,IAAgB,GAAKF,GAAQ,GAAKlO,GAAU,GAC1CoO,GAAgB,GAAKF,GAAQ,GAAKlO,GAAU,IACjDoO,GAAuD,MAAvCwJ,GAAQG,GAAa/X,GAAUkO,GAC/CA,EAAO,EACPlO,EAAS,GAKb8H,EAAKsG,aAAeA,EAAe,IAEnCD,EAAoBjY,EAASkY,EAAe,KAC5CtG,EAAKqG,QAAeA,EAAU,GAE9BxH,EAAoBzQ,EAASiY,EAAU,IACvCrG,EAAKnB,QAAeA,EAAU,GAE9BH,EAAoBtQ,EAASyQ,EAAU,IACvCmB,EAAKtB,MAAeA,EAAQ,GAE5B0H,GAAQhY,EAASsQ,EAAQ,IAGzBsR,EAAiB5hB,EAAS8hB,GAAa9J,IACvClO,GAAU8X,EACV5J,GAAQ0J,GAAQG,GAAaD,IAG7BhK,EAAQ5X,EAAS8J,EAAS,IAC1BA,GAAU,GAEV8H,EAAKoG,KAASA,EACdpG,EAAK9H,OAASA,EACd8H,EAAKgG,MAASA,EAEPpmB,KAGX,QAASswB,IAAc9J,GAGnB,MAAc,MAAPA,EAAc,OAGzB,QAAS6J,IAAc/X,GAEnB,MAAgB,QAATA,EAAkB,KAG7B,QAASiY,IAAIpd,GACT,GAAIqT,GACAlO,EACAoO,EAAe1mB,KAAK2mB,aAIxB,IAAc,WAFdxT,EAAQD,EAAeC,KAEY,SAAVA,EAGrB,MAFAqT,GAASxmB,KAAK4mB,MAAUF,EAAe,MACvCpO,EAAStY,KAAKwX,QAAU8Y,GAAa9J,GACpB,UAAVrT,EAAoBmF,EAASA,EAAS,EAI7C,QADAkO,EAAOxmB,KAAK4mB,MAAQlY,KAAKuY,MAAMoJ,GAAarwB,KAAKwX,UACzCrE,GACJ,IAAK,OAAW,MAAOqT,GAAO,EAAQE,EAAe,MACrD,KAAK,MAAW,MAAOF,GAAeE,EAAe,KACrD,KAAK,OAAW,MAAc,IAAPF,EAAeE,EAAe,IACrD,KAAK,SAAW,MAAc,MAAPF,EAAeE,EAAe,GACrD,KAAK,SAAW,MAAc,OAAPF,EAAeE,EAAe,GAErD,KAAK,cAAe,MAAOhY,MAAKE,MAAa,MAAP4X,GAAgBE,CACtD,SAAS,KAAM,IAAInvB,OAAM,gBAAkB4b,IAMvD,QAASqd,MACL,MACIxwB,MAAK2mB,cACQ,MAAb3mB,KAAK4mB,MACJ5mB,KAAKwX,QAAU,GAAM,OACK,QAA3B3I,EAAM7O,KAAKwX,QAAU,IAI7B,QAASiZ,IAAQC,GACb,MAAO,YACH,MAAO1wB,MAAKuwB,GAAGG,IAavB,QAASC,IAAOxd,GAEZ,MADAA,GAAQD,EAAeC,GAChBnT,KAAKmT,EAAQ,OAGxB,QAASyd,IAAWngB,GAChB,MAAO,YACH,MAAOzQ,MAAK6mB,MAAMpW,IAY1B,QAAS8V,MACL,MAAO/X,GAASxO,KAAKwmB,OAAS,GAalC,QAASqK,IAAkBte,EAAQ9D,EAAQ6D,EAAeE,EAAUvH,GAChE,MAAOA,GAAOoH,aAAa5D,GAAU,IAAK6D,EAAeC,EAAQC,GAGrE,QAASse,IAAgBC,EAAgBze,EAAerH,GACpD,GAAIkb,GAAWsC,GAAesI,GAAgBthB,MAC1CgX,EAAWQ,GAAMd,EAASoK,GAAG,MAC7BtR,EAAWgI,GAAMd,EAASoK,GAAG,MAC7BzR,EAAWmI,GAAMd,EAASoK,GAAG,MAC7B/J,EAAWS,GAAMd,EAASoK,GAAG,MAC7BjY,EAAW2O,GAAMd,EAASoK,GAAG,MAC7BnK,EAAWa,GAAMd,EAASoK,GAAG,MAE7Bj5B,EAAImvB,EAAUuK,GAAWxrB,IAAM,IAAKihB,IAChCxH,GAAW,IAAgB,MAC3BA,EAAU+R,GAAWr4B,IAAM,KAAMsmB,IACjCH,GAAW,IAAgB,MAC3BA,EAAUkS,GAAW9W,IAAM,KAAM4E,IACjC0H,GAAW,IAAgB,MAC3BA,EAAUwK,GAAW/wB,IAAM,KAAMumB,IACjClO,GAAW,IAAgB,MAC3BA,EAAU0Y,GAAW7W,IAAM,KAAM7B,IACjC8N,GAAW,IAAgB,OAAmB,KAAMA,EAK5D,OAHA9uB,GAAE,GAAKgb,EACPhb,EAAE,IAAMy5B,EAAiB,EACzBz5B,EAAE,GAAK2T,EACA4lB,GAAkBnnB,MAAM,KAAMpS,GAIzC,QAAS25B,IAA4BC,GACjC,WAAyBnkB,KAArBmkB,EACOjK,GAEsB,kBAAvB,KACNA,GAAQiK,GACD,GAMf,QAASC,IAA6BC,EAAWC,GAC7C,WAA8BtkB,KAA1BikB,GAAWI,SAGDrkB,KAAVskB,EACOL,GAAWI,IAEtBJ,GAAWI,GAAaC,GACjB,IAGX,QAAStE,IAAUuE,GACf,GAAIrmB,GAASjL,KAAKkV,aACdxD,EAASof,GAAe9wB,MAAOsxB,EAAYrmB,EAM/C,OAJIqmB,KACA5f,EAASzG,EAAOyH,YAAY1S,KAAM0R,IAG/BzG,EAAO6hB,WAAWpb,GAK7B,QAAS6f,MAQL,GAGItS,GAASH,EAAOsH,EAHhBK,EAAU+K,GAAMxxB,KAAK2mB,eAAiB,IACtCH,EAAegL,GAAMxxB,KAAK4mB,OAC1BtO,EAAekZ,GAAMxxB,KAAKwX,QAI9ByH,GAAoBzQ,EAASiY,EAAU,IACvC3H,EAAoBtQ,EAASyQ,EAAU,IACvCwH,GAAW,GACXxH,GAAW,GAGXmH,EAAS5X,EAAS8J,EAAS,IAC3BA,GAAU,EAIV,IAAImZ,GAAIrL,EACJjM,EAAI7B,EACJoZ,EAAIlL,EACJtM,EAAI4E,EACJnmB,EAAIsmB,EACJzZ,EAAIihB,EACJkL,EAAQ3xB,KAAK4xB,WAEjB,OAAKD,IAMGA,EAAQ,EAAI,IAAM,IACtB,KACCF,EAAIA,EAAI,IAAM,KACdtX,EAAIA,EAAI,IAAM,KACduX,EAAIA,EAAI,IAAM,KACbxX,GAAKvhB,GAAK6M,EAAK,IAAM,KACtB0U,EAAIA,EAAI,IAAM,KACdvhB,EAAIA,EAAI,IAAM,KACd6M,EAAIA,EAAI,IAAM,IAXR,MAvlIf,GAAIiE,IAkGAooB,EAEAA,IADA/nB,MAAMzJ,UAAUwxB,KACT/nB,MAAMzJ,UAAUwxB,KAEhB,SAAUC,GAIb,IAAK,GAHD96B,GAAIsJ,OAAON,MACXsP,EAAMtY,EAAEY,SAAW,EAEdV,EAAI,EAAGA,EAAIoY,EAAKpY,IACrB,GAAIA,IAAKF,IAAK86B,EAAIn6B,KAAKqI,KAAMhJ,EAAEE,GAAIA,EAAGF,GAClC,OAAO,CAIf,QAAO,EAIf,IAAIwV,IAASqlB,GAqDT3jB,GAAmB1E,EAAM0E,oBAiDzBG,IAAmB,EA8FnBqC,KAYJlH,GAAMqG,6BAA8B,EACpCrG,EAAMyG,mBAAqB,IAsD3B,IAAI8hB,GAGAA,IADAzxB,OAAOyxB,KACAzxB,OAAOyxB,KAEP,SAAU7nB,GACb,GAAIhT,GAAGwT,IACP,KAAKxT,IAAKgT,GACFU,EAAWV,EAAKhT,IAChBwT,EAAIC,KAAKzT,EAGjB,OAAOwT,GAIf,IA8WIga,IA9WA5D,GAASiR,GAETC,IACAC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAQXC,IACAC,IAAO,YACPC,GAAO,SACPC,EAAO,aACPC,GAAO,eACPC,IAAO,sBACPC,KAAO,6BAyBPC,GAAsB,UAMtBC,IACAC,OAAS,QACTC,KAAS,SACTztB,EAAK,gBACL7M,EAAK,WACLu6B,GAAK,aACLhZ,EAAK,UACLiZ,GAAK,WACLlzB,EAAK,QACLmzB,GAAK,UACLjZ,EAAK,UACLkZ,GAAK,YACLpZ,EAAK,SACLqZ,GAAK,YAeLrgB,MA4BAS,MA2EA6B,GAAmB,uLAEnBK,GAAwB,6CAExBF,MAEAT,MAoFAse,GAAiB,KACjBC,GAAiB,OACjBC,GAAiB,QACjBC,GAAiB,QACjBC,GAAiB,aACjBC,GAAiB,QACjBC,GAAiB,YACjBC,GAAiB,gBACjBC,GAAiB,UACjBC,GAAiB,UACjBC,GAAiB,eAEjBC,GAAiB,MACjBC,GAAiB,WAEjBnL,GAAiB,qBACjBV,GAAmB,0BAEnB8L,GAAiB,uBAIjBC,GAAY,mHAGZne,MA2BAW,MA8BAqK,GAAO,EACPF,GAAQ,EACRC,GAAO,EACPE,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdG,GAAO,EACPE,GAAU,CAKV+C,IADA5a,MAAMzJ,UAAUqkB,QACN5a,MAAMzJ,UAAUqkB,QAEhB,SAAUztB,GAEhB,GAAIC,EACJ,KAAKA,EAAI,EAAGA,EAAI8I,KAAKpI,SAAUV,EAC3B,GAAI8I,KAAK9I,KAAOD,EACZ,MAAOC,EAGf,QAAQ,EAIhB,IAAIqhB,IAAYmM,EAQhB9P,GAAe,KAAM,KAAM,GAAI,KAAM,WACjC,MAAO5U,MAAKoX,QAAU,IAG1BxC,EAAe,MAAO,EAAG,EAAG,SAAU5J,GAClC,MAAOhL,MAAKkV,aAAamD,YAAYrY,KAAMgL,KAG/C4J,EAAe,OAAQ,EAAG,EAAG,SAAU5J,GACnC,MAAOhL,MAAKkV,aAAaoD,OAAOtY,KAAMgL,KAK1C4H,EAAa,QAAS,KAItBY,EAAgB,QAAS,GAIzBuC,EAAc,IAAQ6d,IACtB7d,EAAc,KAAQ6d,GAAWJ,IACjCzd,EAAc,MAAQ,SAAUI,EAAUlL,GACtC,MAAOA,GAAO+N,iBAAiB7C,KAEnCJ,EAAc,OAAQ,SAAUI,EAAUlL,GACtC,MAAOA,GAAOoO,YAAYlD,KAG9BS,IAAe,IAAK,MAAO,SAAU/M,EAAOyL,GACxCA,EAAM0L,IAASnS,EAAMhF,GAAS,IAGlC+M,IAAe,MAAO,QAAS,SAAU/M,EAAOyL,EAAOlH,EAAQyG,GAC3D,GAAIuC,GAAQhJ,EAAOH,QAAQ2K,YAAY/O,EAAOgL,EAAOzG,EAAOtB,QAE/C,OAATsK,EACA9B,EAAM0L,IAAS5J,EAEflL,EAAgBkC,GAAQxC,aAAe/B,GAM/C,IAAI6N,IAAmB,gCACnB4c,GAAsB,wFAAwF1U,MAAM,KASpH2U,GAA2B,kDAAkD3U,MAAM,KAiInFxG,GAA0Bib,GAoB1B7a,GAAqB6a,EAwDzBzf,GAAe,IAAK,EAAG,EAAG,WACtB,GAAIqF,GAAIja,KAAKmX,MACb,OAAO8C,IAAK,KAAO,GAAKA,EAAI,IAAMA,IAGtCrF,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAO5U,MAAKmX,OAAS,MAGzBvC,EAAe,GAAI,OAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,QAAU,GAAU,EAAG,QAC1CA,EAAe,GAAI,SAAU,GAAG,GAAO,EAAG,QAI1ChC,EAAa,OAAQ,KAIrBY,EAAgB,OAAQ,GAIxBuC,EAAc,IAAUoe,IACxBpe,EAAc,KAAU6d,GAAWJ,IACnCzd,EAAc,OAAUie,GAAWN,IACnC3d,EAAc,QAAUke,GAAWN,IACnC5d,EAAc,SAAUke,GAAWN,IAEnC/c,IAAe,QAAS,UAAWsK,IACnCtK,GAAc,OAAQ,SAAU/M,EAAOyL,GACnCA,EAAM4L,IAAyB,IAAjBrX,EAAMjS,OAAe4R,EAAMgrB,kBAAkB3qB,GAASgF,EAAMhF,KAE9E+M,GAAc,KAAM,SAAU/M,EAAOyL,GACjCA,EAAM4L,IAAQ1X,EAAMgrB,kBAAkB3qB,KAE1C+M,GAAc,IAAK,SAAU/M,EAAOyL,GAChCA,EAAM4L,IAAQ9E,SAASvS,EAAO,MAelCL,EAAMgrB,kBAAoB,SAAU3qB,GAChC,MAAOgF,GAAMhF,IAAUgF,EAAMhF,GAAS,GAAK,KAAO,KAKtD,IAAI4qB,IAAa3gB,EAAW,YAAY,EA4FxCc,GAAe,KAAM,KAAM,GAAI,KAAM,QACrCA,EAAe,KAAM,KAAM,GAAI,KAAM,WAIrChC,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBY,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAI3BuC,EAAc,IAAM6d,IACpB7d,EAAc,KAAM6d,GAAWJ,IAC/Bzd,EAAc,IAAM6d,IACpB7d,EAAc,KAAM6d,GAAWJ,IAE/B1c,IAAmB,IAAK,KAAM,IAAK,MAAO,SAAUjN,EAAOmR,EAAM5M,EAAQyG,GACrEmG,EAAKnG,EAAMF,OAAO,EAAG,IAAM9F,EAAMhF,IAWrC,IAAI6qB,KACA/Z,IAAM,EACNC,IAAM,EAyBVhG,GAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAU5J,GACjC,MAAOhL,MAAKkV,aAAagI,YAAYld,KAAMgL,KAG/C4J,EAAe,MAAO,EAAG,EAAG,SAAU5J,GAClC,MAAOhL,MAAKkV,aAAaiI,cAAcnd,KAAMgL,KAGjD4J,EAAe,OAAQ,EAAG,EAAG,SAAU5J,GACnC,MAAOhL,MAAKkV,aAAakI,SAASpd,KAAMgL,KAG5C4J,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BhC,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAG3BY,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAI9BuC,EAAc,IAAQ6d,IACtB7d,EAAc,IAAQ6d,IACtB7d,EAAc,IAAQ6d,IACtB7d,EAAc,KAAQ,SAAUI,EAAUlL,GACtC,MAAOA,GAAOoT,iBAAiBlI,KAEnCJ,EAAc,MAAS,SAAUI,EAAUlL,GACvC,MAAOA,GAAOgT,mBAAmB9H,KAErCJ,EAAc,OAAU,SAAUI,EAAUlL,GACxC,MAAOA,GAAO2S,cAAczH,KAGhCW,IAAmB,KAAM,MAAO,QAAS,SAAUjN,EAAOmR,EAAM5M,EAAQyG,GACpE,GAAIoG,GAAU7M,EAAOH,QAAQkO,cAActS,EAAOgL,EAAOzG,EAAOtB,QAEjD,OAAXmO,EACAD,EAAK/a,EAAIgb,EAET/O,EAAgBkC,GAAQvB,eAAiBhD,IAIjDiN,IAAmB,IAAK,IAAK,KAAM,SAAUjN,EAAOmR,EAAM5M,EAAQyG,GAC9DmG,EAAKnG,GAAShG,EAAMhF,IA+BxB,IAAI8qB,IAAwB,2DAA2D/U,MAAM,KASzFgV,GAA6B,8BAA8BhV,MAAM,KAKjEiV,GAA2B,uBAAuBjV,MAAM,KAqJxD5B,GAAuBqW,GAoBvBjW,GAA4BiW,GAoB5B7V,GAA0B6V,EAwE9Bzf,GAAe,KAAM,KAAM,GAAI,EAAG,QAClCA,EAAe,KAAM,KAAM,GAAI,EAAGiK,IAClCjK,EAAe,KAAM,KAAM,GAAI,EAAGmK,IAElCnK,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKiK,GAAQnV,MAAM1J,MAAQoU,EAASpU,KAAKif,UAAW,KAG/DrK,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAKiK,GAAQnV,MAAM1J,MAAQoU,EAASpU,KAAKif,UAAW,GACvD7K,EAASpU,KAAKymB,UAAW,KAGjC7R,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAK5U,KAAK8e,QAAU1K,EAASpU,KAAKif,UAAW,KAGxDrK,EAAe,QAAS,EAAG,EAAG,WAC1B,MAAO,GAAK5U,KAAK8e,QAAU1K,EAASpU,KAAKif,UAAW,GAChD7K,EAASpU,KAAKymB,UAAW,KASjCxa,GAAS,KAAK,GACdA,GAAS,KAAK,GAId2G,EAAa,OAAQ,KAGrBY,EAAgB,OAAQ,IAQxBuC,EAAc,IAAMmJ,IACpBnJ,EAAc,IAAMmJ,IACpBnJ,EAAc,IAAM6d,IACpB7d,EAAc,IAAM6d,IACpB7d,EAAc,KAAM6d,GAAWJ,IAC/Bzd,EAAc,KAAM6d,GAAWJ,IAE/Bzd,EAAc,MAAO8d,IACrB9d,EAAc,QAAS+d,IACvB/d,EAAc,MAAO8d,IACrB9d,EAAc,QAAS+d,IAEvBld,IAAe,IAAK,MAAOuK,IAC3BvK,IAAe,IAAK,KAAM,SAAU/M,EAAOyL,EAAOlH,GAC9CA,EAAO0mB,MAAQ1mB,EAAOH,QAAQ+W,KAAKnb,GACnCuE,EAAOuW,UAAY9a,IAEvB+M,IAAe,IAAK,MAAO,SAAU/M,EAAOyL,EAAOlH,GAC/CkH,EAAM6L,IAAQtS,EAAMhF,GACpBqC,EAAgBkC,GAAQpB,SAAU,IAEtC4J,GAAc,MAAO,SAAU/M,EAAOyL,EAAOlH,GACzC,GAAI2mB,GAAMlrB,EAAMjS,OAAS,CACzB0d,GAAM6L,IAAQtS,EAAMhF,EAAM8K,OAAO,EAAGogB,IACpCzf,EAAM8L,IAAUvS,EAAMhF,EAAM8K,OAAOogB,IACnC7oB,EAAgBkC,GAAQpB,SAAU,IAEtC4J,GAAc,QAAS,SAAU/M,EAAOyL,EAAOlH,GAC3C,GAAI4mB,GAAOnrB,EAAMjS,OAAS,EACtBq9B,EAAOprB,EAAMjS,OAAS,CAC1B0d,GAAM6L,IAAQtS,EAAMhF,EAAM8K,OAAO,EAAGqgB,IACpC1f,EAAM8L,IAAUvS,EAAMhF,EAAM8K,OAAOqgB,EAAM,IACzC1f,EAAM+L,IAAUxS,EAAMhF,EAAM8K,OAAOsgB,IACnC/oB,EAAgBkC,GAAQpB,SAAU,IAEtC4J,GAAc,MAAO,SAAU/M,EAAOyL,EAAOlH,GACzC,GAAI2mB,GAAMlrB,EAAMjS,OAAS,CACzB0d,GAAM6L,IAAQtS,EAAMhF,EAAM8K,OAAO,EAAGogB,IACpCzf,EAAM8L,IAAUvS,EAAMhF,EAAM8K,OAAOogB,MAEvCne,GAAc,QAAS,SAAU/M,EAAOyL,EAAOlH,GAC3C,GAAI4mB,GAAOnrB,EAAMjS,OAAS,EACtBq9B,EAAOprB,EAAMjS,OAAS,CAC1B0d,GAAM6L,IAAQtS,EAAMhF,EAAM8K,OAAO,EAAGqgB,IACpC1f,EAAM8L,IAAUvS,EAAMhF,EAAM8K,OAAOqgB,EAAM,IACzC1f,EAAM+L,IAAUxS,EAAMhF,EAAM8K,OAAOsgB,KAWvC,IA6CIjV,IA7CAkV,GAA6B,gBAgB7BC,GAAarhB,EAAW,SAAS,GAMjCyM,IACAhP,SAAUygB,GACVpgB,eAAgB2gB,GAChBtgB,YA3xCqB,eA4xCrBE,QAtxCiB,KAuxCjBijB,aAActC,GACdzgB,aAAc0gB,GAEdza,OAAQgc,GACRjc,YAAakc,GAEbvZ,KAAM0Z,GAENtX,SAAUuX,GACVzX,YAAa2X,GACb1X,cAAeyX,GAEfS,cAAeH,IAIfnV,MACAW,MA8MAwB,GAAmB,mJACnBE,GAAgB,8IAEhBG,GAAU,wBAEVF,KACC,eAAgB,wBAChB,aAAc,oBACd,eAAgB,mBAChB,aAAc,eAAe,IAC7B,WAAY,gBACZ,UAAW,cAAc,IACzB,aAAc,eACd,WAAY,UAEZ,aAAc,gBACd,YAAa,eAAe,IAC5B,UAAW,UAIZC,KACC,gBAAiB,wBACjB,gBAAiB,uBACjB,WAAY,mBACZ,QAAS,cACT,cAAe,sBACf,cAAe,qBACf,SAAU,iBACV,OAAQ,aACR,KAAM,SAGPI,GAAkB,qBAuEtBlZ,GAAMmZ,wBAA0B5S,EAC5B,8TAIA,SAAU3B,GACNA,EAAOzB,GAAK,GAAIrC,MAAK8D,EAAOT,IAAMS,EAAO2U,QAAU,OAAS,OAoJpEvZ,EAAM6a,SAAW,YA0PjB,IAAIiR,IAAevlB,EACf,qGACA,WACI,GAAIsZ,GAAQnF,GAAYxa,MAAM,KAAMC,UACpC,OAAI3J,MAAKoM,WAAaid,EAAMjd,UACjBid,EAAQrpB,KAAOA,KAAOqpB,EAEtBnc,MAKfqoB,GAAexlB,EACf,qGACA,WACI,GAAIsZ,GAAQnF,GAAYxa,MAAM,KAAMC,UACpC,OAAI3J,MAAKoM,WAAaid,EAAMjd,UACjBid,EAAQrpB,KAAOA,KAAOqpB,EAEtBnc,MAwCfuE,GAAM,WACN,MAAOnH,MAAKmH,IAAMnH,KAAKmH,OAAS,GAAKnH,MAgEzC4c,IAAO,IAAK,KACZA,GAAO,KAAM,IAIbnR,EAAc,IAAMuS,IACpBvS,EAAc,KAAMuS,IACpB1R,IAAe,IAAK,MAAO,SAAU/M,EAAOyL,EAAOlH,GAC/CA,EAAO2U,SAAU,EACjB3U,EAAON,KAAOwZ,GAAiBgB,GAAkBze,IAQrD,IAAI8d,IAAc,iBA2ClBne,GAAM8E,aAAe,YAmJrB,IAAIsb,IAAc,wDAKdC,GAAW,6IA+DfpB,IAAehe,GAAKyb,GAAS7lB,SAuF7B,IAAI2b,IAAWsO,GAAY,EAAG,OAC1BzB,GAAWyB,IAAa,EAAG,WA8I/B9gB,GAAMqjB,cAAgB,uBACtBrjB,EAAMojB,iBAAmB,wBAiGzB,IAAI4I,IAAOzlB,EACP,kJACA,SAAUK,GACN,WAAYrD,KAARqD,EACOpQ,KAAKkV,aAELlV,KAAKiL,OAAOmF,IA8H/BwE,GAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAO5U,MAAK4jB,WAAa,MAG7BhP,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,MAAO5U,MAAKy1B,cAAgB,MAOhC9H,GAAuB,OAAY,YACnCA,GAAuB,QAAY,YACnCA,GAAuB,OAAS,eAChCA,GAAuB,QAAS,eAIhC/a,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BY,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAK/BuC,EAAc,IAAUoe,IACxBpe,EAAc,IAAUoe,IACxBpe,EAAc,KAAU6d,GAAWJ,IACnCzd,EAAc,KAAU6d,GAAWJ,IACnCzd,EAAc,OAAUie,GAAWN,IACnC3d,EAAc,OAAUie,GAAWN,IACnC3d,EAAc,QAAUke,GAAWN,IACnC5d,EAAc,QAAUke,GAAWN,IAEnC7c,IAAmB,OAAQ,QAAS,OAAQ,SAAU,SAAUjN,EAAOmR,EAAM5M,EAAQyG,GACjFmG,EAAKnG,EAAMF,OAAO,EAAG,IAAM9F,EAAMhF,KAGrCiN,IAAmB,KAAM,MAAO,SAAUjN,EAAOmR,EAAM5M,EAAQyG,GAC3DmG,EAAKnG,GAASrL,EAAMgrB,kBAAkB3qB,KAqD1C+K,EAAe,IAAK,EAAG,KAAM,WAI7BhC,EAAa,UAAW,KAIxBY,EAAgB,UAAW,GAI3BuC,EAAc,IAAKwd,IACnB3c,GAAc,IAAK,SAAU/M,EAAOyL,GAChCA,EAAM0L,IAA8B,GAApBnS,EAAMhF,GAAS,KAWnC+K,EAAe,KAAM,KAAM,GAAI,KAAM,QAIrChC,EAAa,OAAQ,KAGrBY,EAAgB,OAAQ,GAIxBuC,EAAc,IAAM6d,IACpB7d,EAAc,KAAM6d,GAAWJ,IAC/Bzd,EAAc,KAAM,SAAUI,EAAUlL,GACpC,MAAOkL,GAAWlL,EAAOgG,cAAgBhG,EAAO8F,uBAGpD6F,IAAe,IAAK,MAAOqK,IAC3BrK,GAAc,KAAM,SAAU/M,EAAOyL,GACjCA,EAAM2L,IAAQpS,EAAMhF,EAAMuL,MAAMwe,IAAW,GAAI,KAKnD,IAAI8B,IAAmB5hB,EAAW,QAAQ,EAI1Cc,GAAe,OAAQ,OAAQ,GAAI,OAAQ,aAI3ChC,EAAa,YAAa,OAG1BY,EAAgB,YAAa,GAI7BuC,EAAc,MAAQge,IACtBhe,EAAc,OAAQ0d,IACtB7c,IAAe,MAAO,QAAS,SAAU/M,EAAOyL,EAAOlH,GACnDA,EAAOmV,WAAa1U,EAAMhF,KAc9B+K,EAAe,KAAM,KAAM,GAAI,EAAG,UAIlChC,EAAa,SAAU,KAIvBY,EAAgB,SAAU,IAI1BuC,EAAc,IAAM6d,IACpB7d,EAAc,KAAM6d,GAAWJ,IAC/B5c,IAAe,IAAK,MAAOwK,GAI3B,IAAIuU,IAAe7hB,EAAW,WAAW,EAIzCc,GAAe,KAAM,KAAM,GAAI,EAAG,UAIlChC,EAAa,SAAU,KAIvBY,EAAgB,SAAU,IAI1BuC,EAAc,IAAM6d,IACpB7d,EAAc,KAAM6d,GAAWJ,IAC/B5c,IAAe,IAAK,MAAOyK,GAI3B,IAAIuU,IAAe9hB,EAAW,WAAW,EAIzCc,GAAe,IAAK,EAAG,EAAG,WACtB,SAAU5U,KAAK0lB,cAAgB,OAGnC9Q,EAAe,GAAI,KAAM,GAAI,EAAG,WAC5B,SAAU5U,KAAK0lB,cAAgB,MAGnC9Q,EAAe,GAAI,MAAO,GAAI,EAAG,eACjCA,EAAe,GAAI,OAAQ,GAAI,EAAG,WAC9B,MAA4B,IAArB5U,KAAK0lB,gBAEhB9Q,EAAe,GAAI,QAAS,GAAI,EAAG,WAC/B,MAA4B,KAArB5U,KAAK0lB,gBAEhB9Q,EAAe,GAAI,SAAU,GAAI,EAAG,WAChC,MAA4B,KAArB5U,KAAK0lB,gBAEhB9Q,EAAe,GAAI,UAAW,GAAI,EAAG,WACjC,MAA4B,KAArB5U,KAAK0lB,gBAEhB9Q,EAAe,GAAI,WAAY,GAAI,EAAG,WAClC,MAA4B,KAArB5U,KAAK0lB,gBAEhB9Q,EAAe,GAAI,YAAa,GAAI,EAAG,WACnC,MAA4B,KAArB5U,KAAK0lB,gBAMhB9S,EAAa,cAAe,MAI5BY,EAAgB,cAAe,IAI/BuC,EAAc,IAAQge,GAAWR,IACjCxd,EAAc,KAAQge,GAAWP,IACjCzd,EAAc,MAAQge,GAAWN,GAEjC,IAAI5e,GACJ,KAAKA,GAAQ,OAAQA,GAAMjd,QAAU,EAAGid,IAAS,IAC7CkB,EAAclB,GAAOqf,GAOzB,KAAKrf,GAAQ,IAAKA,GAAMjd,QAAU,EAAGid,IAAS,IAC1C+B,GAAc/B,GAAO4Z,GAIzB,IAAIoH,IAAoB/hB,EAAW,gBAAgB,EAInDc,GAAe,IAAM,EAAG,EAAG,YAC3BA,EAAe,KAAM,EAAG,EAAG,WAY3B,IAAIkhB,IAAQ3nB,EAAO9N,SAEnBy1B,IAAM9Z,IAAoBA,GAC1B8Z,GAAMvkB,SAAoBuZ,GAC1BgL,GAAMhO,MAAoBA,GAC1BgO,GAAMnjB,KAAoBA,GAC1BmjB,GAAMzK,MAAoBA,GAC1ByK,GAAM9qB,OAAoBA,GAC1B8qB,GAAMvoB,KAAoBA,GAC1BuoB,GAAM9I,QAAoBA,GAC1B8I,GAAMxoB,GAAoBA,GAC1BwoB,GAAM7I,MAAoBA,GAC1B6I,GAAMhwB,IAAoBmO,EAC1B6hB,GAAMrI,UAAoBA,GAC1BqI,GAAM1L,QAAoBA,GAC1B0L,GAAMzL,SAAoBA,GAC1ByL,GAAMxK,UAAoBA,GAC1BwK,GAAMtK,OAAoBA,GAC1BsK,GAAMpK,cAAoBA,GAC1BoK,GAAMnK,eAAoBA,GAC1BmK,GAAM1pB,QAAoBmhB,GAC1BuI,GAAMN,KAAoBA,GAC1BM,GAAM7qB,OAAoBA,GAC1B6qB,GAAM5gB,WAAoBA,GAC1B4gB,GAAMphB,IAAoB6gB,GAC1BO,GAAMvmB,IAAoB+lB,GAC1BQ,GAAMtI,aAAoBA,GAC1BsI,GAAMjlB,IAAoBqD,EAC1B4hB,GAAM5K,QAAoBA,GAC1B4K,GAAMjN,SAAoBA,GAC1BiN,GAAMxM,QAAoBA,GAC1BwM,GAAMzI,SAAoBA,GAC1ByI,GAAMxJ,OAAoBA,GAC1BwJ,GAAMzJ,YAAoBA,GAC1ByJ,GAAMvJ,QAAoBA,GAC1BuJ,GAAMxI,OAAoBA,GAC1BwI,GAAM/rB,SAAoBA,GAC1B+rB,GAAM1I,KAAoBA,GAC1B0I,GAAMhrB,QAAoBA,GAC1BgrB,GAAMpI,aAAoBA,GAG1BoI,GAAM3e,KAAasd,GACnBqB,GAAMhc,WAAaC,GAGnB+b,GAAMlS,SAAciK,GACpBiI,GAAML,YAAc1H,GAGpB+H,GAAMxP,QAAUwP,GAAMzP,SAAWkI,GAGjCuH,GAAM1e,MAAc0B,GACpBgd,GAAM5e,YAAc6B,GAGpB+c,GAAM9a,KAAiB8a,GAAMvP,MAAexK,GAC5C+Z,GAAM9H,QAAiB8H,GAAMC,SAAe9Z,GAC5C6Z,GAAMra,YAAiByS,GACvB4H,GAAME,eAAiB/H,GAGvB6H,GAAMjd,KAAa6c,GACnBI,GAAMtZ,IAAasZ,GAAMtP,KAAmBhJ,GAC5CsY,GAAM7a,QAAayC,GACnBoY,GAAM3I,WAAaxP,GACnBmY,GAAMxa,UAAakT,GAGnBsH,GAAMjR,KAAOiR,GAAMhX,MAAQqW,GAG3BW,GAAMtQ,OAASsQ,GAAM7W,QAAU0W,GAG/BG,GAAMrQ,OAASqQ,GAAMrP,QAAUmP,GAG/BE,GAAMpQ,YAAcoQ,GAAMpP,aAAemP,GAGzCC,GAAM1O,UAAuBe,GAC7B2N,GAAM1qB,IAAuBud,GAC7BmN,GAAM9N,MAAuBY,GAC7BkN,GAAMhH,UAAuBhG,GAC7BgN,GAAM7M,qBAAuBA,GAC7B6M,GAAMG,MAAuB/M,GAC7B4M,GAAMvM,QAAuBA,GAC7BuM,GAAMtM,YAAuBA,GAC7BsM,GAAMrM,MAAuBA,GAC7BqM,GAAM/P,MAAuB0D,GAG7BqM,GAAMI,SAAWxH,GACjBoH,GAAMK,SAAWxH,GAGjBmH,GAAMM,MAASrmB,EAAU,kDAAmD2lB,IAC5EI,GAAMxd,OAASvI,EAAU,mDAAoD+I,IAC7Egd,GAAM1P,MAASrW,EAAU,iDAAkD0kB,IAC3EqB,GAAMtJ,KAASzc,EAAU,2GAA4G2Y,IACrIoN,GAAMO,aAAetmB,EAAU,0GAA2GoZ,GAc1I,IAAImN,IAAUhlB,EAAOjR,SAErBi2B,IAAQ/kB,SAAkBA,EAC1B+kB,GAAQ1kB,eAAkBA,EAC1B0kB,GAAQrkB,YAAkBA,EAC1BqkB,GAAQnkB,QAAkBA,EAC1BmkB,GAAQzQ,SAAkBkJ,GAC1BuH,GAAQxJ,WAAkBiC,GAC1BuH,GAAQjkB,aAAkBA,EAC1BikB,GAAQ5jB,WAAkBA,EAC1B4jB,GAAQzlB,IAAkBA,EAG1BylB,GAAQhe,OAA2Bf,GACnC+e,GAAQje,YAA2BV,GACnC2e,GAAQ1d,YAA2BJ,GACnC8d,GAAQjd,YAAoBA,GAC5Bid,GAAQtd,iBAAoBA,GAG5Bsd,GAAQtb,KAAOW,GACf2a,GAAQC,eAAiBza,GACzBwa,GAAQE,eAAiB3a,GAGzBya,GAAQlZ,SAAwBd,GAChCga,GAAQpZ,YAAwBP,GAChC2Z,GAAQnZ,cAAwBV,GAChC6Z,GAAQna,cAAwBkB,GAEhCiZ,GAAQ1Y,cAA6BA,GACrC0Y,GAAQrY,mBAA6BA,GACrCqY,GAAQjY,iBAA6BA,GAGrCiY,GAAQtR,KAAO5F,GACfkX,GAAQrqB,SAAWqT,GA4FnBY,GAAmB,MACfkV,aAAc,uBACdjjB,QAAU,SAAU1D,GAChB,GAAIvO,GAAIuO,EAAS,EAKjB,OAAOA,IAJoC,IAA7BI,EAAMJ,EAAS,IAAM,IAAa,KACrC,IAANvO,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,SAM/BsJ,EAAMgsB,KAAOzlB,EAAU,wDAAyDmQ,IAChF1W,EAAMitB,SAAW1mB,EAAU,gEAAiEsQ,GAE5F,IAAIyP,IAAUphB,KAAKe,IAoJfinB,GAAiBjG,GAAO,MACxBmB,GAAiBnB,GAAO,KACxBkG,GAAiBlG,GAAO,KACxBmG,GAAiBnG,GAAO,KACxBoG,GAAiBpG,GAAO,KACxBqG,GAAiBrG,GAAO,KACxBsG,GAAiBtG,GAAO,KACxBuG,GAAiBvG,GAAO,KAaxB/J,GAAekK,GAAW,gBAC1BnK,GAAemK,GAAW,WAC1B3R,GAAe2R,GAAW,WAC1B9R,GAAe8R,GAAW,SAC1BpK,GAAeoK,GAAW,QAC1BtY,GAAesY,GAAW,UAC1BxK,GAAewK,GAAW,SAM1B3J,GAAQvY,KAAKuY,MACb+J,IACAxrB,EAAG,GACH7M,EAAG,GACHuhB,EAAG,GACHja,EAAG,GACHka,EAAG,IAqEHqX,GAAQ9iB,KAAKe,IAoDbwnB,GAAU/Q,GAAS7lB,SAyFvB,OAvFA42B,IAAQxnB,IAAiBA,GACzBwnB,GAAQjb,IAAiBgU,GACzBiH,GAAQpO,SAAiBoH,GACzBgH,GAAQ1G,GAAiBA,GACzB0G,GAAQP,eAAiBA,GACzBO,GAAQrF,UAAiBA,GACzBqF,GAAQN,UAAiBA,GACzBM,GAAQL,QAAiBA,GACzBK,GAAQJ,OAAiBA,GACzBI,GAAQH,QAAiBA,GACzBG,GAAQF,SAAiBA,GACzBE,GAAQD,QAAiBA,GACzBC,GAAQnsB,QAAiB0lB,GACzByG,GAAQnQ,QAAiBqJ,GACzB8G,GAAQnxB,IAAiB6qB,GACzBsG,GAAQvQ,aAAiBA,GACzBuQ,GAAQxQ,QAAiBA,GACzBwQ,GAAQhY,QAAiBA,GACzBgY,GAAQnY,MAAiBA,GACzBmY,GAAQzQ,KAAiBA,GACzByQ,GAAQ1Q,MAAiBA,GACzB0Q,GAAQ3e,OAAiBA,GACzB2e,GAAQ7Q,MAAiBA,GACzB6Q,GAAQlK,SAAiBA,GACzBkK,GAAQ5K,YAAiBkF,GACzB0F,GAAQltB,SAAiBwnB,GACzB0F,GAAQ3J,OAAiBiE,GACzB0F,GAAQhsB,OAAiBA,GACzBgsB,GAAQ/hB,WAAiBA,GAGzB+hB,GAAQC,YAAcnnB,EAAU,sFAAuFwhB,IACvH0F,GAAQzB,KAAOA,GAMf5gB,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BmB,EAAc,IAAKoe,IACnBpe,EAAc,IAAKqe,IACnBxd,GAAc,IAAK,SAAU/M,EAAOyL,EAAOlH,GACvCA,EAAOzB,GAAK,GAAIrC,MAA6B,IAAxB2f,WAAWpgB,EAAO,OAE3C+M,GAAc,IAAK,SAAU/M,EAAOyL,EAAOlH,GACvCA,EAAOzB,GAAK,GAAIrC,MAAKuE,EAAMhF,MAM/BL,EAAM2tB,QAAU,SAtpIhB,SAA0BpiB,GACtBtL,GAAesL,GAupIHmP,IAEhB1a,EAAMiB,GAAwBqrB,GAC9BtsB,EAAM+F,IAAwBA,GAC9B/F,EAAMkL,IAAwBA,GAC9BlL,EAAMiI,IAAwBA,GAC9BjI,EAAM4B,IAAwBL,EAC9BvB,EAAM4jB,KAAwBwB,GAC9BplB,EAAM8O,OAAwBmX,GAC9BjmB,EAAMa,OAAwBA,EAC9Bb,EAAMyB,OAAwBiV,GAC9B1W,EAAM4tB,QAAwBlqB,EAC9B1D,EAAM2c,SAAwBsC,GAC9Bjf,EAAM+E,SAAwBA,EAC9B/E,EAAM4T,SAAwBuS,GAC9BnmB,EAAMslB,UAAwBD,GAC9BrlB,EAAM0L,WAAwBmL,GAC9B7W,EAAMud,WAAwBA,GAC9Bvd,EAAM6O,YAAwBqX,GAC9BlmB,EAAM0T,YAAwB2S,GAC9BrmB,EAAM8W,aAAwBA,GAC9B9W,EAAMoX,aAAwBA,GAC9BpX,EAAMuW,QAAwBc,GAC9BrX,EAAM2T,cAAwByS,GAC9BpmB,EAAM0J,eAAwBA,EAC9B1J,EAAM6tB,qBAAuBpG,GAC7BznB,EAAM8tB,sBAAwBnG,GAC9B3nB,EAAM2hB,eAAwBP,GAC9BphB,EAAMnJ,UAAwBy1B,GAEvBtsB,SAID+tB,GAAG,SAAS3gC,EAAQkB,EAAOJ,GACjCiS,UAAU,GAAG,8BAA8B,GAAGD,MAAMhS,EAAQiS,aACzDvD,gBAAgB,gBAAgBC,iBAAiB,iBAAiBmxB,IAAM,6BAA6BlxB,KAAO,SAASmxB,GAAG,SAAS7gC,EAAQkB,EAAOJ,GACnJ,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGngC,EAAcnB,EAAQ,eACtBiO,EAASjO,EAAQ,iBACjBwhC,EAAgB,WAChB,QAASA,GAAaC,GAClBr4B,KAAKq4B,MAAQA,EAkBjB,MAhBAD,GAAa/3B,UAAUi4B,OAAS,SAAUC,GACtC,MAAOv4B,MAAKq4B,MAAMvyB,IAAI,uBAAyB0yB,mBAAmBD,OAAmBhuB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE5J0O,EAAa/3B,UAAUs4B,aAAe,SAAUJ,GAC5C,MAAOv4B,MAAKq4B,MAAMO,KAAK,4BAA6BL,OAAYhuB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEvI0O,EAAa/3B,UAAUyF,IAAM,SAAU+yB,GACnC,MAAO74B,MAAKq4B,MAAMvyB,IAAI,gBAAkB+yB,MAAgBtuB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE/H0O,EAAa/3B,UAAUy4B,WAAa,SAAUD,GAC1C,MAAO74B,MAAKq4B,MAAMvyB,IAAI,gBAAkB+yB,EAAK,eAAwBtuB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE5I0O,EAAeV,GACX7yB,EAAOk0B,aACPd,EAAW,qBAAsBlgC,EAAYC,aAC9CogC,KAGP1gC,GAAQ0gC,aAAeA,IAIpBY,cAAc,GAAG5yB,gBAAgB,kBAAkB6yB,GAAG,SAASriC,EAAQkB,EAAOJ,GACjF,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGngC,EAAcnB,EAAQ,eACtBiO,EAASjO,EAAQ,iBACjBsiC,EAAiB,WACjB,QAASA,GAAcb,GACnBr4B,KAAKq4B,MAAQA,EAYjB,MAVAa,GAAc74B,UAAU84B,KAAO,SAAUC,GACrC,MAAOp5B,MAAKq4B,MAAMvyB,IAAI,iBAAmBszB,MAAuB7uB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEvIwP,EAAc74B,UAAUg5B,eAAiB,SAAUjZ,GAC/C,MAAOpgB,MAAKq4B,MAAMO,KAAK,uBAAwBxY,OAAY7V,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAElIwP,EAAgBxB,GACZ7yB,EAAOk0B,aACPd,EAAW,qBAAsBlgC,EAAYC,aAC9CkhC,KAGPxhC,GAAQwhC,cAAgBA,IAIrBF,cAAc,GAAG5yB,gBAAgB,kBAAkBkzB,GAAG,SAAS1iC,EAAQkB,EAAOJ,GACjF,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGngC,EAAcnB,EAAQ,eACtBiO,EAASjO,EAAQ,iBACjB2iC,EAAc,WACd,QAASA,GAAWlB,GAChBr4B,KAAKq4B,MAAQA;aASjB,MAPAkB,GAAWl5B,UAAUm5B,MAAQ,SAAUA,GACnC,MAAOx5B,MAAKq4B,MAAMO,KAAK,aAAcY,OAAajvB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEzH6P,EAAa7B,GACT7yB,EAAOk0B,aACPd,EAAW,qBAAsBlgC,EAAYC,aAC9CuhC,KAGP7hC,GAAQ6hC,WAAaA,IAIlBP,cAAc,GAAG5yB,gBAAgB,kBAAkBqzB,GAAG,SAAS7iC,EAAQkB,EAAOJ,GACjF,cACA,SAAWgiC,GACPA,EAAeA,EAAqB,KAAI,GAAK,OAC7CA,EAAeA,EAAwB,QAAI,GAAK,UAChDA,EAAeA,EAAkC,kBAAI,GAAK,oBAC1DA,EAAeA,EAAkC,kBAAI,GAAK,qBAC3DhiC,EAAQgiC,iBAAmBhiC,EAAQgiC,mBACjBhiC,GAAQgiC,oBAIvBC,GAAG,SAAS/iC,EAAQkB,EAAOJ,GACjC,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtG0B,EAAShjC,EAAQ,iBACjBiO,EAASjO,EAAQ,iBACjBijC,EAAgB,WAChB,QAASA,GAAaxB,GAClBr4B,KAAKq4B,MAAQA,EASjB,MAPAwB,GAAax5B,UAAUy5B,QAAU,WAC7B,MAAO95B,MAAKq4B,MAAMvyB,IAAI,mBAA4ByE,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEzHmQ,EAAenC,GACX7yB,EAAOk0B,aACPd,EAAW,qBAAsB2B,EAAOG,QACzCF,KAGPniC,GAAQmiC,aAAeA,IAIpBzzB,gBAAgB,gBAAgB4zB,gBAAgB,kBAAkBC,GAAG,SAASrjC,EAAQkB,EAAOJ,GAChG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtG0B,EAAShjC,EAAQ,iBACjBiO,EAASjO,EAAQ,iBACjBsjC,EAAY,WACZ,QAASA,GAAS7B,GACdr4B,KAAKq4B,MAAQA,EASjB,MAPA6B,GAASC,mBAAqB,SAAUC,EAAOC,EAASC,EAAUC,GAC9D,OAASC,OAAQ,MAAOC,IAAK,YAAcL,EAAQ,IAAMC,EAAU,aAAeC,EAAW,cAAgBC,IAEjHL,EAAWxC,GACP7yB,EAAOk0B,aACPd,EAAW,qBAAsB2B,EAAOG,QACzCG,KAGPxiC,GAAQwiC,SAAWA,IAIhB9zB,gBAAgB,gBAAgB4zB,gBAAgB,kBAAkBU,GAAG,SAAS9jC,EAAQkB,EAAOJ,GAChG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtG0B,EAAShjC,EAAQ,iBACjBiO,EAASjO,EAAQ,iBACjB+jC,EAAc,WACd,QAASA,GAAWtC,GAChBr4B,KAAKq4B,MAAQA,EA8BjB,MA5BAsC,GAAWt6B,UAAUu6B,wBAA0B,WAC3C,MAAO56B,MAAKq4B,MAAMvyB,IAAI,6BAAsCyE,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEnIiR,EAAWt6B,UAAUw6B,eAAiB,WAClC,MAAO76B,MAAKq4B,MAAMvyB,IAAI,gCAAyCyE,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEtIiR,EAAWt6B,UAAUy6B,MAAQ,SAAUC,GACnC,MAAO/6B,MAAKq4B,MAAMO,KAAK,mBAAoBmC,OAAoBxwB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEtIiR,EAAWt6B,UAAU26B,MAAQ,SAAUC,GACnC,MAAOj7B,MAAKq4B,MAAMO,KAAK,kBAAmBqC,OAAoB1wB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAErIiR,EAAWt6B,UAAU66B,OAAS,SAAUrC,EAAIsC,GACxC,MAAOn7B,MAAKq4B,MAAMO,KAAK,qBAAuBC,EAAIsC,OAAY5wB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAErIiR,EAAWt6B,UAAU+6B,aAAe,SAAUF,EAAQG,GAClD,MAAOr7B,MAAKq4B,MAAMO,KAAK,4BAA8ByC,EAAQH,OAAc3wB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAElJiR,EAAWW,eAAiB,SAAUC,GAClC,OAASf,OAAQ,MAAOC,IAAK,yBAA2Bc,IAE5DZ,EAAWa,WAAa,SAAU3C,GAC9B,OAAS2B,OAAQ,MAAOC,IAAK,qBAAuB5B,IAExD8B,EAAajD,GACT7yB,EAAOk0B,aACPd,EAAW,qBAAsB2B,EAAOG,QACzCY,KAGPjjC,GAAQijC,WAAaA,IAIlBv0B,gBAAgB,gBAAgB4zB,gBAAgB,kBAAkByB,IAAI,SAAS7kC,EAAQkB,EAAOJ,GACjG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtG0B,EAAShjC,EAAQ,iBACjBiO,EAASjO,EAAQ,iBACjB8kC,EAA6B,WAC7B,QAASA,GAA0BrD,GAC/Br4B,KAAKq4B,MAAQA,EASjB,MAPAqD,GAA0Br7B,UAAUs7B,8BAAgC,SAAUC,GAC1E,MAAO57B,MAAKq4B,MAAMvyB,IAAI,+CAAiD0yB,mBAAmBoD,OAAsBrxB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEvLgS,EAA4BhE,GACxB7yB,EAAOk0B,aACPd,EAAW,qBAAsB2B,EAAOG,QACzC2B,KAGPhkC,GAAQgkC,0BAA4BA,IAIjCt1B,gBAAgB,gBAAgB4zB,gBAAgB,kBAAkB6B,IAAI,SAASjlC,EAAQkB,EAAOJ,GACjG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGngC,EAAcnB,EAAQ,eACtBiO,EAASjO,EAAQ,iBACjBklC,EAAa,WACb,QAASA,GAAUzD,GACfr4B,KAAKq4B,MAAQA,EAoFjB,MAlFAyD,GAAUz7B,UAAU07B,UAAY,SAAUlU,EAAOzH,GAC7C,MAAOpgB,MAAKq4B,MAAMO,KAAK,aAAeJ,mBAAmB3Q,GAAQzH,OAAY7V,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEpJoS,EAAUz7B,UAAUyF,IAAM,SAAUs0B,GAChC,MAAOp6B,MAAKq4B,MAAMvyB,IAAI,aAAes0B,MAAmB7vB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE/HoS,EAAUz7B,UAAU27B,UAAY,SAAUnU,EAAOoU,GAC7C,MAAOj8B,MAAKq4B,MAAMvyB,IAAI,aAAe0yB,mBAAmB3Q,GAAS,IAAMoU,EAAW,aAAsB1xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE/KoS,EAAUz7B,UAAU84B,KAAO,SAAUtR,EAAOoU,GACxC,MAAOj8B,MAAKq4B,MAAMvyB,IAAI,aAAe0yB,mBAAmB3Q,GAAS,IAAMoU,MAAsB1xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEpKoS,EAAUz7B,UAAUynB,MAAQ,SAAUoU,GAClC,MAAOl8B,MAAKq4B,MAAMO,KAAK,kBAAmBsD,OAAe3xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEhIoS,EAAUz7B,UAAU87B,OAAS,SAAU/B,GACnC,MAAOp6B,MAAKq4B,MAAM8D,OAAO,aAAe/B,MAAmB7vB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAElIoS,EAAUz7B,UAAU+7B,cAAgB,SAAUhC,EAAOiC,GACjD,MAAOr8B,MAAKq4B,MAAMiE,IAAI,aAAelC,EAAQ,QAASiC,OAAY9xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEzIoS,EAAUz7B,UAAUk8B,cAAgB,SAAUnC,EAAOoC,GACjD,MAAOx8B,MAAKq4B,MAAMiE,IAAI,aAAelC,EAAQ,SAAUoC,OAAWjyB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEzIoS,EAAUz7B,UAAUo8B,eAAiB,SAAUrC,EAAOoC,GAClD,MAAOx8B,MAAKq4B,MAAMiE,IAAI,aAAelC,EAAQ,SAAUoC,OAAWjyB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEzIoS,EAAUz7B,UAAUq8B,QAAU,SAAUtC,EAAOuC,GAC3C,MAAO38B,MAAKq4B,MAAMO,KAAK,aAAewB,EAAQ,WAAYuC,OAAiBpyB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAElJoS,EAAUz7B,UAAUu8B,YAAc,SAAUxC,EAAO8B,GAC/C,MAAOl8B,MAAKq4B,MAAMO,KAAK,aAAewB,EAAQ,gBAAiB8B,OAAe3xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAErJoS,EAAUz7B,UAAUw8B,aAAe,SAAUzC,EAAO8B,GAChD,MAAOl8B,MAAKq4B,MAAMiE,IAAI,aAAelC,EAAQ,oBAAqB8B,OAAe3xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAExJoS,EAAUz7B,UAAUy8B,eAAiB,SAAUjV,EAAOoU,EAAUc,GAC5D,MAAO/8B,MAAKq4B,MAAMvyB,IAAI,uBAAyB0yB,mBAAmB3Q,GAAS,IAAMoU,EAAW,IAAMc,MAAwBxyB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEjMoS,EAAUz7B,UAAU28B,aAAe,SAAUnV,EAAOuS,EAAO6C,EAAaF,GACpE,MAAO/8B,MAAKq4B,MAAMO,KAAK,sBAAwBJ,mBAAmB3Q,GAAS,IAAMuS,EAAQ,IAAM6C,EAAc,IAAMF,MAAwBxyB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAElNoS,EAAUz7B,UAAU68B,kBAAoB,SAAUrV,EAAOuS,EAAO+C,GAC5D,MAAOn9B,MAAKq4B,MAAMO,KAAK,sBAAwBwB,EAAQ,IAAM+C,EAAa,UAAY3E,mBAAmB3Q,OAAoBtd,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEpMoS,EAAUz7B,UAAU+8B,eAAiB,SAAUhD,GAC3C,MAAOp6B,MAAKq4B,MAAMvyB,IAAI,qBAAuBs0B,MAAmB7vB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEvIoS,EAAUz7B,UAAUg9B,oBAAsB,SAAUC,EAASnmB,EAAM8kB,GAC/D,MAAOj8B,MAAKq4B,MAAMvyB,IAAI,iCAAmC0yB,mBAAmB8E,GAAW,IAAMnmB,EAAO,aAAe8kB,MAAsB1xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEhNoS,EAAUz7B,UAAUk9B,sBAAwB,SAAUC,GAClD,MAAOx9B,MAAKq4B,MAAMO,KAAK,kCAAmC4E,OAAiBjzB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAElJoS,EAAUz7B,UAAUo9B,wBAA0B,SAAUrD,EAAOsD,GAC3D,MAAO19B,MAAKq4B,MAAMO,KAAK,2CAA6CwB,EAAQ,QAAU5B,mBAAmBkF,OAAkBnzB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAElMoS,EAAUz7B,UAAUs9B,iBAAmB,SAAUL,EAASrB,GACtD,MAAOj8B,MAAKq4B,MAAMvyB,IAAI,8BAAgC0yB,mBAAmB8E,GAAW,IAAMrB,MAAsB1xB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEvLoS,EAAUz7B,UAAUu9B,oBAAsB,SAAUxD,GAChD,MAAOp6B,MAAKq4B,MAAMvyB,IAAI,iCAAmCs0B,MAAmB7vB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEnJoS,EAAUz7B,UAAUw9B,sBAAwB,SAAUzD,EAAO0D,GACzD,MAAO99B,MAAKq4B,MAAMO,KAAK,mCAAqCwB,EAAQ,IAAM5B,mBAAmBsF,OAA0BvzB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE9LoS,EAAUz7B,UAAU09B,eAAiB,SAAU3D,GAC3C,MAAOp6B,MAAKq4B,MAAMO,KAAK,4BAA8BwB,MAAmB7vB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE/IoS,EAAUkC,yBAA2B,SAAUnW,EAAOzH,GAClD,OAASoa,OAAQ,OAAQC,IAAK,aAAejC,mBAAmB3Q,GAAS,wBAE7EiU,EAAUmC,0BAA4B,SAAUpW,EAAOuS,GACnD,OAASI,OAAQ,OAAQC,IAAK,aAAejC,mBAAmB3Q,GAAS,IAAMuS,EAAQ,yBAE3F0B,EAAUoC,4BAA8B,SAAUrW,EAAOuS,GACrD,OAASI,OAAQ,MAAOC,IAAK,aAAejC,mBAAmB3Q,GAAS,IAAMuS,EAAQ,wBAE1F0B,EAAYpE,GACR7yB,EAAOk0B,aACPd,EAAW,qBAAsBlgC,EAAYC,aAC9C8jC,KAGPpkC,GAAQokC,UAAYA,IAIjB9C,cAAc,GAAG5yB,gBAAgB,kBAAkB+3B,IAAI,SAASvnC,EAAQkB,EAAOJ,GAClF,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtG0B,EAAShjC,EAAQ,iBACjBiO,EAASjO,EAAQ,iBACjBwnC,EAAiB,WACjB,QAASA,GAAc/F,GACnBr4B,KAAKq4B,MAAQA,EASjB,MAPA+F,GAAc/9B,UAAUyF,IAAM,WAC1B,MAAO9F,MAAKq4B,MAAMvyB,IAAI,oBAA6ByE,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE1H0U,EAAgB1G,GACZ7yB,EAAOk0B,aACPd,EAAW,qBAAsB2B,EAAOG,QACzCqE,KAGP1mC,GAAQ0mC,cAAgBA,IAIrBh4B,gBAAgB,gBAAgB4zB,gBAAgB,kBAAkBqE,IAAI,SAASznC,EAAQkB,EAAOJ,GACjG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGngC,EAAcnB,EAAQ,eACtBiO,EAASjO,EAAQ,iBACjB0nC,EAAa,WACb,QAASA,GAAUjG,GACfr4B,KAAKq4B,MAAQA,EAejB,MAbAiG,GAAUj+B,UAAUyF,IAAM,WACtB,MAAO9F,MAAKq4B,MAAMvyB,IAAI,gBAAyByE,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEtH4U,EAAUj+B,UAAUk+B,OAAS,WACzB,MAAOv+B,MAAKq4B,MAAMvyB,IAAI,uBAAgCyE,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAE7H4U,EAAUj+B,UAAUm+B,KAAO,SAAUjG,GACjC,MAAOv4B,MAAKq4B,MAAMvyB,IAAI,kBAAoByyB,MAAkBhuB,IAAI,SAAUmf,GAAO,OAAUtJ,KAAMsJ,EAAI+O,OAAQC,iBAAkBhP,MAEnI4U,EAAY5G,GACR7yB,EAAOk0B,aACPd,EAAW,qBAAsBlgC,EAAYC,aAC9CsmC,KAGP5mC,GAAQ4mC,UAAYA,IAIjBtF,cAAc,GAAG5yB,gBAAgB,kBAAkBq4B,IAAI,SAAS7nC,EAAQkB,EAAOJ,GAClF,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8nC,EAAO9nC,EAAQ,QACf+nC,EAAoB/nC,EAAQ,qBAC5B4P,EAAgB5P,EAAQ,2BACxBoB,EAAa,WACb,QAASA,GAAU4mC,EAAQC,GACvB7+B,KAAK4+B,OAASA,EACd5+B,KAAK6+B,aAAeA,EA6CxB,MA3CA7mC,GAAUqI,UAAUy+B,YAAc,SAAUC,GACxC,GAAIC,GAAQh/B,IAUZ,OATaA,MAAK4+B,OAAO5D,MAAM+D,GAASx0B,IAAI,SAAUmf,GAAO,MAAOA,GAAIgP,mBAAqBuG,MAAM,SAAUzF,GACzG,MAAqB,OAAjBA,EAAM0F,QACNF,EAAMH,aAAaM,eACZH,EAAMH,aAAaO,aAAaC,KAAK,GAAGC,QAAQ,WAAc,MAAON,GAAMF,YAAYC,MAGvFL,EAAKa,WAAWC,MAAMhG,MAKzCxhC,EAAUqI,UAAUo/B,cAAgB,SAAUtE,GAC1C,GAAI6D,GAAQh/B,IAUZ,OATaA,MAAK4+B,OAAOxD,aAAaD,EAAKD,OAAQC,EAAKV,KAAKlwB,IAAI,SAAUmf,GAAO,MAAOA,GAAIgP,mBAAqBuG,MAAM,SAAUzF,GAC9H,MAAqB,OAAjBA,EAAM0F,QACNF,EAAMH,aAAaM,eACZH,EAAMH,aAAaO,aAAaC,KAAK,GAAGC,QAAQ,WAAc,MAAON,GAAMS,cAActE,MAGzFuD,EAAKa,WAAWC,MAAMhG,MAKzCxhC,EAAUqI,UAAUyF,IAAM,SAAU20B,EAAKyB,GAAW,MAAOl8B,MAAK8+B,aAAc1e,KAAM,KAAMqa,IAAKA,EAAKiF,KAAM,SAC1G1nC,EAAUqI,UAAUu4B,KAAO,SAAU6B,EAAKU,EAAMe,GAC5C,MAAIf,aAAgBwE,aACT3/B,KAAKy/B,eAAgBvE,OAAQC,EAAMV,IAAKA,IAE/CU,YAAgBljC,GACT+H,KAAKy/B,eAAgBvE,OAAQC,EAAKyE,YAAanF,IAAKA,IAGpDz6B,KAAK8+B,aAAc1e,KAAM+a,GAAQ0E,KAAKC,UAAU3E,GAAOV,IAAKA,EAAKiF,KAAM,UAEtF1nC,EAAUqI,UAAUi8B,IAAM,SAAU7B,EAAKU,EAAMe,GAAW,MAAOl8B,MAAK8+B,aAAc1e,KAAM+a,GAAQ0E,KAAKC,UAAU3E,GAAOV,IAAKA,EAAKiF,KAAM,SACxI1nC,EAAUqI,UAAU87B,OAAS,SAAU1B,EAAKyB,GAAW,MAAOl8B,MAAK8+B,aAAc1e,KAAM,KAAMqa,IAAKA,EAAKiF,KAAM,YAC7G1nC,EAAY0/B,GACR7yB,EAAOk0B,aACPd,EAAW,qBAAsB0G,EAAkBhE,WAAYn0B,EAAcC,eAC9EzO,KAGPN,GAAQM,UAAYA,CACpB,IAAI+nC,KACJA,GAAKC,YAAc,SAAUC,GAEzB,IAAK,GADDC,MACKhpC,EAAI,EAAGA,EAAI+oC,EAAIroC,OAAQV,IAC5B,GAAI+oC,EAAIE,WAAWjpC,IAAM,IACrBgpC,EAAUv1B,KAAKs1B,EAAIE,WAAWjpC,QAG9B,KAAK,GADDgjB,GAAIse,mBAAmByH,EAAI5gB,OAAOnoB,IAAIyd,OAAO,GAAGiL,MAAM,KACjDD,EAAI,EAAGA,EAAIzF,EAAEtiB,OAAQ+nB,IAC1BugB,EAAUv1B,KAAKyR,SAASlC,EAAEyF,GAAI,IAE1C,OAAOugB,IAEXH,EAAKK,MAAQ,SAAUF,GAEnB,IAAK,GADDD,GAAM,GACD/oC,EAAI,EAAGA,EAAIgpC,EAAUtoC,OAAQV,IAClC+oC,GAAOC,EAAUhpC,IAAM,IACF,KAAjBgpC,EAAUhpC,GAAc,MACpBmpC,OAAOC,aAAaJ,EAAUhpC,IAClC,IAAMgpC,EAAUhpC,GAAG6S,SAAS,IAAIgI,aACxC,OAAOwuB,oBAAmBN,GAE9B,IAAIhoC,GAAwB,WACxB,QAASA,GAAqB+W,EAAOwxB,GACjCxgC,KAAKgP,MAAQA,EACTwxB,YAAoBb,aACpB3/B,KAAKygC,UAAYD,GAEjBxgC,KAAKygC,SAAWD,EAuCxB,MArCAvoC,GAAqBoI,UAAUqgC,SAAW,SAAUC,GAEhD,IADA,GAAIC,MACGD,EAAM,GAAG,CACZ,KAAIA,EAAM,KAIL,CACDC,EAAUj2B,KAAKg2B,EACf,OALAC,EAAUj2B,KAAK,KACfg2B,GAAO,IAQf,MADAC,GAAUj2B,KAAK,GACRi2B,GAEX3oC,EAAqBoI,UAAUu/B,UAAY,WACvC,GAAIZ,GAAQh/B,KACRkR,EAASlR,KAAKygC,SAASl2B,IAAI,SAAUtT,GAAK,MAAO,IAAI4pC,YAAW5pC,KAChE6pC,EAAU5vB,EAAO3G,IAAI,SAAUtT,GAAK,MAAO+nC,GAAM0B,SAASzpC,EAAEW,SAChE,IAAMoI,KAAKgP,MAAO,CACd,GAAI+xB,GAAQhB,EAAKC,YAAYH,KAAKC,UAAU9/B,KAAKgP,MAAO,KAAM,OAC1DgyB,EAAahhC,KAAK0gC,SAASK,EAAMnpC,OACrCsZ,IAAU6vB,GAAO7iC,OAAOgT,GACxB4vB,GAAWE,GAAY9iC,OAAO4iC,GAElC,GAAIG,GAAc/vB,EAAOgwB,OAAO,SAAUC,EAAKlqC,GAAK,MAAOkqC,GAAMlqC,EAAEW,QAAW,GAAKkpC,EAAQI,OAAO,SAAUC,EAAKlqC,GAAK,MAAOkqC,GAAMlqC,EAAEW,QAAW,GAC5IwoB,EAAO,GAAIygB,YAAWI,GACtB/Z,EAAS,CAQb,OAPAhW,GAAO3L,QAAQ,SAAU67B,EAAMnS,GAC3B,GAAIxC,GAASqU,EAAQ7R,EACrB7O,GAAKvP,IAAI4b,EAAQvF,GACjBA,GAAUuF,EAAO70B,OACjBwoB,EAAKvP,IAAIuwB,EAAMla,GACfA,GAAUka,EAAKxpC,SAEZwoB,EAAKihB,QAETppC,IAEXP,GAAQO,qBAAuBA,IAI5BqpC,0BAA0B,GAAGC,oBAAoB,EAAEn7B,gBAAgB,gBAAgBE,KAAO,SAASk7B,IAAI,SAAS5qC,EAAQkB,EAAOJ,GAClI,cACA,SAAkBiB,GACd,IAAK,GAAIlB,KAAKkB,GAAQjB,EAAQkB,eAAenB,KAAIC,EAAQD,GAAKkB,EAAElB,KAE3Db,EAAQ,yBAId6qC,qBAAqB,IAAIC,IAAI,SAAS9qC,EAAQkB,EAAOJ,GACxD,YACA,IAAIiqC,GAAc,WACd,QAASA,GAAWnF,EAAKoF,EAAQ/Z,EAAOga,EAAYC,EAAeC,GAC/D/hC,KAAKw8B,IAAMA,EACXx8B,KAAK4hC,OAASA,EACd5hC,KAAK6nB,MAAQA,EACb7nB,KAAK6hC,WAAaA,EAClB7hC,KAAK8hC,cAAgBA,EACrB9hC,KAAK+hC,MAAQA,EAEjB,MAAOJ,KAEXjqC,GAAQiqC,WAAaA,OAIfK,IAAI,SAASprC,EAAQkB,EAAOJ,GAClC,YACA,SAASgB,GAASC,GACd,IAAK,GAAIlB,KAAKkB,GAAQjB,EAAQkB,eAAenB,KAAIC,EAAQD,GAAKkB,EAAElB,IAEpE,GAAIwqC,GAAsBrrC,EAAQ,uBAC9BsrC,EAAsBtrC,EAAQ,uBAC9BurC,EAAmBvrC,EAAQ,oBAC3B+nC,EAAoB/nC,EAAQ,qBAC5BwrC,EAAmBxrC,EAAQ,oBAC3ByrC,EAAuBzrC,EAAQ,wBAC/B0rC,EAAoB1rC,EAAQ,qBAC5B2rC,EAAmC3rC,EAAQ,oCAC3C4rC,EAAuB5rC,EAAQ,wBAC/BmB,EAAcnB,EAAQ,eACtB4P,EAAgB5P,EAAQ,0BAC5B8B,GAAS9B,EAAQ,wBACjB8B,EAAS9B,EAAQ,wBACjB8B,EAAS9B,EAAQ,qBACjB8B,EAAS9B,EAAQ,sBACjB8B,EAAS9B,EAAQ,qBACjB8B,EAAS9B,EAAQ,yBACjB8B,EAAS9B,EAAQ,sBACjB8B,EAAS9B,EAAQ,qCACjB8B,EAAS9B,EAAQ,wBACjB,IAAIwB,GAAMxB,EAAQ,kBAClBc,GAAQU,IAAMA,EACdV,EAAQ+qC,kBAAoBj8B,EAAcC,YAAa1O,EAAYC,UAAWiqC,EAAoBpI,aAAcqI,EAAoB9J,aAAc+J,EAAiBrG,UAAW6C,EAAkBhE,WAAY2H,EAAkB/I,WAAY6I,EAAiB9D,UAAWlmC,EAAI8hC,SAAUmI,EAAqBnJ,cAAeqJ,EAAiC7G,0BAA2B8G,EAAqBpE,iBAItYkD,0BAA0B,GAAGoB,sBAAsB,EAAEC,uBAAuB,EAAEC,oBAAoB,EAAEC,sBAAsB,EAAEC,kBAAkB,EAAEvB,oBAAoB,EAAEwB,mCAAmC,GAAGC,mBAAmB,GAAGC,uBAAuB,GAAGC,mBAAmB,GAAGlK,cAAc,KAAKmK,IAAI,SAASvsC,EAAQkB,EAAOJ,GACpU,YAGA,SAAS0rC,GAAalH,GAClB,MAAO,UAAUtE,EAAQxnB,GAChBwnB,EAAOyL,mBACRzL,EAAOyL,qBACXzL,EAAOyL,iBAAiB14B,KAAKrK,OAAOgjC,QAASC,KAAMnzB,GAAO8rB,SAIlE,QAASsH,GAActH,GACnB,MAAO,UAAUuH,EAAarzB,GACrBqzB,EAAYC,YACbD,EAAYC,UAAY,cAC5BpjC,OAAOuF,eAAe49B,EAAarzB,GAC/BtK,IAAK,WACD,GAAI9F,KAAK2jC,gBACL,MAAO3jC,MAAK2jC,eAChB,IAAIC,GAAU,GAAIC,GAAOC,QAAQ9jC,MAC7B+jC,EAAW,YACX/jC,MAAK0jC,YACLK,EAAW/jC,KAAK0jC,UAEpB,IAAIM,GAAW9H,GAAWA,EAAQ8H,UAAY,IAC1CC,EAAO,GAAIj/B,GAAGk/B,OAIlB,OAHAD,GAAKE,WAAWH,GAAUI,UAAU,WAAc,MAAOR,GAAQS,kBACjErkC,KAAK0jC,UAAY,WAAcK,IAAYE,EAAKt+B,KAAK,OACrD3F,KAAK2jC,gBAAkBC,EAChBA,MA5BvB,GAAIC,GAASjtC,EAAQ,UACjBoO,EAAKpO,EAAQ,OAQjBc,GAAQ0rC,aAAeA,EAwBvB1rC,EAAQ8rC,cAAgBA,IAIrBc,SAAS,GAAGh+B,KAAO,SAASi+B,IAAI,SAAS3tC,EAAQkB,EAAOJ,GAC3D,YAEA,SAAS8sC,GAAa7jB,EAAG1G,GAErB,IAAK,GADD/P,MACKhT,EAAIypB,EAAE/oB,OAAS,EAAGV,GAAK,IAAKA,EACjCgT,EAAIyW,EAAEzpB,IAAMypB,EAAEzpB,EAClB,KAAK,GAAIA,GAAI+iB,EAAEriB,OAAS,EAAGV,GAAK,IAAKA,EACjCgT,EAAI+P,EAAE/iB,IAAM+iB,EAAE/iB,EAClB,IAAIwT,KACJ,KAAK,GAAIP,KAAKD,GACNA,EAAItR,eAAeuR,IACnBO,EAAIC,KAAKT,EAAIC,GAErB,OAAOO,GAZX,GAAIiI,GAAO/b,EAAQ,aAgBfktC,EAAW,WACX,QAASA,GAAQW,GACbzkC,KAAKykC,QAAUA,EACfzkC,KAAK0kC,YAAa,EAyOtB,MAvOAZ,GAAQzjC,UAAUgkC,cAAgB,SAAUM,GACxC,GAAI3F,GAAQh/B,SACW,KAAnB2kC,IAA6BA,GAAiB,EAClD,IAAIC,IAAU,CACV5kC,MAAKuK,KAAOvK,KAAK4jC,SACjB5jC,KAAKykC,QAAQpB,iBAAiB99B,QAAQ,SAAU2E,GAC5C,GAAIkG,GAAMlG,EAAIq5B,IACdvE,GAAM6F,cAAc36B,EAAKy6B,GACrB3F,EAAM4E,QAAQxzB,IAAQ4uB,EAAM4E,QAAQxzB,GAAK00B,SACzCF,GAAU,KAEtB5kC,KAAK0kC,WAAaE,GAEtBtkC,OAAOuF,eAAei+B,EAAQzjC,UAAW,aACrCyF,IAAK,WAAc,MAAO9F,MAAK0kC,YAC/B3+B,YAAY,EACZC,cAAc,IAElB89B,EAAQzjC,UAAUwkC,cAAgB,SAAU36B,EAAKy6B,GAC7C,GAAIv0B,GAAMlG,EAAIq5B,IACd,IAAIr5B,EAAI66B,QAAS,CACb,GAAIC,GAAUhlC,KAAKuK,IAAI6F,OACnB60B,EAAWjlC,KAAKykC,QAAQr0B,OACxB80B,EAAUV,EAAaQ,EAAOz6B,IAAI,SAAUtT,GAAK,MAAOA,GAAEiT,EAAI66B,WAAcE,EAAQ16B,IAAI,SAAUtT,GAAK,MAAOA,GAAEiT,EAAI66B,YACpHI,KACAC,GAAW,CACfF,GAAQ3/B,QAAQ,SAAU6K,GACtB,GAAIi1B,GAAW1yB,EAAKA,KAAKqyB,EAAOxG,KAAK,SAAUtnC,GAAK,MAAOA,GAAEgT,EAAI66B,WAAa30B,IAAS60B,EAAQzG,KAAK,SAAUtnC,GAAK,MAAOA,GAAEgT,EAAI66B,WAAa30B,IAC7I+0B,GAAc/0B,EAAIrG,YAAcs7B,EAC5BA,GAAYA,EAASztC,SACrBwtC,GAAW,KAEnBplC,KAAK4jC,QAAQxzB,IAASk1B,MAAOH,EAAeL,OAAQM,EAAUG,cAAeH,OAE5E,IAAIl7B,EAAIs7B,WAAab,EAAgB,CACtC,GAAIf,IAAU,EACV6B,EAAe9yB,EAAKA,KAAK3S,KAAKuK,IAAI6F,GAAMpQ,KAAKykC,QAAQr0B,GACrDq1B,IACAv7B,EAAIs7B,SAASjgC,QAAQ,SAAU67B,GAC3B,GAAIsE,GAAYtE,EAAKxhB,MAAM,KACvB+lB,EAAYD,EAAU,GAAIE,EAAaF,EAAU,EACrDD,GAAalgC,QAAQ,SAAU2E,GACvBA,EAAI/D,MACA+D,EAAI/D,KAAK0/B,UAAU,SAAUllB,GAAK,MAAOA,GAAE5W,WAAWiJ,gBAAkB2yB,EAAU3yB,iBAAqB,GACvG9I,EAAI/D,KAAK0/B,UAAU,SAAUllB,GAAK,MAAOA,GAAE5W,WAAWiJ,gBAAkB4yB,EAAW5yB,iBAAqB,IACxG4wB,GAAU,OAK9B5jC,KAAK4jC,QAAQxzB,IAAS01B,OAAQL,EAAcX,OAAQlB,EAAS2B,cAAeE,KAAkBA,EAAa7tC,YAE1G,CACD,GAAImuC,GAAapzB,EAAKA,KAAK3S,KAAKuK,IAAI6F,GAAMpQ,KAAKykC,QAAQr0B,GACvDpQ,MAAK4jC,QAAQxzB,IACT01B,OAAQC,EAAYjB,OAAQiB,KAAgBA,EAAWnuC,OAAQ2tC,cAAeQ,KAAgBA,EAAWnuC,UAIrHksC,EAAQzjC,UAAU2lC,UAAY,SAAU7/B,GAMpC,MAJoB,gBAATA,GACEA,EAAKyZ,MAAM,UAAUqmB,OAAO,SAAUzgC,GAAK,QAASA,IAEpDW,GAGjB29B,EAAQzjC,UAAU6lC,iBAAmB,SAAUtC,EAAS/sB,GACpD,MAAO+sB,GAAQqC,OAAO,SAAUE,GAAU,MAAOtvB,GAAOuvB,MAAM,SAAUhF,EAAMnS,GAC1E,MAAc,KAAVA,GAGOkX,EAAOhgC,KAAK8oB,IAAUmS,OAGzC0C,EAAQzjC,UAAUgmC,SAAW,SAAUxvB,EAAQyvB,EAAQC,GACnD,GAAI3C,GAAU5jC,KAAK4jC,QAAQ/sB,EAAO,GAClC,KAAK+sB,IAAYA,EAAQ2B,cACrB,MAAOe,SACX,IAAI1C,EAAQkC,OACR,MAAOQ,GAAO1C,EAAQkC,OAAQjvB,EAAOxG,MAAM,GAAIwG,EAAOxG,MAAM,EAAG,GAC9D,IAAIuzB,EAAQ0B,MAAO,CACpB,GAAIzuB,EAAOjf,QAAU,EAAG,CACpB,GAAIwpC,GAAOwC,EAAQ0B,MAAMzuB,EAAO,GAChC,OAAOyvB,GAAOlF,EAAMvqB,EAAOxG,MAAM,GAAIwG,EAAOxG,MAAM,EAAG,IAGrD,GAAIm2B,GAAUlmC,OAAOyxB,KAAK6R,EAAQ0B,OAAO/6B,IAAI,SAAUpE,GACnD,GAAIi7B,GAAOwC,EAAQ0B,MAAMn/B,EACzB,OAAOmgC,GAAOlF,MAAWvqB,EAAO,GAAI1Q,KAExC,OAAIogC,GACOA,EAAYC,GAChB,OAInB1C,EAAQzjC,UAAUomC,YAAc,SAAUtgC,GACtC,GAAI64B,GAAQh/B,IACZ,KAAKA,KAAK4jC,QACN,OAAO,CACX,IAAI/sB,GAAS7W,KAAKgmC,UAAU7/B,EAC5B,SAAK0Q,EAAOjf,QAELoI,KAAKqmC,SAASxvB,EAAQ,SAAUnH,EAAOg3B,GAC1C,SAAKh3B,IAAUA,EAAM9X,UAEA,IAAjB8uC,EAAM9uC,UAEDonC,EAAMkH,iBAAiBx2B,EAAOg3B,GAAO9uC,SAC/C,SAAU+uC,GAAQ,MAAOA,GAAK9U,KAAK,SAAUlR,GAAK,MAAOA,QAEhErgB,OAAOuF,eAAei+B,EAAQzjC,UAAW,OACrCyF,IAAK,WACD,MAAO9F,MAAK4jC,SAEhB79B,YAAY,EACZC,cAAc,IAElB89B,EAAQzjC,UAAUumC,OAAS,SAAUzgC,GACjC,GAAI64B,GAAQh/B,IACZ,IAAKmG,GAASA,EAAKvO,OAQd,CACD,GAAIivC,GAAW7mC,KAAKgmC,UAAU7/B,EAC9B,KAAK0gC,EAASjvC,OACV,MACJ,IAAIkvC,GAAQ9mC,KAAKykC,QAAQpB,iBAAiB7E,KAAK,SAAUvnC,GAAK,MAAOA,GAAEssC,OAASsD,EAAS,KACrFz2B,EAAM02B,EAAMvD,IACQ,KAApBsD,EAASjvC,QACToI,KAAKuK,IAAI6F,GAAOpQ,KAAKykC,QAAQr0B,GAAOyvB,KAAKO,MAAMP,KAAKC,UAAU9/B,KAAKykC,QAAQr0B,SAASrD,GACpF/M,KAAK4jC,QAAQxzB,OAAOrD,KAGpB/M,KAAK6kC,cAAciC,GAAO,GAC1B9mC,KAAKqmC,SAASQ,EAAU,SAAUn3B,EAAOg3B,EAAOK,GAC5C,GAAIr3B,GAASg3B,GAASK,EAClB,GAAqB,IAAjBA,EAAMnvC,OAAc,CACpB,GAAIovC,GAAUhI,EAAMkH,iBAAiBx2B,EAAOg3B,EAC5CM,GAAQzhC,QAAQ,SAAU9N,GAAK,MAAOkb,GAAKs0B,YAAYjI,EAAMz0B,IAAIw8B,EAAM,IAAK/H,EAAMyF,QAAQsC,EAAM,IAAKtvC,SAEpG,IAAqB,IAAjBsvC,EAAMnvC,OAAc,CACzB,GAAIsvC,GAAQlI,EAAMz0B,IAAIw8B,EAAM,IAAIlB,UAAU,SAAU5uC,GAAK,MAAOA,GAAE6vC,EAAM/B,UAAYgC,EAAM,KACtFI,EAAQnI,EAAMyF,QAAQsC,EAAM,IAAIlB,UAAU,SAAU5uC,GAAK,MAAOA,GAAE6vC,EAAM/B,UAAYgC,EAAM,IAC9F,KAAe,IAAXG,IAA2B,IAAXC,EAChB,MACJ,KAAe,IAAXD,EACAlI,EAAMz0B,IAAIw8B,EAAM,IAAIp8B,KAAKk1B,KAAKO,MAAMP,KAAKC,UAAUd,EAAMyF,QAAQsC,EAAM,IAAII,UAC1E,KAAe,IAAXA,EACLnI,EAAMz0B,IAAIw8B,EAAM,IAAIK,OAAOF,EAAO,OACjC,CACD,GAAIF,GAAUhI,EAAMkH,iBAAiBx2B,EAAOg3B,EAC5CM,GAAQzhC,QAAQ,SAAU9N,GAAK,MAAOkb,GAAKs0B,YAAYjI,EAAMz0B,IAAIw8B,EAAM,IAAIG,GAAQlI,EAAMyF,QAAQsC,EAAM,IAAII,GAAQ1vC,SAKnIuI,KAAK6kC,cAAciC,GAAO,QAzC9B9mC,MAAKuK,OACLvK,KAAK4jC,WACL5jC,KAAKykC,QAAQpB,iBAAiB99B,QAAQ,SAAU2E,GAC5C,GAAIkG,GAAMlG,EAAIq5B,IACdvE,GAAMz0B,IAAI6F,GAAO4uB,EAAMyF,QAAQr0B,GAAOyvB,KAAKO,MAAMP,KAAKC,UAAUd,EAAMyF,QAAQr0B,SAASrD,MAyCnG+2B,EAAQzjC,UAAUgnC,KAAO,SAAUlhC,GAC/B,GAAI64B,GAAQh/B,IACZ,IAAKmG,GAASA,EAAKvO,OAgBd,CACD,IAAKoI,KAAKymC,YAAYtgC,GAClB,MACJ,IAAImhC,GAAWtnC,KAAKgmC,UAAU7/B,EAC9B,KAAKmhC,EAAS1vC,OACV,MACJ,IAAI2vC,GAAQvnC,KAAKykC,QAAQpB,iBAAiB7E,KAAK,SAAUvnC,GAAK,MAAOA,GAAEssC,OAAS+D,EAAS,KACrFl3B,EAAMm3B,EAAMhE,IACQ,KAApB+D,EAAS1vC,QACLoI,KAAKuK,IAAI6F,KACoB,gBAAlBpQ,MAAKuK,IAAI6F,GAChB9P,OAAOgjC,OAAOtjC,KAAKykC,QAAQr0B,GAAMyvB,KAAKO,MAAMP,KAAKC,UAAU9/B,KAAKuK,IAAI6F,MAEpEpQ,KAAKykC,QAAQr0B,GAAOyvB,KAAKO,MAAMP,KAAKC,UAAU9/B,KAAKuK,IAAI6F,MAE/DpQ,KAAKykC,QAAQr0B,OAAOrD,GACpB/M,KAAK4jC,QAAQxzB,OAAOrD,KAGpB/M,KAAK6kC,cAAc0C,GAAO,GAC1BvnC,KAAKqmC,SAASiB,EAAU,SAAU53B,EAAOg3B,EAAOK,GAC5C,GAAIA,GAASr3B,GAASg3B,EAClB,GAAqB,IAAjBK,EAAMnvC,OAAc,CACpB,GAAIovC,GAAUhI,EAAMkH,iBAAiBx2B,EAAOg3B,EAC5CM,GAAQzhC,QAAQ,SAAU9N,GAAK,MAAOkb,GAAK60B,aAAaxI,EAAMyF,QAAQsC,EAAM,IAAK/H,EAAMz0B,IAAIw8B,EAAM,IAAKtvC,SAErG,IAAqB,IAAjBsvC,EAAMnvC,OAAc,CACzB,GAAI6vC,GAAQzI,EAAMz0B,IAAIw8B,EAAM,IAAIlB,UAAU,SAAU5uC,GAAK,MAAOA,GAAEswC,EAAMxC,UAAYgC,EAAM,KACtFW,EAAQ1I,EAAMyF,QAAQsC,EAAM,IAAIlB,UAAU,SAAU5uC,GAAK,MAAOA,GAAEswC,EAAMxC,UAAYgC,EAAM,IAC9F,KAAe,IAAXU,IAA2B,IAAXC,EAChB,MACJ,KAAe,IAAXD,EACAzI,EAAMyF,QAAQsC,EAAM,IAAIK,OAAOM,EAAO,OACrC,KAAe,IAAXA,EACL1I,EAAMyF,QAAQsC,EAAM,IAAIp8B,KAAKk1B,KAAKO,MAAMP,KAAKC,UAAUd,EAAMz0B,IAAIw8B,EAAM,IAAIU,UAC1E,CACD,GAAIT,GAAUhI,EAAMkH,iBAAiBx2B,EAAOg3B,EAC5CM,GAAQzhC,QAAQ,SAAU9N,GAAK,MAAOkb,GAAK60B,aAAaxI,EAAMyF,QAAQsC,EAAM,IAAIW,GAAQ1I,EAAMz0B,IAAIw8B,EAAM,IAAIU,GAAQhwC,SAKpIuI,KAAK6kC,cAAc0C,GAAO,QA1DP,CACvB,IAAKvnC,KAAK2nC,UACN,MACJ3nC,MAAK4jC,WACL5jC,KAAKykC,QAAQpB,iBAAiB99B,QAAQ,SAAU2E,GAC5C,GAAIkG,GAAMlG,EAAIq5B,IACVvE,GAAMz0B,IAAI6F,GACoB,gBAAnB4uB,GAAMz0B,IAAI6F,GACjB9P,OAAOgjC,OAAOtE,EAAMyF,QAAQr0B,GAAMyvB,KAAKO,MAAMP,KAAKC,UAAUd,EAAMz0B,IAAI6F,MAEtE4uB,EAAMyF,QAAQr0B,GAAOyvB,KAAKO,MAAMP,KAAKC,UAAUd,EAAMz0B,IAAI6F,KAG7D4uB,EAAMyF,QAAQr0B,OAAOrD,OAiD9B+2B,IAEXpsC,GAAQosC,QAAUA,IAIf8D,YAAY,cAAcC,IAAI,SAASjxC,EAAQkB,EAAOJ,GACzD,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkxC,EAAmBlxC,EAAQ,kBAC3BmxC,EAAYnxC,EAAQ,iBACpBoxC,EAAapxC,EAAQ,8BACrBqxC,EAAyB,WACzB,QAASA,GAAsBC,EAAQC,EAAOC,EAAoBC,GAC9DroC,KAAKkoC,OAASA,EACdloC,KAAKmoC,MAAQA,EACbnoC,KAAKooC,mBAAqBA,EAC1BpoC,KAAKqoC,WAAaA,EA4CtB,MA1CAJ,GAAsB5nC,UAAUioC,SAAW,WACvCtoC,KAAKuoC,aAAevoC,KAAKooC,mBAAmBI,UAAU,SACtDxoC,KAAKyoC,sBAAsBzoC,KAAKuoC,eAEpCN,EAAsB5nC,UAAUqoC,MAAQ,SAAU15B,GAC9ChP,KAAK2oC,mBACL3oC,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOQ,SAEhBT,EAAsB5nC,UAAU0oC,OAAS,WACrC/oC,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOc,WAEhBf,EAAsB5nC,UAAU4oC,cAAgB,WAC5C,MAAOjpC,MAAK4oC,MAEhBX,EAAsB5nC,UAAU6oC,YAAc,WAC1C,OAAO,GAEXjB,EAAsB5nC,UAAUooC,sBAAwB,SAAUrO,GAC9D,GAAI4E,GAAQh/B,IACZA,MAAKmoC,MAAMvK,oBAAoBxD,GAAOgK,UAAU,SAAUzjB,GACtDqe,EAAMmK,KAAOxoB,EAAEP,KACf4e,EAAMoK,WAAapK,EAAMmK,KAAK,MAGtClB,EAAsB5nC,UAAUgpC,qBAAuB,SAAUC,GAC7DtpC,KAAKopC,WAAaE,GAEtBrB,EAAsB5nC,UAAUsoC,iBAAmB,WAC/C3oC,KAAKmoC,MAAM1K,wBAAwBz9B,KAAKuoC,aAAcvoC,KAAKopC,YAAYhF,UAAU,SAAUzjB,OAE/FsnB,EAAwBvQ,GACpB7yB,EAAO0kC,WACHC,SAAU,kCACVC,SAAU7yC,EAAQ,gCAClB8yC,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsB6P,EAAiB6B,UAAW5B,EAAU5vC,IAAI2jC,UAAWkM,EAAWrhC,kBAAmBqhC,EAAWhgC,oBAChIigC,KAGPvwC,GAAQuwC,sBAAwBA,IAI7B2B,6BAA6B,oBAAoBC,gBAAgB,mBAAmBC,+BAA+B,GAAG1jC,gBAAgB,gBAAgB2jC,iBAAiB,mBAAmBC,IAAI,SAASpzC,EAAQkB,EAAOJ,GACzN,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkxC,EAAmBlxC,EAAQ,kBAC3BmxC,EAAYnxC,EAAQ,iBACpBsQ,EAAkBtQ,EAAQ,6BAC1BoxC,EAAapxC,EAAQ,8BACrBwC,EAAqBxC,EAAQ,sBAC7B0Q,EAA+B1Q,EAAQ,0CACvCqzC,EAAuB,WACvB,QAASA,GAAoB/B,EAAQC,EAAOr3B,EAASs3B,EAAoBC,EAAY6B,GACjFlqC,KAAKkoC,OAASA,EACdloC,KAAKmoC,MAAQA,EACbnoC,KAAK8Q,QAAUA,EACf9Q,KAAKooC,mBAAqBA,EAC1BpoC,KAAKqoC,WAAaA,EAClBroC,KAAKkqC,4BAA8BA,EA6GvC,MA3GAD,GAAoB5pC,UAAUioC,SAAW,WACrCtoC,KAAKmqC,aAAc,GAAI7/B,OAAO+P,cAC9Bra,KAAKuoC,aAAevoC,KAAKooC,mBAAmBI,UAAU,SACtDxoC,KAAKoqC,eAAiBpqC,KAAKooC,mBAAmBI,UAAU,WACxDxoC,KAAKqqC,QAAUrqC,KAAKooC,mBAAmBI,UAAU,QACjDxoC,KAAKi8B,SAAWj8B,KAAKooC,mBAAmBI,UAAU,YAClDxoC,KAAKsqC,cAAgBtqC,KAAKuqC,gBAC1BvqC,KAAKyoC,sBAAsBzoC,KAAKuoC,eAEpC0B,EAAoB5pC,UAAUqoC,MAAQ,SAAU15B,GAC5ChP,KAAKwqC,iBACLxqC,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOQ,MAAM1oC,KAAKmqC,cAE3BF,EAAoB5pC,UAAU0oC,OAAS,WACnC/oC,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOc,WAEhBiB,EAAoB5pC,UAAU4oC,cAAgB,WAC1C,MAAOjpC,MAAK4oC,MAEhBqB,EAAoB5pC,UAAU6oC,YAAc,WACxC,OAAO,GAEXe,EAAoB5pC,UAAUkqC,cAAgB,WAC1C,GAAIJ,IAAc,GAAI7/B,OAAO+P,cACzBnjB,EAAI,EACJuzC,EAAYN,EAAc,KAC1BO,EAAW,GAAI5gC,OAAM2gC,EACzB,KAAKvzC,EAAI,EAAGA,GAAKuzC,EAAWvzC,IACxBwzC,EAASxzC,GAAMizC,EAAcjzC,CAEjC,OAAOwzC,IAEXT,EAAoB5pC,UAAUooC,sBAAwB,SAAUrO,GAC5D,GAAI4E,GAAQh/B,IACZA,MAAKmoC,MAAM/K,eAAehD,GAAOgK,UAAU,SAAUzjB,GACjDqe,EAAMmK,KAAOxoB,EAAEP,KACf4e,EAAMoK,WAAapK,EAAMmK,KAAK,GAC9BnK,EAAMmJ,MAAM9K,oBAAoB2B,EAAMoL,eAAgBpL,EAAMmL,YAAanL,EAAM/C,UAC1EmI,UAAU,SAAUzjB,GACrBqe,EAAM2L,kBAAoBhqB,EAAEP,KAC5B4e,EAAM4L,0BAA4B5L,EAAM2L,kBAAkB1E,OAAO,SAAUtlB,GAAK,MAAOA,GAAE+c,MAAQsB,EAAMoK,YAAczoB,EAAEyZ,QAAUA,IACjI4E,EAAM6L,iBAAmB7L,EAAM4L,+BAI3CX,EAAoB5pC,UAAUgpC,qBAAuB,SAAUC,GAC3D,GAAItK,GAAQh/B,IACZA,MAAKopC,WAAaE,EAClBtpC,KAAK4qC,0BAA4B5qC,KAAK2qC,kBAAkB1E,OAAO,SAAUtlB,GAAK,MAAOA,GAAE+c,MAAQsB,EAAMoK,YAAczoB,EAAEyZ,QAAU4E,EAAMuJ,eACrIvoC,KAAK6qC,iBAAmB7qC,KAAK4qC,2BAEjCX,EAAoB5pC,UAAUyqC,oBAAsB,WAChD,GAAI9L,GAAQh/B,IACZA,MAAKmoC,MAAM9K,oBAAoBr9B,KAAKoqC,eAAgBpqC,KAAKmqC,YAAanqC,KAAKi8B,UACtEmI,UAAU,SAAUzjB,GACrBqe,EAAM2L,kBAAoBhqB,EAAEP,KAC5B4e,EAAM6L,iBAAmB7L,EAAM2L,qBAGvCV,EAAoB5pC,UAAU0qC,uBAAyB,SAAUC,EAAUC,GACvEjrC,KAAK6qC,iBAAiBrM,KAAK,SAAU7d,GAAK,MAAOA,GAAEyZ,QAAU4Q,EAAS5Q,QAAU6C,YAAcgO,GAElGhB,EAAoB5pC,UAAUmqC,eAAiB,WAC3C,GAAIxL,GAAQh/B,KACRkrC,GACA9Q,MAAOp6B,KAAKuoC,aACZ7K,IAAK19B,KAAKopC,WACVnN,SAAUj8B,KAAKi8B,SACf9kB,KAAMnX,KAAKmqC,YACX7M,QAASt9B,KAAKoqC,eACd35B,KAAMzQ,KAAKqqC,QACXpN,aAAa,IAEbj9B,KAAK6qC,iBAAiBrM,KAAK,SAAU7d,GAAK,MAAOA,GAAEyZ,QAAU4E,EAAMuJ,gBAAoBvoC,KAAK6qC,iBAAiBjzC,OAAS,IACtHoI,KAAK6qC,iBAAiBlgC,KAAKugC,GAC/BlrC,KAAKmoC,MAAM5K,sBAAsBv9B,KAAK6qC,kBAAkBzG,UAAU,SAAUzjB,MAE5E3gB,KAAK6qC,iBAAiB5E,OAAO,SAAUtlB,GAAK,OAAyB,IAAlBA,EAAEsc,cAA0B13B,QAAQ,SAAU0U,GAC7F+kB,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAa,qBAC7CjR,MAAOngB,EAAEmgB,WAIrB6P,EAAoB5pC,UAAUirC,mBAAqB,SAAUvO,GACzD,GAAIiC,GAAQh/B,IACZA,MAAKmqC,YAAcpN,EACnB/8B,KAAKmoC,MAAM9K,oBAAoBr9B,KAAKoqC,eAAgBrN,EAAY/8B,KAAKi8B,UAChEmI,UAAU,SAAUzjB,GACrBqe,EAAM2L,kBAAoBhqB,EAAEP,KAC5B4e,EAAM4L,0BAA4B5L,EAAM2L,kBAAkB1E,OAAO,SAAUtlB,GAAK,MAAOA,GAAE+c,MAAQsB,EAAMoK,YAAczoB,EAAEyZ,QAAU4E,EAAMuJ,eACvIvJ,EAAM6L,iBAAmB7L,EAAM4L,6BAGvCX,EAAsBvS,GAClB7yB,EAAO0kC,WACHC,SAAU,0BACVC,SAAU7yC,EAAQ,8BAClB20C,YAAanyC,EAAmBC,kBAChCqwC,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsB6P,EAAiB6B,UAAW5B,EAAU5vC,IAAI2jC,UAAW50B,EAAgBC,cAAe6gC,EAAWrhC,kBAAmBqhC,EAAWhgC,iBAAkBV,EAA6BC,8BAC9M0iC,KAGPvyC,GAAQuyC,oBAAsBA,IAI3BL,6BAA6B,oBAAoBC,gBAAgB,mBAAmB2B,yCAAyC,GAAGC,4BAA4B,GAAGC,6BAA6B,GAAGC,qBAAqB,GAAGvlC,gBAAgB,gBAAgB2jC,iBAAiB,mBAAmB6B,IAAI,SAASh1C,EAAQkB,EAAOJ,GAC1TI,EAAOJ,QAAU,6+DACXm0C,IAAI,SAASj1C,EAAQkB,EAAOJ,GAClC,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBk1C,EAAel1C,EAAQ,oBACvBoO,EAAKpO,EAAQ,QACb4J,EAAe5J,EAAQ,cACvBkR,EAAgBlR,EAAQ,2BACxBm1C,EAAwB,WACxB,QAASA,GAAqBC,GAC1BhsC,KAAKgsC,UAAYA,EAMrB,MAJAD,GAAuBrU,GACnB7yB,EAAOonC,WAAYzC,SAAU,UAC7BvR,EAAW,qBAAsBpzB,EAAOqnC,cACzCH,KAGPr0C,GAAQq0C,qBAAuBA,CAC/B,IAAI7xC,GAAgC,WAChC,QAASA,GAA6BiyC,EAAUC,EAAS/D,GACrDroC,KAAKmsC,SAAWA,EAChBnsC,KAAKosC,QAAUA,EACfpsC,KAAKqoC,WAAaA,EAClBroC,KAAKqsC,eAAiB,EACtBrsC,KAAKssC,eAAiB,GAAIznC,GAAO0nC,aACjCvsC,KAAKwsC,QAAS,EACdxsC,KAAKysC,aAAc,EAqJvB,MAnJAvyC,GAA6BmG,UAAUioC,SAAW,aAElDpuC,EAA6BmG,UAAUqF,gBAAkB;uCACrD,GAAIs5B,GAAQh/B,IACZgF,GAAGu6B,WAAWyE,SAAS,KAClB3E,KAAK,GACL+E,UAAU,WACXpF,EAAM0N,UAGdxyC,EAA6BmG,UAAUqsC,KAAO,WAC1C1sC,KAAK2sC,UAAU3sC,KAAK4sC,MAAMZ,UAAUa,eACpC7sC,KAAK8sC,mBAET5yC,EAA6BmG,UAAU0sC,sBAAwB,SAAUC,GACrEA,EAAMC,kBACNjtC,KAAKwsC,QAAUxsC,KAAKwsC,QAExBtyC,EAA6BmG,UAAU6sC,UAAY,SAAUF,EAAOG,GAChE,GAAInO,GAAQh/B,IAGZ,IAFIgtC,GACAA,EAAMC,kBACNE,EAAOC,SAAWptC,KAAKqtC,6BAKvB,WAJArtC,MAAKqoC,WAAWviC,IAAI,sDAAwDwnC,MAAOttC,KAAKqsC,iBACnFjI,UAAU,SAAUntC,GACrB,MAAO+nC,GAAMoN,QAAQ5S,MAAMviC,IAInCk2C,GAAOC,SAAWD,EAAOC,QACzBptC,KAAKutC,iBAAiBJ,GACtBntC,KAAKwtC,QAAQhP,KAAK,SAAU7d,GAAK,MAAOA,GAAEvQ,MAAQ+8B,EAAO/8B,MAAQg9B,QAAUD,EAAOC,SAEtFlzC,EAA6BmG,UAAUotC,QAAU,WAC7CztC,KAAK0sC,QAETxyC,EAA6BmG,UAAUgtC,2BAA6B,WAC7CrtC,KAAKwtC,QAAQvH,OAAO,SAAUtlB,GAAK,MAAOA,GAAEysB,UAAYx1C,OAChDoI,KAAKwtC,QAAQvH,OAAO,SAAUtlB,GAAK,MAAOA,GAAEysB,SAAWzsB,EAAE+sB,SAAW91C,MAC/F,QAAO,GAEXsC,EAA6BmG,UAAUysC,gBAAkB,WACrD,GAAI9N,GAAQh/B,IACZA,MAAK2tC,gBAAgBpjC,IAAI,SAAUoW,GAC/Bqe,EAAMuO,iBAAiB5sB,MAG/BzmB,EAA6BmG,UAAUktC,iBAAmB,SAAUJ,GAChE,GAAInO,GAAQh/B,KACR4tC,IAAST,EAAOC,SAAWD,EAAOO,OACtC1tC,MAAKmsC,SAAS0B,gBAAgBV,EAAOW,KAAM,OAAQF,GACnDT,EAAOY,MAAMxjC,IAAI,SAAUoW,GAAK,MAAOqe,GAAMmN,SAAS0B,gBAAgBltB,EAAG,OAAQitB,KACjF5tC,KAAKssC,eAAe0B,KAAK,KAE7B9zC,EAA6BmG,UAAUssC,UAAY,SAAUE,GACzD,GAAI7N,GAAQh/B,IACZA,MAAK2tC,mBACL3tC,KAAKwtC,QAAQjjC,IAAI,SAAU4iC,EAAQhjC,GAC/B60B,EAAM2O,gBAAgBhjC,MAClByF,IAAK+8B,EAAO/8B,IACZ0tB,YAAa,GACbsP,QAASD,EAAOC,QAChBM,OAAQP,EAAOO,OACfI,KAAM,GACNC,SACA9e,MAAO9kB,KAGf,KAAK,GAAIjT,GAAI,EAAGA,EAAI21C,EAAcoB,SAASr2C,OAAQV,IAAK,CACpD,GAAIg3C,GAAQrB,EAAcoB,SAAS/2C,EACnC,IAAsB,UAAlBg3C,EAAMC,QACN,IAAK,GAAIxuB,GAAI,EAAGA,EAAIuuB,EAAMD,SAASr2C,OAAQ+nB,IAAK,CAC5C,GAAIyuB,GAAaF,EAAMD,SAAStuB,EAChC,IAA2B,OAAvByuB,EAAWD,QACX,IAAK,GAAIhkC,GAAI,EAAGA,EAAIikC,EAAWH,SAASr2C,OAAQuS,IAAK,CACjD,GAAIkkC,GAAkBD,EAAWH,SAAS9jC,EAC1C,IAAgC,OAA5BkkC,EAAgBF,QAWhB,IAAK,GADDG,GAAStuC,KACJ6hB,EAAI,EAAGA,EAAIwsB,EAAgBE,WAAW32C,OAAQiqB,KAVzC,SAASA,GACnB,GAAI2sB,GAAOH,EAAgBE,WAAW1sB,EACtC,IAAkB,QAAd2sB,EAAK/9B,KAAgB,CACrB,GAAIg+B,GAAKH,EAAOX,gBAAgBnP,KAAK,SAAU7d,GAAK,MAAOA,GAAEvQ,MAAQo+B,EAAKx/B,OAC1Ey/B,GAAG3Q,YAAcuQ,EAAgBK,UAAU18B,QAAQ,QAAS,KAC5Dy8B,EAAGX,KAAOO,EACVI,EAAGxf,MAAQ9kB,IAKP0X,QAO3B,IAAsB,UAAlBqsB,EAAMC,QACX,IAAK,GAAIxuB,GAAI,EAAGA,EAAIuuB,EAAMD,SAASr2C,OAAQ+nB,IAAK,CAC5C,GAAIyuB,GAAaF,EAAMD,SAAStuB,EAChC,IAA2B,OAAvByuB,EAAWD,QAQX,IAAK,GADDQ,GAAS3uC,KACJmK,EAAI,EAAGA,EAAIikC,EAAWH,SAASr2C,OAAQuS,KAPlC,SAASA,GACnB,GAAIkkC,GAAkBD,EAAWH,SAAS9jC,EACV,QAA5BkkC,EAAgBF,SAAqBE,EAAgBO,UAAUC,SAAS,WACxEF,EAAOhB,gBAAgBnP,KAAK,SAAU7d,GAAK,MAAOA,GAAEsO,QAAU9kB,IAAM4jC,MAAMpjC,KAAK0jC,IAK3ElkC,MAOhC7J,OAAOuF,eAAe3L,EAA6BmG,UAAW,eAC1DyF,IAAK,WAAc,MAAyE,IAAlE9F,KAAKwtC,QAAQvH,OAAO,SAAUhvC,GAAK,MAAOA,GAAEm2C,UAAYx1C,QAClFmO,YAAY,EACZC,cAAc,IAElB0xB,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAenuB,QAC3B5P,EAA6BmG,UAAW,cAAW,IACtDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe8W,SAC3B70C,EAA6BmG,UAAW,qBAAkB,IAC7Dq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BpG,EAA6BmG,UAAW,qBAAkB,IAC7Dq3B,GACI7yB,EAAOoqC,aAAalD,GACpB9T,EAAW,cAAe8T,IAC3B7xC,EAA6BmG,UAAW,YAAS,IACpDnG,EAA+Bw9B,GAC3B7yB,EAAO0kC,WACHC,SAAU,kBACV+B,YAAaO,EAAa1uC,mBAC1BqsC,SAAU7yC,EAAQ,yBAClBs4C,QACI,sGAEJxF,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsBpzB,EAAOsqC,SAAU3uC,EAAa4uC,cAAetnC,EAAcE,oBAC7F9N,KAGPxC,GAAQwC,6BAA+BA,EACvCxC,EAAQuC,yBAA2B8xC,EAAsB7xC,EACzD,IAAIm1C,GAAU,WACV,QAASA,MAET,MAAOA,KAEX33C,GAAQ23C,OAASA,IAIdC,mBAAmB,sBAAsBC,0BAA0B,GAAGC,wBAAwB,GAAGppC,gBAAgB,gBAAgBpF,aAAa,aAAasF,KAAO,SAASmpC,IAAI,SAAS74C,EAAQkB,EAAOJ,GAC1MI,EAAOJ,QAAU,6zEACXg4C,IAAI,SAAS94C,EAAQkB,EAAOJ,GAClC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBuB,EAAMvB,EAAQ,sBACd+4C,EAAW/4C,EAAQ,kBACnBk1C,EAAel1C,EAAQ,oBACvBg5C,EAAsBh5C,EAAQ,2BAC9BqC,EAA6B,SAAUyH,GAEvC,QAASzH,GAA0B42C,EAAM/+B,EAASu3B,EAAYyH,GAC1DpvC,EAAO/I,KAAKqI,MACZA,KAAK6vC,KAAOA,EACZ7vC,KAAK8Q,QAAUA,EACf9Q,KAAKqoC,WAAaA,EAClBroC,KAAK8vC,YAAcA,EACnB9vC,KAAK6hC,cACL7hC,KAAK+vC,uBACL/vC,KAAKgwC,uBAAyB,GAAInrC,GAAO0nC,aA+E7C,MAxFAxsC,GAAU9G,EAA2ByH,GAWrCJ,OAAOuF,eAAe5M,EAA0BoH,UAAW,YACvDyF,IAAK,WAAc,OAAQ9F,KAAKiwC,WAAajwC,KAAKiwC,UAAU5T,KAAK6T,YACjEnqC,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAe5M,EAA0BoH,UAAW,gBACvDyF,IAAK,WACD,MAAK9F,MAAKiwC,UAEHjwC,KAAKiwC,UAAUE,aADX,MAGfpqC,YAAY,EACZC,cAAc,IAElB/M,EAA0BoH,UAAUg5B,eAAiB,SAAU7hC,GAC3D,GAAIwnC,GAAQh/B,IACZ,IAAKxI,EAAL,CAEA,GAAI44C,GAAWpwC,KAAK6hC,WAAW3jC,OAAO8B,KAAK+vC,qBAAqBvR,KAAK,SAAUvnC,GAAK,MAAOA,GAAEO,OAASA,IAClG64C,EAAWrwC,KAAKiwC,UAAUE,aAAaG,MAAM94C,EAAKwb,cACtD,IAAKo9B,EAAL,CAKA,GAFApwC,KAAKw5B,OAAQ,EACbx5B,KAAKuwC,kBAAqBnwB,KAAMgwB,EAAUC,SAAUA,IAC/CA,EAED,YADArwC,KAAKw5B,OAAQ,EAGjB,IAAIhiC,IAASwI,KAAKwwC,iBAAkB,CAChC,GAAIC,IACAC,QAAS1wC,KAAKwwC,iBACdG,QAAS3wC,KAAKiwC,UAAUE,aAAaG,MAAMtwC,KAAKwwC,iBAAiBx9B,eAAe49B,KAChFC,QAASr5C,EACTs5C,QAAST,EAASO,KAClBtT,QAASt9B,KAAK8Q,QAAQigC,aAAazT,QACnCd,IAAKx8B,KAAKiwC,UAAU7vB,KAExBpgB,MAAK6vC,KAAKxW,eAAeoX,GAAUO,UAAWC,UAAW,sBAAuBC,QAASlxC,KAAKqoC,WAAW8I,QAAQ,qCAAsC/M,UAAU,SAAUntC,GACvK+nC,EAAMiR,UAAU7vB,KAAOnpB,EAAEmpB,KACzBqwB,EAASjU,IAAMvlC,EAAEmpB,KACjB4e,EAAMwR,iBAAmBh5C,EACzBwnC,EAAMiR,UAAUE,aAAaiB,wBAA0B55C,EACvDwnC,EAAMgR,uBAAuBhC,KAAKyC,GAClCzR,EAAM8Q,YAAYuB,kBAAkB1rC,KAAKq5B,EAAMiR,iBAI3Dh3C,EAA0BoH,UAAUioC,SAAW,WAC3C,GAAItJ,GAAQh/B,IACZA,MAAK6vC,KAAK1W,KAAKn5B,KAAK8Q,QAAQigC,aAAa3X,WAAWgL,UAAU,SAAUntC,GACpE,GAAIq6C,GAAYtS,EAAMluB,QAAQigC,aAAaQ,iBAAiBC,cACxDF,IAAaA,EAAU15C,QACvBonC,EAAM6C,WAAa5qC,EAAEmpB,KAAK6lB,OAAO,SAAUwL,GAAQ,OAAyC,IAAlCH,EAAU5sB,QAAQ+sB,EAAKj6C,QACjFwnC,EAAM+Q,oBAAsB94C,EAAEmpB,KAAK6lB,OAAO,SAAUwL,GAAQ,OAAyC,IAAlCH,EAAU5sB,QAAQ+sB,EAAKj6C,UAG1FwnC,EAAM6C,WAAa5qC,EAAEmpB,KACrB4e,EAAM+Q,wBAEV/Q,EAAMiR,WAAajR,EAAMiR,UAAUE,cAAgBnR,EAAM3F,eAAe2F,EAAMiR,UAAUE,aAAaiB,2BAEzGpxC,KAAKkF,gBACDlF,KAAK8vC,YAAY4B,UAAUtN,UAAU,SAAUuN,GAC3C3S,EAAMiR,UAAY0B,EAClB3S,EAAMwR,iBAAmBmB,EAAGxB,cAAgBwB,EAAGxB,aAAaiB,wBAC5DpS,EAAM3F,eAAe2F,EAAMwR,sBAGvC9Y,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BrH,EAA0BoH,UAAW,6BAA0B,IAClEpH,EAA4By+B,GACxB7yB,EAAO0kC,WAAYC,SAAU,oBAAqB+B,YAAaO,EAAatuC,SAAUisC,SAAU7yC,EAAQ,2BAA4B8yC,SAAU5xC,EAAO+gC,KACrJZ,EAAW,qBAAsB9/B,EAAI+gC,cAAeyW,EAASxoC,cAAewoC,EAAS3nC,iBAAkB2nC,EAAS5oC,cACjH9N,IAEL22C,EAAoB3qC,kBACtBvN,GAAQuB,0BAA4BA,IAIjCq2C,mBAAmB,sBAAsBsC,0BAA0B,6BAA6BC,iBAAiB,oBAAoBC,qBAAqB,GAAGC,0BAA0B,GAAG3rC,gBAAgB,kBAAkB4rC,IAAI,SAASp7C,EAAQkB,EAAOJ,GAC3PI,EAAOJ,QAAU,ylBACXu6C,IAAI,SAASr7C,EAAQkB,EAAOJ,GAClC,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkxC,EAAmBlxC,EAAQ,kBAC3B0D,EAAuB,WACvB,QAASA,GAAoB4tC,GACzBloC,KAAKkoC,OAASA,EA4BlB,MA1BA5tC,GAAoB+F,UAAUioC,SAAW,aAEzChuC,EAAoB+F,UAAUqoC,MAAQ,SAAU15B,GAC5ChP,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOQ,SAEhBpuC,EAAoB+F,UAAU0oC,OAAS,WACnC/oC,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOc,WAEhB1uC,EAAoB+F,UAAU4oC,cAAgB,WAC1C,MAAOjpC,MAAK4oC,MAEhBtuC,EAAoB+F,UAAU6oC,YAAc,WACxC,OAAO,GAEX5uC,EAAsBo9B,GAClB7yB,EAAO0kC,WACHC,SAAU,wBACVC,SAAU7yC,EAAQ,8BAClB8yC,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsB6P,EAAiB6B,aACnDrvC,KAGP5C,GAAQ4C,oBAAsBA,IAI3B43C,6BAA6B,GAAG9rC,gBAAgB,gBAAgB2jC,iBAAiB,mBAAmBoI,IAAI,SAASv7C,EAAQkB,EAAOJ,GACnII,EAAOJ,QAAU,ojCACX06C,IAAI,SAASx7C,EAAQkB,EAAOJ,GAClC,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkxC,EAAmBlxC,EAAQ,kBAC3BwD,EAAe,WACf,QAASA,GAAY8tC,GACjBloC,KAAKkoC,OAASA,EAwClB,MAtCA9tC,GAAYiG,UAAUioC,SAAW,WAC7BtoC,KAAKmqC,aAAc,GAAI7/B,OAAO+P,cAC9Bra,KAAKsqC,cAAgBtqC,KAAKuqC,iBAE9BnwC,EAAYiG,UAAUqoC,MAAQ,SAAU15B,GACpChP,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOQ,MAAM1oC,KAAKmqC,cAE3B/vC,EAAYiG,UAAU0oC,OAAS,WAC3B/oC,KAAK4oC,MAAO,EACZ5oC,KAAKkoC,OAAOW,QAAQC,eAAgB,EACpC9oC,KAAKkoC,OAAOc,WAEhB5uC,EAAYiG,UAAU4oC,cAAgB,WAClC,MAAOjpC,MAAK4oC,MAEhBxuC,EAAYiG,UAAU6oC,YAAc,WAChC,OAAO,GAEX9uC,EAAYiG,UAAUkqC,cAAgB,WAClC,GAAIJ,IAAc,GAAI7/B,OAAO+P,cACzBnjB,EAAI,EACJuzC,EAAYN,EAAc,KAC1BO,EAAW,GAAI5gC,OAAM2gC,EACzB,KAAKvzC,EAAI,EAAGA,GAAKuzC,EAAWvzC,IACxBwzC,EAASxzC,GAAMizC,EAAcjzC,CAEjC,OAAOwzC,IAEXtwC,EAAcs9B,GACV7yB,EAAO0kC,WACHC,SAAU,gBACVC,SAAU7yC,EAAQ,sBAClB8yC,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsB6P,EAAiB6B,aACnDvvC,KAGP1C,GAAQ0C,YAAcA,IAInBi4C,qBAAqB,GAAGjsC,gBAAgB,gBAAgB2jC,iBAAiB,mBAAmBuI,IAAI,SAAS17C,EAAQkB,EAAOJ,GAC3HI,EAAOJ,QAAU,ssCACX66C,IAAI,SAAS37C,EAAQkB,EAAOJ,GAClCI,EAAOJ,QAAU,6+FACX86C,IAAI,SAAS57C,EAAQkB,EAAOJ,GAClCI,EAAOJ,QAAU,8kFACX+6C,IAAI,SAAS77C,EAAQkB,EAAOJ,GAClC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClBg5C,EAAsBh5C,EAAQ,2BAC9B20C,EAAa30C,EAAQ,oBACrB+C,EAAwB,SAAU+G,GAElC,QAAS/G,GAAqB+4C,GAC1BhyC,EAAO/I,KAAKqI,KAAM0yC,GAClB1yC,KAAK2yC,yBAA2B,GAAI9tC,GAAO0nC,aAC3CvsC,KAAK4yC,oBAAqB,EAC1B5yC,KAAK6yC,qBAAuB,GAAIhuC,GAAO0nC,aACvCvsC,KAAK8yC,gBAmJT,MAzJA/yC,GAAUpG,EAAsB+G,GAQhC/G,EAAqB0G,UAAUqF,gBAAkB,WAC7C1F,KAAK8yC,aAAe9yC,KAAK+yC,mBAAmB/yC,KAAKgzC,oBAErDr5C,EAAqB0G,UAAU4yC,mBAAqB,SAAUC,GAC1D,GAAIxpB,MACAypB,EAAW7yC,OAAOyxB,KAAKmhB,EAAGlkC,OAAOi3B,OAAO,SAAUhvC,GAAK,MAAOA,GAAEm8C,SAAS,oBAC7E,IAAID,EAASv7C,OAAS,EAAG,CACrB,GAAIy7C,GAAMF,EAASlN,OAAO,SAAU71B,GAAO,QAAS8iC,EAAGlkC,MAAMoB,KAAS8wB,OAAO,SAAUC,EAAK/wB,GAAO,MAAO+wB,GAAM+R,EAAGlkC,MAAMoB,IAAS,EACtH,OAARijC,IACA3pB,EAAI4pB,aAAgBtkC,MAAOqkC,IAEX,IAApBF,EAASv7C,SACT8xB,EAAI6pB,iBAAkB,EAC1B,IAAIC,GAAalzC,OAAOyxB,KAAKmhB,EAAGlkC,OAAOi3B,OAAO,SAAUhvC,GAAK,MAAOA,GAAEm8C,SAAS,eAAiB7oC,IAAI,SAAUJ,GAAK,MAAO+oC,GAAGlkC,MAAM7E,KAC/HspC,EAAOD,EAAWtS,OAAO,SAAUC,EAAKC,GAExC,MADAD,GAAIC,IAASD,EAAIC,IAAS,GAAK,EACxBD,OAEPuS,EAAapzC,OAAOyxB,KAAK0hB,GAAMxN,OAAO,SAAU97B,GAAK,MAAOspC,GAAKtpC,GAAK,IAAMI,IAAI,SAAUJ,GAAK,MAAOiS,UAASjS,IAGnH,OAFIupC,GAAW97C,SACX8xB,EAAIiqB,kBAAoBD,GACrBhqB,GAEX/vB,EAAqB0G,UAAU2b,IAAM,WACjC,GAAIgjB,GAAQh/B,KACR2xB,EAAQ3xB,KAAK4zC,gCACbC,EAAa,CACjBA,GAAaliB,GAAS,IAAM,EAAI,IAAMA,CACtC,IAAImiB,GAAuB9zC,KAAKgzC,kBAAkBxU,KAAK,SAAUtnC,GAAK,MAAOA,GAAEuZ,OAASuuB,EAAM+U,kBAAsB/zC,KAAKgzC,kBAAkB,EAC3IhzC,MAAKg0C,mBAAmBrpC,MACpBkuB,GAAIib,EAAqBN,WAAW,GAAG3a,GACvCpoB,KAAMqjC,EAAqBN,WAAW,GAAG/iC,KACzCojC,WAAYA,EACZI,SAAUH,EAAqBN,WAAW,GAAGS,WAEjDj0C,KAAKk0C,uBACLl0C,KAAK2yC,yBAAyB3E,KAAKhuC,KAAKg0C,qBAE5Cr6C,EAAqB0G,UAAU8zC,OAAS,SAAUllB,GAC9CjvB,KAAKg0C,mBAAqBh0C,KAAKg0C,mBAAmB/N,OAAO,SAAUhvC,EAAGm9C,GAAa,MAAOA,KAAcnlB,GACxG,IAAIolB,GAAkBr0C,KAAK4zC,gCACvBU,EAAsB,IAAMD,CAC5BC,GAAsB,IACtBt0C,KAAKg0C,mBAAmB,GAAGH,WAAa7zC,KAAKg0C,mBAAmB,GAAGH,WAAaS,GAEpFt0C,KAAKk0C,uBACLl0C,KAAK2yC,yBAAyB3E,KAAKhuC,KAAKg0C,qBAE5Cr6C,EAAqB0G,UAAUk0C,iBAAmB,SAAUC,GACxD,GAAIC,GAAkBz0C,KAAKg0C,mBAAmBh0C,KAAKg0C,mBAAmBnO,UAAU,SAAUzE,GAAQ,MAAQA,GAAKvI,KAAO2b,IACtHC,GAAgB5b,GAAK74B,KAAK8yC,aAAa7M,OAAO,SAAUtlB,GAAK,MAAOA,GAAEkY,KAAO4b,EAAgB5b,KAAO,GAAGA,GACvG4b,EAAgBhkC,KAAOzQ,KAAK8yC,aAAa7M,OAAO,SAAUtlB,GAAK,MAAOA,GAAEkY,KAAO4b,EAAgB5b,KAAO,GAAGpoB,KACzGzQ,KAAKk0C,uBACLl0C,KAAK2yC,yBAAyB3E,KAAKhuC,KAAKg0C,qBAE5Cr6C,EAAqB0G,UAAU6zC,qBAAuB,WAClD,GAAIlV,GAAQh/B,IACZ,IAAKA,KAAK4yC,mBAAV,CAEA,GAAI8B,KACJ10C,MAAKg0C,mBAAmBzpC,IAAI,SAAUoqC,GAClC,GAAIV,GAAWjV,EAAM8T,aAAa7M,OAAO,SAAUtlB,GAAK,MAAOA,GAAEkY,IAAM8b,EAAI9b,KAAO,GAAGob,QACjFA,KAAYS,GACZA,EAAKT,KAELS,EAAKT,GAAY,GAEzB,IAAIW,KACJt0C,QAAOyxB,KAAK2iB,GAAMnvC,QAAQ,SAAUob,GAAK,MAAOi0B,GAASjqC,MAAMgW,EAAG+zB,EAAK/zB,OACvEi0B,EAAS/gC,KAAK,SAAUvc,EAAG4I,GACvB,MAAO5I,GAAE,GAAK4I,EAAE,KAEf20C,SACL,IAAIC,GAAoBF,EAAS,GAAGt0C,OAAOyxB,KAAK6iB,EAAS,IAAI,GAEhC,KADFF,EAAKI,KAE5BA,EAAoB90C,KAAK8yC,aAAa7M,OAAO,SAAUtlB,GAAK,MAAOA,GAAEkY,IAAMmG,EAAMgV,mBAAmB,GAAGnb,KAAO,GAAGob,SAErH,IAAIc,GAAyB/0C,KAAK+zC,eAC9BiB,EAAwBh1C,KAAKgzC,kBAAkB/M,OAAO,SAAUtlB,GAAK,MAAOA,GAAEkY,IAAMic,IAAsB,GAAGrkC,IAC7GskC,KAA2BC,IAE/Bh1C,KAAK+zC,eAAiBiB,EACtBh1C,KAAK6yC,qBAAqB7E,KAAKhuC,KAAK+zC,mBAExCp6C,EAAqB0G,UAAUuzC,8BAAgC,WAC3D,GAAIjiB,GAAQ,CACZ,KAAK3xB,KAAKg0C,mBACN,MAAO,EACX,KAAK,GAAIrmC,GAAK,EAAGsJ,EAAKjX,KAAKg0C,mBAAoBrmC,EAAKsJ,EAAGrf,OAAQ+V,IAAM,CACjE,GAAIsnC,GAAMh+B,EAAGtJ,EACPsnC,GAAIpB,aACNliB,GAASsjB,EAAIpB,YAErB,MAAOliB,IAEXh4B,EAAqB0G,UAAU0yC,mBAAqB,SAAUmC,GAE1D,IAAK,GADDC,MACKj+C,EAAI,EAAGA,EAAIg+C,EAAmBt9C,OAAQV,IAC3C,IAAK,GAAIyoB,GAAI,EAAGA,EAAIu1B,EAAmBh+C,GAAGs8C,WAAW57C,OAAQ+nB,IAAK,CAC9D,GAAIy1B,GAAW90C,OAAOgjC,UAAW4R,EAAmBh+C,GAAGs8C,WAAW7zB,GAClEy1B,GAASnB,SAAWiB,EAAmBh+C,GAAG2hC,GAC1Csc,EAAcxqC,KAAKyqC,GAG3B,MAAOD,IAEXzd,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAenuB,QAC3BnQ,EAAqB0G,UAAW,wBAAqB,IACxDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAenuB,QAC3BnQ,EAAqB0G,UAAW,yBAAsB,IACzDq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3B3G,EAAqB0G,UAAW,+BAA4B,IAC/Dq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeoI,SAC3B1mC,EAAqB0G,UAAW,mCAAgC,IACnEq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeoI,SAC3B1mC,EAAqB0G,UAAW,qBAAkB,IACrDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,UAC3B17C,EAAqB0G,UAAW,yBAAsB,IACzDq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3B3G,EAAqB0G,UAAW,2BAAwB,IAC3D1G,EAAuB+9B,GACnB7yB,EAAO0kC,WACHC,SAAU,eACV+B,YAAaA,EAAW1vC,uBAAwB0vC,EAAW9uC,WAAY8uC,EAAW7tC,oBAAqB6tC,EAAW/tC,SAClH83C,eAAgB1F,EAAoBprC,6BAA6B,WAAc,MAAO7K,MACtF8vC,SAAU7yC,EAAQ,sBAClB8yC,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsBvzB,EAAQ6wC,UAC1C57C,IAELi2C,EAAoB3pC,qBACtBvO,GAAQiC,qBAAuBA,IAI5B21C,mBAAmB,sBAAsBsC,0BAA0B,6BAA6B4D,qBAAqB,GAAGpvC,gBAAgB,gBAAgBC,iBAAiB,mBAAmBovC,IAAI,SAAS7+C,EAAQkB,EAAOJ,GAC3NI,EAAOJ,QAAU,gLACXg+C,IAAI,SAAS9+C,EAAQkB,EAAOJ,GAClC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,kBACrBg5C,EAAsBh5C,EAAQ,2BAC9BuC,EAA6B,SAAUuH,GAEvC,QAASvH,GAA0Bw8C,EAAc7kC,GAC7CpQ,EAAO/I,KAAKqI,MACZA,KAAK21C,aAAeA,EACpB31C,KAAK8Q,QAAUA,EAoCnB,MAxCA/Q,GAAU5G,EAA2BuH,GAMrCJ,OAAOuF,eAAe1M,EAA0BkH,UAAW,gBACvDyF,IAAK,WACD,MAAO9F,MAAK41C,eAEhB/kC,IAAK,SAAUpD,GACXzN,KAAK41C,cAAgBnoC,EACrBzN,KAAK21C,aAAaE,IAAIpoC,IAE1B1H,YAAY,EACZC,cAAc,IAElB7M,EAA0BkH,UAAUioC,SAAW,WAC3C,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBACDlF,KAAK21C,aAAaG,UAAU1R,UAAU,SAAU2R,GAAS,MAAO/W,GAAM8W,UAAYC,IAClF/1C,KAAK21C,aAAaK,aAAa5R,UAAU,SAAU5O,GAAQ,MAAOwJ,GAAM4W,cAAgBpgB,KAE5Fx1B,KAAK21C,aAAaM,UAAUj2C,KAAK41C,gBAErCt1C,OAAOuF,eAAe1M,EAA0BkH,UAAW,QACvDyF,IAAK,WACD,QAAI9F,KAAK81C,WAAa91C,KAAK81C,UAAUl+C,OAAS,KAClCoI,KAAK8Q,QAAQigC,aAAamF,wBAK1CnwC,YAAY,EACZC,cAAc,IAElB7M,EAA4Bu+B,GACxB7yB,EAAO0kC,WAAYC,SAAU,oBAAqBC,SAAU7yC,EAAQ,2BAA4B8yC,SAAU5xC,EAAO+gC,GAAIsd,MAAQC,WAAY,UACzIne,EAAW,qBAAsB+P,EAAWjgC,yBAA0BigC,EAAW7gC,iBAClFhO,IAELy2C,EAAoB3qC,kBACtBvN,GAAQyB,0BAA4BA,IAIjCy4C,0BAA0B,6BAA6BC,iBAAiB,oBAAoBwE,0BAA0B,GAAGjwC,gBAAgB,kBAAkBkwC,IAAI,SAAS1/C,EAAQkB,EAAOJ,GAC1L,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB2/C,EAAQ3/C,EAAQ,8BAChB8nC,EAAO9nC,EAAQ,QACfoxC,EAAapxC,EAAQ,kBACrByC,EAAoB,WACpB,QAASA,GAAiBm9C,EAAOC,GAC7Bz2C,KAAKw2C,MAAQA,EACbx2C,KAAKy2C,UAAYA,EACjBz2C,KAAK02C,WA6CT,MA3CAr9C,GAAiBgH,UAAUioC,SAAW,WAClC,GAAI5J,EAAKa,WAAWl/B,UAAU2wC,SAC1B,KAAM,6CAEN,IAAI2F,GAAU32C,IACd0+B,GAAKa,WAAWl/B,UAAU2wC,SAAW,SAAU4F,GAAS,MAAOD,GAAQE,OAAO72C,KAAM42C,KAG5Ft2C,OAAOuF,eAAexM,EAAiBgH,UAAW,WAC9CyF,IAAK,WAAc,MAAO9F,MAAK02C,SAAW12C,KAAK02C,QAAQ9+C,QAAUoI,KAAK02C,QAAQ12C,KAAK02C,QAAQ9+C,OAAS,GAAGs5C,SACvGnrC,YAAY,EACZC,cAAc,IAElB3M,EAAiBgH,UAAUw2C,OAAS,SAAUC,EAAYC,GACtD,GACI32B,GADA4e,EAAQh/B,IAEZ,IAA2B,gBAAhB+2C,GAA0B,CACjC,GAAIH,GAAQ52C,KAAKy2C,UAAUtF,QAAQ,sBACrB,yBAAVyF,IACAA,EAAQ,IACZx2B,GAAS8wB,QAAS0F,EAAO3F,UAAW8F,OAGpC32B,GAAO22B,CAGX,OADA/2C,MAAK02C,QAAQ/rC,KAAKyV,GACX02B,EAAWE,GAAG,KAAM,SAAUC,GAEjC,GADAjY,EAAM0X,QAAU1X,EAAM0X,QAAQzQ,OAAO,SAAUhvC,GAAK,MAAOA,GAAEg6C,YAAc7wB,EAAK6wB,cACtD,gBAAfgG,GAAI/X,QAAuB,KAAO+X,EAAI/X,QAAU+X,EAAI/X,OAAS,KAAxE,CAEA,GAAItvB,GAAMovB,EAAMyX,UAAUtF,QAAQ,gBAClCnS,GAAMwX,MAAMU,QAAQC,MAAMnY,EAAMyX,UAAUtF,QAAQ,kBAAkBxwC,QAAQiP,EAAMwQ,EAAK6wB,WAAWmG,SACnG,WACCpY,EAAM0X,QAAU1X,EAAM0X,QAAQzQ,OAAO,SAAUhvC,GAAK,MAAOA,GAAEg6C,YAAc7wB,EAAK6wB,eAIxF53C,EAAmBq+B,GACf7yB,EAAO0kC,WACHC,SAAU,UAAWC,SAAU,sVAA+VyF,QAAS,oZAE3YjX,EAAW,qBAAsBse,EAAMc,MAAOrP,EAAWhgC,oBAC1D3O,KAGP3B,GAAQ2B,iBAAmBA,EAC3BqlC,EAAKa,WAAWl/B,UAAUi3C,cAAgB,WAEtC,MADUt3C,MACCokC,UAAU,aAAiB,aAAiB,iBAKxDyN,iBAAiB,oBAAoBzrC,gBAAgB,gBAAgBmxC,6BAA6B,6BAA6BjxC,KAAO,SAASkxC,IAAI,SAAS5gD,EAAQkB,EAAOJ,GAC9KI,EAAOJ,QAAU;ywDACX+/C,IAAI,SAAS7gD,EAAQkB,EAAOJ,GAClC,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8gD,EAAW9gD,EAAQ,mBACnBoxC,EAAapxC,EAAQ,iBACzBA,GAAQ,OACR,IAAI2C,GAA2B,WAC3B,QAASA,GAAwBo+C,EAAgBC,EAAc9H,EAAa+H,EAAoBC,GAC5F93C,KAAK23C,eAAiBA,EACtB33C,KAAK43C,aAAeA,EACpB53C,KAAK8vC,YAAcA,EACnB9vC,KAAK63C,mBAAqBA,EAC1B73C,KAAK83C,QAAUA,EACf93C,KAAK+3C,SACL/3C,KAAKg4C,QAAU,IAuDnB,MArDAz+C,GAAwB8G,UAAU43C,mBAAqB,WACnD,GAAIjZ,GAAQh/B,KACRk4C,EAAcl4C,KAAK8vC,YAAYqI,aAC/BD,KACAl4C,KAAKg4C,QAAUE,EAAY7b,KAAO,SAAW6b,EAAY7b,KAAKJ,SAAW,KAC7Ej8B,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUhvC,GAAK,MAAOA,aAAaygD,GAASW,gBAClElU,WAAW,KACXC,UAAU,SAAUttC,GACrBkoC,EAAM2Y,eAAeW,qBAChBlU,UAAU,SAAUhtC,GACrB4nC,EAAMgZ,QAAU5gD,GAAK,SAAWA,EAAE6kC,UAAY,QAGtDj8B,KAAK43C,aAAaW,iBAAiBnU,UAAU,SAAUoU,GACnDxZ,EAAM+Y,MAAQS,KAGtBj/C,EAAwB8G,UAAUo4C,eAAiB,SAAUC,EAAUC,GAEnE,MAAiC,KADJ34C,KAAK44C,0BAA0BF,GAClB,MAE9Cn/C,EAAwB8G,UAAUw4C,WAAa,SAAUF,GACrD34C,KAAK63C,mBAAmBiB,cAAcH,EAASle,MAEnDlhC,EAAwB8G,UAAU04C,oBAAsB,SAAUC,GAC9D,GAAIC,GAAyBD,EAAU5L,OACvCptC,MAAKk5C,kBAAkBl5C,KAAK+3C,MAAOiB,GACnCA,EAAU5L,SAAW6L,GAEzB1/C,EAAwB8G,UAAU64C,kBAAoB,SAAUnB,EAAOoB,GACnE,IAAK,GAAIjiD,KAAK6gD,GACNA,EAAM7gD,GAAGkiD,OAASD,EAAgBC,QAClCrB,EAAM7gD,GAAGk2C,SAAU,GACnB2K,EAAM7gD,GAAG+2C,UAAY8J,EAAM7gD,GAAG+2C,SAASr2C,OAAS,GAChDoI,KAAKk5C,kBAAkBnB,EAAM7gD,GAAG+2C,SAAUkL,IAGtD5/C,EAAwB8G,UAAUu4C,0BAA4B,SAAUF,GACpE,MAAKA,IAAgC,IAApBA,EAAS9gD,OAEnB8gD,EAASxX,OAAO,SAAU5pC,EAAG4I,GAChC,MAAO5I,GAAE+hD,aAAazhD,OAASsI,EAAEm5C,aAAazhD,OAASN,EAAI4I,IAC5Dm5C,aAAazhD,OAHL,GAKf2B,EAA0Bm+B,GACtB7yB,EAAO0kC,WACHC,SAAU,mBACVC,SAAU7yC,EAAQ,yBAClB20C,YAAamM,EAAS4B,mBACtB5P,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsB+P,EAAWnhC,cAAemhC,EAAW3gC,YAAa2gC,EAAWjhC,WAAYihC,EAAWrgC,kBAAmB+vC,EAAS6B,UAClJhgD,KAGP7B,GAAQ6B,wBAA0BA,IAI/Bs4C,iBAAiB,oBAAoB2H,wBAAwB,GAAGpzC,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBnzC,KAAO,SAASozC,IAAI,SAAS9iD,EAAQkB,EAAOJ,GACnLI,EAAOJ,QAAU,umBACXiiD,IAAI,SAAS/iD,EAAQkB,EAAOJ,GAClC,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8gD,EAAW9gD,EAAQ,mBACnBoxC,EAAapxC,EAAQ,kBAErB6C,GADY7C,EAAQ,iBACU,WAC9B,QAAS6C,GAA2Bm+C,EAAcE,GAC9C,GAAI9Y,GAAQh/B,IACZA,MAAK43C,aAAeA,EACpB53C,KAAK83C,QAAUA,EACf93C,KAAK+3C,SACL/3C,KAAK43C,aAAaW,iBAAiBnU,UAAU,SAAUoU,GAC9CxZ,EAAM4a,cACP5a,EAAM+Y,MAAQS,KAgC1B,MA7BAl4C,QAAOuF,eAAepM,EAA2B4G,UAAW,eACxDyF,IAAK,WACD,MAAO9F,MAAK65C,cAEhBhpC,IAAK,SAAUqnB,GACXl4B,KAAK65C,aAAe3hB,EACdA,IACFl4B,KAAK+3C,MAAQ/3C,KAAK43C,aAAakC,cAAc95C,KAAK45C,eAE1D7zC,YAAY,EACZC,cAAc,IAElBvM,EAA2B4G,UAAUw4C,WAAa,SAAUpe,EAAKsf,GACzDA,GACA/5C,KAAK83C,QAAQgB,cAAcre,IAEnC/C,GACI7yB,EAAOiqC,MAAM,OACb7W,EAAW,cAAe33B,SAC3B7G,EAA2B4G,UAAW,cAAe,MACxD5G,EAA6Bi+B,GACzB7yB,EAAO0kC,WACHC,SAAU,qBACVC,SAAU7yC,EAAQ,4BAClB20C,YAAamM,EAAS4B,mBACtB5P,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsB+P,EAAW3gC,YAAaqwC,EAAS6B,UACnE9/C,MAGP/B,GAAQ+B,2BAA6BA,IAIlCowC,gBAAgB,mBAAmBgI,iBAAiB,oBAAoBmI,2BAA2B,GAAG5zC,gBAAgB,gBAAgBqzC,kBAAkB,oBAAoBQ,IAAI,SAASrjD,EAAQkB,EAAOJ,GAC3M,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoO,EAAKpO,EAAQ,QACbsjD,EAAgB,WAChB,QAASA,GAAalO,GAClBhsC,KAAKgsC,UAAYA,EAMrB,MAJAkO,GAAexiB,GACX7yB,EAAOonC,WAAYzC,SAAU,yBAC7BvR,EAAW,qBAAsBpzB,EAAOqnC,cACzCgO,KAGPxiD,GAAQwiD,aAAeA,CACvB,IAAIC,GAAwB,WACxB,QAASA,GAAqBhO,EAAUiO,GACpCp6C,KAAKmsC,SAAWA,EAChBnsC,KAAKo6C,QAAUA,EACfp6C,KAAKq6C,UAAY,GAAIr1C,GAAGk/B,QAkF5B,MAhFAiW,GAAqB95C,UAAU43C,mBAAqB,WAChD,GAAIjZ,GAAQh/B,IACRA,MAAKs6C,aACLt6C,KAAKs6C,WAAWC,kBAChBv6C,KAAKs6C,WAAW1W,QAAQQ,UAAU,WAAc,MAAOpF,GAAMwb,gBAC7Dx6C,KAAKw6C,gBAGbL,EAAqB95C,UAAUqjC,UAAY,WACvC,GAAI+W,GAAez6C,KAAKo6C,QAAQvN,cAAc6N,UAAUC,WACpDF,IAAgBz6C,KAAK46C,YACE,OAAnB56C,KAAK46C,WACL56C,KAAKw6C,cACTx6C,KAAK46C,UAAYH,IAGzBN,EAAqB95C,UAAUw6C,YAAc,WACzC,GAAI7b,GAAQh/B,IACRA,MAAK86C,OACL96C,KAAK86C,KAAK7U,OAAO,SAAUhvC,GAAK,MAAOA,GAAE8jD,QAAU/b,IAAUoF,UAAU,SAAU4I,GAC1D,MAAfA,EAAMgO,QACNhc,EAAMic,YAAcjO,EAAMgO,MAC1Bhc,EAAMwb,eAEU,MAAhBxN,EAAMkO,SACNlc,EAAMmc,aAAatO,cAAcuO,WAA2F,EAA9E1sC,KAAKuY,MAAM+lB,EAAMkO,OAASlc,EAAMmc,aAAatO,cAAcwO,YAAc,MAG/Hr7C,KAAKq6C,UAAUiB,aAAa,KAAKlX,UAAU,WACvCpF,EAAM8b,KAAKn1C,MAAOo1C,MAAO/b,EAAOkc,OAAQlc,EAAMmc,aAAatO,cAAcuO,WAAapc,EAAMmc,aAAatO,cAAcwO,kBAInIlB,EAAqB95C,UAAUm6C,YAAc,WACzC,GAAIxb,GAAQh/B,IACZu7C,YAAW,WACP,GAAKvc,EAAMsb,WAAX,CAEA,GAAIkB,GAAaxc,EAAMsb,WAAWpZ,OAAO,SAAUC,EAAKC,GAAQ,MAAOA,GAAK4K,UAAUa,cAAc8N,YAAcxZ,EAAMC,EAAK4K,UAAUa,cAAc8N,YAAcxZ,GAAQ,EAC3KnC,GAAMyc,SAAW/sC,KAAKgG,IAAI8mC,EAAYxc,EAAMic,aAAe,GACvDjc,EAAMyc,WACNzc,EAAM0c,YAAc1c,EAAMyc,SAC1Bzc,EAAMsb,WAAW/0C,QAAQ,SAAUrO,GAAK,MAAO8nC,GAAMmN,SAASwP,gBAAgBzkD,EAAE80C,UAAUa,cAAe,YAAa7N,EAAMyc,SAAW,QACnIzc,EAAM8b,MAAQ9b,EAAMyc,WAAazc,EAAMic,aACvCjc,EAAM8b,KAAKn1C,MAAOq1C,MAAOhc,EAAMyc,SAAUV,MAAO/b,OAEzD,IAEPmb,EAAqB95C,UAAUu7C,SAAW,SAAU5O,GAChDhtC,KAAKw6C,eAET9iB,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe8W,SAC3BoL,EAAqB95C,UAAW,kBAAe,IAClDq3B,GACI7yB,EAAOg3C,UAAU,UACjB5jB,EAAW,cAAepzB,EAAOqnC,aAClCiO,EAAqB95C,UAAW,mBAAgB,IACnDq3B,GACI7yB,EAAOi3C,gBAAgB5B,GAAgB6B,aAAa,IACpD9jB,EAAW,cAAepzB,EAAOE,YAClCo1C,EAAqB95C,UAAW,iBAAc,IACjDq3B,GACI7yB,EAAOm3C,aAAa,iBAAkB,WACtC/jB,EAAW,cAAernB,UAC1BqnB,EAAW,qBAAsB33B,SACjC23B,EAAW,wBAAqB,KACjCkiB,EAAqB95C,UAAW,WAAY,MAC/Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAejzB,EAAGk/B,UAC9BiW,EAAqB95C,UAAW,WAAQ,IAC3C85C,EAAuBziB,GACnB7yB,EAAO0kC,WACHC,SAAU,eAAgBC,SAAU,qMACpCyF,QAAS,uxBAEbjX,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1DiO,KAGPziD,GAAQyiD,qBAAuBA,EAC/BziD,EAAQqC,sBAAwBmgD,EAAcC,KAI3C/zC,gBAAgB,gBAAgBE,KAAO,SAAS21C,IAAI,SAASrlD,EAAQkB,EAAOJ,GAC/EI,EAAOJ,QAAU,irKACXwkD,IAAI,SAAStlD,EAAQkB,EAAOJ,GAClC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8gD,EAAW9gD,EAAQ,mBACnBk1C,EAAel1C,EAAQ,oBACvB8N,EAAU9N,EAAQ,kBAClBg5C,EAAsBh5C,EAAQ,2BAC9BoxC,EAAapxC,EAAQ,kBACrB2/C,EAAQ3/C,EAAQ,8BAChBiD,EAA6B,SAAU6G,GAEvC,QAAS7G,GAA0B64C,EAAMrK,EAAY8T,EAAOC,GACxD17C,EAAO/I,KAAKqI,KAAM0yC,GAClB1yC,KAAK0yC,KAAOA,EACZ1yC,KAAKqoC,WAAaA,EAClBroC,KAAKm8C,MAAQA,EACbn8C,KAAKo8C,OAASA,EACdp8C,KAAKq8C,kBAAoB,EACzBr8C,KAAKs8C,kBAAoB,EACzBt8C,KAAKu8C,UAAW,EAChBv8C,KAAKw8C,kBAAoB,GAAI33C,GAAO0nC,aACpCvsC,KAAKy8C,iBAAmB,GAAI53C,GAAO0nC,aACnCvsC,KAAK08C,cAAgB,GAAI73C,GAAO0nC,aAChCvsC,KAAK28C,gBAAkB,GAAI93C,GAAO0nC,aAClCvsC,KAAK48C,eAAiB,GAAI/3C,GAAO0nC,aACjCvsC,KAAK68C,OAASnuC,KAAKgG,IAAIooC,SAASC,gBAAgBC,aAAc90C,OAAO+0C,aAAe,GAAK,IAoM7F,MAnNAl9C,GAAUlG,EAA2B6G,GAiBrC7G,EAA0BwG,UAAUqF,gBAAkB,aAEtD7L,EAA0BwG,UAAUu7C,SAAW,SAAU5O,GACrDhtC,KAAK68C,OAASnuC,KAAKgG,IAAIooC,SAASC,gBAAgBC,aAAc90C,OAAO+0C,aAAe,GAAK,KAE7FpjD,EAA0BwG,UAAU2b,IAAM,SAAUgxB,GAGhD,GAFIA,GACAA,EAAMC,mBACLjtC,KAAK0yC,KAAKwK,MACX,OAAO,CACX,IAAI13C,GAAIq6B,KAAKO,MAAMP,KAAKC,UAAU9/B,KAAKm9C,kBACvC33C,GAAEiL,KAAOzQ,KAAKo9C,qBACd53C,EAAE63C,WAAa3uC,KAAKgG,IAAIhL,MAAMgF,KAAM1O,KAAKs9C,WAAW/yC,IAAI,SAAUoW,GAAK,MAAOA,GAAE08B,cAAkB,EAClGr9C,KAAKs9C,WAAW3yC,KAAKnF,GACrBxF,KAAK08C,cAAc1O,MACf5tB,KAAM5a,IAEVxF,KAAKw8C,kBAAkBxO,MACnB5tB,KAAMpgB,KAAKs9C,aAEft9C,KAAKu9C,eAAe/3C,GAAG,GAAM,IAEjC3L,EAA0BwG,UAAU8zC,OAAS,SAAUnH,EAAOwQ,EAAWvuB,GACrE,GAAI+P,GAAQh/B,IAGZ,IAFIgtC,GACAA,EAAMC,kBACNjtC,KAAKy9C,aAAc,CACnB,GAAIC,GAAY19C,KAAKy9C,aAAaxuB,EAClC,KAAkB,IAAdyuB,GAAqC,OAAdA,EACvB,OAAO,EAGf19C,KAAKo8C,OAAOuB,UAAUh9C,QAAQX,KAAKqoC,WAAW8I,QAAQ,uDAAuDgG,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,eACtIyM,UAAU59C,KAAKqoC,WAAW8I,QAAQ,cAAciG,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,WAAc,OAAO,GAAS,WAAc,OAAO,MAC7JA,KAAK,SAAUn0B,GAChB,GAAIA,EAAK,CACL,GAAIq0B,GAAmB/e,EAAMse,WAAWlW,OAAOnY,EAAO,EAClD8uB,GAAiB,GAAGC,UACpBhf,EAAMue,eAAeve,EAAMse,WAAWte,EAAMse,WAAW1lD,OAAS,IAAI,GACxEonC,EAAM2d,gBAAgB3O,MAClB5tB,KAAM29B,EAAiB,KAE3B/e,EAAMwd,kBAAkBxO,MACpB5tB,KAAM4e,EAAMse,iBAK5BzjD,EAA0BwG,UAAUynB,MAAQ,SAAUklB,EAAOiR,GAGzD,GAFIjR,GACAA,EAAMC,mBACLjtC,KAAK0yC,KAAKwK,MACX,OAAO,CACX,IAAI13C,GAAIq6B,KAAKO,MAAMP,KAAKC,UAAUme,GAClCz4C,GAAEiL,KAAOzQ,KAAKo9C,qBACd53C,EAAE63C,WAAa3uC,KAAKgG,IAAIhL,MAAMgF,KAAM1O,KAAKs9C,WAAW/yC,IAAI,SAAUoW,GAAK,MAAOA,GAAE08B,cAAkB,EAClG73C,EAAEw4C,UAAW,EACbh+C,KAAKs9C,WAAW3yC,KAAKnF,GACrBxF,KAAKw8C,kBAAkBxO,MACnB5tB,KAAMpgB,KAAKs9C,aAEft9C,KAAKu9C,eAAe/3C,GACpBxF,KAAK48C,eAAe5O,MAChB5tB,MACI7S,KAAM0wC,EACN3wC,GAAI9H,MAIhB3L,EAA0BwG,UAAU69C,OAAS,WACzC,MAA2C,SAApCl+C,KAAKm8C,MAAMgC,gBAAgBC,MAAkBp+C,KAAKs9C,WAAW1lD,OAASoI,KAAKq8C,mBAEtFxiD,EAA0BwG,UAAUg+C,eAAiB,SAAUC,GAO3D,IAAK,GANDC,GAAcj+C,OAAOyxB,KAAKusB,EAAOtvC,OAAOi3B,OAAO,SAAUhvC,GAAK,MAAOA,GAAEm8C,SAAS,mBAAqB7oC,IAAI,SAAUJ,GAAK,MAAOm0C,GAAOtvC,MAAM7E,KAMvIwD,EAAK,EAAG6wC,EAAgBD,EAAa5wC,EAAK6wC,EAAc5mD,OAAQ+V,IAAM,CAC3E,GAAInI,GAAIg5C,EAAc7wC,GAClB8wC,EAPM,SAASj5C,GACnB,GAAI+4C,EAAYtY,OAAO,SAAUtlB,GAAK,MAAO0f,QAAO1f,GAAG+9B,OAAO1rC,gBAAkBqtB,OAAO76B,GAAGk5C,OAAO1rC,gBAAkBpb,OAAS,EACxH,OAASoX,OAASqvC,eAAkB74C,KAKlBA,EACtB,IAAuB,gBAAZi5C,GAAsB,MAAOA,GAAQzvC,MAEpD,UAEJnV,EAA0BwG,UAAUs+C,OAAS,SAAU3R,EAAOiR,GAE1D,GADAjR,EAAMC,mBACFgR,EAASD,SAAb,CAEA,GAEIY,GAAa5R,EAAM6R,WAAWlZ,WACM,IAApCiZ,EAAWl6B,QAHE,kBAGiE,IAArCk6B,EAAWl6B,QAFtC,iBAGd1kB,KAAKu9C,eAAeU,GACfW,EAAWl6B,QALH,iBAK0B,EACvC1kB,KAAK8nB,MAAM,KAAMm2B,GACZW,EAAWl6B,QANF,kBAM0B,GACxC1kB,KAAKm0C,OAAO,KAAM8J,EAAUj+C,KAAKs9C,WAAW54B,QAAQu5B,MAE5DpkD,EAA0BwG,UAAU+8C,mBAAqB,WACrD,MAAOp9C,MAAKqoC,WAAW8I,QAAQ,uCAAyC,KAAOnxC,KAAKs9C,WAAW1lD,OAAS,IAE5GiC,EAA0BwG,UAAUk9C,eAAiB,SAAUuB,EAASC,EAAgBC,GAGpF,OAFuB,KAAnBD,IAA6BA,GAAiB,OACxB,KAAtBC,IAAgCA,GAAoB,GACpDD,IAAmB/+C,KAAK0yC,KAAKwK,MAC7B,OAAO,CACX,KAAK,GAAIvvC,GAAK,EAAGsJ,EAAKjX,KAAKs9C,WAAY3vC,EAAKsJ,EAAGrf,OAAQ+V,IAAM,CACzD,GAAInI,GAAIyR,EAAGtJ,EACXnI,GAAEw4C,SAAWx4C,IAAMs5C,EAMvB,MAJA9+C,MAAKy8C,iBAAiBzO,MAClB5tB,KAAM0+B,EACNE,kBAAmBA,KAEhB,GAEXtnB,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAenuB,QAC3BjQ,EAA0BwG,UAAW,iBAAc,IACtDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BzG,EAA0BwG,UAAW,uBAAoB,IAC5Dq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe8W,SAC3Bl1C,EAA0BwG,UAAW,wBAAqB,IAC7Dq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe8W,SAC3Bl1C,EAA0BwG,UAAW,wBAAqB,IAC7Dq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe8W,SAC3Bl1C,EAA0BwG,UAAW,qBAAkB,IAC1Dq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe8W,SAC3Bl1C,EAA0BwG,UAAW,6BAA0B,IAClEq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,UAC3Bx7C,EAA0BwG,UAAW,eAAY,IACpDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAernB,WAC3B/W,EAA0BwG,UAAW,mBAAgB,IACxDq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BzG,EAA0BwG,UAAW,wBAAqB,IAC7Dq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BzG,EAA0BwG,UAAW,uBAAoB,IAC5Dq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BzG,EAA0BwG,UAAW,oBAAiB,IACzDq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BzG,EAA0BwG,UAAW,sBAAmB,IAC3Dq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BzG,EAA0BwG,UAAW,qBAAkB,IAC1Dq3B,GACI7yB,EAAOm3C,aAAa,iBAAkB,WACtC/jB,EAAW,cAAernB,UAC1BqnB,EAAW,qBAAsB33B,SACjC23B,EAAW,wBAAqB,KACjCp+B,EAA0BwG,UAAW,WAAY,MACpDq3B,GACI7yB,EAAOoqC,aAAa,qBAAuBgQ,KAAMp6C,EAAOq6C,cACxDjnB,EAAW,cAAepzB,EAAOq6C,cAClCrlD,EAA0BwG,UAAW,wBAAqB,IAC7Dq3B,GACI7yB,EAAOoqC,aAAa,mBAAqBgQ,KAAMp6C,EAAOq6C,cACtDjnB,EAAW,cAAepzB,EAAOq6C,cAClCrlD,EAA0BwG,UAAW,sBAAmB,IAC3DxG,EAA4B69B,GACxB7yB,EAAO0kC,WACHC,SAAU,oBACV+B,YAAaO,EAAarvC,WAAYi7C,EAAS4B,kBAAmBxN,EAAatuC,QAASsuC,EAAapuC,oBAAqBouC,EAAajwC,uBAAwBiwC,EAAavvC,uBAC5K+4C,eAAgB1F,EAAoBprC,6BAA6B,WAAc,MAAO3K,MACtF4vC,SAAU7yC,EAAQ,2BAClB8yC,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsBvzB,EAAQ6wC,OAAQvN,EAAWhgC,iBAAkBggC,EAAWvhC,YAAa8vC,EAAMc,SAC7Gx9C,IAEL+1C,EAAoB3pC,qBACtBvO,GAAQmC,0BAA4BA,IAIjCy1C,mBAAmB,sBAAsBsC,0BAA0B,6BAA6BC,iBAAiB,oBAAoBsN,0BAA0B,GAAG/4C,gBAAgB,gBAAgBC,iBAAiB,iBAAiBozC,kBAAkB,kBAAkBlC,6BAA6B,+BAA+B6H,IAAI,SAASxoD,EAAQkB,EAAOJ,GACnW,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8nC,EAAO9nC,EAAQ,QACfyG,EAAiBzG,EAAQ,kBACzBoG,EAAyB,WACzB,QAASA,KACLgD,KAAKq/C,SAAW,GAAI3gB,GAAKwF,QACzBlkC,KAAKs/C,cAAgB,GAAIz6C,GAAO0nC,aAChCvsC,KAAKu/C,WAAY,EACjBv/C,KAAKw/C,MAAO,EACZx/C,KAAKy/C,iBAAmB,EACxBz/C,KAAK0/C,aAAe,GAAI76C,GAAO0nC,aAgHnC,MA9GAvvC,GAAsBqD,UAAUioC,SAAW,WACvC,GAAItJ,GAAQh/B,IACZA,MAAKq/C,SACA/D,aAAa,KACbrV,OAAO,SAAU/N,GAAK,QAASA,GAAKA,EAAEwmB,OAAO9mD,OAAS,IACtDo/C,GAAG,WAAc,MAAOhY,GAAMwgB,MAAO,IACrCj1C,IAAI,SAAU2tB,GACf,MAAO8G,GAAM2gB,WAAWznB,GACnB+G,MAAM,SAAUgY,GAAO,MAAOvY,GAAKa,WAAWqgB,IAAKx/B,cAEvDy/B,YACAzb,UAAU,SAAU0Z,GACrB9e,EAAMwgB,MAAO,EACbxgB,EAAMwH,QAAUxH,EAAMz0B,IAAMy0B,EAAMz0B,IAAIuzC,EAAO19B,MAAQ09B,EAAO19B,KAC5D4e,EAAMsgB,cAActR,KAAKhP,EAAMwH,SAC/BxH,EAAMygB,iBAAmB,KAGjCziD,EAAsBqD,UAAUy/C,gBAAkB,SAAUC,GACxD,GAAI//C,KAAKwmC,QAAS,CACd,GAAI7gC,GAAgB,IAATo6C,EAAa//C,KAAKy/C,gBAAkBM,GAAQ,CACvD//C,MAAKggD,gBAAgBr6C,KAG7B3I,EAAsBqD,UAAU4/C,SAAW,SAAU7e,IAC7CA,GAAQphC,KAAKg+C,YACbh+C,KAAK0/C,aAAa1R,KAAK5M,GAAQphC,KAAKg+C,UAChCh+C,KAAKu/C,WACLv/C,KAAKkgD,UAGjB5/C,OAAOuF,eAAe7I,EAAsBqD,UAAW,YACnDyF,IAAK,WACD,MAAO9F,MAAKwmC,SAAWxmC,KAAKy/C,iBAAmB,GAAKz/C,KAAKwmC,QAAQxmC,KAAKy/C,kBAE1E5uC,IAAK,SAAUuwB,GACX,GAAIphC,KAAKwmC,SACL,GAAIpF,IAASphC,KAAKg+C,SAAU,CACxB,GAAIr4C,GAAO3F,KAAKwmC,QAAQ9hB,QAAQ0c,EAChCphC,MAAKggD,gBAAgBr6C,QAIzB3F,MAAKy/C,iBAAmB,GAEhC15C,YAAY,EACZC,cAAc,IAElBhJ,EAAsBqD,UAAU2/C,gBAAkB,SAAUr6C,GACxD,GAAIw6C,GAAMngD,KAAKy/C,eACfz/C,MAAKy/C,gBAAkB95C,EAAO+I,KAAKgG,KAAK,EAAGhG,KAAKa,KAAKvP,KAAKwmC,aAAe5uC,OAAS,EAAG+N,IACjFw6C,IAAQx6C,IACJw6C,GAAO,GAAKngD,KAAKwmC,QAAQ5uC,SACzBoI,KAAKwmC,QAAQ2Z,GAAKC,WAAY,GAC9Bz6C,GAAQ,IACR3F,KAAKwmC,QAAQ7gC,GAAMy6C,WAAY,KAG3CpjD,EAAsBqD,UAAU6/C,MAAQ,WACpClgD,KAAK8/C,iBAAiB,GACtB9/C,KAAKwmC,WACLxmC,KAAKs/C,cAActR,SACnBhuC,KAAKu4B,KAAO,MAEhBv7B,EAAsBqD,UAAUggD,MAAQ,WAChCrgD,KAAKsgD,UACLtgD,KAAKsgD,SAASzT,cAAcwT,SAEpC3oB,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAenuB,QAC3B9M,EAAsBqD,UAAW,cAAW,IAC/Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAernB,WAC3B5T,EAAsBqD,UAAW,iBAAc,IAClDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAernB,WAC3B5T,EAAsBqD,UAAW,UAAO,IAC3Cq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BtD,EAAsBqD,UAAW,oBAAiB,IACrDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BtD,EAAsBqD,UAAW,gBAAa,IACjDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeoI,SAC3BrjC,EAAsBqD,UAAW,sBAAmB,IACvDq3B,GACI7yB,EAAOmqC,OAAO,SACd/W,EAAW,cAAe33B,SAC3BtD,EAAsBqD,UAAW,mBAAgB,IACpDq3B,GACI7yB,EAAOoqC,aAAapqC,EAAOq6C,aAC3BjnB,EAAW,cAAepzB,EAAOq6C,cAClCliD,EAAsBqD,UAAW,mBAAgB,IACpDq3B,GACI7yB,EAAOg3C,UAAU,SACjB5jB,EAAW,cAAepzB,EAAOqnC,aAClClvC,EAAsBqD,UAAW,eAAY,IAChDrD,EAAwB06B,GACpB7yB,EAAO0kC,WACHC,SAAU,eAAgBC,SAAU,w1BAAy3BC,SAAU5xC,EAAO+gC,GAAI0S,YAAaluC,EAAeC,yBAEl9B26B,EAAW,yBACZj7B,KAGPtF,GAAQsF,sBAAwBA,EAChCtF,EAAQqF,cAAgBC,KAIrBujD,iBAAiB,GAAGn6C,gBAAgB,gBAAgBE,KAAO,SAASk6C,IAAI,SAAS5pD,EAAQkB,EAAOJ,GACnG,YAYA,SAAS+oD,GAAQC,GACb,GAAIC,GAASD,EAAatG,QAAQvN,cAC9B1iB,EAAOw2B,EAAOC,wBACdC,EAAW/2C,MAAMyD,KAAKozC,EAAOG,iBAAiB,qBAClD,IAAKD,EAAL,CAEA,GAAIE,GAAQF,EAASt2C,IAAI,SAAUzT,GAAK,MAAOA,GAAE8pD,yBACjD,IAAoB,GAAhBG,EAAMnpD,OAAV,CAEA,GAAIopD,GAAQD,EAAM7f,OAAO,SAAUC,EAAKC,GAAQ,MAAOD,GAAI6Z,MAAQ5Z,EAAK4Z,MAAQ5Z,EAAOD,IACnF8f,EAAQF,EAAM7f,OAAO,SAAUC,EAAKC,GAAQ,MAAOD,GAAI6Z,MAAQ5Z,EAAK4Z,MAAQ5Z,EAAOD,GAEvF,IADArxB,QAAQoxC,IAAI,WAAaF,EAAMhG,MAAQ,gBAAkB7wB,EAAK6wB,SAC1DgG,EAAMhG,MAAQ7wB,EAAK6wB,OAGnBiG,EAAMpE,OAAS1yB,EAAK0yB,QAAxB,CAWA,OAPImE,OACIG,KAAMH,EAAMG,KAAOh3B,EAAKg3B,KAAMnG,MAAOgG,EAAMhG,OAE/CiG,OACIG,IAAKH,EAAMG,IAAMj3B,EAAKi3B,IAAKvE,OAAQoE,EAAMpE,YAlCrD,GAAInlB,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjByqD,EAAwBzqD,EAAQ,uBA6BhC0qD,EAAgB,WAChB,QAASA,MAsCT,MApCAA,GAAajhD,UAAUw6C,YAAc,WACjC,GAAI7b,GAAQh/B,IACPA,MAAK0gD,eAEV1gD,KAAK0gD,aAAaa,OAAOnd,UAAU,WAC/BpF,EAAMwiB,WAEVxhD,KAAKwhD,WAETF,EAAajhD,UAAUmhD,OAAS,WAC5B,GAAI93B,GAAM+2B,EAAQzgD,KAAK0gD,aAClBh3B,KAEL1pB,KAAKmhD,KAAOz3B,EAAIs3B,MAAMG,KACtBnhD,KAAKg7C,MAAQtxB,EAAIs3B,MAAMhG,QAE3BsG,EAAajhD,UAAUqF,gBAAkB,WACrC,GAAIs5B,GAAQh/B,IACZu7C,YAAW,WAAc,MAAOvc,GAAMwiB,UAAa,KAEvD9pB,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAeopB,EAAsBI,iBACjDH,EAAajhD,UAAW,mBAAgB,IAC3Cq3B,GACI7yB,EAAO68C,YAAY,wBACnBzpB,EAAW,cAAe8W,SAC3BuS,EAAajhD,UAAW,WAAQ,IACnCq3B,GACI7yB,EAAO68C,YAAY,kBACnBzpB,EAAW,cAAe8W,SAC3BuS,EAAajhD,UAAW,YAAS,IACpCihD,EAAe5pB,GACX7yB,EAAOonC,WAAYzC,SAAU,mBAC7BvR,EAAW,yBACZqpB,KAGP5pD,GAAQ4pD,aAAeA,CACvB,IAAIK,GAAgB,WAChB,QAASA,MAsCT,MApCAA,GAAathD,UAAUw6C,YAAc,WACjC,GAAI7b,GAAQh/B,IACPA,MAAK0gD,eAEV1gD,KAAK0gD,aAAaa,OAAOnd,UAAU,WAC/BpF,EAAMwiB,WAEVxhD,KAAKwhD,WAETG,EAAathD,UAAUqF,gBAAkB,WACrC,GAAIs5B,GAAQh/B,IACZu7C,YAAW,WAAc,MAAOvc,GAAMwiB,UAAa,KAEvDG,EAAathD,UAAUmhD,OAAS,WAC5B,GAAI93B,GAAM+2B,EAAQzgD,KAAK0gD,aAClBh3B,KAEL1pB,KAAKohD,IAAM13B,EAAIu3B,MAAMG,IACrBphD,KAAK68C,OAASnzB,EAAIu3B,MAAMpE,SAE5BnlB,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAeopB,EAAsBI,iBACjDE,EAAathD,UAAW,mBAAgB,IAC3Cq3B,GACI7yB,EAAO68C,YAAY,uBACnBzpB,EAAW,cAAe8W,SAC3B4S,EAAathD,UAAW,UAAO,IAClCq3B,GACI7yB,EAAO68C,YAAY,mBACnBzpB,EAAW,cAAe8W,SAC3B4S,EAAathD,UAAW,aAAU,IACrCshD,EAAejqB,GACX7yB,EAAOonC,WAAYzC,SAAU,mBAC7BvR,EAAW,yBACZ0pB,KAGPjqD,GAAQiqD,aAAeA,EACvBjqD,EAAQ2G,eAAiBijD,EAAcK,KAIpCv7C,gBAAgB,gBAAgBvG,sBAAsB,wBAAwB+hD,IAAI,SAAShrD,EAAQkB,EAAOJ,GAC7G,YAeA,SAASmqD,GAAcV,EAAMW,EAAOC,GAChC,GAAIC,GAAWb,IAASW,CAQxB,OAPIC,KAEIC,EADmB,gBAAZD,IACMZ,IAAUW,KAAYX,GAAQA,EAAKY,KAAaD,EAAMC,KAEtDZ,IAAUW,KAAYX,GAAQY,EAAQ3b,MAAM,SAAU6b,GAAM,MAAOd,GAAKc,KAAQH,EAAMG,OAGpGD,EAEX,QAASnuC,GAAKslB,EAAM4oB,GAChB,GAAIA,EACA,CAAA,GAAuB,gBAAZA,GACP,MAAO5oB,GAAKtlB,KAAK,SAAUvc,EAAG4I,GAC1B,MAAI5I,GAAEyqD,GAAW7hD,EAAE6hD,GACR,EAEPzqD,EAAEyqD,GAAW7hD,EAAE6hD,IACP,EAEL,GAGX,IAAIG,GAAW,SAAU5qD,EAAG4I,EAAG+uB,GAC3B,MAAI33B,GAAEyqD,EAAQ9yB,IAAU/uB,EAAE6hD,EAAQ9yB,IACvB,EAEP33B,EAAEyqD,EAAQ9yB,IAAU/uB,EAAE6hD,EAAQ9yB,KACtB,EAERA,IAAU8yB,EAAQnqD,OAAS,EACpB,EAEAsqD,EAAS5qD,EAAG4I,EAAG+uB,EAAQ,GAEtC,OAAOkK,GAAKtlB,KAAK,SAAUvc,EAAG4I,GAAK,MAAOgiD,GAAS5qD,EAAG4I,EAAG,KAG7D,MAAOi5B,GAAKtlB,OArDpB,GAAI6jB,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGiqB,EAAWniD,MAAQA,KAAKmiD,SAAY,SAAUC,EAAYC,GAC1D,MAAO,UAAUzqB,EAAQxnB,GAAOiyC,EAAUzqB,EAAQxnB,EAAKgyC,KAEvDv9C,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,iBA0CtBc,GAAQ4qD,wBACJ79C,QAASC,EAAQ69C,kBACjB39C,YAAaC,EAAOC,WAAW,WAAc,MAAO5I,KACpDsmD,OAAO,EAEX,IAAItmD,GAAwB,WACxB,QAASA,GAAqBumD,EAAWC,GACrC1iD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK2iD,SAAW,SAAUzqB,KAC1Bl4B,KAAK4iD,UAAY,aAuCrB,MArCA1mD,GAAqBmE,UAAUwiD,WAAa,SAAU7zC,GAClDhP,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,UAAWgV,EAAc7yC,EAAOhP,KAAK+iD,YAAa/iD,KAAK+hD,WAE7H7lD,EAAqBmE,UAAU2iD,QAAU,SAAUC,GAC3CA,EACAjjD,KAAK2iD,SAAS3iD,KAAK+iD,aAGnB/iD,KAAK2iD,aAAS51C,IAElB/M,KAAK4iD,aAET1mD,EAAqBmE,UAAU6iD,iBAAmB,SAAUz4C,GACxDzK,KAAK2iD,SAAWl4C,GAEpBvO,EAAqBmE,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GACpFitB,GACI7yB,EAAOiqC,MAAM,WACb7W,EAAW,cAAe33B,SAC3BpE,EAAqBmE,UAAW,kBAAe,IAClDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BpE,EAAqBmE,UAAW,cAAW,IAC9Cq3B,GACI7yB,EAAOm3C,aAAa,UAAW,0BAC/B/jB,EAAW,cAAernB,UAC1BqnB,EAAW,qBAAsBod,UACjCpd,EAAW,wBAAqB,KACjC/7B,EAAqBmE,UAAW,UAAW,MAC9CnE,EAAuBw7B,GACnB7yB,EAAOonC,WACHzC,SAAU,sCACV4Z,WAAY1rD,EAAQ4qD,0BAExBrqB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1DhwC,KAGPxE,GAAQwE,qBAAuBA,EAC/BxE,EAAQ2rD,6BACJ5+C,QAASC,EAAQ69C,kBACjB39C,YAAaC,EAAOC,WAAW,WAAc,MAAO3I,KACpDqmD,OAAO,EAEX,IAAIrmD,GAA6B,WAC7B,QAASA,GAA0BsmD,EAAWC,GAC1C1iD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK2iD,SAAW,SAAUzqB,KAC1Bl4B,KAAK4iD,UAAY,aA+CrB,MA7CAzmD,GAA0BkE,UAAUwiD,WAAa,SAAU7zC,GACvD,GAAIgwB,GAAQh/B,KACRsjD,EAAYt0C,GAASA,EAAM62B,UAAU,SAAUzE,GAAQ,MAAOygB,GAAczgB,EAAMpC,EAAM+jB,YAAa/jB,EAAM+iB,YAAgB,CAC/H/hD,MAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,UAAWyW,IAEjFnnD,EAA0BkE,UAAU2iD,QAAU,SAAUC,GACpD,GAAIjkB,GAAQh/B,KACRujD,EAAWvjD,KAAKwjD,eAChBC,EAAUF,EAAStd,OAAO,SAAUhvC,GAAK,MAAOA,KAAM+nC,EAAM+jB,cAC5DjF,EAAS2F,CACTR,KACAnF,EAAS2F,EAAQvlD,QAAQ8B,KAAK+iD,eAClCjF,EAASjqC,EAAKiqC,EAAQ99C,KAAK+hD,SAC3B/hD,KAAK2iD,SAAS7E,GACd99C,KAAK4iD,aAETzmD,EAA0BkE,UAAU6iD,iBAAmB,SAAUz4C,GAC7DzK,KAAK2iD,SAAWl4C,GAEpBtO,EAA0BkE,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GACzFitB,GACI7yB,EAAOiqC,MAAM,WACb7W,EAAW,cAAe33B,SAC3BnE,EAA0BkE,UAAW,kBAAe,IACvDq3B,GACI7yB,EAAOiqC,MAAM,WACb7W,EAAW,cAAenuB,QAC3B3N,EAA0BkE,UAAW,iBAAc,IACtDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BnE,EAA0BkE,UAAW,cAAW,IACnDq3B,GACI7yB,EAAOm3C,aAAa,UAAW,0BAC/B/jB,EAAW,cAAernB,UAC1BqnB,EAAW,qBAAsBod,UACjCpd,EAAW,wBAAqB,KACjC97B,EAA0BkE,UAAW,UAAW,MACnDlE,EAA4Bu7B,GACxB7yB,EAAOonC,WACHzC,SAAU,yCACV4Z,WAAY1rD,EAAQ2rD,+BAExBprB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1D/vC;0DAGPzE,GAAQyE,0BAA4BA,EACpCzE,EAAQgsD,uBACJj/C,QAASC,EAAQ69C,kBACjB39C,YAAaC,EAAOC,WAAW,WAAc,MAAO1I,KACpDomD,OAAO,EAEX,IAAIpmD,GAAuB,WACvB,QAASA,GAAoBqmD,EAAWC,GACpC1iD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK2jD,IAAM,EACX3jD,KAAK2iD,SAAW,SAAUzqB,KAC1Bl4B,KAAK4iD,UAAY,aACjB5iD,KAAK4jD,aAgDT,MA9CAxnD,GAAoBiE,UAAUwjD,UAAY,SAAU70C,GAChD,GAAIsvC,GAASt+C,KAAK4jD,UAAUplB,KAAK,SAAUvnC,GAAK,MAAOA,GAAEg4B,OAASjgB,GAC9DsvC,GACAt+C,KAAK2iD,SAASrE,EAAOyE,aAErB/iD,KAAK2iD,aAAS51C,KAEtB3Q,EAAoBiE,UAAUwiD,WAAa,SAAU7zC,GACjD,GAAIgwB,GAAQh/B,IACZA,MAAKgP,MAAQA,CACb,IAAIigB,GAAQjvB,KAAK4jD,UAAU/d,UAAU,SAAU5uC,GAAK,MAAO4qD,GAAc7yC,EAAO/X,EAAE8rD,YAAa/jB,EAAM+iB,UACrG/hD,MAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,gBAAiB5d,IAEvF7yB,EAAoBiE,UAAU6iD,iBAAmB,SAAUz4C,GACvDzK,KAAK2iD,SAAWl4C,GAEpBrO,EAAoBiE,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GACnFrO,EAAoBiE,UAAUyjD,SAAW,SAAUxF,GAE/C,MADAt+C,MAAK4jD,UAAUj5C,KAAK2zC,IACZt+C,KAAK2jD,OAAO55C,YAExB3N,EAAoBiE,UAAU0jD,WAAa,SAAUzF,GACjDt+C,KAAK4jD,UAAY5jD,KAAK4jD,UAAU3d,OAAO,SAAUhvC,GAAK,MAAOA,KAAMqnD,IACnEt+C,KAAK6iD,WAAW7iD,KAAKgP,QAEzB0oB,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BlE,EAAoBiE,UAAW,cAAW,IAC7Cq3B,GACI7yB,EAAOm3C,aAAa,QACpB/jB,EAAW,cAAe33B,SAC3BlE,EAAoBiE,UAAW,gBAAa,IAC/Cq3B,GACI7yB,EAAOm3C,aAAa,UAAW,wBAC/B/jB,EAAW,cAAernB,UAC1BqnB,EAAW,qBAAsBoI,SACjCpI,EAAW,wBAAqB,KACjC77B,EAAoBiE,UAAW,YAAa,MAC/CjE,EAAsBs7B,GAClB7yB,EAAOonC,WACHzC,SAAU,2CACV4Z,WAAY1rD,EAAQgsD,yBAExBzrB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1D9vC,KAGP1E,GAAQ0E,oBAAsBA,CAC9B,IAAIC,GAAgB,WAChB,QAASA,GAAa2nD,EAAUvB,EAAWwB,EAASC,GAChDlkD,KAAKgkD,SAAWA,EAChBhkD,KAAKyiD,UAAYA,EACjBziD,KAAKikD,QAAUA,EACfjkD,KAAKkkD,OAASA,EACVlkD,KAAKikD,UACLjkD,KAAKivB,MAAQjvB,KAAKikD,QAAQH,SAAS9jD,OAwB3C,MArBA3D,GAAagE,UAAUw6C,YAAc,WACf,MAAd76C,KAAKivB,OAAiBjvB,KAAKkkD,OAAOl1C,OAAShP,KAAKivB,QAChDjvB,KAAKkkD,OAAOl1C,MAAQhP,KAAKivB,QAEjC5yB,EAAagE,UAAUiF,YAAc,WAC7BtF,KAAKikD,SACLjkD,KAAKikD,QAAQF,WAAW/jD,OAGhC03B,GACI7yB,EAAOiqC,MAAM,WACb7W,EAAW,cAAe33B,SAC3BjE,EAAagE,UAAW,kBAAe,IAC1ChE,EAAeq7B,GACX7yB,EAAOonC,WACHzC,SAAU,oBAEd2Y,EAAQ,EAAGt9C,EAAOs/C,YAClBhC,EAAQ,EAAGt9C,EAAOu/C,QAClBnsB,EAAW,qBAAsBpzB,EAAOqnC,WAAYrnC,EAAOsqC,SAAU/yC,EAAqBsI,EAAQ2/C,kBACnGhoD,KAGP3E,GAAQ2E,aAAeA,IAIpB+J,gBAAgB,gBAAgBC,iBAAiB,mBAAmBi+C,IAAI,SAAS1tD,EAAQkB,EAAOJ,GACnG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoO,EAAKpO,EAAQ,QACb2H,EAAyB,WACzB,QAASA,KACLyB,KAAKwqB,OAAS,IACdxqB,KAAK0R,OAAS,GAAI7M,GAAO0nC,aACzBvsC,KAAKukD,QAAU,GAAIv/C,GAAGk/B,QACtBlkC,KAAKwkD,UAAY,GAAIx/C,GAAGk/B,QAwC5B,MAtCA3lC,GAAsB8B,UAAUokD,UAAY,WAAczkD,KAAKukD,QAAQ5+C,KAAK,OAC5EpH,EAAsB8B,UAAUqkD,YAAc,WAAc1kD,KAAKwkD,UAAU7+C,KAAK,OAChFpH,EAAsB8B,UAAUioC,SAAW,WACvCtoC,KAAK2kD,SAETpmD,EAAsB8B,UAAUskD,MAAQ,WACpC,GAAI3lB,GAAQh/B,IACNA,MAAK4kD,cACP5kD,KAAK4kD,aAAan/C,cACtBzF,KAAK4kD,aAAe5kD,KAAKwkD,UAAUxN,GAAG,WAAc,MAAOhY,GAAMttB,OAAOs8B,KAAK,QAAU1O,QAAQ,WAAc,MAAOt6B,GAAGu6B,WAAWyE,SAAShF,EAAMxU,QAAQq6B,KAAK,GAAGC,UAAU9lB,EAAMulB,WAAangB,UAAU,SAAUltC,GAAK,MAAO8nC,GAAMttB,OAAOs8B,KAAK,SAEpPzvC,EAAsB8B,UAAUw6C,YAAc,WAC1C76C,KAAK2kD,SAETjtB,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3B/B,EAAsB8B,UAAW,aAAU,IAC9Cq3B,GACI7yB,EAAOmqC,OAAO,gBACd/W,EAAW,cAAe33B,SAC3B/B,EAAsB8B,UAAW,aAAU,IAC9Cq3B,GACI7yB,EAAOm3C,aAAa,WACpB/jB,EAAW,cAAernB,UAC1BqnB,EAAW,wBACXA,EAAW,wBAAqB,KACjC15B,EAAsB8B,UAAW,YAAa,MACjDq3B,GACI7yB,EAAOm3C,aAAa,aACpB/jB,EAAW,cAAernB,UAC1BqnB,EAAW,wBACXA,EAAW,wBAAqB,KACjC15B,EAAsB8B,UAAW,cAAe,MACnD9B,EAAwBm5B,GACpB7yB,EAAOonC,WAAYzC,SAAU,mBAC7BvR,EAAW,yBACZ15B,KAGP7G,GAAQ6G,sBAAwBA,IAI7B6H,gBAAgB,gBAAgBE,KAAO,SAASy+C,IAAI,SAASnuD,EAAQkB,EAAOJ,GAC/E,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGiqB,EAAWniD,MAAQA,KAAKmiD,SAAY,SAAUC,EAAYC,GAC1D,MAAO,UAAUzqB,EAAQxnB,GAAOiyC,EAAUzqB,EAAQxnB,EAAKgyC,KAEvDv9C,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClBoO,EAAKpO,EAAQ,QACbouD,EAAc,WACd,QAASA,GAAWvC,EAAWuB,EAAUiB,GACrCjlD,KAAKyiD,UAAYA,EACjBziD,KAAKgkD,SAAWA,EAChBhkD,KAAKilD,OAASA,EACdjlD,KAAKklD,QAAU,GAAIlgD,GAAGk/B,QACtBlkC,KAAKgjD,QAAU,GAAIh+C,GAAGk/B,QACtBlkC,KAAKmlD,YAAc,GAAIngD,GAAGI,cAAc,GACxCpF,KAAK4tC,MAAO,EACP5tC,KAAKilD,SACNjlD,KAAK4tC,MAAO,GAoBpB,MAlBAoX,GAAW3kD,UAAUggD,MAAQ,WACzB,GAAIrhB,GAAQh/B,IACZu7C,YAAW,WACP,IACIvc,EAAMyjB,UAAU2C,oBAAoBpmB,EAAMglB,SAASnX,cAAe,SAClE7N,EAAMyjB,UAAU2C,oBAAoBpmB,EAAMglB,SAASnX,cAAe,UAEtE,MAAOlsB,MACR,IAEPqkC,EAAattB,GACT7yB,EAAOonC,WACHzC,SAAU,YAAa2M,MAAQkP,SAAU,iBAAkBjP,WAAY,OAAQkP,UAAW,oBAE9FnD,EAAQ,EAAGt9C,EAAOs/C,YAClBhC,EAAQ,EAAGt9C,EAAO0gD,OAAO1gD,EAAOC,WAAW,WAAc,MAAO0gD,OAChEvtB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,WAAYsZ,KACtER,KAGPttD,GAAQstD,WAAaA,CACrB,IAAIQ,GAAuB,WACvB,QAASA,KACLxlD,KAAKylD,KAAO,SAAUz2C,GAAS,OAAiB,MAATA,EAAgBA,EAAQ,IAAIjF,YACnE/J,KAAKgL,QAAS,EACdhL,KAAK0lD,OAAS,GAAI7gD,GAAO0nC,aACzBvsC,KAAK2lD,cAAe,EACpB3lD,KAAK4lD,WAAY,EACjB5lD,KAAK6lD,KAAO,GACZ7lD,KAAK4tC,MAAO,EAuIhB,MArIAttC,QAAOuF,eAAe2/C,EAAoBnlD,UAAW,SACjDyF,IAAK,WACD,MAAO9F,MAAK8lD,QAEhBj1C,IAAK,SAAUqnB,GACXl4B,KAAK8lD,OAAS5tB,EACdl4B,KAAK6lD,KAAO3tB,GAEhBnyB,YAAY,EACZC,cAAc,IAElBw/C,EAAoBnlD,UAAUqjC,UAAY,WACtC1jC,KAAKw6C,aAAY,IAErBgL,EAAoBnlD,UAAUw6C,YAAc,WACxC76C,KAAKw6C,aAAY,IAErBgL,EAAoBnlD,UAAUm6C,YAAc,SAAUuL,GAClD,GAAI/mB,GAAQh/B,IACZ,IAAIA,KAAK2lD,aAAc,CACnB,GAAIxF,GAAMngD,KAAKgmD,QACXv0C,EAAMzR,KAAKgmD,QAAUhmD,KAAK6nB,MAAMo+B,SACpC,IAAIjmD,KAAK8lD,OACL9lD,KAAK6lD,KAAO7lD,KAAK8lD,WAChB,IAAI3F,GAAO1uC,GAAOs0C,EAAO,CAC1B,GAAIG,GAAalmD,KAAK6nB,MAAMs+B,cACxBC,EAAiBpmD,KAAKomD,iBAAmBpmD,KAAKqmD,oBAAsB,SAAWpvD,GAAK,MAAOA,GAAE+nC,EAAMqnB,sBAA2B,KAClIrmD,MAAK6lD,MAAQO,GAAkBF,EAAWI,gBAAkB,SAAW9gD,GAAK,MAAO0gD,GAAWI,eAAe9gD,KAAUxF,KAAKylD,MAAMzlD,KAAK6nB,MAAMo+B,YAAcjmD,KAAKumD,aAE/JvmD,KAAK4lD,YAAa5lD,KAAK6nB,MAAMq1B,OAAUl9C,KAAKwmD,aAIvCxmD,KAAK6nB,MAAMq1B,QACjBl9C,KAAK4tC,MAAO,EACZ5tC,KAAKymD,WAAW7Y,MAAO,IALvB5tC,KAAK4tC,MAAO,EACZ5tC,KAAKymD,WAAW7Y,MAAO,KAQnC4X,EAAoBnlD,UAAUqF,gBAAkB,WAC5C,GAAIs5B,GAAQh/B,IACZA,MAAK2lD,cAAe,EACpB3lD,KAAKymD,WAAWvB,QAAQ9gB,UAAU,WAC1BpF,EAAMnX,MAAMq1B,QAAUle,EAAMwnB,eAC5BxnB,EAAM4O,MAAO,EACb5O,EAAMynB,WAAW7Y,MAAO,GAE5B5O,EAAM4mB,WAAY,IAEtB5lD,KAAKymD,WAAWzD,QAAQ5e,UAAU,WAAcpF,EAAM4mB,WAAY,KAEtEJ,EAAoBnlD,UAAUqmD,KAAO,WAC7B1mD,KAAK2mD,WAET3mD,KAAK4tC,MAAO,EACZ5tC,KAAKymD,WAAW7Y,MAAO,EACvB5tC,KAAKymD,WAAWpG,QAChBrgD,KAAK4lD,WAAY,EACjB5lD,KAAK0lD,OAAO1X,KAAK,QAErB1tC,OAAOuF,eAAe2/C,EAAoBnlD,UAAW,gBACjDyF,IAAK,WAAc,MAAO9F,MAAK4mD,eAC/B/1C,IAAK,SAAUqnB,GACXl4B,KAAK4mD,cAAgB1uB,EACjBA,IACAl4B,KAAK4tC,MAAO,EACZ5tC,KAAKymD,WAAW7Y,MAAO,IAG/B7nC,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAe2/C,EAAoBnlD,UAAW,eACjDyF,IAAK,WACD,MAAO9F,MAAKumD,cAEhB11C,IAAK,SAAU7B,GACXhP,KAAKumD,aAAev3C,EACfhP,KAAK6lD,OACN7lD,KAAK6lD,KAAO72C,IAEpBjJ,YAAY,EACZC,cAAc,IAElB0xB,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,UAC3BmQ,EAAoBnlD,UAAW,eAAY,IAC9Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAernB,WAC3B40C,EAAoBnlD,UAAW,qBAAkB,IACpDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeoI,SAC3BmlB,EAAoBnlD,UAAW,0BAAuB,IACzDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,UAC3BmQ,EAAoBnlD,UAAW,aAAU,IAC5Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BklD,EAAoBnlD,UAAW,QAAS,MAC3Cq3B,GACI7yB,EAAOoqC,aAAa+V,GACpB/sB,EAAW,cAAe+sB,IAC3BQ,EAAoBnlD,UAAW,iBAAc,IAChDq3B,GACI7yB,EAAOoqC,aAAavqC,EAAQmiD,SAC5B5uB,EAAW,cAAevzB,EAAQmiD,UACnCrB,EAAoBnlD,UAAW,YAAS,IAC3Cq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BklD,EAAoBnlD,UAAW,aAAU,IAC5Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,SAC1Bpd,EAAW,qBAAsBod,WAClCmQ,EAAoBnlD,UAAW,eAAgB,MAClDq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BklD,EAAoBnlD,UAAW,cAAe,MACjDmlD,EAAsB9tB,GAClB7yB,EAAO0kC,WACHC,SAAU,cAAeC,SAAU,sSAAuSyF,QAAS,0BAA2BiH,MAC1W2Q,kBAAmB,kBAG3B7uB,EAAW,yBACZutB,KAGP9tD,GAAQ8tD,oBAAsBA,EAC9B9tD,EAAQ6E,uBAAyBipD,EAAqBR,KAInD5+C,gBAAgB,gBAAgBC,iBAAiB,iBAAiBC,KAAO,SAASygD,IAAI,SAASnwD,EAAQkB,EAAOJ,GACjH,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB0G,EAAyB,WACzB,QAASA,KACL0C,KAAKgnD,aAAe,GAAIniD,GAAO0nC,aAmBnC,MAjBAjvC,GAAsB+C,UAAU4mD,WAAa,SAAUja,GACnDhtC,KAAKgsC,UAAYgB,GAErB1vC,EAAsB+C,UAAU6mD,YAAc,SAAUla,GAChDhtC,KAAKgsC,YAAcgB,GACnBhtC,KAAKgnD,aAAahZ,KAAKhB,IAE/BtV,GACI7yB,EAAOmqC,OAAO,gBACd/W,EAAW,cAAe33B,SAC3BhD,EAAsB+C,UAAW,mBAAgB,IACpD/C,EAAwBo6B,GACpB7yB,EAAOonC,WAAYzC,SAAU,eAAgB2M,MACrCmP,UAAW,qBAAsB6B,mBAAoB,yBAE7DlvB,EAAW,yBACZ36B,KAGP5F,GAAQ4F,sBAAwBA,IAI7B8I,gBAAgB,kBAAkBghD,IAAI,SAASxwD,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClBywD,EAAUzwD,EAAQ,eAClB2S,EAAS3S,EAAQ,gBACrBc,GAAQ4vD,qBACJ7iD,QAASC,EAAQ69C,kBACjB39C,YAAaC,EAAOC,WAAW,WAAc,MAAO7I,KACpDumD,OAAO,EAEX,IAAIvmD,GAAqB,WACrB,QAASA,GAAkBwmD,EAAWC,GAClC1iD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK2iD,SAAW,SAAU4E,KAC1BvnD,KAAK4iD,UAAY,aACjB5iD,KAAKwnD,SAAW,GAAIH,GAAQzlD,YAE5B5B,MAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QADvD,OAEX,IAAI4a,GAAOznD,KAAK0iD,YAAY7V,cAAc79B,KAC1ChP,MAAK0nD,iBAHM,SAGsBD,EAC5BznD,KAAK0nD,mBACN1nD,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,cAAetjC,EAAO2L,aAAatD,eAAe,KAAKoB,eACzHhT,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS,KAqEnF,MAlEA5wC,GAAkBoE,UAAUwiD,WAAa,SAAU7zC,GAC/CA,EAAQzF,EAAO6B,IAAI4D,GAAOsd,SACtBtsB,KAAK0nD,iBACL1nD,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,cAAe79B,GAEnE,OAAVA,EACAhP,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS,IAE3E7sC,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAStjC,EAAO6B,IAAI4D,GAAOhE,OAAO,OAGhH/O,EAAkBoE,UAAUsnD,cAAgB,SAAU34C,GAClD,IAAIhP,KAAK0nD,iBAAT,CAEA,GAAIE,GAAWr+C,EAAO6B,IAAI4D,EAAO,IAC7B44C,GAASx7C,UACTpM,KAAK2iD,SAASiF,EAASt7B,WAGvBtsB,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS,IAC3E7sC,KAAK2iD,SAAS,SAGtB1mD,EAAkBoE,UAAUimD,eAAiB,SAAUt3C,GACnD,MAAIA,GACOzF,EAAO6B,IAAI4D,GAAOhE,OAAO,eAC7B,MAEX/O,EAAkBoE,UAAU6iD,iBAAmB,SAAUz4C,GACrD,GAAIu0B,GAAQh/B,IACZA,MAAK2iD,SAAW,SAAU1iD,GAElBwK,EADuB,MAAvBu0B,EAAM6oB,eAA2B5nD,EAC9BA,EAAEqtB,SAEFrtB,KAGfhE,EAAkBoE,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GACjFxO,EAAkBoE,UAAUynD,iBAAmB,SAAUC,GACrD/nD,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,WAAYkb,IAElFrwB,GACI7yB,EAAOm3C,aAAa,SAAU,8BAC9B/jB,EAAW,cAAe33B,SAC3BrE,EAAkBoE,UAAW,eAAY,IAC5Cq3B,GACI7yB,EAAOm3C,aAAa,WACpB/jB,EAAW,cAAe33B,SAC3BrE,EAAkBoE,UAAW,gBAAa,IAC7Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BrE,EAAkBoE,UAAW,oBAAiB,IACjDq3B,GACI7yB,EAAOm3C,aAAa,QAAS,wBAC7B/jB,EAAW,cAAernB,UAC1BqnB,EAAW,qBAAsBoI,SACjCpI,EAAW,wBAAqB,KACjCh8B,EAAkBoE,UAAW,gBAAiB,MACjDpE,EAAoBy7B,GAChB7yB,EAAOonC,WACHzC,SAAU,4FACV4Z,WAAY1rD,EAAQ4vD,uBAExBrvB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1DjwC,KAGPvE,GAAQuE,kBAAoBA,IAIzB+rD,cAAc,iBAAiB5hD,gBAAgB,gBAAgBC,iBAAiB,iBAAiB4hD,gBAAgB,IAAIC,IAAI,SAAStxD,EAAQkB,EAAOJ,GACpJ,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBwG,EAAqB,WACrB,QAASA,KACL4C,KAAKmoD,aAAc,EACnBnoD,KAAKwsC,QAAS,EACdxsC,KAAKooD,UAAW,EAChBpoD,KAAKqoD,WAAY,EAoCrB,MAlCAjrD,GAAkBiD,UAAU+2C,KAAO,WAC/B,GAAIkR,GAAUtoD,KAAKwsC,MAEnB,OADAxsC,MAAKwsC,QAAS,GACN8b,GAEZlrD,EAAkBiD,UAAUqoC,MAAQ,WAChC,GAAI4f,GAAUtoD,KAAKwsC,MAEnB,OADAxsC,MAAKwsC,QAAS,EACP8b,GAEXlrD,EAAkBiD,UAAUioC,SAAW,WACnC,GAAItJ,GAAQh/B,IACZu7C,YAAW,WAAc,MAAOvc,GAAMmpB,aAAc,GAAS,KAEjE/qD,EAAkBiD,UAAUkoD,YAAc,WAAkBvoD,KAAKqoD,WAC7DroD,KAAKo3C,QACT1f,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BlD,EAAkBiD,UAAW,aAAU,IAC1Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BlD,EAAkBiD,UAAW,eAAY,IAC5Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BlD,EAAkBiD,UAAW,gBAAa,IAC7CjD,EAAoBs6B,GAChB7yB,EAAO0kC,WACHC,SAAU,WAAYC,SAAU,gSAEpCxR,EAAW,yBACZ76B,KAGP1F,GAAQ0F,kBAAoBA,IAIzBgJ,gBAAgB,kBAAkBoiD,IAAI,SAAS5xD,EAAQkB,EAAOJ,GACjE,YAmBA,SAAS+wD,GAAUnxD,GACf,IAAK2X,SAAS3X,GACV,MAAO,EAEX,KADA,GAAIR,GAAI,EAAGW,EAAI,EACRiX,KAAKuY,MAAM3vB,EAAIR,GAAKA,IAAMQ,GAC7BR,GAAK,GACLW,GAEJ,OAAOA,GAEX,QAASixD,GAAa/nB,EAAKgoB,GACvB,MAAOj6C,MAAKuY,MAAM0Z,EAAMjyB,KAAK+F,IAAI,GAAIk0C,IAAaj6C,KAAK+F,IAAI,GAAIk0C,GA7BnE,GAAIjxB,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClBgyD,EAAWhyD,EAAQ,mBACnBsK,EAAmBtK,EAAQ,2BAC3BkR,EAAgBlR,EAAQ,2BACxB4Q,EAA6B5Q,EAAQ,wCACrCiyD,EAAwB,GAAIhkD,GAAOikD,SAASpkD,EAAQ69C,mBAAqB39C,YAAaC,EAAOC,WAAW,WAAc,MAAO/I,KAAoCymD,OAAO,IACxKuG,EAAwB,+BACxBC,EAAuB,kBAcvBjtD,EAAkC,WAClC,QAASA,GAA+B0mD,EAAWC,EAAa/M,EAAcsT,GAC1EjpD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK21C,aAAeA,EACpB31C,KAAKipD,cAAgBA,EACrBjpD,KAAK2iD,SAAW,SAAU4E,KAC1BvnD,KAAK4iD,UAAY,aAgIrB,MA9HA7mD,GAA+BsE,UAAU6kD,QAAU,SAAUl2C,GACzDhP,KAAK2iD,SAAS3zC,GACdhP,KAAK4iD,aAET7mD,EAA+BsE,UAAU6oD,YAAc,WACnD,IAAKlpD,KAAKgL,OACN,KAAM,uBACV,IAAI4U,GAAQ5f,KAAKgL,OAAO4U,MAAM,KAU1BupC,EAASvpC,EAAM,GACfwpC,EAAS,EAAGC,EAAc,EAAGC,EAAc,CAC/C,IAAMH,EAAQ,CACV,GAAIzhC,GAAQqhC,EAAsB5mC,KAAKgnC,EACvC,KAAK,EACD,KAAMA,GAAS,6CAEbzhC,GAAM,KACR0hC,EAAShtC,SAASsL,EAAM,KAEtBA,EAAM,KACR2hC,EAAcjtC,SAASsL,EAAM,KAE3BA,EAAM,KACR4hC,EAAcltC,SAASsL,EAAM,KAGrC1nB,KAAKupD,eACDC,KA3BU,SAAU3/C,GACpB,GAAc,WAAVA,EACA,OAAS+9C,SAAU,GAAIgB,GAASa,YACpC,IAAc,YAAV5/C,EACA,OAAS+9C,SAAU,GAAIgB,GAASc,YAAen/C,IAAK,SAAUoW,GAAK,MAAOsJ,aAAYtJ,EAAI,KAAKgpC,QAAQlB,EAAU9nC,GAAK,KAC1H,IAAc,eAAV9W,EACA,OAAS+9C,SAAU,GAAI1mD,GAAiBC,eAC5C,MAAM,2BAA6B0I,GAoBrB+V,EAAM,IAAKgqC,SACrBC,qBAAsBT,EACtBU,sBAAuBT,EACvBU,sBAAuBT,GACxBU,IAAKb,IAGhBptD,EAA+BsE,UAAUimD,eAAiB,SAAUt3C,GAChE,GAAc,IAAVA,EACA,MAAO,GACX,IAAIA,EAAO,CACFhP,KAAKupD,eACNvpD,KAAKkpD,aACT,IAAIM,GAAOxpD,KAAKupD,cAAcC,KAC1BS,EAAcT,EAAK5B,SAASsC,UAAUl7C,EAAOhP,KAAKupD,cAAcS,IACpE,OAAOhqD,MAAKipD,cAAckB,iBAAiBF,GAE/C,MAAO,IAEXluD,EAA+BsE,UAAU+pD,cAAgB,SAAUp7C,GAC/DhP,KAAKiL,OAASjL,KAAK21C,aAAat1B,YACZ,OAAhBrgB,KAAKiL,YAAmC8B,KAAhB/M,KAAKiL,SAC7BjL,KAAKiL,OAAS,MACbjL,KAAKupD,eACNvpD,KAAKkpD,cACTl6C,EAAQhP,KAAKipD,cAAcoB,mBAAmBr7C,EAAOhP,KAAKiL,OAC1D,IAAImK,GAAQ4zC,EAAqB7mC,KAAKnT,EACtC,KAAKoG,EAED,WADApV,MAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS,GAG/E,IAAIp+B,GAASwb,WAAW7U,EAAM,GAC9B,IAAI1I,MAAM+B,GAEN,MADAzO,MAAK6iD,WAAW,MACT,SAE8C91C,KAArD/M,KAAKupD,cAAcK,QAAQG,wBAC3Bt7C,EAASi6C,EAAaj6C,EAAQzO,KAAKupD,cAAcK,QAAQG,uBAE7D,IAAIP,GAAOxpD,KAAKupD,cAAcC,IAI9B,OAHIA,GAAKj/C,MACLkE,EAAS+6C,EAAKj/C,IAAIkE,IACtBzO,KAAK6iD,WAAWp0C,GACTA,GAEX1S,EAA+BsE,UAAUwiD,WAAa,SAAU7zC,GAC5D,GAAIs7C,EACJ,IAAuB,WAAnBtqD,KAAKuqD,UACLvqD,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS79B,OAC1E,CACDhP,KAAKiL,OAASjL,KAAK21C,aAAat1B,WAChC,IAAIwlC,GAAO7lD,KAAKsmD,eAAet3C,EAC/Bs7C,GAAetqD,KAAKipD,cAAcuB,mBAAmB3E,EAAM7lD,KAAKiL,QAChEjL,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAASyd,OACLv9C,KAAlE/M,KAAK0iD,YAAY7V,cAAc4d,cAAcC,mBAC7C1qD,KAAK0iD,YAAY7V,cAAc4d,cAAcC,iBAAiBC,UAAYL,KAItFvuD,EAA+BsE,UAAU6iD,iBAAmB,SAAUz4C,GAClE,GAAIu0B,GAAQh/B,IACZA,MAAK2iD,SAAW,SAAU3zC,GACtB,GAAI47C,GAAmC,WAApB5rB,EAAMurB,UAAyB,EAAI,IACzC,KAATv7C,GACAusC,WAAW,WAAc,MAAOvc,GAAM6jB,WAAW+H,IAAkB,GACnEngD,EAAGmgD,IAGHngD,EAAGu0B,EAAMorB,cAAcp7C,MAInCjT,EAA+BsE,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GAC9FitB,GACI7yB,EAAOiqC,MAAM,QACb7W,EAAW,cAAeoI,SAC3BtkC,EAA+BsE,UAAW,gBAAa,IAC1Dq3B,GACI7yB,EAAOiqC,MAAM,sBACb7W,EAAW,cAAeoI,SAC3BtkC,EAA+BsE,UAAW,aAAU,IACvDtE,EAAiC27B,GAC7B7yB,EAAOonC,WACHzC,SAAU,4BACV2M,MACIkP,SAAU,gCAEdjC,WAAYyF,EAAuBrhD,EAA2BC,4BAElEwwB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,WAAYpkC,EAAcC,yBAA0BP,EAA2BC,4BACzI1L,KAGPrE,GAAQqE,+BAAiCA,IAItC8uD,0BAA0B,GAAGC,uCAAuC,GAAGvb,0BAA0B,GAAGwb,kBAAkB,kBAAkB3kD,gBAAgB,gBAAgBC,iBAAiB,mBAAmB2kD,IAAI,SAASp0D,EAAQkB,EAAOJ,GAC3O,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8gD,EAAW9gD,EAAQ,mBACnBoxC,EAAapxC,EAAQ,kBACrBq0D,EAAer0D,EAAQ,mBAC3BA,GAAQ,OACR,IAAIkH,GAA8B,WAC9B,QAASA,GAA2BotD,EAAQC,EAAW/8C,EAAQqoC,EAAW2U,EAAeC,GACrF,GAAIrsB,GAAQh/B,IACZA,MAAKkrD,OAASA,EACdlrD,KAAKmrD,UAAYA,EACjBnrD,KAAKoO,OAASA,EACdpO,KAAKy2C,UAAYA,EACjBz2C,KAAKorD,cAAgBA,EACrBprD,KAAKqrD,WAAaA,EAClBrrD,KAAKmG,QACLnG,KAAKsrD,aAAe,EACpBtrD,KAAK2mD,UAAW,EAChBuE,EAAO9S,OAAOnS,OAAO,SAAUzgC,GAAK,MAAOA,aAAakyC,GAASW,gBAAkBjU,UAAU,SAAUntC,GACnG,GAAIs0D,GAAUJ,EAAUK,SAAS/wB,IAAI,GAAGt0B,KACpCslD,EAAOzsB,EAAMksB,OAAOzwB,IAAI7a,MAAM,KAAKvP,MAAM,GACzC+oC,EAAQqS,EAAK/mC,QAAQ6mC,EACzB,KAAc,GAAVnS,EAGA,MAFApa,GAAM2nB,UAAW,OACjB3nB,EAAMn+B,MAAQ,KAGlB,IAAI6qD,GAAU,IACd1sB,GAAM74B,OACN,IAAIgzB,GAAO/qB,EAAO2iC,aAAayH,QAC/BxZ,GAAM2sB,gBAAkBvS,EAAQ,CAShC,KAAK,GAAIliD,GAAI,EAAGA,EAAI8nC,EAAM2sB,gBAAiBz0D,KAR7B,SAASA,GACnB,GAAI+3B,GAAQkK,EAAK0M,UAAU,SAAUhvC,GAAK,MAAOA,GAAE+0D,YAAcH,EAAKv0D,IACtE,KAAe,IAAX+3B,EACA,KAAMw8B,GAAKv0D,GAAK,kCACpBw0D,GAAUvyB,EAAKlK,GACf+P,EAAM74B,KAAKwE,KAAKskB,GAChBkK,EAAOuyB,EAAQzd,cAGP/2C,EAGZ,IADA8nC,EAAMssB,aAAe,GACjBG,EAAKzsB,EAAM2sB,iBAKX,MAFA3sB,GAAM2nB,UAAW,OACjB3nB,EAAMn+B,MAAQ,KAHdm+B,GAAMssB,aAAenyB,EAAK0M,UAAU,SAAUgmB,GAAM,MAAOA,GAAGD,aAAeH,EAAKzsB,EAAM2sB,mBAM5F3sB,EAAM8sB,SAAW3yB,EACjB6F,EAAM+sB,WAgFd,MA7EAjuD,GAA2BuC,UAAU0rD,OAAS,WAC1C,IAAK/rD,KAAK8rD,WAAa9rD,KAAK8rD,SAASl0D,OAGjC,MAFAoI,MAAK2mD,UAAW,OAChB3mD,KAAKa,MAAQ,KAGjBb,MAAK2mD,UAAW,EACZ3mD,KAAKgsD,OAASf,EAAalqD,oBAAoBkrD,QAC3CjsD,KAAKsrD,cAAgBtrD,KAAK8rD,SAASl0D,OAAS,GAC5CoI,KAAK2mD,UAAW,EAChB3mD,KAAKa,MAAQ,MAGbb,KAAKa,MAAQb,KAAKy2C,UAAUtF,QAAQ,gCAAkCnxC,KAAKmG,KAAKmK,KAAK,KAAO,KAAOtQ,KAAKsrD,aAAe,IAEtHtrD,KAAKgsD,OAASf,EAAalqD,oBAAoBmrD,WAC3B,GAArBlsD,KAAKsrD,cACLtrD,KAAK2mD,UAAW,EAChB3mD,KAAKa,MAAQ,MAGbb,KAAKa,MAAQb,KAAKy2C,UAAUtF,QAAQ,gCAAkCnxC,KAAKmG,KAAKmK,KAAK,KAAO,KAAOtQ,KAAKsrD,aAAe,MAGnIhrD,OAAOuF,eAAe/H,EAA2BuC,UAAW,UACxDwQ,IAAK,SAAUpD,OAAmBV,KAARU,IACtBzN,KAAKgsD,KAAOf,EAAalqD,oBAAoBkrD,SAASjsD,KAAK+rD,UAC/DhmD,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAe/H,EAA2BuC,UAAW,UACxDwQ,IAAK,SAAUpD,OAAmBV,KAARU,IACtBzN,KAAKgsD,KAAOf,EAAalqD,oBAAoBmrD,UAAUlsD,KAAK+rD,UAChEhmD,YAAY,EACZC,cAAc,IAElBlI,EAA2BuC,UAAU8rD,QAAU,WACvCnsD,KAAK2mD,UAET3mD,KAAKqrD,WAAWe,UACZllC,OAAQlnB,KAAKgsD,KACbK,cAAersD,KAAKsrD,aACpBQ,SAAU9rD,KAAK8rD,SACfQ,WAAYtsD,KAAKmrD,UACjBD,OAAQlrD,KAAKkrD,OACb9R,MAAOp5C,KAAK2rD,mBAGpBj0B,GACI7yB,EAAOiqC,MAAM,YACb7W,EAAW,cAAe33B,QAC1B23B,EAAW,qBAAsB33B,UAClCxC,EAA2BuC,UAAW,SAAU,MACnDq3B,GACI7yB,EAAOiqC,MAAM,YACb7W,EAAW,cAAe33B,QAC1B23B,EAAW,qBAAsB33B,UAClCxC,EAA2BuC,UAAW,SAAU,MACnDq3B,GACI7yB,EAAO68C,YAAY,kBACnB78C,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BxC,EAA2BuC,UAAW,eAAY,IACrDq3B,GACI7yB,EAAO68C,YAAY,cACnBzpB,EAAW,cAAeoI,SAC3BviC,EAA2BuC,UAAW,YAAS,IAClDq3B,GACI7yB,EAAOm3C,aAAa,SACpB/jB,EAAW,cAAernB,UAC1BqnB,EAAW,wBACXA,EAAW,wBAAqB,KACjCn6B,EAA2BuC,UAAW,UAAW,MACpDvC,EAA6B45B,GACzB7yB,EAAOonC,WAAYzC,SAAU,wBAAyB2M,MAAQoW,uBAAwB,UACtFt0B,EAAW,qBAAsByf,EAAS6B,OAAQ7B,EAAS8U,eAAgBxkB,EAAW7gC,cAAe6gC,EAAWhgC,iBAAkBggC,EAAW/gC,kBAAmB+gC,EAAWrgC,qBAC5K7J,KAGPpG,GAAQoG,2BAA6BA,IAIlC2uD,mBAAmB,sBAAsB5a,iBAAiB,oBAAoBzrC,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBnzC,KAAO,SAASomD,IAAI,SAAS91D,EAAQkB,EAAOJ,GACjM,YAiBA,SAAS+wD,GAAUnxD,GACf,IAAK2X,SAAS3X,GACV,MAAO,EAEX,KADA,GAAIR,GAAI,EAAGW,EAAI,EACRiX,KAAKuY,MAAM3vB,EAAIR,GAAKA,IAAMQ,GAC7BR,GAAK,GACLW,GAEJ,OAAOA,GAEX,QAASixD,GAAa/nB,EAAKgoB,GACvB,MAAOj6C,MAAKuY,MAAM0Z,EAAMjyB,KAAK+F,IAAI,GAAIk0C,IAAaj6C,KAAK+F,IAAI,GAAIk0C,GA3BnE,GAAIjxB,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClBgyD,EAAWhyD,EAAQ,mBACnBsK,EAAmBtK,EAAQ,2BAC3BiyD,EAAwB,GAAIhkD,GAAOikD,SAASpkD,EAAQ69C,mBAAqB39C,YAAaC,EAAOC,WAAW,WAAc,MAAOhJ,KAA8B0mD,OAAO,IAClKuG,EAAwB,+BACxBC,EAAuB,kBAcvBltD,EAA4B,WAC5B,QAASA,GAAyB2mD,EAAWC,GACzC1iD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK2iD,SAAW,SAAU4E,KAC1BvnD,KAAK4iD,UAAY,aA+GrB,MA7GA9mD,GAAyBuE,UAAU6kD,QAAU,SAAUl2C,GACnDhP,KAAK2iD,SAAS3zC,GACdhP,KAAK4iD,aAET9mD,EAAyBuE,UAAU6oD,YAAc,WAC7C,IAAKlpD,KAAKgL,OACN,KAAM,uBACV,IAAI4U,GAAQ5f,KAAKgL,OAAO4U,MAAM,KAU1BupC,EAASvpC,EAAM,GACfwpC,EAAS,EAAGC,EAAc,EAAGC,EAAc,CAC/C,IAAMH,EAAQ,CACV,GAAIzhC,GAAQqhC,EAAsB5mC,KAAKgnC,EACvC,KAAK,EACD,KAAMA,GAAS,6CAEbzhC,GAAM,KACR0hC,EAAShtC,SAASsL,EAAM,KAEtBA,EAAM,KACR2hC,EAAcjtC,SAASsL,EAAM,KAE3BA,EAAM,KACR4hC,EAAcltC,SAASsL,EAAM,KAGrC1nB,KAAKupD,eACDC,KA3BU,SAAU3/C,GACpB,GAAc,WAAVA,EACA,OAAS+9C,SAAU,GAAIgB,GAASa,YACpC,IAAc,YAAV5/C,EACA,OAAS+9C,SAAU,GAAIgB,GAASc,YAAen/C,IAAK,SAAUoW,GAAK,MAAOsJ,aAAYtJ,EAAI,KAAKgpC,QAAQlB,EAAU9nC,GAAK,KAC1H,IAAc,eAAV9W,EACA,OAAS+9C,SAAU,GAAI1mD,GAAiBC,eAC5C,MAAM,2BAA6B0I,GAoBrB+V,EAAM,IAAKgqC,SACrBC,qBAAsBT,EACtBU,sBAAuBT,EACvBU,sBAAuBT,GACxBU,IAAKb,IAGhBrtD,EAAyBuE,UAAUimD,eAAiB,SAAUt3C,GAI1D,MAHKhP,MAAKupD,eACNvpD,KAAKkpD,cACElpD,KAAKupD,cAAcC,KAClB5B,SAASsC,UAAUl7C,EAAOhP,KAAKupD,cAAcS,MAE7DluD,EAAyBuE,UAAU+pD,cAAgB,SAAUp7C,GACpDhP,KAAKupD,eACNvpD,KAAKkpD,cACTl6C,EAAQA,EAAMgD,QAAQ,OAAQ,GAC9B,IAAIoD,GAAQ4zC,EAAqB7mC,KAAKnT,EACtC,KAAKoG,EAED,WADApV,MAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS,GAG/E,IAAIp+B,GAASwb,WAAW7U,EAAM,GAC9B,IAAI1I,MAAM+B,GAEN,MADAzO,MAAK6iD,WAAW,MACT,SAE8C91C,KAArD/M,KAAKupD,cAAcK,QAAQG,wBAC3Bt7C,EAASi6C,EAAaj6C,EAAQzO,KAAKupD,cAAcK,QAAQG,uBAE7D,IAAIP,GAAOxpD,KAAKupD,cAAcC,IAI9B,OAHIA,GAAKj/C,MACLkE,EAAS+6C,EAAKj/C,IAAIkE,IACtBzO,KAAK6iD,WAAWp0C,GACTA,GAEX3S,EAAyBuE,UAAUwiD,WAAa,SAAU7zC,GACtD,GAAuB,WAAnBhP,KAAKuqD,UACLvqD,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS79B,OAC1E,CACD,GAAI62C,GAAO7lD,KAAKsmD,eAAet3C,EAC/BhP,MAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAASgZ,KAGnF/pD,EAAyBuE,UAAU6iD,iBAAmB,SAAUz4C,GAC5D,GAAIu0B,GAAQh/B,IACZA,MAAK2iD,SAAW,SAAU3zC,GACtB,GAAI47C,GAAmC,WAApB5rB,EAAMurB,UAAyB,EAAI,IACzC,KAATv7C,GACAusC,WAAW,WAAc,MAAOvc,GAAM6jB,WAAW+H,IAAkB,GACnEngD,EAAGmgD,IAGHngD,EAAGu0B,EAAMorB,cAAcp7C,MAInClT,EAAyBuE,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GACxFitB,GACI7yB,EAAOiqC,MAAM,QACb7W,EAAW,cAAeoI,SAC3BvkC,EAAyBuE,UAAW,gBAAa,IACpDq3B,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAeoI,SAC3BvkC,EAAyBuE,UAAW,aAAU,IACjDvE,EAA2B47B,GACvB7yB,EAAOonC,WACHzC,SAAU,sBACV2M,MAAQkP,SAAU,gCAClBjC,WAAYyF,KAEhB5wB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1DpwC,KAGPpE,GAAQoE,yBAA2BA,IAIhC+uD,0BAA0B,GAAGE,kBAAkB,kBAAkB3kD,gBAAgB,gBAAgBC,iBAAiB,mBAAmBsmD,IAAI,SAAS/1D,EAAQkB,EAAOJ,GACpK,YAaA,SAASk1D,GAAIjsC,EAAG7K,GACZ,MAAO6K,IAAK7K,EAAK6K,GAbrB,GAAI+W,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,kBACrBi2D,EAAYj2D,EAAQ,sBAIpBiG,EAAoB,WACpB,QAASA,GAAiBqL,EAAQuuC,GAC9Bz2C,KAAKkI,OAASA,EACdlI,KAAKy2C,UAAYA,EAsErB,MApEAn2C,QAAOuF,eAAehJ,EAAiBwD,UAAW,cAC9CyF,IAAK,WACD,MAAO9F,MAAKy2C,UAAUtF,QAAQ,qBAElCprC,YAAY,EACZC,cAAc,IAElBnJ,EAAiBwD,UAAU8rD,QAAU,SAAUnf,GAC3C,GAAIhO,GAAQh/B,IAEZ,IADAgtC,EAAM8f,iBACF9sD,KAAK+sD,eAAgB,CACrB,GAAIrjC,GAAM1pB,KAAK+sD,kBACH,IAARrjC,GAAyB,OAARA,KAEJ,IAARA,OAAwB3c,KAAR2c,EACrB1pB,KAAKgtD,WAAWhtD,KAAKu6B,WAEhBqyB,EAAIljC,EAAK,SAAUtyB,GAAK,MAAOA,GAAEymD,OACtCn0B,EAAIm0B,KAAK,SAAUC,IACA,IAAXA,GAA+B,OAAXA,KAEJ,IAAXA,OAA8B/wC,KAAX+wC,EACxB9e,EAAMguB,WAAWhuB,EAAMzE,WAElBujB,GACL9e,EAAMguB,WAAWlP,MAIpBp0B,GACL1pB,KAAKgtD,WAAWtjC,QAIpB1pB,MAAKgtD,WAAWhtD,KAAKu6B,YAG7B19B,EAAiBwD,UAAU4sD,OAAS,SAAU/iD,GAC1C,MAAOsuB,oBAAmBqH,KAAKC,UAAU51B,KAE7CrN,EAAiBwD,UAAU2sD,WAAa,SAAUzyB,GAC9CA,EAAYA,GAAav6B,KAAKitD,OAAO1yB,EACrC,IAAID,GAAWt6B,KAAKy2C,UAAUyW,WAC9BltD,MAAKkI,OAAO2kC,cAAcuK,KAAKyV,EAAUz0D,IAAI8hC,SAASC,mBAAmBn6B,KAAKo6B,MAAOp6B,KAAKq6B,QAASC,EAAUC,GAAWE,MAE5H/C,GACI7yB,EAAOiqC,MAAM,YACb7W,EAAW,cAAeoI,SAC3BxjC,EAAiBwD,UAAW,cAAW,IAC1Cq3B,GACI7yB,EAAOiqC,MAAM,SACb7W,EAAW,cAAe8W,SAC3BlyC,EAAiBwD,UAAW,YAAS,IACxCq3B,GACI7yB,EAAOiqC,MAAM,aACb7W,EAAW,cAAe33B,SAC3BzD,EAAiBwD,UAAW,gBAAa,IAC5Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAernB,WAC3B/T,EAAiBwD,UAAW,qBAAkB,IACjDxD,EAAmB66B,GACf7yB,EAAOonC,WACHzC,SAAU,aACV2M,MAAQgX,qBAAsB,OAAQC,UAAW,aAAc9H,UAAW,qBAE9ErtB,EAAW,qBAAsB+P,EAAW//B,UAAW+/B,EAAWhgC,oBACnEnL,KAGPnF,GAAQmF,iBAAmBA,IAIxBg1C,iBAAiB,oBAAoBC,qBAAqB,GAAG1rC,gBAAgB,kBAAkBinD,IAAI,SAASz2D,EAAQkB,EAAOJ,GAC9H,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGiqB,EAAWniD,MAAQA,KAAKmiD,SAAY,SAAUC,EAAYC,GAC1D,MAAO,UAAUzqB,EAAQxnB,GAAOiyC,EAAUzqB,EAAQxnB,EAAKgyC,KAEvDv9C,EAASjO,EAAQ,iBACjBqG,EAAWrG,EAAQ,YACnB0F,EAAe1F,EAAQ,eAC3Bc,GAAQ2Q,kBAAoB,GAAIxD,GAAOyoD,YAAY,mBACnD,IAAIC,GAA2B,WAC3B,QAASA,GAAwBC,GACzBA,OAAmCzgD,IAAvBygD,EAAStd,aACrBlwC,KAAKwtD,SAAWA,GAiBxB,MAdA91B,IACI7yB,EAAOiqC,MAAM,kBACb7W,EAAW,cAAeod,UAC3BkY,EAAwBltD,UAAW,oBAAiB,IACvDq3B,GACI7yB,EAAOiqC,MAAM,YACb7W,EAAW,cAAeod,UAC3BkY,EAAwBltD,UAAW,qBAAkB,IACxDktD,EAA0B71B,GACtB7yB,EAAOonC,WAAYzC,SAAU,wBAAyB2M,MAAQsX,aAAc,8DAC5EtL,EAAQ,EAAGt9C,EAAOs/C,YAClBhC,EAAQ,EAAGt9C,EAAO0gD,OAAO7tD,EAAQ2Q,oBACjC4vB,EAAW,qBAAsB33B,UAClCitD,KAGP71D,GAAQ61D,wBAA0BA,CAClC,IAAIG,GAA6B,SAAUhtD,GAEvC,QAASgtD,GAA0BF,EAAUpT,GACzC,GAAIpb,GAAQh/B,IACZU,GAAO/I,KAAKqI,KAAMwtD,GAClBpT,EAAQvN,cAAc8gB,iBAAiB,QAAS,SAAU3gB,IAClDhO,EAAMwuB,UAAYxuB,EAAMwuB,SAAStd,aAAelR,EAAM4uB,eAAiB5uB,EAAM6uB,gBAAkB7uB,EAAM8uB,kBACrG9gB,EAAM+gB,6BACX,GAYP,MAnBAhuD,GAAU2tD,EAA2BhtD,GASrCg3B,GACI7yB,EAAOiqC,MAAM,kBACb7W,EAAW,cAAeod,UAC3BqY,EAA0BrtD,UAAW,sBAAmB,IAC3DqtD,EAA4Bh2B,GACxB7yB,EAAOonC,WAAYzC,SAAU,uBAAwB2M,MAAQ6X,mBAAoB,iFACjF7L,EAAQ,EAAGt9C,EAAOs/C,YAClBhC,EAAQ,EAAGt9C,EAAO0gD,OAAO7tD,EAAQ2Q,oBACjC4vB,EAAW,qBAAsB33B,OAAQuE,EAAOqnC,cACjDwhB,IAELH,EACF71D,GAAQg2D,0BAA4BA,CACpC,IAAIO,GAAqC,SAAUvtD,GAE/C,QAASutD,GAAkCT,EAAUU,GACjDxtD,EAAO/I,KAAKqI,KAAMwtD,GAClBxtD,KAAKkuD,UAAYA,EAUrB,MAbAnuD,GAAUkuD,EAAmCvtD,GAK7CutD,EAAkC5tD,UAAUqjC,UAAY,WACpD1jC,KAAKkuD,UAAUvH,SAAW3mD,KAAKwtD,UAAYxtD,KAAKwtD,SAAStd,aAAelwC,KAAK4tD,eAAiB5tD,KAAK6tD,gBAEvGI,EAAoCv2B,GAChCyqB,EAAQ,EAAGt9C,EAAOs/C,YAClBhC,EAAQ,EAAGt9C,EAAO0gD,OAAO7tD,EAAQ2Q,oBACjC4vB,EAAW,qBAAsB33B,OAAQA,UAC1C2tD,IAELV,EACF71D,GAAQu2D,kCAAoCA,CAC5C,IAAIE,GAA2B,SAAUztD,GAErC,QAASytD,GAAwBX,EAAUU,GACvCxtD,EAAO/I,KAAKqI,KAAMwtD,EAAUU,GAQhC,MAVAnuD,GAAUouD,EAAyBztD,GAInCytD,EAA0Bz2B,GACtB7yB,EAAOonC,WAAYzC,SAAU,WAC7B2Y,EAAQ,EAAGt9C,EAAOs/C,YAClBhC,EAAQ,EAAGt9C,EAAO0gD,OAAO7tD,EAAQ2Q,oBACjC4vB,EAAW,qBAAsB33B,OAAQrD,EAASmxD,mBACnDD,IAELF,EACFv2D,GAAQy2D,wBAA0BA,CAClC,IAAIE,GAA+B,SAAU3tD,GAEzC,QAAS2tD,GAA4Bb,EAAUU,GAC3CxtD,EAAO/I,KAAKqI,KAAMwtD,EAAUU,GAQhC,MAVAnuD,GAAUsuD,EAA6B3tD,GAIvC2tD,EAA8B32B,GAC1B7yB,EAAOonC,WAAYzC,SAAU,gBAC7B2Y,EAAQ,EAAGt9C,EAAOs/C,YAClBhC,EAAQ,EAAGt9C,EAAO0gD,OAAO7tD,EAAQ2Q,oBACjC4vB,EAAW,qBAAsB33B,OAAQhE,EAAakpD,uBACvD6I,IAELJ,EACFv2D,GAAQ22D,4BAA8BA,EACtC32D,EAAQgG,qBAAuB6vD,EAAyBG,EAA2BS,EAAyBE,KAIzGC,eAAe,GAAGC,WAAW,GAAGnoD,gBAAgB,kBAAkBooD,IAAI,SAAS53D,EAAQkB,EAAOJ,GACjG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGiqB,EAAWniD,MAAQA,KAAKmiD,SAAY,SAAUC,EAAYC,GAC1D,MAAO,UAAUzqB,EAAQxnB,GAAOiyC,EAAUzqB,EAAQxnB,EAAKgyC,KAEvDv9C,EAASjO,EAAQ,iBACjB63D,EAAqB73D,EAAQ,6BAC7B+F,EAAmB,WACnB,QAASA,GAAgBmgD,GACrB98C,KAAK88C,SAAWA,EA6BpB,MA3BAngD,GAAgB0D,UAAUquD,YAAc,WACpC,GAAItU,GAAUp6C,KAAK88C,SAAS6R,eAAe3uD,KAAK43B,QAC5C0O,EAAS,SAAU1O,GAAU,MAAOA,GAAOg3B,uBAAyBh3B,EAAOg3B,yBAA2Bh3B,EAAOi3B,iBACjH,IAAIzU,EACA,GAAKp6C,KAAK8uD,MAEL,CACD,GAAI10C,GAAKgC,SAASpc,KAAK8uD,MACvBvT,YAAW,WAAc,MAAOjV,GAAO8T,IAAahgC,OAHpDksB,GAAO8T,IAOnB1iB,GACI7yB,EAAOiqC,MAAM,YACb7W,EAAW,cAAeoI,SAC3B1jC,EAAgB0D,UAAW,aAAU,IACxCq3B,GACI7yB,EAAOiqC,MAAM,SACb7W,EAAW,cAAeoI,SAC3B1jC,EAAgB0D,UAAW,YAAS,IACvC1D,EAAkB+6B,GACd7yB,EAAOonC,WACHzC,SAAU,aAAc2M,MAAQmP,UAAW,mBAE/CnD,EAAQ,EAAGt9C,EAAO0gD,OAAOkJ,EAAmBM,WAC5C92B,EAAW,qBAAsB+2B,YAClCryD,KAGPjF,GAAQiF,gBAAkBA,IAIvByJ,gBAAgB,gBAAgB6oD,4BAA4B,8BAA8BC,IAAI,SAASt4D,EAAQkB,EAAOJ,GACzH,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC;aAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClB63D,EAAqB73D,EAAQ,6BAC7BoO,EAAKpO,EAAQ,QACbiyD,EAAwB,GAAIhkD,GAAOikD,SAASpkD,EAAQ69C,mBACpD39C,YAAaC,EAAOC,WAAW,WAAc,MAAOqqD,KAAoB3M,OAAO,IAE/E4L,EAAmB,WACnB,QAASA,GAAgBgB,GACrB,GAAIpwB,GAAQh/B,IACZA,MAAKovD,UAAYA,EACjBpvD,KAAK2mD,UAAW,EAChB3mD,KAAKqvD,cAAgB,EACrBrvD,KAAKsvD,SAAW,GAAItqD,GAAGk/B,QACvBlkC,KAAKuvD,OAAQ,EACbvvD,KAAKwvD,gBAAkB,EACvBxvD,KAAKyvD,UACLzvD,KAAK0vD,KAAO,EACZ1vD,KAAK2vD,MAAQ,EACb3vD,KAAK4vD,KAAO,EACZ5vD,KAAK6vD,aAAe,GAAIhrD,GAAO0nC,aAC/BvsC,KAAKsvD,SAASnrB,WAAW,KAAMC,UAAU,WAAc,MAAOpF,GAAM8wB,gBAAe,KAyMvF,MAvMA1B,GAAgB/tD,UAAU0vD,KAAO,SAAU/iB,GACnChtC,KAAK2mD,UAEY,IAAjB3Z,EAAMgjB,SACNhwD,KAAKuvD,OAAQ,EACbviB,EAAM8f,mBAGdsB,EAAgB/tD,UAAUqjC,UAAY,WAClC,GAAI1jC,KAAKiwD,YAAa,CAClB,GAAIC,GAAOlwD,KAAKwvD,gBACZ/9C,EAAMzR,KAAKwvD,gBAAkBxvD,KAAKmwD,cAClC1+C,KAAQy+C,GAAQz+C,EAAM,GACtBzR,KAAKowD,kBAIjBhC,EAAgB/tD,UAAUgwD,QAAU,WAChC,IAAIrwD,KAAK2mD,SAAT,CAEA,GAAI2J,GAAUtwD,KAAKuvD,KACnBvvD,MAAKuvD,OAAQ,EACTe,GACAtwD,KAAK8vD,mBAEb1B,EAAgB/tD,UAAU0/C,KAAO,SAAU/S,GACnChtC,KAAK2mD,UAEL3mD,KAAKuvD,QACLvvD,KAAKqvD,cAAgBrvD,KAAKuwD,qBAAqBvjB,GAC/ChtC,KAAKwwD,eAAiBxwD,KAAKovD,UAAUqB,yBAAyB,QAAUzwD,KAAKqvD,cAAgB,aAC7FrvD,KAAKsvD,SAAS3pD,KAAK3F,KAAKqvD,iBAGhCjB,EAAgB/tD,UAAUkwD,qBAAuB,SAAUvjB,GACvD,MAAOt+B,MAAKgG,IAAIhG,KAAKa,IAAIvP,KAAK0wD,cAAc1jB,GAAShtC,KAAK2wD,qBAAqB3wD,KAAKiwD,YAAYpjB,eAAgB7sC,KAAKmwD,gBAAiB,IAE1I/B,EAAgB/tD,UAAUuwD,KAAO,SAAU5jB,GACnChtC,KAAK2mD,UAEY,IAAjB3Z,EAAMgjB,QAAiBhwD,KAAKuvD,QAC5BvvD,KAAKqvD,cAAgBrvD,KAAKuwD,qBAAqBvjB,GAC/ChtC,KAAKwwD,eAAiBxwD,KAAKovD,UAAUqB,yBAAyB,QAAUzwD,KAAKqvD,cAAgB,aAC7FrvD,KAAKuvD,OAAQ,EACbviB,EAAM8f,mBAGdsB,EAAgB/tD,UAAUyvD,eAAiB,SAAUe,OACpC,KAATA,IAAmBA,GAAO,EAC9B,IAAIC,GAAU9wD,KAAKqvD,cAAgBrvD,KAAKmwD,eACpCY,EAAoBD,GAAW9wD,KAAK0vD,KAAO1vD,KAAK4vD,MAChDoB,EAAWD,GAAqB/wD,KAAK2vD,OAAS,GAC9CsB,EAAYviD,KAAKuY,MAAM+pC,EAC3BhxD,MAAK8lD,OAAS9lD,KAAK4vD,KAAO5vD,KAAK2vD,MAAQsB,EACnCJ,IACA7wD,KAAKqvD,cAAgB4B,EAAYjxD,KAAKmwD,iBAAmBnwD,KAAK0vD,KAAO1vD,KAAK4vD,MAAQ5vD,KAAK2vD,OAAS,GAChG3vD,KAAKwwD,eAAiBxwD,KAAKovD,UAAUqB,yBAAyB,QAAUzwD,KAAKqvD,cAAgB,cAEjGrvD,KAAK6vD,aAAa7hB,KAAKhuC,KAAK8lD,SAEhCsI,EAAgB/tD,UAAU+vD,cAAgB,WACtC,GAAIlpC,GAASxY,KAAKgG,IAAIhG,KAAKa,IAAIvP,KAAKgP,MAAOhP,KAAK0vD,MAAO1vD,KAAK4vD,MAAQ5vD,KAAK4vD,KACrEoB,EAAW9pC,GAAUlnB,KAAK2vD,OAAS,GACnCsB,EAAYviD,KAAKuY,MAAM+pC,EAC3BhxD,MAAKqvD,cAAgB4B,EAAYjxD,KAAKmwD,iBAAmBnwD,KAAK0vD,KAAO1vD,KAAK4vD,MAAQ5vD,KAAK2vD,OAAS,GAChG3vD,KAAKwwD,eAAiBxwD,KAAKovD,UAAUqB,yBAAyB,QAAUzwD,KAAKqvD,cAAgB,aAC7FrvD,KAAKkxD,kBAET9C,EAAgB/tD,UAAU6wD,eAAiB,WACvC,GAAIlyB,GAAQh/B,IACZA,MAAKmxD,MAAM5rD,QAAQ,SAAUob,GACzB,GAAIuG,GAASxY,KAAKgG,IAAIhG,KAAKa,IAAIoR,EAAE3R,MAAOgwB,EAAM0wB,MAAO1wB,EAAM4wB,MAAQ5wB,EAAM4wB,KACrEoB,EAAW9pC,GAAU8X,EAAM2wB,OAAS,EACxChvC,GAAE0uC,cAAgB2B,EAAWhyB,EAAMmxB,iBAAmBnxB,EAAM0wB,KAAO1wB,EAAM4wB,MAAQ5wB,EAAM2wB,OAAS,MAGxGrvD,OAAOuF,eAAeuoD,EAAgB/tD,UAAW,SAC7CyF,IAAK,WAAc,MAAO9F,MAAKyvD,QAC/B1pD,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAeuoD,EAAgB/tD,UAAW,cAC7CyF,IAAK,WAAc,MAAO9F,MAAKyvD,OAAOllD,IAAI,SAAU/E,GAAK,MAAOA,GAAEwJ,SAClE6B,IAAK,SAAUqnB,GACPA,IACAl4B,KAAKyvD,OAASv3B,EAAE3tB,IAAI,SAAUoW,GAC1B,OAAS3R,MAAO2R,EAAG0uC,cAAe,KAEtCrvD,KAAKkxD,mBAGbnrD,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAeuoD,EAAgB/tD,UAAW,SAC7CyF,IAAK,WACD,MAAO9F,MAAK8lD,QAEhBj1C,IAAK,SAAUpD,GACXzN,KAAK8lD,OAASr4C,EACdzN,KAAKowD,iBAETrqD,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAeuoD,EAAgB/tD,UAAW,OAC7CyF,IAAK,WACD,MAAO9F,MAAK0vD,MAEhB7+C,IAAK,SAAUqnB,GAEPl4B,KAAK0vD,KADQ,gBAANx3B,GACKjO,WAAWiO,GAGN,MAALA,EAAYA,EAAI,GAEpCnyB,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAeuoD,EAAgB/tD,UAAW,QAC7CyF,IAAK,WACD,MAAO9F,MAAK2vD,OAEhB9+C,IAAK,SAAUqnB,GAEPl4B,KAAK2vD,MADQ,gBAANz3B,GACMjO,WAAWiO,GAGN,MAALA,EAAYA,EAAI,GAErCnyB,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAeuoD,EAAgB/tD,UAAW,OAC7CyF,IAAK,WACD,MAAO9F,MAAK4vD,MAEhB/+C,IAAK,SAAUqnB,GAEPl4B,KAAK4vD,KADQ,gBAAN13B,GACKjO,WAAWiO,GAGN,MAALA,EAAYA,EAAI,GAEpCnyB,YAAY,EACZC,cAAc,IAElBooD,EAAgB/tD,UAAUswD,qBAAuB,SAAUS,GACvD,GAAIlqC,GAASkqC,EAAGC,UAGhB,OAFID,GAAGE,eACHpqC,GAAUlnB,KAAK2wD,qBAAqBS,EAAGE,eACpCpqC,GAEXknC,EAAgB/tD,UAAU8vD,aAAe,WACrC,MAAOnwD,MAAKiwD,YAAYpjB,cAAc0kB,aAE1CnD,EAAgB/tD,UAAUqwD,cAAgB,SAAU1jB,GAAS,MAAOA,GAAMwkB,OAC1E95B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,UAC3B+Y,EAAgB/tD,UAAW,eAAY,IAC1Cq3B,GACI7yB,EAAOg3C,UAAU,aAAeoD,KAAMp6C,EAAOqnC,aAC7CjU,EAAW,cAAepzB,EAAOqnC,aAClCkiB,EAAgB/tD,UAAW,kBAAe,IAC7Cq3B,GACI7yB,EAAOg3C,UAAU,UAAYoD,KAAMp6C,EAAOqnC,aAC1CjU,EAAW,cAAepzB,EAAOqnC,aAClCkiB,EAAgB/tD,UAAW,eAAY,IAC1Cq3B,GACI7yB,EAAOiqC,MAAM,SACb7W,EAAW,cAAe33B,SAC3B8tD,EAAgB/tD,UAAW,aAAc,MAC5Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3B8tD,EAAgB/tD,UAAW,QAAS,MACvCq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3B8tD,EAAgB/tD,UAAW,MAAO,MACrCq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3B8tD,EAAgB/tD,UAAW,OAAQ,MACtCq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3B8tD,EAAgB/tD,UAAW,MAAO,MACrCq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3B8tD,EAAgB/tD,UAAW,mBAAgB,IAC9C+tD,EAAkB12B,GACd7yB,EAAO0kC,WACHC,SAAU,yBAA0BC,SAAU,6hBAA4jB0M,MAAQsb,kBAAmB,8BAEzoBx5B,EAAW,qBAAsBw2B,EAAmBiD,0BACrDtD,KAGP12D,GAAQ02D,gBAAkBA,CAC1B,IAAIuD,GAA2B,SAAUjxD,GAErC,QAASixD,GAAwBvC,GAC7B1uD,EAAO/I,KAAKqI,KAAMovD,GAwBtB,MA1BArvD,GAAU4xD,EAAyBjxD,GAInCixD,EAAwBtxD,UAAUswD,qBAAuB,SAAUS,GAC/D,GAAIlqC,GAASkqC,EAAGQ,SAGhB,OAFIR,GAAGE,eACHpqC,GAAUlnB,KAAK2wD,qBAAqBS,EAAGE,eACpCpqC,GAEXyqC,EAAwBtxD,UAAU8vD,aAAe,WAC7C,MAAOnwD,MAAKiwD,YAAYpjB,cAAcglB,cAE1CF,EAAwBtxD,UAAUqwD,cAAgB,SAAU1jB,GAAS,MAAOA,GAAM8kB,OAClFH,EAAwBtxD,UAAUkwD,qBAAuB,SAAUvjB,GAC/D,MAAOhtC,MAAKmwD,eAAiBzvD,EAAOL,UAAUkwD,qBAAqB54D,KAAKqI,KAAMgtC,IAElF2kB,EAA0Bj6B,GACtB7yB,EAAO0kC,WACHC,SAAU,mBAAoBC,SAAU,4jBAA6lB0M,MAAQsb,kBAAmB,4BAA8BrO,YACtrB3+C,QAAS2pD,EACTxpD,YAAaC,EAAOC,WAAW,WAAc,MAAO6sD,SAGhE15B,EAAW,qBAAsBw2B,EAAmBiD,0BACrDC,IAELvD,EACF12D,GAAQi6D,wBAA0BA,CAClC,IAAIxC,GAAkB,WAClB,QAASA,GAAe4C,GACpB/xD,KAAK+xD,QAAUA,EACf/xD,KAAK2iD,SAAW,SAAU4E,KAC1BvnD,KAAK4iD,UAAY,aAoBrB,MAlBAuM,GAAe9uD,UAAU2xD,SAAW,WAChChyD,KAAK2iD,SAAS3iD,KAAK+xD,QAAQ/iD,OAC3BhP,KAAK4iD,aAETuM,EAAe9uD,UAAUwiD,WAAa,SAAU7zC,GAC5ChP,KAAK+xD,QAAQ/iD,MAAQA,GAEzBmgD,EAAe9uD,UAAU6iD,iBAAmB,SAAUz4C,GAClDzK,KAAK2iD,SAAWl4C,GAEpB0kD,EAAe9uD,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GAC9E0kD,EAAiBz3B,GACb7yB,EAAOonC,WACHzC,SAAU,sCAAuC2M,MAAQ8b,YAAa,cAAeC,iBAAkB,cACvG9O,WAAYyF,KAEhB5wB,EAAW,qBAAsBm2B,KAClCe,KAGPz3D,GAAQy3D,eAAiBA,EACzBz3D,EAAQwF,QAAUkxD,EAAiBe,EAAgBwC,KAIhDvrD,gBAAgB,gBAAgBC,iBAAiB,iBAAiB4oD,4BAA4B,4BAA4B3oD,KAAO,SAAS6rD,IAAI,SAASv7D,EAAQkB,EAAOJ,GACzK,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGiqB,EAAWniD,MAAQA,KAAKmiD,SAAY,SAAUC,EAAYC,GAC1D,MAAO,UAAUzqB,EAAQxnB,GAAOiyC,EAAUzqB,EAAQxnB,EAAKgyC,KAEvDv9C,EAASjO,EAAQ,iBACjByqD,EAAwBzqD,EAAQ,uBAChC8E,EAAO,WACP,QAASA,KACLsE,KAAKoyD,SAAU,EACfpyD,KAAKqyD,WAAa,GAAIxtD,GAAO0nC,cAAa,GAC1CvsC,KAAKsyD,UAAY,GAAIztD,GAAO0nC,cAAa,GAqD7C,MAnDAjsC,QAAOuF,eAAenK,EAAI2E,UAAW,aACjCyF,IAAK,WAAc,MAAO9F,MAAKuyD,YAC/B1hD,IAAK,SAAUqnB,GACX,GAAIioB,GAAMngD,KAAKuyD,UACfvyD,MAAKuyD,WAAar6B,EACZioB,IAAQjoB,GACVl4B,KAAKsyD,UAAUtkB,KAAKhuC,OAE5B+F,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAenK,EAAI2E,UAAW,UACjCyF,IAAK,WAAc,MAAO9F,MAAKoyD,SAC/BvhD,IAAK,SAAU7B,GACXhP,KAAKoyD,QAAUpjD,EACXA,GACAhP,KAAKqyD,WAAWrkB,KAAKhuC,OAE7B+F,YAAY,EACZC,cAAc,IAElB0xB,GACI7yB,EAAOiqC,MAAM,YACb7W,EAAW,cAAeoI,SAC3B3kC,EAAI2E,UAAW,YAAS,IAC3Bq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,UAC3B35C,EAAI2E,UAAW,eAAY,IAC9Bq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,SAC1Bpd,EAAW,qBAAsBod,WAClC35C,EAAI2E,UAAW,YAAa,MAC/Bq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,SAC1Bpd,EAAW,qBAAsBod,WAClC35C,EAAI2E,UAAW,SAAU,MAC5Bq3B,GACI7yB,EAAOi3C,gBAAgBuF,EAAsBI,gBAC7CxpB,EAAW,cAAepzB,EAAOE,YAClCrJ,EAAI2E,UAAW,aAAU,IAC5B3E,EAAMg8B,GACF7yB,EAAO0kC,WACHC,SAAU,MACVC,SAAU,+CACV0M,MAAQC,WAAY,aAExBne,EAAW,yBACZv8B,KAGPhE,GAAQgE,IAAMA,CACd,IAAIyC,GAAmB,WACnB,QAASA,GAAgBq0D,EAAKC,GACtBD,GACAA,EAAIH,WAAWjuB,UAAU,SAAUvtC,GAAK,MAAO47D,GAAeC,OAASD,EAAeC,MAAMC,WAOpG,MALAx0D,GAAkBu5B,GACd7yB,EAAOonC,WAAYzC,SAAU,UAC7B2Y,EAAQ,EAAGt9C,EAAOs/C,YAClBlsB,EAAW,qBAAsBv8B,EAAK2lD,EAAsBI,kBAC7DtjD,KAGPzG,GAAQyG,gBAAkBA,IAIvBiI,gBAAgB,gBAAgBvG,sBAAsB,wBAAwB+yD,IAAI,SAASh8D,EAAQkB,EAAOJ,GAC7G,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBuE,EAAQvE,EAAQ,SAChBoO,EAAKpO,EAAQ,QACbyE,EAAe,WACf,QAASA,KACL2E,KAAK6yD,aAAe,GAAIhuD,GAAO0nC,aAC/BvsC,KAAK8yD,aAAc,EA2DvB,MAzDAz3D,GAAYgF,UAAU43C,mBAAqB,WACvC,GAAIjZ,GAAQh/B,KACR+yD,EAAa/yD,KAAKgzD,KAAK/sB,OAAO,SAAUusB,GAAO,MAAOA,GAAI1tB,SAC1DmuB,EAAQjzD,KAAKgzD,KAAK/sB,OAAO,SAAUusB,GAAO,OAAQA,EAAIU,YAAcV,EAAI7L,WAAa,EAC/D,KAAtBoM,EAAWn7D,QAAkBq7D,GAC7BjzD,KAAKmzD,UAAUF,GAEnBjzD,KAAK8yD,aAAc,CACnB,IAAIx9C,GAAQtV,KAAKgzD,KAAK1pC,SACtBtkB,GAAGu6B,WAAWhyB,KAAK+H,GAAOgqB,QAAQ,SAAUroC,GAAK,MAAOA,GAAEq7D,YAAcluB,UAAU,SAAUouB,KACnFxzB,EAAMo0B,YAAc99C,EAAMoP,QAAQ8tC,GAAOl9C,EAAMoP,QAAQsa,EAAMo0B,cAC9Dp0B,EAAMm0B,UAAUX,MAI5Bn3D,EAAYgF,UAAU8yD,UAAY,SAAUX,GACxCxyD,KAAKgzD,KAAK1pC,UAAU/jB,QAAQ,SAAUitD,GAAO,MAAOA,GAAI1tB,QAAS,IACjE0tB,EAAI1tB,QAAS,EACb9kC,KAAKozD,WAAaZ,EAClBxyD,KAAK6yD,aAAa7kB,KAAK,GAAKwkB,EAAI3xD,QAEpCxF,EAAYgF,UAAUqjC,UAAY,WAC9B,GAAI1E,GAAQh/B,IACZ,IAAKA,KAAK8yD,YAEV,GAAI9yD,KAAKozD,aAAepzD,KAAKozD,WAAWF,WAAalzD,KAAKozD,WAAWzM,UAAW,CAC5E,GAAI0M,GAAMrzD,KAAKgzD,KAAKzoD,IAAI,SAAU62B,EAAMnS,GAAS,OAAUmS,KAAMA,EAAMnS,MAAOA,KAC1EqkC,EAAiBD,EAAI70B,KAAK,SAAU7d,GAAK,MAAOA,GAAEygB,OAASpC,EAAMo0B,aAAenkC,MAChFtpB,EAAO0tD,EAAI70B,KAAK,SAAUvnC,GAAK,OAAQA,EAAEmqC,KAAKulB,WAAa1vD,EAAEmqC,KAAK8xB,WAAaj8D,EAAEg4B,MAAQqkC,KACzFD,EAAI70B,KAAK,SAAUvnC,GAAK,OAAQA,EAAEmqC,KAAKulB,WAAa1vD,EAAEmqC,KAAK8xB,WAC3DvtD,GACA3F,KAAKmzD,UAAUxtD,EAAKy7B,MAEpBphC,KAAKgzD,KAAK1pC,UAAU/jB,QAAQ,SAAUitD,GAAO,MAAOA,GAAI1tB,QAAS,QAEpE,KAAK9kC,KAAKozD,WAAY,CACvB,GAAIH,GAAQjzD,KAAKgzD,KAAK/sB,OAAO,SAAUusB,GAAO,OAAQA,EAAIU,YAAcV,EAAI7L,WAAa,EACnFsM,IACFjzD,KAAKmzD,UAAUF,KAI3Bv7B,GACI7yB,EAAOi3C,gBAAgB3gD,EAAMO,KAC7Bu8B,EAAW,cAAepzB,EAAOE,YAClC1J,EAAYgF,UAAW,WAAQ,IAClCq3B,GACI7yB,EAAOmqC,SACP/W,EAAW,cAAe33B,SAC3BjF,EAAYgF,UAAW,mBAAgB,IAC1ChF,EAAcq8B,GACV7yB,EAAO0kC,WACHC,SAAU,OACVC,SAAU,ofAEdxR,EAAW,yBACZ58B,KAGP3D,GAAQ2D,YAAcA,IAInBk4D,QAAQ,GAAGntD,gBAAgB,gBAAgBE,KAAO,SAASktD,IAAI,SAAS58D,EAAQkB,EAAOJ,GAC1F,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB68D,GAAoB,SAAU,QAAS,SAAU,YACjD71D,EAAU,WACV,QAASA,GAAO6kD,EAAWC,GACvB1iD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK0zD,QAAS,EA4ClB,MA1CA91D,GAAOyC,UAAU2iD,QAAU,SAAUhW,GACjC,GAAIA,EAAMpV,SAAWoV,EAAM2mB,eAClB3zD,KAAK4zD,iBAAiB5mB,EAAMpV,OAAQoV,EAAM2mB,eADnD,CAIA,GAAIvC,GAAKpxD,KAAK6zD,WAAa7zD,KAAK0iD,YAAY7V,aAC5C7sC,MAAK0zD,QAAUtC,EAAGxiB,UAAUC,SAAS,QACrC7uC,KAAKyiD,UAAU5U,gBAAgBujB,EAAI,OAAQpxD,KAAK0zD,QAChD1mB,EAAMC,oBAEVrvC,EAAOyC,UAAUuzD,iBAAmB,SAAUrI,EAASuI,GACnD,QAAIL,EAAiB/uC,QAAQ6mC,EAAQpd,QAAQn7B,gBAAkB,KAE3D8gD,IAAUvI,KAETA,KAEDA,EAAQwI,MAAMC,iBAGPh0D,KAAK4zD,iBAAiBrI,EAAQd,cAAeqJ,MAE5Dp8B,GACI7yB,EAAOiqC,MAAM,aACb7W,EAAW,cAAepzB,EAAOqnC,aAClCtuC,EAAOyC,UAAW,gBAAa,IAClCq3B,GACI7yB,EAAOiqC,MAAM,cACb7W,EAAW,cAAe33B,SAC3B1C,EAAOyC,UAAW,iBAAc,IACnCq3B,GACI7yB,EAAOm3C,aAAa,SAAU,WAC9B/jB,EAAW,cAAernB,UAC1BqnB,EAAW,qBAAsBg8B,aACjCh8B,EAAW,wBAAqB,KACjCr6B,EAAOyC,UAAW,UAAW,MAChCzC,EAAS85B,GACL7yB,EAAOonC,WACHzC,SAAU,6BAEdvR,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1DtuC,KAGPlG,GAAQkG,OAASA,IAIdwI,gBAAgB,kBAAkB8tD,IAAI,SAASt9D,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjByG,EAAiBzG,EAAQ,kBACzBoxC,EAAapxC,EAAQ,kBACrBu9D,GAAoBC,MAAO,IAAKC,WAAY,EAAGC,cAAe,GAC9D51B,EAAO9nC,EAAQ,QACf29D,EAAoB,WACpB,QAASA,GAAiBC,EAAWC,EAAUte,GAC3C,GAAInX,GAAQh/B,IACZA,MAAKw0D,UAAYA,EACjBx0D,KAAKm2C,KAAOA,EACZse,EAASC,iBAAiBC,GAAkB9W,KAAK,SAAU5mD,GAAK,MAAO+nC,GAAM51B,QAAUnS,IAiD3F,MA/CAs9D,GAAiBl0D,UAAUqmD,KAAO,SAAUkO,GACxC,GAAI51B,GAAQh/B,IAEZ,QADc,KAAV40D,IAAoBA,GAAQ,GAC3B50D,KAAK60D,SAAY70D,KAAKoJ,UAEvBwrD,IACA50D,KAAK80D,QAAS,GACdF,GACAL,EAAiBQ,gBAAgB9uB,OAAO,SAAU+uB,GAAO,MAAOA,KAAQh2B,IAAUK,KAAK,GAAG+E,UAAU,WAChGpF,EAAM4O,MAAK,MAGf5tC,KAAKi1D,UAAT,CAEAj1D,KAAKk1D,WAAal1D,KAAKw0D,UAAUW,gBAAgBn1D,KAAKoJ,QACtD,IAAIgsD,GAAW90D,OAAOgjC,UAAW6wB,EAAiBn0D,KAAKo1D,aACvDp1D,MAAKk1D,WAAWtN,SAASlB,KAAK1mD,KAAK60D,QAAS70D,KAAKm2C,KAAMif,GACvDp1D,KAAKi1D,UAAW,EAChBV,EAAiBQ,gBAAgBpvD,KAAK3F,QAE1Cu0D,EAAiBl0D,UAAUutC,KAAO,SAAUynB,GACxC,GAAIr2B,GAAQh/B,SACI,KAAZq1D,IAAsBA,GAAU,GAC/Br1D,KAAKi1D,WAENj1D,KAAK80D,SAAWO,EAChB9Z,WAAW,WAAcvc,EAAM81B,QAAS,EAAO91B,EAAM4O,QAAW,MAGhE5tC,KAAKk1D,WAAWI,UAChBt1D,KAAKi1D,UAAW,EAChBj1D,KAAK80D,QAAS,KAGtBP,EAAiBQ,gBAAkB,GAAIr2B,GAAKwF,QAC5CxM,GACI7yB,EAAOiqC,MAAM,WACb7W,EAAW,cAAe33B,SAC3Bi0D,EAAiBl0D,UAAW,cAAW,IAC1Cq3B,GACI7yB,EAAOiqC,MAAM,oBACb7W,EAAW,cAAe33B,SAC3Bi0D,EAAiBl0D,UAAW,eAAY,IAC3Ck0D,EAAmB78B,GACf7yB,EAAOonC,WAAYzC,SAAU,YAAa2M,MAAQof,eAAgB,SAAUC,eAAgB,SAAUlQ,UAAW,aAAcmQ,kBAAmB,aAAcC,iBAAkB,aAClLz9B,EAAW,qBAAsBpzB,EAAO8wD,iBAAkB9wD,EAAO+wD,kBAAmB/wD,EAAOqnC,cAC5FqoB,KAGP78D,GAAQ68D,iBAAmBA,EAC3B78D,EAAQ8F,SAAW+2D,EAAkBl3D,EAAeC,sBACpD,IAAIq3D,GAAoB,WACpB,QAASA,GAAiBzsD,GACtBlI,KAAKkI,OAASA,EACdlI,KAAK61D,UAAaC,QAAS,KA+E/B,MA7EAnB,GAAiBt0D,UAAUqmD,KAAO,SAAUmO,EAAS1e,EAAMif,GAChC,gBAAZP,IACP70D,KAAK+1D,YAAclB,EACnB70D,KAAKk1D,WAAa,MAEbL,YAAmBhwD,GAAOq6C,cAC/Bl/C,KAAK+1D,YAAc,KACnB/1D,KAAKk1D,WAAal1D,KAAKw0D,UAAUwB,mBAAmBnB,IAExD70D,KAAKo1D,SAAWA,EAChBp1D,KAAKm2C,KAAOA,GAEhBwe,EAAiBt0D,UAAUiF,YAAc,WACjCtF,KAAKk1D,YAAcl1D,KAAKk1D,WAAWI,SACnCt1D,KAAKk1D,WAAWI,WAExBX,EAAiBt0D,UAAUqF,gBAAkB,WAEzC,QAASuwD,GAAYt1C,GACjB,MAAS,OAALA,EACO,KACJA,EAAI,KAJf,GAAIqe,GAAQh/B,IAOZ,IAAIA,KAAKm2C,MAAQn2C,KAAKo6C,QAAS,CAC3B,GAAI8b,GAAWl2D,KAAKm2C,KAAKtJ,cAAc+T,wBACnCuV,GAAanb,MAAOh7C,KAAKkI,OAAO2kC,cAAciQ,SAASC,gBAAgBpC,YAAakC,OAAQ78C,KAAKkI,OAAO2kC,cAAciQ,SAASC,gBAAgBC,cAC/IoZ,GAAgBpb,MAAOh7C,KAAKo6C,QAAQvN,cAAc0kB,YAAa1U,OAAQ78C,KAAKo6C,QAAQvN,cAAcglB,cAClGwE,EAAOD,EAAYvZ,OAASuZ,EAAYpb,KAC5C,IAAIqb,EAAO,EAAG,CACV,GAAIC,IAAsBtb,MAAOtsC,KAAK6nD,KAAKF,EAAOr2D,KAAKo1D,SAAShB,OAASp0D,KAAKo1D,SAAShB,MAAOvX,OAAQnuC,KAAK6nD,KAAKF,EAAOr2D,KAAKo1D,SAAShB,QACjIx8B,GAAWwpB,IAAK8U,EAAS9U,IAAM8U,EAASrZ,OAAS78C,KAAKo1D,SAASf,WAAYlT,KAAM+U,EAAS/U,KAAMqV,OAAQ,KACxGN,GAAS/U,KAAOgV,EAASnb,MAAQ,IACjCpjB,EAAOupB,KAAO+U,EAAS/U,KAAO+U,EAASlb,MAAQsb,EAAkBtb,OACjEmb,EAAStZ,QAAUyZ,EAAkBzZ,OAASjlB,EAAOwpB,MAAQkV,EAAkBzZ,OAAS,IACxFjlB,EAAO4+B,OAASL,EAAStZ,OAASqZ,EAAS9U,IAAMphD,KAAKo1D,SAASd,cAC/D18B,EAAOwpB,IAAM,MAEbkV,EAAkBtb,OAAS,MAC3Bsb,EAAkBtb,MAAQ,KAE9Bh7C,KAAK61D,UACDC,QAAS,IAAM1U,IAAK6U,EAAYr+B,EAAOwpB,KAAMD,KAAM8U,EAAYr+B,EAAOupB,MAAOqV,OAAQP,EAAYr+B,EAAO4+B,QAASxb,MAAOib,EAAYK,EAAkBtb,OACtJyb,UAAW,OAEf3mD,QAAQoxC,IAAIlhD,KAAK61D,UACjBta,WAAW,WACPvc,EAAM62B,SAASC,QAAU,GAC1B,OAIfnB,EAAiBt0D,UAAUq2D,kBAAoB,SAAUtF,GACrD,GAAIlqC,IAAWk6B,IAAKgQ,EAAGQ,UAAWzQ,KAAMiQ,EAAGC,WAAYsF,aAAcvF,EAAGpU,aAAc4Z,YAAaxF,EAAGzW,YACtG,IAAIyW,EAAGE,aAAc,CACjB,GAAIuF,GAAW72D,KAAK02D,kBAAkBtF,EAAGE,aACzCpqC,GAAOi6B,MAAQ0V,EAAS1V,KACxBj6B,EAAOk6B,KAAOyV,EAASzV,IACvBl6B,EAAOyvC,aAAeE,EAASF,aAC/BzvC,EAAO0vC,YAAcC,EAASD,YAElC,MAAO1vC,IAEXwQ,GACI7yB,EAAOg3C,UAAU,UAAYoD,KAAMp6C,EAAO8wD,mBAC1C19B,EAAW,cAAepzB,EAAO8wD,mBAClChB,EAAiBt0D,UAAW,gBAAa,IAC5Cq3B,GACI7yB,EAAOg3C,UAAU,WAAaoD,KAAMp6C,EAAOqnC,aAC3CjU,EAAW,cAAepzB,EAAOqnC,aAClCyoB,EAAiBt0D,UAAW,cAAW,IAC1Cs0D,EAAmBj9B,GACf7yB,EAAO0kC,WACHE,SAAU,2JAAkKD,SAAU,YAE1LvR,EAAW,qBAAsB+P,EAAW//B,aAC7C0sD,QAMJ9iB,iBAAiB,oBAAoB0O,iBAAiB,GAAGn6C,gBAAgB,gBAAgBE,KAAO,SAASwwD,IAAI,SAASlgE,EAAQkB,EAAOJ,GACxI,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClBiyD,EAAwB,GAAIhkD,GAAOikD,SAASpkD,EAAQ69C,mBAAqB39C,YAAaC,EAAOC,WAAW,WAAc,MAAO9I,KAAkBwmD,OAAO,IACtJxmD,EAAgB,WAChB,QAASA,GAAaymD,EAAWC,GAC7B1iD,KAAKyiD,UAAYA,EACjBziD,KAAK0iD,YAAcA,EACnB1iD,KAAK2iD,SAAW,SAAU4E,KAC1BvnD,KAAK4iD,UAAY,aA8BrB,MA5BA5mD,GAAaqE,UAAU6kD,QAAU,SAAUl2C,GACvC,GAAI+nD,GAAU/nD,CACVA,KACA+nD,EAAU/nD,EAAM0vC,QAChB1vC,IAAU+nD,GACV/2D,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAASkqB,GAC/E/2D,KAAK2iD,SAASoU,GACd/2D,KAAK4iD,aAET5mD,EAAaqE,UAAUwiD,WAAa,SAAU7zC,GAEtCA,EADAA,EACQA,EAAM0vC,OAEN,GACZ1+C,KAAKyiD,UAAUK,mBAAmB9iD,KAAK0iD,YAAY7V,cAAe,QAAS79B,IAE/EhT,EAAaqE,UAAU6iD,iBAAmB,SAAUz4C,GAChDzK,KAAK2iD,SAAWl4C,GAEpBzO,EAAaqE,UAAU8iD,kBAAoB,SAAU14C,GAAMzK,KAAK4iD,UAAYn4C,GAC5EzO,EAAe07B,GACX7yB,EAAOonC,WACHzC,SAAU,gDACV2M,MAAQkP,SAAU,+BAAgC2R,UAAW,iCAC7D5T,WAAYyF,KAEhB5wB,EAAW,qBAAsBpzB,EAAOsqC,SAAUtqC,EAAOqnC,cAC1DlwC,KAGPtE,GAAQsE,aAAeA,IAIpBoK,gBAAgB,gBAAgBC,iBAAiB,mBAAmB4wD,IAAI,SAASrgE,EAAQkB,EAAOJ,GACnG,YAiCA,SAASw/D,GAAUloD,GACf,MAAqB,gBAAVA,GACAib,WAAWjb,GAEXA,EApCf,GAAI0oB,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClB2S,EAAS3S,EAAQ,iBACjBugE,EAA6B,WAC7B,QAASA,MAgBT,MAdAA,GAA0B92D,UAAU+2D,SAAW,SAAUhgE,GACrD,MAAO4I,MAAKw6B,QAAUx6B,KAAKw6B,OAAOpjC,IAEtCsgC,GACI7yB,EAAOiqC,MAAM,kBACb7W,EAAW,cAAernB,WAC3BumD,EAA0B92D,UAAW,aAAU,IAClD82D,EAA4Bz/B,GACxB7yB,EAAOonC,WACHzC,SAAU,mBACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAauyD,EAA2B3U,OAAO,MAEjGvqB,EAAW,yBACZk/B,KAGPz/D,GAAQy/D,0BAA4BA,CAOpC,IAAIG,GAA8B,WAC9B,QAASA,MAkCT,MAhCAA,GAA2Bj3D,UAAUw6C,YAAc,WACzC76C,KAAKu3D,SACPv3D,KAAKu3D,QAAQC,0BAErBF,EAA2Bj3D,UAAUo3D,eAAiB,SAAUzoD,GAC5D,OAAKhP,KAAK03D,iBAAiBnoD,KAAqC,IAA9BvP,KAAK03D,iBAAiBnoD,MAAcP,EAAQhP,KAAK03D,iBAAiBnoD,KACvFooD,SAAS,IACjB33D,KAAK03D,iBAAiBhjD,KAAqC,IAA9B1U,KAAK03D,iBAAiBhjD,MAAc1F,EAAQhP,KAAK03D,iBAAiBhjD,KACvFkjD,SAAS,OAG1BN,EAA2Bj3D,UAAU+2D,SAAW,SAAUhgE,GACtD4I,KAAKu3D,QAAUngE,CACf,IAAIygE,GAAa73D,KAAK03D,iBAAiBG,WACnCC,IAAa1gE,EAAE4X,OAAqB,IAAZ5X,EAAE4X,KAC9B,OAAI6oD,KAAeC,GACNC,cAAc,GACtBF,GAAeC,EAEb93D,KAAKy3D,eAAergE,EAAE4X,WAEjC0oB,GACI7yB,EAAOiqC,MAAM,uBACb7W,EAAW,cAAe33B,SAC3Bg3D,EAA2Bj3D,UAAW,uBAAoB,IAC7Di3D,EAA6B5/B,GACzB7yB,EAAOonC,WACHzC,SAAU,wBACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAa0yD,EAA4B9U,OAAO,MAElGvqB,EAAW,yBACZq/B,KAGP5/D,GAAQ4/D,2BAA6BA,CACrC,IAAIU,GAAgC,WAChC,QAASA,MAuBT,MArBAA,GAA6B33D,UAAUw6C,YAAc,WAC3C76C,KAAKu3D,SACPv3D,KAAKu3D,QAAQC,0BAErBQ,EAA6B33D,UAAU+2D,SAAW,SAAUhgE,GAExD,MADA4I,MAAKu3D,QAAUngE,GACV4I,KAAK63D,YAAiBzgE,EAAE4X,OAAqB,IAAZ5X,EAAE4X,UAE/B+oD,cAAc,IAE3BrgC,GACI7yB,EAAOiqC,MAAM,wBACb7W,EAAW,cAAeod,UAC3B2iB,EAA6B33D,UAAW,iBAAc,IACzD23D,EAA+BtgC,GAC3B7yB,EAAOonC,WACHzC,SAAU,yBACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAaozD,EAA8BxV,OAAO,MAEpGvqB,EAAW,yBACZ+/B,KAGPtgE,GAAQsgE,6BAA+BA,CACvC,IAAIC,GAAyB,WACzB,QAASA,MAkCT,MAhCAA,GAAsB53D,UAAU+2D,SAAW,SAAUhgE,GACjD,GAAqB,MAAjB4I,KAAKk4D,UAA8C,MAA1Bl4D,KAAKm4D,kBAC9B,QACJ,IAAIC,GAAwC,MAA1Bp4D,KAAKm4D,kBACnB9mC,EAAQ6lC,EAAUkB,EAAcp4D,KAAKm4D,kBAAoBn4D,KAAKk4D,UAC9DlpD,EAAQkoD,EAAU9/D,EAAE4X,MACxB,OAAIA,GAAQqiB,GAEJ9hB,KAAS8hB,MAAOA,EAAOriB,MAAOA,IAElCA,IAAUqiB,GAAS+mC,GAEfC,cAAkBhnC,MAAOA,EAAOriB,MAAOA,QAKnD0oB,GACI7yB,EAAOiqC,MAAM,OACb7W,EAAW,cAAe33B,SAC3B23D,EAAsB53D,UAAW,eAAY,IAChDq3B,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAe33B,SAC3B23D,EAAsB53D,UAAW,wBAAqB,IACzD43D,EAAwBvgC,GACpB7yB,EAAOonC,WACHzC,SAAU,yDACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAaqzD,EAAuBzV,OAAO,MAE7FvqB,EAAW,yBACZggC,KAGPvgE,GAAQugE,sBAAwBA,CAChC,IAAIK,GAAyB,WACzB,QAASA,MAkCT,MAhCAA,GAAsBj4D,UAAU+2D,SAAW,SAAUhgE,GACjD,GAAqB,MAAjB4I,KAAKu4D,UAA8C,MAA1Bv4D,KAAKw4D,kBAC9B,QACJ,IAAIJ,GAAwC,MAA1Bp4D,KAAKw4D,kBACnBnnC,EAAQ6lC,EAAUkB,EAAcp4D,KAAKw4D,kBAAoBx4D,KAAKu4D,UAC9DvpD,EAAQkoD,EAAU9/D,EAAE4X,MACxB,OAAIA,GAAQqiB,GAEJ3c,KAAS2c,MAAOA,EAAOriB,MAAOA,IAElCA,IAAUqiB,GAAS+mC,GAEfK,cAAkBpnC,MAAOA,EAAOriB,MAAOA,QAKnD0oB,GACI7yB,EAAOiqC,MAAM,OACb7W,EAAW,cAAe33B,SAC3Bg4D,EAAsBj4D,UAAW,eAAY,IAChDq3B,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAe33B,SAC3Bg4D,EAAsBj4D,UAAW,wBAAqB,IACzDi4D,EAAwB5gC,GACpB7yB,EAAOonC,WACHzC,SAAU,yDACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAa0zD,EAAuB9V,OAAO,MAE7FvqB,EAAW,yBACZqgC,KAGP5gE,GAAQ4gE,sBAAwBA,CAChC,IAAII,GAA6B,WAC7B,QAASA,MAkCT,MAhCAA,GAA0Br4D,UAAU+2D,SAAW,SAAUhgE,GACrD,GAAqB,MAAjB4I,KAAKu4D,UAA8C,MAA1Bv4D,KAAKw4D,kBAC9B,QACJ,IAAIJ,GAAwC,MAA1Bp4D,KAAKw4D,kBACnBnnC,EAAQ9nB,EAAO6B,IAAIgtD,EAAcp4D,KAAKw4D,kBAAoBx4D,KAAKu4D,UAC/DvpD,EAAQzF,EAAO6B,IAAIhU,EAAE4X,MACzB,OAAIA,GAAMob,QAAQiH,IAEV3c,KAAS2c,MAAOA,EAAOriB,MAAOA,IAElCA,EAAMwc,OAAO6F,IAAU+mC,GAEnBK,cAAkBpnC,MAAOA,EAAOriB,MAAOA,QAKnD0oB,GACI7yB,EAAOiqC,MAAM,OACb7W,EAAW,cAAe33B,SAC3Bo4D,EAA0Br4D,UAAW,eAAY,IACpDq3B,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAe33B,SAC3Bo4D,EAA0Br4D,UAAW,wBAAqB,IAC7Dq4D,EAA4BhhC,GACxB7yB,EAAOonC,WACHzC,SAAU,6CACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAa8zD,EAA2BlW,OAAO,MAEjGvqB,EAAW,yBACZygC,KAGPhhE,GAAQghE,0BAA4BA,CACpC,IAAIC,GAA6B,WAC7B,QAASA,MAkCT,MAhCAA,GAA0Bt4D,UAAU+2D,SAAW,SAAUhgE,GACrD,GAAqB,MAAjB4I,KAAKk4D,UAA8C,MAA1Bl4D,KAAKm4D,kBAC9B,QACJ,IAAIC,GAAwC,MAA1Bp4D,KAAKm4D,kBACnB9mC,EAAQ9nB,EAAO6B,IAAIgtD,EAAcp4D,KAAKm4D,kBAAoBn4D,KAAKk4D,UAC/DlpD,EAAQzF,EAAO6B,IAAIhU,EAAE4X,MACzB,OAAIA,GAAMqb,SAASgH,IAEX9hB,KAAS8hB,MAAOA,EAAOriB,MAAOA,IAElCA,EAAMwc,OAAO6F,IAAU+mC,GAEnBC,cAAkBhnC,MAAOA,EAAOriB,MAAOA,QAKnD0oB,GACI7yB,EAAOiqC,MAAM,OACb7W,EAAW,cAAe33B,SAC3Bq4D,EAA0Bt4D,UAAW,eAAY,IACpDq3B,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAe33B,SAC3Bq4D,EAA0Bt4D,UAAW,wBAAqB,IAC7Ds4D,EAA4BjhC,GACxB7yB,EAAOonC,WACHzC,SAAU,6CACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAa+zD,EAA2BnW,OAAO,MAEjGvqB,EAAW,yBACZ0gC,KAGPjhE,GAAQihE,0BAA4BA,CACpC,IAAIC,GAA8B,WAC9B,QAASA,MAiBT,MAfAA,GAA2Bv4D,UAAU+2D,SAAW,SAAUhgE,GACtD,MAAIA,GAAE4X,OAA4B,gBAAZ5X,GAAE4X,QACf5X,EAAE4X,MAAM0vC,QACAma,aAAa,OAKlCD,EAA6BlhC,GACzB7yB,EAAOonC,WACHzC,SAAU,wBACV4Z,YAAc3+C,QAASC,EAAQ2yD,cAAezyD,YAAag0D,EAA4BpW,OAAO,MAElGvqB,EAAW,yBACZ2gC,KAGPlhE,GAAQkhE,2BAA6BA,EACrClhE,EAAQ+E,YAAc06D,EAA2BmB,EAAuBL,EAAuBW,EAA4BD,EAA2BD,KAInJtyD,gBAAgB,gBAAgBC,iBAAiB,iBAAiB4hD,gBAAgB,IAAI6Q,IAAI,SAASliE,EAAQkB,EAAOJ,GACrH,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBgyD,EAAWhyD,EAAQ,mBACnBmiE,EAAcniE,EAAQ,2BACtBgM,EAAkB,WAClB,QAASA,GAAe+yC,GACpB31C,KAAK21C,aAAeA,EACpB31C,KAAKg5D,MAAQ,GAAIpQ,GAASqQ,SAsB9B,MApBAr2D,GAAevC,UAAU6pD,UAAY,SAAUl7C,EAAOkqD,GAE5ClqD,GAA0B,gBAAVA,KACd,oDAAoD8G,KAAK9G,KACzDA,GAAS,KACbA,EAAQ,GAAI1E,MAAK0E,GAErB,KACI,MAAOhP,MAAKg5D,MAAM9O,UAAUl7C,EAAOkqD,GAEvC,MAAOpiE,GACH,KAAMA,KAGd8L,EAAiB80B,GACb7yB,EAAOs0D,MACH1oD,KAAM,eAEVwnB,EAAW,qBAAsB8gC,EAAYhxD,4BAC9CnF,KAGPlL,GAAQkL,eAAiBA,IAItB2sC,0BAA0B,GAAGwb,kBAAkB,kBAAkB3kD,gBAAgB,kBAAkBgzD,IAAI,SAASxiE,EAAQkB,EAAOJ,GAClI,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkR,EAAgBlR,EAAQ,2BACxBoM,EAAwB,WACxB,QAASA,GAAqBq2D,GAC1Br5D,KAAKq5D,YAAcA,EAwBvB,MAtBAr2D,GAAqB3C,UAAU6pD,UAAY,SAAUl7C,EAAOsqD,GACxD,GAAc,cAAVtqD,GAAmC,OAAVA,EAEzB,MADAhP,MAAKu5D,cAAgBv5D,KAAKq5D,YAAYh5C,YAC/B,GAAIm5C,MAAKC,aAAaz5D,KAAKu5D,cAAev5D,KAAK05D,kBAAkBJ,IAAUtuD,OAAOgE,EAAQ,MAGzGhM,EAAqB3C,UAAUq5D,kBAAoB,SAAUJ,GACzD,OAAgBvsD,KAAZusD,EAAJ,CAEA,GAAIK,GAAiBL,EAAQ15C,MAAM,IAKnC,QAHIm0C,MAAO,UACPjK,sBAAuB6P,EAAe,GAAI5P,sBAAuB4P,EAAe,MAIxF32D,EAAuB00B,GACnB7yB,EAAOs0D,MACH1oD,KAAM,qBAEVwnB,EAAW,qBAAsBnwB,EAAcC,4BAChD/E,KAGPtL,GAAQsL,qBAAuBA,IAI5BusC,0BAA0B,GAAGnpC,gBAAgB,kBAAkBwzD,IAAI,SAAShjE,EAAQkB,EAAOJ,GAC9F,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkR,EAAgBlR,EAAQ,2BACxBkM,EAAqB,WACrB,QAASA,GAAkBu2D,GACvBr5D,KAAKq5D,YAAcA,EAwBvB,MAtBAv2D,GAAkBzC,UAAU6pD,UAAY,SAAUl7C,EAAOsqD,GACrD,GAAc,cAAVtqD,GAAmC,OAAVA,EAEzB,MADAhP,MAAKu5D,cAAgBv5D,KAAKq5D,YAAYh5C,YAC/B,GAAIm5C,MAAKC,aAAaz5D,KAAKu5D,cAAev5D,KAAK05D,kBAAkBJ,IAAUtuD,OAAOgE,IAGjGlM,EAAkBzC,UAAUq5D,kBAAoB,SAAUJ,GACtD,OAAgBvsD,KAAZusD,EAAJ,CAEA,GAAIK,GAAiBL,EAAQ15C,MAAM,IAKnC,QAHIm0C,MAAO,UACPjK,sBAAuB6P,EAAe,GAAI5P,sBAAuB4P,EAAe,MAIxF72D,EAAoB40B,GAChB7yB,EAAOs0D,MACH1oD,KAAM,kBAEVwnB,EAAW,qBAAsBnwB,EAAcC,4BAChDjF,KAGPpL,GAAQoL,kBAAoBA,IAIzBysC,0BAA0B,GAAGnpC,gBAAgB,kBAAkByzD,IAAI,SAASjjE,EAAQkB,EAAOJ,GAC9F,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkR,EAAgBlR,EAAQ,2BACxBsM,EAAyB,WACzB,QAASA,GAAsBm2D,GAC3Br5D,KAAKq5D,YAAcA,EAsBvB,MApBAn2D,GAAsB7C,UAAU6pD,UAAY,SAAUvpB,EAAKwoB,GACvDnpD,KAAKu5D,cAAgBv5D,KAAKq5D,YAAYh5C,WACtC,IACIy5C,GADA3mD,GAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAEhD,IAAIwtB,EAAM,KAAQA,GAAO,IACrB,MAAOA,GAAI52B,UACf,KAAK,GAAI7S,GAAIic,EAAMvb,OAAS,EAAGV,GAAK,EAAGA,IAEnC,GADA4iE,EAAUprD,KAAK+F,IAAI,IAAMvd,EAAI,GACzBypC,IAAQm5B,GAAWn5B,GAAOm5B,EAAS,CACnC,GAAIC,KAAiBp5B,EAAMm5B,GAASnQ,QAAQR,GACxCmB,EAAe,GAAIkP,MAAKC,aAAaz5D,KAAKu5D,eAAevuD,OAAO+uD,EACpE,OAAOzP,GAAen3C,EAAMjc,GAGpC,MAAO,KAEXgM,EAAwBw0B,GACpB7yB,EAAOs0D,MAAO1oD,KAAM,sBACpBwnB,EAAW,qBAAsBnwB,EAAcC,4BAChD7E,KAGPxL,GAAQwL,sBAAwBA,IAI7BqsC,0BAA0B,GAAGnpC,gBAAgB,kBAAkB4zD,IAAI,SAASpjE,EAAQkB,EAAOJ,GAC9F,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB2K,EAAa,WACb,QAASA,MAgBT,MAdAA,GAAUlB,UAAU6pD,UAAY,SAAUl7C,GACtC,IAAKA,GAA0B,gBAAVA,GACjB,MAAOA,EACX,IAAIirD,OAAYltD,EAChB,OAAOiC,GAAMgD,QAAQ,gCAAiC,SAAUkoD,EAAQjrC,GACpE,GAAIvF,GAAgB,GAATuF,GAAcA,IAAUgrC,EAAY,EAAKC,EAAOlnD,cAAgBknD,EAAOnoD,aAElF,OADAkoD,GAAYhrC,EACLvF,IACR1X,QAAQ,OAAQ,KAEvBzQ,EAAYm2B,GACR7yB,EAAOs0D,MAAO1oD,KAAM,cACpBwnB,EAAW,yBACZ12B,KAGP7J,GAAQ6J,UAAYA,CACpB,IAAIC,GAAc,WACd,QAASA,MAWT,MATAA,GAAWnB,UAAU6pD,UAAY,SAAUl7C,GACvC,MAAKA,IAA0B,gBAAVA,GAEdA,EAAMgD,QAAQ,aAAc,SAAUmoD,EAAIC,EAAIC,GAAM,MAAOD,GAAGroD,cAAgBsoD,EAAGrnD,gBAD7EhE,GAGfxN,EAAak2B,GACT7yB,EAAOs0D,MAAO1oD,KAAM,eACpBwnB,EAAW,yBACZz2B,KAGP9J,GAAQ8J,WAAaA,IAIlB4E,gBAAgB,kBAAkBk0D,IAAI,SAAS1jE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoL,EAAY,WACZ,QAASA,MAiBT,MAfAA,GAAS3B,UAAU6pD,UAAY,SAAUl7C,EAAOmB,GAC5C,GAAI4hB,KACJ,KAAK,GAAIwoC,KAAcvrD,GAAO,CAC1B,GAAIoB,GAAMgM,SAASm+C,EAAY,GACTnqD,IAAO,GAEzB2hB,EAAKpnB,MAAOyF,IAAKA,EAAKpB,MAAOA,EAAMurD,KAG3C,MAAOxoC;EAEX/vB,EAAW01B,GACP7yB,EAAOs0D,MAAO1oD,KAAM,aACpBwnB,EAAW,yBACZj2B,KAGPtK,GAAQsK,SAAWA,IAIhBoE,gBAAgB,kBAAkBo0D,IAAI,SAAS5jE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBgyD,EAAWhyD,EAAQ,mBACnBwM,EAAkB,WAClB,QAASA,KACLpD,KAAK6Y,KAAO,GAAI+vC,GAASqQ,SAgB7B,MAdA71D,GAAe/C,UAAU6pD,UAAY,SAAUl7C,EAAOkqD,GAClD,IACI,MAAOl5D,MAAK6Y,KAAKqxC,UAAUl7C,EAAOkqD,GAEtC,MAAOpiE,GACH,KAAMA,KAGdsM,EAAiBs0B,GACb7yB,EAAOs0D,MACH1oD,KAAM,eAEVwnB,EAAW,yBACZ70B,KAGP1L,GAAQ0L,eAAiBA,IAItB2nD,kBAAkB,kBAAkB3kD,gBAAgB,kBAAkBq0D,IAAI,SAAS7jE,EAAQkB,EAAOJ,GACrG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBgyD,EAAWhyD,EAAQ,mBACnBuK,EAAkB,WAClB,QAASA,KACLnB,KAAK06D,SAAW,GAAI9R,GAASc,YAWjC,MATAvoD,GAAed,UAAU6pD,UAAY,SAAUl7C,EAAOm6C,GAClD,OAAcp8C,KAAViC,EAEJ,MAAOhP,MAAK06D,SAASxQ,UAAUl7C,EAAQ,IAAKm6C,IAEhDhoD,EAAiBu2B,GACb7yB,EAAOs0D,MAAO1oD,KAAM,eACpBwnB,EAAW,yBACZ92B,KAGPzJ,GAAQyJ,eAAiBA,IAItB4pD,kBAAkB,kBAAkB3kD,gBAAgB,kBAAkBu0D,IAAI,SAAS/jE,EAAQkB,EAAOJ,GACrG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBgyD,EAAWhyD,EAAQ,mBAKnB4L,EAAmB,WACnB,QAASA,KACLxC,KAAKg5D,MAAQ,GAAIpQ,GAASqQ,SAiB9B,MAfAz2D,GAAgBnC,UAAU6pD,UAAY,SAAUl7C,EAAOkqD,GAEnD,GAAMlqD,GAA0B,gBAAVA,GAAoB,CACtC,GAAIixB,GAAMjxB,CACVA,GAAQ,GAAI1E,MAAK21B,GAErB,GAAIpnB,GAAO7J,CACX,OAAK6J,GAEE7Y,KAAKg5D,MAAM9O,UAAUrxC,EAAMqgD,GADvB,MAGf12D,EAAkBk1B,GACd7yB,EAAOs0D,MAAO1oD,KAAM,aACpBwnB,EAAW,yBACZz1B,KAGP9K,GAAQ8K,gBAAkBA,IAIvBuoD,kBAAkB,kBAAkB3kD,gBAAgB,kBAAkBw0D,IAAI,SAAShkE,EAAQkB,EAAOJ,GACrG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkR,EAAgBlR,EAAQ,2BACxB8L,EAAoB,WACpB,QAASA,GAAiB22D,GACtBr5D,KAAKq5D,YAAcA,EA6BvB,MA3BA32D,GAAiBrC,UAAU6pD,UAAY,SAAUl7C,EAAOsqD,GACpD,MAAa,IAATtqD,OAAyBjC,KAAViC,EACR,EACG,cAAVA,GAAmC,OAAVA,GAAmBtC,MAAMsC,GAM3C,IALPhP,KAAKu5D,cAAgBv5D,KAAKq5D,YAAYh5C,YAC1B,GAAIm5C,MAAKC,aAAaz5D,KAAKu5D,cAAev5D,KAAK05D,kBAAkBJ,IAAUtuD,OAAOgE,KAOtGtM,EAAiBrC,UAAUq5D,kBAAoB,SAAUJ,GACrD,OAAgBvsD,KAAZusD,EAAJ,CAEA,GAAIK,GAAiBL,EAAQ15C,MAAM,IAInC,QAFIkqC,sBAAuB6P,EAAe,GAAI5P,sBAAuB4P,EAAe,MAIxFj3D,EAAmBg1B,GACf7yB,EAAOs0D,MACH1oD,KAAM,iBAEVwnB,EAAW,qBAAsBnwB,EAAcC,4BAChDrF,KAGPhL,GAAQgL,iBAAmBA,IAIxB6sC,0BAA0B,GAAGnpC,gBAAgB,kBAAkBy0D,IAAI,SAASjkE,EAAQkB,EAAOJ,GAC9F,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGpwB,EAAgBlR,EAAQ,2BACxBiO,EAASjO,EAAQ,iBACjB0L,EAAqB,WACrB,QAASA,GAAkBkzB,GACvBx1B,KAAKw1B,KAAOA,EAqDhB,MAnDAlzB,GAAkBjC,UAAUy6D,UAAY,SAAUC,EAAiBC,EAAMC,GACrE,OAAQF,GACJ,IAAK,KACD,MAAa,KAATC,GAA8B,KAAhBC,EACP,KAEA,KACf,KAAK,KACD,MAAO,GACX,KAAK,KACD,MAAa,KAATD,GAA8B,KAAhBC,EACP,KACO,IAATD,GAA8B,KAAhBC,EACZ,KACO,IAATD,GAA8B,KAAhBC,EACZ,KAEA,IACf,KAAK,KACD,MAAO,GACX,KAAK,KACD,MAAO,GACX,SACI,MAAa,KAATD,GAA8B,KAAhBC,EACP,KACO,IAATD,GAA8B,KAAhBC,EACZ,KACO,IAATD,GAA8B,KAAhBC,EACZ,KAEA,OAGvB34D,EAAkBjC,UAAU6pD,UAAY,SAAUl7C,GAC9C,GAAI+rD,GAAkB/6D,KAAKw1B,KAAK03B,aAAe,IAC/C,IAAa,MAATl+C,EACA,MAAO,KACXA,GAAQN,KAAKuY,MAAMjY,EACnB,IAAI0d,GAAS,GACTjd,EAAMf,KAAKe,IAAIT,GACfgsD,EAAOvrD,EAAM,GACbwrD,EAAcxrD,EAAM,GAExB,OADAid,GAAS1sB,KAAK86D,UAAUC,EAAiBC,EAAMC,GACxCjsD,EAAQ0d,GAEnBpqB,EAAoBo1B,GAChB7yB,EAAOs0D,MACH1oD,KAAM,kBAEVwnB,EAAW,qBAAsBnwB,EAAcE,oBAChD1F,KAGP5K,GAAQ4K,kBAAoBA,IAIzBitC,0BAA0B,GAAGnpC,gBAAgB,kBAAkB80D,IAAI,SAAStkE,EAAQkB,EAAOJ,GAC9F,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBwL,EAAe,WACf,QAASA,MA8BT,MA5BAA,GAAY/B,UAAU6pD,UAAY,SAAUl7C,GACxC,GAAa,MAATA,EACA,MAAO,KACXA,GAAQN,KAAKuY,MAAMjY,EACnB,IAAI0d,GAAS,GACTjd,EAAMf,KAAKe,IAAIT,GACfgsD,EAAOvrD,EAAM,GACbwrD,EAAcxrD,EAAM,GAaxB,OAXIid,GADS,IAATsuC,GAA8B,KAAhBC,EACL,KAEK,IAATD,GAA8B,KAAhBC,EACV,KAEK,IAATD,GAA8B,KAAhBC,EACV,KAGA,KAENjsD,EAAQ0d,GAEnBtqB,EAAcs1B,GACV7yB,EAAOs0D,MACH1oD,KAAM,YAEVwnB,EAAW,yBACZ71B,KAGP1K,GAAQ0K,YAAcA,IAInBgE,gBAAgB,kBAAkB+0D,IAAI,SAASvkE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBgyD,EAAWhyD,EAAQ,mBACnBgL,EAAgB,WAChB,QAASA,KACL5B,KAAKg5D,MAAQ,GAAIpQ,GAASqQ,SAqB9B,MAnBAr3D,GAAavB,UAAU6pD,UAAY,SAAUl7C,EAAOkqD,GAE1ClqD,GAA0B,gBAAVA,KACd,oDAAoD8G,KAAK9G,KACzDA,GAAS,KACbA,EAAQ,GAAI1E,MAAK0E,GAErB,KACI,MAAOhP,MAAKg5D,MAAM9O,UAAUl7C,EAAOkqD,GAEvC,MAAOpiE,GAEH,KAAMA,KAGd8K,EAAe81B,GACX7yB,EAAOs0D,MAAO1oD,KAAM,SACpBwnB,EAAW,yBACZr2B,KAGPlK,GAAQkK,aAAeA,IAIpBmpD,kBAAkB,kBAAkB3kD,gBAAgB,kBAAkBg1D,IAAI,SAASxkE,EAAQkB,EAAOJ,GACrG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkL,EAAmB,WACnB,QAASA,MAmBT,MAjBAA,GAAgBzB,UAAU6pD,UAAY,SAAUvpB,EAAKwoB,GACjD,GACI2Q,GADA3mD,GAAS,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAEhD,IAAIwtB,EAAM,KAAQA,GAAO,IACrB,MAAOA,GAAI52B,UACf,KAAK,GAAI7S,GAAIic,EAAMvb,OAAS,EAAGV,GAAK,EAAGA,IAEnC,GADA4iE,EAAUprD,KAAK+F,IAAI,IAAMvd,EAAI,GACzBypC,IAAQm5B,GAAWn5B,GAAOm5B,EAC1B,QAASn5B,EAAMm5B,GAASnQ,QAAQR,GAAUh2C,EAAMjc,EAGxD,OAAO,KAEX4K,EAAkB41B,GACd7yB,EAAOs0D,MAAO1oD,KAAM,gBACpBwnB,EAAW,yBACZn2B,KAGPpK,GAAQoK,gBAAkBA,IAIvBsE,gBAAgB,kBAAkBi1D,IAAI,SAASzkE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoyD,EAAuB,gBACvB9mD,EAAiB,WACjB,QAASA,MA+BT,MA7BAA,GAAc7B,UAAU6pD,UAAY,SAAUl7C,EAAOktB,GACjD,GAAe,MAAXA,EACA,MAAOltB,EACX,IAAa,MAATA,EACA,MAAO,KACX,IAAIssD,GAAYtsD,CAChB,IAAqB,gBAAVA,GAAoB,CAC3BA,EAAQA,EAAMgD,QAAQ,OAAQ,GAC9B,IAAIupD,GAAUvS,EAAqB7mC,KAAKnT,EACxC,KAAKusD,EACD,MAAO,KAEXvsD,GAAQib,WAAWsxC,EAAQ,IAE/B,GAAI7uD,MAAMsC,GACN,MAAO,KAEX,IAAIoG,GAAQ8mB,EAAQsC,KAAK,SAAUvnC,GAAK,OAAwB,MAAhBA,EAAEukE,YAAsBvkE,EAAEukE,WAAaxsD,KAA2B,MAAhB/X,EAAEwkE,YAAsBxkE,EAAEwkE,WAAazsD,KAAW/X,EAAEykE,WAAex/B,EAAQsC,KAAK,SAAUvnC,GAAK,MAAOA,GAAEykE,SAC1M,OAAItmD,GACOA,EAAMywC,KAENyV,GAEfp5D,EAAgBw1B,GACZ7yB,EAAOs0D,MACH1oD,KAAM,cAEVwnB,EAAW,yBACZ/1B,KAGPxK,GAAQwK,cAAgBA,IAIrBkE,gBAAgB,kBAAkBu1D,IAAI,SAAS/kE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8/C,EAAU,EACVnsC,EAAM,GAAIqxD,SACVl6D,EAAgB,WAChB,QAASA,MAcT,MAZAA,GAAarB,UAAU6pD,UAAY,SAAUl7C,GACzC,GAAIvB,GAAMlD,EAAIzE,IAAIkJ,EAKlB,OAJKvB,KACDA,EAAMipC,IACNnsC,EAAIsG,IAAI7B,EAAOvB,IAEZA,GAEX/L,EAAeg2B,GACX7yB,EAAOs0D,MAAO1oD,KAAM,aACpBwnB,EAAW,yBACZv2B,KAGPhK,GAAQgK,aAAeA,IAIpB0E,gBAAgB,kBAAkBy1D,IAAI,SAASjlE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBkR,EAAgBlR,EAAQ,2BACxByK,EAAa,WACb,QAASA,GAAUo1C,EAAWqlB,GAC1B97D,KAAK+7D,UAAY,GAAIj0D,GAAck0D,cAAcvlB,EAAWqlB,GAYhE,MAVAz6D,GAAUhB,UAAU6pD,UAAY,SAAUl7C,GACtC,MAAMA,GACKhP,KAAK+7D,UAAU7R,UAAU,cAEzBlqD,KAAK+7D,UAAU7R,UAAU,cAExC7oD,EAAYq2B,GACR7yB,EAAOs0D,MAAO1oD,KAAM,QAASwrD,MAAM,IACnChkC,EAAW,qBAAsBnwB,EAAcE,iBAAkBnD,EAAOq3D,qBACzE76D,KAGP3J,GAAQ2J,UAAYA,IAIjBkuC,0BAA0B,GAAGnpC,gBAAgB,kBAAkB+1D,IAAI,SAASvlE,EAAQkB,EAAOJ,GAC9F,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB6Q,EAA4B,WAC5B,QAASA,KACLzH,KAAKo8D,6BACLp8D,KAAKq8D,iCAuET,MArEA50D,GAAyBpH,UAAUgqD,mBAAqB,SAAUiS,EAAcC,GAC5E,MAAID,IACIt8D,KAAKo8D,0BAAiC,MAAEv2B,UAAU,SAAUllB,GAAK,MAAOA,KAAM47C,KAAqB,IACnGD,EAAeA,EAAatqD,QAAQ,OAAQ,IAC5CsqD,EAAeA,EAAatqD,QAAQ,MAAO,KAE3ChS,KAAKo8D,0BAAiC,MAAEv2B,UAAU,SAAUllB,GAAK,MAAOA,KAAM47C,KAAqB,IACnGD,EAAeA,EAAatqD,QAAQ,MAAO,IAC3CsqD,EAAeA,EAAatqD,QAAQ,MAAO,MAE3ChS,KAAKo8D,0BAA+B,IAAEv2B,UAAU,SAAUllB,GAAK,MAAOA,KAAM47C,KAAqB,IACjGD,EAAeA,EAAatqD,QAAQ,MAAO,IAC3CsqD,EAAeA,EAAatqD,QAAQ,MAAO,MAExCsqD,OAGP,IAER70D,EAAyBpH,UAAUmqD,mBAAqB,SAAUP,EAAah/C,GAC3E,MAAIg/C,GAAYvlC,QAAQ,MAAQ,GAC5BulC,EAAcA,EAAYj4C,QAAQ,MAAO,IAClC,GAAIwnD,MAAKC,aAAaxuD,GACzB8oD,MAAO,UACPjK,sBAAuB,IACxB9+C,OAAO+jC,OAAOkb,EAAc,OAGX,KAAhBA,EACO,GACJ,GAAIuP,MAAKC,aAAaxuD,GACzB6+C,sBAAuB,IACxB9+C,OAAO+jC,OAAOkb,KAGzBxiD,EAAyBpH,UAAU8pD,iBAAmB,SAAUF,GAG5D,MAFAA,GAAcA,EAAYj4C,QAAQ,OAAQ,IAC1Ci4C,EAAcA,EAAYj4C,QAAQ,MAAO,KAG7CvK,EAAyBpH,UAAUm8D,8BAAgC,WAC/D,QACMhlE,KAAM,KAAMsmC,YAAa,YACzBtmC,KAAM,KAAMsmC,YAAa,aACzBtmC,KAAM,KAAMsmC,YAAa,YACzBtmC,KAAM,KAAMsmC,YAAa,QACzBtmC,KAAM,KAAMsmC,YAAa,cACzBtmC,KAAM,KAAMsmC,YAAa,aAGnCr2B,EAAyBpH,UAAUo8D,0BAA4B,WAC3D,QACMjlE,KAAM,KAAMklE,SAAU,UACtBllE,KAAM,KAAMklE,SAAU,UACtBllE,KAAM,KAAMklE,SAAU,UACtBllE,KAAM,KAAMklE,SAAU,UACtBllE,KAAM,KAAMklE,SAAU,UACtBllE,KAAM,KAAMklE,SAAU,WAGhCj1D,EAAyBpH,UAAUg8D,+BAAiC,WAChEr8D,KAAKo8D,0BAAiC,OAAK,KAAM,QAAS,SAC1Dp8D,KAAKo8D,0BAAiC,OAAK,KAAM,QAAS,SAC1Dp8D,KAAKo8D,0BAA+B,KAAK,KAAM,QAAS,KAAM,UAElE30D,EAA2BiwB,GACvB7yB,EAAOk0B,aACPd,EAAW,yBACZxwB,KAGP/P,GAAQ+P,yBAA2BA,IAIhCrB,gBAAgB,kBAAkBu2D,IAAI,SAAS/lE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBsQ,EAAkBtQ,EAAQ,mBAC1BgQ,EAAkBhQ,EAAQ,mBAC1BoQ,EAAsBpQ,EAAQ,uBAC9B4P,EAAgB5P,EAAQ,iBACxB2Q,EAA8B,WAC9B,QAASA,GAA2Bq1D,EAAUzgB,EAAO0gB,EAAoBC,GACrE98D,KAAK48D,SAAWA,EAChB58D,KAAKm8C,MAAQA,EACbn8C,KAAK68D,mBAAqBA,EAC1B78D,KAAK88D,eAAiBA,EACtB98D,KAAK+8D,YAAc70D,OAAoB,YAsC3C,MApCAX,GAA2BlH,UAAU+N,OAAS,SAAU4uD,GACpDh9D,KAAKi9D,WAAWD,IAEpBz1D,EAA2BlH,UAAU48D,WAAa,SAAUD,GACxDh9D,KAAK+8D,YAAY3uD,OAAO4uD,mBAAqBA,GAEjDz1D,EAA2BlH,UAAU8qC,KAAO,SAAU+xB,EAAoBC,GAEtE,OADwB,KAApBA,IAA8BA,GAAkB,IAC/CD,EAAmB7xB,YACpB,KAAM,IAAI9zC,OAAM,gCACpB,IAAI4lE,IAAoBD,EAAmB9iC,MACvC,KAAM,IAAI7iC,OAAM,0BACpByI,MAAKo9D,SAASF,IAElB31D,EAA2BlH,UAAU+8D,SAAW,SAAUF,GACtD,GAAI9xB,GAAgB8xB,EAAmB9xB,eAAiBprC,KAAK68D,mBAAmB/Q,SAAS9rD,KAAK68D,mBAAmB5tC,OAAO28B,WACpHyR,GACAjyB,cAAeA,EACfC,YAAa6xB,EAAmB7xB,aAEhCiyB,GACAC,SAAUv9D,KAAK48D,SAASY,cAAgBx9D,KAAK48D,SAASY,cAAcvhC,SAAW,GAC/EwhC,WAAYz9D,KAAK48D,SAASY,cAAgBx9D,KAAK48D,SAASY,cAAc1/B,YAAc,GACpF4/B,QAAS19D,KAAKm8C,MAAMgC,gBAAkBn+C,KAAKm8C,MAAMgC,gBAAgBwf,SAAW,GAC5EC,gBAAiB59D,KAAKm8C,MAAMgC,gBAAkBn+C,KAAKm8C,MAAMgC,gBAAgB0f,SAAW,GACpFC,MAAOZ,EAAmB9iC,MAE1B8iC,GAAmBa,iBACnBz9D,OAAOgjC,OAAOg6B,EAAYJ,EAAmBa,iBACjDV,EAAsB,WAAIx9B,KAAKC,UAAUw9B,GACzCt9D,KAAK+8D,YAAYiB,YAAavtD,KAAM26B,GAAiBiyB,IAEzD91D,EAA6BmwB,GACzB7yB,EAAOk0B,aACPd,EAAW,qBAAsBrxB,EAAgBC,cAAeL,EAAcC,YAAaO,EAAoBC,kBAAmBC,EAAgBC,iBACnJI,KAGP7P,GAAQ6P,2BAA6BA,IAIlC02D,kBAAkB,GAAGC,kBAAkB,GAAGC,sBAAsB,GAAGC,gBAAgB,GAAGh4D,gBAAgB,kBAAkBi4D,IAAI,SAASznE,EAAQkB,EAAOJ,GACvJ,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBuB,EAAMvB,EAAQ,sBACd8nC,EAAO9nC,EAAQ,QACfiQ,EAAiB,WACjB,QAASA,GAAcgpC,GACnB7vC,KAAK6vC,KAAOA,EACZ7vC,KAAKs4C,qBAAuB,GAAI5Z,GAAKt5B,cAAc,GACnDpF,KAAKs+D,gBAAkB,GAAI5/B,GAAKwF,QA2BpC,MAzBA5jC,QAAOuF,eAAegB,EAAcxG,UAAW,iBAC3CyF,IAAK,WACD,MAAO9F,MAAKu+D,gBAEhB1tD,IAAK,SAAU7B,GACXhP,KAAKu+D,eAAiBvvD,EAClBA,GACAhP,KAAKs4C,qBAAqB3yC,KAAKqJ,IAEvCjJ,YAAY,EACZC,cAAc,IAElBa,EAAcxG,UAAUy4B,WAAa,SAAUD,GAC3C,MAAO74B,MAAK6vC,KAAK/W,WAAWD,GAAItuB,IAAI,SAAU1T,GAAK,MAAOA,GAAEupB,QAEhEvZ,EAAcxG,UAAUm+D,SAAW,SAAU3lC,GACzC,GAAImG,GAAQh/B,KACRy+D,EAAMz+D,KAAK6vC,KAAK/pC,IAAI+yB,GAAImY,SAAS,cAErC,OADAytB,GAAIr6B,UAAU,SAAU1a,GAAO,MAAOsV,GAAMw+B,cAAgB9zC,EAAItJ,OACzDq+C,EAAIl0D,IAAI,SAAUmf,GAAO,MAAOA,GAAItJ,QAE/CvZ,EAAgB6wB,GACZ7yB,EAAOk0B,aACPd,EAAW,qBAAsB9/B,EAAIigC,gBACtCvxB,KAGPnP,GAAQmP,cAAgBA,IAIrBirC,qBAAqB,GAAG1rC,gBAAgB,gBAAgBE,KAAO,SAASo4D,IAAI,SAAS9nE,EAAQkB,EAAOJ,GACvG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGiqB,EAAWniD,MAAQA,KAAKmiD,SAAY,SAAUC,EAAYC,GAC1D,MAAO,UAAUzqB,EAAQxnB,GAAOiyC,EAAUzqB,EAAQxnB,EAAKgyC,KAEvDv9C,EAASjO,EAAQ,iBACjBuB,EAAMvB,EAAQ,sBACd8nC,EAAO9nC,EAAQ,QACfuQ,EAAiB,WACjB,QAASA,GAAciuD,EAAUuJ,GAC7B,GAAI3/B,GAAQh/B,IACZA,MAAK2+D,aAAeA,EACpB3+D,KAAK4+D,oBAAsB,GAAIlgC,GAAKt5B,cAAc,GAClDpF,KAAKo1D,SAAW,GAAI12B,GAAKt5B,cACzBpF,KAAK6+D,OAASzJ,EAASyJ,OACvB7+D,KAAK8+D,WAAa1J,EAAS2J,UAC3B/+D,KAAK2+D,aAAa74D,MAAMs+B,UAAU,SAAU1a,GAAO,MAAOsV,GAAMo2B,SAASzvD,KAAK+jB,EAAItJ,QAuBtF,MArBA9f,QAAOuF,eAAesB,EAAc9G,UAAW,gBAC3CyF,IAAK,WACD,MAAO9F,MAAKg/D,eAEhBnuD,IAAK,SAAU7B,GACXhP,KAAKg/D,cAAgBhwD,EACrBhP,KAAK4+D,oBAAoBj5D,KAAKqJ,IAElCjJ,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAesB,EAAc9G,UAAW,aAC3CyF,IAAK,WAAc,MAAO9F,MAAK8+D,YAC/B/4D,YAAY,EACZC,cAAc,IAElBmB,EAAgBuwB,GACZ7yB,EAAOk0B,aACPopB,EAAQ,EAAGt9C,EAAO0gD,OAAO,WACzBttB,EAAW,qBAAsB33B,OAAQnI,EAAIimC,iBAC9Cj3B,KAGPzP,GAAQyP,cAAgBA,IAIrB2qC,qBAAqB,GAAG1rC,gBAAgB,gBAAgBE,KAAO,SAAS24D,IAAI,SAASroE,EAAQkB,EAAOJ,GACvG,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8gD,EAAW9gD,EAAQ,mBACnB8nC,EAAO9nC,EAAQ,QACfgyD,EAAWhyD,EAAQ,mBACnBkR,EAAgBlR,EAAQ,iBACxBsQ,EAAkBtQ,EAAQ,mBAC1BoQ,EAAsBpQ,EAAQ,uBAC9BkQ,EAAelQ,EAAQ,gBACvBmxC,EAAYnxC,EAAQ,iBACpBq0D,EAAer0D,EAAQ,mBAC3BA,GAAQ,OACR,IAAI4J,GAAe5J,EAAQ,cACvB+Q,EAAqB,WACrB,QAASA,GAAkBmoC,EAAa1D,EAAS0L,EAAS1pC,EAAQ8wD,EAAWC,EAAU92B,EAAY+2B,EAAaC,GAC5G,GAAIrgC,GAAQh/B,IACZA,MAAK8vC,YAAcA,EACnB9vC,KAAKosC,QAAUA,EACfpsC,KAAK83C,QAAUA,EACf93C,KAAKoO,OAASA,EACdpO,KAAKk/D,UAAYA,EACjBl/D,KAAKm/D,SAAWA,EAChBn/D,KAAKqoC,WAAaA,EAClBroC,KAAKo/D,YAAcA,EACnBp/D,KAAKq/D,wBAA0BA,EAC/Br/D,KAAKs/D,kBAAoB,GAAI5gC,GAAKt5B,cAAc,GAChDpF,KAAK8vC,YAAY4B,UAAUtN,UAAU,SAAU5H,GAC3CwC,EAAMugC,WAAa/iC,IAuK3B,MApKA70B,GAAkBtH,UAAUm/D,wBAA0B,SAAUC,EAAkBC,EAAOC,GACrF,GAAI3gC,GAAQh/B,IACZ,IAAIy/D,EAAiB7+D,MAAQmnC,EAAU7vC,IAAIwhC,eAAekmC,SAAW5/D,KAAKu/D,WACtE,MAAOv/D,MAAK8vC,YAAY8vB,QAAQ5/D,KAAKu/D,WAAWnlC,MAAOp6B,KAAKu/D,WAAWn/C,KAAMpgB,KAAKu/D,WAAWpvB,aAAcuvB,EAAOC,GAAa3oB,GAAG,WAAc,MAAOhY,GAAMoN,QAAQyzB,QAAQ7gC,EAAMqJ,WAAW8I,QAAQ,0BAA4B2uB,YAAYjiB,KAAK,SAAUhnD,GAAK,QAASA,GAE/Q,IAAI4oE,EAAiB7+D,MAAQmnC,EAAU7vC,IAAIwhC,eAAeqmC,mBAAqB//D,KAAKu/D,WAChF,MAAOv/D,MAAK8vC,YAAY8vB,QAAQ5/D,KAAKu/D,WAAWnlC,MAAOp6B,KAAKu/D,WAAWn/C,KAAMpgB,KAAKu/D,WAAWpvB,aAAcuvB,EAAOC,EAAaF,EAAiBO,YAAYhpB,GAAG,WAAc,MAAOhY,GAAMoN,QAAQyzB,QAAQ7gC,EAAMqJ,WAAW8I,QAAQ,0BAA4B2uB,YAAYjiB,KAAK,SAAUhnD,GAAK,QAASA,GAEvS,IAAI4oE,EAAiB7+D,MAAQmnC,EAAU7vC,IAAIwhC,eAAeumC,mBAAqBjgE,KAAKu/D,gBAA2CxyD,KAA7B0yD,EAAiBS,QAAuB,CAC3I,GAAIC,GAAQV,EAAiBS,OAG7B,OAFMT,GAAiBW,mBACnBD,GAAU1xD,OAAQgxD,EAAiBS,QAASC,MAAOV,EAAiBW,mBACjEpgE,KAAK8vC,YAAYuwB,eAAergE,KAAKu/D,WAAWnlC,MAAOp6B,KAAKu/D,WAAWn/C,KAAM+/C,EAAOngE,KAAKu/D,WAAWpvB,aAAcuvB,EAAOC,GAAa3oB,GAAG,WAAc,MAAOhY,GAAMoN,QAAQyzB,QAAQ7gC,EAAMqJ,WAAW8I,QAAQ,0BAA4B2uB,YAAYjiB,KAAK,SAAUhnD,GAAK,QAASA,IAGzR,MAAO,OAEf8Q,EAAkBtH,UAAU+rD,SAAW,SAAUkU,GAC7C,GAAIthC,GAAQh/B,IACZA,MAAKq/D,wBAAwBhU,WAAWkV,WAAaD,EAAOp5C,MAC5D,IA2CIs5C,GA3CA5oC,EAAS0oC,EAAOjU,cAAgBiU,EAAOp5C,OACvCu5C,EAAUH,EAAOpV,OAAOzwB,IACxBimC,EAAe1gE,KAAK8vC,YAAY6wB,mBAAmBL,EAAOlnB,OAC1DwnB,EAAkBN,EAAOxU,SAASwU,EAAOjU,eACzCwU,EAAkBP,EAAOxU,SAASl0B,GAClCkpC,EAAwB,SAAUnB,GAAe,MAAO,UAAUj2C,GAClE,GAAIA,GAAO42C,EAAOp5C,SAAW+jC,EAAalqD,oBAAoBkrD,UAAYjtB,EAAMugC,WAAWljC,KAAK6T,WAAY,CACxG,GAAI6wB,GAAUC,QAAQC,SAAQ,EACD,KAAzBX,EAAOjU,gBACP0U,EAAU/hC,EAAM8Q,YAAYoxB,YAAYliC,EAAMugC,WAAWnlC,MAAOsmC,GAAcZ,YAAYjiB,KAAK,SAAUhnD,GAAK,QAASA,IAC3H,IAAIsqE,GAAqBT,EAAa9gD,MAAM,KAAKshB,OAAO,SAAUC,EAAKC,EAAMnS,EAAOkK,GAAQ,MAAOgI,GAAIjjC,QAAQ+wB,GAASkK,EAAKvhC,OAAS,EAAIipE,EAAgBjV,WAAaxqB,SAAe9wB,KAAK,IAC3L,OAAOywD,GAAQljB,KAAK,WAChB,IAAI+iB,EAAgBQ,oBAMhB,MAAOpiC,GAAM8Q,YAAYoxB,YAAYliC,EAAMugC,WAAWnlC,MAAO+mC,GAAoBrB,YAAYjiB,KAAK,SAAUhnD,GAAK,QAASA,GAL1H,IAAIwqE,GAAoBriC,EAAMwgC,wBAAwBoB,EAAgBQ,oBAAqBD,EAAoBxB,EAC/G,OAAM0B,QAAN,KAQZ,MAAOL,SAAQC,QAAQv3C,KAEvB43C,EAAe,SAAU53C,GAAO,MAAOA,GAAM42C,EAAOpV,OAAOkB,UAAUkU,EAAOxU,SAASl0B,GAAQg0B,aAAeU,WAAYgU,EAAOhU,aAAgB0U,QAAQC,SAAQ,GAwBnK,OAHIT,GADAF,EAAOp5C,QAAU+jC,EAAalqD,oBAAoBkrD,SAAW2U,EAAgBQ,qBAAuBR,EAAgBQ,oBAAoBG,mBAnBzH,SAAU73C,GAAO,MAAOA,GAAM42C,EAAOpV,OAAOkB,UAAU,WAAYwU,EAAgBhV,aAAeU,WAAYgU,EAAOhU,aAClIzO,KAAK,SAAUn0B,GAChB,QAAKA,IAELsV,EAAMsgC,kBAAkB35D,KAAK86D,GAC7BzhC,EAAMkgC,UAAUsC,aAAaf,IACtB,KAELO,QAAQC,SAAQ,KAYA,GAAMpjB,KAAKijB,GAAsB,IAAOjjB,KAAKyjB,GAXjD,SAAU53C,GAAO,MAAOA,GAAM42C,EAAOpV,OAAOkB,UAAU,gBAAkBE,WAAYgU,EAAOhU,aACxGzO,KAAK,SAAUn0B,GAChB,QAAKA,IAELsV,EAAMsgC,kBAAkB35D,KAAK86D,GAC7BzhC,EAAMkgC,UAAUsC,aAAaf,IACtB,KAELO,QAAQC,SAAQ,KAKD,GAAMpjB,KAAKijB,GAAsB,IAAQjjB,KAAKyjB,GAC5Dd,EAAGvhC,MAAM,SAAUgY,GACtB,GAAIA,GAAOA,EAAIt2C,SAAWs2C,EAAI1mC,MAAO,CACjC,GAAIkxD,GAAoB58D,EAAO68D,iBAAiBC,kBAAkB1qB,EAAIt2C,QAASs2C,EAAI1mC,MACnFyuB,GAAMogC,YAAY5lC,OACdqsB,KAAM4b,IACPnqB,gBACHxnC,QAAQ0pB,MAAMioC,GAElBziC,EAAMqgC,wBAAwBhU,WAAWkV,eAAaxzD,GACtDuzD,EAAOpV,OAAOkB,UAAUkU,EAAOxU,SAASwU,EAAOjU,eAAeT,aAAeU,WAAYgU,EAAOhU,aAAczO,KAAK,SAAU5G,GAAO,MAAOjY,GAAMoN,QAAQ5S,MAAMwF,EAAMqJ,WAAW8I,QAAQ,uCACzL0M,KAAK,WAAc7e,EAAMqgC,wBAAwBhU,WAAWkV,eAAaxzD,MAEhFpF,EAAkBtH,UAAUy4C,cAAgB,SAAUre,GAClDz6B,KAAKs/D,kBAAkB35D,KAAK80B,GAC5Bz6B,KAAK83C,QAAQgB,cAAcre,IAE/B9yB,EAAkBtH,UAAUuhE,cAAgB,SAAU/3D,GAClD,GAAIA,EAAMg4D,SAASxlC,KAAK6T,WACpB,OAAS6J,aAAa,EAC1B,IAAIX,GAAQvvC,EAAM1D,KAAKvO,OACnBkqE,EAAYj4D,EAAMg4D,SAASxlC,KAAKqjC,MAChCqC,IACAD,IAAaA,EAAUE,WAAW,cAClCD,EAAUD,EAAUntD,OAAO,WAAW/c,QAAQgoB,MAAM,KAaxD,KAAK,GAXDqlC,GAAS,KACT9rB,EAAOn5B,KAAKoO,OAAO2iC,aAAayH,SAChCypB,GAAc,EAST/qE,EAAI,EAAGA,EAAIkiD,EAAOliD,KARb,SAASA,GACnB,GAAI+3B,GAAQkK,EAAK0M,UAAU,SAAUhvC,GAAK,MAAOA,GAAE+0D,YAAc/hD,EAAM1D,KAAKjP,IAC5E,KAAe,IAAX+3B,EACA,KAAMplB,GAAM1D,KAAKjP,GAAK,kCAC1B+tD,GAAS9rB,EAAKlK,GACdkK,EAAO8rB,EAAOhX,aACdg0B,EAAchd,EAAOid,mBAGbhrE,EAEZ,IAAIo0D,GAAenyB,EAAK0M,UAAU,SAAUhvC,GAAK,MAAOA,GAAE+0D,YAAc/hD,EAAMs4D,kBAC9E,KAAsB,IAAlB7W,EACA,KAAMzhD,GAAMs4D,iBAAmB,kCACnC,IAAIF,EACA,MAAOjiE,MAAKoiE,uBAAuBjpC,EAAKmyB,GAAezhD,KAAYkwC,aAAa,EACpF,IAAIttB,GAAS5iB,EAAM1D,KAAKvO,OAASiS,EAAM1D,KAAKmK,KAAK,KAAO,IAAM,GAC1DqzC,EAAM,CACV,IAAoB,GAAhB2H,EAAmB,CACnB,GAAI+W,GAAkBriE,KAAKoiE,uBAAuBjpC,EAAK,IAAMhzB,KAAM0D,EAAM1D,KAAM07D,SAAUh4D,EAAMg4D,SAAUM,iBAAkBhpC,EAAK,GAAGyyB,YACnI,IAAIyW,IAAoBA,EAAgBtoB,YACpC,OACIA,aAAa,EAAOuoB,cAAeD,EAAgBC,mBAyB3D,KAAK,GADDh0B,GAAStuC,KACJuiE,EAAK,EAAGA,GAAMjX,EAAciX,IAAM,CACvC,GAAIC,GArBM,SAASD,GACnB,GAAIE,GAAQh2C,EAAS0M,EAAKopC,GAAI3W,WAC1B8W,EAAWj2C,GAAU81C,GAAMppC,EAAKopC,EAAK,GAAG3W,YAAc,GAE1D,KAAa,KADbjI,EAAMoe,EAAQr9C,QAAQ+9C,EAAO9e,IAEzB,OAAS30C,OAAS+qC,aAAa,EAAO4oB,sBAAuBD,GAE5D,IAAIX,EAAQlwC,KAAK,SAAUuP,EAAMwhC,GAAW,MAAOxhC,GAAK4gC,WAAWS,EAAQ,MAAQG,EAAUjf,IAC9F,OAAS30C,OAAS+qC,aAAa,EAAO4oB,sBAAuBD,GAEjE,IAAIH,EAAK,EAAG,CACR,GAAIF,GAAkB/zB,EAAO8zB,uBAAuBjpC,EAAKopC,IAAOp8D,KAAM0D,EAAM1D,KAAM07D,SAAUh4D,EAAMg4D,SAAUM,iBAAkBhpC,EAAKopC,GAAI3W,YACvI,IAAIyW,IAAoBA,EAAgBtoB,YACpC,OAAS/qC,OACL+qC,aAAa,EAAO4oB,sBAAuBD,EAAUJ,cAAeD,EAAgBC,kBAO1EC,EACtB,IAAuB,gBAAZC,GAAsB,MAAOA,GAAQxzD,MAGxD,OAAS+qC,aAAa,IAE1BpyC,EAAkBtH,UAAU+hE,uBAAyB,SAAUS,EAAa9jC,GACxE,GAAIn+B,GAAOiiE,EAAYC,SAAwB,aAC/C,OAAKliE,GAEUZ,KAAKm/D,SAASr5D,IAAIlF,GACjBghE,cAAc7iC,GAFnB,MAIfp3B,EAAkBtH,UAAU0iE,eAAiB,WACzC,MAAO/iE,MAAK83C,QAAQrd,IAAI7a,MAAM,KAAKvP,MAAM,GAAGC,KAAK,MAErD3I,EAAoB+vB,GAChB7yB,EAAOk0B,aACPd,EAAW,qBAAsBnxB,EAAaC,WAAYvG,EAAa4uC,cAAesI,EAAS6B,OAAQryC,EAAgBC,cAAeyhD,EAASoa,SAAUn+D,EAAOo+D,SAAUn7D,EAAcE,iBAAkB+/B,EAAU5vC,IAAIohC,WAAYvyB,EAAoBC,qBACzPU,KAGPjQ,GAAQiQ,kBAAoBA,IAIzBkiC,gBAAgB,mBAAmB4iB,mBAAmB,sBAAsByR,kBAAkB,GAAGgF,eAAe,GAAG/E,sBAAsB,GAAGgF,gBAAgB,GAAGpY,kBAAkB,kBAAkB3kD,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBz4C,aAAa,aAAasF,KAAO,SAAS88D,IAAI,SAASxsE,EAAQkB,EAAOJ,GAChV,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8nC,EAAO9nC,EAAQ,QACf8gD,EAAW9gD,EAAQ,mBACnBkQ,EAAelQ,EAAQ,gBACvB8Q,EAAsB9Q,EAAQ,uBAC9BsQ,EAAkBtQ,EAAQ,mBAC1ByQ,EAAe,WACf,QAASA,GAAYy1D,EAAgBhtB,EAAa+H,EAAoBC,GAClE,GAAI9Y,GAAQh/B,IACZA,MAAK88D,eAAiBA,EACtB98D,KAAK8vC,YAAcA,EACnB9vC,KAAK63C,mBAAqBA,EAC1B73C,KAAK83C,QAAUA,EACf93C,KAAKu4C,iBAAmB,GAAI7Z,GAAKt5B,cAAc,GAC/CpF,KAAK+3C,SACL/3C,KAAK88D,eAAe8B,oBACfx6B,UAAU,SAAUhkB,GACrB4e,EAAM8sB,SAAW1rC,EAAKo4B,SACtBxZ,EAAM8Q,YAAY4B,UAAUtN,UAAU,SAAUy9B,GAC5C7iC,EAAM6iC,SAAWA,EACjB7iC,EAAM+Y,MAAQ/Y,EAAM8a,cAAc9a,EAAM6iC,UACxC7iC,EAAMuZ,iBAAiB5yC,KAAKq5B,EAAM+Y,WAG1C/3C,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUhvC,GAAK,MAAOA,aAAaygD,GAASW,gBAClElU,WAAW,KACXC,UAAU,SAAUttC,IAC+B,IAAhDA,EAAEusE,kBAAkB3+C,QAAQ,iBAC5Bsa,EAAM+Y,MAAQ/Y,EAAM8a,cAAc9a,EAAM6iC,WAC5C7iC,EAAMuZ,iBAAiB5yC,KAAKq5B,EAAM+Y,SAuD1C,MApDA1wC,GAAYhH,UAAUy5C,cAAgB,SAAU+nB,EAAU/V,GAEtD,OADiB,KAAbA,IAAuBA,EAAW9rD,KAAK8rD,WACtC+V,EACD,QACJ,IAAIyB,GAAWtjE,KAAKujE,eAAe1B,EAASznC,MAAO0xB,EAAU,GAAI9rD,KAAK63C,mBAAmBkrB,iBAAkB,EAE3G,OADA/iE,MAAKwjE,yBAAyB3B,EAAUyB,GACjCA,GAEXj8D,EAAYhH,UAAUmjE,yBAA2B,SAAU3B,EAAU4B,EAAWC,GAC5E,GAAI1kC,GAAQh/B,IACZyjE,GAAUl5D,IAAI,SAAUo5D,GACpB,IAA6B,IAAzBD,EACAC,EAAG5pB,aAAc,MAChB,CACD,GAAI0R,GAAOkY,EAAGlpC,IAAI7a,MAAM,KAAKvP,MAAM,EACnCszD,GAAG5pB,YAAc/a,EAAM6Y,mBAAmB+pB,eACtCz7D,KAAMslD,EAAKp7C,MAAM,EAAGo7C,EAAK7zD,OAAS,GAClCiqE,SAAUA,EACVM,iBAAkB1W,EAAKA,EAAK7zD,OAAS,KAEpCmiD,YAEL4pB,EAAG11B,UAAY01B,EAAG11B,SAASr2C,OAAS,GACpConC,EAAMwkC,yBAAyB3B,EAAU8B,EAAG11B,SAAU01B,EAAG5pB,gBAGrE1yC,EAAYhH,UAAUkjE,eAAiB,SAAUK,EAAaprB,EAAUryC,EAAM09D,EAAazqB,EAAO3sB,GAC9F,GAAIuS,GAAQh/B,IAGZ,YAFe,KAAXysB,IAAqBA,EAAS,MAClCA,EAASA,GAAU,+BACZ+rB,EAASjuC,IAAI,SAAUoW,EAAGsO,GAC7B,GAAI60C,IACAzqB,aAAc14B,EAAE04B,aAChBuS,WAAYjrC,EAAEirC,WACdnxB,IAAc,KAATt0B,EAAc,OAASy9D,EAAc,IAAMjjD,EAAEirC,WAAa,OAASgY,EAAc,IAAMz9D,EAAO,IAAMwa,EAAEirC,WAC3G7R,aAAa,EACbwR,QAASsY,KAA0B,KAAT19D,EAAcwa,EAAEirC,WAAazlD,EAAO,IAAMwa,EAAEirC,YACtExe,SAAS,EACTgM,MAAOA,EACP2qB,mBAAoBt3C,EAAS,IAAMwC,EAMvC,OAJItO,GAAEstB,UAAYttB,EAAEstB,SAASr2C,OAAS,IAClCksE,EAAS71B,SAAWjP,EAAMukC,eAAeK,EAAajjD,EAAEstB,SAAmB,KAAT9nC,EAAcwa,EAAEirC,WAAazlD,EAAO,IAAMwa,EAAEirC,WAAYiY,EAAazqB,EAAQ,EAAG0qB,EAASC,oBAC3JD,EAASE,kBAAoBF,EAAS71B,SAASpc,KAAK,SAAUz6B,GAAK,MAAOA,GAAEm0D,SAAWn0D,EAAE4sE,qBAEtFF,KAGfz8D,EAAcqwB,GACV7yB,EAAOk0B,aACPd,EAAW,qBAAsB/wB,EAAgBC,cAAeL,EAAaC,WAAYW,EAAoBC,kBAAmB+vC,EAAS6B,UAC1IlyC,KAGP3P,GAAQ2P,YAAcA,IAInB62D,kBAAkB,GAAG+F,sBAAsB,GAAGf,eAAe,GAAG98D,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBnzC,KAAO,SAAS49D,IAAI,SAASttE,EAAQkB,EAAOJ,GACnL,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBiR,EAA+B,WAC/B,QAASA,KACL7H,KAAKmkE,sBAaT,MAXAt8D,GAA4BxH,UAAU+jE,sBAAwB,SAAU/K,GACpE,GAAIr6B,GAAQh/B,IACZA,MAAKmkE,sBACL7jE,OAAOyxB,KAAKsnC,GAAa9zD,QAAQ,SAAUnO,GACvC4nC,EAAMmlC,mBAAmB/sE,EAAE2a,eAAiBsnD,EAAYjiE,MAGhEyQ,EAA8B6vB,GAC1B7yB,EAAOk0B,aACPd,EAAW,yBACZpwB,KAGPnQ,GAAQmQ,4BAA8BA,IAInCzB,gBAAgB,kBAAkBi+D,IAAI,SAASztE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBuB,EAAMvB,EAAQ,sBACd8nC,EAAO9nC,EAAQ,QACfkR,EAAgBlR,EAAQ,iBACxBsQ,EAAkBtQ,EAAQ,mBAC1B8gD,EAAW9gD,EAAQ,mBACnB4J,EAAe5J,EAAQ,cACvBmQ,EAAc,WACd,QAASA,GAAWohC,EAAOr3B,EAASu3B,EAAY+D,EAAS0L,GACrD,GAAI9Y,GAAQh/B,IACZA,MAAKmoC,MAAQA,EACbnoC,KAAK8Q,QAAUA,EACf9Q,KAAKqoC,WAAaA,EAClBroC,KAAKosC,QAAUA,EACfpsC,KAAK83C,QAAUA,EACf93C,KAAKskE,gBAAkB,GAAI5lC,GAAKwF,QAChClkC,KAAKukE,WAAa,GAAI7lC,GAAKwF,QAC3BlkC,KAAKqxC,kBAAoB,GAAI3S,GAAKwF,QAClClkC,KAAKwkE,WAAa,GAAI9lC,GAAKt5B,cAAc,GACzCpF,KAAKykE,cAAgBzkE,KAAKwkE,WAAWxtB,GAAG,SAAUxa,GAC9CwC,EAAMwsB,SAAWhvB,IAErBx8B,KAAK0kE,eAAiB1kE,KAAKskE,gBAC3BtkE,KAAK2kE,UAAY3kE,KAAKukE,UACtB,IAAIK,GAAe,KACfC,IACJ7kE,MAAK83C,QAAQM,OAAOnS,OAAO,SAAUhvC,GAAK,MAAOA,aAAaygD,GAASotB,kBAAoB1gC,UAAU,SAAUntC,GAC3G2tE,EAAe5lC,EAAMwsB,QACrB,IAAIp2C,GAAQ,eAAe+M,KAAKlrB,EAAEwjC,IAClC,IAAIrlB,EAAO,CACP,GAAIglB,GAAQhe,SAAShH,EAAM,GACtB4pB,GAAMwsB,UAAYxsB,EAAMwsB,SAASnvB,KAAKjC,QAAUA,GACjD4E,EAAM+lC,KAAK3qC,MAGvBp6B,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUhvC,GAAK,MAAOA,aAAaygD,GAASW,gBAAkBjU,UAAU,SAAUntC,GACzG,KAAI4tE,EAAUngD,QAAQztB,EAAE4hC,KAAO,GAA/B,CAEY,eAAe1W,KAAKlrB,EAAEwjC,OAE9BuE,EAAMwsB,SAAW,SAEzBxrD,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUhvC,GAAK,MAAOA,aAAaygD,GAASstB,mBAAqB5gC,UAAU,SAAUntC,GAC5G+nC,EAAMwsB,SAAWoZ,EACjBC,EAAUl6D,KAAK1T,EAAE4hC,MAsHzB,MAnHA9xB,GAAW1G,UAAU0kE,KAAO,SAAUlsC,GAClC,GAAImG,GAAQh/B,KACRy+D,EAAMz+D,KAAKmoC,MAAMriC,IAAI+yB,GAAImY,SAAS,YAAYi0B,OASlD,OARAxG,GAAIr6B,UAAU,SAAU1a,GAAO,MAAOsV,GAAMwlC,WAAW7+D,KAAK+jB,EAAItJ,OAAU,SAAU62B,GAChF,GAAmB,MAAfA,EAAI/X,QAAiC,MAAf+X,EAAI/X,OAK1B,KAAM+X,EAJNjY,GAAM8Y,QAAQsU,UAAU,MACxBptB,EAAMqJ,WAAWviC,IAAI,iCAAiCs+B,UAAU,SAAUntC,GAAK,MAAO+nC,GAAMoN,QAAQ5S,MAAMviC,OAK3GwnE,GAEXn+D,OAAOuF,eAAekB,EAAW1G,UAAW,aACxCyF,IAAK,WACD,MAAO9F,MAAKykE,eAEhB1+D,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAekB,EAAW1G,UAAW,cACxCyF,IAAK,WACD,OAAQ9F,KAAKwrD,UAAYxrD,KAAKwrD,SAASnvB,KAAK6T,YAEhDnqC,YAAY,EACZC,cAAc,IAElBe,EAAW1G,UAAU83C,YAAc,WAC/B,MAAOn4C,MAAKwrD,UAEhBzkD,EAAW1G,UAAU6kE,YAAc,SAAUz3D,GACzCzN,KAAKwrD,SAAW/9C,GAEpB1G,EAAW1G,UAAUsgE,mBAAqB,SAAUvnB,OAClC,KAAVA,IAAoBA,EAAQ,GAChC,IAAI5a,GAAO,GAAIxtB,QAAO,yBAA2BooC,EAAQ,WAAWj3B,KAAKniB,KAAK83C,QAAQrd,IACtF,OAAO+D,IAAQA,EAAK,IAExBz3B,EAAW1G,UAAUu/D,QAAU,SAAU/mC,EAAIzY,EAAM+vB,EAAcg1B,EAAeC,EAAUC,GACtF,GAAIrmC,GAAQh/B,KACRy+D,EAAMz+D,KAAKmoC,MAAM5L,cAAc1D,GAC/BuB,MAAOvB,EACPO,UAAWp5B,KAAK8Q,QAAQigC,aAAa3X,UACrCksC,aAAcllD,EACdilD,cAAeA,EACf3F,MAAOyF,GAAiBnlE,KAAK2gE,qBAC7BxwB,aAAcA,IAEb6G,GAAG,SAAUngD,GACVmoC,EAAMwsB,WACF30D,EAAEupB,KAAKmlD,gBACPvmC,EAAMwsB,SAAW30D,EAAEupB,KAAKmlD,eACxBvmC,EAAMwlC,WAAW7+D,KAAK9O,EAAEupB,KAAKmlD,kBAG7BvmC,EAAMwsB,SAASnvB,KAAKqjC,MAAQ7oE,EAAEupB,KAAKs/C,MACnC1gC,EAAMwsB,SAAStvB,QAAUrlC,EAAEupB,KAAKolD,WAChCxmC,EAAMulC,WAAW5+D,KAAKq5B,EAAMwsB,UAC5BxsB,EAAMslC,gBAAgB3+D,KAAKq5B,EAAMwsB,SAASnvB,UAIjD9xB,IAAI,SAAU1T,GAAK,MAAOA,GAAEupB,KAAKyY,IAKtC,OAJKusC,KACD3G,EAAMA,EAAIztB,UAAWC,UAAW,cAAeC,QAASlxC,KAAKqoC,WAAW8I,QAAQ,6BACpFstB,EAAMA,EAAIwG,QACVxG,EAAInnB,gBACGmnB,EAAI3P,MAAM,KAErB/nD,EAAW1G,UAAUggE,eAAiB,SAAUxnC,EAAIzY,EAAM8/C,EAAS/vB,EAAcg1B,EAAeC,GAC5F,GAAIpmC,GAAQh/B,KACRylE,GAAa,EACbC,EAAe,EACI,iBAAZxF,GACPuF,EAAYvF,GAGZuF,EAAYvF,EAAQzxD,OACpBi3D,EAAexF,EAAQC,MAE3B,IAAI1B,GAAMz+D,KAAKmoC,MAAMzL,QAAQ7D,GACzBuB,MAAOvB,EACP4sC,UAAWA,EACXC,aAAcA,EACdtsC,UAAWp5B,KAAK8Q,QAAQigC,aAAa3X,UACrCksC,aAAcllD,EACds/C,MAAOyF,GAAiBnlE,KAAK2gE,qBAC7BxwB,aAAcA,IAEb5lC,IAAI,SAAU1T,GAAK,MAAOA,GAAEupB,MAKjC,OAJKglD,KACD3G,EAAMA,EAAIztB,UAAWC,UAAWjxC,KAAKqoC,WAAW8I,QAAQ,uBAAyB+uB,EAAShvB,QAASlxC,KAAKqoC,WAAW8I,QAAQ,4BAC/HstB,EAAMA,EAAIwG,QACVxG,EAAIr6B,UAAU,SAAU1a,GAAO,MAAOsV,GAAMwlC,WAAW7+D,KAAK+jB,IAAS,aAAiB,cAC/E+0C,EAAI3P,MAAM,KAErB/nD,EAAW1G,UAAU6gE,YAAc,SAAUroC,EAAI6mC,GAC7C,GAAI1gC,GAAQh/B,KACRy+D,EAAMz+D,KAAKmoC,MAAM1L,eAAe5D,GAChCuB,MAAOvB,EAAI6mC,MAAOA,IACnBn1D,IAAI,SAAU1T;mBAAK,MAAOA,GAAEupB,OAC1B42B,GAAG,SAAUngD,GACVmoC,EAAMwsB,WACNxsB,EAAMwsB,SAASnvB,KAAKqjC,MAAQ7oE,EAAE6oE,MAC9B1gC,EAAMslC,gBAAgB3+D,KAAKq5B,EAAMwsB,SAASnvB,QAKlD,OAFAoiC,GAAMA,EAAIwG,QACVxG,EAAInnB,gBACGmnB,GAEX13D,EAAa2wB,GACT7yB,EAAOk0B,aACPd,EAAW,qBAAsB9/B,EAAI2jC,UAAW50B,EAAgBC,cAAeW,EAAcE,iBAAkBxH,EAAa4uC,cAAesI,EAAS6B,UACrJxyC,KAGPrP,GAAQqP,WAAaA,IAIlB+qC,qBAAqB,GAAGosB,kBAAkB,GAAGiF,gBAAgB,GAAG/8D,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBz4C,aAAa,aAAasF,KAAO,SAASq/D,IAAI,SAAS/uE,EAAQkB,EAAOJ,GAC7M,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB+P,EAAqB,WACrB,QAASA,KACL3G,KAAKogB,QAYT,MAVAzZ,GAAkBtG,UAAUulE,UAAY,SAAUtnB,EAAQtvC,GACtDhP,KAAKogB,KAAKk+B,GAAUtvC,GAExBrI,EAAkBtG,UAAUmoC,UAAY,SAAU8V,GAC9C,MAAOt+C,MAAKogB,KAAKk+B,IAErB33C,EAAoB+wB,GAChB7yB,EAAOk0B,aACPd,EAAW,yBACZtxB,KAGPjP,GAAQiP,kBAAoBA,IAIzBP,gBAAgB,kBAAkBy/D,IAAI,SAASjvE,EAAQkB,EAAOJ,GACjE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8nC,EAAO9nC,EAAQ,QACfsQ,EAAkBtQ,EAAQ,mBAC1BqQ,EAAqB,WACrB,QAASA,GAAkB61D,GACvB,GAAI99B,GAAQh/B,IACZA,MAAK88D,eAAiBA,EACtB98D,KAAKqrD,YACDqX,SAAU,GACV/8D,KAAM,GACNmgE,gBAAiB,GAAIpnC,GAAKwF,QAC1B6hC,YAAa,GAAIrnC,GAAKwF,QACtBqnB,QAAS,GACTgV,eAAYxzD,IAEhB/M,KAAKgmE,QAAU,GAAItnC,GAAKwF,QACxBlkC,KAAK88D,eAAe8B,oBACfqH,cAAcjmE,KAAKgmE,QAAS,SAAUnH,EAAQqH,GAAU,OAAUrH,OAAQA,EAAQqH,OAAQA,KAC1F9hC,UAAU,SAAUhkB,GACrB4e,EAAM8sB,SAAW1rC,EAAKy+C,OAAOrmB,QAC7B,IAAIvpB,EACA7O,GAAK8lD,SACLj3C,EAAQ7O,EAAKy+C,OAAOrmB,SAAS3S,UAAU,SAAU5uC,GAAK,MAAOA,GAAE20D,aAAexrC,EAAK8lD,UAEnFlnC,EAAM/P,UADGliB,IAATkiB,IAAgC,GAAVA,EACR,EAEAA,IA2C1B,MAxCA3uB,QAAOuF,eAAeoB,EAAmB,aACrCnB,IAAK,WACD,MAAO,aAEXC,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAeoB,EAAmB,mBACrCnB,IAAK,WACD,MAAO,mBAEXC,YAAY,EACZC,cAAc,IAElBiB,EAAkB5G,UAAU8lE,MAAQ,SAAUD,GAAUlmE,KAAKgmE,QAAQrgE,KAAKugE,IAC1E5lE,OAAOuF,eAAeoB,EAAkB5G,UAAW,SAC/CyF,IAAK,WACD,MAAO9F,MAAKomE,QAEhBv1D,IAAK,SAAUpD,GACXzN,KAAKomE,OAAS34D,EACTzN,KAAK8rD,WAGN9rD,KAAKqrD,WAAWqX,SADR,IAARj1D,EAC2B,KAEA,iCAAmCA,EAAM,GACpEA,EAAM,IAAMzN,KAAK8rD,SAASl0D,OAC1BoI,KAAKqrD,WAAW1lD,KAAO,KAEvB3F,KAAKqrD,WAAW1lD,KAAO,iCAAmC8H,EAAM,GACpEzN,KAAKqrD,WAAWE,QAAU,gCAAkC99C,IAEhE1H,YAAY,EACZC,cAAc,IAElBiB,EAAoBywB,GAChB7yB,EAAOk0B,aACPd,EAAW,qBAAsB/wB,EAAgBC,iBAClDF,KAGPvP,GAAQuP,kBAAoBA,IAIzBi3D,kBAAkB,GAAG93D,gBAAgB,gBAAgBE,KAAO,SAAS+/D,IAAI,SAASzvE,EAAQkB,EAAOJ,GACpG,YA4BA,SAASsS,GAASo3B,GACd,MAAQA,IAAwB,gBAATA,KAAsBt3B,MAAMF,QAAQw3B,IAAkB,OAATA,EAExE,QAASklC,GAAU1uC,EAAQ1mB,GACvB,GAAIQ,GAASpR,OAAOgjC,UAAW1L,EAe/B,OAdI5tB,GAAS4tB,IAAW5tB,EAASkH,IAC7B5Q,OAAOyxB,KAAK7gB,GAAQ3L,QAAQ,SAAU6K,GAC9BpG,EAASkH,EAAOd,IACVA,IAAOwnB,GAGTlmB,EAAOtB,GAAOk2D,EAAU1uC,EAAOxnB,GAAMc,EAAOd,IAF5C9P,OAAOgjC,OAAO5xB,GAASuF,KAASA,EAAG7G,GAAOc,EAAOd,GAAM6G,IAK3D3W,OAAOgjC,OAAO5xB,GAAS60D,KAASA,EAAGn2D,GAAOc,EAAOd,GAAMm2D,GAE3D,IAAItvD,GAAIsvD,IAGT70D,EAEX,QAAS80D,GAAmB7tE,GAExB,QAAS8tE,GAAQrlC,EAAMnS,EAAOxC,GAC1B,GAAI6sC,GAAU7sC,EAAS,IAAMwC,CAC7By3C,GAAgBpN,GAAWl4B,EAAKiY,aAC5BjY,EAAK6M,UACL7M,EAAK6M,SAAS1oC,QAAQ,SAAUohE,EAAIC,GAAO,MAAOH,GAAQE,EAAIC,EAAKtN,KAL3E,GAAIoN,KAaJ,OALA/tE,GAAE6/C,SAASjzC,QAAQ,SAAU67B,EAAMnS,GAAS,MAAOw3C,GAAQrlC,EAAMnS,EAAO,WAMpE43C,eAJAC,MAAOnuE,EAAEmlC,YACTipC,UAAWL,IA5DnB,GAAI3mE,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGiqB,EAAWniD,MAAQA,KAAKmiD,SAAY,SAAUC,EAAYC,GAC1D,MAAO,UAAUzqB,EAAQxnB,GAAOiyC,EAAUzqB,EAAQxnB,EAAKgyC,KAEvDv9C,EAASjO,EAAQ,iBACjBowE,EAAkBpwE,EAAQ,gBAC9Bc,GAAQuvE,gBAAkBD,EAAgBC,gBAC1CvvE,EAAQskE,cAAgBgL,EAAgBhL,cACxCtkE,EAAQsQ,iBAAmBg/D,EAAgBh/D,gBAC3C,IAAId,GAAkBtQ,EAAQ,mBAC1B8nC,EAAO9nC,EAAQ,QACfi2D,EAAYj2D,EAAQ,sBACpB4Q,EAA6B5Q,EAAQ,8BACrCgR,EAAgChR,EAAQ,iCAwCxCswE,EAAoB,WACpB,QAASA,GAAiBp2D,GACtB9Q,KAAK8Q,QAAUA,EAgBnB,MAdAo2D,GAAiB7mE,UAAU8mE,eAAiB,SAAU3xC,GAClD,GAAI4xC,GAAO1oC,EAAKa,WAAW8nC,YAAYC,OAAOC,OAAO,oBAAsB/xC,EAAO,cAClF,OAAOx1B,MAAK8Q,QAAQ8tD,oBACfv/B,KAAK,GACLC,QAAQ,SAAUzX,GAAS,MAAOA,GAAM2/C,oBACtC3/C,EAAM2/C,mBAAmB9iD,QAAQ8Q,IAAS,GAC1CkJ,EAAKa,WAAW8nC,YAAYC,OAAOC,OAAO1a,EAAUlyB,WAAWW,eAAe,0BAA4B9F,EAAO,SAASiF,IAAM,SAASojB,KAAK,SAAUhnD,GAAK,MAAOyvE,GAAUE,EAAmB3+C,GAAQhxB,OACzM6nC,EAAKa,WAAWqgB,GAAG4mB,EAAmB3+C,MACxCo+C,cAAcmB,EAAM,SAAUK,EAAWC,GAAgB,MAAOpB,GAAUoB,EAAcD,MAEjGP,EAAmBxvC,GACf7yB,EAAOk0B,aACPd,EAAW,qBAAsB/wB,EAAgBC,iBAClD+/D,KAGPxvE,GAAQwvE,iBAAmBA,CAC3B,IAAIn/D,GAA4B,SAAUrH,GAEtC,QAASqH,GAAyB4/D,EAA2B72D,EAAS82D,EAAeC,EAA2BC,EAA0BC,GACtI,GAAI/oC,GAAQh/B,IACZU,GAAO/I,KAAKqI,KAAM4nE,EAAeC,GACjC7nE,KAAK2nE,0BAA4BA,EACjC3nE,KAAK8Q,QAAUA,EACf9Q,KAAK8nE,yBAA2BA,EAChC9nE,KAAK+nE,sBAAwBA,EAC7B/nE,KAAK81C,UAAY,GAAIpX,GAAKt5B,cAAc,GACxCpF,KAAKg2C,aAAe,GAAItX,GAAKt5B,cAAc,GAC3CpF,KAAK8Q,QAAQ8tD,oBAAoBx6B,UAAU,SAAUzrC,IAChD+H,EAAOL,UAAU2nE,SAASrwE,KAAKqnC,QAAcz5B,QAAQ,SAAUsc,GAAK,MAAOnhB,GAAOL,UAAU4nE,WAAWtwE,KAAKqnC,EAAOnd,IACpH,IAAIqmD,GAAkBvvE,EAAE6uE,qBAAuB,MAC3CW,EAAQnpC,EAAMopC,kBAAoBppC,EAAM8oC,yBAAyBtL,gCAAgCv2B,OAAO,SAAUlvC,GAAK,OAA2E,GAApEmxE,EAAeriC,UAAU,SAAU3uC,GAAK,MAAOA,KAAMH,EAAES,QACzLkJ,GAAOL,UAAUgoE,eAAe1wE,KAAKqnC,EAAOmpC,EAAM,GAAG3wE,MACrDwnC,EAAM8W,UAAUnwC,KAAKwiE,EACrB,IAAIG,GAAWH,EAAM,GAAG3wE,IACxB,IAAI+wE,WAAaA,UAAUjuC,SAAU,CACjC,GAAIkuC,GAAgBD,UAAUjuC,SAAS1a,MAAM,KAAK,GAAG5M,eACsB,GAAvEm1D,EAAMtiC,UAAU,SAAUhkB,GAAK,MAAOA,GAAErqB,OAASgxE,MACjDF,EAAWE,GAEnBxpC,EAAM6W,IAAIyyB,KAwBlB,MA9CAvoE,GAAUgI,EAA0BrH,GAyBpCqH,EAAyB1H,UAAUw1C,IAAM,SAAUvb,GAC/C,GAAI0E,GAAQh/B,IACZA,MAAKyoE,qBAAuBnuC,CAC5B,IAAImkC,GAAM/9D,EAAOL,UAAUw1C,IAAIl+C,KAAKqI,KAAMs6B,EAC1Ct6B,MAAKg2C,aAAarwC,KAAK20B,GACvBt6B,KAAKi2C,UAAU3b,EACf,IAAIouC,GAAe1oE,KAAK8nE,yBAAyBrL,4BAA4Bj+B,KAAK,SAAU7d,GAAK,MAAOA,GAAEnpB,OAAS8iC,GAEnH,OADAt6B,MAAK2nE,0BAA0BhsC,8BAA8B+sC,EAAahM,UAAUt4B,UAAU,SAAUhtC,GAAK,MAAO4nC,GAAM+oC,sBAAsB3D,sBAAsBhtE,EAAEgpB,QACjKq+C,GAEX12D,EAAyB1H,UAAU41C,UAAY,SAAU3b,GACrDt6B,KAAK2oE,eAAiB3oE,KAAK8nE,yBAAyBrL,4BAA4Bj+B,KAAK,SAAU7d,GAAK,MAAOA,GAAEnpB,OAAS8iC,IAAaoiC,UAEvI30D,EAAyB1H,UAAUggB,UAAY,WAC3C,MAAOrgB,MAAK2oE,gBAEhB5gE,EAA2B2vB,GACvB7yB,EAAOk0B,aACPopB,EAAQ,EAAGt9C,EAAOs/C,YAClBlsB,EAAW,qBAAsB40B,EAAUnxB,0BAA2Bx0B,EAAgBC,cAAe6/D,EAAgBC,gBAAiBD,EAAgB4B,0BAA2BphE,EAA2BC,yBAA0BG,EAA8BC,+BACrQE,IAELi/D,EAAgBh/D,iBAClBtQ,GAAQqQ,yBAA2BA,EACnCrQ,EAAQ0Q,cAAgBL,GAClBtD,QAASuiE,EAAgBh/D,iBAAkBpD,YAAamD,IACxDtD,QAASuiE,EAAgBC,gBAAiB4B,SAAU3B,IACpDziE,QAASI,EAAOikE,eAAgBC,SAAU/B,EAAgBhL,cAAexZ,OAAO,MAInF1Q,qBAAqB,GAAGk3B,6BAA6B,GAAG9K,kBAAkB,GAAG+K,gCAAgC,GAAG7iE,gBAAgB,gBAAgB8iE,gBAAgB,gBAAgB5iE,KAAO,SAAS6iE,IAAI,SAASvyE,EAAQkB,EAAOJ,GAC/N,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8nC,EAAO9nC,EAAQ,QACf6P,EAAe,WACf,QAASA,KACLzG,KAAKopE,SAAW,GAAI1qC,GAAK2qC,iBAAkBC,UAAU,EAAOC,YAAY,IACxEvpE,KAAKwpE,gBAAkB,GAAI9qC,GAAKwF,QAChClkC,KAAKypE,eAAiBzpE,KAAKwpE,gBAAgBE,aAAa,KACxD1pE,KAAKo/B,aAAep/B,KAAKopE,SAASnjC,OAAO,SAAUhvC,GAAK,MAAOA,GAAEqyE,WAAa/+D,IAAI,cAoBtF,MAlBAjK,QAAOuF,eAAeY,EAAYpG,UAAW,mBACzCyF,IAAK,WAAc,MAAO9F,MAAK2pE,WAC/B94D,IAAK,SAAUpD,GACXzN,KAAK2pE,UAAYl8D,EACjBzN,KAAKopE,SAASzjE,MAAO2jE,WAAY77D,EAAKm8D,QAASn8D,EAAK87D,YAAY,KAEpExjE,YAAY,EACZC,cAAc,IAElBS,EAAYpG,UAAU8+B,aAAe,WACjCn/B,KAAK2pE,UAAY,KACjB3pE,KAAKopE,SAASzjE,MAAO2jE,UAAU,EAAQM,QAAS,KAAML,YAAY,EAAOpqC,cAAc,IACvFn/B,KAAKwpE,gBAAgB7jE,KAAK,OAE9Bc,EAAcixB,GACV7yB,EAAOk0B,aACPd,EAAW,yBACZxxB,KAGP/O,GAAQ+O,YAAcA,IAInBL,gBAAgB,gBAAgBE,KAAO,SAASujE,IAAI,SAASjzE,EAAQkB,EAAOJ,GAC/E,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtG4xC,EAAclzE,EAAQ,cAC1Bc,GAAQqyE,UAAYD,EAAYC,SAChC,IAAIC,GAAepzE,EAAQ,eAC3Bc,GAAQuyE,WAAaD,EAAaC,UAClC,IAAIplE,GAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,wBACrBszE,EAAiB,WACjB,QAASA,GAAcrrC,GACnB7+B,KAAK6+B,aAAeA,EAYxB,MAVAqrC,GAAc7pE,UAAU8pE,YAAc,SAAUC,EAAOC,GACnD,MAAOrqE,MAAK6+B,aAAauqC,SACpBnjC,OAAO,SAAU5J,GAAQ,MAAOA,GAAKktC,aACrCh/D,IAAI,SAAU8xB,GAAQ,MAAOA,GAAKitC,UAAYjtC,EAAKutC,UAAYvtC,EAAKutC,QAAQU,SAC5EjrC,KAAK,IAEd6qC,EAAgBxyC,GACZ7yB,EAAOk0B,aACPd,EAAW,qBAAsB+P,EAAWvhC,eAC7CyjE,KAGPxyE,GAAQwyE,cAAgBA,IAIrBK,uBAAuB,oBAAoBC,cAAc,GAAGC,eAAe,GAAGrkE,gBAAgB,kBAAkBskE,IAAI,SAAS9zE,EAAQkB,EAAOJ,GAC/I,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8nC,EAAO9nC,EAAQ,QACfmxC,EAAYnxC,EAAQ,uBACpB+zE,EAAS/zE,EAAQ,wBACjBoxC,EAAapxC,EAAQ,wBACrBg0E,EAAgB,WAChB,QAASA,GAAaC,EAAUjsC,EAAQud,EAAOtd,EAAcisC,GACzD9qE,KAAK6qE,SAAWA,EAChB7qE,KAAK4+B,OAASA,EACd5+B,KAAKm8C,MAAQA,EACbn8C,KAAK6+B,aAAeA,EACpB7+B,KAAK8qE,QAAUA,EA2CnB,MAzCAF,GAAavqE,UAAU0qE,OAAS,SAAU3xC,GACtCp5B,KAAKgrE,mBAAoB,EACzBhrE,KAAK6qE,SAAS12B,OAAO,YAAc/a,EAAY,aAAejzB,KAAM,IAAK8kE,OAAQjrE,KAAK8qE,QAAQj+B,cAAcq+B,SAASC,WACrHnrE,KAAK6qE,SAAS12B,OAAO,YAAc/a,EAAY,QAAUjzB,KAAM,IAAK8kE,OAAQjrE,KAAK8qE,QAAQj+B,cAAcq+B,SAASC,WAChHnrE,KAAK6+B,aAAasf,gBAAkB,MAExCysB,EAAavqE,UAAU+qE,sBAAwB,WAC3C,GAAIpsC,GAAQh/B,IAEZ,OADAA,MAAKgrE,mBAAoB,EAClBhrE,KAAK4+B,OAAO/D,iBACdyE,QAAQ,SAAU5V,GACnB,MAAOA,GAAItJ,KAAKya,eACVmE,EAAMJ,OAAOhE,0BACVrwB,IAAI,SAAU1T,GAAK,QAASA,EAAEupB,KAAK8e,SACnCD,MAAM,SAAUsoB,GAAK,MAAO7oB,GAAKa,WAAWqgB,IAAG,KAClDlhB,EAAKa,WAAWqgB,IAAG,MAGjCgrB,EAAavqE,UAAUgrE,uBAAyB,SAAUhvC,GAEtD,MADAr8B,MAAKgrE,mBAAoB,EAClBhrE,KAAK4+B,OAAO9D,MAAMuB,GAAM9xB,IAAI,WAAc,OAAO,IAAS00B,MAAM,WAAc,MAAOP,GAAKa,WAAWqgB,IAAG,MAEnHgrB,EAAavqE,UAAUk+B,OAAS,SAAUnF,GACtC,MAAKp5B,MAAK6qE,SAAS/kE,IAAI,YAAcszB,EAAY,QAE1Cp5B,KAAKm8C,MAAM5d,SAASh0B,IAAI,WAAc,OAAO,IAAS00B,MAAM,WAAc,MAAOP,GAAKa,WAAWqgB,IAAG,KADhGlhB,EAAKa,WAAWqgB,IAAG,IAGlCgrB,EAAavqE,UAAUirE,YAAc,WACjC,GAAItsC,GAAQh/B,KACRy+D,EAAMz+D,KAAKm8C,MAAMr2C,MAAMkrC,SAAS,YAMpC,OALAytB,GAAIr6B,UAAU,SAAU1a,GACpBsV,EAAMH,aAAasf,gBAAkBz0B,EAAItJ,MAC1C,SAAU62B,GACTjY,EAAMH,aAAasf,gBAAkB,OAElCsgB,GAEXmM,EAAelzC,GACX7yB,EAAOk0B,aACPd,EAAW,qBAAsB0yC,EAAOY,cAAexjC,EAAU5vC,IAAIwiC,WAAYoN,EAAU5vC,IAAImmC,UAAW0J,EAAWvhC,YAAauhC,EAAW//B,aAC9I2iE,KAGPlzE,GAAQkzE,aAAeA,IAIpBY,sBAAsB,mBAAmBjB,uBAAuB,oBAAoBnkE,gBAAgB,gBAAgBqlE,uBAAuB,uBAAuBnlE,KAAO,SAASolE,IAAI,SAAS90E,EAAQkB,EAAOJ,GACjNI,EAAOJ,QAAU,ssCACXi0E,IAAI,SAAS/0E,EAAQkB,EAAOJ,GAClC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBg5C,EAAsBh5C,EAAQ,iCAC9BoxC,EAAapxC,EAAQ,wBACrBg1E,EAAiBh1E,EAAQ,kBACzB8gD,EAAW9gD,EAAQ,mBACnBk1C,EAAel1C,EAAQ,0BACvBmzE,EAAa,SAAUrpE,GAEvB,QAASqpE,GAAU8B,EAAO/zB,EAASg0B,EAAiBh7D,EAAS+tB,GACzDn+B,EAAO/I,KAAKqI,MACZA,KAAK6rE,MAAQA,EACb7rE,KAAK83C,QAAUA,EACf93C,KAAK8rE,gBAAkBA,EACvB9rE,KAAK8Q,QAAUA,EACf9Q,KAAK6+B,aAAeA,EACpB7+B,KAAK+rE,YAAeC,SAAU,GAAIC,SAAU,IAiChD,MAzCAlsE,GAAUgqE,EAAWrpE,GAUrBqpE,EAAU1pE,UAAUioC,SAAW,WAC3B,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBACDlF,KAAK8rE,gBAAgBxL,OAAOl8B,UAAU,SAAUvtC,GAAK,MAAOmoC,GAAMktC,MAAQr1E,EAAQ,OAClFmJ,KAAK6+B,aAAauqC,SAAShlC,UAAU,SAAUhkB,GACtCA,EAAKkpD,WAELlpD,EAAKwpD,QAAQU,SACVtrC,EAAMktC,MACNltC,EAAM8Y,QAAQgB,cAAc9Z,EAAMktC,OAElCltC,EAAM8Y,QAAQgB,cAAc,SAGxC94C,KAAK8Q,QAAQ8tD,oBAAoBx6B,UAAU,SAAUvc,GAAS,MAAOmX,GAAMmtC,MAAQtkD,EAAMukD,iBAEjGrC,EAAU1pE,UAAUgsE,MAAQ,WACxB,GAAIrtC,GAAQh/B,IACZA,MAAKw/C,MAAO,EACZx/C,KAAK6rE,MAAMR,uBAAuBrrE,KAAK+rE,YAAY3nC,UAAU,SAAUy7B,GAC/DA,EACA7gC,EAAM6sC,MAAMP,cAGZtsC,EAAMstC,QAAS,GACpB,KAAM,WAAc,MAAOttC,GAAMwgB,MAAO,KAE/CuqB,EAAYryC,GACR7yB,EAAO0kC,WAAYE,SAAU7yC,EAAQ,oBAAqB8yC,SAAU5xC,EAAO+gC,GAAI0S,YAAaO,EAAajwC,uBAAwBiwC,EAAarvC,cAC9Iw7B,EAAW,qBAAsB2zC,EAAehB,aAAclzB,EAAS6B,OAAQ7B,EAAS8U,eAAgBxkB,EAAW7gC,cAAe6gC,EAAWvhC,eAC9IsjE,IAELn6B,EAAoB3qC,kBACtBvN,GAAQqyE,UAAYA,IAIjBwC,yBAAyB,sBAAsBC,gCAAgC,6BAA6BjC,uBAAuB,oBAAoBkC,iBAAiB,GAAGC,mBAAmB,GAAGtmE,gBAAgB,gBAAgBqzC,kBAAkB,oBAAoBkzB,IAAI,SAAS/1E,EAAQkB,EAAOJ,GACtSI,EAAOJ,QAAU,yXACXk1E,IAAI,SAASh2E,EAAQkB,EAAOJ,GAClC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,wBACrBg5C,EAAsBh5C,EAAQ,iCAC9B8gD,EAAW9gD,EAAQ,mBACnBqzE,EAAc,SAAUvpE,GAExB,QAASupE,GAAWn5D,GAChBpQ,EAAO/I,KAAKqI,MACZA,KAAK8Q,QAAUA,EAcnB,MAjBA/Q,GAAUkqE,EAAYvpE,GAKtBupE,EAAW5pE,UAAUioC,SAAW,WAC5B,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBAAkBlF,KAAK8Q,QAAQ8tD,oBAAoBx6B,UAAU,SAAUvc,GAAS,MAAOmX,GAAMmtC,MAAQtkD,EAAMukD,iBAEpHnC,EAAavyC,GACT7yB,EAAO0kC,WACHE,SAAU7yC,EAAQ,qBAClB8yC,SAAU5xC,EAAO+gC,GACjB0S,YAAamM,EAAS4B,qBAE1BrhB,EAAW,qBAAsB+P,EAAW7gC,iBAC7C8iE,IAELr6B,EAAoB3qC,kBACtBvN,GAAQuyE,WAAaA,IAIlBuC,gCAAgC,6BAA6BjC,uBAAuB,oBAAoBsC,oBAAoB,GAAGzmE,gBAAgB,gBAAgBqzC,kBAAkB,oBAAoBqzB,KAAK,SAASl2E,EAAQkB,EAAOJ,GACrOI,EAAOJ,QAAU,uSACXq1E,KAAK,SAASn2E,EAAQkB,EAAOJ,GACnC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB63D,EAAqB73D,EAAQ,6BAC7BoxC,EAAapxC,EAAQ,uBACrB2iD,EAAS3iD,EAAQ,mBACjBo2E,EAAsBp2E,EAAQ,gCAC9Bq2E,EAAer2E,EAAQ,gBACvBs2E,EAAet2E,EAAQ,yBACvB2/C,EAAQ3/C,EAAQ,8BAChBu2E,EAAiBv2E,EAAQ,yBACzBoO,EAAKpO,EAAQ,QACbw2E,EAAgB,SAAU1sE,GAE1B,QAAS0sE,GAAat8D,EAASgnC,EAAStB,EAAO62B,EAAeC,EAAejlC,EAAY6B,EAA6ByN,GAClHj3C,EAAO/I,KAAKqI,MACZA,KAAK8Q,QAAUA,EACf9Q,KAAK83C,QAAUA,EACf93C,KAAKw2C,MAAQA,EACbx2C,KAAKstE,cAAgBA,EACrBttE,KAAKqoC,WAAaA,EAClBroC,KAAKkqC,4BAA8BA,EACnClqC,KAAK23C,eAAiBA,EACtB33C,KAAKutE,aAAe,GAAIvoE,GAAGk/B,QAC3BlkC,KAAK6+D,OAAS/tD,EAAQ+tD,OACtBroB,EAAMg3B,qBAAuBH,EAsDjC,MAlEAttE,GAAUqtE,EAAc1sE,GAcxB0sE,EAAa/sE,UAAUotE,YAAc,SAAU5lD,GAC3C,GAAImX,GAAQh/B,IACZ,IAAI6nB,IAAU7nB,KAAK+wC,aAAc,CAC7B/wC,KAAK+wC,aAAelpB,EACpB7nB,KAAK8Q,QAAQigC,aAAelpB,EAC5B7nB,KAAKkF,gBACDlF,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUzgC,GAAK,MAAOA,aAAa+zC,GAAOlB,gBAChEjU,UAAU,SAAU5+B,GACrB,GAAI+nE,EACCvuC,GAAM8Y,QAAQ41B,YAAYliB,SAAS/wB,IAAIunC,WAAW,UAClDhjC,EAAM8Y,QAAQ41B,YAAYliB,SAAS/wB,IAAIunC,WAAW,WAClDhjC,EAAM8Y,QAAQ41B,YAAYliB,SAAS/wB,IAAIunC,WAAW,aACnDuL,GAAe,GACnBhyB,WAAW,WACPvc,EAAMuuC,aAAa5nE,KAAK4nE,IACzB,KAGX,IAAII,GAAW,WAAc,MAAO3uC,GAAMqJ,WAAWviC,IAAI,uBAAuBs+B,UAAU,SAAUntC,GAAK,MAAO+nC,GAAMsuC,cAAcK,SAAS12E,KAC7I+I,MAAKqoC,WAAW2N,aAAa5R,UAAUupC,GACvC3tE,KAAKkqC,4BAA4B97B,OAA+C,MAAxCpO,KAAK+wC,aAAaisB,mBACpDh9D,KAAK+wC,aAAaisB,mBAAqB,MAGrDoQ,EAAa/sE,UAAUutE,4BAA8B,SAAUC,GAC3D,GAAIA,EAAkB,CAClB,GAAIC,GAAYhxB,SAASixB,cAAc,SACvCD,GAAUltE,KAAO,kBACjBktE,EAAUE,IAAM,yDAChBF,EAAUG,QAAU,QACpBH,EAAUI,aAAa,qBAAsBL,GAC7C/wB,SAASC,gBAAgBoxB,YAAYL,EACrC,IAAIM,GAAoBtxB,SAASixB,cAAc,SAC/CK,GAAkBxtE,KAAO,kBACzBwtE,EAAkB1/B,UAAY,gCAC9BoO,SAASC,gBAAgBoxB,YAAYC,KAG7ChB,EAAa/sE,UAAUioC,SAAW,WAC9BtoC,KAAKytE,YAAYztE,KAAK8Q,QAAQiuD,WAC9B/+D,KAAK4tE,4BAA4B5tE,KAAK+wC,aAAas9B,iCAEvDjB,EAAe11C,GACX7yB,EAAO0kC,WACHC,SAAU,gBACVC,SAAU7yC,EAAQ,cAClB8yC,SAAU5xC,EAAO+gC,GACjB0S,YAAagO,EAAOD,kBAAmB2zB,EAAaqB,oBAAqBrB,EAAasB,oBAAqBrB,EAAa7zE,iBAAkB8zE,EAAeqB,cACzJl5B,eAAgBmZ,EAAmBggB,SAEvCx2C,EAAW,qBAAsB+P,EAAW7gC,cAAeoyC,EAAOA,OAAQhD,EAAMc,MAAOxyC,EAAO8wD,iBAAkBlH,EAAmBggB,MAAOzmC,EAAWjgC,yBAA0BigC,EAAWzgC,2BAA4BygC,EAAWnhC,iBAClOumE,IAELJ,EAAoB/nE,kBACtBvN,GAAQ01E,aAAeA,IAIpBsB,+BAA+B,EAAEC,wBAAwB,sBAAsBC,sBAAsB,oBAAoBC,aAAa,IAAIC,wBAAwB,IAAIC,eAAe,IAAI3oE,gBAAgB,gBAAgB6oD,4BAA4B,4BAA4BxV,kBAAkB,kBAAkBlC,6BAA6B,6BAA6BjxC,KAAO,SAAS0oE,KAAK,SAASp4E,EAAQkB,EAAOJ,GAC/Z,YACA,IAAIu3E,GAA6Br4E,EAAQ,qCACrCs4E,EAAQt4E,EAAQ,SAChBiO,EAASjO,EAAQ,iBACjB8N,EAAU9N,EAAQ,kBAClB2iD,EAAS3iD,EAAQ,mBACjBitC,EAASjtC,EAAQ,iBACjBgjC,EAAShjC,EAAQ,iBACjBmxC,EAAYnxC,EAAQ,sBACpBoxC,EAAapxC,EAAQ,uBACrB4J,EAAe5J,EAAQ,cACvBywD,EAAUzwD,EAAQ,oBAClB+zE,EAAS/zE,EAAQ,wBACjBg1E,EAAiBh1E,EAAQ,0BACzB63D,EAAqB73D,EAAQ,kCACjCA,GAAQ,OACR,IAAIu4E,GAASv4E,EAAQ,iBACjBw4E,EAAiBx4E,EAAQ,kBACzB2/C,EAAQ3/C,EAAQ,6BACpB,KAAK0wE,OAAOC,OAAQ,CAChB4H,EAAOE,gBACP,IAAIC,GAAU,SAAU70C,EAAK1lB,GACzB,GAAIw6D,GAAM,GAAIC,eACdD,GAAIn4B,KAAK,MAAO3c,GAAK,GACrB80C,EAAIE,aAAe,OACnBF,EAAIG,OAAS,WACT,GAAIxwC,GAASqwC,EAAIrwC,MACjB,IAAc,KAAVA,EAAe,CACf,GAAIywC,GAAWJ,EAAII,QACK,iBAAbA,KACPA,EAAW9vC,KAAKO,MAAMuvC,IAC1B56D,EAAS,KAAM46D,OAGf56D,GAASmqB,IAGjBqwC,EAAIpkC,QAEJykC,GAAW,EACXC,EAAa,SAAU7B,EAAK8B,GAC5B,GAAY,wBAAR9B,EACAsB,EAAQ,eAAgB,SAAUr4B,EAAK72B,GAAQ,MAAO0vD,GAAG74B,EAAK72B,SAE7D,IAAI4tD,EAAI56B,SAAS,SAClBk8B,EAAQtB,EAAI+B,UAAU,EAAG/B,EAAIp2E,OAAS,QAAQA,QAAS,SAAUq/C,EAAK72B,GAAQ,MAAO0vD,GAAG74B,EAAK72B,SAE5F,CACD,GAAIja,GAAO6nE,EAAI+B,UAAU,oCAAoCn4E,OAC7D,IAAIg4E,EACA,IACI,GAAIjvD,GAAI/pB,EAAQ,UAAYuP,EAC5B2pE,GAAG,KAAMnvD,GAEb,MAAO7pB,GACHg5E,EAAGh5E,OAGN,CACD,GAAIk5E,GAASlzB,SAASixB,cAAc,SACpCiC,GAAOC,OAAQ,EACfD,EAAOhC,IAAM,yDACbgC,EAAOE,QAAU,WACbJ,EAAG,GAAIv4E,OAAM,iBAAmBy4E,EAAOhC,OAE3CgC,EAAON,OAAS,WACZE,GAAW,CACX,KACI,GAAIjvD,GAAI/pB,EAAQ,UAAYuP,EAC5B2pE,GAAG,KAAMnvD,GAEb,MAAO7pB,GACHg5E,EAAGh5E,KAGXgmD,SAASqzB,qBAAqB,QAAQ,GAAGhC,YAAY6B,MAI7DI,IACJ9I,QAAOC,OAAS,SAAUrvC,GAMtB,MALKk4C,GAAMl4C,KACPk4C,EAAMl4C,GAAK,GAAI8oC,SAAQ,SAAUC,EAASoP,GAAUR,EAAW33C,EAAG,SAAU+e,EAAKvsC,GAAWusC,EACxFo5B,EAAOp5B,GAEPgqB,EAAQv2D,QACT0lE,EAAMl4C,IAGrBovC,OAAOC,OAAO,uBAAuB1pB,KAAK,SAAUghB,GAChD,GAAIyR,IAAkBzR,OAAQA,GAC1B0R,EAAUroE,OAAOgjE,SAASC,SAASvrD,MAAM,KAAK,GAE9Cm/C,EAAYF,EAAOrgC,KAAK,SAAUvnC,GAAK,MAAOA,GAAEmiC,WAAam3C,GACjED,GAAcvR,UAAYA,CAC1B,IAAIyR,IACAC,aAAa,GAEbC,EAAkB7rE,EAAOJ,QAAQ,UAAYskE,SAAUuH,GAC3D,OAAOzsC,GAAO8sC,eAAe5R,GAAWlhB,KAAK,SAAUC,GACnD,GAAI8yB,GAAuBr3B,EAAOs3B,cAAc/yB,EAAOgzB,QAAUC,eAAe,GAChF9B,GAA2B+B,UAAU9B,EAAM9B,cACvCxzC,EAAOq3C,gBACNtG,EAAOY,eAAertE,OAAOysE,EAAOuG,2BACrCtF,EAAehB,aACfnc,EAAmB0iB,wBACnB56B,EAAM66B,oBAAoBnrC,OAAO,SAAUhvC,GAAK,QAASA,EAAE4d,QAC3DkzB,EAAU5vC,IAAIsqC,iBACdmuC,EACAF,EACA1oC,EAAW7/B,0BACV3H,EAAa4uC,cAAevqC,EAAOJ,QAAQjE,EAAa6wE,cAAgBtI,SAAU,GAAIvoE,GAAa6wE,aAAab,OAChH9rE,EAAQ4sE,yBAA0B5sE,EAAQ6sE,iBACzC9sE,QAASI,EAAOikE,eAAgBC,SAAU1hB,EAAQhkD,aAAcm/C,OAAO,IACvE/9C,QAASI,EAAO68D,iBAAkBmH,SAAUuG,EAAeoC,sBAC7D3tC,EAAO4tC,QACTvzE,OAAO4/C,EAAOnO,iBAMrB+hC,qBAAqB,mBAAmBC,mBAAmB,iBAAiB/C,sBAAsB,oBAAoBgD,yBAAyB,GAAGC,QAAQ,IAAIC,iBAAiB,IAAIC,gBAAgB,IAAI3rE,gBAAgB,gBAAgBC,iBAAiB,iBAAiB2zB,gBAAgB,gBAAgBg4C,oCAAoC,oCAAoCv4B,kBAAkB,kBAAkBgyB,uBAAuB,uBAAuBwG,kCAAkC,kCAAkC16B,6BAA6B,6BAA6Bv2C,aAAa,aAAasF,KAAO,SAAS4rE,KAAK,SAASt7E,EAAQkB,EAAOJ,GAC3oB,YAWA,SAASy6E,GAAmB/oE,EAASgpE,EAAUnjD,EAAOiN,GAClD,GAAIm2C,GAAuBn2C,GAAWA,EAAQtkC,QAAUiN,EAAOytE,mBAAmBrR,QAAQ/kC,EAAQ3xB,IAAI,SAAUtT,GAAK,MAAO4N,GAAOJ,QAAQxN,EAAEwZ,MAAQs4D,SAAU9xE,EAAE+X,UACjK,OAAOojE,GAASjd,gBAAgB/rD,EAAS,EAAGvE,EAAOytE,mBAAmBC,sBAAsBF,MAA4BD,EAASI,iBAZrI,GAAI96C,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,gBAKrBc,GAAQy6E,mBAAqBA,CAC7B,IAAIM,GAA+B,WAC/B,QAASA,GAA4BC,EAAgBC,EAAaC,GAC9D5yE,KAAK0yE,eAAiBA,EACtB1yE,KAAK4yE,kBAAoBA,EAqB7B,MAnBAH,GAA4BpyE,UAAUw6C,YAAc,WAChD,GAAI7b,GAAQh/B,IACRA,MAAK6yE,cACL7yE,KAAK4yE,kBAAkBle,iBAAiB10D,KAAK6yE,eAAeh1B,KAAK,SAAUi1B,GAAM,MAAOX,GAAmBW,EAAI9zC,EAAM0zC,eAAgB,EAAG1zC,EAAM9C,WAE9Il8B,KAAK0yE,eAAexyB,SAE5BxoB,GACI7yB,EAAOiqC,MAAM,gBACb7W,EAAW,cAAepzB,EAAOkuE,OAClCN,EAA4BpyE,UAAW,oBAAiB,IAC3Dq3B,GACI7yB,EAAOiqC,MAAM,uBACb7W,EAAW,cAAenuB,QAC3B2oE,EAA4BpyE,UAAW,cAAW,IACrDoyE,EAA8B/6C,GAC1B7yB,EAAOonC,WAAYzC,SAAU,2BAC7BvR,EAAW,qBAAsBpzB,EAAO8wD,iBAAkB9wD,EAAOq6C,YAAar6C,EAAO+wD,qBACtF6c,KAGP/6E,GAAQ+6E,4BAA8BA,IAInCrsE,gBAAgB,kBAAkB4sE,KAAK,SAASp8E,EAAQkB,EAAOJ,GAClE,YACA,IAAIggC,GAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBmxC,EAAYnxC,EAAQ,sBACpB46E,EAAwB,WACxB,QAASA,GAAqBrS,GAC1Bn/D,KAAKm/D,SAAWA,EAcpB,MAZAqS,GAAqBnxE,UAAU1I,KAAO,SAAUs7E,EAAWC,EAAYC,GACnE,GAAIn4C,GAAQh7B,KAAKm/D,SAASr5D,IAAIiiC,EAAU5vC,IAAIohC,YACxCkoC,EAAoB58D,EAAO68D,iBAAiBC,kBAAkBsR,EAAWC,EAC7El4C,GAAMxB,OACFqsB,KAAM4b,IACPnqB,gBACHxnC,QAAQ0pB,MAAMioC,IAElB+P,EAAuB95C,GACnB7yB,EAAOk0B,aACPd,EAAW,qBAAsBpzB,EAAOo+D,YACzCuO,KAGP95E,GAAQ85E,qBAAuBA,IAI5BE,qBAAqB,mBAAmBtrE,gBAAgB,kBAAkBgtE,KAAK,SAASx8E,EAAQkB,EAAOJ,GAC1G,YAyEA,SAASk1D,GAAIjsC,EAAG7K,GACZ,MAAO6K,IAAK7K,EAAK6K,GAErB,QAASvU,GAAQg1B,GACb,QAAKA,EAAKiyC,SAASn2B,SAEd9b,EAAK6jB,QAEH74C,EAAQg1B,EAAK6jB,SAhFxB,GAAIllD,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBgyD,EAAWhyD,EAAQ,mBACnB2iD,EAAS3iD,EAAQ,mBACjBoxC,EAAapxC,EAAQ,wBACrB08E,EAAa18E,EAAQ,0BACrBoO,EAAKpO,EAAQ,QACbg5C,EAAsBh5C,EAAQ,iCAC9B28E,EAAa38E,EAAQ,wBACrB4J,EAAe5J,EAAQ,cACvB2/C,EAAQ3/C,EAAQ,8BAChB48E,EAAiB,SAAU9yE,GAE3B,QAAS8yE,GAAcC,EAAgB3jC,EAAagI,EAASg0B,EAAiBn0B,EAAgB+7B,EAAarrC,EAAY+D,GACnH1rC,EAAO/I,KAAKqI,MACZA,KAAKyzE,eAAiBA,EACtBzzE,KAAK8vC,YAAcA,EACnB9vC,KAAK83C,QAAUA,EACf93C,KAAK8rE,gBAAkBA,EACvB9rE,KAAK23C,eAAiBA,EACtB33C,KAAK0zE,YAAcA,EACnB1zE,KAAKqoC,WAAaA,EAClBroC,KAAKosC,QAAUA,EAkCnB,MA5CArsC,GAAUyzE,EAAe9yE,GAYzB8yE,EAAcnzE,UAAUioC,SAAW,WAC/B,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBACD,CACAlF,KAAKyzE,eAAepoB,WAAW0a,YAAY3hC,UAAU,WAAcpF,EAAMotB,SAASknB,EAAWvyE,oBAAoBkrD,WACjHjsD,KAAKyzE,eAAepoB,WAAWya,gBAAgB1hC,UAAU,WAAcpF,EAAMotB,SAASknB,EAAWvyE,oBAAoBmrD,YACrHlsD,KAAK8vC,YAAY4B,UAAUtN,UAAU,SAAU5H,GAC3CwC,EAAMugC,WAAa/iC,EACdwC,EAAM2Y,eAAe6lB,eAAiBx+B,EAAM2Y,eAAe6lB,cAAcvhC,WAAaO,EAAIH,KAAKJ,UAChG+C,EAAM2Y,eAAe6mB,SAAShiC,EAAIH,KAAKJ,cAKvDu3C,EAAcnzE,UAAU+rD,SAAW,SAAUllC,GACzClnB,KAAK0zE,YAAYtnB,UACbllC,OAAQA,EACRmlC,cAAersD,KAAKyzE,eAAexkD,MACnC68B,SAAU9rD,KAAKyzE,eAAe3nB,SAC9BQ,WAAYtsD,KAAK8rE,gBACjB5gB,OAAQlrD,KAAK83C,QACbsB,MAAO,KAGfo6B,EAAgB97C,GACZ7yB,EAAO0kC,WACHE,SAAU,qDACVC,SAAU5xC,EAAO+gC,GACjB0S,YAAagO,EAAOD,qBAExBrhB,EAAW,qBAAsBs7C,EAAWtsE,kBAAmB+gC,EAAWjhC,WAAYwyC,EAAOA,OAAQA,EAAOiT,eAAgBxkB,EAAWnhC,cAAemhC,EAAWrgC,kBAAmBqgC,EAAWhgC,iBAAkBxH,EAAa4uC,iBAC/NokC,IAEL5jC,EAAoB3qC,kBACtBvN,GAAQ87E,cAAgBA,CAWxB,IAAIG,IACJ,SAAWA,GACPA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAqB,SAAI,GAAK,YAC1CA,IAAeA,MAElB,IAAIC,GAAoB,WACpB,QAASA,GAAiBxnC,EAASynC,EAAU1rC,EAAOurC,EAAat3B,EAAQ8iB,EAAWpuD,EAASgnC,EAASzP,GAClGroC,KAAKosC,QAAUA,EACfpsC,KAAK6zE,SAAWA,EAChB7zE,KAAKmoC,MAAQA,EACbnoC,KAAK0zE,YAAcA,EACnB1zE,KAAKo8C,OAASA,EACdp8C,KAAKk/D,UAAYA,EACjBl/D,KAAK8Q,QAAUA,EACf9Q,KAAK83C,QAAUA,EACf93C,KAAKqoC,WAAaA,EAClBroC,KAAK8zE,UAAY,GAAI9uE,GAAGqkE,gBAAgBsK,EAAWI,QA4IvD,MA1IAH,GAAiBvzE,UAAU2zE,cAAgB,SAAU9lB,EAAWkc,EAAOC,GACnE,GAAIrrC,GAAQh/B,KACRuqB,EAAYvqB,KAAK6zE,SAASxoB,WAAWkV,WACrCnnB,GAAS,EACT66B,EAAa,WACb,GAAI1oB,GAAU6e,EAAM3vC,IAAI,GAAGt0B,KACvBslD,EAAO4e,EAAM5vC,IAAI7a,MAAM,KAAKvP,MAAM,EACtC+oC,GAAQqS,EAAK/mC,QAAQ6mC,EAUrB,KAAK,GATDG,GAAU,KACVvyB,EAAO6F,EAAMluB,QAAQigC,aAAayH,SAQ7BthD,EAAI,EAAGA,EAAIkiD,EAAQ,EAAGliD,KAPjB,SAASA,GACnB,GAAI+3B,GAAQkK,EAAK0M,UAAU,SAAUhvC,GAAK,MAAOA,GAAE+0D,YAAcH,EAAKv0D,IACtE,KAAe,IAAX+3B,EACA,KAAMw8B,GAAKv0D,GAAK,kCACpBw0D,GAAUvyB,EAAKlK,GACfkK,EAAOuyB,EAAQzd,cAGP/2C,EAEZ,OAAOw0D,KAEPnhC,KAAc+oD,EAAWvyE,oBAAoBkrD,SAAWW,EAAIsB,EAAW,SAAU92D,GAAK,MAAOA,GAAEgqE,uBAC/FlT,EAAUkT,qBAEd,IAAI8S,GAA0B,WAC1B,GAAItnB,EAAIsB,EAAW,SAAU92D,GAAK,MAAOA,GAAE+8E,iBAAoB,CAC3D,GAAIr2B,GAASoQ,EAAUimB,eAAe5pD,GAClCk0C,MAAM,EAKV,OAHIA,GADA3gB,YAAkB94C,GAAGu6B,WACfue,EAEA94C,EAAGu6B,WAAWqgB,GAAG9B,GACpB2gB,EAAIznB,GAAG,SAAUo9B,GACfA,EAAGC,OAER94B,WAAW,WACP,GAAI64B,EAAGC,gBAAiBf,GAAW7yE,gBAC/Bu+B,EAAMoN,QAAQsa,KAAK0tB,EAAGC,WAErB,CACD,GAAI7pE,GAAM4pE,EAAGC,KACbrvE,GAAGu6B,WAAWyE,SAAS,KAAK3E,KAAK70B,EAAI5S,QAAQwsC,UAAU,SAAUltC,GAAK,MAAO8nC,GAAMoN,QAAQsa,KAAKl8C,EAAItT,QAEzG,OACJqT,IAAI,SAAU6pE,GAAM,OAAQA,EAAGE,OAGlC,MAAOtvE,GAAGu6B,WAAWqgB,IAAG,IAQ5B20B,EAA0B,WAC1B,MAAI3nB,GAAIsB,EAAW,SAAU92D,GAAK,MAAOA,GAAEi8E,WACnCjnE,EAAQ8hD,GACDlpD,EAAGu6B,WAAWqgB,IAAG,IAGxB5gB,EAAMoN,QAAQ5S,MAAMwF,EAAMqJ,WAAW8I,QAAQ,oCACtCnsC,EAAGu6B,WAAWqgB,IAAG,IAGzB56C,EAAGu6B,WAAWqgB,IAAG,GAkE5B,OAAO56C,GAAGu6B,WAAWi1C,IAlFK,WACtB,MAAIjqD,KAAc+oD,EAAWvyE,oBAAoBkrD,QACtCioB,IAEAlvE,EAAGu6B,WAAWqgB,IAAG,MAcN,WACtB,MAAIgN,GAAIsB,EAAW,SAAU92D,GAAK,MAAOA,GAAEi8E,YAAgB9oD,IAAc+oD,EAAWvyE,oBAAoBkrD,QAC7FsoB,IAGAvvE,EAAGu6B,WAAWqgB,IAAG,MAEN,WACtB,OAAIgN,EAAIsB,EAAW,SAAU92D,GAAK,MAAOA,GAAEq9E,qBACrB1nE,KAAdwd,GAA2BA,IAAc+oD,EAAWvyE,oBAAoBmrD,WACtE+nB,EAAW7S,sBAAuBlT,EAAUwmB,aAoD3C1vE,EAAGu6B,WAAWqgB,IAAG,GAnDjB5gB,EAAM80C,UAAUa,UAAU,SAAUz8C,GAAK,MAAOA,KAAMy7C,EAAWiB,OAASv1C,KAAK,GAAGC,QAAQ,SAAU+qC,GACvG,GAAIA,IAAUsJ,EAAWkB,SAErB,MADA71C,GAAM80C,UAAUnuE,KAAKguE,EAAWI,QACzB/uE,EAAGu6B,WAAWqgB,IAAG,EAG5B,IADAsO,EAAUumB,cAAcpwC,eAAc,IACjC6pB,EAAUumB,cAAc9sC,UACzB,MAAO3iC,GAAGu6B,WAAWqgB,IAAG,EAC5B5gB,GAAM80C,UAAUnuE,KAAKguE,EAAWiB,KAChC,IAAIE,GAAU91C,EAAMod,OAAOuB,UACtBo3B,UAAU,8CAA+C/1C,EAAMqJ,WAAW8I,QAAQ,mBAAoB,SAAU6jC,GAAO,MAAOA,GAAI9sC,OAAOQ,MAAM,UAC/IqsC,UAAU,gDAAiD/1C,EAAMqJ,WAAW8I,QAAQ,mBAAoB,SAAU6jC,GAAO,MAAOA,GAAI9sC,OAAOQ,MAAM,UACjJkV,UAAU5e,EAAMqJ,WAAW8I,QAAQ,sBACnCgG,MAAM,MACNx2C,QAAQq+B,EAAMqJ,WAAW8I,QAAQ,0CACjCiG,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,SAAUn0B,GAAO,MAAOA,IAAQ,WAAc,OAAO,MAC/Gm0B,KAAK,SAAUn0B,GAChB,MAAY,SAARA,EACO1kB,EAAGu6B,WAAWi1C,IAAID,IAA2BL,KAA2BpU,YAC1EjiB,KAAK,SAAUo3B,GAChB,GAAIA,EAAK7uC,MAAM,SAAUvvC,GAAK,MAAOA,KAAO,CACxC,GAAIyvC,GAAS,IACb,IAAI4nB,EAAUwmB,aACVpuC,EAAS4nB,EAAUwmB,eAAe5U,gBACjC,CACD,GAAIJ,GAAQ1gC,EAAMmJ,MAAMw4B,mBAAmBvnB,EAC3C9S,GAAStH,EAAM00C,YAAYlU,wBAAwByU,EAAW7S,oBAAqB1B,GAAO,GAE9F,MAAOp5B,GAAOuX,KAAK,SAAUgiB,GAEzB,MADA7gC,GAAM80C,UAAUnuE,KAAKk6D,EAAU8T,EAAWI,OAASJ,EAAWkB,UACvDhV,IAKX,MADA7gC,GAAM80C,UAAUnuE,KAAKguE,EAAWkB;qCACzB,IAIF,SAARnrD,EACEsV,EAAMmJ,MAAM48B,KAAK/lC,EAAMmJ,MAAMgQ,cAAc/d,OAAO4c,GAAG,WAAc,MAAOhY,GAAM80C,UAAUnuE,KAAKguE,EAAWI,UAAYjU,YAAYjiB,KAAK,WAAc,OAAO,KAGnK7e,EAAM80C,UAAUnuE,KAAKguE,EAAWkB,WACzB,IAGf,OAAO7vE,GAAGu6B,WAAW8nC,YAAYyN,SAMiDvqE,IAAI,SAAUi8B,GAAW,MAAOA,GAAQJ,MAAM,SAAUlvC,GAAK,QAASA,OAExK08E,EAAmBl8C,GACf7yB,EAAOk0B,aACPd,EAAW,qBAAsBz3B,EAAa4uC,cAAemkC,EAAWtsE,kBAAmB+gC,EAAWjhC,WAAYihC,EAAWrgC,kBAAmB4uC,EAAMc,MAAOuR,EAASoa,SAAUh7B,EAAW7gC,cAAeoyC,EAAOA,OAAQvR,EAAWhgC,oBACrO4rE,KAGPl8E,GAAQk8E,iBAAmBA,CAC3B,IAAIsB,GAAa,WACb,QAASA,GAAU7pB,EAAY8pB,EAAMjqB,EAAQzU,EAAW2+B,GACpDp1E,KAAKqrD,WAAaA,EAClBrrD,KAAKm1E,KAAOA,EACZn1E,KAAKkrD,OAASA,EACdlrD,KAAKy2C,UAAYA,EACjBz2C,KAAKo1E,OAASA,EA8BlB,MA5BAF,GAAU70E,UAAU8pE,YAAc,SAAUC,EAAOC,GAC/C,GAAIrrC,GAAQh/B,KACRurD,EAAU6e,EAAM3vC,IAAI,GAAGt0B,KACvBi0B,EAAQhe,SAASiuD,EAAM5vC,IAAI7a,MAAM,KAAK,IACtC6rC,EAAO4e,EAAM5vC,IAAI7a,MAAM,KAAKvP,MAAM,GAClC+oC,EAAQqS,EAAK/mC,QAAQ6mC,GACrBplD,EAAOslD,EAAKp7C,MAAM,EAAG+oC,EACzB,OAAOp5C,MAAKm1E,KAAKzjC,UAAUzL,OAAO,SAAUhvC,GAAK,MAAOA,GAAEolC,KAAKjC,QAAUA,IAAUiF,KAAK,GAAG90B,IAAI,SAAUs3D,GACrG,GAAIhC,GAAU7gC,EAAMqsB,WAAWuW,eAC3Bz7D,KAAMA,EACN07D,SAAUA,EACVM,iBAAkB5W,GAItB,OAFKsU,GAAQ9lB,aACT/a,EAAMq2C,aAAaxT,EAASznC,MAAOj0B,EAAM05D,EAAQ8C,sBAAuB9C,EAAQyC,eAC7EzC,EAAQ9lB,eAGvBm7B,EAAU70E,UAAUg1E,aAAe,SAAUj7C,EAAOj0B,EAAMylD,EAAYjrD,GAClE,GAAIq+B,GAAQh/B,IACZA,MAAKkrD,OAAOkB,UAAU,MAAOhyB,GAAOl8B,OAAOiI,GAAOylD,KAC9CU,WAAY,OACbzO,KAAK,WAAc,MAAO7e,GAAMyX,UAAU3wC,IAAInF,GAAW,8BAA8Bm/D,cAAgBjiB,KAAK,SAAUr4C,GAAK,MAAOw5B,GAAMo2C,OAAO57C,MAAMh0B,MAE5J0vE,EAAYx9C,GACR7yB,EAAOk0B,aACPd,EAAW,qBAAsB+P,EAAWrgC,kBAAmBqgC,EAAWjhC,WAAYwyC,EAAOA,OAAQvR,EAAWhgC,iBAAkBxH,EAAa4uC,iBAChJ8lC,KAGPx9E,GAAQw9E,UAAYA,IAIjBI,yBAAyB,sBAAsB9I,gCAAgC,6BAA6BjC,uBAAuB,oBAAoBxf,kBAAkB,kBAAkB3kD,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBlC,6BAA6B,6BAA6Bv2C,aAAa,aAAasF,KAAO,SAASivE,KAAK,SAAS3+E,EAAQkB,EAAOJ,GACnYI,EAAOJ,QAAU,wpCACX89E,KAAK,SAAS5+E,EAAQkB,EAAOJ,GACnC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,wBACrBmxC,EAAYnxC,EAAQ,uBACpBg5C,EAAsBh5C,EAAQ,iCAC9Bk1C,EAAel1C,EAAQ,0BACvB2iD,EAAS3iD,EAAQ,mBACjB43E,EAAgB,SAAU9tE,GAE1B,QAAS8tE,GAAa3+B,EAAM/+B,EAASgnC,EAASH,GAC1C,GAAI3Y,GAAQh/B,IACZU,GAAO/I,KAAKqI,MACZA,KAAK6vC,KAAOA,EACZ7vC,KAAK8Q,QAAUA,EACf9Q,KAAK83C,QAAUA,EACf93C,KAAK23C,eAAiBA,EACtB33C,KAAKs4B,OAAS,SAAUJ,GACpB,MAAO8G,GAAM6Q,KAAKlX,cAAe88C,WAAYv9C,KAuDrD,MAhEAn4B,GAAUyuE,EAAc9tE,GAYxB8tE,EAAanuE,UAAUq1E,mBAAqB,SAAU1oC,GAClDhtC,KAAK21E,iBAAkB,GAG3Br1E,OAAOuF,eAAe2oE,EAAanuE,UAAW,UAC1CwQ,IAAK,SAAUqnB,GACX,GAAI8G,GAAQh/B,IACRk4B,IACAl4B,KAAKqF,UAAUg6B,KAAK,GAAG+E,UAAU,SAAUntC,GAAK,MAAO+nC,GAAM42C,cAAcv1B,WAEnFt6C,YAAY,EACZC,cAAc,IAElBwoE,EAAanuE,UAAU4/C,SAAW,SAAU7/B,GACxCpgB,KAAK83C,QAAQsU,UAAU,QAAShsC,EAAK6b,YAEzCuyC,EAAanuE,UAAUioC,SAAW,WAC9B,GAAItJ,GAAQh/B,IACZA,MAAK21E,iBAAkB,EACvB31E,KAAKkF,gBACDlF,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUzgC,GAAK,MAAOA,aAAa+zC,GAAOlB,gBAChEjU,UAAU,SAAU5+B,GACjBw5B,EAAM8Y,QAAQ41B,YAAYliB,SAAS/wB,IAAIunC,WAAW,YAClDhjC,EAAMw+B,cAAgB,KACtBx+B,EAAM22C,iBAAkB,MAIpC31E,KAAK23C,eAAeW,qBACflU,UAAU,SAAUhtC,GACrB4nC,EAAMw+B,cAAgBpmE,EACtB4nC,EAAM22C,iBAAkB,KAGhCj+C,GACI7yB,EAAOg3C,UAAU/P,EAAa9uC,uBAC9Bi7B,EAAW,cAAe6T,EAAa9uC,wBACxCwxE,EAAanuE,UAAW,oBAAiB,IAC5Cq3B,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAeod,SAC1Bpd,EAAW,qBAAsBod,WAClCm5B,EAAanuE,UAAW,SAAU,MACrCmuE,EAAe92C,GACX7yB,EAAO0kC,WACHC,SAAU,gBACVE,SAAU5xC,EAAO+gC,GACjB4Q,SAAU7yC,EAAQ,uBAClB20C,YAAaO,EAAa/uC,gBAE9Bk7B,EAAW,qBAAsB8P,EAAU5vC,IAAIigC,aAAc4P,EAAW7gC,cAAeoyC,EAAOA,OAAQvR,EAAWnhC,iBAClH2nE,IAEL5+B,EAAoB3qC,kBACtBvN,GAAQ82E,aAAeA,IAIpBhD,sBAAsB,mBAAmBe,yBAAyB,sBAAsBC,gCAAgC,6BAA6BjC,uBAAuB,oBAAoBsL,sBAAsB,IAAIzvE,gBAAgB,gBAAgBqzC,kBAAkB,oBAAoBq8B,KAAK,SAASl/E,EAAQkB,EAAOJ,GAChUI,EAAOJ,QAAU,oOACXq+E,KAAK,SAASn/E,EAAQkB,EAAOJ,GACnC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,wBACrB2iD,EAAS3iD,EAAQ,mBACjBg5C,EAAsBh5C,EAAQ,iCAC9BoO,EAAKpO,EAAQ,QACbo/E,EAAwB,SAAUt1E,GAElC,QAASs1E,GAAqBC,EAAQnlE,EAASu3B,GAC3C3nC,EAAO/I,KAAKqI,MACZA,KAAKi2E,OAASA,EACdj2E,KAAK8Q,QAAUA,EACf9Q,KAAKqoC,WAAaA,EAClBroC,KAAKkgE,QAAU,GAAIl7D,GAAGk/B,QACtBlkC,KAAK8wD,QAAU,EA0CnB,MAjDA/wD,GAAUi2E,EAAsBt1E,GAShCJ,OAAOuF,eAAemwE,EAAqB31E,UAAW,QAClDyF,IAAK,WACD,MAAO9F,MAAKk2E,OAEhBrlE,IAAK,SAAUqnB,GACXl4B,KAAKk2E,MAAQh+C,EACbl4B,KAAKkgE,QAAQv6D,KAAKuyB,IAEtBnyB,YAAY,EACZC,cAAc,IAElBgwE,EAAqB31E,UAAUioC,SAAW,WACtC,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBACDlF,KAAK8Q,QAAQ8tD,oBAAoBqH,cAAcjmE,KAAKkgE,QAAS,SAAUr4C,EAAOsuD,GAC1E,MAAOtuD,GAAM2wB,SAASha,KAAK,SAAUvnC,GAAK,MAAOA,GAAE20D,YAAcuqB,MAEhElwC,OAAO,SAAUylB,GAClB,MAAOA,MAAaA,EAAQ0V,uBAAyB1V,EAAQ0V,oBAAoBG,qBAEhFn9B,UAAU,SAAUsnB,GACrB,GAAItrC,GAAOsrC,EAAQ0V,oBAAoBG,mBAAmBh3D,IAAI,SAAUtT,GAAK,OAAU2/C,MAAO3/C,EAAEm/E,WAAap3C,EAAMqJ,WAAW8I,QAAQl6C,EAAEo/E,WAAap/E,EAAEo/E,UAAWC,MAAM,IACxKtxE,GAAGu6B,WAAWhyB,KAAKm+C,EAAQ0V,oBAAoBG,mBAAmBh3D,IAAI,SAAUtT,GAAK,MAAOA,GAAEs/E,gBACzFhsE,IAAI,SAAUukD,EAAO7/B,GAAS,MAAOjqB,GAAGu6B,WAAWi3C,MAAM1nB,GAAOvkD,IAAI,WAAc,MAAO0kB,OACzF4wB,YACAzb,UAAU,SAAUnV,GAAS,MAAO7O,GAAK6O,GAAOqnD,MAAO,GAC5D,IAAIjjC,GAAMqY,EAAQ0V,oBAAoBG,mBAAmBrgC,OAAO,SAAUC,EAAKjqC,EAAG+3B,EAAOzkB,GAAO,MAAOykB,IAASzkB,EAAI5S,OAAS,EAAIupC,EAAwB,GAAjBjqC,EAAEq/E,aAAsBp1C,EAAMjqC,EAAEq/E,cAAiB,EACzLv3C,GAAM8xB,QAAU,EAChB9rD,EAAGu6B,WAAWyE,SAASqP,EAAM,KAAKhU,KAAK,KAAK+E,UAAU,SAAUltC,GAAK,MAAO8nC,GAAM8xB,YAClF9xB,EAAM9tB,OAASkP,IAEnBpgB,KAAKi2E,OAAO3V,OAAOl8B,UAAU,SAAU3sC,GACnCunC,EAAMm3C,KAAO1+E,EAAQ,SAIjCu+E,EAAuBt+C,GACnB7yB,EAAO0kC,WAAYE,SAAU7yC,EAAQ,sBAAuB8yC,SAAU5xC,EAAO+gC,KAC7EZ,EAAW,qBAAsBshB,EAAOiT,eAAgBxkB,EAAW7gC,cAAe6gC,EAAWhgC,oBAC9FguE,IAELpmC,EAAoB3qC,kBACtBvN,GAAQs+E,qBAAuBA,CAC/B,IAAIS,GAA4B,WAC5B,QAASA,GAAyBR,EAAQn+B,EAAS+7B,GAC/C7zE,KAAKi2E,OAASA,EACdj2E,KAAK83C,QAAUA,EACf93C,KAAK6zE,SAAWA,EAChB/7B,EAAQM,OAAOnS,OAAO,SAAUhvC,GAAK,MAAOA,aAAasiD,GAAOlB,gBAAkBpS,OAAO,SAAUhvC,GAAK,OAAyC,IAAlCA,EAAEwjC,IAAI/V,QAAQ,iBAA0B0f,UAAU,SAAUntC,GAClK48E,EAASxoB,WAAWkV,YACrBzoB,EAAQsU,UAAU,QAAUE,WAAY2pB,MAOpD,MAJAQ,GAA2B/+C,GACvB7yB,EAAO0kC,WAAYE,SAAU,KAC7BxR,EAAW,qBAAsBshB,EAAOiT,eAAgBjT,EAAOA,OAAQvR,EAAW/gC,qBACnFwvE,KAGP/+E,GAAQ++E,yBAA2BA,IAIhCjK,gCAAgC,6BAA6BjC,uBAAuB,oBAAoBmM,qBAAqB,IAAItwE,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBnzC,KAAO,SAASqwE,KAAK,SAAS//E,EAAQkB,EAAOJ,GACrP,YAkGA,SAASi5E,GAAe9oD,GACpB,GAAI+uD,GAAO,SAAU1lE,GAAU,OAAQA,OAAcgwB,OAAO,SAAUC,EAAK0qB,GAAM,MAAO1qB,GAAIjjC,QAAQ2tD,EAAGgrB,QAASD,EAAK/qB,EAAG5d,iBACpH6oC,KACAC,KACAC,IACI7wE,KAAM,iBACN+nD,UAAW+oB,EAAWjB,uBAGtB7vE,KAAM,cACN+nD,UAAW+oB,EAAWR,0BAW9B,OARAG,GAAK/uD,EAAM2wB,UAAUjzC,QAAQ,SAAUyoE,GACnC,IAAK8I,EAAgB9I,GAAM,CACvB8I,EAAgB9I,IAAO,CACvB,IAAI8G,GAAUxN,OAAOC,OAAOx/B,EAAU5vC,IAAIwiC,WAAWW,eAAe,cAAgB0yC,GAAKvzC,IACzFs8C,GAASpsE,KAAKmqE,GACdA,EAAQj3B,KAAK,SAAUqQ,GAAa,MAAO4oB,GAAgB9I,GAAO9f,OAGnE8S,QAAQ3N,IAAI0jB,GAAUl5B,KAAK,WAC9B,GAAIlO,MACAunC,EAAkB,SAAUC,GAC5B,MAAOA,GAAI5sE,IAAI,SAAUmhD,EAASz8B,GAC9B,GAAIn3B,GAASg/E,EAAgBprB,EAAQmrB,OACrCnrB,GAAQoX,SAAWhrE,CACnB,IAAIo2D,GAAYp2D,EAAOwI,OAAOyxB,KAAKj6B,GAAQ,GAC3CwI,QAAOyxB,KAAKj6B,GAAQuY,MAAM,GAAG9K,QAAQ,SAAU6K,GAAO,MAAOu/B,GAAShlC,KAAK7S,EAAOsY,KAClF,IAAIg6D,IAAUjkE,KAAMulD,EAAQE,WAAYsC,UAAWA,EAAW8lB,eAAgBoD,EAAYxD,kBAAmBzJ,aAAciN,EAAYlC,WAIvI,OAHIxpB,GAAQzd,UAAYyd,EAAQzd,SAASr2C,SACrCwyE,EAAMn8B,SAAWipC,EAAgBxrB,EAAQzd,WAEhC,GAAThf,IACU9oB,KAAM,GAAIkxE,UAAU,EAAMC,WAAY5rB,EAAQE,YACpDwe,IAEIA,KACblpC,OAAO,SAAUC,EAAKC,GAAQ,MAAOD,GAAIjjC,OAAOkjC,IAAU41C,IAE7Dx+B,EAAW0+B,EAAgBrvD,EAAM2wB,aAiCrC,QAASs4B,SA/BL7iC,WAEQ9nC,KAAM,GACN+nD,UAAWqpB,EACXF,UAAU,IAGVlxE,KAAM,WACN+nD,UAAW+oB,EAAWO,SACtBrN,aAAcsN,EAAavN,iBAG3B/jE,KAAM,aACN+nD,UAAW+oB,EAAWzD,cACtBrJ,aAAcsN,EAAavN,eAC3Bj8B,SAAUuK,IAGVryC,KAAM,QACN+nD,UAAWupB,EAAa1N,YAGxB5jE,KAAM,SACN+nD,UAAWupB,EAAaxN,WACxBoN,UAAU,IAEZlxE,KAAM,KAAM+nD,UAAWwpB,EAAeC,eAE5CzpB,UAAW0pB,EACXzxE,KAAM,KAEcwpC,SAAUA,KA1K1C,GAAI5vC,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB2iD,EAAS3iD,EAAQ,mBACjBqgF,EAAargF,EAAQ,gBACrBwgF,EAAcxgF,EAAQ,eACtB6gF,EAAe7gF,EAAQ,2BACvBoxC,EAAapxC,EAAQ,wBACrBmxC,EAAYnxC,EAAQ,uBACpB4J,EAAe5J,EAAQ,cACvBo2E,EAAsBp2E,EAAQ,iCAC9B8gF,EAAiB9gF,EAAQ,mBACzB2gF,EAA0B,SAAU72E,GAEpC,QAAS62E,GAAuBzmE,EAAS6mC,EAAgBm0B,EAAiB1/B,EAAS/D,EAAYxJ,EAAcqL,EAA6B4N,GACtIp3C,EAAO/I,KAAKqI,MACZA,KAAK8Q,QAAUA,EACf9Q,KAAK23C,eAAiBA,EACtB33C,KAAK8rE,gBAAkBA,EACvB9rE,KAAKosC,QAAUA,EACfpsC,KAAKqoC,WAAaA,EAClBroC,KAAK6+B,aAAeA,EACpB7+B,KAAKkqC,4BAA8BA,EACnClqC,KAAK83C,QAAUA,EAyBnB,MAnCA/3C,GAAUw3E,EAAwB72E,GAYlC62E,EAAuBl3E,UAAUioC,SAAW,WACxC,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBAAkBlF,KAAK6+B,aAAauqC,SAASnjC,OAAO,SAAU5J,GAAQ,MAAOA,GAAKktC,YAAcltC,EAAKitC,WAAajtC,EAAKutC,QAAQU,SAC3HlmC,UAAU,WACXpF,EAAMqJ,WAAWviC,IAAI,gCAAgCs+B,UAAU,SAAUlM,GAAK,MAAO8G,GAAMoN,QAAQ/P,KAAKnE,KACxG8G,EAAM2Y,eAAe6lB,cAAgB,KACrCx+B,EAAM64C,aAIlBN,EAAuBl3E,UAAUw3E,OAAS,WACtC73E,KAAKkqC,4BAA4BiB,MAC7BC,cAAe,gBACfC,YAAa,eACd,IAEPksC,EAAyB7/C,GACrB7yB,EAAO0kC,WACHE,SAAU,GACVC,SAAU5xC,EAAO+gC,KAErBZ,EAAW,qBAAsB+P,EAAW7gC,cAAe6gC,EAAWnhC,cAAe0yC,EAAOiT,eAAgBhsD,EAAa4uC,cAAepH,EAAWhgC,iBAAkBggC,EAAWvhC,YAAauhC,EAAWzgC,2BAA4BgyC,EAAOA,UAC5Og+B,IAELvK,EAAoB/nE,kBACtBvN,GAAQ6/E,uBAAyBA,CACjC,IAAIK,GAAwB,WACxB,QAASA,MAUT,MARAA,GAAuBlgD,GACnB7yB,EAAO0kC,WACHE,SAAU,qDACVC,SAAU5xC,EAAO+gC,GACjB0S,YAAagO,EAAOD,qBAExBrhB,EAAW,yBACZ2/C,KAGPlgF,GAAQkgF,qBAAuBA,CAC/B,IAAIE,GAAkB,WAClB,QAASA,MAMT,MAJAA,GAAiBpgD,GACb7yB,EAAO0kC,WAAYE,SAAU,KAC7BxR,EAAW,yBACZ6/C,KAGPpgF,GAAQogF,eAAiBA,CACzB,IAAIC,GAAkB,WAClB,QAASA,MAMT,MAJAA,GAAiBrgD,GACb7yB,EAAO0kC,WAAYE,SAAU,sBAC7BxR,EAAW,yBACZ8/C,KAGPrgF,GAAQqgF,eAAiBA,EA6EzBrgF,EAAQi5E,eAAiBA,EAEzBj5E,EAAQ+5E,QAAU2F,EAAYxD,iBAAkB6D,EAAavN,cAAekN,EAAYlC,aAIrF8C,gCAAgC,EAAExM,sBAAsB,mBAAmBjB,uBAAuB,oBAAoB0N,0BAA0B,GAAGC,kBAAkB,IAAIC,cAAc,IAAIC,eAAe,IAAIhyE,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBz4C,aAAa,eAAeq3E,KAAK,SAASzhF,EAAQkB,EAAOJ,GAC9U,YACA,IAAI0/E,GAAcxgF,EAAQ,cAC1Bc,GAAQ87E,cAAgB4D,EAAY5D,cACpC97E,EAAQk8E,iBAAmBwD,EAAYxD,gBACvC,IAAI0E,GAAW1hF,EAAQ,WACvBc,GAAQ6gF,WAAaD,EAASC,UAC9B,IAAIC,GAAa5hF,EAAQ,aACzBc,GAAQ8/E,SAAWgB,EAAWhB,QAC9B,IAAIiB,GAAY7hF,EAAQ,YACxBc,GAAQghF,YAAcD,EAAUC,WAChC,IAAIC,GAAgB/hF,EAAQ,gBAC5Bc,GAAQs+E,qBAAuB2C,EAAc3C,qBAC7Ct+E,EAAQ++E,yBAA2BkC,EAAclC,2BAI9C0B,cAAc,IAAIS,gBAAgB,IAAIC,WAAW,IAAIC,YAAY,IAAIC,aAAa,MAAMC,KAAK,SAASpiF,EAAQkB,EAAOJ,GACxHI,EAAOJ,QAAU,4jFACXuhF,KAAK,SAASriF,EAAQkB,EAAOJ,GACnC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,wBACrBmxC,EAAYnxC,EAAQ,uBACpB4J,EAAe5J,EAAQ,cACvB8gD,EAAW9gD,EAAQ,mBACnBo2E,EAAsBp2E,EAAQ,iCAC9B8nC,EAAO9nC,EAAQ,QACfsiF,EAAiBtiF,EAAQ,mBACzBk1C,EAAel1C,EAAQ,0BACvB0K,EAAgB1K,EAAQ,qCACxB2hF,EAAc,SAAU73E,GAExB,QAAS63E,GAAWznE,EAASs7B,EAASwwB,EAAU9kB,EAASg0B,EAAiBzjC,EAAYwH,EAAMspC,EAAQt6C,EAAcqL,EAA6BkvC,GAC3I,GAAIp6C,GAAQh/B,IACZU,GAAO/I,KAAKqI,MACZA,KAAK8Q,QAAUA,EACf9Q,KAAKosC,QAAUA,EACfpsC,KAAK48D,SAAWA,EAChB58D,KAAK83C,QAAUA,EACf93C,KAAK8rE,gBAAkBA,EACvB9rE,KAAKqoC,WAAaA,EAClBroC,KAAK6vC,KAAOA,EACZ7vC,KAAKm5E,OAASA,EACdn5E,KAAK6+B,aAAeA,EACpB7+B,KAAKkqC,4BAA8BA,EACnClqC,KAAKo5E,4BAA8BA,EACnCp5E,KAAKq5E,mBAAsB5oE,KAAM,aAAczB,MAAO,SAAUktB,GAAW,MAAO8C,GAAMs6C,cAAgBp9C,KACxGl8B,KAAKu5E,UAAY,GAAIj4E,GAAcC,UAsEvC,MAtFAxB,GAAUw4E,EAAY73E,GAkBtBJ,OAAOuF,eAAe0yE,EAAWl4E,UAAW,iBACxCyF,IAAK,WAAc,MAAO9F,MAAK48D,SAASY,eACxCz3D,YAAY,EACZC,cAAc,IAElBuyE,EAAWl4E,UAAUioC,SAAW,WAC5B,GAAItJ,GAAQh/B,IACZA,MAAKw5E,WAAc/oE,KAAM,GAAIoyD,YAAa,GAAI5mC,SAAU,EAAGw9C,cAAe,KAAMv9C,QAAS,KAAMw9C,0BAA2B,MAC1H15E,KAAKkF,gBACDlF,KAAK8Q,QAAQ8tD,oBACR5nB,GAAG,SAAUnvB,GAAS,MAAOmX,GAAM26C,gBAAkB9xD,GAASA,EAAM+xD,uBAAyB/xD,EAAM+xD,sBAAsBC,OAAOtvE,IAAI,SAAUnT,GAAK,MAAOkJ,QAAOgjC,OAAOlsC,GAAK0iF,UAAW96C,EAAMu6C,UAAUrvB,UAAU9yD,EAAE0iF,iBACpNx6C,QAAQ,SAAUzX,GACnB,IAAKA,IAAUA,EAAMkyD,iBACjB,MAAOr7C,GAAKa,WAAWj0B,OAC3B,IAAImvB,GAAMsN,EAAU5vC,IAAIwiC,WAAWW,eAAe,cAAgBzT,EAAMkyD,kBAAkBt/C,GAC1F,OAAOiE,GAAKa,WAAW8nC,YAAYC,OAAOC,OAAO9sC,GAAKojB,KAAK,SAAU/lD,GAAU,MAAOA,GAAOwI,OAAOyxB,KAAKj6B,GAAQ,SAClHssC,UAAU,SAAUxjC,GAAQ,MAAOo+B,GAAMg7C,eAAiBp5E,IAC7DZ,KAAK48D,SAAStkB,qBAAqBrS,OAAO,SAAU7uC,GAAK,QAASA,IAAMkoC,QAAQ,SAAUloC,GAAK,MAAO4nC,GAAM49B,SAAS9jC,WAAW1hC,EAAE6kC,UAAU+U,SAAS,oBAAsB5M,UAAU,SAAUwlC,GAC3L5qC,EAAMi7C,gBAAkBrQ,EACpB5qC,EAAMk7C,WACNl7C,EAAMk7C,SAAS1tC,QAAS,GAC5BxN,EAAMw6C,WAAc/oE,KAAM,GAAIoyD,YAAa,GAAI5mC,SAAU8S,OAAO66B,EAAQ/wC,IAAK4gD,cAAen5E,OAAOgjC,UAAWsmC,QAI1HtpE,OAAOuF,eAAe0yE,EAAWl4E,UAAW,kBACxCyF,IAAK,WACD,GAAIk5B,GAAQh/B,IACZ,OAAKA,MAAK25E,iBAEV35E,KAAK25E,gBAAgBp0E,QAAQ,SAAUnO,GACzBA,EACN+iF,WAAa,gBAAkB/iF,EAAE0iF,UAAUl6D,MAAM,KAAKtP,OAAOyB,cAAgB,aAE9E/R,KAAK25E,iBACR35E,KAAKi6E,iBACLj6E,KAAK25E,gBAAgB1zC,OAAO,SAAUhvC,GAAK,MAA6C,OAAtC+nC,EAAMi7C,gBAAgBhjF,EAAE6iF,kBAElF/zE,YAAY,EACZC,cAAc,IAElBuyE,EAAWl4E,UAAU07B,UAAY,WAC7B,GAAIiD,GAAQh/B,IACZA,MAAK6vC,KAAK9T,UAAU/7B,KAAK8Q,QAAQigC,aAAa3X,UAAW94B,OAAOgjC,QAASpH,QAASl8B,KAAKs5E,cAAeI,0BAA2B15E,KAAKo6E,eAAe7vE,IAAI,SAAUtT,GAAK,MAAOA,GAAE6iF,aAAiB95E,KAAKw5E,YAAYxoC,UAAWC,UAAW,aAAcC,QAASlxC,KAAKqoC,WAAW8I,QAAQ,8BAA+B/M,UAAU,SAAU1a,GACvUsV,EAAM64C,OAAOnuD,EAAItJ,KAAKyY,IACtBmG,EAAM8Y,QAAQsU,UAAU,YAAa1iC,EAAItJ,KAAKyY,KAAOyzB,WAAYttB,EAAM8sC,qBAG/EyM,EAAWl4E,UAAUw3E,OAAS,SAAUz9C,GACpCp6B,KAAKkqC,4BAA4BiB,MAC7BC,cAAe,gBACfC,YAAa,aACbjR,MAAOA,KAGf1C,GACI7yB,EAAOg3C,UAAU/P,EAAa1uC,mBAC9B66B,EAAW,cAAe6T,EAAa1uC,oBACxCm7E,EAAWl4E,UAAW,eAAY,IACrCk4E,EAAa7gD,GACT7yB,EAAO0kC,WACHC,SAAU,UACVC,SAAU7yC,EAAQ,iBAClB8yC,SAAU5xC,EAAO+gC,GACjB0S,YAAaO,EAAarvC,WAAYqvC,EAAajwC,uBAAwBiwC,EAAa1uC,kBAAmB0uC,EAAatuC,QAAS07E,EAAezG,+BAEpJx6C,EAAW,qBAAsB+P,EAAW7gC,cAAe3G,EAAa4uC,cAAepH,EAAWnhC,cAAe6wC,EAAS6B,OAAQ7B,EAAS8U,eAAgBxkB,EAAWhgC,iBAAkB+/B,EAAU5vC,IAAI2jC,UAAWiM,EAAU5vC,IAAImmC,UAAW0J,EAAWvhC,YAAauhC,EAAWzgC,2BAA4BygC,EAAWngC,+BACrT0wE,IAELvL,EAAoB/nE,kBACtBvN,GAAQ6gF,WAAaA,IAIlBP,gCAAgC,EAAExM,sBAAsB,mBAAmBe,yBAAyB,sBAAsBhC,uBAAuB,oBAAoB8P,oCAAoC,GAAGC,kBAAkB,IAAIC,gBAAgB,IAAIn0E,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBz4C,aAAa,aAAasF,KAAO,SAASk0E,KAAK,SAAS5jF,EAAQkB,EAAOJ,GACpYI,EAAOJ,QAAU;yneACX+iF,KAAK,SAAS7jF,EAAQkB,EAAOJ,GACnC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBg5C,EAAsBh5C,EAAQ,iCAC9BoxC,EAAapxC,EAAQ,wBACrBmxC,EAAYnxC,EAAQ,uBACpB2/C,EAAQ3/C,EAAQ,8BAChB8gD,EAAW9gD,EAAQ,mBACnB8nC,EAAO9nC,EAAQ,QACfsiF,EAAiBtiF,EAAQ,mBACzBk1C,EAAel1C,EAAQ,0BACvBs2E,EAAet2E,EAAQ,0BACvB8jF,EAAM9jF,EAAQ,8BACd+zE,EAAS/zE,EAAQ,wBACjB2S,EAAS3S,EAAQ,iBACjB+jF,EAAwB/jF,EAAQ,kDAChCgkF,EAA0BhkF,EAAQ,oDAClCikF,EAAuB,mBACvBnC,EAAe,SAAUh4E,GAEzB,QAASg4E,GAAY9b,EAAU9rD,EAASq3B,EAAOgxC,EAAQt6C,EAAci8C,EAAWhjC,EAASzP,EAAY6B,EAA6B2gC,EAAUjzB,EAAck0B,EAAiB1vB,EAAQhU,GAC/K,GAAIpJ,GAAQh/B,IACZU,GAAO/I,KAAKqI,MACZA,KAAK48D,SAAWA,EAChB58D,KAAK8Q,QAAUA,EACf9Q,KAAKmoC,MAAQA,EACbnoC,KAAKm5E,OAASA,EACdn5E,KAAK6+B,aAAeA,EACpB7+B,KAAK86E,UAAYA,EACjB96E,KAAK83C,QAAUA,EACf93C,KAAKqoC,WAAaA,EAClBroC,KAAKkqC,4BAA8BA,EACnClqC,KAAK6qE,SAAWA,EAChB7qE,KAAK43C,aAAeA,EACpB53C,KAAK8rE,gBAAkBA,EACvB9rE,KAAKo8C,OAASA,EACdp8C,KAAKooC,mBAAqBA,EAC1BpoC,KAAK+6E,MAAQ,UACb/6E,KAAKg7E,cAAe,EACpBh7E,KAAKi7E,0BAA2B,EAChCj7E,KAAKk7E,kBACLl7E,KAAKm7E,WAAa,SAAU5iD,GACxB,MAAOyG,GAAMm6C,OAAO36C,KAAKjG,IAE7Bv4B,KAAKo7E,YAAa,EAClBp7E,KAAKq7E,cAAgB,GAAI,UAAW,SAAU,aAAc,SAC5Dr7E,KAAKs7E,YAAc,GACnBt7E,KAAKu7E,YAAehuE,KAAM,KAAMD,GAAI,KACpC,IAAIkuE,GAAax7E,KAAK6qE,SAAS/kE,IAAI+0E,EAE/B76E,MAAKy7E,OADLD,EAC6B,QAAfA,EAAuB,MAAQp/D,SAASo/D,GAGxC,GA8nBtB,MAhqBAz7E,GAAU24E,EAAah4E,GAoCvBJ,OAAOuF,eAAe6yE,EAAYr4E,UAAW,QACzCyF,IAAK,WACD,MAAO9F,MAAK07E,iBAEhB7qE,IAAK,SAAUpD,GACXzN,KAAK07E,gBAAkBjuE,EACvBzN,KAAK27E,gBAET51E,YAAY,EACZC,cAAc,IAElB0yE,EAAYr4E,UAAUioC,SAAW,WAC7B,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBACDlF,KAAK8Q,QAAQ8tD,oBACRqH,cAAcjmE,KAAK48D,SAAStkB,sBAC5BhZ,QAAQ,SAAUs8C,GAAO,MAAO58C,GAAMmJ,MAAMhP,KAAKyiD,EAAI,GAAGt+C,QAASs+C,EAAI,GAAG3/C,UAAU+U,SAAS,mBAC3F5M,UAAU,SAAU1a,GACrBsV,EAAMm2C,KAAOzrD,EAAItJ,KAAKvM,KAAK,SAAUvc,EAAG4I,GAAK,MAAO,IAAIoK,MAAKpK,EAAEm8B,KAAKriB,YAAYpN,UAC5E,GAAItC,MAAKhT,EAAE+kC,KAAKriB,YAAYpN,YAChCoyB,EAAMy1C,cAAc7tC,WAExB5mC,KAAK8Q,QAAQ8tD,oBAAoB5nB,GAAG,WAAc,MAAOhY,GAAM68C,YAAa,IACvEv8C,QAAQ,SAAUzX,GACnB,IAAKA,IAAUA,EAAMi0D,4BACjB,MAAOp9C,GAAKa,WAAWj0B,OAC3B,IAAImvB,GAAMsN,EAAU5vC,IAAIwiC,WAAWW,eAAe,cAAgBzT,EAAMi0D,6BAA6BrhD,GACrG,OAAOiE,GAAKa,WAAW8nC,YAAYC,OAAOC,OAAO9sC,GAAKojB,KAAK,SAAU/lD,GAAU,MAAOA,GAAOwI,OAAOyxB,KAAKj6B,GAAQ,SAEhHwnC,QAAQ,SAAU4uB,GAAa,MAAOlvB,GAAM87C,UAAUpmB,iBAAiBxG,KACvE9pB,UAAU,SAAUh7B,GACrB41B,EAAM+8C,WAAa7C,EAAe/G,mBAAmB/oE,EAAS41B,EAAMg9C,eAAgB,GACpFh9C,EAAM68C,YAAa,IACnB77E,KAAK48D,SAAStkB,qBACblU,UAAU,SAAUhtC,GACrB4nC,EAAMw+B,cAAgBpmE,EACtB4nC,EAAMi9C,WAAWj9C,EAAMw+B,cAAcvhC,UACjC+C,EAAMluB,QAAQigC,aAAamrC,sBAC3Bl9C,EAAMxB,aACNwB,EAAMmJ,MAAMxK,iBAAiBqB,EAAMluB,QAAQigC,aAAazT,QAAS0B,EAAMw+B,cAAcvhC,UAAUmI,UAAU,SAAUzjB,GAC/Gqe,EAAMxB,UAAY7c,EAAEP,UAIhCpgB,KAAK6+B,aAAauqC,SAAShlC,UAAU,SAAU/H,GAC3C2C,EAAMm9C,YAAc9/C,EAAKutC,UAE7B5pE,KAAK8Q,QAAQ8tD,oBAAoBx6B,UAAU,SAAUzrC,GAAKqmC,EAAMo9C,OAASzjF,EAAEygC,aAE/Ep5B,KAAKqoC,WAAWg0C,aAAaj4C,UAAU,SAAUttC,GAC7C,GAAIwlF,GAAgBt9C,EAAMu9C,SAC1Bv9C,GAAMu9C,UAAY,EAClBhhC,WAAW,WAAc,MAAOvc,GAAMu9C,UAAYD,GAAkB,MAExEt8E,KAAKw8E,oBAAsBx8E,KAAK8Q,QAAQigC,aAAamrC,qBAEzDxD,EAAYr4E,UAAU47E,WAAa,SAAUhgD,GACzC,GAAI+C,GAAQh/B,IACZA,MAAK8Q,QAAQskD,SAAShxB,UAAU,SAAUntC,GAClCA,EAAEwlF,cAAcj+C,KAAK,SAAUvnC,GAAK,MAAOA,IAAKglC,KAChD+C,EAAMg8C,cAAe,EAChBh8C,EAAMq8C,aAAa78C,KAAK,SAAUvnC,GAAK,MAAa,aAANA,KAC/C+nC,EAAMq8C,aAAa1wE,KAAK,cAI5Bq0B,EAAMg8C,cAAe,EACrBh8C,EAAMq8C,aAAer8C,EAAMq8C,aAAap1C,OAAO,SAAUhvC,GAAK,MAAa,aAANA,QAIjFyhF,EAAYr4E,UAAU87B,OAAS,SAAU/B,GACrC,GAAI4E,GAAQh/B,IACZ0+B,GAAKa,WAAW8nC,YAAYrnE,KAAKo8C,OAAOuB,UAAUh9C,QAAQX,KAAKqoC,WAAW8I,QAAQ,iCAC7EgG,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,eAC9ByM,UAAU59C,KAAKqoC,WAAW8I,QAAQ,cAClCiG,OACAyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,WAAc,OAAO,GAAS,WAAc,OAAO,OACtG5X,OAAO,SAAUy2C,GAAM,MAAOA,KAC9Bp9C,QAAQ,WAAc,MAAON,GAAMmJ,MAAMhM,OAAO/B,GAAO4W,UAAWC,UAAW,aAAcC,QAASlS,EAAMqJ,WAAW8I,QAAQ,4BAC7H/M,UAAU,SAAU1a,GACjBA,EAAItJ,KAAKu8D,UACL39C,EAAMw9C,oBACNx9C,EAAMmJ,MAAMpK,eAAe3D,GAAOgK,UAAU,SAAUzjB,GAClDqe,EAAMm2C,KAAOn2C,EAAMm2C,KAAKlvC,OAAO,SAAUhvC,GAAK,MAAOA,GAAEmjC,QAAUA,IACjE4E,EAAMy1C,cAAc7tC,QAAQ,OAAQxM,IACpC4E,EAAMkM,YAAc,QAIxBlM,EAAMm2C,KAAOn2C,EAAMm2C,KAAKlvC,OAAO,SAAUhvC,GAAK,MAAOA,GAAEmjC,QAAUA,IACjE4E,EAAMy1C,cAAc7tC,QAAQ,OAAQxM,IACpC4E,EAAMkM,YAAc,MAExBlM,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBACfC,YAAa,aACbjR,MAAOA,QAKvBs+C,EAAYr4E,UAAU0kE,KAAO,SAAU3qC,EAAOgyB,GAC1CpsD,KAAKkqC,4BAA4BiB,MAC7BC,cAAe,gBACfC,YAAa,YACbjR,MAAOA,IAEPgyB,GACApsD,KAAK83C,QAAQsU,UAAU,YAAahyB,IAAUkyB,WAAYtsD,KAAK8rE,mBAEvE4M,EAAYr4E,UAAUynB,MAAQ,SAAUsS,GACpC,GAAI4E,GAAQh/B,KACR48E,GAAW,YAAc58E,KAAKm1E,KAAK32C,KAAK,SAAUmT,GAAM,MAAOA,GAAGvX,OAASA,IAAUiC,KAAK5rB,MAAMJ,MAAM,EAAG,IAC7GrQ,MAAKo8C,OAAOuB,UAAUh9C,QAAQX,KAAKqoC,WAAW8I,QAAQ,oCACjDgG,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,eAC9ByM,UAAU59C,KAAKqoC,WAAW8I,QAAQ,cAClCiG,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,WAAc,OAAO,GAAS,WAAc,OAAO,MAC7GA,KAAK,SAAUn0B,GACZA,GACAsV,EAAMmJ,MAAMrgB,OAAQsS,MAAOA,EAAOyiD,QAASD,IAAW5rC,UAAWC,UAAW,YAAaC,QAASlS,EAAMqJ,WAAW8I,QAAQ,6BACtH/M,UAAU,SAAU1a,GACrBsV,EAAMm2C,MAAQzrD,EAAItJ,MAAMliB,OAAO8gC,EAAMm2C,MACrCn2C,EAAMy1C,cAAc7tC,QAAQ,OAAQld,EAAItJ,KAAKga,QAC7C4E,EAAMkM,YAAcxhB,EAAItJ,KACxB4e,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBACfC,YAAa,YACbjR,MAAO1Q,EAAItJ,KAAKga,aAMpCs+C,EAAYr4E,UAAUy8E,iBAAmB,SAAUtgD,GAC/C,GAAIwC,GAAQh/B,IAEZA,MAAKooC,mBAAmBw9B,UAAU,QAASppC,EAAIH,KAAKjC,OACpDp6B,KAAKooC,mBAAmBw9B,UAAU,UAAWppC,EAAIH,KAAKiB,SACtDt9B,KAAKooC,mBAAmBw9B,UAAU,OAAQppC,EAAIH,KAAK5rB,MACnDzQ,KAAKooC,mBAAmBw9B,UAAU,WAAYppC,EAAIH,KAAKJ,SAC1C,IAAIsa,GAAMwmC,oBAAoB/8E,KAAKo8C,QAC3CzW,UAAU3lC,KAAK+6E,OACflmB,QAAQ8lB,EAAsB1wC,qBAC9BmN,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,SAAUC,GACrE9e,EAAMmJ,MAAM/L,cAAcI,EAAIpC,MAAOoC,EAAIH,MAAM2U,UAAWC,UAAW,kBAAmBC,QAASlS,EAAMqJ,WAAW8I,QAAQ,4BAA6B/M,UAAU,SAAUzjB,GACvK6b,EAAIH,KAAK2gD,SAAW,GAAI1yE,MACxBkyB,EAAIH,KAAK4gD,gBAAkBj+C,EAAMH,aAAasf,gBAAgB0f,SAC9DrhC,EAAIH,KAAK2vC,SAAWhtC,EAAMH,aAAasf,gBAAgB8sB,OAAS,KAAOjsC,EAAMH,aAAasf,gBAAgBwf,SAC1GnhC,EAAIH,KAAK6gD,oBAAqB,EAC9B3hC,WAAW,WACPvc,EAAMm+C,YAAY3gD,EAAIH,KAAKJ,SAAUO,EAAIpC,QAC1C,OAEP4E,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAa,mBAC7CjR,MAAOoC,EAAIpC,SAEhB,WACgC,MAA3BoC,EAAIH,KAAK+gD,gBAA0B5gD,EAAIH,KAAK+gD,eAAexlF,OAAS,EACpE4kC,EAAIH,KAAK6gD,oBAAqB,EAE9B1gD,EAAIH,KAAK6gD,oBAAqB,OAG1CxE,EAAYr4E,UAAUg9E,iBAAmB,SAAU7gD,GAC/C,GAAIwC,GAAQh/B,IACZA,MAAKooC,mBAAmBw9B,UAAU,QAASppC,EAAIH,KAAKjC,MACvC,IAAImc,GAAMwmC,oBAAoB/8E,KAAKo8C,QAC3CzW,UAAU3lC,KAAK+6E,OACflmB,QAAQ+lB,EAAwB3yC,uBAChCmP,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,SAAUC,GACrE9e,EAAMi8C,0BAA2B,EACjC1/B,WAAW,WACPvc,EAAMm+C,YAAY3gD,EAAIH,KAAKJ,SAAUO,EAAIpC,QAC1C,KACH4E,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAa,qBAC7CjR,MAAOoC,EAAIpC,SAEhB,WACC4E,EAAMi8C,0BAA2B,OAGzCvC,EAAYr4E,UAAUi9E,sBAAwB,WAC1C,GAAIt+C,GAAQh/B,IACZA,MAAKu9E,aAAah4E,QAAQ,SAAUob,GAC5Bqe,EAAMy1C,cAAchuC,aAAa,OAAQ9lB,EAAEyZ,MAAO,OAAQ,cAC1D4E,EAAMy1C,cAAc7tC,QAAQ,OAAQjmB,EAAEyZ,MAAO,OAAQ,gBAGjEs+C,EAAYr4E,UAAU88E,YAAc,SAAUlhD,EAAU7B,GACpD,GAAI4E,GAAQh/B,IACZA,MAAKw9B,aACLx9B,KAAKmoC,MAAMxK,iBAAiB39B,KAAK8Q,QAAQigC,aAAazT,QAASrB,GAAUmI,UAAU,SAAUzjB,GACzFqe,EAAMxB,UAAY7c,EAAEP,KAChB4e,EAAMw9C,qBAAuBx9C,EAAMu+C,cACnCv+C,EAAMw+C,6BAEVx+C,EAAMy1C,cAAc7tC,QAAQ,OAAQxM,OAG5Cs+C,EAAYr4E,UAAUyzD,MAAQ,SAAU72B,EAAaT,GACjD,GAAIwC,GAAQh/B,IACZ,IAAIA,KAAK8Q,QAAQigC,aAAamrC,oBACtBj/C,EACAj9B,KAAK88E,iBAAiBtgD,GAGtBx8B,KAAKq9E,iBAAiB7gD,OAI1B,IAAIS,EACA,CAAA,GAAIwgD,GAAU,CACD,IAAIlnC,GAAMwmC,oBAAoB/8E,KAAKo8C,QAC3CzW,UAAU3lC,KAAK+6E,OACflmB,QAAQqY,EAAa9yE,aACrBg9C,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,SAAUC,GACrE,GAAI/gB,GAAa+gB,CACjB9e,GAAMmJ,MAAMrL,eAAekC,EAAMluB,QAAQigC,aAAazT,QAASd,EAAIH,KAAKJ,SAAUc,GAAYqH,UAAU,SAAUntC,GAC1GA,EAAEmpB,KAAKs9D,OAAO9lF,OAAS,IACvB6lF,EAAUxmF,EAAEmpB,KAAKs9D,OAAO,IAEZ,IAAZD,EACAz+C,EAAM2+C,gBAAgBnhD,EAAKwC,EAAMluB,QAAQigC,aAAazT,QAASP,GAG/DiC,EAAMmJ,MAAMnL,aAAagC,EAAMluB,QAAQigC,aAAazT,QAASmgD,GAAS,EAAO1gD,GAAYqH,UAAU,SAAUntC,GACzG,GAAIA,EAAEmpB,KAAKtV,QAAS,CAChB,GAAIs2B,GAAOpC,EAAMm2C,KAAK32C,KAAK,SAAUvnC,GAAK,MAAOA,GAAEmjC,QAAUqjD,GACzDr8C,KACAA,EAAK/E,KAAKY,aAAc,EACxB+B,EAAMy1C,cAAc7tC,QAAQ,OAAQ62C,IACpCz+C,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAa,mBAC7CjR,MAAOoC,EAAIpC,QAEf4E,EAAM2+C,gBAAgBnhD,EAAKwC,EAAMluB,QAAQigC,aAAazT,QAASP,UAMpF,WACCP,EAAIH,KAAKY,aAAc,UAI3B,CAAa,GAAIsZ,GAAMwmC,oBAAoB/8E,KAAKo8C,QAC3CzW,UAAU3lC,KAAK+6E,OACflmB,QAAQqY,EAAa5yE,qBACrB88C,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,SAAUC,GACrE9e,EAAMmJ,MAAMnL,aAAagC,EAAMluB,QAAQigC,aAAazT,QAASd,EAAIpC,OAAO,EAAOoC,EAAIH,KAAKU,YAAYqH,UAAU,SAAUntC,GACpH+nC,EAAMy1C,cAAc7tC,QAAQ,OAAQpK,EAAIpC,QACxC4E,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAa,qBAC7CjR,MAAOoC,EAAIpC,WAGpB,WACCoC,EAAIH,KAAKY,aAAc,QAKvCy7C,EAAYr4E,UAAUu9E,SAAW,SAAUzgD,EAAYX,GACnD,GAAIwC,GAAQh/B,KACR4P,EAAM,KACNiuE,EAAQ,IACR1gD,IACAvtB,EAAM5P,KAAKqoC,WAAW8I,QAAQ,oCAC9B0sC,EAAQ,uCAGRjuE,EAAM5P,KAAKqoC,WAAW8I,QAAQ,sCAC9B0sC,EAAQ,wCAEZ79E,KAAKo8C,OAAOuB,UAAUh9C,QAAQiP,GACzBunC,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,eAC9ByM,UAAU59C,KAAKqoC,WAAW8I,QAAQ,cAClCiG,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,WAAc,OAAO,GAAS,WAAc,OAAO,MAC7GA,KAAK,SAAUn0B,GACZA,EACAsV,EAAM95B,eAAeyF,KAAKq0B,EAAMmJ,MAAMjL,kBAAkB8B,EAAMluB,QAAQigC,aAAazT,QAASd,EAAIpC,MAAO+C,GAAYiH,UAAU,SAAUntC,GACnI+nC,EAAMy1C,cAAc7tC,QAAQ,OAAQpK,EAAIpC,QACxC4E,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAawyC,EAC7CzjD,MAAOoC,EAAIpC,QAEXnjC,EAAEmpB,KAAKtV,SACPk0B,EAAM95B,eAAeyF,KAAKq0B,EAAMmJ,MAAMriC,IAAI02B,EAAIpC,OAAOgK,UAAU,SAAUntC,GACrE+nC,EAAMm2C,KAAK32C,KAAK,SAAU7d,GAAK,MAAOA,GAAEyZ,QAAUoC,EAAIpC,QAAUiC,KAAOplC,EAAEmpB,KAAKic,KAC9E2C,EAAMy1C,cAAc7tC,QAAQ,OAAQpK,EAAIpC,cAMpDoC,EAAIH,KAAKc,YAAcA,KAInCu7C,EAAYr4E,UAAUs9E,gBAAkB,SAAUnhD,EAAK3U,EAAOkV,GAC1D,GAAIiC,GAAQh/B,IACZA,MAAKkF,eAAeyF,KAAK3K,KAAKmoC,MAAMnL,aAAanV,EAAO2U,EAAIpC,OAAO,EAAM2C,GAAYqH,UAAU,SAAUntC,GACjGA,EAAEmpB,KAAKtV,SACPk0B,EAAM95B,eAAeyF,KAAKq0B,EAAMmJ,MAAMriC,IAAI02B,EAAIpC,OAAOgK,UAAU,SAAUntC,GACrE+nC,EAAMm2C,KAAK32C,KAAK,SAAU7d,GAAK,MAAOA,GAAEyZ,QAAUoC,EAAIpC,QAAUiC,KAAOplC,EAAEmpB,KAAKic,KAC9E2C,EAAMy1C,cAAc7tC,QAAQ,OAAQpK,EAAIpC,eAKxDs+C,EAAYr4E,UAAUy9E,KAAO,SAAUC,GACnC/9E,KAAKmoC,MAAM/L,cAAc2hD,EAAQ3jD,MAAO2jD,GAAS/sC,UAAWC,UAAW,kBAAmBC,QAASlxC,KAAKqoC,WAAW8I,QAAQ,4BAA6BmG,gBACxJymC,EAAQf,SAAW,GAAI1yE,MACvByzE,EAAQd,gBAAkBj9E,KAAK6+B,aAAasf,gBAAgB0f,SAC5DkgB,EAAQ/R,SAAWhsE,KAAK6+B,aAAasf,gBAAgB8sB,OAAS,KAAOjrE,KAAK6+B,aAAasf,gBAAgBwf,SACnG39D,KAAKw8E,qBACLx8E,KAAKmoC,MAAMtK,sBAAsBkgD,EAAQ3jD,MAAO2jD,EAAQttE,MAAM2zB,UAAU,SAAUzjB,MACtF3gB,KAAKy0E,cAAc7tC,QAAQ,OAAQm3C,EAAQ3jD,SAE/Cs+C,EAAYr4E,UAAU4kE,MAAQ,SAAUzoC,GACpCx8B,KAAKk7E,eAAe9jC,MAAO,EAC3Bp3C,KAAKk7E,eAAe8C,YAAcxhD,EAAIH,KAAK2hD,gBAAkB3tE,MAAM,GACnErQ,KAAKk7E,eAAelrE,WAAawsB,EAAIH,KAAK2hD,aAAexhD,EAAIH,KAAK2hD,WAAWpmF,OAC7EoI,KAAKk7E,eAAe9gD,MAAQoC,EAAIpC,OAEpCs+C,EAAYr4E,UAAU49E,UAAY,SAAUC,GACxC,GAAIl/C,GAAQh/B,IACRk+E,IAAOl+E,KAAKkrC,cACZgzC,EAAM,MACNl+E,KAAKk7E,eAAe9jC,KACpBp3C,KAAKo8C,OAAOuB,UAAUh9C,QAAQX,KAAKqoC,WAAW8I,QAAQ,sCACjDgG,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,eAC9ByM,UAAU59C,KAAKqoC,WAAW8I,QAAQ,cAClCiG,OAAOyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,WAAc,OAAO,GAAS,WAAc,OAAO,MAC7GA,KAAK,SAAUn0B,GACZA,IACAsV,EAAMkM,YAAcgzC,EACpBl/C,EAAMk8C,qBAKdl7E,KAAKkrC,YAAcgzC,GAG3BxF,EAAYr4E,UAAU89E,SAAW,SAAUC,GACvC,GAAIC,IACAjkD,OAAQ,EAAGkkD,UAAW,GAAIh0E,MAAQ0hE,SAAUoS,EAAKnT,OAAS,KAAOmT,EAAKpS,SAAUiR,gBAAiBmB,EAAKtgD,YAEtG99B,MAAKk7E,eAAe8C,WAAWx/C,KAAK,SAAUvnC,GAAK,MAAOA,GAAE+0E,WAAaqS,EAAMrS,WAC/EhsE,KAAKo8C,OAAOlF,QAAQC,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,kBAAkBxwC,QAAQX,KAAKqoC,WAAW8I,QAAQ,sCAAsCiG,QAG1Ip3C,KAAKk7E,eAAe8C,WAAWrzE,KAAK0zE,GAC/Br+E,KAAKk7E,eAAet3C,UACrB5jC,KAAKk7E,eAAet3C,SAChB26C,cAAgBC,kBAExBx+E,KAAKk7E,eAAet3C,QAAQ26C,WAAW5zE,KAAK0zE,EAAMrS,WAEtDhsE,KAAKk7E,eAAe10C,WACpBxmC,KAAKk7E,eAAeuD,eAAiB,KACrCz+E,KAAKk7E,eAAewD,UAAW,GAEnChG,EAAYr4E,UAAUs+E,YAAc,SAAU1Z,GAC1C,GAAIjmC,GAAQh/B,IACZA,MAAKo8C,OAAOuB,UAAUh9C,QAAQX,KAAKqoC,WAAW8I,QAAQ,6CAA6CgG,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,eAC5HyM,UAAU59C,KAAKqoC,WAAW8I,QAAQ,cAClCiG,OACAyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,WAAc,OAAO,GAAS,WAAc,OAAO,MACtGA,KAAK,SAAUn0B,GACXA,IAEAsV,EAAMk8C,eAAet3C,UACtB5E,EAAMk8C,eAAet3C,SACjB26C,cAAgBC,kBAExBx/C,EAAMk8C,eAAet3C,QAAQ46C,aAAa7zE,KAAKs6D,EAAM+G,UACrDhtC,EAAMk8C,eAAe8C,WAAah/C,EAAMk8C,eAAe8C,WAAW/3C,OAAO,SAAUhvC,GAAK,MAAOA,KAAMguE,IACrGjmC,EAAMk8C,eAAewD,UAAY1/C,EAAMk8C,eAAelrE,WAAwD,IAA3CgvB,EAAMk8C,eAAe8C,WAAWpmF,WAG3G8gF,EAAYr4E,UAAUu+E,YAAc,WAChC5+E,KAAKk7E,mBAETxC,EAAYr4E,UAAUw+E,YAAc,WAChC,GAAI7/C,GAAQh/B,IACRA,MAAKk7E,eAAelrE,UACpBhQ,KAAKmoC,MAAMvL,YAAY58B,KAAKk7E,eAAe9gD,MAAOp6B,KAAKk7E,eAAet3C,SACjEoN,UAAWC,UAAW,iBAAkBC,QAASlxC,KAAKqoC,WAAW8I,QAAQ,8BACzE/M,UAAU,SAAU1a,GACrBsV,EAAMm2C,MAAQzrD,EAAItJ,MAAMliB,OAAO8gC,EAAMm2C,MACrCn2C,EAAMkM,YAAcxhB,EAAItJ,KACxB4e,EAAMk8C,kBACNl8C,EAAMy1C,cAAc7tC,QAAQ,OAAQld,EAAItJ,KAAKga,QAC7C4E,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBACfC,YAAa,kBACbjR,MAAO1Q,EAAItJ,KAAKga,UAInBp6B,KAAKk7E,eAAewD,SACzBhgD,EAAKa,WAAW8nC,YAAYrnE,KAAKo8C,OAAOuB,UAAUh9C,QAAQX,KAAKqoC,WAAW8I,QAAQ,uCAC7EgG,MAAMn3C,KAAKqoC,WAAW8I,QAAQ,eAC9ByM,UAAU59C,KAAKqoC,WAAW8I,QAAQ,cAClCiG,OACAyG,KAAK,SAAU3V,GAAU,MAAOA,GAAO4V,OAAOD,KAAK,WAAc,OAAO,GAAS,WAAc,OAAO,OACtG5X,OAAO,SAAUy2C,GAAM,MAAOA,KAC9Bp9C,QAAQ,WAAc,MAAON,GAAMmJ,MAAMhM,OAAO6C,EAAMk8C,eAAe9gD,OAAO4W,UAAWC,UAAW,qBAAsBC,QAASlS,EAAMqJ,WAAW8I,QAAQ,4BAC1J/M,UAAU,SAAU1a,GACrB,GAAIA,EAAItJ,KAAKu8D,QAAS,CAClB,GAAImC,GAAO9/C,EAAMk8C,eAAe9gD,KAChC4E,GAAMm2C,KAAOn2C,EAAMm2C,KAAKlvC,OAAO,SAAUhvC,GAAK,MAAOA,GAAEmjC,QAAU0kD,IACjE9/C,EAAMkM,YAAc,KACpBlM,EAAMk8C,kBACNl8C,EAAMy1C,cAAc7tC,QAAQ,OAAQk4C,IACpC9/C,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAa,kBAC7CjR,MAAO0kD,OAMnB9+E,KAAKmoC,MAAMtL,aAAa78B,KAAKk7E,eAAe9gD,MAAOp6B,KAAKk7E,eAAet3C,SAASoN,UAAWC,UAAW,eAAgBC,QAASlxC,KAAKqoC,WAAW8I,QAAQ,4BAA6B/M,UAAU,SAAU1a,GACpM,GAAImP,GAAKmG,EAAMk8C,eAAe9gD,KAC9B4E,GAAMkM,YAAY7O,KAAK2hD,WAAat0D,EAAItJ,KACxC4e,EAAMy1C,cAAc7tC,QAAQ,OAAQ5H,EAAMk8C,eAAe9gD,MAAO,OAAQ,eACxE4E,EAAMkM,YAAc,KACpBlM,EAAMk8C,kBACNl8C,EAAMkL,4BAA4BiB,MAC9BC,cAAe,gBAAiBC,YAAa,kBAC7CjR,MAAOvB,OAKvBv4B,OAAOuF,eAAe6yE,EAAYr4E,UAAW,uBACzCyF,IAAK,WAAc,MAAO9F,MAAK+7E,YAAc/7E,KAAK+7E,WAAWn0B,UAAY5nD,KAAK+7E,WAAWn0B,SAASm3B,cAClGh5E,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAe6yE,EAAYr4E,UAAW,aACzCyF,IAAK,WACD,MAAO9F,MAAKy7E,QAAU,IAE1B5qE,IAAK,SAAU7B,GACX,GAAIqkD,GAAMrzD,KAAKqoC,WAAW8I,QAAQ,gBAC9BniC,KAAUhP,KAAKy7E,QAA4B,gBAAVzsE,IAAsBA,IAAUqkD,IACjErzD,KAAK6qE,SAASvuC,IAAIu+C,EAAsB7rE,EAAMjF,YAC9C/J,KAAKy7E,OAASzsE,EACdhP,KAAK27E,iBAGb51E,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAe6yE,EAAYr4E,UAAW,UACzCyF,IAAK,WACD,MAAO9F,MAAKg/E,SAEhBnuE,IAAK,SAAUqe,GACPA,IAAUlvB,KAAKg/E,QACfh/E,KAAKo7E,YAAcp7E,KAAKo7E,WAExBp7E,KAAKo7E,YAAa,EACtBp7E,KAAKg/E,QAAU9vD,EACflvB,KAAK27E,gBAET51E,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAe6yE,EAAYr4E,UAAW,aACzCyF,IAAK,WACD,MAAO9F,MAAKi/E,YAEhBpuE,IAAK,SAAUquE,GACXA,EAAMA,GAAOA,EAAIxgC,OACZwgC,IACDA,EAAM,MACNA,IAAQl/E,KAAKi/E,aACbj/E,KAAKi/E,WAAaC,EAClBl/E,KAAK27E,iBAGb51E,YAAY,EACZC,cAAc,IAElB1F,OAAOuF,eAAe6yE,EAAYr4E,UAAW,cACzCyF,IAAK,WACD,MAAO9F,MAAKs7E,aAEhBzqE,IAAK,SAAUjQ,GACPA,IAASZ,KAAKs7E,cACdt7E,KAAKs7E,YAAc16E,EACnBZ,KAAK27E,iBAGb51E,YAAY,EACZC,cAAc,IAElB0yE,EAAYr4E,UAAU8+E,aAAe,WACjCn/E,KAAKo/E,WAAa,GAClBp/E,KAAKu7E,YAAehuE,KAAM,KAAMD,GAAI,MACpCtN,KAAKq/E,UAAY,KACjBr/E,KAAKs/E,OAAS,MAElB5G,EAAYr4E,UAAUs7E,aAAe,WACjC,GAAI38C,GAAQh/B,IACZ,IAAIA,KAAKm1E,MAAQn1E,KAAKm1E,KAAKv9E,OAAS,EAAG;mCACnC,GAAI2nF,GAAWv/E,KAAKm1E,KAAK9kE,MAAM,GAC3BmvE,EAAex/E,KAAKo/E,UACxB,IAAII,EAAc,CACd,GAAIC,IAAQz/E,KAAK6+B,aAAasf,gBAAgB8sB,OAAS,KAAOjrE,KAAK6+B,aAAasf,gBAAgBwf,UAC3F5rD,aACLwtE,GAAWA,EAASt5C,OAAO,SAAUhvC,GACjC,OAAQuoF,GACJ,IAAK,UACD,MAAOvoF,GAAEolC,KAAKqjD,gBAAgB3tE,gBAAkB0tE,CACpD,KAAK,SACD,MAAOxoF,GAAEolC,KAAKqjD,gBAAgB3tE,gBAAkB0tE,GAC5CxoF,EAAEolC,KAAK2hD,cACL/mF,EAAEolC,KAAK2hD,WAAWpmF,MAC5B,KAAK,aACD,MAAOX,GAAEolC,KAAKqjD,gBAAgB3tE,gBAAkB0tE,GAC5CxoF,EAAEolC,KAAK2hD,cACL/mF,EAAEolC,KAAK2hD,WAAWpmF,MAC5B,KAAK,QACD,MAAIonC,GAAMw9C,qBAC+B,IAA9BvlF,EAAEolC,KAAK6gD,oBAEgB,IAAvBjmF,EAAEolC,KAAKY,WACtB,KAAK,WACD,OAA6B,IAAtBhmC,EAAEolC,KAAKc,UAClB,SACI,OAAO,KAIvB,GAAIn9B,KAAKu7E,WAAWhuE,MAAQvN,KAAKu7E,WAAWjuE,GAAI,CAC5C,GAAIqyE,GAASp2E,EAAO6B,IAAI,GAAId,MAAK,IAC7Bs1E,EAAOr2E,EAAO6B,KACdpL,MAAKu7E,WAAWhuE,OAChBoyE,EAASp2E,EAAO6B,IAAIpL,KAAKu7E,WAAWhuE,MAAM2d,QAAQ,QAClDlrB,KAAKu7E,WAAWjuE,KAChBsyE,EAAOr2E,EAAO6B,IAAIpL,KAAKu7E,WAAWjuE,IAAI+d,MAAM,QAChDk0D,EAAWA,EAASt5C,OAAO,SAAUhvC,GACjC,GAAI4oF,GAAWt2E,EAAO6B,IAAInU,EAAEolC,KAAKriB,WACjC,OAAO6lE,GAASv0D,UAAUq0D,EAAQC,IAASC,EAASr0D,OAAOm0D,IAAWE,EAASr0D,OAAOo0D,KAG9F,GAAIE,GAAQ9/E,KAAKq/E,WAAar/E,KAAKq/E,UAAUrsE,aACzC8sE,KACAP,EAAWA,EAASt5C,OAAO,SAAUhvC,GAAK,OAAqD,IAA9CA,EAAEolC,KAAK5rB,KAAKuC,cAAc0R,QAAQo7D,KAC1B,IAArD7oF,EAAEolC,KAAKwmC,YAAY7vD,cAAc0R,QAAQo7D,KACjD,IAAIC,GAAoB,SAAUv6E,GAAK,MAASA,GAAI66B,OAAO76B,GAAGwN,cAAgBqtB,OAAO76B,IACjFw6E,EAAShgF,KAAKs/E,MACdU,KACAT,EAAWA,EAAS1rE,KAAK,SAAUvc,EAAG4I,GAClC,SAAU6/E,EAAkBzoF,EAAE+kC,KAAK2jD,IAAWD,EAAkB7/E,EAAEm8B,KAAK2jD,OACjED,EAAkBzoF,EAAE+kC,KAAK2jD,IAAWD,EAAkB7/E,EAAEm8B,KAAK2jD,OAC9DhhD,EAAMo8C,YAAc,EAAI,KAGrC,IAAI/pD,GAAQrxB,KAAKu8E,SACI,iBAAVlrD,KACPkuD,EAAWA,EAASlvE,MAAM,EAAGghB,IAEjCrxB,KAAKu9E,aAAegC,EAChBv/E,KAAKw8E,qBAAuBx8E,KAAKu9E,cACjCv9E,KAAKw9E,6BACTx9E,KAAK48D,SAAS0B,gBAAgB34D,MAAOgsB,MAAO3xB,KAAKm1E,KAAKv9E,OAAQqoF,MAAOjgF,KAAKu9E,aAAa3lF,SACnFoI,KAAKw8E,qBAAuBx8E,KAAKu9E,cACjC2C,YAAY,WAAc,MAAOlhD,GAAMs+C,yBAA4B,OAG/E5E,EAAYr4E,UAAUm9E,2BAA6B,WAC/C,GAAIx+C,GAAQh/B,IACRA,MAAKw9B,YACLx9B,KAAKw9B,UAAUj4B,QAAQ,SAAUob,GAC7B,GAAI4+C,GAAavgC,EAAMu+C,aAAa/+C,KAAK,SAAUvkB,GAAK,MAAOA,GAAEmgB,QAAUzZ,EAAEyZ,OACzEmlC,KACAA,EAAWljC,KAAK6gD,mBAAqBv8D,EAAEsc,YACvCsiC,EAAWljC,KAAK+gD,eAAiBp+C,EAAMmhD,gBAAgBx/D,EAAEyZ,UAGjEp6B,KAAKy0E,cAAc7tC,WAG3B8xC,EAAYr4E,UAAU8/E,gBAAkB,SAAU/lD,GAC9C,GAAIgmD,KAKJ,OAJIpgF,MAAKw9B,UAAUgB,KAAK,SAAU7d,GAAK,MAAOA,GAAEyZ,QAAUA,KACtDp6B,KAAKw9B,UAAUyI,OAAO,SAAUtlB,GAAK,MAAOA,GAAEyZ,QAAUA,IAA2B,IAAlBzZ,EAAEsc,cAAyB13B,QAAQ,SAAUob,GAC1Gy/D,EAAiBz1E,KAAKgW,EAAE+c,OAEzB0iD,GAEX1H,EAAYr4E,UAAUggF,gBAAkB,SAAUjmD,GAC9C,GAAI05B,IAAQ,CAMZ,OALI9zD,MAAKw9B,UAAUgB,KAAK,SAAU7d,GAAK,MAAOA,GAAEyZ,QAAUA,KACtDp6B,KAAKw9B,UAAUyI,OAAO,SAAUtlB,GAAK,MAAOA,GAAEyZ,QAAUA,IAA2B,IAAlBzZ,EAAEsc,cAAyB13B,QAAQ,SAAUob,GAC1GmzC,EAAQnzC,EAAEsc,gBAGd62B,GAKRp8B,GACIgjD,EAAIt3C,cAAe2B,QAAS,UAC5B9M,EAAW,cAAe33B,SAC3Bo4E,EAAYr4E,UAAW,OAAQ,MAClCq3B,GACIgjD,EAAIl3C,gBACJvL,EAAW,cAAeyiD,EAAI52C,UAC/B40C,EAAYr4E,UAAW,oBAAiB,IAC3Cq3B,GACI7yB,EAAOg3C,UAAU,gBAAkBoD,KAAMp6C,EAAO8wD,mBAChD19B,EAAW,cAAepzB,EAAO8wD,mBAClC+iB,EAAYr4E,UAAW,qBAAkB,IAC5Cq4E,EAAchhD,GACV7yB,EAAO0kC,WACHC,SAAU,WACVC,SAAU7yC,EAAQ,kBAClB8yC,SAAU5xC,EAAO+gC,GACjB0S,YAAaO,EAAavvC,sBAAuBuvC,EAAanvC,gBAAiBmvC,EAAarvC,WAAYqvC,EAAa/uC,aAAc+uC,EAAa1uC,kBAAmB0uC,EAAajwC,uBAAwB67C,EAAS4B,kBAAmB4zB,EAAazzE,2BAA4BqyC,EAAatuC,SAC1R0xC,QAAS,gDAEbjX,EAAW,qBAAsB+P,EAAWnhC,cAAemhC,EAAW7gC,cAAe4gC,EAAU5vC,IAAI2jC,UAAWiM,EAAU5vC,IAAImmC,UAAW0J,EAAWvhC,YAAa5B,EAAO+wD,kBAAmBle,EAAS6B,OAAQvR,EAAWhgC,iBAAkBggC,EAAWzgC,2BAA4BojE,EAAOY,cAAevjC,EAAW3gC,YAAaqwC,EAAS8U,eAAgBjW,EAAMc,MAAOrP,EAAWrhC,qBAC9W+xE,IAEL9oC,EAAoB3qC,kBACtBvN,GAAQghF,YAAcA,IAInBlN,sBAAsB,mBAAmB8U,6BAA6B,0BAA0BC,yBAAyB,sBAAsBhU,yBAAyB,sBAAsBC,gCAAgC,6BAA6BjC,uBAAuB,oBAAoBiW,mDAAmD,GAAGC,iDAAiD,GAAGnG,kBAAkB,IAAIoG,iBAAiB,IAAIt6E,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBgyB,uBAAuB,uBAAuBl0B,6BAA6B,6BAA6B0Q,gBAAgB,EAAE3hD,KAAO,SAASq6E,KAAK,SAAS/pF,EAAQkB,EAAOJ,GACzqBI,EAAOJ,QAAU,q7HACXkpF,KAAK,SAAShqF,EAAQkB,EAAOJ,GACnC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjB8gD,EAAW9gD,EAAQ,mBACnBoxC,EAAapxC,EAAQ,wBACrBmxC,EAAYnxC,EAAQ,uBACpBo2E,EAAsBp2E,EAAQ,iCAC9B6hF,EAAY7hF,EAAQ,aACpB0hF,EAAW1hF,EAAQ,YACnB4J,EAAe5J,EAAQ,cACvBsiF,EAAiBtiF,EAAQ,mBACzBu2E,EAAiBv2E,EAAQ,kBACzBiqF,EAAajqF,EAAQ,0BACrB4gF,EAAY,SAAU92E,GAEtB,QAAS82E,GAAS7/B,EAAgB9Y,EAAc/tB,EAASg7D,EAAiBh0B,EAASzP,EAAYy4C,EAAS34C,GACpGznC,EAAO/I,KAAKqI,MACZA,KAAK23C,eAAiBA,EACtB33C,KAAK6+B,aAAeA,EACpB7+B,KAAK8Q,QAAUA,EACf9Q,KAAK8rE,gBAAkBA,EACvB9rE,KAAK83C,QAAUA,EACf93C,KAAKqoC,WAAaA,EAClBroC,KAAK8gF,QAAUA,EACf9gF,KAAKmoC,MAAQA,EACbnoC,KAAK+gF,WAAcC,QAAQ,GAC3BhhF,KAAKihF,SAAW,KAChBjhF,KAAKkhF,gBAwDT,MArEAnhF,GAAUy3E,EAAU92E,GAepB82E,EAASn3E,UAAUioC,SAAW,WAC1B,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBACDlF,KAAK8rE,gBAAgBxL,OAAOl8B,UAAU,SAAUk8B,GAC5C,GAAIznC,GAAKynC,EAAW,EACpBthC,GAAM2Y,eAAe6mB,SAAS3lC,GAAIuL,UAAU,SAAUxC,GAClD5C,EAAMw+B,cAAgB57B,EACjBA,GACD5C,EAAMqJ,WAAWviC,IAAI,kCAAkCs+B,UAAU,SAAUzrC,GACvEqmC,EAAM8hD,QAAQtnD,MAAM7gC,GACpBqmC,EAAM8Y,QAAQsU,UAAU,YAKxCpsD,KAAK6+B,aAAauqC,SAAShlC,UAAU,SAAU/H,GAC3C2C,EAAMm9C,YAAc9/C,EAAKutC,UAE7B5pE,KAAK8Q,QAAQ8tD,oBAAoBx6B,UAAU,SAAUzrC,GAAKqmC,EAAMo9C,OAASzjF,EAAEygC,YAC3Ep5B,KAAK23C,eAAe2mB,gBAAgBl6B,UAAU,SAAU32B,GAAO,MAAOuxB,GAAMiiD,SAAWxzE,IACvFzN,KAAK8Q,QAAQ8tD,oBAAoBx6B,UAAU,SAAUvc,GAC7CA,EAAMs5D,gBACNt5D,EAAMs5D,gBAAgB57E,QAAQ,SAAU5M,EAAGzB,GACvC,GAAIujC,GAAMsN,EAAU5vC,IAAIwiC,WAAWW,eAAe,cAAgB3iC,EAAEk+E,QAAQp8C,GAC5EuE,GAAMkiD,aAAav2E,MACfskB,MAAO/3B,EACPkqF,oBAAqBzoF,EAAEyoF,oBACvBlzB,UAAW,OAEfoZ,OAAOC,OAAO9sC,GACTojB,KAAK,SAAU/lD,GAChBknC,EAAMkiD,aAAa1iD,KAAK,SAAU7d,GAAK,MAAOA,GAAEsO,QAAU/3B,IAAMg3D,UAAYp2D,EAAOwI,OAAOyxB,KAAKj6B,GAAQ,QAK/GknC,EAAMkiD,oBAItB1J,EAASn3E,UAAUqzD,OAAS,SAAU2tB,GAClC,GAAIriD,GAAQh/B,IACDM,QAAOyxB,KAAK/xB,KAAK+gF,WACvB96C,OAAO,SAAU97B,GAAK,MAAOA,IAAKk3E,IAAY97E,QAAQ,SAAU4E,GAAK,MAAO60B,GAAM+hD,UAAU52E,IAAK,IACtGnK,KAAK+gF,UAAUM,IAAW,GAE9B7J,EAAW9/C,GACP7yB,EAAO0kC,WACHE,SAAU7yC,EAAQ,mBAClB8yC,SAAU5xC,EAAO+gC,GACjB0S,YAAa4hC,EAAeqB,aAAciK,EAAUC,YAAaJ,EAASC,WAAYW,EAAezG,4BAA6BoO,EAAWplF,iBAEjJw8B,EAAW,qBAAsB+P,EAAWnhC,cAAemhC,EAAWvhC,YAAauhC,EAAW7gC,cAAeuwC,EAAS8U,eAAgB9U,EAAS6B,OAAQvR,EAAWhgC,iBAAkBxH,EAAa4uC,cAAerH,EAAU5vC,IAAI2jC,aAC/N07C,IAELxK,EAAoB/nE,kBACtBvN,GAAQ8/E,SAAWA,IAIhBQ,gCAAgC,EAAExM,sBAAsB,mBAAmBe,yBAAyB,sBAAsBhC,uBAAuB,oBAAoB+P,kBAAkB,IAAIgH,iBAAiB,IAAIzI,WAAW,IAAIC,YAAY,IAAIyI,kBAAkB,IAAIn7E,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBz4C,aAAa,eAAewgF,KAAK,SAAS5qF,EAAQkB,EAAOJ,GACrYI,EAAOJ,QAAU,8UACX+pF,KAAK,SAAS7qF,EAAQkB,EAAOJ,GACnC,YACA,IAAIqI,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,uBACrBg5C,EAAsBh5C,EAAQ,gCAC9B8gD,EAAW9gD,EAAQ,mBACnB+gF,EAAgB,SAAUj3E,GAE1B,QAASi3E,GAAa7mE,GAClBpQ,EAAO/I,KAAKqI,MACZA,KAAK8Q,QAAUA,EAcnB,MAjBA/Q,GAAU43E,EAAcj3E,GAKxBi3E,EAAat3E,UAAUioC,SAAW,WAC9B,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBAAkBlF,KAAK8Q,QAAQ8tD,oBAAoBx6B,UAAU,SAAUvc,GAAS,MAAOmX,GAAMmtC,MAAQtkD,EAAMukD,iBAEpHuL,EAAejgD,GACX7yB,EAAO0kC,WACHE,SAAU7yC,EAAQ,uBAClB8yC,SAAU5xC,EAAO+gC,GACjB0S,YAAamM,EAAS4B,qBAE1BrhB,EAAW,qBAAsB+P,EAAW7gC,iBAC7CwwE,IAEL/nC,EAAoB3qC,kBACtBvN,GAAQigF,aAAeA,IAIpB+J,+BAA+B,6BAA6B9S,sBAAsB,oBAAoB+S,sBAAsB,IAAIv7E,gBAAgB,gBAAgBqzC,kBAAkB,oBAAoBmoC,KAAK,SAAShrF,EAAQkB,EAAOJ,GACtOI,EAAOJ,QAAU,+2EACXmqF,KAAK,SAASjrF,EAAQkB,EAAOJ,GACnCI,EAAOJ,QAAU,84EACXoqF,KAAK,SAASlrF,EAAQkB,EAAOJ,GACnC,YA0BA,SAASqqF,GAASjqC,GACd,MAAIA,GAAQ41B,YAAYliB,SAAS/wB,IAAIunC,WAAW,UAExChW,KAAMhkB,EAAW/gC,kBAAkB+6E,gBAAiBC,MAAO,wBAAwB9/D,KAAK21B,EAAQ41B,YAAYliB,SAAS/wB,KAAK,KAGrHuxB,KAAMhkB,EAAW/gC,kBAAkBi7E,UAAWD,MAAO,MA/BtE,GAAIliF,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIxI,KAAKyI,GAAOA,EAAEtH,eAAenB,KAAIwI,EAAExI,GAAKyI,EAAEzI,GAEnDwI,GAAEI,UAAkB,OAANH,EAAaI,OAAOC,OAAOL,IAAMC,EAAGE,UAAYH,EAAEG,UAAW,GAAIF,KAE/Eu3B,EAAc13B,MAAQA,KAAK03B,YAAe,SAAUC,EAAYC,EAAQxnB,EAAKynB,GAC7E,GAA2H53B,GAAvH7I,EAAIuS,UAAU/R,OAAQf,EAAIO,EAAI,EAAIwgC,EAAkB,OAATC,EAAgBA,EAAOv3B,OAAOw3B,yBAAyBF,EAAQxnB,GAAOynB,CACrH,IAAuB,gBAAZE,UAAoD,kBAArBA,SAAQC,SAAyBnhC,EAAIkhC,QAAQC,SAASL,EAAYC,EAAQxnB,EAAKynB,OACpH,KAAK,GAAI3gC,GAAIygC,EAAW//B,OAAS,EAAGV,GAAK,EAAGA,KAAS+I,EAAI03B,EAAWzgC,MAAIL,GAAKO,EAAI,EAAI6I,EAAEpJ,GAAKO,EAAI,EAAI6I,EAAE23B,EAAQxnB,EAAKvZ,GAAKoJ,EAAE23B,EAAQxnB,KAASvZ,EAChJ,OAAOO,GAAI,GAAKP,GAAKyJ,OAAOuF,eAAe+xB,EAAQxnB,EAAKvZ,GAAIA,GAE5DohC,EAAcj4B,MAAQA,KAAKi4B,YAAe,SAAU9tB,EAAG+tB,GACvD,GAAuB,gBAAZH,UAAoD,kBAArBA,SAAQI,SAAyB,MAAOJ,SAAQI,SAAShuB,EAAG+tB,IAEtGrzB,EAASjO,EAAQ,iBACjBoxC,EAAapxC,EAAQ,uBAErBs2E,GADYt2E,EAAQ,sBACLA,EAAQ,0BACvB2iD,EAAS3iD,EAAQ,mBACjBu2E,EAAiBv2E,EAAQ,yBACzBo2E,EAAsBp2E,EAAQ,gCAC9Bg1E,EAAiBh1E,EAAQ,0BACzB2/C,EAAQ3/C,EAAQ,8BAChBurF,EAAevrF,EAAQ,yBACvBoO,EAAKpO,EAAQ,QASb03E,EAAuB,SAAU5tE,GAEjC,QAAS4tE,GAAoB8T,EAAQvjD,EAAciZ,EAASgzB,EAAShO,EAAgBnlB,EAAgBtP,EAAYyH,EAAa+H,EAAoBuE,EAAQyvB,GACtJnrE,EAAO/I,KAAKqI,MACZA,KAAK6+B,aAAeA,EACpB7+B,KAAK83C,QAAUA,EACf93C,KAAK8qE,QAAUA,EACf9qE,KAAK88D,eAAiBA,EACtB98D,KAAK23C,eAAiBA,EACtB33C,KAAKqoC,WAAaA,EAClBroC,KAAK8vC,YAAcA,EACnB9vC,KAAK63C,mBAAqBA,EAC1B73C,KAAKo8C,OAASA,EACdp8C,KAAK6rE,MAAQA,EACb7rE,KAAKutE,aAAe,GAAIvoE,GAAGk/B,QAC3BlkC,KAAKqiF,YAAc,GAAIr9E,GAAGk/B,QAC1BlkC,KAAKsiF,YAAa,EAClBtiF,KAAKoiF,OAASA,EA8FlB,MA9GAriF,GAAUuuE,EAAqB5tE,GAkB/B4tE,EAAoBjuE,UAAUioC,SAAW,WACrC,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBAAkBlF,KAAK6+B,aAAauqC,SAAShlC,UAAU,SAAUhkB,GAAQ,MAAO4e,GAAMujD,UAAYniE,EAAKkpD,UAAYlpD,EAAKwpD,UAAYxpD,EAAKwpD,QAAQU,SAClJtqE,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUzgC,GAAK,MAAOA,aAAa+zC,GAAOlB,gBAChEjU,UAAU,SAAU5+B,GACrB,GAAIm/C,GAAQo9B,EAAS/iD,EAAM8Y,QACvB6M,GAAMs9B,QAAUt9B,EAAMs9B,MAAMjgB,WAAW,MACvChjC,EAAMojD,OAAOjc,MAAMxhB,EAAMs9B,OAC7BjjD,EAAMgtB,KAAOrH,EAAMqH,KACnBzQ,WAAW,WACPvc,EAAMuuC,aAAa5nE,KAAKq5B,EAAMgtB,OAAShkB,EAAW/gC,kBAAkBi7E,WACpEljD,EAAMqjD,YAAY18E,KAAKq5B,EAAMgtB,OAAShkB,EAAW/gC,kBAAkB+6E,kBACpE,GACChjD,EAAMgtB,OAAShkB,EAAW/gC,kBAAkBi7E,WAC5CljD,EAAM8Q,YAAYo1B,YAAY,MAClClmC,EAAMwjD,qBAAqB,MAAM,KAErCxiF,KAAK6+B,aAAauqC,SAAShlC,UAAU,SAAU/H,GAE3C,GADA2C,EAAMm9C,YAAc9/C,EAAKutC,QACpBvtC,EAAKitC,UAAajtC,EAAKutC,QAWnBvtC,EAAKutC,QAAQU,QAClBtrC,EAAM8Y,QAAQsU,UAAU,gBAZS,CACjC,GAAIq2B,GAAez9E,EAAGu6B,WAAWqgB,IAAG,EAC/BvjB,GAAK8C,eACNsjD,EAAezjD,EAAM6sC,MAAMttC,OAAOS,EAAM+R,aAAa3X,YACzDqpD,EAAar+C,UAAU,SAAUy7B,GACzBA,EACA7gC,EAAM6sC,MAAMP,cAEZtsC,EAAM0jD,mBAOtB1iF,KAAK6+B,aAAa4qC,eAAerlC,UAAU,WACvCpF,EAAMqJ,WAAWviC,IAAI,iCAAiCs+B,UAAU,SAAUvtC,GACtE,MAAOmoC,GAAMod,OAAOlF,QAAQC,MAAMnY,EAAMqJ,WAAW8I,QAAQ,kBAAkBxwC,QAAQ9J,GAAGugD,WAGhGp3C,KAAK88D,eAAe8B,oBAAoBx6B,UAAU,SAAUzrC,GAAK,MAAOqmC,GAAM2jD,SAAWhqF,EAAEiqF,oBAAsBjqF,EAAEiqF,mBAAmBC,iBACtI7iF,KAAK23C,eAAeW,qBAAqBlU,UAAU,SAAUhtC,GAAK,MAAO4nC,GAAMgZ,QAAU5gD,GAAK,SAAWA,EAAE6kC,UAAY,MACvHj8B,KAAK63C,mBAAmBynB,kBAAkBl7B,UAAU,SAAU/sC,GAAK,MAAO2nC,GAAMwjD,qBAAqB,MAAM,OAGnHlU,EAAoBjuE,UAAUyiF,oBAAsB,SAAUC,GAC1D,GAAIC,IAAe,SACfD,KAAa/iF,KAAK8qE,QAAQj+B,cAAcq+B,SAAS+X,SAASC,SAAS,UACnEF,EAAYr4E,MACR4C,KAAMvN,KAAK8qE,QAAQj+B,cAAcq+B,SAAS+X,WAElDjjF,KAAK83C,QAAQsU,SAAS42B,IAE1B1U,EAAoBjuE,UAAUqiF,YAAc,WACxC,GAAI1jD,GAAQh/B,IACRA,MAAK6rE,MAAMb,kBACXhrE,KAAK8iF,sBAEL9iF,KAAK6rE,MAAMT,wBAAwBhnC,UAAU,SAAUy7B,GAC/CA,EACA7gC,EAAM6sC,MAAMP,cAEZtsC,EAAM8jD,qBAAoB,MAI1CxU,EAAoBjuE,UAAU8iF,cAAgB,WAC1CnjF,KAAK6rE,MAAMd,OAAO/qE,KAAK+wC,aAAa3X,YAExCk1C,EAAoBjuE,UAAU+iF,aAAe,WAAcpjF,KAAK8iF,qBAAoB,IACpFxU,EAAoBjuE,UAAUmiF,qBAAuB,SAAUx1C,EAAOI,GAC9DJ,GAASA,EAAM6R,YAAc7R,EAAM6R,YAAc7R,EAAM6R,WAAWlZ,YACjEqH,EAAM6R,WAAWlZ,UAAUjhB,QAAQ,mBAAqB,GAAKsoB,EAAM6R,WAAWlZ,UAAUjhB,QAAQ,0BAA4B,GAC7H1kB,KAAKsiF,YAActiF,KAAKsiF,eACPv1E,KAAZqgC,IACLptC,KAAKsiF,WAAal1C,IAE1BkhC,EAAoBjuE,UAAUgjF,UAAY,WACtCrjF,KAAKsiF,YAAa,GAEtB5qD,GACI7yB,EAAOiqC,QACP7W,EAAW,cAAe33B,SAC3BguE,EAAoBjuE,UAAW,mBAAgB,IAClDiuE,EAAsB52C,GAClB7yB,EAAO0kC,WACHC,SAAU,cACVC,SAAU7yC,EAAQ,qBAClB8yC,SAAU5xC,EAAO+gC,GACjB0S,YAAa4hC,EAAeqB,aAActB,EAAa3zE,wBAAyBggD,EAAOD,qBAE3FrhB,EAAW,qBAAsB+P,EAAW/gC,kBAAmB+gC,EAAWvhC,YAAa8yC,EAAOA,OAAQvR,EAAW//B,UAAW+/B,EAAW7gC,cAAe6gC,EAAWnhC,cAAemhC,EAAWhgC,iBAAkBggC,EAAWjhC,WAAYihC,EAAWrgC,kBAAmB4uC,EAAMc,MAAOu0B,EAAehB,gBAC/R0D,IAELtB,EAAoB/nE,kBACtBvN,GAAQ42E,oBAAsBA,CAC9B,IAAIC,GAAuB,SAAU7tE,GAEjC,QAAS6tE,GAAoBpmC,EAAO2P,EAAS8kB,EAAUE,GACnDp8D,EAAO/I,KAAKqI,MACZA,KAAKmoC,MAAQA,EACbnoC,KAAK83C,QAAUA,EACf93C,KAAK48D,SAAWA,EAChB58D,KAAK88D,eAAiBA,EAmB1B,MAzBA/8D,GAAUwuE,EAAqB7tE,GAQ/B6tE,EAAoBluE,UAAUioC,SAAW,WACrC,GAAItJ,GAAQh/B,IACZA,MAAKkF,gBACDlF,KAAK83C,QAAQM,OAAOnS,OAAO,SAAUzgC,GAAK,MAAOA,aAAa+zC,GAAOlB,gBAChEjU,UAAU,SAAU5+B,GACrB,GAAIm/C,GAAQo9B,EAAS/iD,EAAM8Y,QAC3B9Y,GAAMgtB,KAAOrH,EAAMqH,OAEvBhsD,KAAKmoC,MAAMuJ,UAAUtN,UAAU,SAAUvtC,GAAK,MAAOmoC,GAAMskD,eAAiBzsF,GAAKA,EAAEwlC,OACnFr8B,KAAK48D,SAAStkB,qBAAqBlU,UAAU,SAAUhtC,GAAK,MAAO4nC,GAAMw+B,cAAgBpmE,KAE7F4I,KAAKujF,oBAAoBvjF,KAAK88D,eAAe/rB,aAAas9B,gCAE9DE,EAAsB72C,GAClB7yB,EAAO0kC,WAAYC,SAAU,cAAeC,SAAU7yC,EAAQ,qBAAsB8yC,SAAU5xC,EAAO+gC,GAAI0S,YAAa42C,EAAahpF,6BACnI8+B,EAAW,qBAAsB+P,EAAWjhC,WAAYwyC,EAAOA,OAAQvR,EAAWnhC,cAAemhC,EAAW7gC,iBAC7GonE,IAELvB,EAAoB/nE,kBACtBvN,GAAQ62E,oBAAsBA,IAI3BG,+BAA+B,EAAEgD,qBAAqB,mBAAmB/C,wBAAwB,sBAAsBC,sBAAsB,oBAAoBgD,yBAAyB,GAAG9C,wBAAwB,IAAI0U,oBAAoB,IAAIC,oBAAoB,IAAIr9E,gBAAgB,gBAAgBqzC,kBAAkB,kBAAkBlC,6BAA6B,6BAA6BjxC,KAAO,cAAc","file":"app.js","sourcesContent":["require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return this._months;\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return this._monthsShort;\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n //the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return this._weekdays;\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n ordinalParse: defaultOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (typeof(input) === 'object') {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$1 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$1;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n}\n\nfunction makeGetter(name) {\n return function () {\n return this._data[name];\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds < thresholds.s && ['s', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n return true;\n}\n\nfunction humanize (withSuffix) {\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n\nhooks.version = '2.17.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\nreturn hooks;\n\n})));\n\n},{}],2:[function(require,module,exports){\narguments[4][\"@toolkit/reactiveComponent\"][0].apply(exports,arguments)\n},{\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\",\"dup\":\"@toolkit/reactiveComponent\",\"rxjs\":\"rxjs\"}],3:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ajaxProxy_1 = require('./ajaxProxy');\nvar core_1 = require('@angular/core');\nvar ClientsProxy = (function () {\n function ClientsProxy(_http) {\n this._http = _http;\n }\n ClientsProxy.prototype.search = function (term) {\n return this._http.get(\"/api/clients/search/\" + encodeURIComponent(term), null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ClientsProxy.prototype.clientSearch = function (term) {\n return this._http.post(\"/api/clients/clientsearch\", term || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ClientsProxy.prototype.get = function (id) {\n return this._http.get(\"/api/clients/\" + id, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ClientsProxy.prototype.getDetails = function (id) {\n return this._http.get(\"/api/clients/\" + id + \"/details\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ClientsProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [ajaxProxy_1.ProxyHttp])\n ], ClientsProxy);\n return ClientsProxy;\n}());\nexports.ClientsProxy = ClientsProxy;\n\n\n\n},{\"./ajaxProxy\":14,\"@angular/core\":\"@angular/core\"}],4:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ajaxProxy_1 = require('./ajaxProxy');\nvar core_1 = require('@angular/core');\nvar CurrencyProxy = (function () {\n function CurrencyProxy(_http) {\n this._http = _http;\n }\n CurrencyProxy.prototype.list = function (modelName) {\n return this._http.get(\"/api/currency/\" + modelName, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n CurrencyProxy.prototype.changeCurrency = function (data) {\n return this._http.post(\"/api/currency/change\", data || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n CurrencyProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [ajaxProxy_1.ProxyHttp])\n ], CurrencyProxy);\n return CurrencyProxy;\n}());\nexports.CurrencyProxy = CurrencyProxy;\n\n\n\n},{\"./ajaxProxy\":14,\"@angular/core\":\"@angular/core\"}],5:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ajaxProxy_1 = require('./ajaxProxy');\nvar core_1 = require('@angular/core');\nvar ErrorProxy = (function () {\n function ErrorProxy(_http) {\n this._http = _http;\n }\n ErrorProxy.prototype.error = function (error) {\n return this._http.post(\"/api/error\", error || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ErrorProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [ajaxProxy_1.ProxyHttp])\n ], ErrorProxy);\n return ErrorProxy;\n}());\nexports.ErrorProxy = ErrorProxy;\n\n\n\n},{\"./ajaxProxy\":14,\"@angular/core\":\"@angular/core\"}],6:[function(require,module,exports){\n\"use strict\";\n(function (NavigationType) {\n NavigationType[NavigationType[\"none\"] = 0] = \"none\";\n NavigationType[NavigationType[\"persist\"] = 1] = \"persist\";\n NavigationType[NavigationType[\"persistAndExecute\"] = 2] = \"persistAndExecute\";\n NavigationType[NavigationType[\"persistAndProcess\"] = 3] = \"persistAndProcess\";\n})(exports.NavigationType || (exports.NavigationType = {}));\nvar NavigationType = exports.NavigationType;\n\n\n\n},{}],7:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar http_1 = require('@angular/http');\nvar core_1 = require('@angular/core');\nvar ModulesProxy = (function () {\n function ModulesProxy(_http) {\n this._http = _http;\n }\n ModulesProxy.prototype.modules = function () {\n return this._http.get(\"/api/modules\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ModulesProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [http_1.Http])\n ], ModulesProxy);\n return ModulesProxy;\n}());\nexports.ModulesProxy = ModulesProxy;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/http\":\"@angular/http\"}],8:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar http_1 = require('@angular/http');\nvar core_1 = require('@angular/core');\nvar PdfProxy = (function () {\n function PdfProxy(_http) {\n this._http = _http;\n }\n PdfProxy.downloadReport_url = function (runId, pdfName, language, parameter) {\n return { method: 'get', url: \"/api/pdf/\" + runId + \"/\" + pdfName + \"?language=\" + language + \"¶meter=\" + parameter };\n };\n PdfProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [http_1.Http])\n ], PdfProxy);\n return PdfProxy;\n}());\nexports.PdfProxy = PdfProxy;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/http\":\"@angular/http\"}],9:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar http_1 = require('@angular/http');\nvar core_1 = require('@angular/core');\nvar ProxyProxy = (function () {\n function ProxyProxy(_http) {\n this._http = _http;\n }\n ProxyProxy.prototype.authenticateWindowsAuth = function () {\n return this._http.get(\"/api/proxy/windowsauth\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ProxyProxy.prototype.useWindowsAuth = function () {\n return this._http.get(\"/api/proxy/usewindowsauth\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ProxyProxy.prototype.login = function (logonDetails) {\n return this._http.post(\"/api/proxy/login\", logonDetails || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ProxyProxy.prototype.proxy = function (proxyDetails) {\n return this._http.post(\"/api/proxy/ajax\", proxyDetails || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ProxyProxy.prototype.binary = function (id, body) {\n return this._http.post(\"/api/proxy/binary/\" + id, body || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ProxyProxy.prototype.binaryUpload = function (binary, fwdUri) {\n return this._http.post(\"/api/proxy/binary-upload/\" + fwdUri, binary || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ProxyProxy.redirector_url = function (backendUri) {\n return { method: 'get', url: \"/api/proxy/redirector/\" + backendUri };\n };\n ProxyProxy.binary_url = function (id) {\n return { method: 'get', url: \"/api/proxy/binary/\" + id };\n };\n ProxyProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [http_1.Http])\n ], ProxyProxy);\n return ProxyProxy;\n}());\nexports.ProxyProxy = ProxyProxy;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/http\":\"@angular/http\"}],10:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar http_1 = require('@angular/http');\nvar core_1 = require('@angular/core');\nvar ReferenceTranslationProxy = (function () {\n function ReferenceTranslationProxy(_http) {\n this._http = _http;\n }\n ReferenceTranslationProxy.prototype.getReferenceTranslationValues = function (culture) {\n return this._http.get(\"/api/referenceTranslation/translationValues/\" + encodeURIComponent(culture), null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n ReferenceTranslationProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [http_1.Http])\n ], ReferenceTranslationProxy);\n return ReferenceTranslationProxy;\n}());\nexports.ReferenceTranslationProxy = ReferenceTranslationProxy;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/http\":\"@angular/http\"}],11:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ajaxProxy_1 = require('./ajaxProxy');\nvar core_1 = require('@angular/core');\nvar RunsProxy = (function () {\n function RunsProxy(_http) {\n this._http = _http;\n }\n RunsProxy.prototype.createRun = function (model, data) {\n return this._http.post(\"/api/runs/\" + encodeURIComponent(model), data || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.get = function (runId) {\n return this._http.get(\"/api/runs/\" + runId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.countRuns = function (model, clientId) {\n return this._http.get(\"/api/runs/\" + encodeURIComponent(model) + \"/\" + clientId + \"/count\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.list = function (model, clientId) {\n return this._http.get(\"/api/runs/\" + encodeURIComponent(model) + \"/\" + clientId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.clone = function (options) {\n return this._http.post(\"/api/runs/clone\", options || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.delete = function (runId) {\n return this._http.delete(\"/api/runs/\" + runId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.updateRunInfo = function (runId, info) {\n return this._http.put(\"/api/runs/\" + runId + \"/info\", info || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.updateRunJson = function (runId, run) {\n return this._http.put(\"/api/runs/\" + runId + \"/model\", run || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.updateRunStage = function (runId, run) {\n return this._http.put(\"/api/runs/\" + runId + \"/stage\", run || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.execute = function (runId, execution) {\n return this._http.post(\"/api/runs/\" + runId + \"/execute\", execution || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.createShare = function (runId, options) {\n return this._http.post(\"/api/runs/\" + runId + \"/share/create\", options || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.manageShares = function (runId, options) {\n return this._http.put(\"/api/runs/\" + runId + \"/share/management\", options || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.getFinalRunIds = function (model, clientId, policyYear) {\n return this._http.get(\"/api/runs/finalized/\" + encodeURIComponent(model) + \"/\" + clientId + \"/\" + policyYear, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.setRunStatus = function (model, runId, isFinalized, policyYear) {\n return this._http.post(\"/api/runs/finalize/\" + encodeURIComponent(model) + \"/\" + runId + \"/\" + isFinalized + \"/\" + policyYear, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.setProspectStatus = function (model, runId, isProspect) {\n return this._http.post(\"/api/runs/prospect/\" + runId + \"/\" + isProspect + \"?model=\" + encodeURIComponent(model), null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.getLobsFromRun = function (runId) {\n return this._http.get(\"/api/runs/getLobs/\" + runId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.getFinalRunsForYear = function (modelId, year, clientId) {\n return this._http.get(\"/api/runs/getFinalRunsForYear/\" + encodeURIComponent(modelId) + \"/\" + year + \"?clientId=\" + clientId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.setMultipleRunAsFinal = function (finalRuns) {\n return this._http.post(\"/api/runs/setMultipleRunAsFinal\", finalRuns || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.deselectFinalRunWithLob = function (runId, lob) {\n return this._http.post(\"/api/runs/deselectFinalRunWithLob?runId=\" + runId + \"&lob=\" + encodeURIComponent(lob), null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.getFullFinalRuns = function (modelId, clientId) {\n return this._http.get(\"/api/runs/getFullFinalRuns/\" + encodeURIComponent(modelId) + \"/\" + clientId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.getLobsFromFinalRun = function (runId) {\n return this._http.get(\"/api/runs/getLobsFromFinalRun/\" + runId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.updateFinalRunDetails = function (runId, displayName) {\n return this._http.post(\"/api/runs/updateFinalRunDetails/\" + runId + \"/\" + encodeURIComponent(displayName), null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.prototype.deleteFinalRun = function (runId) {\n return this._http.post(\"/api/runs/deleteFinalRun/\" + runId, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n RunsProxy.createIntegrationRun_url = function (model, data) {\n return { method: 'post', url: \"/api/runs/\" + encodeURIComponent(model) + \"/integration/create\" };\n };\n RunsProxy.executeIntegrationRun_url = function (model, runId) {\n return { method: 'post', url: \"/api/runs/\" + encodeURIComponent(model) + \"/\" + runId + \"/integration/execute\" };\n };\n RunsProxy.getIntegrationRunDetail_url = function (model, runId) {\n return { method: 'get', url: \"/api/runs/\" + encodeURIComponent(model) + \"/\" + runId + \"/integration/detail\" };\n };\n RunsProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [ajaxProxy_1.ProxyHttp])\n ], RunsProxy);\n return RunsProxy;\n}());\nexports.RunsProxy = RunsProxy;\n\n\n\n},{\"./ajaxProxy\":14,\"@angular/core\":\"@angular/core\"}],12:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar http_1 = require('@angular/http');\nvar core_1 = require('@angular/core');\nvar SettingsProxy = (function () {\n function SettingsProxy(_http) {\n this._http = _http;\n }\n SettingsProxy.prototype.get = function () {\n return this._http.get(\"/api/settings\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n SettingsProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [http_1.Http])\n ], SettingsProxy);\n return SettingsProxy;\n}());\nexports.SettingsProxy = SettingsProxy;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/http\":\"@angular/http\"}],13:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar ajaxProxy_1 = require('./ajaxProxy');\nvar core_1 = require('@angular/core');\nvar UserProxy = (function () {\n function UserProxy(_http) {\n this._http = _http;\n }\n UserProxy.prototype.get = function () {\n return this._http.get(\"/api/user\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n UserProxy.prototype.verify = function () {\n return this._http.get(\"/api/user/verify\", null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n UserProxy.prototype.find = function (term) {\n return this._http.get(\"/api/user/find/\" + term, null || {}).map(function (ret) { return ({ data: ret.json(), originalResponse: ret }); });\n };\n UserProxy = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [ajaxProxy_1.ProxyHttp])\n ], UserProxy);\n return UserProxy;\n}());\nexports.UserProxy = UserProxy;\n\n\n\n},{\"./ajaxProxy\":14,\"@angular/core\":\"@angular/core\"}],14:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar rx_1 = require('rxjs');\nvar ProxyController_1 = require('./ProxyController');\nvar userService_1 = require('../services/userService');\nvar ProxyHttp = (function () {\n function ProxyHttp(_proxy, _userService) {\n this._proxy = _proxy;\n this._userService = _userService;\n }\n ProxyHttp.prototype.makeRequest = function (request) {\n var _this = this;\n var stream = this._proxy.proxy(request).map(function (ret) { return ret.originalResponse; }).catch(function (error) {\n if (error.status === 401) {\n _this._userService.unauthorized();\n return _this._userService.reauthorized.take(1).flatMap(function () { return _this.makeRequest(request); });\n }\n else\n return rx_1.Observable.throw(error);\n });\n ;\n return stream;\n };\n ProxyHttp.prototype.binaryRequest = function (body) {\n var _this = this;\n var stream = this._proxy.binaryUpload(body.binary, body.url).map(function (ret) { return ret.originalResponse; }).catch(function (error) {\n if (error.status === 401) {\n _this._userService.unauthorized();\n return _this._userService.reauthorized.take(1).flatMap(function () { return _this.binaryRequest(body); });\n }\n else\n return rx_1.Observable.throw(error);\n });\n ;\n return stream;\n };\n ProxyHttp.prototype.get = function (url, options) { return this.makeRequest({ data: null, url: url, verb: 'get', }); };\n ProxyHttp.prototype.post = function (url, body, options) {\n if (body instanceof ArrayBuffer) {\n return this.binaryRequest({ binary: body, url: url });\n }\n if (body instanceof BinaryTransferObject) {\n return this.binaryRequest({ binary: body.serialize(), url: url });\n }\n else\n return this.makeRequest({ data: body && JSON.stringify(body), url: url, verb: 'post', });\n };\n ProxyHttp.prototype.put = function (url, body, options) { return this.makeRequest({ data: body && JSON.stringify(body), url: url, verb: 'put', }); };\n ProxyHttp.prototype.delete = function (url, options) { return this.makeRequest({ data: null, url: url, verb: 'delete', }); };\n ProxyHttp = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [ProxyController_1.ProxyProxy, userService_1.UserService])\n ], ProxyHttp);\n return ProxyHttp;\n}());\nexports.ProxyHttp = ProxyHttp;\nvar utf8 = {};\nutf8.toByteArray = function (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; i++)\n if (str.charCodeAt(i) <= 0x7F)\n byteArray.push(str.charCodeAt(i));\n else {\n var h = encodeURIComponent(str.charAt(i)).substr(1).split('%');\n for (var j = 0; j < h.length; j++)\n byteArray.push(parseInt(h[j], 16));\n }\n return byteArray;\n};\nutf8.parse = function (byteArray) {\n var str = '';\n for (var i = 0; i < byteArray.length; i++)\n str += byteArray[i] <= 0x7F ?\n byteArray[i] === 0x25 ? \"%25\" :\n String.fromCharCode(byteArray[i]) :\n \"%\" + byteArray[i].toString(16).toUpperCase();\n return decodeURIComponent(str);\n};\nvar BinaryTransferObject = (function () {\n function BinaryTransferObject(value, binaries) {\n this.value = value;\n if (binaries instanceof ArrayBuffer)\n this.contents = [binaries];\n else\n this.contents = binaries;\n }\n BinaryTransferObject.prototype.numToArr = function (num) {\n var lengthArr = [];\n while (num > 0) {\n if (num > 255) {\n lengthArr.push(255);\n num -= 255;\n }\n else {\n lengthArr.push(num);\n break;\n }\n }\n lengthArr.push(0);\n return lengthArr;\n };\n BinaryTransferObject.prototype.serialize = function () {\n var _this = this;\n var source = this.contents.map(function (o) { return new Uint8Array(o); });\n var lengths = source.map(function (o) { return _this.numToArr(o.length); });\n if (!!this.value) {\n var bytes = utf8.toByteArray(JSON.stringify(this.value, null, null));\n var dataLength = this.numToArr(bytes.length);\n source = [bytes].concat(source);\n lengths = [dataLength].concat(lengths);\n }\n var totalLength = source.reduce(function (acc, o) { return acc + o.length; }, 0) + lengths.reduce(function (acc, o) { return acc + o.length; }, 0);\n var data = new Uint8Array(totalLength);\n var offset = 0;\n source.forEach(function (item, index) {\n var prefix = lengths[index];\n data.set(prefix, offset);\n offset += prefix.length;\n data.set(item, offset);\n offset += item.length;\n });\n return data.buffer;\n };\n return BinaryTransferObject;\n}());\nexports.BinaryTransferObject = BinaryTransferObject;\n\n\n\n},{\"../services/userService\":93,\"./ProxyController\":9,\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],15:[function(require,module,exports){\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\n__export(require('./ModelDescription'));\n\n\n\n},{\"./ModelDescription\":6}],16:[function(require,module,exports){\n\"use strict\";\nvar PdfContext = (function () {\n function PdfContext(run, client, model, currencies, pdfIdentifier, ready) {\n this.run = run;\n this.client = client;\n this.model = model;\n this.currencies = currencies;\n this.pdfIdentifier = pdfIdentifier;\n this.ready = ready;\n }\n return PdfContext;\n}());\nexports.PdfContext = PdfContext;\n\n\n\n},{}],17:[function(require,module,exports){\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar ModulesController_1 = require('./ModulesController');\nvar ClientsController_1 = require('./ClientsController');\nvar RunsController_1 = require('./RunsController');\nvar ProxyController_1 = require('./ProxyController');\nvar UserController_1 = require('./UserController');\nvar CurrencyController_1 = require('./CurrencyController');\nvar ErrorController_1 = require('./ErrorController');\nvar ReferenceTranslationController_1 = require('./ReferenceTranslationController');\nvar SettingsController_1 = require('./SettingsController');\nvar ajaxProxy_1 = require('./ajaxProxy');\nvar userService_1 = require('../services/userService');\n__export(require('./ModulesController'));\n__export(require('./ClientsController'));\n__export(require('./RunsController'));\n__export(require('./ProxyController'));\n__export(require('./UserController'));\n__export(require('./CurrencyController'));\n__export(require('./ErrorController'));\n__export(require('./ReferenceTranslationController'));\n__export(require('./SettingsController'));\nvar Pdf = require('./PdfController');\nexports.Pdf = Pdf;\nexports.WEBAPI_PROVIDERS = [userService_1.UserService, ajaxProxy_1.ProxyHttp, ModulesController_1.ModulesProxy, ClientsController_1.ClientsProxy, RunsController_1.RunsProxy, ProxyController_1.ProxyProxy, ErrorController_1.ErrorProxy, UserController_1.UserProxy, Pdf.PdfProxy, CurrencyController_1.CurrencyProxy, ReferenceTranslationController_1.ReferenceTranslationProxy, SettingsController_1.SettingsProxy];\n\n\n\n},{\"../services/userService\":93,\"./ClientsController\":3,\"./CurrencyController\":4,\"./ErrorController\":5,\"./ModulesController\":7,\"./PdfController\":8,\"./ProxyController\":9,\"./ReferenceTranslationController\":10,\"./RunsController\":11,\"./SettingsController\":12,\"./UserController\":13,\"./ajaxProxy\":14}],18:[function(require,module,exports){\n\"use strict\";\nvar main_1 = require('./main');\nvar Rx = require('rxjs');\nfunction TrackChanges(options) {\n return function (target, key) {\n if (!target.$$trackedObjects)\n target.$$trackedObjects = [];\n target.$$trackedObjects.push(Object.assign({ $key: key }, options || {}));\n };\n}\nexports.TrackChanges = TrackChanges;\nfunction ChangeTracker(options) {\n return function (targetProto, key) {\n if (!targetProto.ngDoCheck)\n targetProto.ngDoCheck = function () { };\n Object.defineProperty(targetProto, key, {\n get: function () {\n if (this.$$changeTracker)\n return this.$$changeTracker;\n var changes = new main_1.Changes(this);\n var original = function () { };\n if (this.ngDoCheck) {\n original = this.ngDoCheck;\n }\n var interval = options && options.interval || 250;\n var subj = new Rx.Subject();\n subj.sampleTime(interval).subscribe(function () { return changes.performChecks(); });\n this.ngDoCheck = function () { original(); subj.next(null); };\n this.$$changeTracker = changes;\n return changes;\n }\n });\n };\n}\nexports.ChangeTracker = ChangeTracker;\n\n\n\n},{\"./main\":19,\"rxjs\":\"rxjs\"}],19:[function(require,module,exports){\n\"use strict\";\nvar diff = require('deep-diff');\nfunction union_arrays(x, y) {\n var obj = {};\n for (var i = x.length - 1; i >= 0; --i)\n obj[x[i]] = x[i];\n for (var i = y.length - 1; i >= 0; --i)\n obj[y[i]] = y[i];\n var res = [];\n for (var k in obj) {\n if (obj.hasOwnProperty(k))\n res.push(obj[k]);\n }\n return res;\n}\n;\n;\nvar Changes = (function () {\n function Changes(subject) {\n this.subject = subject;\n this._isChanged = false;\n }\n Changes.prototype.performChecks = function (ignoreTrackSet) {\n var _this = this;\n if (ignoreTrackSet === void 0) { ignoreTrackSet = false; }\n var changed = false;\n if (this.map && this.changes)\n this.subject.$$trackedObjects.forEach(function (obj) {\n var key = obj.$key;\n _this.updateChanges(obj, ignoreTrackSet);\n if (_this.changes[key] && _this.changes[key].active)\n changed = true;\n });\n this._isChanged = changed;\n };\n Object.defineProperty(Changes.prototype, \"isChanged\", {\n get: function () { return this._isChanged; },\n enumerable: true,\n configurable: true\n });\n Changes.prototype.updateChanges = function (obj, ignoreTrackSet) {\n var key = obj.$key;\n if (obj.itemKey) {\n var left_1 = (this.map[key] || []);\n var right_1 = (this.subject[key] || []);\n var allKeys = union_arrays(left_1.map(function (o) { return o[obj.itemKey]; }), right_1.map(function (o) { return o[obj.itemKey]; }));\n var itemChanges_1 = {};\n var active_1 = false;\n allKeys.forEach(function (key) {\n var itemDiff = diff.diff(left_1.find(function (i) { return i[obj.itemKey] === key; }), right_1.find(function (i) { return i[obj.itemKey] === key; }));\n itemChanges_1[key.toString()] = itemDiff;\n if (itemDiff && itemDiff.length)\n active_1 = true;\n });\n this.changes[key] = { items: itemChanges_1, active: active_1, hasDifference: active_1 };\n }\n else if (obj.trackSet && !ignoreTrackSet) {\n var changes = false;\n var directDiff_1 = diff.diff(this.map[key], this.subject[key]);\n if (directDiff_1) {\n obj.trackSet.forEach(function (item) {\n var splitItem = item.split(\".\");\n var className = splitItem[0], methodName = splitItem[1];\n directDiff_1.forEach(function (obj) {\n if (obj.path) {\n if (obj.path.findIndex(function (x) { return x.toString().toLowerCase() === className.toLowerCase(); }) > -1 &&\n obj.path.findIndex(function (x) { return x.toString().toLowerCase() === methodName.toLowerCase(); }) > -1)\n changes = true;\n }\n });\n });\n }\n this.changes[key] = { direct: directDiff_1, active: changes, hasDifference: directDiff_1 && !!directDiff_1.length };\n }\n else {\n var directDiff = diff.diff(this.map[key], this.subject[key]);\n this.changes[key] = {\n direct: directDiff, active: directDiff && !!directDiff.length, hasDifference: directDiff && !!directDiff.length\n };\n }\n };\n Changes.prototype.getTokens = function (path) {\n var tokens;\n if (typeof path === 'string')\n tokens = path.split(/[[\\].]/).filter(function (s) { return !!s; });\n else\n tokens = path;\n return tokens;\n };\n Changes.prototype.getAffectedDiffs = function (changes, tokens) {\n return changes.filter(function (change) { return tokens.every(function (item, index) {\n if (index === 0)\n return true;\n else\n return change.path[index] == item;\n }); });\n };\n Changes.prototype._doLogic = function (tokens, action, aggregation) {\n var changes = this.changes[tokens[0]];\n if (!changes || !changes.hasDifference)\n return action([], []);\n if (changes.direct)\n return action(changes.direct, tokens.slice(1), tokens.slice(0, 1));\n else if (changes.items) {\n if (tokens.length >= 2) {\n var item = changes.items[tokens[1]];\n return action(item, tokens.slice(2), tokens.slice(0, 2));\n }\n else {\n var results = Object.keys(changes.items).map(function (path) {\n var item = changes.items[path];\n return action(item, [], [tokens[0], path]);\n });\n if (aggregation)\n return aggregation(results);\n return null;\n }\n }\n };\n Changes.prototype.isChangedAt = function (path) {\n var _this = this;\n if (!this.changes)\n return false;\n var tokens = this.getTokens(path);\n if (!tokens.length)\n return false;\n return this._doLogic(tokens, function (diffs, rpath) {\n if (!diffs || !diffs.length)\n return false;\n if (rpath.length === 0)\n return true;\n return !!_this.getAffectedDiffs(diffs, rpath).length;\n }, function (hits) { return hits.some(function (x) { return x; }); });\n };\n Object.defineProperty(Changes.prototype, \"raw\", {\n get: function () {\n return this.changes;\n },\n enumerable: true,\n configurable: true\n });\n Changes.prototype.commit = function (path) {\n var _this = this;\n if (!path || !path.length) {\n this.map = {};\n this.changes = {};\n this.subject.$$trackedObjects.forEach(function (obj) {\n var key = obj.$key;\n _this.map[key] = _this.subject[key] ? JSON.parse(JSON.stringify(_this.subject[key])) : undefined;\n });\n }\n else {\n var tokens_1 = this.getTokens(path);\n if (!tokens_1.length)\n return;\n var obj_1 = this.subject.$$trackedObjects.find(function (o) { return o.$key === tokens_1[0]; });\n var key = obj_1.$key;\n if (tokens_1.length === 1) {\n this.map[key] = this.subject[key] ? JSON.parse(JSON.stringify(this.subject[key])) : undefined;\n this.changes[key] = undefined;\n }\n else {\n this.updateChanges(obj_1, true);\n this._doLogic(tokens_1, function (diffs, rpath, ppath) {\n if (diffs && rpath && ppath) {\n if (ppath.length === 1) {\n var patches = _this.getAffectedDiffs(diffs, rpath);\n patches.forEach(function (p) { return diff.applyChange(_this.map[ppath[0]], _this.subject[ppath[0]], p); });\n }\n else if (ppath.length === 2) {\n var lhs_1 = _this.map[ppath[0]].findIndex(function (o) { return o[obj_1.itemKey] == ppath[1]; });\n var rhs_1 = _this.subject[ppath[0]].findIndex(function (o) { return o[obj_1.itemKey] == ppath[1]; });\n if (lhs_1 === -1 && rhs_1 === -1)\n return;\n if (lhs_1 === -1)\n _this.map[ppath[0]].push(JSON.parse(JSON.stringify(_this.subject[ppath[0]][rhs_1])));\n else if (rhs_1 === -1)\n _this.map[ppath[0]].splice(lhs_1, 1);\n else {\n var patches = _this.getAffectedDiffs(diffs, rpath);\n patches.forEach(function (p) { return diff.applyChange(_this.map[ppath[0]][lhs_1], _this.subject[ppath[0]][rhs_1], p); });\n }\n }\n }\n });\n this.updateChanges(obj_1, true);\n }\n }\n };\n Changes.prototype.undo = function (path) {\n var _this = this;\n if (!path || !path.length) {\n if (!this.isChanged)\n return;\n this.changes = {};\n this.subject.$$trackedObjects.forEach(function (obj) {\n var key = obj.$key;\n if (_this.map[key]) {\n if (typeof _this.map[key] === 'object')\n Object.assign(_this.subject[key], JSON.parse(JSON.stringify(_this.map[key])));\n else\n _this.subject[key] = JSON.parse(JSON.stringify(_this.map[key]));\n }\n else\n _this.subject[key] = undefined;\n });\n }\n else {\n if (!this.isChangedAt(path))\n return;\n var tokens_2 = this.getTokens(path);\n if (!tokens_2.length)\n return;\n var obj_2 = this.subject.$$trackedObjects.find(function (o) { return o.$key === tokens_2[0]; });\n var key = obj_2.$key;\n if (tokens_2.length === 1) {\n if (this.map[key]) {\n if (typeof this.map[key] === 'object')\n Object.assign(this.subject[key], JSON.parse(JSON.stringify(this.map[key])));\n else\n this.subject[key] = JSON.parse(JSON.stringify(this.map[key]));\n }\n this.subject[key] = undefined;\n this.changes[key] = undefined;\n }\n else {\n this.updateChanges(obj_2, true);\n this._doLogic(tokens_2, function (diffs, rpath, ppath) {\n if (ppath && diffs && rpath) {\n if (ppath.length === 1) {\n var patches = _this.getAffectedDiffs(diffs, rpath);\n patches.forEach(function (p) { return diff.revertChange(_this.subject[ppath[0]], _this.map[ppath[0]], p); });\n }\n else if (ppath.length === 2) {\n var lhs_2 = _this.map[ppath[0]].findIndex(function (o) { return o[obj_2.itemKey] == ppath[1]; });\n var rhs_2 = _this.subject[ppath[0]].findIndex(function (o) { return o[obj_2.itemKey] == ppath[1]; });\n if (lhs_2 === -1 && rhs_2 === -1)\n return;\n if (lhs_2 === -1)\n _this.subject[ppath[0]].splice(rhs_2, 1);\n else if (rhs_2 === -1)\n _this.subject[ppath[0]].push(JSON.parse(JSON.stringify(_this.map[ppath[0]][lhs_2])));\n else {\n var patches = _this.getAffectedDiffs(diffs, rpath);\n patches.forEach(function (p) { return diff.revertChange(_this.subject[ppath[0]][rhs_2], _this.map[ppath[0]][lhs_2], p); });\n }\n }\n }\n });\n this.updateChanges(obj_2, true);\n }\n }\n };\n return Changes;\n}());\nexports.Changes = Changes;\n\n\n\n},{\"deep-diff\":\"deep-diff\"}],20:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar angular2_modal_1 = require('angular2-modal');\nvar backend_1 = require(\"../../backend\");\nvar services_1 = require('../../../@toolkit/services');\nvar FinalRunModalDeselect = (function () {\n function FinalRunModalDeselect(dialog, _runs, _sharedDataService, _translate) {\n this.dialog = dialog;\n this._runs = _runs;\n this._sharedDataService = _sharedDataService;\n this._translate = _translate;\n }\n FinalRunModalDeselect.prototype.ngOnInit = function () {\n this.currentRunId = this._sharedDataService.getOption(\"runId\");\n this.getLobsForSelectedRun(this.currentRunId);\n };\n FinalRunModalDeselect.prototype.close = function (value) {\n this.deSelectFinalRun();\n this.flag = true;\n this.dialog.context.defaultResult = true;\n this.dialog.close();\n };\n FinalRunModalDeselect.prototype.cancel = function () {\n this.flag = false;\n this.dialog.context.defaultResult = false;\n this.dialog.dismiss();\n };\n FinalRunModalDeselect.prototype.beforeDismiss = function () {\n return this.flag;\n };\n FinalRunModalDeselect.prototype.beforeClose = function () {\n return false;\n };\n FinalRunModalDeselect.prototype.getLobsForSelectedRun = function (runId) {\n var _this = this;\n this._runs.getLobsFromFinalRun(runId).subscribe(function (x) {\n _this.lobs = x.data;\n _this.currentLob = _this.lobs[0];\n });\n };\n FinalRunModalDeselect.prototype.onLobSelectionChange = function (selectedLob) {\n this.currentLob = selectedLob;\n };\n FinalRunModalDeselect.prototype.deSelectFinalRun = function () {\n this._runs.deselectFinalRunWithLob(this.currentRunId, this.currentLob).subscribe(function (x) { });\n };\n FinalRunModalDeselect = __decorate([\n core_1.Component({\n selector: 'final-run-deselectmodal-content',\n template: require('./finalRunModalDeselect.html'),\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [angular2_modal_1.DialogRef, backend_1.Api.RunsProxy, services_1.SharedDataService, services_1.TranslateService])\n ], FinalRunModalDeselect);\n return FinalRunModalDeselect;\n}());\nexports.FinalRunModalDeselect = FinalRunModalDeselect;\n\n\n\n},{\"../../../@toolkit/services\":\"@toolkit/services\",\"../../backend\":\"@toolkit/backend\",\"./finalRunModalDeselect.html\":30,\"@angular/core\":\"@angular/core\",\"angular2-modal\":\"angular2-modal\"}],21:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar angular2_modal_1 = require('angular2-modal');\nvar backend_1 = require(\"../../backend\");\nvar configService_1 = require(\"../services/configService\");\nvar services_1 = require('../../../@toolkit/services');\nvar loadingIndicator_1 = require(\"./loadingIndicator\");\nvar applicationInsightsService_1 = require(\"../services/applicationInsightsService\");\nvar FinalRunModalSelect = (function () {\n function FinalRunModalSelect(dialog, _runs, _config, _sharedDataService, _translate, _applicationInsightsService) {\n this.dialog = dialog;\n this._runs = _runs;\n this._config = _config;\n this._sharedDataService = _sharedDataService;\n this._translate = _translate;\n this._applicationInsightsService = _applicationInsightsService;\n }\n FinalRunModalSelect.prototype.ngOnInit = function () {\n this.currentYear = new Date().getFullYear();\n this.currentRunId = this._sharedDataService.getOption(\"runId\");\n this.currentModelId = this._sharedDataService.getOption(\"modelId\");\n this.runName = this._sharedDataService.getOption(\"name\");\n this.clientId = this._sharedDataService.getOption(\"clientId\");\n this.policyYearArr = this.getPolicyYear();\n this.getLobsForSelectedRun(this.currentRunId);\n };\n FinalRunModalSelect.prototype.close = function (value) {\n this.markRunAsFinal();\n this.flag = true;\n this.dialog.context.defaultResult = true;\n this.dialog.close(this.currentYear);\n };\n FinalRunModalSelect.prototype.cancel = function () {\n this.flag = false;\n this.dialog.context.defaultResult = false;\n this.dialog.dismiss();\n };\n FinalRunModalSelect.prototype.beforeDismiss = function () {\n return this.flag;\n };\n FinalRunModalSelect.prototype.beforeClose = function () {\n return false;\n };\n FinalRunModalSelect.prototype.getPolicyYear = function () {\n var currentYear = new Date().getFullYear();\n var i = 0;\n var arraySize = currentYear - 2015;\n var arrYears = new Array(arraySize);\n for (i = 0; i <= arraySize; i++) {\n arrYears[i] = (currentYear - i);\n }\n return arrYears;\n };\n FinalRunModalSelect.prototype.getLobsForSelectedRun = function (runId) {\n var _this = this;\n this._runs.getLobsFromRun(runId).subscribe(function (x) {\n _this.lobs = x.data;\n _this.currentLob = _this.lobs[0];\n _this._runs.getFinalRunsForYear(_this.currentModelId, _this.currentYear, _this.clientId)\n .subscribe(function (x) {\n _this.existingFinalRuns = x.data;\n _this.filteredExistingFinalRuns = _this.existingFinalRuns.filter(function (x) { return x.lob === _this.currentLob && x.runId !== runId; });\n _this.copyExistingRuns = _this.filteredExistingFinalRuns;\n });\n });\n };\n FinalRunModalSelect.prototype.onLobSelectionChange = function (selectedLob) {\n var _this = this;\n this.currentLob = selectedLob;\n this.filteredExistingFinalRuns = this.existingFinalRuns.filter(function (x) { return x.lob === _this.currentLob && x.runId !== _this.currentRunId; });\n this.copyExistingRuns = this.filteredExistingFinalRuns;\n };\n FinalRunModalSelect.prototype.getFinalRunsforYear = function () {\n var _this = this;\n this._runs.getFinalRunsForYear(this.currentModelId, this.currentYear, this.clientId)\n .subscribe(function (x) {\n _this.existingFinalRuns = x.data;\n _this.copyExistingRuns = _this.existingFinalRuns;\n });\n };\n FinalRunModalSelect.prototype.changeExistingFinalRun = function (finalrun, isfinal) {\n this.copyExistingRuns.find(function (x) { return x.runId === finalrun.runId; }).isFinalized = isfinal;\n };\n FinalRunModalSelect.prototype.markRunAsFinal = function () {\n var _this = this;\n var selectedRun = {\n runId: this.currentRunId,\n lob: this.currentLob,\n clientId: this.clientId,\n year: this.currentYear,\n modelId: this.currentModelId,\n name: this.runName,\n isFinalized: true\n };\n if (this.copyExistingRuns.find(function (x) { return x.runId !== _this.currentRunId; }) || this.copyExistingRuns.length < 1)\n this.copyExistingRuns.push(selectedRun);\n this._runs.setMultipleRunAsFinal(this.copyExistingRuns).subscribe(function (x) {\n });\n this.copyExistingRuns.filter(function (x) { return x.isFinalized === false; }).forEach(function (y) {\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: \"Run unmarked Final\",\n runId: y.runId\n });\n });\n };\n FinalRunModalSelect.prototype.onPolicyYearChange = function (policyYear) {\n var _this = this;\n this.currentYear = policyYear;\n this._runs.getFinalRunsForYear(this.currentModelId, policyYear, this.clientId)\n .subscribe(function (x) {\n _this.existingFinalRuns = x.data;\n _this.filteredExistingFinalRuns = _this.existingFinalRuns.filter(function (x) { return x.lob === _this.currentLob && x.runId !== _this.currentRunId; });\n _this.copyExistingRuns = _this.filteredExistingFinalRuns;\n });\n };\n FinalRunModalSelect = __decorate([\n core_1.Component({\n selector: 'final-run-modal-content',\n template: require('./finalRunModalSelect.html'),\n directives: [loadingIndicator_1.LoadingIndicator],\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [angular2_modal_1.DialogRef, backend_1.Api.RunsProxy, configService_1.ConfigService, services_1.SharedDataService, services_1.TranslateService, applicationInsightsService_1.ApplicationInsightsService])\n ], FinalRunModalSelect);\n return FinalRunModalSelect;\n}());\nexports.FinalRunModalSelect = FinalRunModalSelect;\n\n\n\n},{\"../../../@toolkit/services\":\"@toolkit/services\",\"../../backend\":\"@toolkit/backend\",\"../services/applicationInsightsService\":83,\"../services/configService\":85,\"./finalRunModalSelect.html\":31,\"./loadingIndicator\":36,\"@angular/core\":\"@angular/core\",\"angular2-modal\":\"angular2-modal\"}],22:[function(require,module,exports){\nmodule.exports = '
\\n \\n \\n \\n \\n
\\n
\\n \\n
\\n';\n},{}],23:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar directives_1 = require('../../directives');\nvar Rx = require('rxjs');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar translation_1 = require('../services/translation');\nvar ColumnSelectorHandle = (function () {\n function ColumnSelectorHandle(reference) {\n this.reference = reference;\n }\n ColumnSelectorHandle = __decorate([\n core_1.Directive({ selector: 'table' }), \n __metadata('design:paramtypes', [core_1.ElementRef])\n ], ColumnSelectorHandle);\n return ColumnSelectorHandle;\n}());\nexports.ColumnSelectorHandle = ColumnSelectorHandle;\nvar ColumnSelectorImplementation = (function () {\n function ColumnSelectorImplementation(renderer, _toastr, _translate) {\n this.renderer = renderer;\n this._toastr = _toastr;\n this._translate = _translate;\n this.minimumColumns = 2;\n this.columnsChanged = new core_1.EventEmitter();\n this.isOpen = false;\n this.configError = false;\n }\n ColumnSelectorImplementation.prototype.ngOnInit = function () {\n };\n ColumnSelectorImplementation.prototype.ngAfterViewInit = function () {\n var _this = this;\n Rx.Observable.interval(100)\n .take(1)\n .subscribe(function () {\n _this.init();\n });\n };\n ColumnSelectorImplementation.prototype.init = function () {\n this.initTable(this.table.reference.nativeElement);\n this.rerenderColumns();\n };\n ColumnSelectorImplementation.prototype.columnSelectorClicked = function (event) {\n event.stopPropagation();\n this.isOpen = !this.isOpen;\n };\n ColumnSelectorImplementation.prototype.rbClicked = function (event, column) {\n var _this = this;\n if (event)\n event.stopPropagation();\n if (column.visible && this.hasMinimumColumnCountError()) {\n this._translate.get('COMPONENTS.COLUMN_SELECTOR_TABLE.MIN_COLUMNS_ERROR', { count: this.minimumColumns })\n .subscribe(function (o) {\n return _this._toastr.error(o);\n });\n return;\n }\n column.visible = !column.visible;\n this.showOrHideColumn(column);\n this.columns.find(function (x) { return x.key === column.key; }).visible = column.visible;\n };\n ColumnSelectorImplementation.prototype.rebuild = function () {\n this.init();\n };\n ColumnSelectorImplementation.prototype.hasMinimumColumnCountError = function () {\n var visibleCount = this.columns.filter(function (x) { return x.visible; }).length;\n var visibleOrStickyCount = this.columns.filter(function (x) { return x.visible || x.sticky; }).length;\n return false;\n };\n ColumnSelectorImplementation.prototype.rerenderColumns = function () {\n var _this = this;\n this.selectorColumns.map(function (x) {\n _this.showOrHideColumn(x);\n });\n };\n ColumnSelectorImplementation.prototype.showOrHideColumn = function (column) {\n var _this = this;\n var hide = !(column.visible || column.sticky);\n this.renderer.setElementClass(column.thEl, \"hide\", hide);\n column.tdEls.map(function (x) { return _this.renderer.setElementClass(x, \"hide\", hide); });\n this.columnsChanged.emit('');\n };\n ColumnSelectorImplementation.prototype.initTable = function (nativeElement) {\n var _this = this;\n this.selectorColumns = [];\n this.columns.map(function (column, k) {\n _this.selectorColumns.push({\n key: column.key,\n displayName: '',\n visible: column.visible,\n sticky: column.sticky,\n thEl: '',\n tdEls: [],\n index: k\n });\n });\n for (var i = 0; i < nativeElement.children.length; i++) {\n var child = nativeElement.children[i];\n if (child.tagName === \"THEAD\") {\n for (var j = 0; j < child.children.length; j++) {\n var grandChild = child.children[j];\n if (grandChild.tagName === \"TR\") {\n for (var k = 0; k < grandChild.children.length; k++) {\n var greatgrandChild = grandChild.children[k];\n if (greatgrandChild.tagName === \"TH\") {\n var _loop_1 = function(l) {\n var attr = greatgrandChild.attributes[l];\n if (attr.name === \"key\") {\n var sc = this_1.selectorColumns.find(function (x) { return x.key === attr.value; });\n sc.displayName = greatgrandChild.innerHTML.replace(/
/g, ' ');\n sc.thEl = greatgrandChild;\n sc.index = k;\n }\n };\n var this_1 = this;\n for (var l = 0; l < greatgrandChild.attributes.length; l++) {\n _loop_1(l);\n }\n }\n }\n }\n }\n }\n else if (child.tagName === \"TBODY\") {\n for (var j = 0; j < child.children.length; j++) {\n var grandChild = child.children[j];\n if (grandChild.tagName === \"TR\") {\n var _loop_2 = function(k) {\n var greatgrandChild = grandChild.children[k];\n if (greatgrandChild.tagName === \"TD\" && !greatgrandChild.classList.contains(\"sticky\")) {\n this_2.selectorColumns.find(function (x) { return x.index === k; }).tdEls.push(greatgrandChild);\n }\n };\n var this_2 = this;\n for (var k = 0; k < grandChild.children.length; k++) {\n _loop_2(k);\n }\n }\n }\n }\n }\n };\n Object.defineProperty(ColumnSelectorImplementation.prototype, \"oneSelected\", {\n get: function () { return this.columns.filter(function (o) { return o.visible; }).length == 1; },\n enumerable: true,\n configurable: true\n });\n __decorate([\n core_1.Input(), \n __metadata('design:type', Array)\n ], ColumnSelectorImplementation.prototype, \"columns\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Number)\n ], ColumnSelectorImplementation.prototype, \"minimumColumns\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], ColumnSelectorImplementation.prototype, \"columnsChanged\", void 0);\n __decorate([\n core_1.ContentChild(ColumnSelectorHandle), \n __metadata('design:type', ColumnSelectorHandle)\n ], ColumnSelectorImplementation.prototype, \"table\", void 0);\n ColumnSelectorImplementation = __decorate([\n core_1.Component({\n selector: 'column-selector',\n directives: [directives_1.ExpanderComponent],\n template: require('./columnSelector.html'),\n styles: [\n \"div.table-holder >>> th.hide, div.table-holder >>> td.hide {\\n display:none;\\n }\"\n ],\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [core_1.Renderer, ng2_toastr_1.ToastsManager, translation_1.TranslateService])\n ], ColumnSelectorImplementation);\n return ColumnSelectorImplementation;\n}());\nexports.ColumnSelectorImplementation = ColumnSelectorImplementation;\nexports.ColumnSelectorComponent = [ColumnSelectorHandle, ColumnSelectorImplementation];\nvar Column = (function () {\n function Column() {\n }\n return Column;\n}());\nexports.Column = Column;\n\n\n\n},{\"../../directives\":\"@toolkit/directives\",\"../services/translation\":92,\"./columnSelector.html\":22,\"@angular/core\":\"@angular/core\",\"ng2-toastr\":\"ng2-toastr\",\"rxjs\":\"rxjs\"}],24:[function(require,module,exports){\nmodule.exports = '
\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n
\\n \\n \\n\\n \\n \\n \\n  \\n \\n  \\n {{\\'SITE_HEADER.CURRENCY.READONLY\\'|translate}}{{\\'SITE_HEADER.CURRENCY.UNKNOWN\\'|translate}}\\n  \\n \\n  \\n
\\n
\\n
\\n  \\n
';\n},{}],25:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar Api = require('../backend/webapis');\nvar services = require('../../services');\nvar directives_1 = require('../../directives');\nvar reactiveComponent_1 = require('../../reactiveComponent');\nvar CurrencySelectorComponent = (function (_super) {\n __extends(CurrencySelectorComponent, _super);\n function CurrencySelectorComponent(_api, _config, _translate, _runService) {\n _super.call(this);\n this._api = _api;\n this._config = _config;\n this._translate = _translate;\n this._runService = _runService;\n this.currencies = [];\n this.preferredCurrencies = [];\n this.selectedCurrencyChange = new core_1.EventEmitter();\n }\n Object.defineProperty(CurrencySelectorComponent.prototype, \"disabled\", {\n get: function () { return !this._runModel || this._runModel.info.isReadonly; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CurrencySelectorComponent.prototype, \"currencyInfo\", {\n get: function () {\n if (!this._runModel)\n return null;\n return this._runModel.currencyInfo;\n },\n enumerable: true,\n configurable: true\n });\n CurrencySelectorComponent.prototype.changeCurrency = function (code) {\n var _this = this;\n if (!code)\n return;\n var currency = this.currencies.concat(this.preferredCurrencies).find(function (o) { return o.code === code; });\n var exchange = this._runModel.currencyInfo.rates[code.toLowerCase()];\n if (!currency) {\n return;\n }\n this.error = false;\n this.selectedCurrency = { data: currency, exchange: exchange };\n if (!exchange) {\n this.error = true;\n return;\n }\n if (code !== this.originalCurrency) {\n var change_1 = {\n oldCode: this.originalCurrency,\n oldRate: this._runModel.currencyInfo.rates[this.originalCurrency.toLowerCase()].rate,\n newCode: code,\n newRate: exchange.rate,\n modelId: this._config.currentModel.modelId,\n run: this._runModel.data\n };\n this._api.changeCurrency(change_1).uiSignal({ debugInfo: 'converting currency', uiLabel: this._translate.instant('SITE_HEADER.CURRENCY.CONVERTING') }).subscribe(function (o) {\n _this._runModel.data = o.data;\n change_1.run = o.data;\n _this.originalCurrency = code;\n _this._runModel.currencyInfo.currentSelectedCurrency = code;\n _this.selectedCurrencyChange.emit(change_1);\n _this._runService.currencyConverted.next(_this._runModel);\n });\n }\n };\n CurrencySelectorComponent.prototype.ngOnInit = function () {\n var _this = this;\n this._api.list(this._config.currentModel.modelName).subscribe(function (o) {\n var preferred = _this._config.currentModel.currencySettings.preferredCodes;\n if (preferred && preferred.length) {\n _this.currencies = o.data.filter(function (curr) { return preferred.indexOf(curr.code) === -1; });\n _this.preferredCurrencies = o.data.filter(function (curr) { return preferred.indexOf(curr.code) !== -1; });\n }\n else {\n _this.currencies = o.data;\n _this.preferredCurrencies = [];\n }\n _this._runModel && _this._runModel.currencyInfo && _this.changeCurrency(_this._runModel.currencyInfo.currentSelectedCurrency);\n });\n this._subscriptions = [\n this._runService.activeRun.subscribe(function (rm) {\n _this._runModel = rm;\n _this.originalCurrency = rm.currencyInfo && rm.currencyInfo.currentSelectedCurrency;\n _this.changeCurrency(_this.originalCurrency);\n })];\n };\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], CurrencySelectorComponent.prototype, \"selectedCurrencyChange\", void 0);\n CurrencySelectorComponent = __decorate([\n core_1.Component({ selector: 'currency-selector', directives: [directives_1.TOOLTIP], template: require('./currencySelector.html'), moduleId: module.id }), \n __metadata('design:paramtypes', [Api.CurrencyProxy, services.ConfigService, services.TranslateService, services.RunService])\n ], CurrencySelectorComponent);\n return CurrencySelectorComponent;\n}(reactiveComponent_1.ReactiveComponent));\nexports.CurrencySelectorComponent = CurrencySelectorComponent;\n\n\n\n},{\"../../directives\":\"@toolkit/directives\",\"../../reactiveComponent\":\"@toolkit/reactiveComponent\",\"../../services\":\"@toolkit/services\",\"../backend/webapis\":17,\"./currencySelector.html\":24,\"@angular/core\":\"@angular/core\"}],26:[function(require,module,exports){\nmodule.exports = '
\\n\t\\n\t\t\\n\t\t\t\\n\t\t\t\\n\t\t\t\\n\t\t\t\t\\n\t\t\t\\n\t\t\\n\t

{{\\'RUN.FINAL.TITLE.DESELECT\\'|translate}}

{{\\'RUN.FINAL.MESSAGE.DESELECT\\'|translate}}
\\n\t\t\t\t\t\\n\t\t\t\t\t\\n\t\t\t\t
\\n
';\n},{}],27:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar angular2_modal_1 = require('angular2-modal');\nvar CustomModalDeselect = (function () {\n function CustomModalDeselect(dialog) {\n this.dialog = dialog;\n }\n CustomModalDeselect.prototype.ngOnInit = function () {\n };\n CustomModalDeselect.prototype.close = function (value) {\n this.flag = true;\n this.dialog.context.defaultResult = true;\n this.dialog.close();\n };\n CustomModalDeselect.prototype.cancel = function () {\n this.flag = false;\n this.dialog.context.defaultResult = false;\n this.dialog.dismiss();\n };\n CustomModalDeselect.prototype.beforeDismiss = function () {\n return this.flag;\n };\n CustomModalDeselect.prototype.beforeClose = function () {\n return false;\n };\n CustomModalDeselect = __decorate([\n core_1.Component({\n selector: 'deselectmodal-content',\n template: require('./customModalDeselect.html'),\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [angular2_modal_1.DialogRef])\n ], CustomModalDeselect);\n return CustomModalDeselect;\n}());\nexports.CustomModalDeselect = CustomModalDeselect;\n\n\n\n},{\"./customModalDeselect.html\":26,\"@angular/core\":\"@angular/core\",\"angular2-modal\":\"angular2-modal\"}],28:[function(require,module,exports){\nmodule.exports = '
\\n\t\\n\t\t\\n\t\t\t\\n\t\t\t\\n\t\t\t\\n\t\t\t\\n\t\t\t\t\\n\t\t\t\\n\t\t\t\\n\t\t\t\\n\t\t\t\t\\n\t\t\t\\n\t\t\\n\t

{{\\'RUN.FINAL.TITLE.SELECT\\'|translate}}

{{\\'RUN.FINAL.MESSAGE.SELECT\\'|translate}}
{{\\'RUN.FINAL.MESSAGE.SELECT_TEXT\\'|translate}}
\\n\t\t\t\t\t\\n\t\t\t\t
{{\\'RUN.FINAL.MESSAGE.SELECT_NOTE\\'|translate}}
\\n\t\t\t\t\t\\n\t\t\t\t\t\\n\t\t\t\t
\\n
';\n},{}],29:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar angular2_modal_1 = require('angular2-modal');\nvar CustomModal = (function () {\n function CustomModal(dialog) {\n this.dialog = dialog;\n }\n CustomModal.prototype.ngOnInit = function () {\n this.currentYear = new Date().getFullYear();\n this.policyYearArr = this.getPolicyYear();\n };\n CustomModal.prototype.close = function (value) {\n this.flag = true;\n this.dialog.context.defaultResult = true;\n this.dialog.close(this.currentYear);\n };\n CustomModal.prototype.cancel = function () {\n this.flag = false;\n this.dialog.context.defaultResult = false;\n this.dialog.dismiss();\n };\n CustomModal.prototype.beforeDismiss = function () {\n return this.flag;\n };\n CustomModal.prototype.beforeClose = function () {\n return false;\n };\n CustomModal.prototype.getPolicyYear = function () {\n var currentYear = new Date().getFullYear();\n var i = 0;\n var arraySize = currentYear - 2015;\n var arrYears = new Array(arraySize);\n for (i = 0; i <= arraySize; i++) {\n arrYears[i] = (currentYear - i);\n }\n return arrYears;\n };\n CustomModal = __decorate([\n core_1.Component({\n selector: 'modal-content',\n template: require('./customModel.html'),\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [angular2_modal_1.DialogRef])\n ], CustomModal);\n return CustomModal;\n}());\nexports.CustomModal = CustomModal;\n\n\n\n},{\"./customModel.html\":28,\"@angular/core\":\"@angular/core\",\"angular2-modal\":\"angular2-modal\"}],30:[function(require,module,exports){\nmodule.exports = '
\\n\t\\n\t\t\\n\t\t\t\\n\t\t\t\\n \\n \\n \\n \\n \\n\t\t\t\t\\n\t\t\t\\n\t\t\\n\t

{{\\'RUN.FINAL.TITLE.DESELECT\\'|translate}}

{{\\'RUN.FINAL.MESSAGE.DESELECT\\'|translate}}
0\">{{\\'RUN.FINAL.TITLE.SELECT_LOB\\'|translate}}

{{\\'RUN.FINAL.TITLE.LOADING\\'|translate}}

\\n\t\t\t\t\t\\n\t\t\t\t\t\\n\t\t\t\t
\\n
';\n},{}],31:[function(require,module,exports){\nmodule.exports = '
\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n

{{\\'RUN.FINAL.TITLE.SELECT\\'|translate}}

{{\\'RUN.FINAL.MESSAGE.SELECT\\'|translate}}
{{\\'RUN.FINAL.MESSAGE.SELECT_TEXT\\'|translate}}
0\">\\n \\n
0\">{{\\'RUN.FINAL.TITLE.SELECT_LOB\\'|translate}}

{{\\'RUN.FINAL.TITLE.LOADING\\'|translate}}

0\">{{\\'RUN.FINAL.TITLE.SELECTED_YEAR\\'|translate}}
0\">\\n \\n \\n \\n \\n \\n \\n \\n
{{\\'RUN.FINAL.TITLE.RUN_ID\\'|translate}}{{\\'RUN.FINAL.TITLE.NAME\\'|translate}}{{\\'RUN.FINAL.TITLE.COVERAGE\\'|translate}}{{\\'RUN.FINAL.TITLE.IS_FINALIZED\\'|translate}}
{{run.runId}}{{run.name}}{{run.lob}}
\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
\\n\\n\\n\\n';\n},{}],32:[function(require,module,exports){\nmodule.exports = '
\\n
\\n

\\n {{\\'COMPONENTS.INDUSTRY_MIX.BASELINE_SECTOR\\'|translate}}: {{baselineSector}}\\n \\n

\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n
\\n {{calculateTotalIndustryPercent() | intPercent}}\\n \\n 2\" title=\"{{\\'RUN.ADD_INDUSTRY\\'|translate}}\" [class.ng-invalid]=\"industryGroup.errors?.industryMissing\">\\n
\\n
';\n},{}],33:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar reactiveComponent_1 = require('../../reactiveComponent');\nvar directives = require('../../directives');\nvar IndustryMixComponent = (function (_super) {\n __extends(IndustryMixComponent, _super);\n function IndustryMixComponent(form) {\n _super.call(this, form);\n this.selectedIndustriesChange = new core_1.EventEmitter();\n this.showBaselineSector = false;\n this.baselineSectorChange = new core_1.EventEmitter();\n this.industryList = [];\n }\n IndustryMixComponent.prototype.ngAfterViewInit = function () {\n this.industryList = this.flatIntoIndustries(this.industryGroupList);\n };\n IndustryMixComponent.prototype.validateIndustries = function (mg) {\n var ret = {};\n var perckeys = Object.keys(mg.value).filter(function (o) { return o.endsWith('.ind.percentage'); });\n if (perckeys.length > 0) {\n var sum = perckeys.filter(function (key) { return !!mg.value[key]; }).reduce(function (acc, key) { return acc + mg.value[key]; }, 0);\n if (sum !== 100)\n ret.industry100 = { value: sum };\n }\n if (perckeys.length === 0)\n ret.industryMissing = true;\n var industries = Object.keys(mg.value).filter(function (o) { return o.endsWith('.ind.code'); }).map(function (k) { return mg.value[k]; });\n var uniq = industries.reduce(function (acc, item) {\n acc[item] = (acc[item] || 0) + 1;\n return acc;\n }, {});\n var duplicates = Object.keys(uniq).filter(function (k) { return uniq[k] > 1; }).map(function (k) { return parseInt(k); });\n if (duplicates.length)\n ret.duplicateIndustry = duplicates;\n return ret;\n };\n IndustryMixComponent.prototype.add = function () {\n var _this = this;\n var total = this.calculateTotalIndustryPercent();\n var percentage = 0;\n percentage = total >= 100 ? 0 : 100 - total;\n var defaultIndustryGroup = this.industryGroupList.find(function (i) { return i.name === _this.baselineSector; }) || this.industryGroupList[0];\n this.selectedIndustries.push({\n id: defaultIndustryGroup.industries[0].id,\n name: defaultIndustryGroup.industries[0].name,\n percentage: percentage,\n parentId: defaultIndustryGroup.industries[0].parentId\n });\n this.updateBaselineSector();\n this.selectedIndustriesChange.emit(this.selectedIndustries);\n };\n IndustryMixComponent.prototype.remove = function (index) {\n this.selectedIndustries = this.selectedIndustries.filter(function (o, itemIndex) { return itemIndex !== index; });\n var totalPercentage = this.calculateTotalIndustryPercent();\n var remainingPercentage = 100 - totalPercentage;\n if (remainingPercentage > 0) {\n this.selectedIndustries[0].percentage = this.selectedIndustries[0].percentage + remainingPercentage;\n }\n this.updateBaselineSector();\n this.selectedIndustriesChange.emit(this.selectedIndustries);\n };\n IndustryMixComponent.prototype.onIndustryChange = function (newIndustryId) {\n var updatedIndustry = this.selectedIndustries[this.selectedIndustries.findIndex(function (item) { return (item.id === newIndustryId); })];\n updatedIndustry.id = this.industryList.filter(function (x) { return x.id === updatedIndustry.id; })[0].id;\n updatedIndustry.name = this.industryList.filter(function (x) { return x.id === updatedIndustry.id; })[0].name;\n this.updateBaselineSector();\n this.selectedIndustriesChange.emit(this.selectedIndustries);\n };\n IndustryMixComponent.prototype.updateBaselineSector = function () {\n var _this = this;\n if (!this.showBaselineSector)\n return;\n var hist = {};\n this.selectedIndustries.map(function (reg) {\n var parentId = _this.industryList.filter(function (x) { return x.id == reg.id; })[0].parentId;\n if (parentId in hist)\n hist[parentId]++;\n else\n hist[parentId] = 1;\n });\n var sortable = [];\n Object.keys(hist).forEach(function (x) { return sortable.push([x, hist[x]]); });\n sortable.sort(function (a, b) {\n return a[1] - b[1];\n })\n .reverse();\n var prevalentSectorId = sortable[0][Object.keys(sortable[0])[0]];\n var prevalentSectorCount = hist[prevalentSectorId];\n if (prevalentSectorCount === 1) {\n prevalentSectorId = this.industryList.filter(function (x) { return x.id == _this.selectedIndustries[0].id; })[0].parentId;\n }\n var previousBaselineSector = this.baselineSector;\n var currentBaselineSector = this.industryGroupList.filter(function (x) { return x.id == prevalentSectorId; })[0].name;\n if (previousBaselineSector === currentBaselineSector)\n return;\n this.baselineSector = currentBaselineSector;\n this.baselineSectorChange.emit(this.baselineSector);\n };\n IndustryMixComponent.prototype.calculateTotalIndustryPercent = function () {\n var total = 0;\n if (!this.selectedIndustries)\n return 0;\n for (var _i = 0, _a = this.selectedIndustries; _i < _a.length; _i++) {\n var ind = _a[_i];\n if (!!ind.percentage)\n total += ind.percentage;\n }\n return total;\n };\n IndustryMixComponent.prototype.flatIntoIndustries = function (industryGroupArray) {\n var industryArray = [];\n for (var i = 0; i < industryGroupArray.length; i++) {\n for (var j = 0; j < industryGroupArray[i].industries.length; j++) {\n var industry = Object.assign({}, industryGroupArray[i].industries[j]);\n industry.parentId = industryGroupArray[i].id;\n industryArray.push(industry);\n }\n }\n return industryArray;\n };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Array)\n ], IndustryMixComponent.prototype, \"industryGroupList\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Array)\n ], IndustryMixComponent.prototype, \"selectedIndustries\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], IndustryMixComponent.prototype, \"selectedIndustriesChange\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', String)\n ], IndustryMixComponent.prototype, \"baselineSectorTooltipSectors\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', String)\n ], IndustryMixComponent.prototype, \"baselineSector\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean)\n ], IndustryMixComponent.prototype, \"showBaselineSector\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], IndustryMixComponent.prototype, \"baselineSectorChange\", void 0);\n IndustryMixComponent = __decorate([\n core_1.Component({\n selector: 'industry-mix',\n directives: [directives.CUSTOM_VALUE_ACCESSORS, directives.VALIDATORS, directives.READONLY_DIRECTIVES, directives.TOOLTIP],\n viewProviders: [reactiveComponent_1.dynamicFormDirectiveProvider(function () { return IndustryMixComponent; })],\n template: require('./industryMix.html'),\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [forms_1.NgForm])\n ], IndustryMixComponent);\n return IndustryMixComponent;\n}(reactiveComponent_1.DynamicFormComponent));\nexports.IndustryMixComponent = IndustryMixComponent;\n\n\n\n},{\"../../directives\":\"@toolkit/directives\",\"../../reactiveComponent\":\"@toolkit/reactiveComponent\",\"./industryMix.html\":32,\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\"}],34:[function(require,module,exports){\nmodule.exports = ' \\n';\n},{}],35:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('../../services');\nvar reactiveComponent_1 = require('../../reactiveComponent');\nvar LanguageSelectorComponent = (function (_super) {\n __extends(LanguageSelectorComponent, _super);\n function LanguageSelectorComponent(_translation, _config) {\n _super.call(this);\n this._translation = _translation;\n this._config = _config;\n }\n Object.defineProperty(LanguageSelectorComponent.prototype, \"userLanguage\", {\n get: function () {\n return this._userLanguage;\n },\n set: function (val) {\n this._userLanguage = val;\n this._translation.use(val);\n },\n enumerable: true,\n configurable: true\n });\n LanguageSelectorComponent.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [\n this._translation.languages.subscribe(function (langs) { return _this.languages = langs; }),\n this._translation.userLanguage.subscribe(function (lang) { return _this._userLanguage = lang; })\n ];\n this._translation.setLocale(this._userLanguage);\n };\n Object.defineProperty(LanguageSelectorComponent.prototype, \"hide\", {\n get: function () {\n if (this.languages || this.languages.length > 2) {\n return !this._config.currentModel.useMultilingualFeature;\n }\n else\n return true;\n },\n enumerable: true,\n configurable: true\n });\n LanguageSelectorComponent = __decorate([\n core_1.Component({ selector: 'language-selector', template: require('./languageSelector.html'), moduleId: module.id, host: { '[hidden]': 'hide' } }), \n __metadata('design:paramtypes', [services_1.ExtendedTranslateService, services_1.ConfigService])\n ], LanguageSelectorComponent);\n return LanguageSelectorComponent;\n}(reactiveComponent_1.ReactiveComponent));\nexports.LanguageSelectorComponent = LanguageSelectorComponent;\n\n\n\n},{\"../../reactiveComponent\":\"@toolkit/reactiveComponent\",\"../../services\":\"@toolkit/services\",\"./languageSelector.html\":34,\"@angular/core\":\"@angular/core\"}],36:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar vex_1 = require('angular2-modal/plugins/vex');\nvar rx_1 = require('rxjs');\nvar services_1 = require('../../services');\nvar LoadingIndicator = (function () {\n function LoadingIndicator(modal, translate) {\n this.modal = modal;\n this.translate = translate;\n this.counter = [];\n }\n LoadingIndicator.prototype.ngOnInit = function () {\n if (rx_1.Observable.prototype.uiSignal)\n throw \"Cannot register multiple Loading Indicators\";\n else {\n var _this_1 = this;\n rx_1.Observable.prototype.uiSignal = function (label) { return _this_1.signal(this, label); };\n }\n };\n Object.defineProperty(LoadingIndicator.prototype, \"message\", {\n get: function () { return this.counter && this.counter.length && this.counter[this.counter.length - 1].uiLabel; },\n enumerable: true,\n configurable: true\n });\n LoadingIndicator.prototype.signal = function (observable, information) {\n var _this = this;\n var data;\n if (typeof information === 'string') {\n var label = this.translate.instant('GLOBAL.BUSY.LOADING');\n if (label === 'GLOBAL.BUSY.LOADING')\n label = \"\";\n data = { uiLabel: label, debugInfo: information };\n }\n else {\n data = information;\n }\n this.counter.push(data);\n return observable.do(null, function (err) {\n _this.counter = _this.counter.filter(function (o) { return o.debugInfo !== data.debugInfo; });\n if (typeof err.status === 'number' && 400 <= err.status && err.status < 405)\n return;\n var msg = _this.translate.instant('RUN.ERROR_MSG');\n _this.modal.alert().okBtn(_this.translate.instant(\"GLOBAL.BTN.OK\")).message(msg + data.debugInfo).open();\n }, function () {\n _this.counter = _this.counter.filter(function (o) { return o.debugInfo !== data.debugInfo; });\n });\n };\n ;\n LoadingIndicator = __decorate([\n core_1.Component({\n selector: 'loading', template: \"\\n
0\\\">\\n
\\n
\\n \\n \\n \\n \\n \\n
{{message}}
\\n
\\n
\\n
\\n\", styles: [\"\\ndiv.overlay { position:fixed;top:0;bottom:0;left:0;right:0; background-color: rgba(100,100,100,.7); z-index:999; }\\ndiv.popup {\\n width: 350px;\\n background: white;\\n position: relative;\\n top: 200px;\\n margin: 0 auto;\\n padding: 20px;\\n}\\n\\n.popup table tr td {\\n vertical-align: middle;\\n}\\n\\n.popup table {\\n width: 100%;\\n}\\n\\n.popup span {\\n padding-left: 5px;\\n}\\n\"]\n }), \n __metadata('design:paramtypes', [vex_1.Modal, services_1.TranslateService])\n ], LoadingIndicator);\n return LoadingIndicator;\n}());\nexports.LoadingIndicator = LoadingIndicator;\nrx_1.Observable.prototype.fireAndForget = function () {\n var obs = this;\n return obs.subscribe(function () { }, function () { }, function () { });\n};\n\n\n\n},{\"../../services\":\"@toolkit/services\",\"@angular/core\":\"@angular/core\",\"angular2-modal/plugins/vex\":\"angular2-modal/plugins/vex\",\"rxjs\":\"rxjs\"}],37:[function(require,module,exports){\nmodule.exports = '
\\n \\n
\\n';\n},{}],38:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar router_1 = require('@angular/router');\nvar services_1 = require('../../services');\nrequire('rxjs');\nvar MultiLevelMenuComponent = (function () {\n function MultiLevelMenuComponent(_clientService, _pageService, _runService, _navigationService, _router) {\n this._clientService = _clientService;\n this._pageService = _pageService;\n this._runService = _runService;\n this._navigationService = _navigationService;\n this._router = _router;\n this.pages = [];\n this.homeUrl = '/';\n }\n MultiLevelMenuComponent.prototype.ngAfterContentInit = function () {\n var _this = this;\n var runSnapshot = this._runService.getSnapshot();\n if (runSnapshot)\n this.homeUrl = runSnapshot.info ? \"/runs/\" + runSnapshot.info.clientId : '/';\n this._router.events.filter(function (o) { return o instanceof router_1.NavigationEnd; })\n .sampleTime(500)\n .subscribe(function (e) {\n _this._clientService.currentClientChanged\n .subscribe(function (c) {\n _this.homeUrl = c && \"/runs/\" + c.clientId || '/';\n });\n });\n this._pageService.pageStateChanged.subscribe(function (runPages) {\n _this.pages = runPages;\n });\n };\n MultiLevelMenuComponent.prototype.calculateWidth = function (itemList, pageItem) {\n var longestPageTitleLength = this.getLongestPageTitleLength(itemList);\n return (longestPageTitleLength * 0.715) + \"em\";\n };\n MultiLevelMenuComponent.prototype.navigateTo = function (pageItem) {\n this._navigationService.navigateByUrl(pageItem.url);\n };\n MultiLevelMenuComponent.prototype.makeChildrenVisible = function (pagetItem) {\n var currentPageItemVisible = pagetItem.visible;\n this.makeMenuInvisible(this.pages, pagetItem);\n pagetItem.visible = !currentPageItemVisible;\n };\n MultiLevelMenuComponent.prototype.makeMenuInvisible = function (pages, currentPageItem) {\n for (var i in pages) {\n if (pages[i].level >= currentPageItem.level)\n pages[i].visible = false;\n if (pages[i].children && pages[i].children.length > 0)\n this.makeMenuInvisible(pages[i].children, currentPageItem);\n }\n };\n MultiLevelMenuComponent.prototype.getLongestPageTitleLength = function (itemList) {\n if (!itemList || itemList.length === 0)\n return 7;\n return itemList.reduce(function (a, b) {\n return a.displayTitle.length > b.displayTitle.length ? a : b;\n }).displayTitle.length;\n };\n MultiLevelMenuComponent = __decorate([\n core_1.Component({\n selector: 'multi-level-menu',\n template: require('./multiLevelMenu.html'),\n directives: [router_1.ROUTER_DIRECTIVES],\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [services_1.ClientService, services_1.PageService, services_1.RunService, services_1.NavigationService, router_1.Router])\n ], MultiLevelMenuComponent);\n return MultiLevelMenuComponent;\n}());\nexports.MultiLevelMenuComponent = MultiLevelMenuComponent;\n\n\n\n},{\"../../services\":\"@toolkit/services\",\"./multiLevelMenu.html\":37,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"rxjs\":\"rxjs\"}],39:[function(require,module,exports){\nmodule.exports = '
\\n \\n
';\n},{}],40:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar router_1 = require('@angular/router');\nvar services_1 = require('../../services');\nvar backend_1 = require('../../backend');\nvar ProgressIndicatorComponent = (function () {\n function ProgressIndicatorComponent(_pageService, _router) {\n var _this = this;\n this._pageService = _pageService;\n this._router = _router;\n this.pages = [];\n this._pageService.pageStateChanged.subscribe(function (runPages) {\n if (!_this.explicitRun)\n _this.pages = runPages;\n });\n }\n Object.defineProperty(ProgressIndicatorComponent.prototype, \"explicitRun\", {\n get: function () {\n return this._explicitRun;\n },\n set: function (v) {\n this._explicitRun = v;\n if (!!v)\n this.pages = this._pageService.buildRunPages(this.explicitRun);\n },\n enumerable: true,\n configurable: true\n });\n ProgressIndicatorComponent.prototype.navigateTo = function (url, canNavigate) {\n if (canNavigate)\n this._router.navigateByUrl(url);\n };\n __decorate([\n core_1.Input('run'), \n __metadata('design:type', Object)\n ], ProgressIndicatorComponent.prototype, \"explicitRun\", null);\n ProgressIndicatorComponent = __decorate([\n core_1.Component({\n selector: 'progress-indicator',\n template: require('./progressIndicator.html'),\n directives: [router_1.ROUTER_DIRECTIVES],\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [services_1.PageService, router_1.Router])\n ], ProgressIndicatorComponent);\n return ProgressIndicatorComponent;\n}());\nexports.ProgressIndicatorComponent = ProgressIndicatorComponent;\n\n\n\n},{\"../../backend\":\"@toolkit/backend\",\"../../services\":\"@toolkit/services\",\"./progressIndicator.html\":39,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\"}],41:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar Rx = require('rxjs');\nvar StickyHandle = (function () {\n function StickyHandle(reference) {\n this.reference = reference;\n }\n StickyHandle = __decorate([\n core_1.Directive({ selector: 'th.sticky, td.sticky' }), \n __metadata('design:paramtypes', [core_1.ElementRef])\n ], StickyHandle);\n return StickyHandle;\n}());\nexports.StickyHandle = StickyHandle;\nvar QuickStickyComponent = (function () {\n function QuickStickyComponent(renderer, element) {\n this.renderer = renderer;\n this.element = element;\n this.scrolling = new Rx.Subject();\n }\n QuickStickyComponent.prototype.ngAfterContentInit = function () {\n var _this = this;\n if (this.headerRefs) {\n this.headerRefs.notifyOnChanges();\n this.headerRefs.changes.subscribe(function () { return _this.recalculate(); });\n this.recalculate();\n }\n };\n QuickStickyComponent.prototype.ngDoCheck = function () {\n var currentWidth = this.element.nativeElement.lastChild.clientWidth;\n if (currentWidth != this.lastWidth) {\n if (this.lastWidth !== null)\n this.recalculate();\n this.lastWidth = currentWidth;\n }\n };\n QuickStickyComponent.prototype.ngOnChanges = function () {\n var _this = this;\n if (this.sync) {\n this.sync.filter(function (o) { return o.owner !== _this; }).subscribe(function (event) {\n if (event.width != null) {\n _this.syncedWidth = event.width;\n _this.recalculate();\n }\n if (event.scroll != null) {\n _this.scrollHandle.nativeElement.scrollLeft = Math.round(event.scroll * _this.scrollHandle.nativeElement.scrollWidth / 5) * 5;\n }\n });\n this.scrolling.debounceTime(500).subscribe(function () {\n _this.sync.next({ owner: _this, scroll: _this.scrollHandle.nativeElement.scrollLeft / _this.scrollHandle.nativeElement.scrollWidth });\n });\n }\n };\n QuickStickyComponent.prototype.recalculate = function () {\n var _this = this;\n setTimeout(function () {\n if (!_this.headerRefs)\n return;\n var calculated = _this.headerRefs.reduce(function (acc, item) { return item.reference.nativeElement.clientWidth > acc ? item.reference.nativeElement.clientWidth : acc; }, 0);\n _this.maxWidth = Math.max(calculated, _this.syncedWidth || 0);\n if (_this.maxWidth) {\n _this.stickyWidth = _this.maxWidth;\n _this.headerRefs.forEach(function (i) { return _this.renderer.setElementStyle(i.reference.nativeElement, \"min-width\", _this.maxWidth + \"px\"); });\n if (_this.sync && _this.maxWidth !== _this.syncedWidth)\n _this.sync.next({ width: _this.maxWidth, owner: _this });\n }\n }, 2);\n };\n QuickStickyComponent.prototype.onResize = function (event) {\n this.recalculate();\n };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Number)\n ], QuickStickyComponent.prototype, \"stickyWidth\", void 0);\n __decorate([\n core_1.ViewChild('handle'), \n __metadata('design:type', core_1.ElementRef)\n ], QuickStickyComponent.prototype, \"scrollHandle\", void 0);\n __decorate([\n core_1.ContentChildren(StickyHandle, { descendants: true }), \n __metadata('design:type', core_1.QueryList)\n ], QuickStickyComponent.prototype, \"headerRefs\", void 0);\n __decorate([\n core_1.HostListener('window:resize', ['$event']), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', [Object]), \n __metadata('design:returntype', void 0)\n ], QuickStickyComponent.prototype, \"onResize\", null);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Rx.Subject)\n ], QuickStickyComponent.prototype, \"sync\", void 0);\n QuickStickyComponent = __decorate([\n core_1.Component({\n selector: 'sticky-table', template: \"
\\n
\\n\\n
\",\n styles: [\"sticky-table /deep/ table {\\n border-spacing: 0;\\n }\\n sticky-table /deep/ table thead th {\\n white-space: nowrap;\\n }\\nsticky-table /deep/ table tbody td {\\n white-space: nowrap;\\n }\\n .sticky-wrapper {\\n position: relative;\\n }\\n .sticky-scroller {\\n overflow-x: auto;\\n overflow-y: visible;\\n }\\n/deep/ th.sticky,/deep/ td.sticky {\\n left: 0;\\n position: absolute;\\n top: auto;\\n background-color:white; \\n display: table-cell;\\n }\\n /deep/ td.sticky > *{\\n position: relative;\\n top: 50%;\\n transform: translateY(-50%);\\n display: block;\\n }\"]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], QuickStickyComponent);\n return QuickStickyComponent;\n}());\nexports.QuickStickyComponent = QuickStickyComponent;\nexports.StickyTableComponent = [StickyHandle, QuickStickyComponent];\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],42:[function(require,module,exports){\nmodule.exports = '
\\n \\n
\\n';\n},{}],43:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar router_1 = require('@angular/router');\nvar directives_1 = require('../../directives');\nvar forms_1 = require('@angular/forms');\nvar reactiveComponent_1 = require('../../reactiveComponent');\nvar services_1 = require('../../services');\nvar vex_1 = require('angular2-modal/plugins/vex');\nvar StrategySelectorComponent = (function (_super) {\n __extends(StrategySelectorComponent, _super);\n function StrategySelectorComponent(form, _translate, _user, _modal) {\n _super.call(this, form);\n this.form = form;\n this._translate = _translate;\n this._user = _user;\n this._modal = _modal;\n this.maximumStrategies = 5;\n this.minimumStrategies = 2;\n this.collapse = false;\n this.strategiesChanged = new core_1.EventEmitter();\n this.strategySelected = new core_1.EventEmitter();\n this.strategyAdded = new core_1.EventEmitter();\n this.strategyRemoved = new core_1.EventEmitter();\n this.strategyCloned = new core_1.EventEmitter();\n this.height = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 140;\n }\n StrategySelectorComponent.prototype.ngAfterViewInit = function () {\n };\n StrategySelectorComponent.prototype.onResize = function (event) {\n this.height = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 140;\n };\n StrategySelectorComponent.prototype.add = function (event) {\n if (event)\n event.stopPropagation();\n if (!this.form.valid)\n return false;\n var s = JSON.parse(JSON.stringify(this.newStrategyInput));\n s.name = this.getNewStrategyName();\n s.strategyId = Math.max.apply(Math, this.strategies.map(function (x) { return x.strategyId; })) + 1;\n this.strategies.push(s);\n this.strategyAdded.emit({\n data: s\n });\n this.strategiesChanged.emit({\n data: this.strategies\n });\n this.selectStrategy(s, true, true);\n };\n StrategySelectorComponent.prototype.remove = function (event, structure, index) {\n var _this = this;\n if (event)\n event.stopPropagation();\n if (this.beforeRemove) {\n var retResult = this.beforeRemove(index);\n if (retResult === false || retResult === null) {\n return false;\n }\n }\n this._modal.confirm().message(this._translate.instant('COMPONENTS.STRATEGY_SELECTOR.CONFIRM_OPTION_DELETE')).okBtn(this._translate.instant('GLOBAL.YES'))\n .cancelBtn(this._translate.instant('GLOBAL.NO')).open().then(function (dialog) { return dialog.result.then(function () { return true; }, function () { return false; }); })\n .then(function (ret) {\n if (ret) {\n var deletedStructure = _this.strategies.splice(index, 1);\n if (deletedStructure[0].selected)\n _this.selectStrategy(_this.strategies[_this.strategies.length - 1], false);\n _this.strategyRemoved.emit({\n data: deletedStructure[0]\n });\n _this.strategiesChanged.emit({\n data: _this.strategies\n });\n }\n });\n };\n StrategySelectorComponent.prototype.clone = function (event, strategy) {\n if (event)\n event.stopPropagation();\n if (!this.form.valid)\n return false;\n var s = JSON.parse(JSON.stringify(strategy));\n s.name = this.getNewStrategyName();\n s.strategyId = Math.max.apply(Math, this.strategies.map(function (x) { return x.strategyId; })) + 1;\n s.selected = false;\n this.strategies.push(s);\n this.strategiesChanged.emit({\n data: this.strategies\n });\n this.selectStrategy(s);\n this.strategyCloned.emit({\n data: {\n from: strategy,\n to: s\n }\n });\n };\n StrategySelectorComponent.prototype.canAdd = function () {\n return this._user.currentUserInfo.role === 'User' ? this.strategies.length < this.maximumStrategies : true;\n };\n StrategySelectorComponent.prototype.areNamesUnique = function (option) {\n var optionNames = Object.keys(option.value).filter(function (o) { return o.endsWith('.strategyName'); }).map(function (k) { return option.value[k]; });\n var _loop_1 = function(s) {\n if (optionNames.filter(function (x) { return String(x).trim().toLowerCase() === String(s).trim().toLowerCase(); }).length > 1) {\n return { value: { \"areNamesUnique\": s } };\n }\n };\n for (var _i = 0, optionNames_1 = optionNames; _i < optionNames_1.length; _i++) {\n var s = optionNames_1[_i];\n var state_1 = _loop_1(s);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n return {};\n };\n StrategySelectorComponent.prototype.select = function (event, strategy) {\n event.stopPropagation();\n if (strategy.selected)\n return;\n var cloneClass = 'option-clone';\n var removeClass = 'option-remove';\n var srcElClass = event.srcElement.className;\n if (srcElClass.indexOf(cloneClass) === -1 && srcElClass.indexOf(removeClass) === -1)\n this.selectStrategy(strategy);\n else if (srcElClass.indexOf(cloneClass) > -1)\n this.clone(null, strategy);\n else if (srcElClass.indexOf(removeClass) > -1)\n this.remove(null, strategy, this.strategies.indexOf(strategy));\n };\n StrategySelectorComponent.prototype.getNewStrategyName = function () {\n return this._translate.instant('COMPONENTS.STRATEGY_SELECTOR.PREFIX') + ' ' + (this.strategies.length + 1);\n };\n StrategySelectorComponent.prototype.selectStrategy = function (stategy, formValidCheck, isChangedDueToAdd) {\n if (formValidCheck === void 0) { formValidCheck = true; }\n if (isChangedDueToAdd === void 0) { isChangedDueToAdd = false; }\n if (formValidCheck && !this.form.valid)\n return false;\n for (var _i = 0, _a = this.strategies; _i < _a.length; _i++) {\n var s = _a[_i];\n s.selected = s === stategy;\n }\n this.strategySelected.emit({\n data: stategy,\n isChangedDueToAdd: isChangedDueToAdd\n });\n return true;\n };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Array)\n ], StrategySelectorComponent.prototype, \"strategies\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], StrategySelectorComponent.prototype, \"newStrategyInput\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Number)\n ], StrategySelectorComponent.prototype, \"maximumStrategies\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Number)\n ], StrategySelectorComponent.prototype, \"minimumStrategies\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Number)\n ], StrategySelectorComponent.prototype, \"strategyHeight\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Number)\n ], StrategySelectorComponent.prototype, \"selectedStrategyHeight\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean)\n ], StrategySelectorComponent.prototype, \"collapse\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Function)\n ], StrategySelectorComponent.prototype, \"beforeRemove\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], StrategySelectorComponent.prototype, \"strategiesChanged\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], StrategySelectorComponent.prototype, \"strategySelected\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], StrategySelectorComponent.prototype, \"strategyAdded\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], StrategySelectorComponent.prototype, \"strategyRemoved\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], StrategySelectorComponent.prototype, \"strategyCloned\", void 0);\n __decorate([\n core_1.HostListener('window:resize', ['$event']), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', [Object]), \n __metadata('design:returntype', void 0)\n ], StrategySelectorComponent.prototype, \"onResize\", null);\n __decorate([\n core_1.ContentChild('unselectedDetails', { read: core_1.TemplateRef }), \n __metadata('design:type', core_1.TemplateRef)\n ], StrategySelectorComponent.prototype, \"unselectedDetails\", void 0);\n __decorate([\n core_1.ContentChild('selectedDetails', { read: core_1.TemplateRef }), \n __metadata('design:type', core_1.TemplateRef)\n ], StrategySelectorComponent.prototype, \"selectedDetails\", void 0);\n StrategySelectorComponent = __decorate([\n core_1.Component({\n selector: 'strategy-selector',\n directives: [directives_1.VALIDATORS, router_1.ROUTER_DIRECTIVES, directives_1.TOOLTIP, directives_1.READONLY_DIRECTIVES, directives_1.CUSTOM_VALUE_ACCESSORS, directives_1.CLICK_INPUT_DIRECTIVE],\n viewProviders: [reactiveComponent_1.dynamicFormDirectiveProvider(function () { return StrategySelectorComponent; })],\n template: require('./strategySelector.html'),\n moduleId: module.id\n }), \n __metadata('design:paramtypes', [forms_1.NgForm, services_1.TranslateService, services_1.UserService, vex_1.Modal])\n ], StrategySelectorComponent);\n return StrategySelectorComponent;\n}(reactiveComponent_1.DynamicFormComponent));\nexports.StrategySelectorComponent = StrategySelectorComponent;\n\n\n\n},{\"../../directives\":\"@toolkit/directives\",\"../../reactiveComponent\":\"@toolkit/reactiveComponent\",\"../../services\":\"@toolkit/services\",\"./strategySelector.html\":42,\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\",\"@angular/router\":\"@angular/router\",\"angular2-modal/plugins/vex\":\"angular2-modal/plugins/vex\"}],44:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar rx_1 = require('rxjs');\nvar clickOutside_1 = require('./clickOutside');\nvar AutocompleteComponent = (function () {\n function AutocompleteComponent() {\n this.throttle = new rx_1.Subject();\n this.resultsChange = new core_1.EventEmitter();\n this.autoClear = true;\n this.busy = false;\n this._selectionIndex = -1;\n this.enterPressed = new core_1.EventEmitter();\n }\n AutocompleteComponent.prototype.ngOnInit = function () {\n var _this = this;\n this.throttle\n .debounceTime(700)\n .filter(function (v) { return !!v && v.trim().length > 2; })\n .do(function () { return _this.busy = true; })\n .map(function (v) {\n return _this.dataSource(v)\n .catch(function (err) { return rx_1.Observable.of({ data: [] }); });\n })\n .concatAll()\n .subscribe(function (result) {\n _this.busy = false;\n _this.results = _this.map ? _this.map(result.data) : result.data;\n _this.resultsChange.emit(_this.results);\n _this._selectionIndex = -1;\n });\n };\n AutocompleteComponent.prototype.handleSelection = function (move) {\n if (this.results) {\n var next = move !== 0 ? this._selectionIndex + move : -1;\n this.changeSelection(next);\n }\n };\n AutocompleteComponent.prototype.activate = function (item) {\n if (item || this.selected) {\n this.enterPressed.emit(item || this.selected);\n if (this.autoClear)\n this.clear();\n }\n };\n Object.defineProperty(AutocompleteComponent.prototype, \"selected\", {\n get: function () {\n return this.results && this._selectionIndex > -1 && this.results[this._selectionIndex];\n },\n set: function (item) {\n if (this.results) {\n if (item !== this.selected) {\n var next = this.results.indexOf(item);\n this.changeSelection(next);\n }\n }\n else\n this._selectionIndex = -1;\n },\n enumerable: true,\n configurable: true\n });\n AutocompleteComponent.prototype.changeSelection = function (next) {\n var old = this._selectionIndex;\n this._selectionIndex = next = Math.max(-1, Math.min((this.results || []).length - 1, next));\n if (old !== next) {\n if (old > -1 && this.results.length)\n this.results[old].$selected = false;\n if (next > -1)\n this.results[next].$selected = true;\n }\n };\n AutocompleteComponent.prototype.clear = function () {\n this.handleSelection(-1);\n this.results = [];\n this.resultsChange.emit([]);\n this.term = null;\n };\n AutocompleteComponent.prototype.focus = function () {\n if (this.inputRef)\n this.inputRef.nativeElement.focus();\n };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Array)\n ], AutocompleteComponent.prototype, \"results\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Function)\n ], AutocompleteComponent.prototype, \"dataSource\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Function)\n ], AutocompleteComponent.prototype, \"map\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], AutocompleteComponent.prototype, \"resultsChange\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], AutocompleteComponent.prototype, \"autoClear\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', String)\n ], AutocompleteComponent.prototype, \"notFoundMessage\", void 0);\n __decorate([\n core_1.Output('enter'), \n __metadata('design:type', Object)\n ], AutocompleteComponent.prototype, \"enterPressed\", void 0);\n __decorate([\n core_1.ContentChild(core_1.TemplateRef), \n __metadata('design:type', core_1.TemplateRef)\n ], AutocompleteComponent.prototype, \"itemTemplate\", void 0);\n __decorate([\n core_1.ViewChild('input'), \n __metadata('design:type', core_1.ElementRef)\n ], AutocompleteComponent.prototype, \"inputRef\", void 0);\n AutocompleteComponent = __decorate([\n core_1.Component({\n selector: 'autocomplete', template: \"\\n
\\n\\n\\n \\n
\", moduleId: module.id, directives: [clickOutside_1.ClickOutsideDirective]\n }), \n __metadata('design:paramtypes', [])\n ], AutocompleteComponent);\n return AutocompleteComponent;\n}());\nexports.AutocompleteComponent = AutocompleteComponent;\nexports.AUTOCOMPLETE = [AutocompleteComponent];\n\n\n\n},{\"./clickOutside\":49,\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],45:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar angular2_highcharts_1 = require('angular2-highcharts');\nfunction measure(chartHandler) {\n var native = chartHandler.element.nativeElement;\n var base = native.getBoundingClientRect();\n var elements = Array.from(native.querySelectorAll('g.highcharts-axis'));\n if (!elements)\n return;\n var boxes = elements.map(function (e) { return e.getBoundingClientRect(); });\n if (boxes.length == 0)\n return;\n var xAxis = boxes.reduce(function (acc, item) { return acc.width < item.width ? item : acc; });\n var yAxis = boxes.reduce(function (acc, item) { return acc.width > item.width ? item : acc; });\n console.log(\"xWidth: \" + xAxis.width + \", baseWidth: \" + base.width);\n if (xAxis.width > base.width) {\n return;\n }\n if (yAxis.height > base.height) {\n return;\n }\n var measurements = {\n xAxis: {\n left: xAxis.left - base.left, width: xAxis.width\n },\n yAxis: {\n top: yAxis.top - base.top, height: yAxis.height\n }\n };\n return measurements;\n}\nvar AlignToXAxis = (function () {\n function AlignToXAxis() {\n }\n AlignToXAxis.prototype.ngOnChanges = function () {\n var _this = this;\n if (!this.chartHandler)\n return;\n this.chartHandler.redraw.subscribe(function () {\n _this.update();\n });\n this.update();\n };\n AlignToXAxis.prototype.update = function () {\n var ret = measure(this.chartHandler);\n if (!ret)\n return;\n this.left = ret.xAxis.left;\n this.width = ret.xAxis.width;\n };\n AlignToXAxis.prototype.ngAfterViewInit = function () {\n var _this = this;\n setTimeout(function () { return _this.update(); }, 10);\n };\n __decorate([\n core_1.Input('alignToXAxis'), \n __metadata('design:type', angular2_highcharts_1.ChartComponent)\n ], AlignToXAxis.prototype, \"chartHandler\", void 0);\n __decorate([\n core_1.HostBinding('style.margin-left.px'), \n __metadata('design:type', Number)\n ], AlignToXAxis.prototype, \"left\", void 0);\n __decorate([\n core_1.HostBinding('style.width.px'), \n __metadata('design:type', Number)\n ], AlignToXAxis.prototype, \"width\", void 0);\n AlignToXAxis = __decorate([\n core_1.Directive({ selector: '[alignToXAxis]' }), \n __metadata('design:paramtypes', [])\n ], AlignToXAxis);\n return AlignToXAxis;\n}());\nexports.AlignToXAxis = AlignToXAxis;\nvar AlignToYAxis = (function () {\n function AlignToYAxis() {\n }\n AlignToYAxis.prototype.ngOnChanges = function () {\n var _this = this;\n if (!this.chartHandler)\n return;\n this.chartHandler.redraw.subscribe(function () {\n _this.update();\n });\n this.update();\n };\n AlignToYAxis.prototype.ngAfterViewInit = function () {\n var _this = this;\n setTimeout(function () { return _this.update(); }, 10);\n };\n AlignToYAxis.prototype.update = function () {\n var ret = measure(this.chartHandler);\n if (!ret)\n return;\n this.top = ret.yAxis.top;\n this.height = ret.yAxis.height;\n };\n __decorate([\n core_1.Input('alignToYAxis'), \n __metadata('design:type', angular2_highcharts_1.ChartComponent)\n ], AlignToYAxis.prototype, \"chartHandler\", void 0);\n __decorate([\n core_1.HostBinding('style.margin-top.px'), \n __metadata('design:type', Number)\n ], AlignToYAxis.prototype, \"top\", void 0);\n __decorate([\n core_1.HostBinding('style.height.px'), \n __metadata('design:type', Number)\n ], AlignToYAxis.prototype, \"height\", void 0);\n AlignToYAxis = __decorate([\n core_1.Directive({ selector: '[alignToYAxis]' }), \n __metadata('design:paramtypes', [])\n ], AlignToYAxis);\n return AlignToYAxis;\n}());\nexports.AlignToYAxis = AlignToYAxis;\nexports.ALIGN_TO_AXIS = [AlignToXAxis, AlignToYAxis];\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"angular2-highcharts\":\"angular2-highcharts\"}],46:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nfunction equalityByKey(left, right, keyName) {\n var equality = left === right;\n if (keyName) {\n if (typeof keyName === 'string')\n equality = (!left === !right) && (!left || left[keyName] === right[keyName]);\n else {\n equality = (!left === !right) && (!left || keyName.every(function (kn) { return left[kn] === right[kn]; }));\n }\n }\n return equality;\n}\nfunction sort(list, keyName) {\n if (keyName)\n if (typeof keyName === 'string')\n return list.sort(function (a, b) {\n if (a[keyName] > b[keyName]) {\n return 1;\n }\n if (a[keyName] < b[keyName]) {\n return -1;\n }\n return 0;\n });\n else {\n var sorter_1 = function (a, b, index) {\n if (a[keyName[index]] > b[keyName[index]]) {\n return 1;\n }\n if (a[keyName[index]] < b[keyName[index]]) {\n return -1;\n }\n if (index === keyName.length - 1)\n return 0;\n else\n return sorter_1(a, b, index + 1);\n };\n return list.sort(function (a, b) { return sorter_1(a, b, 0); });\n }\n else\n return list.sort();\n}\nexports.CHECKED_VALUE_ACCESSOR = {\n provide: forms_1.NG_VALUE_ACCESSOR,\n useExisting: core_1.forwardRef(function () { return CheckedValueAccessor; }),\n multi: true\n};\nvar CheckedValueAccessor = (function () {\n function CheckedValueAccessor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this.onChange = function (v) { };\n this.onTouched = function () { };\n }\n CheckedValueAccessor.prototype.writeValue = function (value) {\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', equalityByKey(value, this.objectValue, this.keyName));\n };\n CheckedValueAccessor.prototype.clicked = function (checked) {\n if (checked) {\n this.onChange(this.objectValue);\n }\n else {\n this.onChange(undefined);\n }\n this.onTouched();\n };\n CheckedValueAccessor.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n CheckedValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n __decorate([\n core_1.Input('ngValue'), \n __metadata('design:type', Object)\n ], CheckedValueAccessor.prototype, \"objectValue\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], CheckedValueAccessor.prototype, \"keyName\", void 0);\n __decorate([\n core_1.HostListener('change', ['$event.target.checked']), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', [Boolean]), \n __metadata('design:returntype', void 0)\n ], CheckedValueAccessor.prototype, \"clicked\", null);\n CheckedValueAccessor = __decorate([\n core_1.Directive({\n selector: 'input[type=radio][ngValue][ngModel]',\n providers: [exports.CHECKED_VALUE_ACCESSOR]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], CheckedValueAccessor);\n return CheckedValueAccessor;\n}());\nexports.CheckedValueAccessor = CheckedValueAccessor;\nexports.MULTICHECKED_VALUE_ACCESSOR = {\n provide: forms_1.NG_VALUE_ACCESSOR,\n useExisting: core_1.forwardRef(function () { return MultiCheckedValueAccessor; }),\n multi: true\n};\nvar MultiCheckedValueAccessor = (function () {\n function MultiCheckedValueAccessor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this.onChange = function (v) { };\n this.onTouched = function () { };\n }\n MultiCheckedValueAccessor.prototype.writeValue = function (value) {\n var _this = this;\n var contained = value && value.findIndex(function (item) { return equalityByKey(item, _this.objectValue, _this.keyName); }) > -1;\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', contained);\n };\n MultiCheckedValueAccessor.prototype.clicked = function (checked) {\n var _this = this;\n var existing = this.arrayValue || [];\n var without = existing.filter(function (o) { return o !== _this.objectValue; });\n var result = without;\n if (checked)\n result = without.concat([this.objectValue]);\n result = sort(result, this.keyName);\n this.onChange(result);\n this.onTouched();\n };\n MultiCheckedValueAccessor.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n MultiCheckedValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n __decorate([\n core_1.Input('ngValue'), \n __metadata('design:type', Object)\n ], MultiCheckedValueAccessor.prototype, \"objectValue\", void 0);\n __decorate([\n core_1.Input('ngModel'), \n __metadata('design:type', Array)\n ], MultiCheckedValueAccessor.prototype, \"arrayValue\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], MultiCheckedValueAccessor.prototype, \"keyName\", void 0);\n __decorate([\n core_1.HostListener('change', ['$event.target.checked']), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', [Boolean]), \n __metadata('design:returntype', void 0)\n ], MultiCheckedValueAccessor.prototype, \"clicked\", null);\n MultiCheckedValueAccessor = __decorate([\n core_1.Directive({\n selector: 'input[type=checkbox][ngValue][ngModel]',\n providers: [exports.MULTICHECKED_VALUE_ACCESSOR]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], MultiCheckedValueAccessor);\n return MultiCheckedValueAccessor;\n}());\nexports.MultiCheckedValueAccessor = MultiCheckedValueAccessor;\nexports.SELECT_VALUE_ACCESSOR = {\n provide: forms_1.NG_VALUE_ACCESSOR,\n useExisting: core_1.forwardRef(function () { return SelectValueAccessor; }),\n multi: true\n};\nvar SelectValueAccessor = (function () {\n function SelectValueAccessor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this.cnt = 0;\n this.onChange = function (v) { };\n this.onTouched = function () { };\n this.$$options = [];\n }\n SelectValueAccessor.prototype.selection = function (value) {\n var option = this.$$options.find(function (o) { return o.index == value; });\n if (option)\n this.onChange(option.objectValue);\n else\n this.onChange(undefined);\n };\n SelectValueAccessor.prototype.writeValue = function (value) {\n var _this = this;\n this.value = value;\n var index = this.$$options.findIndex(function (o) { return equalityByKey(value, o.objectValue, _this.keyName); });\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'selectedIndex', index);\n };\n SelectValueAccessor.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n SelectValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n SelectValueAccessor.prototype.register = function (option) {\n this.$$options.push(option);\n return (this.cnt++).toString();\n };\n SelectValueAccessor.prototype.unregister = function (option) {\n this.$$options = this.$$options.filter(function (o) { return o !== option; });\n this.writeValue(this.value);\n };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], SelectValueAccessor.prototype, \"keyName\", void 0);\n __decorate([\n core_1.HostListener('blur'), \n __metadata('design:type', Object)\n ], SelectValueAccessor.prototype, \"onTouched\", void 0);\n __decorate([\n core_1.HostListener('change', ['$event.target.value']), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', [String]), \n __metadata('design:returntype', void 0)\n ], SelectValueAccessor.prototype, \"selection\", null);\n SelectValueAccessor = __decorate([\n core_1.Directive({\n selector: 'select:not([multiple])[ngModel][keyName]',\n providers: [exports.SELECT_VALUE_ACCESSOR]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], SelectValueAccessor);\n return SelectValueAccessor;\n}());\nexports.SelectValueAccessor = SelectValueAccessor;\nvar SelectOption = (function () {\n function SelectOption(_element, _renderer, _select, _other) {\n this._element = _element;\n this._renderer = _renderer;\n this._select = _select;\n this._other = _other;\n if (this._select) {\n this.index = this._select.register(this);\n }\n }\n SelectOption.prototype.ngOnChanges = function () {\n if (this.index != null && this._other.value != this.index)\n this._other.value = this.index;\n };\n SelectOption.prototype.ngOnDestroy = function () {\n if (this._select) {\n this._select.unregister(this);\n }\n };\n __decorate([\n core_1.Input('ngValue'), \n __metadata('design:type', Object)\n ], SelectOption.prototype, \"objectValue\", void 0);\n SelectOption = __decorate([\n core_1.Directive({\n selector: 'option[ngValue]'\n }),\n __param(2, core_1.Optional()),\n __param(2, core_1.Host()), \n __metadata('design:paramtypes', [core_1.ElementRef, core_1.Renderer, SelectValueAccessor, forms_1.NgSelectOption])\n ], SelectOption);\n return SelectOption;\n}());\nexports.SelectOption = SelectOption;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\"}],47:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar Rx = require('rxjs');\nvar ClickAndHoldDirective = (function () {\n function ClickAndHoldDirective() {\n this.period = 200;\n this.output = new core_1.EventEmitter();\n this.mouseUp = new Rx.Subject();\n this.mouseDown = new Rx.Subject();\n }\n ClickAndHoldDirective.prototype.onMouseUp = function () { this.mouseUp.next(null); };\n ClickAndHoldDirective.prototype.onMouseDown = function () { this.mouseDown.next(null); };\n ClickAndHoldDirective.prototype.ngOnInit = function () {\n this.setup();\n };\n ClickAndHoldDirective.prototype.setup = function () {\n var _this = this;\n if (!!this.subscription)\n this.subscription.unsubscribe();\n this.subscription = this.mouseDown.do(function () { return _this.output.emit(null); }).flatMap(function () { return Rx.Observable.interval(_this.period).skip(3).takeUntil(_this.mouseUp); }).subscribe(function (i) { return _this.output.emit(null); });\n };\n ClickAndHoldDirective.prototype.ngOnChanges = function () {\n this.setup();\n };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], ClickAndHoldDirective.prototype, \"period\", void 0);\n __decorate([\n core_1.Output('clickAndHold'), \n __metadata('design:type', Object)\n ], ClickAndHoldDirective.prototype, \"output\", void 0);\n __decorate([\n core_1.HostListener('mouseup'), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', []), \n __metadata('design:returntype', void 0)\n ], ClickAndHoldDirective.prototype, \"onMouseUp\", null);\n __decorate([\n core_1.HostListener('mousedown'), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', []), \n __metadata('design:returntype', void 0)\n ], ClickAndHoldDirective.prototype, \"onMouseDown\", null);\n ClickAndHoldDirective = __decorate([\n core_1.Directive({ selector: '[clickAndHold]' }), \n __metadata('design:paramtypes', [])\n ], ClickAndHoldDirective);\n return ClickAndHoldDirective;\n}());\nexports.ClickAndHoldDirective = ClickAndHoldDirective;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],48:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar Rx = require('rxjs');\nvar BlurJacker = (function () {\n function BlurJacker(_renderer, _element, parent) {\n this._renderer = _renderer;\n this._element = _element;\n this.parent = parent;\n this.blurred = new Rx.Subject();\n this.clicked = new Rx.Subject();\n this.modelChange = new Rx.ReplaySubject(1);\n this.hide = true;\n if (!this.parent)\n this.hide = false;\n }\n BlurJacker.prototype.focus = function () {\n var _this = this;\n setTimeout(function () {\n try {\n _this._renderer.invokeElementMethod(_this._element.nativeElement, 'focus');\n _this._renderer.invokeElementMethod(_this._element.nativeElement, 'select');\n }\n catch (x) { }\n }, 0);\n };\n BlurJacker = __decorate([\n core_1.Directive({\n selector: '[ngModel]', host: { '(blur)': 'blurred.next()', '[hidden]': 'hide', '(click)': 'clicked.next()' }\n }),\n __param(2, core_1.Optional()),\n __param(2, core_1.Inject(core_1.forwardRef(function () { return ClickInputDirective; }))), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef, ClickInputDirective])\n ], BlurJacker);\n return BlurJacker;\n}());\nexports.BlurJacker = BlurJacker;\nvar ClickInputDirective = (function () {\n function ClickInputDirective() {\n this.noop = function (value) { return (value != null ? value : '').toString(); };\n this.format = false;\n this.opened = new core_1.EventEmitter();\n this._initialized = false;\n this._hasFocus = false;\n this.text = '';\n this.hide = true;\n }\n Object.defineProperty(ClickInputDirective.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n set: function (v) {\n this._value = v;\n this.text = v;\n },\n enumerable: true,\n configurable: true\n });\n ClickInputDirective.prototype.ngDoCheck = function () {\n this.recalculate(false);\n };\n ClickInputDirective.prototype.ngOnChanges = function () {\n this.recalculate(true);\n };\n ClickInputDirective.prototype.recalculate = function (force) {\n var _this = this;\n if (this._initialized) {\n var old = this._lastVm;\n var now = this._lastVm = this.model.viewModel;\n if (this._value)\n this.text = this._value;\n else if (old != now || force) {\n var accessor_1 = this.model.valueAccessor;\n var transformation = this.transformation || (this.displayPropertyName ? (function (o) { return o[_this.displayPropertyName]; }) : null);\n this.text = (transformation || accessor_1.formatToString && (function (s) { return accessor_1.formatToString(s); }) || this.noop)(this.model.viewModel) || this._placeholder;\n }\n if (!this._hasFocus && this.model.valid && !this.forceInvalid) {\n this.hide = true;\n this.blurJacker.hide = true;\n }\n else if (!this.model.valid) {\n this.hide = false;\n this.blurJacker.hide = false;\n }\n }\n };\n ClickInputDirective.prototype.ngAfterViewInit = function () {\n var _this = this;\n this._initialized = true;\n this.blurJacker.blurred.subscribe(function () {\n if (_this.model.valid && !_this.forceInvalid) {\n _this.hide = true;\n _this.blurJacker.hide = true;\n }\n _this._hasFocus = false;\n });\n this.blurJacker.clicked.subscribe(function () { _this._hasFocus = true; });\n };\n ClickInputDirective.prototype.show = function () {\n if (this.disabled)\n return;\n this.hide = false;\n this.blurJacker.hide = false;\n this.blurJacker.focus();\n this._hasFocus = true;\n this.opened.emit(null);\n };\n Object.defineProperty(ClickInputDirective.prototype, \"forceInvalid\", {\n get: function () { return this._forceInvalid; },\n set: function (v) {\n this._forceInvalid = v;\n if (v) {\n this.hide = false;\n this.blurJacker.hide = false;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClickInputDirective.prototype, \"placeholder\", {\n get: function () {\n return this._placeholder;\n },\n set: function (value) {\n this._placeholder = value;\n if (!this.text)\n this.text = value;\n },\n enumerable: true,\n configurable: true\n });\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean)\n ], ClickInputDirective.prototype, \"disabled\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Function)\n ], ClickInputDirective.prototype, \"transformation\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', String)\n ], ClickInputDirective.prototype, \"displayPropertyName\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean)\n ], ClickInputDirective.prototype, \"format\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], ClickInputDirective.prototype, \"value\", null);\n __decorate([\n core_1.ContentChild(BlurJacker), \n __metadata('design:type', BlurJacker)\n ], ClickInputDirective.prototype, \"blurJacker\", void 0);\n __decorate([\n core_1.ContentChild(forms_1.NgModel), \n __metadata('design:type', forms_1.NgModel)\n ], ClickInputDirective.prototype, \"model\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], ClickInputDirective.prototype, \"opened\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean), \n __metadata('design:paramtypes', [Boolean])\n ], ClickInputDirective.prototype, \"forceInvalid\", null);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], ClickInputDirective.prototype, \"placeholder\", null);\n ClickInputDirective = __decorate([\n core_1.Component({\n selector: 'click-input', template: \"\\n \\n {{format ? (text | localeNumber:'.0-2') : text }}\\n \", styles: [\":host{ display:inline}\"], host: {\n '[class.invalid]': 'forceInvalid'\n }\n }), \n __metadata('design:paramtypes', [])\n ], ClickInputDirective);\n return ClickInputDirective;\n}());\nexports.ClickInputDirective = ClickInputDirective;\nexports.CLICK_INPUT_DIRECTIVE = [ClickInputDirective, BlurJacker];\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\",\"rxjs\":\"rxjs\"}],49:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar ClickOutsideDirective = (function () {\n function ClickOutsideDirective() {\n this.clickOutside = new core_1.EventEmitter();\n }\n ClickOutsideDirective.prototype.localClick = function (event) {\n this.reference = event;\n };\n ClickOutsideDirective.prototype.globalClick = function (event) {\n if (this.reference !== event)\n this.clickOutside.emit(event);\n };\n __decorate([\n core_1.Output('clickOutside'), \n __metadata('design:type', Object)\n ], ClickOutsideDirective.prototype, \"clickOutside\", void 0);\n ClickOutsideDirective = __decorate([\n core_1.Directive({ selector: 'clickOutside', host: {\n '(click)': 'localClick($event)', '(document:click)': 'globalClick($event)'\n } }), \n __metadata('design:paramtypes', [])\n ], ClickOutsideDirective);\n return ClickOutsideDirective;\n}());\nexports.ClickOutsideDirective = ClickOutsideDirective;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],50:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar pipes_1 = require('../../pipes');\nvar moment = require('moment/moment');\nexports.DATE_VALUE_ACCESSOR = {\n provide: forms_1.NG_VALUE_ACCESSOR,\n useExisting: core_1.forwardRef(function () { return DateValueAccessor; }),\n multi: true\n};\nvar DateValueAccessor = (function () {\n function DateValueAccessor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n this.datePipe = new pipes_1.SafeDatePipe();\n var fake = 'asdf';\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', fake);\n var real = this._elementRef.nativeElement.value;\n this.isHtml5Supported = fake !== real;\n if (!this.isHtml5Supported) {\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'placeholder', moment.localeData().longDateFormat('L').toLowerCase());\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', '');\n }\n }\n DateValueAccessor.prototype.writeValue = function (value) {\n value = moment.utc(value).toDate();\n if (this.isHtml5Supported)\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'valueAsDate', value);\n else {\n if (value === null)\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', '');\n else\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', moment.utc(value).format('L'));\n }\n };\n DateValueAccessor.prototype.compatibility = function (value) {\n if (this.isHtml5Supported)\n return;\n var instance = moment.utc(value, 'L');\n if (instance.isValid()) {\n this.onChange(instance.toDate());\n }\n else {\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', '');\n this.onChange(null);\n }\n };\n DateValueAccessor.prototype.formatToString = function (value) {\n if (value)\n return moment.utc(value).format(\"DD MMM YYYY\");\n return null;\n };\n DateValueAccessor.prototype.registerOnChange = function (fn) {\n var _this = this;\n this.onChange = function (d) {\n if (_this.writeAsString != null && !!d)\n fn(d.toJSON());\n else\n fn(d);\n };\n };\n DateValueAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n DateValueAccessor.prototype.setDisabledState = function (isDisabled) {\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n };\n __decorate([\n core_1.HostListener('input', ['$event.target.valueAsDate']), \n __metadata('design:type', Object)\n ], DateValueAccessor.prototype, \"onChange\", void 0);\n __decorate([\n core_1.HostListener('blur', []), \n __metadata('design:type', Object)\n ], DateValueAccessor.prototype, \"onTouched\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], DateValueAccessor.prototype, \"writeAsString\", void 0);\n __decorate([\n core_1.HostListener('blur', ['$event.target.value']), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', [String]), \n __metadata('design:returntype', void 0)\n ], DateValueAccessor.prototype, \"compatibility\", null);\n DateValueAccessor = __decorate([\n core_1.Directive({\n selector: 'input[type=date][formControlName],input[type=date][formControl],input[type=date][ngModel]',\n providers: [exports.DATE_VALUE_ACCESSOR]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], DateValueAccessor);\n return DateValueAccessor;\n}());\nexports.DateValueAccessor = DateValueAccessor;\n\n\n\n},{\"../../pipes\":\"@toolkit/pipes\",\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\",\"moment/moment\":1}],51:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar ExpanderComponent = (function () {\n function ExpanderComponent() {\n this.initialized = false;\n this.isOpen = false;\n this.isFloaty = false;\n this.clickable = false;\n }\n ExpanderComponent.prototype.open = function () {\n var wasOpen = this.isOpen;\n this.isOpen = true;\n return !wasOpen;\n };\n ExpanderComponent.prototype.close = function () {\n var wasOpen = this.isOpen;\n this.isOpen = false;\n return wasOpen;\n };\n ExpanderComponent.prototype.ngOnInit = function () {\n var _this = this;\n setTimeout(function () { return _this.initialized = true; }, 30);\n };\n ExpanderComponent.prototype.headerClick = function () { if (this.clickable)\n this.open(); };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], ExpanderComponent.prototype, \"isOpen\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], ExpanderComponent.prototype, \"isFloaty\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], ExpanderComponent.prototype, \"clickable\", void 0);\n ExpanderComponent = __decorate([\n core_1.Component({\n selector: 'expander', template: \"
\\n
\",\n }), \n __metadata('design:paramtypes', [])\n ], ExpanderComponent);\n return ExpanderComponent;\n}());\nexports.ExpanderComponent = ExpanderComponent;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],52:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar common_1 = require('@angular/common');\nvar intPercentPipe_1 = require('../pipes/intPercentPipe');\nvar translation_1 = require('../services/translation');\nvar LanguageFormatterService_1 = require('../services/LanguageFormatterService');\nvar CUSTOM_VALUE_ACCESSOR = new core_1.Provider(forms_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return FormattedLocaleNumbersAccessor; }), multi: true });\nvar _NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(\\-(\\d+))?)?$/;\nvar _NUMBER_MATCH_REGEXP = /-?.?\\d+(\\.\\d+)?/;\nfunction precision(a) {\n if (!isFinite(a))\n return 0;\n var e = 1, p = 0;\n while (Math.round(a * e) / e !== a) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction round_number(num, decimals) {\n return Math.round(num * Math.pow(10, decimals)) / Math.pow(10, decimals);\n}\nvar FormattedLocaleNumbersAccessor = (function () {\n function FormattedLocaleNumbersAccessor(_renderer, _elementRef, _translation, _numberHelper) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._translation = _translation;\n this._numberHelper = _numberHelper;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n }\n FormattedLocaleNumbersAccessor.prototype.blurred = function (value) {\n this.onChange(value);\n this.onTouched();\n };\n FormattedLocaleNumbersAccessor.prototype.parseFormat = function () {\n if (!this.format)\n throw \"format string not set\";\n var split = this.format.split(':');\n var getPipe = function (input) {\n if (input === 'number')\n return { instance: new common_1.DecimalPipe() };\n if (input === 'percent')\n return { instance: new common_1.PercentPipe(), map: function (x) { return parseFloat((x / 100).toFixed(precision(x) + 2)); } };\n if (input === 'intPercent')\n return { instance: new intPercentPipe_1.IntPercentPipe() };\n throw \"unknown formatter pipe: \" + input;\n };\n var digits = split[1];\n var minInt = 1, minFraction = 0, maxFraction = 3;\n if (!!digits) {\n var parts = _NUMBER_FORMAT_REGEXP.exec(digits);\n if (!(parts)) {\n throw digits + \" is not a valid digit info for number pipes\";\n }\n if (!!parts[1]) {\n minInt = parseInt(parts[1]);\n }\n if (!!parts[3]) {\n minFraction = parseInt(parts[3]);\n }\n if (!!parts[5]) {\n maxFraction = parseInt(parts[5]);\n }\n }\n this._parsedFormat = {\n pipe: getPipe(split[0]), numbers: {\n minimumIntegerDigits: minInt,\n minimumFractionDigits: minFraction,\n maximumFractionDigits: maxFraction\n }, raw: digits\n };\n };\n FormattedLocaleNumbersAccessor.prototype.formatToString = function (value) {\n if (value === 0)\n return \"0\";\n if (value) {\n if (!this._parsedFormat)\n this.parseFormat();\n var pipe = this._parsedFormat.pipe;\n var displayText = pipe.instance.transform(value, this._parsedFormat.raw);\n return this._numberHelper.removeFormatting(displayText);\n }\n return \"\";\n };\n FormattedLocaleNumbersAccessor.prototype.parseToNumber = function (value) {\n this.locale = this._translation.getLocale();\n if (this.locale === null || this.locale === undefined)\n this.locale = 'en';\n if (!this._parsedFormat)\n this.parseFormat();\n value = this._numberHelper.formatDisplayValue(value, this.locale);\n var match = _NUMBER_MATCH_REGEXP.exec(value);\n if (!match) {\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', \"\");\n return undefined;\n }\n var number = parseFloat(match[0]);\n if (isNaN(number)) {\n this.writeValue(null);\n return null;\n }\n if (this._parsedFormat.numbers.maximumFractionDigits !== undefined) {\n number = round_number(number, this._parsedFormat.numbers.maximumFractionDigits);\n }\n var pipe = this._parsedFormat.pipe;\n if (pipe.map)\n number = pipe.map(number);\n this.writeValue(number);\n return number;\n };\n FormattedLocaleNumbersAccessor.prototype.writeValue = function (value) {\n var localeNumber;\n if (this.inputType === \"number\")\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);\n else {\n this.locale = this._translation.getLocale();\n var text = this.formatToString(value);\n localeNumber = this._numberHelper.getFormattedNumber(text, this.locale);\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', localeNumber);\n if (this._elementRef.nativeElement.parentElement.lastElementChild !== undefined) {\n this._elementRef.nativeElement.parentElement.lastElementChild.innerHtml = localeNumber;\n }\n }\n };\n FormattedLocaleNumbersAccessor.prototype.registerOnChange = function (fn) {\n var _this = this;\n this.onChange = function (value) {\n var defaultValue = _this.inputType === 'number' ? 0 : null;\n if (value == '') {\n setTimeout(function () { return _this.writeValue(defaultValue); }, 1);\n fn(defaultValue);\n }\n else {\n fn(_this.parseToNumber(value));\n }\n };\n };\n FormattedLocaleNumbersAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n __decorate([\n core_1.Input(\"type\"), \n __metadata('design:type', String)\n ], FormattedLocaleNumbersAccessor.prototype, \"inputType\", void 0);\n __decorate([\n core_1.Input('localeNumberFormat'), \n __metadata('design:type', String)\n ], FormattedLocaleNumbersAccessor.prototype, \"format\", void 0);\n FormattedLocaleNumbersAccessor = __decorate([\n core_1.Directive({\n selector: 'input[localeNumberFormat]',\n host: {\n '(blur)': 'blurred($event.target.value)'\n },\n providers: [CUSTOM_VALUE_ACCESSOR, LanguageFormatterService_1.LanguageFormatterService]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef, translation_1.ExtendedTranslateService, LanguageFormatterService_1.LanguageFormatterService])\n ], FormattedLocaleNumbersAccessor);\n return FormattedLocaleNumbersAccessor;\n}());\nexports.FormattedLocaleNumbersAccessor = FormattedLocaleNumbersAccessor;\n\n\n\n},{\"../pipes/intPercentPipe\":72,\"../services/LanguageFormatterService\":82,\"../services/translation\":92,\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\"}],53:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar router_1 = require('@angular/router');\nvar services_1 = require('../../services');\nvar interfaces_1 = require('../../interfaces');\nrequire('rxjs');\nvar NavigationChevronDirective = (function () {\n function NavigationChevronDirective(router, activated, config, translate, headerService, navigation) {\n var _this = this;\n this.router = router;\n this.activated = activated;\n this.config = config;\n this.translate = translate;\n this.headerService = headerService;\n this.navigation = navigation;\n this.path = [];\n this.currentIndex = 0;\n this.disabled = false;\n router.events.filter(function (s) { return s instanceof router_1.NavigationEnd; }).subscribe(function (o) {\n var current = activated.snapshot.url[0].path;\n var full = _this.router.url.split('/').slice(3);\n var level = full.indexOf(current);\n if (level == -1) {\n _this.disabled = true;\n _this.title = null;\n return;\n }\n var runPage = null;\n _this.path = [];\n var list = config.currentModel.runPages;\n _this.navigationLevel = level + 1;\n var _loop_1 = function(i) {\n var index = list.findIndex(function (r) { return r.identifier == full[i]; });\n if (index === -1)\n throw full[i] + \" not found in run page hierarchy\";\n runPage = list[index];\n _this.path.push(index);\n list = runPage.children || [];\n };\n for (var i = 0; i < _this.navigationLevel; i++) {\n _loop_1(i);\n }\n _this.currentIndex = 0;\n if (full[_this.navigationLevel])\n _this.currentIndex = list.findIndex(function (rp) { return rp.identifier === full[_this.navigationLevel]; });\n else {\n _this.disabled = true;\n _this.title = null;\n return;\n }\n _this.pageList = list;\n _this.reeval();\n });\n }\n NavigationChevronDirective.prototype.reeval = function () {\n if (!this.pageList || !this.pageList.length) {\n this.disabled = true;\n this.title = null;\n return;\n }\n this.disabled = false;\n if (this.mode === interfaces_1.NavigationDirection.forward) {\n if (this.currentIndex == this.pageList.length - 1) {\n this.disabled = true;\n this.title = null;\n }\n else\n this.title = this.translate.instant(\"CURRENT_MODEL.RUN_PAGES.PAGE_\" + this.path.join('_') + \"_\" + (this.currentIndex + 1));\n }\n else if (this.mode === interfaces_1.NavigationDirection.backward) {\n if (this.currentIndex == 0) {\n this.disabled = true;\n this.title = null;\n }\n else\n this.title = this.translate.instant(\"CURRENT_MODEL.RUN_PAGES.PAGE_\" + this.path.join('_') + \"_\" + (this.currentIndex - 1));\n }\n };\n Object.defineProperty(NavigationChevronDirective.prototype, \"isNext\", {\n set: function (val) { if (val !== undefined)\n this.mode = interfaces_1.NavigationDirection.forward; this.reeval(); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigationChevronDirective.prototype, \"isPrev\", {\n set: function (val) { if (val !== undefined)\n this.mode = interfaces_1.NavigationDirection.backward; this.reeval(); },\n enumerable: true,\n configurable: true\n });\n NavigationChevronDirective.prototype.onClick = function () {\n if (this.disabled)\n return;\n this.navigation.navigate({\n offset: this.mode,\n originalIndex: this.currentIndex,\n pageList: this.pageList,\n relativeTo: this.activated,\n router: this.router,\n level: this.navigationLevel\n });\n };\n __decorate([\n core_1.Input('nav-next'), \n __metadata('design:type', Object), \n __metadata('design:paramtypes', [Object])\n ], NavigationChevronDirective.prototype, \"isNext\", null);\n __decorate([\n core_1.Input('nav-prev'), \n __metadata('design:type', Object), \n __metadata('design:paramtypes', [Object])\n ], NavigationChevronDirective.prototype, \"isPrev\", null);\n __decorate([\n core_1.HostBinding('class.disabled'),\n core_1.Input(), \n __metadata('design:type', Object)\n ], NavigationChevronDirective.prototype, \"disabled\", void 0);\n __decorate([\n core_1.HostBinding('attr.title'), \n __metadata('design:type', String)\n ], NavigationChevronDirective.prototype, \"title\", void 0);\n __decorate([\n core_1.HostListener('click'), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', []), \n __metadata('design:returntype', void 0)\n ], NavigationChevronDirective.prototype, \"onClick\", null);\n NavigationChevronDirective = __decorate([\n core_1.Directive({ selector: '[nav-next],[nav-prev]', host: { '[class.quick-button]': 'true' } }), \n __metadata('design:paramtypes', [router_1.Router, router_1.ActivatedRoute, services_1.ConfigService, services_1.TranslateService, services_1.SiteHeaderService, services_1.NavigationService])\n ], NavigationChevronDirective);\n return NavigationChevronDirective;\n}());\nexports.NavigationChevronDirective = NavigationChevronDirective;\n\n\n\n},{\"../../interfaces\":\"@toolkit/interfaces\",\"../../services\":\"@toolkit/services\",\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"rxjs\":\"rxjs\"}],54:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar common_1 = require('@angular/common');\nvar intPercentPipe_1 = require('../pipes/intPercentPipe');\nvar CUSTOM_VALUE_ACCESSOR = new core_1.Provider(forms_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return FormattedNumbersAccessor; }), multi: true });\nvar _NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(\\-(\\d+))?)?$/;\nvar _NUMBER_MATCH_REGEXP = /-?.?\\d+(\\.\\d+)?/;\nfunction precision(a) {\n if (!isFinite(a))\n return 0;\n var e = 1, p = 0;\n while (Math.round(a * e) / e !== a) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction round_number(num, decimals) {\n return Math.round(num * Math.pow(10, decimals)) / Math.pow(10, decimals);\n}\nvar FormattedNumbersAccessor = (function () {\n function FormattedNumbersAccessor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n }\n FormattedNumbersAccessor.prototype.blurred = function (value) {\n this.onChange(value);\n this.onTouched();\n };\n FormattedNumbersAccessor.prototype.parseFormat = function () {\n if (!this.format)\n throw \"format string not set\";\n var split = this.format.split(':');\n var getPipe = function (input) {\n if (input === 'number')\n return { instance: new common_1.DecimalPipe() };\n if (input === 'percent')\n return { instance: new common_1.PercentPipe(), map: function (x) { return parseFloat((x / 100).toFixed(precision(x) + 2)); } };\n if (input === 'intPercent')\n return { instance: new intPercentPipe_1.IntPercentPipe() };\n throw \"unknown formatter pipe: \" + input;\n };\n var digits = split[1];\n var minInt = 1, minFraction = 0, maxFraction = 3;\n if (!!digits) {\n var parts = _NUMBER_FORMAT_REGEXP.exec(digits);\n if (!(parts)) {\n throw digits + \" is not a valid digit info for number pipes\";\n }\n if (!!parts[1]) {\n minInt = parseInt(parts[1]);\n }\n if (!!parts[3]) {\n minFraction = parseInt(parts[3]);\n }\n if (!!parts[5]) {\n maxFraction = parseInt(parts[5]);\n }\n }\n this._parsedFormat = {\n pipe: getPipe(split[0]), numbers: {\n minimumIntegerDigits: minInt,\n minimumFractionDigits: minFraction,\n maximumFractionDigits: maxFraction,\n }, raw: digits\n };\n };\n FormattedNumbersAccessor.prototype.formatToString = function (value) {\n if (!this._parsedFormat)\n this.parseFormat();\n var pipe = this._parsedFormat.pipe;\n return pipe.instance.transform(value, this._parsedFormat.raw);\n };\n FormattedNumbersAccessor.prototype.parseToNumber = function (value) {\n if (!this._parsedFormat)\n this.parseFormat();\n value = value.replace(/,| /g, \"\");\n var match = _NUMBER_MATCH_REGEXP.exec(value);\n if (!match) {\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', \"\");\n return undefined;\n }\n var number = parseFloat(match[0]);\n if (isNaN(number)) {\n this.writeValue(null);\n return null;\n }\n if (this._parsedFormat.numbers.maximumFractionDigits !== undefined) {\n number = round_number(number, this._parsedFormat.numbers.maximumFractionDigits);\n }\n var pipe = this._parsedFormat.pipe;\n if (pipe.map)\n number = pipe.map(number);\n this.writeValue(number);\n return number;\n };\n FormattedNumbersAccessor.prototype.writeValue = function (value) {\n if (this.inputType === \"number\")\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);\n else {\n var text = this.formatToString(value);\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', text);\n }\n };\n FormattedNumbersAccessor.prototype.registerOnChange = function (fn) {\n var _this = this;\n this.onChange = function (value) {\n var defaultValue = _this.inputType === 'number' ? 0 : null;\n if (value == '') {\n setTimeout(function () { return _this.writeValue(defaultValue); }, 1);\n fn(defaultValue);\n }\n else {\n fn(_this.parseToNumber(value));\n }\n };\n };\n FormattedNumbersAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n __decorate([\n core_1.Input(\"type\"), \n __metadata('design:type', String)\n ], FormattedNumbersAccessor.prototype, \"inputType\", void 0);\n __decorate([\n core_1.Input('numberFormat'), \n __metadata('design:type', String)\n ], FormattedNumbersAccessor.prototype, \"format\", void 0);\n FormattedNumbersAccessor = __decorate([\n core_1.Directive({\n selector: 'input[numberFormat]',\n host: { '(blur)': 'blurred($event.target.value)' },\n providers: [CUSTOM_VALUE_ACCESSOR]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], FormattedNumbersAccessor);\n return FormattedNumbersAccessor;\n}());\nexports.FormattedNumbersAccessor = FormattedNumbersAccessor;\n\n\n\n},{\"../pipes/intPercentPipe\":72,\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\"}],55:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('../../services');\nvar webapis_1 = require('../backend/webapis');\nfunction has(x, test) {\n return x && test(x);\n}\nvar PdfLinkDirective = (function () {\n function PdfLinkDirective(window, translate) {\n this.window = window;\n this.translate = translate;\n }\n Object.defineProperty(PdfLinkDirective.prototype, \"getTooltip\", {\n get: function () {\n return this.translate.instant('RUN.DOWNLOAD_PDF');\n },\n enumerable: true,\n configurable: true\n });\n PdfLinkDirective.prototype.onClick = function (event) {\n var _this = this;\n event.preventDefault();\n if (this.beforeGenerate) {\n var ret = this.beforeGenerate();\n if (ret === false || ret === null) {\n }\n else if (ret === true || ret === undefined) {\n this.goToPdfUrl(this.parameter);\n }\n else if (has(ret, function (c) { return c.then; })) {\n ret.then(function (result) {\n if (result === false || result === null) {\n }\n else if (result === true || result === undefined) {\n _this.goToPdfUrl(_this.parameter);\n }\n else if (result) {\n _this.goToPdfUrl(result);\n }\n });\n }\n else if (ret) {\n this.goToPdfUrl(ret);\n }\n }\n else {\n this.goToPdfUrl(this.parameter);\n }\n };\n PdfLinkDirective.prototype.encode = function (obj) {\n return encodeURIComponent(JSON.stringify(obj));\n };\n PdfLinkDirective.prototype.goToPdfUrl = function (parameter) {\n parameter = parameter && this.encode(parameter);\n var language = this.translate.currentLang;\n this.window.nativeElement.open(webapis_1.Pdf.PdfProxy.downloadReport_url(this.runId, this.pdfName, language, parameter).url);\n };\n __decorate([\n core_1.Input('pdf-link'), \n __metadata('design:type', String)\n ], PdfLinkDirective.prototype, \"pdfName\", void 0);\n __decorate([\n core_1.Input('runId'), \n __metadata('design:type', Number)\n ], PdfLinkDirective.prototype, \"runId\", void 0);\n __decorate([\n core_1.Input('parameter'), \n __metadata('design:type', Object)\n ], PdfLinkDirective.prototype, \"parameter\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Function)\n ], PdfLinkDirective.prototype, \"beforeGenerate\", void 0);\n PdfLinkDirective = __decorate([\n core_1.Directive({\n selector: '[pdf-link]',\n host: { '[class.pdf-button]': 'true', '[title]': 'getTooltip', '(click)': 'onClick($event)' }\n }), \n __metadata('design:paramtypes', [services_1.WindowRef, services_1.TranslateService])\n ], PdfLinkDirective);\n return PdfLinkDirective;\n}());\nexports.PdfLinkDirective = PdfLinkDirective;\n\n\n\n},{\"../../services\":\"@toolkit/services\",\"../backend/webapis\":17,\"@angular/core\":\"@angular/core\"}],56:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar core_1 = require('@angular/core');\nvar slider_1 = require('./slider');\nvar clickInput_1 = require('./clickInput');\nexports.READONLY_PROVIDER = new core_1.OpaqueToken(\"readonlyprovider\");\nvar ReadOnlyInputsDirective = (function () {\n function ReadOnlyInputsDirective(provider) {\n if (provider && provider.isReadonly != undefined) {\n this.provider = provider;\n }\n }\n __decorate([\n core_1.Input('always-enabled'), \n __metadata('design:type', Boolean)\n ], ReadOnlyInputsDirective.prototype, \"alwaysEnabled\", void 0);\n __decorate([\n core_1.Input('disabled'), \n __metadata('design:type', Boolean)\n ], ReadOnlyInputsDirective.prototype, \"alwaysDisabled\", void 0);\n ReadOnlyInputsDirective = __decorate([\n core_1.Directive({ selector: 'input,textarea,select', host: { '[disabled]': 'provider?.isReadonly && !alwaysEnabled || alwaysDisabled' } }),\n __param(0, core_1.Optional()),\n __param(0, core_1.Inject(exports.READONLY_PROVIDER)), \n __metadata('design:paramtypes', [Object])\n ], ReadOnlyInputsDirective);\n return ReadOnlyInputsDirective;\n}());\nexports.ReadOnlyInputsDirective = ReadOnlyInputsDirective;\nvar ReadOnlyElementsDirective = (function (_super) {\n __extends(ReadOnlyElementsDirective, _super);\n function ReadOnlyElementsDirective(provider, element) {\n var _this = this;\n _super.call(this, provider);\n element.nativeElement.addEventListener('click', function (event) {\n if (_this.provider && _this.provider.isReadonly && !_this.alwaysEnabled || _this.alwaysDisabled || _this.alwaysDisabled2)\n event.stopImmediatePropagation();\n }, true);\n }\n __decorate([\n core_1.Input('class.disabled'), \n __metadata('design:type', Boolean)\n ], ReadOnlyElementsDirective.prototype, \"alwaysDisabled2\", void 0);\n ReadOnlyElementsDirective = __decorate([\n core_1.Directive({ selector: '.quick-button,button', host: { '[class.disabled]': '(provider?.isReadonly && !alwaysEnabled) || alwaysDisabled||alwaysDisabled2', } }),\n __param(0, core_1.Optional()),\n __param(0, core_1.Inject(exports.READONLY_PROVIDER)), \n __metadata('design:paramtypes', [Object, core_1.ElementRef])\n ], ReadOnlyElementsDirective);\n return ReadOnlyElementsDirective;\n}(ReadOnlyInputsDirective));\nexports.ReadOnlyElementsDirective = ReadOnlyElementsDirective;\nvar ReadOnlyCustomComponentsDirective = (function (_super) {\n __extends(ReadOnlyCustomComponentsDirective, _super);\n function ReadOnlyCustomComponentsDirective(provider, component) {\n _super.call(this, provider);\n this.component = component;\n }\n ReadOnlyCustomComponentsDirective.prototype.ngDoCheck = function () {\n this.component.disabled = this.provider && this.provider.isReadonly && !this.alwaysEnabled || this.alwaysDisabled;\n };\n ReadOnlyCustomComponentsDirective = __decorate([\n __param(0, core_1.Optional()),\n __param(0, core_1.Inject(exports.READONLY_PROVIDER)), \n __metadata('design:paramtypes', [Object, Object])\n ], ReadOnlyCustomComponentsDirective);\n return ReadOnlyCustomComponentsDirective;\n}(ReadOnlyInputsDirective));\nexports.ReadOnlyCustomComponentsDirective = ReadOnlyCustomComponentsDirective;\nvar ReadOnlySliderDirective = (function (_super) {\n __extends(ReadOnlySliderDirective, _super);\n function ReadOnlySliderDirective(provider, component) {\n _super.call(this, provider, component);\n }\n ReadOnlySliderDirective = __decorate([\n core_1.Directive({ selector: 'slider' }),\n __param(0, core_1.Optional()),\n __param(0, core_1.Inject(exports.READONLY_PROVIDER)), \n __metadata('design:paramtypes', [Object, slider_1.SliderComponent])\n ], ReadOnlySliderDirective);\n return ReadOnlySliderDirective;\n}(ReadOnlyCustomComponentsDirective));\nexports.ReadOnlySliderDirective = ReadOnlySliderDirective;\nvar ReadOnlyClickInputDirective = (function (_super) {\n __extends(ReadOnlyClickInputDirective, _super);\n function ReadOnlyClickInputDirective(provider, component) {\n _super.call(this, provider, component);\n }\n ReadOnlyClickInputDirective = __decorate([\n core_1.Directive({ selector: 'click-input' }),\n __param(0, core_1.Optional()),\n __param(0, core_1.Inject(exports.READONLY_PROVIDER)), \n __metadata('design:paramtypes', [Object, clickInput_1.ClickInputDirective])\n ], ReadOnlyClickInputDirective);\n return ReadOnlyClickInputDirective;\n}(ReadOnlyCustomComponentsDirective));\nexports.ReadOnlyClickInputDirective = ReadOnlyClickInputDirective;\nexports.READONLY_DIRECTIVES = [ReadOnlyInputsDirective, ReadOnlyElementsDirective, ReadOnlySliderDirective, ReadOnlyClickInputDirective];\n\n\n\n},{\"./clickInput\":48,\"./slider\":58,\"@angular/core\":\"@angular/core\"}],57:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar core_1 = require('@angular/core');\nvar platform_browser_1 = require('@angular/platform-browser');\nvar ScrollDirective = (function () {\n function ScrollDirective(document) {\n this.document = document;\n }\n ScrollDirective.prototype.handleClick = function () {\n var element = this.document.getElementById(this.target);\n var action = function (target) { return target.scrollIntoViewIfNeeded ? target.scrollIntoViewIfNeeded() : target.scrollIntoView(); };\n if (element) {\n if (!this.delay)\n action(element);\n else {\n var ms = parseInt(this.delay);\n setTimeout(function () { return action(element); }, ms);\n }\n }\n };\n __decorate([\n core_1.Input('scrollTo'), \n __metadata('design:type', String)\n ], ScrollDirective.prototype, \"target\", void 0);\n __decorate([\n core_1.Input('delay'), \n __metadata('design:type', String)\n ], ScrollDirective.prototype, \"delay\", void 0);\n ScrollDirective = __decorate([\n core_1.Directive({\n selector: '[scrollTo]', host: { '(click)': 'handleClick()' }\n }),\n __param(0, core_1.Inject(platform_browser_1.DOCUMENT)), \n __metadata('design:paramtypes', [Document])\n ], ScrollDirective);\n return ScrollDirective;\n}());\nexports.ScrollDirective = ScrollDirective;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/platform-browser\":\"@angular/platform-browser\"}],58:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar platform_browser_1 = require('@angular/platform-browser');\nvar Rx = require('rxjs');\nvar CUSTOM_VALUE_ACCESSOR = new core_1.Provider(forms_1.NG_VALUE_ACCESSOR, {\n useExisting: core_1.forwardRef(function () { return SliderAccessor; }), multi: true\n});\nvar SliderComponent = (function () {\n function SliderComponent(sanitizer) {\n var _this = this;\n this.sanitizer = sanitizer;\n this.disabled = false;\n this.relativeValue = 0;\n this._sampler = new Rx.Subject();\n this._held = false;\n this._lastKnownWidth = 0;\n this._stops = [];\n this._max = 1;\n this._step = 1;\n this._min = 1;\n this.valueChanged = new core_1.EventEmitter();\n this._sampler.sampleTime(1000).subscribe(function () { return _this.calculateValue(false); });\n }\n SliderComponent.prototype.hold = function (event) {\n if (this.disabled)\n return;\n if (event.button === 0) {\n this._held = true;\n event.preventDefault();\n }\n };\n SliderComponent.prototype.ngDoCheck = function () {\n if (this.$$container) {\n var prev = this._lastKnownWidth;\n var now = this._lastKnownWidth = this.getSizePixel();\n if (now !== prev && now > 0) {\n this.calculateView();\n }\n }\n };\n SliderComponent.prototype.release = function () {\n if (this.disabled)\n return;\n var wasHeld = this._held;\n this._held = false;\n if (wasHeld)\n this.calculateValue();\n };\n SliderComponent.prototype.move = function (event) {\n if (this.disabled)\n return;\n if (this._held) {\n this.relativeValue = this.mouseEventToRelative(event);\n this.$$viewPosition = this.sanitizer.bypassSecurityTrustStyle(\"calc(\" + this.relativeValue + \"px - 50%)\");\n this._sampler.next(this.relativeValue);\n }\n };\n SliderComponent.prototype.mouseEventToRelative = function (event) {\n return Math.max(Math.min(this.getEventPixel(event) - this.getGlobalOffsetPixel(this.$$container.nativeElement), this.getSizePixel()), 0);\n };\n SliderComponent.prototype.jump = function (event) {\n if (this.disabled)\n return;\n if (event.button === 0 && !this._held) {\n this.relativeValue = this.mouseEventToRelative(event);\n this.$$viewPosition = this.sanitizer.bypassSecurityTrustStyle(\"calc(\" + this.relativeValue + \"px - 50%)\");\n this._held = true;\n event.preventDefault();\n }\n };\n SliderComponent.prototype.calculateValue = function (snap) {\n if (snap === void 0) { snap = true; }\n var percent = this.relativeValue / this.getSizePixel();\n var relativeValueReal = percent * (this._max - this._min);\n var stepReal = relativeValueReal / (this._step || 1);\n var stepExact = Math.round(stepReal);\n this._value = this._min + this._step * stepExact;\n if (snap) {\n this.relativeValue = stepExact * this.getSizePixel() / ((this._max - this._min) / this._step || 1);\n this.$$viewPosition = this.sanitizer.bypassSecurityTrustStyle(\"calc(\" + this.relativeValue + \"px - 50%)\");\n }\n this.valueChanged.emit(this._value);\n };\n SliderComponent.prototype.calculateView = function () {\n var offset = Math.max(Math.min(this.value, this._max), this._min) - this._min;\n var stepReal = offset / (this._step || 1);\n var stepExact = Math.round(stepReal);\n this.relativeValue = stepExact * this.getSizePixel() / ((this._max - this._min) / this._step || 1);\n this.$$viewPosition = this.sanitizer.bypassSecurityTrustStyle(\"calc(\" + this.relativeValue + \"px - 50%)\");\n this.calculateStops();\n };\n SliderComponent.prototype.calculateStops = function () {\n var _this = this;\n this.stops.forEach(function (x) {\n var offset = Math.max(Math.min(x.value, _this._max), _this._min) - _this._min;\n var stepReal = offset / (_this._step || 1);\n x.relativeValue = stepReal * _this.getSizePixel() / ((_this._max - _this._min) / _this._step || 1);\n });\n };\n Object.defineProperty(SliderComponent.prototype, \"stops\", {\n get: function () { return this._stops; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SliderComponent.prototype, \"stopValues\", {\n get: function () { return this._stops.map(function (s) { return s.value; }); },\n set: function (v) {\n if (v) {\n this._stops = v.map(function (x) {\n return { value: x, relativeValue: 0 };\n });\n this.calculateStops();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SliderComponent.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n set: function (val) {\n this._value = val;\n this.calculateView();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SliderComponent.prototype, \"max\", {\n get: function () {\n return this._max;\n },\n set: function (v) {\n if (typeof v === 'string') {\n this._max = parseFloat(v);\n }\n else\n this._max = v != null ? v : 1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SliderComponent.prototype, \"step\", {\n get: function () {\n return this._step;\n },\n set: function (v) {\n if (typeof v === 'string') {\n this._step = parseFloat(v);\n }\n else\n this._step = v != null ? v : 1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SliderComponent.prototype, \"min\", {\n get: function () {\n return this._min;\n },\n set: function (v) {\n if (typeof v === 'string') {\n this._min = parseFloat(v);\n }\n else\n this._min = v != null ? v : 0;\n },\n enumerable: true,\n configurable: true\n });\n SliderComponent.prototype.getGlobalOffsetPixel = function (el) {\n var offset = el.offsetLeft;\n if (el.offsetParent)\n offset += this.getGlobalOffsetPixel(el.offsetParent);\n return offset;\n };\n SliderComponent.prototype.getSizePixel = function () {\n return this.$$container.nativeElement.offsetWidth;\n };\n SliderComponent.prototype.getEventPixel = function (event) { return event.pageX; };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean)\n ], SliderComponent.prototype, \"disabled\", void 0);\n __decorate([\n core_1.ViewChild('container', { read: core_1.ElementRef }), \n __metadata('design:type', core_1.ElementRef)\n ], SliderComponent.prototype, \"$$container\", void 0);\n __decorate([\n core_1.ViewChild('handle', { read: core_1.ElementRef }), \n __metadata('design:type', core_1.ElementRef)\n ], SliderComponent.prototype, \"$$handle\", void 0);\n __decorate([\n core_1.Input('stops'), \n __metadata('design:type', Object)\n ], SliderComponent.prototype, \"stopValues\", null);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], SliderComponent.prototype, \"value\", null);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], SliderComponent.prototype, \"max\", null);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], SliderComponent.prototype, \"step\", null);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], SliderComponent.prototype, \"min\", null);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], SliderComponent.prototype, \"valueChanged\", void 0);\n SliderComponent = __decorate([\n core_1.Component({\n selector: 'slider:not([vertical])', template: \"\\n
\\n
\\n
\\n \\n
\\n\\n\\n
\\n
\", host: { '[attr.disabled]': 'disabled?\"disabled\":null' }\n }), \n __metadata('design:paramtypes', [platform_browser_1.DomSanitizationService])\n ], SliderComponent);\n return SliderComponent;\n}());\nexports.SliderComponent = SliderComponent;\nvar VerticalSliderComponent = (function (_super) {\n __extends(VerticalSliderComponent, _super);\n function VerticalSliderComponent(sanitizer) {\n _super.call(this, sanitizer);\n }\n VerticalSliderComponent.prototype.getGlobalOffsetPixel = function (el) {\n var offset = el.offsetTop;\n if (el.offsetParent)\n offset += this.getGlobalOffsetPixel(el.offsetParent);\n return offset;\n };\n VerticalSliderComponent.prototype.getSizePixel = function () {\n return this.$$container.nativeElement.offsetHeight;\n };\n VerticalSliderComponent.prototype.getEventPixel = function (event) { return event.pageY; };\n VerticalSliderComponent.prototype.mouseEventToRelative = function (event) {\n return this.getSizePixel() - _super.prototype.mouseEventToRelative.call(this, event);\n };\n VerticalSliderComponent = __decorate([\n core_1.Component({\n selector: 'slider[vertical]', template: \"\\n
\\n
\\n
\\n \\n
\\n\\n\\n
\\n
\", host: { '[attr.disabled]': 'disabled?\"disabled\":null' }, providers: [{\n provide: SliderComponent,\n useExisting: core_1.forwardRef(function () { return VerticalSliderComponent; })\n }]\n }), \n __metadata('design:paramtypes', [platform_browser_1.DomSanitizationService])\n ], VerticalSliderComponent);\n return VerticalSliderComponent;\n}(SliderComponent));\nexports.VerticalSliderComponent = VerticalSliderComponent;\nvar SliderAccessor = (function () {\n function SliderAccessor(_slider) {\n this._slider = _slider;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n }\n SliderAccessor.prototype.changing = function () {\n this.onChange(this._slider.value);\n this.onTouched();\n };\n SliderAccessor.prototype.writeValue = function (value) {\n this._slider.value = value;\n };\n SliderAccessor.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n SliderAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n SliderAccessor = __decorate([\n core_1.Directive({\n selector: 'slider[ngModel],wtw-slider[ngModel]', host: { '(mouseup)': 'onTouched()', '(valueChanged)': 'changing()' },\n providers: [CUSTOM_VALUE_ACCESSOR],\n }), \n __metadata('design:paramtypes', [SliderComponent])\n ], SliderAccessor);\n return SliderAccessor;\n}());\nexports.SliderAccessor = SliderAccessor;\nexports.SLIDER = [SliderComponent, SliderAccessor, VerticalSliderComponent];\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\",\"@angular/platform-browser\":\"@angular/platform-browser\",\"rxjs\":\"rxjs\"}],59:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar core_1 = require('@angular/core');\nvar angular2_highcharts_1 = require('angular2-highcharts');\nvar Tab = (function () {\n function Tab() {\n this._active = false;\n this.activating = new core_1.EventEmitter(true);\n this.appearing = new core_1.EventEmitter(true);\n }\n Object.defineProperty(Tab.prototype, \"invisible\", {\n get: function () { return this._invisible; },\n set: function (v) {\n var old = this._invisible;\n this._invisible = v;\n if (!!old && !v)\n this.appearing.emit(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tab.prototype, \"active\", {\n get: function () { return this._active; },\n set: function (value) {\n this._active = value;\n if (value)\n this.activating.emit(this);\n },\n enumerable: true,\n configurable: true\n });\n __decorate([\n core_1.Input('tabTitle'), \n __metadata('design:type', String)\n ], Tab.prototype, \"title\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean)\n ], Tab.prototype, \"disabled\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean), \n __metadata('design:paramtypes', [Boolean])\n ], Tab.prototype, \"invisible\", null);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean), \n __metadata('design:paramtypes', [Boolean])\n ], Tab.prototype, \"active\", null);\n __decorate([\n core_1.ContentChildren(angular2_highcharts_1.ChartComponent), \n __metadata('design:type', core_1.QueryList)\n ], Tab.prototype, \"charts\", void 0);\n Tab = __decorate([\n core_1.Component({\n selector: 'tab',\n template: \"\",\n host: { '[hidden]': '!active' }\n }), \n __metadata('design:paramtypes', [])\n ], Tab);\n return Tab;\n}());\nexports.Tab = Tab;\nvar TabChartResizer = (function () {\n function TabChartResizer(tab, chartComponent) {\n if (tab)\n tab.activating.subscribe(function (r) { return chartComponent.chart && chartComponent.chart.reflow(); });\n }\n TabChartResizer = __decorate([\n core_1.Directive({ selector: 'chart' }),\n __param(0, core_1.Optional()), \n __metadata('design:paramtypes', [Tab, angular2_highcharts_1.ChartComponent])\n ], TabChartResizer);\n return TabChartResizer;\n}());\nexports.TabChartResizer = TabChartResizer;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"angular2-highcharts\":\"angular2-highcharts\"}],60:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar tab_1 = require('./tab');\nvar Rx = require('rxjs');\nvar TabsControl = (function () {\n function TabsControl() {\n this.tabSelection = new core_1.EventEmitter();\n this.initialised = false;\n }\n TabsControl.prototype.ngAfterContentInit = function () {\n var _this = this;\n var activeTabs = this.tabs.filter(function (tab) { return tab.active; });\n var first = this.tabs.filter(function (tab) { return !tab.invisible && !tab.disabled; })[0];\n if (activeTabs.length === 0 && !!first) {\n this.selectTab(first);\n }\n this.initialised = true;\n var array = this.tabs.toArray();\n Rx.Observable.from(array).flatMap(function (o) { return o.appearing; }).subscribe(function (tab) {\n if (!_this._activeTab || array.indexOf(tab) < array.indexOf(_this._activeTab)) {\n _this.selectTab(tab);\n }\n });\n };\n TabsControl.prototype.selectTab = function (tab) {\n this.tabs.toArray().forEach(function (tab) { return tab.active = false; });\n tab.active = true;\n this._activeTab = tab;\n this.tabSelection.emit(\"\" + tab.title);\n };\n TabsControl.prototype.ngDoCheck = function () {\n var _this = this;\n if (!this.initialised)\n return;\n if (this._activeTab && (this._activeTab.invisible || this._activeTab.disabled)) {\n var all = this.tabs.map(function (item, index) { return ({ item: item, index: index }); });\n var currentIndex_1 = all.find(function (x) { return x.item === _this._activeTab; }).index;\n var next = all.find(function (o) { return !o.item.disabled && !o.item.invisible && o.index > currentIndex_1; }) ||\n all.find(function (o) { return !o.item.disabled && !o.item.invisible; });\n if (next)\n this.selectTab(next.item);\n else\n this.tabs.toArray().forEach(function (tab) { return tab.active = false; });\n }\n else if (!this._activeTab) {\n var first = this.tabs.filter(function (tab) { return !tab.invisible && !tab.disabled; })[0];\n if (!!first) {\n this.selectTab(first);\n }\n }\n };\n __decorate([\n core_1.ContentChildren(tab_1.Tab), \n __metadata('design:type', core_1.QueryList)\n ], TabsControl.prototype, \"tabs\", void 0);\n __decorate([\n core_1.Output(), \n __metadata('design:type', Object)\n ], TabsControl.prototype, \"tabSelection\", void 0);\n TabsControl = __decorate([\n core_1.Component({\n selector: 'tabs',\n template: \"\\n
\\n
\\n \\n
    \\n \\n
\\n \\n
\\n
\\n
\\n\\n\\n \"\n }), \n __metadata('design:paramtypes', [])\n ], TabsControl);\n return TabsControl;\n}());\nexports.TabsControl = TabsControl;\n\n\n\n},{\"./tab\":59,\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],61:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar INTERACTIVE_TAGS = ['select', 'input', 'button', 'textarea'];\nvar Toggle = (function () {\n function Toggle(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this.toggle = false;\n }\n Toggle.prototype.clicked = function (event) {\n if (event.target !== event.currentTarget) {\n if (!this.checkEventTarget(event.target, event.currentTarget))\n return;\n }\n var el = this.toogleFor || this._elementRef.nativeElement;\n this.toggle = !el.classList.contains('open');\n this._renderer.setElementClass(el, 'open', this.toggle);\n event.stopPropagation();\n };\n Toggle.prototype.checkEventTarget = function (current, final) {\n if (INTERACTIVE_TAGS.indexOf(current.tagName.toLowerCase()) > -1)\n return false;\n if (final === current)\n return true;\n if (!current)\n return false;\n if (current.style.backgroundColor)\n return false;\n else\n return this.checkEventTarget(current.parentElement, final);\n };\n __decorate([\n core_1.Input('toggleFor'), \n __metadata('design:type', core_1.ElementRef)\n ], Toggle.prototype, \"toogleFor\", void 0);\n __decorate([\n core_1.Input('toggleSelf'), \n __metadata('design:type', Object)\n ], Toggle.prototype, \"toggleSelf\", void 0);\n __decorate([\n core_1.HostListener('click', ['$event']), \n __metadata('design:type', Function), \n __metadata('design:paramtypes', [MouseEvent]), \n __metadata('design:returntype', void 0)\n ], Toggle.prototype, \"clicked\", null);\n Toggle = __decorate([\n core_1.Directive({\n selector: '[toggleFor],[toggleSelf]'\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], Toggle);\n return Toggle;\n}());\nexports.Toggle = Toggle;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],62:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar clickOutside_1 = require('./clickOutside');\nvar services_1 = require('../../services');\nvar defaultSettings = { ratio: 1.6, topSpacing: 2, bottomSpacing: 5 };\nvar rx_1 = require('rxjs');\nvar TooltipDirective = (function () {\n function TooltipDirective(container, resolver, host) {\n var _this = this;\n this.container = container;\n this.host = host;\n resolver.resolveComponent(TooltipContainer).then(function (o) { return _this.factory = o; });\n }\n TooltipDirective.prototype.show = function (stick) {\n var _this = this;\n if (stick === void 0) { stick = false; }\n if (!this.content || !this.factory)\n return;\n if (stick)\n this._stuck = true;\n if (stick) {\n TooltipDirective.SomebodyClicked.filter(function (ref) { return ref !== _this; }).take(1).subscribe(function () {\n _this.hide(true);\n });\n }\n if (this._visible)\n return;\n this._reference = this.container.createComponent(this.factory);\n var settings = Object.assign({}, defaultSettings, this.settings || {});\n this._reference.instance.show(this.content, this.host, settings);\n this._visible = true;\n TooltipDirective.SomebodyClicked.next(this);\n };\n TooltipDirective.prototype.hide = function (unstick) {\n var _this = this;\n if (unstick === void 0) { unstick = false; }\n if (!this._visible)\n return;\n if (this._stuck && !unstick) {\n setTimeout(function () { _this._stuck = false; _this.hide(); }, 5000);\n }\n else {\n this._reference.destroy();\n this._visible = false;\n this._stuck = false;\n }\n };\n TooltipDirective.SomebodyClicked = new rx_1.Subject();\n __decorate([\n core_1.Input('tooltip'), \n __metadata('design:type', Object)\n ], TooltipDirective.prototype, \"content\", void 0);\n __decorate([\n core_1.Input('tooltip-settings'), \n __metadata('design:type', Object)\n ], TooltipDirective.prototype, \"settings\", void 0);\n TooltipDirective = __decorate([\n core_1.Directive({ selector: '[tooltip]', host: { '(mouseenter)': 'show()', '(mouseleave)': 'hide()', '(click)': 'show(true)', '(window:scroll)': 'hide(true)', '[style.cursor]': 'pointer' } }), \n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.ComponentResolver, core_1.ElementRef])\n ], TooltipDirective);\n return TooltipDirective;\n}());\nexports.TooltipDirective = TooltipDirective;\nexports.TOOLTIP = [TooltipDirective, clickOutside_1.ClickOutsideDirective];\nvar TooltipContainer = (function () {\n function TooltipContainer(window) {\n this.window = window;\n this.styleObj = { opacity: 0.01 };\n }\n TooltipContainer.prototype.show = function (content, host, settings) {\n if (typeof content === 'string') {\n this.textContent = content;\n this._reference = null;\n }\n else if (content instanceof core_1.TemplateRef) {\n this.textContent = null;\n this._reference = this.container.createEmbeddedView(content);\n }\n this.settings = settings;\n this.host = host;\n };\n TooltipContainer.prototype.ngOnDestroy = function () {\n if (this._reference && this._reference.destroy)\n this._reference.destroy();\n };\n TooltipContainer.prototype.ngAfterViewInit = function () {\n var _this = this;\n function pxIfNotNull(x) {\n if (x == null)\n return null;\n return x + 'px';\n }\n ;\n if (this.host && this.element) {\n var hostInfo = this.host.nativeElement.getBoundingClientRect();\n var viewPort = { width: this.window.nativeElement.document.documentElement.clientWidth, height: this.window.nativeElement.document.documentElement.clientHeight };\n var tooltipInfo = { width: this.element.nativeElement.offsetWidth, height: this.element.nativeElement.offsetHeight };\n var area = tooltipInfo.height * tooltipInfo.width;\n if (area > 0) {\n var tooltipCalculated = { width: Math.sqrt(area / this.settings.ratio) * this.settings.ratio, height: Math.sqrt(area / this.settings.ratio) };\n var target = { top: hostInfo.top + hostInfo.height + this.settings.topSpacing, left: hostInfo.left, bottom: null };\n if (hostInfo.left > viewPort.width / 2)\n target.left = hostInfo.left + hostInfo.width - tooltipCalculated.width;\n if (viewPort.height - (tooltipCalculated.height + target.top) <= tooltipCalculated.height / 2) {\n target.bottom = viewPort.height - hostInfo.top + this.settings.bottomSpacing;\n target.top = null;\n }\n if (tooltipCalculated.width >= 200) {\n tooltipCalculated.width = 200;\n }\n this.styleObj = {\n opacity: 0.01, top: pxIfNotNull(target.top), left: pxIfNotNull(target.left), bottom: pxIfNotNull(target.bottom), width: pxIfNotNull(tooltipCalculated.width),\n \"z-index\": 99999\n };\n console.log(this.styleObj);\n setTimeout(function () {\n _this.styleObj.opacity = 1;\n }, 10);\n }\n }\n };\n TooltipContainer.prototype.getPositionValues = function (el) {\n var offset = { top: el.offsetTop, left: el.offsetLeft, globalHeight: el.clientHeight, globalWidth: el.clientWidth };\n if (el.offsetParent) {\n var parent_1 = this.getPositionValues(el.offsetParent);\n offset.left += parent_1.left;\n offset.top += parent_1.top;\n offset.globalHeight = parent_1.globalHeight;\n offset.globalWidth = parent_1.globalWidth;\n }\n return offset;\n };\n __decorate([\n core_1.ViewChild('anchor', { read: core_1.ViewContainerRef }), \n __metadata('design:type', core_1.ViewContainerRef)\n ], TooltipContainer.prototype, \"container\", void 0);\n __decorate([\n core_1.ViewChild('element', { read: core_1.ElementRef }), \n __metadata('design:type', core_1.ElementRef)\n ], TooltipContainer.prototype, \"element\", void 0);\n TooltipContainer = __decorate([\n core_1.Component({\n template: \"\\n
\\n{{textContent}}\\n\\n
\", selector: 'tooltip',\n }), \n __metadata('design:paramtypes', [services_1.WindowRef])\n ], TooltipContainer);\n return TooltipContainer;\n}());\n\n\n\n},{\"../../services\":\"@toolkit/services\",\"./clickOutside\":49,\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],63:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar CUSTOM_VALUE_ACCESSOR = new core_1.Provider(forms_1.NG_VALUE_ACCESSOR, { useExisting: core_1.forwardRef(function () { return TrimAccessor; }), multi: true });\nvar TrimAccessor = (function () {\n function TrimAccessor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this.onChange = function (_) { };\n this.onTouched = function () { };\n }\n TrimAccessor.prototype.blurred = function (value) {\n var trimmed = value;\n if (value)\n trimmed = value.trim();\n if (value !== trimmed)\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', trimmed);\n this.onChange(trimmed);\n this.onTouched();\n };\n TrimAccessor.prototype.writeValue = function (value) {\n if (value)\n value = value.trim();\n else\n value = '';\n this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);\n };\n TrimAccessor.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n TrimAccessor.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };\n TrimAccessor = __decorate([\n core_1.Directive({\n selector: 'input[ngModel][trim], textarea[ngModel][trim]',\n host: { '(blur)': 'blurred($event.target.value)', '(input)': 'onChange($event.target.value)' },\n providers: [CUSTOM_VALUE_ACCESSOR]\n }), \n __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])\n ], TrimAccessor);\n return TrimAccessor;\n}());\nexports.TrimAccessor = TrimAccessor;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\"}],64:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar moment = require('moment/moment');\nvar GenericValidatorDirective = (function () {\n function GenericValidatorDirective() {\n }\n GenericValidatorDirective.prototype.validate = function (c) {\n return this.method && this.method(c);\n };\n __decorate([\n core_1.Input('validate-using'), \n __metadata('design:type', Function)\n ], GenericValidatorDirective.prototype, \"method\", void 0);\n GenericValidatorDirective = __decorate([\n core_1.Directive({\n selector: '[validate-using]',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: GenericValidatorDirective, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], GenericValidatorDirective);\n return GenericValidatorDirective;\n}());\nexports.GenericValidatorDirective = GenericValidatorDirective;\nfunction getNumber(value) {\n if (typeof value === 'string')\n return parseFloat(value);\n else\n return value;\n}\nvar ConditionalMinMaxValidator = (function () {\n function ConditionalMinMaxValidator() {\n }\n ConditionalMinMaxValidator.prototype.ngOnChanges = function () {\n if (!!this.control)\n this.control.updateValueAndValidity();\n };\n ConditionalMinMaxValidator.prototype.validateMinMax = function (value) {\n if ((this.validationParams.min || this.validationParams.min === 0) && value < this.validationParams.min)\n return { minFail: true };\n if ((this.validationParams.max || this.validationParams.max === 0) && value > this.validationParams.max)\n return { maxFail: true };\n return {};\n };\n ConditionalMinMaxValidator.prototype.validate = function (c) {\n this.control = c;\n var isRequired = this.validationParams.isRequired;\n var hasValue = !!c.value || c.value === 0;\n if (isRequired && !hasValue)\n return { requiredFail: true };\n if (!isRequired && !hasValue)\n return {};\n return this.validateMinMax(c.value);\n };\n __decorate([\n core_1.Input('conditional-min-max'), \n __metadata('design:type', Object)\n ], ConditionalMinMaxValidator.prototype, \"validationParams\", void 0);\n ConditionalMinMaxValidator = __decorate([\n core_1.Directive({\n selector: '[conditional-min-max]',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: ConditionalMinMaxValidator, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], ConditionalMinMaxValidator);\n return ConditionalMinMaxValidator;\n}());\nexports.ConditionalMinMaxValidator = ConditionalMinMaxValidator;\nvar ConditionalRequiredValidator = (function () {\n function ConditionalRequiredValidator() {\n }\n ConditionalRequiredValidator.prototype.ngOnChanges = function () {\n if (!!this.control)\n this.control.updateValueAndValidity();\n };\n ConditionalRequiredValidator.prototype.validate = function (c) {\n this.control = c;\n if (!this.isRequired || (!!c.value || c.value === 0))\n return {};\n return { requiredFail: true };\n };\n __decorate([\n core_1.Input('conditional-required'), \n __metadata('design:type', Boolean)\n ], ConditionalRequiredValidator.prototype, \"isRequired\", void 0);\n ConditionalRequiredValidator = __decorate([\n core_1.Directive({\n selector: '[conditional-required]',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: ConditionalRequiredValidator, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], ConditionalRequiredValidator);\n return ConditionalRequiredValidator;\n}());\nexports.ConditionalRequiredValidator = ConditionalRequiredValidator;\nvar MinValidatorDirective = (function () {\n function MinValidatorDirective() {\n }\n MinValidatorDirective.prototype.validate = function (c) {\n if (this.minValue == null && this.exclusiveMinValue == null)\n return {};\n var isExclusive = this.exclusiveMinValue != null;\n var limit = getNumber(isExclusive ? this.exclusiveMinValue : this.minValue);\n var value = getNumber(c.value);\n if (value < limit)\n return {\n 'min': { limit: limit, value: value }\n };\n if (value === limit && isExclusive)\n return {\n 'minExclusive': { limit: limit, value: value }\n };\n else\n return {};\n };\n __decorate([\n core_1.Input('min'), \n __metadata('design:type', Object)\n ], MinValidatorDirective.prototype, \"minValue\", void 0);\n __decorate([\n core_1.Input('minExclusive'), \n __metadata('design:type', Object)\n ], MinValidatorDirective.prototype, \"exclusiveMinValue\", void 0);\n MinValidatorDirective = __decorate([\n core_1.Directive({\n selector: '[min]:not([type=date]),[minExclusive]:not([type=date])',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: MinValidatorDirective, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], MinValidatorDirective);\n return MinValidatorDirective;\n}());\nexports.MinValidatorDirective = MinValidatorDirective;\nvar MaxValidatorDirective = (function () {\n function MaxValidatorDirective() {\n }\n MaxValidatorDirective.prototype.validate = function (c) {\n if (this.maxValue == null && this.exclusiveMaxValue == null)\n return {};\n var isExclusive = this.exclusiveMaxValue != null;\n var limit = getNumber(isExclusive ? this.exclusiveMaxValue : this.maxValue);\n var value = getNumber(c.value);\n if (value > limit)\n return {\n 'max': { limit: limit, value: value }\n };\n if (value === limit && isExclusive)\n return {\n 'maxExclusive': { limit: limit, value: value }\n };\n else\n return {};\n };\n __decorate([\n core_1.Input('max'), \n __metadata('design:type', Object)\n ], MaxValidatorDirective.prototype, \"maxValue\", void 0);\n __decorate([\n core_1.Input('maxExclusive'), \n __metadata('design:type', Object)\n ], MaxValidatorDirective.prototype, \"exclusiveMaxValue\", void 0);\n MaxValidatorDirective = __decorate([\n core_1.Directive({\n selector: '[max]:not([type=date]),[maxExclusive]:not([type=date])',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: MaxValidatorDirective, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], MaxValidatorDirective);\n return MaxValidatorDirective;\n}());\nexports.MaxValidatorDirective = MaxValidatorDirective;\nvar MaxDateValidatorDirective = (function () {\n function MaxDateValidatorDirective() {\n }\n MaxDateValidatorDirective.prototype.validate = function (c) {\n if (this.maxValue == null && this.exclusiveMaxValue == null)\n return {};\n var isExclusive = this.exclusiveMaxValue != null;\n var limit = moment.utc(isExclusive ? this.exclusiveMaxValue : this.maxValue);\n var value = moment.utc(c.value);\n if (value.isAfter(limit))\n return {\n 'max': { limit: limit, value: value }\n };\n if (value.isSame(limit) && isExclusive)\n return {\n 'maxExclusive': { limit: limit, value: value }\n };\n else\n return {};\n };\n __decorate([\n core_1.Input('max'), \n __metadata('design:type', Object)\n ], MaxDateValidatorDirective.prototype, \"maxValue\", void 0);\n __decorate([\n core_1.Input('maxExclusive'), \n __metadata('design:type', Object)\n ], MaxDateValidatorDirective.prototype, \"exclusiveMaxValue\", void 0);\n MaxDateValidatorDirective = __decorate([\n core_1.Directive({\n selector: '[max][type=date],[maxExclusive][type=date]',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: MaxDateValidatorDirective, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], MaxDateValidatorDirective);\n return MaxDateValidatorDirective;\n}());\nexports.MaxDateValidatorDirective = MaxDateValidatorDirective;\nvar MinDateValidatorDirective = (function () {\n function MinDateValidatorDirective() {\n }\n MinDateValidatorDirective.prototype.validate = function (c) {\n if (this.minValue == null && this.exclusiveMinValue == null)\n return {};\n var isExclusive = this.exclusiveMinValue != null;\n var limit = moment.utc(isExclusive ? this.exclusiveMinValue : this.minValue);\n var value = moment.utc(c.value);\n if (value.isBefore(limit))\n return {\n 'min': { limit: limit, value: value }\n };\n if (value.isSame(limit) && isExclusive)\n return {\n 'minExclusive': { limit: limit, value: value }\n };\n else\n return {};\n };\n __decorate([\n core_1.Input('min'), \n __metadata('design:type', Object)\n ], MinDateValidatorDirective.prototype, \"minValue\", void 0);\n __decorate([\n core_1.Input('minExclusive'), \n __metadata('design:type', Object)\n ], MinDateValidatorDirective.prototype, \"exclusiveMinValue\", void 0);\n MinDateValidatorDirective = __decorate([\n core_1.Directive({\n selector: '[min][type=date],[minExclusive][type=date]',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: MinDateValidatorDirective, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], MinDateValidatorDirective);\n return MinDateValidatorDirective;\n}());\nexports.MinDateValidatorDirective = MinDateValidatorDirective;\nvar NotBlankValidatorDirective = (function () {\n function NotBlankValidatorDirective() {\n }\n NotBlankValidatorDirective.prototype.validate = function (c) {\n if (c.value && typeof c.value === 'string') {\n if (!c.value.trim()) {\n return { 'not-blank': true };\n }\n }\n return {};\n };\n NotBlankValidatorDirective = __decorate([\n core_1.Directive({\n selector: '[not-blank][required]',\n providers: [{ provide: forms_1.NG_VALIDATORS, useExisting: NotBlankValidatorDirective, multi: true }]\n }), \n __metadata('design:paramtypes', [])\n ], NotBlankValidatorDirective);\n return NotBlankValidatorDirective;\n}());\nexports.NotBlankValidatorDirective = NotBlankValidatorDirective;\nexports.VALIDATORS = [GenericValidatorDirective, MaxValidatorDirective, MinValidatorDirective, NotBlankValidatorDirective, MinDateValidatorDirective, MaxDateValidatorDirective];\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\",\"moment/moment\":1}],65:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar common_1 = require('@angular/common');\nvar Translation = require(\"../services/translation\");\nvar LocaleDatePipe = (function () {\n function LocaleDatePipe(_translation) {\n this._translation = _translation;\n this._date = new common_1.DatePipe();\n }\n LocaleDatePipe.prototype.transform = function (value, opts) {\n var orig = value;\n if (!!value && typeof value === 'string') {\n if (/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,4})?$/.test(value))\n value += 'Z';\n value = new Date(value);\n }\n try {\n return this._date.transform(value, opts);\n }\n catch (e) {\n throw e;\n }\n };\n LocaleDatePipe = __decorate([\n core_1.Pipe({\n name: 'localeDate'\n }), \n __metadata('design:paramtypes', [Translation.ExtendedTranslateService])\n ], LocaleDatePipe);\n return LocaleDatePipe;\n}());\nexports.LocaleDatePipe = LocaleDatePipe;\n\n\n\n},{\"../services/translation\":92,\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\"}],66:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar translation_1 = require('../services/translation');\nvar LocaleIntPercentPipe = (function () {\n function LocaleIntPercentPipe(translation) {\n this.translation = translation;\n }\n LocaleIntPercentPipe.prototype.transform = function (value, pattern) {\n if (value !== 'undefined' || value !== null) {\n this.currentLocale = this.translation.getLocale();\n return new Intl.NumberFormat(this.currentLocale, this.getFractionDigits(pattern)).format(value / 100);\n }\n };\n LocaleIntPercentPipe.prototype.getFractionDigits = function (pattern) {\n if (pattern === undefined)\n return undefined;\n var fractionDigits = pattern.split('-');\n var options = {\n style: 'percent',\n minimumFractionDigits: fractionDigits[0], maximumFractionDigits: fractionDigits[1]\n };\n return options;\n };\n LocaleIntPercentPipe = __decorate([\n core_1.Pipe({\n name: 'localeIntPercent'\n }), \n __metadata('design:paramtypes', [translation_1.ExtendedTranslateService])\n ], LocaleIntPercentPipe);\n return LocaleIntPercentPipe;\n}());\nexports.LocaleIntPercentPipe = LocaleIntPercentPipe;\n\n\n\n},{\"../services/translation\":92,\"@angular/core\":\"@angular/core\"}],67:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar translation_1 = require('../services/translation');\nvar LocalePercentPipe = (function () {\n function LocalePercentPipe(translation) {\n this.translation = translation;\n }\n LocalePercentPipe.prototype.transform = function (value, pattern) {\n if (value !== 'undefined' || value !== null) {\n this.currentLocale = this.translation.getLocale();\n return new Intl.NumberFormat(this.currentLocale, this.getFractionDigits(pattern)).format(value);\n }\n };\n LocalePercentPipe.prototype.getFractionDigits = function (pattern) {\n if (pattern === undefined)\n return undefined;\n var fractionDigits = pattern.split('-');\n var options = {\n style: 'percent',\n minimumFractionDigits: fractionDigits[0], maximumFractionDigits: fractionDigits[1]\n };\n return options;\n };\n LocalePercentPipe = __decorate([\n core_1.Pipe({\n name: 'localePercent'\n }), \n __metadata('design:paramtypes', [translation_1.ExtendedTranslateService])\n ], LocalePercentPipe);\n return LocalePercentPipe;\n}());\nexports.LocalePercentPipe = LocalePercentPipe;\n\n\n\n},{\"../services/translation\":92,\"@angular/core\":\"@angular/core\"}],68:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar translation_1 = require('../services/translation');\nvar LocaleShortNumberPipe = (function () {\n function LocaleShortNumberPipe(translation) {\n this.translation = translation;\n }\n LocaleShortNumberPipe.prototype.transform = function (num, digits) {\n this.currentLocale = this.translation.getLocale();\n var units = ['K', 'M', 'B', 'T', 'P', 'E', 'Z', 'Y'];\n var decimal;\n if (num < 1000 && num > -1000)\n return num.toString();\n for (var i = units.length - 1; i >= 0; i--) {\n decimal = Math.pow(1000, i + 1);\n if (num <= -decimal || num >= decimal) {\n var currentValue = +(num / decimal).toFixed(digits);\n var localeNumber = new Intl.NumberFormat(this.currentLocale).format(currentValue);\n return localeNumber + units[i];\n }\n }\n return '0';\n };\n LocaleShortNumberPipe = __decorate([\n core_1.Pipe({ name: 'localeShortNumber' }), \n __metadata('design:paramtypes', [translation_1.ExtendedTranslateService])\n ], LocaleShortNumberPipe);\n return LocaleShortNumberPipe;\n}());\nexports.LocaleShortNumberPipe = LocaleShortNumberPipe;\n\n\n\n},{\"../services/translation\":92,\"@angular/core\":\"@angular/core\"}],69:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar CamelPipe = (function () {\n function CamelPipe() {\n }\n CamelPipe.prototype.transform = function (value) {\n if (!value || typeof value !== 'string')\n return value;\n var lastMatch = undefined;\n return value.replace(/(?:(?:[A-Z]+(?![a-z]))|\\b\\w)/g, function (letter, index) {\n var ret = (index == 0 || index === lastMatch + 1) ? letter.toLowerCase() : letter.toUpperCase();\n lastMatch = index;\n return ret;\n }).replace(/\\s+/g, '');\n };\n CamelPipe = __decorate([\n core_1.Pipe({ name: 'camelcase' }), \n __metadata('design:paramtypes', [])\n ], CamelPipe);\n return CamelPipe;\n}());\nexports.CamelPipe = CamelPipe;\nvar PascalPipe = (function () {\n function PascalPipe() {\n }\n PascalPipe.prototype.transform = function (value) {\n if (!value || typeof value !== 'string')\n return value;\n return value.replace(/(\\w)(\\w*)/g, function (g0, g1, g2) { return g1.toUpperCase() + g2.toLowerCase(); });\n };\n PascalPipe = __decorate([\n core_1.Pipe({ name: 'pascalcase' }), \n __metadata('design:paramtypes', [])\n ], PascalPipe);\n return PascalPipe;\n}());\nexports.PascalPipe = PascalPipe;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],70:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar KeysPipe = (function () {\n function KeysPipe() {\n }\n KeysPipe.prototype.transform = function (value, args) {\n var keys = [];\n for (var enumMember in value) {\n var key = parseInt(enumMember, 10);\n var isValueProperty = key >= 0;\n if (isValueProperty) {\n keys.push({ key: key, value: value[enumMember] });\n }\n }\n return keys;\n };\n KeysPipe = __decorate([\n core_1.Pipe({ name: 'enumKeys' }), \n __metadata('design:paramtypes', [])\n ], KeysPipe);\n return KeysPipe;\n}());\nexports.KeysPipe = KeysPipe;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],71:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar common_1 = require('@angular/common');\nvar FormatDatePipe = (function () {\n function FormatDatePipe() {\n this.date = new common_1.DatePipe();\n }\n FormatDatePipe.prototype.transform = function (value, opts) {\n try {\n return this.date.transform(value, opts);\n }\n catch (e) {\n throw e;\n }\n };\n FormatDatePipe = __decorate([\n core_1.Pipe({\n name: 'formatDate'\n }), \n __metadata('design:paramtypes', [])\n ], FormatDatePipe);\n return FormatDatePipe;\n}());\nexports.FormatDatePipe = FormatDatePipe;\n\n\n\n},{\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\"}],72:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar common_1 = require('@angular/common');\nvar IntPercentPipe = (function () {\n function IntPercentPipe() {\n this._percent = new common_1.PercentPipe();\n }\n IntPercentPipe.prototype.transform = function (value, digits) {\n if (value === undefined)\n return undefined;\n return this._percent.transform(value / 100, digits);\n };\n IntPercentPipe = __decorate([\n core_1.Pipe({ name: 'intPercent' }), \n __metadata('design:paramtypes', [])\n ], IntPercentPipe);\n return IntPercentPipe;\n}());\nexports.IntPercentPipe = IntPercentPipe;\n\n\n\n},{\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\"}],73:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar common_1 = require('@angular/common');\nfunction pad(num, size) {\n var s = \"000000000\" + num;\n return s.substr(s.length - size);\n}\nvar IsoDateOnlyPipe = (function () {\n function IsoDateOnlyPipe() {\n this._date = new common_1.DatePipe();\n }\n IsoDateOnlyPipe.prototype.transform = function (value, opts) {\n var orig = value;\n if (!!value && typeof value === 'string') {\n var str = value;\n value = new Date(str);\n }\n var date = value;\n if (!date)\n return null;\n return this._date.transform(date, opts);\n };\n IsoDateOnlyPipe = __decorate([\n core_1.Pipe({ name: 'dateOnly' }), \n __metadata('design:paramtypes', [])\n ], IsoDateOnlyPipe);\n return IsoDateOnlyPipe;\n}());\nexports.IsoDateOnlyPipe = IsoDateOnlyPipe;\n\n\n\n},{\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\"}],74:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar translation_1 = require('../services/translation');\nvar LocaleNumberPipe = (function () {\n function LocaleNumberPipe(translation) {\n this.translation = translation;\n }\n LocaleNumberPipe.prototype.transform = function (value, pattern) {\n if (value == \"\" || value === undefined)\n return 0;\n if (value !== 'undefined' || value !== null || !isNaN(value)) {\n this.currentLocale = this.translation.getLocale();\n var ouput = new Intl.NumberFormat(this.currentLocale, this.getFractionDigits(pattern)).format(value);\n return ouput;\n }\n else {\n return '';\n }\n };\n LocaleNumberPipe.prototype.getFractionDigits = function (pattern) {\n if (pattern === undefined)\n return undefined;\n var fractionDigits = pattern.split('-');\n var options = {\n minimumFractionDigits: fractionDigits[0], maximumFractionDigits: fractionDigits[1]\n };\n return options;\n };\n LocaleNumberPipe = __decorate([\n core_1.Pipe({\n name: 'localeNumber'\n }), \n __metadata('design:paramtypes', [translation_1.ExtendedTranslateService])\n ], LocaleNumberPipe);\n return LocaleNumberPipe;\n}());\nexports.LocaleNumberPipe = LocaleNumberPipe;\n\n\n\n},{\"../services/translation\":92,\"@angular/core\":\"@angular/core\"}],75:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar translation_1 = require('../services/translation');\nvar core_1 = require('@angular/core');\nvar LocaleOrdinalPipe = (function () {\n function LocaleOrdinalPipe(lang) {\n this.lang = lang;\n }\n LocaleOrdinalPipe.prototype.getSuffix = function (currentLanguage, last, specialLast) {\n switch (currentLanguage) {\n case \"fr\":\n if (last === 1 && specialLast !== 11)\n return 'er';\n else\n return 'ème';\n case \"pt\":\n return 'º';\n case \"es\":\n if (last === 1 && specialLast !== 11)\n return 'er';\n else if (last === 2 && specialLast !== 12)\n return 'do';\n else if (last === 3 && specialLast !== 13)\n return 'er';\n else\n return 'to';\n case \"zh\":\n return '第';\n case \"de\":\n return '.';\n default:\n if (last === 1 && specialLast !== 11)\n return 'st';\n else if (last === 2 && specialLast !== 12)\n return 'nd';\n else if (last === 3 && specialLast !== 13)\n return 'rd';\n else\n return 'th';\n }\n };\n LocaleOrdinalPipe.prototype.transform = function (value) {\n var currentLanguage = this.lang.currentLang || \"en\";\n if (value == null)\n return null;\n value = Math.round(value);\n var suffix = '';\n var abs = Math.abs(value);\n var last = abs % 10;\n var specialLast = abs % 100;\n suffix = this.getSuffix(currentLanguage, last, specialLast);\n return value + suffix;\n };\n LocaleOrdinalPipe = __decorate([\n core_1.Pipe({\n name: 'localeOrdinal'\n }), \n __metadata('design:paramtypes', [translation_1.TranslateService])\n ], LocaleOrdinalPipe);\n return LocaleOrdinalPipe;\n}());\nexports.LocaleOrdinalPipe = LocaleOrdinalPipe;\n\n\n\n},{\"../services/translation\":92,\"@angular/core\":\"@angular/core\"}],76:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar OrdinalPipe = (function () {\n function OrdinalPipe() {\n }\n OrdinalPipe.prototype.transform = function (value) {\n if (value == null)\n return null;\n value = Math.round(value);\n var suffix = '';\n var abs = Math.abs(value);\n var last = abs % 10;\n var specialLast = abs % 100;\n if (last === 1 && specialLast !== 11) {\n suffix = 'st';\n }\n else if (last === 2 && specialLast !== 12) {\n suffix = 'nd';\n }\n else if (last === 3 && specialLast !== 13) {\n suffix = 'rd';\n }\n else {\n suffix = 'th';\n }\n return value + suffix;\n };\n OrdinalPipe = __decorate([\n core_1.Pipe({\n name: 'ordinal'\n }), \n __metadata('design:paramtypes', [])\n ], OrdinalPipe);\n return OrdinalPipe;\n}());\nexports.OrdinalPipe = OrdinalPipe;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],77:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar common_1 = require('@angular/common');\nvar SafeDatePipe = (function () {\n function SafeDatePipe() {\n this._date = new common_1.DatePipe();\n }\n SafeDatePipe.prototype.transform = function (value, opts) {\n var orig = value;\n if (!!value && typeof value === 'string') {\n if (/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,4})?$/.test(value))\n value += 'Z';\n value = new Date(value);\n }\n try {\n return this._date.transform(value, opts);\n }\n catch (e) {\n debugger;\n throw e;\n }\n };\n SafeDatePipe = __decorate([\n core_1.Pipe({ name: 'date' }), \n __metadata('design:paramtypes', [])\n ], SafeDatePipe);\n return SafeDatePipe;\n}());\nexports.SafeDatePipe = SafeDatePipe;\n\n\n\n},{\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\"}],78:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar ShortNumberPipe = (function () {\n function ShortNumberPipe() {\n }\n ShortNumberPipe.prototype.transform = function (num, digits) {\n var units = ['K', 'M', 'B', 'T', 'P', 'E', 'Z', 'Y'];\n var decimal;\n if (num < 1000 && num > -1000)\n return num.toString();\n for (var i = units.length - 1; i >= 0; i--) {\n decimal = Math.pow(1000, i + 1);\n if (num <= -decimal || num >= decimal) {\n return +(num / decimal).toFixed(digits) + units[i];\n }\n }\n return '0';\n };\n ShortNumberPipe = __decorate([\n core_1.Pipe({ name: 'shortNumber' }), \n __metadata('design:paramtypes', [])\n ], ShortNumberPipe);\n return ShortNumberPipe;\n}());\nexports.ShortNumberPipe = ShortNumberPipe;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],79:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar _NUMBER_MATCH_REGEXP = /-?\\d+(\\.\\d+)?/;\nvar ThresholdPipe = (function () {\n function ThresholdPipe() {\n }\n ThresholdPipe.prototype.transform = function (value, options) {\n if (options == null)\n return value;\n if (value == null)\n return null;\n var origValue = value;\n if (typeof value === 'string') {\n value = value.replace(/,| /g, \"\");\n var match_1 = _NUMBER_MATCH_REGEXP.exec(value);\n if (!match_1) {\n return null;\n }\n value = parseFloat(match_1[0]);\n }\n if (isNaN(value)) {\n return null;\n }\n var match = options.find(function (o) { return (o.lowerBound == null || o.lowerBound < value) && (o.upperBound == null || o.upperBound > value) && !o.default; }) || options.find(function (o) { return o.default; });\n if (match)\n return match.text;\n else\n return origValue;\n };\n ThresholdPipe = __decorate([\n core_1.Pipe({\n name: 'threshold'\n }), \n __metadata('design:paramtypes', [])\n ], ThresholdPipe);\n return ThresholdPipe;\n}());\nexports.ThresholdPipe = ThresholdPipe;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],80:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar counter = 1;\nvar map = new WeakMap();\nvar UniqueIdPipe = (function () {\n function UniqueIdPipe() {\n }\n UniqueIdPipe.prototype.transform = function (value) {\n var val = map.get(value);\n if (!val) {\n val = counter++;\n map.set(value, val);\n }\n return val;\n };\n UniqueIdPipe = __decorate([\n core_1.Pipe({ name: 'uniqueId' }), \n __metadata('design:paramtypes', [])\n ], UniqueIdPipe);\n return UniqueIdPipe;\n}());\nexports.UniqueIdPipe = UniqueIdPipe;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],81:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar translation_1 = require('../services/translation');\nvar YesNoPipe = (function () {\n function YesNoPipe(translate, cdr) {\n this.innerPipe = new translation_1.TranslatePipe(translate, cdr);\n }\n YesNoPipe.prototype.transform = function (value) {\n if (!!value)\n return this.innerPipe.transform('GLOBAL.YES');\n else\n return this.innerPipe.transform('GLOBAL.NO');\n };\n YesNoPipe = __decorate([\n core_1.Pipe({ name: 'yesno', pure: false }), \n __metadata('design:paramtypes', [translation_1.TranslateService, core_1.ChangeDetectorRef])\n ], YesNoPipe);\n return YesNoPipe;\n}());\nexports.YesNoPipe = YesNoPipe;\n\n\n\n},{\"../services/translation\":92,\"@angular/core\":\"@angular/core\"}],82:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar LanguageFormatterService = (function () {\n function LanguageFormatterService() {\n this.languageNumberDecoratores = {};\n this.setupLanguageNumberDecoratores();\n }\n LanguageFormatterService.prototype.formatDisplayValue = function (dispalyValue, currentlocale) {\n if (dispalyValue) {\n if (this.languageNumberDecoratores['comma'].findIndex(function (x) { return x === currentlocale; }) > -1) {\n dispalyValue = dispalyValue.replace(/,| /g, '');\n dispalyValue = dispalyValue.replace(/\\s/g, '');\n }\n if (this.languageNumberDecoratores['space'].findIndex(function (x) { return x === currentlocale; }) > -1) {\n dispalyValue = dispalyValue.replace(/\\s/g, '');\n dispalyValue = dispalyValue.replace(/,| /, '.');\n }\n if (this.languageNumberDecoratores['dot'].findIndex(function (x) { return x === currentlocale; }) > -1) {\n dispalyValue = dispalyValue.replace(/\\./g, '');\n dispalyValue = dispalyValue.replace(/,| /, '.');\n }\n return dispalyValue;\n }\n else\n return;\n };\n LanguageFormatterService.prototype.getFormattedNumber = function (displayText, locale) {\n if (displayText.indexOf('%') > -1) {\n displayText = displayText.replace(/%| /, \"\");\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: 1\n }).format(Number(displayText / 100));\n }\n else {\n if (displayText === \"\")\n return \"\";\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: 0\n }).format(Number(displayText));\n }\n };\n LanguageFormatterService.prototype.removeFormatting = function (displayText) {\n displayText = displayText.replace(/,| /g, \"\");\n displayText = displayText.replace(/\\s/g, '');\n return displayText;\n };\n LanguageFormatterService.prototype.getPlatformSupportedLanguages = function () {\n return [\n { code: \"en\", displayName: \"English\" },\n { code: \"fr\", displayName: \"Français\" },\n { code: \"es\", displayName: \"Español\" },\n { code: \"zh\", displayName: \"普通话\" },\n { code: \"pt\", displayName: \"Português\" },\n { code: \"de\", displayName: \"Deutsch\" }\n ];\n };\n LanguageFormatterService.prototype.getFormattedLangugageCode = function () {\n return [\n { code: \"en\", langCode: \"en-US\" },\n { code: \"fr\", langCode: \"fr-FR\" },\n { code: \"es\", langCode: \"es-ES\" },\n { code: \"zh\", langCode: \"zh-CN\" },\n { code: \"pt\", langCode: \"pt-PT\" },\n { code: \"de\", langCode: \"de-DE\" }\n ];\n };\n LanguageFormatterService.prototype.setupLanguageNumberDecoratores = function () {\n this.languageNumberDecoratores['comma'] = ['en', 'zh-CN', 'en-US'];\n this.languageNumberDecoratores['space'] = ['fr', 'fr-FR', 'pt-PT'];\n this.languageNumberDecoratores['dot'] = ['es', 'es-ES', 'de', 'de-DE'];\n };\n LanguageFormatterService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [])\n ], LanguageFormatterService);\n return LanguageFormatterService;\n}());\nexports.LanguageFormatterService = LanguageFormatterService;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],83:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar configService_1 = require('./configService');\nvar clientService_1 = require('./clientService');\nvar siteHeaderService_1 = require('./siteHeaderService');\nvar userService_1 = require('./userService');\nvar ApplicationInsightsService = (function () {\n function ApplicationInsightsService(_clients, _user, _siteHeaderService, _configService) {\n this._clients = _clients;\n this._user = _user;\n this._siteHeaderService = _siteHeaderService;\n this._configService = _configService;\n this.appInsights = window[\"appInsights\"];\n }\n ApplicationInsightsService.prototype.config = function (instrumentationKey) {\n this.configImpl(instrumentationKey);\n };\n ApplicationInsightsService.prototype.configImpl = function (instrumentationKey) {\n this.appInsights.config.instrumentationKey = instrumentationKey;\n };\n ApplicationInsightsService.prototype.send = function (analyticsSendInput, isRunIdRequired) {\n if (isRunIdRequired === void 0) { isRunIdRequired = true; }\n if (!analyticsSendInput.eventAction)\n throw new Error('eventAction property is empty');\n if (isRunIdRequired && !analyticsSendInput.runId)\n throw new Error('runId property is empty');\n this.sendImpl(analyticsSendInput);\n };\n ApplicationInsightsService.prototype.sendImpl = function (analyticsSendInput) {\n var eventCategory = analyticsSendInput.eventCategory || this._siteHeaderService.pageList[this._siteHeaderService.index].identifier;\n var paramsObj = {\n eventCategory: eventCategory,\n eventAction: analyticsSendInput.eventAction\n };\n var eventLabel = {\n ClientID: this._clients.currentClient ? this._clients.currentClient.clientId : '',\n ClientName: this._clients.currentClient ? this._clients.currentClient.displayName : '',\n UserUpn: this._user.currentUserInfo ? this._user.currentUserInfo.username : '',\n UserDisplayName: this._user.currentUserInfo ? this._user.currentUserInfo.fullName : '',\n RunId: analyticsSendInput.runId\n };\n if (analyticsSendInput.addtionalFields)\n Object.assign(eventLabel, analyticsSendInput.addtionalFields);\n paramsObj['eventLabel'] = JSON.stringify(eventLabel);\n this.appInsights.trackEvent({ name: eventCategory }, paramsObj);\n };\n ApplicationInsightsService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [clientService_1.ClientService, userService_1.UserService, siteHeaderService_1.SiteHeaderService, configService_1.ConfigService])\n ], ApplicationInsightsService);\n return ApplicationInsightsService;\n}());\nexports.ApplicationInsightsService = ApplicationInsightsService;\n\n\n\n},{\"./clientService\":84,\"./configService\":85,\"./siteHeaderService\":91,\"./userService\":93,\"@angular/core\":\"@angular/core\"}],84:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar Api = require('../backend/webapis');\nvar rx_1 = require('rxjs');\nvar ClientService = (function () {\n function ClientService(_api) {\n this._api = _api;\n this.currentClientChanged = new rx_1.ReplaySubject(1);\n this.runCountChanged = new rx_1.Subject();\n }\n Object.defineProperty(ClientService.prototype, \"currentClient\", {\n get: function () {\n return this._currentClient;\n },\n set: function (value) {\n this._currentClient = value;\n if (value)\n this.currentClientChanged.next(value);\n },\n enumerable: true,\n configurable: true\n });\n ClientService.prototype.getDetails = function (id) {\n return this._api.getDetails(id).map(function (r) { return r.data; });\n };\n ClientService.prototype.loadById = function (id) {\n var _this = this;\n var obs = this._api.get(id).uiSignal('load client');\n obs.subscribe(function (ret) { return _this.currentClient = ret.data; });\n return obs.map(function (ret) { return ret.data; });\n };\n ClientService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [Api.ClientsProxy])\n ], ClientService);\n return ClientService;\n}());\nexports.ClientService = ClientService;\n\n\n\n},{\"../backend/webapis\":17,\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],85:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar core_1 = require('@angular/core');\nvar Api = require('../backend/webapis');\nvar rx_1 = require('rxjs');\nvar ConfigService = (function () {\n function ConfigService(settings, _settingsApi) {\n var _this = this;\n this._settingsApi = _settingsApi;\n this.currentModelChanged = new rx_1.ReplaySubject(1);\n this.settings = new rx_1.ReplaySubject();\n this.models = settings.models;\n this._subdomain = settings.subdomain;\n this._settingsApi.get().subscribe(function (ret) { return _this.settings.next(ret.data); });\n }\n Object.defineProperty(ConfigService.prototype, \"currentModel\", {\n get: function () {\n return this._currentModel;\n },\n set: function (value) {\n this._currentModel = value;\n this.currentModelChanged.next(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ConfigService.prototype, \"subdomain\", {\n get: function () { return this._subdomain; },\n enumerable: true,\n configurable: true\n });\n ConfigService = __decorate([\n core_1.Injectable(),\n __param(0, core_1.Inject(\"models\")), \n __metadata('design:paramtypes', [Object, Api.SettingsProxy])\n ], ConfigService);\n return ConfigService;\n}());\nexports.ConfigService = ConfigService;\n\n\n\n},{\"../backend/webapis\":17,\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],86:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar router_1 = require('@angular/router');\nvar rx_1 = require('rxjs');\nvar common_1 = require('@angular/common');\nvar translation_1 = require('./translation');\nvar configService_1 = require('./configService');\nvar siteHeaderService_1 = require('./siteHeaderService');\nvar runService_1 = require('./runService');\nvar backend_1 = require('../../backend');\nvar interfaces_1 = require('../../interfaces');\nrequire('rxjs');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar NavigationService = (function () {\n function NavigationService(_runService, _toastr, _router, config, _location, injector, _translate, _errorProxy, _headerServiceTEMPORARY) {\n var _this = this;\n this._runService = _runService;\n this._toastr = _toastr;\n this._router = _router;\n this.config = config;\n this._location = _location;\n this.injector = injector;\n this._translate = _translate;\n this._errorProxy = _errorProxy;\n this._headerServiceTEMPORARY = _headerServiceTEMPORARY;\n this.navigationChanged = new rx_1.ReplaySubject(1);\n this._runService.activeRun.subscribe(function (run) {\n _this.currentRun = run;\n });\n }\n NavigationService.prototype.triggerNavigationAction = function (navigationAction, stage, hideOverlay) {\n var _this = this;\n if (navigationAction.type == backend_1.Dto.NavigationType.persist && this.currentRun) {\n return this._runService.persist(this.currentRun.runId, this.currentRun.data, this.currentRun.currencyInfo, stage, hideOverlay).do(function () { return _this._toastr.success(_this._translate.instant('GLOBAL.TOASTS.SAVED')); }).toPromise().then(function (r) { return !!r; });\n }\n if (navigationAction.type == backend_1.Dto.NavigationType.persistAndProcess && this.currentRun) {\n return this._runService.persist(this.currentRun.runId, this.currentRun.data, this.currentRun.currencyInfo, stage, hideOverlay, navigationAction.processUrl).do(function () { return _this._toastr.success(_this._translate.instant('GLOBAL.TOASTS.SAVED')); }).toPromise().then(function (r) { return !!r; });\n }\n else if (navigationAction.type == backend_1.Dto.NavigationType.persistAndExecute && this.currentRun && navigationAction.trigger !== undefined) {\n var param = navigationAction.trigger;\n if (!!navigationAction.triggerParameter)\n param = { number: navigationAction.trigger, param: navigationAction.triggerParameter };\n return this._runService.executeTrigger(this.currentRun.runId, this.currentRun.data, param, this.currentRun.currencyInfo, stage, hideOverlay).do(function () { return _this._toastr.success(_this._translate.instant('GLOBAL.TOASTS.SAVED')); }).toPromise().then(function (r) { return !!r; });\n }\n else\n return null;\n };\n NavigationService.prototype.navigate = function (params) {\n var _this = this;\n this._headerServiceTEMPORARY.navigation.inProgress = params.offset;\n var target = params.originalIndex + params.offset;\n var backUrl = params.router.url;\n var currentStage = this._runService.getStageIdentifier(params.level);\n var prevInstruction = params.pageList[params.originalIndex];\n var nextInstruction = params.pageList[target];\n var runServiceInteraction = function (hideOverlay) { return function (ret) {\n if (ret && params.offset === interfaces_1.NavigationDirection.forward && !_this.currentRun.info.isReadonly) {\n var prepare = Promise.resolve(true);\n if (params.originalIndex === 0)\n prepare = _this._runService.updateStage(_this.currentRun.runId, currentStage).toPromise().then(function (r) { return !!r; });\n var forwardNextStage_1 = currentStage.split('/').reduce(function (acc, item, index, list) { return acc.concat([index == list.length - 1 ? nextInstruction.identifier : item]); }, []).join('/');\n return prepare.then(function () {\n if (prevInstruction.onForwardNavigation) {\n var runServicePromise = _this.triggerNavigationAction(prevInstruction.onForwardNavigation, forwardNextStage_1, hideOverlay);\n if (!!runServicePromise)\n return runServicePromise;\n }\n else {\n return _this._runService.updateStage(_this.currentRun.runId, forwardNextStage_1).toPromise().then(function (r) { return !!r; });\n }\n });\n }\n return Promise.resolve(ret);\n }; };\n var moveToTarget = function (ret) { return ret ? params.router.navigate([params.pageList[target].identifier], { relativeTo: params.relativeTo }) : Promise.resolve(false); };\n var moveToLoader = function (ret) { return ret ? params.router.navigate(['~loading', prevInstruction.identifier], { relativeTo: params.relativeTo })\n .then(function (ret) {\n if (!ret)\n return false;\n _this.navigationChanged.next(backUrl);\n _this._location.replaceState(backUrl);\n return true;\n })\n : Promise.resolve(false); };\n var moveToBlank = function (ret) { return ret ? params.router.navigate(['~inProgress'], { relativeTo: params.relativeTo })\n .then(function (ret) {\n if (!ret)\n return false;\n _this.navigationChanged.next(backUrl);\n _this._location.replaceState(backUrl);\n return true;\n })\n : Promise.resolve(false); };\n var op;\n if (params.offset == interfaces_1.NavigationDirection.forward && prevInstruction.onForwardNavigation && prevInstruction.onForwardNavigation.loadingScreenItems)\n op = moveToLoader(true).then(runServiceInteraction(true)).then(moveToTarget);\n else\n op = moveToBlank(true).then(runServiceInteraction(false)).then(moveToTarget);\n return op.catch(function (err) {\n if (err && err.message && err.stack) {\n var originalException = core_1.ExceptionHandler.exceptionToString(err.message, err.stack);\n _this._errorProxy.error({\n text: originalException\n }).fireAndForget();\n console.error(originalException);\n }\n _this._headerServiceTEMPORARY.navigation.inProgress = undefined;\n params.router.navigate([params.pageList[params.originalIndex].identifier], { relativeTo: params.relativeTo }).then(function (err) { return _this._toastr.error(_this._translate.instant('GLOBAL.TOASTS.NAVIGATION_ERROR')); });\n }).then(function () { _this._headerServiceTEMPORARY.navigation.inProgress = undefined; });\n };\n NavigationService.prototype.navigateByUrl = function (url) {\n this.navigationChanged.next(url);\n this._router.navigateByUrl(url);\n };\n NavigationService.prototype.canNavigateTo = function (input) {\n if (input.runModel.info.isReadonly)\n return { canNavigate: true };\n var level = input.path.length;\n var stageData = input.runModel.info.stage;\n var history = [];\n if (stageData && stageData.startsWith(\"history:\")) {\n history = stageData.substr(\"history:\".length).split(';');\n }\n var parent = null;\n var list = this.config.currentModel.runPages;\n var isUnordered = false;\n var _loop_1 = function(i) {\n var index = list.findIndex(function (r) { return r.identifier == input.path[i]; });\n if (index === -1)\n throw input.path[i] + \" not found in run page hierarchy\";\n parent = list[index];\n list = parent.children || [];\n isUnordered = parent.unorderedChildren;\n };\n for (var i = 0; i < level; i++) {\n _loop_1(i);\n }\n var currentIndex = list.findIndex(function (r) { return r.identifier == input.targetIdentifier; });\n if (currentIndex === -1)\n throw input.targetIdentifier + \" not found in run page hierarchy\";\n if (isUnordered)\n return this.customCanNavigateCheck(list[currentIndex], input) || { canNavigate: true };\n var prefix = input.path.length ? input.path.join(\"/\") + '/' : '';\n var cnt = 0;\n if (currentIndex == 0) {\n var customRuleCheck = this.customCanNavigateCheck(list[0], { path: input.path, runModel: input.runModel, targetIdentifier: list[0].identifier });\n if (customRuleCheck && !customRuleCheck.canNavigate) {\n return {\n canNavigate: false, toastResource: customRuleCheck.toastResource\n };\n }\n }\n else {\n var _loop_2 = function(ix) {\n var ident = prefix + list[ix].identifier;\n var previous = prefix + (ix && list[ix - 1].identifier || \"\");\n cnt = history.indexOf(ident, cnt);\n if (cnt === -1) {\n return { value: { canNavigate: false, alternativeIdentifier: previous } };\n }\n else if (history.some(function (item, h_index) { return item.startsWith(ident + '/') && h_index > cnt; })) {\n return { value: { canNavigate: false, alternativeIdentifier: previous } };\n }\n if (ix > 0) {\n var customRuleCheck = this_1.customCanNavigateCheck(list[ix], { path: input.path, runModel: input.runModel, targetIdentifier: list[ix].identifier });\n if (customRuleCheck && !customRuleCheck.canNavigate) {\n return { value: {\n canNavigate: false, alternativeIdentifier: previous, toastResource: customRuleCheck.toastResource\n } };\n }\n }\n };\n var this_1 = this;\n for (var ix = 0; ix <= currentIndex; ix++) {\n var state_2 = _loop_2(ix);\n if (typeof state_2 === \"object\") return state_2.value;\n }\n }\n return { canNavigate: true };\n };\n NavigationService.prototype.customCanNavigateCheck = function (description, request) {\n var type = description.$$module[\"CanNavigateTo\"];\n if (!type)\n return null;\n var instance = this.injector.get(type);\n return instance.canNavigateTo(request);\n };\n NavigationService.prototype.getCurrentPath = function () {\n return this._router.url.split('/').slice(3).join('/');\n };\n NavigationService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [runService_1.RunService, ng2_toastr_1.ToastsManager, router_1.Router, configService_1.ConfigService, common_1.Location, core_1.Injector, translation_1.TranslateService, backend_1.Api.ErrorProxy, siteHeaderService_1.SiteHeaderService])\n ], NavigationService);\n return NavigationService;\n}());\nexports.NavigationService = NavigationService;\n\n\n\n},{\"../../backend\":\"@toolkit/backend\",\"../../interfaces\":\"@toolkit/interfaces\",\"./configService\":85,\"./runService\":89,\"./siteHeaderService\":91,\"./translation\":92,\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"ng2-toastr\":\"ng2-toastr\",\"rxjs\":\"rxjs\"}],87:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar rx_1 = require('rxjs');\nvar router_1 = require('@angular/router');\nvar runService_1 = require('./runService');\nvar navigationService_1 = require('./navigationService');\nvar configService_1 = require('./configService');\nvar PageService = (function () {\n function PageService(_configService, _runService, _navigationService, _router) {\n var _this = this;\n this._configService = _configService;\n this._runService = _runService;\n this._navigationService = _navigationService;\n this._router = _router;\n this.pageStateChanged = new rx_1.ReplaySubject(1);\n this.pages = [];\n this._configService.currentModelChanged\n .subscribe(function (data) {\n _this.pageList = data.runPages;\n _this._runService.activeRun.subscribe(function (runModel) {\n _this.runModel = runModel;\n _this.pages = _this.buildRunPages(_this.runModel);\n _this.pageStateChanged.next(_this.pages);\n });\n });\n this._router.events.filter(function (o) { return o instanceof router_1.NavigationEnd; })\n .sampleTime(500)\n .subscribe(function (e) {\n if (e.urlAfterRedirects.indexOf('~inProgress') === -1)\n _this.pages = _this.buildRunPages(_this.runModel);\n _this.pageStateChanged.next(_this.pages);\n });\n }\n PageService.prototype.buildRunPages = function (runModel, pageList) {\n if (pageList === void 0) { pageList = this.pageList; }\n if (!runModel)\n return [];\n var pageUrls = this.buildPageLinks(runModel.runId, pageList, \"\", this._navigationService.getCurrentPath(), 1);\n this.populateNavigatablePages(runModel, pageUrls);\n return pageUrls;\n };\n PageService.prototype.populateNavigatablePages = function (runModel, pageLinks, canParentNavigatable) {\n var _this = this;\n pageLinks.map(function (pl) {\n if (canParentNavigatable === false)\n pl.canNavigate = false;\n else {\n var full = pl.url.split('/').slice(2);\n pl.canNavigate = _this._navigationService.canNavigateTo({\n path: full.slice(0, full.length - 1),\n runModel: runModel,\n targetIdentifier: full[full.length - 1]\n })\n .canNavigate;\n }\n if (pl.children && pl.children.length > 0)\n _this.populateNavigatablePages(runModel, pl.children, pl.canNavigate);\n });\n };\n PageService.prototype.buildPageLinks = function (activeRunId, runPages, path, currentPath, level, prefix) {\n var _this = this;\n if (prefix === void 0) { prefix = null; }\n prefix = prefix || \"CURRENT_MODEL.RUN_PAGES.PAGE\";\n return runPages.map(function (x, index) {\n var pagelink = {\n displayTitle: x.displayTitle,\n identifier: x.identifier,\n url: path === '' ? \"run/\" + activeRunId + \"/\" + x.identifier : \"run/\" + activeRunId + \"/\" + path + \"/\" + x.identifier,\n canNavigate: false,\n current: currentPath === (path === '' ? x.identifier : path + '/' + x.identifier),\n visible: false,\n level: level,\n displayResourceKey: prefix + \"_\" + index\n };\n if (x.children && x.children.length > 0) {\n pagelink.children = _this.buildPageLinks(activeRunId, x.children, path === '' ? x.identifier : path + \"/\" + x.identifier, currentPath, level + 1, pagelink.displayResourceKey);\n pagelink.ancestorOfCurrent = pagelink.children.some(function (c) { return c.current || c.ancestorOfCurrent; });\n }\n return pagelink;\n });\n };\n PageService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [configService_1.ConfigService, runService_1.RunService, navigationService_1.NavigationService, router_1.Router])\n ], PageService);\n return PageService;\n}());\nexports.PageService = PageService;\n\n\n\n},{\"./configService\":85,\"./navigationService\":86,\"./runService\":89,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"rxjs\":\"rxjs\"}],88:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar ReferenceTranslationService = (function () {\n function ReferenceTranslationService() {\n this.refDataTranslation = {};\n }\n ReferenceTranslationService.prototype.setRefDataTranslation = function (translation) {\n var _this = this;\n this.refDataTranslation = {};\n Object.keys(translation).forEach(function (c) {\n _this.refDataTranslation[c.toUpperCase()] = translation[c];\n });\n };\n ReferenceTranslationService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [])\n ], ReferenceTranslationService);\n return ReferenceTranslationService;\n}());\nexports.ReferenceTranslationService = ReferenceTranslationService;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],89:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar Api = require('../backend/webapis');\nvar rx_1 = require('rxjs');\nvar translation_1 = require('./translation');\nvar configService_1 = require('./configService');\nvar router_1 = require('@angular/router');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar RunService = (function () {\n function RunService(_runs, _config, _translate, _toastr, _router) {\n var _this = this;\n this._runs = _runs;\n this._config = _config;\n this._translate = _translate;\n this._toastr = _toastr;\n this._router = _router;\n this._runInfoChanged = new rx_1.Subject();\n this._persisted = new rx_1.Subject();\n this.currencyConverted = new rx_1.Subject();\n this._activeRun = new rx_1.ReplaySubject(1);\n this._activeRunObs = this._activeRun.do(function (run) {\n _this.snapshot = run;\n });\n this.runInfoChanged = this._runInfoChanged;\n this.persisted = this._persisted;\n var lastSnapshot = null;\n var cancelled = [];\n this._router.events.filter(function (o) { return o instanceof router_1.NavigationStart; }).subscribe(function (o) {\n lastSnapshot = _this.snapshot;\n var match = /\\/run\\/(\\d+)/.exec(o.url);\n if (match) {\n var runId = parseInt(match[1]);\n if (!_this.snapshot || _this.snapshot.info.runId !== runId)\n _this.load(runId);\n }\n });\n this._router.events.filter(function (o) { return o instanceof router_1.NavigationEnd; }).subscribe(function (o) {\n if (cancelled.indexOf(o.id) > -1)\n return;\n var match = /\\/run\\/(\\d+)/.exec(o.url);\n if (!match)\n _this.snapshot = null;\n });\n this._router.events.filter(function (o) { return o instanceof router_1.NavigationCancel; }).subscribe(function (o) {\n _this.snapshot = lastSnapshot;\n cancelled.push(o.id);\n });\n }\n RunService.prototype.load = function (id) {\n var _this = this;\n var obs = this._runs.get(id).uiSignal('load run').share();\n obs.subscribe(function (ret) { return _this._activeRun.next(ret.data); }, function (err) {\n if (err.status === 403 || err.status === 404) {\n _this._router.navigate(['/']);\n _this._translate.get('GLOBAL.TOASTS.RUN_UNAVAILABLE').subscribe(function (o) { return _this._toastr.error(o); });\n }\n else\n throw err;\n });\n return obs;\n };\n Object.defineProperty(RunService.prototype, \"activeRun\", {\n get: function () {\n return this._activeRunObs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RunService.prototype, \"isReadonly\", {\n get: function () {\n return !this.snapshot || this.snapshot.info.isReadonly;\n },\n enumerable: true,\n configurable: true\n });\n RunService.prototype.getSnapshot = function () {\n return this.snapshot;\n };\n RunService.prototype.setSnapshot = function (val) {\n this.snapshot = val;\n };\n RunService.prototype.getStageIdentifier = function (level) {\n if (level === void 0) { level = 99; }\n var find = new RegExp(\"/run/\\\\d+/(([^/]+/){0,\" + level + \"}[^/]+)\").exec(this._router.url);\n return find && find[1];\n };\n RunService.prototype.persist = function (id, data, currencyInfo, stageOverride, noSignal, processAction) {\n var _this = this;\n var obs = this._runs.updateRunJson(id, {\n runId: id,\n modelName: this._config.currentModel.modelName,\n runModelData: data,\n processAction: processAction,\n stage: stageOverride || this.getStageIdentifier(),\n currencyInfo: currencyInfo\n })\n .do(function (r) {\n if (_this.snapshot) {\n if (r.data.processedModel) {\n _this.snapshot = r.data.processedModel;\n _this._activeRun.next(r.data.processedModel);\n }\n else {\n _this.snapshot.info.stage = r.data.stage;\n _this.snapshot.options = r.data.runOptions;\n _this._persisted.next(_this.snapshot);\n _this._runInfoChanged.next(_this.snapshot.info);\n }\n }\n })\n .map(function (r) { return r.data.id; });\n if (!noSignal)\n obs = obs.uiSignal({ debugInfo: 'persist run', uiLabel: this._translate.instant('GLOBAL.BUSY.PERSISTING') });\n obs = obs.share();\n obs.fireAndForget();\n return obs.delay(10);\n };\n RunService.prototype.executeTrigger = function (id, data, trigger, currencyInfo, stageOverride, noSignal) {\n var _this = this;\n var triggerNo = -1;\n var triggerParam = '';\n if (typeof trigger === 'number') {\n triggerNo = trigger;\n }\n else {\n triggerNo = trigger.number;\n triggerParam = trigger.param;\n }\n var obs = this._runs.execute(id, {\n runId: id,\n triggerNo: triggerNo,\n triggerParam: triggerParam,\n modelName: this._config.currentModel.modelName,\n runModelData: data,\n stage: stageOverride || this.getStageIdentifier(),\n currencyInfo: currencyInfo\n })\n .map(function (r) { return r.data; });\n if (!noSignal)\n obs = obs.uiSignal({ debugInfo: this._translate.instant('GLOBAL.BUSY.TRIGGER') + trigger, uiLabel: this._translate.instant('GLOBAL.BUSY.EXECUTING') });\n obs = obs.share();\n obs.subscribe(function (ret) { return _this._activeRun.next(ret); }, function () { }, function () { });\n return obs.delay(10);\n };\n RunService.prototype.updateStage = function (id, stage) {\n var _this = this;\n var obs = this._runs.updateRunStage(id, {\n runId: id, stage: stage\n }).map(function (r) { return r.data; })\n .do(function (r) {\n if (_this.snapshot) {\n _this.snapshot.info.stage = r.stage;\n _this._runInfoChanged.next(_this.snapshot.info);\n }\n });\n obs = obs.share();\n obs.fireAndForget();\n return obs;\n };\n RunService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [Api.RunsProxy, configService_1.ConfigService, translation_1.TranslateService, ng2_toastr_1.ToastsManager, router_1.Router])\n ], RunService);\n return RunService;\n}());\nexports.RunService = RunService;\n\n\n\n},{\"../backend/webapis\":17,\"./configService\":85,\"./translation\":92,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"ng2-toastr\":\"ng2-toastr\",\"rxjs\":\"rxjs\"}],90:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar SharedDataService = (function () {\n function SharedDataService() {\n this.data = {};\n }\n SharedDataService.prototype.setOption = function (option, value) {\n this.data[option] = value;\n };\n SharedDataService.prototype.getOption = function (option) {\n return this.data[option];\n };\n SharedDataService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [])\n ], SharedDataService);\n return SharedDataService;\n}());\nexports.SharedDataService = SharedDataService;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],91:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar rx_1 = require('rxjs');\nvar configService_1 = require('./configService');\nvar SiteHeaderService = (function () {\n function SiteHeaderService(_configService) {\n var _this = this;\n this._configService = _configService;\n this.navigation = {\n previous: '',\n next: '',\n previousClicked: new rx_1.Subject(),\n nextClicked: new rx_1.Subject(),\n current: '',\n inProgress: undefined\n };\n this._preset = new rx_1.Subject();\n this._configService.currentModelChanged\n .combineLatest(this._preset, function (models, preset) { return ({ models: models, preset: preset }); })\n .subscribe(function (data) {\n _this.pageList = data.models.runPages;\n var index;\n if (data.preset)\n index = data.models.runPages.findIndex(function (o) { return o.identifier === data.preset; });\n if (index == undefined || index == -1)\n _this.index = 0;\n else\n _this.index = index;\n });\n }\n Object.defineProperty(SiteHeaderService, \"MAIN_MODE\", {\n get: function () {\n return \"MAIN_MODE\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SiteHeaderService, \"NAVIGATION_MODE\", {\n get: function () {\n return \"NAVIGATION_MODE\";\n },\n enumerable: true,\n configurable: true\n });\n SiteHeaderService.prototype.setTo = function (preset) { this._preset.next(preset); };\n Object.defineProperty(SiteHeaderService.prototype, \"index\", {\n get: function () {\n return this._index;\n },\n set: function (val) {\n this._index = val;\n if (!this.pageList)\n return;\n if (val === 0)\n this.navigation.previous = null;\n else\n this.navigation.previous = \"CURRENT_MODEL.RUN_PAGES.PAGE_\" + (val - 1);\n if (val + 1 === this.pageList.length)\n this.navigation.next = null;\n else\n this.navigation.next = \"CURRENT_MODEL.RUN_PAGES.PAGE_\" + (val + 1);\n this.navigation.current = \"CURRENT_MODEL.RUN_PAGES.PAGE_\" + val;\n },\n enumerable: true,\n configurable: true\n });\n SiteHeaderService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [configService_1.ConfigService])\n ], SiteHeaderService);\n return SiteHeaderService;\n}());\nexports.SiteHeaderService = SiteHeaderService;\n\n\n\n},{\"./configService\":85,\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],92:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar core_1 = require('@angular/core');\nvar ng2_translate_1 = require('ng2-translate');\nexports.TranslateLoader = ng2_translate_1.TranslateLoader;\nexports.TranslatePipe = ng2_translate_1.TranslatePipe;\nexports.TranslateService = ng2_translate_1.TranslateService;\nvar configService_1 = require('./configService');\nvar rx_1 = require('rxjs');\nvar webapis_1 = require('../backend/webapis');\nvar LanguageFormatterService_1 = require(\"./LanguageFormatterService\");\nvar referenceTranslationService_1 = require('./referenceTranslationService');\nfunction isObject(item) {\n return (item && typeof item === 'object' && !Array.isArray(item) && item !== null);\n}\nfunction mergeDeep(target, source) {\n var output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach(function (key) {\n if (isObject(source[key])) {\n if (!(key in target))\n Object.assign(output, (_a = {}, _a[key] = source[key], _a));\n else\n output[key] = mergeDeep(target[key], source[key]);\n }\n else {\n Object.assign(output, (_b = {}, _b[key] = source[key], _b));\n }\n var _a, _b;\n });\n }\n return output;\n}\nfunction defaultTranslation(m) {\n var runPageDefaults = {};\n function collect(item, index, prefix) {\n var pattern = prefix + \"_\" + index;\n runPageDefaults[pattern] = item.displayTitle;\n if (item.children)\n item.children.forEach(function (i2, ix2) { return collect(i2, ix2, pattern); });\n }\n ;\n m.runPages.forEach(function (item, index) { return collect(item, index, 'PAGE'); });\n var obj = {\n TITLE: m.displayName,\n RUN_PAGES: runPageDefaults\n };\n return {\n CURRENT_MODEL: obj\n };\n}\nvar ModelAwareLoader = (function () {\n function ModelAwareLoader(_config) {\n this._config = _config;\n }\n ModelAwareLoader.prototype.getTranslation = function (lang) {\n var main = rx_1.Observable.fromPromise(System.import('/app/assets/i18n/' + lang + '.json!json'));\n return this._config.currentModelChanged\n .take(1)\n .flatMap(function (model) { return model.supportedLanguages\n && model.supportedLanguages.indexOf(lang) > -1\n && rx_1.Observable.fromPromise(System.import(webapis_1.ProxyProxy.redirector_url(\"clientside/assets/i18n/\" + lang + \".json\").url + \"!json\").then(function (r) { return mergeDeep(defaultTranslation(model), r); }))\n || rx_1.Observable.of(defaultTranslation(model)); })\n .combineLatest(main, function (fromModel, fromPlatform) { return mergeDeep(fromPlatform, fromModel); });\n };\n ModelAwareLoader = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [configService_1.ConfigService])\n ], ModelAwareLoader);\n return ModelAwareLoader;\n}());\nexports.ModelAwareLoader = ModelAwareLoader;\nvar ExtendedTranslateService = (function (_super) {\n __extends(ExtendedTranslateService, _super);\n function ExtendedTranslateService(referenceTranslationProxy, _config, currentLoader, missingTranslationHandler, languageFormatterService, refTranslationService) {\n var _this = this;\n _super.call(this, currentLoader, missingTranslationHandler);\n this.referenceTranslationProxy = referenceTranslationProxy;\n this._config = _config;\n this.languageFormatterService = languageFormatterService;\n this.refTranslationService = refTranslationService;\n this.languages = new rx_1.ReplaySubject(1);\n this.userLanguage = new rx_1.ReplaySubject(1);\n this._config.currentModelChanged.subscribe(function (m) {\n (_super.prototype.getLangs.call(_this) || []).forEach(function (l) { return _super.prototype.reloadLang.call(_this, l); });\n var modelLanguages = (m.supportedLanguages || [\"en\"]);\n var known = _this.languagesSnapshot = _this.languageFormatterService.getPlatformSupportedLanguages().filter(function (n) { return modelLanguages.findIndex(function (i) { return i === n.code; }) != -1; });\n _super.prototype.setDefaultLang.call(_this, known[0].code);\n _this.languages.next(known);\n var userLang = known[0].code;\n if (navigator && navigator.language) {\n var browserLang_1 = navigator.language.split('-')[0].toLowerCase();\n if (known.findIndex(function (l) { return l.code === browserLang_1; }) != -1)\n userLang = browserLang_1;\n }\n _this.use(userLang);\n });\n }\n ExtendedTranslateService.prototype.use = function (language) {\n var _this = this;\n this.userLanguageSnapshot = language;\n var obs = _super.prototype.use.call(this, language);\n this.userLanguage.next(language);\n this.setLocale(language);\n var fullLanguage = this.languageFormatterService.getFormattedLangugageCode().find(function (x) { return x.code === language; });\n this.referenceTranslationProxy.getReferenceTranslationValues(fullLanguage.langCode).subscribe(function (c) { return _this.refTranslationService.setRefDataTranslation(c.data); });\n return obs;\n };\n ExtendedTranslateService.prototype.setLocale = function (language) {\n this.selectedLocale = this.languageFormatterService.getFormattedLangugageCode().find(function (x) { return x.code === language; }).langCode;\n };\n ExtendedTranslateService.prototype.getLocale = function () {\n return this.selectedLocale;\n };\n ExtendedTranslateService = __decorate([\n core_1.Injectable(),\n __param(3, core_1.Optional()), \n __metadata('design:paramtypes', [webapis_1.ReferenceTranslationProxy, configService_1.ConfigService, ng2_translate_1.TranslateLoader, ng2_translate_1.MissingTranslationHandler, LanguageFormatterService_1.LanguageFormatterService, referenceTranslationService_1.ReferenceTranslationService])\n ], ExtendedTranslateService);\n return ExtendedTranslateService;\n}(ng2_translate_1.TranslateService));\nexports.ExtendedTranslateService = ExtendedTranslateService;\nexports.TRANSLATIONS = [ExtendedTranslateService,\n { provide: ng2_translate_1.TranslateService, useExisting: ExtendedTranslateService },\n { provide: ng2_translate_1.TranslateLoader, useClass: ModelAwareLoader },\n { provide: core_1.PLATFORM_PIPES, useValue: ng2_translate_1.TranslatePipe, multi: true }];\n\n\n\n},{\"../backend/webapis\":17,\"./LanguageFormatterService\":82,\"./configService\":85,\"./referenceTranslationService\":88,\"@angular/core\":\"@angular/core\",\"ng2-translate\":\"ng2-translate\",\"rxjs\":\"rxjs\"}],93:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar rx_1 = require('rxjs');\nvar UserService = (function () {\n function UserService() {\n this.userInfo = new rx_1.BehaviorSubject({ loggedOn: false, determined: false });\n this._onUnauthorized = new rx_1.Subject();\n this.onUnauthorized = this._onUnauthorized.throttleTime(1000);\n this.reauthorized = this.userInfo.filter(function (o) { return o.loggedOn; }).map(function () { });\n }\n Object.defineProperty(UserService.prototype, \"currentUserInfo\", {\n get: function () { return this._userInfo; },\n set: function (val) {\n this._userInfo = val;\n this.userInfo.next({ loggedOn: !!val, details: val, determined: true });\n },\n enumerable: true,\n configurable: true\n });\n UserService.prototype.unauthorized = function () {\n this._userInfo = null;\n this.userInfo.next({ loggedOn: !!null, details: null, determined: false, unauthorized: true });\n this._onUnauthorized.next(null);\n };\n UserService = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [])\n ], UserService);\n return UserService;\n}());\nexports.UserService = UserService;\n\n\n\n},{\"@angular/core\":\"@angular/core\",\"rxjs\":\"rxjs\"}],94:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar loginPage_1 = require('./loginPage');\nexports.LoginPage = loginPage_1.LoginPage;\nvar noRolePage_1 = require('./noRolePage');\nexports.NoRolePage = noRolePage_1.NoRolePage;\nvar core_1 = require('@angular/core');\nvar services_1 = require('../@toolkit/services');\nvar HasRolesGuard = (function () {\n function HasRolesGuard(_userService) {\n this._userService = _userService;\n }\n HasRolesGuard.prototype.canActivate = function (route, state) {\n return this._userService.userInfo\n .filter(function (info) { return info.determined; })\n .map(function (info) { return info.loggedOn && info.details && !info.details.noRole; })\n .take(1);\n };\n HasRolesGuard = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [services_1.UserService])\n ], HasRolesGuard);\n return HasRolesGuard;\n}());\nexports.HasRolesGuard = HasRolesGuard;\n\n\n\n},{\"../@toolkit/services\":\"@toolkit/services\",\"./loginPage\":97,\"./noRolePage\":99,\"@angular/core\":\"@angular/core\"}],95:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar rx_1 = require('rxjs');\nvar backend_1 = require('../@toolkit/backend');\nvar core_2 = require('angular2-cookie/core');\nvar services_1 = require('../@toolkit/services');\nvar AuthProvider = (function () {\n function AuthProvider(_cookies, _proxy, _user, _userService, _window) {\n this._cookies = _cookies;\n this._proxy = _proxy;\n this._user = _user;\n this._userService = _userService;\n this._window = _window;\n }\n AuthProvider.prototype.logout = function (modelName) {\n this.manuallyLoggedOut = true;\n this._cookies.remove(\".platform\" + modelName + \"authtoken\", { path: '/', domain: this._window.nativeElement.location.hostname });\n this._cookies.remove(\".platform\" + modelName + \"auth\", { path: '/', domain: this._window.nativeElement.location.hostname });\n this._userService.currentUserInfo = null;\n };\n AuthProvider.prototype.windowsAuthentication = function () {\n var _this = this;\n this.manuallyLoggedOut = false;\n return this._proxy.useWindowsAuth()\n .flatMap(function (ret) {\n return ret.data.useWindowsAuth\n ? _this._proxy.authenticateWindowsAuth()\n .map(function (r) { return !!r.data.status; })\n .catch(function (_) { return rx_1.Observable.of(false); })\n : rx_1.Observable.of(false);\n });\n };\n AuthProvider.prototype.passwordAuthentication = function (info) {\n this.manuallyLoggedOut = false;\n return this._proxy.login(info).map(function () { return true; }).catch(function () { return rx_1.Observable.of(false); });\n };\n AuthProvider.prototype.verify = function (modelName) {\n if (!this._cookies.get(\".platform\" + modelName + \"auth\"))\n return rx_1.Observable.of(false);\n return this._user.verify().map(function () { return true; }).catch(function () { return rx_1.Observable.of(false); });\n };\n AuthProvider.prototype.refreshUser = function () {\n var _this = this;\n var obs = this._user.get().uiSignal('user load');\n obs.subscribe(function (ret) {\n _this._userService.currentUserInfo = ret.data;\n }, function (err) {\n _this._userService.currentUserInfo = null;\n });\n return obs;\n };\n AuthProvider = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [core_2.CookieService, backend_1.Api.ProxyProxy, backend_1.Api.UserProxy, services_1.UserService, services_1.WindowRef])\n ], AuthProvider);\n return AuthProvider;\n}());\nexports.AuthProvider = AuthProvider;\n\n\n\n},{\"../@toolkit/backend\":\"@toolkit/backend\",\"../@toolkit/services\":\"@toolkit/services\",\"@angular/core\":\"@angular/core\",\"angular2-cookie/core\":\"angular2-cookie/core\",\"rxjs\":\"rxjs\"}],96:[function(require,module,exports){\nmodule.exports = '
\\n
\\n

{{\\'LOGIN.INSTRUCTIONS\\'|translate}}

\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
{{\\'LOGIN.ERROR\\'|translate}}
\\n
\\n\\n \\n {{\\'LOGIN.CONTACT_US\\'|translate}}\\n
\\n
\\n
\\n';\n},{}],97:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar reactiveComponent_1 = require('../@toolkit/reactiveComponent');\nvar services_1 = require('../@toolkit/services');\nvar authProvider_1 = require('./authProvider');\nvar router_1 = require('@angular/router');\nvar directives_1 = require('../@toolkit/directives');\nvar LoginPage = (function (_super) {\n __extends(LoginPage, _super);\n function LoginPage(_auth, _router, _activatedRoute, _config, _userService) {\n _super.call(this);\n this._auth = _auth;\n this._router = _router;\n this._activatedRoute = _activatedRoute;\n this._config = _config;\n this._userService = _userService;\n this.loginModel = { userName: '', password: '' };\n }\n LoginPage.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [\n this._activatedRoute.params.subscribe(function (r) { return _this._from = r[\"from\"]; }),\n this._userService.userInfo.subscribe(function (data) {\n if (!data.loggedOn)\n return;\n if (!data.details.noRole) {\n if (_this._from)\n _this._router.navigateByUrl(_this._from);\n else\n _this._router.navigateByUrl('/');\n }\n }),\n this._config.currentModelChanged.subscribe(function (model) { return _this.email = model.contactEmail; })];\n };\n LoginPage.prototype.logon = function () {\n var _this = this;\n this.busy = true;\n this._auth.passwordAuthentication(this.loginModel).subscribe(function (success) {\n if (success) {\n _this._auth.refreshUser();\n }\n else\n _this.failed = true;\n }, null, function () { return _this.busy = false; });\n };\n LoginPage = __decorate([\n core_1.Component({ template: require('./loginPage.html'), moduleId: module.id, directives: [directives_1.CUSTOM_VALUE_ACCESSORS, directives_1.VALIDATORS] }), \n __metadata('design:paramtypes', [authProvider_1.AuthProvider, router_1.Router, router_1.ActivatedRoute, services_1.ConfigService, services_1.UserService])\n ], LoginPage);\n return LoginPage;\n}(reactiveComponent_1.ReactiveComponent));\nexports.LoginPage = LoginPage;\n\n\n\n},{\"../@toolkit/directives\":\"@toolkit/directives\",\"../@toolkit/reactiveComponent\":\"@toolkit/reactiveComponent\",\"../@toolkit/services\":\"@toolkit/services\",\"./authProvider\":95,\"./loginPage.html\":96,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\"}],98:[function(require,module,exports){\nmodule.exports = '
\\n

{{\\'NOROLE.INFO\\'|translate}}

\\n
\\n
    \\n
  1. \\n {{\\'NOROLE.INSTRUCTIONS\\'|translate}} {{email}}\\n
  2. \\n
  3. {{\\'NOROLE.RETURN_LINK\\'|translate}}
  4. \\n
\\n
\\n
';\n},{}],99:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('../@toolkit/services');\nvar reactiveComponent_1 = require('../@toolkit/reactiveComponent');\nvar router_1 = require('@angular/router');\nvar NoRolePage = (function (_super) {\n __extends(NoRolePage, _super);\n function NoRolePage(_config) {\n _super.call(this);\n this._config = _config;\n }\n NoRolePage.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [this._config.currentModelChanged.subscribe(function (model) { return _this.email = model.contactEmail; })];\n };\n NoRolePage = __decorate([\n core_1.Component({\n template: require('./noRolePage.html'),\n moduleId: module.id,\n directives: [router_1.ROUTER_DIRECTIVES]\n }), \n __metadata('design:paramtypes', [services_1.ConfigService])\n ], NoRolePage);\n return NoRolePage;\n}(reactiveComponent_1.ReactiveComponent));\nexports.NoRolePage = NoRolePage;\n\n\n\n},{\"../@toolkit/reactiveComponent\":\"@toolkit/reactiveComponent\",\"../@toolkit/services\":\"@toolkit/services\",\"./noRolePage.html\":98,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\"}],100:[function(require,module,exports){\nmodule.exports = '
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n';\n},{}],101:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar platform_browser_1 = require('@angular/platform-browser');\nvar services_1 = require('./@toolkit/services');\nvar Router = require('@angular/router');\nvar ReactiveComponent_1 = require('./@toolkit/ReactiveComponent');\nvar siteHeader_1 = require('./siteHeader');\nvar components_1 = require('./@toolkit/components');\nvar vex_1 = require('angular2-modal/plugins/vex');\nvar clientSearch_1 = require('./models/clientSearch');\nvar Rx = require('rxjs');\nvar AppComponent = (function (_super) {\n __extends(AppComponent, _super);\n function AppComponent(_config, _router, modal, viewContainer, _titleService, _translate, _applicationInsightsService, _clientService) {\n _super.call(this);\n this._config = _config;\n this._router = _router;\n this.modal = modal;\n this._titleService = _titleService;\n this._translate = _translate;\n this._applicationInsightsService = _applicationInsightsService;\n this._clientService = _clientService;\n this.isMainHeader = new Rx.Subject();\n this.models = _config.models;\n modal.defaultViewContainer = viewContainer;\n }\n AppComponent.prototype.selectModel = function (model) {\n var _this = this;\n if (model !== this.currentModel) {\n this.currentModel = model;\n this._config.currentModel = model;\n this._subscriptions = [\n this._router.events.filter(function (s) { return s instanceof Router.NavigationEnd; })\n .subscribe(function (s) {\n var isMainHeader;\n if (!_this._router.routerState.snapshot.url.startsWith('/run/') &&\n !_this._router.routerState.snapshot.url.startsWith('/login') &&\n !_this._router.routerState.snapshot.url.startsWith('/norole'))\n isMainHeader = true;\n setTimeout(function () {\n _this.isMainHeader.next(isMainHeader);\n }, 1);\n })\n ];\n var setTitle = function () { return _this._translate.get('CURRENT_MODEL.TITLE').subscribe(function (o) { return _this._titleService.setTitle(o); }); };\n this._translate.userLanguage.subscribe(setTitle);\n this._applicationInsightsService.config(this.currentModel.instrumentationKey != null\n ? this.currentModel.instrumentationKey : \"\");\n }\n };\n AppComponent.prototype.oneTrustCookieConsentNotice = function (dataDomainScript) {\n if (dataDomainScript) {\n var scriptTag = document.createElement('script');\n scriptTag.type = 'text/javascript';\n scriptTag.src = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js';\n scriptTag.charset = 'UTF-8';\n scriptTag.setAttribute('data-domain-script', dataDomainScript);\n document.documentElement.appendChild(scriptTag);\n var scriptFunctionTag = document.createElement('script');\n scriptFunctionTag.type = 'text/javascript';\n scriptFunctionTag.innerHTML = 'function OptanonWrapper() { }';\n document.documentElement.appendChild(scriptFunctionTag);\n }\n };\n AppComponent.prototype.ngOnInit = function () {\n this.selectModel(this._config.subdomain);\n this.oneTrustCookieConsentNotice(this.currentModel.oneTrustCookieDataDomainScript);\n };\n AppComponent = __decorate([\n core_1.Component({\n selector: 'analytics-app',\n template: require('./app.html'),\n moduleId: module.id,\n directives: [Router.ROUTER_DIRECTIVES, siteHeader_1.SiteHeaderComponent, siteHeader_1.SiteFooterComponent, components_1.LoadingIndicator, clientSearch_1.ClientSearch],\n viewProviders: [platform_browser_1.Title]\n }), \n __metadata('design:paramtypes', [services_1.ConfigService, Router.Router, vex_1.Modal, core_1.ViewContainerRef, platform_browser_1.Title, services_1.ExtendedTranslateService, services_1.ApplicationInsightsService, services_1.ClientService])\n ], AppComponent);\n return AppComponent;\n}(ReactiveComponent_1.ReactiveComponent));\nexports.AppComponent = AppComponent;\n\n\n\n},{\"./@toolkit/ReactiveComponent\":2,\"./@toolkit/components\":\"@toolkit/components\",\"./@toolkit/services\":\"@toolkit/services\",\"./app.html\":100,\"./models/clientSearch\":107,\"./siteHeader\":122,\"@angular/core\":\"@angular/core\",\"@angular/platform-browser\":\"@angular/platform-browser\",\"@angular/router\":\"@angular/router\",\"angular2-modal/plugins/vex\":\"angular2-modal/plugins/vex\",\"rxjs\":\"rxjs\"}],102:[function(require,module,exports){\n\"use strict\";\nvar platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic');\nvar app_1 = require('./app');\nvar core_1 = require('@angular/core');\nvar forms_1 = require('@angular/forms');\nvar Router = require('@angular/router');\nvar main_1 = require('./models/main');\nvar http_1 = require('@angular/http');\nvar backend_1 = require('./@toolkit/backend');\nvar services_1 = require('./@toolkit/services');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar pipes_1 = require('./@toolkit/pipes');\nvar core_2 = require('angular2-cookie/core');\nvar authProvider_1 = require('./account/authProvider');\nvar platform_browser_1 = require('angular2-modal/platform-browser');\nrequire('rxjs');\nvar core_3 = require('@angular/core');\nvar errorHandler_1 = require('./errorHandler');\nvar vex_1 = require('angular2-modal/plugins/vex');\nif (!System.import) {\n core_3.enableProdMode();\n var getJSON = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"get\", url, true);\n xhr.responseType = \"json\";\n xhr.onload = function () {\n var status = xhr.status;\n if (status == 200) {\n var response = xhr.response;\n if (typeof response === 'string')\n response = JSON.parse(response);\n callback(null, response);\n }\n else {\n callback(status);\n }\n };\n xhr.send();\n };\n var loaded_1 = false;\n var loadScript = function (src, cb) {\n if (src === '@dynamicRoutes!json') {\n getJSON('/api/modules', function (err, data) { return cb(err, data); });\n }\n else if (src.endsWith('!json')) {\n getJSON(src.substring(0, src.length - '!json'.length), function (err, data) { return cb(err, data); });\n }\n else {\n var path = src.substring(\"/api/proxy/redirector/clientside/\".length);\n if (loaded_1) {\n try {\n var x = require(\"module/\" + path);\n cb(null, x);\n }\n catch (e) {\n cb(e);\n }\n }\n else {\n var script = document.createElement('script');\n script.async = true;\n script.src = \"/api/proxy/redirector/clientside/application-bundle.js\";\n script.onerror = function () {\n cb(new Error(\"Failed to load\" + script.src));\n };\n script.onload = function () {\n loaded_1 = true;\n try {\n var x = require(\"module/\" + path);\n cb(null, x);\n }\n catch (e) {\n cb(e);\n }\n };\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n }\n };\n var cache = {};\n System.import = function (v) {\n if (!cache[v])\n cache[v] = new Promise(function (resolve, reject) { loadScript(v, function (err, res) { if (err)\n reject(err);\n else\n resolve(res); }); });\n return cache[v];\n };\n}\nSystem.import('@dynamicRoutes!json').then(function (models) {\n var modelsettings = { models: models };\n var appName = window.location.hostname.split('.')[0];\n var routeConfig;\n var subdomain = models.find(function (o) { return o.modelName == appName; });\n modelsettings.subdomain = subdomain;\n var toastOptions = {\n autoDismiss: true,\n };\n var MODULE_PROVIDER = core_1.provide('models', { useValue: modelsettings });\n return main_1.RouteGenerator(subdomain).then(function (result) {\n var APP_ROUTER_PROVIDERS = Router.provideRouter(result.routes, { enableTracing: false });\n platform_browser_dynamic_1.bootstrap(app_1.AppComponent, [\n http_1.HTTP_PROVIDERS,\n [core_2.CookieService].concat(core_2.ANGULAR2_COOKIE_PROVIDERS),\n authProvider_1.AuthProvider,\n platform_browser_1.MODAL_BROWSER_PROVIDERS,\n vex_1.VEX_MODAL_PROVIDERS.filter(function (o) { return !!o.token; }),\n backend_1.Api.WEBAPI_PROVIDERS,\n APP_ROUTER_PROVIDERS,\n MODULE_PROVIDER,\n services_1.INTERNAL_SHARED_SERVICES,\n [ng2_toastr_1.ToastsManager, core_1.provide(ng2_toastr_1.ToastOptions, { useValue: new ng2_toastr_1.ToastOptions(toastOptions) })],\n [forms_1.disableDeprecatedForms(), forms_1.provideForms()],\n { provide: core_1.PLATFORM_PIPES, useValue: pipes_1.CUSTOM_PIPES, multi: true },\n { provide: core_1.ExceptionHandler, useClass: errorHandler_1.PlatformErrorHandler },\n main_1.GUARDS\n ].concat(result.services));\n });\n});\n\n\n\n},{\"./@toolkit/backend\":\"@toolkit/backend\",\"./@toolkit/pipes\":\"@toolkit/pipes\",\"./@toolkit/services\":\"@toolkit/services\",\"./account/authProvider\":95,\"./app\":101,\"./errorHandler\":104,\"./models/main\":110,\"@angular/core\":\"@angular/core\",\"@angular/forms\":\"@angular/forms\",\"@angular/http\":\"@angular/http\",\"@angular/platform-browser-dynamic\":\"@angular/platform-browser-dynamic\",\"@angular/router\":\"@angular/router\",\"angular2-cookie/core\":\"angular2-cookie/core\",\"angular2-modal/platform-browser\":\"angular2-modal/platform-browser\",\"angular2-modal/plugins/vex\":\"angular2-modal/plugins/vex\",\"ng2-toastr\":\"ng2-toastr\",\"rxjs\":\"rxjs\"}],103:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nfunction createDynamicChild(factory, position, index, options) {\n var resolvedDependencies = options && options.length && core_1.ReflectiveInjector.resolve(options.map(function (o) { return core_1.provide(o.name, { useValue: o.value }); }));\n return position.createComponent(factory, 0, core_1.ReflectiveInjector.fromResolvedProviders(resolvedDependencies || [], position.parentInjector));\n}\nexports.createDynamicChild = createDynamicChild;\nvar CreateDynamicChildDirective = (function () {\n function CreateDynamicChildDirective(_viewContainer, templateRef, componentResolver) {\n this._viewContainer = _viewContainer;\n this.componentResolver = componentResolver;\n }\n CreateDynamicChildDirective.prototype.ngOnChanges = function () {\n var _this = this;\n if (this.componentType)\n this.componentResolver.resolveComponent(this.componentType).then(function (cf) { return createDynamicChild(cf, _this._viewContainer, 0, _this.options); });\n else\n this._viewContainer.clear();\n };\n __decorate([\n core_1.Input('dynamicChild'), \n __metadata('design:type', core_1.Type)\n ], CreateDynamicChildDirective.prototype, \"componentType\", void 0);\n __decorate([\n core_1.Input('dynamicChildOptions'), \n __metadata('design:type', Array)\n ], CreateDynamicChildDirective.prototype, \"options\", void 0);\n CreateDynamicChildDirective = __decorate([\n core_1.Directive({ selector: 'template[dynamicChild]' }), \n __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, core_1.ComponentResolver])\n ], CreateDynamicChildDirective);\n return CreateDynamicChildDirective;\n}());\nexports.CreateDynamicChildDirective = CreateDynamicChildDirective;\n\n\n\n},{\"@angular/core\":\"@angular/core\"}],104:[function(require,module,exports){\n\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar backend_1 = require('./@toolkit/backend');\nvar PlatformErrorHandler = (function () {\n function PlatformErrorHandler(injector) {\n this.injector = injector;\n }\n PlatformErrorHandler.prototype.call = function (exception, stackTrace, reason) {\n var proxy = this.injector.get(backend_1.Api.ErrorProxy);\n var originalException = core_1.ExceptionHandler.exceptionToString(exception, stackTrace);\n proxy.error({\n text: originalException\n }).fireAndForget();\n console.error(originalException);\n };\n PlatformErrorHandler = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [core_1.Injector])\n ], PlatformErrorHandler);\n return PlatformErrorHandler;\n}());\nexports.PlatformErrorHandler = PlatformErrorHandler;\n\n\n\n},{\"./@toolkit/backend\":\"@toolkit/backend\",\"@angular/core\":\"@angular/core\"}],105:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar common_1 = require('@angular/common');\nvar Router = require('@angular/router');\nvar services_1 = require('../@toolkit/services');\nvar interfaces = require('../@toolkit/interfaces');\nvar Rx = require('rxjs');\nvar reactiveComponent_1 = require('../@toolkit/reactiveComponent');\nvar services_2 = require('../@toolkit/services');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar vex_1 = require('angular2-modal/plugins/vex');\nvar ActiveRunPage = (function (_super) {\n __extends(ActiveRunPage, _super);\n function ActiveRunPage(_headerService, _runService, _router, _activatedRoute, _clientService, _navigation, _translate, _toastr) {\n _super.call(this);\n this._headerService = _headerService;\n this._runService = _runService;\n this._router = _router;\n this._activatedRoute = _activatedRoute;\n this._clientService = _clientService;\n this._navigation = _navigation;\n this._translate = _translate;\n this._toastr = _toastr;\n }\n ActiveRunPage.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [\n ,\n this._headerService.navigation.nextClicked.subscribe(function () { _this.navigate(interfaces.NavigationDirection.forward); }),\n this._headerService.navigation.previousClicked.subscribe(function () { _this.navigate(interfaces.NavigationDirection.backward); }),\n this._runService.activeRun.subscribe(function (run) {\n _this.currentRun = run;\n if (!_this._clientService.currentClient || _this._clientService.currentClient.clientId !== run.info.clientId) {\n _this._clientService.loadById(run.info.clientId);\n }\n })\n ];\n };\n ActiveRunPage.prototype.navigate = function (offset) {\n this._navigation.navigate({\n offset: offset,\n originalIndex: this._headerService.index,\n pageList: this._headerService.pageList,\n relativeTo: this._activatedRoute,\n router: this._router,\n level: 0\n });\n };\n ActiveRunPage = __decorate([\n core_1.Component({\n template: \"\\n
\\n \\n
\",\n moduleId: module.id,\n directives: [Router.ROUTER_DIRECTIVES]\n }), \n __metadata('design:paramtypes', [services_2.SiteHeaderService, services_1.RunService, Router.Router, Router.ActivatedRoute, services_1.ClientService, services_1.NavigationService, services_1.TranslateService, ng2_toastr_1.ToastsManager])\n ], ActiveRunPage);\n return ActiveRunPage;\n}(reactiveComponent_1.ReactiveComponent));\nexports.ActiveRunPage = ActiveRunPage;\nfunction has(x, test) {\n return x && test(x);\n}\nfunction isValid(item) {\n if (!item.rootForm.valid)\n return false;\n if (!item.parent)\n return true;\n return isValid(item.parent);\n}\nvar ModalState;\n(function (ModalState) {\n ModalState[ModalState[\"Open\"] = 0] = \"Open\";\n ModalState[ModalState[\"Closed\"] = 1] = \"Closed\";\n ModalState[ModalState[\"Rejected\"] = 2] = \"Rejected\";\n})(ModalState || (ModalState = {}));\n;\nvar ProgressionGuard = (function () {\n function ProgressionGuard(_toastr, _service, _runs, _navigation, _modal, _location, _config, _router, _translate) {\n this._toastr = _toastr;\n this._service = _service;\n this._runs = _runs;\n this._navigation = _navigation;\n this._modal = _modal;\n this._location = _location;\n this._config = _config;\n this._router = _router;\n this._translate = _translate;\n this.modalOpen = new Rx.BehaviorSubject(ModalState.Closed);\n }\n ProgressionGuard.prototype.canDeactivate = function (component, route, state) {\n var _this = this;\n var direction = this._service.navigation.inProgress;\n var level = -1;\n var definition = (function () {\n var current = route.url[0].path;\n var full = state.url.split('/').slice(3);\n level = full.indexOf(current);\n var runPage = null;\n var list = _this._config.currentModel.runPages;\n var _loop_1 = function(i) {\n var index = list.findIndex(function (r) { return r.identifier == full[i]; });\n if (index === -1)\n throw full[i] + \" not found in run page hierarchy\";\n runPage = list[index];\n list = runPage.children || [];\n };\n for (var i = 0; i < level + 1; i++) {\n _loop_1(i);\n }\n return runPage;\n })();\n if (direction === interfaces.NavigationDirection.forward && has(component, function (c) { return c.onForwardNavigation; })) {\n component.onForwardNavigation();\n }\n var haltNavigationCheckImpl = function () {\n if (has(component, function (c) { return c.haltNavigation; })) {\n var result = component.haltNavigation(direction);\n var obs = void 0;\n if (result instanceof Rx.Observable)\n obs = result;\n else\n obs = Rx.Observable.of(result);\n return obs.do(function (hn) {\n if (!hn.toast)\n return;\n setTimeout(function () {\n if (hn.toast instanceof interfaces.ToastDefinition) {\n _this._toastr.show(hn.toast);\n }\n else {\n var arr = hn.toast;\n Rx.Observable.interval(100).take(arr.length).subscribe(function (i) { return _this._toastr.show(arr[i]); });\n }\n }, 100);\n }).map(function (hn) { return !hn.stop; });\n }\n else\n return Rx.Observable.of(true);\n };\n var haltNavigationCheck = function () {\n if (direction === interfaces.NavigationDirection.forward)\n return haltNavigationCheckImpl();\n else\n return Rx.Observable.of(true);\n };\n var formValidationCheckImpl = function () {\n if (has(component, function (c) { return c.rootForm; })) {\n if (isValid(component)) {\n return Rx.Observable.of(true);\n }\n else {\n _this._toastr.error(_this._translate.instant('GLOBAL.TOASTS.VALIDATION_FAILED'));\n return Rx.Observable.of(false);\n }\n }\n return Rx.Observable.of(true);\n };\n var formValidationCheck = function () {\n if (has(component, function (c) { return c.rootForm; }) && direction === interfaces.NavigationDirection.forward) {\n return formValidationCheckImpl();\n }\n else\n return Rx.Observable.of(true);\n };\n var pendingChangesCheck = function () {\n if (has(component, function (c) { return c.changeTracker; })\n && (direction === undefined || direction === interfaces.NavigationDirection.backward)\n && !!(definition.onForwardNavigation || component.applyChanges)) {\n return _this.modalOpen.skipWhile(function (v) { return v === ModalState.Open; }).take(1).flatMap(function (state) {\n if (state === ModalState.Rejected) {\n _this.modalOpen.next(ModalState.Closed);\n return Rx.Observable.of(false);\n }\n component.changeTracker.performChecks(true);\n if (!component.changeTracker.isChanged)\n return Rx.Observable.of(true);\n _this.modalOpen.next(ModalState.Open);\n var promise = _this._modal.confirm()\n .addButton(\"vex-dialog-button vex-dialog-button-primary\", _this._translate.instant(\"GLOBAL.BTN.SAVE\"), function (cmp) { return cmp.dialog.close(\"save\"); })\n .addButton(\"vex-dialog-button vex-dialog-button-secondary\", _this._translate.instant(\"GLOBAL.BTN.UNDO\"), function (cmp) { return cmp.dialog.close(\"undo\"); })\n .cancelBtn(_this._translate.instant(\"GLOBAL.BTN.CANCEL\"))\n .okBtn(null)\n .message(_this._translate.instant(\"GLOBAL.TOASTS.PENDING_CHANGES_CONFIRM\"))\n .open().then(function (dialog) { return dialog.result.then(function (ret) { return ret; }, function () { return false; }); })\n .then(function (ret) {\n if (ret === \"save\") {\n return Rx.Observable.zip(formValidationCheckImpl(), haltNavigationCheckImpl()).toPromise()\n .then(function (rets) {\n if (rets.every(function (r) { return r; })) {\n var action = null;\n if (component.applyChanges)\n action = component.applyChanges().toPromise();\n else {\n var stage = _this._runs.getStageIdentifier(level);\n action = _this._navigation.triggerNavigationAction(definition.onForwardNavigation, stage, false);\n }\n return action.then(function (success) {\n _this.modalOpen.next(success ? ModalState.Closed : ModalState.Rejected);\n return success;\n });\n }\n else {\n _this.modalOpen.next(ModalState.Rejected);\n return false;\n }\n });\n }\n else if (ret === \"undo\") {\n return _this._runs.load(_this._runs.getSnapshot().runId).do(function () { return _this.modalOpen.next(ModalState.Closed); }).toPromise().then(function () { return true; });\n }\n else {\n _this.modalOpen.next(ModalState.Rejected);\n return false;\n }\n });\n return Rx.Observable.fromPromise(promise);\n });\n }\n else\n return Rx.Observable.of(true);\n };\n return Rx.Observable.zip(haltNavigationCheck(), formValidationCheck(), pendingChangesCheck()).map(function (results) { return results.every(function (i) { return !!i; }); });\n };\n ProgressionGuard = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [ng2_toastr_1.ToastsManager, services_2.SiteHeaderService, services_1.RunService, services_1.NavigationService, vex_1.Modal, common_1.Location, services_1.ConfigService, Router.Router, services_1.TranslateService])\n ], ProgressionGuard);\n return ProgressionGuard;\n}());\nexports.ProgressionGuard = ProgressionGuard;\nvar JumpGuard = (function () {\n function JumpGuard(navigation, runs, router, translate, toastr) {\n this.navigation = navigation;\n this.runs = runs;\n this.router = router;\n this.translate = translate;\n this.toastr = toastr;\n }\n JumpGuard.prototype.canActivate = function (route, state) {\n var _this = this;\n var current = route.url[0].path;\n var runId = parseInt(state.url.split('/')[2]);\n var full = state.url.split('/').slice(3);\n var level = full.indexOf(current);\n var path = full.slice(0, level);\n return this.runs.activeRun.filter(function (o) { return o.info.runId === runId; }).take(1).map(function (runModel) {\n var success = _this.navigation.canNavigateTo({\n path: path,\n runModel: runModel,\n targetIdentifier: current\n });\n if (!success.canNavigate)\n _this.navigateAway(runModel.runId, path, success.alternativeIdentifier, success.toastResource);\n return success.canNavigate;\n });\n };\n JumpGuard.prototype.navigateAway = function (runId, path, identifier, message) {\n var _this = this;\n this.router.navigate(['run', runId].concat(path, [identifier]), {\n relativeTo: null\n }).then(function () { return _this.translate.get(message || \"GLOBAL.TOASTS.INVALID_PAGE\").toPromise(); }).then(function (s) { return _this.toastr.error(s); });\n };\n JumpGuard = __decorate([\n core_1.Injectable(), \n __metadata('design:paramtypes', [services_1.NavigationService, services_1.RunService, Router.Router, services_1.TranslateService, ng2_toastr_1.ToastsManager])\n ], JumpGuard);\n return JumpGuard;\n}());\nexports.JumpGuard = JumpGuard;\n\n\n\n},{\"../@toolkit/interfaces\":\"@toolkit/interfaces\",\"../@toolkit/reactiveComponent\":\"@toolkit/reactiveComponent\",\"../@toolkit/services\":\"@toolkit/services\",\"@angular/common\":\"@angular/common\",\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"angular2-modal/plugins/vex\":\"angular2-modal/plugins/vex\",\"ng2-toastr\":\"ng2-toastr\",\"rxjs\":\"rxjs\"}],106:[function(require,module,exports){\nmodule.exports = '
\\n \\n \\n \\n \\n \\n \\n
{{currentClient?.displayName}}{{\\'SITE_HEADER.CLIENTS\\'|translate}}  \\n \\n \\n \\n
\\n
\\n \\n\\n';\n},{}],107:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('../@toolkit/services');\nvar backend_1 = require('../@toolkit/backend');\nvar reactiveComponent_1 = require('../@toolkit/reactiveComponent');\nvar directives_1 = require('../@toolkit/directives');\nvar Router = require('@angular/router');\nvar ClientSearch = (function (_super) {\n __extends(ClientSearch, _super);\n function ClientSearch(_api, _config, _router, _clientService) {\n var _this = this;\n _super.call(this);\n this._api = _api;\n this._config = _config;\n this._router = _router;\n this._clientService = _clientService;\n this.search = function (v) {\n return _this._api.clientSearch({ searchTerm: v });\n };\n }\n ClientSearch.prototype.showClientSelector = function (event) {\n this.displaySelector = true;\n };\n ;\n Object.defineProperty(ClientSearch.prototype, \"active\", {\n set: function (v) {\n var _this = this;\n if (v)\n this._viewInit.take(1).subscribe(function (o) { return _this._autoComplete.focus(); });\n },\n enumerable: true,\n configurable: true\n });\n ClientSearch.prototype.activate = function (data) {\n this._router.navigate(['/runs', data.clientId]);\n };\n ClientSearch.prototype.ngOnInit = function () {\n var _this = this;\n this.displaySelector = true;\n this._subscriptions = [\n this._router.events.filter(function (s) { return s instanceof Router.NavigationEnd; })\n .subscribe(function (s) {\n if (_this._router.routerState.snapshot.url.startsWith('/login')) {\n _this.currentClient = null;\n _this.displaySelector = true;\n }\n })\n ];\n this._clientService.currentClientChanged\n .subscribe(function (c) {\n _this.currentClient = c;\n _this.displaySelector = false;\n });\n };\n __decorate([\n core_1.ViewChild(directives_1.AutocompleteComponent), \n __metadata('design:type', directives_1.AutocompleteComponent)\n ], ClientSearch.prototype, \"_autoComplete\", void 0);\n __decorate([\n core_1.Input(), \n __metadata('design:type', Boolean), \n __metadata('design:paramtypes', [Boolean])\n ], ClientSearch.prototype, \"active\", null);\n ClientSearch = __decorate([\n core_1.Component({\n selector: 'client-search',\n moduleId: module.id,\n template: require('./clientSearch.html'),\n directives: [directives_1.AUTOCOMPLETE]\n }), \n __metadata('design:paramtypes', [backend_1.Api.ClientsProxy, services_1.ConfigService, Router.Router, services_1.ClientService])\n ], ClientSearch);\n return ClientSearch;\n}(reactiveComponent_1.ReactiveComponent));\nexports.ClientSearch = ClientSearch;\n\n\n\n},{\"../@toolkit/backend\":\"@toolkit/backend\",\"../@toolkit/directives\":\"@toolkit/directives\",\"../@toolkit/reactiveComponent\":\"@toolkit/reactiveComponent\",\"../@toolkit/services\":\"@toolkit/services\",\"./clientSearch.html\":106,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\"}],108:[function(require,module,exports){\nmodule.exports = '
\\n\\n
{{percent|intPercent}}
\\n\\n \\n\\n
';\n},{}],109:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('../@toolkit/services');\nvar Router = require('@angular/router');\nvar reactiveComponent_1 = require('../@toolkit/reactiveComponent');\nvar Rx = require('rxjs');\nvar LoadingStepComponent = (function (_super) {\n __extends(LoadingStepComponent, _super);\n function LoadingStepComponent(_route, _config, _translate) {\n _super.call(this);\n this._route = _route;\n this._config = _config;\n this._translate = _translate;\n this.trigger = new Rx.Subject();\n this.percent = 0;\n }\n Object.defineProperty(LoadingStepComponent.prototype, \"page\", {\n get: function () {\n return this._page;\n },\n set: function (v) {\n this._page = v;\n this.trigger.next(v);\n },\n enumerable: true,\n configurable: true\n });\n LoadingStepComponent.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [\n this._config.currentModelChanged.combineLatest(this.trigger, function (model, page) {\n return model.runPages.find(function (o) { return o.identifier == page; });\n })\n .filter(function (runPage) {\n return runPage && !!runPage.onForwardNavigation && !!runPage.onForwardNavigation.loadingScreenItems;\n })\n .subscribe(function (runPage) {\n var data = runPage.onForwardNavigation.loadingScreenItems.map(function (o) { return ({ label: o.isResource ? _this._translate.instant(o.itemLabel) : o.itemLabel, done: false }); });\n Rx.Observable.from(runPage.onForwardNavigation.loadingScreenItems.map(function (o) { return o.milisecDelay; }))\n .map(function (delay, index) { return Rx.Observable.timer(delay).map(function () { return index; }); })\n .concatAll()\n .subscribe(function (index) { return data[index].done = true; });\n var sum = runPage.onForwardNavigation.loadingScreenItems.reduce(function (acc, i, index, arr) { return index == arr.length - 1 ? acc + (i.milisecDelay * 0.1) : acc + i.milisecDelay; }, 0);\n _this.percent = 0;\n Rx.Observable.interval(sum / 100).take(100).subscribe(function (i) { return _this.percent++; });\n _this.source = data;\n }),\n this._route.params.subscribe(function (p) {\n _this.page = p[\"page\"];\n })\n ];\n };\n LoadingStepComponent = __decorate([\n core_1.Component({ template: require('./loadingStep.html'), moduleId: module.id }), \n __metadata('design:paramtypes', [Router.ActivatedRoute, services_1.ConfigService, services_1.TranslateService])\n ], LoadingStepComponent);\n return LoadingStepComponent;\n}(reactiveComponent_1.ReactiveComponent));\nexports.LoadingStepComponent = LoadingStepComponent;\nvar BlankTransitionComponent = (function () {\n function BlankTransitionComponent(_route, _router, _service) {\n this._route = _route;\n this._router = _router;\n this._service = _service;\n _router.events.filter(function (o) { return o instanceof Router.NavigationEnd; }).filter(function (o) { return o.url.indexOf('~inProgress') !== -1; }).subscribe(function (o) {\n if (!_service.navigation.inProgress)\n _router.navigate(['../'], { relativeTo: _route });\n });\n }\n BlankTransitionComponent = __decorate([\n core_1.Component({ template: '' }), \n __metadata('design:paramtypes', [Router.ActivatedRoute, Router.Router, services_1.SiteHeaderService])\n ], BlankTransitionComponent);\n return BlankTransitionComponent;\n}());\nexports.BlankTransitionComponent = BlankTransitionComponent;\n\n\n\n},{\"../@toolkit/reactiveComponent\":\"@toolkit/reactiveComponent\",\"../@toolkit/services\":\"@toolkit/services\",\"./loadingStep.html\":108,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"rxjs\":\"rxjs\"}],110:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar Router = require('@angular/router');\nvar ModelPages = require('./modelPages');\nvar activeRun_1 = require('./activeRun');\nvar AccountPages = require('../account/accountPages');\nvar services_1 = require('../@toolkit/services');\nvar backend_1 = require('../@toolkit/backend');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar ReactiveComponent_1 = require('../@toolkit/ReactiveComponent');\nvar notFoundPage_1 = require('../notFoundPage');\nvar ModuleLandingComponent = (function (_super) {\n __extends(ModuleLandingComponent, _super);\n function ModuleLandingComponent(_config, _clientService, _activatedRoute, _toastr, _translate, _userService, _applicationInsightsService, _router) {\n _super.call(this);\n this._config = _config;\n this._clientService = _clientService;\n this._activatedRoute = _activatedRoute;\n this._toastr = _toastr;\n this._translate = _translate;\n this._userService = _userService;\n this._applicationInsightsService = _applicationInsightsService;\n this._router = _router;\n }\n ModuleLandingComponent.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [this._userService.userInfo.filter(function (info) { return info.determined && info.loggedOn && !info.details.noRole; })\n .subscribe(function () {\n _this._translate.get('HOMEPAGE.SELECT_CLIENT_TOAST').subscribe(function (v) { return _this._toastr.info(v); });\n _this._clientService.currentClient = null;\n _this.gaInit();\n }),\n ];\n };\n ModuleLandingComponent.prototype.gaInit = function () {\n this._applicationInsightsService.send({\n eventCategory: 'Client - Runs',\n eventAction: 'PageLoaded'\n }, false);\n };\n ModuleLandingComponent = __decorate([\n core_1.Component({\n template: \"\",\n moduleId: module.id,\n }), \n __metadata('design:paramtypes', [services_1.ConfigService, services_1.ClientService, Router.ActivatedRoute, ng2_toastr_1.ToastsManager, services_1.TranslateService, services_1.UserService, services_1.ApplicationInsightsService, Router.Router])\n ], ModuleLandingComponent);\n return ModuleLandingComponent;\n}(ReactiveComponent_1.ReactiveComponent));\nexports.ModuleLandingComponent = ModuleLandingComponent;\nvar RouterOutletComponet = (function () {\n function RouterOutletComponet() {\n }\n RouterOutletComponet = __decorate([\n core_1.Component({\n template: \"\\n
\\n \\n
\",\n moduleId: module.id,\n directives: [Router.ROUTER_DIRECTIVES]\n }), \n __metadata('design:paramtypes', [])\n ], RouterOutletComponet);\n return RouterOutletComponet;\n}());\nexports.RouterOutletComponet = RouterOutletComponet;\nvar BlankComponent = (function () {\n function BlankComponent() {\n }\n BlankComponent = __decorate([\n core_1.Component({ template: '' }), \n __metadata('design:paramtypes', [])\n ], BlankComponent);\n return BlankComponent;\n}());\nexports.BlankComponent = BlankComponent;\nvar DummyComponent = (function () {\n function DummyComponent() {\n }\n DummyComponent = __decorate([\n core_1.Component({ template: '
foobar
' }), \n __metadata('design:paramtypes', [])\n ], DummyComponent);\n return DummyComponent;\n}());\nexports.DummyComponent = DummyComponent;\nfunction RouteGenerator(model) {\n var srcs = function (source) { return (source || []).reduce(function (acc, rp) { return acc.concat([rp.srcUrl], srcs(rp.children)); }, []); };\n var indexComponents = {};\n var promises = [];\n var transitionPages = [{\n path: '~loading/:page',\n component: ModelPages.LoadingStepComponent\n },\n {\n path: '~inProgress',\n component: ModelPages.BlankTransitionComponent\n }\n ];\n srcs(model.runPages).forEach(function (src) {\n if (!indexComponents[src]) {\n indexComponents[src] = true;\n var promise = System.import(backend_1.Api.ProxyProxy.redirector_url(\"clientside/\" + src).url);\n promises.push(promise);\n promise.then(function (component) { return indexComponents[src] = component; });\n }\n });\n return Promise.all(promises).then(function () {\n var services = [];\n var transformRoutes = function (rps) {\n return rps.map(function (runPage, index) {\n var module = indexComponents[runPage.srcUrl];\n runPage.$$module = module;\n var component = module[Object.keys(module)[0]];\n Object.keys(module).slice(1).forEach(function (key) { return services.push(module[key]); });\n var route = { path: runPage.identifier, component: component, canDeactivate: [activeRun_1.ProgressionGuard], canActivate: [activeRun_1.JumpGuard] };\n if (runPage.children && runPage.children.length) {\n route.children = transformRoutes(runPage.children);\n }\n if (index == 0)\n return [{ path: '', terminal: true, redirectTo: runPage.identifier },\n route];\n else\n return [route];\n }).reduce(function (acc, item) { return acc.concat(item); }, transitionPages);\n };\n var runPages = transformRoutes(model.runPages || []);\n var ret = {\n children: [\n {\n path: '',\n component: ModuleLandingComponent,\n terminal: true\n },\n {\n path: 'runs/:id',\n component: ModelPages.RunsPage,\n canActivate: [AccountPages.HasRolesGuard]\n },\n {\n path: 'run/:runid',\n component: ModelPages.ActiveRunPage,\n canActivate: [AccountPages.HasRolesGuard],\n children: runPages\n },\n {\n path: 'login',\n component: AccountPages.LoginPage\n },\n {\n path: 'norole',\n component: AccountPages.NoRolePage,\n terminal: true\n },\n { path: '**', component: notFoundPage_1.NotFoundPage }\n ],\n component: RouterOutletComponet,\n path: '',\n };\n return { routes: [ret], services: services };\n });\n}\nexports.RouteGenerator = RouteGenerator;\n;\nexports.GUARDS = [activeRun_1.ProgressionGuard, AccountPages.HasRolesGuard, activeRun_1.JumpGuard];\n\n\n\n},{\"../@toolkit/ReactiveComponent\":2,\"../@toolkit/backend\":\"@toolkit/backend\",\"../@toolkit/services\":\"@toolkit/services\",\"../account/accountPages\":94,\"../notFoundPage\":119,\"./activeRun\":105,\"./modelPages\":111,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"ng2-toastr\":\"ng2-toastr\"}],111:[function(require,module,exports){\n\"use strict\";\nvar activeRun_1 = require('./activeRun');\nexports.ActiveRunPage = activeRun_1.ActiveRunPage;\nexports.ProgressionGuard = activeRun_1.ProgressionGuard;\nvar newRun_1 = require('./newRun');\nexports.NewRunPage = newRun_1.NewRunPage;\nvar runsPage_1 = require('./runsPage');\nexports.RunsPage = runsPage_1.RunsPage;\nvar runList_1 = require('./runList');\nexports.RunListPage = runList_1.RunListPage;\nvar loadingStep_1 = require('./loadingStep');\nexports.LoadingStepComponent = loadingStep_1.LoadingStepComponent;\nexports.BlankTransitionComponent = loadingStep_1.BlankTransitionComponent;\n\n\n\n},{\"./activeRun\":105,\"./loadingStep\":109,\"./newRun\":113,\"./runList\":115,\"./runsPage\":117}],112:[function(require,module,exports){\nmodule.exports = '\\n
\\n \\n \\n \\n \\n \\n \\n \\n
\\n {{\\'RUN.CREATE.LABEL.NAME\\'|translate}}\\n \\n
\\n {{\\'RUN.CREATE.LABEL.DESCRIPTION\\'|translate}}\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{\\'RUN.CREATE.LABEL.REQUIRED_CLIENT_DETAILS\\'|translate}}\\n
\\n {{\\'RUN.CREATE.LABEL.DETAILS.\\'+item.fieldName.toUpperCase()|translate}}\\n
\\n
\\n\\n
\\n \\n
\\n\\n \\n
\\n
';\n},{}],113:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('../@toolkit/services');\nvar backend_1 = require('../@toolkit/backend');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar router_1 = require('@angular/router');\nvar ReactiveComponent_1 = require('../@toolkit/ReactiveComponent');\nvar rx_1 = require('rxjs');\nvar dynamicChild_1 = require('../dynamicChild');\nvar directives_1 = require('../@toolkit/directives');\nvar casingPipes_1 = require('../@toolkit/src/pipes/casingPipes');\nvar NewRunPage = (function (_super) {\n __extends(NewRunPage, _super);\n function NewRunPage(_config, _toastr, _clients, _router, _activatedRoute, _translate, _api, _users, _userService, _applicationInsightsService, referenceTranslationService) {\n var _this = this;\n _super.call(this);\n this._config = _config;\n this._toastr = _toastr;\n this._clients = _clients;\n this._router = _router;\n this._activatedRoute = _activatedRoute;\n this._translate = _translate;\n this._api = _api;\n this._users = _users;\n this._userService = _userService;\n this._applicationInsightsService = _applicationInsightsService;\n this.referenceTranslationService = referenceTranslationService;\n this.componentOptions = [{ name: \"setOptions\", value: function (options) { return _this.editedOptions = options; } }];\n this.camelCase = new casingPipes_1.CamelPipe();\n }\n Object.defineProperty(NewRunPage.prototype, \"currentClient\", {\n get: function () { return this._clients.currentClient; },\n enumerable: true,\n configurable: true\n });\n NewRunPage.prototype.ngOnInit = function () {\n var _this = this;\n this.editedRun = { name: '', description: '', clientId: 0, clientDetails: null, options: null, userAssignedClientDetails: null };\n this._subscriptions = [\n this._config.currentModelChanged\n .do(function (model) { return _this._requiredFields = model && model.requiredClientDetails && model.requiredClientDetails.fields.map(function (c) { return Object.assign(c, { fieldName: _this.camelCase.transform(c.fieldName) }); }); })\n .flatMap(function (model) {\n if (!model || !model.runOptionsSrcUrl)\n return rx_1.Observable.empty();\n var url = backend_1.Api.ProxyProxy.redirector_url(\"clientside/\" + model.runOptionsSrcUrl).url;\n return rx_1.Observable.fromPromise(System.import(url).then(function (module) { return module[Object.keys(module)[0]]; }));\n }).subscribe(function (type) { return _this.runOptionsType = type; }),\n this._clients.currentClientChanged.filter(function (c) { return !!c; }).flatMap(function (c) { return _this._clients.getDetails(c.clientId).uiSignal('client details'); }).subscribe(function (details) {\n _this.originalDetails = details;\n if (_this.expander)\n _this.expander.isOpen = false;\n _this.editedRun = { name: '', description: '', clientId: Number(details.id), clientDetails: Object.assign({}, details) };\n })\n ];\n };\n Object.defineProperty(NewRunPage.prototype, \"requiredFields\", {\n get: function () {\n var _this = this;\n if (!this._requiredFields)\n return [];\n this._requiredFields.forEach(function (c) {\n var aux = c;\n aux.tooltipKey = 'METRICSORDER_' + c.fieldName.split(' ').join().toUpperCase() + '_TOOLTIP';\n });\n return this._requiredFields &&\n this.originalDetails &&\n this._requiredFields.filter(function (o) { return _this.originalDetails[o.fieldName] == null; });\n },\n enumerable: true,\n configurable: true\n });\n NewRunPage.prototype.createRun = function () {\n var _this = this;\n this._api.createRun(this._config.currentModel.modelName, Object.assign({ options: this.editedOptions, userAssignedClientDetails: this.requiredFields.map(function (o) { return o.fieldName; }) }, this.editedRun)).uiSignal({ debugInfo: 'create run', uiLabel: this._translate.instant('GLOBAL.BUSY.CREATING_RUN') }).subscribe(function (ret) {\n _this.gaInit(ret.data.id);\n _this._router.navigate(['../../run', ret.data.id], { relativeTo: _this._activatedRoute });\n });\n };\n NewRunPage.prototype.gaInit = function (runId) {\n this._applicationInsightsService.send({\n eventCategory: 'Client - Runs',\n eventAction: 'RunCreated',\n runId: runId\n });\n };\n __decorate([\n core_1.ViewChild(directives_1.ExpanderComponent), \n __metadata('design:type', directives_1.ExpanderComponent)\n ], NewRunPage.prototype, \"expander\", void 0);\n NewRunPage = __decorate([\n core_1.Component({\n selector: 'new-run',\n template: require('./newRun.html'),\n moduleId: module.id,\n directives: [directives_1.VALIDATORS, directives_1.CUSTOM_VALUE_ACCESSORS, directives_1.ExpanderComponent, directives_1.TOOLTIP, dynamicChild_1.CreateDynamicChildDirective]\n }), \n __metadata('design:paramtypes', [services_1.ConfigService, ng2_toastr_1.ToastsManager, services_1.ClientService, router_1.Router, router_1.ActivatedRoute, services_1.TranslateService, backend_1.Api.RunsProxy, backend_1.Api.UserProxy, services_1.UserService, services_1.ApplicationInsightsService, services_1.ReferenceTranslationService])\n ], NewRunPage);\n return NewRunPage;\n}(ReactiveComponent_1.ReactiveComponent));\nexports.NewRunPage = NewRunPage;\n\n\n\n},{\"../@toolkit/ReactiveComponent\":2,\"../@toolkit/backend\":\"@toolkit/backend\",\"../@toolkit/directives\":\"@toolkit/directives\",\"../@toolkit/services\":\"@toolkit/services\",\"../@toolkit/src/pipes/casingPipes\":69,\"../dynamicChild\":103,\"./newRun.html\":112,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"ng2-toastr\":\"ng2-toastr\",\"rxjs\":\"rxjs\"}],114:[function(require,module,exports){\nmodule.exports = '
\\n\t
\\n\t\t
\\n\t\t\t{{\\'RUN.SAVED.PAGE_SIZE\\'|translate}}\\n\t\t\t\\n\t\t
\\n\t
\\n\t
\\n\t\t
\\n\t\t\t\\n\t\t
\\n\t
\\n\t
\\n\t\t
\\n\t\t\t{{\\'RUN.SAVED.DATE_FILTER.LABEL\\'|translate}}\\n\t\t\t\\n\t\t\t\t\\n\t\t\t\\n\t\t\t{{\\'RUN.SAVED.DATE_FILTER.AND\\'|translate}}\\n\t\t\t\\n\t\t\t\t\\n\t\t\t\\n\t\t
\\n\t
\\n\t
\\n\t\t
\\n\t\t\t\\n\t\t\t\t\\n\t\t\t\\n\t\t
\\n\t
\\n\t
\\n\t\t
{{\\'RUN.SAVED.CLEAR_FILTERS\\'|translate}}
\\n\t
\\n
\\n\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{\\'RUN.SAVED.TABLE.NAME\\'|translate}} {{\\'RUN.SAVED.TABLE.CREATED_BY\\'|translate}}{{\\'RUN.SAVED.TABLE.DATE_CREATED\\'|translate}}{{\\'RUN.SAVED.TABLE.FINAL\\'|translate}}{{\\'RUN.SAVED.TABLE.FINAL_COVERAGES\\'|translate}}{{\\'RUN.SAVED.TABLE.PROSPECT\\'|translate}}\\n \\n  
\\n\\n
';\n},{}],115:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar reactiveComponent_1 = require('../@toolkit/reactiveComponent');\nvar services_1 = require('../@toolkit/services');\nvar backend_1 = require('../@toolkit/backend');\nvar vex_1 = require('angular2-modal/plugins/vex');\nvar router_1 = require('@angular/router');\nvar rx_1 = require('rxjs');\nvar dynamicChild_1 = require('../dynamicChild');\nvar directives_1 = require('../@toolkit/directives');\nvar components_1 = require('../@toolkit/components');\nvar CT2 = require('../@toolkit/changeTracking');\nvar core_2 = require('angular2-cookie/core');\nvar moment = require('moment/moment');\nvar FinalRunModalSelect_1 = require('../@toolkit/src/components/FinalRunModalSelect');\nvar FinalRunModalDeselect_1 = require(\"../@toolkit/src/components/FinalRunModalDeselect\");\nvar LIMITSIZE_COOKIENAME = \"runMgmtLimitSize\";\nvar RunListPage = (function (_super) {\n __extends(RunListPage, _super);\n function RunListPage(_clients, _config, _runs, _users, _userService, _resolver, _router, _translate, _applicationInsightsService, _cookies, _pageService, _activatedRoute, _modal, _sharedDataService) {\n var _this = this;\n _super.call(this);\n this._clients = _clients;\n this._config = _config;\n this._runs = _runs;\n this._users = _users;\n this._userService = _userService;\n this._resolver = _resolver;\n this._router = _router;\n this._translate = _translate;\n this._applicationInsightsService = _applicationInsightsService;\n this._cookies = _cookies;\n this._pageService = _pageService;\n this._activatedRoute = _activatedRoute;\n this._modal = _modal;\n this._sharedDataService = _sharedDataService;\n this.theme = 'default';\n this.isDemoClient = false;\n this.isUnmarkFinalRunSelected = false;\n this.sharingOptions = {};\n this.searchUser = function (term) {\n return _this._users.find(term);\n };\n this.descending = false;\n this.filterValues = ['', 'creator', 'sharer', 'sharedWith', 'final'];\n this._userFilter = '';\n this.dateFilter = { from: null, to: null };\n var limitValue = this._cookies.get(LIMITSIZE_COOKIENAME);\n if (limitValue) {\n this._limit = limitValue === \"All\" ? \"All\" : parseInt(limitValue);\n }\n else\n this._limit = 10;\n }\n Object.defineProperty(RunListPage.prototype, \"runs\", {\n get: function () {\n return this._underlyingRuns;\n },\n set: function (val) {\n this._underlyingRuns = val;\n this.applyFilters();\n },\n enumerable: true,\n configurable: true\n });\n RunListPage.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [\n this._config.currentModelChanged\n .combineLatest(this._clients.currentClientChanged)\n .flatMap(function (opt) { return _this._runs.list(opt[0].modelId, opt[1].clientId).uiSignal('load run list'); })\n .subscribe(function (ret) {\n _this.runs = ret.data.sort(function (a, b) { return new Date(b.info.createDate).getTime() -\n new Date(a.info.createDate).getTime(); });\n _this.changeTracker.commit();\n }),\n this._config.currentModelChanged.do(function () { return _this.hasOptions = false; })\n .flatMap(function (model) {\n if (!model || !model.runOptionsListDisplaySrcUrl)\n return rx_1.Observable.empty();\n var url = backend_1.Api.ProxyProxy.redirector_url(\"clientside/\" + model.runOptionsListDisplaySrcUrl).url;\n return rx_1.Observable.fromPromise(System.import(url).then(function (module) { return module[Object.keys(module)[0]]; }));\n })\n .flatMap(function (component) { return _this._resolver.resolveComponent(component); })\n .subscribe(function (factory) {\n _this._component = dynamicChild_1.createDynamicChild(factory, _this.runOptionsView, 0);\n _this.hasOptions = true;\n }), this._clients.currentClientChanged\n .subscribe(function (c) {\n _this.currentClient = c;\n _this.demoClient(_this.currentClient.clientId);\n if (_this._config.currentModel.useMultipleFinalRun) {\n _this.finalRuns = [];\n _this._runs.getFullFinalRuns(_this._config.currentModel.modelId, _this.currentClient.clientId).subscribe(function (x) {\n _this.finalRuns = x.data;\n });\n }\n }),\n this._userService.userInfo.subscribe(function (info) {\n _this.currentUser = info.details;\n }),\n this._config.currentModelChanged.subscribe(function (m) { _this.modell = m.modelName; }),\n ];\n this._translate.onLangChange.subscribe(function (e) {\n var prevlimitSize = _this.limitSize;\n _this.limitSize = 0;\n setTimeout(function () { return _this.limitSize = prevlimitSize; }, 10);\n });\n this.isMultipleFinalRuns = this._config.currentModel.useMultipleFinalRun;\n };\n RunListPage.prototype.demoClient = function (clientId) {\n var _this = this;\n this._config.settings.subscribe(function (o) {\n if (o.demoClientIds.find(function (o) { return o == clientId; })) {\n _this.isDemoClient = true;\n if (!_this.filterValues.find(function (o) { return o === 'prospect'; })) {\n _this.filterValues.push('prospect');\n }\n }\n else {\n _this.isDemoClient = false;\n _this.filterValues = _this.filterValues.filter(function (o) { return o !== 'prospect'; });\n }\n });\n };\n RunListPage.prototype.delete = function (runId) {\n var _this = this;\n rx_1.Observable.fromPromise(this._modal.confirm().message(this._translate.instant('RUN.SAVED.MESSAGE.DELETE_RUN'))\n .okBtn(this._translate.instant('GLOBAL.YES'))\n .cancelBtn(this._translate.instant('GLOBAL.NO'))\n .open()\n .then(function (dialog) { return dialog.result.then(function () { return true; }, function () { return false; }); }))\n .filter(function (ok) { return ok; })\n .flatMap(function () { return _this._runs.delete(runId).uiSignal({ debugInfo: 'delete run', uiLabel: _this._translate.instant('GLOBAL.BUSY.DELETING') }); })\n .subscribe(function (ret) {\n if (ret.data.removed) {\n if (_this.isMultipleFinalRuns) {\n _this._runs.deleteFinalRun(runId).subscribe(function (x) {\n _this.runs = _this.runs.filter(function (o) { return o.runId !== runId; });\n _this.changeTracker.commit(['runs', runId]);\n _this.selectedRun = null;\n });\n }\n else {\n _this.runs = _this.runs.filter(function (o) { return o.runId !== runId; });\n _this.changeTracker.commit(['runs', runId]);\n _this.selectedRun = null;\n }\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs',\n eventAction: 'RunDeleted',\n runId: runId\n });\n }\n });\n };\n RunListPage.prototype.load = function (runId, navigate) {\n this._applicationInsightsService.send({\n eventCategory: 'Client - Runs',\n eventAction: 'RunLoaded',\n runId: runId\n });\n if (navigate)\n this._router.navigate(['../../run', runId], { relativeTo: this._activatedRoute });\n };\n RunListPage.prototype.clone = function (runId) {\n var _this = this;\n var initial = ('Clone of ' + this.runs.find(function (rm) { return rm.runId == runId; }).info.name).slice(0, 100);\n this._modal.confirm().message(this._translate.instant('RUN.SAVED.MESSAGE.CONFIRM_CLONE'))\n .okBtn(this._translate.instant('GLOBAL.YES'))\n .cancelBtn(this._translate.instant('GLOBAL.NO'))\n .open().then(function (dialog) { return dialog.result.then(function () { return true; }, function () { return false; }); })\n .then(function (ret) {\n if (ret) {\n _this._runs.clone({ runId: runId, newName: initial }).uiSignal({ debugInfo: 'clone run', uiLabel: _this._translate.instant('GLOBAL.BUSY.CLONING_RUN') })\n .subscribe(function (ret) {\n _this.runs = [ret.data].concat(_this.runs);\n _this.changeTracker.commit(['runs', ret.data.runId]);\n _this.selectedRun = ret.data;\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs',\n eventAction: 'RunCloned',\n runId: ret.data.runId\n });\n });\n }\n });\n };\n RunListPage.prototype.multipleFinalRun = function (run) {\n var _this = this;\n var runId = 0;\n this._sharedDataService.setOption(\"runId\", run.info.runId);\n this._sharedDataService.setOption(\"modelId\", run.info.modelId);\n this._sharedDataService.setOption(\"name\", run.info.name);\n this._sharedDataService.setOption(\"clientId\", run.info.clientId);\n var dialog = new vex_1.DialogPresetBuilder(this._modal)\n .className(this.theme)\n .content(FinalRunModalSelect_1.FinalRunModalSelect)\n .open().then(function (dialog) { return dialog.result.then(function (result) {\n _this._runs.updateRunInfo(run.runId, run.info).uiSignal({ debugInfo: 'update run info', uiLabel: _this._translate.instant('GLOBAL.BUSY.PERSISTING') }).subscribe(function (x) {\n run.info.saveDate = new Date();\n run.info.userDisplayName = _this._userService.currentUserInfo.fullName;\n run.info.userName = _this._userService.currentUserInfo.domain + \"\\\\\" + _this._userService.currentUserInfo.username;\n run.info.isFinalRunSelected = true;\n setTimeout(function () {\n _this.refreshData(run.info.clientId, run.runId);\n }, 3000);\n });\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: \"Run marked Final\",\n runId: run.runId\n });\n }, function () {\n if (run.info.finalCoverages != null && run.info.finalCoverages.length > 0)\n run.info.isFinalRunSelected = true;\n else\n run.info.isFinalRunSelected = false;\n }); });\n };\n RunListPage.prototype.deselectFinalRun = function (run) {\n var _this = this;\n this._sharedDataService.setOption(\"runId\", run.info.runId);\n var dialog = new vex_1.DialogPresetBuilder(this._modal)\n .className(this.theme)\n .content(FinalRunModalDeselect_1.FinalRunModalDeselect)\n .open().then(function (dialog) { return dialog.result.then(function (result) {\n _this.isUnmarkFinalRunSelected = false;\n setTimeout(function () {\n _this.refreshData(run.info.clientId, run.runId);\n }, 3000);\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: \"Run unmarked Final\",\n runId: run.runId\n });\n }, function () {\n _this.isUnmarkFinalRunSelected = false;\n }); });\n };\n RunListPage.prototype.commitSaveDateChanges = function () {\n var _this = this;\n this.filteredRuns.forEach(function (x) {\n if (_this.changeTracker.isChangedAt([\"runs\", x.runId, \"info\", \"saveDate\"]))\n _this.changeTracker.commit([\"runs\", x.runId, \"info\", \"saveDate\"]);\n });\n };\n RunListPage.prototype.refreshData = function (clientId, runId) {\n var _this = this;\n this.finalRuns = [];\n this._runs.getFullFinalRuns(this._config.currentModel.modelId, clientId).subscribe(function (x) {\n _this.finalRuns = x.data;\n if (_this.isMultipleFinalRuns && _this.filteredRuns) {\n _this.mapFinalRunsToFilteredRuns();\n }\n _this.changeTracker.commit(['runs', runId]);\n });\n };\n RunListPage.prototype.final = function (isFinalized, run) {\n var _this = this;\n if (this._config.currentModel.useMultipleFinalRun) {\n if (isFinalized) {\n this.multipleFinalRun(run);\n }\n else {\n this.deselectFinalRun(run);\n }\n }\n else {\n if (isFinalized) {\n var runId_1 = 0;\n var dialog = new vex_1.DialogPresetBuilder(this._modal)\n .className(this.theme)\n .content(components_1.CustomModal)\n .open().then(function (dialog) { return dialog.result.then(function (result) {\n var policyYear = result;\n _this._runs.getFinalRunIds(_this._config.currentModel.modelId, run.info.clientId, policyYear).subscribe(function (o) {\n if (o.data.runIds.length > 0) {\n runId_1 = o.data.runIds[0];\n }\n if (runId_1 === 0) {\n _this.updateRunStatus(run, _this._config.currentModel.modelId, policyYear);\n }\n else {\n _this._runs.setRunStatus(_this._config.currentModel.modelId, runId_1, false, policyYear).subscribe(function (o) {\n if (o.data.valueOf) {\n var item = _this.runs.find(function (o) { return o.runId === runId_1; });\n if (item) {\n item.info.isFinalized = false;\n _this.changeTracker.commit(['runs', runId_1]);\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: \"Run marked Final\",\n runId: run.runId\n });\n _this.updateRunStatus(run, _this._config.currentModel.modelId, policyYear);\n }\n }\n });\n }\n });\n }, function () {\n run.info.isFinalized = false;\n }); });\n }\n else {\n var dialog = new vex_1.DialogPresetBuilder(this._modal)\n .className(this.theme)\n .content(components_1.CustomModalDeselect)\n .open().then(function (dialog) { return dialog.result.then(function (result) {\n _this._runs.setRunStatus(_this._config.currentModel.modelId, run.runId, false, run.info.policyYear).subscribe(function (o) {\n _this.changeTracker.commit(['runs', run.runId]);\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: \"Run unmarked Final\",\n runId: run.runId\n });\n });\n }, function () {\n run.info.isFinalized = true;\n }); });\n }\n }\n };\n RunListPage.prototype.prospect = function (isProspect, run) {\n var _this = this;\n var msg = null;\n var gaMsg = null;\n if (isProspect) {\n msg = this._translate.instant('RUN.PROSPECT.MESSAGE.TEXT_SELECT');\n gaMsg = 'Run is marked as Client / Prospect';\n }\n else {\n msg = this._translate.instant('RUN.PROSPECT.MESSAGE.TEXT_DESELECT');\n gaMsg = 'Run is unmarked as Client / Prospect';\n }\n this._modal.confirm().message(msg)\n .okBtn(this._translate.instant('GLOBAL.YES'))\n .cancelBtn(this._translate.instant('GLOBAL.NO'))\n .open().then(function (dialog) { return dialog.result.then(function () { return true; }, function () { return false; }); })\n .then(function (ret) {\n if (ret) {\n _this._subscriptions.push(_this._runs.setProspectStatus(_this._config.currentModel.modelId, run.runId, isProspect).subscribe(function (o) {\n _this.changeTracker.commit(['runs', run.runId]);\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: gaMsg,\n runId: run.runId\n });\n if (o.data.valueOf) {\n _this._subscriptions.push(_this._runs.get(run.runId).subscribe(function (o) {\n _this.runs.find(function (x) { return x.runId === run.runId; }).info = o.data.info;\n _this.changeTracker.commit(['runs', run.runId]);\n }));\n }\n }));\n }\n else {\n run.info.isProspect = !isProspect;\n }\n });\n };\n RunListPage.prototype.updateRunStatus = function (run, model, policyYear) {\n var _this = this;\n this._subscriptions.push(this._runs.setRunStatus(model, run.runId, true, policyYear).subscribe(function (o) {\n if (o.data.valueOf) {\n _this._subscriptions.push(_this._runs.get(run.runId).subscribe(function (o) {\n _this.runs.find(function (x) { return x.runId === run.runId; }).info = o.data.info;\n _this.changeTracker.commit(['runs', run.runId]);\n }));\n }\n }));\n };\n RunListPage.prototype.save = function (runInfo) {\n this._runs.updateRunInfo(runInfo.runId, runInfo).uiSignal({ debugInfo: 'update run info', uiLabel: this._translate.instant('GLOBAL.BUSY.PERSISTING') }).fireAndForget();\n runInfo.saveDate = new Date();\n runInfo.userDisplayName = this._userService.currentUserInfo.fullName;\n runInfo.userName = this._userService.currentUserInfo.domain + \"\\\\\" + this._userService.currentUserInfo.username;\n if (this.isMultipleFinalRuns)\n this._runs.updateFinalRunDetails(runInfo.runId, runInfo.name).subscribe(function (x) { });\n this.changeTracker.commit(['runs', runInfo.runId]);\n };\n RunListPage.prototype.share = function (run) {\n this.sharingOptions.open = true;\n this.sharingOptions.sharedWith = (run.info.sharedWith || []).slice(0);\n this.sharingOptions.firstTime = !run.info.sharedWith || !run.info.sharedWith.length;\n this.sharingOptions.runId = run.runId;\n };\n RunListPage.prototype.changeRow = function (row) {\n var _this = this;\n if (row == this.selectedRun)\n row = null;\n if (this.sharingOptions.open) {\n this._modal.confirm().message(this._translate.instant('RUN.SAVED.MESSAGE.SHARING_UNSAVED'))\n .okBtn(this._translate.instant('GLOBAL.YES'))\n .cancelBtn(this._translate.instant('GLOBAL.NO'))\n .open().then(function (dialog) { return dialog.result.then(function () { return true; }, function () { return false; }); })\n .then(function (ret) {\n if (ret) {\n _this.selectedRun = row;\n _this.sharingOptions = {};\n }\n });\n }\n else {\n this.selectedRun = row;\n }\n };\n RunListPage.prototype.addShare = function (user) {\n var fresh = {\n runId: -1, shareDate: new Date(), userName: user.domain + \"\\\\\" + user.userName, userDisplayName: user.displayName\n };\n if (this.sharingOptions.sharedWith.find(function (o) { return o.userName === fresh.userName; })) {\n this._modal.alert().okBtn(this._translate.instant(\"GLOBAL.BTN.OK\")).message(this._translate.instant('RUN.SAVED.MESSAGE.SHARING_ALREADY')).open();\n }\n else {\n this.sharingOptions.sharedWith.push(fresh);\n if (!this.sharingOptions.changes)\n this.sharingOptions.changes = {\n addedUsers: [], removedUsers: []\n };\n this.sharingOptions.changes.addedUsers.push(fresh.userName);\n }\n this.sharingOptions.results = [];\n this.sharingOptions.userSearchTerm = null;\n this.sharingOptions.deleting = false;\n };\n RunListPage.prototype.removeShare = function (share) {\n var _this = this;\n this._modal.confirm().message(this._translate.instant('RUN.SAVED.MESSAGE.SHARING_CONFIRM_REMOVE')).okBtn(this._translate.instant('GLOBAL.YES'))\n .cancelBtn(this._translate.instant('GLOBAL.NO'))\n .open()\n .then(function (dialog) { return dialog.result.then(function () { return true; }, function () { return false; }); })\n .then(function (ret) {\n if (!ret)\n return;\n if (!_this.sharingOptions.changes)\n _this.sharingOptions.changes = {\n addedUsers: [], removedUsers: []\n };\n _this.sharingOptions.changes.removedUsers.push(share.userName);\n _this.sharingOptions.sharedWith = _this.sharingOptions.sharedWith.filter(function (o) { return o !== share; });\n _this.sharingOptions.deleting = !_this.sharingOptions.firstTime && _this.sharingOptions.sharedWith.length === 0;\n });\n };\n RunListPage.prototype.hideSharing = function () {\n this.sharingOptions = {};\n };\n RunListPage.prototype.saveSharing = function () {\n var _this = this;\n if (this.sharingOptions.firstTime) {\n this._runs.createShare(this.sharingOptions.runId, this.sharingOptions.changes)\n .uiSignal({ debugInfo: 'creating share', uiLabel: this._translate.instant('GLOBAL.BUSY.CREATING_RUN') })\n .subscribe(function (ret) {\n _this.runs = [ret.data].concat(_this.runs);\n _this.selectedRun = ret.data;\n _this.sharingOptions = {};\n _this.changeTracker.commit(['runs', ret.data.runId]);\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs',\n eventAction: 'RunShareCreated',\n runId: ret.data.runId\n });\n });\n }\n else if (this.sharingOptions.deleting) {\n rx_1.Observable.fromPromise(this._modal.confirm().message(this._translate.instant('RUN.SAVED.MESSAGE.SHARING_DELETING'))\n .okBtn(this._translate.instant('GLOBAL.YES'))\n .cancelBtn(this._translate.instant('GLOBAL.NO'))\n .open()\n .then(function (dialog) { return dialog.result.then(function () { return true; }, function () { return false; }); }))\n .filter(function (ok) { return ok; })\n .flatMap(function () { return _this._runs.delete(_this.sharingOptions.runId).uiSignal({ debugInfo: 'delete shared run ', uiLabel: _this._translate.instant('GLOBAL.BUSY.DELETING') }); })\n .subscribe(function (ret) {\n if (ret.data.removed) {\n var id_1 = _this.sharingOptions.runId;\n _this.runs = _this.runs.filter(function (o) { return o.runId !== id_1; });\n _this.selectedRun = null;\n _this.sharingOptions = {};\n _this.changeTracker.commit(['runs', id_1]);\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: 'RunShareDeleted',\n runId: id_1\n });\n }\n });\n }\n else {\n this._runs.manageShares(this.sharingOptions.runId, this.sharingOptions.changes).uiSignal({ debugInfo: 'saving share', uiLabel: this._translate.instant('GLOBAL.BUSY.PERSISTING') }).subscribe(function (ret) {\n var id = _this.sharingOptions.runId;\n _this.selectedRun.info.sharedWith = ret.data;\n _this.changeTracker.commit(['runs', _this.sharingOptions.runId, 'info', 'sharedWith']);\n _this.selectedRun = null;\n _this.sharingOptions = {};\n _this._applicationInsightsService.send({\n eventCategory: 'Client - Runs', eventAction: 'RunShareUpdated',\n runId: id\n });\n });\n }\n };\n Object.defineProperty(RunListPage.prototype, \"optionsItemTemplate\", {\n get: function () { return this._component && this._component.instance && this._component.instance.itemTemplate; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RunListPage.prototype, \"limitSize\", {\n get: function () {\n return this._limit || 10;\n },\n set: function (value) {\n var all = this._translate.instant('RUN.SAVED.ALL');\n if (value !== this._limit && (typeof value === \"number\" || value === all)) {\n this._cookies.put(LIMITSIZE_COOKIENAME, value.toString());\n this._limit = value;\n this.applyFilters();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RunListPage.prototype, \"sortBy\", {\n get: function () {\n return this._sortBy;\n },\n set: function (field) {\n if (field === this._sortBy)\n this.descending = !this.descending;\n else\n this.descending = false;\n this._sortBy = field;\n this.applyFilters();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RunListPage.prototype, \"searchExp\", {\n get: function () {\n return this._searchExp;\n },\n set: function (exp) {\n exp = exp && exp.trim();\n if (!exp)\n exp = null;\n if (exp !== this._searchExp) {\n this._searchExp = exp;\n this.applyFilters();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RunListPage.prototype, \"userFilter\", {\n get: function () {\n return this._userFilter;\n },\n set: function (type) {\n if (type !== this._userFilter) {\n this._userFilter = type;\n this.applyFilters();\n }\n },\n enumerable: true,\n configurable: true\n });\n RunListPage.prototype.clearFilters = function () {\n this.userFilter = '';\n this.dateFilter = { from: null, to: null };\n this.searchExp = null;\n this.sortBy = null;\n };\n RunListPage.prototype.applyFilters = function () {\n var _this = this;\n if (this.runs && this.runs.length > 0) {\n var pipeline = this.runs.slice(0);\n var userFilter_1 = this.userFilter;\n if (userFilter_1) {\n var me_1 = (this._userService.currentUserInfo.domain + \"\\\\\" + this._userService.currentUserInfo.username)\n .toUpperCase();\n pipeline = pipeline.filter(function (o) {\n switch (userFilter_1) {\n case 'creator':\n return o.info.creatorUserName.toUpperCase() === me_1;\n case 'sharer':\n return o.info.creatorUserName.toUpperCase() === me_1 &&\n o.info.sharedWith &&\n !!o.info.sharedWith.length;\n case 'sharedWith':\n return o.info.creatorUserName.toUpperCase() !== me_1 &&\n o.info.sharedWith &&\n !!o.info.sharedWith.length;\n case 'final':\n if (_this.isMultipleFinalRuns)\n return o.info.isFinalRunSelected === true;\n else\n return o.info.isFinalized === true;\n case 'prospect':\n return o.info.isProspect === true;\n default:\n return true;\n }\n });\n }\n if (this.dateFilter.from || this.dateFilter.to) {\n var from_1 = moment.utc(new Date(0));\n var to_1 = moment.utc();\n if (this.dateFilter.from)\n from_1 = moment.utc(this.dateFilter.from).startOf('day');\n if (this.dateFilter.to)\n to_1 = moment.utc(this.dateFilter.to).endOf('day');\n pipeline = pipeline.filter(function (o) {\n var creation = moment.utc(o.info.createDate);\n return creation.isBetween(from_1, to_1) || creation.isSame(from_1) || creation.isSame(to_1);\n });\n }\n var exp_1 = this.searchExp && this.searchExp.toLowerCase();\n if (exp_1)\n pipeline = pipeline.filter(function (o) { return o.info.name.toLowerCase().indexOf(exp_1) !== -1 ||\n o.info.description.toLowerCase().indexOf(exp_1) !== -1; });\n var nullsafeToLower_1 = function (s) { return !!s ? String(s).toLowerCase() : String(s); };\n var sort_1 = this.sortBy;\n if (sort_1) {\n pipeline = pipeline.sort(function (a, b) {\n return (+(nullsafeToLower_1(a.info[sort_1]) > nullsafeToLower_1(b.info[sort_1])) -\n +(nullsafeToLower_1(a.info[sort_1]) < nullsafeToLower_1(b.info[sort_1]))) *\n (_this.descending ? -1 : 1);\n });\n }\n var limit = this.limitSize;\n if (typeof limit === \"number\") {\n pipeline = pipeline.slice(0, limit);\n }\n this.filteredRuns = pipeline;\n if (this.isMultipleFinalRuns && this.filteredRuns)\n this.mapFinalRunsToFilteredRuns();\n this._clients.runCountChanged.next({ total: this.runs.length, shown: this.filteredRuns.length });\n if (this.isMultipleFinalRuns && this.filteredRuns)\n setInterval(function () { return _this.commitSaveDateChanges(); }, 3000);\n }\n };\n RunListPage.prototype.mapFinalRunsToFilteredRuns = function () {\n var _this = this;\n if (this.finalRuns) {\n this.finalRuns.forEach(function (x) {\n var currentRun = _this.filteredRuns.find(function (y) { return y.runId === x.runId; });\n if (currentRun) {\n currentRun.info.isFinalRunSelected = x.isFinalized;\n currentRun.info.finalCoverages = _this.checkIfFinalRun(x.runId);\n }\n });\n this.changeTracker.commit();\n }\n };\n RunListPage.prototype.checkIfFinalRun = function (runId) {\n var currentCoverages = [];\n if (this.finalRuns.find(function (x) { return x.runId === runId; }))\n this.finalRuns.filter(function (x) { return x.runId === runId && x.isFinalized === true; }).forEach(function (x) {\n currentCoverages.push(x.lob);\n });\n return currentCoverages;\n };\n RunListPage.prototype.checkRunIsFinal = function (runId) {\n var final = false;\n if (this.finalRuns.find(function (x) { return x.runId === runId; })) {\n this.finalRuns.filter(function (x) { return x.runId === runId && x.isFinalized === true; }).forEach(function (x) {\n final = x.isFinalized;\n });\n }\n if (final)\n return true;\n else\n return false;\n };\n __decorate([\n CT2.TrackChanges({ itemKey: 'runId' }), \n __metadata('design:type', Object)\n ], RunListPage.prototype, \"runs\", null);\n __decorate([\n CT2.ChangeTracker(), \n __metadata('design:type', CT2.Changes)\n ], RunListPage.prototype, \"changeTracker\", void 0);\n __decorate([\n core_1.ViewChild('headerAnchor', { read: core_1.ViewContainerRef }), \n __metadata('design:type', core_1.ViewContainerRef)\n ], RunListPage.prototype, \"runOptionsView\", void 0);\n RunListPage = __decorate([\n core_1.Component({\n selector: 'run-list',\n template: require('./runList.html'),\n moduleId: module.id,\n directives: [directives_1.CLICK_INPUT_DIRECTIVE, directives_1.ScrollDirective, directives_1.VALIDATORS, directives_1.AUTOCOMPLETE, directives_1.ExpanderComponent, directives_1.CUSTOM_VALUE_ACCESSORS, router_1.ROUTER_DIRECTIVES, components_1.ProgressIndicatorComponent, directives_1.TOOLTIP],\n styles: [\"autocomplete /deep/ ul {max-height:160px;}\"]\n }), \n __metadata('design:paramtypes', [services_1.ClientService, services_1.ConfigService, backend_1.Api.RunsProxy, backend_1.Api.UserProxy, services_1.UserService, core_1.ComponentResolver, router_1.Router, services_1.TranslateService, services_1.ApplicationInsightsService, core_2.CookieService, services_1.PageService, router_1.ActivatedRoute, vex_1.Modal, services_1.SharedDataService])\n ], RunListPage);\n return RunListPage;\n}(reactiveComponent_1.ReactiveComponent));\nexports.RunListPage = RunListPage;\n\n\n\n},{\"../@toolkit/backend\":\"@toolkit/backend\",\"../@toolkit/changeTracking\":\"@toolkit/changeTracking\",\"../@toolkit/components\":\"@toolkit/components\",\"../@toolkit/directives\":\"@toolkit/directives\",\"../@toolkit/reactiveComponent\":\"@toolkit/reactiveComponent\",\"../@toolkit/services\":\"@toolkit/services\",\"../@toolkit/src/components/FinalRunModalDeselect\":20,\"../@toolkit/src/components/FinalRunModalSelect\":21,\"../dynamicChild\":103,\"./runList.html\":114,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"angular2-cookie/core\":\"angular2-cookie/core\",\"angular2-modal/plugins/vex\":\"angular2-modal/plugins/vex\",\"moment/moment\":1,\"rxjs\":\"rxjs\"}],116:[function(require,module,exports){\nmodule.exports = '\\n \\n
\\n
\\n
\\n {{\\'RUN.TABS.SAVED\\'|translate}}\\n ({{\\'RUN.SAVED.RUN_COUNT\\'|translate:runCount}})\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n {{\\'RUN.TABS.CREATE_HEADER\\'|translate}}\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n

This version of D&O Quantified has been discontinued. Please visit the new model at https://doquantified.willistowerswatson.com to create new runs.

\\n
\\n
\\n \\n
\\n
\\n
\\n {{\\'RUN.TABS.\\'+page.displayResourceName|uppercase|translate}}\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n\\n\\n';\n},{}],117:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar router_1 = require('@angular/router');\nvar services_1 = require('../@toolkit/services');\nvar backend_1 = require('../@toolkit/backend');\nvar ReactiveComponent_1 = require('../@toolkit/ReactiveComponent');\nvar runList_1 = require('./runList');\nvar newRun_1 = require('./newRun');\nvar ng2_toastr_1 = require('ng2-toastr');\nvar dynamicChild_1 = require('../dynamicChild');\nvar clientSearch_1 = require('./clientSearch');\nvar DIRECTIVES = require('../@toolkit/directives');\nvar RunsPage = (function (_super) {\n __extends(RunsPage, _super);\n function RunsPage(_clientService, _userService, _config, _activatedRoute, _router, _translate, _toasts, _runs) {\n _super.call(this);\n this._clientService = _clientService;\n this._userService = _userService;\n this._config = _config;\n this._activatedRoute = _activatedRoute;\n this._router = _router;\n this._translate = _translate;\n this._toasts = _toasts;\n this._runs = _runs;\n this.tabsState = { newRun: true };\n this.runCount = null;\n this.dynamicPages = [];\n }\n RunsPage.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [\n this._activatedRoute.params.subscribe(function (params) {\n var id = params[\"id\"];\n _this._clientService.loadById(id).subscribe(function (client) {\n _this.currentClient = client;\n if (!client) {\n _this._translate.get('GLOBAL.TOASTS.CLIENT_NOT_FOUND').subscribe(function (m) {\n _this._toasts.error(m);\n _this._router.navigate(['/']);\n });\n }\n });\n }),\n this._userService.userInfo.subscribe(function (info) {\n _this.currentUser = info.details;\n }),\n this._config.currentModelChanged.subscribe(function (m) { _this.modell = m.modelName; }),\n this._clientService.runCountChanged.subscribe(function (val) { return _this.runCount = val; }),\n this._config.currentModelChanged.subscribe(function (model) {\n if (model.managementPages) {\n model.managementPages.forEach(function (m, i) {\n var url = backend_1.Api.ProxyProxy.redirector_url(\"clientside/\" + m.srcUrl).url;\n _this.dynamicPages.push({\n index: i,\n displayResourceName: m.displayResourceName,\n component: null\n });\n System.import(url)\n .then(function (module) {\n _this.dynamicPages.find(function (x) { return x.index === i; }).component = module[Object.keys(module)[0]];\n });\n });\n }\n else\n _this.dynamicPages = [];\n })\n ];\n };\n RunsPage.prototype.toggle = function (tabName) {\n var _this = this;\n var keys = Object.keys(this.tabsState);\n keys.filter(function (k) { return k != tabName; }).forEach(function (k) { return _this.tabsState[k] = false; });\n this.tabsState[tabName] = true;\n };\n RunsPage = __decorate([\n core_1.Component({\n template: require('./runsPage.html'),\n moduleId: module.id,\n directives: [clientSearch_1.ClientSearch, runList_1.RunListPage, newRun_1.NewRunPage, dynamicChild_1.CreateDynamicChildDirective, DIRECTIVES.TAB_DIRECTIVE]\n }), \n __metadata('design:paramtypes', [services_1.ClientService, services_1.UserService, services_1.ConfigService, router_1.ActivatedRoute, router_1.Router, services_1.TranslateService, ng2_toastr_1.ToastsManager, backend_1.Api.RunsProxy])\n ], RunsPage);\n return RunsPage;\n}(ReactiveComponent_1.ReactiveComponent));\nexports.RunsPage = RunsPage;\n\n\n\n},{\"../@toolkit/ReactiveComponent\":2,\"../@toolkit/backend\":\"@toolkit/backend\",\"../@toolkit/directives\":\"@toolkit/directives\",\"../@toolkit/services\":\"@toolkit/services\",\"../dynamicChild\":103,\"./clientSearch\":107,\"./newRun\":113,\"./runList\":115,\"./runsPage.html\":116,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"ng2-toastr\":\"ng2-toastr\"}],118:[function(require,module,exports){\nmodule.exports = '
\\n

{{\\'NOTFOUND.INFO\\'|translate}}

\\n
\\n
    \\n
  1. \\n {{\\'NOTFOUND.INSTRUCTIONS\\'|translate}}\\n
  2. \\n
  3. {{\\'NOTFOUND.RETURN_LINK\\'|translate}}
  4. \\n
\\n
\\n
';\n},{}],119:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('./@toolkit/services');\nvar reactiveComponent_1 = require('./@toolkit/reactiveComponent');\nvar router_1 = require('@angular/router');\nvar NotFoundPage = (function (_super) {\n __extends(NotFoundPage, _super);\n function NotFoundPage(_config) {\n _super.call(this);\n this._config = _config;\n }\n NotFoundPage.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [this._config.currentModelChanged.subscribe(function (model) { return _this.email = model.contactEmail; })];\n };\n NotFoundPage = __decorate([\n core_1.Component({\n template: require('./notFoundPage.html'),\n moduleId: module.id,\n directives: [router_1.ROUTER_DIRECTIVES]\n }), \n __metadata('design:paramtypes', [services_1.ConfigService])\n ], NotFoundPage);\n return NotFoundPage;\n}(reactiveComponent_1.ReactiveComponent));\nexports.NotFoundPage = NotFoundPage;\n\n\n\n},{\"./@toolkit/reactiveComponent\":\"@toolkit/reactiveComponent\",\"./@toolkit/services\":\"@toolkit/services\",\"./notFoundPage.html\":118,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\"}],120:[function(require,module,exports){\nmodule.exports = '\\n\\n';\n},{}],121:[function(require,module,exports){\nmodule.exports = '
\\n \\n \\n \\n \\n\\n \\n\\n \\n
{{\\'CURRENT_MODEL.TITLE\\'|translate}} \\n \\n {{currentUser.fullName}}  {{(\\'SITE_HEADER.ROLE.\\'+currentUser.role.toUpperCase())|translate}}\\n  \\n {{\\'SITE_HEADER.LOG_OFF\\'|translate}}\\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{header.navigation.previous|translate}} {{header.navigation.next|translate}}
\\n

{{(header.navigation.inProgress?\\'SITE_HEADER.LOADING\\':header.navigation.current)|translate}}

\\n
\\n';\n},{}],122:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require('@angular/core');\nvar services_1 = require('./@toolkit/services');\nvar backend_1 = require('./@toolkit/backend');\nvar components_1 = require('./@toolkit/components');\nvar Router = require('@angular/router');\nvar clientSearch_1 = require('./models/clientSearch');\nvar ReactiveComponent_1 = require('./@toolkit/ReactiveComponent');\nvar authProvider_1 = require('./account/authProvider');\nvar vex_1 = require('angular2-modal/plugins/vex');\nvar components_2 = require('./@toolkit/components');\nvar Rx = require('rxjs');\nfunction findMode(_router) {\n if (_router.routerState.snapshot.url.startsWith('/run/'))\n return {\n mode: services_1.SiteHeaderService.NAVIGATION_MODE, start: /\\/run\\/\\d+\\/([^\\/]+)/g.exec(_router.routerState.snapshot.url)[1]\n };\n else\n return { mode: services_1.SiteHeaderService.MAIN_MODE, start: null };\n}\nvar SiteHeaderComponent = (function (_super) {\n __extends(SiteHeaderComponent, _super);\n function SiteHeaderComponent(header, _userService, _router, _window, _configService, _clientService, _translate, _runService, _navigationService, _modal, _auth) {\n _super.call(this);\n this._userService = _userService;\n this._router = _router;\n this._window = _window;\n this._configService = _configService;\n this._clientService = _clientService;\n this._translate = _translate;\n this._runService = _runService;\n this._navigationService = _navigationService;\n this._modal = _modal;\n this._auth = _auth;\n this.isMainHeader = new Rx.Subject();\n this.isNavHeader = new Rx.Subject();\n this.showMLMenu = false;\n this.header = header;\n }\n SiteHeaderComponent.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [this._userService.userInfo.subscribe(function (data) { return _this.canSearch = data.loggedOn && data.details && !data.details.noRole; }),\n this._router.events.filter(function (s) { return s instanceof Router.NavigationEnd; })\n .subscribe(function (s) {\n var setup = findMode(_this._router);\n if (setup.start && !setup.start.startsWith('~'))\n _this.header.setTo(setup.start);\n _this.mode = setup.mode;\n setTimeout(function () {\n _this.isMainHeader.next(_this.mode === services_1.SiteHeaderService.MAIN_MODE);\n _this.isNavHeader.next(_this.mode === services_1.SiteHeaderService.NAVIGATION_MODE);\n }, 1);\n if (_this.mode === services_1.SiteHeaderService.MAIN_MODE)\n _this._runService.setSnapshot(null);\n _this.toggleMultiLevelMenu(null, false);\n }),\n this._userService.userInfo.subscribe(function (info) {\n _this.currentUser = info.details;\n if (!info.loggedOn || !info.details) {\n var verification = Rx.Observable.of(false);\n if (!info.unauthorized)\n verification = _this._auth.verify(_this.currentModel.modelName);\n verification.subscribe(function (success) {\n if (success)\n _this._auth.refreshUser();\n else\n _this.attemptAuth();\n });\n }\n else if (info.details.noRole) {\n _this._router.navigate(['/norole']);\n }\n }),\n this._userService.onUnauthorized.subscribe(function () {\n _this._translate.get('GLOBAL.ERRORS.SESSION_TIMEOUT').subscribe(function (r) {\n return _this._modal.alert().okBtn(_this._translate.instant(\"GLOBAL.BTN.OK\")).message(r).open();\n });\n }),\n this._configService.currentModelChanged.subscribe(function (m) { return _this.showMenu = m.optionalUiFeatures && m.optionalUiFeatures.navigationMenu; }),\n this._clientService.currentClientChanged.subscribe(function (c) { return _this.homeUrl = c && \"/runs/\" + c.clientId || '/'; }),\n this._navigationService.navigationChanged.subscribe(function (u) { return _this.toggleMultiLevelMenu(null, false); })\n ];\n };\n SiteHeaderComponent.prototype.redirectToLoginPage = function (remember) {\n var instruction = ['/login'];\n if (remember && !this._window.nativeElement.location.pathname.includes('login'))\n instruction.push({\n from: this._window.nativeElement.location.pathname\n });\n this._router.navigate(instruction);\n };\n SiteHeaderComponent.prototype.attemptAuth = function () {\n var _this = this;\n if (this._auth.manuallyLoggedOut)\n this.redirectToLoginPage();\n else {\n this._auth.windowsAuthentication().subscribe(function (success) {\n if (success)\n _this._auth.refreshUser();\n else\n _this.redirectToLoginPage(true);\n });\n }\n };\n SiteHeaderComponent.prototype.logoutClicked = function () {\n this._auth.logout(this.currentModel.modelName);\n };\n SiteHeaderComponent.prototype.logonClicked = function () { this.redirectToLoginPage(true); };\n SiteHeaderComponent.prototype.toggleMultiLevelMenu = function (event, visible) {\n if (event && event.srcElement && event.srcElement && event.srcElement.className &&\n (event.srcElement.className.indexOf('hamburger-menu') > -1 || event.srcElement.className.indexOf('hamburger-menu-holder') > -1))\n this.showMLMenu = !this.showMLMenu;\n else if (visible !== undefined)\n this.showMLMenu = visible;\n };\n SiteHeaderComponent.prototype.closeMenu = function () {\n this.showMLMenu = false;\n };\n __decorate([\n core_1.Input(), \n __metadata('design:type', Object)\n ], SiteHeaderComponent.prototype, \"currentModel\", void 0);\n SiteHeaderComponent = __decorate([\n core_1.Component({\n selector: 'site-header',\n template: require('./siteHeader.html'),\n moduleId: module.id,\n directives: [clientSearch_1.ClientSearch, components_1.MultiLevelMenuComponent, Router.ROUTER_DIRECTIVES]\n }), \n __metadata('design:paramtypes', [services_1.SiteHeaderService, services_1.UserService, Router.Router, services_1.WindowRef, services_1.ConfigService, services_1.ClientService, services_1.TranslateService, services_1.RunService, services_1.NavigationService, vex_1.Modal, authProvider_1.AuthProvider])\n ], SiteHeaderComponent);\n return SiteHeaderComponent;\n}(ReactiveComponent_1.ReactiveComponent));\nexports.SiteHeaderComponent = SiteHeaderComponent;\nvar SiteFooterComponent = (function (_super) {\n __extends(SiteFooterComponent, _super);\n function SiteFooterComponent(_runs, _router, _clients, _configService) {\n _super.call(this);\n this._runs = _runs;\n this._router = _router;\n this._clients = _clients;\n this._configService = _configService;\n }\n SiteFooterComponent.prototype.ngOnInit = function () {\n var _this = this;\n this._subscriptions = [\n this._router.events.filter(function (s) { return s instanceof Router.NavigationEnd; })\n .subscribe(function (s) {\n var setup = findMode(_this._router);\n _this.mode = setup.mode;\n }),\n this._runs.activeRun.subscribe(function (r) { return _this.currentRunInfo = r && r.info; }),\n this._clients.currentClientChanged.subscribe(function (c) { return _this.currentClient = c; })\n ];\n this.showCookieConsent = this._configService.currentModel.oneTrustCookieDataDomainScript ? true : false;\n };\n SiteFooterComponent = __decorate([\n core_1.Component({ selector: 'site-footer', template: require('./siteFooter.html'), moduleId: module.id, directives: [components_2.LanguageSelectorComponent] }), \n __metadata('design:paramtypes', [services_1.RunService, Router.Router, services_1.ClientService, services_1.ConfigService])\n ], SiteFooterComponent);\n return SiteFooterComponent;\n}(ReactiveComponent_1.ReactiveComponent));\nexports.SiteFooterComponent = SiteFooterComponent;\n\n\n\n},{\"./@toolkit/ReactiveComponent\":2,\"./@toolkit/backend\":\"@toolkit/backend\",\"./@toolkit/components\":\"@toolkit/components\",\"./@toolkit/services\":\"@toolkit/services\",\"./account/authProvider\":95,\"./models/clientSearch\":107,\"./siteFooter.html\":120,\"./siteHeader.html\":121,\"@angular/core\":\"@angular/core\",\"@angular/router\":\"@angular/router\",\"angular2-modal/plugins/vex\":\"angular2-modal/plugins/vex\",\"rxjs\":\"rxjs\"}]},{},[102]);\n"]}